import React from "react";

//#region src/components/pisellFloorMapLayout/utils/floorMapBuiltinShapes.d.ts
/** 内置图形渲染函数共享 props（容器已限定 100% 宽高） */
interface FloorMapBuiltinShapeRenderProps {
  /** 主体填充色（壳层为浅灰），允许通过 sceneElement.fillColor 覆盖 */
  fillColor?: string;
  /** 描边色，允许通过 sceneElement.strokeColor 覆盖 */
  strokeColor?: string;
}
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;
}
/**
 * 内置图形预设清单（顺序即调色板 / 编辑面板下拉的展示顺序）。
 * `defaultSize` 比例严格跟随对应 SVG 的 viewBox：
 * - 厕所 / 柱子 / 大门：正方形（viewBox 100×100）
 * - 分隔：viewBox 100×100，但渲染层用 `preserveAspectRatio="none"`，
 *   `defaultSize` 给个常用的瘦高比例（32×160）作为「默认竖分隔」落点，
 *   用户可直接拖宽变横分隔，不需要换 key。
 * - 沙发：2:1 水平（viewBox 200×100）
 *
 * 新增预设：在此追加一项即可，编辑面板 / 调色板 / fallback 渲染会自动适配。
 */
declare const FLOOR_MAP_BUILTIN_SHAPES: FloorMapBuiltinShapeDef[];
/** 通过 key 查找预设，未命中返回 undefined（让上层显示「未选择」占位） */
declare function getFloorMapBuiltinShapeDef(key: string | undefined): FloorMapBuiltinShapeDef | undefined;
//#endregion
export { FLOOR_MAP_BUILTIN_SHAPES, FloorMapBuiltinShapeDef, FloorMapBuiltinShapeRenderProps, getFloorMapBuiltinShapeDef };