@ynput/ayon-frontend-shared 0.4.2 → 0.4.3

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 (179) hide show
  1. package/dist/ProjectTreeTable.cjs.js +1 -1
  2. package/dist/ProjectTreeTable.es.js +247 -243
  3. package/dist/_virtual/index.cjs22.js +1 -1
  4. package/dist/_virtual/index.cjs23.js +1 -1
  5. package/dist/_virtual/index.cjs24.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.cjs8.js +1 -1
  10. package/dist/_virtual/index.es22.js +3 -3
  11. package/dist/_virtual/index.es23.js +5 -5
  12. package/dist/_virtual/index.es24.js +5 -5
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/_virtual/index.es8.js +2 -2
  19. package/dist/api.cjs.js +1 -1
  20. package/dist/api.es.js +446 -445
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.es.js +20 -9
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  26. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  28. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  30. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  32. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  33. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  34. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  35. package/dist/node_modules/remove-accents/index.es.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  44. package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
  45. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphql.es.js +129 -68
  47. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  51. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  52. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  53. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  54. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  55. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  64. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  65. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  66. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  67. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  68. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  69. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  70. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  71. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  72. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
  73. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  74. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  76. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  77. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  78. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  79. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  80. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  81. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  82. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  83. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  84. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  85. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  86. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
  87. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  95. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
  103. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  107. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  125. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  126. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  127. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  129. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  131. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  133. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
  135. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
  137. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
  139. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  141. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  142. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  143. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  144. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  145. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
  147. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  148. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  149. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  151. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  152. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  153. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  154. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  155. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  156. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  157. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  158. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  159. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  160. package/dist/types/api/generated/graphql.d.ts +71 -0
  161. package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
  162. package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
  163. package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
  164. package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
  165. package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
  166. package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
  167. package/dist/types/api/queries/project/getProject.d.ts +14 -0
  168. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
  169. package/dist/types/api/queries/users/getUsers.d.ts +14 -0
  170. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
  171. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  172. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  173. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
  174. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  175. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  176. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  177. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  178. package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"buildTreeTableColumns.es.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport {\n CellWidget,\n EntityWidget,\n MetaWidget,\n EntityNameWidget,\n GroupHeaderWidget,\n ThumbnailWidget,\n} from './widgets'\nimport { getCellId, getCellValue, parseCellId } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { TableGroupBy, useCellEditing, useColumnSettingsContext } from './context'\nimport { ROW_SELECTION_COLUMN_ID } from './constants'\nimport { NEXT_PAGE_ID, parseGroupId } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport type { AttributeData, LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { SubtasksWidgetData } from './widgets/SubtasksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { isEntityRestricted, READ_ONLY } from './utils/restrictedEntity'\nimport { getColumnDisplayConfig } from './types/columnConfig'\nimport { ENTITY_COLUMN_IDS, normalizeColumnId } from './utils/columnIds'\nimport { upperFirst } from 'lodash'\n\nexport const isEntityExpandable = (entityType: string) => ['folder', 'product'].includes(entityType)\n\nexport const COLUMN_MIN_SIZE = 50\n\nexport const COLUMN_LABELS: Record<string, string> = {\n thumbnail: 'Thumbnail',\n status: 'Status',\n entityType: 'Entity type',\n subType: 'Type',\n productType: 'Product type',\n assignees: 'Assignees',\n folder_entity: 'Folder',\n task_entity: 'Task',\n author: 'Author',\n version: 'Version number',\n version_entity: 'Version',\n product: 'Product name',\n productBaseType: 'Base type',\n taskType: 'Task type',\n folderType: 'Folder type',\n tags: 'Tags',\n createdAt: 'Created at',\n updatedAt: 'Updated at',\n subtasks: 'Subtasks',\n comments: 'Latest comments',\n}\n\nexport const getColumnLabel = (columnId: string, scopes: string[] = []) => {\n if (columnId === 'subType' && scopes.some((scope) => ['product', 'version'].includes(scope))) {\n return 'Product type'\n }\n return COLUMN_LABELS[normalizeColumnId(columnId)] || columnId\n}\n\ntype ColumnSortConfig = {\n sortKey?: string\n sortDescFirst?: boolean\n enabled: boolean\n label: string\n scopes?: string[]\n}\n\n// TanStack column IDs are also used by the UI state. Keep API sort keys here\n// so a column can use a different identifier without leaking that detail into\n// the table state.\nexport const COLUMN_SORT_CONFIG: Record<string, ColumnSortConfig> = {\n thumbnail: { enabled: false, label: COLUMN_LABELS.thumbnail },\n name: { sortKey: 'name', enabled: true, label: 'Name' },\n entityType: { enabled: false, label: COLUMN_LABELS.entityType },\n status: { sortKey: 'status', sortDescFirst: false, enabled: true, label: COLUMN_LABELS.status },\n assignees: {\n sortKey: 'assignees',\n enabled: true,\n label: COLUMN_LABELS.assignees,\n scopes: ['task'],\n },\n folder_entity: {\n sortKey: 'folderName',\n sortDescFirst: false,\n enabled: true,\n label: COLUMN_LABELS.folder_entity,\n },\n task_entity: {\n sortKey: 'taskName',\n enabled: false,\n label: COLUMN_LABELS.task_entity,\n scopes: ['version', 'product'],\n },\n author: {\n sortKey: 'author',\n enabled: true,\n label: COLUMN_LABELS.author,\n scopes: ['version', 'product'],\n },\n version: {\n sortKey: 'version',\n sortDescFirst: true,\n enabled: true,\n label: COLUMN_LABELS.version,\n scopes: ['version', 'product'],\n },\n version_entity: {\n sortKey: 'version',\n enabled: true,\n label: COLUMN_LABELS.version_entity,\n scopes: ['version', 'product'],\n },\n product: {\n sortKey: 'product',\n enabled: true,\n label: COLUMN_LABELS.product,\n scopes: ['version', 'product'],\n },\n productBaseType: {\n sortKey: 'productBaseType',\n enabled: true,\n label: COLUMN_LABELS.productBaseType,\n scopes: ['version', 'product'],\n },\n taskType: {\n sortKey: 'taskType',\n sortDescFirst: true,\n enabled: true,\n label: COLUMN_LABELS.taskType,\n scopes: ['version', 'product'],\n },\n folderType: {\n sortKey: 'folderType',\n enabled: true,\n label: COLUMN_LABELS.folderType,\n scopes: ['version', 'product'],\n },\n productType: {\n sortKey: 'productType',\n enabled: true,\n label: COLUMN_LABELS.productType,\n scopes: ['version', 'product'],\n },\n tags: { sortKey: 'tags', enabled: true, label: COLUMN_LABELS.tags },\n createdAt: { sortKey: 'createdAt', enabled: true, label: COLUMN_LABELS.createdAt },\n updatedAt: { sortKey: 'updatedAt', enabled: true, label: COLUMN_LABELS.updatedAt },\n subtasks: { enabled: false, label: COLUMN_LABELS.subtasks },\n comments: { enabled: false, label: COLUMN_LABELS.comments },\n}\n\ntype SortColumnLabel = { value: string; label: string }\n\nexport const getSortableColumnOptions = (scopes?: string[], columns: SortColumnLabel[] = []) =>\n Object.entries(COLUMN_SORT_CONFIG)\n .filter(\n ([, config]) =>\n config.enabled &&\n (!config.scopes || !scopes || config.scopes.some((scope) => scopes.includes(scope))),\n )\n .map(([id, config]) => ({\n id,\n label:\n columns.find((column) => normalizeColumnId(column.value) === id)?.label ||\n getColumnLabel(id, scopes),\n }))\n\nexport const isColumnSortable = (columnId: string) =>\n COLUMN_SORT_CONFIG[normalizeColumnId(columnId)]?.enabled ?? !columnId.startsWith('link_')\n\nexport const getColumnSortKey = (columnId?: string, showHierarchy = true, entityType?: string) => {\n if (!columnId) return undefined\n const normalizedColumnId = normalizeColumnId(columnId)\n if (normalizedColumnId === 'name' && !showHierarchy) return 'path'\n if (normalizedColumnId === 'subType') {\n if (entityType === 'folder') return 'folderType'\n if (entityType === 'product' || entityType === 'version') return 'productType'\n if (entityType === 'task') return 'taskType'\n }\n return COLUMN_SORT_CONFIG[normalizedColumnId]?.sortKey ?? normalizedColumnId\n}\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst naturalSortCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })\n\nconst withNameTieBreaker = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n const result = sortFn(rowA, rowB, ...args)\n if (result !== 0) return result\n const labelA = rowA.original.label || rowA.original.name || ''\n const labelB = rowB.original.label || rowB.original.name || ''\n return naturalSortCollator.compare(labelA, labelB)\n }\n}\n\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.label || rowA.original.path || rowA.original.name || ''\n const labelB = rowB.original.label || rowB.original.path || rowB.original.name || ''\n return naturalSortCollator.compare(labelA, labelB)\n}\n\nconst valueLengthSort: SortingFn<any> = (rowA, rowB, columnId) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n const lengthA = Array.isArray(valueA) ? valueA.length : valueA ? String(valueA).length : 0\n const lengthB = Array.isArray(valueB) ? valueB.length : valueB ? String(valueB).length : 0\n return lengthA - lengthB\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexA - indexB\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'entityType'\n | typeof ENTITY_COLUMN_IDS.folder\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n | 'comments'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n scopes: string[]\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n includeLinks?: boolean\n showHierarchy: boolean\n isFlatFolderView?: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n nameLabel?: string\n}\n\nconst buildTreeTableColumns = ({\n scopes,\n attribs,\n links = [],\n includeLinks = true,\n showHierarchy,\n isFlatFolderView,\n options,\n excluded,\n excludedSorting,\n extraColumns,\n groupBy,\n nameLabel = 'Entity',\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) =>\n !excluded?.some((excludedId) => normalizeColumnId(excludedId) === normalizeColumnId(id))\n const canSort = (id: DefaultColumns | string) =>\n isColumnSortable(id) &&\n !excludedSorting?.some((excludedId) => normalizeColumnId(excludedId) === normalizeColumnId(id))\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: getColumnLabel('thumbnail'),\n size: 63,\n minSize: 24,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n let thumbnail = {\n entityId: row.original.entityId || row.id,\n entityType: row.original.entityType,\n thumbnailHash: row.original.thumbnailHash,\n }\n // check for thumbnail override\n if (row.original.thumbnail) {\n // @ts-expect-error\n thumbnail = row.original.thumbnail\n }\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={thumbnail.entityId}\n entityType={thumbnail.entityType}\n thumbnailHash={thumbnail.thumbnailHash}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: nameLabel,\n minSize: COLUMN_MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy && groupBy.id !== 'folder' ? false : canSort('name'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: !(groupBy && groupBy.id !== 'folder'),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n const { isEditing } = useCellEditing()\n const { rowHeight = 40 } = useColumnSettingsContext()\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.metaType) {\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', 'readonly', row.original.entityType)}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n pointerEvents: 'none',\n }}\n tabIndex={0}\n >\n <MetaWidget metaType={row.original.metaType} label={row.original.label} />\n </TableCellContent>\n )\n }\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreRows?.(id)}\n />\n )\n }\n\n const isExpandable =\n row.getCanExpand() &&\n !!row.originalSubRows &&\n (isEntityExpandable(row.original.entityType) || !!row.original.group)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + ${\n isExpandable || !row.getCanExpand() ? 0 : 32\n }px + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n percentage={row.original.group.percentage}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.original.group.count === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={\n !showHierarchy && !isFlatFolderView\n ? '/' + row.original.parents?.join('/')\n : undefined\n }\n entityType={row.original.entityType}\n subType={row.original.subType}\n isExpandable={isExpandable}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n rowHeight={rowHeight}\n columnDisplayConfig={getColumnDisplayConfig(meta?.columnsConfig, 'name')}\n />\n )}\n {isEditing(cellId) && (\n <CellWidget\n rowId={id}\n className={clsx('name', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n valueData={\n {\n name: row.original.name,\n label: row.original.label,\n meta,\n entityRowId: id,\n columnId: column.id,\n hasVersions: !!row.original.hasVersions,\n } as NameWidgetData\n }\n entityType={type}\n attributeData={{ type: 'name' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: COLUMN_MIN_SIZE,\n header: getColumnLabel('status'),\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n ),\n sortDescFirst: COLUMN_SORT_CONFIG.status.sortDescFirst,\n enableSorting: canSort('status'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('entityType')) {\n staticColumns.push({\n id: 'entityType',\n accessorKey: 'entityType',\n header: getColumnLabel('entityType'),\n minSize: 20,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.alphanumeric)),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const cellId = getCellId(row.id, column.id)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('entityType', READ_ONLY, type, { loading: row.original.isLoading })}\n tabIndex={0}\n >\n <Icon icon={getEntityTypeIcon(type)} /> {upperFirst(value)}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: getColumnLabel('subType', scopes),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('subType'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortDescFirst: COLUMN_SORT_CONFIG.taskType.sortDescFirst,\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) =>\n attribSort(a, b, c, {\n enum: [...options.folderType, ...options.taskType],\n type: 'string',\n }),\n ),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n const folderHasVersions = type === 'folder' && row.original.hasVersions\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : type === 'product' || type === 'version'\n ? meta?.options?.productType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={\n meta?.readOnly?.includes(column.id) ||\n meta?.readOnly?.includes(fieldId) ||\n folderHasVersions\n }\n tooltip={\n folderHasVersions\n ? 'Folder type cannot be edited when versions exist within the folder'\n : undefined\n }\n pt={{\n enum: {\n pt: {\n template: {\n iconOnlyColor: true,\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: getColumnLabel('assignees'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('assignees'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(valueLengthSort)),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded(ENTITY_COLUMN_IDS.folder)) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.folder,\n accessorKey: 'folder',\n header: getColumnLabel(ENTITY_COLUMN_IDS.folder),\n minSize: COLUMN_MIN_SIZE,\n sortDescFirst: COLUMN_SORT_CONFIG.folder_entity.sortDescFirst,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: canSort(ENTITY_COLUMN_IDS.folder),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, 'folder')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <EntityWidget\n rowId={id}\n className=\"folder\"\n columnId={column.id}\n value={value}\n entityId={row.original.folderId}\n entityType=\"folder\"\n subType={row.original.folderType}\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // related task entity column for versions and products\n if (\n isIncluded(ENTITY_COLUMN_IDS.task) &&\n ['version', 'product'].some((s) => scopes.includes(s))\n ) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.task,\n accessorKey: 'taskLabel',\n header: getColumnLabel(ENTITY_COLUMN_IDS.task),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort(ENTITY_COLUMN_IDS.task),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'taskLabel')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <EntityWidget\n rowId={id}\n className=\"task_entity\"\n columnId={column.id}\n value={value}\n entityId={row.original.taskId}\n entityType=\"task\"\n subType={row.original.taskType}\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // only show authors column for products\n if (isIncluded('author') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'author',\n accessorKey: 'author',\n header: getColumnLabel('author'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('author'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('author', { loading: row.original.isLoading })}\n columnId={column.id}\n value={[value]}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isReadOnly={true}\n isInherited={type === 'product'} // products do not have authors, we just show the featured version's author\n />\n )\n },\n })\n }\n\n // version entity column for versions and products\n if (\n isIncluded(ENTITY_COLUMN_IDS.version) &&\n ['version', 'product'].some((s) => scopes.includes(s))\n ) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.version,\n accessorKey: 'versionName',\n header: getColumnLabel(ENTITY_COLUMN_IDS.version),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort(ENTITY_COLUMN_IDS.version),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'versionName')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n let versionValue = row.original.versionName || value\n if (row.original.entityType === 'product') {\n // show summary of versions for products\n versionValue = `${row.original.versionName} (${row.original.versionsCount || 0} versions)`\n }\n\n return (\n <EntityWidget\n rowId={id}\n className=\"version-entity\"\n columnId={column.id}\n value={versionValue}\n entityId={\n row.original.versionEntityId || (type === 'version' ? row.original.entityId : null)\n }\n entityType=\"version\"\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // version number column for versions and products\n if (isIncluded('version') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'version',\n accessorKey: 'version',\n header: getColumnLabel('version'),\n minSize: COLUMN_MIN_SIZE,\n sortDescFirst: COLUMN_SORT_CONFIG.version.sortDescFirst,\n enableSorting: canSort('version'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.basic)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('version', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value ?? ''}\n attributeData={{ type: 'integer' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // product name column for versions and products\n if (isIncluded('product') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'product',\n accessorKey: 'product',\n header: getColumnLabel('product'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('product'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('product', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: getColumnLabel('tags'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('tags'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(valueLengthSort)),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: getColumnLabel('createdAt'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('createdAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.datetime)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('createdAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: getColumnLabel('updatedAt'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('updatedAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.datetime)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('updatedAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subtasks') && scopes.includes('task')) {\n staticColumns.push({\n id: 'subtasks',\n accessorKey: 'subtasks',\n header: getColumnLabel('subtasks'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n // only show for tasks\n if (type !== 'task') return <div className=\"readonly\"></div>\n\n const subtasksData: SubtasksWidgetData = {\n taskId: parseGroupId(row.id) || row.original.entityId || row.original.id,\n subtasks: value || [],\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('subtasks', { loading: row.original.isLoading })}\n columnId={column.id}\n value={subtasksData.subtasks?.map((s: any) => s.label || s.name) || []}\n valueData={subtasksData}\n attributeData={{ type: 'subtasks' }}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )\n },\n })\n }\n\n if (\n isIncluded('comments') &&\n scopes.some((s) => ['task', 'version', 'product', 'folder'].includes(s))\n ) {\n staticColumns.push({\n id: 'comments',\n accessorKey: 'latestComments',\n header: getColumnLabel('comments'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'latestComments')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n // loading placeholder rows have no entityType yet — let them through so the skeleton shows\n // products borrow their featured version's comments; folders only have data on GQL-fed pages (Lists)\n if (!row.original.isLoading && !['task', 'version', 'product', 'folder'].includes(type))\n return <div className=\"readonly\"></div>\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('comments', { loading: row.original.isLoading })}\n columnId={column.id}\n value={''}\n valueData={value || []}\n attributeData={{ type: 'comments' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n // filter out attributes that are out of scope\n if (attrib.scope && !attrib.scope.some((s) => scopes.includes(s))) return false\n\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: COLUMN_MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) => attribSort(a, b, c, attrib.data)),\n ),\n enableSorting: canSort(attrib.name) && canSort('attrib'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const outOfScopeAndNoValue =\n !attrib.scope?.includes(type as (typeof attrib.scope)[number]) &&\n (value === null || value === undefined)\n\n // if the attribute is not in scope, we should nothing\n if (outOfScopeAndNoValue) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string', widget: attrib.data.widget }}\n options={attrib.data.enum || []}\n midnightExclusiveFields={row.original.midnightExclusiveFields}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited}\n isReadOnly={\n // check attrib is not read only\n attrib.readOnly ||\n // check if there is any other reason the cell should be read only\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = !includeLinks\n ? []\n : links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n // Check if inputType and outputType are in scopes\n if (!scopes.includes(link.inputType) && !scopes.includes(link.outputType)) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const entityId = row.original.entityId || row.original.id\n const isLinksLoading = !!table.options.meta?.loadingLinksEntityIds?.has(entityId)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: entityId,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n isLinksLoading={isLinksLoading}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["isEntityExpandable","entityType","COLUMN_MIN_SIZE","COLUMN_LABELS","getColumnLabel","columnId","scopes","scope","normalizeColumnId","COLUMN_SORT_CONFIG","getSortableColumnOptions","columns","config","id","column","isColumnSortable","getColumnSortKey","showHierarchy","normalizedColumnId","withLoadingStateSort","sortFn","rowA","rowB","args","naturalSortCollator","withNameTieBreaker","result","labelA","labelB","pathSort","valueLengthSort","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","indexB","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","includeLinks","isFlatFolderView","options","excluded","excludedSorting","extraColumns","groupBy","nameLabel","staticColumns","isIncluded","excludedId","canSort","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","table","meta","cellId","getCellId","thumbnail","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","rowHeight","useColumnSettingsContext","TableCellContent","MetaWidget","NEXT_PAGE_ID","LoadMoreWidget","isExpandable","jsxs","GroupHeaderWidget","EntityNameWidget","getColumnDisplayConfig","CellWidget","a","b","c","s","isEntityRestricted","READ_ONLY","Icon","getEntityTypeIcon","upperFirst","fieldId","folderHasVersions","ENTITY_COLUMN_IDS","EntityWidget","versionValue","subtasksData","parseGroupId","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","cellValue","v","entityId","isLinksLoading","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
1
+ {"version":3,"file":"buildTreeTableColumns.es.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport {\n CellWidget,\n EntityWidget,\n MetaWidget,\n EntityNameWidget,\n GroupHeaderWidget,\n ThumbnailWidget,\n} from './widgets'\nimport { getCellId, getCellValue, parseCellId } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { TableGroupBy, useCellEditing, useColumnSettingsContext } from './context'\nimport { ROW_SELECTION_COLUMN_ID } from './constants'\nimport { NEXT_PAGE_ID, parseGroupId } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport type { AttributeData, LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { SubtasksWidgetData } from './widgets/SubtasksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { isEntityRestricted, READ_ONLY } from './utils/restrictedEntity'\nimport { getColumnDisplayConfig } from './types/columnConfig'\nimport { ENTITY_COLUMN_IDS, normalizeColumnId } from './utils/columnIds'\nimport { upperFirst } from 'lodash'\n\nexport const isEntityExpandable = (entityType: string) => ['folder', 'product'].includes(entityType)\n\nexport const COLUMN_MIN_SIZE = 50\n\nexport const COLUMN_LABELS: Record<string, string> = {\n thumbnail: 'Thumbnail',\n status: 'Status',\n entityType: 'Entity type',\n subType: 'Type',\n productType: 'Product type',\n assignees: 'Assignees',\n folder_entity: 'Folder',\n task_entity: 'Task',\n author: 'Author',\n version: 'Version number',\n version_entity: 'Version',\n product: 'Product name',\n productBaseType: 'Base type',\n taskType: 'Task type',\n folderType: 'Folder type',\n tags: 'Tags',\n createdAt: 'Created at',\n updatedAt: 'Updated at',\n subtasks: 'Subtasks',\n comments: 'Latest comments',\n}\n\nexport const getColumnLabel = (columnId: string, scopes: string[] = []) => {\n if (columnId === 'subType' && scopes.some((scope) => ['product', 'version'].includes(scope))) {\n return 'Product type'\n }\n return COLUMN_LABELS[normalizeColumnId(columnId)] || columnId\n}\n\ntype ColumnSortConfig = {\n sortKey?: string\n sortDescFirst?: boolean\n enabled: boolean\n label: string\n scopes?: string[]\n}\n\n// TanStack column IDs are also used by the UI state. Keep API sort keys here\n// so a column can use a different identifier without leaking that detail into\n// the table state.\nexport const COLUMN_SORT_CONFIG: Record<string, ColumnSortConfig> = {\n thumbnail: { enabled: false, label: COLUMN_LABELS.thumbnail },\n name: { sortKey: 'name', enabled: true, label: 'Name' },\n entityType: { enabled: false, label: COLUMN_LABELS.entityType },\n status: { sortKey: 'status', sortDescFirst: false, enabled: true, label: COLUMN_LABELS.status },\n assignees: {\n sortKey: 'assignees',\n enabled: true,\n label: COLUMN_LABELS.assignees,\n scopes: ['task'],\n },\n folder_entity: {\n sortKey: 'folderName',\n sortDescFirst: false,\n enabled: true,\n label: COLUMN_LABELS.folder_entity,\n },\n task_entity: {\n sortKey: 'taskName',\n enabled: false,\n label: COLUMN_LABELS.task_entity,\n scopes: ['version', 'product'],\n },\n author: {\n sortKey: 'author',\n enabled: true,\n label: COLUMN_LABELS.author,\n scopes: ['version', 'product'],\n },\n version: {\n sortKey: 'version',\n sortDescFirst: true,\n enabled: true,\n label: COLUMN_LABELS.version,\n scopes: ['version', 'product'],\n },\n version_entity: {\n sortKey: 'version',\n enabled: true,\n label: COLUMN_LABELS.version_entity,\n scopes: ['version', 'product'],\n },\n product: {\n sortKey: 'product',\n enabled: true,\n label: COLUMN_LABELS.product,\n scopes: ['version', 'product'],\n },\n productBaseType: {\n sortKey: 'productBaseType',\n enabled: true,\n label: COLUMN_LABELS.productBaseType,\n scopes: ['version', 'product'],\n },\n taskType: {\n sortKey: 'taskType',\n sortDescFirst: true,\n enabled: true,\n label: COLUMN_LABELS.taskType,\n scopes: ['version', 'product'],\n },\n folderType: {\n sortKey: 'folderType',\n enabled: true,\n label: COLUMN_LABELS.folderType,\n scopes: ['version', 'product'],\n },\n productType: {\n sortKey: 'productType',\n enabled: true,\n label: COLUMN_LABELS.productType,\n scopes: ['version', 'product'],\n },\n tags: { sortKey: 'tags', enabled: true, label: COLUMN_LABELS.tags },\n createdAt: { sortKey: 'createdAt', enabled: true, label: COLUMN_LABELS.createdAt },\n updatedAt: { sortKey: 'updatedAt', enabled: true, label: COLUMN_LABELS.updatedAt },\n subtasks: { enabled: false, label: COLUMN_LABELS.subtasks },\n comments: { enabled: false, label: COLUMN_LABELS.comments },\n}\n\ntype SortColumnLabel = { value: string; label: string }\n\nexport const getNameColumnLabel = (scopes: string[]) =>\n scopes.includes('version')\n ? 'Version / Product'\n : scopes.map((scope) => scope.charAt(0).toUpperCase() + scope.slice(1)).join(' / ')\n\nexport const getSortableColumnOptions = (scopes?: string[], columns: SortColumnLabel[] = []) =>\n Object.entries(COLUMN_SORT_CONFIG)\n .filter(\n ([, config]) =>\n config.enabled &&\n (!config.scopes || !scopes || config.scopes.some((scope) => scopes.includes(scope))),\n )\n .map(([id, config]) => ({\n id,\n label:\n columns.find((column) => normalizeColumnId(column.value) === id)?.label ||\n getColumnLabel(id, scopes),\n }))\n\nexport const isColumnSortable = (columnId: string) =>\n COLUMN_SORT_CONFIG[normalizeColumnId(columnId)]?.enabled ?? !columnId.startsWith('link_')\n\nexport const getColumnSortKey = (columnId?: string, showHierarchy = true, entityType?: string) => {\n if (!columnId) return undefined\n const normalizedColumnId = normalizeColumnId(columnId)\n if (normalizedColumnId === 'name' && !showHierarchy) return 'path'\n if (normalizedColumnId === 'subType') {\n if (entityType === 'folder') return 'folderType'\n if (entityType === 'product' || entityType === 'version') return 'productType'\n if (entityType === 'task') return 'taskType'\n }\n return COLUMN_SORT_CONFIG[normalizedColumnId]?.sortKey ?? normalizedColumnId\n}\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst naturalSortCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })\n\nconst withNameTieBreaker = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n const result = sortFn(rowA, rowB, ...args)\n if (result !== 0) return result\n const labelA = rowA.original.label || rowA.original.name || ''\n const labelB = rowB.original.label || rowB.original.name || ''\n return naturalSortCollator.compare(labelA, labelB)\n }\n}\n\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.label || rowA.original.path || rowA.original.name || ''\n const labelB = rowB.original.label || rowB.original.path || rowB.original.name || ''\n return naturalSortCollator.compare(labelA, labelB)\n}\n\nconst valueLengthSort: SortingFn<any> = (rowA, rowB, columnId) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n const lengthA = Array.isArray(valueA) ? valueA.length : valueA ? String(valueA).length : 0\n const lengthB = Array.isArray(valueB) ? valueB.length : valueB ? String(valueB).length : 0\n return lengthA - lengthB\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexA - indexB\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'entityType'\n | typeof ENTITY_COLUMN_IDS.folder\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n | 'comments'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n scopes: string[]\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n includeLinks?: boolean\n showHierarchy: boolean\n isFlatFolderView?: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n nameLabel?: string\n}\n\nconst buildTreeTableColumns = ({\n scopes,\n attribs,\n links = [],\n includeLinks = true,\n showHierarchy,\n isFlatFolderView,\n options,\n excluded,\n excludedSorting,\n extraColumns,\n groupBy,\n nameLabel = 'Entity',\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) =>\n !excluded?.some((excludedId) => normalizeColumnId(excludedId) === normalizeColumnId(id))\n const canSort = (id: DefaultColumns | string) =>\n isColumnSortable(id) &&\n !excludedSorting?.some((excludedId) => normalizeColumnId(excludedId) === normalizeColumnId(id))\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: getColumnLabel('thumbnail'),\n size: 63,\n minSize: 24,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n let thumbnail = {\n entityId: row.original.entityId || row.id,\n entityType: row.original.entityType,\n thumbnailHash: row.original.thumbnailHash,\n }\n // check for thumbnail override\n if (row.original.thumbnail) {\n // @ts-expect-error\n thumbnail = row.original.thumbnail\n }\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={thumbnail.entityId}\n entityType={thumbnail.entityType}\n thumbnailHash={thumbnail.thumbnailHash}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: nameLabel,\n minSize: COLUMN_MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy && groupBy.id !== 'folder' ? false : canSort('name'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: !(groupBy && groupBy.id !== 'folder'),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n const { isEditing } = useCellEditing()\n const { rowHeight = 40 } = useColumnSettingsContext()\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.metaType) {\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', 'readonly', row.original.entityType)}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n pointerEvents: 'none',\n }}\n tabIndex={0}\n >\n <MetaWidget metaType={row.original.metaType} label={row.original.label} />\n </TableCellContent>\n )\n }\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreRows?.(id)}\n />\n )\n }\n\n const isExpandable =\n row.getCanExpand() &&\n !!row.originalSubRows &&\n (isEntityExpandable(row.original.entityType) || !!row.original.group)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + ${\n isExpandable || !row.getCanExpand() ? 0 : 32\n }px + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n percentage={row.original.group.percentage}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.original.group.count === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={\n !showHierarchy && !isFlatFolderView\n ? '/' + row.original.parents?.join('/')\n : undefined\n }\n entityType={row.original.entityType}\n subType={row.original.subType}\n isExpandable={isExpandable}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n rowHeight={rowHeight}\n columnDisplayConfig={getColumnDisplayConfig(meta?.columnsConfig, 'name')}\n />\n )}\n {isEditing(cellId) && (\n <CellWidget\n rowId={id}\n className={clsx('name', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n valueData={\n {\n name: row.original.name,\n label: row.original.label,\n meta,\n entityRowId: id,\n columnId: column.id,\n hasVersions: !!row.original.hasVersions,\n } as NameWidgetData\n }\n entityType={type}\n attributeData={{ type: 'name' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: COLUMN_MIN_SIZE,\n header: getColumnLabel('status'),\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n ),\n sortDescFirst: COLUMN_SORT_CONFIG.status.sortDescFirst,\n enableSorting: canSort('status'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('entityType')) {\n staticColumns.push({\n id: 'entityType',\n accessorKey: 'entityType',\n header: getColumnLabel('entityType'),\n minSize: 20,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.alphanumeric)),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const cellId = getCellId(row.id, column.id)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('entityType', READ_ONLY, type, { loading: row.original.isLoading })}\n tabIndex={0}\n >\n <Icon icon={getEntityTypeIcon(type)} /> {upperFirst(value)}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: getColumnLabel('subType', scopes),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('subType'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortDescFirst: COLUMN_SORT_CONFIG.taskType.sortDescFirst,\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) =>\n attribSort(a, b, c, {\n enum: [...options.folderType, ...options.taskType],\n type: 'string',\n }),\n ),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n const folderHasVersions = type === 'folder' && row.original.hasVersions\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : type === 'product' || type === 'version'\n ? meta?.options?.productType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={\n meta?.readOnly?.includes(column.id) ||\n meta?.readOnly?.includes(fieldId) ||\n folderHasVersions\n }\n tooltip={\n folderHasVersions\n ? 'Folder type cannot be edited when versions exist within the folder'\n : undefined\n }\n pt={{\n enum: {\n pt: {\n template: {\n iconOnlyColor: true,\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: getColumnLabel('assignees'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('assignees'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(valueLengthSort)),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded(ENTITY_COLUMN_IDS.folder)) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.folder,\n accessorKey: 'folder',\n header: getColumnLabel(ENTITY_COLUMN_IDS.folder),\n minSize: COLUMN_MIN_SIZE,\n sortDescFirst: COLUMN_SORT_CONFIG.folder_entity.sortDescFirst,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: canSort(ENTITY_COLUMN_IDS.folder),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, 'folder')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <EntityWidget\n rowId={id}\n className=\"folder\"\n columnId={column.id}\n value={value}\n entityId={row.original.folderId}\n entityType=\"folder\"\n subType={row.original.folderType}\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // related task entity column for versions and products\n if (\n isIncluded(ENTITY_COLUMN_IDS.task) &&\n ['version', 'product'].some((s) => scopes.includes(s))\n ) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.task,\n accessorKey: 'taskLabel',\n header: getColumnLabel(ENTITY_COLUMN_IDS.task),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort(ENTITY_COLUMN_IDS.task),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'taskLabel')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <EntityWidget\n rowId={id}\n className=\"task_entity\"\n columnId={column.id}\n value={value}\n entityId={row.original.taskId}\n entityType=\"task\"\n subType={row.original.taskType}\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // only show authors column for products\n if (isIncluded('author') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'author',\n accessorKey: 'author',\n header: getColumnLabel('author'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('author'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('author', { loading: row.original.isLoading })}\n columnId={column.id}\n value={[value]}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isReadOnly={true}\n isInherited={type === 'product'} // products do not have authors, we just show the featured version's author\n />\n )\n },\n })\n }\n\n // version entity column for versions and products\n if (\n isIncluded(ENTITY_COLUMN_IDS.version) &&\n ['version', 'product'].some((s) => scopes.includes(s))\n ) {\n staticColumns.push({\n id: ENTITY_COLUMN_IDS.version,\n accessorKey: 'versionName',\n header: getColumnLabel(ENTITY_COLUMN_IDS.version),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort(ENTITY_COLUMN_IDS.version),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'versionName')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n let versionValue = row.original.versionName || value\n if (row.original.entityType === 'product') {\n // show summary of versions for products\n versionValue = `${row.original.versionName} (${row.original.versionsCount || 0} versions)`\n }\n\n return (\n <EntityWidget\n rowId={id}\n className=\"version-entity\"\n columnId={column.id}\n value={versionValue}\n entityId={\n row.original.versionEntityId || (type === 'version' ? row.original.entityId : null)\n }\n entityType=\"version\"\n isLoading={row.original.isLoading}\n />\n )\n },\n })\n }\n\n // version number column for versions and products\n if (isIncluded('version') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'version',\n accessorKey: 'version',\n header: getColumnLabel('version'),\n minSize: COLUMN_MIN_SIZE,\n sortDescFirst: COLUMN_SORT_CONFIG.version.sortDescFirst,\n enableSorting: canSort('version'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.basic)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('version', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value ?? ''}\n attributeData={{ type: 'integer' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // product name column for versions and products\n if (isIncluded('product') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'product',\n accessorKey: 'product',\n header: getColumnLabel('product'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('product'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('product', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: getColumnLabel('tags'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('tags'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(valueLengthSort)),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: getColumnLabel('createdAt'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('createdAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.datetime)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('createdAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: getColumnLabel('updatedAt'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('updatedAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(withNameTieBreaker(sortingFns.datetime)),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('updatedAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subtasks') && scopes.includes('task')) {\n staticColumns.push({\n id: 'subtasks',\n accessorKey: 'subtasks',\n header: getColumnLabel('subtasks'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n // only show for tasks\n if (type !== 'task') return <div className=\"readonly\"></div>\n\n const subtasksData: SubtasksWidgetData = {\n taskId: parseGroupId(row.id) || row.original.entityId || row.original.id,\n folderId: row.original.folderId ?? undefined,\n subtasks: value || [],\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('subtasks', { loading: row.original.isLoading })}\n columnId={column.id}\n value={subtasksData.subtasks?.map((s: any) => s.label || s.name) || []}\n valueData={subtasksData}\n attributeData={{ type: 'subtasks' }}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )\n },\n })\n }\n\n if (\n isIncluded('comments') &&\n scopes.some((s) => ['task', 'version', 'product', 'folder'].includes(s))\n ) {\n staticColumns.push({\n id: 'comments',\n accessorKey: 'latestComments',\n header: getColumnLabel('comments'),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, 'latestComments')\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n // loading placeholder rows have no entityType yet — let them through so the skeleton shows\n // products borrow their featured version's comments; folders only have data on GQL-fed pages (Lists)\n if (!row.original.isLoading && !['task', 'version', 'product', 'folder'].includes(type))\n return <div className=\"readonly\"></div>\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('comments', { loading: row.original.isLoading })}\n columnId={column.id}\n value={''}\n valueData={value || []}\n attributeData={{ type: 'comments' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n // filter out attributes that are out of scope\n if (attrib.scope && !attrib.scope.some((s) => scopes.includes(s))) return false\n\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: COLUMN_MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort(\n withNameTieBreaker((a, b, c) => attribSort(a, b, c, attrib.data)),\n ),\n enableSorting: canSort(attrib.name) && canSort('attrib'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const outOfScopeAndNoValue =\n !attrib.scope?.includes(type as (typeof attrib.scope)[number]) &&\n (value === null || value === undefined)\n\n // if the attribute is not in scope, we should nothing\n if (outOfScopeAndNoValue) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string', widget: attrib.data.widget }}\n options={attrib.data.enum || []}\n midnightExclusiveFields={row.original.midnightExclusiveFields}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited}\n isReadOnly={\n // check attrib is not read only\n attrib.readOnly ||\n // check if there is any other reason the cell should be read only\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = !includeLinks\n ? []\n : links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n // Check if inputType and outputType are in scopes\n if (!scopes.includes(link.inputType) && !scopes.includes(link.outputType)) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const entityId = row.original.entityId || row.original.id\n const isLinksLoading = !!table.options.meta?.loadingLinksEntityIds?.has(entityId)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: entityId,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n isLinksLoading={isLinksLoading}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["isEntityExpandable","entityType","COLUMN_MIN_SIZE","COLUMN_LABELS","getColumnLabel","columnId","scopes","scope","normalizeColumnId","COLUMN_SORT_CONFIG","getNameColumnLabel","getSortableColumnOptions","columns","config","id","column","isColumnSortable","getColumnSortKey","showHierarchy","normalizedColumnId","withLoadingStateSort","sortFn","rowA","rowB","args","naturalSortCollator","withNameTieBreaker","result","labelA","labelB","pathSort","valueLengthSort","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","indexB","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","includeLinks","isFlatFolderView","options","excluded","excludedSorting","extraColumns","groupBy","nameLabel","staticColumns","isIncluded","excludedId","canSort","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","table","meta","cellId","getCellId","thumbnail","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","rowHeight","useColumnSettingsContext","TableCellContent","MetaWidget","NEXT_PAGE_ID","LoadMoreWidget","isExpandable","jsxs","GroupHeaderWidget","EntityNameWidget","getColumnDisplayConfig","CellWidget","a","b","c","s","isEntityRestricted","READ_ONLY","Icon","getEntityTypeIcon","upperFirst","fieldId","folderHasVersions","ENTITY_COLUMN_IDS","EntityWidget","versionValue","subtasksData","parseGroupId","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","cellValue","v","entityId","isLinksLoading","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const i=require("@ynput/ayon-react-components");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("clsx");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");require("../../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteEntitiesConfirmDialog.styled.cjs.js");require("react-toastify");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/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/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.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("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("lodash");require("uuid");require("../../../util/pubsub.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("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.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("../../../components/InfoMessage/InfoMessage.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");;/* empty css */require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContextInstance.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../context/GlobalContext.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/LinksManager/LinksManager.styled.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.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/ProjectTableSettings/ColumnsSettings.cjs.js");const n=require("../../../components/ProjectTableSettings/TableSettingsFallback.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("react-redux");require("../../Views/context/ViewsContextInstance.cjs.js");require("react-router-dom");require("../../Slicer/context/SlicerContextInstance.cjs.js");require("../../Slicer/components/SlicerDropdownFallback.cjs.js");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.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/SyncButton/SyncButton.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/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");const u=require("styled-components"),s=u.li`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const i=require("@ynput/ayon-react-components");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("clsx");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");require("../../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteEntitiesConfirmDialog.styled.cjs.js");require("react-toastify");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/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/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.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("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("lodash");require("uuid");require("../../../util/pubsub.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("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.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("../../../components/InfoMessage/InfoMessage.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");;/* empty css */require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContextInstance.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../context/GlobalContext.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/LinksManager/LinksManager.styled.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.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/ProjectTableSettings/ColumnsSettings.cjs.js");const n=require("../../../components/ProjectTableSettings/TableSettingsFallback.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("react-redux");require("../../Views/context/ViewsContextInstance.cjs.js");require("react-router-dom");require("../../Slicer/context/SlicerContextInstance.cjs.js");require("../../Slicer/components/SlicerDropdownFallback.cjs.js");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.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("../../../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/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("../../../context/EntityUpdatesContextInstance.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");require("../../../components/SyncButton/SyncButton.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/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 u=require("styled-components"),s=u.li`
2
2
  display: flex;
3
3
  align-items: center;
4
4
  padding: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupSettingsFallback.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n entityType: string\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["FieldItem","styled","FieldButton","Button","GroupSettingsFallback","requiredVersion","fields","TableSettingsFallback","field","jsx","jsxs","Icon"],"mappings":"ghYAMMA,EAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnBC,EAAcD,EAAOE,QAAM;AAAA;AAAA;AAAA,EAuBpBC,EAAwD,CAAC,CACpE,gBAAAC,EACA,OAAAC,CACF,4BACGC,EAAAA,sBAAA,CAAsB,QAAS,kBAAmB,gBAAAF,EAChD,WAAO,IAAKG,GACXC,EAAAA,kBAAAA,IAACT,GACC,SAAAU,yBAACR,EAAA,CAAY,QAAQ,OAAO,KAAMM,EAAM,KACrC,SAAA,CAAAA,EAAM,MACPC,wBAACE,EAAAA,MAAK,KAAM,OAAQ,MAAO,CAAE,WAAY,OAAO,CAAG,CAAA,CAAA,CACrD,CAAA,EAJcH,EAAM,KAKtB,CACD,CAAA,CACH"}
1
+ {"version":3,"file":"GroupSettingsFallback.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n entityType: string\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["FieldItem","styled","FieldButton","Button","GroupSettingsFallback","requiredVersion","fields","TableSettingsFallback","field","jsx","jsxs","Icon"],"mappings":"goZAMMA,EAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnBC,EAAcD,EAAOE,QAAM;AAAA;AAAA;AAAA,EAuBpBC,EAAwD,CAAC,CACpE,gBAAAC,EACA,OAAAC,CACF,4BACGC,EAAAA,sBAAA,CAAsB,QAAS,kBAAmB,gBAAAF,EAChD,WAAO,IAAKG,GACXC,EAAAA,kBAAAA,IAACT,GACC,SAAAU,yBAACR,EAAA,CAAY,QAAQ,OAAO,KAAMM,EAAM,KACrC,SAAA,CAAAA,EAAM,MACPC,wBAACE,EAAAA,MAAK,KAAM,OAAQ,MAAO,CAAE,WAAY,OAAO,CAAG,CAAA,CAAA,CACrD,CAAA,EAJcH,EAAM,KAKtB,CACD,CAAA,CACH"}
@@ -194,6 +194,18 @@ import "../../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
194
194
  import "../../../components/ShareOptionIcon/ShareOptionIcon.es.js";
195
195
  import "../../../components/SimpleFormDialog/SimpleFormDialog.es.js";
196
196
  import "../../../components/StyledLink/StyledLink.es.js";
197
+ import "../../../context/SubtasksModulesContextInstance.es.js";
198
+ import "../../../context/ThumbnailUploaderContext.es.js";
199
+ import "../../../context/SettingsPanelContext.es.js";
200
+ import "../../../context/pip/PiPProvider.es.js";
201
+ import "../../../context/pip/PiPWrapper.es.js";
202
+ import "../../../context/AddonProjectContext.es.js";
203
+ import "../../../context/AddonContext.es.js";
204
+ import "../../../context/MenuContext.es.js";
205
+ import "../../../context/WebsocketContext.es.js";
206
+ import "../../../context/ProjectFoldersContextInstance.es.js";
207
+ import "../../../context/EntityUpdatesContextInstance.es.js";
208
+ import "../../../context/DeleteEntitiesContext.es.js";
197
209
  import "../../../components/SyncButton/SyncButton.es.js";
198
210
  import "../../../components/TableGridSwitch/TableGridSwitch.es.js";
199
211
  import "../../../components/Thumbnail/Thumbnail.styled.es.js";
@@ -203,7 +215,6 @@ import "../../../components/VersionUploader/components/UploadVersionDialog.es.js
203
215
  import "../../../components/Watchers/Watchers.es.js";
204
216
  import "../../../components/Menu/Menu.styled.es.js";
205
217
  import "../../../components/Menu/MenuItem.es.js";
206
- import "../../../context/MenuContext.es.js";
207
218
  import "../../../components/ReviewablesSelector/ReviewablesSelector.es.js";
208
219
  import "../../../components/ColumnHeaderMenuUI.es.js";
209
220
  import o from "styled-components";
@@ -215,7 +226,7 @@ const s = o.li`
215
226
  `, a = o(p)`
216
227
  width: 100%;
217
228
  justify-content: start;
218
- `, mr = ({
229
+ `, gr = ({
219
230
  requiredVersion: r,
220
231
  fields: m
221
232
  }) => /* @__PURE__ */ t.jsx(n, { feature: "groupAttributes", requiredVersion: r, children: m.map((i) => /* @__PURE__ */ t.jsx(s, { children: /* @__PURE__ */ t.jsxs(a, { variant: "text", icon: i.icon, children: [
@@ -223,6 +234,6 @@ const s = o.li`
223
234
  /* @__PURE__ */ t.jsx(e, { icon: "bolt", style: { marginLeft: "auto" } })
224
235
  ] }) }, i.value)) });
225
236
  export {
226
- mr as GroupSettingsFallback
237
+ gr as GroupSettingsFallback
227
238
  };
228
239
  //# sourceMappingURL=GroupSettingsFallback.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupSettingsFallback.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n entityType: string\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["FieldItem","styled","FieldButton","Button","GroupSettingsFallback","requiredVersion","fields","TableSettingsFallback","field","jsx","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOnBC,IAAcD,EAAOE,CAAM;AAAA;AAAA;AAAA,GAuBpBC,KAAwD,CAAC;AAAA,EACpE,iBAAAC;AAAA,EACA,QAAAC;AACF,4BACGC,GAAA,EAAsB,SAAS,mBAAmB,iBAAAF,GAChD,YAAO,IAAI,CAACG,MACXC,gBAAAA,EAAAA,IAACT,KACC,UAAAU,gBAAAA,OAACR,GAAA,EAAY,SAAQ,QAAO,MAAMM,EAAM,MACrC,UAAA;AAAA,EAAAA,EAAM;AAAA,EACPC,gBAAAA,MAACE,KAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAO,CAAG;AAAA,EAAA,CACrD,EAAA,GAJcH,EAAM,KAKtB,CACD,EAAA,CACH;"}
1
+ {"version":3,"file":"GroupSettingsFallback.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n entityType: string\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["FieldItem","styled","FieldButton","Button","GroupSettingsFallback","requiredVersion","fields","TableSettingsFallback","field","jsx","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOnBC,IAAcD,EAAOE,CAAM;AAAA;AAAA;AAAA,GAuBpBC,KAAwD,CAAC;AAAA,EACpE,iBAAAC;AAAA,EACA,QAAAC;AACF,4BACGC,GAAA,EAAsB,SAAS,mBAAmB,iBAAAF,GAChD,YAAO,IAAI,CAACG,MACXC,gBAAAA,EAAAA,IAACT,KACC,UAAAU,gBAAAA,OAACR,GAAA,EAAY,SAAQ,QAAO,MAAMM,EAAM,MACrC,UAAA;AAAA,EAAAA,EAAM;AAAA,EACPC,gBAAAA,MAACE,KAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAO,CAAG;AAAA,EAAA,CACrD,EAAA,GAJcH,EAAM,KAKtB,CACD,EAAA,CACH;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _="__row_selection__",e="drag-handle";exports.DRAG_HANDLE_COLUMN_ID=e;exports.ROW_SELECTION_COLUMN_ID=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L="__row_selection__",E="drag-handle",_=50,I=4,N=_+I*2;exports.CELL_PADDING_Y=I;exports.DRAG_HANDLE_COLUMN_ID=E;exports.ROW_SELECTION_COLUMN_ID=L;exports.WRAP_MIN_CELL_HEIGHT=_;exports.WRAP_MIN_ROW_HEIGHT=N;
2
2
  //# sourceMappingURL=constants.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/constants.ts"],"sourcesContent":["export const ROW_SELECTION_COLUMN_ID = '__row_selection__'\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n"],"names":["ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID"],"mappings":"gFAAO,MAAMA,EAA0B,oBAC1BC,EAAwB"}
1
+ {"version":3,"file":"constants.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/constants.ts"],"sourcesContent":["export const ROW_SELECTION_COLUMN_ID = '__row_selection__'\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\n// queried against the cell container's content box, not the row height\nexport const WRAP_MIN_CELL_HEIGHT = 50\nexport const CELL_PADDING_Y = 4\nexport const WRAP_MIN_ROW_HEIGHT = WRAP_MIN_CELL_HEIGHT + CELL_PADDING_Y * 2\n"],"names":["ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","WRAP_MIN_CELL_HEIGHT","CELL_PADDING_Y","WRAP_MIN_ROW_HEIGHT"],"mappings":"gFAAO,MAAMA,EAA0B,oBAC1BC,EAAwB,cAGxBC,EAAuB,GACvBC,EAAiB,EACjBC,EAAsBF,EAAuBC,EAAiB"}
@@ -1,6 +1,9 @@
1
- const _ = "__row_selection__", o = "drag-handle";
1
+ const _ = "__row_selection__", L = "drag-handle", I = 50, E = 4, N = 58;
2
2
  export {
3
- o as DRAG_HANDLE_COLUMN_ID,
4
- _ as ROW_SELECTION_COLUMN_ID
3
+ E as CELL_PADDING_Y,
4
+ L as DRAG_HANDLE_COLUMN_ID,
5
+ _ as ROW_SELECTION_COLUMN_ID,
6
+ I as WRAP_MIN_CELL_HEIGHT,
7
+ N as WRAP_MIN_ROW_HEIGHT
5
8
  };
6
9
  //# sourceMappingURL=constants.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.es.js","sources":["../../../../../src/containers/ProjectTreeTable/constants.ts"],"sourcesContent":["export const ROW_SELECTION_COLUMN_ID = '__row_selection__'\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n"],"names":["ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID"],"mappings":"AAAO,MAAMA,IAA0B,qBAC1BC,IAAwB;"}
1
+ {"version":3,"file":"constants.es.js","sources":["../../../../../src/containers/ProjectTreeTable/constants.ts"],"sourcesContent":["export const ROW_SELECTION_COLUMN_ID = '__row_selection__'\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\n// queried against the cell container's content box, not the row height\nexport const WRAP_MIN_CELL_HEIGHT = 50\nexport const CELL_PADDING_Y = 4\nexport const WRAP_MIN_ROW_HEIGHT = WRAP_MIN_CELL_HEIGHT + CELL_PADDING_Y * 2\n"],"names":["ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","WRAP_MIN_CELL_HEIGHT","CELL_PADDING_Y","WRAP_MIN_ROW_HEIGHT"],"mappings":"AAAO,MAAMA,IAA0B,qBAC1BC,IAAwB,eAGxBC,IAAuB,IACvBC,IAAiB,GACjBC,IAAsB;"}