@ynput/ayon-frontend-shared 0.2.43 → 0.2.45

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 (45) hide show
  1. package/dist/_virtual/index.cjs4.js +1 -1
  2. package/dist/_virtual/index.cjs5.js +1 -1
  3. package/dist/_virtual/index.es4.js +5 -2
  4. package/dist/_virtual/index.es4.js.map +1 -1
  5. package/dist/_virtual/index.es5.js +2 -5
  6. package/dist/_virtual/index.es5.js.map +1 -1
  7. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  8. package/dist/node_modules/remove-accents/index.es.js +1 -1
  9. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  10. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  11. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  12. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  13. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  14. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  15. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  16. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  17. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -68
  18. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  19. package/dist/shared/src/components/Menu/MenuContainer.cjs.js +1 -1
  20. package/dist/shared/src/components/Menu/MenuContainer.cjs.js.map +1 -1
  21. package/dist/shared/src/components/Menu/MenuContainer.es.js +58 -59
  22. package/dist/shared/src/components/Menu/MenuContainer.es.js.map +1 -1
  23. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  24. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  25. package/dist/shared/src/components/Menu/MenuItem.es.js +21 -21
  26. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  27. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  28. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  29. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -22
  30. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  31. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  32. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  33. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -3
  34. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  35. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  36. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  37. package/dist/shared/src/context/DetailsPanelContext.es.js +79 -80
  38. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  39. package/dist/shared/src/context/MenuContext.cjs.js +1 -1
  40. package/dist/shared/src/context/MenuContext.cjs.js.map +1 -1
  41. package/dist/shared/src/context/MenuContext.es.js +11 -10
  42. package/dist/shared/src/context/MenuContext.es.js.map +1 -1
  43. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -0
  44. package/dist/types/context/MenuContext.d.ts +3 -0
  45. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n\n const response = await Promise.all(responses)\n\n const projectData = response[0] as ProjectModel | undefined\n const anatomyData = response[1] as Anatomy | undefined\n\n if (projectData) {\n projectInfo[projectName] = { ...projectData, anatomy: anatomyData }\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","projectInfo","responses","projectQueries","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("../../../../_virtual/jsx-runtime.cjs.js"),r=require("react"),M=require("../../context/MenuContext.cjs.js"),q=require("react-router-dom"),h=require("react-dom"),j=require("clsx"),p=require("./Menu.styled.cjs.js"),C=require("./useMenuPosition.cjs.js"),R=({id:n,target:u,targetId:c="",align:l="right",theme:i="light",children:a,...d})=>{const t=q.useNavigate(),{menuOpen:o,setMenuOpen:f}=M.useMenuContext(),g=o===n,s=()=>{f(!1)},m=e=>{console.log("navigate and close"),s(),e&&t(e)};return g?x.jsxRuntimeExports.jsx(v,{handleClose:s,handleNavigate:m,target:u,targetId:c,align:l,theme:i,children:a,...d}):null},v=({handleClose:n,handleNavigate:u,target:c,targetId:l,align:i="right",children:a,...d})=>{const{position:t,menuRef:o}=C.useMenuPosition(c??null,l??"",i);r.useEffect(()=>{t&&o.current&&o.current.querySelectorAll("li, button")[0]?.focus()},[t]);const f=e=>{e.key==="Escape"&&n()},g=e=>{e.target.id==="dialog"&&n()},s=r.Children.map(a,(e,y)=>r.isValidElement(e)?r.cloneElement(e,{onClose:n,index:y,navigate:u}):e),m=t||{top:0,left:0,opacity:0,visibility:"hidden"};return h.createPortal(x.jsxRuntimeExports.jsx(p.Dialog,{open:!0,onClick:g,onKeyDown:f,...d,id:"dialog",children:x.jsxRuntimeExports.jsx(p.DialogContent,{id:"content",style:m,className:j(i),ref:o,children:s})}),document.body)};exports.MenuContainer=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../../../../_virtual/jsx-runtime.cjs.js"),u=require("react"),M=require("../../context/MenuContext.cjs.js"),j=require("react-dom"),q=require("clsx"),p=require("./Menu.styled.cjs.js"),C=require("./useMenuPosition.cjs.js"),h=({id:n,target:c,targetId:l="",align:a="right",theme:s="light",children:d,...f})=>{const{menuOpen:t,setMenuOpen:o,navigate:i}=M.useMenuContext(),g=t===n,r=()=>{o(!1)},x=e=>{console.log("navigate and close"),r(),!i&&e?console.log("navigate not found"):i&&e&&i(e)};return g?m.jsxRuntimeExports.jsx(v,{handleClose:r,handleNavigate:x,target:c,targetId:l,align:a,theme:s,children:d,...f}):null},v=({handleClose:n,handleNavigate:c,target:l,targetId:a,align:s="right",children:d,...f})=>{const{position:t,menuRef:o}=C.useMenuPosition(l??null,a??"",s);u.useEffect(()=>{t&&o.current&&o.current.querySelectorAll("li, button")[0]?.focus()},[t]);const i=e=>{e.key==="Escape"&&n()},g=e=>{e.target.id==="dialog"&&n()},r=u.Children.map(d,(e,y)=>u.isValidElement(e)?u.cloneElement(e,{onClose:n,index:y,navigate:c}):e),x=t||{top:0,left:0,opacity:0,visibility:"hidden"};return j.createPortal(m.jsxRuntimeExports.jsx(p.Dialog,{open:!0,onClick:g,onKeyDown:i,...f,id:"dialog",children:m.jsxRuntimeExports.jsx(p.DialogContent,{id:"content",style:x,className:q(s),ref:o,children:r})}),document.body)};exports.MenuContainer=h;
2
2
  //# sourceMappingURL=MenuContainer.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContainer.cjs.js","sources":["../../../../../src/components/Menu/MenuContainer.tsx"],"sourcesContent":["import React, { useEffect, ReactNode } from 'react'\nimport { useMenuContext } from '@shared/context/MenuContext'\nimport { useNavigate } from 'react-router-dom'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport * as Styled from './Menu.styled'\nimport { useMenuPosition } from './useMenuPosition'\n\ntype AlignType = 'left' | 'right'\ntype ThemeType = 'light' | 'dark'\n\ninterface MenuContainerProps {\n id: string | undefined\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n theme?: ThemeType\n children: ReactNode\n [key: string]: any\n}\n\nexport const MenuContainer: React.FC<MenuContainerProps> = ({\n id,\n target,\n targetId = '',\n align = 'right',\n theme = 'light',\n children,\n ...props\n}) => {\n const navigate = useNavigate()\n const { menuOpen, setMenuOpen } = useMenuContext()\n const isOpen = menuOpen === id\n\n const handleClose = () => {\n setMenuOpen(false)\n }\n\n const handleNavigate = (path?: string) => {\n console.log('navigate and close')\n handleClose()\n if (path) navigate(path)\n }\n\n if (!isOpen) return null\n\n return (\n <MenuInner\n {...{\n handleClose,\n handleNavigate,\n target,\n targetId,\n align,\n theme,\n children,\n ...props,\n }}\n />\n )\n}\n\ninterface MenuInnerProps {\n handleClose: () => void\n handleNavigate: (path?: string) => void\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n children: ReactNode\n [key: string]: any\n}\n\nconst MenuInner: React.FC<MenuInnerProps> = ({\n handleClose,\n handleNavigate,\n target,\n targetId,\n align = 'right',\n children,\n ...props\n}) => {\n const { position, menuRef } = useMenuPosition(target ?? null, targetId ?? '', align)\n\n // Focus management\n useEffect(() => {\n if (position && menuRef.current) {\n const first = menuRef.current.querySelectorAll('li, button')[0] as HTMLElement\n first?.focus()\n }\n }, [position])\n\n // Keyboard handling\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose()\n }\n\n // Click outside handling\n const handleOnClick = (e: React.MouseEvent<HTMLDialogElement>) => {\n if ((e.target as HTMLElement).id === 'dialog') handleClose()\n }\n\n // Attach props to children\n const childrenWithProps = React.Children.map(children, (child, i) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onClose: handleClose,\n index: i,\n navigate: handleNavigate,\n } as any)\n }\n return child\n })\n\n const menuPosition = position || { top: 0, left: 0, opacity: 0, visibility: 'hidden' as const }\n\n return createPortal(\n <Styled.Dialog\n open={true}\n onClick={handleOnClick}\n onKeyDown={handleKeyDown}\n {...props}\n id=\"dialog\"\n >\n <Styled.DialogContent\n id=\"content\"\n style={menuPosition}\n className={clsx(align)}\n ref={menuRef as any}\n >\n {childrenWithProps}\n </Styled.DialogContent>\n </Styled.Dialog>,\n document.body,\n )\n}\n"],"names":["MenuContainer","id","target","targetId","align","theme","children","props","navigate","useNavigate","menuOpen","setMenuOpen","useMenuContext","isOpen","handleClose","handleNavigate","path","jsx","MenuInner","position","menuRef","useMenuPosition","useEffect","handleKeyDown","handleOnClick","childrenWithProps","React","child","i","menuPosition","createPortal","Styled.Dialog","Styled.DialogContent","clsx"],"mappings":"2VAqBaA,EAA8C,CAAC,CAC1D,GAAAC,EACA,OAAAC,EACA,SAAAC,EAAW,GACX,MAAAC,EAAQ,QACR,MAAAC,EAAQ,QACR,SAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAWC,EAAAA,YAAA,EACX,CAAE,SAAAC,EAAU,YAAAC,CAAA,EAAgBC,iBAAA,EAC5BC,EAASH,IAAaT,EAEtBa,EAAc,IAAM,CACxBH,EAAY,EAAK,CACnB,EAEMI,EAAkBC,GAAkB,CACxC,QAAQ,IAAI,oBAAoB,EAChCF,EAAA,EACIE,KAAeA,CAAI,CACzB,EAEA,OAAKH,EAGHI,EAAAA,kBAAAA,IAACC,EAAA,CAEG,YAAAJ,EACA,eAAAC,EACA,OAAAb,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,CAAA,EAbgB,IAgBtB,EAYMW,EAAsC,CAAC,CAC3C,YAAAJ,EACA,eAAAC,EACA,OAAAb,EACA,SAAAC,EACA,MAAAC,EAAQ,QACR,SAAAE,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAAE,SAAAY,EAAU,QAAAC,CAAA,EAAYC,EAAAA,gBAAgBnB,GAAU,KAAMC,GAAY,GAAIC,CAAK,EAGnFkB,EAAAA,UAAU,IAAM,CACVH,GAAYC,EAAQ,SACRA,EAAQ,QAAQ,iBAAiB,YAAY,EAAE,CAAC,GACvD,MAAA,CAEX,EAAG,CAACD,CAAQ,CAAC,EAGb,MAAMI,EAAiB,GAA2B,CAC5C,EAAE,MAAQ,UAAUT,EAAA,CAC1B,EAGMU,EAAiB,GAA2C,CAC3D,EAAE,OAAuB,KAAO,UAAUV,EAAA,CACjD,EAGMW,EAAoBC,EAAM,SAAS,IAAIpB,EAAU,CAACqB,EAAOC,IACzDF,EAAM,eAAeC,CAAK,EACrBD,EAAM,aAAaC,EAAO,CAC/B,QAASb,EACT,MAAOc,EACP,SAAUb,CAAA,CACJ,EAEHY,CACR,EAEKE,EAAeV,GAAY,CAAE,IAAK,EAAG,KAAM,EAAG,QAAS,EAAG,WAAY,QAAA,EAE5E,OAAOW,EAAAA,aACLb,EAAAA,kBAAAA,IAACc,EAAAA,OAAA,CACC,KAAM,GACN,QAASP,EACT,UAAWD,EACV,GAAGhB,EACJ,GAAG,SAEH,SAAAU,EAAAA,kBAAAA,IAACe,EAAAA,cAAA,CACC,GAAG,UACH,MAAOH,EACP,UAAWI,EAAK7B,CAAK,EACrB,IAAKgB,EAEJ,SAAAK,CAAA,CAAA,CACH,CAAA,EAEF,SAAS,IAAA,CAEb"}
1
+ {"version":3,"file":"MenuContainer.cjs.js","sources":["../../../../../src/components/Menu/MenuContainer.tsx"],"sourcesContent":["import React, { useEffect, ReactNode } from 'react'\nimport { useMenuContext } from '@shared/context/MenuContext'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport * as Styled from './Menu.styled'\nimport { useMenuPosition } from './useMenuPosition'\n\ntype AlignType = 'left' | 'right'\ntype ThemeType = 'light' | 'dark'\n\ninterface MenuContainerProps {\n id: string | undefined\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n theme?: ThemeType\n children: ReactNode\n [key: string]: any\n}\n\nexport const MenuContainer: React.FC<MenuContainerProps> = ({\n id,\n target,\n targetId = '',\n align = 'right',\n theme = 'light',\n children,\n ...props\n}) => {\n const { menuOpen, setMenuOpen, navigate } = useMenuContext()\n const isOpen = menuOpen === id\n\n const handleClose = () => {\n setMenuOpen(false)\n }\n\n const handleNavigate = (path?: string) => {\n console.log('navigate and close')\n handleClose()\n if (!navigate && path) {\n console.log('navigate not found')\n } else if (navigate && path) {\n navigate(path)\n }\n }\n\n if (!isOpen) return null\n\n return (\n <MenuInner\n {...{\n handleClose,\n handleNavigate,\n target,\n targetId,\n align,\n theme,\n children,\n ...props,\n }}\n />\n )\n}\n\ninterface MenuInnerProps {\n handleClose: () => void\n handleNavigate: (path?: string) => void\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n children: ReactNode\n [key: string]: any\n}\n\nconst MenuInner: React.FC<MenuInnerProps> = ({\n handleClose,\n handleNavigate,\n target,\n targetId,\n align = 'right',\n children,\n ...props\n}) => {\n const { position, menuRef } = useMenuPosition(target ?? null, targetId ?? '', align)\n\n // Focus management\n useEffect(() => {\n if (position && menuRef.current) {\n const first = menuRef.current.querySelectorAll('li, button')[0] as HTMLElement\n first?.focus()\n }\n }, [position])\n\n // Keyboard handling\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose()\n }\n\n // Click outside handling\n const handleOnClick = (e: React.MouseEvent<HTMLDialogElement>) => {\n if ((e.target as HTMLElement).id === 'dialog') handleClose()\n }\n\n // Attach props to children\n const childrenWithProps = React.Children.map(children, (child, i) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onClose: handleClose,\n index: i,\n navigate: handleNavigate,\n } as any)\n }\n return child\n })\n\n const menuPosition = position || { top: 0, left: 0, opacity: 0, visibility: 'hidden' as const }\n\n return createPortal(\n <Styled.Dialog\n open={true}\n onClick={handleOnClick}\n onKeyDown={handleKeyDown}\n {...props}\n id=\"dialog\"\n >\n <Styled.DialogContent\n id=\"content\"\n style={menuPosition}\n className={clsx(align)}\n ref={menuRef as any}\n >\n {childrenWithProps}\n </Styled.DialogContent>\n </Styled.Dialog>,\n document.body,\n )\n}\n"],"names":["MenuContainer","id","target","targetId","align","theme","children","props","menuOpen","setMenuOpen","navigate","useMenuContext","isOpen","handleClose","handleNavigate","path","jsx","MenuInner","position","menuRef","useMenuPosition","useEffect","handleKeyDown","handleOnClick","childrenWithProps","React","child","i","menuPosition","createPortal","Styled.Dialog","Styled.DialogContent","clsx"],"mappings":"6TAoBaA,EAA8C,CAAC,CAC1D,GAAAC,EACA,OAAAC,EACA,SAAAC,EAAW,GACX,MAAAC,EAAQ,QACR,MAAAC,EAAQ,QACR,SAAAC,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAAE,SAAAC,EAAU,YAAAC,EAAa,SAAAC,CAAA,EAAaC,EAAAA,eAAA,EACtCC,EAASJ,IAAaP,EAEtBY,EAAc,IAAM,CACxBJ,EAAY,EAAK,CACnB,EAEMK,EAAkBC,GAAkB,CACxC,QAAQ,IAAI,oBAAoB,EAChCF,EAAA,EACI,CAACH,GAAYK,EACf,QAAQ,IAAI,oBAAoB,EACvBL,GAAYK,GACrBL,EAASK,CAAI,CAEjB,EAEA,OAAKH,EAGHI,EAAAA,kBAAAA,IAACC,EAAA,CAEG,YAAAJ,EACA,eAAAC,EACA,OAAAZ,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,CAAA,EAbgB,IAgBtB,EAYMU,EAAsC,CAAC,CAC3C,YAAAJ,EACA,eAAAC,EACA,OAAAZ,EACA,SAAAC,EACA,MAAAC,EAAQ,QACR,SAAAE,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAAE,SAAAW,EAAU,QAAAC,CAAA,EAAYC,EAAAA,gBAAgBlB,GAAU,KAAMC,GAAY,GAAIC,CAAK,EAGnFiB,EAAAA,UAAU,IAAM,CACVH,GAAYC,EAAQ,SACRA,EAAQ,QAAQ,iBAAiB,YAAY,EAAE,CAAC,GACvD,MAAA,CAEX,EAAG,CAACD,CAAQ,CAAC,EAGb,MAAMI,EAAiB,GAA2B,CAC5C,EAAE,MAAQ,UAAUT,EAAA,CAC1B,EAGMU,EAAiB,GAA2C,CAC3D,EAAE,OAAuB,KAAO,UAAUV,EAAA,CACjD,EAGMW,EAAoBC,EAAM,SAAS,IAAInB,EAAU,CAACoB,EAAOC,IACzDF,EAAM,eAAeC,CAAK,EACrBD,EAAM,aAAaC,EAAO,CAC/B,QAASb,EACT,MAAOc,EACP,SAAUb,CAAA,CACJ,EAEHY,CACR,EAEKE,EAAeV,GAAY,CAAE,IAAK,EAAG,KAAM,EAAG,QAAS,EAAG,WAAY,QAAA,EAE5E,OAAOW,EAAAA,aACLb,EAAAA,kBAAAA,IAACc,EAAAA,OAAA,CACC,KAAM,GACN,QAASP,EACT,UAAWD,EACV,GAAGf,EACJ,GAAG,SAEH,SAAAS,EAAAA,kBAAAA,IAACe,EAAAA,cAAA,CACC,GAAG,UACH,MAAOH,EACP,UAAWI,EAAK5B,CAAK,EACrB,IAAKe,EAEJ,SAAAK,CAAA,CAAA,CACH,CAAA,EAEF,SAAS,IAAA,CAEb"}
@@ -1,77 +1,76 @@
1
1
  import { j as g } from "../../../../_virtual/jsx-runtime.es.js";
2
- import d, { useEffect as h } from "react";
3
- import { useMenuContext as y } from "../../context/MenuContext.es.js";
4
- import { useNavigate as v } from "react-router-dom";
5
- import { createPortal as C } from "react-dom";
6
- import j from "clsx";
7
- import { Dialog as E, DialogContent as M } from "./Menu.styled.es.js";
8
- import { useMenuPosition as D } from "./useMenuPosition.es.js";
9
- const q = ({
10
- id: t,
11
- target: s,
12
- targetId: l = "",
13
- align: c = "right",
14
- theme: i = "light",
15
- children: a,
16
- ...u
2
+ import p, { useEffect as y } from "react";
3
+ import { useMenuContext as h } from "../../context/MenuContext.es.js";
4
+ import { createPortal as v } from "react-dom";
5
+ import C from "clsx";
6
+ import { Dialog as j, DialogContent as E } from "./Menu.styled.es.js";
7
+ import { useMenuPosition as M } from "./useMenuPosition.es.js";
8
+ const N = ({
9
+ id: n,
10
+ target: l,
11
+ targetId: c = "",
12
+ align: a = "right",
13
+ theme: r = "light",
14
+ children: u,
15
+ ...f
17
16
  }) => {
18
- const n = v(), { menuOpen: o, setMenuOpen: m } = y(), f = o === t, r = () => {
19
- m(!1);
20
- }, p = (e) => {
21
- console.log("navigate and close"), r(), e && n(e);
17
+ const { menuOpen: t, setMenuOpen: o, navigate: i } = h(), m = t === n, s = () => {
18
+ o(!1);
19
+ }, d = (e) => {
20
+ console.log("navigate and close"), s(), !i && e ? console.log("navigate not found") : i && e && i(e);
22
21
  };
23
- return f ? /* @__PURE__ */ g.jsx(
24
- O,
22
+ return m ? /* @__PURE__ */ g.jsx(
23
+ D,
25
24
  {
26
- handleClose: r,
27
- handleNavigate: p,
28
- target: s,
29
- targetId: l,
30
- align: c,
31
- theme: i,
32
- children: a,
33
- ...u
25
+ handleClose: s,
26
+ handleNavigate: d,
27
+ target: l,
28
+ targetId: c,
29
+ align: a,
30
+ theme: r,
31
+ children: u,
32
+ ...f
34
33
  }
35
34
  ) : null;
36
- }, O = ({
37
- handleClose: t,
38
- handleNavigate: s,
39
- target: l,
40
- targetId: c,
41
- align: i = "right",
42
- children: a,
43
- ...u
35
+ }, D = ({
36
+ handleClose: n,
37
+ handleNavigate: l,
38
+ target: c,
39
+ targetId: a,
40
+ align: r = "right",
41
+ children: u,
42
+ ...f
44
43
  }) => {
45
- const { position: n, menuRef: o } = D(l ?? null, c ?? "", i);
46
- h(() => {
47
- n && o.current && o.current.querySelectorAll("li, button")[0]?.focus();
48
- }, [n]);
49
- const m = (e) => {
50
- e.key === "Escape" && t();
51
- }, f = (e) => {
52
- e.target.id === "dialog" && t();
53
- }, r = d.Children.map(a, (e, x) => d.isValidElement(e) ? d.cloneElement(e, {
54
- onClose: t,
44
+ const { position: t, menuRef: o } = M(c ?? null, a ?? "", r);
45
+ y(() => {
46
+ t && o.current && o.current.querySelectorAll("li, button")[0]?.focus();
47
+ }, [t]);
48
+ const i = (e) => {
49
+ e.key === "Escape" && n();
50
+ }, m = (e) => {
51
+ e.target.id === "dialog" && n();
52
+ }, s = p.Children.map(u, (e, x) => p.isValidElement(e) ? p.cloneElement(e, {
53
+ onClose: n,
55
54
  index: x,
56
- navigate: s
57
- }) : e), p = n || { top: 0, left: 0, opacity: 0, visibility: "hidden" };
58
- return C(
55
+ navigate: l
56
+ }) : e), d = t || { top: 0, left: 0, opacity: 0, visibility: "hidden" };
57
+ return v(
59
58
  /* @__PURE__ */ g.jsx(
60
- E,
59
+ j,
61
60
  {
62
61
  open: !0,
63
- onClick: f,
64
- onKeyDown: m,
65
- ...u,
62
+ onClick: m,
63
+ onKeyDown: i,
64
+ ...f,
66
65
  id: "dialog",
67
66
  children: /* @__PURE__ */ g.jsx(
68
- M,
67
+ E,
69
68
  {
70
69
  id: "content",
71
- style: p,
72
- className: j(i),
70
+ style: d,
71
+ className: C(r),
73
72
  ref: o,
74
- children: r
73
+ children: s
75
74
  }
76
75
  )
77
76
  }
@@ -80,6 +79,6 @@ const q = ({
80
79
  );
81
80
  };
82
81
  export {
83
- q as MenuContainer
82
+ N as MenuContainer
84
83
  };
85
84
  //# sourceMappingURL=MenuContainer.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContainer.es.js","sources":["../../../../../src/components/Menu/MenuContainer.tsx"],"sourcesContent":["import React, { useEffect, ReactNode } from 'react'\nimport { useMenuContext } from '@shared/context/MenuContext'\nimport { useNavigate } from 'react-router-dom'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport * as Styled from './Menu.styled'\nimport { useMenuPosition } from './useMenuPosition'\n\ntype AlignType = 'left' | 'right'\ntype ThemeType = 'light' | 'dark'\n\ninterface MenuContainerProps {\n id: string | undefined\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n theme?: ThemeType\n children: ReactNode\n [key: string]: any\n}\n\nexport const MenuContainer: React.FC<MenuContainerProps> = ({\n id,\n target,\n targetId = '',\n align = 'right',\n theme = 'light',\n children,\n ...props\n}) => {\n const navigate = useNavigate()\n const { menuOpen, setMenuOpen } = useMenuContext()\n const isOpen = menuOpen === id\n\n const handleClose = () => {\n setMenuOpen(false)\n }\n\n const handleNavigate = (path?: string) => {\n console.log('navigate and close')\n handleClose()\n if (path) navigate(path)\n }\n\n if (!isOpen) return null\n\n return (\n <MenuInner\n {...{\n handleClose,\n handleNavigate,\n target,\n targetId,\n align,\n theme,\n children,\n ...props,\n }}\n />\n )\n}\n\ninterface MenuInnerProps {\n handleClose: () => void\n handleNavigate: (path?: string) => void\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n children: ReactNode\n [key: string]: any\n}\n\nconst MenuInner: React.FC<MenuInnerProps> = ({\n handleClose,\n handleNavigate,\n target,\n targetId,\n align = 'right',\n children,\n ...props\n}) => {\n const { position, menuRef } = useMenuPosition(target ?? null, targetId ?? '', align)\n\n // Focus management\n useEffect(() => {\n if (position && menuRef.current) {\n const first = menuRef.current.querySelectorAll('li, button')[0] as HTMLElement\n first?.focus()\n }\n }, [position])\n\n // Keyboard handling\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose()\n }\n\n // Click outside handling\n const handleOnClick = (e: React.MouseEvent<HTMLDialogElement>) => {\n if ((e.target as HTMLElement).id === 'dialog') handleClose()\n }\n\n // Attach props to children\n const childrenWithProps = React.Children.map(children, (child, i) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onClose: handleClose,\n index: i,\n navigate: handleNavigate,\n } as any)\n }\n return child\n })\n\n const menuPosition = position || { top: 0, left: 0, opacity: 0, visibility: 'hidden' as const }\n\n return createPortal(\n <Styled.Dialog\n open={true}\n onClick={handleOnClick}\n onKeyDown={handleKeyDown}\n {...props}\n id=\"dialog\"\n >\n <Styled.DialogContent\n id=\"content\"\n style={menuPosition}\n className={clsx(align)}\n ref={menuRef as any}\n >\n {childrenWithProps}\n </Styled.DialogContent>\n </Styled.Dialog>,\n document.body,\n )\n}\n"],"names":["MenuContainer","id","target","targetId","align","theme","children","props","navigate","useNavigate","menuOpen","setMenuOpen","useMenuContext","isOpen","handleClose","handleNavigate","path","jsx","MenuInner","position","menuRef","useMenuPosition","useEffect","handleKeyDown","handleOnClick","childrenWithProps","React","child","i","menuPosition","createPortal","Styled.Dialog","Styled.DialogContent","clsx"],"mappings":";;;;;;;;AAqBO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,IAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAWC,EAAA,GACX,EAAE,UAAAC,GAAU,aAAAC,EAAA,IAAgBC,EAAA,GAC5BC,IAASH,MAAaT,GAEtBa,IAAc,MAAM;AACxB,IAAAH,EAAY,EAAK;AAAA,EACnB,GAEMI,IAAiB,CAACC,MAAkB;AACxC,YAAQ,IAAI,oBAAoB,GAChCF,EAAA,GACIE,OAAeA,CAAI;AAAA,EACzB;AAEA,SAAKH,IAGHI,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MAEG,aAAAJ;AAAA,MACA,gBAAAC;AAAA,MACA,QAAAb;AAAA,MACA,UAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,GAAGC;AAAA,IACL;AAAA,EAAA,IAbgB;AAgBtB,GAYMW,IAAsC,CAAC;AAAA,EAC3C,aAAAJ;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAb;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAE;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,EAAE,UAAAY,GAAU,SAAAC,EAAA,IAAYC,EAAgBnB,KAAU,MAAMC,KAAY,IAAIC,CAAK;AAGnF,EAAAkB,EAAU,MAAM;AACd,IAAIH,KAAYC,EAAQ,WACRA,EAAQ,QAAQ,iBAAiB,YAAY,EAAE,CAAC,GACvD,MAAA;AAAA,EAEX,GAAG,CAACD,CAAQ,CAAC;AAGb,QAAMI,IAAgB,CAAC,MAA2B;AAChD,IAAI,EAAE,QAAQ,YAAUT,EAAA;AAAA,EAC1B,GAGMU,IAAgB,CAAC,MAA2C;AAChE,IAAK,EAAE,OAAuB,OAAO,YAAUV,EAAA;AAAA,EACjD,GAGMW,IAAoBC,EAAM,SAAS,IAAIpB,GAAU,CAACqB,GAAOC,MACzDF,EAAM,eAAeC,CAAK,IACrBD,EAAM,aAAaC,GAAO;AAAA,IAC/B,SAASb;AAAA,IACT,OAAOc;AAAA,IACP,UAAUb;AAAA,EAAA,CACJ,IAEHY,CACR,GAEKE,IAAeV,KAAY,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,SAAA;AAE5E,SAAOW;AAAA,IACLb,gBAAAA,EAAAA;AAAAA,MAACc;AAAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAASP;AAAA,QACT,WAAWD;AAAA,QACV,GAAGhB;AAAA,QACJ,IAAG;AAAA,QAEH,UAAAU,gBAAAA,EAAAA;AAAAA,UAACe;AAAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,OAAOH;AAAA,YACP,WAAWI,EAAK7B,CAAK;AAAA,YACrB,KAAKgB;AAAA,YAEJ,UAAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,IAEF,SAAS;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"MenuContainer.es.js","sources":["../../../../../src/components/Menu/MenuContainer.tsx"],"sourcesContent":["import React, { useEffect, ReactNode } from 'react'\nimport { useMenuContext } from '@shared/context/MenuContext'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport * as Styled from './Menu.styled'\nimport { useMenuPosition } from './useMenuPosition'\n\ntype AlignType = 'left' | 'right'\ntype ThemeType = 'light' | 'dark'\n\ninterface MenuContainerProps {\n id: string | undefined\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n theme?: ThemeType\n children: ReactNode\n [key: string]: any\n}\n\nexport const MenuContainer: React.FC<MenuContainerProps> = ({\n id,\n target,\n targetId = '',\n align = 'right',\n theme = 'light',\n children,\n ...props\n}) => {\n const { menuOpen, setMenuOpen, navigate } = useMenuContext()\n const isOpen = menuOpen === id\n\n const handleClose = () => {\n setMenuOpen(false)\n }\n\n const handleNavigate = (path?: string) => {\n console.log('navigate and close')\n handleClose()\n if (!navigate && path) {\n console.log('navigate not found')\n } else if (navigate && path) {\n navigate(path)\n }\n }\n\n if (!isOpen) return null\n\n return (\n <MenuInner\n {...{\n handleClose,\n handleNavigate,\n target,\n targetId,\n align,\n theme,\n children,\n ...props,\n }}\n />\n )\n}\n\ninterface MenuInnerProps {\n handleClose: () => void\n handleNavigate: (path?: string) => void\n target?: HTMLElement | null\n targetId?: string\n align?: AlignType\n children: ReactNode\n [key: string]: any\n}\n\nconst MenuInner: React.FC<MenuInnerProps> = ({\n handleClose,\n handleNavigate,\n target,\n targetId,\n align = 'right',\n children,\n ...props\n}) => {\n const { position, menuRef } = useMenuPosition(target ?? null, targetId ?? '', align)\n\n // Focus management\n useEffect(() => {\n if (position && menuRef.current) {\n const first = menuRef.current.querySelectorAll('li, button')[0] as HTMLElement\n first?.focus()\n }\n }, [position])\n\n // Keyboard handling\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose()\n }\n\n // Click outside handling\n const handleOnClick = (e: React.MouseEvent<HTMLDialogElement>) => {\n if ((e.target as HTMLElement).id === 'dialog') handleClose()\n }\n\n // Attach props to children\n const childrenWithProps = React.Children.map(children, (child, i) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onClose: handleClose,\n index: i,\n navigate: handleNavigate,\n } as any)\n }\n return child\n })\n\n const menuPosition = position || { top: 0, left: 0, opacity: 0, visibility: 'hidden' as const }\n\n return createPortal(\n <Styled.Dialog\n open={true}\n onClick={handleOnClick}\n onKeyDown={handleKeyDown}\n {...props}\n id=\"dialog\"\n >\n <Styled.DialogContent\n id=\"content\"\n style={menuPosition}\n className={clsx(align)}\n ref={menuRef as any}\n >\n {childrenWithProps}\n </Styled.DialogContent>\n </Styled.Dialog>,\n document.body,\n )\n}\n"],"names":["MenuContainer","id","target","targetId","align","theme","children","props","menuOpen","setMenuOpen","navigate","useMenuContext","isOpen","handleClose","handleNavigate","path","jsx","MenuInner","position","menuRef","useMenuPosition","useEffect","handleKeyDown","handleOnClick","childrenWithProps","React","child","i","menuPosition","createPortal","Styled.Dialog","Styled.DialogContent","clsx"],"mappings":";;;;;;;AAoBO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,IAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,EAAE,UAAAC,GAAU,aAAAC,GAAa,UAAAC,EAAA,IAAaC,EAAA,GACtCC,IAASJ,MAAaP,GAEtBY,IAAc,MAAM;AACxB,IAAAJ,EAAY,EAAK;AAAA,EACnB,GAEMK,IAAiB,CAACC,MAAkB;AACxC,YAAQ,IAAI,oBAAoB,GAChCF,EAAA,GACI,CAACH,KAAYK,IACf,QAAQ,IAAI,oBAAoB,IACvBL,KAAYK,KACrBL,EAASK,CAAI;AAAA,EAEjB;AAEA,SAAKH,IAGHI,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MAEG,aAAAJ;AAAA,MACA,gBAAAC;AAAA,MACA,QAAAZ;AAAA,MACA,UAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,GAAGC;AAAA,IACL;AAAA,EAAA,IAbgB;AAgBtB,GAYMU,IAAsC,CAAC;AAAA,EAC3C,aAAAJ;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAZ;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAE;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,EAAE,UAAAW,GAAU,SAAAC,EAAA,IAAYC,EAAgBlB,KAAU,MAAMC,KAAY,IAAIC,CAAK;AAGnF,EAAAiB,EAAU,MAAM;AACd,IAAIH,KAAYC,EAAQ,WACRA,EAAQ,QAAQ,iBAAiB,YAAY,EAAE,CAAC,GACvD,MAAA;AAAA,EAEX,GAAG,CAACD,CAAQ,CAAC;AAGb,QAAMI,IAAgB,CAAC,MAA2B;AAChD,IAAI,EAAE,QAAQ,YAAUT,EAAA;AAAA,EAC1B,GAGMU,IAAgB,CAAC,MAA2C;AAChE,IAAK,EAAE,OAAuB,OAAO,YAAUV,EAAA;AAAA,EACjD,GAGMW,IAAoBC,EAAM,SAAS,IAAInB,GAAU,CAACoB,GAAOC,MACzDF,EAAM,eAAeC,CAAK,IACrBD,EAAM,aAAaC,GAAO;AAAA,IAC/B,SAASb;AAAA,IACT,OAAOc;AAAA,IACP,UAAUb;AAAA,EAAA,CACJ,IAEHY,CACR,GAEKE,IAAeV,KAAY,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,SAAA;AAE5E,SAAOW;AAAA,IACLb,gBAAAA,EAAAA;AAAAA,MAACc;AAAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAASP;AAAA,QACT,WAAWD;AAAA,QACV,GAAGf;AAAA,QACJ,IAAG;AAAA,QAEH,UAAAS,gBAAAA,EAAAA;AAAAA,UAACe;AAAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,OAAOH;AAAA,YACP,WAAWI,EAAK5B,CAAK;AAAA,YACrB,KAAKe;AAAA,YAEJ,UAAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,IAEF,SAAS;AAAA,EAAA;AAEb;"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),t=require("@ynput/ayon-react-components"),M=require("react"),m=require("./Menu.styled.cjs.js"),N=require("lodash"),P=require("react-router-dom"),C=require("clsx");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");const _=require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const q=M.forwardRef(({label:r,icon:i,img:n,highlighted:j,notification:l,selected:p,danger:d,items:R=[],className:g,isLink:o,isDev:h,shortcut:u,disabled:E,powerFeature:I,active:w,...c},y)=>{const a=N.isArray(r)?r:[r],{powerLicense:f,isLoading:k}=_.usePowerpack(),s=!f&&I,x=e.jsxRuntimeExports.jsxs(m.Item,{ref:y,className:C("menu-item",{highlighted:j,selected:p,notification:l,danger:d,dev:h,disabled:E||k,power:s},g),...c,"aria-label":a.join(", "),children:[(i||s)&&e.jsxRuntimeExports.jsx(t.Icon,{icon:s?"bolt":i}),n&&e.jsxRuntimeExports.jsx(m.Img,{src:n,alt:`${r} icon`}),a.map((A,L)=>e.jsxRuntimeExports.jsx("span",{children:A},L)),u&&e.jsxRuntimeExports.jsx(t.ShortcutTag,{style:{minWidth:22,textAlign:"center"},align:"right",children:u}),w&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"check",style:{marginLeft:"auto"}}),!!R.length&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"arrow_right",className:"more"})]});return o?e.jsxRuntimeExports.jsx(P.Link,{to:o,target:c.target,children:x}):x});q.displayName="MenuItem";module.exports=q;
1
+ "use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),t=require("@ynput/ayon-react-components"),M=require("react"),m=require("./Menu.styled.cjs.js"),N=require("lodash"),P=require("react-router-dom"),C=require("clsx");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");const L=require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const q=M.forwardRef(({label:r,icon:i,img:n,highlighted:j,notification:l,selected:p,danger:R,items:d=[],className:h,isLink:o,isDev:g,shortcut:u,disabled:E,powerFeature:I,active:w,...c},y)=>{const x=N.isArray(r)?r:[r],{powerLicense:f}=L.usePowerpack(),s=!f&&I,a=e.jsxRuntimeExports.jsxs(m.Item,{ref:y,className:C("menu-item",{highlighted:j,selected:p,notification:l,danger:R,dev:g,disabled:E,power:s},h),...c,"aria-label":x.join(", "),children:[(i||s)&&e.jsxRuntimeExports.jsx(t.Icon,{icon:s?"bolt":i}),n&&e.jsxRuntimeExports.jsx(m.Img,{src:n,alt:`${r} icon`}),x.map((k,A)=>e.jsxRuntimeExports.jsx("span",{children:k},A)),u&&e.jsxRuntimeExports.jsx(t.ShortcutTag,{style:{minWidth:22,textAlign:"center"},align:"right",children:u}),w&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"check",style:{marginLeft:"auto"}}),!!d.length&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"arrow_right",className:"more"})]});return o?e.jsxRuntimeExports.jsx(P.Link,{to:o,target:c.target,children:a}):a});q.displayName="MenuItem";module.exports=q;
2
2
  //# sourceMappingURL=MenuItem.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.cjs.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense, isLoading } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled || isLoading,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","isLoading","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":"6hCA2BA,MAAMA,EAAWC,EAAAA,WACf,CACE,CACE,MAAAC,EACA,KAAAC,EACA,IAAAC,EACA,YAAAC,EACA,aAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,CAAA,EACR,UAAAC,EACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,aAAAC,EACA,OAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAcC,EAAAA,QAAQlB,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAC7C,CAAE,aAAAmB,EAAc,UAAAC,CAAA,EAAcC,eAAA,EAC9BC,EAAiB,CAACH,GAAgBN,EAElCU,EACJC,EAAAA,kBAAAA,KAACC,EAAAA,KAAA,CACC,IAAAT,EACA,UAAWU,EACT,YACA,CACE,YAAAvB,EACA,SAAAE,EACA,aAAAD,EACA,OAAAE,EACA,IAAKI,EACL,SAAUE,GAAYQ,EACtB,MAAOE,CAAA,EAETd,CAAA,EAED,GAAGO,EACJ,aAAYE,EAAY,KAAK,IAAI,EAE/B,SAAA,EAAAhB,GAAQqB,IAAmBK,EAAAA,kBAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMN,EAAiB,OAASrB,EAAO,EACzEC,GAAOyB,EAAAA,kBAAAA,IAACE,MAAA,CAAW,IAAK3B,EAAK,IAAK,GAAGF,CAAK,QAAS,EACnDiB,EAAY,IAAI,CAACjB,EAAO8B,4BACtB,OAAA,CAAkB,SAAA9B,CAAAA,EAAR8B,CAAc,CAC1B,EACAnB,GACCgB,EAAAA,kBAAAA,IAACI,EAAAA,YAAA,CAAY,MAAO,CAAE,SAAU,GAAI,UAAW,QAAA,EAAY,MAAO,QAC/D,SAAApB,CAAA,CACH,EAEDG,2BAAWc,EAAAA,KAAA,CAAK,KAAK,QAAQ,MAAO,CAAE,WAAY,MAAA,EAAU,EAE5D,CAAC,CAACrB,EAAM,gCAAWqB,EAAAA,KAAA,CAAK,KAAK,cAAc,UAAU,MAAA,CAAO,CAAA,CAAA,CAAA,EAIjE,OAAInB,0BAECuB,EAAAA,KAAA,CAAK,GAAIvB,EAAQ,OAAQM,EAAM,OAC7B,SAAAQ,EACH,EAGKA,CAEX,CACF,EAEAzB,EAAS,YAAc"}
1
+ {"version":3,"file":"MenuItem.cjs.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":"6hCA2BA,MAAMA,EAAWC,EAAAA,WACf,CACE,CACE,MAAAC,EACA,KAAAC,EACA,IAAAC,EACA,YAAAC,EACA,aAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,CAAA,EACR,UAAAC,EACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,aAAAC,EACA,OAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAcC,EAAAA,QAAQlB,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAC7C,CAAE,aAAAmB,CAAA,EAAiBC,eAAA,EACnBC,EAAiB,CAACF,GAAgBN,EAElCS,EACJC,EAAAA,kBAAAA,KAACC,EAAAA,KAAA,CACC,IAAAR,EACA,UAAWS,EACT,YACA,CACE,YAAAtB,EACA,SAAAE,EACA,aAAAD,EACA,OAAAE,EACA,IAAKI,EACL,SAAAE,EACA,MAAOS,CAAA,EAETb,CAAA,EAED,GAAGO,EACJ,aAAYE,EAAY,KAAK,IAAI,EAE/B,SAAA,EAAAhB,GAAQoB,IAAmBK,EAAAA,kBAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMN,EAAiB,OAASpB,EAAO,EACzEC,GAAOwB,EAAAA,kBAAAA,IAACE,MAAA,CAAW,IAAK1B,EAAK,IAAK,GAAGF,CAAK,QAAS,EACnDiB,EAAY,IAAI,CAACjB,EAAO6B,4BACtB,OAAA,CAAkB,SAAA7B,CAAAA,EAAR6B,CAAc,CAC1B,EACAlB,GACCe,EAAAA,kBAAAA,IAACI,EAAAA,YAAA,CAAY,MAAO,CAAE,SAAU,GAAI,UAAW,QAAA,EAAY,MAAO,QAC/D,SAAAnB,CAAA,CACH,EAEDG,2BAAWa,EAAAA,KAAA,CAAK,KAAK,QAAQ,MAAO,CAAE,WAAY,MAAA,EAAU,EAE5D,CAAC,CAACpB,EAAM,gCAAWoB,EAAAA,KAAA,CAAK,KAAK,cAAc,UAAU,MAAA,CAAO,CAAA,CAAA,CAAA,EAIjE,OAAIlB,0BAECsB,EAAAA,KAAA,CAAK,GAAItB,EAAQ,OAAQM,EAAM,OAC7B,SAAAO,EACH,EAGKA,CAEX,CACF,EAEAxB,EAAS,YAAc"}
@@ -1,8 +1,8 @@
1
1
  import { j as r } from "../../../../_virtual/jsx-runtime.es.js";
2
- import { Icon as i, ShortcutTag as M } from "@ynput/ayon-react-components";
3
- import { forwardRef as P } from "react";
4
- import { Item as R, Img as $ } from "./Menu.styled.es.js";
5
- import { isArray as b } from "lodash";
2
+ import { Icon as m, ShortcutTag as L } from "@ynput/ayon-react-components";
3
+ import { forwardRef as M } from "react";
4
+ import { Item as P, Img as R } from "./Menu.styled.es.js";
5
+ import { isArray as $ } from "lodash";
6
6
  import { Link as v } from "react-router-dom";
7
7
  import E from "clsx";
8
8
  import "../../context/RemoteModulesContext.es.js";
@@ -22,27 +22,27 @@ import "../../context/GlobalContext.es.js";
22
22
  import "../../context/ProjectContext.es.js";
23
23
  import "../../context/ProjectFoldersContext.es.js";
24
24
  import "../../context/UriContext.es.js";
25
- const S = P(
25
+ const S = M(
26
26
  ({
27
27
  label: t,
28
- icon: m,
28
+ icon: i,
29
29
  img: e,
30
30
  highlighted: l,
31
31
  notification: f,
32
32
  selected: x,
33
- danger: d,
34
- items: j = [],
35
- className: g,
33
+ danger: j,
34
+ items: u = [],
35
+ className: d,
36
36
  isLink: s,
37
- isDev: u,
37
+ isDev: g,
38
38
  shortcut: p,
39
39
  disabled: h,
40
40
  powerFeature: w,
41
41
  active: I,
42
42
  ...n
43
43
  }, y) => {
44
- const a = b(t) ? t : [t], { powerLicense: A, isLoading: L } = F(), o = !A && w, c = /* @__PURE__ */ r.jsxs(
45
- R,
44
+ const a = $(t) ? t : [t], { powerLicense: A } = F(), o = !A && w, c = /* @__PURE__ */ r.jsxs(
45
+ P,
46
46
  {
47
47
  ref: y,
48
48
  className: E(
@@ -51,22 +51,22 @@ const S = P(
51
51
  highlighted: l,
52
52
  selected: x,
53
53
  notification: f,
54
- danger: d,
55
- dev: u,
56
- disabled: h || L,
54
+ danger: j,
55
+ dev: g,
56
+ disabled: h,
57
57
  power: o
58
58
  },
59
- g
59
+ d
60
60
  ),
61
61
  ...n,
62
62
  "aria-label": a.join(", "),
63
63
  children: [
64
- (m || o) && /* @__PURE__ */ r.jsx(i, { icon: o ? "bolt" : m }),
65
- e && /* @__PURE__ */ r.jsx($, { src: e, alt: `${t} icon` }),
64
+ (i || o) && /* @__PURE__ */ r.jsx(m, { icon: o ? "bolt" : i }),
65
+ e && /* @__PURE__ */ r.jsx(R, { src: e, alt: `${t} icon` }),
66
66
  a.map((N, k) => /* @__PURE__ */ r.jsx("span", { children: N }, k)),
67
- p && /* @__PURE__ */ r.jsx(M, { style: { minWidth: 22, textAlign: "center" }, align: "right", children: p }),
68
- I && /* @__PURE__ */ r.jsx(i, { icon: "check", style: { marginLeft: "auto" } }),
69
- !!j.length && /* @__PURE__ */ r.jsx(i, { icon: "arrow_right", className: "more" })
67
+ p && /* @__PURE__ */ r.jsx(L, { style: { minWidth: 22, textAlign: "center" }, align: "right", children: p }),
68
+ I && /* @__PURE__ */ r.jsx(m, { icon: "check", style: { marginLeft: "auto" } }),
69
+ !!u.length && /* @__PURE__ */ r.jsx(m, { icon: "arrow_right", className: "more" })
70
70
  ]
71
71
  }
72
72
  );
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.es.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense, isLoading } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled || isLoading,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","isLoading","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,IAAWC;AAAA,EACf,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,KAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,QAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAQlB,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAC7C,EAAE,cAAAmB,GAAc,WAAAC,EAAA,IAAcC,EAAA,GAC9BC,IAAiB,CAACH,KAAgBN,GAElCU,IACJC,gBAAAA,EAAAA;AAAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QACA,WAAWU;AAAA,UACT;AAAA,UACA;AAAA,YACE,aAAAvB;AAAA,YACA,UAAAE;AAAA,YACA,cAAAD;AAAA,YACA,QAAAE;AAAA,YACA,KAAKI;AAAA,YACL,UAAUE,KAAYQ;AAAA,YACtB,OAAOE;AAAA,UAAA;AAAA,UAETd;AAAA,QAAA;AAAA,QAED,GAAGO;AAAA,QACJ,cAAYE,EAAY,KAAK,IAAI;AAAA,QAE/B,UAAA;AAAA,WAAAhB,KAAQqB,MAAmBK,gBAAAA,EAAAA,IAACC,GAAA,EAAK,MAAMN,IAAiB,SAASrB,GAAO;AAAA,UACzEC,KAAOyB,gBAAAA,EAAAA,IAACE,GAAA,EAAW,KAAK3B,GAAK,KAAK,GAAGF,CAAK,SAAS;AAAA,UACnDiB,EAAY,IAAI,CAACjB,GAAO8B,4BACtB,QAAA,EAAkB,UAAA9B,EAAAA,GAAR8B,CAAc,CAC1B;AAAA,UACAnB,KACCgB,gBAAAA,EAAAA,IAACI,GAAA,EAAY,OAAO,EAAE,UAAU,IAAI,WAAW,SAAA,GAAY,OAAO,SAC/D,UAAApB,EAAA,CACH;AAAA,UAEDG,2BAAWc,GAAA,EAAK,MAAK,SAAQ,OAAO,EAAE,YAAY,OAAA,GAAU;AAAA,UAE5D,CAAC,CAACrB,EAAM,gCAAWqB,GAAA,EAAK,MAAK,eAAc,WAAU,OAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIjE,WAAInB,0BAECuB,GAAA,EAAK,IAAIvB,GAAQ,QAAQM,EAAM,QAC7B,UAAAQ,GACH,IAGKA;AAAAA,EAEX;AACF;AAEAzB,EAAS,cAAc;"}
1
+ {"version":3,"file":"MenuItem.es.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,IAAWC;AAAA,EACf,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,KAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,QAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAQlB,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAC7C,EAAE,cAAAmB,EAAA,IAAiBC,EAAA,GACnBC,IAAiB,CAACF,KAAgBN,GAElCS,IACJC,gBAAAA,EAAAA;AAAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,WAAWS;AAAA,UACT;AAAA,UACA;AAAA,YACE,aAAAtB;AAAA,YACA,UAAAE;AAAA,YACA,cAAAD;AAAA,YACA,QAAAE;AAAA,YACA,KAAKI;AAAA,YACL,UAAAE;AAAA,YACA,OAAOS;AAAA,UAAA;AAAA,UAETb;AAAA,QAAA;AAAA,QAED,GAAGO;AAAA,QACJ,cAAYE,EAAY,KAAK,IAAI;AAAA,QAE/B,UAAA;AAAA,WAAAhB,KAAQoB,MAAmBK,gBAAAA,EAAAA,IAACC,GAAA,EAAK,MAAMN,IAAiB,SAASpB,GAAO;AAAA,UACzEC,KAAOwB,gBAAAA,EAAAA,IAACE,GAAA,EAAW,KAAK1B,GAAK,KAAK,GAAGF,CAAK,SAAS;AAAA,UACnDiB,EAAY,IAAI,CAACjB,GAAO6B,4BACtB,QAAA,EAAkB,UAAA7B,EAAAA,GAAR6B,CAAc,CAC1B;AAAA,UACAlB,KACCe,gBAAAA,EAAAA,IAACI,GAAA,EAAY,OAAO,EAAE,UAAU,IAAI,WAAW,SAAA,GAAY,OAAO,SAC/D,UAAAnB,EAAA,CACH;AAAA,UAEDG,2BAAWa,GAAA,EAAK,MAAK,SAAQ,OAAO,EAAE,YAAY,OAAA,GAAU;AAAA,UAE5D,CAAC,CAACpB,EAAM,gCAAWoB,GAAA,EAAK,MAAK,eAAc,WAAU,OAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIjE,WAAIlB,0BAECsB,GAAA,EAAK,IAAItB,GAAQ,QAAQM,EAAM,QAC7B,UAAAO,GACH,IAGKA;AAAAA,EAEX;AACF;AAEAxB,EAAS,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../_virtual/jsx-runtime.cjs.js"),z=require("@ynput/ayon-react-components"),n=require("react"),Pe=require("react-router-dom"),he=require("./hooks/useDetailsPanelURLSync.cjs.js"),v=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/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const ge=require("../../api/queries/entities/getEntityPanel.cjs.js"),Te=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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("clsx");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("react-toastify");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("lodash");require("uuid");const De=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");const b=require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");const Re=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/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const Ne=require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");const ve=require("../../context/UriContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");const be=require("./DetailsPanelHeader/DetailsPanelHeader.cjs.js"),Ce=require("./DetailsPanelFiles/DetailsPanelFiles.cjs.js"),we=require("./hooks/useGetEntityPath.cjs.js"),Fe=require("./helpers/getAllProjectsStatuses.cjs.js"),Se=require("./FeedWrapper.cjs.js"),ke=require("./FeedContextWrapper.cjs.js"),Le=require("./helpers/mergeProjectInfo.cjs.js");require("./DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("./DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("./DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");const We=require("../../components/EntityPath/EntityPath.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");const Ie=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");const Ue=require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");const J=["product","representation"],He=({entityType:h,entitySubTypes:x=[],entitiesData:g=[],entities:q=[],tagsOptions:Y=[],disabledStatuses:Z,projectUsers:C,disabledProjectUsers:$,activeProjectUsers:w,projectsInfo:E={},projectNames:ee=[],isSlideOut:d=!1,style:_e={},scope:o,isCompact:re=!1,onClose:T,onWatchersUpdate:F,onOpenViewer:ie,onEntityFocus:te,onOpen:S,onUriOpen:k,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,entityListId:U,guestCategories:ue={}})=>{const{closeSlideOut:H,openPip:se,user:O,isGuest:ne,entities:u,setEntities:D,slideOut:_}=b.useDetailsPanelContext(),{currentTab:a,setTab:m,isFeed:qe}=b.useScopedDetailsPanel(o),[Ae,ae]=Pe.useSearchParams(),A=n.useRef(!1),i=u?.entityType??h,G=u?.entities??q,oe=u?.entitySubTypes??x,ce=u?.entities?[]:g,c=u?.entities?u.entities.map(e=>e.projectName):ee;n.useEffect(()=>{S&&!A.current&&(A.current=!0,S())},[]),n.useEffect(()=>{J.includes(i)&&a!=="details"&&m("details")},[i,a,m]),n.useEffect(()=>{q.length&&u&&D(null)},[q,u,D]);const j=n.useMemo(()=>Le(E,c),[E,c]),M=n.useMemo(()=>({task:j.taskTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{}),folder:j.folderTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{}),product:j.productTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{})}),[j]);n.useEffect(()=>{a==="files"&&i!=="version"&&m("activity")},[i,a,o]);let l=G.length?G.map(e=>({id:e.id,projectName:e.projectName})):ce.map(e=>({id:e.id,projectName:e.projectName}));l=l.filter(e=>e.id);const{data:s=[],isFetching:p,isError:le,originalArgs:pe}=ge.useGetEntitiesDetailsPanelQuery({entityType:i,entities:l},{skip:!l.length||!Te.detailsPanelEntityTypes.includes(i)});n.useEffect(()=>{d||H()},[pe,d]),n.useEffect(()=>{if(!p&&u?.source&&["uri","url"].includes(u.source)&&u?.entities?.length&&k){const e=s.find(r=>r.id===u.entities[0].id);if(!e)return;k(e)}},[s,p]);const V=Fe(E),y=c[0],B=E[y]||{},de=s[0]||{},P=s[s.length-1],R=c[c.length-1],[Q,ye]=we({entity:de,entityType:i,projectName:y,isLoading:p}),{setEntityUri:me,setUri:fe}=ve.useURIContext();n.useEffect(()=>{if(!P?.parents||!R)return;const{folderPath:e,taskName:r,versionName:f,productName:X}=De.extractEntityHierarchyFromParents(P.parents,i,P.name);return me({projectName:R,folderPath:e,taskName:r,productName:X,versionName:f}),()=>{fe("")}},[s,c,i]),he({entityData:P,project:R,activeEntityType:i,entitiesToQuery:l});const xe=()=>{ae(e=>{const r=new URLSearchParams(e);return r.delete("project"),r.delete("type"),r.delete("id"),r},{replace:!0})},N=()=>{T?.(),D(null),xe(),H()};n.useEffect(()=>{const e=r=>{if(r.key==="Escape"&&T){const f=r.target;if(["INPUT","TEXTAREA","SELECT"].includes(f.tagName)||f.isContentEditable||d===!1&&(f.closest("#viewer-dialog")||_))return;N()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,d,_]);const{requestPipWindow:Ee}=Re.usePiPWindow(),je=()=>{se({entityType:i,entities:l,scope:o}),Ee(500,500)},K=()=>!(c.length>1||ne&&(!U||!Object.prototype.hasOwnProperty.call(ue,O.attrib?.email||"")));return t.jsxRuntimeExports.jsx(t.jsxRuntimeExports.Fragment,{children:t.jsxRuntimeExports.jsxs(v.Panel,{className:"details-panel",children:[t.jsxRuntimeExports.jsxs(v.Toolbar,{children:[t.jsxRuntimeExports.jsx(We.EntityPath,{segments:Q,versions:ye,projectName:y,hideProjectName:d,isLoading:p||!Q.length,entityType:i,scope:o,entityTypeIcons:M}),t.jsxRuntimeExports.jsxs(v.RightTools,{className:"right-tools",children:[t.jsxRuntimeExports.jsx(Ue.Watchers,{entities:l,entityType:i,options:C||[],onWatchersUpdate:F&&F,userName:O.name}),t.jsxRuntimeExports.jsx(z.Button,{icon:"picture_in_picture",variant:"text","data-tooltip":"Picture in Picture",onClick:je}),(T||q)&&t.jsxRuntimeExports.jsx(z.Button,{icon:"close",variant:"text",onClick:N,"data-shortcut":"Escape"})]})]}),t.jsxRuntimeExports.jsx(be,{entityType:i,entitySubTypes:oe,entities:s,users:C,disabledAssignees:$,disabledStatuses:Z,tagsOptions:Y,isFetching:p,isCompact:re,currentTab:a,onTabChange:m,entityTypeIcons:M,onOpenViewer:e=>ie?.(e),onEntityFocus:te}),t.jsxRuntimeExports.jsxs(Ne.ProjectContextProvider,{projectName:y,children:[qe&&!le&&t.jsxRuntimeExports.jsx(Se,{entityType:i,entities:s,activeUsers:w||[],projectInfo:B,projectName:y,disabled:!K(),scope:o,statuses:V,readOnly:!1,entityListId:U,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,currentTab:a,setCurrentTab:m,isSlideOut:d}),a==="files"&&t.jsxRuntimeExports.jsx(Ce,{entities:s,scope:o,isLoadingVersion:p}),a==="details"&&t.jsxRuntimeExports.jsx(ke,{entityType:i,entities:s,activeUsers:w||[],projectInfo:B,projectName:y,disabled:!K(),scope:o,statuses:V,readOnly:!1,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,children:t.jsxRuntimeExports.jsx(Ie.DetailsPanelDetails,{entities:s,isLoading:p})})]})]})})},Oe=({isOpen:h,entityType:x,...g})=>{const{entities:q}=b.useDetailsPanelContext();return!h&&!q||!x&&!q?null:t.jsxRuntimeExports.jsx(He,{...g,entityType:x||q?.entityType})};exports.DetailsPanel=Oe;exports.entitiesWithoutFeed=J;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../_virtual/jsx-runtime.cjs.js"),z=require("@ynput/ayon-react-components"),n=require("react"),he=require("./hooks/useDetailsPanelURLSync.cjs.js"),v=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/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const ge=require("../../api/queries/entities/getEntityPanel.cjs.js"),Te=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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("clsx");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("react-toastify");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("lodash");require("uuid");const De=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");const b=require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");const Re=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/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const Ne=require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");const ve=require("../../context/UriContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");const be=require("./DetailsPanelHeader/DetailsPanelHeader.cjs.js"),Ce=require("./DetailsPanelFiles/DetailsPanelFiles.cjs.js"),we=require("./hooks/useGetEntityPath.cjs.js"),Fe=require("./helpers/getAllProjectsStatuses.cjs.js"),Se=require("./FeedWrapper.cjs.js"),ke=require("./FeedContextWrapper.cjs.js"),Le=require("./helpers/mergeProjectInfo.cjs.js");require("./DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("./DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("./DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");const We=require("../../components/EntityPath/EntityPath.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");const Ie=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");const Ue=require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");const J=["product","representation"],He=({entityType:h,entitySubTypes:x=[],entitiesData:g=[],entities:q=[],tagsOptions:Y=[],disabledStatuses:Z,projectUsers:C,disabledProjectUsers:$,activeProjectUsers:w,projectsInfo:E={},projectNames:ee=[],isSlideOut:d=!1,style:_e={},scope:o,isCompact:re=!1,onClose:T,onWatchersUpdate:F,onOpenViewer:ie,onEntityFocus:te,onOpen:S,onUriOpen:k,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,entityListId:U,guestCategories:ue={}})=>{const{closeSlideOut:H,openPip:se,user:O,isGuest:ne,entities:u,setEntities:D,slideOut:_,useSearchParams:qe}=b.useDetailsPanelContext(),{currentTab:a,setTab:m,isFeed:ae}=b.useScopedDetailsPanel(o),[Ae,oe]=qe(),A=n.useRef(!1),i=u?.entityType??h,G=u?.entities??q,ce=u?.entitySubTypes??x,le=u?.entities?[]:g,c=u?.entities?u.entities.map(e=>e.projectName):ee;n.useEffect(()=>{S&&!A.current&&(A.current=!0,S())},[]),n.useEffect(()=>{J.includes(i)&&a!=="details"&&m("details")},[i,a,m]),n.useEffect(()=>{q.length&&u&&D(null)},[q,u,D]);const j=n.useMemo(()=>Le(E,c),[E,c]),M=n.useMemo(()=>({task:j.taskTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{}),folder:j.folderTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{}),product:j.productTypes.filter(e=>!!e.icon).reduce((e,r)=>({...e,[r.name]:r.icon}),{})}),[j]);n.useEffect(()=>{a==="files"&&i!=="version"&&m("activity")},[i,a,o]);let l=G.length?G.map(e=>({id:e.id,projectName:e.projectName})):le.map(e=>({id:e.id,projectName:e.projectName}));l=l.filter(e=>e.id);const{data:s=[],isFetching:p,isError:pe,originalArgs:de}=ge.useGetEntitiesDetailsPanelQuery({entityType:i,entities:l},{skip:!l.length||!Te.detailsPanelEntityTypes.includes(i)});n.useEffect(()=>{d||H()},[de,d]),n.useEffect(()=>{if(!p&&u?.source&&["uri","url"].includes(u.source)&&u?.entities?.length&&k){const e=s.find(r=>r.id===u.entities[0].id);if(!e)return;k(e)}},[s,p]);const V=Fe(E),y=c[0],B=E[y]||{},ye=s[0]||{},P=s[s.length-1],R=c[c.length-1],[Q,me]=we({entity:ye,entityType:i,projectName:y,isLoading:p}),{setEntityUri:fe,setUri:xe}=ve.useURIContext();n.useEffect(()=>{if(!P?.parents||!R)return;const{folderPath:e,taskName:r,versionName:f,productName:X}=De.extractEntityHierarchyFromParents(P.parents,i,P.name);return fe({projectName:R,folderPath:e,taskName:r,productName:X,versionName:f}),()=>{xe("")}},[s,c,i]),he({entityData:P,project:R,activeEntityType:i,entitiesToQuery:l});const Ee=()=>{oe(e=>{const r=new URLSearchParams(e);return r.delete("project"),r.delete("type"),r.delete("id"),r},{replace:!0})},N=()=>{T?.(),D(null),Ee(),H()};n.useEffect(()=>{const e=r=>{if(r.key==="Escape"&&T){const f=r.target;if(["INPUT","TEXTAREA","SELECT"].includes(f.tagName)||f.isContentEditable||d===!1&&(f.closest("#viewer-dialog")||_))return;N()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,d,_]);const{requestPipWindow:je}=Re.usePiPWindow(),Pe=()=>{se({entityType:i,entities:l,scope:o}),je(500,500)},K=()=>!(c.length>1||ne&&(!U||!Object.prototype.hasOwnProperty.call(ue,O.attrib?.email||"")));return t.jsxRuntimeExports.jsx(t.jsxRuntimeExports.Fragment,{children:t.jsxRuntimeExports.jsxs(v.Panel,{className:"details-panel",children:[t.jsxRuntimeExports.jsxs(v.Toolbar,{children:[t.jsxRuntimeExports.jsx(We.EntityPath,{segments:Q,versions:me,projectName:y,hideProjectName:d,isLoading:p||!Q.length,entityType:i,scope:o,entityTypeIcons:M}),t.jsxRuntimeExports.jsxs(v.RightTools,{className:"right-tools",children:[t.jsxRuntimeExports.jsx(Ue.Watchers,{entities:l,entityType:i,options:C||[],onWatchersUpdate:F&&F,userName:O.name}),t.jsxRuntimeExports.jsx(z.Button,{icon:"picture_in_picture",variant:"text","data-tooltip":"Picture in Picture",onClick:Pe}),(T||q)&&t.jsxRuntimeExports.jsx(z.Button,{icon:"close",variant:"text",onClick:N,"data-shortcut":"Escape"})]})]}),t.jsxRuntimeExports.jsx(be,{entityType:i,entitySubTypes:ce,entities:s,users:C,disabledAssignees:$,disabledStatuses:Z,tagsOptions:Y,isFetching:p,isCompact:re,currentTab:a,onTabChange:m,entityTypeIcons:M,onOpenViewer:e=>ie?.(e),onEntityFocus:te}),t.jsxRuntimeExports.jsxs(Ne.ProjectContextProvider,{projectName:y,children:[ae&&!pe&&t.jsxRuntimeExports.jsx(Se,{entityType:i,entities:s,activeUsers:w||[],projectInfo:B,projectName:y,disabled:!K(),scope:o,statuses:V,readOnly:!1,entityListId:U,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,currentTab:a,setCurrentTab:m,isSlideOut:d}),a==="files"&&t.jsxRuntimeExports.jsx(Ce,{entities:s,scope:o,isLoadingVersion:p}),a==="details"&&t.jsxRuntimeExports.jsx(ke,{entityType:i,entities:s,activeUsers:w||[],projectInfo:B,projectName:y,disabled:!K(),scope:o,statuses:V,readOnly:!1,annotations:L,removeAnnotation:W,exportAnnotationComposite:I,children:t.jsxRuntimeExports.jsx(Ie.DetailsPanelDetails,{entities:s,isLoading:p})})]})]})})},Oe=({isOpen:h,entityType:x,...g})=>{const{entities:q}=b.useDetailsPanelContext();return!h&&!q||!x&&!q?null:t.jsxRuntimeExports.jsx(He,{...g,entityType:x||q?.entityType})};exports.DetailsPanel=Oe;exports.entitiesWithoutFeed=J;
2
2
  //# sourceMappingURL=DetailsPanel.cjs.js.map