/** * 内置图形图元(`floorMapBuiltinShape`)的预设清单。 * * 每个预设: * - `key`:持久化在 `sceneElement.builtinShapeKey`,跨语言稳定; * - `labelKey`:展示名 i18n key(在 `locales.ts` / `-ja` / `-pt` 中维护); * - `defaultSize`:调色板落点 / 切换 kind 时的初始像素尺寸,比例与下文 viewBox 一致; * - `render(props)`:内置 SVG 图形(统一 `preserveAspectRatio="xMidYMid meet"`, * 按 viewBox 自然比例缩放并居中,容器尺寸变化时不会被拉伸变形)。 * * 不引入图片资源 / 字体图标,全部 inline SVG,避免额外构建依赖与请求。 */ import React from 'react'; /** 内置图形渲染函数共享 props(容器已限定 100% 宽高) */ export interface FloorMapBuiltinShapeRenderProps { /** 主体填充色(壳层为浅灰),允许通过 sceneElement.fillColor 覆盖 */ fillColor?: string; /** 描边色,允许通过 sceneElement.strokeColor 覆盖 */ strokeColor?: string; } export interface FloorMapBuiltinShapeDef { key: string; /** i18n 文案 key(在 locales.ts 中维护中英繁日葡) */ labelKey: string; /** 调色板落点时的默认像素尺寸;比例与 viewBox 对齐,避免落点后立刻变形 */ defaultSize: { width: number; height: number; }; /** 内置 SVG 渲染(按 viewBox 比例缩放,容器变化时居中保比例) */ render: (props: FloorMapBuiltinShapeRenderProps) => React.ReactElement; /** * 是否随容器宽高自动切换横/竖方向。 * - `true`:容器高 > 宽时,wrapper 自动给整张图形 rotate 90deg,让图形在画 * 布上看起来始终「贴墙 / 贴边」。比追加一个 `*-vertical` key 更直观, * 也不需要持久化方向,纯几何 fit。 * - 默认 `false`(厕所 / 柱子 / 分隔等无方向语义或自带 stretch 策略的图形)。 */ orientationAware?: boolean; } /** 默认主色 / 描边色:偏中性灰,与地面其它图元(房间 / 桌位)调性一致 */ declare const DEFAULT_FILL = "#f1f3f5"; declare const DEFAULT_STROKE = "#6b7280"; /** * 内置图形预设清单(顺序即调色板 / 编辑面板下拉的展示顺序)。 * `defaultSize` 比例严格跟随对应 SVG 的 viewBox: * - 厕所 / 柱子 / 大门:正方形(viewBox 100×100) * - 分隔:viewBox 100×100,但渲染层用 `preserveAspectRatio="none"`, * `defaultSize` 给个常用的瘦高比例(32×160)作为「默认竖分隔」落点, * 用户可直接拖宽变横分隔,不需要换 key。 * - 沙发:2:1 水平(viewBox 200×100) * * 新增预设:在此追加一项即可,编辑面板 / 调色板 / fallback 渲染会自动适配。 */ export declare const FLOOR_MAP_BUILTIN_SHAPES: FloorMapBuiltinShapeDef[]; /** 通过 key 查找预设,未命中返回 undefined(让上层显示「未选择」占位) */ export declare function getFloorMapBuiltinShapeDef(key: string | undefined): FloorMapBuiltinShapeDef | undefined; export { DEFAULT_FILL as FLOOR_MAP_BUILTIN_SHAPE_DEFAULT_FILL }; export { DEFAULT_STROKE as FLOOR_MAP_BUILTIN_SHAPE_DEFAULT_STROKE };