"use strict";
/**
 * OOXML DrawingML `a:prstGeom@prst` 使用简单类型 **ST_ShapeType**（完整取值见 ECMA-376 / Datypic 文档）。
 *
 * 本地 Univer 幻灯片 `packages/slides/.../shape-adaptor.ts`（ShapeAdaptor）仅将 **rect / roundRect / ellipse**
 * 转为画布 `Rect`/`Circle`，其余 `BasicShapes` 枚举值不会创建对象。
 * 因此这里把上百种预设归并为四类可渲染底图，并保留原始 `pptPrst` 供导出或后续扩展路径几何。
 *
 * @see https://www.datypic.com/sc/ooxml/t-a_ST_ShapeType.html
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapOoxmlPrstToDrawableKind = mapOoxmlPrstToDrawableKind;
const ELLIPSE_PRST = new Set([
    'ellipse',
    'arc',
    'chord',
    'pie',
    'pieWedge',
    'donut',
    'teardrop',
    'moon',
    'blockArc',
    /** 椭圆角标注 */
    'wedgeEllipseCallout',
    /** 带状椭圆条，外接椭圆近似 */
    'ellipseRibbon',
    'ellipseRibbon2',
]);
const ROUND_RECT_PRST = new Set([
    'roundRect',
    'round1Rect',
    'round2SameRect',
    'round2DiagRect',
    'snipRoundRect',
    'snip1Rect',
    'snip2SameRect',
    'snip2DiagRect',
    'plaque',
    /** 圆角矩形类标注 */
    'wedgeRoundRectCallout',
]);
/**
 * @param prst `a:prstGeom@prst`，无预设几何时传 `undefined` 或 `''`
 * @param opts.hasCustGeom 存在 `a:custGeom` 且无 `a:prstGeom` 时为 true
 * @param opts.hasPrstGeom 存在 `a:prstGeom` 时为 true
 */
function mapOoxmlPrstToDrawableKind(prst, opts) {
    if (opts.hasCustGeom && !opts.hasPrstGeom) {
        return 'custGeom';
    }
    if (!opts.hasPrstGeom) {
        return null;
    }
    const p = (prst ?? '').trim();
    if (p === '' || p === 'rect') {
        return 'rect';
    }
    if (ELLIPSE_PRST.has(p)) {
        return 'ellipse';
    }
    if (ROUND_RECT_PRST.has(p)) {
        return 'roundRect';
    }
    /**
     * 其余 ST_ShapeType（箭头、流程图、数学符号、括号对、星形、连接符等）统一用外接矩形近似填/描边，
     * 与 Univer 当前渲染能力一致；精确路径需读 `a:custGeom`/`presetShapeDefinitions.xml` 再画 Path。
     */
    return 'rect';
}
