@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.
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -68
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuContainer.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuContainer.es.js +58 -59
- package/dist/shared/src/components/Menu/MenuContainer.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.es.js +21 -21
- package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -22
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +79 -80
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/MenuContext.cjs.js +1 -1
- package/dist/shared/src/context/MenuContext.cjs.js.map +1 -1
- package/dist/shared/src/context/MenuContext.es.js +11 -10
- package/dist/shared/src/context/MenuContext.es.js.map +1 -1
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -0
- package/dist/types/context/MenuContext.d.ts +3 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { UserModel } from '@shared/api'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useGlobalContext } from './GlobalContext'\nimport { useURIContext } from './UriContext'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'details' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n // get current user\n const { user: currentUser } = useGlobalContext()\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : currentUser?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : currentUser?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = useSearchParams()\n\n // on first load, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the activity tab\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'activity',\n })\n }\n }\n }, [])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [tab, setTab] = useState<DetailsPanelTab>(() => tabsByScope[scope] ?? getTabForScope(scope))\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const currentTab = tab\n const isFeed = ['activity', 'comments', 'versions', 'checklists'].includes(currentTab)\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","currentUser","useGlobalContext","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","useLocation","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","useSearchParams","result","entityUriData","r","entityData","projectName","id","newEntities","err","project","type","activity","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","tab","setTab","updateTab","newTab","currentTab","isFeed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { UserModel } from '@shared/api'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'details' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n // on first load, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the activity tab\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'activity',\n })\n }\n }\n }, [])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [tab, setTab] = useState<DetailsPanelTab>(() => tabsByScope[scope] ?? getTabForScope(scope))\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const currentTab = tab\n const isFeed = ['activity', 'comments', 'versions', 'checklists'].includes(currentTab)\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","result","entityUriData","r","entityData","projectName","id","newEntities","err","project","type","activity","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","tab","setTab","updateTab","newTab","currentTab","isFeed"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),u=o.createContext(void 0),M=({children:t,useNavigate:r})=>{const[s,n]=o.useState(!1),i=r(),c={menuOpen:s,setMenuOpen:e=>{n(e)},toggleMenuOpen:e=>{if(!e){n(!1);return}n(e===s?!1:e)},navigate:i};return a.jsxRuntimeExports.jsx(u.Provider,{value:c,children:t})},x=()=>{const t=o.useContext(u);if(t===void 0)throw new Error("useMenuContext must be used within a MenuProvider");return t};exports.MenuProvider=M;exports.useMenuContext=x;
|
|
2
2
|
//# sourceMappingURL=MenuContext.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContext.cjs.js","sources":["../../../../src/context/MenuContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface MenuContextType {\n menuOpen: string | false\n setMenuOpen: (menuId: string | false) => void\n toggleMenuOpen: (menuId: string | false) => void\n}\n\nconst MenuContext = createContext<MenuContextType | undefined>(undefined)\n\ninterface MenuProviderProps {\n children: ReactNode\n}\n\nexport const MenuProvider: React.FC<MenuProviderProps> = ({ children }) => {\n const [menuOpen, setMenuOpenState] = useState<string | false>(false)\n\n const setMenuOpen = (menuId: string | false) => {\n setMenuOpenState(menuId)\n }\n\n const toggleMenuOpen = (menuId: string | false) => {\n // no payload means toggle off\n if (!menuId) {\n setMenuOpenState(false)\n return\n }\n\n // if payload is same as current state, toggle off\n if (menuId === menuOpen) {\n setMenuOpenState(false)\n } else {\n // else set payload\n setMenuOpenState(menuId)\n }\n }\n\n const value: MenuContextType = {\n menuOpen,\n setMenuOpen,\n toggleMenuOpen,\n }\n\n return <MenuContext.Provider value={value}>{children}</MenuContext.Provider>\n}\n\nexport const useMenuContext = (): MenuContextType => {\n const context = useContext(MenuContext)\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuProvider')\n }\n return context\n}\n"],"names":["MenuContext","createContext","MenuProvider","children","menuOpen","setMenuOpenState","useState","value","menuId","jsx","useMenuContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuContext.cjs.js","sources":["../../../../src/context/MenuContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode } from 'react'\nimport { NavigateFunction, useNavigate } from 'react-router'\n\ninterface MenuContextType {\n menuOpen: string | false\n setMenuOpen: (menuId: string | false) => void\n toggleMenuOpen: (menuId: string | false) => void\n navigate: NavigateFunction\n}\n\nconst MenuContext = createContext<MenuContextType | undefined>(undefined)\n\ninterface MenuProviderProps {\n children: ReactNode\n useNavigate: typeof useNavigate\n}\n\nexport const MenuProvider: React.FC<MenuProviderProps> = ({ children, useNavigate }) => {\n const [menuOpen, setMenuOpenState] = useState<string | false>(false)\n const navigate = useNavigate()\n\n const setMenuOpen = (menuId: string | false) => {\n setMenuOpenState(menuId)\n }\n\n const toggleMenuOpen = (menuId: string | false) => {\n // no payload means toggle off\n if (!menuId) {\n setMenuOpenState(false)\n return\n }\n\n // if payload is same as current state, toggle off\n if (menuId === menuOpen) {\n setMenuOpenState(false)\n } else {\n // else set payload\n setMenuOpenState(menuId)\n }\n }\n\n const value: MenuContextType = {\n menuOpen,\n setMenuOpen,\n toggleMenuOpen,\n navigate,\n }\n\n return <MenuContext.Provider value={value}>{children}</MenuContext.Provider>\n}\n\nexport const useMenuContext = (): MenuContextType => {\n const context = useContext(MenuContext)\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuProvider')\n }\n return context\n}\n"],"names":["MenuContext","createContext","MenuProvider","children","useNavigate","menuOpen","setMenuOpenState","useState","navigate","value","menuId","jsx","useMenuContext","context","useContext"],"mappings":"2JAUMA,EAAcC,EAAAA,cAA2C,MAAS,EAO3DC,EAA4C,CAAC,CAAE,SAAAC,EAAU,YAAAC,KAAkB,CACtF,KAAM,CAACC,EAAUC,CAAgB,EAAIC,EAAAA,SAAyB,EAAK,EAC7DC,EAAWJ,EAAAA,EAsBXK,EAAyB,CAC7B,SAAAJ,EACA,YAtBmBK,GAA2B,CAC9CJ,EAAiBI,CAAM,CACzB,EAqBE,eAnBsBA,GAA2B,CAEjD,GAAI,CAACA,EAAQ,CACXJ,EAAiB,EAAK,EACtB,MACF,CAIEA,EADEI,IAAWL,EACI,GAGAK,CAHK,CAK1B,EAME,SAAAF,CAAA,EAGF,OAAOG,EAAAA,kBAAAA,IAACX,EAAY,SAAZ,CAAqB,MAAAS,EAAe,SAAAN,CAAA,CAAS,CACvD,EAEaS,EAAiB,IAAuB,CACnD,MAAMC,EAAUC,EAAAA,WAAWd,CAAW,EACtC,GAAIa,IAAY,OACd,MAAM,IAAI,MAAM,mDAAmD,EAErE,OAAOA,CACT"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { createContext as
|
|
3
|
-
const s =
|
|
4
|
-
const [o, n] =
|
|
1
|
+
import { j as a } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import { createContext as c, useState as p, useContext as x } from "react";
|
|
3
|
+
const s = c(void 0), g = ({ children: t, useNavigate: r }) => {
|
|
4
|
+
const [o, n] = p(!1), u = r(), i = {
|
|
5
5
|
menuOpen: o,
|
|
6
6
|
setMenuOpen: (e) => {
|
|
7
7
|
n(e);
|
|
@@ -12,17 +12,18 @@ const s = i(void 0), l = ({ children: t }) => {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
n(e === o ? !1 : e);
|
|
15
|
-
}
|
|
15
|
+
},
|
|
16
|
+
navigate: u
|
|
16
17
|
};
|
|
17
|
-
return /* @__PURE__ */
|
|
18
|
-
},
|
|
19
|
-
const t =
|
|
18
|
+
return /* @__PURE__ */ a.jsx(s.Provider, { value: i, children: t });
|
|
19
|
+
}, O = () => {
|
|
20
|
+
const t = x(s);
|
|
20
21
|
if (t === void 0)
|
|
21
22
|
throw new Error("useMenuContext must be used within a MenuProvider");
|
|
22
23
|
return t;
|
|
23
24
|
};
|
|
24
25
|
export {
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
g as MenuProvider,
|
|
27
|
+
O as useMenuContext
|
|
27
28
|
};
|
|
28
29
|
//# sourceMappingURL=MenuContext.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContext.es.js","sources":["../../../../src/context/MenuContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface MenuContextType {\n menuOpen: string | false\n setMenuOpen: (menuId: string | false) => void\n toggleMenuOpen: (menuId: string | false) => void\n}\n\nconst MenuContext = createContext<MenuContextType | undefined>(undefined)\n\ninterface MenuProviderProps {\n children: ReactNode\n}\n\nexport const MenuProvider: React.FC<MenuProviderProps> = ({ children }) => {\n const [menuOpen, setMenuOpenState] = useState<string | false>(false)\n\n const setMenuOpen = (menuId: string | false) => {\n setMenuOpenState(menuId)\n }\n\n const toggleMenuOpen = (menuId: string | false) => {\n // no payload means toggle off\n if (!menuId) {\n setMenuOpenState(false)\n return\n }\n\n // if payload is same as current state, toggle off\n if (menuId === menuOpen) {\n setMenuOpenState(false)\n } else {\n // else set payload\n setMenuOpenState(menuId)\n }\n }\n\n const value: MenuContextType = {\n menuOpen,\n setMenuOpen,\n toggleMenuOpen,\n }\n\n return <MenuContext.Provider value={value}>{children}</MenuContext.Provider>\n}\n\nexport const useMenuContext = (): MenuContextType => {\n const context = useContext(MenuContext)\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuProvider')\n }\n return context\n}\n"],"names":["MenuContext","createContext","MenuProvider","children","menuOpen","setMenuOpenState","useState","value","menuId","jsx","useMenuContext","context","useContext"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"MenuContext.es.js","sources":["../../../../src/context/MenuContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, ReactNode } from 'react'\nimport { NavigateFunction, useNavigate } from 'react-router'\n\ninterface MenuContextType {\n menuOpen: string | false\n setMenuOpen: (menuId: string | false) => void\n toggleMenuOpen: (menuId: string | false) => void\n navigate: NavigateFunction\n}\n\nconst MenuContext = createContext<MenuContextType | undefined>(undefined)\n\ninterface MenuProviderProps {\n children: ReactNode\n useNavigate: typeof useNavigate\n}\n\nexport const MenuProvider: React.FC<MenuProviderProps> = ({ children, useNavigate }) => {\n const [menuOpen, setMenuOpenState] = useState<string | false>(false)\n const navigate = useNavigate()\n\n const setMenuOpen = (menuId: string | false) => {\n setMenuOpenState(menuId)\n }\n\n const toggleMenuOpen = (menuId: string | false) => {\n // no payload means toggle off\n if (!menuId) {\n setMenuOpenState(false)\n return\n }\n\n // if payload is same as current state, toggle off\n if (menuId === menuOpen) {\n setMenuOpenState(false)\n } else {\n // else set payload\n setMenuOpenState(menuId)\n }\n }\n\n const value: MenuContextType = {\n menuOpen,\n setMenuOpen,\n toggleMenuOpen,\n navigate,\n }\n\n return <MenuContext.Provider value={value}>{children}</MenuContext.Provider>\n}\n\nexport const useMenuContext = (): MenuContextType => {\n const context = useContext(MenuContext)\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuProvider')\n }\n return context\n}\n"],"names":["MenuContext","createContext","MenuProvider","children","useNavigate","menuOpen","setMenuOpenState","useState","navigate","value","menuId","jsx","useMenuContext","context","useContext"],"mappings":";;AAUA,MAAMA,IAAcC,EAA2C,MAAS,GAO3DC,IAA4C,CAAC,EAAE,UAAAC,GAAU,aAAAC,QAAkB;AACtF,QAAM,CAACC,GAAUC,CAAgB,IAAIC,EAAyB,EAAK,GAC7DC,IAAWJ,EAAAA,GAsBXK,IAAyB;AAAA,IAC7B,UAAAJ;AAAA,IACA,aAtBkB,CAACK,MAA2B;AAC9C,MAAAJ,EAAiBI,CAAM;AAAA,IACzB;AAAA,IAqBE,gBAnBqB,CAACA,MAA2B;AAEjD,UAAI,CAACA,GAAQ;AACX,QAAAJ,EAAiB,EAAK;AACtB;AAAA,MACF;AAGA,MACEA,EADEI,MAAWL,IACI,KAGAK,CAHK;AAAA,IAK1B;AAAA,IAME,UAAAF;AAAA,EAAA;AAGF,SAAOG,gBAAAA,EAAAA,IAACX,EAAY,UAAZ,EAAqB,OAAAS,GAAe,UAAAN,EAAA,CAAS;AACvD,GAEaS,IAAiB,MAAuB;AACnD,QAAMC,IAAUC,EAAWd,CAAW;AACtC,MAAIa,MAAY;AACd,UAAM,IAAI,MAAM,mDAAmD;AAErE,SAAOA;AACT;"}
|
|
@@ -470,6 +470,7 @@ export declare const useGetKanbanQuery: <R extends Record<string, any> = import(
|
|
|
470
470
|
};
|
|
471
471
|
type GetProjectsInfoParams = {
|
|
472
472
|
projects: string[];
|
|
473
|
+
anatomy?: boolean;
|
|
473
474
|
};
|
|
474
475
|
export type ProjectModeWithAnatomy = ProjectModel & {
|
|
475
476
|
anatomy?: Anatomy;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { default as React, ReactNode } from 'react';
|
|
2
|
+
import { NavigateFunction, useNavigate } from 'react-router';
|
|
2
3
|
interface MenuContextType {
|
|
3
4
|
menuOpen: string | false;
|
|
4
5
|
setMenuOpen: (menuId: string | false) => void;
|
|
5
6
|
toggleMenuOpen: (menuId: string | false) => void;
|
|
7
|
+
navigate: NavigateFunction;
|
|
6
8
|
}
|
|
7
9
|
interface MenuProviderProps {
|
|
8
10
|
children: ReactNode;
|
|
11
|
+
useNavigate: typeof useNavigate;
|
|
9
12
|
}
|
|
10
13
|
export declare const MenuProvider: React.FC<MenuProviderProps>;
|
|
11
14
|
export declare const useMenuContext: () => MenuContextType;
|