@cardenelabs/dragon 0.14.0 → 0.16.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
@@ -1994,6 +1994,11 @@ var PRESET_TYPES = /* @__PURE__ */ new Set([
1994
1994
  "pie",
1995
1995
  "bar",
1996
1996
  "line",
1997
+ "gauge",
1998
+ "radial",
1999
+ "stat",
2000
+ "waffle",
2001
+ "stacked",
1997
2002
  "funnel",
1998
2003
  "tree",
1999
2004
  "journey",
@@ -3427,6 +3432,11 @@ function applyContinuationLines(actor, rest, errors) {
3427
3432
  case "\u5024":
3428
3433
  out.value = stripQuotes(raw);
3429
3434
  break;
3435
+ // 前の時点の値 (#1450)。 内訳を帯で示す図と値 1 つを大きく示す図が読む
3436
+ case "previous":
3437
+ case "\u524D\u306E\u5024":
3438
+ out.previous = stripQuotes(raw);
3439
+ break;
3430
3440
  case "shape":
3431
3441
  case "\u56F3\u5F62":
3432
3442
  out.shape = \u56F3\u5F62\u3068\u3057\u3066\u8AAD\u3080(raw, ln.no, errors);
@@ -3574,6 +3584,9 @@ var ACTOR_ITEM_KEYS = /* @__PURE__ */ new Set([
3574
3584
  "\u88DC\u8DB3",
3575
3585
  "value",
3576
3586
  "\u5024",
3587
+ // 前の時点の値 (#1450)。 内訳の変化を帯で示す図と、値 1 つを大きく示す図が読む
3588
+ "previous",
3589
+ "\u524D\u306E\u5024",
3577
3590
  "rows",
3578
3591
  "\u884C",
3579
3592
  // 箱の中に描く図形 (#1374)
@@ -3699,6 +3712,7 @@ var ACTOR_RESERVED_FIELDS = /* @__PURE__ */ new Set([
3699
3712
  "subtitle",
3700
3713
  "eyebrow",
3701
3714
  "value",
3715
+ "previous",
3702
3716
  "rows",
3703
3717
  "lane",
3704
3718
  "stack",
@@ -3801,6 +3815,7 @@ var INLINE_ACTOR_ALIASES = {
3801
3815
  \u7A2E\u985E: "kind",
3802
3816
  \u88DC\u8DB3: "subtitle",
3803
3817
  \u5024: "value",
3818
+ \u524D\u306E\u5024: "previous",
3804
3819
  \u884C: "rows"
3805
3820
  };
3806
3821
  function \u4E2D\u62EC\u5F27\u306E\u5225\u540D\u3092\u5BC4\u305B\u308B(opts) {
@@ -3819,6 +3834,7 @@ var INLINE_ACTOR_KEYS = /* @__PURE__ */ new Set([
3819
3834
  "subtitle",
3820
3835
  "eyebrow",
3821
3836
  "value",
3837
+ "previous",
3822
3838
  "rows",
3823
3839
  "lane",
3824
3840
  "stack",
@@ -3930,6 +3946,7 @@ function parseActor2(line, errors) {
3930
3946
  owner: isPart ? void 0 : opts.owner,
3931
3947
  end: isPart ? void 0 : opts.end,
3932
3948
  value: opts.value,
3949
+ previous: opts.previous,
3933
3950
  rows: opts.rows ? opts.rows.replace(/^\[|\]$/g, "").split(/,(?![^[]*\])/).map((x) => stripQuotes(x.trim())).filter(Boolean) : void 0,
3934
3951
  lane: opts.lane,
3935
3952
  // 箱の中に描く図形 (#1374)。 パーツでは状態の上書きとして意味を持つため横取りしない
@@ -4261,16 +4278,34 @@ function parsePhase(block, errors) {
4261
4278
  continue;
4262
4279
  }
4263
4280
  if (key === "draw") {
4264
- const \u8A9E = stripQuotes(value).trim();
4281
+ const [\u8A9E = "", \u5272\u5408\u306E\u6587\u5B57, ...\u4F59\u308A] = stripQuotes(value).trim().split(/\s+/);
4265
4282
  if (!DRAW_WORDS.has(\u8A9E)) {
4266
4283
  errors.push({
4267
4284
  line: ln.no,
4268
4285
  message: `draw \u306B\u66F8\u3051\u306A\u3044\u8A9E\u3067\u3059: "${\u8A9E}"`,
4269
4286
  hint: `\u4F7F\u3048\u308B\u8A9E = ${[...DRAW_WORDS].join(", ")}`
4270
4287
  });
4288
+ } else if (\u4F59\u308A.length > 0) {
4289
+ errors.push({
4290
+ line: ln.no,
4291
+ message: `draw \u306B\u66F8\u3051\u308B\u9805\u76EE\u306F\u8A9E\u3068\u5272\u5408\u306E 2 \u3064\u307E\u3067\u3067\u3059: "${stripQuotes(value).trim()}"`,
4292
+ hint: "use `draw: line 0.4`"
4293
+ });
4271
4294
  } else {
4272
4295
  phase.draw = \u8A9E;
4273
4296
  phase.drawPos = { line: ln.no };
4297
+ if (\u5272\u5408\u306E\u6587\u5B57 !== void 0) {
4298
+ const \u5272\u5408 = Number(\u5272\u5408\u306E\u6587\u5B57);
4299
+ if (!Number.isFinite(\u5272\u5408) || \u5272\u5408 <= 0 || \u5272\u5408 > 1) {
4300
+ errors.push({
4301
+ line: ln.no,
4302
+ message: `draw \u306E\u5272\u5408\u304C\u7BC4\u56F2\u5916\u3067\u3059: "${\u5272\u5408\u306E\u6587\u5B57}"`,
4303
+ hint: "0 \u3088\u308A\u5927\u304D\u304F 1 \u4EE5\u4E0B\u3067\u66F8\u304D\u307E\u3059 (\u4F8B `draw: line 0.4`)"
4304
+ });
4305
+ } else {
4306
+ phase.drawRatio = \u5272\u5408;
4307
+ }
4308
+ }
4274
4309
  }
4275
4310
  i += 1;
4276
4311
  continue;
@@ -4752,6 +4787,21 @@ function describeOversizeSource(src) {
4752
4787
  }
4753
4788
 
4754
4789
  // src/compile.ts
4790
+ var \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048 = {
4791
+ entity: "storage",
4792
+ state: "card",
4793
+ contract: "card",
4794
+ proxy: "card",
4795
+ library: "card",
4796
+ interface: "card",
4797
+ eoa: "person",
4798
+ multisig: "signer"
4799
+ };
4800
+ function \u63CF\u3051\u308B\u7A2E\u5225(kind) {
4801
+ if (kind === void 0) return "actor";
4802
+ const \u8AAD\u307F\u66FF\u3048\u5148 = \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048[kind];
4803
+ return \u8AAD\u307F\u66FF\u3048\u5148 ?? kind;
4804
+ }
4755
4805
  function compileToCdl(doc, opts) {
4756
4806
  const oversize = describeOversize({ elements: countDocElements(doc), bytes: 0 });
4757
4807
  if (oversize) throw new Error(oversize);
@@ -4799,6 +4849,21 @@ function compileToCdl(doc, opts) {
4799
4849
  case "line":
4800
4850
  diagram2 = compileValueChart(doc, "line", "chart-line", opts?.onNotice);
4801
4851
  break;
4852
+ case "gauge":
4853
+ diagram2 = compileValueChart(doc, "gauge", "chart-gauge", opts?.onNotice);
4854
+ break;
4855
+ case "radial":
4856
+ diagram2 = compileValueChart(doc, "radial", "chart-radial", opts?.onNotice);
4857
+ break;
4858
+ case "stat":
4859
+ diagram2 = compileValueChart(doc, "stat", "chart-stat", opts?.onNotice);
4860
+ break;
4861
+ case "waffle":
4862
+ diagram2 = compileValueChart(doc, "waffle", "chart-waffle", opts?.onNotice);
4863
+ break;
4864
+ case "stacked":
4865
+ diagram2 = compileValueChart(doc, "stacked", "chart-stacked-bar", opts?.onNotice);
4866
+ break;
4802
4867
  case "funnel":
4803
4868
  diagram2 = compileFunnel(doc, opts?.onNotice);
4804
4869
  break;
@@ -5057,6 +5122,11 @@ var \u56F3\u7A2E\u306E\u4F5C\u308A = {
5057
5122
  pie: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5058
5123
  bar: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5059
5124
  line: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5125
+ gauge: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5126
+ radial: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5127
+ stat: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5128
+ waffle: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5129
+ stacked: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5060
5130
  funnel: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5061
5131
  tree: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5062
5132
  journey: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
@@ -5215,6 +5285,11 @@ var \u7A7A\u306E\u5F62\u306E\u9003\u3052\u5148 = {
5215
5285
  pie: [],
5216
5286
  bar: [],
5217
5287
  line: [],
5288
+ gauge: [],
5289
+ radial: [],
5290
+ stat: [],
5291
+ waffle: [],
5292
+ stacked: [],
5218
5293
  funnel: [],
5219
5294
  tree: [],
5220
5295
  journey: [],
@@ -7063,10 +7138,13 @@ function \u53C2\u7167\u3059\u308B\u540D\u524D(value) {
7063
7138
  function compileValueChart(doc, \u578B, kind, onNotice) {
7064
7139
  const b = diagram(slugify(doc.title), { topic: doc.title });
7065
7140
  const CHART_W = 640;
7066
- const CHART_H = \u578B === "pie" ? 320 : 368;
7141
+ const \u4F4E\u3044\u578B = \u578B === "pie" || \u578B === "gauge" || \u578B === "radial" || \u578B === "waffle" || \u578B === "stat";
7142
+ const CHART_H = \u4F4E\u3044\u578B ? 320 : 368;
7067
7143
  b.lane("chart", { width: CHART_W + 64 });
7068
7144
  const data = [];
7069
7145
  const \u8AAD\u3081\u306A\u3044 = [];
7146
+ const \u524D\u304C\u8AAD\u3081\u306A\u3044 = [];
7147
+ let \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C = 0;
7070
7148
  const \u672A\u5BA3\u8A00 = [];
7071
7149
  let \u672A\u5BA3\u8A00\u884C = 0;
7072
7150
  const \u53C2\u7167\u3067\u304D\u308B = \u6570\u306E\u6B04\u304B\u3089\u53C2\u7167\u3067\u304D\u308B\u540D\u524D(doc);
@@ -7084,9 +7162,29 @@ function compileValueChart(doc, \u578B, kind, onNotice) {
7084
7162
  \u672A\u5BA3\u8A00.push(a.name);
7085
7163
  continue;
7086
7164
  }
7087
- data.push({ label: \u7BB1\u306E\u984C(a), value, ...a.tone !== void 0 ? { tone: a.tone } : {} });
7165
+ const \u524D = a.previous === void 0 ? null : parseChartValue(a.previous);
7166
+ if (a.previous !== void 0 && \u524D === null) {
7167
+ if (\u524D\u304C\u8AAD\u3081\u306A\u3044.length === 0) \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C = a.pos?.line ?? 0;
7168
+ \u524D\u304C\u8AAD\u3081\u306A\u3044.push(a.name);
7169
+ }
7170
+ data.push({
7171
+ label: \u7BB1\u306E\u984C(a),
7172
+ value,
7173
+ ...\u524D === null ? {} : { previous: \u524D },
7174
+ ...a.tone !== void 0 ? { tone: a.tone } : {}
7175
+ });
7088
7176
  }
7089
- const \u8A9E = \u578B === "pie" ? { \u91CF: "\u5272\u5408", \u56F3: "\u5186", \u4F8B: '"45%"' } : \u578B === "bar" ? { \u91CF: "\u5024", \u56F3: "\u68D2", \u4F8B: '"420"' } : { \u91CF: "\u5024", \u56F3: "\u6298\u308C\u7DDA", \u4F8B: '"180"' };
7177
+ const \u8A9E\u306E\u8868 = {
7178
+ pie: { \u91CF: "\u5272\u5408", \u56F3: "\u5186", \u4F8B: '"45%"' },
7179
+ bar: { \u91CF: "\u5024", \u56F3: "\u68D2", \u4F8B: '"420"' },
7180
+ line: { \u91CF: "\u5024", \u56F3: "\u6298\u308C\u7DDA", \u4F8B: '"180"' },
7181
+ gauge: { \u91CF: "\u5024", \u56F3: "\u534A\u5186", \u4F8B: '"680"' },
7182
+ radial: { \u91CF: "\u5024", \u56F3: "\u5F27", \u4F8B: '"72"' },
7183
+ stat: { \u91CF: "\u5024", \u56F3: "\u5927\u304D\u306A\u6570\u5B57", \u4F8B: '"1200"' },
7184
+ waffle: { \u91CF: "\u5272\u5408", \u56F3: "100 \u500B\u306E\u5370", \u4F8B: '"45%"' },
7185
+ stacked: { \u91CF: "\u5185\u8A33\u306E\u5024", \u56F3: "\u5E2F", \u4F8B: '"320"' }
7186
+ };
7187
+ const \u8A9E = \u8A9E\u306E\u8868[\u578B];
7090
7188
  const \u4F1D\u3048\u308B = (\u7A2E\u985E, \u540D\u524D, message, line = 0) => {
7091
7189
  onNotice?.({ kind: \u7A2E\u985E, actor: \u540D\u524D, line, message });
7092
7190
  if (typeof console !== "undefined" && console.warn) console.warn(`[dragon] ${message}`);
@@ -7107,6 +7205,14 @@ function compileValueChart(doc, \u578B, kind, onNotice) {
7107
7205
  \u672A\u5BA3\u8A00\u884C
7108
7206
  );
7109
7207
  }
7208
+ if (\u524D\u304C\u8AAD\u3081\u306A\u3044.length > 0) {
7209
+ \u4F1D\u3048\u308B(
7210
+ "chart-value-unreadable",
7211
+ \u524D\u304C\u8AAD\u3081\u306A\u3044[0],
7212
+ `type: ${\u578B} \u3067\u524D\u306E\u6642\u70B9\u306E\u5024\u3092\u8AAD\u3081\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059 (\u524D\u306E\u5024\u3092\u4F7F\u3044\u307E\u305B\u3093): ${\u524D\u304C\u8AAD\u3081\u306A\u3044.join(", ")}\u3002 \`- \u540D\u524D: { value: ` + \u8A9E.\u4F8B + ", previous: " + \u8A9E.\u4F8B + " }` \u306E\u5F62\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044",
7213
+ \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C
7214
+ );
7215
+ }
7110
7216
  if (doc.flow.length > 0) {
7111
7217
  \u4F1D\u3048\u308B(
7112
7218
  "chart-edge-dropped",
@@ -7570,7 +7676,7 @@ function compileC4(doc) {
7570
7676
  b.node(x.id, {
7571
7677
  lane: lid,
7572
7678
  stack,
7573
- kind: x.actor.kind,
7679
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(x.actor.kind),
7574
7680
  title: x.actor.name
7575
7681
  });
7576
7682
  }
@@ -7602,6 +7708,7 @@ var \u653E\u5C04\u3067\u63CF\u3051\u306A\u3044\u6B04\u306E\u540D\u524D = {
7602
7708
  stack: "\u7A4D\u3080\u9806",
7603
7709
  initial: "\u59CB\u307E\u308A / \u7D42\u308F\u308A \u306E\u5370",
7604
7710
  final: "\u59CB\u307E\u308A / \u7D42\u308F\u308A \u306E\u5370",
7711
+ previous: "\u524D\u306E\u6642\u70B9\u306E\u5024",
7605
7712
  colorHex: "\u8272\u756A\u53F7",
7606
7713
  stateOverride: "\u72B6\u614B\u306E\u4E0A\u66F8\u304D",
7607
7714
  // 位置は「登場人物ごとの箱をどこに置くか」 の指定で、 箱が 1 つの図では置く先が無い
@@ -7969,6 +8076,9 @@ function injectPhasesFallback(diagram2, doc) {
7969
8076
  body: p.body ?? "",
7970
8077
  activate: activateIds,
7971
8078
  ...drawIds.length > 0 ? { draw: drawIds } : {},
8079
+ // 描く速さ (#1441)。 **描く相手が決まった段にだけ載せる** = 語が効かない図種
8080
+ // (`drawIds` が空) で割合だけ渡すと、描画側が「draw が空なのに割合がある」 と知らせる
8081
+ ...drawIds.length > 0 && p.drawRatio !== void 0 ? { drawRatio: p.drawRatio } : {},
7972
8082
  tweens: (p.tweens ?? []).map((t) => ({ stateId: t.state, from: t.from, to: t.to })),
7973
8083
  sets: (p.sets ?? []).map((s) => ({ stateId: s.state, value: s.value })),
7974
8084
  ...p.badge ? { badge: p.badge } : {}
@@ -8154,7 +8264,7 @@ function compileFlow(doc) {
8154
8264
  flowBuilder.step(
8155
8265
  {
8156
8266
  id: slugify(a.name),
8157
- kind: a.kind,
8267
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8158
8268
  title: \u7BB1\u306E\u984C(a)
8159
8269
  },
8160
8270
  edgeLabel
@@ -8184,7 +8294,7 @@ function compileSwimlane(doc) {
8184
8294
  swim.node(nodeId, {
8185
8295
  lane: laneId,
8186
8296
  stack,
8187
- kind: actor?.kind ?? "actor",
8297
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(actor?.kind),
8188
8298
  title: actorName
8189
8299
  });
8190
8300
  laneStackCount.set(laneId, stack + 1);
@@ -8206,7 +8316,7 @@ function compileSwimlane(doc) {
8206
8316
  swim.node(slugify(a.name), {
8207
8317
  lane: swim.laneId(a.name),
8208
8318
  stack: 0,
8209
- kind: a.kind ?? "actor",
8319
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8210
8320
  title: \u7BB1\u306E\u984C(a)
8211
8321
  });
8212
8322
  });
@@ -8248,8 +8358,14 @@ function \u59CB\u307E\u308A\u3068\u7D42\u308F\u308A\u306E\u6C7A\u3081\u65B9(doc)
8248
8358
  \u7D42\u308F\u308A: (a, idx) => \u66F8\u3044\u305F\u7D42\u308F\u308A ? a.final === true : idx === doc.actors.length - 1 && doc.actors.length > 1
8249
8359
  };
8250
8360
  }
8361
+ var \u72B6\u614B\u306E\u56F3\u306E\u65E2\u5B9A\u306E\u7A2E\u985E = "card";
8362
+ function \u65E2\u5B9A\u3068\u9055\u3046\u7A2E\u985E\u3092\u66F8\u3044\u305F(doc) {
8363
+ return doc.actors.some(
8364
+ (a) => a.kindWritten === true && \u63CF\u3051\u308B\u7A2E\u5225(a.kind) !== \u72B6\u614B\u306E\u56F3\u306E\u65E2\u5B9A\u306E\u7A2E\u985E
8365
+ );
8366
+ }
8251
8367
  function compileState(doc) {
8252
- if (doc.animate && doc.animate.phases.length > 0) {
8368
+ if (doc.animate && doc.animate.phases.length > 0 || \u65E2\u5B9A\u3068\u9055\u3046\u7A2E\u985E\u3092\u66F8\u3044\u305F(doc)) {
8253
8369
  return compileGenericWithAnimate(doc, { kind: "state", laneWidth: 360 });
8254
8370
  }
8255
8371
  const fsm = stateMachine({
@@ -8295,7 +8411,7 @@ function compileTopology(doc) {
8295
8411
  for (const a of doc.actors) {
8296
8412
  groupBuilder.add({
8297
8413
  id: slugify(a.name),
8298
- kind: a.kind,
8414
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8299
8415
  title: \u7BB1\u306E\u984C(a)
8300
8416
  });
8301
8417
  }
@@ -8361,7 +8477,12 @@ function compileGenericWithAnimate(doc, opts) {
8361
8477
  while (\u96C6\u5408?.has(stack)) stack += 1;
8362
8478
  \u57CB\u3081\u308B(lid, stack);
8363
8479
  }
8364
- b.node(id, { lane: lid, stack, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8480
+ b.node(id, {
8481
+ lane: lid,
8482
+ stack,
8483
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8484
+ title: \u7BB1\u306E\u984C(a)
8485
+ });
8365
8486
  });
8366
8487
  } else if (kind === "flow" || kind === "topology") {
8367
8488
  const lid = opts.laneId ?? "main";
@@ -8373,7 +8494,12 @@ function compileGenericWithAnimate(doc, opts) {
8373
8494
  doc.actors.forEach((a, idx) => {
8374
8495
  const id = slugify(a.name);
8375
8496
  actorToNodeId.set(a.name, id);
8376
- b.node(id, { lane: lid, stack: idx, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8497
+ b.node(id, {
8498
+ lane: lid,
8499
+ stack: idx,
8500
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8501
+ title: \u7BB1\u306E\u984C(a)
8502
+ });
8377
8503
  });
8378
8504
  } else {
8379
8505
  const \u898B\u51FA\u3057\u3092\u4ED8\u3051\u308B = kind === "swimlane";
@@ -8388,7 +8514,7 @@ function compileGenericWithAnimate(doc, opts) {
8388
8514
  b.node(id, {
8389
8515
  lane: lid,
8390
8516
  stack: 0,
8391
- kind: a.kind,
8517
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8392
8518
  title: \u7BB1\u306E\u984C(a),
8393
8519
  ...isInitial ? { eyebrow: "\u521D\u671F" } : {},
8394
8520
  ...isFinal ? { eyebrow: "\u6700\u7D42" } : {}
@@ -9110,6 +9236,8 @@ var ACCEPTED_KEYS = {
9110
9236
  "subtitle",
9111
9237
  "eyebrow",
9112
9238
  "value",
9239
+ // 前の時点の値 (#1450)。 内訳の変化を帯で示す図と、値 1 つを大きく示す図が読む
9240
+ "previous",
9113
9241
  "rows",
9114
9242
  "lane",
9115
9243
  "stack",
@@ -9162,7 +9290,7 @@ var ACCEPTED_KEYS = {
9162
9290
  "overlay",
9163
9291
  "pos"
9164
9292
  ],
9165
- phase: ["step", "duration", "focus", "body", "badge", "tween", "set", "draw"],
9293
+ phase: ["step", "duration", "focus", "body", "badge", "tween", "set", "draw", "drawRatio"],
9166
9294
  viewport: ["width", "height", "scale", "laneWidth", "gap", "laneGap", "nodeGap", "labelMargin"],
9167
9295
  lane: ["x", "width", "label", "contain", "lifeline", "pos"],
9168
9296
  group: ["label", "lanes"],
@@ -9202,6 +9330,7 @@ var \u6B04\u306E\u578B\u8868 = {
9202
9330
  subtitle: "\u6587\u5B57\u5217",
9203
9331
  eyebrow: "\u6587\u5B57\u5217",
9204
9332
  value: "\u6587\u5B57\u5217",
9333
+ previous: "\u6587\u5B57\u5217",
9205
9334
  rows: "\u6587\u5B57\u5217\u306E\u4E26\u3073",
9206
9335
  lane: "\u6587\u5B57\u5217",
9207
9336
  stack: "\u6570",
@@ -9262,7 +9391,8 @@ var \u6B04\u306E\u578B\u8868 = {
9262
9391
  badge: "\u6587\u5B57\u5217",
9263
9392
  tween: "object",
9264
9393
  set: "object",
9265
- draw: "\u63CF\u304F\u3082\u306E"
9394
+ draw: "\u63CF\u304F\u3082\u306E",
9395
+ drawRatio: "\u6570"
9266
9396
  },
9267
9397
  viewport: {
9268
9398
  width: "\u6570",
@@ -10300,6 +10430,7 @@ function jsonToDoc(json) {
10300
10430
  subtitle: a.subtitle,
10301
10431
  eyebrow: a.eyebrow,
10302
10432
  value: a.value,
10433
+ previous: a.previous,
10303
10434
  rows: a.rows,
10304
10435
  lane: a.lane,
10305
10436
  stack: a.stack,
@@ -10400,6 +10531,9 @@ function jsonToDoc(json) {
10400
10531
  badge: p.badge,
10401
10532
  // 書いた段だけが欄を持つ。 空文字を置くと「書いた」 と「書いていない」 が同じ形になる
10402
10533
  ...p.draw !== void 0 ? { draw: p.draw, drawPos: p0 } : {},
10534
+ // 割合は `draw` がある段にだけ写す。 単独で書いても描く相手が決まらず何も起きないので、
10535
+ // 記法側 (同じ行に書かせる形) と同じ状態に揃える
10536
+ ...p.draw !== void 0 && p.drawRatio !== void 0 ? { drawRatio: p.drawRatio } : {},
10403
10537
  // 段の中で動かす分 (#1186)。 記法側の `tweens` / `sets` と同じ形に写す。
10404
10538
  // 空の配列を置かないのは、記法側が「無ければ field ごと持たない」 形だから
10405
10539
  ...p.tween && Object.keys(p.tween).length > 0 ? {
@@ -10495,6 +10629,11 @@ var diagram_default = {
10495
10629
  "pie",
10496
10630
  "bar",
10497
10631
  "line",
10632
+ "gauge",
10633
+ "radial",
10634
+ "stat",
10635
+ "waffle",
10636
+ "stacked",
10498
10637
  "funnel",
10499
10638
  "tree",
10500
10639
  "journey",
@@ -10502,11 +10641,11 @@ var diagram_default = {
10502
10641
  "c4",
10503
10642
  "mind"
10504
10643
  ],
10505
- description: '\u56F3\u306E\u7A2E\u985E\u3002 \u578B\u3054\u3068\u306B actors \u306E\u66F8\u304D\u65B9\u304C\u9055\u3046\u3002 [\u95A2\u4FC2\u3092\u63CF\u304F] sequence (\u6642\u7CFB\u5217\u306E\u547C\u3073\u51FA\u3057) / flow (\u51E6\u7406\u306E\u6D41\u308C) / swimlane (\u8CAC\u52D9\u3054\u3068\u306E\u6D41\u308C) / er (DB \u306E schema) / state (\u72B6\u614B\u306E\u9077\u79FB) / topology (network) / solidity (contract) / class (UML \u306E class) / c4 (architecture) / mind (\u767A\u60F3\u306E\u679D\u5206\u304B\u308C) \u306F actors \u306B\u540D\u524D\u3092\u4E26\u3079 flow \u306B\u77E2\u5370\u3092\u66F8\u304F\u3002 [\u5024\u3092\u63CF\u304F] pie (\u5272\u5408) / bar (\u68D2\u306E\u9AD8\u3055) / line (\u7DDA\u306E\u9AD8\u3055\u3001 \u66F8\u3044\u305F\u9806\u306B\u4E26\u3076) \u306F actors \u306B `- \u540D\u524D: "45"` \u306E\u5F62\u3067\u6570\u3092\u66F8\u304F\u3002 funnel (\u6BB5\u3054\u3068\u306B\u6E1B\u308B\u6570) \u3082\u540C\u3058\u5F62\u3002 [\u8A9E\u3092\u63CF\u304F] journey (\u4F53\u9A13\u306E\u8D77\u4F0F) \u306F `- \u767B\u9332: "\u4E0D\u6E80"` \u306E\u5F62\u3067 \u6700\u9AD8 / \u6E80\u8DB3 / \u666E\u901A / \u4E0D\u6E80 / \u6012\u308A \u306E\u3069\u308C\u304B\u3092\u66F8\u304F\u3002 quadrant (2 \u8EF8\u306E\u4ED5\u5206\u3051) \u306F `- \u91CD\u8907\u524A\u9664: "\u5DE6\u4E0A"` \u306E\u5F62\u3067 \u5DE6\u4E0A / \u53F3\u4E0A / \u5DE6\u4E0B / \u53F3\u4E0B \u306E\u3069\u308C\u304B\u3092\u66F8\u304F\u3002 [\u6642\u671F\u3092\u63CF\u304F] gantt (\u5DE5\u7A0B\u306E\u4E26\u3073) \u306F `- \u8A2D\u8A08: "1\u6708"` \u306E\u5F62\u3067\u59CB\u307E\u308A\u306E\u6642\u671F\u3092\u66F8\u304D\u3001 flow \u306E\u77E2\u5370\u3067\u524D\u5F8C\u95A2\u4FC2\u3092\u66F8\u304F\u3002 [\u89AA\u5B50\u3092\u63CF\u304F] tree (\u89AA\u5B50\u306E\u5165\u308C\u5B50) \u306F actors \u306B\u540D\u524D\u3092\u4E26\u3079 flow \u306E\u77E2\u5370\u3067\u89AA\u5B50\u3092\u66F8\u304F (\u77E2\u5370\u306E\u5148\u304C\u5B50)'
10644
+ description: '\u56F3\u306E\u7A2E\u985E\u3002 \u578B\u3054\u3068\u306B actors \u306E\u66F8\u304D\u65B9\u304C\u9055\u3046\u3002 [\u95A2\u4FC2\u3092\u63CF\u304F] sequence (\u6642\u7CFB\u5217\u306E\u547C\u3073\u51FA\u3057) / flow (\u51E6\u7406\u306E\u6D41\u308C) / swimlane (\u8CAC\u52D9\u3054\u3068\u306E\u6D41\u308C) / er (DB \u306E schema) / state (\u72B6\u614B\u306E\u9077\u79FB) / topology (network) / solidity (contract) / class (UML \u306E class) / c4 (architecture) / mind (\u767A\u60F3\u306E\u679D\u5206\u304B\u308C) \u306F actors \u306B\u540D\u524D\u3092\u4E26\u3079 flow \u306B\u77E2\u5370\u3092\u66F8\u304F\u3002 [\u5024\u3092\u63CF\u304F] pie (\u5272\u5408) / bar (\u68D2\u306E\u9AD8\u3055) / line (\u7DDA\u306E\u9AD8\u3055\u3001 \u66F8\u3044\u305F\u9806\u306B\u4E26\u3076) / gauge (\u5408\u8A08\u3092\u534A\u5186\u3067\u793A\u3059) / radial (\u5F27\u306E\u9577\u3055\u3067\u6BD4\u3079\u308B) / stat (\u5024 1 \u3064\u3092\u5927\u304D\u304F\u793A\u3059) / waffle (\u5272\u5408\u3092 100 \u500B\u306E\u5370\u3067\u793A\u3059) / stacked (\u5185\u8A33\u3092\u5E2F\u3067\u793A\u3059) \u306F actors \u306B `- \u540D\u524D: "45"` \u306E\u5F62\u3067\u6570\u3092\u66F8\u304F\u3002 stat \u3068 stacked \u306F `- \u540D\u524D: { value: "320", previous: "280" }` \u306E\u5F62\u3067\u524D\u306E\u6642\u70B9\u306E\u5024\u3082\u66F8\u3051\u308B\u3002 funnel (\u6BB5\u3054\u3068\u306B\u6E1B\u308B\u6570) \u3082\u540C\u3058\u5F62\u3002 [\u8A9E\u3092\u63CF\u304F] journey (\u4F53\u9A13\u306E\u8D77\u4F0F) \u306F `- \u767B\u9332: "\u4E0D\u6E80"` \u306E\u5F62\u3067 \u6700\u9AD8 / \u6E80\u8DB3 / \u666E\u901A / \u4E0D\u6E80 / \u6012\u308A \u306E\u3069\u308C\u304B\u3092\u66F8\u304F\u3002 quadrant (2 \u8EF8\u306E\u4ED5\u5206\u3051) \u306F `- \u91CD\u8907\u524A\u9664: "\u5DE6\u4E0A"` \u306E\u5F62\u3067 \u5DE6\u4E0A / \u53F3\u4E0A / \u5DE6\u4E0B / \u53F3\u4E0B \u306E\u3069\u308C\u304B\u3092\u66F8\u304F\u3002 [\u6642\u671F\u3092\u63CF\u304F] gantt (\u5DE5\u7A0B\u306E\u4E26\u3073) \u306F `- \u8A2D\u8A08: "1\u6708"` \u306E\u5F62\u3067\u59CB\u307E\u308A\u306E\u6642\u671F\u3092\u66F8\u304D\u3001 flow \u306E\u77E2\u5370\u3067\u524D\u5F8C\u95A2\u4FC2\u3092\u66F8\u304F\u3002 [\u89AA\u5B50\u3092\u63CF\u304F] tree (\u89AA\u5B50\u306E\u5165\u308C\u5B50) \u306F actors \u306B\u540D\u524D\u3092\u4E26\u3079 flow \u306E\u77E2\u5370\u3067\u89AA\u5B50\u3092\u66F8\u304F (\u77E2\u5370\u306E\u5148\u304C\u5B50)'
10506
10645
  },
10507
10646
  eyebrow: {
10508
10647
  type: "string",
10509
- description: "\u56F3\u8868\u306E\u7BB1\u306E\u4E0A\u306B\u51FA\u3059\u5C0F\u898B\u51FA\u3057 (\u7701\u7565\u53EF)\u3002 \u52B9\u304F\u306E\u306F\u56F3\u5168\u4F53\u3092 1 \u7BB1\u306B\u3059\u308B\u578B (pie / bar / line / funnel / tree / journey / quadrant / mind / gantt) \u3060\u3051\u3002 \u7BB1\u3054\u3068\u306B\u5206\u304B\u308C\u308B\u578B\u3067\u306F\u76F8\u624B\u304C\u6C7A\u307E\u3089\u306A\u3044\u305F\u3081\u3001 actors[].eyebrow \u306B\u66F8\u304F"
10648
+ description: "\u56F3\u8868\u306E\u7BB1\u306E\u4E0A\u306B\u51FA\u3059\u5C0F\u898B\u51FA\u3057 (\u7701\u7565\u53EF)\u3002 \u52B9\u304F\u306E\u306F\u56F3\u5168\u4F53\u3092 1 \u7BB1\u306B\u3059\u308B\u578B (pie / bar / line / gauge / radial / stat / waffle / stacked / funnel / tree / journey / quadrant / mind / gantt) \u3060\u3051\u3002 \u7BB1\u3054\u3068\u306B\u5206\u304B\u308C\u308B\u578B\u3067\u306F\u76F8\u624B\u304C\u6C7A\u307E\u3089\u306A\u3044\u305F\u3081\u3001 actors[].eyebrow \u306B\u66F8\u304F"
10510
10649
  },
10511
10650
  axes: {
10512
10651
  type: "object",
@@ -10575,6 +10714,10 @@ var diagram_default = {
10575
10714
  type: "string",
10576
10715
  description: "actor \u6570\u5024\u8868\u793A (kind: actor \u7528)"
10577
10716
  },
10717
+ previous: {
10718
+ type: "string",
10719
+ description: "\u524D\u306E\u6642\u70B9\u306E\u5024\u3002 type: stacked \u304C 2 \u672C\u76EE\u306E\u5E2F\u3068\u3057\u3066\u63CF\u304D\u3001type: stat \u304C\u5DEE\u3068\u3057\u3066\u51FA\u3059\u3002 \u66F8\u304B\u306A\u3044\u56F3\u306F 1 \u672C\u306E\u307E\u307E"
10720
+ },
10578
10721
  rows: {
10579
10722
  type: "array",
10580
10723
  items: {
@@ -11052,6 +11195,12 @@ var diagram_default = {
11052
11195
  enum: ["line", "bar", "pie", "journey", "mind", "tree", "gantt", "funnel"],
11053
11196
  description: "\u3053\u306E phase \u3067\u8D77\u70B9\u304B\u3089\u63CF\u304F\u3082\u306E\u3002 \u8A9E\u306F\u56F3\u7A2E\u3068\u63C3\u3048\u308B\u3002 line / journey = \u7DDA\u304C\u5DE6\u7AEF\u304B\u3089\u53F3\u3078\u4F38\u3073\u308B / bar = \u68D2\u304C\u6A2A\u8EF8\u304B\u3089\u4E0A\u3078\u4F38\u3073\u308B / pie = \u6247\u304C 12 \u6642\u304B\u3089\u6642\u8A08\u56DE\u308A\u306B\u958B\u304F / mind = \u679D\u304C\u4E2D\u5FC3\u304B\u3089\u5916\u3078\u4F38\u3073\u308B / tree = \u679D\u304C\u6839\u304B\u3089\u4E0B\u3078\u4F38\u3073\u308B / gantt = \u5E2F\u304C\u5404\u59CB\u7AEF\u304B\u3089\u53F3\u3078\u4F38\u3073\u308B / funnel = \u6BB5\u304C\u4E0A\u7AEF\u304B\u3089\u9806\u306B\u7A4D\u307E\u308C\u308B"
11054
11197
  },
11198
+ drawRatio: {
11199
+ type: "number",
11200
+ exclusiveMinimum: 0,
11201
+ maximum: 1,
11202
+ description: "\u63CF\u304D\u7D42\u3048\u308B\u307E\u3067\u306B phase \u306E\u4F55\u5272\u3092\u4F7F\u3046\u304B\u3002 0.4 \u306A\u3089\u9032\u307F\u304C 0.4 \u306B\u9054\u3057\u305F\u6642\u70B9\u3067\u63CF\u304D\u7D42\u308F\u308A\u3001\u6B8B\u308A\u306F\u63CF\u304D\u7D42\u308F\u3063\u305F\u59FF\u306E\u307E\u307E\u5024\u3060\u3051\u304C\u52D5\u304F\u3002 \u66F8\u304B\u306A\u3051\u308C\u3070 phase \u306E\u7D42\u308F\u308A\u306B\u63CF\u304D\u7D42\u308F\u308B\u3002 draw \u3068\u4E00\u7DD2\u306B\u66F8\u304F (draw \u304C\u7121\u3044\u3068\u4F55\u3082\u8D77\u304D\u306A\u3044)"
11203
+ },
11055
11204
  tween: {
11056
11205
  type: "object",
11057
11206
  description: "\u3053\u306E phase \u3067\u88DC\u9593\u3059\u308B\u72B6\u614B\u3002 \u72B6\u614B\u540D -> [\u958B\u59CB\u5024, \u7D42\u4E86\u5024]\u3002 \u540D\u524D\u306F\u82F1\u5B57\u304B _ \u3067\u59CB\u3081\u3001 \u82F1\u6570\u5B57\u3068 _ \u3060\u3051\u3092\u4F7F\u3046",