@pstdio/workbench 0.35.0 → 0.36.1
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/extensions.d.ts +11 -10
- package/dist/extensions.js +374 -368
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-DKu2l8bT.js +637 -0
- package/dist/file-renderer-view-DKu2l8bT.js.map +1 -0
- package/dist/{index-DDmpcM-n.d.ts → index-DSsmgN2a.d.ts} +54 -5
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1402 -1493
- package/dist/index.js.map +1 -1
- package/dist/{kanban-presentation-CX6Smht6.d.ts → kanban-presentation-BWhkLbw3.d.ts} +1 -1
- package/dist/navigation-tree-registry-CTidmvVs.js +91 -0
- package/dist/navigation-tree-registry-CTidmvVs.js.map +1 -0
- package/dist/{react-C8jwnIWT.js → react-BxrTklvM.js} +2807 -2640
- package/dist/react-BxrTklvM.js.map +1 -0
- package/dist/react.d.ts +3 -3
- package/dist/react.js +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/{workbench-renderers-BK6g8mG_.js → workbench-renderers-RPeMVtTc.js} +206 -101
- package/dist/workbench-renderers-RPeMVtTc.js.map +1 -0
- package/package.json +3 -3
- package/dist/file-renderer-view-CZhPOpNc.js +0 -628
- package/dist/file-renderer-view-CZhPOpNc.js.map +0 -1
- package/dist/react-C8jwnIWT.js.map +0 -1
- package/dist/workbench-renderers-BK6g8mG_.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-renderer-view-DKu2l8bT.js","names":["ResourceRef","FILE_SECTION_NAVIGATION_METADATA_KEY","FileSectionAnchor","id","heading","occurrence","FileSectionNavigation","treeId","targetNodeId","anchors","isAnchor","value","anchor","Record","occurrenceIsValid","undefined","Number","isInteger","getFileSectionNavigation","resource","metadata","navigation","Array","isArray","every","resolveFileSectionTargetId","selectedNodeId","some","PreviousFileSectionNavigation","resourceKey","anchorIds","shouldClearFileSectionSelection","input","previous","current","currentResourceKey","includes","FileKind","IMAGE_EXTENSIONS","Set","PROSE_EXTENSIONS","CODE_LANGUAGE_BY_EXTENSION","Record","ts","tsx","js","jsx","mjs","cjs","json","jsonc","py","rb","rs","go","java","kt","c","h","cpp","cc","hpp","cs","php","swift","sh","bash","zsh","sql","css","scss","less","html","xml","yml","yaml","toml","ini","dockerfile","graphql","gql","md","markdown","txt","extensionOf","fileName","dot","lastIndexOf","length","slice","toLowerCase","isImage","mimeType","startsWith","has","pickFileKind","extension","codeLanguageFor","FileRendererContent","codeLanguageFor","pickFileKind","FileRendererPresentation","kind","isEditable","language","resolveFileRendererPresentation","content","contributionCanSave","emptyState","automaticKind","fileName","mimeType","editable","textRenderer","Box","Center","Flex","Image","Text","EmptyState","CodeEditor","MarkdownEditor","ReactNode","RefObject","FileRendererContent","resolveFileRendererPresentation","FileRendererContentViewProps","content","editorKey","errorNotice","contributionCanSave","onActiveSectionChange","sectionId","onChange","value","rendererRef","HTMLDivElement","sectionNavigation","anchors","Array","id","heading","occurrence","targetId","title","FileRendererContentView","props","$","_c","t0","presentation","kind","t1","emptyState","t2","description","t3","t4","dataUrl","Symbol","for","fileName","isEditable","undefined","language","placeholder","t5","_c","FileRendererRefreshEnvelope","FileRendererRefreshOrigin","FileRendererSaveResult","FileEditControllerState","dirty","saving","saveError","removed","FileEditControllerInput","binding","Omit","resourceKey","debounceMs","load","event","save","value","origin","Promise","createOperationId","onStateChange","state","FileEditController","ReturnType","createFileEditController","input","baseline","baselineRevision","draft","activeSave","deferredRevision","genericRefreshDeferred","timer","setTimeout","operationSequence","seenRefreshRevisions","Set","completedOperationIds","describeError","error","Error","message","getState","const","notify","clearTimer","clearTimeout","nextOperationId","Date","now","hasPendingLocalState","Boolean","deferRefresh","revision","localeCompare","isSelfRefresh","operationId","rendererId","instanceId","has","takeDeferredRefresh","savedRevision","generic","undefined","runSave","resolve","then","result","add","size","delete","values","next","schedule","catch","getDraft","markRemoved","retain","getBaseline","setBaseline","acceptLoaded","shown","handleChange","handleRefreshEvent","retry","retryLoad","flush","Button","Flex","Text","FileRendererErrorNotice","props","$","_c","message","onRetry","t0","t1","t2","_c","resourceKey","ResourceRef","FileRendererLoadKeyInput","fileRendererId","resource","stableValue","value","Array","isArray","map","Object","fromEntries","entries","Record","sort","left","right","localeCompare","key","entry","createFileRendererLoadKey","input","resourceValue","id","type","metadata","JSON","stringify","isCurrentLoadedFile","loaded","loadKey","Text","Header","resolveFileIconElement","useFileIconThemePreference","FileRendererPathHeader","props","$","_c","fileName","filePath","activeFileIconTheme","t0","theme","t1","t2","t3","_c","Box","Button","Center","Flex","Spinner","Text","resourceKey","ReactNode","useEffect","useLayoutEffect","useRef","useState","RegisteredFileRendererContribution","WorkbenchCore","WorkbenchPanelInstance","getWorkbenchRenderers","rendererReadKey","getFileSectionNavigation","resolveFileSectionTargetId","shouldClearFileSectionSelection","FileRendererContentView","createFileEditController","FileEditController","FileEditControllerState","FileRendererErrorNotice","createFileRendererLoadKey","isCurrentLoadedFile","acceptFileRendererLoad","LoadedFile","readCachedFileContent","storeCachedFileContent","FileRendererPathHeader","WorkbenchFileRendererViewProps","workbench","contribution","placement","SAVE_DEBOUNCE_MS","describeError","error","Error","message","syncActiveFileSection","input","navigation","ReturnType","sectionId","getTreeRenderer","treeId","anchors","some","anchor","id","setSelectedNode","selectedNodeId","getTreeState","undefined","getEditorSectionNavigation","targetId","WorkbenchFileRendererView","props","$","_c","resource","sectionNavigation","t0","editorSectionNavigation","loadKey","fileRendererId","loaded","setLoaded","setError","t1","Symbol","for","dirty","saving","editState","setEditState","controllerRef","retryReadRef","rendererRef","previousSectionNavigationRef","t2","t3","previous","current","currentResourceKey","anchorIds","map","_temp","contributionRef","resourceRef","placementRef","t4","contributionId","hasSave","Boolean","save","ownerKey","JSON","stringify","instanceId","t5","cancelled","removed","boundResource","boundContribution","read","views","reads","bind","controller","cached","editorRevision","load","t6","reason","request","queryKey","signal","onValue","next","updateLoaded","onError","loadError","binding","rendererId","debounceMs","onStateChange","state","value","origin","Promise","resolve","then","result","content","setBaseline","revision","removalSubscription","resources","onWillRemove","resource_0","retain","markRemoved","identity","placementIdentity","refreshSubscription","onDidRefreshFileRenderer","event","controller_0","handleRefreshEvent","dispose","flush","t7","t8","onVisibility","document","visibilityState","window","addEventListener","removeEventListener","t9","value_0","handleChange","t10","currentLoaded","scrollResetKey","t11","t12","node","requestAnimationFrame","current_0","parentElement","overflowY","getComputedStyle","includes","scrollHeight","clientHeight","scrollTop","loadError_0","t13","retryLoad","t14","retry","retrySave","t15","t16","t17","editorKey","errorNotice","saveError","handleActiveSectionChange","fileName","filePath","t18","t19","t20","title","t21","_c","rendererReadKey","acceptFileRendererLoad","readCachedFileContent","storeCachedFileContent","FILE_SECTION_NAVIGATION_METADATA_KEY","isAnchor","value","anchor","occurrenceIsValid","getFileSectionNavigation","resource","navigation","resolveFileSectionTargetId","selectedNodeId","shouldClearFileSectionSelection","input","previous","current","currentResourceKey","IMAGE_EXTENSIONS","PROSE_EXTENSIONS","CODE_LANGUAGE_BY_EXTENSION","extensionOf","fileName","dot","isImage","mimeType","pickFileKind","extension","codeLanguageFor","resolveFileRendererPresentation","content","automaticKind","isEditable","contributionCanSave","FileRendererContentView","$","c","props","t0","presentation","t1","t2","t3","EmptyState","t4","errorNotice","Flex","Center","Text","title","Image","rendererRef","onChange","editorKey","Box","CodeEditor","onActiveSectionChange","sectionNavigation","MarkdownEditor","t5","createFileEditController","baseline","removed","baselineRevision","draft","activeSave","saveError","deferredRevision","genericRefreshDeferred","timer","operationSequence","seenRefreshRevisions","completedOperationIds","describeError","error","getState","notify","clearTimer","nextOperationId","hasPendingLocalState","deferRefresh","event","isSelfRefresh","operationId","takeDeferredRefresh","revision","generic","savedRevision","runSave","origin","result","schedule","retain","shown","FileRendererErrorNotice","message","onRetry","Button","stableValue","left","right","key","entry","createFileRendererLoadKey","resourceValue","resourceKey","fileRendererId","isCurrentLoadedFile","loaded","loadKey","FileRendererPathHeader","useFileIconThemePreference","activeFileIconTheme","resolveFileIconElement","filePath","Header","SAVE_DEBOUNCE_MS","syncActiveFileSection","getWorkbenchRenderers","workbench","sectionId","getEditorSectionNavigation","WorkbenchFileRendererView","editorSectionNavigation","contribution","setLoaded","useState","setError","editState","setEditState","controllerRef","useRef","retryReadRef","previousSectionNavigationRef","_temp","useEffect","contributionRef","resourceRef","placementRef","contributionId","hasSave","ownerKey","instanceId","cancelled","boundResource","boundContribution","read","controller","cached","load","reason","t6","signal","updateLoaded","next","loadError","state","removalSubscription","resource_0","identity","refreshSubscription","controller_0","t7","t8","flush","onVisibility","t9","value_0","handleChange","t10","currentLoaded","scrollResetKey","t11","t12","node","current_0","overflowY","useLayoutEffect","loadError_0","t13","retryLoad","t14","retrySave","t15","t16","t17","Spinner","handleActiveSectionChange","t18","t19","t20","t21"],"sources":["../src/core/registries/renderers/file-section-navigation.ts","../src/react/renderers/file/file-kind.ts","../src/react/renderers/file/file-renderer-presentation.ts","../src/react/renderers/file/file-renderer-content.tsx","../src/react/renderers/file/file-renderer-edit-state.ts","../src/react/renderers/file/file-renderer-error-notice.tsx","../src/react/renderers/file/file-renderer-load-key.ts","../src/react/renderers/file/file-renderer-path-header.tsx","../src/react/renderers/file/file-renderer-view.tsx"],"sourcesContent":["import type { ResourceRef } from \"../resources/resource-registry\";\n\nexport const FILE_SECTION_NAVIGATION_METADATA_KEY = \"pstdio.fileSectionNavigation\";\n\nexport interface FileSectionAnchor {\n id: string;\n heading: string;\n occurrence?: number;\n}\n\nexport interface FileSectionNavigation {\n treeId: string;\n targetNodeId: string;\n anchors: FileSectionAnchor[];\n}\n\nconst isAnchor = (value: unknown): value is FileSectionAnchor => {\n if (!value || typeof value !== \"object\") return false;\n const anchor = value as Record<string, unknown>;\n const occurrenceIsValid =\n anchor.occurrence === undefined ||\n (typeof anchor.occurrence === \"number\" && Number.isInteger(anchor.occurrence) && anchor.occurrence >= 0);\n return typeof anchor.id === \"string\" && typeof anchor.heading === \"string\" && occurrenceIsValid;\n};\n\nexport const getFileSectionNavigation = (resource: ResourceRef | undefined): FileSectionNavigation | undefined => {\n const value = resource?.metadata?.[FILE_SECTION_NAVIGATION_METADATA_KEY];\n if (!value || typeof value !== \"object\") return undefined;\n const navigation = value as Record<string, unknown>;\n if (typeof navigation.treeId !== \"string\" || typeof navigation.targetNodeId !== \"string\") return undefined;\n if (!Array.isArray(navigation.anchors) || !navigation.anchors.every(isAnchor)) return undefined;\n\n return {\n treeId: navigation.treeId,\n targetNodeId: navigation.targetNodeId,\n anchors: navigation.anchors,\n };\n};\n\nexport const resolveFileSectionTargetId = (navigation: FileSectionNavigation, selectedNodeId: string | undefined) => {\n if (selectedNodeId && navigation.anchors.some((anchor) => anchor.id === selectedNodeId)) return selectedNodeId;\n return navigation.targetNodeId;\n};\n\nexport interface PreviousFileSectionNavigation {\n resourceKey?: string;\n treeId: string;\n anchorIds: string[];\n}\n\nexport const shouldClearFileSectionSelection = (input: {\n previous: PreviousFileSectionNavigation | null;\n current: FileSectionNavigation | undefined;\n currentResourceKey?: string;\n selectedNodeId?: string;\n}) => {\n const { previous, current, currentResourceKey, selectedNodeId } = input;\n if (!previous || !selectedNodeId || !previous.anchorIds.includes(selectedNodeId)) return false;\n if (current?.targetNodeId === selectedNodeId) return false;\n\n return !current || previous.treeId !== current.treeId || previous.resourceKey !== currentResourceKey;\n};\n","// Generic file-type dispatch for the file renderer. Markdown is the default so\n// `.md` / `.txt` / extension-less files open in the prose editor; recognised code\n// extensions open in Monaco; images render read-only. This is deliberately\n// domain-agnostic — it knows about file types, not about tickets.\n\nexport type FileKind = \"markdown\" | \"code\" | \"image\";\n\nconst IMAGE_EXTENSIONS = new Set([\"png\", \"jpg\", \"jpeg\", \"gif\", \"webp\", \"svg\", \"avif\", \"bmp\", \"ico\"]);\nconst PROSE_EXTENSIONS = new Set([\"md\", \"markdown\", \"txt\"]);\n\n// Extension → Monaco language id. Markdown/plain text intentionally absent so\n// they fall through to the prose editor.\nconst CODE_LANGUAGE_BY_EXTENSION: Record<string, string> = {\n ts: \"typescript\",\n tsx: \"typescript\",\n js: \"javascript\",\n jsx: \"javascript\",\n mjs: \"javascript\",\n cjs: \"javascript\",\n json: \"json\",\n jsonc: \"json\",\n py: \"python\",\n rb: \"ruby\",\n rs: \"rust\",\n go: \"go\",\n java: \"java\",\n kt: \"kotlin\",\n c: \"c\",\n h: \"c\",\n cpp: \"cpp\",\n cc: \"cpp\",\n hpp: \"cpp\",\n cs: \"csharp\",\n php: \"php\",\n swift: \"swift\",\n sh: \"shell\",\n bash: \"shell\",\n zsh: \"shell\",\n sql: \"sql\",\n css: \"css\",\n scss: \"scss\",\n less: \"less\",\n html: \"html\",\n xml: \"xml\",\n yml: \"yaml\",\n yaml: \"yaml\",\n toml: \"ini\",\n ini: \"ini\",\n dockerfile: \"dockerfile\",\n graphql: \"graphql\",\n gql: \"graphql\",\n md: \"markdown\",\n markdown: \"markdown\",\n txt: \"plaintext\",\n};\n\nconst extensionOf = (fileName: string | undefined) => {\n if (!fileName) return \"\";\n const dot = fileName.lastIndexOf(\".\");\n if (dot < 0 || dot === fileName.length - 1) return \"\";\n return fileName.slice(dot + 1).toLowerCase();\n};\n\nconst isImage = (fileName: string | undefined, mimeType: string | undefined) => {\n if (mimeType?.startsWith(\"image/\")) return true;\n return IMAGE_EXTENSIONS.has(extensionOf(fileName));\n};\n\nexport const pickFileKind = (fileName: string | undefined, mimeType: string | undefined): FileKind => {\n if (isImage(fileName, mimeType)) return \"image\";\n const extension = extensionOf(fileName);\n if (!PROSE_EXTENSIONS.has(extension) && extension in CODE_LANGUAGE_BY_EXTENSION) return \"code\";\n return \"markdown\";\n};\n\n// Monaco language for a code file; falls back to plaintext for unknown extensions.\nexport const codeLanguageFor = (fileName: string | undefined) =>\n CODE_LANGUAGE_BY_EXTENSION[extensionOf(fileName)] ?? \"plaintext\";\n","import type { FileRendererContent } from \"../../../core\";\nimport { codeLanguageFor, pickFileKind } from \"./file-kind\";\n\nexport type FileRendererPresentation =\n | { kind: \"empty\"; isEditable: false }\n | { kind: \"image\"; isEditable: false }\n | { kind: \"code\"; isEditable: boolean; language: string }\n | { kind: \"markdown\"; isEditable: boolean };\n\nexport const resolveFileRendererPresentation = (\n content: FileRendererContent,\n contributionCanSave: boolean,\n): FileRendererPresentation => {\n if (content.emptyState) return { kind: \"empty\", isEditable: false };\n\n const automaticKind = pickFileKind(content.fileName, content.mimeType);\n if (automaticKind === \"image\") return { kind: \"image\", isEditable: false };\n\n const isEditable = contributionCanSave && content.editable !== false;\n if (automaticKind === \"code\" || content.textRenderer === \"monaco\") {\n return { kind: \"code\", isEditable, language: codeLanguageFor(content.fileName) };\n }\n return { kind: \"markdown\", isEditable };\n};\n","import { Box, Center, Flex, Image, Text } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@pstdio/ui\";\nimport { CodeEditor } from \"@pstdio/ui/diff\";\nimport { MarkdownEditor } from \"@pstdio/ui/rich-text\";\nimport type { ReactNode, RefObject } from \"react\";\nimport type { FileRendererContent } from \"../../../core\";\nimport { resolveFileRendererPresentation } from \"./file-renderer-presentation\";\n\ninterface FileRendererContentViewProps {\n content: FileRendererContent;\n editorKey: string;\n errorNotice: ReactNode;\n contributionCanSave: boolean;\n onActiveSectionChange?: (sectionId: string | null) => void;\n onChange: (value: string) => void;\n rendererRef: RefObject<HTMLDivElement | null>;\n sectionNavigation?: {\n anchors: Array<{ id: string; heading: string; occurrence?: number }>;\n targetId: string;\n };\n title: string;\n}\n\nexport const FileRendererContentView = (props: FileRendererContentViewProps) => {\n const {\n content,\n editorKey,\n errorNotice,\n contributionCanSave,\n onActiveSectionChange,\n onChange,\n rendererRef,\n sectionNavigation,\n title,\n } = props;\n const presentation = resolveFileRendererPresentation(content, contributionCanSave);\n\n if (presentation.kind === \"empty\") {\n return (\n <Flex direction=\"column\" h=\"full\" minH=\"0\" bg=\"bg\">\n {errorNotice}\n <EmptyState\n flex=\"1\"\n minH=\"0\"\n title={content.emptyState?.title ?? \"Select a file\"}\n description={content.emptyState?.description}\n />\n </Flex>\n );\n }\n\n if (presentation.kind === \"image\") {\n if (!content.dataUrl) {\n return (\n <Center h=\"full\" minH=\"0\" bg=\"bg\" p=\"md\">\n <Text color=\"fg.muted\">This image preview is unavailable.</Text>\n </Center>\n );\n }\n return (\n <Flex direction=\"column\" h=\"full\" minH=\"0\" bg=\"bg\">\n {errorNotice}\n <Center ref={rendererRef} flex=\"1\" minH=\"0\" p=\"md\" overflow=\"auto\">\n <Image src={content.dataUrl} alt={content.fileName ?? title} maxW=\"100%\" maxH=\"100%\" objectFit=\"contain\" />\n </Center>\n </Flex>\n );\n }\n\n if (presentation.kind === \"code\") {\n return (\n <Flex direction=\"column\" h=\"full\" minH=\"0\" bg=\"bg\">\n {errorNotice}\n <Box flex=\"1\" minH=\"0\">\n <CodeEditor\n key={editorKey}\n language={presentation.language}\n fileName={content.fileName}\n defaultCode={content.content ?? \"\"}\n isEditable={presentation.isEditable}\n showLineNumbers\n onChange={presentation.isEditable ? onChange : undefined}\n />\n </Box>\n </Flex>\n );\n }\n\n return (\n <Flex ref={rendererRef} direction=\"column\" h=\"full\" minH=\"0\" overflow=\"hidden\" bg=\"bg\">\n {errorNotice}\n <Box flex=\"1\" minH=\"0\" overflowY=\"auto\">\n <MarkdownEditor\n key={editorKey}\n defaultState={content.content ?? \"\"}\n isEditable={presentation.isEditable}\n sectionNavigation={sectionNavigation}\n placeholder={presentation.isEditable ? (content.placeholder ?? \"Write…\") : undefined}\n onActiveSectionChange={onActiveSectionChange}\n onChange={presentation.isEditable ? onChange : undefined}\n />\n </Box>\n </Flex>\n );\n};\n","// Owns the editable file renderer's save lifecycle: the last loaded or saved\n// value (the baseline), the debounced draft, the one in-flight save, and\n// refresh events that arrive while a draft or save exists.\n//\n// Invariants (from the renderer edit/refresh lifecycle PRD):\n// - a change equal to the baseline never schedules a save\n// - at most one save runs at a time; the baseline advances when it succeeds\n// - a failed save keeps the draft so a later change or flush retries it\n// - refresh events are deferred while a draft or save exists and coalesce\n// into one reload after the last save settles\n\nimport type {\n FileRendererRefreshEnvelope,\n FileRendererRefreshOrigin,\n FileRendererSaveResult,\n} from \"../../../core/registries/renderers/file-renderer-registry\";\n\nexport interface FileEditControllerState {\n dirty: boolean;\n saving: boolean;\n saveError?: string;\n removed?: true;\n}\n\nexport interface FileEditControllerInput {\n binding: Omit<FileRendererRefreshOrigin, \"operationId\"> & { resourceKey?: string };\n debounceMs: number;\n load: (event?: FileRendererRefreshEnvelope) => void;\n save: (value: string, origin: FileRendererRefreshOrigin) => Promise<FileRendererSaveResult | undefined>;\n createOperationId?: () => string;\n onStateChange?: (state: FileEditControllerState) => void;\n}\n\nexport type FileEditController = ReturnType<typeof createFileEditController>;\n\nexport const createFileEditController = (input: FileEditControllerInput) => {\n let baseline: string | undefined;\n let removed = false;\n let baselineRevision: string | undefined;\n let draft: string | null = null;\n let activeSave: { value: string; origin: FileRendererRefreshOrigin } | null = null;\n let saveError: string | undefined;\n let deferredRevision: string | undefined;\n let genericRefreshDeferred = false;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let operationSequence = 0;\n const seenRefreshRevisions = new Set<string>();\n const completedOperationIds = new Set<string>();\n\n const describeError = (error: unknown) => (error instanceof Error ? error.message : \"Failed to save file.\");\n const getState = (): FileEditControllerState => ({\n dirty: draft !== null || (activeSave !== null && activeSave.value !== baseline),\n saving: activeSave !== null,\n ...(saveError ? { saveError } : {}),\n ...(removed ? { removed: true as const } : {}),\n });\n const notify = () => input.onStateChange?.(getState());\n\n const clearTimer = () => {\n if (timer === null) return;\n clearTimeout(timer);\n timer = null;\n };\n\n const nextOperationId = () => input.createOperationId?.() ?? `file-save-${Date.now()}-${++operationSequence}`;\n\n const hasPendingLocalState = () => draft !== null || activeSave !== null || timer !== null || Boolean(saveError);\n\n const deferRefresh = (event: FileRendererRefreshEnvelope) => {\n if (event.revision && (!deferredRevision || event.revision.localeCompare(deferredRevision) > 0)) {\n deferredRevision = event.revision;\n }\n if (!event.revision) genericRefreshDeferred = true;\n };\n\n const isSelfRefresh = (event: FileRendererRefreshEnvelope) => {\n const operationId = event.origin?.operationId;\n if (!operationId) return false;\n if (event.origin?.rendererId !== input.binding.rendererId) return false;\n if (event.origin.instanceId !== input.binding.instanceId) return false;\n return activeSave?.origin.operationId === operationId || completedOperationIds.has(operationId);\n };\n\n const takeDeferredRefresh = (savedRevision?: string) => {\n if (draft !== null || activeSave) return;\n const revision = deferredRevision;\n const generic = genericRefreshDeferred;\n deferredRevision = undefined;\n genericRefreshDeferred = false;\n if (revision && (!savedRevision || revision.localeCompare(savedRevision) > 0)) {\n input.load({ resourceKey: input.binding.resourceKey, revision });\n return;\n }\n if (generic) input.load({ resourceKey: input.binding.resourceKey });\n };\n\n const runSave = () => {\n if (removed || draft === null || activeSave || saveError) return;\n const value = draft;\n draft = null;\n const origin = {\n rendererId: input.binding.rendererId,\n instanceId: input.binding.instanceId,\n operationId: nextOperationId(),\n };\n activeSave = { value, origin };\n notify();\n void Promise.resolve(input.save(value, origin))\n .then((result) => {\n if (activeSave?.origin.operationId !== origin.operationId) return;\n activeSave = null;\n completedOperationIds.add(origin.operationId);\n if (completedOperationIds.size > 20) completedOperationIds.delete(completedOperationIds.values().next().value!);\n baseline = value;\n baselineRevision = result?.revision ?? baselineRevision;\n if (draft === baseline) {\n draft = null;\n clearTimer();\n }\n notify();\n if (draft !== null) {\n schedule();\n return;\n }\n takeDeferredRefresh(result?.revision);\n })\n .catch((error) => {\n if (removed) return;\n if (activeSave?.origin.operationId !== origin.operationId) return;\n activeSave = null;\n if (draft === null) draft = value;\n saveError = describeError(error);\n notify();\n });\n };\n\n const schedule = () => {\n clearTimer();\n timer = setTimeout(() => {\n timer = null;\n runSave();\n }, input.debounceMs);\n };\n\n return {\n getDraft() {\n return draft ?? activeSave?.value ?? baseline;\n },\n markRemoved() {\n const retain = hasPendingLocalState();\n removed = true;\n draft = draft ?? activeSave?.value ?? null;\n activeSave = null;\n clearTimer();\n notify();\n return retain;\n },\n getBaseline() {\n return baseline;\n },\n getState,\n setBaseline(value: string | undefined, revision?: string) {\n baseline = value;\n baselineRevision = revision;\n notify();\n },\n // Takes a freshly loaded value as the new baseline and returns the value the\n // editor was showing, so the caller can tell whether the editor must show\n // something else. Returns null while pending local state must keep the\n // editor: the refresh is deferred until the save settles.\n acceptLoaded(value: string | undefined, revision?: string) {\n if (removed) return null;\n if (hasPendingLocalState()) {\n deferRefresh(revision ? { revision } : {});\n return null;\n }\n const shown = baseline;\n baseline = value;\n baselineRevision = revision;\n notify();\n return { shown };\n },\n handleChange(value: string) {\n if (removed) {\n draft = value;\n notify();\n return;\n }\n if (saveError && value === draft) return;\n saveError = undefined;\n if (value === baseline && !activeSave) {\n draft = null;\n clearTimer();\n notify();\n return;\n }\n if (activeSave?.value === value) {\n draft = null;\n clearTimer();\n notify();\n return;\n }\n draft = value;\n schedule();\n notify();\n },\n handleRefreshEvent(event: FileRendererRefreshEnvelope = {}) {\n if (removed) return;\n if (event.resourceKey && event.resourceKey !== input.binding.resourceKey) return;\n if (isSelfRefresh(event)) return;\n if (event.revision && seenRefreshRevisions.has(event.revision)) return;\n if (event.revision) seenRefreshRevisions.add(event.revision);\n if (hasPendingLocalState()) {\n deferRefresh(event);\n return;\n }\n if (event.revision && baselineRevision && event.revision.localeCompare(baselineRevision) <= 0) return;\n input.load(event);\n },\n retry() {\n if (!saveError || draft === null || activeSave) return;\n saveError = undefined;\n notify();\n runSave();\n },\n retryLoad() {\n if (removed) return;\n input.load({ resourceKey: input.binding.resourceKey });\n },\n flush() {\n clearTimer();\n runSave();\n },\n };\n};\n","import { Button, Flex, Text } from \"@chakra-ui/react\";\n\nexport const FileRendererErrorNotice = (props: { message: string; onRetry?: () => void }) => {\n const { message, onRetry } = props;\n return (\n <Flex\n flex=\"none\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap=\"sm\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.muted\"\n bg=\"bg.muted\"\n px=\"sm\"\n py=\"xs\"\n >\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\">\n {message}\n </Text>\n {onRetry ? (\n <Button size=\"2xs\" variant=\"subtle\" onClick={onRetry}>\n Retry\n </Button>\n ) : null}\n </Flex>\n );\n};\n","import { resourceKey } from \"@pstdio/sdk/extensions\";\nimport type { ResourceRef } from \"../../../core\";\n\ninterface FileRendererLoadKeyInput {\n fileRendererId: string;\n resource: ResourceRef | undefined;\n}\nconst stableValue = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(stableValue);\n if (!value || typeof value !== \"object\") return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entry]) => [key, stableValue(entry)]),\n );\n};\nexport const createFileRendererLoadKey = (input: FileRendererLoadKeyInput) => {\n const { fileRendererId, resource } = input;\n const resourceValue = resource\n ? stableValue({\n id: resource.id,\n type: resource.type,\n metadata: resource.metadata,\n })\n : null;\n return `${JSON.stringify(resourceKey(resource))}:${fileRendererId}:${JSON.stringify(resourceValue)}`;\n};\nexport const isCurrentLoadedFile = (\n loaded: {\n loadKey: string;\n } | null,\n loadKey: string,\n) => loaded?.loadKey === loadKey;\n","import { Text } from \"@chakra-ui/react\";\nimport { Header, resolveFileIconElement, useFileIconThemePreference } from \"@pstdio/ui\";\n\nexport const FileRendererPathHeader = (props: { fileName: string; filePath: string }) => {\n const { fileName, filePath } = props;\n const { activeFileIconTheme } = useFileIconThemePreference();\n\n return (\n <Header variant=\"narrow\" flexShrink={0} gap=\"2xs\" bg=\"bg\">\n {resolveFileIconElement(fileName, { theme: activeFileIconTheme })}\n <Text aria-label={`File path ${filePath}`} textStyle=\"label/S/regular\" color=\"fg.muted\" truncate>\n {filePath}\n </Text>\n </Header>\n );\n};\n","import { Box, Button, Center, Flex, Spinner, Text } from \"@chakra-ui/react\";\nimport { resourceKey } from \"@pstdio/sdk/extensions\";\nimport { type ReactNode, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport type { RegisteredFileRendererContribution, WorkbenchCore, WorkbenchPanelInstance } from \"../../../core\";\nimport { getWorkbenchRenderers, rendererReadKey } from \"../../../core\";\nimport {\n getFileSectionNavigation,\n resolveFileSectionTargetId,\n shouldClearFileSectionSelection,\n} from \"../../../core/registries/renderers/file-section-navigation\";\nimport { FileRendererContentView } from \"./file-renderer-content\";\nimport {\n createFileEditController,\n type FileEditController,\n type FileEditControllerState,\n} from \"./file-renderer-edit-state\";\nimport { FileRendererErrorNotice } from \"./file-renderer-error-notice\";\nimport { createFileRendererLoadKey, isCurrentLoadedFile } from \"./file-renderer-load-key\";\nimport {\n acceptFileRendererLoad,\n type LoadedFile,\n readCachedFileContent,\n storeCachedFileContent,\n} from \"./file-renderer-load-state\";\nimport { FileRendererPathHeader } from \"./file-renderer-path-header\";\n\ninterface WorkbenchFileRendererViewProps {\n workbench: WorkbenchCore;\n contribution: RegisteredFileRendererContribution;\n // The bound resource (e.g. the open ticket / ticket-file) the load/save\n // commands operate on.\n placement?: WorkbenchPanelInstance;\n}\nconst SAVE_DEBOUNCE_MS = 600;\nconst describeError = (error: unknown) => (error instanceof Error ? error.message : \"Failed to load file.\");\nconst syncActiveFileSection = (input: {\n workbench: WorkbenchCore;\n navigation: ReturnType<typeof getFileSectionNavigation>;\n sectionId: string | null;\n}) => {\n const { workbench, navigation, sectionId } = input;\n if (!navigation || !getWorkbenchRenderers(workbench).getTreeRenderer(navigation.treeId)) return;\n if (sectionId && navigation.anchors.some((anchor) => anchor.id === sectionId)) {\n getWorkbenchRenderers(workbench).setSelectedNode(navigation.treeId, sectionId);\n return;\n }\n const selectedNodeId = getWorkbenchRenderers(workbench).getTreeState(navigation.treeId).selectedNodeId;\n if (selectedNodeId && navigation.anchors.some((anchor) => anchor.id === selectedNodeId)) {\n getWorkbenchRenderers(workbench).setSelectedNode(navigation.treeId, undefined);\n }\n};\nconst getEditorSectionNavigation = (\n workbench: WorkbenchCore,\n navigation: ReturnType<typeof getFileSectionNavigation>,\n) => {\n if (!navigation) return undefined;\n const selectedNodeId = getWorkbenchRenderers(workbench).getTreeRenderer(navigation.treeId)\n ? getWorkbenchRenderers(workbench).getTreeState(navigation.treeId).selectedNodeId\n : undefined;\n return {\n anchors: navigation.anchors,\n targetId: resolveFileSectionTargetId(navigation, selectedNodeId),\n };\n};\nexport const WorkbenchFileRendererView = (props: WorkbenchFileRendererViewProps) => {\n const { workbench, contribution } = props;\n const resource = props.placement?.resource;\n const sectionNavigation = getFileSectionNavigation(resource);\n const editorSectionNavigation = getEditorSectionNavigation(workbench, sectionNavigation);\n const loadKey = createFileRendererLoadKey({ fileRendererId: contribution.id, resource });\n const [loaded, setLoaded] = useState<LoadedFile | null>(null);\n const [error, setError] = useState<{\n loadKey: string;\n message: string;\n } | null>(null);\n const [editState, setEditState] = useState<FileEditControllerState>({ dirty: false, saving: false });\n const controllerRef = useRef<FileEditController | null>(null);\n const retryReadRef = useRef<(() => void) | undefined>(undefined);\n const rendererRef = useRef<HTMLDivElement>(null);\n const previousSectionNavigationRef = useRef<{\n resourceKey?: string;\n treeId: string;\n anchorIds: string[];\n } | null>(null);\n useEffect(() => {\n const previous = previousSectionNavigationRef.current;\n const selectedNodeId =\n previous && getWorkbenchRenderers(workbench).getTreeRenderer(previous.treeId)\n ? getWorkbenchRenderers(workbench).getTreeState(previous.treeId).selectedNodeId\n : undefined;\n if (\n shouldClearFileSectionSelection({\n previous,\n current: sectionNavigation,\n currentResourceKey: resourceKey(resource),\n selectedNodeId,\n }) &&\n previous\n ) {\n getWorkbenchRenderers(workbench).setSelectedNode(previous.treeId, undefined);\n }\n previousSectionNavigationRef.current = sectionNavigation\n ? {\n resourceKey: resourceKey(resource),\n treeId: sectionNavigation.treeId,\n anchorIds: sectionNavigation.anchors.map((anchor) => anchor.id),\n }\n : null;\n }, [resource, sectionNavigation, workbench]);\n // Contribution refresh re-registers an identical contribution as a new\n // object, and a save that changes the document title produces a new resource\n // object with a fresh label. The load key uses resource values instead of\n // object identity, while callbacks read the latest objects through refs.\n const contributionRef = useRef(contribution);\n const resourceRef = useRef(resource);\n const placementRef = useRef(props.placement);\n useEffect(() => {\n contributionRef.current = contribution;\n resourceRef.current = resource;\n placementRef.current = props.placement;\n });\n const contributionId = contribution.id;\n const hasSave = Boolean(contribution.save);\n const ownerKey = props.placement\n ? rendererReadKey(props.placement)\n : JSON.stringify([\"file\", contributionId, loadKey]);\n const instanceId = props.placement?.instanceId ?? contributionId;\n // Re-binding a singleton widget to another resource changes `resource` and reloads.\n useEffect(() => {\n let cancelled = false;\n let removed = false;\n const boundResource = resourceRef.current;\n const boundContribution = contributionRef.current;\n const read = workbench.views.reads.bind(ownerKey);\n let controller: FileEditController | null = null;\n setError(null);\n // A recently viewed document mounts immediately from the cache; the load\n // below reconciles it (unchanged content keeps the editor mounted).\n const cached = readCachedFileContent(loadKey);\n setLoaded(cached ? { ...cached, editorRevision: 1, loadKey } : null);\n const load = (reason: \"refresh\" | \"retry\" = \"refresh\") => {\n read.request(\n {\n queryKey: loadKey,\n load: (signal) => contributionRef.current.load(resourceRef.current, signal),\n onValue: (next) => {\n if (cancelled || removed) return;\n const updateLoaded = acceptFileRendererLoad(next, loadKey, controller);\n if (!updateLoaded) return;\n setError(null);\n setLoaded(updateLoaded);\n },\n onError: (loadError) => {\n if (cancelled || removed) return;\n setError({ loadKey, message: describeError(loadError) });\n },\n },\n reason,\n );\n };\n retryReadRef.current = () => load(\"retry\");\n controller = hasSave\n ? createFileEditController({\n binding: {\n rendererId: contributionId,\n instanceId,\n resourceKey: resourceKey(resourceRef.current),\n },\n debounceMs: SAVE_DEBOUNCE_MS,\n load: () => load(),\n onStateChange: (state) => {\n if (!cancelled) setEditState(state);\n },\n save: (value, origin) =>\n Promise.resolve(boundContribution.save?.(boundResource, value, origin)).then((result) => {\n const current = readCachedFileContent(loadKey);\n if (current && !removed) storeCachedFileContent(loadKey, { ...current, content: value });\n return result ?? undefined;\n }),\n })\n : null;\n controllerRef.current = controller;\n if (cached) controllerRef.current?.setBaseline(cached.content, cached.revision);\n setEditState({ dirty: false, saving: false });\n load();\n const removalSubscription = workbench.resources.onWillRemove((resource) => {\n if (resourceKey(resource) !== resourceKey(resourceRef.current)) return [];\n removed = true;\n const retain = controllerRef.current?.markRemoved();\n const identity = placementRef.current?.placementIdentity;\n return retain && identity ? [identity] : [];\n });\n const refreshSubscription = getWorkbenchRenderers(workbench).onDidRefreshFileRenderer((event) => {\n if (removed || event.fileRendererId !== contributionId) return;\n const controller = controllerRef.current;\n if (controller) controller.handleRefreshEvent(event);\n else load();\n });\n return () => {\n cancelled = true;\n read.dispose();\n retryReadRef.current = undefined;\n refreshSubscription.dispose();\n removalSubscription.dispose();\n // Flush the last keystrokes on unbind; the load callback above is\n // cancelled, so a deferred refresh cannot resurrect the old binding.\n controller?.flush();\n if (controllerRef.current === controller) controllerRef.current = null;\n };\n }, [contributionId, hasSave, workbench, loadKey, ownerKey, instanceId]);\n // The last keystrokes are also flushed when the tab is hidden or closed.\n useEffect(() => {\n const flush = () => controllerRef.current?.flush();\n const onVisibility = () => {\n if (document.visibilityState === \"hidden\") flush();\n };\n window.addEventListener(\"beforeunload\", flush);\n document.addEventListener(\"visibilitychange\", onVisibility);\n return () => {\n window.removeEventListener(\"beforeunload\", flush);\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n }, []);\n const handleChange = (value: string) => {\n controllerRef.current?.handleChange(value);\n };\n const currentLoaded = isCurrentLoadedFile(loaded, loadKey) ? loaded : null;\n const scrollResetKey = currentLoaded ? `${currentLoaded.loadKey}:${currentLoaded.editorRevision}` : \"\";\n useLayoutEffect(() => {\n if (!scrollResetKey || sectionNavigation) return;\n const node = rendererRef.current;\n if (!node) return;\n requestAnimationFrame(() => {\n let current = node.parentElement;\n while (current) {\n const overflowY = getComputedStyle(current).overflowY;\n if ([\"auto\", \"scroll\", \"overlay\"].includes(overflowY) && current.scrollHeight > current.clientHeight) {\n current.scrollTop = 0;\n }\n current = current.parentElement;\n }\n });\n }, [scrollResetKey, sectionNavigation]);\n const loadError = error?.loadKey === loadKey ? error.message : undefined;\n const retryLoad = () => retryReadRef.current?.();\n const retrySave = () => controllerRef.current?.retry();\n if (loadError && !currentLoaded) {\n return (\n <Center h=\"full\" minH=\"0\" bg=\"bg\" p=\"md\" flexDirection=\"column\" gap=\"sm\">\n <Text color=\"fg.muted\">{loadError}</Text>\n <Button size=\"xs\" variant=\"subtle\" onClick={retryLoad}>\n Retry\n </Button>\n </Center>\n );\n }\n if (!currentLoaded) {\n return (\n <Center h=\"full\" minH=\"0\" bg=\"bg\">\n <Spinner size=\"sm\" />\n </Center>\n );\n }\n // The key must carry the document identity, not just the contribution: two\n // documents from the same renderer both start at revision 1, so keying on the\n // contribution alone reuses the editor and keeps showing the previous file.\n const editorKey = `${currentLoaded.loadKey}:${currentLoaded.editorRevision}`;\n let errorNotice: ReactNode = null;\n if (editState.removed) {\n errorNotice = (\n <FileRendererErrorNotice message=\"This resource was removed. Your draft is kept here. Copy it before closing this tab.\" />\n );\n } else if (loadError) {\n errorNotice = <FileRendererErrorNotice message={loadError} onRetry={retryLoad} />;\n } else if (editState.saveError) {\n errorNotice = <FileRendererErrorNotice message={editState.saveError} onRetry={retrySave} />;\n }\n const handleActiveSectionChange = (sectionId: string | null) => {\n syncActiveFileSection({ workbench, navigation: sectionNavigation, sectionId });\n };\n return (\n <Flex direction=\"column\" h=\"full\" minH=\"0\" bg=\"bg\">\n {currentLoaded.filePath ? (\n <FileRendererPathHeader\n fileName={currentLoaded.fileName ?? currentLoaded.filePath}\n filePath={currentLoaded.filePath}\n />\n ) : null}\n <Box flex=\"1\" minH=\"0\">\n <FileRendererContentView\n content={currentLoaded}\n editorKey={editorKey}\n errorNotice={errorNotice}\n contributionCanSave={Boolean(contribution.save)}\n onActiveSectionChange={sectionNavigation ? handleActiveSectionChange : undefined}\n onChange={handleChange}\n rendererRef={rendererRef}\n sectionNavigation={editorSectionNavigation}\n title={contribution.title}\n />\n </Box>\n </Flex>\n );\n};\n"],"mappings":"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"}
|
|
@@ -773,7 +773,7 @@ interface ControlsRendererContribution {
|
|
|
773
773
|
layout?: ControlsRendererLayout;
|
|
774
774
|
defaultValues?: ControlValueMap;
|
|
775
775
|
/** Load the control declarations + current values for the active resource. */
|
|
776
|
-
executeQuery(resource
|
|
776
|
+
executeQuery(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<ControlsQueryResult> | ControlsQueryResult;
|
|
777
777
|
/** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
|
|
778
778
|
updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
|
|
779
779
|
/** Commit the full value map from a sticky footer. */
|
|
@@ -801,6 +801,7 @@ type DataTableRendererColumnStat = {
|
|
|
801
801
|
type: "top-values";
|
|
802
802
|
limit?: number;
|
|
803
803
|
};
|
|
804
|
+
type DataTableRendererBadgePalette = "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
|
|
804
805
|
type DataTableRendererColumnRenderer = {
|
|
805
806
|
type: "json";
|
|
806
807
|
} | {
|
|
@@ -815,6 +816,18 @@ type DataTableRendererColumnRenderer = {
|
|
|
815
816
|
value: string | number | boolean | null;
|
|
816
817
|
color: DataTableRendererThemeColor;
|
|
817
818
|
}>;
|
|
819
|
+
} | {
|
|
820
|
+
type: "badge";
|
|
821
|
+
categories?: Array<{
|
|
822
|
+
value: string | number | boolean | null;
|
|
823
|
+
palette: DataTableRendererBadgePalette;
|
|
824
|
+
}>;
|
|
825
|
+
} | {
|
|
826
|
+
type: "diff";
|
|
827
|
+
} | {
|
|
828
|
+
type: "date";
|
|
829
|
+
} | {
|
|
830
|
+
type: "path";
|
|
818
831
|
};
|
|
819
832
|
interface DataTableRendererColumn {
|
|
820
833
|
id: string;
|
|
@@ -822,6 +835,8 @@ interface DataTableRendererColumn {
|
|
|
822
835
|
description?: string;
|
|
823
836
|
icon?: unknown;
|
|
824
837
|
hidden?: boolean;
|
|
838
|
+
/** Starts unchecked in the column menu; viewers can still show the column. */
|
|
839
|
+
defaultHidden?: boolean;
|
|
825
840
|
stat?: DataTableRendererColumnStat;
|
|
826
841
|
renderer?: DataTableRendererColumnRenderer;
|
|
827
842
|
}
|
|
@@ -862,9 +877,13 @@ interface DataTableRendererContribution {
|
|
|
862
877
|
rowActions?: DataTableRendererRowAction[];
|
|
863
878
|
initialPageSize?: number;
|
|
864
879
|
pageSizeOptions?: number[];
|
|
880
|
+
/** Whether column statistics start visible. Defaults to `true`. */
|
|
881
|
+
defaultShowStats?: boolean;
|
|
865
882
|
emptyTitle?: string;
|
|
866
883
|
emptyDescription?: string;
|
|
867
|
-
|
|
884
|
+
/** Context keys that choose which rows the query returns. A change drops the old rows and starts a new read. */
|
|
885
|
+
contextKeys?: string[];
|
|
886
|
+
executeQuery(context: DataTableRendererQueryContext, signal: AbortSignal): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
|
|
868
887
|
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
869
888
|
onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
|
|
870
889
|
}
|
|
@@ -909,7 +928,7 @@ interface FileRendererContribution {
|
|
|
909
928
|
title: string;
|
|
910
929
|
resourceKind?: string;
|
|
911
930
|
/** Resolve the file's content (and identity) for the bound resource. */
|
|
912
|
-
load(resource: ResourceRef$1 | undefined): Promise<FileRendererContent> | FileRendererContent;
|
|
931
|
+
load(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<FileRendererContent> | FileRendererContent;
|
|
913
932
|
/** Persist edited text. Absent ⇒ read-only. Never called for images. */
|
|
914
933
|
save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
|
|
915
934
|
}
|
|
@@ -1106,7 +1125,7 @@ interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRend
|
|
|
1106
1125
|
* / filter / sort. The renderer re-applies filter / sort / group locally,
|
|
1107
1126
|
* so this can return unfiltered rows in simple cases.
|
|
1108
1127
|
*/
|
|
1109
|
-
executeQuery(state: KanbanRendererQueryState): Promise<TRow[]> | TRow[];
|
|
1128
|
+
executeQuery(state: KanbanRendererQueryState, signal: AbortSignal): Promise<TRow[]> | TRow[];
|
|
1110
1129
|
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
1111
1130
|
/** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
|
|
1112
1131
|
onRowActivate?: (row: TRow) => Promise<void> | void;
|
|
@@ -1157,6 +1176,7 @@ interface MenuRegistry {
|
|
|
1157
1176
|
//#endregion
|
|
1158
1177
|
//#region src/core/registries/renderers/tree-renderer-types.d.ts
|
|
1159
1178
|
interface TreeQueryContext {
|
|
1179
|
+
signal?: AbortSignal;
|
|
1160
1180
|
filter?: string;
|
|
1161
1181
|
resource?: ResourceRef$1;
|
|
1162
1182
|
/** Widget/view contribution id for trees rendered through a view-backed widget. */
|
|
@@ -1316,6 +1336,25 @@ interface TreeRendererRegistry {
|
|
|
1316
1336
|
onDidRefresh(listener: TreeRendererRefreshListener): Disposable;
|
|
1317
1337
|
}
|
|
1318
1338
|
//#endregion
|
|
1339
|
+
//#region src/core/registries/views/renderer-read-registry.d.ts
|
|
1340
|
+
interface RendererReadRequest<T> {
|
|
1341
|
+
queryKey: string;
|
|
1342
|
+
load(signal: AbortSignal): Promise<T> | T;
|
|
1343
|
+
onValue(value: T): void;
|
|
1344
|
+
onError(error: unknown): void;
|
|
1345
|
+
}
|
|
1346
|
+
interface RendererReadBinding {
|
|
1347
|
+
request<T>(request: RendererReadRequest<T>, reason?: "refresh" | "retry"): void;
|
|
1348
|
+
dispose(): void;
|
|
1349
|
+
}
|
|
1350
|
+
interface RendererReadRegistry {
|
|
1351
|
+
bind(key: string): RendererReadBinding;
|
|
1352
|
+
dispose(): Promise<void>;
|
|
1353
|
+
}
|
|
1354
|
+
declare const createRendererReadRegistry: (options?: {
|
|
1355
|
+
deadlineMs?: number;
|
|
1356
|
+
}) => RendererReadRegistry;
|
|
1357
|
+
//#endregion
|
|
1319
1358
|
//#region src/core/registries/views/view-registry.d.ts
|
|
1320
1359
|
declare const workbenchViewIdContextKey = "workbench.view.id";
|
|
1321
1360
|
type NativeViewBody<Kind extends string, Contribution> = {
|
|
@@ -1337,6 +1376,7 @@ interface WorkbenchViewRegistryStoreState {
|
|
|
1337
1376
|
views: Record<string, RegisteredWorkbenchView>;
|
|
1338
1377
|
}
|
|
1339
1378
|
interface WorkbenchViewRegistry {
|
|
1379
|
+
reads: RendererReadRegistry;
|
|
1340
1380
|
store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
|
|
1341
1381
|
registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable;
|
|
1342
1382
|
getView(viewId: string): RegisteredWorkbenchView | undefined;
|
|
@@ -1382,6 +1422,7 @@ interface WorkbenchPlacementPresentation {
|
|
|
1382
1422
|
//#endregion
|
|
1383
1423
|
//#region src/core/registries/pages/page-registry-types.d.ts
|
|
1384
1424
|
interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
|
|
1425
|
+
readonly isAvailable?: (resource: ResourceRef | undefined) => boolean;
|
|
1385
1426
|
readonly tab?: WorkbenchPlacementPresentation["tab"];
|
|
1386
1427
|
}
|
|
1387
1428
|
type WorkbenchPageMain = PageMain extends (infer Main) ? Main extends PageMain ? Omit<Main, "tab"> & {
|
|
@@ -1739,6 +1780,7 @@ interface NavigationTreeOwner {
|
|
|
1739
1780
|
}
|
|
1740
1781
|
interface NavigationTreeContext {
|
|
1741
1782
|
resource?: ResourceRef$1;
|
|
1783
|
+
signal?: AbortSignal;
|
|
1742
1784
|
}
|
|
1743
1785
|
interface NavigationTreeContribution {
|
|
1744
1786
|
id: string;
|
|
@@ -2187,6 +2229,7 @@ interface WorkbenchHost {
|
|
|
2187
2229
|
getPersistenceScope(): string | undefined;
|
|
2188
2230
|
}
|
|
2189
2231
|
interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
2232
|
+
dispose(): Promise<void>;
|
|
2190
2233
|
host: WorkbenchHost;
|
|
2191
2234
|
layout: WorkbenchLayoutModel;
|
|
2192
2235
|
registerModule(module: WorkbenchModuleContribution): Disposable;
|
|
@@ -2328,9 +2371,15 @@ declare const standardResourceIcons: {
|
|
|
2328
2371
|
};
|
|
2329
2372
|
type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
|
|
2330
2373
|
//#endregion
|
|
2374
|
+
//#region src/core/registries/views/renderer-read-key.d.ts
|
|
2375
|
+
declare const rendererReadKey: (placement: WorkbenchPanelInstance, lane?: string) => string;
|
|
2376
|
+
//#endregion
|
|
2377
|
+
//#region src/core/registries/views/settle-read-batch.d.ts
|
|
2378
|
+
declare const settleReadBatch: <T>(tasks: ((signal: AbortSignal) => Promise<T> | T)[], signal?: AbortSignal) => Promise<Awaited<T>[]>;
|
|
2379
|
+
//#endregion
|
|
2331
2380
|
//#region src/core/shared/store/workbench-batch.d.ts
|
|
2332
2381
|
/** Commit related stores before their subscribers read the resulting workbench state. */
|
|
2333
2382
|
declare const batchWorkbenchChanges: <Result>(commit: () => Result) => Result;
|
|
2334
2383
|
//#endregion
|
|
2335
|
-
export {
|
|
2384
|
+
export { WorkbenchStatusBarItem as $, resourceHierarchyCycleCode as $i, AttributeDescriptor as $n, WorkbenchPanelTab as $r, WorkbenchTerminalSessionError as $t, WorkbenchHost as A, CommandRegistry as Ai, createViewRegistry as An, DataTableRendererQueryContext as Ar, WorkbenchNotification as At, ThemePreference as B, ResourceRegistry as Bi, TreeNode as Bn, ControlsRendererLayout as Br, WorkbenchModePlacementRegistry as Bt, WorkbenchModeContribution as C, WorkbenchCommandPaletteController as Ci, WorkbenchViewMenuRegistry as Cn, FileRendererRefreshOrigin as Cr, WorkbenchShellPlacementRegistry as Ct, createWorkbench as D, CommandParamDescriptor as Di, WorkbenchViewContribution as Dn, DataTableRendererColumnRenderer as Dr, WorkbenchOverlayRegistry as Dt, isWorkbenchModePanelAvailable as E, CommandHandler as Ei, WorkbenchViewBody as En, DataTableRendererColumn as Er, WorkbenchOverlayContribution as Et, WorkbenchPagePersistenceScopeInput as F, ResourceBrowseEntry as Fi, createRendererReadRegistry as Fn, DataTableRendererThemeColor as Fr, NavigationTreeContribution as Ft, FileIconThemeFont as G, workbenchResourceMetadataContextKey as Gi, TreeRendererState as Gn, WorkbenchFocusRegionId as Gr, getKeybindingSteps as Gt, ThemePreferenceOption as H, createWorkbenchSelectionResourceMetadata as Hi, TreeQueryContext as Hn, ControlsUpdateValueInput as Hr, Keybinding as Ht, WorkbenchPersistenceAdapter as I, ResourceKindContribution as Ii, TreeAction as In, RegisteredDataTableRendererContribution as Ir, NavigationTreeOwner as It, WorkbenchStatusRegistryState as J, ResourceHierarchyCycle as Ji, MenuPath as Jn, RegisteredWidgetContribution as Jr, CommandPaletteResourceQueryContext as Jt, FileIconThemePreferenceOption as K, workbenchResourceTypeContextKey as Ki, TreeViewSection as Kn, LayoutPersistenceAdapter as Kr, CommandPaletteResourceProvider as Kt, WorkbenchSnapshot as L, ResourceListContext as Li, TreeContext as Ln, ControlsApplyInput as Lr, NavigationTreeRegistry as Lt, WorkbenchModuleContribution as M, WorkbenchCommandExecutionError as Mi, RendererReadBinding as Mn, DataTableRendererRow as Mr, WorkbenchNotificationEvent as Mt, WorkbenchModuleContributionContext as N, WorkbenchBreadcrumbController as Ni, RendererReadRegistry as Nn, DataTableRendererRowAction as Nr, WorkbenchNotificationLevel as Nt, WorkbenchCore as O, CommandParamOption as Oi, WorkbenchViewRegistry as On, DataTableRendererColumnStat as Or, NotificationRegistry as Ot, WorkbenchPagePersistenceScope as P, WorkbenchBreadcrumbItem as Pi, RendererReadRequest as Pn, DataTableRendererSelectionAction as Pr, NavigationTreeContext as Pt, createStatusRegistry as Q, isWorkbenchViewHierarchyNode as Qi, KanbanRendererQueryState as Qn, WorkbenchPanelMountStrategy as Qr, WorkbenchTerminalSessionAdapter as Qt, createWorkbenchInput as R, ResourceProvider as Ri, TreeMoveEndpoint as Rn, ControlsQueryResult$1 as Rr, NavigationTreeSlot as Rt, WorkbenchModeAddablePanelContext as S, NavigationTargetPanel$1 as Si, WorkbenchViewMenuContribution as Sn, FileRendererRefreshEnvelope as Sr, WorkbenchShellPlacementContribution as St, getWorkbenchModePanelForRegion as T, Command as Ti, WorkbenchReactViewBody as Tn, DataTableRendererBadgePalette as Tr, WorkbenchPlaceholderRegistry as Tt, ThemePreferenceTokens as U, getWorkbenchSelectionResourceKeys as Ui, TreeRendererContribution as Un, WorkbenchPanelRenderInput as Ur, KeybindingRegistry as Ut, ThemePreferenceMode as V, createWorkbenchResourceContextValues as Vi, TreeNodeInlineInput as Vn, ControlsResetInput as Vr, WorkbenchOwnedPlacementItem as Vt, FileIconThemeRegistry as W, workbenchResourceIdContextKey as Wi, TreeRendererPersistenceAdapter as Wn, WorkbenchFocusController as Wr, KeybindingSequence as Wt, WorkflowStatus as X, WorkbenchHierarchyNode as Xi, RegisteredMenuItem as Xn, WorkbenchLayout as Xr, CommandPaletteResourceResult as Xt, WorkbenchStatusSetContribution as Y, ResourceHierarchyProvider as Yi, MenuRegistry as Yn, WorkbenchCommandTarget as Yr, CommandPaletteResourceRegistry as Yt, WorkflowStatusAction as Z, WorkbenchViewHierarchyNode as Zi, KanbanRendererContribution as Zn, WorkbenchPanelInstance as Zr, WorkbenchTerminalController as Zt, resolveAnchorRegion as _, NavigationRegistry as _i, WorkbenchPageLocationDiagnostic as _n, ResourceContextAction as _r, PreferenceRegistry as _t, standardResourceIcons as a, matchesContextExpression as aa, WorkbenchTabRetention as ai, WorkbenchTerminalSessionStatus as an, BoardColumnConfig as ar, SchemaSettingsPanel as at, WorkbenchModeActivationResult as b, NavigationTargetCompound as bi, WorkbenchPageContribution as bn, FileRendererContent as br, PreferenceScopeRef as bt, headerLeadingMenuPath as c, WorkbenchWidgetTab as ci, WorkbenchShellOpenRegion as cn, EnumOptionsSource as cr, SettingsPanelBase as ct, workbenchCommandPaletteMenuPath as d, WorkbenchPanelRegion as di, WorkbenchSidePanelMode as dn, KanbanRendererCreateRowConfig as dr, SettingsRegistry as dt, ContributionMetadata as ea, WorkbenchRegionSize as ei, WorkbenchTerminalSessionExit as en, AttributeDisplayDescriptor as er, WorkbenchStatusBarRegistry as et, workbenchRegionTabAddMenuPath as f, WorkbenchRegion as fi, WorkbenchSidePanelPersistenceAdapter as fn, KanbanRendererCreateSubmission as fr, SettingsScope as ft, AnchorId as g, NavigationParser as gi, WorkbenchPageLocationController as gn, KanbanRendererSettings as gr, PreferencePropertySchema as gt, workbenchTopHeaderTrailingMenuPath as h, NavigationDispatcherContext as hi, WorkbenchPageLocationBrowser as hn, KanbanRendererRow as hr, PreferencePersistenceAdapter as ht, StandardResourceIcon as i, ContextKeyValue as ia, WorkbenchTabPosition as ii, WorkbenchTerminalSessionSink as in, BoardColumnAction as ir, CollectionSettingsPanel as it, WorkbenchModuleContext as j, WorkbenchCommandExecutionContext as ji, workbenchViewIdContextKey as jn, DataTableRendererQueryResult as jr, WorkbenchNotificationAction as jt, WorkbenchCoreContributionContext as k, CommandParamSchema as ki, WorkbenchViewRegistryStoreState as kn, DataTableRendererContribution as kr, RegisteredWorkbenchNotification as kt, headerTrailingMenuPath as l, WorkbenchPanelMenuRegion as li, WorkbenchShellRegionState as ln, KanbanRendererCreateField as lr, SettingsPanelContribution as lt, workbenchTopHeaderLeadingMenuPath as m, workbenchRegions as mi, WorkbenchPageBrowserEntry as mn, KanbanRendererOrdering as mr, ViewSettingsPanel as mt, settleReadBatch as n, ContextKeyScope as na, WorkbenchTabMenuGroup as ni, WorkbenchTerminalSessionOpener as nn, AttributeType as nr, WorkbenchStatusBarSlot as nt, DockedWorkbenchRegion$1 as o, WorkbenchStore as oa, WorkbenchTabSnapshot as oi, WorkbenchTerminalState as on, EnumOption as or, SettingsAction as ot, workbenchRegionTabLeadingMenuPath as p, workbenchPanelRegions as pi, WorkbenchPanelMenuStatePersistenceAdapter as pn, KanbanRendererFilterState as pr, SettingsSectionContribution as pt, WorkbenchStatusRegistry as q, workbenchSelectionResourceKeyMetadataKey as qi, MenuItem as qn, RegisteredPlaceholderContribution as qr, CommandPaletteResourceProviderResult as qt, rendererReadKey as r, ContextKeyService as ra, WorkbenchTabMenuRow as ri, WorkbenchTerminalSessionRequest as rn, AttributesSource as rr, createStatusBarRegistry as rt, dockedWorkbenchRegions as s, Disposable as sa, WorkbenchWidgetPlacement as si, WorkbenchShellController as sn, EnumOptions as sr, SettingsCollectionGroupBy as st, batchWorkbenchChanges as t, ContributionSource as ta, WorkbenchTabAction as ti, WorkbenchTerminalSessionModel as tn, AttributeKind as tr, WorkbenchStatusBarRegistryState as tt, resourceContextMenuPath as u, WorkbenchPanelMenuSide as ui, WorkbenchSidePanelPresentation as un, KanbanRendererCreateFieldType as ur, SettingsPanelPreference as ut, defaultPageResourceCodec as v, NavigationTarget$1 as vi, WorkbenchPageLocationPersistence as vn, SortDirection as vr, PreferenceSchemaContribution as vt, WorkbenchModeRegistry as w, WorkbenchCommandPaletteOpenInput as wi, RegisteredWorkbenchView as wn, FileRendererSaveResult as wr, WorkbenchPlaceholderContribution as wt, WorkbenchModeAddablePanel as x, NavigationTargetItem as xi, WorkbenchPlacementPresentation as xn, FileRendererContribution as xr, PreferenceValue as xt, WorkbenchModeActivationContext as y, NavigationTargetCommand as yi, WorkbenchPageNavigationResult as yn, ViewMode as yr, PreferenceScope as yt, ThemeRegistry as z, ResourceRef$1 as zi, TreeMovePolicy as zn, ControlsRendererContribution as zr, WorkbenchModePlacementContribution as zt };
|
|
2336
2385
|
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
export { type AnchorId, type AttributeDescriptor, type AttributeDisplayDescriptor, type AttributeKind, type AttributeType, type BoardColumnAction, type BoardColumnConfig, type CollectionSettingsPanel, type Command, type CommandHandler, type CommandPaletteResourceProvider, type CommandPaletteResourceProviderResult, type CommandPaletteResourceQueryContext, type CommandPaletteResourceRegistry, type CommandPaletteResourceResult, type CommandParamDescriptor, type CommandParamOption, type CommandParamSchema, type CommandRegistry, type ContextKeyScope, type ContextKeyService, type ContextKeyValue, type ContributionMetadata, type ContributionSource, type ControlsApplyInput, type ControlsQueryResult, type ControlsRendererContribution, type ControlsRendererLayout, type ControlsResetInput, type ControlsUpdateValueInput, type DataTableRendererColumn, type DataTableRendererColumnRenderer, type DataTableRendererColumnStat, type DataTableRendererContribution, type DataTableRendererQueryContext, type DataTableRendererQueryResult, type DataTableRendererRow, type DataTableRendererRowAction, type DataTableRendererSelectionAction, type DataTableRendererThemeColor, type Disposable, type DockedWorkbenchRegion, type EnumOption, type EnumOptions, type EnumOptionsSource, type FileIconThemeFont, type FileIconThemePreferenceOption, type FileIconThemeRegistry, type FileRendererContent, type FileRendererContribution, type FileRendererRefreshEnvelope, type FileRendererRefreshOrigin, type FileRendererSaveResult, type KanbanRendererContribution, type KanbanRendererCreateField, type KanbanRendererCreateFieldType, type KanbanRendererCreateRowConfig, type KanbanRendererCreateSubmission, type KanbanRendererFilterState, type KanbanRendererOrdering, type KanbanRendererQueryState, type KanbanRendererRow, type KanbanRendererSettings, type Keybinding, type KeybindingRegistry, type KeybindingSequence, type LayoutPersistenceAdapter, type MenuItem, type MenuPath, type MenuRegistry, type NavigationDispatcherContext, type NavigationParser, type NavigationRegistry, type NavigationTarget, type NavigationTargetCommand, type NavigationTargetCompound, type NavigationTargetItem, type NavigationTargetPanel, type NavigationTreeContext, type NavigationTreeContribution, type NavigationTreeOwner, type NavigationTreeRegistry, type NavigationTreeSlot, type NotificationRegistry, type PreferencePersistenceAdapter, type PreferencePropertySchema, type PreferenceRegistry, type PreferenceSchemaContribution, type PreferenceScope, type PreferenceScopeRef, type PreferenceValue, type RegisteredWorkbenchView, type ResourceBrowseEntry, type ResourceContextAction, type ResourceHierarchyCycle, type ResourceHierarchyProvider, type ResourceKindContribution, type ResourceListContext, type ResourceProvider, type ResourceRef, type ResourceRegistry, type SchemaSettingsPanel, type SettingsAction, type SettingsCollectionGroupBy, type SettingsPanelBase, type SettingsPanelContribution, type SettingsPanelPreference, type SettingsRegistry, type SettingsScope, type SettingsSectionContribution, type SortDirection, type StandardResourceIcon, type ThemePreference, type ThemePreferenceMode, type ThemePreferenceOption, type ThemePreferenceTokens, type ThemeRegistry, type TreeAction, type TreeContext, type TreeMoveEndpoint, type TreeMovePolicy, type TreeNode, type TreeNodeInlineInput, type TreeRendererContribution, type TreeRendererState, type TreeViewSection, type ViewMode, type ViewSettingsPanel, type WorkbenchBreadcrumbController, type WorkbenchBreadcrumbItem, type WorkbenchCommandExecutionContext, type WorkbenchCommandExecutionError, type WorkbenchCommandPaletteController, type WorkbenchCommandPaletteOpenInput, type WorkbenchCommandTarget, type WorkbenchCore, type WorkbenchFocusController, type WorkbenchFocusRegionId, type WorkbenchHierarchyNode, type WorkbenchHost, type WorkbenchLayout, type WorkbenchModeActivationContext, type WorkbenchModeActivationResult, type WorkbenchModeAddablePanel, type WorkbenchModeAddablePanelContext, type WorkbenchModeContribution, type WorkbenchModePlacementContribution, type WorkbenchModePlacementRegistry, type WorkbenchModeRegistry, type WorkbenchModuleContext, type WorkbenchModuleContribution, type WorkbenchModuleContributionContext, type WorkbenchNotification, type WorkbenchNotificationAction, type WorkbenchNotificationEvent, type WorkbenchNotificationLevel, type WorkbenchOverlayContribution, type WorkbenchOverlayRegistry, type WorkbenchPageBrowserEntry, type WorkbenchPageLocationBrowser, type WorkbenchPageLocationController, type WorkbenchPageLocationDiagnostic, type WorkbenchPageLocationPersistence, type WorkbenchPageNavigationResult, type WorkbenchPagePersistenceScope, type WorkbenchPagePersistenceScopeInput, type WorkbenchPanelInstance, type WorkbenchPanelMenuRegion, type WorkbenchPanelMenuSide, type WorkbenchPanelMountStrategy, type WorkbenchPanelRegion, type WorkbenchPanelRenderInput, type WorkbenchPanelTab, type WorkbenchPersistenceAdapter, type WorkbenchPlaceholderContribution, type WorkbenchPlaceholderRegistry, type WorkbenchPlacementPresentation, type WorkbenchReactViewBody, type WorkbenchRegion, type WorkbenchRegionSize, type WorkbenchShellController, type WorkbenchShellOpenRegion, type WorkbenchShellPlacementContribution, type WorkbenchShellPlacementRegistry, type WorkbenchShellRegionState, type WorkbenchSidePanelMode, type WorkbenchSidePanelPersistenceAdapter, type WorkbenchSidePanelPresentation, type WorkbenchSnapshot, type WorkbenchStatusBarItem, type WorkbenchStatusBarRegistry, type WorkbenchStatusBarRegistryState, type WorkbenchStatusBarSlot, type WorkbenchStatusRegistry, type WorkbenchStatusRegistryState, type WorkbenchStatusSetContribution, type WorkbenchTabAction, type WorkbenchTabMenuGroup, type WorkbenchTabMenuRow, type WorkbenchTabPosition, type WorkbenchTabRetention, type WorkbenchTabSnapshot, type WorkbenchTerminalController, type WorkbenchTerminalSessionAdapter, type WorkbenchTerminalSessionError, type WorkbenchTerminalSessionExit, type WorkbenchTerminalSessionModel, type WorkbenchTerminalSessionOpener, type WorkbenchTerminalSessionRequest, type WorkbenchTerminalSessionSink, type WorkbenchTerminalSessionStatus, type WorkbenchTerminalState, type WorkbenchViewBody, type WorkbenchViewContribution, type WorkbenchViewHierarchyNode, type WorkbenchViewMenuContribution, type WorkbenchViewMenuRegistry, type WorkbenchViewRegistry, type WorkbenchViewRegistryStoreState, type WorkbenchWidgetPlacement, type WorkbenchWidgetTab, type WorkflowStatus, type WorkflowStatusAction, batchWorkbenchChanges, createStatusBarRegistry, createStatusRegistry, createViewRegistry, createWorkbench, type createWorkbenchInput, createWorkbenchResourceContextValues, createWorkbenchSelectionResourceMetadata, defaultPageResourceCodec, dockedWorkbenchRegions, getKeybindingSteps, getWorkbenchModePanelForRegion, getWorkbenchSelectionResourceKeys, headerLeadingMenuPath, headerTrailingMenuPath, isWorkbenchModePanelAvailable, isWorkbenchViewHierarchyNode, matchesContextExpression, resolveAnchorRegion, resourceContextMenuPath, resourceHierarchyCycleCode, standardResourceIcons, workbenchCommandPaletteMenuPath, workbenchPanelRegions, workbenchRegionTabAddMenuPath, workbenchRegionTabLeadingMenuPath, workbenchRegions, workbenchResourceIdContextKey, workbenchResourceMetadataContextKey, workbenchResourceTypeContextKey, workbenchSelectionResourceKeyMetadataKey, workbenchTopHeaderLeadingMenuPath, workbenchTopHeaderTrailingMenuPath, workbenchViewIdContextKey };
|
|
1
|
+
import { $ as WorkbenchStatusBarItem, $i as resourceHierarchyCycleCode, $n as AttributeDescriptor, $r as WorkbenchPanelTab, $t as WorkbenchTerminalSessionError, A as WorkbenchHost, Ai as CommandRegistry, An as createViewRegistry, Ar as DataTableRendererQueryContext, At as WorkbenchNotification, B as ThemePreference, Bi as ResourceRegistry, Bn as TreeNode, Br as ControlsRendererLayout, Bt as WorkbenchModePlacementRegistry, C as WorkbenchModeContribution, Ci as WorkbenchCommandPaletteController, Cn as WorkbenchViewMenuRegistry, Cr as FileRendererRefreshOrigin, Ct as WorkbenchShellPlacementRegistry, D as createWorkbench, Di as CommandParamDescriptor, Dn as WorkbenchViewContribution, Dr as DataTableRendererColumnRenderer, Dt as WorkbenchOverlayRegistry, E as isWorkbenchModePanelAvailable, Ei as CommandHandler, En as WorkbenchViewBody, Er as DataTableRendererColumn, Et as WorkbenchOverlayContribution, F as WorkbenchPagePersistenceScopeInput, Fi as ResourceBrowseEntry, Fn as createRendererReadRegistry, Fr as DataTableRendererThemeColor, Ft as NavigationTreeContribution, G as FileIconThemeFont, Gi as workbenchResourceMetadataContextKey, Gn as TreeRendererState, Gr as WorkbenchFocusRegionId, Gt as getKeybindingSteps, H as ThemePreferenceOption, Hi as createWorkbenchSelectionResourceMetadata, Hn as TreeQueryContext, Hr as ControlsUpdateValueInput, Ht as Keybinding, I as WorkbenchPersistenceAdapter, Ii as ResourceKindContribution, In as TreeAction, It as NavigationTreeOwner, J as WorkbenchStatusRegistryState, Ji as ResourceHierarchyCycle, Jn as MenuPath, Jt as CommandPaletteResourceQueryContext, K as FileIconThemePreferenceOption, Ki as workbenchResourceTypeContextKey, Kn as TreeViewSection, Kr as LayoutPersistenceAdapter, Kt as CommandPaletteResourceProvider, L as WorkbenchSnapshot, Li as ResourceListContext, Ln as TreeContext, Lr as ControlsApplyInput, Lt as NavigationTreeRegistry, M as WorkbenchModuleContribution, Mi as WorkbenchCommandExecutionError, Mn as RendererReadBinding, Mr as DataTableRendererRow, Mt as WorkbenchNotificationEvent, N as WorkbenchModuleContributionContext, Ni as WorkbenchBreadcrumbController, Nn as RendererReadRegistry, Nr as DataTableRendererRowAction, Nt as WorkbenchNotificationLevel, O as WorkbenchCore, Oi as CommandParamOption, On as WorkbenchViewRegistry, Or as DataTableRendererColumnStat, Ot as NotificationRegistry, P as WorkbenchPagePersistenceScope, Pi as WorkbenchBreadcrumbItem, Pn as RendererReadRequest, Pr as DataTableRendererSelectionAction, Pt as NavigationTreeContext, Q as createStatusRegistry, Qi as isWorkbenchViewHierarchyNode, Qn as KanbanRendererQueryState, Qr as WorkbenchPanelMountStrategy, Qt as WorkbenchTerminalSessionAdapter, R as createWorkbenchInput, Ri as ResourceProvider, Rn as TreeMoveEndpoint, Rr as ControlsQueryResult, Rt as NavigationTreeSlot, S as WorkbenchModeAddablePanelContext, Si as NavigationTargetPanel, Sn as WorkbenchViewMenuContribution, Sr as FileRendererRefreshEnvelope, St as WorkbenchShellPlacementContribution, T as getWorkbenchModePanelForRegion, Ti as Command, Tn as WorkbenchReactViewBody, Tr as DataTableRendererBadgePalette, Tt as WorkbenchPlaceholderRegistry, U as ThemePreferenceTokens, Ui as getWorkbenchSelectionResourceKeys, Un as TreeRendererContribution, Ur as WorkbenchPanelRenderInput, Ut as KeybindingRegistry, V as ThemePreferenceMode, Vi as createWorkbenchResourceContextValues, Vn as TreeNodeInlineInput, Vr as ControlsResetInput, W as FileIconThemeRegistry, Wi as workbenchResourceIdContextKey, Wr as WorkbenchFocusController, Wt as KeybindingSequence, X as WorkflowStatus, Xi as WorkbenchHierarchyNode, Xr as WorkbenchLayout, Xt as CommandPaletteResourceResult, Y as WorkbenchStatusSetContribution, Yi as ResourceHierarchyProvider, Yn as MenuRegistry, Yr as WorkbenchCommandTarget, Yt as CommandPaletteResourceRegistry, Z as WorkflowStatusAction, Zi as WorkbenchViewHierarchyNode, Zn as KanbanRendererContribution, Zr as WorkbenchPanelInstance, Zt as WorkbenchTerminalController, _ as resolveAnchorRegion, _i as NavigationRegistry, _n as WorkbenchPageLocationDiagnostic, _r as ResourceContextAction, _t as PreferenceRegistry, a as standardResourceIcons, aa as matchesContextExpression, ai as WorkbenchTabRetention, an as WorkbenchTerminalSessionStatus, ar as BoardColumnConfig, at as SchemaSettingsPanel, b as WorkbenchModeActivationResult, bi as NavigationTargetCompound, br as FileRendererContent, bt as PreferenceScopeRef, c as headerLeadingMenuPath, ci as WorkbenchWidgetTab, cn as WorkbenchShellOpenRegion, cr as EnumOptionsSource, ct as SettingsPanelBase, d as workbenchCommandPaletteMenuPath, di as WorkbenchPanelRegion, dn as WorkbenchSidePanelMode, dr as KanbanRendererCreateRowConfig, dt as SettingsRegistry, ea as ContributionMetadata, ei as WorkbenchRegionSize, en as WorkbenchTerminalSessionExit, er as AttributeDisplayDescriptor, et as WorkbenchStatusBarRegistry, f as workbenchRegionTabAddMenuPath, fi as WorkbenchRegion, fn as WorkbenchSidePanelPersistenceAdapter, fr as KanbanRendererCreateSubmission, ft as SettingsScope, g as AnchorId, gi as NavigationParser, gn as WorkbenchPageLocationController, gr as KanbanRendererSettings, gt as PreferencePropertySchema, h as workbenchTopHeaderTrailingMenuPath, hi as NavigationDispatcherContext, hn as WorkbenchPageLocationBrowser, hr as KanbanRendererRow, ht as PreferencePersistenceAdapter, i as StandardResourceIcon, ia as ContextKeyValue, ii as WorkbenchTabPosition, in as WorkbenchTerminalSessionSink, ir as BoardColumnAction, it as CollectionSettingsPanel, j as WorkbenchModuleContext, ji as WorkbenchCommandExecutionContext, jn as workbenchViewIdContextKey, jr as DataTableRendererQueryResult, jt as WorkbenchNotificationAction, ki as CommandParamSchema, kn as WorkbenchViewRegistryStoreState, kr as DataTableRendererContribution, l as headerTrailingMenuPath, li as WorkbenchPanelMenuRegion, ln as WorkbenchShellRegionState, lr as KanbanRendererCreateField, lt as SettingsPanelContribution, m as workbenchTopHeaderLeadingMenuPath, mi as workbenchRegions, mn as WorkbenchPageBrowserEntry, mr as KanbanRendererOrdering, mt as ViewSettingsPanel, n as settleReadBatch, na as ContextKeyScope, ni as WorkbenchTabMenuGroup, nn as WorkbenchTerminalSessionOpener, nr as AttributeType, nt as WorkbenchStatusBarSlot, o as DockedWorkbenchRegion, oi as WorkbenchTabSnapshot, on as WorkbenchTerminalState, or as EnumOption, ot as SettingsAction, p as workbenchRegionTabLeadingMenuPath, pi as workbenchPanelRegions, pr as KanbanRendererFilterState, pt as SettingsSectionContribution, q as WorkbenchStatusRegistry, qi as workbenchSelectionResourceKeyMetadataKey, qn as MenuItem, qt as CommandPaletteResourceProviderResult, r as rendererReadKey, ra as ContextKeyService, ri as WorkbenchTabMenuRow, rn as WorkbenchTerminalSessionRequest, rt as createStatusBarRegistry, s as dockedWorkbenchRegions, sa as Disposable, si as WorkbenchWidgetPlacement, sn as WorkbenchShellController, sr as EnumOptions, st as SettingsCollectionGroupBy, t as batchWorkbenchChanges, ta as ContributionSource, ti as WorkbenchTabAction, tn as WorkbenchTerminalSessionModel, tr as AttributeKind, tt as WorkbenchStatusBarRegistryState, u as resourceContextMenuPath, ui as WorkbenchPanelMenuSide, un as WorkbenchSidePanelPresentation, ur as KanbanRendererCreateFieldType, ut as SettingsPanelPreference, v as defaultPageResourceCodec, vi as NavigationTarget, vn as WorkbenchPageLocationPersistence, vr as SortDirection, vt as PreferenceSchemaContribution, w as WorkbenchModeRegistry, wi as WorkbenchCommandPaletteOpenInput, wn as RegisteredWorkbenchView, wr as FileRendererSaveResult, wt as WorkbenchPlaceholderContribution, x as WorkbenchModeAddablePanel, xi as NavigationTargetItem, xn as WorkbenchPlacementPresentation, xr as FileRendererContribution, xt as PreferenceValue, y as WorkbenchModeActivationContext, yi as NavigationTargetCommand, yn as WorkbenchPageNavigationResult, yr as ViewMode, yt as PreferenceScope, z as ThemeRegistry, zi as ResourceRef, zn as TreeMovePolicy, zr as ControlsRendererContribution, zt as WorkbenchModePlacementContribution } from "./index-DSsmgN2a.js";
|
|
2
|
+
export { type AnchorId, type AttributeDescriptor, type AttributeDisplayDescriptor, type AttributeKind, type AttributeType, type BoardColumnAction, type BoardColumnConfig, type CollectionSettingsPanel, type Command, type CommandHandler, type CommandPaletteResourceProvider, type CommandPaletteResourceProviderResult, type CommandPaletteResourceQueryContext, type CommandPaletteResourceRegistry, type CommandPaletteResourceResult, type CommandParamDescriptor, type CommandParamOption, type CommandParamSchema, type CommandRegistry, type ContextKeyScope, type ContextKeyService, type ContextKeyValue, type ContributionMetadata, type ContributionSource, type ControlsApplyInput, type ControlsQueryResult, type ControlsRendererContribution, type ControlsRendererLayout, type ControlsResetInput, type ControlsUpdateValueInput, type DataTableRendererBadgePalette, type DataTableRendererColumn, type DataTableRendererColumnRenderer, type DataTableRendererColumnStat, type DataTableRendererContribution, type DataTableRendererQueryContext, type DataTableRendererQueryResult, type DataTableRendererRow, type DataTableRendererRowAction, type DataTableRendererSelectionAction, type DataTableRendererThemeColor, type Disposable, type DockedWorkbenchRegion, type EnumOption, type EnumOptions, type EnumOptionsSource, type FileIconThemeFont, type FileIconThemePreferenceOption, type FileIconThemeRegistry, type FileRendererContent, type FileRendererContribution, type FileRendererRefreshEnvelope, type FileRendererRefreshOrigin, type FileRendererSaveResult, type KanbanRendererContribution, type KanbanRendererCreateField, type KanbanRendererCreateFieldType, type KanbanRendererCreateRowConfig, type KanbanRendererCreateSubmission, type KanbanRendererFilterState, type KanbanRendererOrdering, type KanbanRendererQueryState, type KanbanRendererRow, type KanbanRendererSettings, type Keybinding, type KeybindingRegistry, type KeybindingSequence, type LayoutPersistenceAdapter, type MenuItem, type MenuPath, type MenuRegistry, type NavigationDispatcherContext, type NavigationParser, type NavigationRegistry, type NavigationTarget, type NavigationTargetCommand, type NavigationTargetCompound, type NavigationTargetItem, type NavigationTargetPanel, type NavigationTreeContext, type NavigationTreeContribution, type NavigationTreeOwner, type NavigationTreeRegistry, type NavigationTreeSlot, type NotificationRegistry, type PreferencePersistenceAdapter, type PreferencePropertySchema, type PreferenceRegistry, type PreferenceSchemaContribution, type PreferenceScope, type PreferenceScopeRef, type PreferenceValue, type RegisteredWorkbenchView, type RendererReadBinding, type RendererReadRegistry, type RendererReadRequest, type ResourceBrowseEntry, type ResourceContextAction, type ResourceHierarchyCycle, type ResourceHierarchyProvider, type ResourceKindContribution, type ResourceListContext, type ResourceProvider, type ResourceRef, type ResourceRegistry, type SchemaSettingsPanel, type SettingsAction, type SettingsCollectionGroupBy, type SettingsPanelBase, type SettingsPanelContribution, type SettingsPanelPreference, type SettingsRegistry, type SettingsScope, type SettingsSectionContribution, type SortDirection, type StandardResourceIcon, type ThemePreference, type ThemePreferenceMode, type ThemePreferenceOption, type ThemePreferenceTokens, type ThemeRegistry, type TreeAction, type TreeContext, type TreeMoveEndpoint, type TreeMovePolicy, type TreeNode, type TreeNodeInlineInput, type TreeQueryContext, type TreeRendererContribution, type TreeRendererState, type TreeViewSection, type ViewMode, type ViewSettingsPanel, type WorkbenchBreadcrumbController, type WorkbenchBreadcrumbItem, type WorkbenchCommandExecutionContext, type WorkbenchCommandExecutionError, type WorkbenchCommandPaletteController, type WorkbenchCommandPaletteOpenInput, type WorkbenchCommandTarget, type WorkbenchCore, type WorkbenchFocusController, type WorkbenchFocusRegionId, type WorkbenchHierarchyNode, type WorkbenchHost, type WorkbenchLayout, type WorkbenchModeActivationContext, type WorkbenchModeActivationResult, type WorkbenchModeAddablePanel, type WorkbenchModeAddablePanelContext, type WorkbenchModeContribution, type WorkbenchModePlacementContribution, type WorkbenchModePlacementRegistry, type WorkbenchModeRegistry, type WorkbenchModuleContext, type WorkbenchModuleContribution, type WorkbenchModuleContributionContext, type WorkbenchNotification, type WorkbenchNotificationAction, type WorkbenchNotificationEvent, type WorkbenchNotificationLevel, type WorkbenchOverlayContribution, type WorkbenchOverlayRegistry, type WorkbenchPageBrowserEntry, type WorkbenchPageLocationBrowser, type WorkbenchPageLocationController, type WorkbenchPageLocationDiagnostic, type WorkbenchPageLocationPersistence, type WorkbenchPageNavigationResult, type WorkbenchPagePersistenceScope, type WorkbenchPagePersistenceScopeInput, type WorkbenchPanelInstance, type WorkbenchPanelMenuRegion, type WorkbenchPanelMenuSide, type WorkbenchPanelMountStrategy, type WorkbenchPanelRegion, type WorkbenchPanelRenderInput, type WorkbenchPanelTab, type WorkbenchPersistenceAdapter, type WorkbenchPlaceholderContribution, type WorkbenchPlaceholderRegistry, type WorkbenchPlacementPresentation, type WorkbenchReactViewBody, type WorkbenchRegion, type WorkbenchRegionSize, type WorkbenchShellController, type WorkbenchShellOpenRegion, type WorkbenchShellPlacementContribution, type WorkbenchShellPlacementRegistry, type WorkbenchShellRegionState, type WorkbenchSidePanelMode, type WorkbenchSidePanelPersistenceAdapter, type WorkbenchSidePanelPresentation, type WorkbenchSnapshot, type WorkbenchStatusBarItem, type WorkbenchStatusBarRegistry, type WorkbenchStatusBarRegistryState, type WorkbenchStatusBarSlot, type WorkbenchStatusRegistry, type WorkbenchStatusRegistryState, type WorkbenchStatusSetContribution, type WorkbenchTabAction, type WorkbenchTabMenuGroup, type WorkbenchTabMenuRow, type WorkbenchTabPosition, type WorkbenchTabRetention, type WorkbenchTabSnapshot, type WorkbenchTerminalController, type WorkbenchTerminalSessionAdapter, type WorkbenchTerminalSessionError, type WorkbenchTerminalSessionExit, type WorkbenchTerminalSessionModel, type WorkbenchTerminalSessionOpener, type WorkbenchTerminalSessionRequest, type WorkbenchTerminalSessionSink, type WorkbenchTerminalSessionStatus, type WorkbenchTerminalState, type WorkbenchViewBody, type WorkbenchViewContribution, type WorkbenchViewHierarchyNode, type WorkbenchViewMenuContribution, type WorkbenchViewMenuRegistry, type WorkbenchViewRegistry, type WorkbenchViewRegistryStoreState, type WorkbenchWidgetPlacement, type WorkbenchWidgetTab, type WorkflowStatus, type WorkflowStatusAction, batchWorkbenchChanges, createRendererReadRegistry, createStatusBarRegistry, createStatusRegistry, createViewRegistry, createWorkbench, type createWorkbenchInput, createWorkbenchResourceContextValues, createWorkbenchSelectionResourceMetadata, defaultPageResourceCodec, dockedWorkbenchRegions, getKeybindingSteps, getWorkbenchModePanelForRegion, getWorkbenchSelectionResourceKeys, headerLeadingMenuPath, headerTrailingMenuPath, isWorkbenchModePanelAvailable, isWorkbenchViewHierarchyNode, matchesContextExpression, rendererReadKey, resolveAnchorRegion, resourceContextMenuPath, resourceHierarchyCycleCode, settleReadBatch, standardResourceIcons, workbenchCommandPaletteMenuPath, workbenchPanelRegions, workbenchRegionTabAddMenuPath, workbenchRegionTabLeadingMenuPath, workbenchRegions, workbenchResourceIdContextKey, workbenchResourceMetadataContextKey, workbenchResourceTypeContextKey, workbenchSelectionResourceKeyMetadataKey, workbenchTopHeaderLeadingMenuPath, workbenchTopHeaderTrailingMenuPath, workbenchViewIdContextKey };
|
|
3
3
|
export {};
|