@eyeon/map 2.0.1 → 2.0.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/README.md +18 -1
- package/dist/assets/MapViewer.css +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/chunks/MapViewer.js +1745 -356
- package/dist/chunks/MapViewer.js.map +1 -1
- package/dist/chunks/stacking.js +1321 -0
- package/dist/chunks/stacking.js.map +1 -0
- package/dist/core/geometry/index.d.ts +41 -4
- package/dist/core/geometry/index.d.ts.map +1 -1
- package/dist/core/hostChrome.d.ts +20 -0
- package/dist/core/hostChrome.d.ts.map +1 -0
- package/dist/core/import/index.d.ts +48 -3
- package/dist/core/import/index.d.ts.map +1 -1
- package/dist/core/import/svgStyle.d.ts +21 -0
- package/dist/core/import/svgStyle.d.ts.map +1 -0
- package/dist/core/import/svgTransform.d.ts +49 -0
- package/dist/core/import/svgTransform.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +207 -266
- package/dist/core/index.js.map +1 -1
- package/dist/core/layerStyles.d.ts +28 -0
- package/dist/core/layerStyles.d.ts.map +1 -0
- package/dist/core/publish/index.d.ts +8 -2
- package/dist/core/publish/index.d.ts.map +1 -1
- package/dist/core/routing/graph-tools.d.ts +5 -1
- package/dist/core/routing/graph-tools.d.ts.map +1 -1
- package/dist/core/stacking.d.ts +61 -0
- package/dist/core/stacking.d.ts.map +1 -0
- package/dist/core/types.d.ts +27 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/editor/MapEditor.d.ts +28 -16
- package/dist/editor/MapEditor.d.ts.map +1 -1
- package/dist/editor/canvas/EditorCanvas.d.ts +15 -3
- package/dist/editor/canvas/EditorCanvas.d.ts.map +1 -1
- package/dist/editor/canvas/coords.d.ts +21 -0
- package/dist/editor/canvas/coords.d.ts.map +1 -0
- package/dist/editor/draftOps.d.ts +19 -0
- package/dist/editor/draftOps.d.ts.map +1 -0
- package/dist/editor/geometryEdit.d.ts +34 -0
- package/dist/editor/geometryEdit.d.ts.map +1 -0
- package/dist/editor/index.css +1281 -145
- package/dist/editor/index.d.ts +8 -2
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +2293 -585
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/labels.d.ts +5 -0
- package/dist/editor/labels.d.ts.map +1 -0
- package/dist/editor/panels/FloorsPanel.d.ts +60 -0
- package/dist/editor/panels/FloorsPanel.d.ts.map +1 -0
- package/dist/editor/panels/ImportReviewPanel.d.ts +22 -0
- package/dist/editor/panels/ImportReviewPanel.d.ts.map +1 -0
- package/dist/editor/panels/Inspector.d.ts +4 -2
- package/dist/editor/panels/Inspector.d.ts.map +1 -1
- package/dist/editor/panels/LeftRail.d.ts +19 -6
- package/dist/editor/panels/LeftRail.d.ts.map +1 -1
- package/dist/editor/panels/PreviewOverlay.d.ts +11 -2
- package/dist/editor/panels/PreviewOverlay.d.ts.map +1 -1
- package/dist/editor/portalSurface.d.ts +11 -0
- package/dist/editor/portalSurface.d.ts.map +1 -0
- package/dist/editor/previewDocument.d.ts +9 -0
- package/dist/editor/previewDocument.d.ts.map +1 -0
- package/dist/editor/tools.d.ts +20 -0
- package/dist/editor/tools.d.ts.map +1 -0
- package/dist/test-maps/shops-at-south-town/BASE - Shops At South Town.ai +26780 -26
- package/dist/test-maps/shops-at-south-town/LF - Shops At South Town.ai +4487 -2
- package/dist/test-maps/shops-at-south-town/SVG/BASE - Shops At South Town.svg +567 -0
- package/dist/test-maps/shops-at-south-town/SVG/LF - Shops At South Town.svg +238 -0
- package/dist/test-maps/shops-at-south-town/SVG/UF - Shops At South Town.svg +276 -0
- package/dist/test-maps/shops-at-south-town/UF - Shops At South Town.ai +4228 -1
- package/dist/viewer/MapViewer.d.ts +14 -3
- package/dist/viewer/MapViewer.d.ts.map +1 -1
- package/dist/viewer/camera.d.ts +34 -0
- package/dist/viewer/camera.d.ts.map +1 -0
- package/dist/viewer/components/CameraRig.d.ts +18 -0
- package/dist/viewer/components/CameraRig.d.ts.map +1 -0
- package/dist/viewer/components/LevelMeshes.d.ts +6 -1
- package/dist/viewer/components/LevelMeshes.d.ts.map +1 -1
- package/dist/viewer/components/MapScene.d.ts +6 -1
- package/dist/viewer/components/MapScene.d.ts.map +1 -1
- package/dist/viewer/components/SvgVectorLayer.d.ts +18 -0
- package/dist/viewer/components/SvgVectorLayer.d.ts.map +1 -0
- package/dist/viewer/index.css +124 -35
- package/dist/viewer/index.d.ts +4 -0
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +9 -4
- package/dist/viewer/index.js.map +1 -1
- package/dist/viewer/ui/MapControls.d.ts +14 -0
- package/dist/viewer/ui/MapControls.d.ts.map +1 -0
- package/dist/viewer/ui/RuntimeChrome.d.ts +3 -3
- package/dist/viewer/ui/RuntimeChrome.d.ts.map +1 -1
- package/package.json +7 -3
- package/dist/chunks/graph-tools.js +0 -153
- package/dist/chunks/graph-tools.js.map +0 -1
- package/dist/chunks/pathfinding.js +0 -343
- package/dist/chunks/pathfinding.js.map +0 -1
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/core/import/index.ts","../../src/core/publish/index.ts"],"sourcesContent":["import type {\n BBox,\n ImportClassification,\n ImportDiff,\n ImportDiffItem,\n ImportReport,\n ShapeGeometry,\n ShapeKind,\n ShapeStyle,\n ViewBox,\n} from '../types';\nimport {\n buildGeometryFromPaths,\n geometryBBox,\n parseViewBox,\n} from '../geometry';\n\n/** Prefix → shape kind for floor SVGs. */\nconst FLOOR_PREFIXES: Array<{ prefix: string; kind: ShapeKind }> = [\n { prefix: 'walkable', kind: 'walkable' },\n { prefix: 'void', kind: 'void' },\n { prefix: 'unit', kind: 'unit' },\n { prefix: 'store', kind: 'unit' }, // v1 compatibility\n { prefix: 'wall', kind: 'wall' },\n { prefix: 'boundary', kind: 'boundary' },\n { prefix: 'outer-wall', kind: 'wall' },\n { prefix: 'amenity-', kind: 'amenity' },\n { prefix: 'kiosk-', kind: 'kiosk_screen' },\n { prefix: 'escalator-', kind: 'connector' },\n { prefix: 'elevator-', kind: 'connector' },\n { prefix: 'stairs-', kind: 'connector' },\n { prefix: 'entrance-', kind: 'entrance' },\n { prefix: 'zone-', kind: 'zone' },\n { prefix: 'label-', kind: 'label' },\n { prefix: 'floorplate', kind: 'floorplate' },\n { prefix: 'base', kind: 'floorplate' },\n { prefix: 'decor', kind: 'decor' },\n { prefix: 'special-shape', kind: 'decor' },\n { prefix: 'overlay', kind: 'decor' },\n];\n\n/** Prefix → shape kind for outdoor / base layer. */\nconst BASE_PREFIXES: Array<{ prefix: string; kind: ShapeKind }> = [\n { prefix: 'parking-zone', kind: 'parking_zone' },\n { prefix: 'parking-lane', kind: 'parking_zone' },\n { prefix: 'parking-line', kind: 'decor' },\n { prefix: 'parking-icon', kind: 'parking_icon' },\n { prefix: 'green-area', kind: 'green_area' },\n { prefix: 'water', kind: 'water' },\n { prefix: 'decor', kind: 'decor' },\n { prefix: 'entrance-', kind: 'entrance' },\n { prefix: 'unit', kind: 'unit' },\n { prefix: 'store', kind: 'unit' },\n { prefix: 'interactive-', kind: 'unit' },\n { prefix: 'walkable', kind: 'walkable' },\n { prefix: 'amenity-', kind: 'amenity' },\n];\n\n/** v1 route-path lines are imported as route geometry, not shapes. */\nconst ROUTE_PATH_PREFIX = 'route-path';\n\nexport interface RawSvgElement {\n id: string;\n tag: string;\n d?: string;\n points?: string;\n x1?: number;\n y1?: number;\n x2?: number;\n y2?: number;\n interactive?: boolean;\n}\n\nexport interface ParsedSvg {\n viewbox: ViewBox | null;\n elements: RawSvgElement[];\n routePathDs: string[];\n}\n\nexport function classifyId(\n id: string,\n mode: 'floor' | 'base' = 'floor',\n): { kind: ShapeKind | null; guessed: boolean } {\n const lower = id.toLowerCase();\n const table = mode === 'base' ? BASE_PREFIXES : FLOOR_PREFIXES;\n for (const { prefix, kind } of table) {\n if (lower === prefix || lower.startsWith(prefix)) {\n return { kind, guessed: false };\n }\n }\n // interactive-* or data-interactive attribute handled by caller\n if (lower.startsWith('interactive')) {\n return { kind: 'unit', guessed: true };\n }\n return { kind: null, guessed: false };\n}\n\nfunction pointsToPath(points: string): string {\n const nums = points.trim().split(/[\\s,]+/).map(Number);\n if (nums.length < 4) return '';\n let d = `M ${nums[0]} ${nums[1]}`;\n for (let i = 2; i < nums.length; i += 2) {\n d += ` L ${nums[i]} ${nums[i + 1]}`;\n }\n d += ' Z';\n return d;\n}\n\nfunction lineToPath(x1: number, y1: number, x2: number, y2: number): string {\n return `M ${x1} ${y1} L ${x2} ${y2}`;\n}\n\n/**\n * Lightweight SVG string parser — no DOM required (works in Node).\n * Extracts elements with id attributes and path-like geometry.\n */\nexport function parseSvgString(svg: string): ParsedSvg {\n const viewboxMatch = svg.match(/viewBox\\s*=\\s*[\"']([^\"']+)[\"']/i);\n const viewbox = parseViewBox(viewboxMatch?.[1]);\n\n const elements: RawSvgElement[] = [];\n const routePathDs: string[] = [];\n\n // Match tagged elements that may carry an id\n const tagRe =\n /<(path|polygon|polyline|line|rect|g)\\b([^>]*)(?:\\/>|>([\\s\\S]*?)<\\/\\1>)/gi;\n let match: RegExpExecArray | null;\n while ((match = tagRe.exec(svg)) !== null) {\n const tag = match[1].toLowerCase();\n const attrs = match[2] ?? '';\n const idMatch = attrs.match(/\\bid\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (!idMatch) continue;\n const id = idMatch[1];\n const interactive = /\\bdata-interactive\\s*=\\s*[\"']?(true|1|yes)/i.test(attrs);\n\n if (id.toLowerCase().startsWith(ROUTE_PATH_PREFIX)) {\n const dMatch = attrs.match(/\\bd\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (dMatch) routePathDs.push(dMatch[1]);\n const pointsMatch = attrs.match(/\\bpoints\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (pointsMatch) routePathDs.push(pointsToPath(pointsMatch[1]).replace(/ Z$/, ''));\n continue;\n }\n\n const el: RawSvgElement = { id, tag, interactive };\n\n if (tag === 'path') {\n const dMatch = attrs.match(/\\bd\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (dMatch) el.d = dMatch[1];\n } else if (tag === 'polygon' || tag === 'polyline') {\n const pointsMatch = attrs.match(/\\bpoints\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (pointsMatch) el.d = pointsToPath(pointsMatch[1]);\n } else if (tag === 'line') {\n const num = (name: string) => {\n const m = attrs.match(new RegExp(`\\\\b${name}\\\\s*=\\\\s*[\"']?(-?[\\\\d.]+)`, 'i'));\n return m ? Number(m[1]) : 0;\n };\n el.d = lineToPath(num('x1'), num('y1'), num('x2'), num('y2'));\n } else if (tag === 'rect') {\n const num = (name: string) => {\n const m = attrs.match(new RegExp(`\\\\b${name}\\\\s*=\\\\s*[\"']?(-?[\\\\d.]+)`, 'i'));\n return m ? Number(m[1]) : 0;\n };\n const x = num('x');\n const y = num('y');\n const w = num('width');\n const h = num('height');\n el.d = `M ${x} ${y} L ${x + w} ${y} L ${x + w} ${y + h} L ${x} ${y + h} Z`;\n } else if (tag === 'g') {\n // Collect child paths under this group id\n const inner = match[3] ?? '';\n const childPaths: string[] = [];\n const childRe = /<(path|polygon|polyline|line|rect)\\b([^>]*)\\/?>/gi;\n let cm: RegExpExecArray | null;\n while ((cm = childRe.exec(inner)) !== null) {\n const ctag = cm[1].toLowerCase();\n const cattrs = cm[2] ?? '';\n if (ctag === 'path') {\n const dm = cattrs.match(/\\bd\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (dm) childPaths.push(dm[1]);\n } else if (ctag === 'polygon' || ctag === 'polyline') {\n const pm = cattrs.match(/\\bpoints\\s*=\\s*[\"']([^\"']+)[\"']/i);\n if (pm) childPaths.push(pointsToPath(pm[1]));\n }\n }\n if (childPaths.length > 0) {\n el.d = childPaths.join(' ');\n }\n }\n\n if (el.d || tag === 'g') {\n elements.push(el);\n }\n }\n\n return { viewbox, elements, routePathDs };\n}\n\nexport interface ImportedShapeDraft {\n key: string;\n kind: ShapeKind;\n geometry: ShapeGeometry;\n bbox: BBox;\n sourceSvgId: string;\n style: ShapeStyle;\n}\n\nfunction slugKey(id: string): string {\n return id\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '')\n .slice(0, 80);\n}\n\nexport function importSvg(\n svg: string,\n mode: 'floor' | 'base' = 'floor',\n): { report: ImportReport; shapes: ImportedShapeDraft[]; viewbox: ViewBox | null; routePathDs: string[] } {\n const parsed = parseSvgString(svg);\n const classified: ImportClassification[] = [];\n const unrecognized: string[] = [];\n const guessed: ImportClassification[] = [];\n const warnings: string[] = [];\n const shapes: ImportedShapeDraft[] = [];\n\n let walkableCount = 0;\n let voidCount = 0;\n let unitCount = 0;\n\n for (const el of parsed.elements) {\n let { kind, guessed: isGuessed } = classifyId(el.id, mode);\n if (el.interactive && !kind) {\n kind = 'unit';\n isGuessed = true;\n }\n\n const entry: ImportClassification = {\n sourceSvgId: el.id,\n kind,\n guessed: isGuessed,\n };\n\n if (!kind) {\n unrecognized.push(el.id);\n entry.message = 'No matching prefix; skipped';\n classified.push(entry);\n continue;\n }\n\n if (!el.d) {\n warnings.push(`Element ${el.id} has no drawable geometry`);\n continue;\n }\n\n if (isGuessed) {\n guessed.push(entry);\n entry.message = 'Guessed kind from interactive/fallback rule';\n }\n classified.push(entry);\n\n if (kind === 'walkable') walkableCount++;\n if (kind === 'void') voidCount++;\n if (kind === 'unit') unitCount++;\n\n const geometry = buildGeometryFromPaths([el.d], parsed.viewbox, true);\n const bbox = geometryBBox(geometry);\n\n shapes.push({\n key: slugKey(el.id),\n kind,\n geometry,\n bbox,\n sourceSvgId: el.id,\n style: {},\n });\n }\n\n if (mode === 'floor' && walkableCount === 0) {\n warnings.push(\n 'No walkable layer found — auto-skeleton will be unavailable for this level',\n );\n }\n\n return {\n report: {\n classified,\n unrecognized,\n guessed,\n walkableCount,\n voidCount,\n unitCount,\n warnings,\n },\n shapes,\n viewbox: parsed.viewbox,\n routePathDs: parsed.routePathDs,\n };\n}\n\nexport interface ExistingShapeRef {\n id: number;\n sourceSvgId: string | null;\n kind: ShapeKind;\n key: string;\n}\n\n/**\n * Diff newly imported shapes against existing level shapes by source_svg_id.\n */\nexport function diffImport(\n imported: ImportedShapeDraft[],\n existing: ExistingShapeRef[],\n viewbox: ViewBox | null,\n): ImportDiff {\n const existingBySource = new Map(\n existing\n .filter((e) => e.sourceSvgId)\n .map((e) => [e.sourceSvgId as string, e]),\n );\n const seen = new Set<string>();\n const items: ImportDiffItem[] = [];\n\n for (const shape of imported) {\n const prev = existingBySource.get(shape.sourceSvgId);\n seen.add(shape.sourceSvgId);\n if (!prev) {\n items.push({\n sourceSvgId: shape.sourceSvgId,\n change: 'added',\n newKind: shape.kind,\n });\n } else if (prev.kind !== shape.kind) {\n items.push({\n sourceSvgId: shape.sourceSvgId,\n change: 'kind_changed',\n existingShapeId: prev.id,\n existingKind: prev.kind,\n newKind: shape.kind,\n preserve: { key: prev.key, assignment: true, anchors: true },\n });\n } else {\n items.push({\n sourceSvgId: shape.sourceSvgId,\n change: 'unchanged',\n existingShapeId: prev.id,\n existingKind: prev.kind,\n newKind: shape.kind,\n preserve: { key: prev.key, assignment: true, anchors: true },\n });\n }\n }\n\n for (const prev of existing) {\n if (prev.sourceSvgId && !seen.has(prev.sourceSvgId)) {\n items.push({\n sourceSvgId: prev.sourceSvgId,\n change: 'removed',\n existingShapeId: prev.id,\n existingKind: prev.kind,\n });\n }\n }\n\n return {\n items,\n shapes: imported,\n viewbox,\n };\n}\n","import type {\n CmAmenityCatalogItem,\n CmAnchor,\n CmBuilding,\n CmConnector,\n CmLevel,\n CmResponsiveOverride,\n CmRouteEdge,\n CmShape,\n CmShapeAssignment,\n PublishedDocument,\n ThemeDefaults,\n ViewBox,\n} from '../types';\nimport { DEFAULT_THEME } from '../types';\nimport { compileGraph } from '../routing/pathfinding';\n\nexport interface PublishInput {\n revisionId: number;\n revisionNumber: number;\n centerId: number;\n mapId: number;\n theme: Partial<ThemeDefaults>;\n baseSvgUrl: string | null;\n baseViewbox: ViewBox | null;\n buildings: CmBuilding[];\n levels: CmLevel[];\n shapes: CmShape[];\n assignments: CmShapeAssignment[];\n anchors: CmAnchor[];\n edges: CmRouteEdge[];\n connectors: CmConnector[];\n amenities: CmAmenityCatalogItem[];\n responsiveOverrides: CmResponsiveOverride[];\n /** Resolve S3 key → CDN URL for level source SVGs. */\n resolveSvgUrl?: (key: string | null) => string | null;\n publishedAt?: string;\n}\n\n/**\n * Compile draft rows into an immutable published document.\n * Used by both the admin publish endpoint and the draft preview (?draft=1).\n */\nexport function compileDocument(input: PublishInput): PublishedDocument {\n const theme: ThemeDefaults = { ...DEFAULT_THEME, ...input.theme };\n const assignmentByShape = new Map(\n input.assignments.map((a) => [a.shapeId, a]),\n );\n const resolve = input.resolveSvgUrl ?? ((k: string | null) => k);\n\n const levels = input.levels\n .filter((l) => l.isActive)\n .sort((a, b) => a.ordering - b.ordering)\n .map((level) => {\n const levelShapes = input.shapes\n .filter((s) => s.levelId === level.id)\n .map((s) => ({\n ...s,\n assignment: assignmentByShape.get(s.id) ?? null,\n }));\n const levelAnchors = input.anchors.filter((a) => a.levelId === level.id);\n return {\n id: level.id,\n buildingId: level.buildingId,\n kind: level.kind,\n name: level.name,\n levelIndex: level.levelIndex,\n ordering: level.ordering,\n sourceSvgUrl: resolve(level.sourceSvgKey),\n viewbox: level.sourceViewbox,\n transform: level.transform,\n shapes: levelShapes,\n anchors: levelAnchors,\n };\n });\n\n const { nodes, edges } = compileGraph(\n input.anchors,\n input.edges,\n input.connectors,\n );\n\n return {\n version: 2,\n revisionId: input.revisionId,\n revisionNumber: input.revisionNumber,\n centerId: input.centerId,\n mapId: input.mapId,\n theme,\n baseSvgUrl: input.baseSvgUrl,\n baseViewbox: input.baseViewbox,\n buildings: input.buildings,\n levels,\n connectors: input.connectors,\n amenities: input.amenities.filter((a) => a.isActive),\n graph: { nodes, edges },\n responsiveOverrides: input.responsiveOverrides,\n publishedAt: input.publishedAt ?? new Date().toISOString(),\n };\n}\n"],"names":["FLOOR_PREFIXES","BASE_PREFIXES","ROUTE_PATH_PREFIX","classifyId","id","mode","lower","table","prefix","kind","pointsToPath","points","nums","d","i","lineToPath","x1","y1","x2","y2","parseSvgString","svg","viewboxMatch","viewbox","parseViewBox","elements","routePathDs","tagRe","match","tag","attrs","idMatch","interactive","dMatch","pointsMatch","el","num","name","m","x","y","w","h","inner","childPaths","childRe","cm","ctag","cattrs","dm","pm","slugKey","importSvg","parsed","classified","unrecognized","guessed","warnings","shapes","walkableCount","voidCount","unitCount","isGuessed","entry","geometry","buildGeometryFromPaths","bbox","geometryBBox","diffImport","imported","existing","existingBySource","e","seen","items","shape","prev","compileDocument","input","theme","DEFAULT_THEME","assignmentByShape","a","resolve","k","levels","l","b","level","levelShapes","s","levelAnchors","nodes","edges","compileGraph"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/core/routing/graph-tools.ts"],"sourcesContent":["import type {\n AutoConnectResult,\n CmAnchor,\n CmRouteEdge,\n SkeletonSuggestion,\n Vec2,\n WeldResult,\n} from '../types';\nimport { DEFAULT_WELD_TOLERANCE } from '../types';\nimport {\n distance,\n nearestPointOnPolyline,\n pathToPolygons,\n pointInPolygons,\n} from '../geometry';\n\nexport interface AnchorLike {\n id: number;\n x: number;\n y: number;\n levelId: number;\n shapeId?: number | null;\n kind?: string;\n}\n\nexport interface EdgeLike {\n id: number;\n fromAnchorId: number;\n toAnchorId: number;\n}\n\n/**\n * Weld anchors within tolerance into the surviving (lowest id) anchor.\n * Rewires edges that referenced removed anchors.\n */\nexport function weldAnchors(\n anchors: AnchorLike[],\n edges: EdgeLike[],\n candidateIds: number[],\n tolerance = DEFAULT_WELD_TOLERANCE,\n): WeldResult | null {\n const candidates = anchors.filter((a) => candidateIds.includes(a.id));\n if (candidates.length < 2) return null;\n\n // Cluster by proximity from the first candidate's position centroid of group\n const surviving = candidates.reduce((min, a) => (a.id < min.id ? a : min));\n const removed: number[] = [];\n\n for (const a of candidates) {\n if (a.id === surviving.id) continue;\n if (distance(a, surviving) <= tolerance) {\n removed.push(a.id);\n }\n }\n\n if (removed.length === 0) return null;\n\n const removedSet = new Set(removed);\n const rewired: number[] = [];\n\n for (const edge of edges) {\n let changed = false;\n if (removedSet.has(edge.fromAnchorId)) {\n edge.fromAnchorId = surviving.id;\n changed = true;\n }\n if (removedSet.has(edge.toAnchorId)) {\n edge.toAnchorId = surviving.id;\n changed = true;\n }\n // Drop self-loops\n if (edge.fromAnchorId === edge.toAnchorId) {\n rewired.push(edge.id);\n continue;\n }\n if (changed) rewired.push(edge.id);\n }\n\n return {\n survivingAnchorId: surviving.id,\n removedAnchorIds: removed,\n rewiredEdgeIds: rewired,\n };\n}\n\n/**\n * Find all pairs of anchors within tolerance that should be welded.\n */\nexport function findWeldCandidates(\n anchors: AnchorLike[],\n tolerance = DEFAULT_WELD_TOLERANCE,\n): number[][] {\n const groups: number[][] = [];\n const used = new Set<number>();\n\n for (let i = 0; i < anchors.length; i++) {\n if (used.has(anchors[i].id)) continue;\n const group = [anchors[i].id];\n for (let j = i + 1; j < anchors.length; j++) {\n if (used.has(anchors[j].id)) continue;\n if (\n anchors[i].levelId === anchors[j].levelId &&\n distance(anchors[i], anchors[j]) <= tolerance\n ) {\n group.push(anchors[j].id);\n used.add(anchors[j].id);\n }\n }\n if (group.length > 1) {\n used.add(anchors[i].id);\n groups.push(group);\n }\n }\n return groups;\n}\n\n/**\n * Auto-connect a unit anchor to the nearest walkable segment via perpendicular projection.\n */\nexport function autoConnectUnitAnchor(\n unitAnchor: AnchorLike,\n walkablePolylines: Vec2[][],\n existingJunctions: AnchorLike[],\n weldTolerance = DEFAULT_WELD_TOLERANCE,\n): AutoConnectResult | null {\n let best: { point: Vec2; distance: number } | null = null;\n\n for (const line of walkablePolylines) {\n const hit = nearestPointOnPolyline(unitAnchor, line);\n if (hit && (!best || hit.distance < best.distance)) {\n best = { point: hit.point, distance: hit.distance };\n }\n }\n\n if (!best) return null;\n\n // Reuse existing junction if within weld tolerance\n const existing = existingJunctions.find(\n (j) =>\n j.levelId === unitAnchor.levelId &&\n distance(j, best!.point) <= weldTolerance,\n );\n\n return {\n unitAnchorId: unitAnchor.id,\n junctionAnchor: existing\n ? { x: existing.x, y: existing.y, existingId: existing.id }\n : { x: best.point.x, y: best.point.y },\n edge: {\n fromAnchorId: unitAnchor.id,\n toAnchorId: existing?.id,\n },\n };\n}\n\n/**\n * Place a unit anchor at the centroid of a shape's polygons, if the point lies inside.\n */\nexport function unitAnchorFromShape(\n shapeId: number,\n levelId: number,\n polygons: Vec2[][],\n tempId: number,\n): CmAnchor | null {\n if (polygons.length === 0) return null;\n const flat = polygons.flat();\n if (flat.length === 0) return null;\n\n let sx = 0;\n let sy = 0;\n for (const p of flat) {\n sx += p.x;\n sy += p.y;\n }\n const c = { x: sx / flat.length, y: sy / flat.length };\n\n // Prefer centroid if inside; otherwise use first polygon's average of extremes\n const point = pointInPolygons(c, polygons) ? c : flat[0];\n\n return {\n id: tempId,\n levelId,\n shapeId,\n kind: 'unit',\n x: point.x,\n y: point.y,\n connectorId: null,\n };\n}\n\n/**\n * Build a simple medial-axis-ish skeleton from walkable polygons minus voids.\n * This is a pragmatic approximation: sample a grid inside walkable, reject void cells,\n * connect adjacent free cells into a sparse graph, then prune to a polyline network.\n */\nexport function buildAutoSkeleton(\n walkablePolygons: Vec2[][],\n voidPolygons: Vec2[][],\n cellSize = 20,\n): SkeletonSuggestion {\n if (walkablePolygons.length === 0) {\n return { anchors: [], edges: [] };\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const poly of walkablePolygons) {\n for (const p of poly) {\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n }\n\n const cols = Math.max(1, Math.ceil((maxX - minX) / cellSize));\n const rows = Math.max(1, Math.ceil((maxY - minY) / cellSize));\n const free: Array<{ key: string; x: number; y: number; col: number; row: number }> = [];\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n const x = minX + (col + 0.5) * cellSize;\n const y = minY + (row + 0.5) * cellSize;\n const pt = { x, y };\n if (!pointInPolygons(pt, walkablePolygons)) continue;\n if (voidPolygons.length > 0 && pointInPolygons(pt, voidPolygons)) continue;\n free.push({ key: `${col},${row}`, x, y, col, row });\n }\n }\n\n const byKey = new Map(free.map((c) => [c.key, c]));\n const anchors = free.map((c) => ({\n tempId: c.key,\n x: c.x,\n y: c.y,\n kind: 'junction' as const,\n }));\n\n const edges: Array<{ fromTempId: string; toTempId: string }> = [];\n const seen = new Set<string>();\n\n for (const cell of free) {\n const neighbors = [\n [cell.col + 1, cell.row],\n [cell.col, cell.row + 1],\n ];\n for (const [nc, nr] of neighbors) {\n const nk = `${nc},${nr}`;\n if (!byKey.has(nk)) continue;\n const edgeKey = cell.key < nk ? `${cell.key}|${nk}` : `${nk}|${cell.key}`;\n if (seen.has(edgeKey)) continue;\n seen.add(edgeKey);\n edges.push({ fromTempId: cell.key, toTempId: nk });\n }\n }\n\n return { anchors, edges };\n}\n\n/**\n * Convert route-path SVG line endpoints into welded anchors + edges.\n * This is the key converter step that repairs coincident-but-disconnected joins.\n *\n * Anchors land in raw SVG user space (Y down), the same space as shape\n * geometry. There is intentionally no viewbox-height flip here — mirroring\n * routes without mirroring shapes would silently desynchronise the two.\n */\nexport function importRoutePaths(\n pathDs: string[],\n levelId: number,\n mapId: number,\n startId: number,\n weldTolerance = DEFAULT_WELD_TOLERANCE,\n): { anchors: CmAnchor[]; edges: CmRouteEdge[]; nextId: number } {\n const anchors: CmAnchor[] = [];\n const edges: CmRouteEdge[] = [];\n let nextId = startId;\n\n const findOrCreate = (x: number, y: number): number => {\n const existing = anchors.find(\n (a) => distance(a, { x, y }) <= weldTolerance,\n );\n if (existing) return existing.id;\n const id = nextId++;\n anchors.push({\n id,\n levelId,\n shapeId: null,\n kind: 'junction',\n x,\n y,\n connectorId: null,\n });\n return id;\n };\n\n for (const d of pathDs) {\n const polys = pathToPolygons(d);\n for (const poly of polys) {\n for (let i = 0; i < poly.length - 1; i++) {\n const a = findOrCreate(poly[i].x, poly[i].y);\n const b = findOrCreate(poly[i + 1].x, poly[i + 1].y);\n if (a === b) continue;\n // Avoid duplicate edges\n const dup = edges.some(\n (e) =>\n (e.fromAnchorId === a && e.toAnchorId === b) ||\n (e.fromAnchorId === b && e.toAnchorId === a),\n );\n if (dup) continue;\n edges.push({\n id: nextId++,\n mapId,\n fromAnchorId: a,\n toAnchorId: b,\n weight: null,\n directed: false,\n accessible: true,\n kind: 'walk',\n });\n }\n }\n }\n\n return { anchors, edges, nextId };\n}\n"],"names":["weldAnchors","anchors","edges","candidateIds","tolerance","DEFAULT_WELD_TOLERANCE","candidates","a","surviving","min","removed","distance","removedSet","rewired","edge","changed","findWeldCandidates","groups","used","i","group","j","autoConnectUnitAnchor","unitAnchor","walkablePolylines","existingJunctions","weldTolerance","best","line","hit","nearestPointOnPolyline","existing","unitAnchorFromShape","shapeId","levelId","polygons","tempId","flat","sx","sy","p","c","point","pointInPolygons","buildAutoSkeleton","walkablePolygons","voidPolygons","cellSize","minX","minY","maxX","maxY","poly","cols","rows","free","row","col","x","y","pt","byKey","seen","cell","neighbors","nc","nr","nk","edgeKey","importRoutePaths","pathDs","mapId","startId","nextId","findOrCreate","id","d","polys","pathToPolygons","b","e"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code-only static layer styling for recognized SVG layer-name prefixes.
|
|
3
|
+
* Never loaded from or saved to portal / database theme settings — mirrors
|
|
4
|
+
* v1 `staticMapLayerSettings` in `@eyeon/threejs-map`.
|
|
5
|
+
*/
|
|
6
|
+
export interface StaticLayerStyle {
|
|
7
|
+
fill?: string;
|
|
8
|
+
stroke?: string;
|
|
9
|
+
strokeWidth?: number;
|
|
10
|
+
renderOrder: number;
|
|
11
|
+
extrudeHeight?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Prefix → house style. Matching is normalized so `parking-lane`,
|
|
15
|
+
* `parking_lane`, and `parking-lanes` all resolve to the same entry.
|
|
16
|
+
*/
|
|
17
|
+
export declare const STATIC_LAYER_STYLES: Record<string, StaticLayerStyle>;
|
|
18
|
+
/** Collapse punctuation so `parking_lane_2` and `parking-lanes` compare as words. */
|
|
19
|
+
export declare function normalizeLayerName(label: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve a static house style from an SVG element / group id.
|
|
22
|
+
* Returns null when the name is not a reserved decoration layer.
|
|
23
|
+
*
|
|
24
|
+
* Matches when the normalized name equals the key, starts with the key as a
|
|
25
|
+
* word (`parking lane 2`), or is a simple plural (`parking lanes`).
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveLayerStyle(layerName: string | null | undefined): StaticLayerStyle | null;
|
|
28
|
+
//# sourceMappingURL=layerStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layerStyles.d.ts","sourceRoot":"","sources":["../../src/core/layerStyles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAiChE,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAgB/F"}
|
|
@@ -21,8 +21,14 @@ export interface PublishInput {
|
|
|
21
21
|
publishedAt?: string;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Compile
|
|
25
|
-
* Used by
|
|
24
|
+
* Compile live cm_* rows into the current production document.
|
|
25
|
+
* Used by Save Changes (overwrite-in-place) and draft preview (?draft=1).
|
|
26
26
|
*/
|
|
27
27
|
export declare function compileDocument(input: PublishInput): PublishedDocument;
|
|
28
|
+
/**
|
|
29
|
+
* Heal a document that was compiled before the Y-flip removal. Viewer hosts
|
|
30
|
+
* load `cm_revisions` JSON as-is (they never re-run `compileDocument`), so
|
|
31
|
+
* stale polygons would otherwise render upside down relative to the editor.
|
|
32
|
+
*/
|
|
33
|
+
export declare function normalizePublishedDocument(doc: PublishedDocument): PublishedDocument;
|
|
28
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/publish/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/publish/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;IAC5C,sDAAsD;IACtD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,CA8DtE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,iBAAiB,GACrB,iBAAiB,CAmBnB"}
|
|
@@ -38,8 +38,12 @@ export declare function buildAutoSkeleton(walkablePolygons: Vec2[][], voidPolygo
|
|
|
38
38
|
/**
|
|
39
39
|
* Convert route-path SVG line endpoints into welded anchors + edges.
|
|
40
40
|
* This is the key converter step that repairs coincident-but-disconnected joins.
|
|
41
|
+
*
|
|
42
|
+
* Anchors land in raw SVG user space (Y down), the same space as shape
|
|
43
|
+
* geometry. There is intentionally no viewbox-height flip here — mirroring
|
|
44
|
+
* routes without mirroring shapes would silently desynchronise the two.
|
|
41
45
|
*/
|
|
42
|
-
export declare function importRoutePaths(pathDs: string[], levelId: number, mapId: number, startId: number, weldTolerance?: number
|
|
46
|
+
export declare function importRoutePaths(pathDs: string[], levelId: number, mapId: number, startId: number, weldTolerance?: number): {
|
|
43
47
|
anchors: CmAnchor[];
|
|
44
48
|
edges: CmRouteEdge[];
|
|
45
49
|
nextId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../../src/core/routing/graph-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACX,MAAM,UAAU,CAAC;AASlB,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,SAAyB,GACjC,UAAU,GAAG,IAAI,CA2CnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,SAAyB,GACjC,MAAM,EAAE,EAAE,CAuBZ;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAC3B,iBAAiB,EAAE,UAAU,EAAE,EAC/B,aAAa,SAAyB,GACrC,iBAAiB,GAAG,IAAI,CA6B1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,IAAI,EAAE,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,IAAI,CAyBjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAC1B,YAAY,EAAE,IAAI,EAAE,EAAE,EACtB,QAAQ,SAAK,GACZ,kBAAkB,CA4DpB;AAED
|
|
1
|
+
{"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../../src/core/routing/graph-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACX,MAAM,UAAU,CAAC;AASlB,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,SAAyB,GACjC,UAAU,GAAG,IAAI,CA2CnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,SAAyB,GACjC,MAAM,EAAE,EAAE,CAuBZ;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAC3B,iBAAiB,EAAE,UAAU,EAAE,EAC/B,aAAa,SAAyB,GACrC,iBAAiB,GAAG,IAAI,CA6B1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,IAAI,EAAE,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,IAAI,CAyBjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAC1B,YAAY,EAAE,IAAI,EAAE,EAAE,EACtB,QAAQ,SAAK,GACZ,kBAAkB,CA4DpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,SAAyB,GACrC;IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoD/D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { LevelKind, PublishedLevel, ViewBox } from './types';
|
|
2
|
+
export interface StackLevel {
|
|
3
|
+
id: number;
|
|
4
|
+
kind: LevelKind;
|
|
5
|
+
ordering: number;
|
|
6
|
+
levelIndex: number;
|
|
7
|
+
}
|
|
8
|
+
/** Same comparator as admin FloorsPanel `buildingFloors`. */
|
|
9
|
+
export declare function compareBuildingFloors(a: {
|
|
10
|
+
ordering: number;
|
|
11
|
+
levelIndex: number;
|
|
12
|
+
}, b: {
|
|
13
|
+
ordering: number;
|
|
14
|
+
levelIndex: number;
|
|
15
|
+
}): number;
|
|
16
|
+
export interface SceneBounds {
|
|
17
|
+
minX: number;
|
|
18
|
+
minY: number;
|
|
19
|
+
maxX: number;
|
|
20
|
+
maxY: number;
|
|
21
|
+
cx: number;
|
|
22
|
+
cy: number;
|
|
23
|
+
size: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function isOutdoorLevel(level: {
|
|
26
|
+
kind: string;
|
|
27
|
+
}): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Persistent base + optional building-floor overlay.
|
|
30
|
+
* Outdoor/base is never dropped when a floor is selected.
|
|
31
|
+
* Selecting Outdoor hides building floors (base stays).
|
|
32
|
+
*/
|
|
33
|
+
export declare function viewerLevelStack<T extends {
|
|
34
|
+
id: number;
|
|
35
|
+
kind: string;
|
|
36
|
+
}>(levels: T[], activeLevelId: number | null): T[];
|
|
37
|
+
/** Building floors only, same order as the admin Floors list. */
|
|
38
|
+
export declare function floorSwitcherLevels<T extends StackLevel>(levels: T[]): T[];
|
|
39
|
+
/**
|
|
40
|
+
* Switcher buttons top-to-bottom — same order as the admin Floors list.
|
|
41
|
+
* Do not reverse: staff order the list (upper level at the top) and the map
|
|
42
|
+
* must match that.
|
|
43
|
+
*/
|
|
44
|
+
export declare function floorSwitcherDisplayLevels<T extends StackLevel>(levels: T[]): T[];
|
|
45
|
+
/** Hide the map floor list when there is only one building floor. */
|
|
46
|
+
export declare function shouldShowFloorSwitcher<T extends StackLevel>(levels: T[]): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Prefer the last building floor in admin Floors order (bottom of the list).
|
|
49
|
+
* The list stays upper-to-ground top-to-bottom; visitors should land on ground.
|
|
50
|
+
*/
|
|
51
|
+
export declare function defaultViewerLevelId(levels: Array<{
|
|
52
|
+
id: number;
|
|
53
|
+
kind: string;
|
|
54
|
+
ordering: number;
|
|
55
|
+
levelIndex: number;
|
|
56
|
+
}>): number | null;
|
|
57
|
+
export declare function viewBoxToBounds(viewbox: ViewBox): SceneBounds;
|
|
58
|
+
export declare function expandBounds(target: SceneBounds, next: SceneBounds): SceneBounds;
|
|
59
|
+
export declare function boundsFromStackedLevels(levels: PublishedLevel[], activeLevelId: number | null, baseViewbox?: ViewBox | null): SceneBounds;
|
|
60
|
+
export declare function unionViewBox(primary: ViewBox | null | undefined, secondary: ViewBox | null | undefined): ViewBox;
|
|
61
|
+
//# sourceMappingURL=stacking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacking.d.ts","sourceRoot":"","sources":["../../src/core/stacking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CACnC,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC3C,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1C,MAAM,CAER;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrE,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,CAAC,EAAE,CAeL;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEjF;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAElF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAChF,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAU7D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,CAchF;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EAAE,EACxB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,GAC3B,WAAW,CA2Bb;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACnC,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GACpC,OAAO,CAST"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
* Pure TypeScript; no React / Three.js.
|
|
4
4
|
*/
|
|
5
5
|
export type MapVersion = 1 | 2;
|
|
6
|
+
/**
|
|
7
|
+
* Surface the map is embedded in.
|
|
8
|
+
*
|
|
9
|
+
* - `PORTAL` — admin Center Map editor (`MapEditor`). Left rail is Map options
|
|
10
|
+
* (Floors, Kiosks, Style) plus Edit Map — never viewer chrome. Default
|
|
11
|
+
* center is MapViewer (click-to-assign, no editor grid). Edit Map swaps
|
|
12
|
+
* in the geometry canvas and grid.
|
|
13
|
+
* - `PORTAL_ASSIGN` — admin editor default center (`MapViewer` for click-to-
|
|
14
|
+
* assign). Floors + zoom only — no search / amenities.
|
|
15
|
+
* - `WEBSITE` — public website (`MapViewer`).
|
|
16
|
+
* - `DISPLAY_APP` — kiosk (`MapViewer`).
|
|
17
|
+
*/
|
|
18
|
+
export type MapHost = 'PORTAL' | 'PORTAL_ASSIGN' | 'WEBSITE' | 'DISPLAY_APP';
|
|
19
|
+
/** Staff editor host. `PORTAL` always shows Map options inside the library. */
|
|
20
|
+
export type MapEditorHost = Extract<MapHost, 'PORTAL' | 'WEBSITE'>;
|
|
21
|
+
/** Public / assign viewer. Never includes Map options. */
|
|
22
|
+
export type MapViewerHost = Extract<MapHost, 'WEBSITE' | 'DISPLAY_APP' | 'PORTAL_ASSIGN'>;
|
|
6
23
|
export type LevelKind = 'outdoor' | 'floor';
|
|
7
24
|
export type ShapeKind = 'unit' | 'amenity' | 'kiosk_screen' | 'connector' | 'entrance' | 'walkable' | 'void' | 'wall' | 'boundary' | 'floorplate' | 'decor' | 'label' | 'zone' | 'parking_zone' | 'green_area' | 'water' | 'parking_icon';
|
|
8
25
|
export type AnchorKind = 'unit' | 'junction' | 'connector' | 'entrance';
|
|
@@ -94,6 +111,7 @@ export interface ThemeDefaults {
|
|
|
94
111
|
CAMERA_MIN_DISTANCE: number;
|
|
95
112
|
}
|
|
96
113
|
export declare const DEFAULT_THEME: ThemeDefaults;
|
|
114
|
+
export declare function mergeTheme(...partials: Array<Partial<ThemeDefaults> | null | undefined>): ThemeDefaults;
|
|
97
115
|
export interface CmMap {
|
|
98
116
|
id: number;
|
|
99
117
|
centerId: number;
|
|
@@ -101,6 +119,7 @@ export interface CmMap {
|
|
|
101
119
|
baseViewbox: ViewBox | null;
|
|
102
120
|
unitsPerMeter: number;
|
|
103
121
|
theme: Partial<ThemeDefaults>;
|
|
122
|
+
/** Current production document row in cm_revisions (overwritten in place). */
|
|
104
123
|
publishedRevisionId: number | null;
|
|
105
124
|
draftUpdatedAt: string | null;
|
|
106
125
|
createdAt: string;
|
|
@@ -120,6 +139,8 @@ export interface CmLevel {
|
|
|
120
139
|
levelIndex: number;
|
|
121
140
|
ordering: number;
|
|
122
141
|
sourceSvgKey: string | null;
|
|
142
|
+
/** Resolved CDN URL for editor preview (not persisted). */
|
|
143
|
+
sourceSvgUrl?: string | null;
|
|
123
144
|
sourceViewbox: ViewBox | null;
|
|
124
145
|
transform: LevelTransform;
|
|
125
146
|
isActive: boolean;
|
|
@@ -136,6 +157,10 @@ export interface CmShape {
|
|
|
136
157
|
label: ShapeLabel;
|
|
137
158
|
sourceSvgId: string | null;
|
|
138
159
|
origin: ShapeOrigin;
|
|
160
|
+
/** When true, outdoor re-import never overwrites geometry/bbox. */
|
|
161
|
+
geometryLocked?: boolean;
|
|
162
|
+
/** Set when sourceSvgId disappeared from a re-upload; filtered from public docs. */
|
|
163
|
+
orphanedAt?: string | null;
|
|
139
164
|
}
|
|
140
165
|
export interface CmShapeAssignment {
|
|
141
166
|
shapeId: number;
|
|
@@ -273,6 +298,8 @@ export interface ImportDiffItem {
|
|
|
273
298
|
assignment?: boolean;
|
|
274
299
|
anchors?: boolean;
|
|
275
300
|
};
|
|
301
|
+
/** True when portal Edit Map owns this shape's geometry. */
|
|
302
|
+
geometryLocked?: boolean;
|
|
276
303
|
}
|
|
277
304
|
export interface ImportDiff {
|
|
278
305
|
items: ImportDiffItem[];
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import { BatchOp,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
levels: CmLevel[];
|
|
9
|
-
shapes: CmShape[];
|
|
10
|
-
assignments: CmShapeAssignment[];
|
|
11
|
-
anchors: CmAnchor[];
|
|
12
|
-
edges: CmRouteEdge[];
|
|
13
|
-
amenities: CmAmenityCatalogItem[];
|
|
14
|
-
baseSvgUrl?: string | null;
|
|
15
|
-
}
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
|
+
import { BatchOp, MapEditorHost, PublishedDocument } from '../core';
|
|
3
|
+
import { EditorDraftState } from './draftOps';
|
|
4
|
+
import { CreateLevelInput, UpdateLevelInput } from './panels/FloorsPanel';
|
|
5
|
+
export type { EditorDraftState } from './draftOps';
|
|
6
|
+
export type { MapEditorHost } from '../core';
|
|
7
|
+
export type { EditorTool } from './tools';
|
|
16
8
|
export interface MapEditorProps {
|
|
9
|
+
/**
|
|
10
|
+
* Where the editor is embedded. `PORTAL` (default) always includes Map
|
|
11
|
+
* options (LeftRail: Floors, Kiosks, Style, plus Edit Map — never viewer
|
|
12
|
+
* chrome). Default center is MapViewer (click-to-assign, no grid). Edit
|
|
13
|
+
* Map swaps in the geometry canvas and editor grid. `WEBSITE` is canvas +
|
|
14
|
+
* toolbar only — public sites should use `MapViewer`, not this editor.
|
|
15
|
+
*/
|
|
16
|
+
host?: MapEditorHost;
|
|
17
17
|
draft: EditorDraftState;
|
|
18
18
|
webApiURI: string;
|
|
19
19
|
canEdit?: boolean;
|
|
@@ -22,10 +22,22 @@ export interface MapEditorProps {
|
|
|
22
22
|
onBatch?: (ops: BatchOp[]) => Promise<void>;
|
|
23
23
|
onPublish?: () => Promise<void>;
|
|
24
24
|
onImportSvg?: (levelId: number, file: File) => Promise<void>;
|
|
25
|
+
onCreateLevel?: (input: CreateLevelInput) => Promise<number | void>;
|
|
26
|
+
onUpdateLevel?: (input: UpdateLevelInput) => Promise<void>;
|
|
27
|
+
onDeleteLevel?: (levelId: number) => Promise<void>;
|
|
28
|
+
onReorderLevels?: (orderedIds: number[]) => Promise<void>;
|
|
25
29
|
onAutoroute?: (levelId: number) => Promise<void>;
|
|
26
30
|
previewDocument?: PublishedDocument | null;
|
|
31
|
+
/**
|
|
32
|
+
* Media proxy base, same contract as v1 `IMAGE_PROXY_URL` (base + encoded
|
|
33
|
+
* URL). Required whenever the outdoor SVG is served from a origin that does
|
|
34
|
+
* not send CORS headers, otherwise its decoration silently fails to load.
|
|
35
|
+
*/
|
|
36
|
+
imageProxyUrl?: string | null;
|
|
27
37
|
className?: string;
|
|
38
|
+
/** Quiet extra actions under the left rail (e.g. developer Classic Map). */
|
|
39
|
+
sidebarFooter?: ReactNode;
|
|
28
40
|
}
|
|
29
|
-
export declare function MapEditor({ draft, canEdit, canFloors, canSettings, onBatch, onPublish, onImportSvg, onAutoroute, previewDocument, className, }: MapEditorProps): React.JSX.Element;
|
|
41
|
+
export declare function MapEditor({ host, draft, canEdit, canFloors, canSettings, onBatch, onPublish, onImportSvg, onCreateLevel, onUpdateLevel, onDeleteLevel, onReorderLevels, onAutoroute, previewDocument, imageProxyUrl, className, sidebarFooter, }: MapEditorProps): React.JSX.Element;
|
|
30
42
|
export default MapEditor;
|
|
31
43
|
//# sourceMappingURL=MapEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapEditor.d.ts","sourceRoot":"","sources":["../../src/editor/MapEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MapEditor.d.ts","sourceRoot":"","sources":["../../src/editor/MapEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAW/E,OAAO,cAAc,CAAC;AAEtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAe,EACf,KAAK,EACL,OAAc,EACd,SAAgB,EAChB,WAAkB,EAClB,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,cAAc,qBAkbhB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { CmAnchor, CmLevel, CmRouteEdge, CmShape, CmShapeAssignment, ShapeGeometry, ShapeKind, ThemeDefaults, Vec2 } from '../../core';
|
|
2
|
+
import { CmAnchor, CmLevel, CmRouteEdge, CmShape, CmShapeAssignment, ShapeGeometry, ShapeKind, ThemeDefaults, Vec2, ViewBox } from '../../core';
|
|
3
|
+
import { EditorTool } from '../tools';
|
|
3
4
|
export interface EditorCanvasProps {
|
|
4
5
|
level: CmLevel | null;
|
|
5
6
|
shapes: CmShape[];
|
|
@@ -7,16 +8,27 @@ export interface EditorCanvasProps {
|
|
|
7
8
|
edges: CmRouteEdge[];
|
|
8
9
|
assignments: CmShapeAssignment[];
|
|
9
10
|
theme: ThemeDefaults;
|
|
10
|
-
tool:
|
|
11
|
+
tool: EditorTool;
|
|
11
12
|
baseAngle: number;
|
|
12
13
|
selectedShapeId: number | null;
|
|
13
14
|
selectedAnchorIds: number[];
|
|
15
|
+
/** Outdoor SVG underlay (designer-owned). */
|
|
14
16
|
baseSvgUrl: string | null;
|
|
17
|
+
baseViewbox?: ViewBox | null;
|
|
18
|
+
/** Active level SVG underlay — outdoor only; floors have no stored SVG. */
|
|
19
|
+
levelSvgUrl?: string | null;
|
|
20
|
+
/** Outdoor/base shapes drawn behind the active building floor (non-interactive). */
|
|
21
|
+
underlayShapes?: CmShape[];
|
|
22
|
+
/** When true (outdoor), only interactive shapes are editable. */
|
|
23
|
+
interactiveOnly?: boolean;
|
|
24
|
+
/** Graph-paper grid. PORTAL only mounts this canvas after Edit Map. */
|
|
25
|
+
showGrid?: boolean;
|
|
15
26
|
onSelectShape: (id: number | null) => void;
|
|
16
27
|
onSelectAnchors: (ids: number[]) => void;
|
|
17
28
|
onCreateRoutePoint: (point: Vec2, prevAnchorId: number | null) => void;
|
|
18
29
|
onMoveAnchor: (anchorId: number, x: number, y: number) => void;
|
|
19
30
|
onCreateShape: (kind: ShapeKind, geometry: ShapeGeometry) => void;
|
|
31
|
+
onUpdateShapeGeometry: (shapeId: number, geometry: ShapeGeometry) => void;
|
|
20
32
|
}
|
|
21
|
-
export declare function EditorCanvas({ level, shapes, anchors, edges, theme, tool, baseAngle, selectedShapeId, selectedAnchorIds, baseSvgUrl, onSelectShape, onSelectAnchors, onCreateRoutePoint, onMoveAnchor, onCreateShape, }: EditorCanvasProps): React.JSX.Element;
|
|
33
|
+
export declare function EditorCanvas({ level, shapes, anchors, edges, theme, tool, baseAngle, selectedShapeId, selectedAnchorIds, baseSvgUrl, baseViewbox, levelSvgUrl, underlayShapes, interactiveOnly, showGrid, onSelectShape, onSelectAnchors, onCreateRoutePoint, onMoveAnchor, onCreateShape, onUpdateShapeGeometry, }: EditorCanvasProps): React.JSX.Element;
|
|
22
34
|
//# sourceMappingURL=EditorCanvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorCanvas.d.ts","sourceRoot":"","sources":["../../../src/editor/canvas/EditorCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"EditorCanvas.d.ts","sourceRoot":"","sources":["../../../src/editor/canvas/EditorCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,aAAa,EACb,IAAI,EACJ,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAyB3C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvE,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAClE,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3E;AAoBD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,WAAkB,EAClB,WAAkB,EAClB,cAAmB,EACnB,eAAuB,EACvB,QAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,qBAAqB,GACtB,EAAE,iBAAiB,qBAsiBnB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Vec2 } from '../../core';
|
|
2
|
+
/** 2D affine matrix in DOMMatrix / SVGMatrix layout (a c e / b d f). */
|
|
3
|
+
export interface Affine2 {
|
|
4
|
+
a: number;
|
|
5
|
+
b: number;
|
|
6
|
+
c: number;
|
|
7
|
+
d: number;
|
|
8
|
+
e: number;
|
|
9
|
+
f: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Map a client (CSS pixel) point through the inverse of an SVG screen CTM.
|
|
13
|
+
* That converts pointer coordinates into SVG user / viewBox space so pan
|
|
14
|
+
* deltas match what is drawn, even when the viewBox is larger than the
|
|
15
|
+
* canvas CSS box (or letterboxed by preserveAspectRatio).
|
|
16
|
+
*/
|
|
17
|
+
export declare function clientToUser(ctm: Affine2, clientX: number, clientY: number): Vec2;
|
|
18
|
+
export declare function clientToSvgUser(svg: SVGSVGElement, clientX: number, clientY: number): Vec2;
|
|
19
|
+
/** Invert `translate(pan) scale(zoom)` so a user-space point becomes world geometry. */
|
|
20
|
+
export declare function userToWorld(user: Vec2, pan: Vec2, zoom: number): Vec2;
|
|
21
|
+
//# sourceMappingURL=coords.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coords.d.ts","sourceRoot":"","sources":["../../../src/editor/canvas/coords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,wEAAwE;AACxE,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASjF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI1F;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMrE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BatchOp, CmAmenityCatalogItem, CmAnchor, CmBuilding, CmLevel, CmRouteEdge, CmShape, CmShapeAssignment, ThemeDefaults } from '../core';
|
|
2
|
+
export interface EditorDraftState {
|
|
3
|
+
mapId: number;
|
|
4
|
+
centerId: number;
|
|
5
|
+
theme: Partial<ThemeDefaults>;
|
|
6
|
+
buildings: CmBuilding[];
|
|
7
|
+
levels: CmLevel[];
|
|
8
|
+
shapes: CmShape[];
|
|
9
|
+
assignments: CmShapeAssignment[];
|
|
10
|
+
anchors: CmAnchor[];
|
|
11
|
+
edges: CmRouteEdge[];
|
|
12
|
+
amenities: CmAmenityCatalogItem[];
|
|
13
|
+
baseSvgUrl?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function applyDraftOp(draft: EditorDraftState, op: BatchOp): EditorDraftState;
|
|
16
|
+
export declare function applyDraftOps(draft: EditorDraftState, ops: BatchOp[]): EditorDraftState;
|
|
17
|
+
/** Collapse repeated updates to the same entity so Save Changes sends one op each. */
|
|
18
|
+
export declare function coalesceDraftOp(ops: BatchOp[], op: BatchOp): BatchOp[];
|
|
19
|
+
//# sourceMappingURL=draftOps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftOps.d.ts","sourceRoot":"","sources":["../../src/editor/draftOps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,OAAO,EACP,iBAAiB,EAEjB,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAkBD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,OAAO,GACV,gBAAgB,CA2HlB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,OAAO,EAAE,GACb,gBAAgB,CAElB;AAiBD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,EAAE,CAqDtE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ShapeGeometry, Vec2, geometryBBox } from '../core';
|
|
2
|
+
/** Rebuild absolute path `d` strings from polygon rings (lossy for beziers). */
|
|
3
|
+
export declare function polygonsToPathD(polygons: Vec2[][]): string;
|
|
4
|
+
export declare function polygonsToGeometry(polygons: Vec2[][]): ShapeGeometry;
|
|
5
|
+
export declare function translateGeometry(geometry: ShapeGeometry, dx: number, dy: number): ShapeGeometry;
|
|
6
|
+
export declare function moveVertex(geometry: ShapeGeometry, polygonIndex: number, vertexIndex: number, point: Vec2): ShapeGeometry;
|
|
7
|
+
/**
|
|
8
|
+
* Insert a vertex after `vertexIndex` on the given ring (before the next point).
|
|
9
|
+
*/
|
|
10
|
+
export declare function insertVertex(geometry: ShapeGeometry, polygonIndex: number, afterVertexIndex: number, point: Vec2): ShapeGeometry;
|
|
11
|
+
/** Remove a vertex; refuses to go below 3 points on a ring. */
|
|
12
|
+
export declare function removeVertex(geometry: ShapeGeometry, polygonIndex: number, vertexIndex: number): ShapeGeometry;
|
|
13
|
+
export interface VertexHit {
|
|
14
|
+
polygonIndex: number;
|
|
15
|
+
vertexIndex: number;
|
|
16
|
+
point: Vec2;
|
|
17
|
+
distance: number;
|
|
18
|
+
}
|
|
19
|
+
/** Nearest vertex within `tolerance` world units, or null. */
|
|
20
|
+
export declare function hitTestVertex(geometry: ShapeGeometry, point: Vec2, tolerance: number): VertexHit | null;
|
|
21
|
+
export interface EdgeHit {
|
|
22
|
+
polygonIndex: number;
|
|
23
|
+
/** Insert after this vertex index. */
|
|
24
|
+
afterVertexIndex: number;
|
|
25
|
+
point: Vec2;
|
|
26
|
+
distance: number;
|
|
27
|
+
}
|
|
28
|
+
/** Nearest edge midpoint (or projection) within tolerance for insert. */
|
|
29
|
+
export declare function hitTestEdgeMidpoint(geometry: ShapeGeometry, point: Vec2, tolerance: number): EdgeHit | null;
|
|
30
|
+
export declare function geometryWithBBox(geometry: ShapeGeometry): {
|
|
31
|
+
geometry: ShapeGeometry;
|
|
32
|
+
bbox: ReturnType<typeof geometryBBox>;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=geometryEdit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometryEdit.d.ts","sourceRoot":"","sources":["../../src/editor/geometryEdit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAY1D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,aAAa,CAqBpE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,aAAa,CAKf;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,IAAI,GACV,aAAa,CAQf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,IAAI,GACV,aAAa,CAQf;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,aAAa,CAOf;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,MAAM,GAChB,SAAS,GAAG,IAAI,CAgBlB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,GAAG,IAAI,CAoBhB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG;IACzD,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;CACvC,CAEA"}
|