@kerros/editor 0.0.0-stage → 0.1.0-rc.2
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/LICENSE +21 -0
- package/README.md +35 -2
- package/dist/SitePlanner.js +1189 -0
- package/dist/SitePlanner.js.map +1 -0
- package/dist/adapters/basemap.js +11 -0
- package/dist/adapters/basemap.js.map +1 -0
- package/dist/adapters/persistence.js +121 -0
- package/dist/adapters/persistence.js.map +1 -0
- package/dist/adapters/status.js +11 -0
- package/dist/adapters/status.js.map +1 -0
- package/dist/adapters/useProjectPersistence.js +56 -0
- package/dist/adapters/useProjectPersistence.js.map +1 -0
- package/dist/components/AiImportPanel.js +635 -0
- package/dist/components/AiImportPanel.js.map +1 -0
- package/dist/components/AnalysisPreview.js +179 -0
- package/dist/components/AnalysisPreview.js.map +1 -0
- package/dist/components/ElevatorPanel.js +120 -0
- package/dist/components/ElevatorPanel.js.map +1 -0
- package/dist/components/Icons.js +57 -0
- package/dist/components/Icons.js.map +1 -0
- package/dist/components/ImportDialog.js +467 -0
- package/dist/components/ImportDialog.js.map +1 -0
- package/dist/components/Inspector.js +1184 -0
- package/dist/components/Inspector.js.map +1 -0
- package/dist/components/NavigatePanel.js +301 -0
- package/dist/components/NavigatePanel.js.map +1 -0
- package/dist/components/NavigationGraph.js +234 -0
- package/dist/components/NavigationGraph.js.map +1 -0
- package/dist/components/StructureExplorer.js +510 -0
- package/dist/components/StructureExplorer.js.map +1 -0
- package/dist/components/StructureView.js +286 -0
- package/dist/components/StructureView.js.map +1 -0
- package/dist/components/controls.js +209 -0
- package/dist/components/controls.js.map +1 -0
- package/dist/components/graphLayout.js +27 -0
- package/dist/components/graphLayout.js.map +1 -0
- package/dist/host.js +175 -0
- package/dist/host.js.map +1 -0
- package/dist/i18n.js +88 -0
- package/dist/i18n.js.map +1 -0
- package/dist/import/analysisPreview.js +41 -0
- package/dist/import/analysisPreview.js.map +1 -0
- package/dist/import/brief.js +29 -0
- package/dist/import/brief.js.map +1 -0
- package/dist/import/checkpoint.js +50 -0
- package/dist/import/checkpoint.js.map +1 -0
- package/dist/import/detect.js +120 -0
- package/dist/import/detect.js.map +1 -0
- package/dist/import/documentSvg.js +49 -0
- package/dist/import/documentSvg.js.map +1 -0
- package/dist/import/instructions.js +20 -0
- package/dist/import/instructions.js.map +1 -0
- package/dist/import/openings.js +61 -0
- package/dist/import/openings.js.map +1 -0
- package/dist/import/planImport.js +233 -0
- package/dist/import/planImport.js.map +1 -0
- package/dist/import/register.js +47 -0
- package/dist/import/register.js.map +1 -0
- package/dist/import/runs.js +67 -0
- package/dist/import/runs.js.map +1 -0
- package/dist/import/session.js +23 -0
- package/dist/import/session.js.map +1 -0
- package/dist/import/types.js +13 -0
- package/dist/import/types.js.map +1 -0
- package/dist/import/usage.js +29 -0
- package/dist/import/usage.js.map +1 -0
- package/dist/import/walls.js +112 -0
- package/dist/import/walls.js.map +1 -0
- package/dist/index.js +178 -0
- package/dist/index.js.map +1 -0
- package/dist/map/CabinMaterials.js +81 -0
- package/dist/map/CabinMaterials.js.map +1 -0
- package/dist/map/CabinMirror.js +43 -0
- package/dist/map/CabinMirror.js.map +1 -0
- package/dist/map/Doors.js +80 -0
- package/dist/map/Doors.js.map +1 -0
- package/dist/map/ElevatorCabin.js +93 -0
- package/dist/map/ElevatorCabin.js.map +1 -0
- package/dist/map/FixtureLights.js +117 -0
- package/dist/map/FixtureLights.js.map +1 -0
- package/dist/map/MapCanvas.js +2161 -0
- package/dist/map/MapCanvas.js.map +1 -0
- package/dist/map/Passenger.js +69 -0
- package/dist/map/Passenger.js.map +1 -0
- package/dist/map/SceneLayer.js +1534 -0
- package/dist/map/SceneLayer.js.map +1 -0
- package/dist/map/UndergroundContext.js +153 -0
- package/dist/map/UndergroundContext.js.map +1 -0
- package/dist/map/ambience.js +194 -0
- package/dist/map/ambience.js.map +1 -0
- package/dist/map/architecture.js +305 -0
- package/dist/map/architecture.js.map +1 -0
- package/dist/map/bathMusic.js +92 -0
- package/dist/map/bathMusic.js.map +1 -0
- package/dist/map/cameraAim.js +33 -0
- package/dist/map/cameraAim.js.map +1 -0
- package/dist/map/elevators.js +56 -0
- package/dist/map/elevators.js.map +1 -0
- package/dist/map/excavation.js +52 -0
- package/dist/map/excavation.js.map +1 -0
- package/dist/map/exteriors.js +25 -0
- package/dist/map/exteriors.js.map +1 -0
- package/dist/map/features.js +218 -0
- package/dist/map/features.js.map +1 -0
- package/dist/map/fences.js +29 -0
- package/dist/map/fences.js.map +1 -0
- package/dist/map/journey.js +112 -0
- package/dist/map/journey.js.map +1 -0
- package/dist/map/levels.js +6 -0
- package/dist/map/levels.js.map +1 -0
- package/dist/map/lighting.js +143 -0
- package/dist/map/lighting.js.map +1 -0
- package/dist/map/loadBasemap.js +26 -0
- package/dist/map/loadBasemap.js.map +1 -0
- package/dist/map/materials.js +183 -0
- package/dist/map/materials.js.map +1 -0
- package/dist/map/poolLighting.js +39 -0
- package/dist/map/poolLighting.js.map +1 -0
- package/dist/map/projection.js +24 -0
- package/dist/map/projection.js.map +1 -0
- package/dist/map/rampGeometry.js +38 -0
- package/dist/map/rampGeometry.js.map +1 -0
- package/dist/map/route.js +107 -0
- package/dist/map/route.js.map +1 -0
- package/dist/map/stairSurfaces.js +115 -0
- package/dist/map/stairSurfaces.js.map +1 -0
- package/dist/map/surfaces.js +136 -0
- package/dist/map/surfaces.js.map +1 -0
- package/dist/map/textures.js +95 -0
- package/dist/map/textures.js.map +1 -0
- package/dist/map/underground.js +34 -0
- package/dist/map/underground.js.map +1 -0
- package/dist/map/walk.js +433 -0
- package/dist/map/walk.js.map +1 -0
- package/dist/map/walkContext.js +46 -0
- package/dist/map/walkContext.js.map +1 -0
- package/dist/map/walkDimensions.js +7 -0
- package/dist/map/walkDimensions.js.map +1 -0
- package/dist/map/walkJourney.js +85 -0
- package/dist/map/walkJourney.js.map +1 -0
- package/dist/map/walkSurfaces.js +106 -0
- package/dist/map/walkSurfaces.js.map +1 -0
- package/dist/map/wallJoins.js +70 -0
- package/dist/map/wallJoins.js.map +1 -0
- package/dist/map/water.js +274 -0
- package/dist/map/water.js.map +1 -0
- package/dist/model/authoring.js +99 -0
- package/dist/model/authoring.js.map +1 -0
- package/dist/model/boundaries.js +548 -0
- package/dist/model/boundaries.js.map +1 -0
- package/dist/model/coverage.js +30 -0
- package/dist/model/coverage.js.map +1 -0
- package/dist/model/document.js +52 -0
- package/dist/model/document.js.map +1 -0
- package/dist/model/doors.js +47 -0
- package/dist/model/doors.js.map +1 -0
- package/dist/model/factory.js +56 -0
- package/dist/model/factory.js.map +1 -0
- package/dist/model/geometry.js +454 -0
- package/dist/model/geometry.js.map +1 -0
- package/dist/model/history.js +29 -0
- package/dist/model/history.js.map +1 -0
- package/dist/model/imports.js +45 -0
- package/dist/model/imports.js.map +1 -0
- package/dist/model/inference.js +182 -0
- package/dist/model/inference.js.map +1 -0
- package/dist/model/materials.js +11 -0
- package/dist/model/materials.js.map +1 -0
- package/dist/model/mutations.js +157 -0
- package/dist/model/mutations.js.map +1 -0
- package/dist/model/navigation.js +275 -0
- package/dist/model/navigation.js.map +1 -0
- package/dist/model/ontology.js +109 -0
- package/dist/model/ontology.js.map +1 -0
- package/dist/model/passages.js +5 -0
- package/dist/model/passages.js.map +1 -0
- package/dist/model/portals.js +42 -0
- package/dist/model/portals.js.map +1 -0
- package/dist/model/precision.js +11 -0
- package/dist/model/precision.js.map +1 -0
- package/dist/model/project.js +31 -0
- package/dist/model/project.js.map +1 -0
- package/dist/model/ramps.js +10 -0
- package/dist/model/ramps.js.map +1 -0
- package/dist/model/roomNavigation.js +87 -0
- package/dist/model/roomNavigation.js.map +1 -0
- package/dist/model/routeClearance.js +72 -0
- package/dist/model/routeClearance.js.map +1 -0
- package/dist/model/spaces.js +104 -0
- package/dist/model/spaces.js.map +1 -0
- package/dist/model/stairGeometry.js +40 -0
- package/dist/model/stairGeometry.js.map +1 -0
- package/dist/model/stairTraversal.js +48 -0
- package/dist/model/stairTraversal.js.map +1 -0
- package/dist/model/topology.js +63 -0
- package/dist/model/topology.js.map +1 -0
- package/dist/model/types.js +35 -0
- package/dist/model/types.js.map +1 -0
- package/dist/model/validate.js +240 -0
- package/dist/model/validate.js.map +1 -0
- package/dist/model/vertical.js +129 -0
- package/dist/model/vertical.js.map +1 -0
- package/dist/model/walls.js +261 -0
- package/dist/model/walls.js.map +1 -0
- package/dist/planner/DrawingDock.js +231 -0
- package/dist/planner/DrawingDock.js.map +1 -0
- package/dist/planner/FloorControls.js +93 -0
- package/dist/planner/FloorControls.js.map +1 -0
- package/dist/planner/MapSettings.js +143 -0
- package/dist/planner/MapSettings.js.map +1 -0
- package/dist/planner/PlannerHelp.js +57 -0
- package/dist/planner/PlannerHelp.js.map +1 -0
- package/dist/planner/ProjectSidebar.js +246 -0
- package/dist/planner/ProjectSidebar.js.map +1 -0
- package/dist/planner/floors.js +18 -0
- package/dist/planner/floors.js.map +1 -0
- package/dist/planner/useDrawingTools.js +341 -0
- package/dist/planner/useDrawingTools.js.map +1 -0
- package/dist/planner/useMapDisplay.js +51 -0
- package/dist/planner/useMapDisplay.js.map +1 -0
- package/dist/planner/usePlannerKeyboard.js +138 -0
- package/dist/planner/usePlannerKeyboard.js.map +1 -0
- package/dist/planner/useReferenceAlignment.js +50 -0
- package/dist/planner/useReferenceAlignment.js.map +1 -0
- package/dist/styles.css +4931 -0
- package/dist/theme/index.js +34 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/types/SitePlanner.d.ts +5 -0
- package/dist/types/adapters/basemap.d.ts +2 -0
- package/dist/types/adapters/persistence.d.ts +29 -0
- package/dist/types/adapters/status.d.ts +4 -0
- package/dist/types/adapters/useProjectPersistence.d.ts +13 -0
- package/dist/types/components/AiImportPanel.d.ts +9 -0
- package/dist/types/components/AnalysisPreview.d.ts +4 -0
- package/dist/types/components/ElevatorPanel.d.ts +18 -0
- package/dist/types/components/Icons.d.ts +8 -0
- package/dist/types/components/ImportDialog.d.ts +42 -0
- package/dist/types/components/Inspector.d.ts +38 -0
- package/dist/types/components/NavigatePanel.d.ts +27 -0
- package/dist/types/components/NavigationGraph.d.ts +10 -0
- package/dist/types/components/StructureExplorer.d.ts +8 -0
- package/dist/types/components/StructureView.d.ts +22 -0
- package/dist/types/components/controls.d.ts +52 -0
- package/dist/types/components/graphLayout.d.ts +9 -0
- package/dist/types/editor/host.d.ts +9 -0
- package/dist/types/editor/index.d.ts +2 -0
- package/dist/types/i18n.d.ts +85 -0
- package/dist/types/import/analysisPreview.d.ts +27 -0
- package/dist/types/import/brief.d.ts +22 -0
- package/dist/types/import/checkpoint.d.ts +49 -0
- package/dist/types/import/detect.d.ts +34 -0
- package/dist/types/import/documentSvg.d.ts +2 -0
- package/dist/types/import/index.d.ts +10 -0
- package/dist/types/import/instructions.d.ts +7 -0
- package/dist/types/import/openings.d.ts +22 -0
- package/dist/types/import/planImport.d.ts +22 -0
- package/dist/types/import/register.d.ts +25 -0
- package/dist/types/import/runs.d.ts +31 -0
- package/dist/types/import/session.d.ts +33 -0
- package/dist/types/import/types.d.ts +56 -0
- package/dist/types/import/usage.d.ts +10 -0
- package/dist/types/import/walls.d.ts +37 -0
- package/dist/types/map/CabinMaterials.d.ts +18 -0
- package/dist/types/map/CabinMirror.d.ts +13 -0
- package/dist/types/map/Doors.d.ts +11 -0
- package/dist/types/map/ElevatorCabin.d.ts +20 -0
- package/dist/types/map/FixtureLights.d.ts +35 -0
- package/dist/types/map/MapCanvas.d.ts +87 -0
- package/dist/types/map/Passenger.d.ts +18 -0
- package/dist/types/map/SceneLayer.d.ts +306 -0
- package/dist/types/map/UndergroundContext.d.ts +18 -0
- package/dist/types/map/ambience.d.ts +29 -0
- package/dist/types/map/architecture.d.ts +8 -0
- package/dist/types/map/bathMusic.d.ts +14 -0
- package/dist/types/map/cameraAim.d.ts +20 -0
- package/dist/types/map/elevators.d.ts +16 -0
- package/dist/types/map/excavation.d.ts +9 -0
- package/dist/types/map/exteriors.d.ts +3 -0
- package/dist/types/map/features.d.ts +33 -0
- package/dist/types/map/fences.d.ts +4 -0
- package/dist/types/map/journey.d.ts +36 -0
- package/dist/types/map/levels.d.ts +4 -0
- package/dist/types/map/lighting.d.ts +103 -0
- package/dist/types/map/loadBasemap.d.ts +4 -0
- package/dist/types/map/materials.d.ts +38 -0
- package/dist/types/map/poolLighting.d.ts +11 -0
- package/dist/types/map/projection.d.ts +9 -0
- package/dist/types/map/rampGeometry.d.ts +8 -0
- package/dist/types/map/route.d.ts +59 -0
- package/dist/types/map/stairSurfaces.d.ts +29 -0
- package/dist/types/map/surfaces.d.ts +36 -0
- package/dist/types/map/textures.d.ts +8 -0
- package/dist/types/map/underground.d.ts +30 -0
- package/dist/types/map/walk.d.ts +232 -0
- package/dist/types/map/walkContext.d.ts +11 -0
- package/dist/types/map/walkDimensions.d.ts +5 -0
- package/dist/types/map/walkJourney.d.ts +33 -0
- package/dist/types/map/walkSurfaces.d.ts +27 -0
- package/dist/types/map/wallJoins.d.ts +6 -0
- package/dist/types/map/water.d.ts +12 -0
- package/dist/types/model/authoring.d.ts +38 -0
- package/dist/types/model/boundaries.d.ts +41 -0
- package/dist/types/model/coverage.d.ts +8 -0
- package/dist/types/model/document.d.ts +9 -0
- package/dist/types/model/doors.d.ts +19 -0
- package/dist/types/model/factory.d.ts +5 -0
- package/dist/types/model/geometry.d.ts +99 -0
- package/dist/types/model/history.d.ts +10 -0
- package/dist/types/model/host.d.ts +154 -0
- package/dist/types/model/imports.d.ts +7 -0
- package/dist/types/model/inference.d.ts +46 -0
- package/dist/types/model/live.d.ts +60 -0
- package/dist/types/model/materials.d.ts +28 -0
- package/dist/types/model/mutations.d.ts +178 -0
- package/dist/types/model/navigation.d.ts +70 -0
- package/dist/types/model/ontology.d.ts +43 -0
- package/dist/types/model/passages.d.ts +2 -0
- package/dist/types/model/portals.d.ts +9 -0
- package/dist/types/model/precision.d.ts +11 -0
- package/dist/types/model/project.d.ts +8 -0
- package/dist/types/model/ramps.d.ts +7 -0
- package/dist/types/model/roomNavigation.d.ts +15 -0
- package/dist/types/model/routeClearance.d.ts +11 -0
- package/dist/types/model/spaces.d.ts +46 -0
- package/dist/types/model/stairGeometry.d.ts +27 -0
- package/dist/types/model/stairTraversal.d.ts +8 -0
- package/dist/types/model/topology.d.ts +14 -0
- package/dist/types/model/types.d.ts +369 -0
- package/dist/types/model/validate.d.ts +38 -0
- package/dist/types/model/vertical.d.ts +145 -0
- package/dist/types/model/walls.d.ts +71 -0
- package/dist/types/planner/DrawingDock.d.ts +16 -0
- package/dist/types/planner/FloorControls.d.ts +17 -0
- package/dist/types/planner/MapSettings.d.ts +16 -0
- package/dist/types/planner/PlannerHelp.d.ts +3 -0
- package/dist/types/planner/ProjectSidebar.d.ts +32 -0
- package/dist/types/planner/floors.d.ts +3 -0
- package/dist/types/planner/types.d.ts +3 -0
- package/dist/types/planner/useDrawingTools.d.ts +52 -0
- package/dist/types/planner/useMapDisplay.d.ts +29 -0
- package/dist/types/planner/usePlannerKeyboard.d.ts +18 -0
- package/dist/types/planner/useReferenceAlignment.d.ts +30 -0
- package/dist/types/schema/index.d.ts +25 -0
- package/dist/types/theme/index.d.ts +55 -0
- package/package.json +58 -4
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BasemapConfig } from '../model/host';
|
|
2
|
+
import type { ProjectDocument } from '../model/types';
|
|
3
|
+
import type { CommitProject } from './types';
|
|
4
|
+
import type { useMapDisplay } from './useMapDisplay';
|
|
5
|
+
interface MapSettingsProps {
|
|
6
|
+
display: ReturnType<typeof useMapDisplay>;
|
|
7
|
+
project: ProjectDocument;
|
|
8
|
+
floorId: string | null;
|
|
9
|
+
editing: boolean;
|
|
10
|
+
hostBasemap?: BasemapConfig;
|
|
11
|
+
commit: CommitProject;
|
|
12
|
+
snapping: boolean;
|
|
13
|
+
setSnapping: (enabled: boolean) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function MapSettings({ display, project, floorId, editing, hostBasemap, commit, snapping, setSnapping, }: MapSettingsProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PlannerMode } from '../model/host';
|
|
2
|
+
import type { StatusReading } from '../model/live';
|
|
3
|
+
import type { ProjectDocument } from '../model/types';
|
|
4
|
+
interface ProjectSidebarProps {
|
|
5
|
+
state: ReturnType<typeof useProjectSidebar>;
|
|
6
|
+
project: ProjectDocument;
|
|
7
|
+
floorId: string | null;
|
|
8
|
+
selected: string | null;
|
|
9
|
+
mode: PlannerMode;
|
|
10
|
+
editing: boolean;
|
|
11
|
+
readOnly: boolean;
|
|
12
|
+
statuses: Map<string, StatusReading>;
|
|
13
|
+
alarmFloors: Set<string | null>;
|
|
14
|
+
activeTab: 'structure' | 'objects';
|
|
15
|
+
setActiveTab: (tab: 'structure' | 'objects') => void;
|
|
16
|
+
leave: () => void;
|
|
17
|
+
select: (id: string | null, focus?: boolean) => void;
|
|
18
|
+
changeFloor: (id: string | null) => void;
|
|
19
|
+
onAnchor: () => void;
|
|
20
|
+
onAddFloor: () => void;
|
|
21
|
+
onDuplicateFloor: () => void;
|
|
22
|
+
onImportReference: () => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function useProjectSidebar(): {
|
|
25
|
+
search: string;
|
|
26
|
+
setSearch: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
27
|
+
collapsedBuildings: Set<string>;
|
|
28
|
+
setCollapsedBuildings: import("react").Dispatch<import("react").SetStateAction<Set<string>>>;
|
|
29
|
+
};
|
|
30
|
+
/** Project browsing chrome, with search and collapsed groups local to the sidebar. */
|
|
31
|
+
export declare function ProjectSidebar({ state, project, floorId, selected, mode, editing, readOnly, statuses, alarmFloors, activeTab, setActiveTab, leave, select, changeFloor, onAnchor, onAddFloor, onDuplicateFloor, onImportReference, }: ProjectSidebarProps): import("react").JSX.Element;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type GeometryDrag } from '../model/authoring';
|
|
2
|
+
import type { Point, ProjectDocument, SiteObject, Tool } from '../model/types';
|
|
3
|
+
import { type WallProposal } from '../model/walls';
|
|
4
|
+
import type { CommitProject } from './types';
|
|
5
|
+
interface DrawingToolsOptions {
|
|
6
|
+
project: ProjectDocument;
|
|
7
|
+
floorId: string | null;
|
|
8
|
+
selected: string | null;
|
|
9
|
+
editing: boolean;
|
|
10
|
+
threeD: boolean;
|
|
11
|
+
commit: CommitProject;
|
|
12
|
+
notify: (message: string) => void;
|
|
13
|
+
setSelected: (id: string | null) => void;
|
|
14
|
+
onSelect: (id: string | null) => void;
|
|
15
|
+
onFloorChange: (id: string | null) => void;
|
|
16
|
+
onChooseTool: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Owns in-progress drawing and handle gestures. Previews only calculate geometry;
|
|
20
|
+
* completed edits go through the planner's validated history transaction.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useDrawingTools({ project, floorId, selected, editing, threeD, commit, notify, setSelected, onSelect, onFloorChange, onChooseTool, }: DrawingToolsOptions): {
|
|
23
|
+
tool: Tool;
|
|
24
|
+
setTool: import("react").Dispatch<import("react").SetStateAction<Tool>>;
|
|
25
|
+
draft: Point[];
|
|
26
|
+
setDraft: import("react").Dispatch<import("react").SetStateAction<Point[]>>;
|
|
27
|
+
hover: Point | null;
|
|
28
|
+
proposal: WallProposal | null;
|
|
29
|
+
snapLabel: string;
|
|
30
|
+
snapping: boolean;
|
|
31
|
+
setSnapping: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
32
|
+
routeAnchor: string | null;
|
|
33
|
+
setRouteAnchor: import("react").Dispatch<import("react").SetStateAction<string | null>>;
|
|
34
|
+
chooseTool: (next: Tool) => void;
|
|
35
|
+
finish: () => void;
|
|
36
|
+
mapClick: (raw: Point, id: string | null) => void;
|
|
37
|
+
adoptBuilding: ({ rings, sourceId, storeys, name, }: {
|
|
38
|
+
rings: Point[][];
|
|
39
|
+
sourceId: string | number;
|
|
40
|
+
storeys: number;
|
|
41
|
+
name: string;
|
|
42
|
+
}) => void;
|
|
43
|
+
onHover: (point: Point, tolerance: number) => void;
|
|
44
|
+
guides: {
|
|
45
|
+
line: [Point, Point];
|
|
46
|
+
role: "guide" | "proposal";
|
|
47
|
+
}[];
|
|
48
|
+
geometryPreview: (kind: GeometryDrag["kind"], id: string, raw: Point, free?: boolean, ringIndex?: number, index?: number) => Point;
|
|
49
|
+
vertexMove: (kind: "junction" | "ring" | "object" | "barrier" | "node" | "opening" | "rotate" | "coverage", id: string, raw: Point, ringIndex?: number, index?: number, free?: boolean) => void;
|
|
50
|
+
updateObject: (id: string, patch: Partial<SiteObject>) => void;
|
|
51
|
+
};
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { BasemapConfig, ViewState } from '../model/host';
|
|
2
|
+
import type { ProjectDocument } from '../model/types';
|
|
3
|
+
/** Display preferences survive switching between the map, graph, viewer and editor. */
|
|
4
|
+
export declare function useMapDisplay(project: ProjectDocument, hostBasemap?: BasemapConfig, initialView?: ViewState): {
|
|
5
|
+
coverage: boolean;
|
|
6
|
+
setCoverage: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
7
|
+
showLabels: boolean;
|
|
8
|
+
setShowLabels: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
9
|
+
basemapMode: "plan" | "host";
|
|
10
|
+
setBasemapMode: import("react").Dispatch<import("react").SetStateAction<"plan" | "host">>;
|
|
11
|
+
settings: boolean;
|
|
12
|
+
setSettings: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
13
|
+
showPlan: boolean;
|
|
14
|
+
setShowPlan: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
15
|
+
lighting: "auto" | "day" | "evening";
|
|
16
|
+
setLighting: import("react").Dispatch<import("react").SetStateAction<"auto" | "day" | "evening">>;
|
|
17
|
+
excavation: boolean;
|
|
18
|
+
setExcavation: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
19
|
+
cityBuildings: boolean;
|
|
20
|
+
setCityBuildings: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
21
|
+
cadastre: boolean;
|
|
22
|
+
setCadastre: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
23
|
+
sun: import("../map/lighting").Sun;
|
|
24
|
+
sunNote: string;
|
|
25
|
+
basemap: BasemapConfig;
|
|
26
|
+
surveyed: boolean;
|
|
27
|
+
canAdopt: boolean;
|
|
28
|
+
hasCadastre: boolean;
|
|
29
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Map as GLMap } from 'maplibre-gl';
|
|
2
|
+
import { type RefObject } from 'react';
|
|
3
|
+
import type { Tool } from '../model/types';
|
|
4
|
+
interface PlannerKeyboardOptions {
|
|
5
|
+
graphView: boolean;
|
|
6
|
+
editing: boolean;
|
|
7
|
+
threeD: boolean;
|
|
8
|
+
walk: boolean;
|
|
9
|
+
hasDraft: boolean;
|
|
10
|
+
hasSelection: boolean;
|
|
11
|
+
mapRef: RefObject<GLMap | null>;
|
|
12
|
+
chooseTool: (tool: Tool) => void;
|
|
13
|
+
stepFloor: (direction: 1 | -1) => void;
|
|
14
|
+
commands: Record<'undo' | 'redo' | 'undoPoint' | 'export' | 'cancel' | 'finish' | 'help' | 'view' | 'edit' | 'walk' | 'live' | 'cycleView' | 'toggleStack' | 'toggleSidebar' | 'toggleInspector' | 'toggleFullscreen' | 'toggleNavigation' | 'toggleTheme' | 'deleteSelection' | 'duplicate', () => void>;
|
|
15
|
+
}
|
|
16
|
+
/** Routes chrome shortcuts without taking movement keys from the map or walker. */
|
|
17
|
+
export declare function usePlannerKeyboard({ graphView, editing, threeD, walk, hasDraft, hasSelection, mapRef, chooseTool, stepFloor, commands, }: PlannerKeyboardOptions): boolean;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type PreparedDrawing } from '../components/ImportDialog';
|
|
2
|
+
import type { AssetRepository, Drawing, Point, ProjectDocument } from '../model/types';
|
|
3
|
+
import type { CommitProject } from './types';
|
|
4
|
+
interface Alignment {
|
|
5
|
+
prepared: PreparedDrawing;
|
|
6
|
+
imagePoints: Point[];
|
|
7
|
+
mapPoints: Point[];
|
|
8
|
+
drawing: Drawing;
|
|
9
|
+
preview: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface ReferenceAlignmentOptions {
|
|
12
|
+
project: ProjectDocument;
|
|
13
|
+
floorId: string | null;
|
|
14
|
+
assets: AssetRepository;
|
|
15
|
+
commit: CommitProject;
|
|
16
|
+
notify: (message: string) => void;
|
|
17
|
+
setSelected: (id: string | null) => void;
|
|
18
|
+
onStart: () => void;
|
|
19
|
+
}
|
|
20
|
+
/** A reference drawing stays provisional until its alignment or scale is accepted. */
|
|
21
|
+
export declare function useReferenceAlignment({ project, floorId, assets, commit, notify, setSelected, onStart, }: ReferenceAlignmentOptions): {
|
|
22
|
+
alignment: Alignment | null;
|
|
23
|
+
setAlignment: import("react").Dispatch<import("react").SetStateAction<Alignment | null>>;
|
|
24
|
+
startAlignment: (prepared: PreparedDrawing) => Promise<void>;
|
|
25
|
+
previewAlignment: () => void;
|
|
26
|
+
confirmAlignment: () => void;
|
|
27
|
+
calibrate: (metres: number) => void;
|
|
28
|
+
displayProject: ProjectDocument;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type { ProjectDocument, ProjectSummary, Building, BuildingRoof, RoofSection, Floor, InteriorLight, LightFixture, Junction, VirtualBoundary, BoundaryUse, SpaceGeometry, Barrier, SiteObject, Drawing, Origin, Point, Ring, ObjectKind, Slope, MaterialKind, ModelKind, AssetRepository, NavNode, NavEdge, NavEdgeKind, Zone, Portal, PortalGroup, } from '../model/types';
|
|
2
|
+
export { spaces, spaceAt, spacePoint, inSpace } from '../model/spaces';
|
|
3
|
+
export { entryInto, perimeter, captive, zoneSpaces, addZone, removeZone, setZoneMembers, nestZone, addPortalGroup, removePortalGroup, setPortalGroupMembers, pruneOntology, } from '../model/ontology';
|
|
4
|
+
export { inferPortals, inferOpenBoundaries, refreshPortals, divideSpaces, spacesDividedBy, spacesRejoinedBy, mergeSpaces, } from '../model/inference';
|
|
5
|
+
export { derivedGraph } from '../model/topology';
|
|
6
|
+
export { sharedBoundaryPortals, effectivePortals } from '../model/portals';
|
|
7
|
+
export { isArea, isDevice, isOpening, isSpace, uid, OBJECT_KINDS } from '../model/types';
|
|
8
|
+
export { createObject, emptyProject } from '../model/factory';
|
|
9
|
+
export { enclosedRegion, enclosedRegions, refitEnclosedRooms } from '../model/spaces';
|
|
10
|
+
export { boundaryEdges, boundaryRegions, boundaryRegionAt, boundaryRings, derivedSpaceRings, bindSpaceToRegion, followsBoundaries, connectSpace, disconnectSpace, addVirtualBoundary, drawVirtualBoundary, addBoundaryHole, normalizeBoundaries, refreshBoundarySpaces, } from '../model/boundaries';
|
|
11
|
+
export type { BoundaryEdge, BoundaryRegion } from '../model/boundaries';
|
|
12
|
+
export { coverageOf, DEFAULT_RANGE, DEFAULT_FOV } from '../model/coverage';
|
|
13
|
+
export { copyProject, openingFloorId } from '../model/project';
|
|
14
|
+
export { MIN_SEGMENT, OPENING_MIN_SEGMENT, geoOrigin, moveOrigin, segmentsCross, toLngLat, toLocal, addBarrier, duplicateFloor, removeFloor, rectangle, rotate, centroid, distance, footprint, closeRing, openRing, ringArea, objectArea, pointInRing, objectPosition, objectRotation, barrierEnds, segmentProjection, slopeElevation, } from '../model/geometry';
|
|
15
|
+
export { exportProject, importProject, parseExport, blobDataUrl } from '../model/document';
|
|
16
|
+
export { validateProject, validateRelationships, validateRings, validateNavigation, transact, freezeProject, COORD_LIMIT, } from '../model/validate';
|
|
17
|
+
export type { TransactResult } from '../model/validate';
|
|
18
|
+
export { applyMutation, applyMutations } from '../model/mutations';
|
|
19
|
+
export type { Mutation, MutationOutcome, MutationResult } from '../model/mutations';
|
|
20
|
+
export { findRoute, navNodes, navEdges, HERE, routeSteps, routeAnchors, floorPhrase, addNavNode, addNavEdge, navPath, chainVertical, edgeCost, edgeLength, ELEVATOR_BASE, ELEVATOR_PER_METRE, STAIR_CLIMB_FACTOR, DOOR_COST, NAV_WELD, } from '../model/navigation';
|
|
21
|
+
export type { Route, RouteStep, RouteLeg, RouteOptions, RouteEnd, RoutePlace } from '../model/navigation';
|
|
22
|
+
export { EXTERIOR_PRESETS, type ExteriorPreset } from '../model/materials';
|
|
23
|
+
export { flights, flightsAt, isVertical, passesThrough, PITCH, pitchOf, primaryShafts, reaches, runFor, servedFloors, shaftKey, shaftVoids, span, type Flight, } from '../model/vertical';
|
|
24
|
+
export { buildRoomNavigation } from '../model/roomNavigation';
|
|
25
|
+
export type { RoomAccess, RoomNavigationGraph } from '../model/roomNavigation';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type ComponentType, type ReactNode } from 'react';
|
|
2
|
+
import type { SiteObject } from '../model/types';
|
|
3
|
+
import type { StatusTone } from '../model/live';
|
|
4
|
+
import { type En } from '../i18n';
|
|
5
|
+
type DeepPartial<T> = {
|
|
6
|
+
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
7
|
+
};
|
|
8
|
+
/** App-wide dark mode: a `dark` class on the root element, remembered per browser. */
|
|
9
|
+
export declare function useDarkMode(): [boolean, () => void];
|
|
10
|
+
export interface ConfirmOptions {
|
|
11
|
+
title: string;
|
|
12
|
+
body?: string;
|
|
13
|
+
danger?: boolean;
|
|
14
|
+
confirmLabel?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Plan/route/device rendering colours, per deployment ("operation model"). Basemap is separate (BasemapConfig). */
|
|
17
|
+
export interface MapStyleOptions {
|
|
18
|
+
/** Plan area fill and wall colour (top-down 2D). */
|
|
19
|
+
room?: string;
|
|
20
|
+
wall?: string;
|
|
21
|
+
route?: string;
|
|
22
|
+
routeActive?: string;
|
|
23
|
+
/** Selection/hover/draft highlight colours, applied on both the 2D plan and the 3D scene. */
|
|
24
|
+
selection?: string;
|
|
25
|
+
/** Soft (translucent) selection fill for areas; defaults to a light tint of the selection colour. */
|
|
26
|
+
selectionFill?: string;
|
|
27
|
+
hover?: string;
|
|
28
|
+
draft?: string;
|
|
29
|
+
statusTones?: Partial<Record<StatusTone, string>>;
|
|
30
|
+
/** Last-word override for any area/object fill and marker accent; return undefined to fall through. */
|
|
31
|
+
objectColor?: (object: SiteObject) => string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface KerrosTheme {
|
|
34
|
+
/** CSS custom-property overrides (e.g. { '--accent': '#e8562f' }); applied to the theme wrapper. */
|
|
35
|
+
tokens?: Record<string, string>;
|
|
36
|
+
/** Per kind/tool/POI-symbol icon overrides; keys match EntityIcon's `kind`/`symbol`. */
|
|
37
|
+
icons?: Record<string, ComponentType<{
|
|
38
|
+
size?: number;
|
|
39
|
+
}>>;
|
|
40
|
+
/** Show a transient notification. Unset → the built-in toast. */
|
|
41
|
+
notify?: (message: string, tone?: 'info' | 'error') => void;
|
|
42
|
+
/** Ask the user to confirm a destructive action. Unset → the built-in dialog. */
|
|
43
|
+
confirm?: (options: ConfirmOptions) => Promise<boolean>;
|
|
44
|
+
/** Plan/route/device rendering colours. */
|
|
45
|
+
mapStyle?: MapStyleOptions;
|
|
46
|
+
/** Override any library UI strings (deep-merged over the built-in English); read via useStrings(). */
|
|
47
|
+
strings?: DeepPartial<En>;
|
|
48
|
+
}
|
|
49
|
+
export declare function KerrosThemeProvider({ theme, children }: {
|
|
50
|
+
theme?: KerrosTheme;
|
|
51
|
+
children: ReactNode;
|
|
52
|
+
}): import("react").JSX.Element;
|
|
53
|
+
export declare const useKerrosTheme: () => KerrosTheme;
|
|
54
|
+
export declare function useStrings(): En;
|
|
55
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kerros/editor",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0-rc.2",
|
|
4
|
+
"description": "Kerros React floor-plan editor, browser-safe CAD conversion, SVG output and host adapters for persistence, maps and server-backed drawing imports.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/kherrala/kerros.git",
|
|
10
|
+
"directory": "packages/editor"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/kherrala/kerros#readme",
|
|
13
|
+
"bugs": "https://github.com/kherrala/kerros/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"floor-plan",
|
|
16
|
+
"indoor-mapping",
|
|
17
|
+
"maplibre",
|
|
18
|
+
"react",
|
|
19
|
+
"editor"
|
|
20
|
+
],
|
|
21
|
+
"module": "./dist/index.js",
|
|
22
|
+
"types": "./dist/types/editor/index.d.ts",
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/types/editor/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./host": {
|
|
34
|
+
"types": "./dist/types/editor/host.d.ts",
|
|
35
|
+
"import": "./dist/host.js"
|
|
36
|
+
},
|
|
37
|
+
"./styles.css": "./dist/styles.css"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "vite build && tsc -p tsconfig.dts.json && cat ../../node_modules/maplibre-gl/dist/maplibre-gl.css ../../src/styles.css > dist/styles.css",
|
|
41
|
+
"prepack": "npm run build"
|
|
42
|
+
},
|
|
43
|
+
"sideEffects": [
|
|
44
|
+
"*.css"
|
|
45
|
+
],
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"react": "^19.0.0",
|
|
48
|
+
"react-dom": "^19.0.0",
|
|
49
|
+
"maplibre-gl": "^6.4.1",
|
|
50
|
+
"three": ">=0.170.0 <1.0.0"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"lucide-react": "^0.468.0",
|
|
54
|
+
"polygon-clipping": "^0.15.7"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public",
|
|
58
|
+
"registry": "https://registry.npmjs.org/"
|
|
59
|
+
}
|
|
60
|
+
}
|