@cardenelabs/dragon 0.30.0 → 0.32.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.
Files changed (55) hide show
  1. package/README.md +314 -12
  2. package/dist/index.cjs +6966 -1438
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +2150 -118
  5. package/dist/index.d.ts +2150 -118
  6. package/dist/index.js +6950 -1440
  7. package/dist/index.js.map +1 -1
  8. package/package.json +12 -13
  9. package/src/compile/actor-ids.ts +6 -15
  10. package/src/compile/actor-option-notice.ts +379 -0
  11. package/src/compile/actors.ts +32 -3
  12. package/src/compile/c4.ts +0 -3
  13. package/src/compile/chain.ts +43 -4
  14. package/src/compile/chart-fields.ts +16 -1
  15. package/src/compile/direction.ts +50 -11
  16. package/src/compile/edge-option-notice.ts +112 -0
  17. package/src/compile/flowchart.ts +344 -0
  18. package/src/compile/funnel.ts +14 -2
  19. package/src/compile/gantt.ts +141 -36
  20. package/src/compile/generic.ts +473 -61
  21. package/src/compile/journey.ts +14 -5
  22. package/src/compile/kinds.ts +5 -13
  23. package/src/compile/lanes.ts +95 -13
  24. package/src/compile/metro.ts +271 -0
  25. package/src/compile/mind.ts +55 -5
  26. package/src/compile/notice.ts +51 -4
  27. package/src/compile/order.ts +62 -0
  28. package/src/compile/parts.ts +107 -33
  29. package/src/compile/placement-apply.ts +27 -11
  30. package/src/compile/quadrant.ts +171 -16
  31. package/src/compile/record.ts +75 -0
  32. package/src/compile/row-marks.ts +128 -0
  33. package/src/compile/sequence.ts +105 -26
  34. package/src/compile/slug.ts +9 -1
  35. package/src/compile/stages.ts +247 -0
  36. package/src/compile/subtitle.ts +15 -2
  37. package/src/compile/swimlane-marks.ts +87 -0
  38. package/src/compile/swimlane.ts +13 -14
  39. package/src/compile/timeline.ts +213 -0
  40. package/src/compile/topology.ts +3 -9
  41. package/src/compile/tree.ts +13 -4
  42. package/src/compile/value-chart.ts +179 -25
  43. package/src/compile.ts +1550 -370
  44. package/src/focus.ts +2 -2
  45. package/src/index.ts +34 -2
  46. package/src/json-parser.ts +1407 -48
  47. package/src/keywords.ts +251 -17
  48. package/src/notation-lint.ts +41 -64
  49. package/src/schemas/diagram.json +643 -20
  50. package/src/types.ts +336 -35
  51. package/src/v05/parser.ts +2451 -271
  52. package/src/compile/class.ts +0 -100
  53. package/src/compile/er.ts +0 -44
  54. package/src/compile/solidity.ts +0 -39
  55. package/src/compile/state.ts +0 -71
@@ -4,6 +4,9 @@
4
4
  "title": "Dragon DSL Diagram",
5
5
  "description": "LLM 向け Dragon DSL の JSON Schema。 Anthropic Claude tool use / OpenAI GPT structured output の schema field に注入して使う。 生成された JSON は jsonToDiagram() に渡して CdlDiagram に変換する。",
6
6
  "type": "object",
7
+ "$defs": {
8
+ "positiveNumber": { "type": "number", "exclusiveMinimum": 0 }
9
+ },
7
10
  "required": [
8
11
  "title",
9
12
  "type",
@@ -22,13 +25,13 @@
22
25
  "enum": [
23
26
  "sequence",
24
27
  "flow",
28
+ "flowchart",
25
29
  "swimlane",
26
- "er",
27
- "state",
30
+ "record",
28
31
  "topology",
29
32
  "solidity",
30
33
  "gantt",
31
- "class",
34
+ "chart",
32
35
  "pie",
33
36
  "bar",
34
37
  "line",
@@ -45,11 +48,289 @@
45
48
  "c4",
46
49
  "mind"
47
50
  ],
48
- "description": "図の種類。 型ごとに actors の書き方が違う。 [関係を描く] sequence (時系列の呼び出し) / flow (処理の流れ) / swimlane (責務ごとの流れ) / er (DB の schema) / state (状態の遷移) / topology (network) / solidity (contract) / class (UML の class) / c4 (architecture) / mind (発想の枝分かれ) は actors に名前を並べ flow に矢印を書く。 [値を描く] pie (割合) / bar (棒の高さ) / line (線の高さ、 書いた順に並ぶ) / gauge (合計を半円で示す) / radial (弧の長さで比べる) / stat (値 1 つを大きく示す) / waffle (割合を 100 個の印で示す) / stacked (内訳を帯で示す) / slope (2 時点を直線でつなぎ増減と順位の入れ替わりを示す) は actors に `- 名前: \"45\"` の形で数を書く。 stat と stacked と slope は `- 名前: { value: \"320\", previous: \"280\" }` の形で前の時点の値も書ける。 funnel (段ごとに減る数) も同じ形。 [語を描く] journey (体験の起伏) は `- 登録: \"不満\"` の形で 最高 / 満足 / 普通 / 不満 / 怒り のどれかを書く。 quadrant (2 軸の仕分け) は `- 重複削除: \"左上\"` の形で 左上 / 右上 / 左下 / 右下 のどれかを書く。 [時期を描く] gantt (工程の並び) は `- 設計: \"1月\"` の形で始まりの時期を書き、 flow の矢印で前後関係を書く。 [親子を描く] tree (親子の入れ子) は actors に名前を並べ flow の矢印で親子を書く (矢印の先が子)"
51
+ "description": "図の種類。 型ごとに actors の書き方が違う。 [関係を描く] sequence (時系列の呼び出し) / flow (処理の流れ) / flowchart (分かれ道と判断を含む手順) / swimlane (責務ごとの流れ) / record (箱が行を持ち関係を持つ図。 表のつながり、移り変わり、UML クラス関係にも使う) / topology (network) / c4 (architecture) / mind (発想の枝分かれ) は actors に名前を並べ flow に矢印を書く。 [値を描く] chart (数の並び) は actors に `- 名前: \"45\"` の形で数を書き、 shape で形を選ぶ (pie = 割合 / bar = 棒の高さ / line = 線の高さで書いた順に並ぶ / gauge = 合計を半円で示す / radial = 弧の長さで比べる / stat = 値 1 つを大きく示す / waffle = 割合を 100 個の印で示す / stacked = 内訳を帯で示す / slope = 2 時点を直線でつなぎ増減と順位の入れ替わりを示す)。 shape が stat と stacked と slope の時は `- 名前: { value: \"320\", previous: \"280\" }` の形で前の時点の値も書ける。 funnel (段ごとに減る数) も同じ形。 [語を描く] journey (体験の起伏) は `- 登録: \"不満\"` の形で 最高 / 満足 / 普通 / 不満 / 怒り のどれかを書く。 quadrant (2 軸の仕分け) は `- 重複削除: \"左上\"` の形で 左上 / 右上 / 左下 / 右下 のどれかを書く。 [時期を描く] gantt (工程の並び) は `- 設計: \"1月\"` の形で始まりの時期を書き、 flow の矢印で前後関係を書く。 [親子を描く] tree (親子の入れ子) は actors に名前を並べ flow の矢印で親子を書く (矢印の先が子)。 [古い綴り] solidity は sequence と order: kind の組、 pie / bar / line / gauge / radial / stat / waffle / stacked / slope は chart と同じ綴りの shape の組と同じ扱いになる"
49
52
  },
53
+ "form": {
54
+ "type": "string",
55
+ "enum": ["ring", "arcs", "table", "輪", "積層の弧", "銘板"],
56
+ "description": "shape: pie の見せ方。輪 / 積層の弧 / 銘板。"
57
+ },
58
+ "見せ方": {
59
+ "type": "string",
60
+ "enum": ["ring", "arcs", "table", "輪", "積層の弧", "銘板"],
61
+ "description": "form の和名。両方あれば form を採る。"
62
+ },
63
+ "ticks": {
64
+ "type": "array",
65
+ "minItems": 1,
66
+ "items": { "type": "string", "minLength": 1 },
67
+ "description": "gantt の目盛りを左から順に明示する。"
68
+ },
69
+ "目盛り": {
70
+ "type": "array",
71
+ "minItems": 1,
72
+ "items": { "type": "string", "minLength": 1 },
73
+ "description": "ticks の和名。両方あれば ticks を採る。"
74
+ },
75
+ "ganttToday": {
76
+ "type": "object",
77
+ "additionalProperties": false,
78
+ "required": ["index", "label"],
79
+ "properties": {
80
+ "index": { "type": "number" },
81
+ "label": { "type": "string" }
82
+ },
83
+ "description": "gantt の今日の線の位置と札。"
84
+ },
85
+ "ganttTickLabels": {
86
+ "type": "array",
87
+ "minItems": 1,
88
+ "items": { "type": "string" },
89
+ "description": "gantt の目盛りに順番に出す名前。"
90
+ },
91
+ "ganttBarEnd": {
92
+ "type": "string",
93
+ "enum": ["position"],
94
+ "description": "gantt の帯を end の位置で止める。"
95
+ },
96
+ "ganttBarThickness": {
97
+ "type": "string",
98
+ "enum": ["thin"],
99
+ "description": "gantt の帯を見本の比で細くする。"
100
+ },
101
+ "chartSeriesSkipMuted": { "type": "boolean" },
102
+ "chartLineSeries": {
103
+ "type": "array",
104
+ "minItems": 1,
105
+ "items": {
106
+ "type": "object",
107
+ "additionalProperties": false,
108
+ "required": ["points"],
109
+ "properties": {
110
+ "label": { "type": "string" },
111
+ "tone": { "type": "string" },
112
+ "dash": { "type": "string", "enum": ["solid", "dotted"] },
113
+ "marker": { "type": "string", "enum": ["dot", "hollow", "none"] },
114
+ "valueIndexes": { "type": "array", "items": { "type": "integer", "minimum": 0 } },
115
+ "points": {
116
+ "type": "array",
117
+ "minItems": 1,
118
+ "items": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": ["label", "value"],
122
+ "properties": {
123
+ "label": { "type": "string" },
124
+ "value": { "type": ["number", "string"] }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ },
131
+ "chartPieCenterLabel": { "type": "string" },
132
+ "chartPieTableColumns": { "type": "string", "enum": ["share-value", "value"] },
133
+ "chartPieRingWidth": { "type": "string", "enum": ["thick", "thin"] },
134
+ "chartSlopePeriods": {
135
+ "type": "array",
136
+ "minItems": 2,
137
+ "maxItems": 2,
138
+ "items": { "type": "string", "minLength": 1 }
139
+ },
140
+ "chartSlopeEmphasisIds": {
141
+ "type": "array",
142
+ "minItems": 1,
143
+ "items": { "type": "string", "minLength": 1 }
144
+ },
145
+ "chartSlopeUnit": { "type": "string" },
146
+ "chartStackedPeriods": {
147
+ "type": "array",
148
+ "minItems": 1,
149
+ "items": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "required": ["label", "values"],
153
+ "properties": {
154
+ "label": { "type": "string" },
155
+ "values": { "type": "array", "items": { "type": ["number", "string"] } }
156
+ }
157
+ }
158
+ },
159
+ "chartStackedRateId": { "type": "string" },
160
+ "chartStackedLegendPosition": { "type": "string", "enum": ["top", "bottom"] },
161
+ "chartGaugeValue": {
162
+ "type": "object",
163
+ "additionalProperties": false,
164
+ "required": ["max", "current"],
165
+ "properties": {
166
+ "max": { "type": "number", "exclusiveMinimum": 0 },
167
+ "current": {
168
+ "anyOf": [
169
+ { "type": "number" },
170
+ { "type": "string", "pattern": "\\S" }
171
+ ]
172
+ },
173
+ "target": {
174
+ "anyOf": [
175
+ { "type": "number" },
176
+ { "type": "string", "pattern": "\\S" }
177
+ ]
178
+ },
179
+ "previous": {
180
+ "anyOf": [
181
+ { "type": "number" },
182
+ { "type": "string", "pattern": "\\S" }
183
+ ]
184
+ },
185
+ "previousLabel": { "type": "string" }
186
+ }
187
+ },
188
+ "chartWaffleLegendPosition": { "type": "string", "enum": ["left", "right"] },
189
+ "funnelForm": { "type": "string", "enum": ["trapezoid", "proportional-bars"] },
190
+ "funnelRate": { "type": "string", "enum": ["drop", "conversion", "none"] },
191
+ "quadrantPointLabelSide": { "type": "string", "enum": ["auto", "right"] },
192
+ "treeNodeForm": { "type": "string", "enum": ["accent", "frame"] },
193
+ "treeSize": {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "properties": {
197
+ "nodeWidths": {
198
+ "type": "array",
199
+ "minItems": 1,
200
+ "items": { "type": "number", "exclusiveMinimum": 0 }
201
+ },
202
+ "nodeHeight": { "type": "number", "exclusiveMinimum": 0 },
203
+ "titleFontSize": { "type": "number", "exclusiveMinimum": 0 },
204
+ "subtitleFontSize": { "type": "number", "exclusiveMinimum": 0 },
205
+ "siblingGap": { "type": "number", "minimum": 0 },
206
+ "levelGap": { "type": "number", "minimum": 0 }
207
+ }
208
+ },
209
+ "treeEdgeTone": { "type": "string", "enum": ["accent", "depth"] },
210
+ "treeEdgeHead": { "type": "string", "enum": ["none", "triangle"] },
211
+ "mindForm": { "type": "string", "enum": ["filled", "outline"] },
212
+ "mindSize": {
213
+ "type": "object",
214
+ "additionalProperties": false,
215
+ "properties": {
216
+ "contentOffset": {
217
+ "type": "object",
218
+ "additionalProperties": false,
219
+ "required": ["x", "y"],
220
+ "properties": {
221
+ "x": { "type": "number" },
222
+ "y": { "type": "number" }
223
+ }
224
+ },
225
+ "root": {
226
+ "type": "object",
227
+ "additionalProperties": false,
228
+ "properties": {
229
+ "width": { "type": "number", "exclusiveMinimum": 0 },
230
+ "height": { "type": "number", "exclusiveMinimum": 0 },
231
+ "fontSize": { "type": "number", "exclusiveMinimum": 0 }
232
+ }
233
+ },
234
+ "branch": {
235
+ "type": "object",
236
+ "additionalProperties": false,
237
+ "properties": {
238
+ "width": { "type": "number", "exclusiveMinimum": 0 },
239
+ "height": { "type": "number", "exclusiveMinimum": 0 },
240
+ "fontSize": { "type": "number", "exclusiveMinimum": 0 }
241
+ }
242
+ },
243
+ "leaf": {
244
+ "type": "object",
245
+ "additionalProperties": false,
246
+ "properties": {
247
+ "fontSize": { "type": "number", "exclusiveMinimum": 0 }
248
+ }
249
+ },
250
+ "rootBranchGap": { "type": "number", "minimum": 0 },
251
+ "branchLeafGap": { "type": "number", "minimum": 0 },
252
+ "branchRowGap": { "type": "number", "minimum": 0 },
253
+ "branchRowOffset": { "type": "number" },
254
+ "leafRowGap": { "type": "number", "minimum": 0 },
255
+ "leafRowOffset": { "type": "number" }
256
+ }
257
+ },
258
+ "journeyForm": { "type": "string", "enum": ["bands", "rules"] },
259
+ "journeyLineForm": { "type": "string", "enum": ["curve", "straight"] },
260
+ "journeyLabels": {
261
+ "type": "object",
262
+ "additionalProperties": false,
263
+ "required": ["delighted", "happy", "neutral", "frustrated", "angry"],
264
+ "properties": {
265
+ "delighted": { "type": "string", "minLength": 1 },
266
+ "happy": { "type": "string", "minLength": 1 },
267
+ "neutral": { "type": "string", "minLength": 1 },
268
+ "frustrated": { "type": "string", "minLength": 1 },
269
+ "angry": { "type": "string", "minLength": 1 }
270
+ }
271
+ },
272
+ "sequenceActorForm": { "type": "string", "enum": ["box"] },
273
+ "sequenceLabelForm": { "type": "string", "enum": ["kind"] },
274
+ "sequenceReturnHead": { "type": "string", "enum": ["solid"] },
275
+ "sequenceRowGap": { "type": "number", "exclusiveMinimum": 0 },
276
+ "sequenceGutter": { "type": "number", "exclusiveMinimum": 0 },
277
+ "sequenceBandWidth": { "type": "number", "exclusiveMinimum": 0 },
278
+ "sequenceSelfLoop": {
279
+ "type": "object",
280
+ "additionalProperties": false,
281
+ "properties": {
282
+ "form": { "type": "string", "enum": ["orthogonal"] },
283
+ "width": { "type": "number", "exclusiveMinimum": 0 },
284
+ "drop": { "type": "number", "exclusiveMinimum": 0 }
285
+ }
286
+ },
287
+ "sequenceKindLabels": {
288
+ "type": "object",
289
+ "additionalProperties": false,
290
+ "properties": {
291
+ "call": { "type": "string" },
292
+ "return": { "type": "string" },
293
+ "fire": { "type": "string" }
294
+ }
295
+ },
296
+ "figureCard": {
297
+ "type": "object",
298
+ "additionalProperties": false,
299
+ "required": ["label"],
300
+ "properties": {
301
+ "label": { "type": "string" },
302
+ "note": { "type": "string" }
303
+ }
304
+ },
305
+ "figureSize": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "required": ["width", "height"],
309
+ "properties": {
310
+ "width": { "type": "number", "exclusiveMinimum": 0 },
311
+ "height": { "type": "number", "exclusiveMinimum": 0 }
312
+ }
313
+ },
314
+ "terminalDecoration": { "type": "object", "additionalProperties": false, "properties": { "windowControls": { "type": "boolean" }, "cursor": { "type": "boolean" }, "rowOrdinal": { "type": "boolean" } } },
315
+ "cornerForm": { "type": "string", "enum": ["theme-variants"] },
316
+ "chartBarShape": { "type": "string", "enum": ["split", "top-rounded"] },
317
+ "figureKindLabel": { "type": "object", "additionalProperties": false, "required": ["text"], "properties": { "text": { "type": "string", "minLength": 1 }, "x": { "type": "number" }, "y": { "type": "number" }, "fontSize": { "type": "number", "exclusiveMinimum": 0 }, "fontWeight": { "type": "number", "exclusiveMinimum": 0 }, "letterSpacing": { "type": "number", "minimum": 0 } } },
318
+ "figureInset": { "type": "object", "additionalProperties": false, "properties": { "top": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 }, "bottom": { "type": "number", "minimum": 0 }, "left": { "type": "number", "minimum": 0 }, "radius": { "type": "number", "minimum": 0 } } },
319
+ "journeySize": { "type": "object", "additionalProperties": false, "properties": { "plotPadding": { "type": "object", "additionalProperties": false, "properties": { "left": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 } } }, "pointPadding": { "type": "object", "additionalProperties": false, "properties": { "left": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 } } } } },
320
+ "chartBarSize": { "type": "object", "additionalProperties": false, "properties": { "tickFontSize": { "$ref": "#/$defs/positiveNumber" }, "valueFontSize": { "$ref": "#/$defs/positiveNumber" }, "labelFontSize": { "$ref": "#/$defs/positiveNumber" }, "plotPadding": { "type": "object", "additionalProperties": false, "properties": { "top": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 }, "bottom": { "type": "number", "minimum": 0 }, "left": { "type": "number", "minimum": 0 } } }, "barWidth": { "$ref": "#/$defs/positiveNumber" }, "cornerRadius": { "type": "number", "minimum": 0 } } },
321
+ "chartLineSize": { "type": "object", "additionalProperties": false, "properties": { "valueLabelOffset": { "type": "object", "additionalProperties": false, "properties": { "above": { "type": "number", "minimum": 0 }, "below": { "type": "number", "minimum": 0 } } }, "tickFontSize": { "$ref": "#/$defs/positiveNumber" }, "periodFontSize": { "$ref": "#/$defs/positiveNumber" }, "pointRadius": { "$ref": "#/$defs/positiveNumber" }, "plotPadding": { "type": "object", "additionalProperties": false, "properties": { "top": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 }, "bottom": { "type": "number", "minimum": 0 }, "left": { "type": "number", "minimum": 0 } } }, "tickGap": { "type": "number", "minimum": 0 }, "pointPadding": { "type": "object", "additionalProperties": false, "properties": { "left": { "type": "number", "minimum": 0 }, "right": { "type": "number", "minimum": 0 } } }, "periodY": { "type": "number", "minimum": 0 } } },
322
+ "chartPieSize": { "type": "object", "additionalProperties": false, "properties": { "tableWidth": { "$ref": "#/$defs/positiveNumber" }, "tableLabelFontSize": { "$ref": "#/$defs/positiveNumber" }, "tableValueFontSize": { "$ref": "#/$defs/positiveNumber" }, "tableRowGap": { "type": "number", "minimum": 0 }, "tablePaddingInline": { "type": "number", "minimum": 0 }, "outerRadius": { "$ref": "#/$defs/positiveNumber" }, "centerX": { "type": "number", "minimum": 0 } } },
323
+ "chartWaffleSize": { "type": "object", "additionalProperties": false, "properties": { "gridLeft": { "type": "number", "minimum": 0 }, "cellPitch": { "$ref": "#/$defs/positiveNumber" } } },
324
+ "chartSlopeLabelTemplate": { "type": "object", "additionalProperties": false, "properties": { "left": { "type": "string" }, "right": { "type": "string" } } },
325
+ "chartSlopeSize": { "type": "object", "additionalProperties": false, "properties": { "pointRadius": { "$ref": "#/$defs/positiveNumber" }, "periodFontSize": { "$ref": "#/$defs/positiveNumber" }, "labelFontSize": { "$ref": "#/$defs/positiveNumber" }, "leftAxisX": { "type": "number", "minimum": 0 }, "axisGap": { "$ref": "#/$defs/positiveNumber" }, "labelAxisGap": { "type": "number", "minimum": 0 }, "plotPadding": { "type": "object", "additionalProperties": false, "properties": { "top": { "type": "number", "minimum": 0 }, "bottom": { "type": "number", "minimum": 0 } } }, "pointPadding": { "type": "object", "additionalProperties": false, "properties": { "top": { "type": "number", "minimum": 0 }, "bottom": { "type": "number", "minimum": 0 } } } } },
326
+ "chartStackedLayout": { "type": "object", "additionalProperties": false, "properties": { "legendColumns": { "type": "integer", "minimum": 1 }, "legendColumnGap": { "type": "number", "minimum": 0 }, "segmentGap": { "type": "number", "minimum": 0 }, "barThickness": { "$ref": "#/$defs/positiveNumber" }, "barWidth": { "$ref": "#/$defs/positiveNumber" }, "legendMarkSize": { "$ref": "#/$defs/positiveNumber" }, "legendFontSize": { "$ref": "#/$defs/positiveNumber" }, "periodFontSize": { "$ref": "#/$defs/positiveNumber" }, "rateFontSize": { "$ref": "#/$defs/positiveNumber" }, "legendOffsetY": { "type": "number" } } },
327
+ "chartGaugeSize": { "type": "object", "additionalProperties": false, "properties": { "arcThickness": { "$ref": "#/$defs/positiveNumber" }, "outerRadius": { "$ref": "#/$defs/positiveNumber" }, "plotTop": { "type": "number", "minimum": 0 }, "valueFontSize": { "$ref": "#/$defs/positiveNumber" } } },
328
+ "ganttSize": { "type": "object", "additionalProperties": false, "properties": { "taskLabelFontSize": { "$ref": "#/$defs/positiveNumber" }, "taskLabelAlign": { "type": "string", "enum": ["start", "end"] }, "taskLabelX": { "type": "number", "minimum": 0 }, "tickFontSize": { "$ref": "#/$defs/positiveNumber" }, "tickCount": { "type": "integer", "minimum": 2 }, "barThickness": { "$ref": "#/$defs/positiveNumber" }, "milestoneFontSize": { "$ref": "#/$defs/positiveNumber" }, "milestoneRadius": { "$ref": "#/$defs/positiveNumber" }, "dependencyStrokeWidth": { "$ref": "#/$defs/positiveNumber" }, "taskColumnWidth": { "type": "number", "minimum": 0 }, "timelinePaddingRight": { "type": "number", "minimum": 0 } } },
329
+ "quadrantLabelPosition": { "type": "string", "enum": ["outside-corners"] },
330
+ "quadrantSize": { "type": "object", "additionalProperties": false, "properties": { "plotOffset": { "type": "object", "additionalProperties": false, "properties": { "x": { "type": "number", "minimum": 0 }, "y": { "type": "number", "minimum": 0 } } }, "plotSize": { "$ref": "#/$defs/positiveNumber" }, "pointRadius": { "$ref": "#/$defs/positiveNumber" }, "pointFontSize": { "$ref": "#/$defs/positiveNumber" }, "pointLabelGap": { "type": "number", "minimum": 0 }, "quadrantFontSize": { "$ref": "#/$defs/positiveNumber" }, "axisFontSize": { "$ref": "#/$defs/positiveNumber" } } },
50
331
  "eyebrow": {
51
332
  "type": "string",
52
- "description": "図表の箱の上に出す小見出し (省略可)。 効くのは図全体を 1 箱にする型 (pie / bar / line / gauge / radial / stat / waffle / stacked / slope / funnel / tree / journey / quadrant / mind / gantt) だけ。 箱ごとに分かれる型では相手が決まらないため、 actors[].eyebrow に書く"
333
+ "description": "図表の箱の上に出す小見出し (省略可)。 効くのは図全体を 1 箱にする型 (chart / funnel / tree / journey / quadrant / mind / gantt) だけ。 箱ごとに分かれる型では相手が決まらないため、 actors[].eyebrow に書く"
53
334
  },
54
335
  "axes": {
55
336
  "type": "object",
@@ -65,7 +346,9 @@
65
346
  },
66
347
  "right": {
67
348
  "type": "string"
68
- }
349
+ },
350
+ "label": { "type": "string" },
351
+ "direction": { "type": "boolean", "enum": [true] }
69
352
  }
70
353
  },
71
354
  "y": {
@@ -77,11 +360,32 @@
77
360
  },
78
361
  "top": {
79
362
  "type": "string"
80
- }
363
+ },
364
+ "label": { "type": "string" },
365
+ "direction": { "type": "boolean", "enum": [true] }
81
366
  }
82
367
  }
83
368
  }
84
369
  },
370
+ "regions": {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "description": "quadrant の区画に出す名前。 記法の regions と同じ。 鍵は項目の欄と同じ 4 語。",
374
+ "properties": {
375
+ "左上": {
376
+ "type": "string"
377
+ },
378
+ "右上": {
379
+ "type": "string"
380
+ },
381
+ "左下": {
382
+ "type": "string"
383
+ },
384
+ "右下": {
385
+ "type": "string"
386
+ }
387
+ }
388
+ },
85
389
  "actors": {
86
390
  "type": "array",
87
391
  "minItems": 1,
@@ -112,6 +416,64 @@
112
416
  "type": "string",
113
417
  "description": "node 下部の補足テキスト"
114
418
  },
419
+ "kindForm": { "type": "string", "enum": ["icon"] },
420
+ "icon": { "type": "string", "enum": ["person", "box", "database", "lightning", "cloud", "terminal"] },
421
+ "emptyRowsNote": { "type": "string" },
422
+ "titleAlign": { "type": "string", "enum": ["center"] },
423
+ "rowRules": { "type": "boolean" },
424
+ "rowStripe": { "type": "boolean" },
425
+ "rowLayout": {
426
+ "type": "object",
427
+ "additionalProperties": false,
428
+ "properties": {
429
+ "titleBaseline": { "type": "number", "minimum": 0 },
430
+ "rowTop": { "type": "number", "minimum": 0 },
431
+ "rowPitch": { "type": "number", "exclusiveMinimum": 0 }
432
+ }
433
+ },
434
+ "rowDividerForm": { "type": "string", "enum": ["full"] },
435
+ "rowWell": {
436
+ "type": "object",
437
+ "additionalProperties": false,
438
+ "properties": {
439
+ "top": { "type": "number", "minimum": 0 },
440
+ "right": { "type": "number", "minimum": 0 },
441
+ "bottom": { "type": "number", "minimum": 0 },
442
+ "left": { "type": "number", "minimum": 0 },
443
+ "radius": { "type": "number", "minimum": 0 }
444
+ }
445
+ },
446
+ "rowMarkForm": { "type": "string", "enum": ["tone"] },
447
+ "nestIn": { "type": "string", "minLength": 1 },
448
+ "figureCard": {
449
+ "type": "object",
450
+ "additionalProperties": false,
451
+ "required": ["label"],
452
+ "properties": {
453
+ "label": { "type": "string" },
454
+ "note": { "type": "string" }
455
+ }
456
+ },
457
+ "stationNamePosition": {
458
+ "type": "string",
459
+ "enum": ["bottom"],
460
+ "description": "路線図の駅名を駅の下へ置く"
461
+ },
462
+ "subtitlePlacement": {
463
+ "type": "string",
464
+ "enum": ["right"],
465
+ "description": "時間軸の担当を札の右へ置く"
466
+ },
467
+ "titleFontSize": {
468
+ "type": "number",
469
+ "exclusiveMinimum": 0,
470
+ "description": "流れ図の function の札の題の大きさ"
471
+ },
472
+ "markGap": {
473
+ "type": "number",
474
+ "exclusiveMinimum": 0,
475
+ "description": "流れ図の始まり・終わりの印と次の箱との間"
476
+ },
115
477
  "eyebrow": {
116
478
  "type": "string",
117
479
  "description": "node 上部の分類ラベル (accent 色)"
@@ -134,9 +496,26 @@
134
496
  "marks": {
135
497
  "type": "array",
136
498
  "items": {
137
- "type": "string"
499
+ "oneOf": [
500
+ { "type": "string" },
501
+ {
502
+ "type": "object",
503
+ "additionalProperties": false,
504
+ "required": ["mark"],
505
+ "properties": {
506
+ "mark": { "type": "string" },
507
+ "tone": { "type": "string", "enum": ["primary", "muted"] }
508
+ }
509
+ }
510
+ ]
138
511
  },
139
- "description": "行頭の印。 rows と同じ数だけ並べる。 語の意味は図の種類が決める = er は pk / fk / opt、class は + / - と () の有無、state は entry / do / exit / internal"
512
+ "description": "行頭の印。 rows と同じ数だけ並べる。 語は 鍵 (名前に下線 = その行で箱を見分ける) / 外 (行頭を山形 = 箱の外とつながる) / 条件 (行頭を中空 = 条件が揃った時だけ効く) の 3 つで、1 行に 2 つ以上書ける。 古い綴り pk / fk / opt / entry / exit / do / internal は読み取りの入口でこの 3 語に読み替わる"
513
+ },
514
+ "stage": {
515
+ "type": "string",
516
+ "minLength": 1,
517
+ "pattern": "\\S",
518
+ "description": "shape: stages の泳法図で、この箱を入れる段階。 記法では stage または 段階 と書く"
140
519
  },
141
520
  "lane": {
142
521
  "type": "string",
@@ -149,11 +528,11 @@
149
528
  },
150
529
  "initial": {
151
530
  "type": "boolean",
152
- "description": "state 開始点 (kind: state 用)"
531
+ "description": "始まりの箱か (札の形の箱に 初期 の字が出る)"
153
532
  },
154
533
  "final": {
155
534
  "type": "boolean",
156
- "description": "state 終了点 (kind: state 用)"
535
+ "description": "終わりの箱か (札の形の箱に 最終 の字が出る)"
157
536
  },
158
537
  "state": {
159
538
  "type": "object",
@@ -176,6 +555,7 @@
176
555
  "error",
177
556
  "warning",
178
557
  "info",
558
+ "muted",
179
559
  "成功",
180
560
  "失敗",
181
561
  "警告",
@@ -196,6 +576,7 @@
196
576
  "error",
197
577
  "warning",
198
578
  "info",
579
+ "muted",
199
580
  "成功",
200
581
  "失敗",
201
582
  "警告",
@@ -217,6 +598,33 @@
217
598
  "type": "string",
218
599
  "description": "gantt の工程が終わる時期。 始まりより前の時期は始まりと同じに倒し、知らせを出す。"
219
600
  },
601
+ "startLabel": {
602
+ "type": "string",
603
+ "description": "gantt の工程の始まりに出す札。"
604
+ },
605
+ "milestone": {
606
+ "type": "boolean",
607
+ "description": "true なら gantt の帯を節目の菱形にする。"
608
+ },
609
+ "emphasis": {
610
+ "type": "string",
611
+ "enum": ["primary"],
612
+ "description": "gantt の帯を主役として描く。"
613
+ },
614
+ "at": {
615
+ "type": "array",
616
+ "minItems": 2,
617
+ "maxItems": 2,
618
+ "items": { "type": ["number", "string"] },
619
+ "description": "quadrant の座標 [x, y]。左下が 0,0、右上が 1,1。"
620
+ },
621
+ "点の位置": {
622
+ "type": "array",
623
+ "minItems": 2,
624
+ "maxItems": 2,
625
+ "items": { "type": ["number", "string"] },
626
+ "description": "at の和名。両方あれば at を採る。"
627
+ },
220
628
  "touchpoint": {
221
629
  "type": "string",
222
630
  "description": "journey の段階が起きる場所。"
@@ -225,6 +633,11 @@
225
633
  "type": "string",
226
634
  "description": "journey の段階の改善の余地。"
227
635
  },
636
+ "opportunityPosition": {
637
+ "type": "string",
638
+ "enum": ["below-chart", "below-point"],
639
+ "description": "journey の改善の余地を図の下か、その段階の点の下へ置く。"
640
+ },
228
641
  "posX": {
229
642
  "type": "number",
230
643
  "description": "箱の絶対 x 座標。"
@@ -537,7 +950,7 @@
537
950
  },
538
951
  "tailSub": {
539
952
  "type": "string",
540
- "description": "クラス図の出どころ側の多重度 (例 \"1\")。 sub が行き先の端の多重度。 クラス図でだけ効く"
953
+ "description": "relation を書いた record の出どころ側の多重度 (例 \"1\")。 sub が行き先の端の多重度"
541
954
  },
542
955
  "tone": {
543
956
  "type": "string",
@@ -548,6 +961,7 @@
548
961
  "error",
549
962
  "warning",
550
963
  "info",
964
+ "muted",
551
965
  "成功",
552
966
  "失敗",
553
967
  "警告",
@@ -568,11 +982,11 @@
568
982
  },
569
983
  "guard": {
570
984
  "type": "string",
571
- "description": "state 遷移の条件 (kind: state 用)"
985
+ "description": "移り変わりの条件 (名前の下の行に出る)"
572
986
  },
573
987
  "cardinality": {
574
988
  "type": "string",
575
- "description": "ER の多重度 (type: er 用)。 1:1 / 1:N / N:1 / N:M / 0..1 / 1..* のどれかを書くと、 両端の形がその語から決まり (tailHead / head を書けばそちらが勝つ)、 語は説明文の下の行に出る。 説明文に書いた同じ語は説明文から外す。 6 語以外を書くと説明文に (語) と添えるだけで、 端の形は決まらない (tailHead と head を両方書かなければ、 描かない端を知らせる)。 type: er 以外の図種では描かず、 そのことを知らせる"
989
+ "description": "ER の多重度 (type: record 用)。 1:1 / 1:N / N:1 / N:M / 0..1 / 1..* のどれかを書くと、 両端の形がその語から決まり (tailHead / head を書けばそちらが勝つ)、 語は説明文の下の行に出る。 説明文に書いた同じ語は説明文から外す。 6 語以外を書くと説明文に (語) と添えるだけで、 端の形は決まらない (tailHead と head を両方書かなければ、 描かない端を知らせる)。 type: record 以外の図種では描かず、 そのことを知らせる"
576
990
  },
577
991
  "side": {
578
992
  "type": "string",
@@ -584,10 +998,21 @@
584
998
  ],
585
999
  "description": "矢印がどの辺から出るか。 書かなければ描画側が自動で選ぶ。"
586
1000
  },
1001
+ "fromSide": {
1002
+ "type": "string",
1003
+ "enum": ["top", "right", "bottom", "left"],
1004
+ "description": "矢印が出どころのどの辺から出るか"
1005
+ },
1006
+ "toSide": {
1007
+ "type": "string",
1008
+ "enum": ["top", "right", "bottom", "left"],
1009
+ "description": "矢印が行き先のどの辺へ入るか"
1010
+ },
587
1011
  "head": {
588
1012
  "type": "string",
589
1013
  "enum": [
590
1014
  "none",
1015
+ "dot",
591
1016
  "triangle",
592
1017
  "diamond",
593
1018
  "open",
@@ -603,6 +1028,7 @@
603
1028
  "type": "string",
604
1029
  "enum": [
605
1030
  "none",
1031
+ "dot",
606
1032
  "triangle",
607
1033
  "diamond",
608
1034
  "open",
@@ -640,7 +1066,7 @@
640
1066
  "associates",
641
1067
  "uses"
642
1068
  ],
643
- "description": "クラス図の関係の語。 書くと端の形 / 塗り / 線種がまとめて決まる。"
1069
+ "description": "record に書く UML 関係の語。 書くと端の形 / 塗り / 線種がまとめて決まる。"
644
1070
  },
645
1071
  "role": {
646
1072
  "type": "string",
@@ -670,6 +1096,47 @@
670
1096
  "type": "number",
671
1097
  "description": "ラベル位置 y 調整"
672
1098
  },
1099
+ "posX1": {
1100
+ "type": "number",
1101
+ "description": "線の出どころ側を固定する world x 座標"
1102
+ },
1103
+ "posY1": {
1104
+ "type": "number",
1105
+ "description": "線の出どころ側を固定する world y 座標"
1106
+ },
1107
+ "posX2": {
1108
+ "type": "number",
1109
+ "description": "線の行き先側を固定する world x 座標"
1110
+ },
1111
+ "posY2": {
1112
+ "type": "number",
1113
+ "description": "線の行き先側を固定する world y 座標"
1114
+ },
1115
+ "waypoints": {
1116
+ "type": "array",
1117
+ "items": {
1118
+ "type": "object",
1119
+ "additionalProperties": false,
1120
+ "required": ["x", "y"],
1121
+ "properties": {
1122
+ "x": { "type": "number" },
1123
+ "y": { "type": "number" }
1124
+ }
1125
+ }
1126
+ },
1127
+ "labelCollision": {
1128
+ "type": "string",
1129
+ "enum": ["auto", "author"]
1130
+ },
1131
+ "labelSize": {
1132
+ "type": "object",
1133
+ "additionalProperties": false,
1134
+ "properties": {
1135
+ "width": { "$ref": "#/$defs/positiveNumber" },
1136
+ "height": { "$ref": "#/$defs/positiveNumber" },
1137
+ "fontSize": { "$ref": "#/$defs/positiveNumber" }
1138
+ }
1139
+ },
673
1140
  "overlay": {
674
1141
  "type": "boolean",
675
1142
  "description": "true で説明文を矢印の線の上に重ねる (分岐図の条件ラベル用)"
@@ -793,6 +1260,10 @@
793
1260
  "type": "string",
794
1261
  "description": "phase 説明文"
795
1262
  },
1263
+ "description": {
1264
+ "type": "string",
1265
+ "description": "phase 説明文の別名 (記法の description: と同じ)。 正の語は body で、 両方書いた段は body が効く"
1266
+ },
796
1267
  "badge": {
797
1268
  "type": "string",
798
1269
  "description": "phase 中に表示する badge label"
@@ -814,7 +1285,7 @@
814
1285
  "stacked",
815
1286
  "waffle"
816
1287
  ],
817
- "description": "この phase で起点から描くもの。 語は図種と揃える。 line / journey = 線が左端から右へ伸びる / bar = 棒が横軸から上へ伸びる / pie = 扇が 12 時から時計回りに開く / mind = 枝が中心から外へ伸びる / tree = 枝が根から下へ伸びる / gantt = 帯が各始端から右へ伸びる / funnel = 段が上端から順に積まれる / slope = 線が左の軸から右の軸へ伸びる / gauge = 弧が 9 時から上を通って 3 時へ伸びる / radial = 各輪が 12 時から時計回りに開く / stacked = 帯が左端から右へ伸びる / waffle = 印が左上から読む向きに 1 個ずつ埋まる"
1288
+ "description": "この phase で起点から描くもの。 語は図種と揃える (数を描く図では shape と揃える)。 line / journey = 線が左端から右へ伸びる / bar = 棒が横軸から上へ伸びる / pie = 扇が 12 時から時計回りに開く / mind = 枝が中心から外へ伸びる / tree = 枝が根から下へ伸びる / gantt = 帯が各始端から右へ伸びる / funnel = 段が上端から順に積まれる / slope = 線が左の軸から右の軸へ伸びる / gauge = 弧が 9 時から上を通って 3 時へ伸びる / radial = 各輪が 12 時から時計回りに開く / stacked = 帯が左端から右へ伸びる / waffle = 印が左上から読む向きに 1 個ずつ埋まる"
818
1289
  },
819
1290
  "drawRatio": {
820
1291
  "type": "number",
@@ -866,6 +1337,9 @@
866
1337
  "type": "number",
867
1338
  "minimum": 100
868
1339
  },
1340
+ "contentOffsetX": {
1341
+ "type": "number"
1342
+ },
869
1343
  "laneWidth": {
870
1344
  "type": "number",
871
1345
  "minimum": 100
@@ -909,6 +1383,9 @@
909
1383
  "label": {
910
1384
  "type": "string"
911
1385
  },
1386
+ "subtitle": {
1387
+ "type": "string"
1388
+ },
912
1389
  "contain": {
913
1390
  "type": "boolean"
914
1391
  },
@@ -2270,7 +2747,9 @@
2270
2747
  {
2271
2748
  "type": "object",
2272
2749
  "additionalProperties": false,
2273
- "required": ["expression"],
2750
+ "required": [
2751
+ "expression"
2752
+ ],
2274
2753
  "properties": {
2275
2754
  "expression": {
2276
2755
  "type": "string",
@@ -2300,13 +2779,157 @@
2300
2779
  ],
2301
2780
  "description": "図の並ぶ向き。 vertical = 1 つの縦列に積む。 horizontal = 1 人ずつ縦列を作る。 効くのは flow と swimlane だけ。"
2302
2781
  },
2782
+ "shape": {
2783
+ "type": "string",
2784
+ "enum": [
2785
+ "pie",
2786
+ "bar",
2787
+ "line",
2788
+ "gauge",
2789
+ "radial",
2790
+ "stat",
2791
+ "waffle",
2792
+ "stacked",
2793
+ "slope",
2794
+ "stages",
2795
+ "metro",
2796
+ "timeline"
2797
+ ],
2798
+ "description": "図種ごとの形。 chart では pie / bar / line / gauge / radial / stat / waffle / stacked / slope、swimlane では stages / metro / timeline が効く。 chart で書かなければ bar (棒の高さ)。"
2799
+ },
2800
+ "order": {
2801
+ "type": "string",
2802
+ "enum": [
2803
+ "kind"
2804
+ ],
2805
+ "description": "箱を並べ替える軸。 kind = actors の kind の順 (人 → 契約 → 保管 → 出来事) に並べ替える。 効くのは sequence だけ。 書かなければ書いた順のまま。"
2806
+ },
2807
+ "theme": {
2808
+ "type": "string",
2809
+ "enum": [
2810
+ "kinari",
2811
+ "celadon",
2812
+ "blueprint",
2813
+ "letterpress",
2814
+ "catalog",
2815
+ "terminal",
2816
+ "sketch",
2817
+ "neon",
2818
+ "relief"
2819
+ ],
2820
+ "description": "図の意匠 (`kinari` = 生成りに茶、`celadon` = 青磁に墨、`blueprint` = 図面、`letterpress` = 活版、`catalog` = 図録、`terminal` = 端末、`sketch` = 手描き、`neon` = 電飾、`relief` = 浮彫)。 名前だけが図に載り、色の値は使う側が決める。"
2821
+ },
2303
2822
  "palette": {
2304
2823
  "type": "string",
2305
2824
  "enum": [
2306
2825
  "kinari",
2307
- "celadon"
2826
+ "celadon",
2827
+ "blueprint",
2828
+ "letterpress",
2829
+ "catalog",
2830
+ "terminal",
2831
+ "sketch",
2832
+ "neon",
2833
+ "relief"
2308
2834
  ],
2309
- "description": "図の配色 (`kinari` = 生成りに茶、`celadon` = 青磁に墨) で、ER 図とクラス図は書かなくても `kinari` になり、書いた `palette` が優先され、名前だけが図に載って色の値は消費側が決める。"
2835
+ "description": "`theme` の別名。 `relief` (浮彫) を含む同じ意匠名を受ける。 両方書くと `theme` が勝ち、知らせが 1 件出る。"
2836
+ },
2837
+ "legend": {
2838
+ "type": "array",
2839
+ "description": "記法の legend と同じ、図の下へ置く凡例。",
2840
+ "items": {
2841
+ "type": "object",
2842
+ "additionalProperties": false,
2843
+ "required": ["text"],
2844
+ "properties": {
2845
+ "mark": {
2846
+ "type": "string",
2847
+ "enum": [
2848
+ "diamond",
2849
+ "filled-circle",
2850
+ "double-circle",
2851
+ "dotted-line",
2852
+ "solid-line",
2853
+ "curved-line",
2854
+ "rounded-label",
2855
+ "numbered-circle",
2856
+ "station",
2857
+ "arrow",
2858
+ "line-triangle-hollow",
2859
+ "line-diamond-hollow",
2860
+ "line-diamond-solid",
2861
+ "rounded-box"
2862
+ ]
2863
+ },
2864
+ "text": {
2865
+ "type": "string",
2866
+ "minLength": 1
2867
+ },
2868
+ "tone": { "type": "string" },
2869
+ "lineStyle": { "type": "string", "enum": ["solid", "dotted"] },
2870
+ "align": { "type": "string", "enum": ["start", "end"] },
2871
+ "lead": { "type": "string" }
2872
+ },
2873
+ "oneOf": [
2874
+ {
2875
+ "required": ["mark"],
2876
+ "not": { "anyOf": [{ "required": ["align"] }, { "required": ["lead"] }] }
2877
+ },
2878
+ {
2879
+ "not": { "required": ["mark"] },
2880
+ "allOf": [
2881
+ { "not": { "required": ["tone"] } },
2882
+ { "not": { "required": ["lineStyle"] } }
2883
+ ]
2884
+ }
2885
+ ]
2886
+ }
2887
+ },
2888
+ "legendFontSize": {
2889
+ "type": "number",
2890
+ "exclusiveMinimum": 0,
2891
+ "description": "凡例の字の大きさ"
2892
+ },
2893
+ "edgeEndGap": {
2894
+ "type": "number",
2895
+ "minimum": 0,
2896
+ "description": "線の両端と発着する箱の縁との隙間"
2897
+ },
2898
+ "legendOffset": {
2899
+ "type": "object",
2900
+ "additionalProperties": false,
2901
+ "properties": {
2902
+ "x": { "type": "number" },
2903
+ "y": { "type": "number" }
2904
+ }
2905
+ },
2906
+ "stageHeader": {
2907
+ "type": "object",
2908
+ "description": "段の箱で全意匠に共通して使う見出し寸法",
2909
+ "additionalProperties": false,
2910
+ "required": ["topPad", "numberSize", "gap", "nameSize", "bottomPad"],
2911
+ "properties": {
2912
+ "leftPad": { "type": "number", "minimum": 0 },
2913
+ "topPad": { "type": "number", "minimum": 0 },
2914
+ "numberSize": { "type": "number", "exclusiveMinimum": 0 },
2915
+ "gap": { "type": "number", "minimum": 0 },
2916
+ "nameSize": { "type": "number", "exclusiveMinimum": 0 },
2917
+ "bottomPad": { "type": "number", "minimum": 0 }
2918
+ }
2919
+ },
2920
+ "stageLayout": {
2921
+ "type": "object",
2922
+ "additionalProperties": false,
2923
+ "properties": {
2924
+ "columnWidths": {
2925
+ "type": "object",
2926
+ "additionalProperties": { "type": "number", "minimum": 0 }
2927
+ },
2928
+ "columnGap": { "type": "number", "minimum": 0 },
2929
+ "backDetourTopGap": { "type": "number", "minimum": 0 },
2930
+ "backDetourSideGap": { "type": "number", "minimum": 0 },
2931
+ "backDetourTargetInset": { "type": "number", "minimum": 0 }
2932
+ }
2310
2933
  },
2311
2934
  "reveal": {
2312
2935
  "type": "string",
@@ -2322,7 +2945,7 @@
2322
2945
  "off",
2323
2946
  "hover"
2324
2947
  ],
2325
- "description": "箱に触れると関係する線だけを光らせるか。 off (既定) = 何もしない。 hover = 箱に触れた時にその箱と繋がる線と相手の箱だけが光り、他が沈む。 順番を持たないクラス図と ER 図で使う。"
2948
+ "description": "箱に触れると関係する線だけを光らせるか。 off (既定) = 何もしない。 hover = 箱に触れた時にその箱と繋がる線と相手の箱だけが光り、他が沈む。 順番を持たない record の関係図で使う。"
2326
2949
  },
2327
2950
  "bands": {
2328
2951
  "type": "array",