@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/CHANGELOG.md +39 -1
- package/dist/index.cjs +48 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +48 -15
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +108 -75
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +108 -75
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/shape-blockchain.tsx +35 -30
- package/src/kinds/shape-region.tsx +93 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,43 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.74.0] - 2026-09-26
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **縮めた絵の字の打ち消しに共通の上限の仕組みを置いた** (#886 / #889)
|
|
13
|
+
|
|
14
|
+
0.73.0 で連鎖の箱 (`shape-blockchain-block`) に入れた打ち消しを、絵が使い回せる形へ出した。
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
打ち消しの倍率(倍率, [{ text, size, letterSpacing, 帯: { 幅, 高さ } }])
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
絵が「その字が座る場所の広さ」 を渡し、上限を **幅と高さの両方から出して小さい方を採る**。
|
|
21
|
+
0.73.0 は高さ 2 本 (行の間隔 22 と見出しの帯 32) からしか出しておらず、中央揃えの看板の
|
|
22
|
+
ように幅が字数に比例して伸びる字を横へ出す形だった。
|
|
23
|
+
|
|
24
|
+
| 軸 | 8 割で止めるか | 理由 |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| 高さ | 止める | 帯の高さは次の行までの距離で、そのまま使うと上下が触れる |
|
|
27
|
+
| 幅 | 止めない | 絵が余白を引いた内側の幅を渡すので、8 割にすると字を切る予算より狭い所で止まる |
|
|
28
|
+
|
|
29
|
+
帯に収まっていない字がある絵では 1 を返す (打ち消すと確実に外へ出る)。
|
|
30
|
+
実測 = 判子の中の `印` は半径 8 の丸に収まる四角の 1 辺 11.3 を指定 10 の 1 字でほぼ
|
|
31
|
+
使い切っており、幅から出る上限が 1 を下回る。
|
|
32
|
+
|
|
33
|
+
連鎖の箱をこの仕組みに乗せ替えた。 幅の上限が加わったぶん、強く縮めた箱での打ち消しが
|
|
34
|
+
1.6 倍から 1.43 倍に下がる。 代わりに 240x220 と 400x400 の箱で 3 行目の値が切れなくなった
|
|
35
|
+
(小さい箱では切れたままで、そちらは #885 が持つ)。
|
|
36
|
+
|
|
37
|
+
**包みに印を付けた** (`data-cdl-art-fit`)。 `scale(` を持つ変換は絵の縮小だけではない =
|
|
38
|
+
`event` は目立たせるための脈動を `scale(0.78)` から `scale(1)` で描いており、
|
|
39
|
+
変換を正規表現で探す形だとその脈動まで絵の縮小として数える (実測で 16 件目に出た)。
|
|
40
|
+
|
|
41
|
+
打ち消した字にも印を付けた (`data-cdl-counter-scaled`)。
|
|
42
|
+
実物を描いて打ち消しが行き渡っていない種別を数える検査がこの印を読む。
|
|
43
|
+
残りの 14 種別を乗せるのは #887。
|
|
44
|
+
|
|
8
45
|
## [0.73.0] - 2026-09-26
|
|
9
46
|
|
|
10
47
|
### Fixed
|
|
@@ -3052,7 +3089,8 @@ Initial OSS release.
|
|
|
3052
3089
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
3053
3090
|
行き止まりになる。
|
|
3054
3091
|
|
|
3055
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
3092
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.74.0...HEAD
|
|
3093
|
+
[0.74.0]: https://github.com/cardene777/cdl/compare/v0.73.0...v0.74.0
|
|
3056
3094
|
[0.73.0]: https://github.com/cardene777/cdl/compare/v0.72.0...v0.73.0
|
|
3057
3095
|
[0.72.0]: https://github.com/cardene777/cdl/compare/v0.71.0...v0.72.0
|
|
3058
3096
|
[0.71.0]: https://github.com/cardene777/cdl/compare/v0.70.0...v0.71.0
|
package/dist/index.cjs
CHANGED
|
@@ -14610,7 +14610,38 @@ function fitArt(region, extent, art) {
|
|
|
14610
14610
|
const dx = region.cx - s * \u7D75cx;
|
|
14611
14611
|
const dy = region.cy - s * \u7D75cy;
|
|
14612
14612
|
if (s >= 1 && dx === 0 && dy === 0) return \u7D44\u3080(1);
|
|
14613
|
-
return
|
|
14613
|
+
return (
|
|
14614
|
+
/*
|
|
14615
|
+
* 包みに印を付ける (#886)。 **`scale(` を持つ変換は他にもある** = `event` は目立たせる
|
|
14616
|
+
* ための脈動を `scale(0.78)` から `scale(1)` で描き、絵を箱に収める縮小ではない。
|
|
14617
|
+
* 祖先の変換を正規表現で見る形だと、その脈動まで「絵の縮小」 として数える。
|
|
14618
|
+
*/
|
|
14619
|
+
/* @__PURE__ */ jsxRuntime.jsx("g", { "data-cdl-art-fit": "1", transform: `translate(${dx} ${dy}) scale(${s})`, children: \u7D44\u3080(s) })
|
|
14620
|
+
);
|
|
14621
|
+
}
|
|
14622
|
+
var \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
|
|
14623
|
+
function \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size, letterSpacing = 0) {
|
|
14624
|
+
return Math.max(
|
|
14625
|
+
displayWidth(text) * size * MONO_ADVANCE_RATIO,
|
|
14626
|
+
textWidth(text, size, letterSpacing)
|
|
14627
|
+
);
|
|
14628
|
+
}
|
|
14629
|
+
function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u5B57\u3089) {
|
|
14630
|
+
const \u623B\u3057 = Number.isFinite(\u500D\u7387) && \u500D\u7387 > 0 ? 1 / \u500D\u7387 : 1;
|
|
14631
|
+
let \u4E0A\u9650 = Number.POSITIVE_INFINITY;
|
|
14632
|
+
for (const \u5B572 of \u5B57\u3089) {
|
|
14633
|
+
if (!(Number.isFinite(\u5B572.size) && \u5B572.size > 0)) continue;
|
|
14634
|
+
const { \u5E45, \u9AD8\u3055 } = \u5B572.\u5E2F;
|
|
14635
|
+
if (Number.isFinite(\u9AD8\u3055) && \u9AD8\u3055 > 0) {
|
|
14636
|
+
\u4E0A\u9650 = Math.min(\u4E0A\u9650, \u9AD8\u3055 * \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5B572.size);
|
|
14637
|
+
}
|
|
14638
|
+
const \u5B9F\u5E45 = \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(\u5B572.text, \u5B572.size, \u5B572.letterSpacing ?? 0);
|
|
14639
|
+
if (Number.isFinite(\u5E45) && \u5E45 > 0 && \u5B9F\u5E45 > 0) {
|
|
14640
|
+
\u4E0A\u9650 = Math.min(\u4E0A\u9650, \u5E45 / \u5B9F\u5E45);
|
|
14641
|
+
}
|
|
14642
|
+
}
|
|
14643
|
+
if (!Number.isFinite(\u4E0A\u9650)) return 1;
|
|
14644
|
+
return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
|
|
14614
14645
|
}
|
|
14615
14646
|
|
|
14616
14647
|
// src/render/tone.ts
|
|
@@ -29849,15 +29880,6 @@ var \u540D\u306E\u5B57 = 10.5;
|
|
|
29849
29880
|
var \u5024\u306E\u5B57 = 11;
|
|
29850
29881
|
var \u884C\u306E\u9593\u9694 = 22;
|
|
29851
29882
|
var \u898B\u51FA\u3057\u306E\u5E2F = 32;
|
|
29852
|
-
var \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
|
|
29853
|
-
function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(k) {
|
|
29854
|
-
const \u623B\u3057 = Number.isFinite(k) && k > 0 ? 1 / k : 1;
|
|
29855
|
-
const \u4E0A\u9650 = Math.min(
|
|
29856
|
-
\u884C\u306E\u9593\u9694 * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5024\u306E\u5B57,
|
|
29857
|
-
\u898B\u51FA\u3057\u306E\u5E2F * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u898B\u51FA\u3057\u306E\u5B57
|
|
29858
|
-
);
|
|
29859
|
-
return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
|
|
29860
|
-
}
|
|
29861
29883
|
var BLOCK_SHADOW = 6;
|
|
29862
29884
|
var NFT_W = 220;
|
|
29863
29885
|
var NFT_H = 240;
|
|
@@ -30004,7 +30026,7 @@ function ShapeSmartContractNode({ node, active, lang }) {
|
|
|
30004
30026
|
bottomLabel2(node, r.cx, r.label)
|
|
30005
30027
|
] });
|
|
30006
30028
|
}
|
|
30007
|
-
var \u5B57\u306E\u5E45 = (text, size) =>
|
|
30029
|
+
var \u5B57\u306E\u5E45 = (text, size) => \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size);
|
|
30008
30030
|
var BLOCK_DEFAULT_FIELDS = [
|
|
30009
30031
|
{ key: "hash", label: "blockchainBlock.hash", value: { text: "0xaf31c9d2..." } },
|
|
30010
30032
|
{ key: "prev", label: "blockchainBlock.prev", value: { text: "0x7b3f92c1..." } },
|
|
@@ -30033,8 +30055,19 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
|
|
|
30033
30055
|
};
|
|
30034
30056
|
});
|
|
30035
30057
|
const \u898B\u51FA\u3057\u306E\u5E45 = bw - 14 - 30;
|
|
30058
|
+
const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
|
|
30059
|
+
{ text: \u898B\u51FA\u3057, size: \u898B\u51FA\u3057\u306E\u5B57, \u5E2F: { \u5E45: \u898B\u51FA\u3057\u306E\u5E45, \u9AD8\u3055: \u898B\u51FA\u3057\u306E\u5E2F } },
|
|
30060
|
+
...fields.flatMap((f) => [
|
|
30061
|
+
{ text: f.label, size: \u540D\u306E\u5B57, \u5E2F: { \u5E45: bw - 28, \u9AD8\u3055: \u884C\u306E\u9593\u9694 } },
|
|
30062
|
+
{
|
|
30063
|
+
text: f.value,
|
|
30064
|
+
size: \u5024\u306E\u5B57,
|
|
30065
|
+
\u5E2F: { \u5E45: bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5B57) - 8, \u9AD8\u3055: \u884C\u306E\u9593\u9694 }
|
|
30066
|
+
}
|
|
30067
|
+
])
|
|
30068
|
+
];
|
|
30036
30069
|
const art = (\u500D\u7387) => {
|
|
30037
|
-
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387);
|
|
30070
|
+
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
|
|
30038
30071
|
const \u984C\u306E\u5927\u304D\u3055 = \u898B\u51FA\u3057\u306E\u5B57 * \u500D;
|
|
30039
30072
|
const \u540D\u306E\u5927\u304D\u3055 = \u540D\u306E\u5B57 * \u500D;
|
|
30040
30073
|
const \u5024\u306E\u5927\u304D\u3055 = \u5024\u306E\u5B57 * \u500D;
|
|
@@ -30042,11 +30075,11 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
|
|
|
30042
30075
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 6, y: y + 6, width: bw, height: bh, rx: 8, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
|
|
30043
30076
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 8, ...frame }),
|
|
30044
30077
|
/* @__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" }),
|
|
30045
|
-
/* @__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) }),
|
|
30078
|
+
/* @__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) }),
|
|
30046
30079
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x + bw - 16, cy: y + 16, r: 5.5, fill: "#7cd88f", stroke: "#ffffff", strokeWidth: 1.5 }),
|
|
30047
30080
|
fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
30048
|
-
/* @__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 }),
|
|
30049
|
-
/* @__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) }),
|
|
30081
|
+
/* @__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 }),
|
|
30082
|
+
/* @__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) }),
|
|
30050
30083
|
/* @__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 })
|
|
30051
30084
|
] }, i)),
|
|
30052
30085
|
/* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${cx - 32}, ${y + bh - 26})`, children: [
|