@ynput/ayon-frontend-shared 0.2.30 → 0.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/_virtual/index.cjs5.js +1 -1
  2. package/dist/_virtual/index.cjs6.js +1 -1
  3. package/dist/_virtual/index.es5.js +5 -2
  4. package/dist/_virtual/index.es5.js.map +1 -1
  5. package/dist/_virtual/index.es6.js +2 -5
  6. package/dist/_virtual/index.es6.js.map +1 -1
  7. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  8. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  9. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  10. package/dist/node_modules/remove-accents/index.es.js +1 -1
  11. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  12. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  13. package/dist/shared/src/api/generated/authentication.cjs.js +1 -1
  14. package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
  15. package/dist/shared/src/api/generated/authentication.es.js +9 -6
  16. package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
  17. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  19. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  20. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  22. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  23. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  24. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  25. package/dist/shared/src/api/generated/links.cjs.js +1 -1
  26. package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
  27. package/dist/shared/src/api/generated/links.es.js +13 -5
  28. package/dist/shared/src/api/generated/links.es.js.map +1 -1
  29. package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
  30. package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
  31. package/dist/shared/src/api/generated/operations.cjs.js +1 -1
  32. package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
  33. package/dist/shared/src/api/generated/operations.es.js +16 -0
  34. package/dist/shared/src/api/generated/operations.es.js.map +1 -1
  35. package/dist/shared/src/api/generated/products.cjs.js +1 -1
  36. package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
  37. package/dist/shared/src/api/generated/products.es.js +6 -3
  38. package/dist/shared/src/api/generated/products.es.js.map +1 -1
  39. package/dist/shared/src/api/generated/projects.cjs.js +1 -1
  40. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  41. package/dist/shared/src/api/generated/projects.es.js +19 -0
  42. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  43. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  44. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  45. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  47. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  48. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  49. package/dist/shared/src/api/generated/versions.cjs.js.map +1 -1
  50. package/dist/shared/src/api/generated/versions.es.js.map +1 -1
  51. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  54. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  55. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +96 -59
  56. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  57. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  58. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  59. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +15 -10
  60. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  61. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +60 -0
  62. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -0
  63. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +332 -0
  64. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js.map +1 -0
  65. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
  66. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  67. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +37 -33
  68. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  69. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +3 -5
  70. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
  71. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +4 -6
  72. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
  73. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -2
  74. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  75. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +0 -1
  76. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  77. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  78. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  79. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +555 -537
  80. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  81. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +0 -1
  82. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  83. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +4 -5
  84. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  85. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  86. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  87. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +92 -91
  88. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  91. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  93. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +126 -108
  94. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  95. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js +2 -0
  96. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js.map +1 -0
  97. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js +9 -0
  98. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js.map +1 -0
  99. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  100. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +49 -48
  102. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  103. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +38 -9
  104. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +74 -39
  106. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  107. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +24 -15
  108. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +71 -59
  110. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  111. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +6 -6
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -12
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  115. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  116. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  117. package/dist/shared/src/util/columnConfigConverter.es.js +35 -33
  118. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  119. package/dist/types/api/generated/access.d.ts +6 -0
  120. package/dist/types/api/generated/authentication.d.ts +6 -0
  121. package/dist/types/api/generated/entityLists.d.ts +7 -7
  122. package/dist/types/api/generated/folders.d.ts +2 -2
  123. package/dist/types/api/generated/graphql.d.ts +3 -1
  124. package/dist/types/api/generated/graphqlLinks.d.ts +21 -15
  125. package/dist/types/api/generated/links.d.ts +4 -0
  126. package/dist/types/api/generated/onboarding.d.ts +3 -0
  127. package/dist/types/api/generated/operations.d.ts +22 -1
  128. package/dist/types/api/generated/products.d.ts +23 -0
  129. package/dist/types/api/generated/projects.d.ts +63 -0
  130. package/dist/types/api/generated/representations.d.ts +1 -0
  131. package/dist/types/api/generated/system.d.ts +9 -2
  132. package/dist/types/api/generated/tasks.d.ts +1 -0
  133. package/dist/types/api/generated/users.d.ts +1 -1
  134. package/dist/types/api/generated/versions.d.ts +1 -0
  135. package/dist/types/api/generated/views.d.ts +50 -9
  136. package/dist/types/api/queries/authentication/getAuthentication.d.ts +1 -0
  137. package/dist/types/api/queries/overview/updateOverview.d.ts +2 -0
  138. package/dist/types/api/queries/project/getProject.d.ts +4 -0
  139. package/dist/types/components/ProjectTableSettings/RowHeightSettings.d.ts +3 -0
  140. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +4 -0
  141. package/dist/types/containers/ProjectTreeTable/hooks/useDynamicRowHeight.d.ts +11 -0
  142. package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +2 -1
  143. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
  144. package/package.json +3 -3
@@ -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 { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { CellWidget, EntityNameWidget, GroupHeaderWidget, ThumbnailWidget } from './widgets'\nimport { getCellId, getCellValue } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy, useCellEditing } from './context'\nimport { NEXT_PAGE_ID } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport { NameWidgetData } from '@shared/components/RenameForm'\n\nconst MIN_SIZE = 50\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 pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name\n const labelB = rowB.original.path || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(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 indexB - indexA < 0 ? 1 : -1\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 | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n}\n\nconst buildTreeTableColumns = ({\n attribs,\n links = [],\n showHierarchy,\n options,\n excluded,\n extraColumns,\n groupBy,\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(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') return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 64,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={row.original.entityId || row.id}\n entityType={row.original.entityType}\n updatedAt={row.original.updatedAt}\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: 'Folder / Task',\n minSize: MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy ? false : true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\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 cellId = getCellId(row.id, column.id)\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n label={'Load more tasks'}\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreTasks?.(id)}\n />\n )\n }\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 + 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 isExpanded={row.getIsExpanded()}\n isEmpty={row.subRows.length === 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={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n showHierarchy={showHierarchy}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\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: MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: true,\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)) 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)}\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('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: 'Type',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: [...options.folderType, ...options.taskType], type: 'string' }),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\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 : []\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={meta?.readOnly?.includes(column.id) || meta?.readOnly?.includes(fieldId)}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(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)) 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)}\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('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(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)) 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)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: 'Created at',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) 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 />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: 'Updated at',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) 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 />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\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: MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: true,\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)) return null\n const isTypeInScope = attrib.scope?.includes(type as (typeof attrib.scope)[number])\n\n // if the attribute is not in scope, we should nothing\n if (!isTypeInScope) 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' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited && ['folder', 'task'].includes(type)}\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>[] = links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) 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: MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\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 valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\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 />\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":["MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","pathSort","labelA","labelB","valueLengthSort","columnId","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","showHierarchy","options","excluded","extraColumns","groupBy","staticColumns","isIncluded","id","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","NEXT_PAGE_ID","LoadMoreWidget","_a","jsxs","TableCellContent","GroupHeaderWidget","EntityNameWidget","CellWidget","_b","a","b","c","s","fieldId","_c","_d","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","Icon","getEntityTypeIcon","cellValue","v","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 { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { CellWidget, EntityNameWidget, GroupHeaderWidget, ThumbnailWidget } from './widgets'\nimport { getCellId, getCellValue } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy, useCellEditing, useColumnSettingsContext } from './context'\nimport { NEXT_PAGE_ID } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport { NameWidgetData } from '@shared/components/RenameForm'\n\nconst MIN_SIZE = 50\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 pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name\n const labelB = rowB.original.path || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(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 indexB - indexA < 0 ? 1 : -1\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 | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n}\n\nconst buildTreeTableColumns = ({\n attribs,\n links = [],\n showHierarchy,\n options,\n excluded,\n extraColumns,\n groupBy,\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(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') return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 24,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={row.original.entityId || row.id}\n entityType={row.original.entityType}\n updatedAt={row.original.updatedAt}\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: 'Folder / Task',\n minSize: MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy ? false : true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\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.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n label={'Load more tasks'}\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreTasks?.(id)}\n />\n )\n }\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 + 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 isExpanded={row.getIsExpanded()}\n isEmpty={row.subRows.length === 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={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n showHierarchy={showHierarchy}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n rowHeight={rowHeight}\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: MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: true,\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)) 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)}\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('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: 'Type',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: [...options.folderType, ...options.taskType], type: 'string' }),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\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 : []\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={meta?.readOnly?.includes(column.id) || meta?.readOnly?.includes(fieldId)}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(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)) 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)}\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('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(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)) 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)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: 'Created at',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) 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 />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: 'Updated at',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) 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 />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\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: MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: true,\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)) return null\n const isTypeInScope = attrib.scope?.includes(type as (typeof attrib.scope)[number])\n\n // if the attribute is not in scope, we should nothing\n if (!isTypeInScope) 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' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited && ['folder', 'task'].includes(type)}\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>[] = links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) 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: MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\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 valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\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 />\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":["MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","pathSort","labelA","labelB","valueLengthSort","columnId","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","showHierarchy","options","excluded","extraColumns","groupBy","staticColumns","isIncluded","id","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","rowHeight","useColumnSettingsContext","NEXT_PAGE_ID","LoadMoreWidget","_a","jsxs","TableCellContent","GroupHeaderWidget","EntityNameWidget","CellWidget","_b","a","b","c","s","fieldId","_c","_d","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","Icon","getEntityTypeIcon","cellValue","v","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // All column IDs reference\n setAllColumns: (allColumnIds: string[]) => void\n\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityOnChange: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningOnChange: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderOnChange: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingOnChange: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingOnChange: OnChangeFn<SortingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["ColumnSettingsContext","createContext","useColumnSettingsContext","context","useContext"],"mappings":"yGAsEaA,EAAwBC,gBAAqD,MAAS,EAEtFC,EAA2B,IAAiC,CACjE,MAAAC,EAAUC,aAAWJ,CAAqB,EAChD,GAAI,CAACG,EACG,MAAA,IAAI,MAAM,uEAAuE,EAElF,OAAAA,CACT"}
1
+ {"version":3,"file":"ColumnSettingsContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n rowHeight?: number\n}\n\nexport interface ColumnSettingsContextType {\n // All column IDs reference\n setAllColumns: (allColumnIds: string[]) => void\n\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityOnChange: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningOnChange: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderOnChange: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingOnChange: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingOnChange: OnChangeFn<SortingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Row height\n rowHeight?: number\n updateRowHeight: (rowHeight: number) => void\n updateRowHeightWithPersistence: (rowHeight: number) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["ColumnSettingsContext","createContext","useColumnSettingsContext","context","useContext"],"mappings":"yGA4EaA,EAAwBC,gBAAqD,MAAS,EAEtFC,EAA2B,IAAiC,CACjE,MAAAC,EAAUC,aAAWJ,CAAqB,EAChD,GAAI,CAACG,EACG,MAAA,IAAI,MAAM,uEAAuE,EAElF,OAAAA,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // All column IDs reference\n setAllColumns: (allColumnIds: string[]) => void\n\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityOnChange: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningOnChange: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderOnChange: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingOnChange: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingOnChange: OnChangeFn<SortingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["ColumnSettingsContext","createContext","useColumnSettingsContext","context","useContext"],"mappings":";AAsEa,MAAAA,IAAwBC,EAAqD,MAAS,GAEtFC,IAA2B,MAAiC;AACjE,QAAAC,IAAUC,EAAWJ,CAAqB;AAChD,MAAI,CAACG;AACG,UAAA,IAAI,MAAM,uEAAuE;AAElF,SAAAA;AACT;"}
1
+ {"version":3,"file":"ColumnSettingsContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n rowHeight?: number\n}\n\nexport interface ColumnSettingsContextType {\n // All column IDs reference\n setAllColumns: (allColumnIds: string[]) => void\n\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityOnChange: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningOnChange: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderOnChange: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingOnChange: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingOnChange: OnChangeFn<SortingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Row height\n rowHeight?: number\n updateRowHeight: (rowHeight: number) => void\n updateRowHeightWithPersistence: (rowHeight: number) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["ColumnSettingsContext","createContext","useColumnSettingsContext","context","useContext"],"mappings":";AA4Ea,MAAAA,IAAwBC,EAAqD,MAAS,GAEtFC,IAA2B,MAAiC;AACjE,QAAAC,IAAUC,EAAWJ,CAAqB;AAChD,MAAI,CAACG;AACG,UAAA,IAAI,MAAM,uEAAuE;AAElF,SAAAA;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("../../../../../_virtual/jsx-runtime.cjs.js"),C=require("react"),m=require("@tanstack/react-table"),Z=require("./SelectionCellsContext.cjs.js"),$=require("../ProjectTreeTable.cjs.js"),nn=require("./ColumnSettingsContext.cjs.js"),en=({children:R,config:T,onChange:B})=>{var z;const O=C.useRef([]),U=n=>{O.current=Array.from(new Set(n))},o=n=>B(n,O.current),s=T,{columnOrder:j=[],columnPinning:q={},columnVisibility:E={},columnSizing:_={},sorting:A=[],groupBy:d,groupByConfig:p={}}=s,S=[...A],i=[...j],t={...q},f=["thumbnail","name","subType","status","tags"];if(f.forEach((n,e)=>{if(!i.includes(n)){const l=f[e-1],u=f[e+1];if(!l||!i.includes(l))i.unshift(n);else{const c=i.indexOf(l);i.splice(c+1,0,n)}u&&(t!=null&&t.left)&&(t!=null&&t.left.includes(u))&&(t.left=[n,...(t==null?void 0:t.left)||[]])}}),d){if(!((z=t.left)!=null&&z.includes("name")))t.left=["name",...(t==null?void 0:t.left)||[]];else{const n=t.left.filter(e=>e!=="name");t.left=["name",...n]}if(i.includes("name")){const n=i.indexOf("name");i.splice(n,1)}i.unshift("name")}i.unshift($.DRAG_HANDLE_COLUMN_ID,Z.ROW_SELECTION_COLUMN_ID);const a={...E};d&&!a.name&&(a.name=!0);const P=n=>{o({...s,columnVisibility:n})},y=n=>{o({...s,columnOrder:n})},b=n=>{o({...s,columnPinning:n})},[D,h]=C.useState(null),w=D||_,g=C.useRef(null),x=n=>{h(n),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{o({...s,columnSizing:n}),h(null)},500)},L=n=>{const e={...t},l=e.left||[],u=Object.keys(n).filter(r=>n[r]===!1),c=l.filter(r=>!u.includes(r));return{...e,left:c}},N=n=>{const e={...t},l=e.left||[],u=n.filter(c=>l.includes(c));return{...e,left:u}},v=n=>[...i].sort((e,l)=>{var r,I;const u=(r=n.left)!=null&&r.includes(e)?1:0;return((I=n.left)!=null&&I.includes(l)?1:0)-u}),G=n=>{const e=L(n);o({...s,columnVisibility:n,columnPinning:e})},M=n=>{const e=N(n);o({...s,columnOrder:n,columnPinning:e})},W=n=>{const e=v(n);o({...s,columnOrder:e,columnPinning:n})},V=n=>{o({...s,sorting:n})},k=n=>{o({...s,groupBy:n})},H=n=>{o({...s,groupByConfig:{...p,...n}})},F=n=>{const e=m.functionalUpdate(n,a);P(e)},J=n=>{const e=m.functionalUpdate(n,t);b(e)},K=n=>{const e=m.functionalUpdate(n,i);y(e)},Q=n=>{const e=m.functionalUpdate(n,w);x(e)},X=n=>{const e=m.functionalUpdate(n,S);V(e)};return Y.jsxRuntimeExports.jsx(nn.ColumnSettingsContext.Provider,{value:{setAllColumns:U,columnVisibility:a,setColumnVisibility:P,updateColumnVisibility:G,columnVisibilityOnChange:F,columnPinning:t,setColumnPinning:b,updateColumnPinning:W,columnPinningOnChange:J,columnOrder:i,setColumnOrder:y,updateColumnOrder:M,columnOrderOnChange:K,columnSizing:w,setColumnSizing:x,columnSizingOnChange:Q,sorting:S,updateSorting:V,sortingOnChange:X,groupBy:d,updateGroupBy:k,groupByConfig:p,updateGroupByConfig:H,setColumnsConfig:n=>o(n)},children:R})};exports.ColumnSettingsProvider=en;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const an=require("../../../../../_virtual/jsx-runtime.cjs.js"),l=require("react"),f=require("@tanstack/react-table"),fn=require("./SelectionCellsContext.cjs.js"),dn=require("../ProjectTreeTable.cjs.js"),gn=require("./ColumnSettingsContext.cjs.js"),mn=({children:E,config:q,onChange:A})=>{var j;const S=l.useRef([]),[_,R]=l.useState(null),[L,w]=l.useState(null),[v,m]=l.useState(34),P=l.useRef(!1),D=n=>{S.current=Array.from(new Set(n))},o=n=>A(n,S.current),s=q,{columnOrder:N=[],columnPinning:G={},columnVisibility:M={},columnSizing:W={},sorting:k=[],groupBy:C,groupByConfig:y={},rowHeight:d}=s||{},b=l.useRef(!1);l.useEffect(()=>{!b.current&&d!==void 0&&d!==null&&(m(d),b.current=!0)},[d]);const F=L??v,x=[...k],i=[...N],t={...G},O=["thumbnail","name","subType","status","tags"];if(O.forEach((n,e)=>{if(!i.includes(n)){const u=O[e-1],r=O[e+1];if(!u||!i.includes(u))i.unshift(n);else{const c=i.indexOf(u);i.splice(c+1,0,n)}r&&(t!=null&&t.left)&&(t!=null&&t.left.includes(r))&&(t.left=[n,...(t==null?void 0:t.left)||[]])}}),C){if(!((j=t.left)!=null&&j.includes("name")))t.left=["name",...(t==null?void 0:t.left)||[]];else{const n=t.left.filter(e=>e!=="name");t.left=["name",...n]}if(i.includes("name")){const n=i.indexOf("name");i.splice(n,1)}i.unshift("name")}i.unshift(dn.DRAG_HANDLE_COLUMN_ID,fn.ROW_SELECTION_COLUMN_ID);const g={...M};C&&!g.name&&(g.name=!0);const H=n=>{o({...s,columnVisibility:n})},I=n=>{o({...s,columnOrder:n})},T=n=>{o({...s,columnPinning:n})},z=_||W,h=l.useRef(null),p=l.useRef(null),V=n=>{R(n),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{o({...s,columnSizing:n}),R(null)},500)},J=n=>{const e={...t},u=e.left||[],r=Object.keys(n).filter(a=>n[a]===!1),c=u.filter(a=>!r.includes(a));return{...e,left:c}},K=n=>{const e={...t},u=e.left||[],r=n.filter(c=>u.includes(c));return{...e,left:r}},Q=n=>[...i].sort((e,u)=>{var a,B;const r=(a=n.left)!=null&&a.includes(e)?1:0;return((B=n.left)!=null&&B.includes(u)?1:0)-r}),X=n=>{const e=J(n);o({...s,columnVisibility:n,columnPinning:e})},Y=n=>{const e=K(n);o({...s,columnOrder:n,columnPinning:e})},Z=n=>{const e=Q(n);o({...s,columnOrder:e,columnPinning:n})},U=n=>{o({...s,sorting:n})},$=n=>{o({...s,groupBy:n})},nn=n=>{o({...s,groupByConfig:{...y,...n}})},en=n=>{m(n)},tn=n=>{m(n),P.current=!0,w(n),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{o({...s,rowHeight:n}),w(null),P.current=!1},200)},on=en,sn=n=>{const e=f.functionalUpdate(n,g);H(e)},un=n=>{const e=f.functionalUpdate(n,t);T(e)},ln=n=>{const e=f.functionalUpdate(n,i);I(e)},rn=n=>{const e=f.functionalUpdate(n,z);V(e)},cn=n=>{const e=f.functionalUpdate(n,x);U(e)};return an.jsxRuntimeExports.jsx(gn.ColumnSettingsContext.Provider,{value:{setAllColumns:D,columnVisibility:g,setColumnVisibility:H,updateColumnVisibility:X,columnVisibilityOnChange:sn,columnPinning:t,setColumnPinning:T,updateColumnPinning:Z,columnPinningOnChange:un,columnOrder:i,setColumnOrder:I,updateColumnOrder:Y,columnOrderOnChange:ln,columnSizing:z,setColumnSizing:V,columnSizingOnChange:rn,sorting:x,updateSorting:U,sortingOnChange:cn,groupBy:C,updateGroupBy:$,groupByConfig:y,updateGroupByConfig:nn,rowHeight:F,updateRowHeight:on,updateRowHeightWithPersistence:tn,setColumnsConfig:n=>o(n)},children:E})};exports.ColumnSettingsProvider=mn;
2
2
  //# sourceMappingURL=ColumnSettingsProvider.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => onChange(next, allColumnsRef.current)\n const columnsConfig = config as ColumnsConfig\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n } = columnsConfig\n\n const sorting = [...sortingInit]\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const newVisibility = functionalUpdate(updater, columnVisibility)\n setColumnVisibility(newVisibility)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","allColumnsRef","React","setAllColumns","allColumnIds","onChangeWithColumns","next","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","_a","filteredPinned","nameIndex","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","internalColumnSizing","setInternalColumnSizing","useState","columnSizing","resizingTimeoutRef","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","pinnedColumns","hiddenColumns","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","_b","updateColumnVisibility","updateColumnOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateGroupBy","updateGroupByConfig","columnVisibilityOnChange","updater","newVisibility","functionalUpdate","columnPinningOnChange","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n\n // Local row height state that persists and doesn't get overridden by API\n const [localRowHeight, setLocalRowHeight] = useState<number>(34)\n\n // Flag to prevent API updates during active row height adjustments\n const isAdjustingRowHeightRef = React.useRef(false)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => onChange(next, allColumnsRef.current)\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight,\n } = columnsConfig || {}\n\n // Initialize local row height from API only once on mount\n const hasInitializedRef = React.useRef(false)\n React.useEffect(() => {\n if (!hasInitializedRef.current && configRowHeight !== undefined && configRowHeight !== null) {\n setLocalRowHeight(configRowHeight)\n hasInitializedRef.current = true\n }\n }, [configRowHeight])\n\n // Use internal row height during slider adjustments, otherwise use local persistent state\n const rowHeight = internalRowHeight ?? localRowHeight\n\n const sorting = [...sortingInit]\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeightUI = (newRowHeight: number) => {\n setLocalRowHeight(newRowHeight)\n }\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = (newRowHeight: number) => {\n // Update UI immediately\n setLocalRowHeight(newRowHeight)\n\n // Block external API updates during adjustment period\n isAdjustingRowHeightRef.current = true\n setInternalRowHeight(newRowHeight)\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n })\n\n // Clean up internal state\n setInternalRowHeight(null)\n isAdjustingRowHeightRef.current = false\n }, 200)\n }\n\n // Public API for immediate UI updates (used during slider drag)\n const updateRowHeight = updateRowHeightUI\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const newVisibility = functionalUpdate(updater, columnVisibility)\n setColumnVisibility(newVisibility)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","allColumnsRef","React","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","localRowHeight","setLocalRowHeight","isAdjustingRowHeightRef","setAllColumns","allColumnIds","onChangeWithColumns","next","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","hasInitializedRef","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","_a","filteredPinned","nameIndex","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","resizingTimeoutRef","rowHeightTimeoutRef","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","pinnedColumns","hiddenColumns","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","_b","updateColumnVisibility","updateColumnOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateGroupBy","updateGroupByConfig","updateRowHeightUI","newRowHeight","updateRowHeightWithPersistence","updateRowHeight","columnVisibilityOnChange","updater","newVisibility","functionalUpdate","columnPinningOnChange","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}