@cardenelabs/cdl 0.26.0 → 0.28.0

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/dist/index.d.cts CHANGED
@@ -2308,12 +2308,16 @@ declare const DETOUR_GAP = 94;
2308
2308
  */
2309
2309
  declare function rendersRows(kind: string | undefined): boolean;
2310
2310
  /**
2311
- * `rows` を持つ node に必要な高さ (SSOT)。
2311
+ * 行頭の印を **持たない** node に必要な高さ (SSOT)。
2312
2312
  *
2313
2313
  * 最終行の baseline から 1 行送りぶんとレイアウト余白を確保する。 行を描かない種別は `null`。
2314
2314
  *
2315
- * `layout/nodes.ts` の `autoStorageHeight` と、 下流 (dragon の sequence header 等) が
2316
- * 同じ値を使う。 各所で式を写すと、 描画を変えた時に一部だけ古くなる。
2315
+ * **印を持つ箱はこの式で決まらない**。 そちらは縞の帯の下端を起点にする
2316
+ * (`requiredMarkedRowsHeight`) = 帯を敷く箱では「行が終わる位置」 が帯の下端になるため、
2317
+ * baseline から数えると帯の下に 1 行ぶんに近い余白が残る。
2318
+ *
2319
+ * 使うのは `layout/nodes.ts` の `autoStorageHeight` の印なし経路。 各所で式を写すと、
2320
+ * 描画を変えた時に一部だけ古くなるので、下流も同じ形が要る時はここを引く。
2317
2321
  *
2318
2322
  * これは「そう置くとよい高さ」 で、 「これを下回ると破綻する高さ」 ではない。 後者は
2319
2323
  * `rowBaselineY` + `rowGlyphDepth` で、 軸 16 はそちらを見る。
package/dist/index.d.ts CHANGED
@@ -2308,12 +2308,16 @@ declare const DETOUR_GAP = 94;
2308
2308
  */
2309
2309
  declare function rendersRows(kind: string | undefined): boolean;
2310
2310
  /**
2311
- * `rows` を持つ node に必要な高さ (SSOT)。
2311
+ * 行頭の印を **持たない** node に必要な高さ (SSOT)。
2312
2312
  *
2313
2313
  * 最終行の baseline から 1 行送りぶんとレイアウト余白を確保する。 行を描かない種別は `null`。
2314
2314
  *
2315
- * `layout/nodes.ts` の `autoStorageHeight` と、 下流 (dragon の sequence header 等) が
2316
- * 同じ値を使う。 各所で式を写すと、 描画を変えた時に一部だけ古くなる。
2315
+ * **印を持つ箱はこの式で決まらない**。 そちらは縞の帯の下端を起点にする
2316
+ * (`requiredMarkedRowsHeight`) = 帯を敷く箱では「行が終わる位置」 が帯の下端になるため、
2317
+ * baseline から数えると帯の下に 1 行ぶんに近い余白が残る。
2318
+ *
2319
+ * 使うのは `layout/nodes.ts` の `autoStorageHeight` の印なし経路。 各所で式を写すと、
2320
+ * 描画を変えた時に一部だけ古くなるので、下流も同じ形が要る時はここを引く。
2317
2321
  *
2318
2322
  * これは「そう置くとよい高さ」 で、 「これを下回ると破綻する高さ」 ではない。 後者は
2319
2323
  * `rowBaselineY` + `rowGlyphDepth` で、 軸 16 はそちらを見る。
package/dist/index.js CHANGED
@@ -11836,6 +11836,7 @@ function rowGlyphDepth(kind) {
11836
11836
  return Math.ceil(font * ROW_GLYPH_DEPTH_RATIO);
11837
11837
  }
11838
11838
  var ROW_LAYOUT_BOTTOM_PAD = 20;
11839
+ var ROW_STRIPE_BOTTOM_PAD = 24;
11839
11840
  function requiredRowsHeight(kind, rowCount) {
11840
11841
  if (rowCount <= 0) return null;
11841
11842
  const lastBaseline = rowBaselineY(kind, rowCount - 1);
@@ -11843,6 +11844,12 @@ function requiredRowsHeight(kind, rowCount) {
11843
11844
  const pitch = kind === "storage" ? ROW_PITCH_STORAGE : ROW_PITCH_GENERIC;
11844
11845
  return lastBaseline + pitch + ROW_LAYOUT_BOTTOM_PAD;
11845
11846
  }
11847
+ function requiredMarkedRowsHeight(kind, rowCount) {
11848
+ if (rowCount <= 0) return null;
11849
+ const lastBand = rowStripeBand(kind, rowCount - 1, 0);
11850
+ if (lastBand === null) return null;
11851
+ return lastBand.y + lastBand.h + ROW_STRIPE_BOTTOM_PAD;
11852
+ }
11846
11853
  function isRenderedNode(n) {
11847
11854
  if (n.visibleIf === void 0 || n.visibleIf === "") return true;
11848
11855
  if (n.visibleIf.includes("{")) return true;
@@ -19965,7 +19972,10 @@ function autoStorageHeight(n, defaultH) {
19965
19972
  const \u7E70\u308A\u4E0A\u3052 = n.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("storage");
19966
19973
  if (!n.rows || n.rows.length === 0) return 115 + \u547C\u3073\u540D\u306E\u5206 - \u7E70\u308A\u4E0A\u3052;
19967
19974
  const \u5FC5\u8981 = requiredRowsHeight("storage", n.rows.length) ?? defaultH;
19968
- if (\u5370\u3042\u308A) return \u5FC5\u8981 + \u547C\u3073\u540D\u306E\u5206;
19975
+ if (\u5370\u3042\u308A) {
19976
+ const \u5E2F\u304B\u3089\u5FC5\u8981 = requiredMarkedRowsHeight("storage", n.rows.length) ?? defaultH;
19977
+ return \u5E2F\u304B\u3089\u5FC5\u8981 + \u547C\u3073\u540D\u306E\u5206;
19978
+ }
19969
19979
  return Math.max(defaultH, \u5FC5\u8981);
19970
19980
  }
19971
19981
  function autoRowsWidth(n, defaultW) {
@@ -30820,6 +30830,14 @@ var CLASS_RELATION_LOOK = {
30820
30830
  associates: { head: "open", fill: "solid", tailHead: "none", tailFill: "solid", style: "solid" },
30821
30831
  uses: { head: "open", fill: "solid", tailHead: "none", tailFill: "solid", style: "dashed" }
30822
30832
  };
30833
+ var CLASS_RELATION_TONE = {
30834
+ extends: "accent",
30835
+ implements: "accent",
30836
+ aggregates: "teal",
30837
+ composes: "teal",
30838
+ associates: "success",
30839
+ uses: "success"
30840
+ };
30823
30841
  Object.fromEntries(
30824
30842
  Object.entries(CLASS_RELATION_LOOK).map(([k, v]) => [k, v.head])
30825
30843
  );
@@ -30832,7 +30850,7 @@ function stripAccess(row) {
30832
30850
  }
30833
30851
  function classDiagram(preset) {
30834
30852
  const classW = resolveStorageBoxW(preset.classWidth, "classDiagram", "classWidth");
30835
- const tone = preset.defaultTone ?? "info";
30853
+ const \u56F3\u306E\u65E2\u5B9A = preset.defaultTone;
30836
30854
  const \u7E1E\u3092\u6577\u304F = preset.rowStripe ?? true;
30837
30855
  const b = diagram(preset.id, { topic: preset.topic, palette: preset.palette });
30838
30856
  const classes = [];
@@ -30896,7 +30914,7 @@ function classDiagram(preset) {
30896
30914
  id: edgeId,
30897
30915
  label: r.label ?? r.type,
30898
30916
  ...r.cardinality ? { sub: r.cardinality } : {},
30899
- tone: r.tone ?? tone,
30917
+ tone: r.tone ?? \u56F3\u306E\u65E2\u5B9A ?? CLASS_RELATION_TONE[r.type],
30900
30918
  // 関係の種類から線と端の形を決める (cdl#574 / #578)。 書いた値が勝つ
30901
30919
  style: r.style ?? \u898B\u305F\u76EE.style,
30902
30920
  head: r.head ?? \u898B\u305F\u76EE.head,