@ynput/ayon-frontend-shared 0.3.0 → 0.3.2

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 (377) hide show
  1. package/dist/_virtual/index.cjs4.js +1 -1
  2. package/dist/_virtual/index.cjs5.js +1 -1
  3. package/dist/_virtual/index.es4.js +2 -5
  4. package/dist/_virtual/index.es4.js.map +1 -1
  5. package/dist/_virtual/index.es5.js +5 -2
  6. package/dist/_virtual/index.es5.js.map +1 -1
  7. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  8. package/dist/node_modules/remove-accents/index.es.js +1 -1
  9. package/dist/node_modules/web-namespaces/index.cjs.js +1 -1
  10. package/dist/node_modules/web-namespaces/index.cjs.js.map +1 -1
  11. package/dist/node_modules/web-namespaces/index.es.js +3 -8
  12. package/dist/node_modules/web-namespaces/index.es.js.map +1 -1
  13. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  14. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  15. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  16. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  17. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  18. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  19. package/dist/shared/src/api/generated/graphql.cjs.js +12 -8
  20. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphql.es.js +11 -7
  22. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  23. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  24. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  25. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  26. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/overview/getOverview.es.js +95 -95
  28. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  29. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  30. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  31. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +66 -61
  32. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  33. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  34. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  35. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +14 -11
  36. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  37. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  38. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  39. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +42 -41
  40. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  41. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  42. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -23
  44. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  45. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js +1 -1
  46. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js +6 -6
  48. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js.map +1 -1
  49. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  50. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +65 -64
  52. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  53. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  54. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +16 -16
  56. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  57. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  58. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  59. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +142 -146
  60. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  61. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  62. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +24 -24
  64. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  65. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  66. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  67. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +141 -132
  68. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  69. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  70. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  71. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +35 -28
  72. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  73. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +2 -2
  74. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +10 -10
  76. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  77. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  78. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  79. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  80. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  81. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  82. package/dist/shared/src/context/ProjectFoldersContext.es.js +62 -49
  83. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  84. package/dist/shared/src/hooks/useLoadModules.cjs.js +1 -1
  85. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  86. package/dist/shared/src/hooks/useLoadModules.es.js +86 -80
  87. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  88. package/dist/types/api/generated/graphql.d.ts +2 -1
  89. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  90. package/dist/types/api/queries/overview/getOverview.d.ts +1 -0
  91. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +1 -0
  92. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -0
  93. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
  94. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +4 -1
  95. package/dist/types/context/AddonContext.d.ts +1 -0
  96. package/dist/types/context/ProjectFoldersContext.d.ts +1 -0
  97. package/package.json +2 -1
  98. package/dist/node_modules/@ungap/structured-clone/esm/deserialize.cjs.js +0 -2
  99. package/dist/node_modules/@ungap/structured-clone/esm/deserialize.cjs.js.map +0 -1
  100. package/dist/node_modules/@ungap/structured-clone/esm/deserialize.es.js +0 -63
  101. package/dist/node_modules/@ungap/structured-clone/esm/deserialize.es.js.map +0 -1
  102. package/dist/node_modules/@ungap/structured-clone/esm/index.cjs.js +0 -2
  103. package/dist/node_modules/@ungap/structured-clone/esm/index.cjs.js.map +0 -1
  104. package/dist/node_modules/@ungap/structured-clone/esm/index.es.js +0 -12
  105. package/dist/node_modules/@ungap/structured-clone/esm/index.es.js.map +0 -1
  106. package/dist/node_modules/@ungap/structured-clone/esm/serialize.cjs.js +0 -2
  107. package/dist/node_modules/@ungap/structured-clone/esm/serialize.cjs.js.map +0 -1
  108. package/dist/node_modules/@ungap/structured-clone/esm/serialize.es.js +0 -107
  109. package/dist/node_modules/@ungap/structured-clone/esm/serialize.es.js.map +0 -1
  110. package/dist/node_modules/@ungap/structured-clone/esm/types.cjs.js +0 -2
  111. package/dist/node_modules/@ungap/structured-clone/esm/types.cjs.js.map +0 -1
  112. package/dist/node_modules/@ungap/structured-clone/esm/types.es.js +0 -14
  113. package/dist/node_modules/@ungap/structured-clone/esm/types.es.js.map +0 -1
  114. package/dist/node_modules/devlop/lib/default.cjs.js +0 -2
  115. package/dist/node_modules/devlop/lib/default.cjs.js.map +0 -1
  116. package/dist/node_modules/devlop/lib/default.es.js +0 -6
  117. package/dist/node_modules/devlop/lib/default.es.js.map +0 -1
  118. package/dist/node_modules/entities/dist/esm/decode-codepoint.cjs.js +0 -2
  119. package/dist/node_modules/entities/dist/esm/decode-codepoint.cjs.js.map +0 -1
  120. package/dist/node_modules/entities/dist/esm/decode-codepoint.es.js +0 -39
  121. package/dist/node_modules/entities/dist/esm/decode-codepoint.es.js.map +0 -1
  122. package/dist/node_modules/entities/dist/esm/decode.cjs.js +0 -2
  123. package/dist/node_modules/entities/dist/esm/decode.cjs.js.map +0 -1
  124. package/dist/node_modules/entities/dist/esm/decode.es.js +0 -246
  125. package/dist/node_modules/entities/dist/esm/decode.es.js.map +0 -1
  126. package/dist/node_modules/entities/dist/esm/generated/decode-data-html.cjs.js +0 -2
  127. package/dist/node_modules/entities/dist/esm/generated/decode-data-html.cjs.js.map +0 -1
  128. package/dist/node_modules/entities/dist/esm/generated/decode-data-html.es.js +0 -8
  129. package/dist/node_modules/entities/dist/esm/generated/decode-data-html.es.js.map +0 -1
  130. package/dist/node_modules/hast-util-raw/lib/index.cjs.js +0 -2
  131. package/dist/node_modules/hast-util-raw/lib/index.cjs.js.map +0 -1
  132. package/dist/node_modules/hast-util-raw/lib/index.es.js +0 -218
  133. package/dist/node_modules/hast-util-raw/lib/index.es.js.map +0 -1
  134. package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.cjs.js +0 -2
  135. package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.cjs.js.map +0 -1
  136. package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.es.js +0 -146
  137. package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.es.js.map +0 -1
  138. package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.cjs.js +0 -2
  139. package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.cjs.js.map +0 -1
  140. package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.es.js +0 -21
  141. package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.es.js.map +0 -1
  142. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.cjs.js +0 -2
  143. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.cjs.js.map +0 -1
  144. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.es.js +0 -113
  145. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.es.js.map +0 -1
  146. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.cjs.js +0 -2
  147. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.cjs.js.map +0 -1
  148. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.es.js +0 -9
  149. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.es.js.map +0 -1
  150. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.cjs.js +0 -2
  151. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.cjs.js.map +0 -1
  152. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.es.js +0 -45
  153. package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.es.js.map +0 -1
  154. package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.cjs.js +0 -2
  155. package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.cjs.js.map +0 -1
  156. package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.es.js +0 -26
  157. package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.es.js.map +0 -1
  158. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.cjs.js +0 -2
  159. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.cjs.js.map +0 -1
  160. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.es.js +0 -99
  161. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.es.js.map +0 -1
  162. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.cjs.js +0 -2
  163. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.cjs.js.map +0 -1
  164. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.es.js +0 -8
  165. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.es.js.map +0 -1
  166. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.cjs.js +0 -2
  167. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.cjs.js.map +0 -1
  168. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.es.js +0 -211
  169. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.es.js.map +0 -1
  170. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.cjs.js +0 -2
  171. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.cjs.js.map +0 -1
  172. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.es.js +0 -251
  173. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.es.js.map +0 -1
  174. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.cjs.js +0 -2
  175. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.cjs.js.map +0 -1
  176. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.es.js +0 -15
  177. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.es.js.map +0 -1
  178. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.cjs.js +0 -2
  179. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.cjs.js.map +0 -1
  180. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.es.js +0 -74
  181. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.es.js.map +0 -1
  182. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.cjs.js +0 -2
  183. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.cjs.js.map +0 -1
  184. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.es.js +0 -85
  185. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.es.js.map +0 -1
  186. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.cjs.js +0 -2
  187. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.cjs.js.map +0 -1
  188. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.es.js +0 -2272
  189. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.es.js.map +0 -1
  190. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.cjs.js +0 -2
  191. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.cjs.js.map +0 -1
  192. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.es.js +0 -241
  193. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.es.js.map +0 -1
  194. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.cjs.js +0 -2
  195. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.cjs.js.map +0 -1
  196. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.es.js +0 -3
  197. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.es.js.map +0 -1
  198. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.cjs.js +0 -2
  199. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.cjs.js.map +0 -1
  200. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.es.js +0 -1941
  201. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.es.js.map +0 -1
  202. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.cjs.js +0 -2
  203. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.cjs.js.map +0 -1
  204. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.es.js +0 -89
  205. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.es.js.map +0 -1
  206. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.cjs.js +0 -2
  207. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.cjs.js.map +0 -1
  208. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.es.js +0 -163
  209. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.es.js.map +0 -1
  210. package/dist/node_modules/hast-util-raw/node_modules/property-information/index.cjs.js +0 -2
  211. package/dist/node_modules/hast-util-raw/node_modules/property-information/index.cjs.js.map +0 -1
  212. package/dist/node_modules/hast-util-raw/node_modules/property-information/index.es.js +0 -13
  213. package/dist/node_modules/hast-util-raw/node_modules/property-information/index.es.js.map +0 -1
  214. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.cjs.js +0 -2
  215. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.cjs.js.map +0 -1
  216. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.es.js +0 -62
  217. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.es.js.map +0 -1
  218. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.cjs.js +0 -2
  219. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.cjs.js.map +0 -1
  220. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.es.js +0 -34
  221. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.es.js.map +0 -1
  222. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.cjs.js +0 -2
  223. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.cjs.js.map +0 -1
  224. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.es.js +0 -369
  225. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.es.js.map +0 -1
  226. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.cjs.js +0 -2
  227. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.cjs.js.map +0 -1
  228. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.es.js +0 -7
  229. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.es.js.map +0 -1
  230. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.cjs.js +0 -2
  231. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.cjs.js.map +0 -1
  232. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.es.js +0 -567
  233. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.es.js.map +0 -1
  234. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js +0 -2
  235. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js.map +0 -1
  236. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.es.js +0 -8
  237. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.es.js.map +0 -1
  238. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js +0 -2
  239. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js.map +0 -1
  240. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.es.js +0 -7
  241. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.es.js.map +0 -1
  242. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.cjs.js +0 -2
  243. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.cjs.js.map +0 -1
  244. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.es.js +0 -20
  245. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.es.js.map +0 -1
  246. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.cjs.js +0 -2
  247. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.cjs.js.map +0 -1
  248. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.es.js +0 -37
  249. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.es.js.map +0 -1
  250. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.cjs.js +0 -2
  251. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.cjs.js.map +0 -1
  252. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.es.js +0 -29
  253. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.es.js.map +0 -1
  254. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.cjs.js +0 -2
  255. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.cjs.js.map +0 -1
  256. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.es.js +0 -11
  257. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.es.js.map +0 -1
  258. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.cjs.js +0 -2
  259. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.cjs.js.map +0 -1
  260. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.es.js +0 -22
  261. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.es.js.map +0 -1
  262. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.cjs.js +0 -2
  263. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.cjs.js.map +0 -1
  264. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.es.js +0 -15
  265. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.es.js.map +0 -1
  266. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.cjs.js +0 -2
  267. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.cjs.js.map +0 -1
  268. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.es.js +0 -20
  269. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.es.js.map +0 -1
  270. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.cjs.js +0 -2
  271. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.cjs.js.map +0 -1
  272. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.es.js +0 -12
  273. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.es.js.map +0 -1
  274. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.cjs.js +0 -2
  275. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.cjs.js.map +0 -1
  276. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.es.js +0 -12
  277. package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.es.js.map +0 -1
  278. package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.cjs.js +0 -3
  279. package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.cjs.js.map +0 -1
  280. package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.es.js +0 -43
  281. package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.es.js.map +0 -1
  282. package/dist/node_modules/hast-util-to-parse5/lib/index.cjs.js +0 -2
  283. package/dist/node_modules/hast-util-to-parse5/lib/index.cjs.js.map +0 -1
  284. package/dist/node_modules/hast-util-to-parse5/lib/index.es.js +0 -119
  285. package/dist/node_modules/hast-util-to-parse5/lib/index.es.js.map +0 -1
  286. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.cjs.js +0 -2
  287. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.cjs.js.map +0 -1
  288. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.es.js +0 -13
  289. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.es.js.map +0 -1
  290. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.cjs.js +0 -2
  291. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.cjs.js.map +0 -1
  292. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.es.js +0 -62
  293. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.es.js.map +0 -1
  294. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.cjs.js +0 -2
  295. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.cjs.js.map +0 -1
  296. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.es.js +0 -34
  297. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.es.js.map +0 -1
  298. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.cjs.js +0 -2
  299. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.cjs.js.map +0 -1
  300. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.es.js +0 -369
  301. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.es.js.map +0 -1
  302. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.cjs.js +0 -2
  303. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.cjs.js.map +0 -1
  304. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.es.js +0 -7
  305. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.es.js.map +0 -1
  306. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.cjs.js +0 -2
  307. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.cjs.js.map +0 -1
  308. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.es.js +0 -567
  309. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.es.js.map +0 -1
  310. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js +0 -2
  311. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js.map +0 -1
  312. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.es.js +0 -8
  313. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.es.js.map +0 -1
  314. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js +0 -2
  315. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js.map +0 -1
  316. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.es.js +0 -7
  317. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.es.js.map +0 -1
  318. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.cjs.js +0 -2
  319. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.cjs.js.map +0 -1
  320. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.es.js +0 -20
  321. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.es.js.map +0 -1
  322. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.cjs.js +0 -2
  323. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.cjs.js.map +0 -1
  324. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.es.js +0 -37
  325. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.es.js.map +0 -1
  326. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.cjs.js +0 -2
  327. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.cjs.js.map +0 -1
  328. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.es.js +0 -29
  329. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.es.js.map +0 -1
  330. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.cjs.js +0 -2
  331. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.cjs.js.map +0 -1
  332. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.es.js +0 -11
  333. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.es.js.map +0 -1
  334. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.cjs.js +0 -2
  335. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.cjs.js.map +0 -1
  336. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.es.js +0 -22
  337. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.es.js.map +0 -1
  338. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.cjs.js +0 -2
  339. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.cjs.js.map +0 -1
  340. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.es.js +0 -15
  341. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.es.js.map +0 -1
  342. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.cjs.js +0 -2
  343. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.cjs.js.map +0 -1
  344. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.es.js +0 -20
  345. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.es.js.map +0 -1
  346. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.cjs.js +0 -2
  347. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.cjs.js.map +0 -1
  348. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.es.js +0 -12
  349. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.es.js.map +0 -1
  350. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.cjs.js +0 -2
  351. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.cjs.js.map +0 -1
  352. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.es.js +0 -12
  353. package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.es.js.map +0 -1
  354. package/dist/node_modules/rehype-raw/lib/index.cjs.js +0 -2
  355. package/dist/node_modules/rehype-raw/lib/index.cjs.js.map +0 -1
  356. package/dist/node_modules/rehype-raw/lib/index.es.js +0 -13
  357. package/dist/node_modules/rehype-raw/lib/index.es.js.map +0 -1
  358. package/dist/node_modules/unist-util-is/lib/index.cjs.js +0 -2
  359. package/dist/node_modules/unist-util-is/lib/index.cjs.js.map +0 -1
  360. package/dist/node_modules/unist-util-is/lib/index.es.js +0 -92
  361. package/dist/node_modules/unist-util-is/lib/index.es.js.map +0 -1
  362. package/dist/node_modules/unist-util-position/lib/index.cjs.js +0 -2
  363. package/dist/node_modules/unist-util-position/lib/index.cjs.js.map +0 -1
  364. package/dist/node_modules/unist-util-position/lib/index.es.js +0 -18
  365. package/dist/node_modules/unist-util-position/lib/index.es.js.map +0 -1
  366. package/dist/node_modules/unist-util-visit/lib/index.cjs.js +0 -2
  367. package/dist/node_modules/unist-util-visit/lib/index.cjs.js.map +0 -1
  368. package/dist/node_modules/unist-util-visit/lib/index.es.js +0 -17
  369. package/dist/node_modules/unist-util-visit/lib/index.es.js.map +0 -1
  370. package/dist/node_modules/unist-util-visit-parents/lib/color.cjs.js +0 -2
  371. package/dist/node_modules/unist-util-visit-parents/lib/color.cjs.js.map +0 -1
  372. package/dist/node_modules/unist-util-visit-parents/lib/color.es.js +0 -7
  373. package/dist/node_modules/unist-util-visit-parents/lib/color.es.js.map +0 -1
  374. package/dist/node_modules/unist-util-visit-parents/lib/index.cjs.js +0 -2
  375. package/dist/node_modules/unist-util-visit-parents/lib/index.cjs.js.map +0 -1
  376. package/dist/node_modules/unist-util-visit-parents/lib/index.es.js +0 -57
  377. package/dist/node_modules/unist-util-visit-parents/lib/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback, UIEventHandler } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName,\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen}>\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // if cell is already selected, do nothing\n if (isCellSelected(cellId)) return\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n const isReadOnly = isTargetReadOnly(e)\n if (isReadOnly) return\n\n // check if this is a restricted entity - prevent opening details/viewer\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // do nothing for restricted entities\n if (isRestricted) return\n\n // do nothing for groups\n if (isGroup) return\n\n // row selection on name column double click\n // making sure it's not the expander that was clicked\n if (cell.column.id === 'name' && !(e.target as HTMLElement).closest('.expander')) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n\n // Select both the row-selection cell and the name cell\n if (!isCellSelected(rowSelectionCellId)) {\n selectCell(rowSelectionCellId, additive, false)\n }\n selectCell(cellId, true, false) // additive=true to keep row-selection\n }\n // open the viewer on thumbnail double click\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // Double click on editable cell triggers edit mode\n else {\n setEditingCellId(cellId)\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TD","Icon","TD","getCellId","Fragment","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","Styled.ColumnHeader","virtualColumn","header","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","SortableContext","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","useSortable","combinedRef","style","CSS","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isRestricted","isEntityRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection","additive","isTargetReadOnly","rowSelectionCellId","targetIds","getEntityViewierIds"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback, UIEventHandler } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName,\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen}>\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // if cell is already selected and it's not the row selection column, do nothing\n if (isCellSelected(cellId) && !(e.metaKey || e.ctrlKey) && !isRowSelectionColumn) {\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n const isReadOnly = isTargetReadOnly(e)\n if (isReadOnly) return\n\n // check if this is a restricted entity - prevent opening details/viewer\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // do nothing for restricted entities\n if (isRestricted) return\n\n // do nothing for groups\n if (isGroup) return\n\n // row selection on name column double click\n // making sure it's not the expander that was clicked\n if (cell.column.id === 'name' && !(e.target as HTMLElement).closest('.expander')) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n\n // Select both the row-selection cell and the name cell\n if (!isCellSelected(rowSelectionCellId)) {\n selectCell(rowSelectionCellId, additive, false)\n }\n selectCell(cellId, true, false) // additive=true to keep row-selection\n }\n // open the viewer on thumbnail double click\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // Double click on editable cell triggers edit mode\n else {\n setEditingCellId(cellId)\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TD","Icon","TD","getCellId","Fragment","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","Styled.ColumnHeader","virtualColumn","header","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","SortableContext","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","useSortable","combinedRef","style","CSS","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isRestricted","isEntityRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection","additive","isTargetReadOnly","rowSelectionCellId","targetIds","getEntityViewierIds"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),A=require("@tanstack/react-table");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const b=require("./widgets/CellWidget.cjs.js"),J=require("./widgets/EntityNameWidget.cjs.js"),Q=require("./widgets/GroupHeaderWidget.cjs.js"),w=require("./widgets/ThumbnailWidget.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const G=require("@ynput/ayon-react-components");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");const p=require("clsx"),ee=require("lodash");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/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/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/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/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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.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/links/getEntityLinks.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.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/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.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/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const V=require("../../util/getEntityTypeIcon.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");const j=require("./utils/cellUtils.cjs.js"),O=require("./ProjectTreeTable.styled.cjs.js"),ie=require("./components/SelectionCell.cjs.js"),re=require("./components/RowSelectionHeader.cjs.js"),k=require("./context/SelectionCellsContext.cjs.js"),ne=require("./context/CellEditingContext.cjs.js");require("short-uuid");const z=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");require("./context/ProjectTableContext.cjs.js");require("./context/ClipboardContext.cjs.js");const te=require("./context/ColumnSettingsContext.cjs.js"),h=require("./hooks/useBuildGroupByTableData.cjs.js");require("./context/SelectedRowsContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("./context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const ae=require("./widgets/LoadMoreWidget.cjs.js"),le=require("./types/columnConfig.cjs.js");require("./components/HeaderActionButton.cjs.js");require("./components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../Slicer/components/SlicerSearch.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");const ue=require("./widgets/MetaWidget.cjs.js"),X=u=>["folder","product"].includes(u),f=50,T=u=>(o,c,...q)=>o.original.isLoading!==c.original.isLoading?o.original.isLoading?1:-1:u(o,c,...q),D=(u,o)=>{const c=u.original.path||u.original.name||"",q=o.original.path||o.original.name||"";return c.localeCompare(q)},K=(u,o,c)=>{const q=j.getCellValue(u.original,c),I=j.getCellValue(o.original,c),C=Array.isArray(q)?q.length:q?String(q).length:0,v=Array.isArray(I)?I.length:I?String(I).length:0;return C-v},W=(u,o,c,q)=>{const I=j.getCellValue(u.original,c),C=j.getCellValue(o.original,c);if(q&&q.enum){const v=q.enum.findIndex(S=>S.value===I);return q.enum.findIndex(S=>S.value===C)-v<0?1:-1}else return q?.type==="datetime"?A.sortingFns.datetime(u,o,c):q?.type==="boolean"?(I===!0?1:0)-(C===!0?1:0):A.sortingFns.alphanumeric(u,o,c)},$=(u,o)=>`${u.linkType.charAt(0).toUpperCase()+u.linkType.slice(1)} (${o})`,F=(u,o)=>`${u.name.replaceAll("_","").replaceAll("-","").replaceAll("|","_")}_${o}`,B=(u,o)=>`link_${F(u,o)}`,se=({scopes:u,attribs:o,links:c=[],includeLinks:q=!0,showHierarchy:I,options:C,excluded:v,excludedSorting:P,extraColumns:S,groupBy:H,nameLabel:U="Entity"})=>{const y=[],g=e=>!v?.includes(e),x=e=>!P?.includes(e);g(k.ROW_SELECTION_COLUMN_ID)&&y.push({id:k.ROW_SELECTION_COLUMN_ID,enableResizing:!1,enableSorting:!1,enablePinning:!1,enableHiding:!1,header:()=>s.jsxRuntimeExports.jsx(re,{}),cell:({row:e})=>e.original.entityType==="group"||e.original.metaType?null:s.jsxRuntimeExports.jsx(ie.SelectionCell,{}),size:20}),g("thumbnail")&&y.push({id:"thumbnail",header:"Thumbnail",size:63,minSize:24,enableResizing:!0,enableSorting:!1,cell:({row:e,column:i,table:r})=>{if(e.original.entityType==="group"||e.original.metaType)return null;const n=r.options.meta;if(!n)return null;const a=j.getCellId(e.id,i.id);let t={entityId:e.original.entityId||e.id,entityType:e.original.entityType,updatedAt:e.original.updatedAt};return e.original.thumbnail&&(t=e.original.thumbnail),s.jsxRuntimeExports.jsx(w.ThumbnailWidget,{id:a,entityId:t.entityId,entityType:t.entityType,updatedAt:t.updatedAt,icon:e.original.icon,projectName:n?.projectName,className:p("thumbnail",{loading:e.original.isLoading}),isPlayable:e.original.hasReviewables})}}),g("name")&&y.push({id:"name",accessorKey:"name",header:U,minSize:f,sortingFn:T(D),enableSorting:H?!1:x("name"),enableResizing:!0,enablePinning:!0,enableHiding:!H,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta,{isEditing:d}=ne.useCellEditing(),{rowHeight:R=40}=te.useColumnSettingsContext(),E=j.getCellId(e.id,i.id);if(e.original.metaType)return s.jsxRuntimeExports.jsx(O.TableCellContent,{id:E,className:p("large","readonly",e.original.entityType),style:{paddingLeft:`calc(${e.depth*1}rem + 8px)`,pointerEvents:"none"},tabIndex:0,children:s.jsxRuntimeExports.jsx(ue.MetaWidget,{metaType:e.original.metaType,label:e.original.label})});if(e.original.entityType===h.NEXT_PAGE_ID&&e.original.group)return s.jsxRuntimeExports.jsx(ae,{id:e.original.group.value,onLoadMore:M=>l?.loadMoreRows?.(M)});const _=e.getCanExpand()&&!!e.originalSubRows&&(X(e.original.entityType)||!!e.original.group);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:E,className:p("large",e.original.entityType,{loading:e.original.isLoading,hierarchy:I}),style:{paddingLeft:`calc(${e.depth*1}rem + ${_||!e.getCanExpand()?0:32}px + 8px)`},tabIndex:0,children:[e.original.group?s.jsxRuntimeExports.jsx(Q.GroupHeaderWidget,{id:e.id,label:e.original.group.label,name:e.original.name,icon:e.original.group.icon,img:e.original.group.img,color:e.original.group.color,count:e.original.group.count,isExpanded:e.getIsExpanded(),isEmpty:e.subRows.length===0&&!e.original.metaType,toggleExpanded:e.getToggleExpandedHandler()}):s.jsxRuntimeExports.jsx(J.EntityNameWidget,{id:e.id,label:e.original.label,name:e.original.name,path:I?void 0:"/"+e.original.parents?.join("/"),icon:e.original.icon,type:e.original.entityType,isExpandable:_,isExpanded:e.getIsExpanded(),toggleExpandAll:()=>l?.toggleExpandAll?.([e.id]),toggleExpanded:e.getToggleExpandedHandler(),rowHeight:R,columnDisplayConfig:le.getColumnDisplayConfig(l?.columnsConfig,"name")}),d(E)&&s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("name",{loading:e.original.isLoading}),columnId:i.id,value:n,valueData:{name:e.original.name,label:e.original.label,meta:l,entityRowId:a,columnId:i.id,hasVersions:!!e.original.hasVersions},entityType:t,attributeData:{type:"name"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:l?.readOnly?.includes(i.id)})]})}}),g("status")&&y.push({id:"status",accessorKey:"status",minSize:f,header:"Status",sortingFn:T((e,i,r)=>W(e,i,r,{enum:C.status,type:"string"})),sortDescFirst:!0,enableSorting:x("status"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta;return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("status",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:l?.options?.status.filter(d=>d.scope?.includes(t)),isCollapsed:!!e.original.childOnlyMatch,onChange:d=>l?.updateEntities?.({field:i.id,value:d,type:t,rowId:a},{selection:l?.selection}),isReadOnly:l?.readOnly?.includes(i.id)||z.isEntityRestricted(t),pt:{enum:{pt:{template:{pt:{icon:{style:{fontVariationSettings:"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20"}}}}}}}})}}),g("entityType")&&y.push({id:"entityType",accessorKey:"entityType",header:"Entity Type",minSize:20,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.alphanumeric),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=j.getCellId(e.id,i.id);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:l,className:p("entityType",z.READ_ONLY,t,{loading:e.original.isLoading}),tabIndex:0,children:[s.jsxRuntimeExports.jsx(G.Icon,{icon:V.getEntityTypeIcon(t)})," ",ee.upperFirst(n)]})}}),g("subType")&&y.push({id:"subType",accessorKey:"subType",header:u.includes("product")||u.includes("version")?"Product type":"Type",minSize:f,enableSorting:x("subType"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T((e,i,r)=>W(e,i,r,{enum:[...C.folderType,...C.taskType],type:"string"})),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=t==="folder"?"folderType":"taskType",d=r.options.meta,R=t==="folder"&&e.original.hasVersions;return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("subType",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:t==="folder"?d?.options?.folderType:t==="task"?d?.options?.taskType:[],isCollapsed:!!e.original.childOnlyMatch,onChange:E=>d?.updateEntities?.({field:l,value:E,type:t,rowId:e.id},{selection:d?.selection}),isReadOnly:d?.readOnly?.includes(i.id)||d?.readOnly?.includes(l)||R,tooltip:R?"Folder type cannot be edited when versions exist within the folder":void 0})}}),g("assignees")&&y.push({id:"assignees",accessorKey:"assignees",header:"Assignees",minSize:f,enableSorting:x("assignees"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(K),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:l==="folder"?s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:"",isPlaceholder:!0}):s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||z.isEntityRestricted(l),pt:{enum:{multiSelectClose:a?.length===0,search:!0,multipleOverride:!1}}})}}),g("folder")&&y.push({id:"folder",accessorKey:"folder",header:"Folder name",minSize:f,enableSorting:x("folderName"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("folder",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},isReadOnly:!0})}}),g("author")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"author",accessorKey:"author",header:"Author",minSize:f,enableSorting:x("author"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("author",{loading:e.original.isLoading}),columnId:i.id,value:[a],attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isReadOnly:!0,isInherited:l==="product"})}}),g("version")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"version",accessorKey:"version",header:"Version",minSize:f,enableSorting:x("version"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType)return null;let t=e.original.versionName||r;return e.original.entityType==="product"&&(t=`${e.original.versionName} (${e.original.versionsCount||0} versions)`),s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("version",{loading:e.original.isLoading}),columnId:i.id,value:t,attributeData:{type:"string"},isReadOnly:!0})}}),g("product")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"product",accessorKey:"product",header:"Product name",minSize:f,enableSorting:x("product"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("product",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"string"},isReadOnly:!0})}}),g("tags")&&y.push({id:"tags",accessorKey:"tags",header:"Tags",minSize:f,enableSorting:x("tags"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(K),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("tags",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.tag,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||z.isEntityRestricted(l),enableCustomValues:!0})}}),g("createdAt")&&y.push({id:"createdAt",accessorKey:"createdAt",header:"Created at",minSize:f,enableSorting:x("createdAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("createdAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("updatedAt")&&y.push({id:"updatedAt",accessorKey:"updatedAt",header:"Updated at",minSize:f,enableSorting:x("updatedAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("updatedAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}});const Y=o.filter(e=>{if(e.scope&&!e.scope.some(r=>u.includes(r)))return!1;const i="attrib_"+e.name;return!(!g(i)||e.builtin&&!g("attrib"))}).map(e=>({id:"attrib_"+e.name,accessorKey:"attrib."+e.name,header:e.data.title||e.name,minSize:f,filterFn:"fuzzy",sortingFn:T((r,n,a)=>W(r,n,a,e.data)),enableSorting:x(e.name)&&x("attrib"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:r,column:n,table:a})=>{const t=a.options.meta,l=n.id.replace("attrib_",""),{value:d,id:R,type:E}=m(r,l,"attrib"),_=!r.original.ownAttrib?.includes(l);return["group",h.NEXT_PAGE_ID].includes(E)||r.original.metaType||!e.scope?.includes(E)&&d==null?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:R,className:p("attrib",{loading:r.original.isLoading}),columnId:n.id,value:d,attributeData:{type:e.data.type||"string"},options:e.data.enum||[],isCollapsed:!!r.original.childOnlyMatch,isInherited:_,isReadOnly:e.readOnly||t?.readOnly?.some(L=>L===l||L==="attrib"&&e.builtin),onChange:L=>t?.updateEntities?.({field:l,value:L,type:E,isAttrib:!0,rowId:r.id},{selection:e.data.enum?.length?t?.selection:void 0})})}})),Z=q?c.filter(e=>!(!g(e.linkType)||!g("link")||!u.includes(e.inputType)&&!u.includes(e.outputType))).flatMap(e=>{const i=r=>({id:B(e,r),accessorKey:`links.${F(e,r)}`,header:()=>s.jsxRuntimeExports.jsxs(O.LinkColumnHeader,{children:[$(e,r)," ",s.jsxRuntimeExports.jsx(G.Icon,{icon:V.getEntityTypeIcon(r==="in"?e.inputType:e.outputType)})]}),minSize:f,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:n,column:a})=>{const t=a.id.replace("link_",""),{id:l,value:d}=m(n,t,"links"),R=d?.map(_=>_.label),E={links:d,direction:r,entityId:n.original.entityId||n.original.id,entityType:n.original.entityType,link:{label:e.linkType,linkType:e.name,targetEntityType:r==="in"?e.inputType:e.outputType}};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("links",{loading:n.original.isLoading}),columnId:a.id,value:R,valueData:E,folderId:n.original.folderId,attributeData:{type:"links"}})}});return[i("in"),i("out")]}):[],N=[...y,...Y,...Z];return S&&S.forEach(({column:e,position:i=-1})=>{i>=0&&i<N.length?N.splice(i,0,e):N.push(e)}),N},m=(u,o,c)=>({value:c?u.original[c]?.[o]:u.original[o],id:u.id,type:u.original.entityType});exports.default=se;exports.getLinkColumnId=B;exports.getLinkKey=F;exports.getLinkLabel=$;exports.getValueIdType=m;exports.isEntityExpandable=X;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),A=require("@tanstack/react-table");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const b=require("./widgets/CellWidget.cjs.js"),J=require("./widgets/EntityNameWidget.cjs.js"),Q=require("./widgets/GroupHeaderWidget.cjs.js"),w=require("./widgets/ThumbnailWidget.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const G=require("@ynput/ayon-react-components");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");const p=require("clsx"),ee=require("lodash");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/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/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/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/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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.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/links/getEntityLinks.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.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/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.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/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const V=require("../../util/getEntityTypeIcon.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");const j=require("./utils/cellUtils.cjs.js"),O=require("./ProjectTreeTable.styled.cjs.js"),ie=require("./components/SelectionCell.cjs.js"),re=require("./components/RowSelectionHeader.cjs.js"),k=require("./context/SelectionCellsContext.cjs.js"),ne=require("./context/CellEditingContext.cjs.js");require("short-uuid");const z=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");require("./context/ProjectTableContext.cjs.js");require("./context/ClipboardContext.cjs.js");const te=require("./context/ColumnSettingsContext.cjs.js"),h=require("./hooks/useBuildGroupByTableData.cjs.js");require("./context/SelectedRowsContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("./context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const ae=require("./widgets/LoadMoreWidget.cjs.js"),le=require("./types/columnConfig.cjs.js");require("./components/HeaderActionButton.cjs.js");require("./components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../Slicer/components/SlicerSearch.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");const ue=require("./widgets/MetaWidget.cjs.js"),X=u=>["folder","product"].includes(u),f=50,T=u=>(o,c,...q)=>o.original.isLoading!==c.original.isLoading?o.original.isLoading?1:-1:u(o,c,...q),D=(u,o)=>{const c=u.original.path||u.original.name||"",q=o.original.path||o.original.name||"";return c.localeCompare(q)},K=(u,o,c)=>{const q=j.getCellValue(u.original,c),I=j.getCellValue(o.original,c),C=Array.isArray(q)?q.length:q?String(q).length:0,v=Array.isArray(I)?I.length:I?String(I).length:0;return C-v},W=(u,o,c,q)=>{const I=j.getCellValue(u.original,c),C=j.getCellValue(o.original,c);if(q&&q.enum){const v=q.enum.findIndex(S=>S.value===I);return q.enum.findIndex(S=>S.value===C)-v<0?1:-1}else return q?.type==="datetime"?A.sortingFns.datetime(u,o,c):q?.type==="boolean"?(I===!0?1:0)-(C===!0?1:0):A.sortingFns.alphanumeric(u,o,c)},$=(u,o)=>`${u.linkType.charAt(0).toUpperCase()+u.linkType.slice(1)} (${o})`,F=(u,o)=>`${u.name.replaceAll("_","").replaceAll("-","").replaceAll("|","_")}_${o}`,B=(u,o)=>`link_${F(u,o)}`,se=({scopes:u,attribs:o,links:c=[],includeLinks:q=!0,showHierarchy:I,options:C,excluded:v,excludedSorting:P,extraColumns:S,groupBy:H,nameLabel:U="Entity"})=>{const y=[],g=e=>!v?.includes(e),x=e=>!P?.includes(e);g(k.ROW_SELECTION_COLUMN_ID)&&y.push({id:k.ROW_SELECTION_COLUMN_ID,enableResizing:!1,enableSorting:!1,enablePinning:!1,enableHiding:!1,header:()=>s.jsxRuntimeExports.jsx(re,{}),cell:({row:e})=>e.original.entityType==="group"||e.original.metaType?null:s.jsxRuntimeExports.jsx(ie.SelectionCell,{}),size:20}),g("thumbnail")&&y.push({id:"thumbnail",header:"Thumbnail",size:63,minSize:24,enableResizing:!0,enableSorting:!1,cell:({row:e,column:i,table:r})=>{if(e.original.entityType==="group"||e.original.metaType)return null;const n=r.options.meta;if(!n)return null;const a=j.getCellId(e.id,i.id);let t={entityId:e.original.entityId||e.id,entityType:e.original.entityType,updatedAt:e.original.updatedAt};return e.original.thumbnail&&(t=e.original.thumbnail),s.jsxRuntimeExports.jsx(w.ThumbnailWidget,{id:a,entityId:t.entityId,entityType:t.entityType,updatedAt:t.updatedAt,icon:e.original.icon,projectName:n?.projectName,className:p("thumbnail",{loading:e.original.isLoading}),isPlayable:e.original.hasReviewables})}}),g("name")&&y.push({id:"name",accessorKey:"name",header:U,minSize:f,sortingFn:T(D),enableSorting:H?!1:x("name"),enableResizing:!0,enablePinning:!0,enableHiding:!H,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta,{isEditing:d}=ne.useCellEditing(),{rowHeight:R=40}=te.useColumnSettingsContext(),E=j.getCellId(e.id,i.id);if(e.original.metaType)return s.jsxRuntimeExports.jsx(O.TableCellContent,{id:E,className:p("large","readonly",e.original.entityType),style:{paddingLeft:`calc(${e.depth*1}rem + 8px)`,pointerEvents:"none"},tabIndex:0,children:s.jsxRuntimeExports.jsx(ue.MetaWidget,{metaType:e.original.metaType,label:e.original.label})});if(e.original.entityType===h.NEXT_PAGE_ID&&e.original.group)return s.jsxRuntimeExports.jsx(ae,{id:e.original.group.value,onLoadMore:M=>l?.loadMoreRows?.(M)});const _=e.getCanExpand()&&!!e.originalSubRows&&(X(e.original.entityType)||!!e.original.group);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:E,className:p("large",e.original.entityType,{loading:e.original.isLoading,hierarchy:I}),style:{paddingLeft:`calc(${e.depth*1}rem + ${_||!e.getCanExpand()?0:32}px + 8px)`},tabIndex:0,children:[e.original.group?s.jsxRuntimeExports.jsx(Q.GroupHeaderWidget,{id:e.id,label:e.original.group.label,name:e.original.name,icon:e.original.group.icon,img:e.original.group.img,color:e.original.group.color,count:e.original.group.count,isExpanded:e.getIsExpanded(),isEmpty:e.original.group.count===0,toggleExpanded:e.getToggleExpandedHandler()}):s.jsxRuntimeExports.jsx(J.EntityNameWidget,{id:e.id,label:e.original.label,name:e.original.name,path:I?void 0:"/"+e.original.parents?.join("/"),icon:e.original.icon,type:e.original.entityType,isExpandable:_,isExpanded:e.getIsExpanded(),toggleExpandAll:()=>l?.toggleExpandAll?.([e.id]),toggleExpanded:e.getToggleExpandedHandler(),rowHeight:R,columnDisplayConfig:le.getColumnDisplayConfig(l?.columnsConfig,"name")}),d(E)&&s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("name",{loading:e.original.isLoading}),columnId:i.id,value:n,valueData:{name:e.original.name,label:e.original.label,meta:l,entityRowId:a,columnId:i.id,hasVersions:!!e.original.hasVersions},entityType:t,attributeData:{type:"name"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:l?.readOnly?.includes(i.id)})]})}}),g("status")&&y.push({id:"status",accessorKey:"status",minSize:f,header:"Status",sortingFn:T((e,i,r)=>W(e,i,r,{enum:C.status,type:"string"})),sortDescFirst:!0,enableSorting:x("status"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta;return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("status",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:l?.options?.status.filter(d=>d.scope?.includes(t)),isCollapsed:!!e.original.childOnlyMatch,onChange:d=>l?.updateEntities?.({field:i.id,value:d,type:t,rowId:a},{selection:l?.selection}),isReadOnly:l?.readOnly?.includes(i.id)||z.isEntityRestricted(t),pt:{enum:{pt:{template:{pt:{icon:{style:{fontVariationSettings:"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20"}}}}}}}})}}),g("entityType")&&y.push({id:"entityType",accessorKey:"entityType",header:"Entity Type",minSize:20,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.alphanumeric),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=j.getCellId(e.id,i.id);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:l,className:p("entityType",z.READ_ONLY,t,{loading:e.original.isLoading}),tabIndex:0,children:[s.jsxRuntimeExports.jsx(G.Icon,{icon:V.getEntityTypeIcon(t)})," ",ee.upperFirst(n)]})}}),g("subType")&&y.push({id:"subType",accessorKey:"subType",header:u.includes("product")||u.includes("version")?"Product type":"Type",minSize:f,enableSorting:x("subType"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T((e,i,r)=>W(e,i,r,{enum:[...C.folderType,...C.taskType],type:"string"})),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=t==="folder"?"folderType":"taskType",d=r.options.meta,R=t==="folder"&&e.original.hasVersions;return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("subType",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:t==="folder"?d?.options?.folderType:t==="task"?d?.options?.taskType:[],isCollapsed:!!e.original.childOnlyMatch,onChange:E=>d?.updateEntities?.({field:l,value:E,type:t,rowId:e.id},{selection:d?.selection}),isReadOnly:d?.readOnly?.includes(i.id)||d?.readOnly?.includes(l)||R,tooltip:R?"Folder type cannot be edited when versions exist within the folder":void 0})}}),g("assignees")&&y.push({id:"assignees",accessorKey:"assignees",header:"Assignees",minSize:f,enableSorting:x("assignees"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(K),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:l==="folder"?s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:"",isPlaceholder:!0}):s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||z.isEntityRestricted(l),pt:{enum:{multiSelectClose:a?.length===0,search:!0,multipleOverride:!1}}})}}),g("folder")&&y.push({id:"folder",accessorKey:"folder",header:"Folder name",minSize:f,enableSorting:x("folderName"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("folder",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},isReadOnly:!0})}}),g("author")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"author",accessorKey:"author",header:"Author",minSize:f,enableSorting:x("author"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("author",{loading:e.original.isLoading}),columnId:i.id,value:[a],attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isReadOnly:!0,isInherited:l==="product"})}}),g("version")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"version",accessorKey:"version",header:"Version",minSize:f,enableSorting:x("version"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType)return null;let t=e.original.versionName||r;return e.original.entityType==="product"&&(t=`${e.original.versionName} (${e.original.versionsCount||0} versions)`),s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("version",{loading:e.original.isLoading}),columnId:i.id,value:t,attributeData:{type:"string"},isReadOnly:!0})}}),g("product")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"product",accessorKey:"product",header:"Product name",minSize:f,enableSorting:x("product"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(D),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("product",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"string"},isReadOnly:!0})}}),g("tags")&&y.push({id:"tags",accessorKey:"tags",header:"Tags",minSize:f,enableSorting:x("tags"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(K),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("tags",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.tag,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||z.isEntityRestricted(l),enableCustomValues:!0})}}),g("createdAt")&&y.push({id:"createdAt",accessorKey:"createdAt",header:"Created at",minSize:f,enableSorting:x("createdAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("createdAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("updatedAt")&&y.push({id:"updatedAt",accessorKey:"updatedAt",header:"Updated at",minSize:f,enableSorting:x("updatedAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:T(A.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("updatedAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}});const Y=o.filter(e=>{if(e.scope&&!e.scope.some(r=>u.includes(r)))return!1;const i="attrib_"+e.name;return!(!g(i)||e.builtin&&!g("attrib"))}).map(e=>({id:"attrib_"+e.name,accessorKey:"attrib."+e.name,header:e.data.title||e.name,minSize:f,filterFn:"fuzzy",sortingFn:T((r,n,a)=>W(r,n,a,e.data)),enableSorting:x(e.name)&&x("attrib"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:r,column:n,table:a})=>{const t=a.options.meta,l=n.id.replace("attrib_",""),{value:d,id:R,type:E}=m(r,l,"attrib"),_=!r.original.ownAttrib?.includes(l);return["group",h.NEXT_PAGE_ID].includes(E)||r.original.metaType||!e.scope?.includes(E)&&d==null?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:R,className:p("attrib",{loading:r.original.isLoading}),columnId:n.id,value:d,attributeData:{type:e.data.type||"string"},options:e.data.enum||[],isCollapsed:!!r.original.childOnlyMatch,isInherited:_,isReadOnly:e.readOnly||t?.readOnly?.some(L=>L===l||L==="attrib"&&e.builtin),onChange:L=>t?.updateEntities?.({field:l,value:L,type:E,isAttrib:!0,rowId:r.id},{selection:e.data.enum?.length?t?.selection:void 0})})}})),Z=q?c.filter(e=>!(!g(e.linkType)||!g("link")||!u.includes(e.inputType)&&!u.includes(e.outputType))).flatMap(e=>{const i=r=>({id:B(e,r),accessorKey:`links.${F(e,r)}`,header:()=>s.jsxRuntimeExports.jsxs(O.LinkColumnHeader,{children:[$(e,r)," ",s.jsxRuntimeExports.jsx(G.Icon,{icon:V.getEntityTypeIcon(r==="in"?e.inputType:e.outputType)})]}),minSize:f,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:n,column:a})=>{const t=a.id.replace("link_",""),{id:l,value:d}=m(n,t,"links"),R=d?.map(_=>_.label),E={links:d,direction:r,entityId:n.original.entityId||n.original.id,entityType:n.original.entityType,link:{label:e.linkType,linkType:e.name,targetEntityType:r==="in"?e.inputType:e.outputType}};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("links",{loading:n.original.isLoading}),columnId:a.id,value:R,valueData:E,folderId:n.original.folderId,attributeData:{type:"links"}})}});return[i("in"),i("out")]}):[],N=[...y,...Y,...Z];return S&&S.forEach(({column:e,position:i=-1})=>{i>=0&&i<N.length?N.splice(i,0,e):N.push(e)}),N},m=(u,o,c)=>({value:c?u.original[c]?.[o]:u.original[o],id:u.id,type:u.original.entityType});exports.default=se;exports.getLinkColumnId=B;exports.getLinkKey=F;exports.getLinkLabel=$;exports.getValueIdType=m;exports.isEntityExpandable=X;
2
2
  //# sourceMappingURL=buildTreeTableColumns.cjs.js.map