@cardenelabs/cdl 0.57.0 → 0.58.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.js CHANGED
@@ -351,6 +351,122 @@ function inputDefaultValue(input) {
351
351
  }
352
352
  }
353
353
 
354
+ // src/lang.ts
355
+ function resolveLang(value) {
356
+ return value === "ja" ? "ja" : "en";
357
+ }
358
+ var en = {
359
+ /** `shape-terminal` の 2 行目 (命令の出力) */
360
+ "terminal.output": "\u2192 12 chunks in 1.8s",
361
+ /** `shape-code-block` の札の file 名 */
362
+ "codeBlock.fileName": "utils.ts",
363
+ /** `shape-kanban-card` の課題の番号 */
364
+ "kanbanCard.id": "CAR-1111",
365
+ /** `shape-kanban-card` の状態の札 */
366
+ "kanbanCard.status": "IN PROG",
367
+ /** `shape-kanban-card` の題の下の説明 */
368
+ "kanbanCard.task": "shape-driven kind \u5B9F\u88C5",
369
+ /** `shape-kanban-card` の期日 */
370
+ "kanbanCard.due": "Jul 10",
371
+ /** `shape-smart-contract` の契約の本文の 1 行 */
372
+ "smartContract.call": "function execute()",
373
+ /** `shape-blockchain-block` の題を渡さない時の見出し */
374
+ "blockchainBlock.title": "Block #421,873",
375
+ /** `shape-blockchain-block` の 1 行目の名前 (塊を識別する値) */
376
+ "blockchainBlock.hash": "hash",
377
+ /** `shape-blockchain-block` の 2 行目の名前 (1 つ前の塊の識別値) */
378
+ "blockchainBlock.prev": "prev",
379
+ /** `shape-blockchain-block` の 3 行目の名前 (取引をまとめた木の根) */
380
+ "blockchainBlock.merkle": "merkle",
381
+ /** `shape-blockchain-block` の 4 行目の名前 (採掘で試した値) */
382
+ "blockchainBlock.nonce": "nonce",
383
+ /** `shape-blockchain-block` の 5 行目の名前 (取引の件数) */
384
+ "blockchainBlock.tx": "tx",
385
+ /** `shape-blockchain-block` の 5 行目の値 */
386
+ "blockchainBlock.txCount": "142 tx",
387
+ /** `shape-rpc-node` の稼働の札 */
388
+ "rpcNode.status": "RPC ONLINE",
389
+ /** `shape-trust-bank` の看板 */
390
+ "trustBank.sign": "TRUST",
391
+ /** `shape-payment-provider` の看板 */
392
+ "paymentProvider.sign": "PAY",
393
+ /** `shape-payment-provider` の状態の札 */
394
+ "paymentProvider.status": "PROCESSING",
395
+ /** `shape-brokerage` の株価の帯 */
396
+ "brokerage.ticker": "\u25B2NKY 38,240 \u25B2AAPL 194",
397
+ /** `shape-brokerage` の看板 */
398
+ "brokerage.sign": "$ SECURITIES",
399
+ /** `shape-exchange` の看板 */
400
+ "exchange.sign": "EXCHANGE",
401
+ /** `shape-exchange` の看板の下の札 */
402
+ "exchange.sub": "clearing",
403
+ /** `shape-atm` の天井の看板 */
404
+ "atm.sign": "ATM CORNER",
405
+ /** `shape-atm` の画面の案内 */
406
+ "atm.screen": "SELECT AMOUNT",
407
+ /** `shape-atm` の決める鍵 */
408
+ "atm.ok": "OK",
409
+ /** `shape-atm` のカードを入れる口の札 */
410
+ "atm.cardSlot": "CARD SLOT",
411
+ /** `shape-storefront` の看板 */
412
+ "storefront.sign": "SHOP",
413
+ /** `shape-storefront` の扉の札 */
414
+ "storefront.open": "OPEN",
415
+ /** `shape-warehouse` の看板 */
416
+ "warehouse.sign": "WAREHOUSE",
417
+ /** `shape-api-gateway` の看板 */
418
+ "apiGateway.sign": "API GATEWAY",
419
+ /** `shape-api-gateway` の 3 行目の要求の種類 */
420
+ "apiGateway.delete": "DEL",
421
+ /** `shape-api-gateway` の 1 行目の宛先 */
422
+ "apiGateway.users": "/users",
423
+ /** `shape-api-gateway` の 2 行目の宛先 */
424
+ "apiGateway.orders": "/orders",
425
+ /** `shape-api-gateway` の 3 行目の宛先 */
426
+ "apiGateway.session": "/session"
427
+ };
428
+ var ja = {
429
+ "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
430
+ "codeBlock.fileName": "\u5171\u901A.ts",
431
+ "kanbanCard.id": "#1111",
432
+ "kanbanCard.status": "\u9032\u884C\u4E2D",
433
+ "kanbanCard.task": "\u5F62\u3092\u5B9F\u88C5",
434
+ "kanbanCard.due": "7/10",
435
+ "smartContract.call": "\u81EA\u52D5\u3067\u5B9F\u884C\u3059\u308B",
436
+ "blockchainBlock.title": "\u30D6\u30ED\u30C3\u30AF #421,873",
437
+ "blockchainBlock.hash": "\u30CF\u30C3\u30B7\u30E5",
438
+ "blockchainBlock.prev": "\u76F4\u524D",
439
+ "blockchainBlock.merkle": "\u6728\u306E\u6839",
440
+ "blockchainBlock.nonce": "\u30CE\u30F3\u30B9",
441
+ "blockchainBlock.tx": "\u53D6\u5F15",
442
+ "blockchainBlock.txCount": "142 \u4EF6",
443
+ "rpcNode.status": "RPC \u7A3C\u50CD\u4E2D",
444
+ "trustBank.sign": "\u4FE1\u8A17",
445
+ "paymentProvider.sign": "\u6C7A\u6E08",
446
+ "paymentProvider.status": "\u51E6\u7406\u4E2D",
447
+ "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240 \u25B2\u6771\u8A3C 2,710",
448
+ "brokerage.sign": "\xA5 \u8A3C\u5238",
449
+ "exchange.sign": "\u53D6\u5F15\u6240",
450
+ "exchange.sub": "\u6E05\u7B97",
451
+ "atm.sign": "ATM \u30B3\u30FC\u30CA\u30FC",
452
+ "atm.screen": "\u91D1\u984D\u3092\u9078\u629E",
453
+ "atm.ok": "\u78BA\u5B9A",
454
+ "atm.cardSlot": "\u30AB\u30FC\u30C9\u633F\u5165\u53E3",
455
+ "storefront.sign": "\u5546\u5E97",
456
+ "storefront.open": "\u55B6\u696D",
457
+ "warehouse.sign": "\u5009\u5EAB",
458
+ "apiGateway.sign": "API \u5165\u53E3",
459
+ "apiGateway.delete": "DELETE",
460
+ "apiGateway.users": "/\u5229\u7528\u8005",
461
+ "apiGateway.orders": "/\u6CE8\u6587",
462
+ "apiGateway.session": "/\u63A5\u7D9A"
463
+ };
464
+ var CDL_TEXT = { en, ja };
465
+ function \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang) {
466
+ const \u8A00\u8A9E = lang ?? "en";
467
+ return (key) => CDL_TEXT[\u8A00\u8A9E][key];
468
+ }
469
+
354
470
  // src/formula/ast.ts
355
471
  var ALLOWED_MATH_FNS = /* @__PURE__ */ new Set([
356
472
  "min",
@@ -1242,6 +1358,25 @@ function warn(message) {
1242
1358
  console.warn(`[cdl event-handler] ${message}`);
1243
1359
  }
1244
1360
  }
1361
+
1362
+ // src/kinds/text-width.ts
1363
+ var WIDE_RATIO = 1.04;
1364
+ var NARROW_RATIO = 0.37;
1365
+ var ASCII_RATIO = 0.86;
1366
+ var WIDE_CHARS = "W@%Mm";
1367
+ var NARROW_CHARS = "ijlI.,:;'! ";
1368
+ function textWidth(s, size, \u5B57\u9001\u308A = 0) {
1369
+ let \u5E45 = 0;
1370
+ let \u5B57\u6570 = 0;
1371
+ for (const c of s) {
1372
+ if (NARROW_CHARS.includes(c)) \u5E45 += NARROW_RATIO;
1373
+ else if (WIDE_CHARS.includes(c)) \u5E45 += WIDE_RATIO;
1374
+ else if ((c.codePointAt(0) ?? 0) < 128) \u5E45 += ASCII_RATIO;
1375
+ else \u5E45 += WIDE_RATIO;
1376
+ \u5B57\u6570 += 1;
1377
+ }
1378
+ return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
1379
+ }
1245
1380
  function createInteractiveSignalsAccessor(diagram2, signals, formula, scroll) {
1246
1381
  const kindByInputId = /* @__PURE__ */ new Map();
1247
1382
  for (const inp of diagram2.inputs ?? []) {
@@ -4201,6 +4336,12 @@ function ProgressGroupReadout({
4201
4336
  }) })
4202
4337
  ] });
4203
4338
  }
4339
+ function sequenceLabelAnchor(x, name, fontSize, viewW) {
4340
+ const half = textWidth(name, fontSize) / 2;
4341
+ if (x - half < 0) return "start";
4342
+ if (x + half > viewW) return "end";
4343
+ return "middle";
4344
+ }
4204
4345
  function SequenceTimelineReadout({
4205
4346
  id,
4206
4347
  label,
@@ -4252,7 +4393,7 @@ function SequenceTimelineReadout({
4252
4393
  const x = xFor(e.t);
4253
4394
  return /* @__PURE__ */ jsxs("g", { "data-cdl-event-marker": e.name, children: [
4254
4395
  /* @__PURE__ */ jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("title", { children: `${e.name}: t=${e.t}` }) }),
4255
- /* @__PURE__ */ jsx("text", { x, y: trackY - 12, textAnchor: "middle", fontSize: 10, fill: "var(--v4-ink, #1a1f2a)", children: e.name }),
4396
+ /* @__PURE__ */ jsx("text", { x, y: trackY - 12, textAnchor: sequenceLabelAnchor(x, e.name, 10, viewW), fontSize: 10, fill: "var(--v4-ink, #1a1f2a)", children: e.name }),
4256
4397
  /* @__PURE__ */ jsx("text", { x, y: trackY + 18, textAnchor: "middle", fontSize: 9, fill: "var(--v4-mute, #64748b)", children: e.t })
4257
4398
  ] }, i);
4258
4399
  })
@@ -11488,6 +11629,8 @@ function diagram(id, options) {
11488
11629
  ...options.structuredData === "exclude" ? { structuredData: "exclude" } : {},
11489
11630
  // 配色の名前は素通しする。 空文字の遮断は `layout` が持つ (後段が必ず通るため)
11490
11631
  ...options.palette !== void 0 ? { palette: options.palette } : {},
11632
+ // 言語も素通しする。 型の外の値を既定に落とすのは `layout` の 1 箇所に置く
11633
+ ...options.lang !== void 0 ? { lang: options.lang } : {},
11491
11634
  // 種類の名前も同じ経路で渡し、空文字の扱いを `layout` の 1 箇所に揃える
11492
11635
  ...options.type !== void 0 ? { type: options.type } : {},
11493
11636
  // inputs / formulas / scrollTriggers / eventBindings は空なら省略 (static diagram の JSON 形状維持)
@@ -13819,25 +13962,6 @@ var EDGE_REVEALS = ["phase", "all"];
13819
13962
  var RELATION_FOCUSES = ["off", "hover"];
13820
13963
  var RELATION_FOCUS_DEFAULT = "off";
13821
13964
  var EDGE_REVEAL_DEFAULT = "phase";
13822
-
13823
- // src/kinds/text-width.ts
13824
- var WIDE_RATIO = 1.04;
13825
- var NARROW_RATIO = 0.37;
13826
- var ASCII_RATIO = 0.86;
13827
- var WIDE_CHARS = "W@%Mm";
13828
- var NARROW_CHARS = "ijlI.,:;'! ";
13829
- function textWidth(s, size, \u5B57\u9001\u308A = 0) {
13830
- let \u5E45 = 0;
13831
- let \u5B57\u6570 = 0;
13832
- for (const c of s) {
13833
- if (NARROW_CHARS.includes(c)) \u5E45 += NARROW_RATIO;
13834
- else if (WIDE_CHARS.includes(c)) \u5E45 += WIDE_RATIO;
13835
- else if ((c.codePointAt(0) ?? 0) < 128) \u5E45 += ASCII_RATIO;
13836
- else \u5E45 += WIDE_RATIO;
13837
- \u5B57\u6570 += 1;
13838
- }
13839
- return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
13840
- }
13841
13965
  var TITLE_MAX = 18;
13842
13966
  var TITLE_MIN = 9;
13843
13967
  var TITLE_RATIO = 0.17;
@@ -20940,6 +21064,9 @@ function layout(diag) {
20940
21064
  // **遮断はここだけに置く**。 描画は必ず組み立てを通り、組み立て API も `er` も
20941
21065
  // 素通しにしてある。 上流にも置くと、どの入力でも通らない分岐が残る
20942
21066
  ...diag.palette ? { palette: diag.palette } : {},
21067
+ // 描画側の固定の字の言語 (#847)。 既定 (`en`) と型の外の値は持たせない = 配置の結果の形を
21068
+ // 変更前と揃え、記法の書き損じで一部の字だけ日本語になる形を作らない
21069
+ ...resolveLang(diag.lang) === "ja" ? { lang: "ja" } : {},
20943
21070
  // 種類も配色と同じく空の目印を出さない。 遮断をここに揃えると手書きの図にも効く
20944
21071
  ...diag.type ? { type: diag.type } : {},
20945
21072
  bboxes,
@@ -27769,6 +27896,11 @@ var commonFrame2 = (active) => ({
27769
27896
  var ASCENT3 = 0.72;
27770
27897
  var DESCENT3 = 0.25;
27771
27898
  var MONO_ADVANCE = 0.62;
27899
+ function \u7B49\u5E45\u306E\u6841(s) {
27900
+ let \u6841 = 0;
27901
+ for (const c of s) \u6841 += (c.codePointAt(0) ?? 0) >= 11904 ? 2 : 1;
27902
+ return \u6841;
27903
+ }
27772
27904
  var LABEL_SUB_RATIO = 11 / 16;
27773
27905
  var LABEL_EYE_RATIO = 12 / 16;
27774
27906
  var LABEL_EYE_GAP = 8;
@@ -27866,7 +27998,8 @@ function ShapeWindowNode({ node, active }) {
27866
27998
  commonLabel2(node, node.cx, \u540D\u524D.y, \u540D\u524D.size)
27867
27999
  ] });
27868
28000
  }
27869
- function ShapeTerminalNode({ node, active }) {
28001
+ function ShapeTerminalNode({ node, active, lang }) {
28002
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
27870
28003
  const frame = commonFrame2(active);
27871
28004
  const \u7DDA = frame.strokeWidth / 2;
27872
28005
  const x = node.cx - node.w / 2 + \u7DDA;
@@ -27887,10 +28020,10 @@ function ShapeTerminalNode({ node, active }) {
27887
28020
  { \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" },
27888
28021
  { \u5DE6: 30, \u5B57: 12.5, \u8272: "#e6edf3", \u6587: "pnpm build" }
27889
28022
  ],
27890
- [{ \u5DE6: 16, \u5B57: 12, \u8272: "#8b95a5", \u6587: "\u2192 12 chunks in 1.8s" }],
28023
+ [{ \u5DE6: 16, \u5B57: 12, \u8272: "#8b95a5", \u6587: \u5B57\u5F15("terminal.output") }],
27891
28024
  [{ \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" }]
27892
28025
  ];
27893
- const \u81EA\u7136\u5E45 = Math.max(...\u884C.flat().map((t) => t.\u5DE6 + t.\u6587.length * MONO_ADVANCE * t.\u5B57)) + \u4F59\u767D;
28026
+ const \u81EA\u7136\u5E45 = Math.max(...\u884C.flat().map((c) => c.\u5DE6 + \u7B49\u5E45\u306E\u6841(c.\u6587) * MONO_ADVANCE * c.\u5B57)) + \u4F59\u767D;
27894
28027
  const \u81EA\u7136\u9AD8 = \u5E2F + \u5148\u982D + \u884C\u9593 * (\u884C.length - 1) + Math.max(\u30AB\u30FC\u30BD\u30EB.\u4E0B, 12.5 * DESCENT3);
27895
28028
  const \u500D = Math.min(1, w / \u81EA\u7136\u5E45, bodyH / \u81EA\u7136\u9AD8);
27896
28029
  const barH = \u5E2F * \u500D;
@@ -28000,7 +28133,8 @@ function ShapeTerminalNode({ node, active }) {
28000
28133
  )
28001
28134
  ] });
28002
28135
  }
28003
- function ShapeCodeBlockNode({ node, active }) {
28136
+ function ShapeCodeBlockNode({ node, active, lang }) {
28137
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
28004
28138
  const frame = commonFrame2(active);
28005
28139
  const \u7DDA = frame.strokeWidth / 2;
28006
28140
  const x = node.cx - node.w / 2 + \u7DDA;
@@ -28090,7 +28224,7 @@ function ShapeCodeBlockNode({ node, active }) {
28090
28224
  fontFamily: lineFont,
28091
28225
  textAnchor: "middle",
28092
28226
  fill: "#e6edf3",
28093
- children: "utils.ts"
28227
+ children: \u5B57\u5F15("codeBlock.fileName")
28094
28228
  }
28095
28229
  ),
28096
28230
  /* @__PURE__ */ jsx("circle", { cx: x + tabW - \u4E38, cy: y + tabH / 2, r: 3 * \u500D, fill: "#7cd88f", stroke: "none" }),
@@ -28166,7 +28300,8 @@ function ShapeCodeBlockNode({ node, active }) {
28166
28300
  )
28167
28301
  ] });
28168
28302
  }
28169
- function ShapeKanbanCardNode({ node, active }) {
28303
+ function ShapeKanbanCardNode({ node, active, lang }) {
28304
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
28170
28305
  const frame = commonFrame2(active);
28171
28306
  const \u7DDA = frame.strokeWidth / 2;
28172
28307
  const \u5F71 = 3;
@@ -28178,7 +28313,7 @@ function ShapeKanbanCardNode({ node, active }) {
28178
28313
  const \u5DE6\u53F3\u4F59\u767D = 14;
28179
28314
  const \u4E0A\u6BB5\u9699\u9593 = 8;
28180
28315
  const \u512A\u5148\u5E2F\u9AD8 = 10;
28181
- const ID\u6587 = "CAR-1111";
28316
+ const ID\u6587 = \u5B57\u5F15("kanbanCard.id");
28182
28317
  const ID\u57FA\u6E96 = 30;
28183
28318
  const ID\u5B57 = 11;
28184
28319
  const ID\u5B57\u9593 = 1;
@@ -28197,7 +28332,7 @@ function ShapeKanbanCardNode({ node, active }) {
28197
28332
  const \u4E0B\u5E2F = FOOTER\u4E0B - AVATAR\u4E2D\u5FC3Y + AVATAR\u534A\u5F84 + AVATAR\u67A0 / 2 + \u5E2F\u9593\u4F59\u767D;
28198
28333
  const \u4E2D\u5E2F = \u540D\u524D\u5B57 * ASCENT3 + \u540D\u524D\u5B57 * \u8AAC\u660E\u57FA\u6E96\u6BD4 + \u540D\u524D\u5B57 * \u8AAC\u660E\u5B57\u6BD4 * DESCENT3;
28199
28334
  const \u81EA\u7136\u9AD8 = \u4E0A\u5E2F + \u4E2D\u5E2F + \u4E0B\u5E2F;
28200
- const ID\u5E45 = ID\u6587.length * MONO_ADVANCE * ID\u5B57 + ID\u5B57\u9593 * ID\u6587.length;
28335
+ const ID\u5E45 = \u7B49\u5E45\u306E\u6841(ID\u6587) * MONO_ADVANCE * ID\u5B57 + ID\u5B57\u9593 * [...ID\u6587].length;
28201
28336
  const \u81EA\u7136\u5E45 = \u5DE6\u53F3\u4F59\u767D + ID\u5E45 + \u4E0A\u6BB5\u9699\u9593 + PILL\u5E45 + \u5DE6\u53F3\u4F59\u767D;
28202
28337
  const \u500D = Math.min(1, w / \u81EA\u7136\u5E45, h / \u81EA\u7136\u9AD8);
28203
28338
  const priorityBarH = \u512A\u5148\u5E2F\u9AD8 * \u500D;
@@ -28276,7 +28411,7 @@ function ShapeKanbanCardNode({ node, active }) {
28276
28411
  textAnchor: "middle",
28277
28412
  fill: "#5a4a1a",
28278
28413
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
28279
- children: "IN PROG"
28414
+ children: \u5B57\u5F15("kanbanCard.status")
28280
28415
  }
28281
28416
  ),
28282
28417
  /* @__PURE__ */ jsx(
@@ -28300,7 +28435,7 @@ function ShapeKanbanCardNode({ node, active }) {
28300
28435
  fontSize: \u540D\u524D.size * \u8AAC\u660E\u5B57\u6BD4,
28301
28436
  textAnchor: "middle",
28302
28437
  fill: "var(--cdl-text-dim, #5a6270)",
28303
- children: "shape-driven kind \u5B9F\u88C5"
28438
+ children: \u5B57\u5F15("kanbanCard.task")
28304
28439
  }
28305
28440
  ),
28306
28441
  /* @__PURE__ */ jsxs("g", { transform: `translate(${x + \u5DE6\u53F3\u4F59\u767D * \u500D}, ${footY})`, children: [
@@ -28363,7 +28498,7 @@ function ShapeKanbanCardNode({ node, active }) {
28363
28498
  fontWeight: 600,
28364
28499
  textAnchor: "end",
28365
28500
  fill: "var(--cdl-text-dim, #5a6270)",
28366
- children: "Jul 10"
28501
+ children: \u5B57\u5F15("kanbanCard.due")
28367
28502
  }
28368
28503
  )
28369
28504
  ] })
@@ -29407,7 +29542,8 @@ function EthereumDiamond({ cx, cy, h, colors }) {
29407
29542
  /* @__PURE__ */ jsx("path", { d: `M ${cx} ${midY} L ${cx + w} ${cy + h * 0.05} L ${cx} ${lowerBotY} Z`, fill: c.dark, stroke: c.stroke, strokeWidth: 0.6, strokeLinejoin: "round" })
29408
29543
  ] });
29409
29544
  }
29410
- function ShapeSmartContractNode({ node, active }) {
29545
+ function ShapeSmartContractNode({ node, active, lang }) {
29546
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
29411
29547
  const frame = commonFrame4(active);
29412
29548
  const r = shapeRegion(node);
29413
29549
  const docW = SMART_CONTRACT_W;
@@ -29443,7 +29579,7 @@ function ShapeSmartContractNode({ node, active }) {
29443
29579
  /* @__PURE__ */ jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
29444
29580
  /* @__PURE__ */ jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
29445
29581
  [y + 40, y + 58, y + 76, y + 94].map((ly, i) => /* @__PURE__ */ jsx("rect", { x: x + 16, y: ly - 3, width: docW - 32 - i * 22, height: 5, rx: 1, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.7, stroke: "none" }, i)),
29446
- /* @__PURE__ */ jsx("text", { x: x + 16, y: y + docH - 46, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: "function execute()" }),
29582
+ /* @__PURE__ */ jsx("text", { x: x + 16, y: y + docH - 46, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u5B57\u5F15("smartContract.call") }),
29447
29583
  /* @__PURE__ */ jsx(
29448
29584
  "polygon",
29449
29585
  {
@@ -29464,14 +29600,14 @@ function ShapeSmartContractNode({ node, active }) {
29464
29600
  }
29465
29601
  var \u5B57\u306E\u5E45 = (text, size) => Math.max(displayWidth(text) * size * MONO_ADVANCE_RATIO, textWidth(text, size));
29466
29602
  var BLOCK_DEFAULT_FIELDS = [
29467
- { label: "hash", value: "0xaf31c9d2..." },
29468
- { label: "prev", value: "0x7b3f92c1..." },
29469
- { label: "merkle", value: "0xc1892f4a..." },
29470
- { label: "nonce", value: "82,914" },
29471
- { label: "tx", value: "142 tx" }
29603
+ { key: "hash", label: "blockchainBlock.hash", value: { text: "0xaf31c9d2..." } },
29604
+ { key: "prev", label: "blockchainBlock.prev", value: { text: "0x7b3f92c1..." } },
29605
+ { key: "merkle", label: "blockchainBlock.merkle", value: { text: "0xc1892f4a..." } },
29606
+ { key: "nonce", label: "blockchainBlock.nonce", value: { text: "82,914" } },
29607
+ { key: "tx", label: "blockchainBlock.tx", value: { \u8F9E\u66F8: "blockchainBlock.txCount" } }
29472
29608
  ];
29473
- var BLOCK_DEFAULT_TITLE = "Block #421,873";
29474
- function ShapeBlockchainBlockNode({ node, active }) {
29609
+ function ShapeBlockchainBlockNode({ node, active, lang }) {
29610
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
29475
29611
  const frame = commonFrame4(active);
29476
29612
  const r = shapeRegion(node);
29477
29613
  const bw = BLOCK_W;
@@ -29481,11 +29617,15 @@ function ShapeBlockchainBlockNode({ node, active }) {
29481
29617
  const x = cx - bw / 2;
29482
29618
  const y = cy - bh / 2;
29483
29619
  const \u6E21\u3055\u308C\u305F = (v) => (v ?? "").trim();
29484
- const \u898B\u51FA\u3057 = \u6E21\u3055\u308C\u305F(node.title) || BLOCK_DEFAULT_TITLE;
29485
- const fields = BLOCK_DEFAULT_FIELDS.map((f) => ({
29486
- label: f.label,
29487
- value: f.label === "hash" ? \u6E21\u3055\u308C\u305F(node.subtitle) || f.value : f.value
29488
- }));
29620
+ const \u898B\u51FA\u3057 = \u6E21\u3055\u308C\u305F(node.title) || \u5B57\u5F15("blockchainBlock.title");
29621
+ const fields = BLOCK_DEFAULT_FIELDS.map((f) => {
29622
+ const \u65E2\u5B9A\u5024 = "text" in f.value ? f.value.text : \u5B57\u5F15(f.value.\u8F9E\u66F8);
29623
+ return {
29624
+ key: f.key,
29625
+ label: \u5B57\u5F15(f.label),
29626
+ value: f.key === "hash" ? \u6E21\u3055\u308C\u305F(node.subtitle) || \u65E2\u5B9A\u5024 : \u65E2\u5B9A\u5024
29627
+ };
29628
+ });
29489
29629
  const \u898B\u51FA\u3057\u306E\u5E45 = bw - 14 - 30;
29490
29630
  const art = /* @__PURE__ */ jsxs("g", { children: [
29491
29631
  /* @__PURE__ */ jsx("rect", { x: x + 6, y: y + 6, width: bw, height: bh, rx: 8, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
@@ -29495,7 +29635,7 @@ function ShapeBlockchainBlockNode({ node, active }) {
29495
29635
  /* @__PURE__ */ jsx("circle", { cx: x + bw - 16, cy: y + 16, r: 5.5, fill: "#7cd88f", stroke: "#ffffff", strokeWidth: 1.5 }),
29496
29636
  fields.map((f, i) => /* @__PURE__ */ jsxs("g", { children: [
29497
29637
  /* @__PURE__ */ jsx("text", { x: x + 14, y: y + 54 + i * 22, fontSize: 10.5, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-text-dim, #5a6270)", children: f.label }),
29498
- /* @__PURE__ */ jsx("text", { "data-cdl-role": `blockchain-block-${f.label}`, x: x + bw - 14, y: y + 54 + i * 22, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, 11, bw - 28 - \u5B57\u306E\u5E45(f.label, 10.5) - 8, \u5B57\u306E\u5E45) }),
29638
+ /* @__PURE__ */ jsx("text", { "data-cdl-role": `blockchain-block-${f.key}`, x: x + bw - 14, y: y + 54 + i * 22, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, 11, bw - 28 - \u5B57\u306E\u5E45(f.label, 10.5) - 8, \u5B57\u306E\u5E45) }),
29499
29639
  /* @__PURE__ */ jsx("line", { x1: x + 14, y1: y + 60 + i * 22, x2: x + bw - 14, y2: y + 60 + i * 22, stroke: "var(--cdl-divider, #d4d4d8)", strokeWidth: 0.5, opacity: 0.5 })
29500
29640
  ] }, i)),
29501
29641
  /* @__PURE__ */ jsxs("g", { transform: `translate(${cx - 32}, ${y + bh - 26})`, children: [
@@ -29700,7 +29840,8 @@ function ShapeBlockchainNodeNode({ node, active }) {
29700
29840
  bottomLabel2(node, r.cx, r.label)
29701
29841
  ] });
29702
29842
  }
29703
- function ShapeRpcNodeNode({ node, active }) {
29843
+ function ShapeRpcNodeNode({ node, active, lang }) {
29844
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
29704
29845
  const frame = commonFrame4(active);
29705
29846
  const r = shapeRegion(node);
29706
29847
  const cx = r.cx;
@@ -29713,7 +29854,7 @@ function ShapeRpcNodeNode({ node, active }) {
29713
29854
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
29714
29855
  /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 30, rx: 10, fill: "#2d3a4f", stroke: "none" }),
29715
29856
  /* @__PURE__ */ jsx("circle", { cx: x + 14, cy: y + 15, r: 5, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: "1.5s", repeatCount: "indefinite" }) }),
29716
- /* @__PURE__ */ jsx("text", { x: x + 26, y: y + 20, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, fill: "#7cd88f", children: "RPC ONLINE" }),
29857
+ /* @__PURE__ */ jsx("text", { x: x + 26, y: y + 20, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, fill: "#7cd88f", children: \u5B57\u5F15("rpcNode.status") }),
29717
29858
  /* @__PURE__ */ jsx("text", { x: cx, y: cy + 6, fontSize: 30, fontWeight: 700, textAnchor: "middle", fill: "#e6edf3", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "{...}" }),
29718
29859
  /* @__PURE__ */ jsx("text", { x: cx, y: cy + 26, fontSize: 11, textAnchor: "middle", fill: "#7a8290", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "JSON-RPC 2.0" }),
29719
29860
  /* @__PURE__ */ jsx("rect", { x: x + 16, y: y + bh - 24, width: bw - 32, height: 8, rx: 4, fill: "#0f1419", stroke: "none" }),
@@ -29999,7 +30140,8 @@ var TRUST_BASE_H = 14;
29999
30140
  var TRUST_BODY_OUT = 8;
30000
30141
  var TRUST_BLD_W_MIN = 140;
30001
30142
  var TRUST_BLD_W_MAX = 280;
30002
- function ShapeTrustBankNode({ node, active }) {
30143
+ function ShapeTrustBankNode({ node, active, lang }) {
30144
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30003
30145
  const frame = commonFrame5(active);
30004
30146
  const r = shapeRegion(node);
30005
30147
  const \u7DDA = frame.strokeWidth / 2;
@@ -30036,7 +30178,7 @@ function ShapeTrustBankNode({ node, active }) {
30036
30178
  return /* @__PURE__ */ jsx("rect", { x: r.cx - w / 2, y: y + bldH + i * BANK_STEP_DY, width: w, height: BANK_STEP_H, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.5 + i * 0.15, stroke: frame.stroke, strokeWidth: BANK_STEP_SW }, i);
30037
30179
  }),
30038
30180
  /* @__PURE__ */ jsx("path", { d: `M ${x - 6} ${y + pedimentH} L ${r.cx} ${y + 2} L ${x + bldW + 6} ${y + pedimentH} Z`, fill: "var(--cdl-node-fill, #ffffff)", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30039
- /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: "TRUST" }),
30181
+ /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: \u5B57\u5F15("trustBank.sign") }),
30040
30182
  /* @__PURE__ */ jsx("rect", { x: x - 4, y: y + pedimentH, width: bldW + 8, height: architraveH, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.4, stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
30041
30183
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
30042
30184
  const colCx = x + 15 + colGap + i * (colW + colGap) + colW / 2;
@@ -30055,7 +30197,8 @@ function ShapeTrustBankNode({ node, active }) {
30055
30197
  bottomLabel3(node, r.cx, r.label)
30056
30198
  ] });
30057
30199
  }
30058
- function ShapePaymentProviderNode({ node, active }) {
30200
+ function ShapePaymentProviderNode({ node, active, lang }) {
30201
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30059
30202
  const frame = commonFrame5(active);
30060
30203
  const r = shapeRegion(node);
30061
30204
  const cx = r.cx;
@@ -30072,13 +30215,13 @@ function ShapePaymentProviderNode({ node, active }) {
30072
30215
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: boxW, height: boxH, rx: 10, fill: "#255a7a", stroke: accentDark, strokeWidth: frame.strokeWidth }),
30073
30216
  /* @__PURE__ */ jsx("rect", { x, y, width: boxW, height: headerH, rx: 10, fill: accentDarker }),
30074
30217
  /* @__PURE__ */ jsx("rect", { x, y: y + headerH - 8, width: boxW, height: 8, fill: accentDarker }),
30075
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 22, fontSize: 16, fontWeight: 700, letterSpacing: 4, textAnchor: "middle", fill: "#e5c07b", children: "PAY" }),
30218
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + 22, fontSize: 16, fontWeight: 700, letterSpacing: 4, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("paymentProvider.sign") }),
30076
30219
  /* @__PURE__ */ jsxs("g", { children: [
30077
30220
  /* @__PURE__ */ jsx("circle", { cx, cy: cy + 4, r: 22, fill: "none", stroke: "#e5c07b", strokeWidth: 3.5, strokeDasharray: "38 24", strokeLinecap: "round", children: /* @__PURE__ */ jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${cx} ${cy + 4}`, to: `360 ${cx} ${cy + 4}`, dur: "2s", repeatCount: "indefinite" }) }),
30078
30221
  /* @__PURE__ */ jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
30079
30222
  /* @__PURE__ */ jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
30080
30223
  ] }),
30081
- /* @__PURE__ */ jsx("text", { x: cx, y: y + boxH - 16, fontSize: 9, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: "PROCESSING" }),
30224
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + boxH - 16, fontSize: 9, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
30082
30225
  bottomLabel3(node, r.cx, r.label)
30083
30226
  ] });
30084
30227
  }
@@ -30126,7 +30269,8 @@ var BROKERAGE_SHADE_OUT = 2;
30126
30269
  var BROKERAGE_W_MIN = BROKERAGE_COLS * BROKERAGE_CELL_W + (BROKERAGE_COLS - 1) * BROKERAGE_GAP_X + 6;
30127
30270
  var BROKERAGE_W_MAX = 140;
30128
30271
  var BROKERAGE_H_MIN = BROKERAGE_TICK_H + BROKERAGE_LOGO_H + BROKERAGE_BASE_H;
30129
- function ShapeBrokerageNode({ node, active }) {
30272
+ function ShapeBrokerageNode({ node, active, lang }) {
30273
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30130
30274
  const frame = commonFrame5(active);
30131
30275
  const r = shapeRegion(node);
30132
30276
  const cx = r.cx;
@@ -30162,9 +30306,9 @@ function ShapeBrokerageNode({ node, active }) {
30162
30306
  /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30163
30307
  /* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30164
30308
  /* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
30165
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 9, fontSize: 5.5, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "\u25B2NKY 38,240 \u25B2AAPL 194" }),
30309
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + 9, fontSize: 5.5, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
30166
30310
  /* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30167
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 30, fontSize: 12, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: "$ SECURITIES" }),
30311
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + 30, fontSize: 12, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
30168
30312
  Array.from({ length: rows }).map(
30169
30313
  (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30170
30314
  const wx = gridStartX + ci * (cellW + gapX);
@@ -30185,7 +30329,8 @@ function ShapeBrokerageNode({ node, active }) {
30185
30329
  bottomLabel3(node, r.cx, r.label)
30186
30330
  ] });
30187
30331
  }
30188
- function ShapeExchangeNode({ node, active }) {
30332
+ function ShapeExchangeNode({ node, active, lang }) {
30333
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30189
30334
  const frame = commonFrame5(active);
30190
30335
  const r = shapeRegion(node);
30191
30336
  const cx = r.cx;
@@ -30230,9 +30375,9 @@ function ShapeExchangeNode({ node, active }) {
30230
30375
  ] }, `d${i}`);
30231
30376
  }),
30232
30377
  /* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30233
- /* @__PURE__ */ jsx("text", { x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: "EXCHANGE" }),
30378
+ /* @__PURE__ */ jsx("text", { x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30234
30379
  /* @__PURE__ */ jsx("text", { "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
30235
- /* @__PURE__ */ jsx("text", { x: cx, y: cy + 26, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: "clearing" }),
30380
+ /* @__PURE__ */ jsx("text", { x: cx, y: cy + 26, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30236
30381
  nodes.map((n, i) => /* @__PURE__ */ jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
30237
30382
  ] });
30238
30383
  return /* @__PURE__ */ jsxs("g", { children: [
@@ -30254,7 +30399,8 @@ var ATM_PANEL_H = 146;
30254
30399
  var ATM_W_MIN = 100;
30255
30400
  var ATM_W_MAX = 140;
30256
30401
  var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
30257
- function ShapeAtmNode({ node, active }) {
30402
+ function ShapeAtmNode({ node, active, lang }) {
30403
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30258
30404
  const frame = commonFrame5(active);
30259
30405
  const r = shapeRegion(node);
30260
30406
  const cx = r.cx;
@@ -30288,12 +30434,12 @@ function ShapeAtmNode({ node, active }) {
30288
30434
  const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
30289
30435
  /* @__PURE__ */ jsx("ellipse", { cx, cy: y + totalH + ATM_SHADOW_DY, rx: totalW * ATM_SHADOW_RX_RATIO, ry: ATM_SHADOW_RY, fill: frame.stroke, opacity: 0.15, stroke: "none" }),
30290
30436
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: signY, width: totalW, height: signH, fill: accentDarker, stroke: "#000", strokeWidth: ATM_SIGN_SW }),
30291
- /* @__PURE__ */ jsx("text", { x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: "ATM CORNER" }),
30437
+ /* @__PURE__ */ jsx("text", { x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
30292
30438
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x: atmX, y: atmY, width: atmW, height: atmH, rx: 6, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30293
30439
  /* @__PURE__ */ jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
30294
30440
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 10, width: ATM_PANEL_W - 16, height: 52, rx: 3, fill: "#0f1830", stroke: "#000", strokeWidth: 1.5 }),
30295
30441
  /* @__PURE__ */ jsx("text", { x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30296
- /* @__PURE__ */ jsx("text", { x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: "SELECT AMOUNT" }),
30442
+ /* @__PURE__ */ jsx("text", { x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30297
30443
  /* @__PURE__ */ jsx("text", { x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30298
30444
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 68, width: ATM_PANEL_W - 16, height: 42, rx: 2, fill: "#8b949e", stroke: "#5a6270", strokeWidth: 1 }),
30299
30445
  (() => {
@@ -30307,7 +30453,7 @@ function ShapeAtmNode({ node, active }) {
30307
30453
  ["5", "#5a6270"],
30308
30454
  ["6", "#5a6270"],
30309
30455
  ["0", "#5a6270"],
30310
- ["OK", "#4ea36a"]
30456
+ [\u5B57\u5F15("atm.ok"), "#4ea36a"]
30311
30457
  ];
30312
30458
  const keyW = 18;
30313
30459
  const keyH = 10;
@@ -30320,13 +30466,16 @@ function ShapeAtmNode({ node, active }) {
30320
30466
  const ky = 74 + row * (keyH + 2);
30321
30467
  return /* @__PURE__ */ jsxs("g", { children: [
30322
30468
  /* @__PURE__ */ jsx("rect", { x: kx, y: ky, width: keyW, height: keyH, fill: k[1], stroke: "#0f1830", strokeWidth: 0.8 }),
30323
- /* @__PURE__ */ jsx("text", { x: kx + keyW / 2, y: ky + 7, fontSize: k[0] === "OK" ? 6 : 7, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", children: k[0] })
30469
+ /* @__PURE__ */ jsx("text", { x: kx + keyW / 2, y: ky + 7, fontSize: (
30470
+ /* 決める鍵 (末尾) は 2 字あるので小さく描く。 字は言語で変わるため位置で見分ける */
30471
+ i === keys.length - 1 ? 6 : 7
30472
+ ), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", children: k[0] })
30324
30473
  ] }, `k${i}`);
30325
30474
  });
30326
30475
  })(),
30327
30476
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 116, width: ATM_PANEL_W - 24, height: 8, rx: 1.5, fill: "#0f1830", stroke: accentDarker, strokeWidth: 1 }),
30328
30477
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
30329
- /* @__PURE__ */ jsx("text", { x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "CARD SLOT" }),
30478
+ /* @__PURE__ */ jsx("text", { x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
30330
30479
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
30331
30480
  ] }),
30332
30481
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -30411,7 +30560,8 @@ function ShapeWebsiteNode({ node, active }) {
30411
30560
  bottomLabel4(node, r.cx, r.label)
30412
30561
  ] });
30413
30562
  }
30414
- function ShapeStorefrontNode({ node, active }) {
30563
+ function ShapeStorefrontNode({ node, active, lang }) {
30564
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30415
30565
  const frame = commonFrame6(active);
30416
30566
  const r = shapeRegion(node);
30417
30567
  const cx = r.cx;
@@ -30437,7 +30587,7 @@ function ShapeStorefrontNode({ node, active }) {
30437
30587
  return /* @__PURE__ */ jsxs("g", { children: [
30438
30588
  /* @__PURE__ */ jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30439
30589
  /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
30440
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 18, fontSize: 16, fontWeight: 900, letterSpacing: 8, textAnchor: "middle", fill: "#ffffff", children: "SHOP" }),
30590
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + 18, fontSize: 16, fontWeight: 900, letterSpacing: 8, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("storefront.sign") }),
30441
30591
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y: facadeY, width: bw, height: facadeH, fill: "#e0e4e8", stroke: "#5a6270", strokeWidth: frame.strokeWidth }),
30442
30592
  /* @__PURE__ */ jsx("rect", { x: winX, y: winY, width: winW, height: winH, fill: "#a4c5d9", stroke: accentDarker, strokeWidth: 2 }),
30443
30593
  /* @__PURE__ */ jsx("line", { x1: winX + winW / 2, y1: winY, x2: winX + winW / 2, y2: winY + winH, stroke: accentDarker, strokeWidth: 1 }),
@@ -30451,7 +30601,7 @@ function ShapeStorefrontNode({ node, active }) {
30451
30601
  /* @__PURE__ */ jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.38, x2: doorX + doorW - 4, y2: doorY + doorH * 0.38, stroke: accentDarker, strokeWidth: 1 }),
30452
30602
  /* @__PURE__ */ jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.72, x2: doorX + doorW - 4, y2: doorY + doorH * 0.72, stroke: accentDarker, strokeWidth: 1 }),
30453
30603
  /* @__PURE__ */ jsx("rect", { x: doorX + doorW / 2 - 20, y: doorY + doorH * 0.85, width: 40, height: 12, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),
30454
- /* @__PURE__ */ jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 9, fontSize: 8, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: "OPEN" }),
30604
+ /* @__PURE__ */ jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 9, fontSize: 8, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: \u5B57\u5F15("storefront.open") }),
30455
30605
  /* @__PURE__ */ jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
30456
30606
  /* @__PURE__ */ jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
30457
30607
  bottomLabel4(node, r.cx, r.label)
@@ -30468,7 +30618,8 @@ var WAREHOUSE_SHADOW_RX_RATIO = 0.5;
30468
30618
  var WAREHOUSE_H_MIN = WAREHOUSE_ROOF_H + WAREHOUSE_SIGN_H + 68;
30469
30619
  var WAREHOUSE_W_MIN = 160;
30470
30620
  var WAREHOUSE_W_MAX = 240;
30471
- function ShapeWarehouseNode({ node, active }) {
30621
+ function ShapeWarehouseNode({ node, active, lang }) {
30622
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30472
30623
  const frame = commonFrame6(active);
30473
30624
  const r = shapeRegion(node);
30474
30625
  const cx = r.cx;
@@ -30497,7 +30648,7 @@ function ShapeWarehouseNode({ node, active }) {
30497
30648
  /* @__PURE__ */ jsx("path", { d: `M ${x - WAREHOUSE_ROOF_OUT} ${y + roofH} L ${x + 12} ${y + 2} L ${x + bw - 12} ${y + 2} L ${x + bw + WAREHOUSE_ROOF_OUT} ${y + roofH} Z`, fill: "#5a6270", stroke: accentDarker, strokeWidth: WAREHOUSE_ROOF_SW, strokeLinejoin: "round" }),
30498
30649
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y: y + roofH, width: bw, height: bh - roofH - 12, fill: "#a89d8f", stroke: "#5a6270", strokeWidth: frame.strokeWidth }),
30499
30650
  /* @__PURE__ */ jsx("rect", { x, y: y + roofH, width: bw, height: signH, fill: "#c15a4a", stroke: "#8b3f2f", strokeWidth: 1.5 }),
30500
- /* @__PURE__ */ jsx("text", { x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: "WAREHOUSE" }),
30651
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("warehouse.sign") }),
30501
30652
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: shutterH, fill: "#8b949e", stroke: accentDarker, strokeWidth: 2 }),
30502
30653
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: 5, fill: "#5a6270", stroke: "none" }),
30503
30654
  Array.from({ length: 10 }, (_, i) => i).map((i) => /* @__PURE__ */ jsx(
@@ -30654,7 +30805,8 @@ var API_ROWS = 3;
30654
30805
  var API_H_MIN = API_ROW_TOP + (API_ROWS - 1) * API_ROW_PITCH_MIN + API_ROW_H + API_ROW_BOTTOM_PAD;
30655
30806
  var API_W_MIN = 200;
30656
30807
  var API_W_MAX = 300;
30657
- function ShapeApiGatewayNode({ node, active }) {
30808
+ function ShapeApiGatewayNode({ node, active, lang }) {
30809
+ const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30658
30810
  const frame = commonFrame6(active);
30659
30811
  const r = shapeRegion(node);
30660
30812
  const cx = r.cx;
@@ -30665,6 +30817,7 @@ function ShapeApiGatewayNode({ node, active }) {
30665
30817
  const x = cx - bw / 2;
30666
30818
  const y = r.cy - \u7E26 / 2 + \u4F59\u767D;
30667
30819
  const \u5E83\u304C\u308A = { \u4E0A: \u7E26 / 2, \u4E0B: \u7E26 / 2, \u5DE6: bw / 2 + \u4F59\u767D, \u53F3: bw / 2 + \u4F59\u767D };
30820
+ const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * 48 / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
30668
30821
  const rowPitch = Math.max(
30669
30822
  API_ROW_PITCH_MIN,
30670
30823
  (bh - API_ROW_TOP - API_ROW_H - API_ROW_BOTTOM_PAD) / (API_ROWS - 1)
@@ -30673,15 +30826,15 @@ function ShapeApiGatewayNode({ node, active }) {
30673
30826
  /* @__PURE__ */ jsx("rect", { x: x + DROP_SHADOW_D, y: y + DROP_SHADOW_D, width: bw, height: bh, rx: 10, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30674
30827
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
30675
30828
  /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
30676
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 24, fontSize: 14, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "API GATEWAY" }),
30829
+ /* @__PURE__ */ jsx("text", { x: cx, y: y + 24, fontSize: 14, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("apiGateway.sign") }),
30677
30830
  [
30678
- { method: "GET", path: "/users", color: "#27c93f" },
30679
- { method: "POST", path: "/orders", color: "#e5c07b" },
30680
- { method: "DEL", path: "/session", color: "#c9302c" }
30831
+ { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
30832
+ { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
30833
+ { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
30681
30834
  ].map((e, i) => /* @__PURE__ */ jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
30682
30835
  /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
30683
30836
  /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: 54, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
30684
- /* @__PURE__ */ jsx("text", { x: 27, y: 16, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
30837
+ /* @__PURE__ */ jsx("text", { x: 27, y: 16, fontSize: \u7A2E\u985E\u306E\u5B57(e.method), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
30685
30838
  /* @__PURE__ */ jsx("text", { x: 64, y: 16, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
30686
30839
  /* @__PURE__ */ jsx("circle", { cx: bw - 44, cy: 12, r: 4, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.2 + i * 0.3}s`, repeatCount: "indefinite" }) })
30687
30840
  ] }, i))
@@ -30986,7 +31139,8 @@ function CdlNodeView({
30986
31139
  stateValues,
30987
31140
  currentPhaseId,
30988
31141
  chartLineScale,
30989
- \u95A2\u4FC2\u306E\u53D7\u3051\u53E3
31142
+ \u95A2\u4FC2\u306E\u53D7\u3051\u53E3,
31143
+ lang
30990
31144
  }) {
30991
31145
  const value = node.value ? interpolate(node.value, stateValues) : void 0;
30992
31146
  const rows = (node.rows ?? []).map((r) => interpolate(r, stateValues));
@@ -31202,11 +31356,11 @@ function CdlNodeView({
31202
31356
  case "shape-window":
31203
31357
  return /* @__PURE__ */ jsx(ShapeWindowNode, { node: resolvedNode, active });
31204
31358
  case "shape-terminal":
31205
- return /* @__PURE__ */ jsx(ShapeTerminalNode, { node: resolvedNode, active });
31359
+ return /* @__PURE__ */ jsx(ShapeTerminalNode, { node: resolvedNode, active, lang });
31206
31360
  case "shape-code-block":
31207
- return /* @__PURE__ */ jsx(ShapeCodeBlockNode, { node: resolvedNode, active });
31361
+ return /* @__PURE__ */ jsx(ShapeCodeBlockNode, { node: resolvedNode, active, lang });
31208
31362
  case "shape-kanban-card":
31209
- return /* @__PURE__ */ jsx(ShapeKanbanCardNode, { node: resolvedNode, active });
31363
+ return /* @__PURE__ */ jsx(ShapeKanbanCardNode, { node: resolvedNode, active, lang });
31210
31364
  case "shape-message-bubble":
31211
31365
  return /* @__PURE__ */ jsx(ShapeMessageBubbleNode, { node: resolvedNode, active });
31212
31366
  case "shape-gear":
@@ -31224,11 +31378,11 @@ function CdlNodeView({
31224
31378
  case "shape-satellite":
31225
31379
  return /* @__PURE__ */ jsx(ShapeSatelliteNode, { node: resolvedNode, active });
31226
31380
  case "shape-smart-contract":
31227
- return /* @__PURE__ */ jsx(ShapeSmartContractNode, { node: resolvedNode, active });
31381
+ return /* @__PURE__ */ jsx(ShapeSmartContractNode, { node: resolvedNode, active, lang });
31228
31382
  case "shape-blockchain-block":
31229
- return /* @__PURE__ */ jsx(ShapeBlockchainBlockNode, { node: resolvedNode, active });
31383
+ return /* @__PURE__ */ jsx(ShapeBlockchainBlockNode, { node: resolvedNode, active, lang });
31230
31384
  case "shape-rpc-node":
31231
- return /* @__PURE__ */ jsx(ShapeRpcNodeNode, { node: resolvedNode, active });
31385
+ return /* @__PURE__ */ jsx(ShapeRpcNodeNode, { node: resolvedNode, active, lang });
31232
31386
  case "shape-wallet":
31233
31387
  return /* @__PURE__ */ jsx(ShapeWalletNode, { node: resolvedNode, active });
31234
31388
  case "shape-nft":
@@ -31246,29 +31400,29 @@ function CdlNodeView({
31246
31400
  case "shape-bank":
31247
31401
  return /* @__PURE__ */ jsx(ShapeBankNode, { node: resolvedNode, active });
31248
31402
  case "shape-trust-bank":
31249
- return /* @__PURE__ */ jsx(ShapeTrustBankNode, { node: resolvedNode, active });
31403
+ return /* @__PURE__ */ jsx(ShapeTrustBankNode, { node: resolvedNode, active, lang });
31250
31404
  case "shape-payment-provider":
31251
- return /* @__PURE__ */ jsx(ShapePaymentProviderNode, { node: resolvedNode, active });
31405
+ return /* @__PURE__ */ jsx(ShapePaymentProviderNode, { node: resolvedNode, active, lang });
31252
31406
  case "shape-credit-card":
31253
31407
  return /* @__PURE__ */ jsx(ShapeCreditCardNode, { node: resolvedNode, active });
31254
31408
  case "shape-brokerage":
31255
- return /* @__PURE__ */ jsx(ShapeBrokerageNode, { node: resolvedNode, active });
31409
+ return /* @__PURE__ */ jsx(ShapeBrokerageNode, { node: resolvedNode, active, lang });
31256
31410
  case "shape-exchange":
31257
- return /* @__PURE__ */ jsx(ShapeExchangeNode, { node: resolvedNode, active });
31411
+ return /* @__PURE__ */ jsx(ShapeExchangeNode, { node: resolvedNode, active, lang });
31258
31412
  case "shape-atm":
31259
- return /* @__PURE__ */ jsx(ShapeAtmNode, { node: resolvedNode, active });
31413
+ return /* @__PURE__ */ jsx(ShapeAtmNode, { node: resolvedNode, active, lang });
31260
31414
  case "shape-website":
31261
31415
  return /* @__PURE__ */ jsx(ShapeWebsiteNode, { node: resolvedNode, active });
31262
31416
  case "shape-storefront":
31263
- return /* @__PURE__ */ jsx(ShapeStorefrontNode, { node: resolvedNode, active });
31417
+ return /* @__PURE__ */ jsx(ShapeStorefrontNode, { node: resolvedNode, active, lang });
31264
31418
  case "shape-warehouse":
31265
- return /* @__PURE__ */ jsx(ShapeWarehouseNode, { node: resolvedNode, active });
31419
+ return /* @__PURE__ */ jsx(ShapeWarehouseNode, { node: resolvedNode, active, lang });
31266
31420
  case "shape-online-shop":
31267
31421
  return /* @__PURE__ */ jsx(ShapeOnlineShopNode, { node: resolvedNode, active });
31268
31422
  case "shape-cdn-edge":
31269
31423
  return /* @__PURE__ */ jsx(ShapeCdnEdgeNode, { node: resolvedNode, active });
31270
31424
  case "shape-api-gateway":
31271
- return /* @__PURE__ */ jsx(ShapeApiGatewayNode, { node: resolvedNode, active });
31425
+ return /* @__PURE__ */ jsx(ShapeApiGatewayNode, { node: resolvedNode, active, lang });
31272
31426
  case "shape-auditor":
31273
31427
  return /* @__PURE__ */ jsx(ShapeAuditorNode, { node: resolvedNode, active });
31274
31428
  case "shape-regulator":
@@ -31643,6 +31797,7 @@ function CdlStage({
31643
31797
  {
31644
31798
  node,
31645
31799
  active: activeSet.has(node.id),
31800
+ lang: laid.lang,
31646
31801
  \u95A2\u4FC2\u306E\u53D7\u3051\u53E3: \u7BB1\u306E\u53D7\u3051\u53E3,
31647
31802
  drawing: \u63CF\u304F,
31648
31803
  progress: \u63CF\u304F ? \u63CF\u304F\u9032\u307F : progress,
@@ -33266,6 +33421,6 @@ function slugify(s) {
33266
33421
  return s.toLowerCase().replace(/[^a-z0-9぀-ゟ゠-ヿ一-龯]+/g, "-").replace(/^-|-$/g, "");
33267
33422
  }
33268
33423
 
33269
- export { ARROW_ANGLE_MAX_DEG, ARROW_ENDPOINT_CENTER_TOL, CHAIN_MIN_CLEARANCE, CHAIN_SHIFT_MAX_ACCUMULATED, CHAIN_SHIFT_MAX_ITER, CLASS_RELATION_LOOK, CLEARANCE_LABEL_LABEL, CLEARANCE_LANE_LABEL, CLEARANCE_NODE_LABEL, CLEARANCE_PATH_LABEL, COLUMN_GAP_VARIANCE_TOL, CdlDiagramThumbnail, CdlDiagramView, DETOUR_GAP, DETOUR_SLOT_GAP, DIST_LABEL_PATH_MAX, DIST_LABEL_PATH_MIN, EDGE_HEADS, EDGE_HEAD_DEFAULT, EDGE_HEAD_FILLS, EDGE_HEAD_FILL_DEFAULT, EDGE_LABEL_TEXT, EDGE_REVEALS, EDGE_REVEAL_DEFAULT, EDGE_STUB_OUT, EDGE_STYLES, ER_CARDINALITY_HEAD, FAN_GAP, FONT_RENDER_TOLERANCE_WORLD, FSM_ACTION_MARK, LABEL_INIT_CLEARANCE, LABEL_INIT_CLEARANCE_DOTTED_FLOW, LABEL_SIZE_TOLERANCE_WORLD, LABEL_TO_PATH_CLEARANCE, LANE_BORDER_CLEARANCE_TOL, MARKER_GLOW_RADIUS, MIN_COLUMN_ALIGNMENT_TOLERANCE, MIN_ROW_ALIGNMENT_TOLERANCE, NEAR_COLLISION_DEFAULT_MIN, NEAR_COLLISION_POLICY, NODE_FRAME_SELECTOR, NODE_KINDS, RELATION_FOCUSES, RELATION_FOCUS_DEFAULT, ROW_GAP_VARIANCE_TOL, SEQUENCE_MESSAGE_LOOK, SPEC_CLEARANCE_POLICY, STAGE_SVG_SELECTOR, TARGET_LABEL_PATH_DIST, TONES, WCAG_AA_LARGE, WCAG_AA_NORMAL, applyDerivedValues, assertNever, attachEventHandlers, batch, bboxClearance, bboxDiffWorld, cdlAdapter, chart, classDiagram, compile, computeEventBindingKey, computeFormulaKey, computeInputSignalKey, computeScrollProgress, computeScrollTriggerKey, computeStateValues, computeViewportScale, computed, countEdgeCrossings, countOrderCrossings, createFormulaComputeds, createInputSignals, createInteractiveSignalsAccessor, createScrollProgressHandle, createScrollProgressSignals, diagram, effect, er, evaluate as evaluateFormula, extractIdentifiers, flow, flowchart, funnel, gantt, hasInteractivePrimitives, infrastructure, inputDefaultValue, interpolate, isLargeText, labelInitClearance, layout, layoutWithValidation, mindMap, network, orderNodes, parseFormula, pointRectEdgeDistance, pointToSegmentDistance2 as pointToSegmentDistance, predictLabelBBoxWorld, predictNodeBBoxWorld, projectEdgeLabel, projectNode, projectPathSegment, pxToWorld, quadrant, rectRectClearance, rectRectOverlapArea, relatedFocusSet, rendersRows, requiredContrastRatio, requiredNearClearance, requiredRowsHeight, requiredRowsWidth, requiredSpecClearance, resolveEdgeLabelOverlapsWithChain, resolveEdgeLabelOverlapsWithChainAndPropagate, resolveLabelClearanceAfterPathPasses, resolveOverlapsWithChain, resolveTarget, resolveTargetAll, segmentsIntersect2 as segmentsIntersect, sequence, sequenceBoardMetrics, sequenceStepId, signal, stateMachine, stateMachine2, swimlane, topology, tree, untrack, userJourney, validate, verifyAllDiagramsDom, verifyAuthorIntent, verifyAuthorIntentAll, verifyDiagramDom, visualValidate, visualValidateAll, visualValidateLaid, withDerivedValues, worldToPx };
33424
+ export { ARROW_ANGLE_MAX_DEG, ARROW_ENDPOINT_CENTER_TOL, CHAIN_MIN_CLEARANCE, CHAIN_SHIFT_MAX_ACCUMULATED, CHAIN_SHIFT_MAX_ITER, CLASS_RELATION_LOOK, CLEARANCE_LABEL_LABEL, CLEARANCE_LANE_LABEL, CLEARANCE_NODE_LABEL, CLEARANCE_PATH_LABEL, COLUMN_GAP_VARIANCE_TOL, CdlDiagramThumbnail, CdlDiagramView, DETOUR_GAP, DETOUR_SLOT_GAP, DIST_LABEL_PATH_MAX, DIST_LABEL_PATH_MIN, EDGE_HEADS, EDGE_HEAD_DEFAULT, EDGE_HEAD_FILLS, EDGE_HEAD_FILL_DEFAULT, EDGE_LABEL_TEXT, EDGE_REVEALS, EDGE_REVEAL_DEFAULT, EDGE_STUB_OUT, EDGE_STYLES, ER_CARDINALITY_HEAD, FAN_GAP, FONT_RENDER_TOLERANCE_WORLD, FSM_ACTION_MARK, LABEL_INIT_CLEARANCE, LABEL_INIT_CLEARANCE_DOTTED_FLOW, LABEL_SIZE_TOLERANCE_WORLD, LABEL_TO_PATH_CLEARANCE, LANE_BORDER_CLEARANCE_TOL, MARKER_GLOW_RADIUS, MIN_COLUMN_ALIGNMENT_TOLERANCE, MIN_ROW_ALIGNMENT_TOLERANCE, NEAR_COLLISION_DEFAULT_MIN, NEAR_COLLISION_POLICY, NODE_FRAME_SELECTOR, NODE_KINDS, RELATION_FOCUSES, RELATION_FOCUS_DEFAULT, ROW_GAP_VARIANCE_TOL, SEQUENCE_MESSAGE_LOOK, SPEC_CLEARANCE_POLICY, STAGE_SVG_SELECTOR, TARGET_LABEL_PATH_DIST, TONES, WCAG_AA_LARGE, WCAG_AA_NORMAL, applyDerivedValues, assertNever, attachEventHandlers, batch, bboxClearance, bboxDiffWorld, cdlAdapter, chart, classDiagram, compile, computeEventBindingKey, computeFormulaKey, computeInputSignalKey, computeScrollProgress, computeScrollTriggerKey, computeStateValues, computeViewportScale, computed, countEdgeCrossings, countOrderCrossings, createFormulaComputeds, createInputSignals, createInteractiveSignalsAccessor, createScrollProgressHandle, createScrollProgressSignals, diagram, effect, er, evaluate as evaluateFormula, extractIdentifiers, flow, flowchart, funnel, gantt, hasInteractivePrimitives, infrastructure, inputDefaultValue, interpolate, isLargeText, labelInitClearance, layout, layoutWithValidation, mindMap, network, orderNodes, parseFormula, pointRectEdgeDistance, pointToSegmentDistance2 as pointToSegmentDistance, predictLabelBBoxWorld, predictNodeBBoxWorld, projectEdgeLabel, projectNode, projectPathSegment, pxToWorld, quadrant, rectRectClearance, rectRectOverlapArea, relatedFocusSet, rendersRows, requiredContrastRatio, requiredNearClearance, requiredRowsHeight, requiredRowsWidth, requiredSpecClearance, resolveEdgeLabelOverlapsWithChain, resolveEdgeLabelOverlapsWithChainAndPropagate, resolveLabelClearanceAfterPathPasses, resolveLang, resolveOverlapsWithChain, resolveTarget, resolveTargetAll, segmentsIntersect2 as segmentsIntersect, sequence, sequenceBoardMetrics, sequenceStepId, signal, stateMachine, stateMachine2, swimlane, topology, tree, untrack, userJourney, validate, verifyAllDiagramsDom, verifyAuthorIntent, verifyAuthorIntentAll, verifyDiagramDom, visualValidate, visualValidateAll, visualValidateLaid, withDerivedValues, worldToPx };
33270
33425
  //# sourceMappingURL=index.js.map
33271
33426
  //# sourceMappingURL=index.js.map