'use client' import { parseAsString, useQueryState } from 'nuqs' import * as React from 'react' import { useStore as useAppStore } from '@/app/components/app/store' import { useStore, useWorkflowStore } from '@/app/components/workflow/store' import { isArtifactTab } from './constants' import ArtifactsSection from './file-tree/artifacts/artifacts-section' import FileTree from './file-tree/tree/file-tree' import { useSkillAutoSave } from './hooks/use-skill-auto-save' import { SkillSaveProvider } from './hooks/use-skill-save-manager' import ContentArea from './skill-body/layout/content-area' import ContentBody from './skill-body/layout/content-body' import Sidebar from './skill-body/layout/sidebar' import SkillPageLayout from './skill-body/layout/skill-page-layout' import ArtifactContentPanel from './skill-body/panels/artifact-content-panel' import FileContentPanel from './skill-body/panels/file-content-panel' import SidebarSearchAdd from './skill-body/sidebar-search-add' import FileTabs from './skill-body/tabs/file-tabs' const SkillAutoSaveManager = () => { useSkillAutoSave() return null } const ContentRouter = () => { const activeTabId = useStore(s => s.activeTabId) if (isArtifactTab(activeTabId)) return return } const SkillMain = () => { const appDetail = useAppStore(s => s.appDetail) const appId = appDetail?.id || '' const [queryFileId] = useQueryState('fileId', parseAsString) const storeApi = useWorkflowStore() const openedFileRef = React.useRef(null) React.useEffect(() => { if (!queryFileId || openedFileRef.current === queryFileId) return openedFileRef.current = queryFileId storeApi.getState().openTab(queryFileId, { pinned: true }) }, [queryFileId, storeApi]) return (
) } export default React.memo(SkillMain)