@ynput/ayon-frontend-shared 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/ProjectTreeTable.cjs.js +1 -1
  2. package/dist/ProjectTreeTable.es.js +247 -243
  3. package/dist/_virtual/index.cjs22.js +1 -1
  4. package/dist/_virtual/index.cjs23.js +1 -1
  5. package/dist/_virtual/index.cjs24.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.cjs8.js +1 -1
  10. package/dist/_virtual/index.es22.js +3 -3
  11. package/dist/_virtual/index.es23.js +5 -5
  12. package/dist/_virtual/index.es24.js +5 -5
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/_virtual/index.es8.js +2 -2
  19. package/dist/api.cjs.js +1 -1
  20. package/dist/api.es.js +446 -445
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.es.js +20 -9
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  26. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  28. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  30. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  32. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  33. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  34. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  35. package/dist/node_modules/remove-accents/index.es.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  44. package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
  45. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphql.es.js +129 -68
  47. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  51. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  52. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  53. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  54. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  55. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  64. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  65. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  66. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  67. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  68. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  69. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  70. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  71. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  72. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
  73. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  74. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  76. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  77. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  78. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  79. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  80. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  81. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  82. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  83. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  84. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  85. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  86. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
  87. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  95. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
  103. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  107. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  125. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  126. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  127. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  129. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  131. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  133. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
  135. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
  137. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
  139. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  141. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  142. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  143. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  144. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  145. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
  147. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  148. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  149. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  151. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  152. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  153. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  154. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  155. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  156. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  157. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  158. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  159. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  160. package/dist/types/api/generated/graphql.d.ts +71 -0
  161. package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
  162. package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
  163. package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
  164. package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
  165. package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
  166. package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
  167. package/dist/types/api/queries/project/getProject.d.ts +14 -0
  168. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
  169. package/dist/types/api/queries/users/getUsers.d.ts +14 -0
  170. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
  171. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  172. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  173. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
  174. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  175. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  176. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  177. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  178. package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"feedFilterAdapter.cjs.js","sources":["../../../../../../src/containers/Feed/helpers/feedFilterAdapter.ts"],"sourcesContent":["import {\n Filter,\n Option,\n SEARCH_FILTER_ID,\n getFilterFromId,\n buildFilterId,\n} from '@ynput/ayon-react-components'\nimport type { QueryCondition, QueryFilter } from '@shared/api'\nimport { tryMergeDatetimeRange } from '@shared/containers/ProjectTreeTable/utils/queryFilterToClientFilter'\nimport { convertDateFilterToQueryFilter } from '@shared/containers/ProjectTreeTable/utils/clientFilterToQueryFilter'\n\n// On/off filters stored as boolean conditions ({ key, eq, true }). Activity-type\n// keys drive getFilterActivityTypes; has_attachments / in_review_session are\n// translated by buildBackendFilter. All shown as dropdown chips.\nexport const FEED_BOOLEAN_KEYS = [\n 'comments',\n 'versions',\n 'updates',\n 'checklists',\n 'has_attachments',\n 'in_review_session',\n]\n\nconst isCondition = (c: QueryCondition | QueryFilter): c is QueryCondition => !!c && 'key' in c\n\n// QueryFilter (feedFilter) -> Filter[] for SearchFilter.\n// body -> global-search chips, boolean keys -> single-value \"Yes\" chips,\n// author/category -> enum chips.\nexport const feedFilterToClientFilters = (\n feedFilter: QueryFilter | undefined,\n options: Option[],\n): Filter[] => {\n const filters: Filter[] = []\n const bodyValues: { id: string; label: string }[] = []\n\n const walk = (node: QueryCondition | QueryFilter) => {\n if (!node) return\n if (isCondition(node)) {\n const key = node.key\n if (key === 'body') {\n const value = String(node.value ?? '')\n if (value) bodyValues.push({ id: value, label: value })\n return\n }\n const option = options.find((o) => o.id === key)\n if (!option) return\n\n if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (node.value === true) {\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n icon: option.icon,\n type: 'boolean',\n singleSelect: true,\n // value label = filter name so the compact chip (label hidden) reads\n // e.g. \"Checklists\" instead of \"Yes\"\n values: [{ id: 'true', label: option.label }],\n })\n }\n return\n }\n\n const rawValues = Array.isArray(node.value) ? node.value : [node.value]\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n type: option.type,\n icon: option.icon,\n operator: 'OR',\n values: rawValues.map((val) => {\n const match = option.values?.find((o) => o.id === String(val))\n return match ? { ...match } : { id: String(val), label: String(val) }\n }),\n })\n return\n }\n\n const dateFilter = tryMergeDatetimeRange(node as any, options as any)\n if (dateFilter) {\n filters.push(dateFilter)\n return\n }\n\n node.conditions?.forEach(walk)\n }\n\n feedFilter?.conditions?.forEach(walk)\n\n if (bodyValues.length) {\n filters.push({ id: SEARCH_FILTER_ID, label: '', values: bodyValues })\n }\n\n return filters\n}\n\n// Filter[] from SearchFilter -> QueryFilter (feedFilter UI representation).\nexport const clientFiltersToFeedFilter = (clientFilters: Filter[]): QueryFilter => {\n const conditions: (QueryCondition | QueryFilter)[] = []\n const bodyConditions: QueryCondition[] = []\n\n clientFilters.forEach((filter) => {\n const key = getFilterFromId(filter.id)\n const values = (filter.values || []).map((v) => v.id)\n if (!values.length) return\n\n if (key === SEARCH_FILTER_ID) {\n values.forEach((v) =>\n bodyConditions.push({ key: 'body', operator: 'like', value: String(v) }),\n )\n } else if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (values.includes('true')) conditions.push({ key, operator: 'eq', value: true })\n } else if (filter.type === 'datetime') {\n const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) {\n conditions.push(dateQueryFilter as QueryFilter)\n }\n } else {\n conditions.push({ key, operator: 'in', value: values.map(String) })\n }\n })\n\n if (bodyConditions.length === 1) conditions.push(bodyConditions[0])\n else if (bodyConditions.length > 1)\n conditions.push({ operator: 'or', conditions: bodyConditions })\n\n return { operator: 'and', conditions }\n}\n"],"names":["FEED_BOOLEAN_KEYS","isCondition","c","feedFilterToClientFilters","feedFilter","options","filters","bodyValues","walk","node","key","value","option","o","buildFilterId","rawValues","val","match","dateFilter","tryMergeDatetimeRange","SEARCH_FILTER_ID","clientFiltersToFeedFilter","clientFilters","conditions","bodyConditions","filter","getFilterFromId","values","v","dateQueryFilter","convertDateFilterToQueryFilter"],"mappings":"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"}
1
+ {"version":3,"file":"feedFilterAdapter.cjs.js","sources":["../../../../../../src/containers/Feed/helpers/feedFilterAdapter.ts"],"sourcesContent":["import {\n Filter,\n Option,\n SEARCH_FILTER_ID,\n getFilterFromId,\n buildFilterId,\n} from '@ynput/ayon-react-components'\nimport type { QueryCondition, QueryFilter } from '@shared/api'\nimport { tryMergeDatetimeRange } from '@shared/containers/ProjectTreeTable/utils/queryFilterToClientFilter'\nimport { convertDateFilterToQueryFilter } from '@shared/containers/ProjectTreeTable/utils/clientFilterToQueryFilter'\n\n// On/off filters stored as boolean conditions ({ key, eq, true }). Activity-type\n// keys drive getFilterActivityTypes; has_attachments / in_review_session are\n// translated by buildBackendFilter. All shown as dropdown chips.\nexport const FEED_BOOLEAN_KEYS = [\n 'comments',\n 'versions',\n 'updates',\n 'checklists',\n 'has_attachments',\n 'in_review_session',\n]\n\nconst isCondition = (c: QueryCondition | QueryFilter): c is QueryCondition => !!c && 'key' in c\n\n// QueryFilter (feedFilter) -> Filter[] for SearchFilter.\n// body -> global-search chips, boolean keys -> single-value \"Yes\" chips,\n// author/category -> enum chips.\nexport const feedFilterToClientFilters = (\n feedFilter: QueryFilter | undefined,\n options: Option[],\n): Filter[] => {\n const filters: Filter[] = []\n const bodyValues: { id: string; label: string }[] = []\n\n const walk = (node: QueryCondition | QueryFilter) => {\n if (!node) return\n if (isCondition(node)) {\n const key = node.key\n if (key === 'body') {\n const value = String(node.value ?? '')\n if (value) bodyValues.push({ id: value, label: value })\n return\n }\n const option = options.find((o) => o.id === key)\n if (!option) return\n\n if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (node.value === true) {\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n icon: option.icon,\n type: 'boolean',\n singleSelect: true,\n // value label = filter name so the compact chip (label hidden) reads\n // e.g. \"Checklists\" instead of \"Yes\"\n values: [{ id: 'true', label: option.label }],\n })\n }\n return\n }\n\n const rawValues = Array.isArray(node.value) ? node.value : [node.value]\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n type: option.type,\n icon: option.icon,\n singleSelect: option.singleSelect,\n operator: 'OR',\n values: rawValues.map((val) => {\n const match = option.values?.find((o) => o.id === String(val))\n return match ? { ...match } : { id: String(val), label: String(val) }\n }),\n })\n return\n }\n\n const dateFilter = tryMergeDatetimeRange(node as any, options as any)\n if (dateFilter) {\n filters.push(dateFilter)\n return\n }\n\n node.conditions?.forEach(walk)\n }\n\n feedFilter?.conditions?.forEach(walk)\n\n if (bodyValues.length) {\n filters.push({ id: SEARCH_FILTER_ID, label: '', values: bodyValues })\n }\n\n return filters\n}\n\n// Filter[] from SearchFilter -> QueryFilter (feedFilter UI representation).\nexport const clientFiltersToFeedFilter = (clientFilters: Filter[]): QueryFilter => {\n const conditions: (QueryCondition | QueryFilter)[] = []\n const bodyConditions: QueryCondition[] = []\n\n clientFilters.forEach((filter) => {\n const key = getFilterFromId(filter.id)\n const values = (filter.values || []).map((v) => v.id)\n if (!values.length) return\n\n if (key === SEARCH_FILTER_ID) {\n values.forEach((v) =>\n bodyConditions.push({ key: 'body', operator: 'like', value: String(v) }),\n )\n } else if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (values.includes('true')) conditions.push({ key, operator: 'eq', value: true })\n } else if (filter.type === 'datetime') {\n const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) {\n conditions.push(dateQueryFilter as QueryFilter)\n }\n } else {\n conditions.push({ key, operator: 'in', value: values.map(String) })\n }\n })\n\n if (bodyConditions.length === 1) conditions.push(bodyConditions[0])\n else if (bodyConditions.length > 1)\n conditions.push({ operator: 'or', conditions: bodyConditions })\n\n return { operator: 'and', conditions }\n}\n"],"names":["FEED_BOOLEAN_KEYS","isCondition","c","feedFilterToClientFilters","feedFilter","options","filters","bodyValues","walk","node","key","value","option","o","buildFilterId","rawValues","val","match","dateFilter","tryMergeDatetimeRange","SEARCH_FILTER_ID","clientFiltersToFeedFilter","clientFilters","conditions","bodyConditions","filter","getFilterFromId","values","v","dateQueryFilter","convertDateFilterToQueryFilter"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { SEARCH_FILTER_ID as d, buildFilterId as p, getFilterFromId as m } from "@ynput/ayon-react-components";
2
- import { tryMergeDatetimeRange as v } from "../../ProjectTreeTable/utils/queryFilterToClientFilter.es.js";
3
- import { convertDateFilterToQueryFilter as b } from "../../ProjectTreeTable/utils/clientFilterToQueryFilter.es.js";
1
+ import { SEARCH_FILTER_ID as d, buildFilterId as p, getFilterFromId as g } from "@ynput/ayon-react-components";
2
+ import { tryMergeDatetimeRange as m } from "../../ProjectTreeTable/utils/queryFilterToClientFilter.es.js";
3
+ import { convertDateFilterToQueryFilter as v } from "../../ProjectTreeTable/utils/clientFilterToQueryFilter.es.js";
4
4
  const f = [
5
5
  "comments",
6
6
  "versions",
@@ -8,57 +8,58 @@ const f = [
8
8
  "checklists",
9
9
  "has_attachments",
10
10
  "in_review_session"
11
- ], g = (a) => !!a && "key" in a, k = (a, i) => {
12
- const t = [], n = [], o = (e) => {
11
+ ], b = (a) => !!a && "key" in a, k = (a, i) => {
12
+ const t = [], l = [], o = (e) => {
13
13
  if (!e) return;
14
- if (g(e)) {
14
+ if (b(e)) {
15
15
  const u = e.key;
16
16
  if (u === "body") {
17
- const s = String(e.value ?? "");
18
- s && n.push({ id: s, label: s });
17
+ const n = String(e.value ?? "");
18
+ n && l.push({ id: n, label: n });
19
19
  return;
20
20
  }
21
- const l = i.find((s) => s.id === u);
22
- if (!l) return;
21
+ const s = i.find((n) => n.id === u);
22
+ if (!s) return;
23
23
  if (f.includes(u)) {
24
24
  e.value === !0 && t.push({
25
25
  id: p(u),
26
- label: l.label,
27
- icon: l.icon,
26
+ label: s.label,
27
+ icon: s.icon,
28
28
  type: "boolean",
29
29
  singleSelect: !0,
30
30
  // value label = filter name so the compact chip (label hidden) reads
31
31
  // e.g. "Checklists" instead of "Yes"
32
- values: [{ id: "true", label: l.label }]
32
+ values: [{ id: "true", label: s.label }]
33
33
  });
34
34
  return;
35
35
  }
36
36
  const h = Array.isArray(e.value) ? e.value : [e.value];
37
37
  t.push({
38
38
  id: p(u),
39
- label: l.label,
40
- type: l.type,
41
- icon: l.icon,
39
+ label: s.label,
40
+ type: s.type,
41
+ icon: s.icon,
42
+ singleSelect: s.singleSelect,
42
43
  operator: "OR",
43
- values: h.map((s) => {
44
- const c = l.values?.find((y) => y.id === String(s));
45
- return c ? { ...c } : { id: String(s), label: String(s) };
44
+ values: h.map((n) => {
45
+ const c = s.values?.find((y) => y.id === String(n));
46
+ return c ? { ...c } : { id: String(n), label: String(n) };
46
47
  })
47
48
  });
48
49
  return;
49
50
  }
50
- const r = v(e, i);
51
+ const r = m(e, i);
51
52
  if (r) {
52
53
  t.push(r);
53
54
  return;
54
55
  }
55
56
  e.conditions?.forEach(o);
56
57
  };
57
- return a?.conditions?.forEach(o), n.length && t.push({ id: d, label: "", values: n }), t;
58
+ return a?.conditions?.forEach(o), l.length && t.push({ id: d, label: "", values: l }), t;
58
59
  }, _ = (a) => {
59
60
  const i = [], t = [];
60
- return a.forEach((n) => {
61
- const o = m(n.id), e = (n.values || []).map((r) => r.id);
61
+ return a.forEach((l) => {
62
+ const o = g(l.id), e = (l.values || []).map((r) => r.id);
62
63
  if (e.length)
63
64
  if (o === d)
64
65
  e.forEach(
@@ -66,8 +67,8 @@ const f = [
66
67
  );
67
68
  else if (f.includes(o))
68
69
  e.includes("true") && i.push({ key: o, operator: "eq", value: !0 });
69
- else if (n.type === "datetime") {
70
- const r = b(o, n);
70
+ else if (l.type === "datetime") {
71
+ const r = v(o, l);
71
72
  r && i.push(r);
72
73
  } else
73
74
  i.push({ key: o, operator: "in", value: e.map(String) });
@@ -1 +1 @@
1
- {"version":3,"file":"feedFilterAdapter.es.js","sources":["../../../../../../src/containers/Feed/helpers/feedFilterAdapter.ts"],"sourcesContent":["import {\n Filter,\n Option,\n SEARCH_FILTER_ID,\n getFilterFromId,\n buildFilterId,\n} from '@ynput/ayon-react-components'\nimport type { QueryCondition, QueryFilter } from '@shared/api'\nimport { tryMergeDatetimeRange } from '@shared/containers/ProjectTreeTable/utils/queryFilterToClientFilter'\nimport { convertDateFilterToQueryFilter } from '@shared/containers/ProjectTreeTable/utils/clientFilterToQueryFilter'\n\n// On/off filters stored as boolean conditions ({ key, eq, true }). Activity-type\n// keys drive getFilterActivityTypes; has_attachments / in_review_session are\n// translated by buildBackendFilter. All shown as dropdown chips.\nexport const FEED_BOOLEAN_KEYS = [\n 'comments',\n 'versions',\n 'updates',\n 'checklists',\n 'has_attachments',\n 'in_review_session',\n]\n\nconst isCondition = (c: QueryCondition | QueryFilter): c is QueryCondition => !!c && 'key' in c\n\n// QueryFilter (feedFilter) -> Filter[] for SearchFilter.\n// body -> global-search chips, boolean keys -> single-value \"Yes\" chips,\n// author/category -> enum chips.\nexport const feedFilterToClientFilters = (\n feedFilter: QueryFilter | undefined,\n options: Option[],\n): Filter[] => {\n const filters: Filter[] = []\n const bodyValues: { id: string; label: string }[] = []\n\n const walk = (node: QueryCondition | QueryFilter) => {\n if (!node) return\n if (isCondition(node)) {\n const key = node.key\n if (key === 'body') {\n const value = String(node.value ?? '')\n if (value) bodyValues.push({ id: value, label: value })\n return\n }\n const option = options.find((o) => o.id === key)\n if (!option) return\n\n if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (node.value === true) {\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n icon: option.icon,\n type: 'boolean',\n singleSelect: true,\n // value label = filter name so the compact chip (label hidden) reads\n // e.g. \"Checklists\" instead of \"Yes\"\n values: [{ id: 'true', label: option.label }],\n })\n }\n return\n }\n\n const rawValues = Array.isArray(node.value) ? node.value : [node.value]\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n type: option.type,\n icon: option.icon,\n operator: 'OR',\n values: rawValues.map((val) => {\n const match = option.values?.find((o) => o.id === String(val))\n return match ? { ...match } : { id: String(val), label: String(val) }\n }),\n })\n return\n }\n\n const dateFilter = tryMergeDatetimeRange(node as any, options as any)\n if (dateFilter) {\n filters.push(dateFilter)\n return\n }\n\n node.conditions?.forEach(walk)\n }\n\n feedFilter?.conditions?.forEach(walk)\n\n if (bodyValues.length) {\n filters.push({ id: SEARCH_FILTER_ID, label: '', values: bodyValues })\n }\n\n return filters\n}\n\n// Filter[] from SearchFilter -> QueryFilter (feedFilter UI representation).\nexport const clientFiltersToFeedFilter = (clientFilters: Filter[]): QueryFilter => {\n const conditions: (QueryCondition | QueryFilter)[] = []\n const bodyConditions: QueryCondition[] = []\n\n clientFilters.forEach((filter) => {\n const key = getFilterFromId(filter.id)\n const values = (filter.values || []).map((v) => v.id)\n if (!values.length) return\n\n if (key === SEARCH_FILTER_ID) {\n values.forEach((v) =>\n bodyConditions.push({ key: 'body', operator: 'like', value: String(v) }),\n )\n } else if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (values.includes('true')) conditions.push({ key, operator: 'eq', value: true })\n } else if (filter.type === 'datetime') {\n const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) {\n conditions.push(dateQueryFilter as QueryFilter)\n }\n } else {\n conditions.push({ key, operator: 'in', value: values.map(String) })\n }\n })\n\n if (bodyConditions.length === 1) conditions.push(bodyConditions[0])\n else if (bodyConditions.length > 1)\n conditions.push({ operator: 'or', conditions: bodyConditions })\n\n return { operator: 'and', conditions }\n}\n"],"names":["FEED_BOOLEAN_KEYS","isCondition","c","feedFilterToClientFilters","feedFilter","options","filters","bodyValues","walk","node","key","value","option","o","buildFilterId","rawValues","val","match","dateFilter","tryMergeDatetimeRange","SEARCH_FILTER_ID","clientFiltersToFeedFilter","clientFilters","conditions","bodyConditions","filter","getFilterFromId","values","v","dateQueryFilter","convertDateFilterToQueryFilter"],"mappings":"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"}
1
+ {"version":3,"file":"feedFilterAdapter.es.js","sources":["../../../../../../src/containers/Feed/helpers/feedFilterAdapter.ts"],"sourcesContent":["import {\n Filter,\n Option,\n SEARCH_FILTER_ID,\n getFilterFromId,\n buildFilterId,\n} from '@ynput/ayon-react-components'\nimport type { QueryCondition, QueryFilter } from '@shared/api'\nimport { tryMergeDatetimeRange } from '@shared/containers/ProjectTreeTable/utils/queryFilterToClientFilter'\nimport { convertDateFilterToQueryFilter } from '@shared/containers/ProjectTreeTable/utils/clientFilterToQueryFilter'\n\n// On/off filters stored as boolean conditions ({ key, eq, true }). Activity-type\n// keys drive getFilterActivityTypes; has_attachments / in_review_session are\n// translated by buildBackendFilter. All shown as dropdown chips.\nexport const FEED_BOOLEAN_KEYS = [\n 'comments',\n 'versions',\n 'updates',\n 'checklists',\n 'has_attachments',\n 'in_review_session',\n]\n\nconst isCondition = (c: QueryCondition | QueryFilter): c is QueryCondition => !!c && 'key' in c\n\n// QueryFilter (feedFilter) -> Filter[] for SearchFilter.\n// body -> global-search chips, boolean keys -> single-value \"Yes\" chips,\n// author/category -> enum chips.\nexport const feedFilterToClientFilters = (\n feedFilter: QueryFilter | undefined,\n options: Option[],\n): Filter[] => {\n const filters: Filter[] = []\n const bodyValues: { id: string; label: string }[] = []\n\n const walk = (node: QueryCondition | QueryFilter) => {\n if (!node) return\n if (isCondition(node)) {\n const key = node.key\n if (key === 'body') {\n const value = String(node.value ?? '')\n if (value) bodyValues.push({ id: value, label: value })\n return\n }\n const option = options.find((o) => o.id === key)\n if (!option) return\n\n if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (node.value === true) {\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n icon: option.icon,\n type: 'boolean',\n singleSelect: true,\n // value label = filter name so the compact chip (label hidden) reads\n // e.g. \"Checklists\" instead of \"Yes\"\n values: [{ id: 'true', label: option.label }],\n })\n }\n return\n }\n\n const rawValues = Array.isArray(node.value) ? node.value : [node.value]\n filters.push({\n id: buildFilterId(key),\n label: option.label,\n type: option.type,\n icon: option.icon,\n singleSelect: option.singleSelect,\n operator: 'OR',\n values: rawValues.map((val) => {\n const match = option.values?.find((o) => o.id === String(val))\n return match ? { ...match } : { id: String(val), label: String(val) }\n }),\n })\n return\n }\n\n const dateFilter = tryMergeDatetimeRange(node as any, options as any)\n if (dateFilter) {\n filters.push(dateFilter)\n return\n }\n\n node.conditions?.forEach(walk)\n }\n\n feedFilter?.conditions?.forEach(walk)\n\n if (bodyValues.length) {\n filters.push({ id: SEARCH_FILTER_ID, label: '', values: bodyValues })\n }\n\n return filters\n}\n\n// Filter[] from SearchFilter -> QueryFilter (feedFilter UI representation).\nexport const clientFiltersToFeedFilter = (clientFilters: Filter[]): QueryFilter => {\n const conditions: (QueryCondition | QueryFilter)[] = []\n const bodyConditions: QueryCondition[] = []\n\n clientFilters.forEach((filter) => {\n const key = getFilterFromId(filter.id)\n const values = (filter.values || []).map((v) => v.id)\n if (!values.length) return\n\n if (key === SEARCH_FILTER_ID) {\n values.forEach((v) =>\n bodyConditions.push({ key: 'body', operator: 'like', value: String(v) }),\n )\n } else if (FEED_BOOLEAN_KEYS.includes(key)) {\n if (values.includes('true')) conditions.push({ key, operator: 'eq', value: true })\n } else if (filter.type === 'datetime') {\n const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) {\n conditions.push(dateQueryFilter as QueryFilter)\n }\n } else {\n conditions.push({ key, operator: 'in', value: values.map(String) })\n }\n })\n\n if (bodyConditions.length === 1) conditions.push(bodyConditions[0])\n else if (bodyConditions.length > 1)\n conditions.push({ operator: 'or', conditions: bodyConditions })\n\n return { operator: 'and', conditions }\n}\n"],"names":["FEED_BOOLEAN_KEYS","isCondition","c","feedFilterToClientFilters","feedFilter","options","filters","bodyValues","walk","node","key","value","option","o","buildFilterId","rawValues","val","match","dateFilter","tryMergeDatetimeRange","SEARCH_FILTER_ID","clientFiltersToFeedFilter","clientFilters","conditions","bodyConditions","filter","getFilterFromId","values","v","dateQueryFilter","convertDateFilterToQueryFilter"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../../_virtual/jsx-runtime.cjs.js"),v=require("@tanstack/react-table"),l=require("./ListTable.styled.cjs.js"),j=require("./ListTableWidgets.cjs.js"),_=require("clsx");require("react");require("@tanstack/react-virtual");require("../ProjectTreeTable/buildTreeTableColumns.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("@ynput/ayon-react-components");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../../context/MenuContext.cjs.js");require("react-toastify");require("lodash");require("uuid");require("../../api/queries/users/updateUsers.cjs.js");require("../../util/pubsub.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("react-router-dom");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("../ProjectTreeTable/utils/columnIds.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContextInstance.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("../ContextMenu/ContextMenuContext.cjs.js");require("../../context/DeleteEntitiesContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContextInstance.cjs.js");require("../../context/ProjectFoldersContextInstance.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../components/InfoMessage/InfoMessage.cjs.js");require("../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("react-dom");require("../../context/RemoteModulesContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/UriContext.cjs.js");require("../../context/DetailsPanelContextInstance.cjs.js");const $=require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/widgets/LinksWidget.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");const D="editable",A=e=>!!e&&typeof e=="object"&&"__listTablePlaceholder"in e,G=({cell:e,row:u,rowIndex:E,attributeData:a,dataTypeWidgets:n,editingState:q,callbacks:g,isReadOnly:s})=>{const r=a?.type;if(!r||!n?.[r])return null;const o=n[r];if(!o)return null;const d=e.column.id,t=j.getListTableCellId(u.id,d),m={row:u,cell:e,value:e.getValue(),rowIndex:E,columnId:d,cellId:t,attributeData:a,isEditing:q.editingCellId===t,isReadOnly:s,startEditing:()=>q.startEditingCell(t),stopEditing:q.stopEditingCell,updateValue:f=>{g.onUpdateRow(d,f,u.id),q.stopEditingCell()},openViewer:()=>g.onOpenViewer?.(u.original),getDraftValue:q.getDraftValue,setDraftValue:q.setDraftValue};return o(m)},O=({row:e,cellWrapper:u,columnAttributeData:E,dataTypeWidgets:a,editingState:n,callbacks:q,editable:g=!0})=>{const s=A(e.original);if(s){const r=e.original&&typeof e.original=="object"&&"label"in e.original?String(e.original.label??""):"";return i.jsxRuntimeExports.jsx(l.TD,{style:{width:"100%"},children:i.jsxRuntimeExports.jsx(l.TDInner,{style:{left:0,paddingLeft:`calc(var(--padding-m) + ${e.depth*16}px)`},children:i.jsxRuntimeExports.jsx(l.PlaceholderRowContent,{children:r})})},`${e.id}-placeholder`)}return i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:e.getVisibleCells().map((r,o,d)=>{const t=j.getListTableCellId(e.id,r.column.id),m=E?.[r.column.id],f=!!r.column.columnDef.meta?.listTableCustomCell,x=m?.type,b=!!x&&!f,V=!!(x&&a?.[x]),T=n.editingCellId===t,h=g&&r.column.columnDef.meta?.editable!==!1,L=!b||s?null:G({cell:r,row:e,rowIndex:e.index,attributeData:m,dataTypeWidgets:a,editingState:n,callbacks:q,isReadOnly:!h}),C=!b||s?v.flexRender(r.column.columnDef.cell,r.getContext()):L??j.renderListTableFallbackValue(r.getValue());let c=C;u!==null&&(u?c=u(e,C)||C:c=i.jsxRuntimeExports.jsx(l.ListTableCellWrapper,{children:C}));const y=h&&b&&V&&!s;return y&&(c=i.jsxRuntimeExports.jsx(l.EditableCellValue,{className:_(D,x,{editing:T}),children:c})),i.jsxRuntimeExports.jsx(l.TD,{id:t,style:{width:`calc(var(--col-${r.column.id}-size) * 1px)`,paddingRight:o===d.length-1?"var(--padding-m)":void 0,flexGrow:o===d.length-1?1:void 0},onDoubleClick:y?p=>{p.stopPropagation(),n.startEditingCell(t)}:void 0,onClick:p=>{const R=p.target;if(T&&R.closest(".editing"))p.stopPropagation();else if(h){const I=R.closest(`.${D}`),P=R.closest(`.${$.EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable="true"]`);(I||P)&&(n.startEditingCell(t),p.stopPropagation())}},children:i.jsxRuntimeExports.jsx(l.TDInner,{className:"inner-td",style:{left:o===0?`calc(var(--padding-m) + ${e.depth*16}px)`:void 0},children:c})},r.id)})})};exports.RowCells=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../../_virtual/jsx-runtime.cjs.js"),v=require("@tanstack/react-table"),l=require("./ListTable.styled.cjs.js"),j=require("./ListTableWidgets.cjs.js"),_=require("clsx");require("react");require("@tanstack/react-virtual");require("../ProjectTreeTable/buildTreeTableColumns.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("@ynput/ayon-react-components");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../../context/MenuContext.cjs.js");require("react-toastify");require("lodash");require("uuid");require("../../api/queries/users/updateUsers.cjs.js");require("../../util/pubsub.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("react-router-dom");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("../ProjectTreeTable/utils/columnIds.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContextInstance.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("../ContextMenu/ContextMenuContext.cjs.js");require("../../context/DeleteEntitiesContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContextInstance.cjs.js");require("../../context/ProjectFoldersContextInstance.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../components/InfoMessage/InfoMessage.cjs.js");require("../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("react-dom");require("../../context/RemoteModulesContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/UriContext.cjs.js");require("../../context/DetailsPanelContextInstance.cjs.js");const $=require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/widgets/LinksWidget.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/EntityUpdatesContextInstance.cjs.js");require("react-redux");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../Views/context/ViewsContextInstance.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");const D="editable",A=e=>!!e&&typeof e=="object"&&"__listTablePlaceholder"in e,G=({cell:e,row:u,rowIndex:E,attributeData:a,dataTypeWidgets:n,editingState:q,callbacks:g,isReadOnly:s})=>{const r=a?.type;if(!r||!n?.[r])return null;const o=n[r];if(!o)return null;const d=e.column.id,t=j.getListTableCellId(u.id,d),m={row:u,cell:e,value:e.getValue(),rowIndex:E,columnId:d,cellId:t,attributeData:a,isEditing:q.editingCellId===t,isReadOnly:s,startEditing:()=>q.startEditingCell(t),stopEditing:q.stopEditingCell,updateValue:f=>{g.onUpdateRow(d,f,u.id),q.stopEditingCell()},openViewer:()=>g.onOpenViewer?.(u.original),getDraftValue:q.getDraftValue,setDraftValue:q.setDraftValue};return o(m)},O=({row:e,cellWrapper:u,columnAttributeData:E,dataTypeWidgets:a,editingState:n,callbacks:q,editable:g=!0})=>{const s=A(e.original);if(s){const r=e.original&&typeof e.original=="object"&&"label"in e.original?String(e.original.label??""):"";return i.jsxRuntimeExports.jsx(l.TD,{style:{width:"100%"},children:i.jsxRuntimeExports.jsx(l.TDInner,{style:{left:0,paddingLeft:`calc(var(--padding-m) + ${e.depth*16}px)`},children:i.jsxRuntimeExports.jsx(l.PlaceholderRowContent,{children:r})})},`${e.id}-placeholder`)}return i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:e.getVisibleCells().map((r,o,d)=>{const t=j.getListTableCellId(e.id,r.column.id),m=E?.[r.column.id],f=!!r.column.columnDef.meta?.listTableCustomCell,x=m?.type,b=!!x&&!f,V=!!(x&&a?.[x]),T=n.editingCellId===t,h=g&&r.column.columnDef.meta?.editable!==!1,L=!b||s?null:G({cell:r,row:e,rowIndex:e.index,attributeData:m,dataTypeWidgets:a,editingState:n,callbacks:q,isReadOnly:!h}),C=!b||s?v.flexRender(r.column.columnDef.cell,r.getContext()):L??j.renderListTableFallbackValue(r.getValue());let c=C;u!==null&&(u?c=u(e,C)||C:c=i.jsxRuntimeExports.jsx(l.ListTableCellWrapper,{children:C}));const y=h&&b&&V&&!s;return y&&(c=i.jsxRuntimeExports.jsx(l.EditableCellValue,{className:_(D,x,{editing:T}),children:c})),i.jsxRuntimeExports.jsx(l.TD,{id:t,style:{width:`calc(var(--col-${r.column.id}-size) * 1px)`,paddingRight:o===d.length-1?"var(--padding-m)":void 0,flexGrow:o===d.length-1?1:void 0},onDoubleClick:y?p=>{p.stopPropagation(),n.startEditingCell(t)}:void 0,onClick:p=>{const R=p.target;if(T&&R.closest(".editing"))p.stopPropagation();else if(h){const I=R.closest(`.${D}`),P=R.closest(`.${$.EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable="true"]`);(I||P)&&(n.startEditingCell(t),p.stopPropagation())}},children:i.jsxRuntimeExports.jsx(l.TDInner,{className:"inner-td",style:{left:o===0?`calc(var(--padding-m) + ${e.depth*16}px)`:void 0},children:c})},r.id)})})};exports.RowCells=O;
2
2
  //# sourceMappingURL=ListTableCell.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListTableCell.cjs.js","sources":["../../../../../src/containers/ListTable/ListTableCell.tsx"],"sourcesContent":["import React from 'react'\nimport { Cell, flexRender, Row, RowData } from '@tanstack/react-table'\nimport * as Styled from './ListTable.styled'\nimport {\n getListTableCellId,\n ListTableColumnAttributeData,\n ListTableDataTypeWidgets,\n ListTableWidgetRenderContext,\n renderListTableFallbackValue,\n} from './ListTableWidgets'\nimport clsx from 'clsx'\nimport { EDIT_TRIGGER_CLASS } from '../ProjectTreeTable'\n\nconst EDITABLE_CELL_CLASS = 'editable'\n\nconst isPlaceholderRowValue = (value: unknown): value is { __listTablePlaceholder: true } =>\n !!value && typeof value === 'object' && '__listTablePlaceholder' in (value as object)\n\n// 1. Refactored Type: Pass 'content' to the function so it can wrap it naturally\nexport type CellWrapperRenderer<TData extends RowData> =\n | ((row: Row<TData>, content: React.ReactNode) => React.ReactElement | null)\n | null\n\nexport interface ListTableCellEditingState {\n editingCellId: string | null\n startEditingCell: (cellId: string) => void\n stopEditingCell: () => void\n getDraftValue: () => string | null\n setDraftValue: (value: string | null) => void\n}\n\nexport interface ListTableCellCallbacks<TData extends RowData> {\n onUpdateRow: (columnId: string, value: unknown, rowId: string) => void\n onOpenViewer?: (row: TData) => void\n}\n\ninterface RowCellsProps<TData extends RowData> {\n row: Row<TData>\n cellWrapper?: CellWrapperRenderer<TData>\n columnAttributeData?: ListTableColumnAttributeData\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n editable?: boolean\n}\n\nconst renderTypedCellContent = <TData extends RowData>({\n cell,\n row,\n rowIndex,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly,\n}: {\n cell: Cell<TData, unknown>\n row: Row<TData>\n rowIndex: number\n attributeData?: ListTableColumnAttributeData[string]\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n isReadOnly: boolean\n}) => {\n const attributeType = attributeData?.type\n if (!attributeType || !dataTypeWidgets?.[attributeType]) {\n return null\n }\n\n const renderer = dataTypeWidgets[attributeType]\n if (!renderer) {\n return null\n }\n\n const columnId = cell.column.id\n const cellId = getListTableCellId(row.id, columnId)\n const context: ListTableWidgetRenderContext<TData> = {\n row,\n cell,\n value: cell.getValue(),\n rowIndex,\n columnId,\n cellId,\n attributeData,\n isEditing: editingState.editingCellId === cellId,\n isReadOnly,\n startEditing: () => editingState.startEditingCell(cellId),\n stopEditing: editingState.stopEditingCell,\n updateValue: (value) => {\n callbacks.onUpdateRow(columnId, value, row.id)\n editingState.stopEditingCell()\n },\n openViewer: () => callbacks.onOpenViewer?.(row.original),\n getDraftValue: editingState.getDraftValue,\n setDraftValue: editingState.setDraftValue,\n }\n\n return renderer(context)\n}\n\nexport const RowCells = <TData extends RowData>({\n row,\n cellWrapper,\n columnAttributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n editable = true,\n}: RowCellsProps<TData>) => {\n const isPlaceholderRow = isPlaceholderRowValue(row.original)\n\n if (isPlaceholderRow) {\n const message =\n row.original && typeof row.original === 'object' && 'label' in row.original\n ? String((row.original as { label?: string }).label ?? '')\n : ''\n\n return (\n <Styled.TD key={`${row.id}-placeholder`} style={{ width: '100%' }}>\n <Styled.TDInner\n style={{ left: 0, paddingLeft: `calc(var(--padding-m) + ${row.depth * 16}px)` }}\n >\n <Styled.PlaceholderRowContent>{message}</Styled.PlaceholderRowContent>\n </Styled.TDInner>\n </Styled.TD>\n )\n }\n\n return (\n <>\n {row.getVisibleCells().map((cell, cellIndex, visibleCells) => {\n const cellId = getListTableCellId(row.id, cell.column.id)\n const attributeData = columnAttributeData?.[cell.column.id]\n const hasCustomCellRenderer = !!cell.column.columnDef.meta?.listTableCustomCell\n const attributeType = attributeData?.type\n const shouldUseTypedWidget = !!attributeType && !hasCustomCellRenderer\n const hasTypedWidget = !!(attributeType && dataTypeWidgets?.[attributeType])\n const isEditing = editingState.editingCellId === cellId\n const isColumnEditable = editable && cell.column.columnDef.meta?.editable !== false\n const typedContent =\n !shouldUseTypedWidget || isPlaceholderRow\n ? null\n : renderTypedCellContent({\n cell,\n row,\n rowIndex: row.index,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly: !isColumnEditable,\n })\n\n const content =\n !shouldUseTypedWidget || isPlaceholderRow\n ? flexRender(cell.column.columnDef.cell, cell.getContext())\n : typedContent ?? renderListTableFallbackValue(cell.getValue())\n let wrappedContent: React.ReactNode = content\n\n if (cellWrapper !== null) {\n if (cellWrapper) {\n wrappedContent = cellWrapper(row, content) || content\n } else {\n wrappedContent = <Styled.ListTableCellWrapper>{content}</Styled.ListTableCellWrapper>\n }\n }\n\n const canStartTypedEdit =\n isColumnEditable && shouldUseTypedWidget && hasTypedWidget && !isPlaceholderRow\n if (canStartTypedEdit) {\n wrappedContent = (\n <Styled.EditableCellValue\n className={clsx(EDITABLE_CELL_CLASS, attributeType, { editing: isEditing })}\n >\n {wrappedContent}\n </Styled.EditableCellValue>\n )\n }\n\n return (\n <Styled.TD\n key={cell.id}\n id={cellId}\n style={{\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n paddingRight: cellIndex === visibleCells.length - 1 ? 'var(--padding-m)' : undefined,\n flexGrow: cellIndex === visibleCells.length - 1 ? 1 : undefined,\n }}\n onDoubleClick={\n canStartTypedEdit\n ? (e) => {\n e.stopPropagation()\n editingState.startEditingCell(cellId)\n }\n : undefined\n }\n onClick={(e) => {\n const target = e.target as HTMLElement\n // check if the click is within an editing cell\n if (isEditing && target.closest('.editing')) {\n e.stopPropagation() // prevent row click when interacting with the editing cell\n } else if (isColumnEditable) {\n // check if clicking an editable input or trigger element\n const editableElement = target.closest(`.${EDITABLE_CELL_CLASS}`)\n const triggerElement = target.closest(\n `.${EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable=\"true\"]`,\n )\n if (editableElement || triggerElement) {\n editingState.startEditingCell(cellId)\n e.stopPropagation() // prevent row click when interacting with the editing cell\n }\n }\n }}\n >\n <Styled.TDInner\n className=\"inner-td\"\n style={{\n left: cellIndex === 0 ? `calc(var(--padding-m) + ${row.depth * 16}px)` : undefined,\n }}\n >\n {wrappedContent}\n </Styled.TDInner>\n </Styled.TD>\n )\n })}\n </>\n )\n}\n"],"names":["EDITABLE_CELL_CLASS","isPlaceholderRowValue","value","renderTypedCellContent","cell","row","rowIndex","attributeData","dataTypeWidgets","editingState","callbacks","isReadOnly","attributeType","renderer","columnId","cellId","getListTableCellId","context","RowCells","cellWrapper","columnAttributeData","editable","isPlaceholderRow","message","jsx","Styled.TD","Styled.TDInner","Styled.PlaceholderRowContent","Fragment","cellIndex","visibleCells","hasCustomCellRenderer","shouldUseTypedWidget","hasTypedWidget","isEditing","isColumnEditable","typedContent","content","flexRender","renderListTableFallbackValue","wrappedContent","Styled.ListTableCellWrapper","canStartTypedEdit","Styled.EditableCellValue","clsx","e","target","editableElement","triggerElement","EDIT_TRIGGER_CLASS"],"mappings":"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"}
1
+ {"version":3,"file":"ListTableCell.cjs.js","sources":["../../../../../src/containers/ListTable/ListTableCell.tsx"],"sourcesContent":["import React from 'react'\nimport { Cell, flexRender, Row, RowData } from '@tanstack/react-table'\nimport * as Styled from './ListTable.styled'\nimport {\n getListTableCellId,\n ListTableColumnAttributeData,\n ListTableDataTypeWidgets,\n ListTableWidgetRenderContext,\n renderListTableFallbackValue,\n} from './ListTableWidgets'\nimport clsx from 'clsx'\nimport { EDIT_TRIGGER_CLASS } from '../ProjectTreeTable'\n\nconst EDITABLE_CELL_CLASS = 'editable'\n\nconst isPlaceholderRowValue = (value: unknown): value is { __listTablePlaceholder: true } =>\n !!value && typeof value === 'object' && '__listTablePlaceholder' in (value as object)\n\n// 1. Refactored Type: Pass 'content' to the function so it can wrap it naturally\nexport type CellWrapperRenderer<TData extends RowData> =\n | ((row: Row<TData>, content: React.ReactNode) => React.ReactElement | null)\n | null\n\nexport interface ListTableCellEditingState {\n editingCellId: string | null\n startEditingCell: (cellId: string) => void\n stopEditingCell: () => void\n getDraftValue: () => string | null\n setDraftValue: (value: string | null) => void\n}\n\nexport interface ListTableCellCallbacks<TData extends RowData> {\n onUpdateRow: (columnId: string, value: unknown, rowId: string) => void\n onOpenViewer?: (row: TData) => void\n}\n\ninterface RowCellsProps<TData extends RowData> {\n row: Row<TData>\n cellWrapper?: CellWrapperRenderer<TData>\n columnAttributeData?: ListTableColumnAttributeData\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n editable?: boolean\n}\n\nconst renderTypedCellContent = <TData extends RowData>({\n cell,\n row,\n rowIndex,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly,\n}: {\n cell: Cell<TData, unknown>\n row: Row<TData>\n rowIndex: number\n attributeData?: ListTableColumnAttributeData[string]\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n isReadOnly: boolean\n}) => {\n const attributeType = attributeData?.type\n if (!attributeType || !dataTypeWidgets?.[attributeType]) {\n return null\n }\n\n const renderer = dataTypeWidgets[attributeType]\n if (!renderer) {\n return null\n }\n\n const columnId = cell.column.id\n const cellId = getListTableCellId(row.id, columnId)\n const context: ListTableWidgetRenderContext<TData> = {\n row,\n cell,\n value: cell.getValue(),\n rowIndex,\n columnId,\n cellId,\n attributeData,\n isEditing: editingState.editingCellId === cellId,\n isReadOnly,\n startEditing: () => editingState.startEditingCell(cellId),\n stopEditing: editingState.stopEditingCell,\n updateValue: (value) => {\n callbacks.onUpdateRow(columnId, value, row.id)\n editingState.stopEditingCell()\n },\n openViewer: () => callbacks.onOpenViewer?.(row.original),\n getDraftValue: editingState.getDraftValue,\n setDraftValue: editingState.setDraftValue,\n }\n\n return renderer(context)\n}\n\nexport const RowCells = <TData extends RowData>({\n row,\n cellWrapper,\n columnAttributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n editable = true,\n}: RowCellsProps<TData>) => {\n const isPlaceholderRow = isPlaceholderRowValue(row.original)\n\n if (isPlaceholderRow) {\n const message =\n row.original && typeof row.original === 'object' && 'label' in row.original\n ? String((row.original as { label?: string }).label ?? '')\n : ''\n\n return (\n <Styled.TD key={`${row.id}-placeholder`} style={{ width: '100%' }}>\n <Styled.TDInner\n style={{ left: 0, paddingLeft: `calc(var(--padding-m) + ${row.depth * 16}px)` }}\n >\n <Styled.PlaceholderRowContent>{message}</Styled.PlaceholderRowContent>\n </Styled.TDInner>\n </Styled.TD>\n )\n }\n\n return (\n <>\n {row.getVisibleCells().map((cell, cellIndex, visibleCells) => {\n const cellId = getListTableCellId(row.id, cell.column.id)\n const attributeData = columnAttributeData?.[cell.column.id]\n const hasCustomCellRenderer = !!cell.column.columnDef.meta?.listTableCustomCell\n const attributeType = attributeData?.type\n const shouldUseTypedWidget = !!attributeType && !hasCustomCellRenderer\n const hasTypedWidget = !!(attributeType && dataTypeWidgets?.[attributeType])\n const isEditing = editingState.editingCellId === cellId\n const isColumnEditable = editable && cell.column.columnDef.meta?.editable !== false\n const typedContent =\n !shouldUseTypedWidget || isPlaceholderRow\n ? null\n : renderTypedCellContent({\n cell,\n row,\n rowIndex: row.index,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly: !isColumnEditable,\n })\n\n const content =\n !shouldUseTypedWidget || isPlaceholderRow\n ? flexRender(cell.column.columnDef.cell, cell.getContext())\n : typedContent ?? renderListTableFallbackValue(cell.getValue())\n let wrappedContent: React.ReactNode = content\n\n if (cellWrapper !== null) {\n if (cellWrapper) {\n wrappedContent = cellWrapper(row, content) || content\n } else {\n wrappedContent = <Styled.ListTableCellWrapper>{content}</Styled.ListTableCellWrapper>\n }\n }\n\n const canStartTypedEdit =\n isColumnEditable && shouldUseTypedWidget && hasTypedWidget && !isPlaceholderRow\n if (canStartTypedEdit) {\n wrappedContent = (\n <Styled.EditableCellValue\n className={clsx(EDITABLE_CELL_CLASS, attributeType, { editing: isEditing })}\n >\n {wrappedContent}\n </Styled.EditableCellValue>\n )\n }\n\n return (\n <Styled.TD\n key={cell.id}\n id={cellId}\n style={{\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n paddingRight: cellIndex === visibleCells.length - 1 ? 'var(--padding-m)' : undefined,\n flexGrow: cellIndex === visibleCells.length - 1 ? 1 : undefined,\n }}\n onDoubleClick={\n canStartTypedEdit\n ? (e) => {\n e.stopPropagation()\n editingState.startEditingCell(cellId)\n }\n : undefined\n }\n onClick={(e) => {\n const target = e.target as HTMLElement\n // check if the click is within an editing cell\n if (isEditing && target.closest('.editing')) {\n e.stopPropagation() // prevent row click when interacting with the editing cell\n } else if (isColumnEditable) {\n // check if clicking an editable input or trigger element\n const editableElement = target.closest(`.${EDITABLE_CELL_CLASS}`)\n const triggerElement = target.closest(\n `.${EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable=\"true\"]`,\n )\n if (editableElement || triggerElement) {\n editingState.startEditingCell(cellId)\n e.stopPropagation() // prevent row click when interacting with the editing cell\n }\n }\n }}\n >\n <Styled.TDInner\n className=\"inner-td\"\n style={{\n left: cellIndex === 0 ? `calc(var(--padding-m) + ${row.depth * 16}px)` : undefined,\n }}\n >\n {wrappedContent}\n </Styled.TDInner>\n </Styled.TD>\n )\n })}\n </>\n )\n}\n"],"names":["EDITABLE_CELL_CLASS","isPlaceholderRowValue","value","renderTypedCellContent","cell","row","rowIndex","attributeData","dataTypeWidgets","editingState","callbacks","isReadOnly","attributeType","renderer","columnId","cellId","getListTableCellId","context","RowCells","cellWrapper","columnAttributeData","editable","isPlaceholderRow","message","jsx","Styled.TD","Styled.TDInner","Styled.PlaceholderRowContent","Fragment","cellIndex","visibleCells","hasCustomCellRenderer","shouldUseTypedWidget","hasTypedWidget","isEditing","isColumnEditable","typedContent","content","flexRender","renderListTableFallbackValue","wrappedContent","Styled.ListTableCellWrapper","canStartTypedEdit","Styled.EditableCellValue","clsx","e","target","editableElement","triggerElement","EDIT_TRIGGER_CLASS"],"mappings":"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"}
@@ -167,6 +167,18 @@ import "../ProjectTreeTable/widgets/GroupHeaderWidget.es.js";
167
167
  import "../ProjectTreeTable/widgets/ThumbnailWidget.es.js";
168
168
  import "../ProjectTreeTable/widgets/LinksWidget.es.js";
169
169
  import "../../components/Chips/Chips.es.js";
170
+ import "../../context/SubtasksModulesContextInstance.es.js";
171
+ import "../../context/ThumbnailUploaderContext.es.js";
172
+ import "../../context/SettingsPanelContext.es.js";
173
+ import "../../context/pip/PiPProvider.es.js";
174
+ import "../../context/pip/PiPWrapper.es.js";
175
+ import "../../context/AddonProjectContext.es.js";
176
+ import "../../context/AddonContext.es.js";
177
+ import "../../context/WebsocketContext.es.js";
178
+ import "../../context/EntityUpdatesContextInstance.es.js";
179
+ import "react-redux";
180
+ import "../Views/ViewsMenu/ViewsMenu.es.js";
181
+ import "../Views/context/ViewsContextInstance.es.js";
170
182
  import "../../components/LinksManager/CellEditingDialog.es.js";
171
183
  import "../../components/LinksManager/LinksManager.styled.es.js";
172
184
  import "../ProjectTreeTable/widgets/EmptyWidget.es.js";
@@ -207,7 +219,7 @@ const R = "editable", U = (t) => !!t && typeof t == "object" && "__listTablePlac
207
219
  setDraftValue: p.setDraftValue
208
220
  };
209
221
  return l(g);
210
- }, wo = ({
222
+ }, ar = ({
211
223
  row: t,
212
224
  cellWrapper: r,
213
225
  columnAttributeData: h,
@@ -286,6 +298,6 @@ const R = "editable", U = (t) => !!t && typeof t == "object" && "__listTablePlac
286
298
  }) });
287
299
  };
288
300
  export {
289
- wo as RowCells
301
+ ar as RowCells
290
302
  };
291
303
  //# sourceMappingURL=ListTableCell.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListTableCell.es.js","sources":["../../../../../src/containers/ListTable/ListTableCell.tsx"],"sourcesContent":["import React from 'react'\nimport { Cell, flexRender, Row, RowData } from '@tanstack/react-table'\nimport * as Styled from './ListTable.styled'\nimport {\n getListTableCellId,\n ListTableColumnAttributeData,\n ListTableDataTypeWidgets,\n ListTableWidgetRenderContext,\n renderListTableFallbackValue,\n} from './ListTableWidgets'\nimport clsx from 'clsx'\nimport { EDIT_TRIGGER_CLASS } from '../ProjectTreeTable'\n\nconst EDITABLE_CELL_CLASS = 'editable'\n\nconst isPlaceholderRowValue = (value: unknown): value is { __listTablePlaceholder: true } =>\n !!value && typeof value === 'object' && '__listTablePlaceholder' in (value as object)\n\n// 1. Refactored Type: Pass 'content' to the function so it can wrap it naturally\nexport type CellWrapperRenderer<TData extends RowData> =\n | ((row: Row<TData>, content: React.ReactNode) => React.ReactElement | null)\n | null\n\nexport interface ListTableCellEditingState {\n editingCellId: string | null\n startEditingCell: (cellId: string) => void\n stopEditingCell: () => void\n getDraftValue: () => string | null\n setDraftValue: (value: string | null) => void\n}\n\nexport interface ListTableCellCallbacks<TData extends RowData> {\n onUpdateRow: (columnId: string, value: unknown, rowId: string) => void\n onOpenViewer?: (row: TData) => void\n}\n\ninterface RowCellsProps<TData extends RowData> {\n row: Row<TData>\n cellWrapper?: CellWrapperRenderer<TData>\n columnAttributeData?: ListTableColumnAttributeData\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n editable?: boolean\n}\n\nconst renderTypedCellContent = <TData extends RowData>({\n cell,\n row,\n rowIndex,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly,\n}: {\n cell: Cell<TData, unknown>\n row: Row<TData>\n rowIndex: number\n attributeData?: ListTableColumnAttributeData[string]\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n isReadOnly: boolean\n}) => {\n const attributeType = attributeData?.type\n if (!attributeType || !dataTypeWidgets?.[attributeType]) {\n return null\n }\n\n const renderer = dataTypeWidgets[attributeType]\n if (!renderer) {\n return null\n }\n\n const columnId = cell.column.id\n const cellId = getListTableCellId(row.id, columnId)\n const context: ListTableWidgetRenderContext<TData> = {\n row,\n cell,\n value: cell.getValue(),\n rowIndex,\n columnId,\n cellId,\n attributeData,\n isEditing: editingState.editingCellId === cellId,\n isReadOnly,\n startEditing: () => editingState.startEditingCell(cellId),\n stopEditing: editingState.stopEditingCell,\n updateValue: (value) => {\n callbacks.onUpdateRow(columnId, value, row.id)\n editingState.stopEditingCell()\n },\n openViewer: () => callbacks.onOpenViewer?.(row.original),\n getDraftValue: editingState.getDraftValue,\n setDraftValue: editingState.setDraftValue,\n }\n\n return renderer(context)\n}\n\nexport const RowCells = <TData extends RowData>({\n row,\n cellWrapper,\n columnAttributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n editable = true,\n}: RowCellsProps<TData>) => {\n const isPlaceholderRow = isPlaceholderRowValue(row.original)\n\n if (isPlaceholderRow) {\n const message =\n row.original && typeof row.original === 'object' && 'label' in row.original\n ? String((row.original as { label?: string }).label ?? '')\n : ''\n\n return (\n <Styled.TD key={`${row.id}-placeholder`} style={{ width: '100%' }}>\n <Styled.TDInner\n style={{ left: 0, paddingLeft: `calc(var(--padding-m) + ${row.depth * 16}px)` }}\n >\n <Styled.PlaceholderRowContent>{message}</Styled.PlaceholderRowContent>\n </Styled.TDInner>\n </Styled.TD>\n )\n }\n\n return (\n <>\n {row.getVisibleCells().map((cell, cellIndex, visibleCells) => {\n const cellId = getListTableCellId(row.id, cell.column.id)\n const attributeData = columnAttributeData?.[cell.column.id]\n const hasCustomCellRenderer = !!cell.column.columnDef.meta?.listTableCustomCell\n const attributeType = attributeData?.type\n const shouldUseTypedWidget = !!attributeType && !hasCustomCellRenderer\n const hasTypedWidget = !!(attributeType && dataTypeWidgets?.[attributeType])\n const isEditing = editingState.editingCellId === cellId\n const isColumnEditable = editable && cell.column.columnDef.meta?.editable !== false\n const typedContent =\n !shouldUseTypedWidget || isPlaceholderRow\n ? null\n : renderTypedCellContent({\n cell,\n row,\n rowIndex: row.index,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly: !isColumnEditable,\n })\n\n const content =\n !shouldUseTypedWidget || isPlaceholderRow\n ? flexRender(cell.column.columnDef.cell, cell.getContext())\n : typedContent ?? renderListTableFallbackValue(cell.getValue())\n let wrappedContent: React.ReactNode = content\n\n if (cellWrapper !== null) {\n if (cellWrapper) {\n wrappedContent = cellWrapper(row, content) || content\n } else {\n wrappedContent = <Styled.ListTableCellWrapper>{content}</Styled.ListTableCellWrapper>\n }\n }\n\n const canStartTypedEdit =\n isColumnEditable && shouldUseTypedWidget && hasTypedWidget && !isPlaceholderRow\n if (canStartTypedEdit) {\n wrappedContent = (\n <Styled.EditableCellValue\n className={clsx(EDITABLE_CELL_CLASS, attributeType, { editing: isEditing })}\n >\n {wrappedContent}\n </Styled.EditableCellValue>\n )\n }\n\n return (\n <Styled.TD\n key={cell.id}\n id={cellId}\n style={{\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n paddingRight: cellIndex === visibleCells.length - 1 ? 'var(--padding-m)' : undefined,\n flexGrow: cellIndex === visibleCells.length - 1 ? 1 : undefined,\n }}\n onDoubleClick={\n canStartTypedEdit\n ? (e) => {\n e.stopPropagation()\n editingState.startEditingCell(cellId)\n }\n : undefined\n }\n onClick={(e) => {\n const target = e.target as HTMLElement\n // check if the click is within an editing cell\n if (isEditing && target.closest('.editing')) {\n e.stopPropagation() // prevent row click when interacting with the editing cell\n } else if (isColumnEditable) {\n // check if clicking an editable input or trigger element\n const editableElement = target.closest(`.${EDITABLE_CELL_CLASS}`)\n const triggerElement = target.closest(\n `.${EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable=\"true\"]`,\n )\n if (editableElement || triggerElement) {\n editingState.startEditingCell(cellId)\n e.stopPropagation() // prevent row click when interacting with the editing cell\n }\n }\n }}\n >\n <Styled.TDInner\n className=\"inner-td\"\n style={{\n left: cellIndex === 0 ? `calc(var(--padding-m) + ${row.depth * 16}px)` : undefined,\n }}\n >\n {wrappedContent}\n </Styled.TDInner>\n </Styled.TD>\n )\n })}\n </>\n )\n}\n"],"names":["EDITABLE_CELL_CLASS","isPlaceholderRowValue","value","renderTypedCellContent","cell","row","rowIndex","attributeData","dataTypeWidgets","editingState","callbacks","isReadOnly","attributeType","renderer","columnId","cellId","getListTableCellId","context","RowCells","cellWrapper","columnAttributeData","editable","isPlaceholderRow","message","jsx","Styled.TD","Styled.TDInner","Styled.PlaceholderRowContent","Fragment","cellIndex","visibleCells","hasCustomCellRenderer","shouldUseTypedWidget","hasTypedWidget","isEditing","isColumnEditable","typedContent","content","flexRender","renderListTableFallbackValue","wrappedContent","Styled.ListTableCellWrapper","canStartTypedEdit","Styled.EditableCellValue","clsx","e","target","editableElement","triggerElement","EDIT_TRIGGER_CLASS"],"mappings":"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"}
1
+ {"version":3,"file":"ListTableCell.es.js","sources":["../../../../../src/containers/ListTable/ListTableCell.tsx"],"sourcesContent":["import React from 'react'\nimport { Cell, flexRender, Row, RowData } from '@tanstack/react-table'\nimport * as Styled from './ListTable.styled'\nimport {\n getListTableCellId,\n ListTableColumnAttributeData,\n ListTableDataTypeWidgets,\n ListTableWidgetRenderContext,\n renderListTableFallbackValue,\n} from './ListTableWidgets'\nimport clsx from 'clsx'\nimport { EDIT_TRIGGER_CLASS } from '../ProjectTreeTable'\n\nconst EDITABLE_CELL_CLASS = 'editable'\n\nconst isPlaceholderRowValue = (value: unknown): value is { __listTablePlaceholder: true } =>\n !!value && typeof value === 'object' && '__listTablePlaceholder' in (value as object)\n\n// 1. Refactored Type: Pass 'content' to the function so it can wrap it naturally\nexport type CellWrapperRenderer<TData extends RowData> =\n | ((row: Row<TData>, content: React.ReactNode) => React.ReactElement | null)\n | null\n\nexport interface ListTableCellEditingState {\n editingCellId: string | null\n startEditingCell: (cellId: string) => void\n stopEditingCell: () => void\n getDraftValue: () => string | null\n setDraftValue: (value: string | null) => void\n}\n\nexport interface ListTableCellCallbacks<TData extends RowData> {\n onUpdateRow: (columnId: string, value: unknown, rowId: string) => void\n onOpenViewer?: (row: TData) => void\n}\n\ninterface RowCellsProps<TData extends RowData> {\n row: Row<TData>\n cellWrapper?: CellWrapperRenderer<TData>\n columnAttributeData?: ListTableColumnAttributeData\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n editable?: boolean\n}\n\nconst renderTypedCellContent = <TData extends RowData>({\n cell,\n row,\n rowIndex,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly,\n}: {\n cell: Cell<TData, unknown>\n row: Row<TData>\n rowIndex: number\n attributeData?: ListTableColumnAttributeData[string]\n dataTypeWidgets?: ListTableDataTypeWidgets<TData>\n editingState: ListTableCellEditingState\n callbacks: ListTableCellCallbacks<TData>\n isReadOnly: boolean\n}) => {\n const attributeType = attributeData?.type\n if (!attributeType || !dataTypeWidgets?.[attributeType]) {\n return null\n }\n\n const renderer = dataTypeWidgets[attributeType]\n if (!renderer) {\n return null\n }\n\n const columnId = cell.column.id\n const cellId = getListTableCellId(row.id, columnId)\n const context: ListTableWidgetRenderContext<TData> = {\n row,\n cell,\n value: cell.getValue(),\n rowIndex,\n columnId,\n cellId,\n attributeData,\n isEditing: editingState.editingCellId === cellId,\n isReadOnly,\n startEditing: () => editingState.startEditingCell(cellId),\n stopEditing: editingState.stopEditingCell,\n updateValue: (value) => {\n callbacks.onUpdateRow(columnId, value, row.id)\n editingState.stopEditingCell()\n },\n openViewer: () => callbacks.onOpenViewer?.(row.original),\n getDraftValue: editingState.getDraftValue,\n setDraftValue: editingState.setDraftValue,\n }\n\n return renderer(context)\n}\n\nexport const RowCells = <TData extends RowData>({\n row,\n cellWrapper,\n columnAttributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n editable = true,\n}: RowCellsProps<TData>) => {\n const isPlaceholderRow = isPlaceholderRowValue(row.original)\n\n if (isPlaceholderRow) {\n const message =\n row.original && typeof row.original === 'object' && 'label' in row.original\n ? String((row.original as { label?: string }).label ?? '')\n : ''\n\n return (\n <Styled.TD key={`${row.id}-placeholder`} style={{ width: '100%' }}>\n <Styled.TDInner\n style={{ left: 0, paddingLeft: `calc(var(--padding-m) + ${row.depth * 16}px)` }}\n >\n <Styled.PlaceholderRowContent>{message}</Styled.PlaceholderRowContent>\n </Styled.TDInner>\n </Styled.TD>\n )\n }\n\n return (\n <>\n {row.getVisibleCells().map((cell, cellIndex, visibleCells) => {\n const cellId = getListTableCellId(row.id, cell.column.id)\n const attributeData = columnAttributeData?.[cell.column.id]\n const hasCustomCellRenderer = !!cell.column.columnDef.meta?.listTableCustomCell\n const attributeType = attributeData?.type\n const shouldUseTypedWidget = !!attributeType && !hasCustomCellRenderer\n const hasTypedWidget = !!(attributeType && dataTypeWidgets?.[attributeType])\n const isEditing = editingState.editingCellId === cellId\n const isColumnEditable = editable && cell.column.columnDef.meta?.editable !== false\n const typedContent =\n !shouldUseTypedWidget || isPlaceholderRow\n ? null\n : renderTypedCellContent({\n cell,\n row,\n rowIndex: row.index,\n attributeData,\n dataTypeWidgets,\n editingState,\n callbacks,\n isReadOnly: !isColumnEditable,\n })\n\n const content =\n !shouldUseTypedWidget || isPlaceholderRow\n ? flexRender(cell.column.columnDef.cell, cell.getContext())\n : typedContent ?? renderListTableFallbackValue(cell.getValue())\n let wrappedContent: React.ReactNode = content\n\n if (cellWrapper !== null) {\n if (cellWrapper) {\n wrappedContent = cellWrapper(row, content) || content\n } else {\n wrappedContent = <Styled.ListTableCellWrapper>{content}</Styled.ListTableCellWrapper>\n }\n }\n\n const canStartTypedEdit =\n isColumnEditable && shouldUseTypedWidget && hasTypedWidget && !isPlaceholderRow\n if (canStartTypedEdit) {\n wrappedContent = (\n <Styled.EditableCellValue\n className={clsx(EDITABLE_CELL_CLASS, attributeType, { editing: isEditing })}\n >\n {wrappedContent}\n </Styled.EditableCellValue>\n )\n }\n\n return (\n <Styled.TD\n key={cell.id}\n id={cellId}\n style={{\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n paddingRight: cellIndex === visibleCells.length - 1 ? 'var(--padding-m)' : undefined,\n flexGrow: cellIndex === visibleCells.length - 1 ? 1 : undefined,\n }}\n onDoubleClick={\n canStartTypedEdit\n ? (e) => {\n e.stopPropagation()\n editingState.startEditingCell(cellId)\n }\n : undefined\n }\n onClick={(e) => {\n const target = e.target as HTMLElement\n // check if the click is within an editing cell\n if (isEditing && target.closest('.editing')) {\n e.stopPropagation() // prevent row click when interacting with the editing cell\n } else if (isColumnEditable) {\n // check if clicking an editable input or trigger element\n const editableElement = target.closest(`.${EDITABLE_CELL_CLASS}`)\n const triggerElement = target.closest(\n `.${EDIT_TRIGGER_CLASS}, input, textarea, select, [contenteditable=\"true\"]`,\n )\n if (editableElement || triggerElement) {\n editingState.startEditingCell(cellId)\n e.stopPropagation() // prevent row click when interacting with the editing cell\n }\n }\n }}\n >\n <Styled.TDInner\n className=\"inner-td\"\n style={{\n left: cellIndex === 0 ? `calc(var(--padding-m) + ${row.depth * 16}px)` : undefined,\n }}\n >\n {wrappedContent}\n </Styled.TDInner>\n </Styled.TD>\n )\n })}\n </>\n )\n}\n"],"names":["EDITABLE_CELL_CLASS","isPlaceholderRowValue","value","renderTypedCellContent","cell","row","rowIndex","attributeData","dataTypeWidgets","editingState","callbacks","isReadOnly","attributeType","renderer","columnId","cellId","getListTableCellId","context","RowCells","cellWrapper","columnAttributeData","editable","isPlaceholderRow","message","jsx","Styled.TD","Styled.TDInner","Styled.PlaceholderRowContent","Fragment","cellIndex","visibleCells","hasCustomCellRenderer","shouldUseTypedWidget","hasTypedWidget","isEditing","isColumnEditable","typedContent","content","flexRender","renderListTableFallbackValue","wrappedContent","Styled.ListTableCellWrapper","canStartTypedEdit","Styled.EditableCellValue","clsx","e","target","editableElement","triggerElement","EDIT_TRIGGER_CLASS"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),on=require("@tanstack/react-virtual"),B=require("@tanstack/react-table"),k=require("clsx"),gt=require("./buildTreeTableColumns.cjs.js"),h=require("./ProjectTreeTable.styled.cjs.js"),at=require("./components/HeaderActionButton.cjs.js"),rn=require("./components/RowDragHandleCellContent.cjs.js");require("./components/RowSelectionHeader.cjs.js");require("./components/SelectionCell.cjs.js");const ln=require("./components/ColumnHeaderMenu.cjs.js"),Se=require("@dnd-kit/core"),re=require("@dnd-kit/sortable"),xt=require("./context/ColumnSettingsContext.cjs.js"),E=require("./constants.cjs.js"),an=require("./components/TableFooterRow.cjs.js"),Z=require("./utils/pinningUtils.cjs.js"),Pe=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const un=require("../../components/InfoMessage/InfoMessage.cjs.js"),cn=require("../../components/FilterErrorActions/FilterErrorActions.cjs.js"),pt=require("./context/CellEditingContext.cjs.js"),qe=require("./context/SelectionCellsContext.cjs.js"),dn=require("./context/ClipboardContext.cjs.js"),mn=require("./context/SelectedRowsContext.cjs.js"),gn=require("../../context/MenuContext.cjs.js"),xn=require("./hooks/useCustomColumnWidthVars.cjs.js"),pn=require("./hooks/useCellContextMenu.cjs.js"),fn=require("./hooks/useColumnVirtualization.cjs.js"),Cn=require("./hooks/useKeyboardNavigation.cjs.js"),yn=require("./hooks/useDynamicRowHeight.cjs.js"),Rn=require("./context/ProjectDataContext.cjs.js"),En=require("./hooks/useBuildGroupByTableData.cjs.js"),ie=require("./utils/cellUtils.cjs.js"),ut=require("./utils/loadingUtils.cjs.js"),Ne=require("./utils/restrictedEntity.cjs.js"),we=require("react-dom"),fe=require("@ynput/ayon-react-components"),ze=require("./context/ProjectTableContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("date-fns");const hn=require("./utils/getTableFieldOptions.cjs.js"),jn=require("./utils/getReadOnlyLists.cjs.js");require("./utils/columnIds.cjs.js");const be=require("./utils/filterError.cjs.js"),bn=require("./utils/getEntityViewerIds.cjs.js"),ct=require("./utils/checkColumnVisibility.cjs.js"),ve=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js"),Sn=require("../../context/ProjectContext.cjs.js"),wn=require("../../context/PowerpackContext.cjs.js"),In=require("../../context/DetailsPanelContext.cjs.js"),Dn=require("../../hooks/useLoadModule.cjs.js"),dt=require("./widgets/CellWidget.cjs.js"),Mn=require("react-toastify"),Ln=require("lodash"),On=()=>null,Tn=(s,p)=>p.some(o=>{if(o.includes("*")){const x="^"+o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*")+"$";return new RegExp(x).test(s)}return s===o}),_n=({scope:s,sliceId:p,onScroll:o,onScrollBottom:m,onOpenNew:x,readOnly:j,excludedColumns:D,excludedSorting:L,extraColumns:_,includeLinks:f,isLoading:M,isExpandable:O,enableSorting:n=!0,clientSorting:C=!1,sortableRows:R=!1,onRowReorder:v,dndActiveId:b,columnsConfig:d,showColumnSummaries:A=!1,fieldStats:S,groupFieldStats:ee,fieldStatsLoading:W,fieldStatsError:te,mainCountLabels:P,onScrollBottomGroupBy:N,contextMenuItems:q,onColumnVisibleChange:T,onColumnVisibleChangeSubscribed:F,onVisibleRowsChange:G,pt:H,...U})=>{const{columnVisibility:i,columnPinning:u,columnOrder:l,columnSizing:w,setAllColumns:$,sorting:Ce,sortingOnChange:K,columnPinningOnChange:J,columnSizingOnChange:le,defaultColumnVisibility:ae,columnVisibilityOnChange:Ie,columnOrderOnChange:ue,groupBy:Q,columnSummaries:Ct,updateColumnSummary:yt,columnSummaryScopes:Rt,updateColumnSummaryScope:Et,columnSummaryFormats:ht,updateColumnSummaryFormat:jt}=xt.useColumnSettingsContext(),{productTypes:bt,projectName:St,...wt}=Sn.useProjectContext(),{tableData:ne,attribFields:X,entitiesMap:It,users:Ae,isLoading:Dt,error:De,softError:Fe,softErrorAction:Mt,isInitialized:Me,expanded:Lt,updateExpanded:Ot,toggleExpandAll:Tt,showHierarchy:V,isFlatFolderView:ye,fetchNextPage:_t,scopes:Y,getEntityById:Re,onResetView:Pt,overrideGroupBy:He,loadingLinksEntityIds:Nt,queryFilters:qt}=ze.useProjectTableContext(),ke=!!Q||!!He,vt=be.isFilterError(De,qt),zt=be.getFilterErrorMessage(be.getEntitiesLabelFromScopes(Y)),Le=He?.id??Q?.id,At=Array.isArray(Le)?Le[0]:Le,Ft=V||["hierarchy","folder","product"].includes(At??"")||Y.includes("product"),{writableFields:Ue}=Rn.useProjectDataContext(),ce=M||Dt,{statuses:Ve=[],folderTypes:Be=[],taskTypes:We=[],tags:Ge=[],linkTypes:$e=[]}=wt||{},de=c.useMemo(()=>hn.getTableFieldOptions({users:Ae,statuses:Ve,folderTypes:Be,taskTypes:We,productTypes:bt,tags:Ge,scopes:Y}),[Ae,Ve,Be,We,Y,Ge]),Ee=c.useRef(null),Ke=c.useRef(0),{registerGrid:Je}=qe.useSelectionCellsContext(),{loadingAttrib:Qe,loadingRows:Ht}=c.useMemo(()=>{const t=Ee.current?.querySelectorAll("tbody tr").length||0,r=ut.generateDummyAttributes(),y=ut.generateLoadingRows(V&&ne.length>0?Math.min(t,50):Q?Math.max(Ke.current,50):50);return{loadingAttrib:r,loadingRows:y}},[]),kt=!Me||ce,{readOnlyColumns:Xe,readOnlyAttribs:Ut}=c.useMemo(()=>jn.getReadOnlyLists(X,Ue,j),[X,Ue,j]),{selectedCells:me}=qe.useSelectionCellsContext(),{updateEntities:Ye}=pt.useCellEditing(),Vt=c.useCallback(async(t,r)=>{const{selection:y=[]}=r||{},a=[];if(!y?.length)a.push({...t,id:t.id||t.rowId});else{const{field:g,value:z,isAttrib:Oe}=t;for(const sn of me){const{colId:Te,rowId:je}=ie.parseCellId(sn)||{};if(Te===E.ROW_SELECTION_COLUMN_ID)continue;const _e=Re(je||"");if(!_e){console.warn(`Entity with ID ${je} not found for cell update.`);continue}(!Te?.includes("attrib_")||Te?.replace("attrib_","")===g)&&je&&a.push({field:g,rowId:je,id:_e.entityId,value:z,isAttrib:Oe,type:_e.entityType})}}if(!a.length){console.warn("No entities to update, skipping updateEntities call."),Mn.toast.warn("No entities to update.");return}await Ye(a,!0)},[Ye,Re,me]),Ze=c.useMemo(()=>Me?X:Qe,[X,Qe,Me]),Bt=()=>Y.includes("version")?"Product / Version":Y.map(t=>Ln.upperFirst(t)).join(" / "),se=c.useMemo(()=>{const t=gt.default({scopes:Y,attribs:Ze,links:$e,includeLinks:f,showHierarchy:V,isFlatFolderView:ye,options:de,extraColumns:_,excluded:D,excludedSorting:L,groupBy:Q,nameLabel:Bt()});return R&&n?[{id:E.DRAG_HANDLE_COLUMN_ID,header:()=>null,cell:()=>null,size:24,minSize:24,maxSize:24,enableResizing:!1,enableSorting:!1,enableHiding:!1,enablePinning:!1},...t]:t},[Y,JSON.stringify(Ze),V,ye,O,de,$e,f,_,D,L,R,n,Q]);c.useEffect(()=>{const t=se.map(r=>r.id).filter(Boolean);$(t)},[se,$]);const Wt=c.useMemo(()=>{const t={...i};return se.forEach(r=>{const y=r.visible;r.id&&t[r.id]===void 0&&(y!==void 0?t[r.id]=y:t[r.id]=ct.checkColumnVisibility({},r.id,ae))}),ct.ensureAtLeastOneVisibleColumn(t,se.map(r=>r.id).filter(Boolean))},[i,ae,se]),I=B.useReactTable({data:kt?Ht:ne,columns:se,defaultColumn:{minSize:50,size:150},enableRowSelection:!0,getRowId:t=>t.id,enableSubRowSelection:!1,getSubRows:t=>t.subRows,getRowCanExpand:()=>!!O||V||ye||ke,getCoreRowModel:B.getCoreRowModel(),getFilteredRowModel:B.getFilteredRowModel(),getExpandedRowModel:B.getExpandedRowModel(),filterFromLeafRows:!0,onExpandedChange:Ot,enableSorting:n,getSortedRowModel:B.getSortedRowModel(),sortDescFirst:!1,manualSorting:!C,onSortingChange:K,columnResizeMode:"onChange",onColumnPinningChange:J,onColumnSizingChange:le,onColumnVisibilityChange:Ie,onColumnOrderChange:ue,filterFns:B.filterFns,state:{expanded:Lt,sorting:Ce,columnPinning:(()=>{const t=[];R&&t.push(E.DRAG_HANDLE_COLUMN_ID),t.push(E.ROW_SELECTION_COLUMN_ID);const r=(u.left||[]).filter(a=>a!==E.DRAG_HANDLE_COLUMN_ID&&a!==E.ROW_SELECTION_COLUMN_ID);return t.push(...r),{left:[...new Set(t)],right:u.right}})(),columnSizing:w,columnVisibility:Wt,columnOrder:l},meta:{projectName:St,options:de,readOnly:Xe,updateEntities:Vt,toggleExpandAll:Tt,loadMoreRows:_t,selection:Array.from(me),columnsConfig:d,loadingLinksEntityIds:Nt}}),{rows:oe}=I.getRowModel();c.useEffect(()=>{Ke.current=oe.length},[oe.length]),c.useEffect(()=>{if(!oe.length)return;const t=oe.map(a=>a.id),y=[...I.getAllLeafColumns().map(a=>a.id)].sort((a,g)=>{if(E.ROW_SELECTION_COLUMN_ID===g)return 1;const z=u.left?.includes(a)?0:1,Oe=u.left?.includes(g)?0:1;return z-Oe});Je(t,y)},[oe,I.getAllLeafColumns(),u,E.ROW_SELECTION_COLUMN_ID,Je]);const he=I.getVisibleLeafColumns(),{columnVirtualizer:ge,virtualPaddingLeft:xe,virtualPaddingRight:pe}=fn({visibleColumns:he,tableContainerRef:Ee,columnPinning:u,columnSizing:w,columnOrder:l}),et=c.useRef({}),tt=ge.getVirtualItems();c.useEffect(()=>{if(!T||!F?.length)return;const t=new Set(tt.map(g=>he[g.index]?.id)),r={};let y=!1;I.getAllLeafColumns().filter(g=>Tn(g.id,F)).forEach(g=>{const z=t.has(g.id);et.current[g.id]!==z&&(r[g.id]=z,y=!0,et.current[g.id]=z)}),y&&T(r)},[tt,T,F,he,I]);const nt=xn(I,w),{powerLicense:st}=wn.usePowerpack(),[Gt,{isLoaded:ot,isLoading:it}]=Dn.useLoadModule({addon:"powerpack",remote:"views",module:"SummaryCellContent",fallback:On,skip:!A||!st}),$t=A&&st&&(ot||it)&&!!oe.length,Kt=it||!ot,Jt=c.useMemo(()=>{const t=new Set,r=new Set;for(const y of me){const{rowId:a,colId:g}=ie.parseCellId(y)||{};if(!a||En.isGroupId(a))continue;const z=Re(a)?.entityId;z&&(g===E.ROW_SELECTION_COLUMN_ID?r.add(z):t.add(z))}return t.size||r.size},[me,Re]),{getRowHeight:Qt,defaultRowHeight:rt}=yn(),Xt=c.useMemo(()=>X.reduce((t,r)=>(r.data?.enum?.length&&(t[r.name]=r.data?.enum),t),{}),[X]),Yt=c.useMemo(()=>ne.map(t=>t.id),[ne]),Zt=c.useMemo(()=>l.filter(t=>t!==E.DRAG_HANDLE_COLUMN_ID&&t!==E.ROW_SELECTION_COLUMN_ID),[l]),en=c.useMemo(()=>!b||!R?null:ne.find(t=>t.id===b),[b,ne,R]),tn=c.useCallback(t=>{if(o?.(t),m){const r=t.currentTarget;if(r&&!Q&&(!V||!ye)){const{scrollHeight:y,scrollTop:a,clientHeight:g}=r;y-a-g<500&&!ce&&m(t)}}if(N&&Q){const g=t.currentTarget?.querySelector(".load-more")?.getAttribute("id")?.split("-")[2];g&&N(g)}},[o,m,N,V,Q,ce]),lt=e.jsxRuntimeExports.jsx(dn.ClipboardProvider,{entitiesMap:It,columnEnums:{...de,...Xt},columnReadOnly:Ut,visibleColumns:he,children:e.jsxRuntimeExports.jsxs(h.TableWrapper,{...U,children:[e.jsxRuntimeExports.jsx(h.TableContainer,{ref:Ee,style:{height:"100%",padding:0},onScroll:tn,...H?.container,"data-column-dnd-container":!0,className:k("table-container",{resizing:I.getState().columnSizingInfo.isResizingColumn},H?.container?.className),children:e.jsxRuntimeExports.jsxs("table",{style:{display:"grid",borderCollapse:"collapse",userSelect:"none",...nt,width:I.getTotalSize(),cursor:I.getState().columnSizingInfo.isResizingColumn?"col-resize":void 0,minHeight:"100%",gridTemplateRows:"auto 1fr auto"},children:[e.jsxRuntimeExports.jsx(Pn,{columnVirtualizer:ge,table:I,virtualPaddingLeft:xe,virtualPaddingRight:pe,isLoading:ce,readOnlyColumns:Xe,sortableRows:R,columnOrderIds:Zt,...H?.head}),e.jsxRuntimeExports.jsx(vn,{columnVirtualizer:ge,table:I,tableContainerRef:Ee,virtualPaddingLeft:xe,virtualPaddingRight:pe,showHierarchy:V,attribs:X,onOpenNew:x,rowOrderIds:Yt,sortableRows:R,error:De,isFilterError:vt,filterErrorMessage:zt,isLoading:ce,isGrouping:ke,getRowHeight:Qt,defaultRowHeight:rt,onResetView:Pt,contextMenuItems:q,onVisibleRowsChange:G}),$t&&!De&&e.jsxRuntimeExports.jsx(an.TableFooterRow,{columnVirtualizer:ge,table:I,virtualPaddingLeft:xe,virtualPaddingRight:pe,isLoading:Kt,statsLoading:!!W,error:te,renderCellContent:t=>e.jsxRuntimeExports.jsx(Gt,{columnId:t,attribs:X,fieldStats:S,groupFieldStats:ee,calc:Ct[t],onCalcChange:r=>yt(t,r),format:ht[t],onFormatChange:r=>jt(t,r),scope:Rt[t],onScopeChange:r=>Et(t,r),mainCountLabels:P,fieldOptions:de,parentScopeApplicable:Ft,selectedCount:Jt})})]})}),Fe&&e.jsxRuntimeExports.jsx(h.SoftErrorBanner,{children:e.jsxRuntimeExports.jsx(un.InfoMessage,{variant:"warning",message:Fe,action:Mt})})]})}),nn=R&&b&&we.createPortal(e.jsxRuntimeExports.jsx(Se.DragOverlay,{dropAnimation:null,children:en?(()=>{const t=I.getRowModel().rows.find(y=>y.id===b);if(!t)return null;const r=I.getTotalSize();return e.jsxRuntimeExports.jsx("table",{style:{width:r,borderCollapse:"collapse",backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",...nt},children:e.jsxRuntimeExports.jsx("tbody",{children:e.jsxRuntimeExports.jsxs(h.TR,{style:{display:"flex",userSelect:"none"},children:[xe?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:xe}}):null,ge.getVirtualItems().map(y=>{const a=t.getVisibleCells()[y.index];if(!a)return null;const g={...Z.getCommonPinningStyles(a.column),width:Z.getColumnWidth(a.column.id),display:"flex",alignItems:"center",height:rt};return a.column.id===E.DRAG_HANDLE_COLUMN_ID?e.jsxRuntimeExports.jsxs(h.TD,{style:{...g,justifyContent:"center"},className:k(a.column.id),children:[e.jsxRuntimeExports.jsx(fe.Icon,{icon:"drag_handle"})," "]},`overlay-drag-${a.id}`):e.jsxRuntimeExports.jsx(ft,{cell:a,cellId:`overlay-${ie.getCellId(t.id,a.column.id)}`,rowId:t.id,showHierarchy:V},`overlay-cell-${a.id}`)}),pe?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:pe}}):null]})})})})():null}),document.body);return R?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[lt,nn,e.jsxRuntimeExports.jsx(mt,{table:I})]}):e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[lt,e.jsxRuntimeExports.jsx(mt,{table:I})]})},mt=({table:s})=>{const{active:p}=Se.useDndContext(),m=p?.data?.current?.type==="column"?p?.id:null,x=c.useMemo(()=>m&&s.getHeaderGroups()[0]?.headers.find(j=>j.id===m)||null,[m,s]);return!m||!x?null:we.createPortal(e.jsxRuntimeExports.jsx(Se.DragOverlay,{dropAnimation:null,children:e.jsxRuntimeExports.jsx(h.HeaderCell,{style:{width:x.column.getSize(),backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",display:"flex",alignItems:"center",minHeight:34},children:e.jsxRuntimeExports.jsx(h.TableCellContent,{className:"bold header",children:B.flexRender(x.column.columnDef.header,x.getContext())})})}),document.body)},Pn=({columnVirtualizer:s,table:p,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L,..._})=>e.jsxRuntimeExports.jsx(h.TableHeader,{..._,children:p.getHeaderGroups().map(f=>e.jsxRuntimeExports.jsx(Nn,{columnVirtualizer:s,headerGroup:f,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L},f.id))}),Nn=({columnVirtualizer:s,headerGroup:p,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L})=>{const _=s.getVirtualItems(),{active:f}=Se.useDndContext(),M=f?.data?.current?.type==="column",O=M&&(f?.data?.current?.isPinned??!1);return e.jsxRuntimeExports.jsxs(h.ColumnHeader,{style:{display:"flex"},children:[o?e.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:o}}):null,e.jsxRuntimeExports.jsx(re.SortableContext,{items:L,strategy:re.horizontalListSortingStrategy,children:_.map(n=>{const C=p.headers[n.index],R=C.id!==E.DRAG_HANDLE_COLUMN_ID&&C.id!==E.ROW_SELECTION_COLUMN_ID;return e.jsxRuntimeExports.jsx(qn,{header:C,isLoading:x,isReadOnly:j?.includes(C.id),canSort:C.column.getCanSort(),canFilter:C.column.getCanFilter(),canHide:C.column.getCanHide(),canPin:C.column.getCanPin(),canResize:C.column.getCanResize(),sortableRows:D,isDraggable:R,isColumnDrag:M,isDraggedColumnPinned:O},C.id)})}),m?e.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:m}}):null]},p.id)},qn=({header:s,isLoading:p,canFilter:o,canHide:m,canSort:x,canPin:j,canResize:D,isReadOnly:L,sortableRows:_,isDraggable:f=!0,isColumnDrag:M,isDraggedColumnPinned:O})=>{const{column:n}=s,C=n.getIsSorted(),R=`column-header-menu-${n.id}`,{menuOpen:v}=gn.useMenuContext(),b=v===R,{columnPinning:d,sorting:A,updateSorting:S}=xt.useColumnSettingsContext(),ee=()=>{const i=A?.find(l=>l.id===n.id),u=i?i.desc?[]:[{id:n.id,desc:!0}]:[{id:n.id,desc:!1}];S(u)},W=d.left?.includes(n.id)||!1,{attributes:te,listeners:P,setNodeRef:N,transform:q,transition:T,isDragging:F}=re.useSortable({id:n.id,data:{type:"column",isPinned:W},disabled:!f}),G=M&&O===W,H=()=>{if(F)return{transform:ve.CSS.Translate.toString(q),transition:T,visibility:"hidden",zIndex:200};if(G&&q){const i=W?{position:"relative",left:"auto"}:{};return{transform:ve.CSS.Translate.toString(q),transition:T,...i}}return{}},U={onPointerDown:i=>i.stopPropagation(),onMouseDown:i=>i.stopPropagation()};return e.jsxRuntimeExports.jsx(h.HeaderCell,{ref:N,className:k(s.id,"shimmer-dark",{loading:p,"last-pinned-left":n.getIsPinned()==="left"&&n.getIsLastColumn("left"),resizing:n.getIsResizing(),dragging:F,draggable:f}),style:{...Z.getCommonPinningStyles(n),width:Z.getColumnWidth(n.id),...H()},children:s.isPlaceholder?null:e.jsxRuntimeExports.jsxs(h.TableCellContent,{className:k("bold","header"),...f?{...te,...P}:{},children:[B.flexRender(n.columnDef.header,s.getContext()),L&&e.jsxRuntimeExports.jsx(fe.Icon,{icon:"lock","data-tooltip":"You only have permission to read this column."}),e.jsxRuntimeExports.jsxs(h.HeaderButtons,{className:"actions",$isOpen:b,...U,children:[(m||j||x)&&e.jsxRuntimeExports.jsx(ln.ColumnHeaderMenu,{className:"header-menu",header:s,canHide:m,canPin:j,canSort:x,isResizing:n.getIsResizing(),menuId:R,isOpen:b}),x&&e.jsxRuntimeExports.jsx(at,{icon:"sort",className:k("sort-button",{visible:C}),style:{transform:C==="desc"?"rotate(180deg) scaleX(-1)":"none"},onClick:ee,selected:!!n.getIsSorted()}),n.getIsPinned()&&n.id!==E.ROW_SELECTION_COLUMN_ID&&n.id!==E.DRAG_HANDLE_COLUMN_ID&&e.jsxRuntimeExports.jsx(at,{icon:"push_pin",className:k("pin-button","visible"),onClick:()=>n.pin(!1),selected:!0})]}),D&&e.jsxRuntimeExports.jsx(h.ResizedHandler,{onDoubleClick:()=>n.resetSize(),onMouseDown:i=>{i.stopPropagation(),s.getResizeHandler()(i)},onTouchStart:s.getResizeHandler(),onPointerDown:i=>i.stopPropagation(),className:k("resize-handle",{resizing:n.getIsResizing()})})]})},s.id)},vn=({columnVirtualizer:s,table:p,tableContainerRef:o,showHierarchy:m,virtualPaddingLeft:x,virtualPaddingRight:j,attribs:D,onOpenNew:L,rowOrderIds:_,sortableRows:f,error:M,isFilterError:O,filterErrorMessage:n,isLoading:C,isGrouping:R,getRowHeight:v,defaultRowHeight:b,onResetView:d,contextMenuItems:A,onVisibleRowsChange:S})=>{const ee=c.useMemo(()=>p.getAllColumns().map(l=>{const w=l.id,$=l.columnDef.header;return typeof $=="string"||typeof $=="number"?{label:$,id:w}:null}).filter(Boolean),[p.getAllColumns()]),te=pn({attribs:D,onOpenNew:L,headerLabels:ee,contextMenuItems:A}).handleTableBodyContextMenu,{rows:P}=p.getRowModel(),N=on.useVirtualizer({count:P.length,estimateSize:i=>{const u=P[i];return u?v(u.original):b},getScrollElement:()=>o.current,measureElement:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?i=>i?.getBoundingClientRect().height:void 0,overscan:5}),q=N.getVirtualItems(),T=c.useRef("");c.useEffect(()=>{if(!S)return;const i=q.map(w=>P[w.index]&&ze.parseRowId(P[w.index].id)).filter(Boolean),u=Array.from(new Set(i)),l=u.join(",");l!==T.current&&(T.current=l,S(u))},[q,P,S]);const F=c.useCallback(i=>{i&&N.measureElement(i)},[N]);Cn();const G=p.getVisibleLeafColumns(),H=c.useMemo(()=>{const i=[],u=[];for(let l=0;l<G.length-1;l++){const w=G[l];u.push(w.id===E.ROW_SELECTION_COLUMN_ID?"20":`var(--col-${w.id}-size)`),i.push(`calc((${u.join(" + ")}) * 1px)`)}return i},[G]),U=e.jsxRuntimeExports.jsxs("tbody",{style:{minHeight:`${N.getTotalSize()}px`,position:"relative",display:"grid"},onContextMenu:te,children:[e.jsxRuntimeExports.jsx(h.ColumnDividers,{"aria-hidden":!0,children:H.map((i,u)=>e.jsxRuntimeExports.jsx("div",{style:{left:i}},u))}),q.map(i=>{const u=P[i.index];return u?e.jsxRuntimeExports.jsx(zn,{row:u,showHierarchy:m,visibleCells:u.getVisibleCells(),virtualColumns:s.getVirtualItems(),paddingLeft:x,paddingRight:j,rowRef:F,dataIndex:i.index,offsetTop:i.start,sortableRows:f,isGrouping:R,rowHeight:v(u.original)},u.id):(console.warn("Virtualized row data not found for index:",i.index),null)})]});return M?o.current&&we.createPortal(e.jsxRuntimeExports.jsx(h.AnimatedEmptyPlaceholder,{children:O?e.jsxRuntimeExports.jsxs(Pe.EmptyPlaceholder,{message:n,icon:"filter_alt_off",children:[d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d}),e.jsxRuntimeExports.jsx(cn.FilterErrorActions,{errorMessage:be.extractQueryErrorMessage(M)})]}):e.jsxRuntimeExports.jsx(Pe.EmptyPlaceholder,{message:"No items found",error:M,children:d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d})})}),o.current):!P.length&&!C?o.current&&we.createPortal(e.jsxRuntimeExports.jsx(h.AnimatedEmptyPlaceholder,{children:e.jsxRuntimeExports.jsx(Pe.EmptyPlaceholder,{message:"No items found",children:d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d})})}),o.current):f?e.jsxRuntimeExports.jsx(re.SortableContext,{items:_,strategy:re.verticalListSortingStrategy,children:U}):U},zn=({row:s,showHierarchy:p,visibleCells:o,virtualColumns:m,paddingLeft:x,paddingRight:j,rowRef:D,dataIndex:L,offsetTop:_,sortableRows:f,isGrouping:M=!1,rowHeight:O})=>{const n=f?re.useSortable({id:s.id}):null,C=c.useRef(null),R=c.useCallback(b=>{C.current=b,n&&n.setNodeRef(b),n&&n.isDragging||D(b)},[n,D]),v={position:"absolute",top:_,left:0,right:0,height:O,zIndex:n&&n.isDragging?0:1,display:"flex",transform:n&&n.transform?ve.CSS.Transform.toString(n.transform):void 0,transition:n&&n.transition?n.transition:void 0,visibility:n&&n.isDragging?"hidden":"visible"};return e.jsxRuntimeExports.jsxs(h.TR,{ref:R,"data-index":L,style:v,className:k({"group-row":s.original.group}),children:[x?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:x}}):null,m.map(b=>{const d=o[b.index];if(!d)return null;const A=ie.getCellId(s.id,d.column.id);return d.column.id===E.DRAG_HANDLE_COLUMN_ID?e.jsxRuntimeExports.jsx(h.TD,{style:{...Z.getCommonPinningStyles(d.column),width:Z.getColumnWidth(d.column.id),display:"flex",alignItems:"center",justifyContent:"center",height:O,pointerEvents:"all",cursor:"grab"},className:k(d.column.id,{"last-pinned-left":d.column.getIsPinned()==="left"&&d.column.getIsLastColumn("left")}),onMouseDown:S=>S.stopPropagation(),onMouseOver:S=>S.stopPropagation(),onDoubleClick:S=>S.stopPropagation(),onContextMenu:S=>{S.preventDefault(),S.stopPropagation()},children:e.jsxRuntimeExports.jsx(rn,{attributes:n?.attributes,listeners:n?.listeners})},d.id):e.jsxRuntimeExports.jsx(ft,{cell:d,cellId:A,rowId:s.id,showHierarchy:p,sortableRows:f,rowHeight:O},d.id)}),j?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:j}}):null]})},ft=({cell:s,rowId:p,cellId:o,className:m,showHierarchy:x,sortableRows:j,rowHeight:D,...L})=>{const{getEntityById:_,onOpenPlayer:f}=ze.useProjectTableContext(),{isCellSelected:M,isCellFocused:O,startSelection:n,extendSelection:C,endSelection:R,selectCell:v,focusCell:b,getCellBorderClasses:d,clearSelection:A,selectedCells:S,setSelectedCells:ee,setAnchorCell:W,setFocusedCellId:te}=qe.useSelectionCellsContext(),{isRowSelected:P}=mn.useSelectedRowsContext(),{isEditing:N,setEditingCellId:q,editingCellId:T}=pt.useCellEditing(),F=d(o),H=s.column.getIsPinned()==="left"&&s.column.getIsLastColumn("left"),U=s.column.id===E.ROW_SELECTION_COLUMN_ID,i=s.row.original.entityType==="group",u=S.size>1;return e.jsxRuntimeExports.jsx(h.TD,{...L,tabIndex:0,$isLastPinned:H,className:k(s.column.id,{selected:M(o),focused:O(o),editing:N(o),"last-pinned-left":H,"selected-row":P(p),expandable:!!s.row.originalSubRows&&gt.isEntityExpandable(s.row.original.entityType),"multiple-selected":u},m,...F),style:{...Z.getCommonPinningStyles(s.column),width:Z.getColumnWidth(s.column.id),height:D},onMouseDown:l=>{if(l.button!==0)return;const w=l.target;if(w.closest(".expander")||w.closest(".options"))return;if(l.currentTarget.focus(),l.detail===2){if(Ne.isTargetReadOnly(l)&&s.column.id!=="comments"||Ne.isEntityRestricted(s.row.original.entityType)||i){l.preventDefault();return}if(["name","comments"].includes(s.column.id)&&!w.closest(".expander")){s.column.id==="comments"&&In.setDetailsPanelTabForScope("overview","feed");const J=ie.getCellId(s.row.id,E.ROW_SELECTION_COLUMN_ID),le=l.metaKey||l.ctrlKey,ae=ie.parseCellId(J);ee(Ie=>{const ue=le?new Set(Ie):new Set;return ue.add(J),ue.add(o),ue}),ae&&(W(ae),te(J))}else if(s.column.id==="thumbnail"){if(f){const J=_(s.row.original.entityId||s.row.id);if(J){const le=bn.getEntityViewierIds(J);f(le,{quickView:!0})}}}else q(o);l.preventDefault();return}if(i&&s.column.id!=="name")return A();const $=Ne.isEntityRestricted(s.row.original.entityType);if(w.closest("."+dt.EDIT_TRIGGER_CLASS)&&!$){M(o)||(v(o,!1,!1),b(o)),q(o);return}if(T&&T!==o){const K=document.querySelector(`#${T} input, #${T} [role="textbox"]`);if(K){K.blur(),setTimeout(()=>{Ce()},0);return}}Ce();function Ce(){const K=l.metaKey||l.ctrlKey||U;l.shiftKey?v(o,K,!0):n(o,K),l.preventDefault()}},onMouseOver:l=>{if(l.buttons===1){if(l.target.closest("."+dt.EDIT_TRIGGER_CLASS))return;C(o,U)}},onMouseUp:()=>{R(o)},onDoubleClick:l=>{l.preventDefault()},onContextMenu:l=>{l.preventDefault(),M(o)||v(o,!1,!1)},onKeyDown:()=>{},children:B.flexRender(s.column.columnDef.cell,s.getContext())})};exports.ProjectTreeTable=_n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),on=require("@tanstack/react-virtual"),B=require("@tanstack/react-table"),k=require("clsx"),qe=require("./buildTreeTableColumns.cjs.js"),h=require("./ProjectTreeTable.styled.cjs.js"),ut=require("./components/HeaderActionButton.cjs.js"),rn=require("./components/RowDragHandleCellContent.cjs.js");require("./components/RowSelectionHeader.cjs.js");require("./components/SelectionCell.cjs.js");const ln=require("./components/ColumnHeaderMenu.cjs.js"),Se=require("@dnd-kit/core"),re=require("@dnd-kit/sortable"),xt=require("./context/ColumnSettingsContext.cjs.js"),E=require("./constants.cjs.js"),an=require("./components/TableFooterRow.cjs.js"),Y=require("./utils/pinningUtils.cjs.js"),Pe=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const un=require("../../components/InfoMessage/InfoMessage.cjs.js"),cn=require("../../components/FilterErrorActions/FilterErrorActions.cjs.js"),pt=require("./context/CellEditingContext.cjs.js"),ve=require("./context/SelectionCellsContext.cjs.js"),dn=require("./context/ClipboardContext.cjs.js"),mn=require("./context/SelectedRowsContext.cjs.js"),gn=require("../../context/MenuContext.cjs.js"),xn=require("./hooks/useCustomColumnWidthVars.cjs.js"),pn=require("./hooks/useCellContextMenu.cjs.js"),fn=require("./hooks/useColumnVirtualization.cjs.js"),Cn=require("./hooks/useKeyboardNavigation.cjs.js"),yn=require("./hooks/useDynamicRowHeight.cjs.js"),Rn=require("./context/ProjectDataContext.cjs.js"),En=require("./hooks/useBuildGroupByTableData.cjs.js"),ie=require("./utils/cellUtils.cjs.js"),ct=require("./utils/loadingUtils.cjs.js"),Ne=require("./utils/restrictedEntity.cjs.js"),we=require("react-dom"),fe=require("@ynput/ayon-react-components"),Ae=require("./context/ProjectTableContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("date-fns");const hn=require("./utils/getTableFieldOptions.cjs.js"),jn=require("./utils/getReadOnlyLists.cjs.js");require("./utils/columnIds.cjs.js");const be=require("./utils/filterError.cjs.js"),bn=require("./utils/getEntityViewerIds.cjs.js"),dt=require("./utils/checkColumnVisibility.cjs.js"),ze=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js"),Sn=require("../../context/ProjectContext.cjs.js"),wn=require("../../context/PowerpackContext.cjs.js"),In=require("../../context/DetailsPanelContext.cjs.js"),Dn=require("../../hooks/useLoadModule.cjs.js"),mt=require("./widgets/CellWidget.cjs.js"),Mn=require("react-toastify"),Ln=()=>null,On=(s,p)=>p.some(o=>{if(o.includes("*")){const x="^"+o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*")+"$";return new RegExp(x).test(s)}return s===o}),Tn=({scope:s,sliceId:p,onScroll:o,onScrollBottom:m,onOpenNew:x,readOnly:j,excludedColumns:D,excludedSorting:L,extraColumns:_,includeLinks:f,isLoading:M,isExpandable:O,enableSorting:n=!0,clientSorting:C=!1,sortableRows:R=!1,onRowReorder:v,dndActiveId:b,columnsConfig:d,showColumnSummaries:A=!1,fieldStats:S,groupFieldStats:Z,fieldStatsLoading:W,fieldStatsError:ee,mainCountLabels:P,onScrollBottomGroupBy:N,contextMenuItems:q,onColumnVisibleChange:T,onColumnVisibleChangeSubscribed:F,onVisibleRowsChange:G,pt:H,...U})=>{const{columnVisibility:i,columnPinning:u,columnOrder:l,columnSizing:w,setAllColumns:$,sorting:Ce,sortingOnChange:K,columnPinningOnChange:J,columnSizingOnChange:le,defaultColumnVisibility:ae,columnVisibilityOnChange:Ie,columnOrderOnChange:ue,groupBy:Q,columnSummaries:Ct,updateColumnSummary:yt,columnSummaryScopes:Rt,updateColumnSummaryScope:Et,columnSummaryFormats:ht,updateColumnSummaryFormat:jt}=xt.useColumnSettingsContext(),{productTypes:bt,projectName:St,...wt}=Sn.useProjectContext(),{tableData:ne,attribFields:X,entitiesMap:It,users:Fe,isLoading:Dt,error:De,softError:He,softErrorAction:Mt,isInitialized:Me,expanded:Lt,updateExpanded:Ot,toggleExpandAll:Tt,showHierarchy:V,isFlatFolderView:ye,fetchNextPage:_t,scopes:te,getEntityById:Re,onResetView:Pt,overrideGroupBy:ke,loadingLinksEntityIds:Nt,queryFilters:qt}=Ae.useProjectTableContext(),Ue=!!Q||!!ke,vt=be.isFilterError(De,qt),zt=be.getFilterErrorMessage(be.getEntitiesLabelFromScopes(te)),Le=ke?.id??Q?.id,At=Array.isArray(Le)?Le[0]:Le,Ft=V||["hierarchy","folder","product"].includes(At??"")||te.includes("product"),{writableFields:Ve}=Rn.useProjectDataContext(),ce=M||Dt,{statuses:Be=[],folderTypes:We=[],taskTypes:Ge=[],tags:$e=[],linkTypes:Ke=[]}=wt||{},de=c.useMemo(()=>hn.getTableFieldOptions({users:Fe,statuses:Be,folderTypes:We,taskTypes:Ge,productTypes:bt,tags:$e,scopes:te}),[Fe,Be,We,Ge,te,$e]),Ee=c.useRef(null),Je=c.useRef(0),{registerGrid:Qe}=ve.useSelectionCellsContext(),{loadingAttrib:Xe,loadingRows:Ht}=c.useMemo(()=>{const t=Ee.current?.querySelectorAll("tbody tr").length||0,r=ct.generateDummyAttributes(),y=ct.generateLoadingRows(V&&ne.length>0?Math.min(t,50):Q?Math.max(Je.current,50):50);return{loadingAttrib:r,loadingRows:y}},[]),kt=!Me||ce,{readOnlyColumns:Ye,readOnlyAttribs:Ut}=c.useMemo(()=>jn.getReadOnlyLists(X,Ve,j),[X,Ve,j]),{selectedCells:me}=ve.useSelectionCellsContext(),{updateEntities:Ze}=pt.useCellEditing(),Vt=c.useCallback(async(t,r)=>{const{selection:y=[]}=r||{},a=[];if(!y?.length)a.push({...t,id:t.id||t.rowId});else{const{field:g,value:z,isAttrib:Oe}=t;for(const sn of me){const{colId:Te,rowId:je}=ie.parseCellId(sn)||{};if(Te===E.ROW_SELECTION_COLUMN_ID)continue;const _e=Re(je||"");if(!_e){console.warn(`Entity with ID ${je} not found for cell update.`);continue}(!Te?.includes("attrib_")||Te?.replace("attrib_","")===g)&&je&&a.push({field:g,rowId:je,id:_e.entityId,value:z,isAttrib:Oe,type:_e.entityType})}}if(!a.length){console.warn("No entities to update, skipping updateEntities call."),Mn.toast.warn("No entities to update.");return}await Ze(a,!0)},[Ze,Re,me]),et=c.useMemo(()=>Me?X:Xe,[X,Xe,Me]),Bt=()=>qe.getNameColumnLabel(te),se=c.useMemo(()=>{const t=qe.default({scopes:te,attribs:et,links:Ke,includeLinks:f,showHierarchy:V,isFlatFolderView:ye,options:de,extraColumns:_,excluded:D,excludedSorting:L,groupBy:Q,nameLabel:Bt()});return R&&n?[{id:E.DRAG_HANDLE_COLUMN_ID,header:()=>null,cell:()=>null,size:24,minSize:24,maxSize:24,enableResizing:!1,enableSorting:!1,enableHiding:!1,enablePinning:!1},...t]:t},[te,JSON.stringify(et),V,ye,O,de,Ke,f,_,D,L,R,n,Q]);c.useEffect(()=>{const t=se.map(r=>r.id).filter(Boolean);$(t)},[se,$]);const Wt=c.useMemo(()=>{const t={...i};return se.forEach(r=>{const y=r.visible;r.id&&t[r.id]===void 0&&(y!==void 0?t[r.id]=y:t[r.id]=dt.checkColumnVisibility({},r.id,ae))}),dt.ensureAtLeastOneVisibleColumn(t,se.map(r=>r.id).filter(Boolean))},[i,ae,se]),I=B.useReactTable({data:kt?Ht:ne,columns:se,defaultColumn:{minSize:50,size:150},enableRowSelection:!0,getRowId:t=>t.id,enableSubRowSelection:!1,getSubRows:t=>t.subRows,getRowCanExpand:()=>!!O||V||ye||Ue,getCoreRowModel:B.getCoreRowModel(),getFilteredRowModel:B.getFilteredRowModel(),getExpandedRowModel:B.getExpandedRowModel(),filterFromLeafRows:!0,onExpandedChange:Ot,enableSorting:n,getSortedRowModel:B.getSortedRowModel(),sortDescFirst:!1,manualSorting:!C,onSortingChange:K,columnResizeMode:"onChange",onColumnPinningChange:J,onColumnSizingChange:le,onColumnVisibilityChange:Ie,onColumnOrderChange:ue,filterFns:B.filterFns,state:{expanded:Lt,sorting:Ce,columnPinning:(()=>{const t=[];R&&t.push(E.DRAG_HANDLE_COLUMN_ID),t.push(E.ROW_SELECTION_COLUMN_ID);const r=(u.left||[]).filter(a=>a!==E.DRAG_HANDLE_COLUMN_ID&&a!==E.ROW_SELECTION_COLUMN_ID);return t.push(...r),{left:[...new Set(t)],right:u.right}})(),columnSizing:w,columnVisibility:Wt,columnOrder:l},meta:{projectName:St,options:de,readOnly:Ye,updateEntities:Vt,toggleExpandAll:Tt,loadMoreRows:_t,selection:Array.from(me),columnsConfig:d,loadingLinksEntityIds:Nt}}),{rows:oe}=I.getRowModel();c.useEffect(()=>{Je.current=oe.length},[oe.length]),c.useEffect(()=>{if(!oe.length)return;const t=oe.map(a=>a.id),y=[...I.getAllLeafColumns().map(a=>a.id)].sort((a,g)=>{if(E.ROW_SELECTION_COLUMN_ID===g)return 1;const z=u.left?.includes(a)?0:1,Oe=u.left?.includes(g)?0:1;return z-Oe});Qe(t,y)},[oe,I.getAllLeafColumns(),u,E.ROW_SELECTION_COLUMN_ID,Qe]);const he=I.getVisibleLeafColumns(),{columnVirtualizer:ge,virtualPaddingLeft:xe,virtualPaddingRight:pe}=fn({visibleColumns:he,tableContainerRef:Ee,columnPinning:u,columnSizing:w,columnOrder:l}),tt=c.useRef({}),nt=ge.getVirtualItems();c.useEffect(()=>{if(!T||!F?.length)return;const t=new Set(nt.map(g=>he[g.index]?.id)),r={};let y=!1;I.getAllLeafColumns().filter(g=>On(g.id,F)).forEach(g=>{const z=t.has(g.id);tt.current[g.id]!==z&&(r[g.id]=z,y=!0,tt.current[g.id]=z)}),y&&T(r)},[nt,T,F,he,I]);const st=xn(I,w),{powerLicense:ot}=wn.usePowerpack(),[Gt,{isLoaded:it,isLoading:rt}]=Dn.useLoadModule({addon:"powerpack",remote:"views",module:"SummaryCellContent",fallback:Ln,skip:!A||!ot}),$t=A&&ot&&(it||rt)&&!!oe.length,Kt=rt||!it,Jt=c.useMemo(()=>{const t=new Set,r=new Set;for(const y of me){const{rowId:a,colId:g}=ie.parseCellId(y)||{};if(!a||En.isGroupId(a))continue;const z=Re(a)?.entityId;z&&(g===E.ROW_SELECTION_COLUMN_ID?r.add(z):t.add(z))}return t.size||r.size},[me,Re]),{getRowHeight:Qt,defaultRowHeight:lt}=yn(),Xt=c.useMemo(()=>X.reduce((t,r)=>(r.data?.enum?.length&&(t[r.name]=r.data?.enum),t),{}),[X]),Yt=c.useMemo(()=>ne.map(t=>t.id),[ne]),Zt=c.useMemo(()=>l.filter(t=>t!==E.DRAG_HANDLE_COLUMN_ID&&t!==E.ROW_SELECTION_COLUMN_ID),[l]),en=c.useMemo(()=>!b||!R?null:ne.find(t=>t.id===b),[b,ne,R]),tn=c.useCallback(t=>{if(o?.(t),m){const r=t.currentTarget;if(r&&!Q&&(!V||!ye)){const{scrollHeight:y,scrollTop:a,clientHeight:g}=r;y-a-g<500&&!ce&&m(t)}}if(N&&Q){const g=t.currentTarget?.querySelector(".load-more")?.getAttribute("id")?.split("-")[2];g&&N(g)}},[o,m,N,V,Q,ce]),at=e.jsxRuntimeExports.jsx(dn.ClipboardProvider,{entitiesMap:It,columnEnums:{...de,...Xt},columnReadOnly:Ut,visibleColumns:he,children:e.jsxRuntimeExports.jsxs(h.TableWrapper,{...U,children:[e.jsxRuntimeExports.jsx(h.TableContainer,{ref:Ee,style:{height:"100%",padding:0},onScroll:tn,...H?.container,"data-column-dnd-container":!0,className:k("table-container",{resizing:I.getState().columnSizingInfo.isResizingColumn},H?.container?.className),children:e.jsxRuntimeExports.jsxs("table",{style:{display:"grid",borderCollapse:"collapse",userSelect:"none",...st,width:I.getTotalSize(),cursor:I.getState().columnSizingInfo.isResizingColumn?"col-resize":void 0,minHeight:"100%",gridTemplateRows:"auto 1fr auto"},children:[e.jsxRuntimeExports.jsx(_n,{columnVirtualizer:ge,table:I,virtualPaddingLeft:xe,virtualPaddingRight:pe,isLoading:ce,readOnlyColumns:Ye,sortableRows:R,columnOrderIds:Zt,...H?.head}),e.jsxRuntimeExports.jsx(qn,{columnVirtualizer:ge,table:I,tableContainerRef:Ee,virtualPaddingLeft:xe,virtualPaddingRight:pe,showHierarchy:V,attribs:X,onOpenNew:x,rowOrderIds:Yt,sortableRows:R,error:De,isFilterError:vt,filterErrorMessage:zt,isLoading:ce,isGrouping:Ue,getRowHeight:Qt,defaultRowHeight:lt,onResetView:Pt,contextMenuItems:q,onVisibleRowsChange:G}),$t&&!De&&e.jsxRuntimeExports.jsx(an.TableFooterRow,{columnVirtualizer:ge,table:I,virtualPaddingLeft:xe,virtualPaddingRight:pe,isLoading:Kt,statsLoading:!!W,error:ee,renderCellContent:t=>e.jsxRuntimeExports.jsx(Gt,{columnId:t,attribs:X,fieldStats:S,groupFieldStats:Z,calc:Ct[t],onCalcChange:r=>yt(t,r),format:ht[t],onFormatChange:r=>jt(t,r),scope:Rt[t],onScopeChange:r=>Et(t,r),mainCountLabels:P,fieldOptions:de,parentScopeApplicable:Ft,selectedCount:Jt})})]})}),He&&e.jsxRuntimeExports.jsx(h.SoftErrorBanner,{children:e.jsxRuntimeExports.jsx(un.InfoMessage,{variant:"warning",message:He,action:Mt})})]})}),nn=R&&b&&we.createPortal(e.jsxRuntimeExports.jsx(Se.DragOverlay,{dropAnimation:null,children:en?(()=>{const t=I.getRowModel().rows.find(y=>y.id===b);if(!t)return null;const r=I.getTotalSize();return e.jsxRuntimeExports.jsx("table",{style:{width:r,borderCollapse:"collapse",backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",...st},children:e.jsxRuntimeExports.jsx("tbody",{children:e.jsxRuntimeExports.jsxs(h.TR,{style:{display:"flex",userSelect:"none"},children:[xe?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:xe}}):null,ge.getVirtualItems().map(y=>{const a=t.getVisibleCells()[y.index];if(!a)return null;const g={...Y.getCommonPinningStyles(a.column),width:Y.getColumnWidth(a.column.id),display:"flex",alignItems:"center",height:lt};return a.column.id===E.DRAG_HANDLE_COLUMN_ID?e.jsxRuntimeExports.jsxs(h.TD,{style:{...g,justifyContent:"center"},className:k(a.column.id),children:[e.jsxRuntimeExports.jsx(fe.Icon,{icon:"drag_handle"})," "]},`overlay-drag-${a.id}`):e.jsxRuntimeExports.jsx(ft,{cell:a,cellId:`overlay-${ie.getCellId(t.id,a.column.id)}`,rowId:t.id,showHierarchy:V},`overlay-cell-${a.id}`)}),pe?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:pe}}):null]})})})})():null}),document.body);return R?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[at,nn,e.jsxRuntimeExports.jsx(gt,{table:I})]}):e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[at,e.jsxRuntimeExports.jsx(gt,{table:I})]})},gt=({table:s})=>{const{active:p}=Se.useDndContext(),m=p?.data?.current?.type==="column"?p?.id:null,x=c.useMemo(()=>m&&s.getHeaderGroups()[0]?.headers.find(j=>j.id===m)||null,[m,s]);return!m||!x?null:we.createPortal(e.jsxRuntimeExports.jsx(Se.DragOverlay,{dropAnimation:null,children:e.jsxRuntimeExports.jsx(h.HeaderCell,{style:{width:x.column.getSize(),backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",display:"flex",alignItems:"center",minHeight:34},children:e.jsxRuntimeExports.jsx(h.TableCellContent,{className:"bold header",children:B.flexRender(x.column.columnDef.header,x.getContext())})})}),document.body)},_n=({columnVirtualizer:s,table:p,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L,..._})=>e.jsxRuntimeExports.jsx(h.TableHeader,{..._,children:p.getHeaderGroups().map(f=>e.jsxRuntimeExports.jsx(Pn,{columnVirtualizer:s,headerGroup:f,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L},f.id))}),Pn=({columnVirtualizer:s,headerGroup:p,virtualPaddingLeft:o,virtualPaddingRight:m,isLoading:x,readOnlyColumns:j,sortableRows:D,columnOrderIds:L})=>{const _=s.getVirtualItems(),{active:f}=Se.useDndContext(),M=f?.data?.current?.type==="column",O=M&&(f?.data?.current?.isPinned??!1);return e.jsxRuntimeExports.jsxs(h.ColumnHeader,{style:{display:"flex"},children:[o?e.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:o}}):null,e.jsxRuntimeExports.jsx(re.SortableContext,{items:L,strategy:re.horizontalListSortingStrategy,children:_.map(n=>{const C=p.headers[n.index],R=C.id!==E.DRAG_HANDLE_COLUMN_ID&&C.id!==E.ROW_SELECTION_COLUMN_ID;return e.jsxRuntimeExports.jsx(Nn,{header:C,isLoading:x,isReadOnly:j?.includes(C.id),canSort:C.column.getCanSort(),canFilter:C.column.getCanFilter(),canHide:C.column.getCanHide(),canPin:C.column.getCanPin(),canResize:C.column.getCanResize(),sortableRows:D,isDraggable:R,isColumnDrag:M,isDraggedColumnPinned:O},C.id)})}),m?e.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:m}}):null]},p.id)},Nn=({header:s,isLoading:p,canFilter:o,canHide:m,canSort:x,canPin:j,canResize:D,isReadOnly:L,sortableRows:_,isDraggable:f=!0,isColumnDrag:M,isDraggedColumnPinned:O})=>{const{column:n}=s,C=n.getIsSorted(),R=`column-header-menu-${n.id}`,{menuOpen:v}=gn.useMenuContext(),b=v===R,{columnPinning:d,sorting:A,updateSorting:S}=xt.useColumnSettingsContext(),Z=()=>{const i=A?.find(l=>l.id===n.id),u=i?i.desc?[]:[{id:n.id,desc:!0}]:[{id:n.id,desc:!1}];S(u)},W=d.left?.includes(n.id)||!1,{attributes:ee,listeners:P,setNodeRef:N,transform:q,transition:T,isDragging:F}=re.useSortable({id:n.id,data:{type:"column",isPinned:W},disabled:!f}),G=M&&O===W,H=()=>{if(F)return{transform:ze.CSS.Translate.toString(q),transition:T,visibility:"hidden",zIndex:200};if(G&&q){const i=W?{position:"relative",left:"auto"}:{};return{transform:ze.CSS.Translate.toString(q),transition:T,...i}}return{}},U={onPointerDown:i=>i.stopPropagation(),onMouseDown:i=>i.stopPropagation()};return e.jsxRuntimeExports.jsx(h.HeaderCell,{ref:N,className:k(s.id,"shimmer-dark",{loading:p,"last-pinned-left":n.getIsPinned()==="left"&&n.getIsLastColumn("left"),resizing:n.getIsResizing(),dragging:F,draggable:f}),style:{...Y.getCommonPinningStyles(n),width:Y.getColumnWidth(n.id),...H()},children:s.isPlaceholder?null:e.jsxRuntimeExports.jsxs(h.TableCellContent,{className:k("bold","header"),...f?{...ee,...P}:{},children:[B.flexRender(n.columnDef.header,s.getContext()),L&&e.jsxRuntimeExports.jsx(fe.Icon,{icon:"lock","data-tooltip":"You only have permission to read this column."}),e.jsxRuntimeExports.jsxs(h.HeaderButtons,{className:"actions",$isOpen:b,...U,children:[(m||j||x)&&e.jsxRuntimeExports.jsx(ln.ColumnHeaderMenu,{className:"header-menu",header:s,canHide:m,canPin:j,canSort:x,isResizing:n.getIsResizing(),menuId:R,isOpen:b}),x&&e.jsxRuntimeExports.jsx(ut,{icon:"sort",className:k("sort-button",{visible:C}),style:{transform:C==="desc"?"rotate(180deg) scaleX(-1)":"none"},onClick:Z,selected:!!n.getIsSorted()}),n.getIsPinned()&&n.id!==E.ROW_SELECTION_COLUMN_ID&&n.id!==E.DRAG_HANDLE_COLUMN_ID&&e.jsxRuntimeExports.jsx(ut,{icon:"push_pin",className:k("pin-button","visible"),onClick:()=>n.pin(!1),selected:!0})]}),D&&e.jsxRuntimeExports.jsx(h.ResizedHandler,{onDoubleClick:()=>n.resetSize(),onMouseDown:i=>{i.stopPropagation(),s.getResizeHandler()(i)},onTouchStart:s.getResizeHandler(),onPointerDown:i=>i.stopPropagation(),className:k("resize-handle",{resizing:n.getIsResizing()})})]})},s.id)},qn=({columnVirtualizer:s,table:p,tableContainerRef:o,showHierarchy:m,virtualPaddingLeft:x,virtualPaddingRight:j,attribs:D,onOpenNew:L,rowOrderIds:_,sortableRows:f,error:M,isFilterError:O,filterErrorMessage:n,isLoading:C,isGrouping:R,getRowHeight:v,defaultRowHeight:b,onResetView:d,contextMenuItems:A,onVisibleRowsChange:S})=>{const Z=c.useMemo(()=>p.getAllColumns().map(l=>{const w=l.id,$=l.columnDef.header;return typeof $=="string"||typeof $=="number"?{label:$,id:w}:null}).filter(Boolean),[p.getAllColumns()]),ee=pn({attribs:D,onOpenNew:L,headerLabels:Z,contextMenuItems:A}).handleTableBodyContextMenu,{rows:P}=p.getRowModel(),N=on.useVirtualizer({count:P.length,estimateSize:i=>{const u=P[i];return u?v(u.original):b},getScrollElement:()=>o.current,measureElement:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?i=>i?.getBoundingClientRect().height:void 0,overscan:5}),q=N.getVirtualItems(),T=c.useRef("");c.useEffect(()=>{if(!S)return;const i=q.map(w=>P[w.index]&&Ae.parseRowId(P[w.index].id)).filter(Boolean),u=Array.from(new Set(i)),l=u.join(",");l!==T.current&&(T.current=l,S(u))},[q,P,S]);const F=c.useCallback(i=>{i&&N.measureElement(i)},[N]);Cn();const G=p.getVisibleLeafColumns(),H=c.useMemo(()=>{const i=[],u=[];for(let l=0;l<G.length-1;l++){const w=G[l];u.push(w.id===E.ROW_SELECTION_COLUMN_ID?"20":`var(--col-${w.id}-size)`),i.push(`calc((${u.join(" + ")}) * 1px)`)}return i},[G]),U=e.jsxRuntimeExports.jsxs("tbody",{style:{minHeight:`${N.getTotalSize()}px`,position:"relative",display:"grid"},onContextMenu:ee,children:[e.jsxRuntimeExports.jsx(h.ColumnDividers,{"aria-hidden":!0,children:H.map((i,u)=>e.jsxRuntimeExports.jsx("div",{style:{left:i}},u))}),q.map(i=>{const u=P[i.index];return u?e.jsxRuntimeExports.jsx(vn,{row:u,showHierarchy:m,visibleCells:u.getVisibleCells(),virtualColumns:s.getVirtualItems(),paddingLeft:x,paddingRight:j,rowRef:F,dataIndex:i.index,offsetTop:i.start,sortableRows:f,isGrouping:R,rowHeight:v(u.original)},u.id):(console.warn("Virtualized row data not found for index:",i.index),null)})]});return M?o.current&&we.createPortal(e.jsxRuntimeExports.jsx(h.AnimatedEmptyPlaceholder,{children:O?e.jsxRuntimeExports.jsxs(Pe.EmptyPlaceholder,{message:n,icon:"filter_alt_off",children:[d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d}),e.jsxRuntimeExports.jsx(cn.FilterErrorActions,{errorMessage:be.extractQueryErrorMessage(M)})]}):e.jsxRuntimeExports.jsx(Pe.EmptyPlaceholder,{message:"No items found",error:M,children:d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d})})}),o.current):!P.length&&!C?o.current&&we.createPortal(e.jsxRuntimeExports.jsx(h.AnimatedEmptyPlaceholder,{children:e.jsxRuntimeExports.jsx(Pe.EmptyPlaceholder,{message:"No items found",children:d&&e.jsxRuntimeExports.jsx(fe.Button,{variant:"filled",label:"Reset filters",icon:"replay",onClick:d})})}),o.current):f?e.jsxRuntimeExports.jsx(re.SortableContext,{items:_,strategy:re.verticalListSortingStrategy,children:U}):U},vn=({row:s,showHierarchy:p,visibleCells:o,virtualColumns:m,paddingLeft:x,paddingRight:j,rowRef:D,dataIndex:L,offsetTop:_,sortableRows:f,isGrouping:M=!1,rowHeight:O})=>{const n=f?re.useSortable({id:s.id}):null,C=c.useRef(null),R=c.useCallback(b=>{C.current=b,n&&n.setNodeRef(b),n&&n.isDragging||D(b)},[n,D]),v={position:"absolute",top:_,left:0,right:0,height:O,zIndex:n&&n.isDragging?0:1,display:"flex",transform:n&&n.transform?ze.CSS.Transform.toString(n.transform):void 0,transition:n&&n.transition?n.transition:void 0,visibility:n&&n.isDragging?"hidden":"visible"};return e.jsxRuntimeExports.jsxs(h.TR,{ref:R,"data-index":L,style:v,className:k({"group-row":s.original.group}),children:[x?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:x}}):null,m.map(b=>{const d=o[b.index];if(!d)return null;const A=ie.getCellId(s.id,d.column.id);return d.column.id===E.DRAG_HANDLE_COLUMN_ID?e.jsxRuntimeExports.jsx(h.TD,{style:{...Y.getCommonPinningStyles(d.column),width:Y.getColumnWidth(d.column.id),display:"flex",alignItems:"center",justifyContent:"center",height:O,pointerEvents:"all",cursor:"grab"},className:k(d.column.id,{"last-pinned-left":d.column.getIsPinned()==="left"&&d.column.getIsLastColumn("left")}),onMouseDown:S=>S.stopPropagation(),onMouseOver:S=>S.stopPropagation(),onDoubleClick:S=>S.stopPropagation(),onContextMenu:S=>{S.preventDefault(),S.stopPropagation()},children:e.jsxRuntimeExports.jsx(rn,{attributes:n?.attributes,listeners:n?.listeners})},d.id):e.jsxRuntimeExports.jsx(ft,{cell:d,cellId:A,rowId:s.id,showHierarchy:p,sortableRows:f,rowHeight:O},d.id)}),j?e.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:j}}):null]})},ft=({cell:s,rowId:p,cellId:o,className:m,showHierarchy:x,sortableRows:j,rowHeight:D,...L})=>{const{getEntityById:_,onOpenPlayer:f}=Ae.useProjectTableContext(),{isCellSelected:M,isCellFocused:O,startSelection:n,extendSelection:C,endSelection:R,selectCell:v,focusCell:b,getCellBorderClasses:d,clearSelection:A,selectedCells:S,setSelectedCells:Z,setAnchorCell:W,setFocusedCellId:ee}=ve.useSelectionCellsContext(),{isRowSelected:P}=mn.useSelectedRowsContext(),{isEditing:N,setEditingCellId:q,editingCellId:T}=pt.useCellEditing(),F=d(o),H=s.column.getIsPinned()==="left"&&s.column.getIsLastColumn("left"),U=s.column.id===E.ROW_SELECTION_COLUMN_ID,i=s.row.original.entityType==="group",u=S.size>1;return e.jsxRuntimeExports.jsx(h.TD,{...L,tabIndex:0,$isLastPinned:H,className:k(s.column.id,{selected:M(o),focused:O(o),editing:N(o),"last-pinned-left":H,"selected-row":P(p),expandable:!!s.row.originalSubRows&&qe.isEntityExpandable(s.row.original.entityType),"multiple-selected":u},m,...F),style:{...Y.getCommonPinningStyles(s.column),width:Y.getColumnWidth(s.column.id),height:D},onMouseDown:l=>{if(l.button!==0)return;const w=l.target;if(w.closest(".expander")||w.closest(".options"))return;if(l.currentTarget.focus(),l.detail===2){if(Ne.isTargetReadOnly(l)&&s.column.id!=="comments"||Ne.isEntityRestricted(s.row.original.entityType)||i){l.preventDefault();return}if(["name","comments"].includes(s.column.id)&&!w.closest(".expander")){s.column.id==="comments"&&In.setDetailsPanelTabForScope("overview","feed");const J=ie.getCellId(s.row.id,E.ROW_SELECTION_COLUMN_ID),le=l.metaKey||l.ctrlKey,ae=ie.parseCellId(J);Z(Ie=>{const ue=le?new Set(Ie):new Set;return ue.add(J),ue.add(o),ue}),ae&&(W(ae),ee(J))}else if(s.column.id==="thumbnail"){if(f){const J=_(s.row.original.entityId||s.row.id);if(J){const le=bn.getEntityViewierIds(J);f(le,{quickView:!0})}}}else q(o);l.preventDefault();return}if(i&&s.column.id!=="name")return A();const $=Ne.isEntityRestricted(s.row.original.entityType);if(w.closest("."+mt.EDIT_TRIGGER_CLASS)&&!$){M(o)||(v(o,!1,!1),b(o)),q(o);return}if(T&&T!==o){const K=document.querySelector(`#${T} input, #${T} [role="textbox"]`);if(K){K.blur(),setTimeout(()=>{Ce()},0);return}}Ce();function Ce(){const K=l.metaKey||l.ctrlKey||U;l.shiftKey?v(o,K,!0):n(o,K),l.preventDefault()}},onMouseOver:l=>{if(l.buttons===1){if(l.target.closest("."+mt.EDIT_TRIGGER_CLASS))return;C(o,U)}},onMouseUp:()=>{R(o)},onDoubleClick:l=>{l.preventDefault()},onContextMenu:l=>{l.preventDefault(),M(o)||v(o,!1,!1)},onKeyDown:()=>{},children:B.flexRender(s.column.columnDef.cell,s.getContext())})};exports.ProjectTreeTable=Tn;
2
2
  //# sourceMappingURL=ProjectTreeTable.cjs.js.map