@ynput/ayon-frontend-shared 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/ProjectTreeTable.cjs.js +1 -1
  2. package/dist/ProjectTreeTable.es.js +247 -243
  3. package/dist/_virtual/index.cjs22.js +1 -1
  4. package/dist/_virtual/index.cjs23.js +1 -1
  5. package/dist/_virtual/index.cjs24.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.cjs8.js +1 -1
  10. package/dist/_virtual/index.es22.js +3 -3
  11. package/dist/_virtual/index.es23.js +5 -5
  12. package/dist/_virtual/index.es24.js +5 -5
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/_virtual/index.es8.js +2 -2
  19. package/dist/api.cjs.js +1 -1
  20. package/dist/api.es.js +446 -445
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.es.js +20 -9
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  26. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  28. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  30. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  32. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  33. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  34. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  35. package/dist/node_modules/remove-accents/index.es.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  44. package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
  45. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphql.es.js +129 -68
  47. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  51. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  52. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  53. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  54. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  55. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  64. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  65. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  66. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  67. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  68. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  69. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  70. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  71. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  72. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
  73. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  74. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  76. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  77. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  78. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  79. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  80. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  81. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  82. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  83. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  84. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  85. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  86. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
  87. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  95. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
  103. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  107. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  125. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  126. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  127. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  129. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  131. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  133. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
  135. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
  137. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
  139. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  141. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  142. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  143. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  144. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  145. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
  147. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  148. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  149. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  151. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  152. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  153. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  154. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  155. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  156. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  157. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  158. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  159. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  160. package/dist/types/api/generated/graphql.d.ts +71 -0
  161. package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
  162. package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
  163. package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
  164. package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
  165. package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
  166. package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
  167. package/dist/types/api/queries/project/getProject.d.ts +14 -0
  168. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
  169. package/dist/types/api/queries/users/getUsers.d.ts +14 -0
  170. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
  171. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  172. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  173. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
  174. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  175. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  176. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  177. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  178. package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTableSettings.es.js","sources":["../../../../../src/components/ProjectTableSettings/ProjectTableSettings.tsx"],"sourcesContent":["import {\n getLinkColumnId,\n getLinkLabel,\n getColumnLabel,\n} from '@shared/containers/ProjectTreeTable/buildTreeTableColumns'\nimport { ENTITY_COLUMN_IDS } from '@shared/containers/ProjectTreeTable/utils/columnIds'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport { useColumnSettingsContext } from '@shared/containers/ProjectTreeTable/context/ColumnSettingsContext'\nimport { useProjectTableContext } from '@shared/containers/ProjectTreeTable/context/ProjectTableContext'\nimport { Button, ButtonProps } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled from 'styled-components'\nimport type { SettingHighlightedId } from '@shared/context/SettingsPanelContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { useSettingsPanel } from '@shared/context/SettingsPanelContext'\nimport { SettingsPanel } from '@shared/components/SettingsPanel/SettingsPanel'\nimport type { SettingConfig } from '@shared/components/SettingsPanel/SettingsPanel'\nimport { ColumnsSettingsWithContext } from './ColumnsSettings'\nimport { SizeSlider } from '../SizeSlider'\nimport { useGroupBySettings } from '@shared/containers/ProjectTreeTable/hooks/useGroupBySettings'\nimport { useSortBySettings } from '@shared/containers/ProjectTreeTable/hooks/useSortBySettings'\n\nconst StyledCustomizeButton = styled(Button)`\n min-width: 120px;\n`\n\ninterface Props extends ButtonProps {\n defaultSelected?: string | null\n}\n\nexport const CustomizeButton = ({ defaultSelected, className, ...props }: Props) => {\n const { togglePanel, isPanelOpen } = useSettingsPanel()\n\n return (\n <StyledCustomizeButton\n onClick={() => togglePanel(defaultSelected)}\n icon=\"settings\"\n selected={isPanelOpen}\n {...props}\n >\n Customize\n </StyledCustomizeButton>\n )\n}\n\nexport type OverviewSettingsChange = (setting: 'columns' | 'group-by', value: any) => void\n\nexport type ProjectTableSettingsProps = {\n settings?: SettingConfig[]\n extraColumns?: { value: string; label: string }[]\n hiddenColumns?: string[]\n hiddenSettings?: ('columns' | 'row-height' | 'group-by' | 'sort-by')[]\n highlighted?: SettingHighlightedId\n includeLinks?: boolean\n hideSortBy?: boolean\n order?: string[]\n scope?: string\n}\n\nexport const ProjectTableSettings: FC<ProjectTableSettingsProps> = ({\n settings = [],\n extraColumns = [],\n hiddenColumns = [],\n hiddenSettings = [],\n highlighted,\n includeLinks = true,\n hideSortBy = false,\n order,\n scope,\n}) => {\n const { ...projectInfo } = useProjectContext()\n const { attribFields, scopes } = useProjectTableContext()\n const {\n columnVisibility,\n defaultColumnVisibility,\n rowHeight = 34,\n updateRowHeight,\n updateRowHeightWithPersistence,\n } = useColumnSettingsContext()\n\n const columns: {\n value: string\n label: string\n hidden?: boolean\n }[] = [\n {\n value: 'thumbnail',\n label: getColumnLabel('thumbnail'),\n },\n {\n value: 'name',\n label:\n scopes.map((scope) => scope.charAt(0).toUpperCase() + scope.slice(1)).join('/') + ' Name',\n },\n {\n value: ENTITY_COLUMN_IDS.folder,\n label: getColumnLabel(ENTITY_COLUMN_IDS.folder),\n },\n {\n value: ENTITY_COLUMN_IDS.task,\n label: getColumnLabel(ENTITY_COLUMN_IDS.task),\n hidden: !['product', 'version'].some((scope) => scopes.includes(scope)),\n },\n {\n value: 'assignees',\n label: getColumnLabel('assignees'),\n hidden: !scopes.includes('task'),\n },\n {\n value: 'product',\n label: getColumnLabel('product'),\n hidden: ['product', 'version'].some((scope) => !scopes.includes(scope)),\n },\n {\n value: 'entityType',\n label: getColumnLabel('entityType'),\n },\n {\n value: 'status',\n label: getColumnLabel('status'),\n },\n {\n value: 'subType',\n label: getColumnLabel('subType', scopes),\n },\n {\n value: 'tags',\n label: getColumnLabel('tags'),\n },\n {\n value: 'createdAt',\n label: getColumnLabel('createdAt'),\n },\n {\n value: 'updatedAt',\n label: getColumnLabel('updatedAt'),\n },\n {\n value: 'subtasks',\n label: getColumnLabel('subtasks'),\n hidden: !scopes.includes('task'),\n },\n {\n value: 'comments',\n label: getColumnLabel('comments'),\n hidden: !scopes.some((scope) => ['task', 'version', 'product', 'folder'].includes(scope)),\n },\n ...attribFields\n .filter((field) => field.scope?.some((scope) => scopes.includes(scope)))\n .map((field) => ({\n value: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ...(projectInfo?.linkTypes && includeLinks\n ? projectInfo.linkTypes\n .filter((link) => [link.inputType, link.outputType].some((type) => scopes.includes(type)))\n .flatMap((link) => [\n {\n value: getLinkColumnId(link, 'in'),\n label: getLinkLabel(link, 'in'),\n },\n {\n value: getLinkColumnId(link, 'out'),\n label: getLinkLabel(link, 'out'),\n },\n ])\n : []),\n ...extraColumns,\n ]\n\n const visibleColumns = columns.filter(\n (column) => !column.hidden && !hiddenColumns.includes(column.value),\n )\n\n const visibleCount = visibleColumns.filter((column) =>\n checkColumnVisibility(columnVisibility, column.value, defaultColumnVisibility),\n ).length\n\n const groupBySettings = useGroupBySettings({ scope })\n const sortBySettings = useSortBySettings(columns)\n\n const defaultSettings: (SettingConfig | undefined | null)[] = [\n {\n id: 'columns',\n title: 'Columns',\n icon: 'view_column',\n preview: `${visibleCount}/${visibleColumns.length}`,\n component: <ColumnsSettingsWithContext columns={visibleColumns} highlighted={highlighted} />,\n },\n hideSortBy ? null : sortBySettings,\n groupBySettings,\n {\n id: 'row-height',\n component: (\n <SizeSlider\n value={rowHeight}\n onChange={updateRowHeight}\n onChangeComplete={updateRowHeightWithPersistence}\n title=\"Row height\"\n id=\"row-height-slider\"\n />\n ),\n },\n ].filter(Boolean)\n\n // Merge extra settings: replace defaults with matching ids, append the rest\n settings.forEach((setting) => {\n if (hiddenSettings.includes(setting.id as any)) return\n const existingIndex = defaultSettings.findIndex((s) => s && 'id' in s && s.id === setting.id)\n if (existingIndex !== -1) {\n defaultSettings[existingIndex] = setting\n } else {\n defaultSettings.push(setting)\n }\n })\n return <SettingsPanel settings={defaultSettings as SettingConfig[]} order={order} />\n}\n"],"names":["StyledCustomizeButton","styled","Button","CustomizeButton","defaultSelected","className","props","togglePanel","isPanelOpen","useSettingsPanel","jsx","ProjectTableSettings","settings","extraColumns","hiddenColumns","hiddenSettings","highlighted","includeLinks","hideSortBy","order","scope","projectInfo","useProjectContext","attribFields","scopes","useProjectTableContext","columnVisibility","defaultColumnVisibility","rowHeight","updateRowHeight","updateRowHeightWithPersistence","useColumnSettingsContext","columns","getColumnLabel","ENTITY_COLUMN_IDS","field","link","type","getLinkColumnId","getLinkLabel","visibleColumns","column","visibleCount","checkColumnVisibility","groupBySettings","useGroupBySettings","sortBySettings","useSortBySettings","defaultSettings","ColumnsSettingsWithContext","SizeSlider","setting","existingIndex","s","SettingsPanel"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTableSettings.es.js","sources":["../../../../../src/components/ProjectTableSettings/ProjectTableSettings.tsx"],"sourcesContent":["import {\n getLinkColumnId,\n getLinkLabel,\n getColumnLabel,\n getNameColumnLabel,\n} from '@shared/containers/ProjectTreeTable/buildTreeTableColumns'\nimport { ENTITY_COLUMN_IDS } from '@shared/containers/ProjectTreeTable/utils/columnIds'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport { useColumnSettingsContext } from '@shared/containers/ProjectTreeTable/context/ColumnSettingsContext'\nimport { useProjectTableContext } from '@shared/containers/ProjectTreeTable/context/ProjectTableContext'\nimport { Button, ButtonProps } from '@ynput/ayon-react-components'\nimport { FC } from 'react'\nimport styled from 'styled-components'\nimport type { SettingHighlightedId } from '@shared/context/SettingsPanelContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { useSettingsPanel } from '@shared/context/SettingsPanelContext'\nimport { SettingsPanel } from '@shared/components/SettingsPanel/SettingsPanel'\nimport type { SettingConfig } from '@shared/components/SettingsPanel/SettingsPanel'\nimport { ColumnsSettingsWithContext } from './ColumnsSettings'\nimport { SizeSlider } from '../SizeSlider'\nimport { useGroupBySettings } from '@shared/containers/ProjectTreeTable/hooks/useGroupBySettings'\nimport { useSortBySettings } from '@shared/containers/ProjectTreeTable/hooks/useSortBySettings'\n\nconst StyledCustomizeButton = styled(Button)`\n min-width: 120px;\n`\n\ninterface Props extends ButtonProps {\n defaultSelected?: string | null\n}\n\nexport const CustomizeButton = ({ defaultSelected, className, ...props }: Props) => {\n const { togglePanel, isPanelOpen } = useSettingsPanel()\n\n return (\n <StyledCustomizeButton\n onClick={() => togglePanel(defaultSelected)}\n icon=\"settings\"\n selected={isPanelOpen}\n {...props}\n >\n Customize\n </StyledCustomizeButton>\n )\n}\n\nexport type OverviewSettingsChange = (setting: 'columns' | 'group-by', value: any) => void\n\nexport type ProjectTableSettingsProps = {\n settings?: SettingConfig[]\n extraColumns?: { value: string; label: string }[]\n hiddenColumns?: string[]\n hiddenSettings?: ('columns' | 'row-height' | 'group-by' | 'sort-by')[]\n highlighted?: SettingHighlightedId\n includeLinks?: boolean\n hideSortBy?: boolean\n order?: string[]\n scope?: string\n}\n\nexport const ProjectTableSettings: FC<ProjectTableSettingsProps> = ({\n settings = [],\n extraColumns = [],\n hiddenColumns = [],\n hiddenSettings = [],\n highlighted,\n includeLinks = true,\n hideSortBy = false,\n order,\n scope,\n}) => {\n const { ...projectInfo } = useProjectContext()\n const { attribFields, scopes } = useProjectTableContext()\n const {\n columnVisibility,\n defaultColumnVisibility,\n rowHeight = 34,\n updateRowHeight,\n updateRowHeightWithPersistence,\n } = useColumnSettingsContext()\n\n const columns: {\n value: string\n label: string\n hidden?: boolean\n }[] = [\n {\n value: 'thumbnail',\n label: getColumnLabel('thumbnail'),\n },\n {\n value: 'name',\n label: getNameColumnLabel(scopes),\n },\n {\n value: ENTITY_COLUMN_IDS.folder,\n label: getColumnLabel(ENTITY_COLUMN_IDS.folder),\n },\n {\n value: ENTITY_COLUMN_IDS.task,\n label: getColumnLabel(ENTITY_COLUMN_IDS.task),\n hidden: !['product', 'version'].some((scope) => scopes.includes(scope)),\n },\n {\n value: 'assignees',\n label: getColumnLabel('assignees'),\n hidden: !scopes.includes('task'),\n },\n {\n value: 'product',\n label: getColumnLabel('product'),\n hidden: !['product', 'version'].some((scope) => scopes.includes(scope)),\n },\n {\n value: 'entityType',\n label: getColumnLabel('entityType'),\n },\n {\n value: 'status',\n label: getColumnLabel('status'),\n },\n {\n value: 'subType',\n label: getColumnLabel('subType', scopes),\n },\n {\n value: 'tags',\n label: getColumnLabel('tags'),\n },\n {\n value: 'createdAt',\n label: getColumnLabel('createdAt'),\n },\n {\n value: 'updatedAt',\n label: getColumnLabel('updatedAt'),\n },\n {\n value: 'subtasks',\n label: getColumnLabel('subtasks'),\n hidden: !scopes.includes('task'),\n },\n {\n value: 'comments',\n label: getColumnLabel('comments'),\n hidden: !scopes.some((scope) => ['task', 'version', 'product', 'folder'].includes(scope)),\n },\n ...attribFields\n .filter((field) => field.scope?.some((scope) => scopes.includes(scope)))\n .map((field) => ({\n value: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ...(projectInfo?.linkTypes && includeLinks\n ? projectInfo.linkTypes\n .filter((link) => [link.inputType, link.outputType].some((type) => scopes.includes(type)))\n .flatMap((link) => [\n {\n value: getLinkColumnId(link, 'in'),\n label: getLinkLabel(link, 'in'),\n },\n {\n value: getLinkColumnId(link, 'out'),\n label: getLinkLabel(link, 'out'),\n },\n ])\n : []),\n ...extraColumns,\n ]\n\n const visibleColumns = columns.filter(\n (column) => !column.hidden && !hiddenColumns.includes(column.value),\n )\n\n const visibleCount = visibleColumns.filter((column) =>\n checkColumnVisibility(columnVisibility, column.value, defaultColumnVisibility),\n ).length\n\n const groupBySettings = useGroupBySettings({ scope })\n const sortBySettings = useSortBySettings(columns)\n\n const defaultSettings: (SettingConfig | undefined | null)[] = [\n {\n id: 'columns',\n title: 'Columns',\n icon: 'view_column',\n preview: `${visibleCount}/${visibleColumns.length}`,\n component: <ColumnsSettingsWithContext columns={visibleColumns} highlighted={highlighted} />,\n },\n hideSortBy ? null : sortBySettings,\n groupBySettings,\n {\n id: 'row-height',\n component: (\n <SizeSlider\n value={rowHeight}\n onChange={updateRowHeight}\n onChangeComplete={updateRowHeightWithPersistence}\n title=\"Row height\"\n id=\"row-height-slider\"\n />\n ),\n },\n ].filter(Boolean)\n\n // Merge extra settings: replace defaults with matching ids, append the rest\n settings.forEach((setting) => {\n if (hiddenSettings.includes(setting.id as any)) return\n const existingIndex = defaultSettings.findIndex((s) => s && 'id' in s && s.id === setting.id)\n if (existingIndex !== -1) {\n defaultSettings[existingIndex] = setting\n } else {\n defaultSettings.push(setting)\n }\n })\n return <SettingsPanel settings={defaultSettings as SettingConfig[]} order={order} />\n}\n"],"names":["StyledCustomizeButton","styled","Button","CustomizeButton","defaultSelected","className","props","togglePanel","isPanelOpen","useSettingsPanel","jsx","ProjectTableSettings","settings","extraColumns","hiddenColumns","hiddenSettings","highlighted","includeLinks","hideSortBy","order","scope","projectInfo","useProjectContext","attribFields","scopes","useProjectTableContext","columnVisibility","defaultColumnVisibility","rowHeight","updateRowHeight","updateRowHeightWithPersistence","useColumnSettingsContext","columns","getColumnLabel","getNameColumnLabel","ENTITY_COLUMN_IDS","field","link","type","getLinkColumnId","getLinkLabel","visibleColumns","column","visibleCount","checkColumnVisibility","groupBySettings","useGroupBySettings","sortBySettings","useSortBySettings","defaultSettings","ColumnsSettingsWithContext","SizeSlider","setting","existingIndex","s","SettingsPanel"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemotePageWrapper.cjs.js","sources":["../../../../../src/components/RemotePage/RemotePageWrapper.tsx"],"sourcesContent":["// this is used to render a remote page and provide it with all the props it needs\n// NOTE: it must be wrapped with ViewsProvider someone (probably already by WithViews hoc)\nimport type { GenericViewModel } from '@shared/api'\nimport { useDetailsPanelEntityContext } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport { useViewsContext } from '@shared/containers/Views/context/ViewsContext'\nimport {\n updateViewSettings,\n useViewUpdateHelper,\n} from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { DetailsPanelEntityContextType } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport type { UpdateViewSettingsFn } from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { ViewsContextValue } from '@shared/containers/Views/context/ViewsContext'\nimport type { DetailsPanelContextType } from '@shared/context/DetailsPanelContext'\nimport { FC } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { toast } from 'react-toastify'\n\nexport type RouterTypes = {\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n}\n\ninterface ViewsWithReportsSettings extends ViewsContextValue {\n viewSettings: GenericViewModel['settings'] | undefined\n settings: GenericViewModel['settings'] | undefined // for backwards compatibility (reports)\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport interface RemotePageContext {\n detailsPanel?: DetailsPanelContextType\n detailsPanelEntity?: DetailsPanelEntityContextType\n}\n\nexport interface RemotePageProps {\n router: RouterTypes\n toast?: any\n views?: ViewsWithReportsSettings\n context?: RemotePageContext\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // project specific\n projectName?: string\n state?: any\n}\n\nexport interface RemotePageWrapperProps {\n Component: FC<RemotePageProps>\n // project specific\n projectName?: string\n state?: any\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n}\n\nexport const RemotePageWrapper: FC<RemotePageWrapperProps> = ({\n Component,\n projectName,\n state,\n dispatch,\n useSelector,\n onOpenImage,\n onGoToFrame,\n onOpenViewer,\n onUpdateEntity,\n ...props\n}) => {\n const views = useViewsContext()\n const { onCreateView, getLatestSettings, markCacheDirty } = useViewUpdateHelper()\n\n return (\n <Component\n router={{ useParams, useNavigate, useLocation, useSearchParams }}\n projectName={projectName}\n views={{\n ...views,\n settings: views.viewSettings,\n updateViewSettings: (...args) =>\n updateViewSettings(...args, views, onCreateView, getLatestSettings, markCacheDirty),\n }}\n context={{}}\n state={state}\n dispatch={dispatch}\n useSelector={useSelector}\n onOpenImage={onOpenImage}\n onGoToFrame={onGoToFrame}\n onOpenViewer={onOpenViewer}\n onUpdateEntity={onUpdateEntity}\n toast={toast}\n {...props}\n />\n )\n}\n"],"names":["RemotePageWrapper","Component","projectName","state","dispatch","useSelector","onOpenImage","onGoToFrame","onOpenViewer","onUpdateEntity","props","views","useViewsContext","onCreateView","getLatestSettings","markCacheDirty","useViewUpdateHelper","jsx","useParams","useNavigate","useLocation","useSearchParams","args","updateViewSettings","toast"],"mappings":"uUAgEaA,EAAgD,CAAC,CAC5D,UAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,eAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAQC,EAAAA,gBAAA,EACR,CAAE,aAAAC,EAAc,kBAAAC,EAAmB,eAAAC,CAAA,EAAmBC,EAAAA,oBAAA,EAE5D,OACEC,EAAAA,kBAAAA,IAAChB,EAAA,CACC,OAAQ,CAAA,UAAEiB,EAAAA,UAAA,YAAWC,cAAA,YAAaC,EAAAA,4BAAaC,EAAAA,eAAA,EAC/C,YAAAnB,EACA,MAAO,CACL,GAAGS,EACH,SAAUA,EAAM,aAChB,mBAAoB,IAAIW,IACtBC,EAAAA,mBAAmB,GAAGD,EAAMX,EAAOE,EAAcC,EAAmBC,CAAc,CAAA,EAEtF,QAAS,CAAA,EACT,MAAAZ,EACA,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,eAAAC,EAAA,MACAe,EAAAA,MACC,GAAGd,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"RemotePageWrapper.cjs.js","sources":["../../../../../src/components/RemotePage/RemotePageWrapper.tsx"],"sourcesContent":["// this is used to render a remote page and provide it with all the props it needs\n// NOTE: it must be wrapped with ViewsProvider someone (probably already by WithViews hoc)\nimport type { GenericViewModel } from '@shared/api'\nimport { useViewsContext } from '@shared/containers/Views/context/ViewsContext'\nimport {\n updateViewSettings,\n useViewUpdateHelper,\n} from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { DetailsPanelEntityContextType } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport type { UpdateViewSettingsFn } from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { ViewsContextValue } from '@shared/containers/Views/context/ViewsContext'\nimport type { DetailsPanelContextType } from '@shared/context/DetailsPanelContext'\nimport { FC } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { toast } from 'react-toastify'\n\nexport type RouterTypes = {\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n}\n\ninterface ViewsWithReportsSettings extends ViewsContextValue {\n viewSettings: GenericViewModel['settings'] | undefined\n settings: GenericViewModel['settings'] | undefined // for backwards compatibility (reports)\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport interface RemotePageContext {\n detailsPanel?: DetailsPanelContextType\n detailsPanelEntity?: DetailsPanelEntityContextType\n}\n\nexport interface RemotePageProps {\n router: RouterTypes\n toast?: any\n views?: ViewsWithReportsSettings\n context?: RemotePageContext\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // project specific\n projectName?: string\n state?: any\n}\n\nexport interface RemotePageWrapperProps {\n Component: FC<RemotePageProps>\n // project specific\n projectName?: string\n state?: any\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n}\n\nexport const RemotePageWrapper: FC<RemotePageWrapperProps> = ({\n Component,\n projectName,\n state,\n dispatch,\n useSelector,\n onOpenImage,\n onGoToFrame,\n onOpenViewer,\n onUpdateEntity,\n ...props\n}) => {\n const views = useViewsContext()\n const { onCreateView, getLatestSettings, markCacheDirty } = useViewUpdateHelper()\n\n return (\n <Component\n router={{ useParams, useNavigate, useLocation, useSearchParams }}\n projectName={projectName}\n views={{\n ...views,\n settings: views.viewSettings,\n updateViewSettings: (...args) =>\n updateViewSettings(...args, views, onCreateView, getLatestSettings, markCacheDirty),\n }}\n context={{}}\n state={state}\n dispatch={dispatch}\n useSelector={useSelector}\n onOpenImage={onOpenImage}\n onGoToFrame={onGoToFrame}\n onOpenViewer={onOpenViewer}\n onUpdateEntity={onUpdateEntity}\n toast={toast}\n {...props}\n />\n )\n}\n"],"names":["RemotePageWrapper","Component","projectName","state","dispatch","useSelector","onOpenImage","onGoToFrame","onOpenViewer","onUpdateEntity","props","views","useViewsContext","onCreateView","getLatestSettings","markCacheDirty","useViewUpdateHelper","jsx","useParams","useNavigate","useLocation","useSearchParams","args","updateViewSettings","toast"],"mappings":"uUA+DaA,EAAgD,CAAC,CAC5D,UAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,eAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAQC,EAAAA,gBAAA,EACR,CAAE,aAAAC,EAAc,kBAAAC,EAAmB,eAAAC,CAAA,EAAmBC,EAAAA,oBAAA,EAE5D,OACEC,EAAAA,kBAAAA,IAAChB,EAAA,CACC,OAAQ,CAAA,UAAEiB,EAAAA,UAAA,YAAWC,cAAA,YAAaC,EAAAA,4BAAaC,EAAAA,eAAA,EAC/C,YAAAnB,EACA,MAAO,CACL,GAAGS,EACH,SAAUA,EAAM,aAChB,mBAAoB,IAAIW,IACtBC,EAAAA,mBAAmB,GAAGD,EAAMX,EAAOE,EAAcC,EAAmBC,CAAc,CAAA,EAEtF,QAAS,CAAA,EACT,MAAAZ,EACA,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,eAAAC,EAAA,MACAe,EAAAA,MACC,GAAGd,CAAA,CAAA,CAGV"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemotePageWrapper.es.js","sources":["../../../../../src/components/RemotePage/RemotePageWrapper.tsx"],"sourcesContent":["// this is used to render a remote page and provide it with all the props it needs\n// NOTE: it must be wrapped with ViewsProvider someone (probably already by WithViews hoc)\nimport type { GenericViewModel } from '@shared/api'\nimport { useDetailsPanelEntityContext } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport { useViewsContext } from '@shared/containers/Views/context/ViewsContext'\nimport {\n updateViewSettings,\n useViewUpdateHelper,\n} from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { DetailsPanelEntityContextType } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport type { UpdateViewSettingsFn } from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { ViewsContextValue } from '@shared/containers/Views/context/ViewsContext'\nimport type { DetailsPanelContextType } from '@shared/context/DetailsPanelContext'\nimport { FC } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { toast } from 'react-toastify'\n\nexport type RouterTypes = {\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n}\n\ninterface ViewsWithReportsSettings extends ViewsContextValue {\n viewSettings: GenericViewModel['settings'] | undefined\n settings: GenericViewModel['settings'] | undefined // for backwards compatibility (reports)\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport interface RemotePageContext {\n detailsPanel?: DetailsPanelContextType\n detailsPanelEntity?: DetailsPanelEntityContextType\n}\n\nexport interface RemotePageProps {\n router: RouterTypes\n toast?: any\n views?: ViewsWithReportsSettings\n context?: RemotePageContext\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // project specific\n projectName?: string\n state?: any\n}\n\nexport interface RemotePageWrapperProps {\n Component: FC<RemotePageProps>\n // project specific\n projectName?: string\n state?: any\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n}\n\nexport const RemotePageWrapper: FC<RemotePageWrapperProps> = ({\n Component,\n projectName,\n state,\n dispatch,\n useSelector,\n onOpenImage,\n onGoToFrame,\n onOpenViewer,\n onUpdateEntity,\n ...props\n}) => {\n const views = useViewsContext()\n const { onCreateView, getLatestSettings, markCacheDirty } = useViewUpdateHelper()\n\n return (\n <Component\n router={{ useParams, useNavigate, useLocation, useSearchParams }}\n projectName={projectName}\n views={{\n ...views,\n settings: views.viewSettings,\n updateViewSettings: (...args) =>\n updateViewSettings(...args, views, onCreateView, getLatestSettings, markCacheDirty),\n }}\n context={{}}\n state={state}\n dispatch={dispatch}\n useSelector={useSelector}\n onOpenImage={onOpenImage}\n onGoToFrame={onGoToFrame}\n onOpenViewer={onOpenViewer}\n onUpdateEntity={onUpdateEntity}\n toast={toast}\n {...props}\n />\n )\n}\n"],"names":["RemotePageWrapper","Component","projectName","state","dispatch","useSelector","onOpenImage","onGoToFrame","onOpenViewer","onUpdateEntity","props","views","useViewsContext","onCreateView","getLatestSettings","markCacheDirty","useViewUpdateHelper","jsx","useParams","useNavigate","useLocation","useSearchParams","args","updateViewSettings","toast"],"mappings":";;;;;AAgEO,MAAMA,IAAgD,CAAC;AAAA,EAC5D,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAQC,EAAA,GACR,EAAE,cAAAC,GAAc,mBAAAC,GAAmB,gBAAAC,EAAA,IAAmBC,EAAA;AAE5D,SACEC,gBAAAA,EAAAA;AAAAA,IAAChB;AAAA,IAAA;AAAA,MACC,QAAQ,EAAE,WAAAiB,GAAW,aAAAC,GAAa,aAAAC,GAAa,iBAAAC,EAAA;AAAA,MAC/C,aAAAnB;AAAA,MACA,OAAO;AAAA,QACL,GAAGS;AAAA,QACH,UAAUA,EAAM;AAAA,QAChB,oBAAoB,IAAIW,MACtBC,EAAmB,GAAGD,GAAMX,GAAOE,GAAcC,GAAmBC,CAAc;AAAA,MAAA;AAAA,MAEtF,SAAS,CAAA;AAAA,MACT,OAAAZ;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,OAAAe;AAAA,MACC,GAAGd;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"RemotePageWrapper.es.js","sources":["../../../../../src/components/RemotePage/RemotePageWrapper.tsx"],"sourcesContent":["// this is used to render a remote page and provide it with all the props it needs\n// NOTE: it must be wrapped with ViewsProvider someone (probably already by WithViews hoc)\nimport type { GenericViewModel } from '@shared/api'\nimport { useViewsContext } from '@shared/containers/Views/context/ViewsContext'\nimport {\n updateViewSettings,\n useViewUpdateHelper,\n} from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { DetailsPanelEntityContextType } from '@shared/containers/ProjectTreeTable/context/DetailsPanelEntityContext'\nimport type { UpdateViewSettingsFn } from '@shared/containers/Views/utils/viewUpdateHelper'\nimport type { ViewsContextValue } from '@shared/containers/Views/context/ViewsContext'\nimport type { DetailsPanelContextType } from '@shared/context/DetailsPanelContext'\nimport { FC } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { toast } from 'react-toastify'\n\nexport type RouterTypes = {\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n}\n\ninterface ViewsWithReportsSettings extends ViewsContextValue {\n viewSettings: GenericViewModel['settings'] | undefined\n settings: GenericViewModel['settings'] | undefined // for backwards compatibility (reports)\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport interface RemotePageContext {\n detailsPanel?: DetailsPanelContextType\n detailsPanelEntity?: DetailsPanelEntityContextType\n}\n\nexport interface RemotePageProps {\n router: RouterTypes\n toast?: any\n views?: ViewsWithReportsSettings\n context?: RemotePageContext\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // project specific\n projectName?: string\n state?: any\n}\n\nexport interface RemotePageWrapperProps {\n Component: FC<RemotePageProps>\n // project specific\n projectName?: string\n state?: any\n dispatch?: any\n useSelector?: any\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n}\n\nexport const RemotePageWrapper: FC<RemotePageWrapperProps> = ({\n Component,\n projectName,\n state,\n dispatch,\n useSelector,\n onOpenImage,\n onGoToFrame,\n onOpenViewer,\n onUpdateEntity,\n ...props\n}) => {\n const views = useViewsContext()\n const { onCreateView, getLatestSettings, markCacheDirty } = useViewUpdateHelper()\n\n return (\n <Component\n router={{ useParams, useNavigate, useLocation, useSearchParams }}\n projectName={projectName}\n views={{\n ...views,\n settings: views.viewSettings,\n updateViewSettings: (...args) =>\n updateViewSettings(...args, views, onCreateView, getLatestSettings, markCacheDirty),\n }}\n context={{}}\n state={state}\n dispatch={dispatch}\n useSelector={useSelector}\n onOpenImage={onOpenImage}\n onGoToFrame={onGoToFrame}\n onOpenViewer={onOpenViewer}\n onUpdateEntity={onUpdateEntity}\n toast={toast}\n {...props}\n />\n )\n}\n"],"names":["RemotePageWrapper","Component","projectName","state","dispatch","useSelector","onOpenImage","onGoToFrame","onOpenViewer","onUpdateEntity","props","views","useViewsContext","onCreateView","getLatestSettings","markCacheDirty","useViewUpdateHelper","jsx","useParams","useNavigate","useLocation","useSearchParams","args","updateViewSettings","toast"],"mappings":";;;;;AA+DO,MAAMA,IAAgD,CAAC;AAAA,EAC5D,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAQC,EAAA,GACR,EAAE,cAAAC,GAAc,mBAAAC,GAAmB,gBAAAC,EAAA,IAAmBC,EAAA;AAE5D,SACEC,gBAAAA,EAAAA;AAAAA,IAAChB;AAAA,IAAA;AAAA,MACC,QAAQ,EAAE,WAAAiB,GAAW,aAAAC,GAAa,aAAAC,GAAa,iBAAAC,EAAA;AAAA,MAC/C,aAAAnB;AAAA,MACA,OAAO;AAAA,QACL,GAAGS;AAAA,QACH,UAAUA,EAAM;AAAA,QAChB,oBAAoB,IAAIW,MACtBC,EAAmB,GAAGD,GAAMX,GAAOE,GAAcC,GAAmBC,CAAc;AAAA,MAAA;AAAA,MAEtF,SAAS,CAAA;AAAA,MACT,OAAAZ;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,OAAAe;AAAA,MACC,GAAGd;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("../../../../_virtual/jsx-runtime.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");const t=require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");const s=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");const a=({SubtasksManager:r,...e})=>{const[u]=t.useUpdateSubtasksMutation(),{data:i=[]}=s.useGetUsersAssigneeQuery({projectName:e.projectName});return q.jsxRuntimeExports.jsx(r,{...e,updateSubtasks:u,users:i,onNotFound:e.onNotFound})};exports.SubtasksManagerWrapper=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../_virtual/jsx-runtime.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");const s=require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");const o=require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("react");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/UriContext.cjs.js");require("../../context/DetailsPanelContextInstance.cjs.js");require("lodash");require("react-toastify");require("uuid");require("../../util/pubsub.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const n=require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContextInstance.cjs.js");require("../../context/EntityUpdatesContextInstance.cjs.js");require("react-redux");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("@ynput/ayon-react-components");require("../../containers/Views/context/ViewsContextInstance.cjs.js");require("../../context/DeleteEntitiesContext.cjs.js");const a=({SubtasksManager:r,...e})=>{const[u]=s.useUpdateSubtasksMutation(),{data:i=[]}=o.useGetUsersAssigneeQuery({projectName:e.projectName}),q=n.useProjectContext();return t.jsxRuntimeExports.jsx(r,{...e,updateSubtasks:u,users:i,onNotFound:e.onNotFound,projectContext:q})};exports.SubtasksManagerWrapper=a;
2
2
  //# sourceMappingURL=SubtasksManagerWrapper.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubtasksManagerWrapper.cjs.js","sources":["../../../../../src/components/SubtasksManager/SubtasksManagerWrapper.tsx"],"sourcesContent":["// Wraps the SubtasksManager remote component and provides it with required props from context and api\nimport {\n QueryFilter,\n SubTaskNode,\n useGetUsersAssigneeQuery,\n UserModel,\n useUpdateSubtasksMutation,\n} from '@shared/api'\nimport { useNavigate } from 'react-router'\n\ntype UpdateSubtasksMutation = ReturnType<typeof useUpdateSubtasksMutation>[0]\n\nexport interface SubtasksManagerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n subtasks: SubTaskNode[]\n projectName: string\n taskId: string\n selectedSubtaskIds?: string[]\n users: UserModel[]\n title?: string | null\n filters?: QueryFilter\n actionsPortalClassName?: string\n onClose?: () => void\n onSelectSubtasks?: (subtaskIds: string[]) => void\n updateSubtasks: UpdateSubtasksMutation\n useNavigate: typeof useNavigate\n onNotFound?: () => void // when remote module is not found\n}\n\nexport type SubtasksManagerWrapperProps = Omit<SubtasksManagerProps, 'updateSubtasks' | 'users'> & {\n SubtasksManager: React.ComponentType<SubtasksManagerProps>\n}\n\nexport const SubtasksManagerWrapper = ({\n SubtasksManager,\n ...props\n}: SubtasksManagerWrapperProps) => {\n const [updateSubtasks] = useUpdateSubtasksMutation()\n const { data: users = [] } = useGetUsersAssigneeQuery({ projectName: props.projectName })\n\n return (\n <SubtasksManager\n {...props}\n updateSubtasks={updateSubtasks}\n users={users}\n onNotFound={props.onNotFound}\n />\n )\n}\n"],"names":["SubtasksManagerWrapper","SubtasksManager","props","updateSubtasks","useUpdateSubtasksMutation","users","useGetUsersAssigneeQuery","jsx"],"mappings":"ktKAgCO,MAAMA,EAAyB,CAAC,CACrC,gBAAAC,EACA,GAAGC,CACL,IAAmC,CACjC,KAAM,CAACC,CAAc,EAAIC,4BAAA,EACnB,CAAE,KAAMC,EAAQ,EAAC,EAAMC,EAAAA,yBAAyB,CAAE,YAAaJ,EAAM,YAAa,EAExF,OACEK,EAAAA,kBAAAA,IAACN,EAAA,CACE,GAAGC,EACJ,eAAAC,EACA,MAAAE,EACA,WAAYH,EAAM,UAAA,CAAA,CAGxB"}
1
+ {"version":3,"file":"SubtasksManagerWrapper.cjs.js","sources":["../../../../../src/components/SubtasksManager/SubtasksManagerWrapper.tsx"],"sourcesContent":["// Wraps the SubtasksManager remote component and provides it with required props from context and api\nimport {\n QueryFilter,\n SubTaskNode,\n useGetUsersAssigneeQuery,\n UserModel,\n useUpdateSubtasksMutation,\n} from '@shared/api'\nimport { ProjectContextValue, useProjectContext } from '@shared/context'\nimport { useNavigate } from 'react-router-dom'\n\ntype UpdateSubtasksMutation = ReturnType<typeof useUpdateSubtasksMutation>[0]\n\nexport interface SubtasksManagerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n subtasks: SubTaskNode[]\n projectName: string\n taskId: string\n folderId?: string // used for creating products\n selectedSubtaskIds?: string[]\n users: UserModel[]\n title?: string | null\n filters?: QueryFilter\n actionsPortalClassName?: string\n projectContext: ProjectContextValue\n onClose?: () => void\n onSelectSubtasks?: (subtaskIds: string[]) => void\n updateSubtasks: UpdateSubtasksMutation\n useNavigate: typeof useNavigate\n onNotFound?: () => void // when remote module is not found\n}\n\nexport type SubtasksManagerWrapperProps = Omit<SubtasksManagerProps, 'updateSubtasks' | 'users'> & {\n SubtasksManager: React.ComponentType<SubtasksManagerProps>\n}\n\nexport const SubtasksManagerWrapper = ({\n SubtasksManager,\n ...props\n}: SubtasksManagerWrapperProps) => {\n const [updateSubtasks] = useUpdateSubtasksMutation()\n const { data: users = [] } = useGetUsersAssigneeQuery({ projectName: props.projectName })\n const projectContext = useProjectContext()\n\n return (\n <SubtasksManager\n {...props}\n updateSubtasks={updateSubtasks}\n users={users}\n onNotFound={props.onNotFound}\n projectContext={projectContext}\n />\n )\n}\n"],"names":["SubtasksManagerWrapper","SubtasksManager","props","updateSubtasks","useUpdateSubtasksMutation","users","useGetUsersAssigneeQuery","projectContext","useProjectContext","jsx"],"mappings":"4iNAmCO,MAAMA,EAAyB,CAAC,CACrC,gBAAAC,EACA,GAAGC,CACL,IAAmC,CACjC,KAAM,CAACC,CAAc,EAAIC,4BAAA,EACnB,CAAE,KAAMC,EAAQ,EAAC,EAAMC,EAAAA,yBAAyB,CAAE,YAAaJ,EAAM,YAAa,EAClFK,EAAiBC,EAAAA,kBAAA,EAEvB,OACEC,EAAAA,kBAAAA,IAACR,EAAA,CACE,GAAGC,EACJ,eAAAC,EACA,MAAAE,EACA,WAAYH,EAAM,WAClB,eAAAK,CAAA,CAAA,CAGN"}
@@ -1,4 +1,4 @@
1
- import { j as p } from "../../../../_virtual/jsx-runtime.es.js";
1
+ import { j as i } from "../../../../_virtual/jsx-runtime.es.js";
2
2
  import "../../api/base/client.es.js";
3
3
  import "../../api/generated/graphql.es.js";
4
4
  import "../../api/generated/graphqlLinks.es.js";
@@ -85,10 +85,10 @@ import "../../api/queries/review/updateReview.es.js";
85
85
  import "../../api/queries/share/share.es.js";
86
86
  import "../../api/queries/system/getSystem.es.js";
87
87
  import "../../api/queries/tasks/getTasks.es.js";
88
- import { useUpdateSubtasksMutation as i } from "../../api/queries/tasks/updateTasks.es.js";
88
+ import { useUpdateSubtasksMutation as e } from "../../api/queries/tasks/updateTasks.es.js";
89
89
  import "../../api/queries/teams/getTeams.es.js";
90
90
  import "../../api/queries/userDashboard/getUserDashboard.es.js";
91
- import { useGetUsersAssigneeQuery as e } from "../../api/queries/users/getUsers.es.js";
91
+ import { useGetUsersAssigneeQuery as s } from "../../api/queries/users/getUsers.es.js";
92
92
  import "../../api/queries/users/updateUsers.es.js";
93
93
  import "../../api/queries/users/guests.es.js";
94
94
  import "../../api/queries/versions/updateVersions.es.js";
@@ -96,22 +96,53 @@ import "../../api/queries/views/getViews.es.js";
96
96
  import "../../api/queries/views/updateViews.es.js";
97
97
  import "../../api/queries/watchers/getWatchers.es.js";
98
98
  import "../../api/queries/uris/getUris.es.js";
99
- const Zt = ({
99
+ import "../../context/RemoteModulesContext.es.js";
100
+ import "react";
101
+ import "../../../../_virtual/runtime.es.js";
102
+ import "../../../../_virtual/semver.es.js";
103
+ import "../../context/PowerpackContextInstance.es.js";
104
+ import "../../context/UriContext.es.js";
105
+ import "../../context/DetailsPanelContextInstance.es.js";
106
+ import "lodash";
107
+ import "react-toastify";
108
+ import "uuid";
109
+ import "../../util/pubsub.es.js";
110
+ import "../../context/SubtasksModulesContextInstance.es.js";
111
+ import "../../context/ThumbnailUploaderContext.es.js";
112
+ import "../../context/SettingsPanelContext.es.js";
113
+ import "../../context/pip/PiPProvider.es.js";
114
+ import "react-dom";
115
+ import "../../context/pip/PiPWrapper.es.js";
116
+ import "../../context/AddonProjectContext.es.js";
117
+ import "../../context/AddonContext.es.js";
118
+ import "../../context/MenuContext.es.js";
119
+ import "../../context/WebsocketContext.es.js";
120
+ import "../../context/GlobalContext.es.js";
121
+ import { useProjectContext as n } from "../../context/ProjectContext.es.js";
122
+ import "../../context/ProjectFoldersContextInstance.es.js";
123
+ import "../../context/EntityUpdatesContextInstance.es.js";
124
+ import "react-redux";
125
+ import "../../containers/Views/ViewsMenu/ViewsMenu.es.js";
126
+ import "@ynput/ayon-react-components";
127
+ import "../../containers/Views/context/ViewsContextInstance.es.js";
128
+ import "../../context/DeleteEntitiesContext.es.js";
129
+ const Qo = ({
100
130
  SubtasksManager: o,
101
131
  ...t
102
132
  }) => {
103
- const [r] = i(), { data: m = [] } = e({ projectName: t.projectName });
104
- return /* @__PURE__ */ p.jsx(
133
+ const [r] = e(), { data: m = [] } = s({ projectName: t.projectName }), p = n();
134
+ return /* @__PURE__ */ i.jsx(
105
135
  o,
106
136
  {
107
137
  ...t,
108
138
  updateSubtasks: r,
109
139
  users: m,
110
- onNotFound: t.onNotFound
140
+ onNotFound: t.onNotFound,
141
+ projectContext: p
111
142
  }
112
143
  );
113
144
  };
114
145
  export {
115
- Zt as SubtasksManagerWrapper
146
+ Qo as SubtasksManagerWrapper
116
147
  };
117
148
  //# sourceMappingURL=SubtasksManagerWrapper.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubtasksManagerWrapper.es.js","sources":["../../../../../src/components/SubtasksManager/SubtasksManagerWrapper.tsx"],"sourcesContent":["// Wraps the SubtasksManager remote component and provides it with required props from context and api\nimport {\n QueryFilter,\n SubTaskNode,\n useGetUsersAssigneeQuery,\n UserModel,\n useUpdateSubtasksMutation,\n} from '@shared/api'\nimport { useNavigate } from 'react-router'\n\ntype UpdateSubtasksMutation = ReturnType<typeof useUpdateSubtasksMutation>[0]\n\nexport interface SubtasksManagerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n subtasks: SubTaskNode[]\n projectName: string\n taskId: string\n selectedSubtaskIds?: string[]\n users: UserModel[]\n title?: string | null\n filters?: QueryFilter\n actionsPortalClassName?: string\n onClose?: () => void\n onSelectSubtasks?: (subtaskIds: string[]) => void\n updateSubtasks: UpdateSubtasksMutation\n useNavigate: typeof useNavigate\n onNotFound?: () => void // when remote module is not found\n}\n\nexport type SubtasksManagerWrapperProps = Omit<SubtasksManagerProps, 'updateSubtasks' | 'users'> & {\n SubtasksManager: React.ComponentType<SubtasksManagerProps>\n}\n\nexport const SubtasksManagerWrapper = ({\n SubtasksManager,\n ...props\n}: SubtasksManagerWrapperProps) => {\n const [updateSubtasks] = useUpdateSubtasksMutation()\n const { data: users = [] } = useGetUsersAssigneeQuery({ projectName: props.projectName })\n\n return (\n <SubtasksManager\n {...props}\n updateSubtasks={updateSubtasks}\n users={users}\n onNotFound={props.onNotFound}\n />\n )\n}\n"],"names":["SubtasksManagerWrapper","SubtasksManager","props","updateSubtasks","useUpdateSubtasksMutation","users","useGetUsersAssigneeQuery","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,MAAMA,KAAyB,CAAC;AAAA,EACrC,iBAAAC;AAAA,EACA,GAAGC;AACL,MAAmC;AACjC,QAAM,CAACC,CAAc,IAAIC,EAAA,GACnB,EAAE,MAAMC,IAAQ,GAAC,IAAMC,EAAyB,EAAE,aAAaJ,EAAM,aAAa;AAExF,SACEK,gBAAAA,EAAAA;AAAAA,IAACN;AAAA,IAAA;AAAA,MACE,GAAGC;AAAA,MACJ,gBAAAC;AAAA,MACA,OAAAE;AAAA,MACA,YAAYH,EAAM;AAAA,IAAA;AAAA,EAAA;AAGxB;"}
1
+ {"version":3,"file":"SubtasksManagerWrapper.es.js","sources":["../../../../../src/components/SubtasksManager/SubtasksManagerWrapper.tsx"],"sourcesContent":["// Wraps the SubtasksManager remote component and provides it with required props from context and api\nimport {\n QueryFilter,\n SubTaskNode,\n useGetUsersAssigneeQuery,\n UserModel,\n useUpdateSubtasksMutation,\n} from '@shared/api'\nimport { ProjectContextValue, useProjectContext } from '@shared/context'\nimport { useNavigate } from 'react-router-dom'\n\ntype UpdateSubtasksMutation = ReturnType<typeof useUpdateSubtasksMutation>[0]\n\nexport interface SubtasksManagerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n subtasks: SubTaskNode[]\n projectName: string\n taskId: string\n folderId?: string // used for creating products\n selectedSubtaskIds?: string[]\n users: UserModel[]\n title?: string | null\n filters?: QueryFilter\n actionsPortalClassName?: string\n projectContext: ProjectContextValue\n onClose?: () => void\n onSelectSubtasks?: (subtaskIds: string[]) => void\n updateSubtasks: UpdateSubtasksMutation\n useNavigate: typeof useNavigate\n onNotFound?: () => void // when remote module is not found\n}\n\nexport type SubtasksManagerWrapperProps = Omit<SubtasksManagerProps, 'updateSubtasks' | 'users'> & {\n SubtasksManager: React.ComponentType<SubtasksManagerProps>\n}\n\nexport const SubtasksManagerWrapper = ({\n SubtasksManager,\n ...props\n}: SubtasksManagerWrapperProps) => {\n const [updateSubtasks] = useUpdateSubtasksMutation()\n const { data: users = [] } = useGetUsersAssigneeQuery({ projectName: props.projectName })\n const projectContext = useProjectContext()\n\n return (\n <SubtasksManager\n {...props}\n updateSubtasks={updateSubtasks}\n users={users}\n onNotFound={props.onNotFound}\n projectContext={projectContext}\n />\n )\n}\n"],"names":["SubtasksManagerWrapper","SubtasksManager","props","updateSubtasks","useUpdateSubtasksMutation","users","useGetUsersAssigneeQuery","projectContext","useProjectContext","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCO,MAAMA,KAAyB,CAAC;AAAA,EACrC,iBAAAC;AAAA,EACA,GAAGC;AACL,MAAmC;AACjC,QAAM,CAACC,CAAc,IAAIC,EAAA,GACnB,EAAE,MAAMC,IAAQ,GAAC,IAAMC,EAAyB,EAAE,aAAaJ,EAAM,aAAa,GAClFK,IAAiBC,EAAA;AAEvB,SACEC,gBAAAA,EAAAA;AAAAA,IAACR;AAAA,IAAA;AAAA,MACE,GAAGC;AAAA,MACJ,gBAAAC;AAAA,MACA,OAAAE;AAAA,MACA,YAAYH,EAAM;AAAA,MAClB,gBAAAK;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../_virtual/jsx-runtime.cjs.js"),ke=require("@ynput/ayon-react-components"),s=require("react"),ve=require("./hooks/useDetailsPanelURLSync.cjs.js"),I=require("./DetailsPanel.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const Ie=require("../../api/queries/entities/getEntityPanel.cjs.js"),we=require("../../api/queries/entities/transformDetailsPanelData.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/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/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const Ce=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js"),Fe=require("../../components/EntityPath/EntityPath.cjs.js"),Se=require("../../components/Watchers/Watchers.cjs.js"),Le=require("../../context/pip/PiPProvider.cjs.js");require("lodash");require("react-toastify");require("uuid");const Me=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");const Ue=require("../../context/ProjectContext.cjs.js"),We=require("../../context/ThumbnailUploaderContext.cjs.js"),w=require("../../context/DetailsPanelContext.cjs.js"),He=require("../../context/UriContext.cjs.js"),Oe=require("./components/DetailsPanelHeader/DetailsPanelHeader.cjs.js"),Ae=require("./components/DetailsPanelFiles/DetailsPanelFiles.cjs.js"),Be=require("./components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js"),Ge=require("./hooks/useGetEntityPath.cjs.js"),Ve=require("./helpers/getAllProjectsStatuses.cjs.js"),Qe=require("./containers/FeedWrapper.cjs.js"),_e=require("./containers/FeedContextWrapper.cjs.js"),Ke=require("./helpers/mergeProjectInfo.cjs.js"),Xe=require("./helpers/buildEntityTypeIcons.cjs.js"),ze=require("./containers/DetailsPanelSubtasks.cjs.js"),te=["product","representation"],Je=({entityType:P,entitySubTypes:j=[],entitiesData:g=[],entities:d=[],tagsOptions:re=[],disabledStatuses:ie,projectUsers:C,disabledProjectUsers:se,activeProjectUsers:F,projectsInfo:E={},projectNames:ne=[],isSlideOut:m=!1,style:Ze={},scope:p,isCompact:ue=!1,onClose:b,onWatchersUpdate:S,onOpenViewer:L,onEntityFocus:ae,onOpen:M,onUriOpen:T,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,entityListId:O,guestCategories:oe={},entityListsContext:ce})=>{const{closeSlideOut:A,openPip:le,user:B,isGuest:qe,entities:i,setEntities:R,slideOut:G,useSearchParams:de,SubtasksManager:V,useNavigate:pe}=w.useDetailsPanelContext(),{currentTab:l,setTab:x,isFeed:fe}=w.useScopedDetailsPanel(p),[$e,ye]=de(),Q=s.useRef(!1),t=i?.entityType??P,_=i?.entities??d,me=i?.entitySubTypes??j,xe=i?.entities?[]:g,f=i?.entities?i.entities.map(e=>e.projectName):ne;s.useEffect(()=>{M&&!Q.current&&(Q.current=!0,M())},[]),s.useEffect(()=>{te.includes(t)&&l!=="details"&&x("details")},[t,l,x]),s.useEffect(()=>{d.length&&i&&R(null)},[d,i,R]);const D=s.useMemo(()=>Ke(E,f),[E,f]),je=s.useMemo(()=>Xe(D),[D]);s.useEffect(()=>{l==="files"&&t!=="version"&&x("feed"),l==="subtasks"&&t!=="task"&&x("feed")},[t,l,p]);let q=_.length?_.map(e=>({id:e.id,projectName:e.projectName})):xe.map(e=>({id:e.id,projectName:e.projectName}));q=q.filter(e=>e.id);const{data:u=[],isFetching:y,isError:Ee,originalArgs:he}=Ie.useGetEntitiesDetailsPanelQuery({entityType:t,entities:q},{skip:!q.length||!we.detailsPanelEntityTypes.includes(t)});s.useEffect(()=>{m||A()},[he,m]);const N=s.useRef(null);s.useEffect(()=>{i||(N.current=null)},[i]),s.useEffect(()=>{if(!y&&(i?.source==="uri"||i?.source==="url")&&i?.entities?.length&&T){const e=i.entities[0].id;if(N.current===e)return;const r=u.find(a=>a.id===e);if(!r)return;N.current=e,T(r,i.source)}},[u,y,i,T]);const K=Ve(E),c=f[0],X=E[c]||{},o=u[0]||{},h=u[u.length-1],k=f[f.length-1],[z,Pe]=Ge({entity:o,entityType:t,projectName:c,isLoading:y}),{setEntityUri:ge,setUri:J}=He.useURIContext();s.useEffect(()=>{if(!h?.parents||!k)return;const{folderPath:e,taskName:r,versionName:a,productName:ee}=Me.extractEntityHierarchyFromParents(h.parents,t,h.name);return ge({projectName:k,folderPath:e,taskName:r,productName:ee,versionName:a}),()=>{J("")}},[u,f,t]),ve({entityData:h,project:k,activeEntityType:t,entitiesToQuery:q});const be=()=>{ye(e=>{const r=new URLSearchParams(e);return r.delete("project"),r.delete("type"),r.delete("id"),r},{replace:!0})},v=()=>{b?.(),R(null),J(""),be(),A()};s.useEffect(()=>{const e=r=>{if(r.key==="Escape"&&b){const a=r.target;if(["INPUT","TEXTAREA","SELECT"].includes(a.tagName)||a.isContentEditable||m===!1&&(a.closest("#viewer-dialog")||G))return;v()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[v,m,G]);const{requestPipWindow:Te}=Le.usePiPWindow(),Y=s.useRef(null),Z=s.useRef(null),Re=u.length===1&&t!=="representation",De=s.useMemo(()=>{const e=o?.label||o?.name||"",r=o?.parents||[],a=[c];switch(t){case"folder":case"task":case"product":a.push(r.at(-1),e);break;case"version":a.push(r.at(-2),r.at(-1),e);break;case"representation":a.push(r.at(-3),r.at(-2),r.at(-1),e);break;default:a.push(e)}return a.filter(Boolean).join(" - ")},[o,t,c]),Ne=()=>{le({entityType:t,entities:q,scope:p}),Te(500,500)},$=()=>!(f.length>1||qe&&(!O||!Object.prototype.hasOwnProperty.call(oe,B.attrib?.email||"")));return n.jsxRuntimeExports.jsx(We.ThumbnailUploadProvider,{thumbnailInputRef:Y,versionsInputRef:Z,canUploadVersion:Re,children:n.jsxRuntimeExports.jsxs(I.Panel,{className:"details-panel",children:[n.jsxRuntimeExports.jsxs(I.Toolbar,{children:[n.jsxRuntimeExports.jsx(Fe.EntityPath,{segments:z,versions:Pe,projectName:c,hideProjectName:m,isLoading:y||!z.length,entityType:t,scope:p,entityTypeIcons:je}),n.jsxRuntimeExports.jsxs(I.RightTools,{className:"right-tools",children:[n.jsxRuntimeExports.jsx(Be.DetailsPanelMoreMenu,{entityType:t,entityId:o?.id,entityIds:q.map(e=>e.id).filter(Boolean),entityLabel:De,projectName:c,selectedEntities:u.filter(e=>!!e?.id).map(e=>{const r=e.entityType||t;return{entityId:e.id,entityType:r,hasReviewables:!!e.hasReviewables,name:e.name,label:e.label,projectName:e.projectName||c,folderId:r==="task"?e.folder?.id:void 0}}),entityListsContext:ce,onOpenPip:Ne,onOpenViewer:L,productId:o?.product?.id,taskId:o?.task?.id,folderId:o?.folder?.id}),n.jsxRuntimeExports.jsx(Se.Watchers,{entities:q,entityType:t,options:C||[],onWatchersUpdate:S&&S,userName:B.name}),b&&n.jsxRuntimeExports.jsx(ke.Button,{icon:"close",variant:"text",onClick:v,"data-shortcut":"Escape"})]})]}),n.jsxRuntimeExports.jsx(Oe,{entityType:t,entitySubTypes:me,entities:u,users:C,disabledAssignees:se,disabledStatuses:ie,tagsOptions:re,isFetching:y,isCompact:ue,currentTab:l,onTabChange:x,projectInfo:D,onOpenViewer:e=>L?.(e),onEntityFocus:ae,thumbnailInputRef:Y,versionsInputRef:Z}),n.jsxRuntimeExports.jsxs(Ue.ProjectContextProvider,{projectName:c,children:[fe&&!Ee&&n.jsxRuntimeExports.jsx(Qe,{entityType:t,entities:u,activeUsers:F||[],projectInfo:X,projectName:c,disabled:!$(),scope:p,statuses:K,readOnly:!1,entityListId:O,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,isSlideOut:m}),l==="subtasks"&&t==="task"&&o?.id&&V&&n.jsxRuntimeExports.jsx(ze,{projectName:c,taskId:o.id,subtasks:o.task?.subtasks||[],SubtasksManager:V,useNavigate:pe,onNotFound:()=>x("feed")}),l==="files"&&n.jsxRuntimeExports.jsx(Ae,{entities:u,scope:p,isLoadingVersion:y}),l==="details"&&n.jsxRuntimeExports.jsx(_e,{entityType:t,entities:u,activeUsers:F||[],projectInfo:X,projectName:c,disabled:!$(),scope:p,statuses:K,readOnly:!1,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,children:n.jsxRuntimeExports.jsx(Ce.DetailsPanelDetails,{entities:u,isLoading:y})})]})]})})},Ye=({isOpen:P,entityType:j,...g})=>{const{entities:d}=w.useDetailsPanelContext();return!P&&!d||!j&&!d?null:n.jsxRuntimeExports.jsx(Je,{...g,entityType:j||d?.entityType})};exports.DetailsPanel=Ye;exports.entitiesWithoutFeed=te;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../_virtual/jsx-runtime.cjs.js"),ke=require("@ynput/ayon-react-components"),s=require("react"),ve=require("./hooks/useDetailsPanelURLSync.cjs.js"),I=require("./DetailsPanel.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const Ie=require("../../api/queries/entities/getEntityPanel.cjs.js"),we=require("../../api/queries/entities/transformDetailsPanelData.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/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/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const Ce=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js"),Fe=require("../../components/EntityPath/EntityPath.cjs.js"),Se=require("../../components/Watchers/Watchers.cjs.js"),Le=require("../../context/pip/PiPProvider.cjs.js");require("lodash");require("react-toastify");require("uuid");const Me=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");const Ue=require("../../context/ProjectContext.cjs.js"),We=require("../../context/ThumbnailUploaderContext.cjs.js"),w=require("../../context/DetailsPanelContext.cjs.js"),He=require("../../context/UriContext.cjs.js"),Oe=require("./components/DetailsPanelHeader/DetailsPanelHeader.cjs.js"),Ae=require("./components/DetailsPanelFiles/DetailsPanelFiles.cjs.js"),Be=require("./components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js"),Ge=require("./hooks/useGetEntityPath.cjs.js"),Ve=require("./helpers/getAllProjectsStatuses.cjs.js"),Qe=require("./containers/FeedWrapper.cjs.js"),_e=require("./containers/FeedContextWrapper.cjs.js"),Ke=require("./helpers/mergeProjectInfo.cjs.js"),Xe=require("./helpers/buildEntityTypeIcons.cjs.js"),ze=require("./containers/DetailsPanelSubtasks.cjs.js"),te=["product","representation"],Je=({entityType:P,entitySubTypes:j=[],entitiesData:g=[],entities:d=[],tagsOptions:re=[],disabledStatuses:ie,projectUsers:C,disabledProjectUsers:se,activeProjectUsers:F,projectsInfo:E={},projectNames:ne=[],isSlideOut:m=!1,style:Ze={},scope:p,isCompact:ue=!1,onClose:b,onWatchersUpdate:S,onOpenViewer:L,onEntityFocus:ae,onOpen:M,onUriOpen:T,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,entityListId:O,guestCategories:oe={},entityListsContext:ce})=>{const{closeSlideOut:A,openPip:le,user:B,isGuest:qe,entities:i,setEntities:R,slideOut:G,useSearchParams:de,SubtasksManager:V,useNavigate:pe}=w.useDetailsPanelContext(),{currentTab:l,setTab:x,isFeed:fe}=w.useScopedDetailsPanel(p),[$e,ye]=de(),Q=s.useRef(!1),t=i?.entityType??P,_=i?.entities??d,me=i?.entitySubTypes??j,xe=i?.entities?[]:g,f=i?.entities?i.entities.map(e=>e.projectName):ne;s.useEffect(()=>{M&&!Q.current&&(Q.current=!0,M())},[]),s.useEffect(()=>{te.includes(t)&&l!=="details"&&x("details")},[t,l,x]),s.useEffect(()=>{d.length&&i&&R(null)},[d,i,R]);const D=s.useMemo(()=>Ke(E,f),[E,f]),je=s.useMemo(()=>Xe(D),[D]);s.useEffect(()=>{l==="files"&&t!=="version"&&x("feed"),l==="subtasks"&&t!=="task"&&x("feed")},[t,l,p]);let q=_.length?_.map(e=>({id:e.id,projectName:e.projectName})):xe.map(e=>({id:e.id,projectName:e.projectName}));q=q.filter(e=>e.id);const{data:u=[],isFetching:y,isError:Ee,originalArgs:he}=Ie.useGetEntitiesDetailsPanelQuery({entityType:t,entities:q},{skip:!q.length||!we.detailsPanelEntityTypes.includes(t)});s.useEffect(()=>{m||A()},[he,m]);const N=s.useRef(null);s.useEffect(()=>{i||(N.current=null)},[i]),s.useEffect(()=>{if(!y&&(i?.source==="uri"||i?.source==="url")&&i?.entities?.length&&T){const e=i.entities[0].id;if(N.current===e)return;const r=u.find(o=>o.id===e);if(!r)return;N.current=e,T(r,i.source)}},[u,y,i,T]);const K=Ve(E),c=f[0],X=E[c]||{},a=u[0]||{},h=u[u.length-1],k=f[f.length-1],[z,Pe]=Ge({entity:a,entityType:t,projectName:c,isLoading:y}),{setEntityUri:ge,setUri:J}=He.useURIContext();s.useEffect(()=>{if(!h?.parents||!k)return;const{folderPath:e,taskName:r,versionName:o,productName:ee}=Me.extractEntityHierarchyFromParents(h.parents,t,h.name);return ge({projectName:k,folderPath:e,taskName:r,productName:ee,versionName:o}),()=>{J("")}},[u,f,t]),ve({entityData:h,project:k,activeEntityType:t,entitiesToQuery:q});const be=()=>{ye(e=>{const r=new URLSearchParams(e);return r.delete("project"),r.delete("type"),r.delete("id"),r},{replace:!0})},v=()=>{b?.(),R(null),J(""),be(),A()};s.useEffect(()=>{const e=r=>{if(r.key==="Escape"&&b){const o=r.target;if(["INPUT","TEXTAREA","SELECT"].includes(o.tagName)||o.isContentEditable||m===!1&&(o.closest("#viewer-dialog")||G))return;v()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[v,m,G]);const{requestPipWindow:Te}=Le.usePiPWindow(),Y=s.useRef(null),Z=s.useRef(null),Re=u.length===1&&t!=="representation",De=s.useMemo(()=>{const e=a?.label||a?.name||"",r=a?.parents||[],o=[c];switch(t){case"folder":case"task":case"product":o.push(r.at(-1),e);break;case"version":o.push(r.at(-2),r.at(-1),e);break;case"representation":o.push(r.at(-3),r.at(-2),r.at(-1),e);break;default:o.push(e)}return o.filter(Boolean).join(" - ")},[a,t,c]),Ne=()=>{le({entityType:t,entities:q,scope:p}),Te(500,500)},$=()=>!(f.length>1||qe&&(!O||!Object.prototype.hasOwnProperty.call(oe,B.attrib?.email||"")));return n.jsxRuntimeExports.jsx(We.ThumbnailUploadProvider,{thumbnailInputRef:Y,versionsInputRef:Z,canUploadVersion:Re,children:n.jsxRuntimeExports.jsxs(I.Panel,{className:"details-panel",children:[n.jsxRuntimeExports.jsxs(I.Toolbar,{children:[n.jsxRuntimeExports.jsx(Fe.EntityPath,{segments:z,versions:Pe,projectName:c,hideProjectName:m,isLoading:y||!z.length,entityType:t,scope:p,entityTypeIcons:je}),n.jsxRuntimeExports.jsxs(I.RightTools,{className:"right-tools",children:[n.jsxRuntimeExports.jsx(Be.DetailsPanelMoreMenu,{entityType:t,entityId:a?.id,entityIds:q.map(e=>e.id).filter(Boolean),entityLabel:De,projectName:c,selectedEntities:u.filter(e=>!!e?.id).map(e=>{const r=e.entityType||t;return{entityId:e.id,entityType:r,hasReviewables:!!e.hasReviewables,name:e.name,label:e.label,projectName:e.projectName||c,folderId:r==="task"?e.folder?.id:void 0}}),entityListsContext:ce,onOpenPip:Ne,onOpenViewer:L,productId:a?.product?.id,taskId:a?.task?.id,folderId:a?.folder?.id}),n.jsxRuntimeExports.jsx(Se.Watchers,{entities:q,entityType:t,options:C||[],onWatchersUpdate:S&&S,userName:B.name}),b&&n.jsxRuntimeExports.jsx(ke.Button,{icon:"close",variant:"text",onClick:v,"data-shortcut":"Escape"})]})]}),n.jsxRuntimeExports.jsx(Oe,{entityType:t,entitySubTypes:me,entities:u,users:C,disabledAssignees:se,disabledStatuses:ie,tagsOptions:re,isFetching:y,isCompact:ue,currentTab:l,onTabChange:x,projectInfo:D,onOpenViewer:e=>L?.(e),onEntityFocus:ae,thumbnailInputRef:Y,versionsInputRef:Z}),n.jsxRuntimeExports.jsxs(Ue.ProjectContextProvider,{projectName:c,children:[fe&&!Ee&&n.jsxRuntimeExports.jsx(Qe,{entityType:t,entities:u,activeUsers:F||[],projectInfo:X,projectName:c,disabled:!$(),scope:p,statuses:K,readOnly:!1,entityListId:O,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,isSlideOut:m}),l==="subtasks"&&t==="task"&&a?.id&&V&&n.jsxRuntimeExports.jsx(ze,{projectName:c,taskId:a.id,folderId:a.folder?.id,subtasks:a.task?.subtasks||[],SubtasksManager:V,useNavigate:pe,onNotFound:()=>x("feed")}),l==="files"&&n.jsxRuntimeExports.jsx(Ae,{entities:u,scope:p,isLoadingVersion:y}),l==="details"&&n.jsxRuntimeExports.jsx(_e,{entityType:t,entities:u,activeUsers:F||[],projectInfo:X,projectName:c,disabled:!$(),scope:p,statuses:K,readOnly:!1,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,children:n.jsxRuntimeExports.jsx(Ce.DetailsPanelDetails,{entities:u,isLoading:y})})]})]})})},Ye=({isOpen:P,entityType:j,...g})=>{const{entities:d}=w.useDetailsPanelContext();return!P&&!d||!j&&!d?null:n.jsxRuntimeExports.jsx(Je,{...g,entityType:j||d?.entityType})};exports.DetailsPanel=Ye;exports.entitiesWithoutFeed=te;
2
2
  //# sourceMappingURL=DetailsPanel.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanel.cjs.js","sources":["../../../../../src/containers/DetailsPanel/DetailsPanel.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport useDetailsPanelURLSync from './hooks/useDetailsPanelURLSync'\nimport * as Styled from './DetailsPanel.styled'\n\n// shared\nimport { useGetEntitiesDetailsPanelQuery, detailsPanelEntityTypes } from '@shared/api'\nimport type { Tag, DetailsPanelEntityType, DetailsPanelEntityData } from '@shared/api'\nimport { DetailsPanelDetails } from '@shared/components/DetailsPanelDetails/DetailsPanelDetails'\nimport { EntityPath } from '@shared/components/EntityPath/EntityPath'\nimport { Watchers } from '@shared/components/Watchers/Watchers'\nimport { usePiPWindow } from '@shared/context/pip/PiPProvider'\nimport { extractEntityHierarchyFromParents } from '@shared/util'\nimport { ProjectContextProvider } from '@shared/context/ProjectContext'\nimport { ThumbnailUploadProvider } from '@shared/context/ThumbnailUploaderContext'\nimport {\n useDetailsPanelContext,\n useScopedDetailsPanel,\n setDetailsPanelTabForScope,\n} from '@shared/context/DetailsPanelContext'\nimport { useURIContext } from '@shared/context/UriContext'\nimport type { ProjectModelWithProducts } from '@shared/context/ProjectContext'\nimport type { FeedFilter } from '@shared/context/DetailsPanelContext'\n\nimport DetailsPanelHeader from './components/DetailsPanelHeader/DetailsPanelHeader'\nimport DetailsPanelFiles from './components/DetailsPanelFiles'\nimport {\n DetailsPanelMoreMenu,\n type DetailsPanelEntityListsContext,\n} from './components/DetailsPanelMoreMenu'\nimport useGetEntityPath from './hooks/useGetEntityPath'\nimport getAllProjectStatuses from './helpers/getAllProjectsStatuses'\nimport FeedWrapper from './containers/FeedWrapper'\nimport FeedContextWrapper from './containers/FeedContextWrapper'\nimport mergeProjectInfo from './helpers/mergeProjectInfo'\nimport buildEntityTypeIcons from './helpers/buildEntityTypeIcons'\nimport DetailsPanelSubtasks from './containers/DetailsPanelSubtasks'\n\nexport const entitiesWithoutFeed = ['product', 'representation']\n\ntype User = { avatarUrl: string; name: string; fullName?: string }\n\nexport type DetailsPanelProps = {\n entityType: DetailsPanelEntityType\n entitySubTypes?: string[] // used to get actions before the entity has loaded\n entitiesData?: { id: string; label: string; type: DetailsPanelEntityType }[]\n entities?: { id: string; projectName: string }[]\n tagsOptions?: Tag[]\n disabledStatuses?: string[]\n projectUsers?: User[]\n disabledProjectUsers?: string[]\n activeProjectUsers?: string[]\n projectsInfo?: Record<string, ProjectModelWithProducts>\n projectNames?: string[]\n isSlideOut?: boolean\n style?: React.CSSProperties\n scope: string\n isCompact?: boolean\n onClose?: () => void\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n onOpenViewer?: (entity: any) => void\n onEntityFocus?: (id: string, entityType: DetailsPanelEntityType) => void\n onOpen?: () => void\n onUriOpen?: (entity: DetailsPanelEntityData, source: 'uri' | 'url') => void\n // annotations\n annotations?: any\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n entityListId?: string\n guestCategories?: Record<string, string> // only used for guests to find if they have access to any categories\n /** Optional EntityListsContext for the \"Add to list\" sub-menu in the more-menu.\n * Hosts that already mount EntityListsProvider can pass the resolved context here;\n * otherwise wrap the panel with EntityListsContextBoundary. The shape mirrors\n * `EntityListsContextType` from `src/pages/ProjectListsPage/context` — it lives as a\n * structural type in shared/ so the layering rule (shared cannot import src/pages)\n * is preserved. */\n entityListsContext?: DetailsPanelEntityListsContext\n // optional tab state for independent tab management\n}\n\nconst DetailsPanelInner = ({\n entityType,\n entitySubTypes = [],\n // entities is data we already have from kanban\n entitiesData = [],\n // entityIds are used to get the full details data for the entities\n entities = [],\n tagsOptions = [],\n disabledStatuses,\n projectUsers,\n disabledProjectUsers,\n activeProjectUsers,\n projectsInfo = {},\n projectNames = [],\n isSlideOut = false,\n style = {},\n scope,\n isCompact = false,\n onClose,\n onWatchersUpdate,\n onOpenViewer,\n onEntityFocus,\n onOpen,\n onUriOpen, // when the details panel is opened from uri\n // annotations\n annotations,\n removeAnnotation,\n exportAnnotationComposite,\n entityListId,\n guestCategories = {},\n entityListsContext,\n}: // optional tab state for independent tab management\nDetailsPanelProps) => {\n const {\n closeSlideOut,\n openPip,\n user,\n isGuest,\n entities: contextEntities,\n setEntities,\n slideOut,\n useSearchParams,\n SubtasksManager,\n useNavigate,\n } = useDetailsPanelContext()\n const { currentTab, setTab, isFeed } = useScopedDetailsPanel(scope)\n const [_searchParams, setSearchParams] = useSearchParams()\n const hasCalledOnOpen = useRef(false)\n\n // Use context entities if available, otherwise use props\n const activeEntityType = contextEntities?.entityType ?? entityType\n const activeEntities = contextEntities?.entities ?? entities\n const activeEntitySubTypes = contextEntities?.entitySubTypes ?? entitySubTypes\n const activeEntitiesData = contextEntities?.entities ? [] : entitiesData\n const activeProjectNames = contextEntities?.entities\n ? contextEntities.entities.map((e) => e.projectName)\n : projectNames\n\n // Fire onOpen callback once when component mounts and renders\n useEffect(() => {\n if (onOpen && !hasCalledOnOpen.current) {\n hasCalledOnOpen.current = true\n onOpen()\n }\n }, [])\n\n // Force details tab for specific entity types\n useEffect(() => {\n if (entitiesWithoutFeed.includes(activeEntityType) && currentTab !== 'details') {\n setTab('details')\n }\n }, [activeEntityType, currentTab, setTab])\n\n // once component is provided with specific entities, remove context entities to avoid conflicts\n useEffect(() => {\n if (entities.length && contextEntities) {\n setEntities(null)\n }\n }, [entities, contextEntities, setEntities])\n\n // reduce projectsInfo to selected projects and into one\n const projectInfo = useMemo(\n () => mergeProjectInfo(projectsInfo, activeProjectNames),\n [projectsInfo, activeProjectNames],\n )\n\n // build icons for entity types (used by the entity path breadcrumb)\n const entityTypeIcons = useMemo(() => buildEntityTypeIcons(projectInfo), [projectInfo])\n\n // for example when switching from version to task, task doesn't have reps tab\n // if reps tab was selected, set default to feed\n useEffect(() => {\n if (currentTab === 'files') {\n // check entity type is still version\n if (activeEntityType !== 'version') {\n setTab('feed')\n }\n }\n // Reset to feed if subtasks tab is selected but entity is not a task\n if (currentTab === 'subtasks' && activeEntityType !== 'task') {\n setTab('feed')\n }\n }, [activeEntityType, currentTab, scope])\n\n // now we get the full details data for selected entities\n let entitiesToQuery = activeEntities.length\n ? activeEntities.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n : // @ts-expect-error = not sure what's going on with activeEntitiesData, we should try and remove it\n activeEntitiesData.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n\n entitiesToQuery = entitiesToQuery.filter((entity) => entity.id)\n\n const {\n data: entityDetailsData = [],\n isFetching: isFetchingEntitiesDetails,\n isError,\n originalArgs,\n } = useGetEntitiesDetailsPanelQuery(\n { entityType: activeEntityType, entities: entitiesToQuery },\n {\n skip: !entitiesToQuery.length || !detailsPanelEntityTypes.includes(activeEntityType),\n },\n )\n\n // the entity changes then we close the slide out\n useEffect(() => {\n if (!isSlideOut) {\n closeSlideOut()\n }\n }, [originalArgs, isSlideOut])\n\n // fire onUriOpen once per context entity — a details refetch must not re-run the jump/filter reset\n const uriOpenFiredForId = useRef<string | null>(null)\n useEffect(() => {\n if (!contextEntities) uriOpenFiredForId.current = null\n }, [contextEntities])\n\n // if the details panel is opened via the uri, run callback\n useEffect(() => {\n if (isFetchingEntitiesDetails) return\n\n if (\n (contextEntities?.source === 'uri' || contextEntities?.source === 'url') &&\n contextEntities?.entities?.length &&\n !!onUriOpen\n ) {\n const targetId = contextEntities.entities[0].id\n if (uriOpenFiredForId.current === targetId) return\n\n const uriEntity = entityDetailsData.find((entity) => entity.id === targetId)\n if (!uriEntity) return\n\n uriOpenFiredForId.current = targetId\n onUriOpen(uriEntity, contextEntities.source)\n }\n }, [entityDetailsData, isFetchingEntitiesDetails, contextEntities, onUriOpen])\n\n // TODO: merge current entities data with fresh details data\n\n const allStatuses = getAllProjectStatuses(projectsInfo)\n\n // get the first project name and info to be used in the feed.\n const firstProject = activeProjectNames[0]\n const firstProjectInfo = projectsInfo[firstProject] || {}\n const firstEntityData = entityDetailsData[0] || {}\n // Use the last entity for URI sync\n const lastEntityData = entityDetailsData[entityDetailsData.length - 1]\n const lastProject = activeProjectNames[activeProjectNames.length - 1]\n\n // build the full entity path for the first entity\n const [entityPathSegments, entityPathVersions] = useGetEntityPath({\n entity: firstEntityData,\n entityType: activeEntityType,\n projectName: firstProject,\n isLoading: isFetchingEntitiesDetails,\n })\n\n const { setEntityUri, setUri } = useURIContext()\n // sync the uri when entity changes\n useEffect(() => {\n if (!lastEntityData?.parents) return\n if (!lastProject) return\n const { folderPath, taskName, versionName, productName } = extractEntityHierarchyFromParents(\n lastEntityData.parents,\n activeEntityType,\n lastEntityData.name,\n )\n\n setEntityUri({\n projectName: lastProject,\n folderPath: folderPath,\n taskName: taskName,\n productName: productName,\n versionName: versionName,\n })\n\n // unmount cleanup: clear uri\n return () => {\n setUri('')\n }\n }, [entityDetailsData, activeProjectNames, activeEntityType])\n\n // sync the details panel url (panel) with entity\n useDetailsPanelURLSync({\n entityData: lastEntityData,\n project: lastProject,\n activeEntityType,\n entitiesToQuery,\n })\n\n const clearSearchUrl = () => {\n // remove URL params when closing\n setSearchParams(\n (prev) => {\n const newParams = new URLSearchParams(prev)\n newParams.delete('project')\n newParams.delete('type')\n newParams.delete('id')\n return newParams\n },\n { replace: true },\n )\n }\n\n const handleClose = () => {\n onClose?.()\n // also remove any entities in context\n setEntities(null)\n // drop the uri so an in-flight resolve can't reopen the panel after close\n setUri('')\n clearSearchUrl()\n closeSlideOut()\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) {\n // Don't trigger if we're in an input element\n const target = e.target as HTMLElement\n const isInputElement =\n ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName) || target.isContentEditable\n\n if (isInputElement) return\n\n // don't trigger if the viewer is open and panel not in slideout mode\n if (isSlideOut === false && (target.closest('#viewer-dialog') || !!slideOut)) return\n\n handleClose()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [handleClose, isSlideOut, slideOut])\n\n const { requestPipWindow } = usePiPWindow()\n\n // Hoisted so ThumbnailUploadProvider (wrapping the toolbar) and EntityPanelUploader\n // (inside DetailsPanelHeader) share the same ref identity — otherwise the toolbar's\n // more-menu, which sits as a sibling above the header, can't reach the inputs.\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n const canUploadVersion = entityDetailsData.length === 1 && activeEntityType !== 'representation'\n\n const shareEntityLabel = useMemo(() => {\n const name = firstEntityData?.label || firstEntityData?.name || ''\n const parents: string[] = firstEntityData?.parents || []\n const parts: (string | undefined)[] = [firstProject]\n switch (activeEntityType) {\n case 'folder':\n case 'task':\n case 'product':\n parts.push(parents.at(-1), name)\n break\n case 'version':\n parts.push(parents.at(-2), parents.at(-1), name)\n break\n case 'representation':\n parts.push(parents.at(-3), parents.at(-2), parents.at(-1), name)\n break\n default:\n parts.push(name)\n }\n return parts.filter(Boolean).join(' - ')\n }, [firstEntityData, activeEntityType, firstProject])\n\n const handleOpenPip = () => {\n openPip({\n entityType: activeEntityType,\n entities: entitiesToQuery,\n scope: scope,\n })\n requestPipWindow(500, 500)\n }\n\n const isCommentingEnabled = () => {\n // cannot comment on multiple projects\n if (activeProjectNames.length > 1) return false\n if (isGuest) {\n // Guest can only comment in review sessions (for now)\n if (!entityListId) return false\n // Guest must have at least one category set for list\n const guestHasCategory = Object.prototype.hasOwnProperty.call(\n guestCategories,\n user.attrib?.email || '',\n )\n if (!guestHasCategory) return false\n }\n return true\n }\n\n return (\n <ThumbnailUploadProvider\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n canUploadVersion={canUploadVersion}\n >\n <Styled.Panel className=\"details-panel\">\n <Styled.Toolbar>\n {/* TODO FIX PATH */}\n <EntityPath\n segments={entityPathSegments}\n versions={entityPathVersions}\n projectName={firstProject}\n hideProjectName={isSlideOut}\n isLoading={isFetchingEntitiesDetails || !entityPathSegments.length}\n entityType={activeEntityType}\n scope={scope}\n // @ts-ignore\n entityTypeIcons={entityTypeIcons}\n />\n <Styled.RightTools className=\"right-tools\">\n <DetailsPanelMoreMenu\n entityType={activeEntityType}\n entityId={firstEntityData?.id}\n entityIds={entitiesToQuery.map((e) => e.id).filter(Boolean)}\n entityLabel={shareEntityLabel}\n projectName={firstProject}\n selectedEntities={entityDetailsData\n .filter((e) => !!e?.id)\n .map((e) => {\n const type = e.entityType || activeEntityType\n return {\n entityId: e.id,\n entityType: type,\n hasReviewables: !!e.hasReviewables,\n name: e.name,\n label: e.label,\n projectName: e.projectName || firstProject,\n folderId: type === 'task' ? e.folder?.id : undefined,\n }\n })}\n entityListsContext={entityListsContext}\n onOpenPip={handleOpenPip}\n onOpenViewer={onOpenViewer}\n productId={firstEntityData?.product?.id}\n taskId={firstEntityData?.task?.id}\n folderId={firstEntityData?.folder?.id}\n />\n <Watchers\n entities={entitiesToQuery}\n entityType={activeEntityType}\n options={projectUsers || []}\n onWatchersUpdate={onWatchersUpdate && onWatchersUpdate}\n userName={user.name}\n />\n\n {onClose && (\n <Button\n icon=\"close\"\n variant={'text'}\n onClick={handleClose}\n data-shortcut={'Escape'}\n />\n )}\n </Styled.RightTools>\n </Styled.Toolbar>\n\n <DetailsPanelHeader\n entityType={activeEntityType}\n entitySubTypes={activeEntitySubTypes}\n entities={entityDetailsData}\n users={projectUsers}\n disabledAssignees={disabledProjectUsers}\n disabledStatuses={disabledStatuses}\n tagsOptions={tagsOptions}\n isFetching={isFetchingEntitiesDetails}\n isCompact={isCompact}\n currentTab={currentTab}\n onTabChange={setTab}\n projectInfo={projectInfo}\n onOpenViewer={(args) => onOpenViewer?.(args)}\n onEntityFocus={onEntityFocus}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n />\n\n <ProjectContextProvider projectName={firstProject}>\n {isFeed && !isError && (\n <FeedWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n entityListId={entityListId}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n isSlideOut={isSlideOut}\n />\n )}\n {currentTab === 'subtasks' &&\n activeEntityType === 'task' &&\n firstEntityData?.id &&\n SubtasksManager && (\n <DetailsPanelSubtasks\n projectName={firstProject}\n taskId={firstEntityData.id}\n subtasks={firstEntityData.task?.subtasks || []}\n SubtasksManager={SubtasksManager}\n useNavigate={useNavigate!}\n onNotFound={() => setTab('feed')} // if subtasks module is not found, switch to feed tab\n />\n )}\n {currentTab === 'files' && (\n <DetailsPanelFiles\n entities={entityDetailsData}\n scope={scope}\n isLoadingVersion={isFetchingEntitiesDetails}\n />\n )}\n {currentTab === 'details' && (\n <FeedContextWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n >\n <DetailsPanelDetails\n entities={entityDetailsData}\n isLoading={isFetchingEntitiesDetails}\n />\n </FeedContextWrapper>\n )}\n </ProjectContextProvider>\n </Styled.Panel>\n </ThumbnailUploadProvider>\n )\n}\n\n// create a wrapper that checks if the details panel should be open or not based on isOpen prop and entities state\nexport const DetailsPanel = ({\n isOpen,\n entityType,\n ...props\n}: Omit<DetailsPanelProps, 'entityType'> & {\n entityType?: DetailsPanelEntityType\n isOpen: boolean\n}) => {\n const { entities } = useDetailsPanelContext()\n\n if (!isOpen && !entities) return null\n if (!entityType && !entities) return null\n\n return <DetailsPanelInner {...props} entityType={entityType || entities?.entityType} />\n}\n"],"names":["entitiesWithoutFeed","DetailsPanelInner","entityType","entitySubTypes","entitiesData","entities","tagsOptions","disabledStatuses","projectUsers","disabledProjectUsers","activeProjectUsers","projectsInfo","projectNames","isSlideOut","style","scope","isCompact","onClose","onWatchersUpdate","onOpenViewer","onEntityFocus","onOpen","onUriOpen","annotations","removeAnnotation","exportAnnotationComposite","entityListId","guestCategories","entityListsContext","closeSlideOut","openPip","user","isGuest","contextEntities","setEntities","slideOut","useSearchParams","SubtasksManager","useNavigate","useDetailsPanelContext","currentTab","setTab","isFeed","useScopedDetailsPanel","_searchParams","setSearchParams","hasCalledOnOpen","useRef","activeEntityType","activeEntities","activeEntitySubTypes","activeEntitiesData","activeProjectNames","useEffect","projectInfo","useMemo","mergeProjectInfo","entityTypeIcons","buildEntityTypeIcons","entitiesToQuery","entity","entityDetailsData","isFetchingEntitiesDetails","isError","originalArgs","useGetEntitiesDetailsPanelQuery","detailsPanelEntityTypes","uriOpenFiredForId","targetId","uriEntity","allStatuses","getAllProjectStatuses","firstProject","firstProjectInfo","firstEntityData","lastEntityData","lastProject","entityPathSegments","entityPathVersions","useGetEntityPath","setEntityUri","setUri","useURIContext","folderPath","taskName","versionName","productName","extractEntityHierarchyFromParents","useDetailsPanelURLSync","clearSearchUrl","prev","newParams","handleClose","handleKeyDown","e","target","requestPipWindow","usePiPWindow","thumbnailInputRef","versionsInputRef","canUploadVersion","shareEntityLabel","name","parents","parts","handleOpenPip","isCommentingEnabled","jsx","ThumbnailUploadProvider","jsxs","Styled.Panel","Styled.Toolbar","EntityPath","Styled.RightTools","DetailsPanelMoreMenu","type","Watchers","Button","DetailsPanelHeader","args","ProjectContextProvider","FeedWrapper","DetailsPanelSubtasks","DetailsPanelFiles","FeedContextWrapper","DetailsPanelDetails","DetailsPanel","isOpen","props"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanel.cjs.js","sources":["../../../../../src/containers/DetailsPanel/DetailsPanel.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport useDetailsPanelURLSync from './hooks/useDetailsPanelURLSync'\nimport * as Styled from './DetailsPanel.styled'\n\n// shared\nimport { useGetEntitiesDetailsPanelQuery, detailsPanelEntityTypes } from '@shared/api'\nimport type { Tag, DetailsPanelEntityType, DetailsPanelEntityData } from '@shared/api'\nimport { DetailsPanelDetails } from '@shared/components/DetailsPanelDetails/DetailsPanelDetails'\nimport { EntityPath } from '@shared/components/EntityPath/EntityPath'\nimport { Watchers } from '@shared/components/Watchers/Watchers'\nimport { usePiPWindow } from '@shared/context/pip/PiPProvider'\nimport { extractEntityHierarchyFromParents } from '@shared/util'\nimport { ProjectContextProvider } from '@shared/context/ProjectContext'\nimport { ThumbnailUploadProvider } from '@shared/context/ThumbnailUploaderContext'\nimport {\n useDetailsPanelContext,\n useScopedDetailsPanel,\n setDetailsPanelTabForScope,\n} from '@shared/context/DetailsPanelContext'\nimport { useURIContext } from '@shared/context/UriContext'\nimport type { ProjectModelWithProducts } from '@shared/context/ProjectContext'\nimport type { FeedFilter } from '@shared/context/DetailsPanelContext'\n\nimport DetailsPanelHeader from './components/DetailsPanelHeader/DetailsPanelHeader'\nimport DetailsPanelFiles from './components/DetailsPanelFiles'\nimport {\n DetailsPanelMoreMenu,\n type DetailsPanelEntityListsContext,\n} from './components/DetailsPanelMoreMenu'\nimport useGetEntityPath from './hooks/useGetEntityPath'\nimport getAllProjectStatuses from './helpers/getAllProjectsStatuses'\nimport FeedWrapper from './containers/FeedWrapper'\nimport FeedContextWrapper from './containers/FeedContextWrapper'\nimport mergeProjectInfo from './helpers/mergeProjectInfo'\nimport buildEntityTypeIcons from './helpers/buildEntityTypeIcons'\nimport DetailsPanelSubtasks from './containers/DetailsPanelSubtasks'\n\nexport const entitiesWithoutFeed = ['product', 'representation']\n\ntype User = { avatarUrl: string; name: string; fullName?: string }\n\nexport type DetailsPanelProps = {\n entityType: DetailsPanelEntityType\n entitySubTypes?: string[] // used to get actions before the entity has loaded\n entitiesData?: { id: string; label: string; type: DetailsPanelEntityType }[]\n entities?: { id: string; projectName: string }[]\n tagsOptions?: Tag[]\n disabledStatuses?: string[]\n projectUsers?: User[]\n disabledProjectUsers?: string[]\n activeProjectUsers?: string[]\n projectsInfo?: Record<string, ProjectModelWithProducts>\n projectNames?: string[]\n isSlideOut?: boolean\n style?: React.CSSProperties\n scope: string\n isCompact?: boolean\n onClose?: () => void\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n onOpenViewer?: (entity: any) => void\n onEntityFocus?: (id: string, entityType: DetailsPanelEntityType) => void\n onOpen?: () => void\n onUriOpen?: (entity: DetailsPanelEntityData, source: 'uri' | 'url') => void\n // annotations\n annotations?: any\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n entityListId?: string\n guestCategories?: Record<string, string> // only used for guests to find if they have access to any categories\n /** Optional EntityListsContext for the \"Add to list\" sub-menu in the more-menu.\n * Hosts that already mount EntityListsProvider can pass the resolved context here;\n * otherwise wrap the panel with EntityListsContextBoundary. The shape mirrors\n * `EntityListsContextType` from `src/pages/ProjectListsPage/context` — it lives as a\n * structural type in shared/ so the layering rule (shared cannot import src/pages)\n * is preserved. */\n entityListsContext?: DetailsPanelEntityListsContext\n // optional tab state for independent tab management\n}\n\nconst DetailsPanelInner = ({\n entityType,\n entitySubTypes = [],\n // entities is data we already have from kanban\n entitiesData = [],\n // entityIds are used to get the full details data for the entities\n entities = [],\n tagsOptions = [],\n disabledStatuses,\n projectUsers,\n disabledProjectUsers,\n activeProjectUsers,\n projectsInfo = {},\n projectNames = [],\n isSlideOut = false,\n style = {},\n scope,\n isCompact = false,\n onClose,\n onWatchersUpdate,\n onOpenViewer,\n onEntityFocus,\n onOpen,\n onUriOpen, // when the details panel is opened from uri\n // annotations\n annotations,\n removeAnnotation,\n exportAnnotationComposite,\n entityListId,\n guestCategories = {},\n entityListsContext,\n}: // optional tab state for independent tab management\nDetailsPanelProps) => {\n const {\n closeSlideOut,\n openPip,\n user,\n isGuest,\n entities: contextEntities,\n setEntities,\n slideOut,\n useSearchParams,\n SubtasksManager,\n useNavigate,\n } = useDetailsPanelContext()\n const { currentTab, setTab, isFeed } = useScopedDetailsPanel(scope)\n const [_searchParams, setSearchParams] = useSearchParams()\n const hasCalledOnOpen = useRef(false)\n\n // Use context entities if available, otherwise use props\n const activeEntityType = contextEntities?.entityType ?? entityType\n const activeEntities = contextEntities?.entities ?? entities\n const activeEntitySubTypes = contextEntities?.entitySubTypes ?? entitySubTypes\n const activeEntitiesData = contextEntities?.entities ? [] : entitiesData\n const activeProjectNames = contextEntities?.entities\n ? contextEntities.entities.map((e) => e.projectName)\n : projectNames\n\n // Fire onOpen callback once when component mounts and renders\n useEffect(() => {\n if (onOpen && !hasCalledOnOpen.current) {\n hasCalledOnOpen.current = true\n onOpen()\n }\n }, [])\n\n // Force details tab for specific entity types\n useEffect(() => {\n if (entitiesWithoutFeed.includes(activeEntityType) && currentTab !== 'details') {\n setTab('details')\n }\n }, [activeEntityType, currentTab, setTab])\n\n // once component is provided with specific entities, remove context entities to avoid conflicts\n useEffect(() => {\n if (entities.length && contextEntities) {\n setEntities(null)\n }\n }, [entities, contextEntities, setEntities])\n\n // reduce projectsInfo to selected projects and into one\n const projectInfo = useMemo(\n () => mergeProjectInfo(projectsInfo, activeProjectNames),\n [projectsInfo, activeProjectNames],\n )\n\n // build icons for entity types (used by the entity path breadcrumb)\n const entityTypeIcons = useMemo(() => buildEntityTypeIcons(projectInfo), [projectInfo])\n\n // for example when switching from version to task, task doesn't have reps tab\n // if reps tab was selected, set default to feed\n useEffect(() => {\n if (currentTab === 'files') {\n // check entity type is still version\n if (activeEntityType !== 'version') {\n setTab('feed')\n }\n }\n // Reset to feed if subtasks tab is selected but entity is not a task\n if (currentTab === 'subtasks' && activeEntityType !== 'task') {\n setTab('feed')\n }\n }, [activeEntityType, currentTab, scope])\n\n // now we get the full details data for selected entities\n let entitiesToQuery = activeEntities.length\n ? activeEntities.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n : // @ts-expect-error = not sure what's going on with activeEntitiesData, we should try and remove it\n activeEntitiesData.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n\n entitiesToQuery = entitiesToQuery.filter((entity) => entity.id)\n\n const {\n data: entityDetailsData = [],\n isFetching: isFetchingEntitiesDetails,\n isError,\n originalArgs,\n } = useGetEntitiesDetailsPanelQuery(\n { entityType: activeEntityType, entities: entitiesToQuery },\n {\n skip: !entitiesToQuery.length || !detailsPanelEntityTypes.includes(activeEntityType),\n },\n )\n\n // the entity changes then we close the slide out\n useEffect(() => {\n if (!isSlideOut) {\n closeSlideOut()\n }\n }, [originalArgs, isSlideOut])\n\n // fire onUriOpen once per context entity — a details refetch must not re-run the jump/filter reset\n const uriOpenFiredForId = useRef<string | null>(null)\n useEffect(() => {\n if (!contextEntities) uriOpenFiredForId.current = null\n }, [contextEntities])\n\n // if the details panel is opened via the uri, run callback\n useEffect(() => {\n if (isFetchingEntitiesDetails) return\n\n if (\n (contextEntities?.source === 'uri' || contextEntities?.source === 'url') &&\n contextEntities?.entities?.length &&\n !!onUriOpen\n ) {\n const targetId = contextEntities.entities[0].id\n if (uriOpenFiredForId.current === targetId) return\n\n const uriEntity = entityDetailsData.find((entity) => entity.id === targetId)\n if (!uriEntity) return\n\n uriOpenFiredForId.current = targetId\n onUriOpen(uriEntity, contextEntities.source)\n }\n }, [entityDetailsData, isFetchingEntitiesDetails, contextEntities, onUriOpen])\n\n // TODO: merge current entities data with fresh details data\n\n const allStatuses = getAllProjectStatuses(projectsInfo)\n\n // get the first project name and info to be used in the feed.\n const firstProject = activeProjectNames[0]\n const firstProjectInfo = projectsInfo[firstProject] || {}\n const firstEntityData = entityDetailsData[0] || {}\n // Use the last entity for URI sync\n const lastEntityData = entityDetailsData[entityDetailsData.length - 1]\n const lastProject = activeProjectNames[activeProjectNames.length - 1]\n\n // build the full entity path for the first entity\n const [entityPathSegments, entityPathVersions] = useGetEntityPath({\n entity: firstEntityData,\n entityType: activeEntityType,\n projectName: firstProject,\n isLoading: isFetchingEntitiesDetails,\n })\n\n const { setEntityUri, setUri } = useURIContext()\n // sync the uri when entity changes\n useEffect(() => {\n if (!lastEntityData?.parents) return\n if (!lastProject) return\n const { folderPath, taskName, versionName, productName } = extractEntityHierarchyFromParents(\n lastEntityData.parents,\n activeEntityType,\n lastEntityData.name,\n )\n\n setEntityUri({\n projectName: lastProject,\n folderPath: folderPath,\n taskName: taskName,\n productName: productName,\n versionName: versionName,\n })\n\n // unmount cleanup: clear uri\n return () => {\n setUri('')\n }\n }, [entityDetailsData, activeProjectNames, activeEntityType])\n\n // sync the details panel url (panel) with entity\n useDetailsPanelURLSync({\n entityData: lastEntityData,\n project: lastProject,\n activeEntityType,\n entitiesToQuery,\n })\n\n const clearSearchUrl = () => {\n // remove URL params when closing\n setSearchParams(\n (prev) => {\n const newParams = new URLSearchParams(prev)\n newParams.delete('project')\n newParams.delete('type')\n newParams.delete('id')\n return newParams\n },\n { replace: true },\n )\n }\n\n const handleClose = () => {\n onClose?.()\n // also remove any entities in context\n setEntities(null)\n // drop the uri so an in-flight resolve can't reopen the panel after close\n setUri('')\n clearSearchUrl()\n closeSlideOut()\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) {\n // Don't trigger if we're in an input element\n const target = e.target as HTMLElement\n const isInputElement =\n ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName) || target.isContentEditable\n\n if (isInputElement) return\n\n // don't trigger if the viewer is open and panel not in slideout mode\n if (isSlideOut === false && (target.closest('#viewer-dialog') || !!slideOut)) return\n\n handleClose()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [handleClose, isSlideOut, slideOut])\n\n const { requestPipWindow } = usePiPWindow()\n\n // Hoisted so ThumbnailUploadProvider (wrapping the toolbar) and EntityPanelUploader\n // (inside DetailsPanelHeader) share the same ref identity — otherwise the toolbar's\n // more-menu, which sits as a sibling above the header, can't reach the inputs.\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n const canUploadVersion = entityDetailsData.length === 1 && activeEntityType !== 'representation'\n\n const shareEntityLabel = useMemo(() => {\n const name = firstEntityData?.label || firstEntityData?.name || ''\n const parents: string[] = firstEntityData?.parents || []\n const parts: (string | undefined)[] = [firstProject]\n switch (activeEntityType) {\n case 'folder':\n case 'task':\n case 'product':\n parts.push(parents.at(-1), name)\n break\n case 'version':\n parts.push(parents.at(-2), parents.at(-1), name)\n break\n case 'representation':\n parts.push(parents.at(-3), parents.at(-2), parents.at(-1), name)\n break\n default:\n parts.push(name)\n }\n return parts.filter(Boolean).join(' - ')\n }, [firstEntityData, activeEntityType, firstProject])\n\n const handleOpenPip = () => {\n openPip({\n entityType: activeEntityType,\n entities: entitiesToQuery,\n scope: scope,\n })\n requestPipWindow(500, 500)\n }\n\n const isCommentingEnabled = () => {\n // cannot comment on multiple projects\n if (activeProjectNames.length > 1) return false\n if (isGuest) {\n // Guest can only comment in review sessions (for now)\n if (!entityListId) return false\n // Guest must have at least one category set for list\n const guestHasCategory = Object.prototype.hasOwnProperty.call(\n guestCategories,\n user.attrib?.email || '',\n )\n if (!guestHasCategory) return false\n }\n return true\n }\n\n return (\n <ThumbnailUploadProvider\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n canUploadVersion={canUploadVersion}\n >\n <Styled.Panel className=\"details-panel\">\n <Styled.Toolbar>\n {/* TODO FIX PATH */}\n <EntityPath\n segments={entityPathSegments}\n versions={entityPathVersions}\n projectName={firstProject}\n hideProjectName={isSlideOut}\n isLoading={isFetchingEntitiesDetails || !entityPathSegments.length}\n entityType={activeEntityType}\n scope={scope}\n // @ts-ignore\n entityTypeIcons={entityTypeIcons}\n />\n <Styled.RightTools className=\"right-tools\">\n <DetailsPanelMoreMenu\n entityType={activeEntityType}\n entityId={firstEntityData?.id}\n entityIds={entitiesToQuery.map((e) => e.id).filter(Boolean)}\n entityLabel={shareEntityLabel}\n projectName={firstProject}\n selectedEntities={entityDetailsData\n .filter((e) => !!e?.id)\n .map((e) => {\n const type = e.entityType || activeEntityType\n return {\n entityId: e.id,\n entityType: type,\n hasReviewables: !!e.hasReviewables,\n name: e.name,\n label: e.label,\n projectName: e.projectName || firstProject,\n folderId: type === 'task' ? e.folder?.id : undefined,\n }\n })}\n entityListsContext={entityListsContext}\n onOpenPip={handleOpenPip}\n onOpenViewer={onOpenViewer}\n productId={firstEntityData?.product?.id}\n taskId={firstEntityData?.task?.id}\n folderId={firstEntityData?.folder?.id}\n />\n <Watchers\n entities={entitiesToQuery}\n entityType={activeEntityType}\n options={projectUsers || []}\n onWatchersUpdate={onWatchersUpdate && onWatchersUpdate}\n userName={user.name}\n />\n\n {onClose && (\n <Button\n icon=\"close\"\n variant={'text'}\n onClick={handleClose}\n data-shortcut={'Escape'}\n />\n )}\n </Styled.RightTools>\n </Styled.Toolbar>\n\n <DetailsPanelHeader\n entityType={activeEntityType}\n entitySubTypes={activeEntitySubTypes}\n entities={entityDetailsData}\n users={projectUsers}\n disabledAssignees={disabledProjectUsers}\n disabledStatuses={disabledStatuses}\n tagsOptions={tagsOptions}\n isFetching={isFetchingEntitiesDetails}\n isCompact={isCompact}\n currentTab={currentTab}\n onTabChange={setTab}\n projectInfo={projectInfo}\n onOpenViewer={(args) => onOpenViewer?.(args)}\n onEntityFocus={onEntityFocus}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n />\n\n <ProjectContextProvider projectName={firstProject}>\n {isFeed && !isError && (\n <FeedWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n entityListId={entityListId}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n isSlideOut={isSlideOut}\n />\n )}\n {currentTab === 'subtasks' &&\n activeEntityType === 'task' &&\n firstEntityData?.id &&\n SubtasksManager && (\n <DetailsPanelSubtasks\n projectName={firstProject}\n taskId={firstEntityData.id}\n folderId={firstEntityData.folder?.id}\n subtasks={firstEntityData.task?.subtasks || []}\n SubtasksManager={SubtasksManager}\n useNavigate={useNavigate!}\n onNotFound={() => setTab('feed')} // if subtasks module is not found, switch to feed tab\n />\n )}\n {currentTab === 'files' && (\n <DetailsPanelFiles\n entities={entityDetailsData}\n scope={scope}\n isLoadingVersion={isFetchingEntitiesDetails}\n />\n )}\n {currentTab === 'details' && (\n <FeedContextWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n >\n <DetailsPanelDetails\n entities={entityDetailsData}\n isLoading={isFetchingEntitiesDetails}\n />\n </FeedContextWrapper>\n )}\n </ProjectContextProvider>\n </Styled.Panel>\n </ThumbnailUploadProvider>\n )\n}\n\n// create a wrapper that checks if the details panel should be open or not based on isOpen prop and entities state\nexport const DetailsPanel = ({\n isOpen,\n entityType,\n ...props\n}: Omit<DetailsPanelProps, 'entityType'> & {\n entityType?: DetailsPanelEntityType\n isOpen: boolean\n}) => {\n const { entities } = useDetailsPanelContext()\n\n if (!isOpen && !entities) return null\n if (!entityType && !entities) return null\n\n return <DetailsPanelInner {...props} entityType={entityType || entities?.entityType} />\n}\n"],"names":["entitiesWithoutFeed","DetailsPanelInner","entityType","entitySubTypes","entitiesData","entities","tagsOptions","disabledStatuses","projectUsers","disabledProjectUsers","activeProjectUsers","projectsInfo","projectNames","isSlideOut","style","scope","isCompact","onClose","onWatchersUpdate","onOpenViewer","onEntityFocus","onOpen","onUriOpen","annotations","removeAnnotation","exportAnnotationComposite","entityListId","guestCategories","entityListsContext","closeSlideOut","openPip","user","isGuest","contextEntities","setEntities","slideOut","useSearchParams","SubtasksManager","useNavigate","useDetailsPanelContext","currentTab","setTab","isFeed","useScopedDetailsPanel","_searchParams","setSearchParams","hasCalledOnOpen","useRef","activeEntityType","activeEntities","activeEntitySubTypes","activeEntitiesData","activeProjectNames","useEffect","projectInfo","useMemo","mergeProjectInfo","entityTypeIcons","buildEntityTypeIcons","entitiesToQuery","entity","entityDetailsData","isFetchingEntitiesDetails","isError","originalArgs","useGetEntitiesDetailsPanelQuery","detailsPanelEntityTypes","uriOpenFiredForId","targetId","uriEntity","allStatuses","getAllProjectStatuses","firstProject","firstProjectInfo","firstEntityData","lastEntityData","lastProject","entityPathSegments","entityPathVersions","useGetEntityPath","setEntityUri","setUri","useURIContext","folderPath","taskName","versionName","productName","extractEntityHierarchyFromParents","useDetailsPanelURLSync","clearSearchUrl","prev","newParams","handleClose","handleKeyDown","e","target","requestPipWindow","usePiPWindow","thumbnailInputRef","versionsInputRef","canUploadVersion","shareEntityLabel","name","parents","parts","handleOpenPip","isCommentingEnabled","jsx","ThumbnailUploadProvider","jsxs","Styled.Panel","Styled.Toolbar","EntityPath","Styled.RightTools","DetailsPanelMoreMenu","type","Watchers","Button","DetailsPanelHeader","args","ProjectContextProvider","FeedWrapper","DetailsPanelSubtasks","DetailsPanelFiles","FeedContextWrapper","DetailsPanelDetails","DetailsPanel","isOpen","props"],"mappings":"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"}