@retikz/core 0.2.0-beta.1 → 0.2.0-rc.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAGX,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAIV,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAKtE,OAAO,EAAE,KAAK,eAAe,EAA2D,MAAM,UAAU,CAAC;AA8FzG,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,wEAAwE;IACxE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACnE,CAAC;AA0EF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,cAAa,YAA+B,EAC5C,WAAU,gBAAqB,KAC9B;IAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAAG,IA0tBrE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAGX,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAIV,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAKtE,OAAO,EAAE,KAAK,eAAe,EAA2D,MAAM,UAAU,CAAC;AA8FzG,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,wEAAwE;IACxE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACnE,CAAC;AA0EF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,cAAa,YAA+B,EAC5C,WAAU,gBAAqB,KAC9B;IAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAAG,IAwuBrE,CAAC"}
@@ -179,7 +179,8 @@ var emitPathPrimitive = (path, nameStack, round, measureText = fallbackMeasurer,
179
179
  const scopeChain = warnHook.scopeChain ?? [];
180
180
  const resolveFill = warnHook.resolveFill ?? ((f) => typeof f === "string" || f === void 0 ? f : void 0);
181
181
  const steps = normalizeRelativeTargets(path.children, nameStack, scopeChain);
182
- if (steps.length < 2) {
182
+ const soloSelfContained = steps.length === 1 && steps[0].kind === "rectangle";
183
+ if (steps.length < 2 && !soloSelfContained) {
183
184
  warn("PATH_TOO_SHORT", `Path requires at least 2 steps (got ${steps.length}); the entire path is skipped`, "children");
184
185
  return null;
185
186
  }
@@ -324,9 +325,10 @@ var emitPathPrimitive = (path, nameStack, round, measureText = fallbackMeasurer,
324
325
  if (samePoint(p, lastEnd)) return;
325
326
  emitMove(p);
326
327
  };
327
- /** 部分圆/椭圆的闭合模式:'open' 直接返回;缺省 / 误给 'closed' 回退 'chord' */
328
+ /** 部分圆/椭圆的闭合模式:'open' 直接返回;'sector' 连回中心;缺省 / 误给 'closed' 回退 'chord' */
328
329
  const resolvePartialClosed = (closed, idx) => {
329
330
  if (closed === "open") return "open";
331
+ if (closed === "sector") return "sector";
330
332
  if (closed === "closed") warn("PARTIAL_ARC_CLOSED_INVALID", "Partial circle/ellipse (with angles) cannot use closed:'closed'; falling back to 'chord'", `children[${idx}]`);
331
333
  return "chord";
332
334
  };
@@ -491,9 +493,14 @@ var emitPathPrimitive = (path, nameStack, round, measureText = fallbackMeasurer,
491
493
  emitEllipseArc(center, r, r, startA, endA);
492
494
  for (const p of ellipseArcBoundingPoints(center, r, r, startA, endA)) points.push(p);
493
495
  collectLabel(step, (t) => ellipseArcSegmentSample(center, r, r, startA, endA, t));
494
- if (resolvePartialClosed(step.closed, i) === "chord") {
496
+ const closing = resolvePartialClosed(step.closed, i);
497
+ if (closing === "chord") {
495
498
  emitClose();
496
499
  penOverride = ellipseArcPoint(center, r, r, startA);
500
+ } else if (closing === "sector") {
501
+ emitLine(center);
502
+ emitClose();
503
+ penOverride = center;
497
504
  } else penOverride = ellipseArcPoint(center, r, r, endA);
498
505
  continue;
499
506
  }
@@ -519,9 +526,14 @@ var emitPathPrimitive = (path, nameStack, round, measureText = fallbackMeasurer,
519
526
  emitEllipseArc(center, rx, ry, startA, endA);
520
527
  for (const p of ellipseArcBoundingPoints(center, rx, ry, startA, endA)) points.push(p);
521
528
  collectLabel(step, (t) => ellipseArcSegmentSample(center, rx, ry, startA, endA, t));
522
- if (resolvePartialClosed(step.closed, i) === "chord") {
529
+ const closing = resolvePartialClosed(step.closed, i);
530
+ if (closing === "chord") {
523
531
  emitClose();
524
532
  penOverride = ellipseArcPoint(center, rx, ry, startA);
533
+ } else if (closing === "sector") {
534
+ emitLine(center);
535
+ emitClose();
536
+ penOverride = center;
525
537
  } else penOverride = ellipseArcPoint(center, rx, ry, endA);
526
538
  continue;
527
539
  }
@@ -1481,7 +1481,7 @@ export declare const PathSchema: z.ZodObject<{
1481
1481
  radius: z.ZodNumber;
1482
1482
  startAngle: z.ZodOptional<z.ZodNumber>;
1483
1483
  endAngle: z.ZodOptional<z.ZodNumber>;
1484
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1484
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1485
1485
  label: z.ZodOptional<z.ZodObject<{
1486
1486
  text: z.ZodString;
1487
1487
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1548,7 +1548,7 @@ export declare const PathSchema: z.ZodObject<{
1548
1548
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1549
1549
  textColor?: string | undefined;
1550
1550
  } | undefined;
1551
- closed?: "open" | "closed" | "chord" | undefined;
1551
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1552
1552
  }, {
1553
1553
  type: "step";
1554
1554
  radius: number;
@@ -1568,7 +1568,7 @@ export declare const PathSchema: z.ZodObject<{
1568
1568
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1569
1569
  textColor?: string | undefined;
1570
1570
  } | undefined;
1571
- closed?: "open" | "closed" | "chord" | undefined;
1571
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1572
1572
  }>, z.ZodObject<{
1573
1573
  type: z.ZodLiteral<"step">;
1574
1574
  kind: z.ZodLiteral<"ellipsePath">;
@@ -1576,7 +1576,7 @@ export declare const PathSchema: z.ZodObject<{
1576
1576
  radiusY: z.ZodNumber;
1577
1577
  startAngle: z.ZodOptional<z.ZodNumber>;
1578
1578
  endAngle: z.ZodOptional<z.ZodNumber>;
1579
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1579
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1580
1580
  label: z.ZodOptional<z.ZodObject<{
1581
1581
  text: z.ZodString;
1582
1582
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1644,7 +1644,7 @@ export declare const PathSchema: z.ZodObject<{
1644
1644
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1645
1645
  textColor?: string | undefined;
1646
1646
  } | undefined;
1647
- closed?: "open" | "closed" | "chord" | undefined;
1647
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1648
1648
  }, {
1649
1649
  type: "step";
1650
1650
  kind: "ellipsePath";
@@ -1665,7 +1665,7 @@ export declare const PathSchema: z.ZodObject<{
1665
1665
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1666
1666
  textColor?: string | undefined;
1667
1667
  } | undefined;
1668
- closed?: "open" | "closed" | "chord" | undefined;
1668
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1669
1669
  }>, z.ZodObject<{
1670
1670
  type: z.ZodLiteral<"step">;
1671
1671
  kind: z.ZodLiteral<"rectangle">;
@@ -2246,7 +2246,7 @@ export declare const PathSchema: z.ZodObject<{
2246
2246
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2247
2247
  textColor?: string | undefined;
2248
2248
  } | undefined;
2249
- closed?: "open" | "closed" | "chord" | undefined;
2249
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2250
2250
  } | {
2251
2251
  type: "step";
2252
2252
  kind: "ellipsePath";
@@ -2267,7 +2267,7 @@ export declare const PathSchema: z.ZodObject<{
2267
2267
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2268
2268
  textColor?: string | undefined;
2269
2269
  } | undefined;
2270
- closed?: "open" | "closed" | "chord" | undefined;
2270
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2271
2271
  } | {
2272
2272
  type: "step";
2273
2273
  to: [number, number] | import('..').PolarPosition | {
@@ -2670,7 +2670,7 @@ export declare const PathSchema: z.ZodObject<{
2670
2670
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2671
2671
  textColor?: string | undefined;
2672
2672
  } | undefined;
2673
- closed?: "open" | "closed" | "chord" | undefined;
2673
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2674
2674
  } | {
2675
2675
  type: "step";
2676
2676
  kind: "ellipsePath";
@@ -2691,7 +2691,7 @@ export declare const PathSchema: z.ZodObject<{
2691
2691
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2692
2692
  textColor?: string | undefined;
2693
2693
  } | undefined;
2694
- closed?: "open" | "closed" | "chord" | undefined;
2694
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2695
2695
  } | {
2696
2696
  type: "step";
2697
2697
  to: [number, number] | import('..').PolarPosition | {
@@ -1178,7 +1178,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1178
1178
  radius: z.ZodNumber;
1179
1179
  startAngle: z.ZodOptional<z.ZodNumber>;
1180
1180
  endAngle: z.ZodOptional<z.ZodNumber>;
1181
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1181
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1182
1182
  label: z.ZodOptional<z.ZodObject<{
1183
1183
  text: z.ZodString;
1184
1184
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1245,7 +1245,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1245
1245
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1246
1246
  textColor?: string | undefined;
1247
1247
  } | undefined;
1248
- closed?: "open" | "closed" | "chord" | undefined;
1248
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1249
1249
  }, {
1250
1250
  type: "step";
1251
1251
  radius: number;
@@ -1265,7 +1265,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1265
1265
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1266
1266
  textColor?: string | undefined;
1267
1267
  } | undefined;
1268
- closed?: "open" | "closed" | "chord" | undefined;
1268
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1269
1269
  }>;
1270
1270
  export declare const EllipsePathStepSchema: z.ZodObject<{
1271
1271
  type: z.ZodLiteral<"step">;
@@ -1274,7 +1274,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1274
1274
  radiusY: z.ZodNumber;
1275
1275
  startAngle: z.ZodOptional<z.ZodNumber>;
1276
1276
  endAngle: z.ZodOptional<z.ZodNumber>;
1277
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1277
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1278
1278
  label: z.ZodOptional<z.ZodObject<{
1279
1279
  text: z.ZodString;
1280
1280
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1342,7 +1342,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1342
1342
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1343
1343
  textColor?: string | undefined;
1344
1344
  } | undefined;
1345
- closed?: "open" | "closed" | "chord" | undefined;
1345
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1346
1346
  }, {
1347
1347
  type: "step";
1348
1348
  kind: "ellipsePath";
@@ -1363,7 +1363,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1363
1363
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1364
1364
  textColor?: string | undefined;
1365
1365
  } | undefined;
1366
- closed?: "open" | "closed" | "chord" | undefined;
1366
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1367
1367
  }>;
1368
1368
  export declare const RectangleStepSchema: z.ZodObject<{
1369
1369
  type: z.ZodLiteral<"step">;
@@ -2815,7 +2815,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2815
2815
  radius: z.ZodNumber;
2816
2816
  startAngle: z.ZodOptional<z.ZodNumber>;
2817
2817
  endAngle: z.ZodOptional<z.ZodNumber>;
2818
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2818
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2819
2819
  label: z.ZodOptional<z.ZodObject<{
2820
2820
  text: z.ZodString;
2821
2821
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2882,7 +2882,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2882
2882
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2883
2883
  textColor?: string | undefined;
2884
2884
  } | undefined;
2885
- closed?: "open" | "closed" | "chord" | undefined;
2885
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2886
2886
  }, {
2887
2887
  type: "step";
2888
2888
  radius: number;
@@ -2902,7 +2902,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2902
2902
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2903
2903
  textColor?: string | undefined;
2904
2904
  } | undefined;
2905
- closed?: "open" | "closed" | "chord" | undefined;
2905
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2906
2906
  }>, z.ZodObject<{
2907
2907
  type: z.ZodLiteral<"step">;
2908
2908
  kind: z.ZodLiteral<"ellipsePath">;
@@ -2910,7 +2910,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2910
2910
  radiusY: z.ZodNumber;
2911
2911
  startAngle: z.ZodOptional<z.ZodNumber>;
2912
2912
  endAngle: z.ZodOptional<z.ZodNumber>;
2913
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2913
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2914
2914
  label: z.ZodOptional<z.ZodObject<{
2915
2915
  text: z.ZodString;
2916
2916
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2978,7 +2978,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2978
2978
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2979
2979
  textColor?: string | undefined;
2980
2980
  } | undefined;
2981
- closed?: "open" | "closed" | "chord" | undefined;
2981
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2982
2982
  }, {
2983
2983
  type: "step";
2984
2984
  kind: "ellipsePath";
@@ -2999,7 +2999,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2999
2999
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
3000
3000
  textColor?: string | undefined;
3001
3001
  } | undefined;
3002
- closed?: "open" | "closed" | "chord" | undefined;
3002
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
3003
3003
  }>, z.ZodObject<{
3004
3004
  type: z.ZodLiteral<"step">;
3005
3005
  kind: z.ZodLiteral<"rectangle">;
@@ -103,8 +103,9 @@ var CirclePathStepSchema = z.object({
103
103
  closed: z.enum([
104
104
  "closed",
105
105
  "chord",
106
- "open"
107
- ]).optional().describe("Closing mode. 'closed' = full circle (only valid with no angles; the default then). With angles: 'chord' (straight chord between the two arc ends → half circle / segment; default) or 'open' (pure unclosed arc)."),
106
+ "open",
107
+ "sector"
108
+ ]).optional().describe("Closing mode. 'closed' = full circle (only valid with no angles; the default then). With angles: 'chord' (straight chord between the two arc ends; default), 'sector' (connect both arc ends to the center, then close), or 'open' (pure unclosed arc)."),
108
109
  label: StepLabelSchema.optional().describe("Edge label attached to this circle")
109
110
  }).describe("CirclePath action: full circle (no angles, pen returns to center) or partial arc (with angles, closed per chord/open).");
110
111
  var EllipsePathStepSchema = z.object({
@@ -117,8 +118,9 @@ var EllipsePathStepSchema = z.object({
117
118
  closed: z.enum([
118
119
  "closed",
119
120
  "chord",
120
- "open"
121
- ]).optional().describe("Closing mode. 'closed' = full ellipse (only valid with no angles; default then). With angles: 'chord' (chord between arc ends; default) or 'open' (pure unclosed arc)."),
121
+ "open",
122
+ "sector"
123
+ ]).optional().describe("Closing mode. 'closed' = full ellipse (only valid with no angles; default then). With angles: 'chord' (chord between arc ends; default), 'sector' (connect both arc ends to the center, then close), or 'open' (pure unclosed arc)."),
122
124
  label: StepLabelSchema.optional().describe("Edge label attached to this ellipse")
123
125
  }).describe("EllipsePath action: full ellipse (no angles, pen returns to center) or partial elliptical arc (with angles, closed per chord/open).");
124
126
  var RectangleStepSchema = z.object({
@@ -1966,7 +1966,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
1966
1966
  radius: z.ZodNumber;
1967
1967
  startAngle: z.ZodOptional<z.ZodNumber>;
1968
1968
  endAngle: z.ZodOptional<z.ZodNumber>;
1969
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1969
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1970
1970
  label: z.ZodOptional<z.ZodObject<{
1971
1971
  text: z.ZodString;
1972
1972
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2033,7 +2033,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2033
2033
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2034
2034
  textColor?: string | undefined;
2035
2035
  } | undefined;
2036
- closed?: "open" | "closed" | "chord" | undefined;
2036
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2037
2037
  }, {
2038
2038
  type: "step";
2039
2039
  radius: number;
@@ -2053,7 +2053,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2053
2053
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2054
2054
  textColor?: string | undefined;
2055
2055
  } | undefined;
2056
- closed?: "open" | "closed" | "chord" | undefined;
2056
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2057
2057
  }>, z.ZodObject<{
2058
2058
  type: z.ZodLiteral<"step">;
2059
2059
  kind: z.ZodLiteral<"ellipsePath">;
@@ -2061,7 +2061,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2061
2061
  radiusY: z.ZodNumber;
2062
2062
  startAngle: z.ZodOptional<z.ZodNumber>;
2063
2063
  endAngle: z.ZodOptional<z.ZodNumber>;
2064
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2064
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2065
2065
  label: z.ZodOptional<z.ZodObject<{
2066
2066
  text: z.ZodString;
2067
2067
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2129,7 +2129,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2129
2129
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2130
2130
  textColor?: string | undefined;
2131
2131
  } | undefined;
2132
- closed?: "open" | "closed" | "chord" | undefined;
2132
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2133
2133
  }, {
2134
2134
  type: "step";
2135
2135
  kind: "ellipsePath";
@@ -2150,7 +2150,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2150
2150
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2151
2151
  textColor?: string | undefined;
2152
2152
  } | undefined;
2153
- closed?: "open" | "closed" | "chord" | undefined;
2153
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2154
2154
  }>, z.ZodObject<{
2155
2155
  type: z.ZodLiteral<"step">;
2156
2156
  kind: z.ZodLiteral<"rectangle">;
@@ -4991,7 +4991,7 @@ export declare const ScopeSchema: z.ZodObject<{
4991
4991
  radius: z.ZodNumber;
4992
4992
  startAngle: z.ZodOptional<z.ZodNumber>;
4993
4993
  endAngle: z.ZodOptional<z.ZodNumber>;
4994
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
4994
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
4995
4995
  label: z.ZodOptional<z.ZodObject<{
4996
4996
  text: z.ZodString;
4997
4997
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -5058,7 +5058,7 @@ export declare const ScopeSchema: z.ZodObject<{
5058
5058
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5059
5059
  textColor?: string | undefined;
5060
5060
  } | undefined;
5061
- closed?: "open" | "closed" | "chord" | undefined;
5061
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5062
5062
  }, {
5063
5063
  type: "step";
5064
5064
  radius: number;
@@ -5078,7 +5078,7 @@ export declare const ScopeSchema: z.ZodObject<{
5078
5078
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5079
5079
  textColor?: string | undefined;
5080
5080
  } | undefined;
5081
- closed?: "open" | "closed" | "chord" | undefined;
5081
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5082
5082
  }>, z.ZodObject<{
5083
5083
  type: z.ZodLiteral<"step">;
5084
5084
  kind: z.ZodLiteral<"ellipsePath">;
@@ -5086,7 +5086,7 @@ export declare const ScopeSchema: z.ZodObject<{
5086
5086
  radiusY: z.ZodNumber;
5087
5087
  startAngle: z.ZodOptional<z.ZodNumber>;
5088
5088
  endAngle: z.ZodOptional<z.ZodNumber>;
5089
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
5089
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
5090
5090
  label: z.ZodOptional<z.ZodObject<{
5091
5091
  text: z.ZodString;
5092
5092
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -5154,7 +5154,7 @@ export declare const ScopeSchema: z.ZodObject<{
5154
5154
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5155
5155
  textColor?: string | undefined;
5156
5156
  } | undefined;
5157
- closed?: "open" | "closed" | "chord" | undefined;
5157
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5158
5158
  }, {
5159
5159
  type: "step";
5160
5160
  kind: "ellipsePath";
@@ -5175,7 +5175,7 @@ export declare const ScopeSchema: z.ZodObject<{
5175
5175
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5176
5176
  textColor?: string | undefined;
5177
5177
  } | undefined;
5178
- closed?: "open" | "closed" | "chord" | undefined;
5178
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5179
5179
  }>, z.ZodObject<{
5180
5180
  type: z.ZodLiteral<"step">;
5181
5181
  kind: z.ZodLiteral<"rectangle">;
@@ -179,7 +179,8 @@ var emitPathPrimitive = (path, nameStack, round, measureText = require_text_metr
179
179
  const scopeChain = warnHook.scopeChain ?? [];
180
180
  const resolveFill = warnHook.resolveFill ?? ((f) => typeof f === "string" || f === void 0 ? f : void 0);
181
181
  const steps = require_relative.normalizeRelativeTargets(path.children, nameStack, scopeChain);
182
- if (steps.length < 2) {
182
+ const soloSelfContained = steps.length === 1 && steps[0].kind === "rectangle";
183
+ if (steps.length < 2 && !soloSelfContained) {
183
184
  warn("PATH_TOO_SHORT", `Path requires at least 2 steps (got ${steps.length}); the entire path is skipped`, "children");
184
185
  return null;
185
186
  }
@@ -324,9 +325,10 @@ var emitPathPrimitive = (path, nameStack, round, measureText = require_text_metr
324
325
  if (require_anchor.samePoint(p, lastEnd)) return;
325
326
  emitMove(p);
326
327
  };
327
- /** 部分圆/椭圆的闭合模式:'open' 直接返回;缺省 / 误给 'closed' 回退 'chord' */
328
+ /** 部分圆/椭圆的闭合模式:'open' 直接返回;'sector' 连回中心;缺省 / 误给 'closed' 回退 'chord' */
328
329
  const resolvePartialClosed = (closed, idx) => {
329
330
  if (closed === "open") return "open";
331
+ if (closed === "sector") return "sector";
330
332
  if (closed === "closed") warn("PARTIAL_ARC_CLOSED_INVALID", "Partial circle/ellipse (with angles) cannot use closed:'closed'; falling back to 'chord'", `children[${idx}]`);
331
333
  return "chord";
332
334
  };
@@ -491,9 +493,14 @@ var emitPathPrimitive = (path, nameStack, round, measureText = require_text_metr
491
493
  emitEllipseArc(center, r, r, startA, endA);
492
494
  for (const p of require_arc.ellipseArcBoundingPoints(center, r, r, startA, endA)) points.push(p);
493
495
  collectLabel(step, (t) => require_segment.ellipseArcSegmentSample(center, r, r, startA, endA, t));
494
- if (resolvePartialClosed(step.closed, i) === "chord") {
496
+ const closing = resolvePartialClosed(step.closed, i);
497
+ if (closing === "chord") {
495
498
  emitClose();
496
499
  penOverride = require_arc.ellipseArcPoint(center, r, r, startA);
500
+ } else if (closing === "sector") {
501
+ emitLine(center);
502
+ emitClose();
503
+ penOverride = center;
497
504
  } else penOverride = require_arc.ellipseArcPoint(center, r, r, endA);
498
505
  continue;
499
506
  }
@@ -519,9 +526,14 @@ var emitPathPrimitive = (path, nameStack, round, measureText = require_text_metr
519
526
  emitEllipseArc(center, rx, ry, startA, endA);
520
527
  for (const p of require_arc.ellipseArcBoundingPoints(center, rx, ry, startA, endA)) points.push(p);
521
528
  collectLabel(step, (t) => require_segment.ellipseArcSegmentSample(center, rx, ry, startA, endA, t));
522
- if (resolvePartialClosed(step.closed, i) === "chord") {
529
+ const closing = resolvePartialClosed(step.closed, i);
530
+ if (closing === "chord") {
523
531
  emitClose();
524
532
  penOverride = require_arc.ellipseArcPoint(center, rx, ry, startA);
533
+ } else if (closing === "sector") {
534
+ emitLine(center);
535
+ emitClose();
536
+ penOverride = center;
525
537
  } else penOverride = require_arc.ellipseArcPoint(center, rx, ry, endA);
526
538
  continue;
527
539
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAGX,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAIV,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAKtE,OAAO,EAAE,KAAK,eAAe,EAA2D,MAAM,UAAU,CAAC;AA8FzG,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,wEAAwE;IACxE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACnE,CAAC;AA0EF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,cAAa,YAA+B,EAC5C,WAAU,gBAAqB,KAC9B;IAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAAG,IA0tBrE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAGX,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAIV,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAKtE,OAAO,EAAE,KAAK,eAAe,EAA2D,MAAM,UAAU,CAAC;AA8FzG,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,wEAAwE;IACxE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACnE,CAAC;AA0EF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,cAAa,YAA+B,EAC5C,WAAU,gBAAqB,KAC9B;IAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAAG,IAwuBrE,CAAC"}
@@ -1481,7 +1481,7 @@ export declare const PathSchema: z.ZodObject<{
1481
1481
  radius: z.ZodNumber;
1482
1482
  startAngle: z.ZodOptional<z.ZodNumber>;
1483
1483
  endAngle: z.ZodOptional<z.ZodNumber>;
1484
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1484
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1485
1485
  label: z.ZodOptional<z.ZodObject<{
1486
1486
  text: z.ZodString;
1487
1487
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1548,7 +1548,7 @@ export declare const PathSchema: z.ZodObject<{
1548
1548
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1549
1549
  textColor?: string | undefined;
1550
1550
  } | undefined;
1551
- closed?: "open" | "closed" | "chord" | undefined;
1551
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1552
1552
  }, {
1553
1553
  type: "step";
1554
1554
  radius: number;
@@ -1568,7 +1568,7 @@ export declare const PathSchema: z.ZodObject<{
1568
1568
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1569
1569
  textColor?: string | undefined;
1570
1570
  } | undefined;
1571
- closed?: "open" | "closed" | "chord" | undefined;
1571
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1572
1572
  }>, z.ZodObject<{
1573
1573
  type: z.ZodLiteral<"step">;
1574
1574
  kind: z.ZodLiteral<"ellipsePath">;
@@ -1576,7 +1576,7 @@ export declare const PathSchema: z.ZodObject<{
1576
1576
  radiusY: z.ZodNumber;
1577
1577
  startAngle: z.ZodOptional<z.ZodNumber>;
1578
1578
  endAngle: z.ZodOptional<z.ZodNumber>;
1579
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1579
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1580
1580
  label: z.ZodOptional<z.ZodObject<{
1581
1581
  text: z.ZodString;
1582
1582
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1644,7 +1644,7 @@ export declare const PathSchema: z.ZodObject<{
1644
1644
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1645
1645
  textColor?: string | undefined;
1646
1646
  } | undefined;
1647
- closed?: "open" | "closed" | "chord" | undefined;
1647
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1648
1648
  }, {
1649
1649
  type: "step";
1650
1650
  kind: "ellipsePath";
@@ -1665,7 +1665,7 @@ export declare const PathSchema: z.ZodObject<{
1665
1665
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1666
1666
  textColor?: string | undefined;
1667
1667
  } | undefined;
1668
- closed?: "open" | "closed" | "chord" | undefined;
1668
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1669
1669
  }>, z.ZodObject<{
1670
1670
  type: z.ZodLiteral<"step">;
1671
1671
  kind: z.ZodLiteral<"rectangle">;
@@ -2246,7 +2246,7 @@ export declare const PathSchema: z.ZodObject<{
2246
2246
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2247
2247
  textColor?: string | undefined;
2248
2248
  } | undefined;
2249
- closed?: "open" | "closed" | "chord" | undefined;
2249
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2250
2250
  } | {
2251
2251
  type: "step";
2252
2252
  kind: "ellipsePath";
@@ -2267,7 +2267,7 @@ export declare const PathSchema: z.ZodObject<{
2267
2267
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2268
2268
  textColor?: string | undefined;
2269
2269
  } | undefined;
2270
- closed?: "open" | "closed" | "chord" | undefined;
2270
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2271
2271
  } | {
2272
2272
  type: "step";
2273
2273
  to: [number, number] | import('..').PolarPosition | {
@@ -2670,7 +2670,7 @@ export declare const PathSchema: z.ZodObject<{
2670
2670
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2671
2671
  textColor?: string | undefined;
2672
2672
  } | undefined;
2673
- closed?: "open" | "closed" | "chord" | undefined;
2673
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2674
2674
  } | {
2675
2675
  type: "step";
2676
2676
  kind: "ellipsePath";
@@ -2691,7 +2691,7 @@ export declare const PathSchema: z.ZodObject<{
2691
2691
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2692
2692
  textColor?: string | undefined;
2693
2693
  } | undefined;
2694
- closed?: "open" | "closed" | "chord" | undefined;
2694
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2695
2695
  } | {
2696
2696
  type: "step";
2697
2697
  to: [number, number] | import('..').PolarPosition | {
@@ -103,8 +103,9 @@ var CirclePathStepSchema = zod.z.object({
103
103
  closed: zod.z.enum([
104
104
  "closed",
105
105
  "chord",
106
- "open"
107
- ]).optional().describe("Closing mode. 'closed' = full circle (only valid with no angles; the default then). With angles: 'chord' (straight chord between the two arc ends → half circle / segment; default) or 'open' (pure unclosed arc)."),
106
+ "open",
107
+ "sector"
108
+ ]).optional().describe("Closing mode. 'closed' = full circle (only valid with no angles; the default then). With angles: 'chord' (straight chord between the two arc ends; default), 'sector' (connect both arc ends to the center, then close), or 'open' (pure unclosed arc)."),
108
109
  label: StepLabelSchema.optional().describe("Edge label attached to this circle")
109
110
  }).describe("CirclePath action: full circle (no angles, pen returns to center) or partial arc (with angles, closed per chord/open).");
110
111
  var EllipsePathStepSchema = zod.z.object({
@@ -117,8 +118,9 @@ var EllipsePathStepSchema = zod.z.object({
117
118
  closed: zod.z.enum([
118
119
  "closed",
119
120
  "chord",
120
- "open"
121
- ]).optional().describe("Closing mode. 'closed' = full ellipse (only valid with no angles; default then). With angles: 'chord' (chord between arc ends; default) or 'open' (pure unclosed arc)."),
121
+ "open",
122
+ "sector"
123
+ ]).optional().describe("Closing mode. 'closed' = full ellipse (only valid with no angles; default then). With angles: 'chord' (chord between arc ends; default), 'sector' (connect both arc ends to the center, then close), or 'open' (pure unclosed arc)."),
122
124
  label: StepLabelSchema.optional().describe("Edge label attached to this ellipse")
123
125
  }).describe("EllipsePath action: full ellipse (no angles, pen returns to center) or partial elliptical arc (with angles, closed per chord/open).");
124
126
  var RectangleStepSchema = zod.z.object({
@@ -1178,7 +1178,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1178
1178
  radius: z.ZodNumber;
1179
1179
  startAngle: z.ZodOptional<z.ZodNumber>;
1180
1180
  endAngle: z.ZodOptional<z.ZodNumber>;
1181
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1181
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1182
1182
  label: z.ZodOptional<z.ZodObject<{
1183
1183
  text: z.ZodString;
1184
1184
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1245,7 +1245,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1245
1245
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1246
1246
  textColor?: string | undefined;
1247
1247
  } | undefined;
1248
- closed?: "open" | "closed" | "chord" | undefined;
1248
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1249
1249
  }, {
1250
1250
  type: "step";
1251
1251
  radius: number;
@@ -1265,7 +1265,7 @@ export declare const CirclePathStepSchema: z.ZodObject<{
1265
1265
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1266
1266
  textColor?: string | undefined;
1267
1267
  } | undefined;
1268
- closed?: "open" | "closed" | "chord" | undefined;
1268
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1269
1269
  }>;
1270
1270
  export declare const EllipsePathStepSchema: z.ZodObject<{
1271
1271
  type: z.ZodLiteral<"step">;
@@ -1274,7 +1274,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1274
1274
  radiusY: z.ZodNumber;
1275
1275
  startAngle: z.ZodOptional<z.ZodNumber>;
1276
1276
  endAngle: z.ZodOptional<z.ZodNumber>;
1277
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1277
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1278
1278
  label: z.ZodOptional<z.ZodObject<{
1279
1279
  text: z.ZodString;
1280
1280
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -1342,7 +1342,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1342
1342
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1343
1343
  textColor?: string | undefined;
1344
1344
  } | undefined;
1345
- closed?: "open" | "closed" | "chord" | undefined;
1345
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1346
1346
  }, {
1347
1347
  type: "step";
1348
1348
  kind: "ellipsePath";
@@ -1363,7 +1363,7 @@ export declare const EllipsePathStepSchema: z.ZodObject<{
1363
1363
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
1364
1364
  textColor?: string | undefined;
1365
1365
  } | undefined;
1366
- closed?: "open" | "closed" | "chord" | undefined;
1366
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
1367
1367
  }>;
1368
1368
  export declare const RectangleStepSchema: z.ZodObject<{
1369
1369
  type: z.ZodLiteral<"step">;
@@ -2815,7 +2815,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2815
2815
  radius: z.ZodNumber;
2816
2816
  startAngle: z.ZodOptional<z.ZodNumber>;
2817
2817
  endAngle: z.ZodOptional<z.ZodNumber>;
2818
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2818
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2819
2819
  label: z.ZodOptional<z.ZodObject<{
2820
2820
  text: z.ZodString;
2821
2821
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2882,7 +2882,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2882
2882
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2883
2883
  textColor?: string | undefined;
2884
2884
  } | undefined;
2885
- closed?: "open" | "closed" | "chord" | undefined;
2885
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2886
2886
  }, {
2887
2887
  type: "step";
2888
2888
  radius: number;
@@ -2902,7 +2902,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2902
2902
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2903
2903
  textColor?: string | undefined;
2904
2904
  } | undefined;
2905
- closed?: "open" | "closed" | "chord" | undefined;
2905
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2906
2906
  }>, z.ZodObject<{
2907
2907
  type: z.ZodLiteral<"step">;
2908
2908
  kind: z.ZodLiteral<"ellipsePath">;
@@ -2910,7 +2910,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2910
2910
  radiusY: z.ZodNumber;
2911
2911
  startAngle: z.ZodOptional<z.ZodNumber>;
2912
2912
  endAngle: z.ZodOptional<z.ZodNumber>;
2913
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2913
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2914
2914
  label: z.ZodOptional<z.ZodObject<{
2915
2915
  text: z.ZodString;
2916
2916
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2978,7 +2978,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2978
2978
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2979
2979
  textColor?: string | undefined;
2980
2980
  } | undefined;
2981
- closed?: "open" | "closed" | "chord" | undefined;
2981
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2982
2982
  }, {
2983
2983
  type: "step";
2984
2984
  kind: "ellipsePath";
@@ -2999,7 +2999,7 @@ export declare const StepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
2999
2999
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
3000
3000
  textColor?: string | undefined;
3001
3001
  } | undefined;
3002
- closed?: "open" | "closed" | "chord" | undefined;
3002
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
3003
3003
  }>, z.ZodObject<{
3004
3004
  type: z.ZodLiteral<"step">;
3005
3005
  kind: z.ZodLiteral<"rectangle">;
@@ -1966,7 +1966,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
1966
1966
  radius: z.ZodNumber;
1967
1967
  startAngle: z.ZodOptional<z.ZodNumber>;
1968
1968
  endAngle: z.ZodOptional<z.ZodNumber>;
1969
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
1969
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
1970
1970
  label: z.ZodOptional<z.ZodObject<{
1971
1971
  text: z.ZodString;
1972
1972
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2033,7 +2033,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2033
2033
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2034
2034
  textColor?: string | undefined;
2035
2035
  } | undefined;
2036
- closed?: "open" | "closed" | "chord" | undefined;
2036
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2037
2037
  }, {
2038
2038
  type: "step";
2039
2039
  radius: number;
@@ -2053,7 +2053,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2053
2053
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2054
2054
  textColor?: string | undefined;
2055
2055
  } | undefined;
2056
- closed?: "open" | "closed" | "chord" | undefined;
2056
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2057
2057
  }>, z.ZodObject<{
2058
2058
  type: z.ZodLiteral<"step">;
2059
2059
  kind: z.ZodLiteral<"ellipsePath">;
@@ -2061,7 +2061,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2061
2061
  radiusY: z.ZodNumber;
2062
2062
  startAngle: z.ZodOptional<z.ZodNumber>;
2063
2063
  endAngle: z.ZodOptional<z.ZodNumber>;
2064
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
2064
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
2065
2065
  label: z.ZodOptional<z.ZodObject<{
2066
2066
  text: z.ZodString;
2067
2067
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -2129,7 +2129,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2129
2129
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2130
2130
  textColor?: string | undefined;
2131
2131
  } | undefined;
2132
- closed?: "open" | "closed" | "chord" | undefined;
2132
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2133
2133
  }, {
2134
2134
  type: "step";
2135
2135
  kind: "ellipsePath";
@@ -2150,7 +2150,7 @@ export declare const PathDefaultSchema: z.ZodObject<Omit<{
2150
2150
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
2151
2151
  textColor?: string | undefined;
2152
2152
  } | undefined;
2153
- closed?: "open" | "closed" | "chord" | undefined;
2153
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
2154
2154
  }>, z.ZodObject<{
2155
2155
  type: z.ZodLiteral<"step">;
2156
2156
  kind: z.ZodLiteral<"rectangle">;
@@ -4991,7 +4991,7 @@ export declare const ScopeSchema: z.ZodObject<{
4991
4991
  radius: z.ZodNumber;
4992
4992
  startAngle: z.ZodOptional<z.ZodNumber>;
4993
4993
  endAngle: z.ZodOptional<z.ZodNumber>;
4994
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
4994
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
4995
4995
  label: z.ZodOptional<z.ZodObject<{
4996
4996
  text: z.ZodString;
4997
4997
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -5058,7 +5058,7 @@ export declare const ScopeSchema: z.ZodObject<{
5058
5058
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5059
5059
  textColor?: string | undefined;
5060
5060
  } | undefined;
5061
- closed?: "open" | "closed" | "chord" | undefined;
5061
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5062
5062
  }, {
5063
5063
  type: "step";
5064
5064
  radius: number;
@@ -5078,7 +5078,7 @@ export declare const ScopeSchema: z.ZodObject<{
5078
5078
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5079
5079
  textColor?: string | undefined;
5080
5080
  } | undefined;
5081
- closed?: "open" | "closed" | "chord" | undefined;
5081
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5082
5082
  }>, z.ZodObject<{
5083
5083
  type: z.ZodLiteral<"step">;
5084
5084
  kind: z.ZodLiteral<"ellipsePath">;
@@ -5086,7 +5086,7 @@ export declare const ScopeSchema: z.ZodObject<{
5086
5086
  radiusY: z.ZodNumber;
5087
5087
  startAngle: z.ZodOptional<z.ZodNumber>;
5088
5088
  endAngle: z.ZodOptional<z.ZodNumber>;
5089
- closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open"]>>;
5089
+ closed: z.ZodOptional<z.ZodEnum<["closed", "chord", "open", "sector"]>>;
5090
5090
  label: z.ZodOptional<z.ZodObject<{
5091
5091
  text: z.ZodString;
5092
5092
  position: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["at-start", "very-near-start", "near-start", "midway", "near-end", "very-near-end", "at-end"]>, z.ZodNumber]>>;
@@ -5154,7 +5154,7 @@ export declare const ScopeSchema: z.ZodObject<{
5154
5154
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5155
5155
  textColor?: string | undefined;
5156
5156
  } | undefined;
5157
- closed?: "open" | "closed" | "chord" | undefined;
5157
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5158
5158
  }, {
5159
5159
  type: "step";
5160
5160
  kind: "ellipsePath";
@@ -5175,7 +5175,7 @@ export declare const ScopeSchema: z.ZodObject<{
5175
5175
  position?: number | "at-start" | "very-near-start" | "near-start" | "midway" | "near-end" | "very-near-end" | "at-end" | undefined;
5176
5176
  textColor?: string | undefined;
5177
5177
  } | undefined;
5178
- closed?: "open" | "closed" | "chord" | undefined;
5178
+ closed?: "open" | "closed" | "chord" | "sector" | undefined;
5179
5179
  }>, z.ZodObject<{
5180
5180
  type: z.ZodLiteral<"step">;
5181
5181
  kind: z.ZodLiteral<"rectangle">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retikz/core",
3
- "version": "0.2.0-beta.1",
3
+ "version": "0.2.0-rc.1",
4
4
  "description": "retikz v0.1 core: framework-agnostic IR, scene compiler, and pure parsers.",
5
5
  "type": "module",
6
6
  "author": "Pionpill",