Wholesale swap of packages/{core,viewer,editor,mcp} and apps/editor with the
versions from the private editor repo, which is the production source of truth.
Setup changes:
- packages/{core,viewer,editor} versions held at 0.7.0 baseline (matching
the most recent published release) so a bump=minor publishes 0.8.0
- packages/mcp held at 0.1.1 (never published; first publish will go through
the new release.yml flow)
- peerDependencies and devDependencies for inter-package @pascal-app/*
references pinned to ^0.7.0 instead of '*' / 'workspace:*' so they are
valid for npm consumers
- Root package.json: TypeScript bumped to 6.0.2, added overrides for
@types/react, @types/react-dom, @types/three to prevent JSX namespace
fragmentation across the workspace
- release.yml extended to also publish editor and mcp; 'both' option renamed
to 'all'; added a sync step that updates inter-package peerDeps/devDeps to
match the new versions on every bump (so viewer/editor/mcp tarballs always
reference the version of core they were built against)
- Root scripts gained release:editor and release:mcp shortcuts
Verification:
- bun install --frozen-lockfile is consistent
- packages/{core,viewer,mcp} build cleanly, dist/index.d.ts emitted
- packages/editor check-types reports 21 pre-existing errors, identical to
what private-editor currently reports
Open PRs against editor-v2 will need rebasing/conflict resolution.
40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
import type { AnyNode, BaseNode, BuildingNode, LevelNode, ZoneNode } from '@pascal-app/core'
|
|
import type { Object3D } from 'three'
|
|
type SelectionPath = {
|
|
buildingId: BuildingNode['id'] | null
|
|
levelId: LevelNode['id'] | null
|
|
zoneId: ZoneNode['id'] | null
|
|
selectedIds: BaseNode['id'][]
|
|
}
|
|
type Outliner = {
|
|
selectedObjects: Object3D[]
|
|
hoveredObjects: Object3D[]
|
|
}
|
|
type ViewerState = {
|
|
selection: SelectionPath
|
|
previewSelectedIds: BaseNode['id'][]
|
|
setPreviewSelectedIds: (ids: BaseNode['id'][]) => void
|
|
hoverHighlightMode: string
|
|
setHoverHighlightMode: (mode: string) => void
|
|
hoveredId: AnyNode['id'] | ZoneNode['id'] | null
|
|
setHoveredId: (id: AnyNode['id'] | ZoneNode['id'] | null) => void
|
|
cameraMode: 'perspective' | 'orthographic'
|
|
setCameraMode: (mode: 'perspective' | 'orthographic') => void
|
|
levelMode: 'stacked' | 'exploded' | 'solo' | 'manual'
|
|
setLevelMode: (mode: 'stacked' | 'exploded' | 'solo' | 'manual') => void
|
|
wallMode: 'up' | 'cutaway' | 'down'
|
|
setWallMode: (mode: 'up' | 'cutaway' | 'down') => void
|
|
showScans: boolean
|
|
setShowScans: (show: boolean) => void
|
|
showGuides: boolean
|
|
setShowGuides: (show: boolean) => void
|
|
setSelection: (updates: Partial<SelectionPath>) => void
|
|
resetSelection: () => void
|
|
outliner: Outliner
|
|
exportScene: ((format?: 'glb' | 'stl' | 'obj') => Promise<void>) | null
|
|
setExportScene: (fn: ((format?: 'glb' | 'stl' | 'obj') => Promise<void>) | null) => void
|
|
}
|
|
declare const useViewer: import('zustand').UseBoundStore<import('zustand').StoreApi<ViewerState>>
|
|
export default useViewer
|
|
//# sourceMappingURL=use-viewer.d.ts.map
|