@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/README.md CHANGED
@@ -84,6 +84,7 @@ flow:
84
84
  | `subtitle` | 題の下の補足 (`補足` とも書ける) |
85
85
  | `eyebrow` | 題の上の小見出し |
86
86
  | `value` | 箱に出す値 (`値` とも書ける) |
87
+ | `previous` | 前の時点の値 (`前の値` とも書ける)。 `type: stacked` が 2 本目の帯として描く |
87
88
  | `rows` | 箱の中に並べる行 (`行` とも書ける) |
88
89
  | `lane` | どの縦列に置くか |
89
90
  | `stack` | 縦列の中の何段目に置くか |
package/dist/index.cjs CHANGED
@@ -1996,6 +1996,11 @@ var PRESET_TYPES = /* @__PURE__ */ new Set([
1996
1996
  "pie",
1997
1997
  "bar",
1998
1998
  "line",
1999
+ "gauge",
2000
+ "radial",
2001
+ "stat",
2002
+ "waffle",
2003
+ "stacked",
1999
2004
  "funnel",
2000
2005
  "tree",
2001
2006
  "journey",
@@ -3429,6 +3434,11 @@ function applyContinuationLines(actor, rest, errors) {
3429
3434
  case "\u5024":
3430
3435
  out.value = stripQuotes(raw);
3431
3436
  break;
3437
+ // 前の時点の値 (#1450)。 内訳を帯で示す図と値 1 つを大きく示す図が読む
3438
+ case "previous":
3439
+ case "\u524D\u306E\u5024":
3440
+ out.previous = stripQuotes(raw);
3441
+ break;
3432
3442
  case "shape":
3433
3443
  case "\u56F3\u5F62":
3434
3444
  out.shape = \u56F3\u5F62\u3068\u3057\u3066\u8AAD\u3080(raw, ln.no, errors);
@@ -3576,6 +3586,9 @@ var ACTOR_ITEM_KEYS = /* @__PURE__ */ new Set([
3576
3586
  "\u88DC\u8DB3",
3577
3587
  "value",
3578
3588
  "\u5024",
3589
+ // 前の時点の値 (#1450)。 内訳の変化を帯で示す図と、値 1 つを大きく示す図が読む
3590
+ "previous",
3591
+ "\u524D\u306E\u5024",
3579
3592
  "rows",
3580
3593
  "\u884C",
3581
3594
  // 箱の中に描く図形 (#1374)
@@ -3701,6 +3714,7 @@ var ACTOR_RESERVED_FIELDS = /* @__PURE__ */ new Set([
3701
3714
  "subtitle",
3702
3715
  "eyebrow",
3703
3716
  "value",
3717
+ "previous",
3704
3718
  "rows",
3705
3719
  "lane",
3706
3720
  "stack",
@@ -3803,6 +3817,7 @@ var INLINE_ACTOR_ALIASES = {
3803
3817
  \u7A2E\u985E: "kind",
3804
3818
  \u88DC\u8DB3: "subtitle",
3805
3819
  \u5024: "value",
3820
+ \u524D\u306E\u5024: "previous",
3806
3821
  \u884C: "rows"
3807
3822
  };
3808
3823
  function \u4E2D\u62EC\u5F27\u306E\u5225\u540D\u3092\u5BC4\u305B\u308B(opts) {
@@ -3821,6 +3836,7 @@ var INLINE_ACTOR_KEYS = /* @__PURE__ */ new Set([
3821
3836
  "subtitle",
3822
3837
  "eyebrow",
3823
3838
  "value",
3839
+ "previous",
3824
3840
  "rows",
3825
3841
  "lane",
3826
3842
  "stack",
@@ -3932,6 +3948,7 @@ function parseActor2(line, errors) {
3932
3948
  owner: isPart ? void 0 : opts.owner,
3933
3949
  end: isPart ? void 0 : opts.end,
3934
3950
  value: opts.value,
3951
+ previous: opts.previous,
3935
3952
  rows: opts.rows ? opts.rows.replace(/^\[|\]$/g, "").split(/,(?![^[]*\])/).map((x) => stripQuotes(x.trim())).filter(Boolean) : void 0,
3936
3953
  lane: opts.lane,
3937
3954
  // 箱の中に描く図形 (#1374)。 パーツでは状態の上書きとして意味を持つため横取りしない
@@ -4263,16 +4280,34 @@ function parsePhase(block, errors) {
4263
4280
  continue;
4264
4281
  }
4265
4282
  if (key === "draw") {
4266
- const \u8A9E = stripQuotes(value).trim();
4283
+ const [\u8A9E = "", \u5272\u5408\u306E\u6587\u5B57, ...\u4F59\u308A] = stripQuotes(value).trim().split(/\s+/);
4267
4284
  if (!DRAW_WORDS.has(\u8A9E)) {
4268
4285
  errors.push({
4269
4286
  line: ln.no,
4270
4287
  message: `draw \u306B\u66F8\u3051\u306A\u3044\u8A9E\u3067\u3059: "${\u8A9E}"`,
4271
4288
  hint: `\u4F7F\u3048\u308B\u8A9E = ${[...DRAW_WORDS].join(", ")}`
4272
4289
  });
4290
+ } else if (\u4F59\u308A.length > 0) {
4291
+ errors.push({
4292
+ line: ln.no,
4293
+ message: `draw \u306B\u66F8\u3051\u308B\u9805\u76EE\u306F\u8A9E\u3068\u5272\u5408\u306E 2 \u3064\u307E\u3067\u3067\u3059: "${stripQuotes(value).trim()}"`,
4294
+ hint: "use `draw: line 0.4`"
4295
+ });
4273
4296
  } else {
4274
4297
  phase.draw = \u8A9E;
4275
4298
  phase.drawPos = { line: ln.no };
4299
+ if (\u5272\u5408\u306E\u6587\u5B57 !== void 0) {
4300
+ const \u5272\u5408 = Number(\u5272\u5408\u306E\u6587\u5B57);
4301
+ if (!Number.isFinite(\u5272\u5408) || \u5272\u5408 <= 0 || \u5272\u5408 > 1) {
4302
+ errors.push({
4303
+ line: ln.no,
4304
+ message: `draw \u306E\u5272\u5408\u304C\u7BC4\u56F2\u5916\u3067\u3059: "${\u5272\u5408\u306E\u6587\u5B57}"`,
4305
+ hint: "0 \u3088\u308A\u5927\u304D\u304F 1 \u4EE5\u4E0B\u3067\u66F8\u304D\u307E\u3059 (\u4F8B `draw: line 0.4`)"
4306
+ });
4307
+ } else {
4308
+ phase.drawRatio = \u5272\u5408;
4309
+ }
4310
+ }
4276
4311
  }
4277
4312
  i += 1;
4278
4313
  continue;
@@ -4754,6 +4789,21 @@ function describeOversizeSource(src) {
4754
4789
  }
4755
4790
 
4756
4791
  // src/compile.ts
4792
+ var \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048 = {
4793
+ entity: "storage",
4794
+ state: "card",
4795
+ contract: "card",
4796
+ proxy: "card",
4797
+ library: "card",
4798
+ interface: "card",
4799
+ eoa: "person",
4800
+ multisig: "signer"
4801
+ };
4802
+ function \u63CF\u3051\u308B\u7A2E\u5225(kind) {
4803
+ if (kind === void 0) return "actor";
4804
+ const \u8AAD\u307F\u66FF\u3048\u5148 = \u8A18\u6CD5\u3060\u3051\u306E\u7A2E\u985E\u306E\u8AAD\u307F\u66FF\u3048[kind];
4805
+ return \u8AAD\u307F\u66FF\u3048\u5148 ?? kind;
4806
+ }
4757
4807
  function compileToCdl(doc, opts) {
4758
4808
  const oversize = describeOversize({ elements: countDocElements(doc), bytes: 0 });
4759
4809
  if (oversize) throw new Error(oversize);
@@ -4801,6 +4851,21 @@ function compileToCdl(doc, opts) {
4801
4851
  case "line":
4802
4852
  diagram2 = compileValueChart(doc, "line", "chart-line", opts?.onNotice);
4803
4853
  break;
4854
+ case "gauge":
4855
+ diagram2 = compileValueChart(doc, "gauge", "chart-gauge", opts?.onNotice);
4856
+ break;
4857
+ case "radial":
4858
+ diagram2 = compileValueChart(doc, "radial", "chart-radial", opts?.onNotice);
4859
+ break;
4860
+ case "stat":
4861
+ diagram2 = compileValueChart(doc, "stat", "chart-stat", opts?.onNotice);
4862
+ break;
4863
+ case "waffle":
4864
+ diagram2 = compileValueChart(doc, "waffle", "chart-waffle", opts?.onNotice);
4865
+ break;
4866
+ case "stacked":
4867
+ diagram2 = compileValueChart(doc, "stacked", "chart-stacked-bar", opts?.onNotice);
4868
+ break;
4804
4869
  case "funnel":
4805
4870
  diagram2 = compileFunnel(doc, opts?.onNotice);
4806
4871
  break;
@@ -5059,6 +5124,11 @@ var \u56F3\u7A2E\u306E\u4F5C\u308A = {
5059
5124
  pie: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5060
5125
  bar: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5061
5126
  line: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5127
+ gauge: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5128
+ radial: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5129
+ stat: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5130
+ waffle: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5131
+ stacked: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5062
5132
  funnel: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5063
5133
  tree: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
5064
5134
  journey: "\u56F3\u5168\u4F53\u3092 1 \u7BB1",
@@ -5217,6 +5287,11 @@ var \u7A7A\u306E\u5F62\u306E\u9003\u3052\u5148 = {
5217
5287
  pie: [],
5218
5288
  bar: [],
5219
5289
  line: [],
5290
+ gauge: [],
5291
+ radial: [],
5292
+ stat: [],
5293
+ waffle: [],
5294
+ stacked: [],
5220
5295
  funnel: [],
5221
5296
  tree: [],
5222
5297
  journey: [],
@@ -7065,10 +7140,13 @@ function \u53C2\u7167\u3059\u308B\u540D\u524D(value) {
7065
7140
  function compileValueChart(doc, \u578B, kind, onNotice) {
7066
7141
  const b = cdl.diagram(slugify(doc.title), { topic: doc.title });
7067
7142
  const CHART_W = 640;
7068
- const CHART_H = \u578B === "pie" ? 320 : 368;
7143
+ const \u4F4E\u3044\u578B = \u578B === "pie" || \u578B === "gauge" || \u578B === "radial" || \u578B === "waffle" || \u578B === "stat";
7144
+ const CHART_H = \u4F4E\u3044\u578B ? 320 : 368;
7069
7145
  b.lane("chart", { width: CHART_W + 64 });
7070
7146
  const data = [];
7071
7147
  const \u8AAD\u3081\u306A\u3044 = [];
7148
+ const \u524D\u304C\u8AAD\u3081\u306A\u3044 = [];
7149
+ let \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C = 0;
7072
7150
  const \u672A\u5BA3\u8A00 = [];
7073
7151
  let \u672A\u5BA3\u8A00\u884C = 0;
7074
7152
  const \u53C2\u7167\u3067\u304D\u308B = \u6570\u306E\u6B04\u304B\u3089\u53C2\u7167\u3067\u304D\u308B\u540D\u524D(doc);
@@ -7086,9 +7164,29 @@ function compileValueChart(doc, \u578B, kind, onNotice) {
7086
7164
  \u672A\u5BA3\u8A00.push(a.name);
7087
7165
  continue;
7088
7166
  }
7089
- data.push({ label: \u7BB1\u306E\u984C(a), value, ...a.tone !== void 0 ? { tone: a.tone } : {} });
7167
+ const \u524D = a.previous === void 0 ? null : parseChartValue(a.previous);
7168
+ if (a.previous !== void 0 && \u524D === null) {
7169
+ if (\u524D\u304C\u8AAD\u3081\u306A\u3044.length === 0) \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C = a.pos?.line ?? 0;
7170
+ \u524D\u304C\u8AAD\u3081\u306A\u3044.push(a.name);
7171
+ }
7172
+ data.push({
7173
+ label: \u7BB1\u306E\u984C(a),
7174
+ value,
7175
+ ...\u524D === null ? {} : { previous: \u524D },
7176
+ ...a.tone !== void 0 ? { tone: a.tone } : {}
7177
+ });
7090
7178
  }
7091
- 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"' };
7179
+ const \u8A9E\u306E\u8868 = {
7180
+ pie: { \u91CF: "\u5272\u5408", \u56F3: "\u5186", \u4F8B: '"45%"' },
7181
+ bar: { \u91CF: "\u5024", \u56F3: "\u68D2", \u4F8B: '"420"' },
7182
+ line: { \u91CF: "\u5024", \u56F3: "\u6298\u308C\u7DDA", \u4F8B: '"180"' },
7183
+ gauge: { \u91CF: "\u5024", \u56F3: "\u534A\u5186", \u4F8B: '"680"' },
7184
+ radial: { \u91CF: "\u5024", \u56F3: "\u5F27", \u4F8B: '"72"' },
7185
+ stat: { \u91CF: "\u5024", \u56F3: "\u5927\u304D\u306A\u6570\u5B57", \u4F8B: '"1200"' },
7186
+ waffle: { \u91CF: "\u5272\u5408", \u56F3: "100 \u500B\u306E\u5370", \u4F8B: '"45%"' },
7187
+ stacked: { \u91CF: "\u5185\u8A33\u306E\u5024", \u56F3: "\u5E2F", \u4F8B: '"320"' }
7188
+ };
7189
+ const \u8A9E = \u8A9E\u306E\u8868[\u578B];
7092
7190
  const \u4F1D\u3048\u308B = (\u7A2E\u985E, \u540D\u524D, message, line = 0) => {
7093
7191
  onNotice?.({ kind: \u7A2E\u985E, actor: \u540D\u524D, line, message });
7094
7192
  if (typeof console !== "undefined" && console.warn) console.warn(`[dragon] ${message}`);
@@ -7109,6 +7207,14 @@ function compileValueChart(doc, \u578B, kind, onNotice) {
7109
7207
  \u672A\u5BA3\u8A00\u884C
7110
7208
  );
7111
7209
  }
7210
+ if (\u524D\u304C\u8AAD\u3081\u306A\u3044.length > 0) {
7211
+ \u4F1D\u3048\u308B(
7212
+ "chart-value-unreadable",
7213
+ \u524D\u304C\u8AAD\u3081\u306A\u3044[0],
7214
+ `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",
7215
+ \u524D\u304C\u8AAD\u3081\u306A\u3044\u884C
7216
+ );
7217
+ }
7112
7218
  if (doc.flow.length > 0) {
7113
7219
  \u4F1D\u3048\u308B(
7114
7220
  "chart-edge-dropped",
@@ -7572,7 +7678,7 @@ function compileC4(doc) {
7572
7678
  b.node(x.id, {
7573
7679
  lane: lid,
7574
7680
  stack,
7575
- kind: x.actor.kind,
7681
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(x.actor.kind),
7576
7682
  title: x.actor.name
7577
7683
  });
7578
7684
  }
@@ -7604,6 +7710,7 @@ var \u653E\u5C04\u3067\u63CF\u3051\u306A\u3044\u6B04\u306E\u540D\u524D = {
7604
7710
  stack: "\u7A4D\u3080\u9806",
7605
7711
  initial: "\u59CB\u307E\u308A / \u7D42\u308F\u308A \u306E\u5370",
7606
7712
  final: "\u59CB\u307E\u308A / \u7D42\u308F\u308A \u306E\u5370",
7713
+ previous: "\u524D\u306E\u6642\u70B9\u306E\u5024",
7607
7714
  colorHex: "\u8272\u756A\u53F7",
7608
7715
  stateOverride: "\u72B6\u614B\u306E\u4E0A\u66F8\u304D",
7609
7716
  // 位置は「登場人物ごとの箱をどこに置くか」 の指定で、 箱が 1 つの図では置く先が無い
@@ -7971,6 +8078,9 @@ function injectPhasesFallback(diagram2, doc) {
7971
8078
  body: p.body ?? "",
7972
8079
  activate: activateIds,
7973
8080
  ...drawIds.length > 0 ? { draw: drawIds } : {},
8081
+ // 描く速さ (#1441)。 **描く相手が決まった段にだけ載せる** = 語が効かない図種
8082
+ // (`drawIds` が空) で割合だけ渡すと、描画側が「draw が空なのに割合がある」 と知らせる
8083
+ ...drawIds.length > 0 && p.drawRatio !== void 0 ? { drawRatio: p.drawRatio } : {},
7974
8084
  tweens: (p.tweens ?? []).map((t) => ({ stateId: t.state, from: t.from, to: t.to })),
7975
8085
  sets: (p.sets ?? []).map((s) => ({ stateId: s.state, value: s.value })),
7976
8086
  ...p.badge ? { badge: p.badge } : {}
@@ -8156,7 +8266,7 @@ function compileFlow(doc) {
8156
8266
  flowBuilder.step(
8157
8267
  {
8158
8268
  id: slugify(a.name),
8159
- kind: a.kind,
8269
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8160
8270
  title: \u7BB1\u306E\u984C(a)
8161
8271
  },
8162
8272
  edgeLabel
@@ -8186,7 +8296,7 @@ function compileSwimlane(doc) {
8186
8296
  swim.node(nodeId, {
8187
8297
  lane: laneId,
8188
8298
  stack,
8189
- kind: actor?.kind ?? "actor",
8299
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(actor?.kind),
8190
8300
  title: actorName
8191
8301
  });
8192
8302
  laneStackCount.set(laneId, stack + 1);
@@ -8208,7 +8318,7 @@ function compileSwimlane(doc) {
8208
8318
  swim.node(slugify(a.name), {
8209
8319
  lane: swim.laneId(a.name),
8210
8320
  stack: 0,
8211
- kind: a.kind ?? "actor",
8321
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8212
8322
  title: \u7BB1\u306E\u984C(a)
8213
8323
  });
8214
8324
  });
@@ -8250,8 +8360,14 @@ function \u59CB\u307E\u308A\u3068\u7D42\u308F\u308A\u306E\u6C7A\u3081\u65B9(doc)
8250
8360
  \u7D42\u308F\u308A: (a, idx) => \u66F8\u3044\u305F\u7D42\u308F\u308A ? a.final === true : idx === doc.actors.length - 1 && doc.actors.length > 1
8251
8361
  };
8252
8362
  }
8363
+ var \u72B6\u614B\u306E\u56F3\u306E\u65E2\u5B9A\u306E\u7A2E\u985E = "card";
8364
+ function \u65E2\u5B9A\u3068\u9055\u3046\u7A2E\u985E\u3092\u66F8\u3044\u305F(doc) {
8365
+ return doc.actors.some(
8366
+ (a) => a.kindWritten === true && \u63CF\u3051\u308B\u7A2E\u5225(a.kind) !== \u72B6\u614B\u306E\u56F3\u306E\u65E2\u5B9A\u306E\u7A2E\u985E
8367
+ );
8368
+ }
8253
8369
  function compileState(doc) {
8254
- if (doc.animate && doc.animate.phases.length > 0) {
8370
+ if (doc.animate && doc.animate.phases.length > 0 || \u65E2\u5B9A\u3068\u9055\u3046\u7A2E\u985E\u3092\u66F8\u3044\u305F(doc)) {
8255
8371
  return compileGenericWithAnimate(doc, { kind: "state", laneWidth: 360 });
8256
8372
  }
8257
8373
  const fsm = cdl.stateMachine({
@@ -8297,7 +8413,7 @@ function compileTopology(doc) {
8297
8413
  for (const a of doc.actors) {
8298
8414
  groupBuilder.add({
8299
8415
  id: slugify(a.name),
8300
- kind: a.kind,
8416
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8301
8417
  title: \u7BB1\u306E\u984C(a)
8302
8418
  });
8303
8419
  }
@@ -8363,7 +8479,12 @@ function compileGenericWithAnimate(doc, opts) {
8363
8479
  while (\u96C6\u5408?.has(stack)) stack += 1;
8364
8480
  \u57CB\u3081\u308B(lid, stack);
8365
8481
  }
8366
- b.node(id, { lane: lid, stack, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8482
+ b.node(id, {
8483
+ lane: lid,
8484
+ stack,
8485
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8486
+ title: \u7BB1\u306E\u984C(a)
8487
+ });
8367
8488
  });
8368
8489
  } else if (kind === "flow" || kind === "topology") {
8369
8490
  const lid = opts.laneId ?? "main";
@@ -8375,7 +8496,12 @@ function compileGenericWithAnimate(doc, opts) {
8375
8496
  doc.actors.forEach((a, idx) => {
8376
8497
  const id = slugify(a.name);
8377
8498
  actorToNodeId.set(a.name, id);
8378
- b.node(id, { lane: lid, stack: idx, kind: a.kind, title: \u7BB1\u306E\u984C(a) });
8499
+ b.node(id, {
8500
+ lane: lid,
8501
+ stack: idx,
8502
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8503
+ title: \u7BB1\u306E\u984C(a)
8504
+ });
8379
8505
  });
8380
8506
  } else {
8381
8507
  const \u898B\u51FA\u3057\u3092\u4ED8\u3051\u308B = kind === "swimlane";
@@ -8390,7 +8516,7 @@ function compileGenericWithAnimate(doc, opts) {
8390
8516
  b.node(id, {
8391
8517
  lane: lid,
8392
8518
  stack: 0,
8393
- kind: a.kind,
8519
+ kind: \u63CF\u3051\u308B\u7A2E\u5225(a.kind),
8394
8520
  title: \u7BB1\u306E\u984C(a),
8395
8521
  ...isInitial ? { eyebrow: "\u521D\u671F" } : {},
8396
8522
  ...isFinal ? { eyebrow: "\u6700\u7D42" } : {}
@@ -9112,6 +9238,8 @@ var ACCEPTED_KEYS = {
9112
9238
  "subtitle",
9113
9239
  "eyebrow",
9114
9240
  "value",
9241
+ // 前の時点の値 (#1450)。 内訳の変化を帯で示す図と、値 1 つを大きく示す図が読む
9242
+ "previous",
9115
9243
  "rows",
9116
9244
  "lane",
9117
9245
  "stack",
@@ -9164,7 +9292,7 @@ var ACCEPTED_KEYS = {
9164
9292
  "overlay",
9165
9293
  "pos"
9166
9294
  ],
9167
- phase: ["step", "duration", "focus", "body", "badge", "tween", "set", "draw"],
9295
+ phase: ["step", "duration", "focus", "body", "badge", "tween", "set", "draw", "drawRatio"],
9168
9296
  viewport: ["width", "height", "scale", "laneWidth", "gap", "laneGap", "nodeGap", "labelMargin"],
9169
9297
  lane: ["x", "width", "label", "contain", "lifeline", "pos"],
9170
9298
  group: ["label", "lanes"],
@@ -9204,6 +9332,7 @@ var \u6B04\u306E\u578B\u8868 = {
9204
9332
  subtitle: "\u6587\u5B57\u5217",
9205
9333
  eyebrow: "\u6587\u5B57\u5217",
9206
9334
  value: "\u6587\u5B57\u5217",
9335
+ previous: "\u6587\u5B57\u5217",
9207
9336
  rows: "\u6587\u5B57\u5217\u306E\u4E26\u3073",
9208
9337
  lane: "\u6587\u5B57\u5217",
9209
9338
  stack: "\u6570",
@@ -9264,7 +9393,8 @@ var \u6B04\u306E\u578B\u8868 = {
9264
9393
  badge: "\u6587\u5B57\u5217",
9265
9394
  tween: "object",
9266
9395
  set: "object",
9267
- draw: "\u63CF\u304F\u3082\u306E"
9396
+ draw: "\u63CF\u304F\u3082\u306E",
9397
+ drawRatio: "\u6570"
9268
9398
  },
9269
9399
  viewport: {
9270
9400
  width: "\u6570",
@@ -10302,6 +10432,7 @@ function jsonToDoc(json) {
10302
10432
  subtitle: a.subtitle,
10303
10433
  eyebrow: a.eyebrow,
10304
10434
  value: a.value,
10435
+ previous: a.previous,
10305
10436
  rows: a.rows,
10306
10437
  lane: a.lane,
10307
10438
  stack: a.stack,
@@ -10402,6 +10533,9 @@ function jsonToDoc(json) {
10402
10533
  badge: p.badge,
10403
10534
  // 書いた段だけが欄を持つ。 空文字を置くと「書いた」 と「書いていない」 が同じ形になる
10404
10535
  ...p.draw !== void 0 ? { draw: p.draw, drawPos: p0 } : {},
10536
+ // 割合は `draw` がある段にだけ写す。 単独で書いても描く相手が決まらず何も起きないので、
10537
+ // 記法側 (同じ行に書かせる形) と同じ状態に揃える
10538
+ ...p.draw !== void 0 && p.drawRatio !== void 0 ? { drawRatio: p.drawRatio } : {},
10405
10539
  // 段の中で動かす分 (#1186)。 記法側の `tweens` / `sets` と同じ形に写す。
10406
10540
  // 空の配列を置かないのは、記法側が「無ければ field ごと持たない」 形だから
10407
10541
  ...p.tween && Object.keys(p.tween).length > 0 ? {
@@ -10497,6 +10631,11 @@ var diagram_default = {
10497
10631
  "pie",
10498
10632
  "bar",
10499
10633
  "line",
10634
+ "gauge",
10635
+ "radial",
10636
+ "stat",
10637
+ "waffle",
10638
+ "stacked",
10500
10639
  "funnel",
10501
10640
  "tree",
10502
10641
  "journey",
@@ -10504,11 +10643,11 @@ var diagram_default = {
10504
10643
  "c4",
10505
10644
  "mind"
10506
10645
  ],
10507
- 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)'
10646
+ 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)'
10508
10647
  },
10509
10648
  eyebrow: {
10510
10649
  type: "string",
10511
- 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"
10650
+ 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"
10512
10651
  },
10513
10652
  axes: {
10514
10653
  type: "object",
@@ -10577,6 +10716,10 @@ var diagram_default = {
10577
10716
  type: "string",
10578
10717
  description: "actor \u6570\u5024\u8868\u793A (kind: actor \u7528)"
10579
10718
  },
10719
+ previous: {
10720
+ type: "string",
10721
+ 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"
10722
+ },
10580
10723
  rows: {
10581
10724
  type: "array",
10582
10725
  items: {
@@ -11054,6 +11197,12 @@ var diagram_default = {
11054
11197
  enum: ["line", "bar", "pie", "journey", "mind", "tree", "gantt", "funnel"],
11055
11198
  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"
11056
11199
  },
11200
+ drawRatio: {
11201
+ type: "number",
11202
+ exclusiveMinimum: 0,
11203
+ maximum: 1,
11204
+ 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)"
11205
+ },
11057
11206
  tween: {
11058
11207
  type: "object",
11059
11208
  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",