@cardenelabs/cdl 0.73.0 → 0.74.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/react.cjs CHANGED
@@ -2872,6 +2872,66 @@ function textWidth(s, size, \u5B57\u9001\u308A = 0) {
2872
2872
  }
2873
2873
  return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
2874
2874
  }
2875
+
2876
+ // src/kinds/row-align.ts
2877
+ var GENERIC_ROW_LEFT_SIZE_PX = 18;
2878
+ var GENERIC_ROW_RIGHT_SIZE_PX = 21;
2879
+ var MONO_ADVANCE_RATIO = 0.6;
2880
+ var STORAGE_CHAR_ADVANCE_PX = 26 * MONO_ADVANCE_RATIO;
2881
+ var ROW_PAD_X_PX = 26;
2882
+ var ROW_COL_GAP_PX = 16;
2883
+ var STORAGE_COL_GAP_PX = 32;
2884
+ var ROW_RIGHT_PAD_PX = 26;
2885
+ var DELIMITERS = [" -> ", " \u2192 ", " = ", ": ", ":"];
2886
+ function splitRow(row) {
2887
+ for (const d of DELIMITERS) {
2888
+ const idx = row.indexOf(d);
2889
+ if (idx > 0) {
2890
+ return {
2891
+ left: row.slice(0, idx).trim(),
2892
+ right: row.slice(idx + d.length).trim(),
2893
+ split: true
2894
+ };
2895
+ }
2896
+ }
2897
+ return { left: row.trim(), right: "", split: false };
2898
+ }
2899
+ function rowColumnWidth(text, size, mono) {
2900
+ return mono ? displayWidth(text) * size * MONO_ADVANCE_RATIO : textWidth(text, size);
2901
+ }
2902
+ function displayWidth(text) {
2903
+ let w = 0;
2904
+ for (const ch of text) {
2905
+ const code = ch.codePointAt(0) ?? 0;
2906
+ w += code >= 32 && code <= 126 ? 1 : 2;
2907
+ }
2908
+ return w;
2909
+ }
2910
+ function \u6841\u3067\u5272\u308B(text, \u6841) {
2911
+ let w = 0;
2912
+ let \u53D6\u3063\u305F = "";
2913
+ for (const ch of text) {
2914
+ const code = ch.codePointAt(0) ?? 0;
2915
+ const \u5B57\u306E\u6841 = code >= 32 && code <= 126 ? 1 : 2;
2916
+ if (w + \u5B57\u306E\u6841 > \u6841) break;
2917
+ w += \u5B57\u306E\u6841;
2918
+ \u53D6\u3063\u305F += ch;
2919
+ }
2920
+ return [\u53D6\u3063\u305F, text.slice(\u53D6\u3063\u305F.length)];
2921
+ }
2922
+ function \u6841\u3067\u7701\u304F(text, \u4E0A\u9650) {
2923
+ if (displayWidth(text) <= \u4E0A\u9650) return text;
2924
+ return `${\u6841\u3067\u5272\u308B(text, \u4E0A\u9650 - 1)[0]}\u2026`;
2925
+ }
2926
+ function requiredRowsWidth(rows, kind) {
2927
+ if (!rows || rows.length === 0) return 0;
2928
+ const splits = rows.map(splitRow);
2929
+ const \u4E00\u756A\u5E83\u3044 = (\u53D6\u308B) => splits.reduce((m, s) => Math.max(m, \u53D6\u308B(s)), 0);
2930
+ const storage = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, 26, true)) + STORAGE_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, 26, true)) + ROW_RIGHT_PAD_PX;
2931
+ const generic = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, GENERIC_ROW_LEFT_SIZE_PX, false)) + ROW_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, GENERIC_ROW_RIGHT_SIZE_PX, true)) + ROW_RIGHT_PAD_PX;
2932
+ if (kind === void 0) return Math.ceil(Math.max(storage, generic));
2933
+ return Math.ceil(kind === "storage" ? storage : generic);
2934
+ }
2875
2935
  var TITLE_MAX = 18;
2876
2936
  var TITLE_MIN = 9;
2877
2937
  var TITLE_RATIO = 0.17;
@@ -3052,7 +3112,38 @@ function fitArt(region, extent, art) {
3052
3112
  const dx = region.cx - s * \u7D75cx;
3053
3113
  const dy = region.cy - s * \u7D75cy;
3054
3114
  if (s >= 1 && dx === 0 && dy === 0) return \u7D44\u3080(1);
3055
- return /* @__PURE__ */ jsxRuntime.jsx("g", { transform: `translate(${dx} ${dy}) scale(${s})`, children: \u7D44\u3080(s) });
3115
+ return (
3116
+ /*
3117
+ * 包みに印を付ける (#886)。 **`scale(` を持つ変換は他にもある** = `event` は目立たせる
3118
+ * ための脈動を `scale(0.78)` から `scale(1)` で描き、絵を箱に収める縮小ではない。
3119
+ * 祖先の変換を正規表現で見る形だと、その脈動まで「絵の縮小」 として数える。
3120
+ */
3121
+ /* @__PURE__ */ jsxRuntime.jsx("g", { "data-cdl-art-fit": "1", transform: `translate(${dx} ${dy}) scale(${s})`, children: \u7D44\u3080(s) })
3122
+ );
3123
+ }
3124
+ var \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
3125
+ function \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size, letterSpacing = 0) {
3126
+ return Math.max(
3127
+ displayWidth(text) * size * MONO_ADVANCE_RATIO,
3128
+ textWidth(text, size, letterSpacing)
3129
+ );
3130
+ }
3131
+ function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u5B57\u3089) {
3132
+ const \u623B\u3057 = Number.isFinite(\u500D\u7387) && \u500D\u7387 > 0 ? 1 / \u500D\u7387 : 1;
3133
+ let \u4E0A\u9650 = Number.POSITIVE_INFINITY;
3134
+ for (const \u5B572 of \u5B57\u3089) {
3135
+ if (!(Number.isFinite(\u5B572.size) && \u5B572.size > 0)) continue;
3136
+ const { \u5E45, \u9AD8\u3055 } = \u5B572.\u5E2F;
3137
+ if (Number.isFinite(\u9AD8\u3055) && \u9AD8\u3055 > 0) {
3138
+ \u4E0A\u9650 = Math.min(\u4E0A\u9650, \u9AD8\u3055 * \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5B572.size);
3139
+ }
3140
+ const \u5B9F\u5E45 = \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(\u5B572.text, \u5B572.size, \u5B572.letterSpacing ?? 0);
3141
+ if (Number.isFinite(\u5E45) && \u5E45 > 0 && \u5B9F\u5E45 > 0) {
3142
+ \u4E0A\u9650 = Math.min(\u4E0A\u9650, \u5E45 / \u5B9F\u5E45);
3143
+ }
3144
+ }
3145
+ if (!Number.isFinite(\u4E0A\u9650)) return 1;
3146
+ return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
3056
3147
  }
3057
3148
 
3058
3149
  // src/kinds/compact-title.ts
@@ -9607,66 +9698,6 @@ function recomputeContainedLanes(lanes, nodes) {
9607
9698
  });
9608
9699
  }
9609
9700
 
9610
- // src/kinds/row-align.ts
9611
- var GENERIC_ROW_LEFT_SIZE_PX = 18;
9612
- var GENERIC_ROW_RIGHT_SIZE_PX = 21;
9613
- var MONO_ADVANCE_RATIO = 0.6;
9614
- var STORAGE_CHAR_ADVANCE_PX = 26 * MONO_ADVANCE_RATIO;
9615
- var ROW_PAD_X_PX = 26;
9616
- var ROW_COL_GAP_PX = 16;
9617
- var STORAGE_COL_GAP_PX = 32;
9618
- var ROW_RIGHT_PAD_PX = 26;
9619
- var DELIMITERS = [" -> ", " \u2192 ", " = ", ": ", ":"];
9620
- function splitRow(row) {
9621
- for (const d of DELIMITERS) {
9622
- const idx = row.indexOf(d);
9623
- if (idx > 0) {
9624
- return {
9625
- left: row.slice(0, idx).trim(),
9626
- right: row.slice(idx + d.length).trim(),
9627
- split: true
9628
- };
9629
- }
9630
- }
9631
- return { left: row.trim(), right: "", split: false };
9632
- }
9633
- function rowColumnWidth(text, size, mono) {
9634
- return mono ? displayWidth(text) * size * MONO_ADVANCE_RATIO : textWidth(text, size);
9635
- }
9636
- function displayWidth(text) {
9637
- let w = 0;
9638
- for (const ch of text) {
9639
- const code = ch.codePointAt(0) ?? 0;
9640
- w += code >= 32 && code <= 126 ? 1 : 2;
9641
- }
9642
- return w;
9643
- }
9644
- function \u6841\u3067\u5272\u308B(text, \u6841) {
9645
- let w = 0;
9646
- let \u53D6\u3063\u305F = "";
9647
- for (const ch of text) {
9648
- const code = ch.codePointAt(0) ?? 0;
9649
- const \u5B57\u306E\u6841 = code >= 32 && code <= 126 ? 1 : 2;
9650
- if (w + \u5B57\u306E\u6841 > \u6841) break;
9651
- w += \u5B57\u306E\u6841;
9652
- \u53D6\u3063\u305F += ch;
9653
- }
9654
- return [\u53D6\u3063\u305F, text.slice(\u53D6\u3063\u305F.length)];
9655
- }
9656
- function \u6841\u3067\u7701\u304F(text, \u4E0A\u9650) {
9657
- if (displayWidth(text) <= \u4E0A\u9650) return text;
9658
- return `${\u6841\u3067\u5272\u308B(text, \u4E0A\u9650 - 1)[0]}\u2026`;
9659
- }
9660
- function requiredRowsWidth(rows, kind) {
9661
- if (!rows || rows.length === 0) return 0;
9662
- const splits = rows.map(splitRow);
9663
- const \u4E00\u756A\u5E83\u3044 = (\u53D6\u308B) => splits.reduce((m, s) => Math.max(m, \u53D6\u308B(s)), 0);
9664
- const storage = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, 26, true)) + STORAGE_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, 26, true)) + ROW_RIGHT_PAD_PX;
9665
- const generic = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, GENERIC_ROW_LEFT_SIZE_PX, false)) + ROW_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, GENERIC_ROW_RIGHT_SIZE_PX, true)) + ROW_RIGHT_PAD_PX;
9666
- if (kind === void 0) return Math.ceil(Math.max(storage, generic));
9667
- return Math.ceil(kind === "storage" ? storage : generic);
9668
- }
9669
-
9670
9701
  // src/layout/head-label.ts
9671
9702
  var \u7AEF\u306E\u5B57\u3092\u623B\u3059\u8DDD\u96E2 = 22;
9672
9703
  var \u7AEF\u306E\u5B57\u3068\u7DDA\u306E\u9699\u9593 = 8;
@@ -17311,15 +17342,6 @@ var \u540D\u306E\u5B57 = 10.5;
17311
17342
  var \u5024\u306E\u5B57 = 11;
17312
17343
  var \u884C\u306E\u9593\u9694 = 22;
17313
17344
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
17314
- var \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
17315
- function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(k) {
17316
- const \u623B\u3057 = Number.isFinite(k) && k > 0 ? 1 / k : 1;
17317
- const \u4E0A\u9650 = Math.min(
17318
- \u884C\u306E\u9593\u9694 * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5024\u306E\u5B57,
17319
- \u898B\u51FA\u3057\u306E\u5E2F * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u898B\u51FA\u3057\u306E\u5B57
17320
- );
17321
- return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
17322
- }
17323
17345
  var BLOCK_SHADOW = 6;
17324
17346
  var NFT_W = 220;
17325
17347
  var NFT_H = 240;
@@ -17466,7 +17488,7 @@ function ShapeSmartContractNode({ node, active, lang }) {
17466
17488
  bottomLabel2(node, r.cx, r.label)
17467
17489
  ] });
17468
17490
  }
17469
- var \u5B57\u306E\u5E45 = (text, size) => Math.max(displayWidth(text) * size * MONO_ADVANCE_RATIO, textWidth(text, size));
17491
+ var \u5B57\u306E\u5E45 = (text, size) => \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size);
17470
17492
  var BLOCK_DEFAULT_FIELDS = [
17471
17493
  { key: "hash", label: "blockchainBlock.hash", value: { text: "0xaf31c9d2..." } },
17472
17494
  { key: "prev", label: "blockchainBlock.prev", value: { text: "0x7b3f92c1..." } },
@@ -17495,8 +17517,19 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
17495
17517
  };
17496
17518
  });
17497
17519
  const \u898B\u51FA\u3057\u306E\u5E45 = bw - 14 - 30;
17520
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17521
+ { text: \u898B\u51FA\u3057, size: \u898B\u51FA\u3057\u306E\u5B57, \u5E2F: { \u5E45: \u898B\u51FA\u3057\u306E\u5E45, \u9AD8\u3055: \u898B\u51FA\u3057\u306E\u5E2F } },
17522
+ ...fields.flatMap((f) => [
17523
+ { text: f.label, size: \u540D\u306E\u5B57, \u5E2F: { \u5E45: bw - 28, \u9AD8\u3055: \u884C\u306E\u9593\u9694 } },
17524
+ {
17525
+ text: f.value,
17526
+ size: \u5024\u306E\u5B57,
17527
+ \u5E2F: { \u5E45: bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5B57) - 8, \u9AD8\u3055: \u884C\u306E\u9593\u9694 }
17528
+ }
17529
+ ])
17530
+ ];
17498
17531
  const art = (\u500D\u7387) => {
17499
- const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387);
17532
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17500
17533
  const \u984C\u306E\u5927\u304D\u3055 = \u898B\u51FA\u3057\u306E\u5B57 * \u500D;
17501
17534
  const \u540D\u306E\u5927\u304D\u3055 = \u540D\u306E\u5B57 * \u500D;
17502
17535
  const \u5024\u306E\u5927\u304D\u3055 = \u5024\u306E\u5B57 * \u500D;
@@ -17504,11 +17537,11 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
17504
17537
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 6, y: y + 6, width: bw, height: bh, rx: 8, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
17505
17538
  /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 8, ...frame }),
17506
17539
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M ${x} ${y + 32} L ${x} ${y + 8} Q ${x} ${y}, ${x + 8} ${y} L ${x + bw - 8} ${y} Q ${x + bw} ${y}, ${x + bw} ${y + 8} L ${x + bw} ${y + 32} Z`, fill: "var(--cdl-tone-accent, #2d6a8f)", fillOpacity: 0.9, stroke: "none" }),
17507
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "blockchain-block-title", x: x + 14, y: y + 22, fontSize: \u984C\u306E\u5927\u304D\u3055, fontWeight: 700, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#ffffff", children: \u5E45\u3067\u5207\u308B(\u898B\u51FA\u3057, \u984C\u306E\u5927\u304D\u3055, \u898B\u51FA\u3057\u306E\u5E45, \u5B57\u306E\u5E45) }),
17540
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "blockchain-block-title", "data-cdl-counter-scaled": "1", x: x + 14, y: y + 22, fontSize: \u984C\u306E\u5927\u304D\u3055, fontWeight: 700, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#ffffff", children: \u5E45\u3067\u5207\u308B(\u898B\u51FA\u3057, \u984C\u306E\u5927\u304D\u3055, \u898B\u51FA\u3057\u306E\u5E45, \u5B57\u306E\u5E45) }),
17508
17541
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x + bw - 16, cy: y + 16, r: 5.5, fill: "#7cd88f", stroke: "#ffffff", strokeWidth: 1.5 }),
17509
17542
  fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17510
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u540D\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-text-dim, #5a6270)", children: f.label }),
17511
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": `blockchain-block-${f.key}`, x: x + bw - 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u5024\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, \u5024\u306E\u5927\u304D\u3055, bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5927\u304D\u3055) - 8, \u5B57\u306E\u5E45) }),
17543
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: x + 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u540D\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-text-dim, #5a6270)", children: f.label }),
17544
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": `blockchain-block-${f.key}`, "data-cdl-counter-scaled": "1", x: x + bw - 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u5024\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, \u5024\u306E\u5927\u304D\u3055, bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5927\u304D\u3055) - 8, \u5B57\u306E\u5E45) }),
17512
17545
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: x + 14, y1: y + 60 + i * \u884C\u306E\u9593\u9694, x2: x + bw - 14, y2: y + 60 + i * \u884C\u306E\u9593\u9694, stroke: "var(--cdl-divider, #d4d4d8)", strokeWidth: 0.5, opacity: 0.5 })
17513
17546
  ] }, i)),
17514
17547
  /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${cx - 32}, ${y + bh - 26})`, children: [