@cardenelabs/dragon 0.34.0 → 0.35.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 (127) hide show
  1. package/README.md +39 -720
  2. package/dist/cli.cjs +4529 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/dist/cli.js +4523 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/export.cjs +3912 -0
  7. package/dist/export.cjs.map +1 -0
  8. package/dist/export.d.cts +36 -0
  9. package/dist/export.d.ts +36 -0
  10. package/dist/export.js +3907 -0
  11. package/dist/export.js.map +1 -0
  12. package/dist/fonts.cjs +7 -0
  13. package/dist/fonts.cjs.map +1 -0
  14. package/dist/fonts.js +4 -0
  15. package/dist/fonts.js.map +1 -0
  16. package/dist/index.cjs +4105 -20356
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +227 -5522
  19. package/dist/index.d.ts +227 -5522
  20. package/dist/index.js +4091 -20283
  21. package/dist/index.js.map +1 -1
  22. package/dist/player.global.js +2 -0
  23. package/dist/schema-BBWfniwH.d.cts +112 -0
  24. package/dist/schema-BBWfniwH.d.ts +112 -0
  25. package/package.json +39 -24
  26. package/src/cli.ts +237 -0
  27. package/src/export/capture.ts +277 -0
  28. package/src/export/fonts.ts +68 -0
  29. package/src/export/html.ts +32 -0
  30. package/src/export/index.ts +146 -0
  31. package/src/field-messages.ts +104 -0
  32. package/src/figure-text.ts +42 -0
  33. package/src/index.ts +30 -283
  34. package/src/layout/architecture.ts +381 -0
  35. package/src/layout/measure.ts +21 -0
  36. package/src/layout/scene.ts +353 -0
  37. package/src/layout/sequence.ts +189 -0
  38. package/src/load-fonts.ts +8 -0
  39. package/src/look/fonts.ts +33 -0
  40. package/src/look/palettes.json +209 -0
  41. package/src/look/values.ts +155 -0
  42. package/src/markdown.ts +35 -0
  43. package/src/messages.ts +122 -0
  44. package/src/parser.ts +342 -310
  45. package/src/player-global.ts +4 -0
  46. package/src/player.ts +271 -0
  47. package/src/printer.ts +76 -0
  48. package/src/render/icons.ts +41 -0
  49. package/src/render/motion.ts +106 -0
  50. package/src/render/parts.ts +279 -0
  51. package/src/render/svg.ts +341 -0
  52. package/src/schema.ts +161 -16
  53. package/src/schemas/diagram.schema.json +150 -0
  54. package/src/schemas/validate-diagram.d.ts +12 -0
  55. package/src/schemas/validate-diagram.js +8 -0
  56. package/src/timeline.ts +166 -0
  57. package/src/tokenize.ts +20 -281
  58. package/src/version.ts +55 -0
  59. package/src/view.ts +16 -0
  60. package/src/words.ts +79 -0
  61. package/examples/quick-start.md +0 -142
  62. package/src/canvas-bounds.ts +0 -52
  63. package/src/color.ts +0 -197
  64. package/src/compile/actor-ids.ts +0 -297
  65. package/src/compile/actor-option-notice.ts +0 -379
  66. package/src/compile/actors.ts +0 -103
  67. package/src/compile/c4.ts +0 -74
  68. package/src/compile/chain.ts +0 -93
  69. package/src/compile/chart-fields.ts +0 -193
  70. package/src/compile/deep-rewrite.ts +0 -30
  71. package/src/compile/derived-source.ts +0 -18
  72. package/src/compile/direction.ts +0 -102
  73. package/src/compile/edge-option-notice.ts +0 -112
  74. package/src/compile/er-relation.ts +0 -200
  75. package/src/compile/flow.ts +0 -54
  76. package/src/compile/flowchart.ts +0 -344
  77. package/src/compile/funnel.ts +0 -87
  78. package/src/compile/gantt.ts +0 -337
  79. package/src/compile/generic.ts +0 -696
  80. package/src/compile/hierarchy.ts +0 -92
  81. package/src/compile/journey.ts +0 -93
  82. package/src/compile/kinds.ts +0 -139
  83. package/src/compile/lanes.ts +0 -138
  84. package/src/compile/metro.ts +0 -271
  85. package/src/compile/mind.ts +0 -393
  86. package/src/compile/node-title.ts +0 -24
  87. package/src/compile/notice.ts +0 -141
  88. package/src/compile/order.ts +0 -57
  89. package/src/compile/parts-lookup.ts +0 -17
  90. package/src/compile/parts.ts +0 -2709
  91. package/src/compile/placement-apply.ts +0 -689
  92. package/src/compile/placement.ts +0 -15
  93. package/src/compile/quadrant.ts +0 -265
  94. package/src/compile/record.ts +0 -75
  95. package/src/compile/row-marks.ts +0 -128
  96. package/src/compile/rows.ts +0 -40
  97. package/src/compile/sequence.ts +0 -305
  98. package/src/compile/slug.ts +0 -37
  99. package/src/compile/stages.ts +0 -247
  100. package/src/compile/subtitle.ts +0 -35
  101. package/src/compile/swimlane-marks.ts +0 -87
  102. package/src/compile/swimlane.ts +0 -82
  103. package/src/compile/timeline.ts +0 -213
  104. package/src/compile/topology.ts +0 -44
  105. package/src/compile/tree.ts +0 -69
  106. package/src/compile/value-chart.ts +0 -337
  107. package/src/compile/values.ts +0 -432
  108. package/src/compile/word-state.ts +0 -82
  109. package/src/compile.ts +0 -3168
  110. package/src/focus.ts +0 -46
  111. package/src/input-size.ts +0 -181
  112. package/src/json-line-map.ts +0 -30
  113. package/src/json-parser.ts +0 -4306
  114. package/src/keywords.ts +0 -417
  115. package/src/near-name.ts +0 -42
  116. package/src/notation-lint.ts +0 -342
  117. package/src/relative-pos.ts +0 -251
  118. package/src/schemas/diagram.json +0 -3088
  119. package/src/types.ts +0 -1009
  120. package/src/v05/index.ts +0 -9
  121. package/src/v05/input-table.generated.ts +0 -138
  122. package/src/v05/parser-types.ts +0 -32
  123. package/src/v05/parser.ts +0 -6668
  124. package/src/v05/readout-table.generated.ts +0 -1088
  125. package/src/v05/removed-syntax.ts +0 -115
  126. package/src/value-syntax.ts +0 -313
  127. package/src/write-position.ts +0 -270
@@ -1,3088 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://github.com/cardene777/dragon/schemas/diagram.json",
4
- "title": "Dragon DSL Diagram",
5
- "description": "LLM 向け Dragon DSL の JSON Schema。 Anthropic Claude tool use / OpenAI GPT structured output の schema field に注入して使う。 生成された JSON は jsonToDiagram() に渡して CdlDiagram に変換する。",
6
- "type": "object",
7
- "$defs": {
8
- "positiveNumber": { "type": "number", "exclusiveMinimum": 0 }
9
- },
10
- "required": [
11
- "title",
12
- "type",
13
- "actors",
14
- "flow"
15
- ],
16
- "additionalProperties": false,
17
- "properties": {
18
- "title": {
19
- "type": "string",
20
- "minLength": 1,
21
- "description": "図の title (画面上部に表示される見出し)"
22
- },
23
- "type": {
24
- "type": "string",
25
- "enum": [
26
- "sequence",
27
- "flow",
28
- "flowchart",
29
- "swimlane",
30
- "record",
31
- "topology",
32
- "gantt",
33
- "chart",
34
- "pie",
35
- "bar",
36
- "line",
37
- "gauge",
38
- "radial",
39
- "stat",
40
- "waffle",
41
- "stacked",
42
- "slope",
43
- "funnel",
44
- "tree",
45
- "journey",
46
- "quadrant",
47
- "c4",
48
- "mind"
49
- ],
50
- "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 の矢印で親子を書く (矢印の先が子)。 [古い綴り] pie / bar / line / gauge / radial / stat / waffle / stacked / slope は chart と同じ綴りの shape の組と同じ扱いになる"
51
- },
52
- "form": {
53
- "type": "string",
54
- "enum": ["ring", "arcs", "table", "輪", "積層の弧", "銘板"],
55
- "description": "shape: pie の見せ方。輪 / 積層の弧 / 銘板。"
56
- },
57
- "見せ方": {
58
- "type": "string",
59
- "enum": ["ring", "arcs", "table", "輪", "積層の弧", "銘板"],
60
- "description": "form の和名。両方あれば form を採る。"
61
- },
62
- "ticks": {
63
- "type": "array",
64
- "minItems": 1,
65
- "items": { "type": "string", "minLength": 1 },
66
- "description": "gantt の目盛りを左から順に明示する。"
67
- },
68
- "目盛り": {
69
- "type": "array",
70
- "minItems": 1,
71
- "items": { "type": "string", "minLength": 1 },
72
- "description": "ticks の和名。両方あれば ticks を採る。"
73
- },
74
- "ganttToday": {
75
- "type": "object",
76
- "additionalProperties": false,
77
- "required": ["index", "label"],
78
- "properties": {
79
- "index": { "type": "number" },
80
- "label": { "type": "string" }
81
- },
82
- "description": "gantt の今日の線の位置と札。"
83
- },
84
- "ganttTickLabels": {
85
- "type": "array",
86
- "minItems": 1,
87
- "items": { "type": "string" },
88
- "description": "gantt の目盛りに順番に出す名前。"
89
- },
90
- "ganttBarEnd": {
91
- "type": "string",
92
- "enum": ["position"],
93
- "description": "gantt の帯を end の位置で止める。"
94
- },
95
- "ganttBarThickness": {
96
- "type": "string",
97
- "enum": ["thin"],
98
- "description": "gantt の帯を見本の比で細くする。"
99
- },
100
- "chartSeriesSkipMuted": { "type": "boolean" },
101
- "chartLineSeries": {
102
- "type": "array",
103
- "minItems": 1,
104
- "items": {
105
- "type": "object",
106
- "additionalProperties": false,
107
- "required": ["points"],
108
- "properties": {
109
- "label": { "type": "string" },
110
- "tone": { "type": "string" },
111
- "dash": { "type": "string", "enum": ["solid", "dotted"] },
112
- "marker": { "type": "string", "enum": ["dot", "hollow", "none"] },
113
- "valueIndexes": { "type": "array", "items": { "type": "integer", "minimum": 0 } },
114
- "points": {
115
- "type": "array",
116
- "minItems": 1,
117
- "items": {
118
- "type": "object",
119
- "additionalProperties": false,
120
- "required": ["label", "value"],
121
- "properties": {
122
- "label": { "type": "string" },
123
- "value": { "type": ["number", "string"] }
124
- }
125
- }
126
- }
127
- }
128
- }
129
- },
130
- "chartPieCenterLabel": { "type": "string" },
131
- "chartPieTableColumns": { "type": "string", "enum": ["share-value", "value"] },
132
- "chartPieRingWidth": { "type": "string", "enum": ["thick", "thin"] },
133
- "chartSlopePeriods": {
134
- "type": "array",
135
- "minItems": 2,
136
- "maxItems": 2,
137
- "items": { "type": "string", "minLength": 1 }
138
- },
139
- "chartSlopeEmphasisIds": {
140
- "type": "array",
141
- "minItems": 1,
142
- "items": { "type": "string", "minLength": 1 }
143
- },
144
- "chartSlopeUnit": { "type": "string" },
145
- "chartStackedPeriods": {
146
- "type": "array",
147
- "minItems": 1,
148
- "items": {
149
- "type": "object",
150
- "additionalProperties": false,
151
- "required": ["label", "values"],
152
- "properties": {
153
- "label": { "type": "string" },
154
- "values": { "type": "array", "items": { "type": ["number", "string"] } }
155
- }
156
- }
157
- },
158
- "chartStackedRateId": { "type": "string" },
159
- "chartStackedLegendPosition": { "type": "string", "enum": ["top", "bottom"] },
160
- "chartGaugeValue": {
161
- "type": "object",
162
- "additionalProperties": false,
163
- "required": ["max", "current"],
164
- "properties": {
165
- "max": { "type": "number", "exclusiveMinimum": 0 },
166
- "current": {
167
- "anyOf": [
168
- { "type": "number" },
169
- { "type": "string", "pattern": "\\S" }
170
- ]
171
- },
172
- "target": {
173
- "anyOf": [
174
- { "type": "number" },
175
- { "type": "string", "pattern": "\\S" }
176
- ]
177
- },
178
- "previous": {
179
- "anyOf": [
180
- { "type": "number" },
181
- { "type": "string", "pattern": "\\S" }
182
- ]
183
- },
184
- "previousLabel": { "type": "string" }
185
- }
186
- },
187
- "chartWaffleLegendPosition": { "type": "string", "enum": ["left", "right"] },
188
- "funnelForm": { "type": "string", "enum": ["trapezoid", "proportional-bars"] },
189
- "funnelRate": { "type": "string", "enum": ["drop", "conversion", "none"] },
190
- "quadrantPointLabelSide": { "type": "string", "enum": ["auto", "right"] },
191
- "treeNodeForm": { "type": "string", "enum": ["accent", "frame"] },
192
- "treeSize": {
193
- "type": "object",
194
- "additionalProperties": false,
195
- "properties": {
196
- "nodeWidths": {
197
- "type": "array",
198
- "minItems": 1,
199
- "items": { "type": "number", "exclusiveMinimum": 0 }
200
- },
201
- "nodeHeight": { "type": "number", "exclusiveMinimum": 0 },
202
- "titleFontSize": { "type": "number", "exclusiveMinimum": 0 },
203
- "subtitleFontSize": { "type": "number", "exclusiveMinimum": 0 },
204
- "siblingGap": { "type": "number", "minimum": 0 },
205
- "levelGap": { "type": "number", "minimum": 0 }
206
- }
207
- },
208
- "treeEdgeTone": { "type": "string", "enum": ["accent", "depth"] },
209
- "treeEdgeHead": { "type": "string", "enum": ["none", "triangle"] },
210
- "mindForm": { "type": "string", "enum": ["filled", "outline"] },
211
- "mindSize": {
212
- "type": "object",
213
- "additionalProperties": false,
214
- "properties": {
215
- "contentOffset": {
216
- "type": "object",
217
- "additionalProperties": false,
218
- "required": ["x", "y"],
219
- "properties": {
220
- "x": { "type": "number" },
221
- "y": { "type": "number" }
222
- }
223
- },
224
- "root": {
225
- "type": "object",
226
- "additionalProperties": false,
227
- "properties": {
228
- "width": { "type": "number", "exclusiveMinimum": 0 },
229
- "height": { "type": "number", "exclusiveMinimum": 0 },
230
- "fontSize": { "type": "number", "exclusiveMinimum": 0 }
231
- }
232
- },
233
- "branch": {
234
- "type": "object",
235
- "additionalProperties": false,
236
- "properties": {
237
- "width": { "type": "number", "exclusiveMinimum": 0 },
238
- "height": { "type": "number", "exclusiveMinimum": 0 },
239
- "fontSize": { "type": "number", "exclusiveMinimum": 0 }
240
- }
241
- },
242
- "leaf": {
243
- "type": "object",
244
- "additionalProperties": false,
245
- "properties": {
246
- "fontSize": { "type": "number", "exclusiveMinimum": 0 }
247
- }
248
- },
249
- "rootBranchGap": { "type": "number", "minimum": 0 },
250
- "branchLeafGap": { "type": "number", "minimum": 0 },
251
- "branchRowGap": { "type": "number", "minimum": 0 },
252
- "branchRowOffset": { "type": "number" },
253
- "leafRowGap": { "type": "number", "minimum": 0 },
254
- "leafRowOffset": { "type": "number" }
255
- }
256
- },
257
- "journeyForm": { "type": "string", "enum": ["bands", "rules"] },
258
- "journeyLineForm": { "type": "string", "enum": ["curve", "straight"] },
259
- "journeyLabels": {
260
- "type": "object",
261
- "additionalProperties": false,
262
- "required": ["delighted", "happy", "neutral", "frustrated", "angry"],
263
- "properties": {
264
- "delighted": { "type": "string", "minLength": 1 },
265
- "happy": { "type": "string", "minLength": 1 },
266
- "neutral": { "type": "string", "minLength": 1 },
267
- "frustrated": { "type": "string", "minLength": 1 },
268
- "angry": { "type": "string", "minLength": 1 }
269
- }
270
- },
271
- "sequenceActorForm": { "type": "string", "enum": ["box"] },
272
- "sequenceLabelForm": { "type": "string", "enum": ["kind"] },
273
- "sequenceReturnHead": { "type": "string", "enum": ["solid"] },
274
- "sequenceRowGap": { "type": "number", "exclusiveMinimum": 0 },
275
- "sequenceGutter": { "type": "number", "exclusiveMinimum": 0 },
276
- "sequenceBandWidth": { "type": "number", "exclusiveMinimum": 0 },
277
- "sequenceSelfLoop": {
278
- "type": "object",
279
- "additionalProperties": false,
280
- "properties": {
281
- "form": { "type": "string", "enum": ["orthogonal"] },
282
- "width": { "type": "number", "exclusiveMinimum": 0 },
283
- "drop": { "type": "number", "exclusiveMinimum": 0 }
284
- }
285
- },
286
- "sequenceKindLabels": {
287
- "type": "object",
288
- "additionalProperties": false,
289
- "properties": {
290
- "call": { "type": "string" },
291
- "return": { "type": "string" },
292
- "fire": { "type": "string" }
293
- }
294
- },
295
- "figureCard": {
296
- "type": "object",
297
- "additionalProperties": false,
298
- "required": ["label"],
299
- "properties": {
300
- "label": { "type": "string" },
301
- "note": { "type": "string" }
302
- }
303
- },
304
- "figureSize": {
305
- "type": "object",
306
- "additionalProperties": false,
307
- "required": ["width", "height"],
308
- "properties": {
309
- "width": { "type": "number", "exclusiveMinimum": 0 },
310
- "height": { "type": "number", "exclusiveMinimum": 0 }
311
- }
312
- },
313
- "terminalDecoration": { "type": "object", "additionalProperties": false, "properties": { "windowControls": { "type": "boolean" }, "cursor": { "type": "boolean" }, "rowOrdinal": { "type": "boolean" } } },
314
- "cornerForm": { "type": "string", "enum": ["theme-variants"] },
315
- "chartBarShape": { "type": "string", "enum": ["split", "top-rounded"] },
316
- "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 } } },
317
- "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 } } },
318
- "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 } } } } },
319
- "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 } } },
320
- "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 } } },
321
- "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 } } },
322
- "chartWaffleSize": { "type": "object", "additionalProperties": false, "properties": { "gridLeft": { "type": "number", "minimum": 0 }, "cellPitch": { "$ref": "#/$defs/positiveNumber" } } },
323
- "chartSlopeLabelTemplate": { "type": "object", "additionalProperties": false, "properties": { "left": { "type": "string" }, "right": { "type": "string" } } },
324
- "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 } } } } },
325
- "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" } } },
326
- "chartGaugeSize": { "type": "object", "additionalProperties": false, "properties": { "arcThickness": { "$ref": "#/$defs/positiveNumber" }, "outerRadius": { "$ref": "#/$defs/positiveNumber" }, "plotTop": { "type": "number", "minimum": 0 }, "valueFontSize": { "$ref": "#/$defs/positiveNumber" } } },
327
- "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 } } },
328
- "quadrantLabelPosition": { "type": "string", "enum": ["outside-corners"] },
329
- "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" } } },
330
- "eyebrow": {
331
- "type": "string",
332
- "description": "図表の箱の上に出す小見出し (省略可)。 効くのは図全体を 1 箱にする型 (chart / funnel / tree / journey / quadrant / mind / gantt) だけ。 箱ごとに分かれる型では相手が決まらないため、 actors[].eyebrow に書く"
333
- },
334
- "axes": {
335
- "type": "object",
336
- "additionalProperties": false,
337
- "description": "quadrant の x / y 軸の端に表示する名前。 記法の axes と同じ。",
338
- "properties": {
339
- "x": {
340
- "type": "object",
341
- "additionalProperties": false,
342
- "properties": {
343
- "left": {
344
- "type": "string"
345
- },
346
- "right": {
347
- "type": "string"
348
- },
349
- "label": { "type": "string" },
350
- "direction": { "type": "boolean", "enum": [true] }
351
- }
352
- },
353
- "y": {
354
- "type": "object",
355
- "additionalProperties": false,
356
- "properties": {
357
- "bottom": {
358
- "type": "string"
359
- },
360
- "top": {
361
- "type": "string"
362
- },
363
- "label": { "type": "string" },
364
- "direction": { "type": "boolean", "enum": [true] }
365
- }
366
- }
367
- }
368
- },
369
- "regions": {
370
- "type": "object",
371
- "additionalProperties": false,
372
- "description": "quadrant の区画に出す名前。 記法の regions と同じ。 鍵は項目の欄と同じ 4 語。",
373
- "properties": {
374
- "左上": {
375
- "type": "string"
376
- },
377
- "右上": {
378
- "type": "string"
379
- },
380
- "左下": {
381
- "type": "string"
382
- },
383
- "右下": {
384
- "type": "string"
385
- }
386
- }
387
- },
388
- "actors": {
389
- "type": "array",
390
- "minItems": 1,
391
- "description": "登場人物 (node) の配列。 文字列で name のみ、 または object で kind / subtitle 等を指定。",
392
- "items": {
393
- "oneOf": [
394
- {
395
- "type": "string",
396
- "description": "actor 名のみ (kind は default 'actor')"
397
- },
398
- {
399
- "type": "object",
400
- "required": [
401
- "name"
402
- ],
403
- "additionalProperties": false,
404
- "properties": {
405
- "name": {
406
- "type": "string",
407
- "minLength": 1,
408
- "description": "actor 名 (flow の from / to で参照される)"
409
- },
410
- "kind": {
411
- "type": "string",
412
- "description": "node kind。 shape-* を指定すると基本の形 (箱の形そのものを描く) と汎用の挿絵 (窓 / 端末 / コードの札 / 携帯 / サーバーの棚) から選べる。 例: 'shape-cloud' / 'shape-file' / 'shape-window' / 'actor' (default) / 'function' / 'storage' / 'event' 等。 種別に無い名前は部品の名前として部品の一覧 (partsCatalog) から引き、一覧にも無ければ種別を書かなかった箱になる。 部品を持つ一覧を渡した時は知らせを出し、綴りの近い名前を案内する。"
413
- },
414
- "subtitle": {
415
- "type": "string",
416
- "description": "node 下部の補足テキスト"
417
- },
418
- "kindForm": { "type": "string", "enum": ["icon"] },
419
- "icon": { "type": "string", "enum": ["person", "box", "database", "lightning", "cloud", "terminal"] },
420
- "emptyRowsNote": { "type": "string" },
421
- "titleAlign": { "type": "string", "enum": ["center"] },
422
- "rowRules": { "type": "boolean" },
423
- "rowStripe": { "type": "boolean" },
424
- "rowLayout": {
425
- "type": "object",
426
- "additionalProperties": false,
427
- "properties": {
428
- "titleBaseline": { "type": "number", "minimum": 0 },
429
- "rowTop": { "type": "number", "minimum": 0 },
430
- "rowPitch": { "type": "number", "exclusiveMinimum": 0 }
431
- }
432
- },
433
- "rowDividerForm": { "type": "string", "enum": ["full"] },
434
- "rowWell": {
435
- "type": "object",
436
- "additionalProperties": false,
437
- "properties": {
438
- "top": { "type": "number", "minimum": 0 },
439
- "right": { "type": "number", "minimum": 0 },
440
- "bottom": { "type": "number", "minimum": 0 },
441
- "left": { "type": "number", "minimum": 0 },
442
- "radius": { "type": "number", "minimum": 0 }
443
- }
444
- },
445
- "rowMarkForm": { "type": "string", "enum": ["tone"] },
446
- "nestIn": { "type": "string", "minLength": 1 },
447
- "figureCard": {
448
- "type": "object",
449
- "additionalProperties": false,
450
- "required": ["label"],
451
- "properties": {
452
- "label": { "type": "string" },
453
- "note": { "type": "string" }
454
- }
455
- },
456
- "stationNamePosition": {
457
- "type": "string",
458
- "enum": ["bottom"],
459
- "description": "路線図の駅名を駅の下へ置く"
460
- },
461
- "subtitlePlacement": {
462
- "type": "string",
463
- "enum": ["right"],
464
- "description": "時間軸の担当を札の右へ置く"
465
- },
466
- "titleFontSize": {
467
- "type": "number",
468
- "exclusiveMinimum": 0,
469
- "description": "流れ図の function の札の題の大きさ"
470
- },
471
- "markGap": {
472
- "type": "number",
473
- "exclusiveMinimum": 0,
474
- "description": "流れ図の始まり・終わりの印と次の箱との間"
475
- },
476
- "eyebrow": {
477
- "type": "string",
478
- "description": "node 上部の分類ラベル (accent 色)"
479
- },
480
- "value": {
481
- "type": "string",
482
- "description": "actor 数値表示 (kind: actor 用)"
483
- },
484
- "previous": {
485
- "type": "string",
486
- "description": "前の時点の値。 type: stacked が 2 本目の帯として描き、type: slope が左の点として描き、type: stat が差として出す。 書かない図は 1 本のまま"
487
- },
488
- "rows": {
489
- "type": "array",
490
- "items": {
491
- "type": "string"
492
- },
493
- "description": "storage 内の column 列 (kind: storage 用)"
494
- },
495
- "marks": {
496
- "type": "array",
497
- "items": {
498
- "oneOf": [
499
- { "type": "string" },
500
- {
501
- "type": "object",
502
- "additionalProperties": false,
503
- "required": ["mark"],
504
- "properties": {
505
- "mark": { "type": "string" },
506
- "tone": { "type": "string", "enum": ["primary", "muted"] }
507
- }
508
- }
509
- ]
510
- },
511
- "description": "行頭の印。 rows と同じ数だけ並べる。 語は 鍵 (名前に下線 = その行で箱を見分ける) / 外 (行頭を山形 = 箱の外とつながる) / 条件 (行頭を中空 = 条件が揃った時だけ効く) の 3 つで、1 行に 2 つ以上書ける。 古い綴り pk / fk / opt / entry / exit / do / internal は読み取りの入口でこの 3 語に読み替わる"
512
- },
513
- "stage": {
514
- "type": "string",
515
- "minLength": 1,
516
- "pattern": "\\S",
517
- "description": "shape: stages の泳法図で、この箱を入れる段階。 記法では stage または 段階 と書く"
518
- },
519
- "lane": {
520
- "type": "string",
521
- "description": "swimlane / topology で属する lane id"
522
- },
523
- "stack": {
524
- "type": "integer",
525
- "minimum": 0,
526
- "description": "lane 内の縦位置 (0-based)"
527
- },
528
- "initial": {
529
- "type": "boolean",
530
- "description": "始まりの箱か (札の形の箱に 初期 の字が出る)"
531
- },
532
- "final": {
533
- "type": "boolean",
534
- "description": "終わりの箱か (札の形の箱に 最終 の字が出る)"
535
- },
536
- "state": {
537
- "type": "object",
538
- "description": "parts の状態の上書き。 kind に parts identifier を指定した時だけ使える。",
539
- "additionalProperties": {
540
- "type": [
541
- "number",
542
- "string",
543
- "boolean"
544
- ]
545
- }
546
- },
547
- "tone": {
548
- "type": "string",
549
- "description": "箱の色調。 success / warning 等の別名も使える。",
550
- "enum": [
551
- "accent",
552
- "teal",
553
- "success",
554
- "error",
555
- "warning",
556
- "info",
557
- "muted",
558
- "成功",
559
- "失敗",
560
- "警告",
561
- "情報",
562
- "中立",
563
- "neutral"
564
- ]
565
- },
566
- "color": {
567
- "type": "string",
568
- "description": "箱の色名、または # で始まる parts の色番号。",
569
- "anyOf": [
570
- {
571
- "enum": [
572
- "accent",
573
- "teal",
574
- "success",
575
- "error",
576
- "warning",
577
- "info",
578
- "muted",
579
- "成功",
580
- "失敗",
581
- "警告",
582
- "情報",
583
- "中立",
584
- "neutral"
585
- ]
586
- },
587
- {
588
- "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
589
- }
590
- ]
591
- },
592
- "owner": {
593
- "type": "string",
594
- "description": "gantt の工程の担当。"
595
- },
596
- "end": {
597
- "type": "string",
598
- "description": "gantt の工程が終わる時期。 始まりより前の時期は始まりと同じに倒し、知らせを出す。"
599
- },
600
- "startLabel": {
601
- "type": "string",
602
- "description": "gantt の工程の始まりに出す札。"
603
- },
604
- "milestone": {
605
- "type": "boolean",
606
- "description": "true なら gantt の帯を節目の菱形にする。"
607
- },
608
- "emphasis": {
609
- "type": "string",
610
- "enum": ["primary"],
611
- "description": "gantt の帯を主役として描く。"
612
- },
613
- "at": {
614
- "type": "array",
615
- "minItems": 2,
616
- "maxItems": 2,
617
- "items": { "type": ["number", "string"] },
618
- "description": "quadrant の座標 [x, y]。左下が 0,0、右上が 1,1。"
619
- },
620
- "点の位置": {
621
- "type": "array",
622
- "minItems": 2,
623
- "maxItems": 2,
624
- "items": { "type": ["number", "string"] },
625
- "description": "at の和名。両方あれば at を採る。"
626
- },
627
- "touchpoint": {
628
- "type": "string",
629
- "description": "journey の段階が起きる場所。"
630
- },
631
- "opportunity": {
632
- "type": "string",
633
- "description": "journey の段階の改善の余地。"
634
- },
635
- "opportunityPosition": {
636
- "type": "string",
637
- "enum": ["below-chart", "below-point"],
638
- "description": "journey の改善の余地を図の下か、その段階の点の下へ置く。"
639
- },
640
- "posX": {
641
- "type": "number",
642
- "description": "箱の絶対 x 座標。"
643
- },
644
- "posY": {
645
- "type": "number",
646
- "description": "箱の絶対 y 座標。"
647
- },
648
- "posW": {
649
- "type": "number",
650
- "description": "箱の幅。"
651
- },
652
- "posH": {
653
- "type": "number",
654
- "description": "箱の高さ。"
655
- },
656
- "scale": {
657
- "type": "number",
658
- "description": "parts の描画倍率。 kind に parts identifier を指定した時だけ使える。"
659
- },
660
- "phase": {
661
- "type": "boolean",
662
- "description": "parts が持つ段を使うか。 既定は書いた段と番号ごとに並べて再生する。 false を書くと parts の段の中身を空にし、値は animation に書いた段だけが動かす。 kind に parts identifier を指定した時だけ使える。"
663
- },
664
- "pos": {
665
- "type": "object",
666
- "additionalProperties": false,
667
- "description": "auto layout の結果からずらす幅 (dx, dy)。 絶対座標は posX / posY で書く。",
668
- "required": [
669
- "x",
670
- "y"
671
- ],
672
- "properties": {
673
- "x": {
674
- "type": "number"
675
- },
676
- "y": {
677
- "type": "number"
678
- }
679
- }
680
- },
681
- "posRel": {
682
- "type": "object",
683
- "additionalProperties": false,
684
- "description": "位置を他の要素からの相対で書く指定。 座標を知らなくても「誰の」「どちら側に」「どれだけ離して」 で置ける。 解決した後は posX / posY を書いた時と同じ経路を通る。",
685
- "required": [
686
- "anchor",
687
- "dir"
688
- ],
689
- "properties": {
690
- "anchor": {
691
- "type": "string",
692
- "minLength": 1,
693
- "description": "基準にする相手の名前。 actors に書かれた名前をそのまま書く。"
694
- },
695
- "dir": {
696
- "type": "string",
697
- "enum": [
698
- "right",
699
- "left",
700
- "above",
701
- "below"
702
- ],
703
- "description": "基準からどちら側に置くか。"
704
- },
705
- "gap": {
706
- "type": "number",
707
- "description": "相手の縁との間隔。 書かなければ 160 で置く。"
708
- }
709
- }
710
- },
711
- "visibleIf": {
712
- "type": "string",
713
- "description": "その箱を出すかどうかの条件。 状態を差し込める文字列で、\"0\" / \"false\" / 空文字が偽、それ以外は真。"
714
- },
715
- "title": {
716
- "type": "string",
717
- "description": "箱に出す題。 書かなければ name がそのまま題になる。 name は図の中で 1 つに決まる必要があるが、題は重なってよい。"
718
- },
719
- "shape": {
720
- "type": "object",
721
- "description": "箱の中に描く図形。 水位 / 角度 / 半径を状態で動かせる。 kind ごとに書ける欄が違う (rect / circle / arc / wave / polygon)。",
722
- "required": [
723
- "kind"
724
- ],
725
- "properties": {
726
- "kind": {
727
- "type": "string",
728
- "enum": [
729
- "rect",
730
- "circle",
731
- "arc",
732
- "wave",
733
- "polygon"
734
- ]
735
- },
736
- "source": {
737
- "type": [
738
- "number",
739
- "string"
740
- ]
741
- },
742
- "fillMax": {
743
- "type": "number"
744
- },
745
- "orient": {
746
- "type": "string",
747
- "enum": [
748
- "up",
749
- "down",
750
- "left",
751
- "right"
752
- ]
753
- },
754
- "radius": {
755
- "type": [
756
- "number",
757
- "string"
758
- ]
759
- },
760
- "fillProgress": {
761
- "type": [
762
- "number",
763
- "string"
764
- ]
765
- },
766
- "innerRadius": {
767
- "type": "number"
768
- },
769
- "outerRadius": {
770
- "type": "number"
771
- },
772
- "startAngle": {
773
- "type": "number"
774
- },
775
- "angle": {
776
- "type": [
777
- "number",
778
- "string"
779
- ]
780
- },
781
- "sweepMax": {
782
- "type": "number"
783
- },
784
- "level": {
785
- "type": [
786
- "number",
787
- "string"
788
- ]
789
- },
790
- "amplitude": {
791
- "type": "number"
792
- },
793
- "frequency": {
794
- "type": "number"
795
- },
796
- "waveHeight": {
797
- "type": "number"
798
- },
799
- "sides": {
800
- "type": "number"
801
- },
802
- "rotation": {
803
- "type": [
804
- "number",
805
- "string"
806
- ]
807
- },
808
- "fill": {
809
- "type": "string"
810
- },
811
- "stroke": {
812
- "type": "string"
813
- }
814
- },
815
- "additionalProperties": false,
816
- "oneOf": [
817
- {
818
- "properties": {
819
- "kind": {
820
- "enum": [
821
- "rect"
822
- ]
823
- }
824
- },
825
- "required": [
826
- "source",
827
- "fillMax"
828
- ]
829
- },
830
- {
831
- "properties": {
832
- "kind": {
833
- "enum": [
834
- "circle"
835
- ]
836
- }
837
- }
838
- },
839
- {
840
- "properties": {
841
- "kind": {
842
- "enum": [
843
- "arc"
844
- ]
845
- }
846
- },
847
- "required": [
848
- "angle"
849
- ]
850
- },
851
- {
852
- "properties": {
853
- "kind": {
854
- "enum": [
855
- "wave"
856
- ]
857
- }
858
- },
859
- "required": [
860
- "level",
861
- "amplitude"
862
- ]
863
- },
864
- {
865
- "properties": {
866
- "kind": {
867
- "enum": [
868
- "polygon"
869
- ]
870
- }
871
- },
872
- "required": [
873
- "sides"
874
- ]
875
- }
876
- ]
877
- },
878
- "wBind": {
879
- "type": "string",
880
- "minLength": 1,
881
- "pattern": "\\S",
882
- "description": "箱の幅を値に追随させる。 状態の名前を {名前} の形で書く。 配置計算は追随前の大きさを使う"
883
- },
884
- "hBind": {
885
- "type": "string",
886
- "minLength": 1,
887
- "pattern": "\\S",
888
- "description": "箱の高さを値に追随させる。 wBind と同じ読み方"
889
- },
890
- "opacity": {
891
- "type": [
892
- "number",
893
- "string"
894
- ],
895
- "minLength": 1,
896
- "pattern": "\\S",
897
- "description": "箱の濃さ。 0 から 1 の数か、状態の名前。 書かなければ完全に見える"
898
- },
899
- "renderOffsetX": {
900
- "type": [
901
- "number",
902
- "string"
903
- ],
904
- "minLength": 1,
905
- "pattern": "\\S",
906
- "description": "描く時だけ箱を横へずらす量。 配置計算と矢印はずらす前の位置を使う"
907
- },
908
- "renderOffsetY": {
909
- "type": [
910
- "number",
911
- "string"
912
- ],
913
- "minLength": 1,
914
- "pattern": "\\S",
915
- "description": "描く時だけ箱を縦へずらす量。 renderOffsetX と同じ読み方"
916
- }
917
- }
918
- }
919
- ]
920
- }
921
- },
922
- "flow": {
923
- "type": "array",
924
- "description": "step の配列 (矢印で actor 間を繋ぐ)。 sequence では順序が意味を持つ。",
925
- "items": {
926
- "type": "object",
927
- "required": [
928
- "from",
929
- "to",
930
- "label"
931
- ],
932
- "additionalProperties": false,
933
- "properties": {
934
- "from": {
935
- "type": "string",
936
- "description": "起点 actor 名"
937
- },
938
- "to": {
939
- "type": "string",
940
- "description": "終点 actor 名"
941
- },
942
- "label": {
943
- "type": "string",
944
- "description": "矢印上のラベル (関数呼出し名 / メッセージ等)"
945
- },
946
- "sub": {
947
- "type": "string",
948
- "description": "ラベル下の補足"
949
- },
950
- "tailSub": {
951
- "type": "string",
952
- "description": "relation を書いた record の出どころ側の多重度 (例 \"1\")。 sub が行き先の端の多重度"
953
- },
954
- "tone": {
955
- "type": "string",
956
- "enum": [
957
- "accent",
958
- "teal",
959
- "success",
960
- "error",
961
- "warning",
962
- "info",
963
- "muted",
964
- "成功",
965
- "失敗",
966
- "警告",
967
- "情報",
968
- "中立",
969
- "neutral"
970
- ],
971
- "description": "矢印の色調。 success / 成功 等の別名も使える。"
972
- },
973
- "style": {
974
- "type": "string",
975
- "enum": [
976
- "solid",
977
- "dotted-flow",
978
- "dashed"
979
- ],
980
- "description": "矢印の線種"
981
- },
982
- "guard": {
983
- "type": "string",
984
- "description": "移り変わりの条件 (名前の下の行に出る)"
985
- },
986
- "cardinality": {
987
- "type": "string",
988
- "description": "ER の多重度 (type: record 用)。 1:1 / 1:N / N:1 / N:M / 0..1 / 1..* のどれかを書くと、 両端の形がその語から決まり (tailHead / head を書けばそちらが勝つ)、 語は説明文の下の行に出る。 説明文に書いた同じ語は説明文から外す。 6 語以外を書くと説明文に (語) と添えるだけで、 端の形は決まらない (tailHead と head を両方書かなければ、 描かない端を知らせる)。 type: record 以外の図種では描かず、 そのことを知らせる"
989
- },
990
- "side": {
991
- "type": "string",
992
- "enum": [
993
- "top",
994
- "right",
995
- "bottom",
996
- "left"
997
- ],
998
- "description": "矢印がどの辺から出るか。 書かなければ描画側が自動で選ぶ。"
999
- },
1000
- "fromSide": {
1001
- "type": "string",
1002
- "enum": ["top", "right", "bottom", "left"],
1003
- "description": "矢印が出どころのどの辺から出るか"
1004
- },
1005
- "toSide": {
1006
- "type": "string",
1007
- "enum": ["top", "right", "bottom", "left"],
1008
- "description": "矢印が行き先のどの辺へ入るか"
1009
- },
1010
- "head": {
1011
- "type": "string",
1012
- "enum": [
1013
- "none",
1014
- "dot",
1015
- "triangle",
1016
- "diamond",
1017
- "open",
1018
- "crow",
1019
- "one",
1020
- "zero-one",
1021
- "many",
1022
- "zero-many"
1023
- ],
1024
- "description": "着き先側の端の形。 端の形で関係の種類を示す = triangle (継承・実装) / diamond (集約・コンポジション) / open (関連・依存) / crow (多) / one / zero-one / many / zero-many (個数)。 書かなければ塗った三角になる。"
1025
- },
1026
- "tailHead": {
1027
- "type": "string",
1028
- "enum": [
1029
- "none",
1030
- "dot",
1031
- "triangle",
1032
- "diamond",
1033
- "open",
1034
- "crow",
1035
- "one",
1036
- "zero-one",
1037
- "many",
1038
- "zero-many"
1039
- ],
1040
- "description": "出どころ側の端の形。 両端に別々の印を立てる時に書く。"
1041
- },
1042
- "headFill": {
1043
- "type": "string",
1044
- "enum": [
1045
- "solid",
1046
- "hollow"
1047
- ],
1048
- "description": "着き先側の端の塗り。 中空は「弱い関係」 を表す。"
1049
- },
1050
- "tailHeadFill": {
1051
- "type": "string",
1052
- "enum": [
1053
- "solid",
1054
- "hollow"
1055
- ],
1056
- "description": "出どころ側の端の塗り。"
1057
- },
1058
- "relation": {
1059
- "type": "string",
1060
- "enum": [
1061
- "extends",
1062
- "implements",
1063
- "aggregates",
1064
- "composes",
1065
- "associates",
1066
- "uses"
1067
- ],
1068
- "description": "record に書く UML 関係の語。 書くと端の形 / 塗り / 線種がまとめて決まる。"
1069
- },
1070
- "role": {
1071
- "type": "string",
1072
- "enum": [
1073
- "main"
1074
- ],
1075
- "description": "辺の役目。 main を書いた辺だけ「いま」 の色で引く。 主となる 1 本 (または 1 続き) にだけ書く"
1076
- },
1077
- "labelPlate": {
1078
- "type": "boolean",
1079
- "description": "説明文の下地を敷くか。 false で外す。 丸い下地は箱と同じ形なので、罫の細い図では名前が小さな箱に見える"
1080
- },
1081
- "kind": {
1082
- "type": "string",
1083
- "enum": [
1084
- "call",
1085
- "return",
1086
- "fire"
1087
- ],
1088
- "description": "順序図の言づての種類。 call (返事を待つ) / return (返し) / fire (返事を待たない)。"
1089
- },
1090
- "labelOffsetX": {
1091
- "type": "number",
1092
- "description": "ラベル位置 x 調整"
1093
- },
1094
- "labelOffsetY": {
1095
- "type": "number",
1096
- "description": "ラベル位置 y 調整"
1097
- },
1098
- "posX1": {
1099
- "type": "number",
1100
- "description": "線の出どころ側を固定する world x 座標"
1101
- },
1102
- "posY1": {
1103
- "type": "number",
1104
- "description": "線の出どころ側を固定する world y 座標"
1105
- },
1106
- "posX2": {
1107
- "type": "number",
1108
- "description": "線の行き先側を固定する world x 座標"
1109
- },
1110
- "posY2": {
1111
- "type": "number",
1112
- "description": "線の行き先側を固定する world y 座標"
1113
- },
1114
- "waypoints": {
1115
- "type": "array",
1116
- "items": {
1117
- "type": "object",
1118
- "additionalProperties": false,
1119
- "required": ["x", "y"],
1120
- "properties": {
1121
- "x": { "type": "number" },
1122
- "y": { "type": "number" }
1123
- }
1124
- }
1125
- },
1126
- "labelCollision": {
1127
- "type": "string",
1128
- "enum": ["auto", "author"]
1129
- },
1130
- "labelSize": {
1131
- "type": "object",
1132
- "additionalProperties": false,
1133
- "properties": {
1134
- "width": { "$ref": "#/$defs/positiveNumber" },
1135
- "height": { "$ref": "#/$defs/positiveNumber" },
1136
- "fontSize": { "$ref": "#/$defs/positiveNumber" }
1137
- }
1138
- },
1139
- "overlay": {
1140
- "type": "boolean",
1141
- "description": "true で説明文を矢印の線の上に重ねる (分岐図の条件ラベル用)"
1142
- },
1143
- "fromPartNode": {
1144
- "type": "string",
1145
- "minLength": 1,
1146
- "pattern": "\\S",
1147
- "description": "from が部品の時、矢印を繋ぐ部品の中の要素の id。 要素を 1 つだけ持つ部品は書かなくてもその要素に繋ぐ。 要素を 2 つ以上持つ部品は書かないと矢印を外して知らせる"
1148
- },
1149
- "toPartNode": {
1150
- "type": "string",
1151
- "minLength": 1,
1152
- "pattern": "\\S",
1153
- "description": "to が部品の時、矢印を繋ぐ部品の中の要素の id。 要素を 1 つだけ持つ部品は書かなくてもその要素に繋ぐ。 要素を 2 つ以上持つ部品は書かないと矢印を外して知らせる"
1154
- },
1155
- "pos": {
1156
- "type": "object",
1157
- "additionalProperties": false,
1158
- "description": "矢印の説明文をずらす幅 (dx, dy)。",
1159
- "required": [
1160
- "x",
1161
- "y"
1162
- ],
1163
- "properties": {
1164
- "x": {
1165
- "type": "number"
1166
- },
1167
- "y": {
1168
- "type": "number"
1169
- }
1170
- }
1171
- },
1172
- "widthBind": {
1173
- "type": "string",
1174
- "minLength": 1,
1175
- "pattern": "\\S",
1176
- "description": "線の太さを値に追随させる。 状態やつまみの名前を {名前} の形で書く"
1177
- },
1178
- "strokeBind": {
1179
- "type": "string",
1180
- "minLength": 1,
1181
- "pattern": "\\S",
1182
- "description": "線の色を値に追随させる。 widthBind と同じ読み方"
1183
- },
1184
- "dashOffsetBind": {
1185
- "type": "string",
1186
- "minLength": 1,
1187
- "pattern": "\\S",
1188
- "description": "破線の位置を値に追随させる (流れているように見せる)。 widthBind と同じ読み方"
1189
- }
1190
- }
1191
- }
1192
- },
1193
- "states": {
1194
- "type": "object",
1195
- "description": "状態の初期値。 名前 -> 初期値 の object。 optional。 箱の文字に `{名前}` を置くと、 ここに書いた値が描画時に置き換わる。 段で動かすには animation[].tween / animation[].set を使う。",
1196
- "additionalProperties": false,
1197
- "patternProperties": {
1198
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1199
- "type": [
1200
- "number",
1201
- "string"
1202
- ],
1203
- "description": "初期値。 数か文字列。 名前は英字か _ で始め、 英数字と _ だけを使う"
1204
- }
1205
- },
1206
- "examples": [
1207
- {
1208
- "inflow": 0,
1209
- "done": 0
1210
- }
1211
- ]
1212
- },
1213
- "values": {
1214
- "type": "object",
1215
- "description": "他の値から自動で決まる値。 名前 -> 式 の object。 optional。 式には四則 (+ - * /) と括弧、 比較 (> >= < <= == !=)、 min / max が書ける。 他の値は {名前} で読む。 解くのは描画側で、 参照した値が動けば追随する。",
1216
- "additionalProperties": false,
1217
- "patternProperties": {
1218
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1219
- "type": "string",
1220
- "minLength": 1,
1221
- "description": "式。 例 `{inflow} - {done}`"
1222
- }
1223
- },
1224
- "examples": [
1225
- {
1226
- "waiting": "{inflow} - {done}",
1227
- "busy": "{waiting} > 80"
1228
- }
1229
- ]
1230
- },
1231
- "animation": {
1232
- "type": "array",
1233
- "description": "アニメーション phase 配列。 各 phase で focus 対象を highlight し、 tween / set で states の値を動かす。 optional。",
1234
- "items": {
1235
- "type": "object",
1236
- "required": [
1237
- "step"
1238
- ],
1239
- "additionalProperties": false,
1240
- "properties": {
1241
- "step": {
1242
- "type": "string",
1243
- "minLength": 1,
1244
- "description": "phase 名"
1245
- },
1246
- "duration": {
1247
- "type": "number",
1248
- "minimum": 0.1,
1249
- "description": "phase 時間 (秒、 default 1.4)"
1250
- },
1251
- "focus": {
1252
- "type": "array",
1253
- "items": {
1254
- "type": "string"
1255
- },
1256
- "description": "この phase で active 化する actor 名 or edge 'A -> B' の配列"
1257
- },
1258
- "body": {
1259
- "type": "string",
1260
- "description": "phase 説明文"
1261
- },
1262
- "description": {
1263
- "type": "string",
1264
- "description": "phase 説明文の別名 (記法の description: と同じ)。 正の語は body で、 両方書いた段は body が効く"
1265
- },
1266
- "badge": {
1267
- "type": "string",
1268
- "description": "phase 中に表示する badge label"
1269
- },
1270
- "draw": {
1271
- "type": "string",
1272
- "enum": [
1273
- "line",
1274
- "bar",
1275
- "pie",
1276
- "journey",
1277
- "mind",
1278
- "tree",
1279
- "gantt",
1280
- "funnel",
1281
- "slope",
1282
- "gauge",
1283
- "radial",
1284
- "stacked",
1285
- "waffle"
1286
- ],
1287
- "description": "この phase で起点から描くもの。 語は図種と揃える (数を描く図では shape と揃える)。 line / journey = 線が左端から右へ伸びる / bar = 棒が横軸から上へ伸びる / pie = 扇が 12 時から時計回りに開く / mind = 枝が中心から外へ伸びる / tree = 枝が根から下へ伸びる / gantt = 帯が各始端から右へ伸びる / funnel = 段が上端から順に積まれる / slope = 線が左の軸から右の軸へ伸びる / gauge = 弧が 9 時から上を通って 3 時へ伸びる / radial = 各輪が 12 時から時計回りに開く / stacked = 帯が左端から右へ伸びる / waffle = 印が左上から読む向きに 1 個ずつ埋まる"
1288
- },
1289
- "drawRatio": {
1290
- "type": "number",
1291
- "exclusiveMinimum": 0,
1292
- "maximum": 1,
1293
- "description": "描き終えるまでに phase の何割を使うか。 0.4 なら進みが 0.4 に達した時点で描き終わり、残りは描き終わった姿のまま値だけが動く。 書かなければ phase の終わりに描き終わる。 draw と一緒に書く (draw が無いと何も起きない)"
1294
- },
1295
- "tween": {
1296
- "type": "object",
1297
- "description": "この phase で補間する状態。 状態名 -> [開始値, 終了値]。 名前は英字か _ で始め、 英数字と _ だけを使う",
1298
- "additionalProperties": false,
1299
- "patternProperties": {
1300
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1301
- "type": "array",
1302
- "items": {
1303
- "type": "number"
1304
- },
1305
- "minItems": 2,
1306
- "maxItems": 2
1307
- }
1308
- }
1309
- },
1310
- "set": {
1311
- "type": "object",
1312
- "description": "この phase の切替で差し替える状態。 状態名 -> 値。 名前は英字か _ で始め、 英数字と _ だけを使う",
1313
- "additionalProperties": false,
1314
- "patternProperties": {
1315
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1316
- "type": [
1317
- "number",
1318
- "string"
1319
- ]
1320
- }
1321
- }
1322
- }
1323
- }
1324
- }
1325
- },
1326
- "viewport": {
1327
- "type": "object",
1328
- "description": "全体 canvas サイズ + gap の調整。 optional。",
1329
- "additionalProperties": false,
1330
- "properties": {
1331
- "width": {
1332
- "type": "number",
1333
- "minimum": 100
1334
- },
1335
- "height": {
1336
- "type": "number",
1337
- "minimum": 100
1338
- },
1339
- "contentOffsetX": {
1340
- "type": "number"
1341
- },
1342
- "laneWidth": {
1343
- "type": "number",
1344
- "minimum": 100
1345
- },
1346
- "gap": {
1347
- "type": "number",
1348
- "minimum": 0
1349
- },
1350
- "laneGap": {
1351
- "type": "number",
1352
- "minimum": 0
1353
- },
1354
- "nodeGap": {
1355
- "type": "number",
1356
- "minimum": 0
1357
- },
1358
- "labelMargin": {
1359
- "type": "number",
1360
- "minimum": 0
1361
- },
1362
- "scale": {
1363
- "type": "number",
1364
- "description": "図全体の倍率 (既定 1)。 箱 / 文字 / 線 / 間隔がすべて等比で変わる。"
1365
- }
1366
- }
1367
- },
1368
- "lanes": {
1369
- "type": "object",
1370
- "description": "swimlane / topology で使う lane 宣言。 key = lane id、 value = lane 定義。",
1371
- "additionalProperties": {
1372
- "type": "object",
1373
- "additionalProperties": false,
1374
- "properties": {
1375
- "x": {
1376
- "type": "number"
1377
- },
1378
- "width": {
1379
- "type": "number",
1380
- "minimum": 50
1381
- },
1382
- "label": {
1383
- "type": "string"
1384
- },
1385
- "subtitle": {
1386
- "type": "string"
1387
- },
1388
- "contain": {
1389
- "type": "boolean"
1390
- },
1391
- "lifeline": {
1392
- "type": "boolean"
1393
- },
1394
- "pos": {
1395
- "type": "object",
1396
- "additionalProperties": false,
1397
- "description": "縦列をずらす幅 (dx, dy)。",
1398
- "required": [
1399
- "x",
1400
- "y"
1401
- ],
1402
- "properties": {
1403
- "x": {
1404
- "type": "number"
1405
- },
1406
- "y": {
1407
- "type": "number"
1408
- }
1409
- }
1410
- }
1411
- }
1412
- }
1413
- },
1414
- "groups": {
1415
- "type": "object",
1416
- "description": "topology で使う group 宣言。 key = group id、 value = { label, lanes }。",
1417
- "additionalProperties": {
1418
- "type": "object",
1419
- "required": [
1420
- "lanes"
1421
- ],
1422
- "additionalProperties": false,
1423
- "properties": {
1424
- "label": {
1425
- "type": "string"
1426
- },
1427
- "lanes": {
1428
- "type": "array",
1429
- "items": {
1430
- "type": "string"
1431
- },
1432
- "minItems": 1
1433
- }
1434
- }
1435
- }
1436
- },
1437
- "readouts": {
1438
- "type": "array",
1439
- "description": "値を見せる部品。 状態の値を割合の輪 / 数え上げ / 目盛りで出す。 箱ではないので縦列に載らず、図全体に 1 つの並びとして持つ。",
1440
- "items": {
1441
- "type": "object",
1442
- "required": [
1443
- "id",
1444
- "kind"
1445
- ],
1446
- "additionalProperties": false,
1447
- "properties": {
1448
- "id": {
1449
- "type": "string",
1450
- "minLength": 1
1451
- },
1452
- "kind": {
1453
- "type": "string",
1454
- "enum": [
1455
- "activity-feed",
1456
- "alert-banner",
1457
- "array-bar",
1458
- "array-list",
1459
- "article-preview",
1460
- "attendance-grid",
1461
- "avatar",
1462
- "badge",
1463
- "bar",
1464
- "breadcrumb",
1465
- "bubble-chart",
1466
- "bullet-chart",
1467
- "calendar-heatmap",
1468
- "calendar-month",
1469
- "calendar-week",
1470
- "candlestick",
1471
- "cart-summary",
1472
- "chat-bubble",
1473
- "checklist",
1474
- "chess-board",
1475
- "circular-gauge",
1476
- "commit-list",
1477
- "confidence-meter",
1478
- "countup",
1479
- "coupon-code",
1480
- "delta",
1481
- "diff-counter",
1482
- "donut",
1483
- "event-log",
1484
- "file-dropzone",
1485
- "form-summary",
1486
- "fuel-bar",
1487
- "funnel",
1488
- "gantt",
1489
- "gauge",
1490
- "grade",
1491
- "heat-cell",
1492
- "icon-tile",
1493
- "kanban-board",
1494
- "kpi-card",
1495
- "kpi-comparison",
1496
- "kpi-trend-tile",
1497
- "leaderboard",
1498
- "line-chart",
1499
- "log-stream",
1500
- "map-pin",
1501
- "matrix",
1502
- "media-player",
1503
- "metrics-grid",
1504
- "mini-map",
1505
- "notification",
1506
- "number-board",
1507
- "order-status",
1508
- "org-chart-mini",
1509
- "otp-input",
1510
- "password-strength",
1511
- "path-progress",
1512
- "percent-ring",
1513
- "pill-group",
1514
- "podium",
1515
- "polar-area",
1516
- "poll-bar",
1517
- "price-tag",
1518
- "pricing-tier",
1519
- "priority-badge",
1520
- "progress-group",
1521
- "quick-poll-emoji",
1522
- "radar",
1523
- "rating",
1524
- "rating-thumb",
1525
- "reaction-bar",
1526
- "read-receipt",
1527
- "roadmap",
1528
- "sankey",
1529
- "search-result",
1530
- "sequence-timeline",
1531
- "service-health",
1532
- "share-buttons",
1533
- "slope",
1534
- "song-queue",
1535
- "sparkline",
1536
- "spinner",
1537
- "stacked-bar",
1538
- "stat",
1539
- "status-dot",
1540
- "status-timeline",
1541
- "step-indicator",
1542
- "step-progress",
1543
- "stopwatch",
1544
- "tag-cloud",
1545
- "terminal",
1546
- "thermometer",
1547
- "thread-summary",
1548
- "timeline-vertical",
1549
- "timezone-clock",
1550
- "toc-nav",
1551
- "token-list",
1552
- "traffic-light",
1553
- "treemap",
1554
- "typewriter",
1555
- "user-presence",
1556
- "user-stack",
1557
- "venn",
1558
- "video-card",
1559
- "voice-message",
1560
- "waterfall",
1561
- "weather-forecast"
1562
- ]
1563
- },
1564
- "additionsSource": {
1565
- "type": "string"
1566
- },
1567
- "bodySource": {
1568
- "type": "string"
1569
- },
1570
- "canvasH": {
1571
- "type": "number"
1572
- },
1573
- "canvasW": {
1574
- "type": "number"
1575
- },
1576
- "caption": {
1577
- "type": "string"
1578
- },
1579
- "cellGap": {
1580
- "type": "number"
1581
- },
1582
- "cellSize": {
1583
- "type": "number"
1584
- },
1585
- "charMs": {
1586
- "type": "number"
1587
- },
1588
- "color": {
1589
- "type": "string"
1590
- },
1591
- "colorA": {
1592
- "type": "string"
1593
- },
1594
- "colorAccent": {
1595
- "type": "string"
1596
- },
1597
- "colorActive": {
1598
- "type": "string"
1599
- },
1600
- "colorActual": {
1601
- "type": "string"
1602
- },
1603
- "colorAdd": {
1604
- "type": "string"
1605
- },
1606
- "colorApplied": {
1607
- "type": "string"
1608
- },
1609
- "colorB": {
1610
- "type": "string"
1611
- },
1612
- "colorBar": {
1613
- "type": "string"
1614
- },
1615
- "colorBottom": {
1616
- "type": "string"
1617
- },
1618
- "colorDel": {
1619
- "type": "string"
1620
- },
1621
- "colorDiscount": {
1622
- "type": "string"
1623
- },
1624
- "colorDown": {
1625
- "type": "string"
1626
- },
1627
- "colorFocus": {
1628
- "type": "string"
1629
- },
1630
- "colorMap": {
1631
- "type": "array",
1632
- "minItems": 1,
1633
- "items": {
1634
- "type": "object",
1635
- "required": [
1636
- "status",
1637
- "color"
1638
- ],
1639
- "additionalProperties": false,
1640
- "properties": {
1641
- "status": {
1642
- "type": "string"
1643
- },
1644
- "color": {
1645
- "type": "string"
1646
- }
1647
- }
1648
- }
1649
- },
1650
- "colorNeg": {
1651
- "type": "string"
1652
- },
1653
- "colorNew": {
1654
- "type": "string"
1655
- },
1656
- "colorOld": {
1657
- "type": "string"
1658
- },
1659
- "colorOther": {
1660
- "type": "string"
1661
- },
1662
- "colorPending": {
1663
- "type": "string"
1664
- },
1665
- "colorPlay": {
1666
- "type": "string"
1667
- },
1668
- "colorPos": {
1669
- "type": "string"
1670
- },
1671
- "colorRead": {
1672
- "type": "string"
1673
- },
1674
- "colorSelf": {
1675
- "type": "string"
1676
- },
1677
- "colorSource": {
1678
- "type": "string"
1679
- },
1680
- "colorStrong": {
1681
- "type": "string"
1682
- },
1683
- "colorTop": {
1684
- "type": "string"
1685
- },
1686
- "colorTotal": {
1687
- "type": "string"
1688
- },
1689
- "colorUnread": {
1690
- "type": "string"
1691
- },
1692
- "colorUp": {
1693
- "type": "string"
1694
- },
1695
- "colorWeak": {
1696
- "type": "string"
1697
- },
1698
- "colorWinner": {
1699
- "type": "string"
1700
- },
1701
- "colors": {
1702
- "type": "array",
1703
- "items": {
1704
- "type": "string"
1705
- }
1706
- },
1707
- "columnWidth": {
1708
- "type": "number"
1709
- },
1710
- "comparisonSource": {
1711
- "type": "string"
1712
- },
1713
- "count": {
1714
- "type": "number"
1715
- },
1716
- "currency": {
1717
- "type": "string"
1718
- },
1719
- "currentSource": {
1720
- "type": "string"
1721
- },
1722
- "decimals": {
1723
- "type": "number"
1724
- },
1725
- "deletionsSource": {
1726
- "type": "string"
1727
- },
1728
- "duration": {
1729
- "type": "number"
1730
- },
1731
- "durationMs": {
1732
- "type": "number"
1733
- },
1734
- "durationSource": {
1735
- "type": "string"
1736
- },
1737
- "fill": {
1738
- "type": "boolean"
1739
- },
1740
- "highThreshold": {
1741
- "type": "number"
1742
- },
1743
- "history": {
1744
- "type": "number"
1745
- },
1746
- "historySource": {
1747
- "type": "string"
1748
- },
1749
- "innerRatio": {
1750
- "type": "number"
1751
- },
1752
- "itemTemplate": {
1753
- "type": "string"
1754
- },
1755
- "kindSource": {
1756
- "type": "string"
1757
- },
1758
- "label": {
1759
- "type": "string"
1760
- },
1761
- "labelA": {
1762
- "type": "string"
1763
- },
1764
- "labelB": {
1765
- "type": "string"
1766
- },
1767
- "labelSource": {
1768
- "type": "string"
1769
- },
1770
- "lowThreshold": {
1771
- "type": "number"
1772
- },
1773
- "map": {
1774
- "type": "array",
1775
- "minItems": 1,
1776
- "items": {
1777
- "type": "object",
1778
- "required": [
1779
- "value",
1780
- "color"
1781
- ],
1782
- "additionalProperties": false,
1783
- "properties": {
1784
- "value": {
1785
- "type": "string"
1786
- },
1787
- "color": {
1788
- "type": "string"
1789
- },
1790
- "label": {
1791
- "type": "string"
1792
- }
1793
- }
1794
- }
1795
- },
1796
- "max": {
1797
- "type": "number"
1798
- },
1799
- "maxSize": {
1800
- "type": "number"
1801
- },
1802
- "membersSource": {
1803
- "type": "string"
1804
- },
1805
- "min": {
1806
- "type": "number"
1807
- },
1808
- "minSize": {
1809
- "type": "number"
1810
- },
1811
- "monthName": {
1812
- "type": "string"
1813
- },
1814
- "newSource": {
1815
- "type": "string"
1816
- },
1817
- "oldSource": {
1818
- "type": "string"
1819
- },
1820
- "pathD": {
1821
- "type": "string"
1822
- },
1823
- "playingSource": {
1824
- "type": "string"
1825
- },
1826
- "prefix": {
1827
- "type": "string"
1828
- },
1829
- "prevSource": {
1830
- "type": "string"
1831
- },
1832
- "progressSource": {
1833
- "type": "string"
1834
- },
1835
- "rMax": {
1836
- "type": "number"
1837
- },
1838
- "rMin": {
1839
- "type": "number"
1840
- },
1841
- "rangeAvg": {
1842
- "type": "number"
1843
- },
1844
- "rangeBad": {
1845
- "type": "number"
1846
- },
1847
- "runningSource": {
1848
- "type": "string"
1849
- },
1850
- "segments": {
1851
- "type": "number"
1852
- },
1853
- "showValue": {
1854
- "type": "boolean"
1855
- },
1856
- "size": {
1857
- "type": "number"
1858
- },
1859
- "source": {
1860
- "type": "string"
1861
- },
1862
- "sourceA": {
1863
- "type": "string"
1864
- },
1865
- "sourceB": {
1866
- "type": "string"
1867
- },
1868
- "stepsSource": {
1869
- "type": "string"
1870
- },
1871
- "strokeWidth": {
1872
- "type": "number"
1873
- },
1874
- "suffix": {
1875
- "type": "string"
1876
- },
1877
- "targetSource": {
1878
- "type": "string"
1879
- },
1880
- "textSource": {
1881
- "type": "string"
1882
- },
1883
- "titleSource": {
1884
- "type": "string"
1885
- },
1886
- "unit": {
1887
- "type": "string"
1888
- },
1889
- "viewH": {
1890
- "type": "number"
1891
- },
1892
- "viewW": {
1893
- "type": "number"
1894
- },
1895
- "xMax": {
1896
- "type": "number"
1897
- },
1898
- "xMin": {
1899
- "type": "number"
1900
- },
1901
- "yMax": {
1902
- "type": "number"
1903
- },
1904
- "yMin": {
1905
- "type": "number"
1906
- }
1907
- },
1908
- "oneOf": [
1909
- {
1910
- "properties": {
1911
- "kind": {
1912
- "enum": [
1913
- "bar"
1914
- ]
1915
- }
1916
- },
1917
- "required": [
1918
- "source",
1919
- "min",
1920
- "max"
1921
- ]
1922
- },
1923
- {
1924
- "properties": {
1925
- "kind": {
1926
- "enum": [
1927
- "gauge"
1928
- ]
1929
- }
1930
- },
1931
- "required": [
1932
- "source",
1933
- "min",
1934
- "max"
1935
- ]
1936
- },
1937
- {
1938
- "properties": {
1939
- "kind": {
1940
- "enum": [
1941
- "stat"
1942
- ]
1943
- }
1944
- },
1945
- "required": [
1946
- "source"
1947
- ]
1948
- },
1949
- {
1950
- "properties": {
1951
- "kind": {
1952
- "enum": [
1953
- "sparkline"
1954
- ]
1955
- }
1956
- },
1957
- "required": [
1958
- "source"
1959
- ]
1960
- },
1961
- {
1962
- "properties": {
1963
- "kind": {
1964
- "enum": [
1965
- "countup"
1966
- ]
1967
- }
1968
- },
1969
- "required": [
1970
- "source"
1971
- ]
1972
- },
1973
- {
1974
- "properties": {
1975
- "kind": {
1976
- "enum": [
1977
- "typewriter"
1978
- ]
1979
- }
1980
- },
1981
- "required": [
1982
- "source"
1983
- ]
1984
- },
1985
- {
1986
- "properties": {
1987
- "kind": {
1988
- "enum": [
1989
- "delta"
1990
- ]
1991
- }
1992
- },
1993
- "required": [
1994
- "source"
1995
- ]
1996
- },
1997
- {
1998
- "properties": {
1999
- "kind": {
2000
- "enum": [
2001
- "percent-ring"
2002
- ]
2003
- }
2004
- },
2005
- "required": [
2006
- "source",
2007
- "max"
2008
- ]
2009
- },
2010
- {
2011
- "properties": {
2012
- "kind": {
2013
- "enum": [
2014
- "heat-cell"
2015
- ]
2016
- }
2017
- },
2018
- "required": [
2019
- "source",
2020
- "min",
2021
- "max"
2022
- ]
2023
- },
2024
- {
2025
- "properties": {
2026
- "kind": {
2027
- "enum": [
2028
- "donut"
2029
- ]
2030
- }
2031
- },
2032
- "required": [
2033
- "source"
2034
- ]
2035
- },
2036
- {
2037
- "properties": {
2038
- "kind": {
2039
- "enum": [
2040
- "radar"
2041
- ]
2042
- }
2043
- },
2044
- "required": [
2045
- "source",
2046
- "max"
2047
- ]
2048
- },
2049
- {
2050
- "properties": {
2051
- "kind": {
2052
- "enum": [
2053
- "step-progress"
2054
- ]
2055
- }
2056
- },
2057
- "required": [
2058
- "source",
2059
- "stepsSource"
2060
- ]
2061
- },
2062
- {
2063
- "properties": {
2064
- "kind": {
2065
- "enum": [
2066
- "status-dot"
2067
- ]
2068
- }
2069
- },
2070
- "required": [
2071
- "source",
2072
- "map"
2073
- ]
2074
- },
2075
- {
2076
- "properties": {
2077
- "kind": {
2078
- "enum": [
2079
- "notification"
2080
- ]
2081
- }
2082
- },
2083
- "required": [
2084
- "kindSource",
2085
- "titleSource"
2086
- ]
2087
- },
2088
- {
2089
- "properties": {
2090
- "kind": {
2091
- "enum": [
2092
- "kpi-card"
2093
- ]
2094
- }
2095
- },
2096
- "required": [
2097
- "source",
2098
- "historySource",
2099
- "comparisonSource"
2100
- ]
2101
- },
2102
- {
2103
- "properties": {
2104
- "kind": {
2105
- "enum": [
2106
- "status-timeline"
2107
- ]
2108
- }
2109
- },
2110
- "required": [
2111
- "source"
2112
- ]
2113
- },
2114
- {
2115
- "properties": {
2116
- "kind": {
2117
- "enum": [
2118
- "activity-feed",
2119
- "alert-banner",
2120
- "array-list",
2121
- "article-preview",
2122
- "avatar",
2123
- "breadcrumb",
2124
- "calendar-month",
2125
- "calendar-week",
2126
- "cart-summary",
2127
- "chat-bubble",
2128
- "checklist",
2129
- "chess-board",
2130
- "commit-list",
2131
- "confidence-meter",
2132
- "coupon-code",
2133
- "event-log",
2134
- "file-dropzone",
2135
- "form-summary",
2136
- "fuel-bar",
2137
- "funnel",
2138
- "grade",
2139
- "icon-tile",
2140
- "kanban-board",
2141
- "kpi-comparison",
2142
- "leaderboard",
2143
- "log-stream",
2144
- "metrics-grid",
2145
- "number-board",
2146
- "org-chart-mini",
2147
- "otp-input",
2148
- "password-strength",
2149
- "pill-group",
2150
- "podium",
2151
- "poll-bar",
2152
- "pricing-tier",
2153
- "priority-badge",
2154
- "quick-poll-emoji",
2155
- "rating",
2156
- "rating-thumb",
2157
- "reaction-bar",
2158
- "read-receipt",
2159
- "roadmap",
2160
- "sankey",
2161
- "search-result",
2162
- "service-health",
2163
- "share-buttons",
2164
- "song-queue",
2165
- "stopwatch",
2166
- "tag-cloud",
2167
- "terminal",
2168
- "thread-summary",
2169
- "timeline-vertical",
2170
- "timezone-clock",
2171
- "toc-nav",
2172
- "token-list",
2173
- "traffic-light",
2174
- "treemap",
2175
- "user-presence",
2176
- "user-stack",
2177
- "venn",
2178
- "video-card",
2179
- "voice-message",
2180
- "weather-forecast"
2181
- ]
2182
- }
2183
- },
2184
- "required": [
2185
- "source"
2186
- ]
2187
- },
2188
- {
2189
- "properties": {
2190
- "kind": {
2191
- "enum": [
2192
- "badge"
2193
- ]
2194
- },
2195
- "map": {
2196
- "type": "array",
2197
- "minItems": 1,
2198
- "items": {
2199
- "type": "object",
2200
- "required": [
2201
- "value",
2202
- "color"
2203
- ],
2204
- "additionalProperties": false,
2205
- "properties": {
2206
- "value": {
2207
- "type": "string"
2208
- },
2209
- "color": {
2210
- "type": "string"
2211
- }
2212
- }
2213
- }
2214
- }
2215
- },
2216
- "required": [
2217
- "source"
2218
- ]
2219
- },
2220
- {
2221
- "properties": {
2222
- "kind": {
2223
- "enum": [
2224
- "array-bar",
2225
- "candlestick",
2226
- "circular-gauge",
2227
- "gantt",
2228
- "line-chart",
2229
- "matrix",
2230
- "sequence-timeline",
2231
- "slope",
2232
- "thermometer",
2233
- "waterfall"
2234
- ]
2235
- }
2236
- },
2237
- "required": [
2238
- "source",
2239
- "min",
2240
- "max"
2241
- ]
2242
- },
2243
- {
2244
- "properties": {
2245
- "kind": {
2246
- "enum": [
2247
- "attendance-grid"
2248
- ]
2249
- }
2250
- },
2251
- "required": [
2252
- "source",
2253
- "membersSource"
2254
- ]
2255
- },
2256
- {
2257
- "properties": {
2258
- "kind": {
2259
- "enum": [
2260
- "bubble-chart"
2261
- ]
2262
- }
2263
- },
2264
- "required": [
2265
- "source",
2266
- "xMin",
2267
- "xMax",
2268
- "yMin",
2269
- "yMax",
2270
- "rMin",
2271
- "rMax"
2272
- ]
2273
- },
2274
- {
2275
- "properties": {
2276
- "kind": {
2277
- "enum": [
2278
- "bullet-chart"
2279
- ]
2280
- }
2281
- },
2282
- "required": [
2283
- "source",
2284
- "targetSource",
2285
- "max"
2286
- ]
2287
- },
2288
- {
2289
- "properties": {
2290
- "kind": {
2291
- "enum": [
2292
- "calendar-heatmap",
2293
- "polar-area",
2294
- "progress-group"
2295
- ]
2296
- }
2297
- },
2298
- "required": [
2299
- "source",
2300
- "max"
2301
- ]
2302
- },
2303
- {
2304
- "properties": {
2305
- "kind": {
2306
- "enum": [
2307
- "diff-counter"
2308
- ]
2309
- }
2310
- },
2311
- "required": [
2312
- "additionsSource",
2313
- "deletionsSource"
2314
- ]
2315
- },
2316
- {
2317
- "properties": {
2318
- "kind": {
2319
- "enum": [
2320
- "kpi-trend-tile"
2321
- ]
2322
- }
2323
- },
2324
- "required": [
2325
- "source",
2326
- "prevSource",
2327
- "historySource"
2328
- ]
2329
- },
2330
- {
2331
- "properties": {
2332
- "kind": {
2333
- "enum": [
2334
- "map-pin"
2335
- ]
2336
- }
2337
- },
2338
- "required": [
2339
- "source",
2340
- "xMin",
2341
- "xMax",
2342
- "yMin",
2343
- "yMax"
2344
- ]
2345
- },
2346
- {
2347
- "properties": {
2348
- "kind": {
2349
- "enum": [
2350
- "media-player"
2351
- ]
2352
- }
2353
- },
2354
- "required": [
2355
- "source",
2356
- "durationSource",
2357
- "playingSource"
2358
- ]
2359
- },
2360
- {
2361
- "properties": {
2362
- "kind": {
2363
- "enum": [
2364
- "mini-map"
2365
- ]
2366
- }
2367
- },
2368
- "required": [
2369
- "source",
2370
- "canvasW",
2371
- "canvasH"
2372
- ]
2373
- },
2374
- {
2375
- "properties": {
2376
- "kind": {
2377
- "enum": [
2378
- "order-status",
2379
- "step-indicator"
2380
- ]
2381
- }
2382
- },
2383
- "required": [
2384
- "source",
2385
- "stepsSource"
2386
- ]
2387
- },
2388
- {
2389
- "properties": {
2390
- "kind": {
2391
- "enum": [
2392
- "path-progress"
2393
- ]
2394
- }
2395
- },
2396
- "required": [
2397
- "source",
2398
- "pathD"
2399
- ]
2400
- },
2401
- {
2402
- "properties": {
2403
- "kind": {
2404
- "enum": [
2405
- "price-tag"
2406
- ]
2407
- }
2408
- },
2409
- "required": [
2410
- "oldSource",
2411
- "newSource"
2412
- ]
2413
- },
2414
- {
2415
- "properties": {
2416
- "kind": {
2417
- "enum": [
2418
- "spinner"
2419
- ]
2420
- }
2421
- },
2422
- "required": [
2423
- "source",
2424
- "textSource"
2425
- ]
2426
- },
2427
- {
2428
- "properties": {
2429
- "kind": {
2430
- "enum": [
2431
- "stacked-bar"
2432
- ]
2433
- }
2434
- },
2435
- "required": [
2436
- "sourceA",
2437
- "sourceB",
2438
- "min",
2439
- "max"
2440
- ]
2441
- }
2442
- ]
2443
- }
2444
- },
2445
- "inputs": {
2446
- "type": "array",
2447
- "description": "読む人が動かすつまみ。 値を握り、箱の文字や部品がその値を追いかける。 箱ではないので縦列に載らず、図全体に 1 つの並びとして持つ。",
2448
- "items": {
2449
- "type": "object",
2450
- "required": [
2451
- "id",
2452
- "kind"
2453
- ],
2454
- "additionalProperties": false,
2455
- "properties": {
2456
- "id": {
2457
- "type": "string",
2458
- "minLength": 1
2459
- },
2460
- "kind": {
2461
- "type": "string",
2462
- "enum": [
2463
- "color",
2464
- "datetime",
2465
- "dropdown",
2466
- "multi-select",
2467
- "number",
2468
- "radio",
2469
- "range",
2470
- "slider",
2471
- "stepper",
2472
- "tabs",
2473
- "text",
2474
- "timeline",
2475
- "toggle",
2476
- "xypad"
2477
- ]
2478
- },
2479
- "autoplay": {
2480
- "type": "boolean"
2481
- },
2482
- "defaultHi": {
2483
- "type": "number"
2484
- },
2485
- "defaultLo": {
2486
- "type": "number"
2487
- },
2488
- "defaultSpeedIdx": {
2489
- "type": "number"
2490
- },
2491
- "defaultValue": {
2492
- "type": [
2493
- "boolean",
2494
- "number",
2495
- "string"
2496
- ]
2497
- },
2498
- "defaultValues": {
2499
- "type": "array",
2500
- "items": {
2501
- "type": "string"
2502
- }
2503
- },
2504
- "defaultX": {
2505
- "type": "number"
2506
- },
2507
- "defaultY": {
2508
- "type": "number"
2509
- },
2510
- "duration": {
2511
- "type": "number"
2512
- },
2513
- "label": {
2514
- "type": "string"
2515
- },
2516
- "loop": {
2517
- "type": "boolean"
2518
- },
2519
- "max": {
2520
- "type": "number"
2521
- },
2522
- "maxLength": {
2523
- "type": "number"
2524
- },
2525
- "min": {
2526
- "type": "number"
2527
- },
2528
- "offLabel": {
2529
- "type": "string",
2530
- "minLength": 1,
2531
- "description": "切り替え (toggle) が切の時に、箱の字の差し込みへ描く名前。 省略すると false を描く。"
2532
- },
2533
- "onLabel": {
2534
- "type": "string",
2535
- "minLength": 1,
2536
- "description": "切り替え (toggle) が入の時に、箱の字の差し込みへ描く名前。 省略すると true を描く。"
2537
- },
2538
- "options": {
2539
- "type": "array",
2540
- "description": "選択肢。 文字列は値と名前を兼ね、{ value, label } の組は value を値にして label を操作部の選択肢と箱の字の差し込みに描く。 2 つを混ぜて書ける。",
2541
- "items": {
2542
- "oneOf": [
2543
- {
2544
- "type": "string"
2545
- },
2546
- {
2547
- "type": "object",
2548
- "additionalProperties": false,
2549
- "required": [
2550
- "value",
2551
- "label"
2552
- ],
2553
- "properties": {
2554
- "value": {
2555
- "type": "string",
2556
- "minLength": 1
2557
- },
2558
- "label": {
2559
- "type": "string",
2560
- "minLength": 1
2561
- }
2562
- }
2563
- }
2564
- ]
2565
- }
2566
- },
2567
- "placeholder": {
2568
- "type": "string"
2569
- },
2570
- "speeds": {
2571
- "type": "array",
2572
- "items": {
2573
- "type": "number"
2574
- }
2575
- },
2576
- "step": {
2577
- "type": "number"
2578
- },
2579
- "xMax": {
2580
- "type": "number"
2581
- },
2582
- "xMin": {
2583
- "type": "number"
2584
- },
2585
- "yMax": {
2586
- "type": "number"
2587
- },
2588
- "yMin": {
2589
- "type": "number"
2590
- }
2591
- },
2592
- "oneOf": [
2593
- {
2594
- "properties": {
2595
- "kind": {
2596
- "enum": [
2597
- "color",
2598
- "datetime",
2599
- "text"
2600
- ]
2601
- },
2602
- "defaultValue": {
2603
- "type": "string"
2604
- }
2605
- },
2606
- "required": [
2607
- "defaultValue"
2608
- ]
2609
- },
2610
- {
2611
- "properties": {
2612
- "kind": {
2613
- "enum": [
2614
- "dropdown",
2615
- "radio",
2616
- "tabs"
2617
- ]
2618
- },
2619
- "defaultValue": {
2620
- "type": "string"
2621
- }
2622
- },
2623
- "required": [
2624
- "options",
2625
- "defaultValue"
2626
- ]
2627
- },
2628
- {
2629
- "properties": {
2630
- "kind": {
2631
- "enum": [
2632
- "multi-select"
2633
- ]
2634
- }
2635
- },
2636
- "required": [
2637
- "options",
2638
- "defaultValues"
2639
- ]
2640
- },
2641
- {
2642
- "properties": {
2643
- "kind": {
2644
- "enum": [
2645
- "number",
2646
- "stepper"
2647
- ]
2648
- },
2649
- "defaultValue": {
2650
- "type": "number"
2651
- }
2652
- },
2653
- "required": [
2654
- "defaultValue"
2655
- ]
2656
- },
2657
- {
2658
- "properties": {
2659
- "kind": {
2660
- "enum": [
2661
- "range"
2662
- ]
2663
- }
2664
- },
2665
- "required": [
2666
- "min",
2667
- "max",
2668
- "defaultLo",
2669
- "defaultHi"
2670
- ]
2671
- },
2672
- {
2673
- "properties": {
2674
- "kind": {
2675
- "enum": [
2676
- "slider"
2677
- ]
2678
- },
2679
- "defaultValue": {
2680
- "type": "number"
2681
- }
2682
- },
2683
- "required": [
2684
- "min",
2685
- "max",
2686
- "defaultValue"
2687
- ]
2688
- },
2689
- {
2690
- "properties": {
2691
- "kind": {
2692
- "enum": [
2693
- "timeline"
2694
- ]
2695
- }
2696
- },
2697
- "required": [
2698
- "duration"
2699
- ]
2700
- },
2701
- {
2702
- "properties": {
2703
- "kind": {
2704
- "enum": [
2705
- "toggle"
2706
- ]
2707
- },
2708
- "defaultValue": {
2709
- "type": "boolean"
2710
- }
2711
- },
2712
- "required": [
2713
- "defaultValue"
2714
- ]
2715
- },
2716
- {
2717
- "properties": {
2718
- "kind": {
2719
- "enum": [
2720
- "xypad"
2721
- ]
2722
- }
2723
- },
2724
- "required": [
2725
- "xMin",
2726
- "xMax",
2727
- "yMin",
2728
- "yMax",
2729
- "defaultX",
2730
- "defaultY"
2731
- ]
2732
- }
2733
- ]
2734
- }
2735
- },
2736
- "formulas": {
2737
- "type": "object",
2738
- "description": "つまみの値から決まる値。 名前を鍵、式を値に書く。 `values` とは経路が別で、式は名前を中括弧で囲わない (例 \"input * 2\")。 操作部に出す名札を付ける時は { \"expression\": \"input * 2\", \"label\": \"2 倍\" } の組で書く。",
2739
- "additionalProperties": {
2740
- "oneOf": [
2741
- {
2742
- "type": "string",
2743
- "minLength": 1,
2744
- "pattern": "\\S"
2745
- },
2746
- {
2747
- "type": "object",
2748
- "additionalProperties": false,
2749
- "required": [
2750
- "expression"
2751
- ],
2752
- "properties": {
2753
- "expression": {
2754
- "type": "string",
2755
- "minLength": 1,
2756
- "pattern": "\\S",
2757
- "description": "式 (例 \"input * 2\")"
2758
- },
2759
- "label": {
2760
- "type": "string",
2761
- "minLength": 1,
2762
- "pattern": "\\S",
2763
- "description": "操作部に式の名前として出す名札。 書かなければ名前をそのまま出す"
2764
- }
2765
- }
2766
- }
2767
- ]
2768
- },
2769
- "propertyNames": {
2770
- "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
2771
- }
2772
- },
2773
- "direction": {
2774
- "type": "string",
2775
- "enum": [
2776
- "vertical",
2777
- "horizontal"
2778
- ],
2779
- "description": "図の並ぶ向き。 vertical = 1 つの縦列に積む。 horizontal = 1 人ずつ縦列を作る。 効くのは flow と swimlane だけ。"
2780
- },
2781
- "shape": {
2782
- "type": "string",
2783
- "enum": [
2784
- "pie",
2785
- "bar",
2786
- "line",
2787
- "gauge",
2788
- "radial",
2789
- "stat",
2790
- "waffle",
2791
- "stacked",
2792
- "slope",
2793
- "stages",
2794
- "metro",
2795
- "timeline"
2796
- ],
2797
- "description": "図種ごとの形。 chart では pie / bar / line / gauge / radial / stat / waffle / stacked / slope、swimlane では stages / metro / timeline が効く。 chart で書かなければ bar (棒の高さ)。"
2798
- },
2799
- "order": {
2800
- "type": "string",
2801
- "enum": [
2802
- "kind"
2803
- ],
2804
- "description": "箱を並べ替える軸。 kind = actors の kind の順 (人 → 契約 → 保管 → 出来事) に並べ替える。 効くのは sequence だけ。 書かなければ書いた順のまま。"
2805
- },
2806
- "theme": {
2807
- "type": "string",
2808
- "enum": [
2809
- "kinari",
2810
- "celadon",
2811
- "blueprint",
2812
- "letterpress",
2813
- "catalog",
2814
- "terminal",
2815
- "sketch",
2816
- "neon",
2817
- "relief"
2818
- ],
2819
- "description": "図の意匠 (`kinari` = 生成りに茶、`celadon` = 青磁に墨、`blueprint` = 図面、`letterpress` = 活版、`catalog` = 図録、`terminal` = 端末、`sketch` = 手描き、`neon` = 電飾、`relief` = 浮彫)。 名前だけが図に載り、色の値は使う側が決める。"
2820
- },
2821
- "palette": {
2822
- "type": "string",
2823
- "enum": [
2824
- "kinari",
2825
- "celadon",
2826
- "blueprint",
2827
- "letterpress",
2828
- "catalog",
2829
- "terminal",
2830
- "sketch",
2831
- "neon",
2832
- "relief"
2833
- ],
2834
- "description": "`theme` の別名。 `relief` (浮彫) を含む同じ意匠名を受ける。 両方書くと `theme` が勝ち、知らせが 1 件出る。"
2835
- },
2836
- "legend": {
2837
- "type": "array",
2838
- "description": "記法の legend と同じ、図の下へ置く凡例。",
2839
- "items": {
2840
- "type": "object",
2841
- "additionalProperties": false,
2842
- "required": ["text"],
2843
- "properties": {
2844
- "mark": {
2845
- "type": "string",
2846
- "enum": [
2847
- "diamond",
2848
- "filled-circle",
2849
- "double-circle",
2850
- "dotted-line",
2851
- "solid-line",
2852
- "curved-line",
2853
- "rounded-label",
2854
- "numbered-circle",
2855
- "station",
2856
- "arrow",
2857
- "line-triangle-hollow",
2858
- "line-diamond-hollow",
2859
- "line-diamond-solid",
2860
- "rounded-box"
2861
- ]
2862
- },
2863
- "text": {
2864
- "type": "string",
2865
- "minLength": 1
2866
- },
2867
- "tone": { "type": "string" },
2868
- "lineStyle": { "type": "string", "enum": ["solid", "dotted"] },
2869
- "align": { "type": "string", "enum": ["start", "end"] },
2870
- "lead": { "type": "string" }
2871
- },
2872
- "oneOf": [
2873
- {
2874
- "required": ["mark"],
2875
- "not": { "anyOf": [{ "required": ["align"] }, { "required": ["lead"] }] }
2876
- },
2877
- {
2878
- "not": { "required": ["mark"] },
2879
- "allOf": [
2880
- { "not": { "required": ["tone"] } },
2881
- { "not": { "required": ["lineStyle"] } }
2882
- ]
2883
- }
2884
- ]
2885
- }
2886
- },
2887
- "legendFontSize": {
2888
- "type": "number",
2889
- "exclusiveMinimum": 0,
2890
- "description": "凡例の字の大きさ"
2891
- },
2892
- "edgeEndGap": {
2893
- "type": "number",
2894
- "minimum": 0,
2895
- "description": "線の両端と発着する箱の縁との隙間"
2896
- },
2897
- "legendOffset": {
2898
- "type": "object",
2899
- "additionalProperties": false,
2900
- "properties": {
2901
- "x": { "type": "number" },
2902
- "y": { "type": "number" }
2903
- }
2904
- },
2905
- "stageHeader": {
2906
- "type": "object",
2907
- "description": "段の箱で全意匠に共通して使う見出し寸法",
2908
- "additionalProperties": false,
2909
- "required": ["topPad", "numberSize", "gap", "nameSize", "bottomPad"],
2910
- "properties": {
2911
- "leftPad": { "type": "number", "minimum": 0 },
2912
- "topPad": { "type": "number", "minimum": 0 },
2913
- "numberSize": { "type": "number", "exclusiveMinimum": 0 },
2914
- "gap": { "type": "number", "minimum": 0 },
2915
- "nameSize": { "type": "number", "exclusiveMinimum": 0 },
2916
- "bottomPad": { "type": "number", "minimum": 0 }
2917
- }
2918
- },
2919
- "stageLayout": {
2920
- "type": "object",
2921
- "additionalProperties": false,
2922
- "properties": {
2923
- "columnWidths": {
2924
- "type": "object",
2925
- "additionalProperties": { "type": "number", "minimum": 0 }
2926
- },
2927
- "columnGap": { "type": "number", "minimum": 0 },
2928
- "backDetourTopGap": { "type": "number", "minimum": 0 },
2929
- "backDetourSideGap": { "type": "number", "minimum": 0 },
2930
- "backDetourTargetInset": { "type": "number", "minimum": 0 }
2931
- }
2932
- },
2933
- "reveal": {
2934
- "type": "string",
2935
- "enum": [
2936
- "phase",
2937
- "all"
2938
- ],
2939
- "description": "矢印をいつ出すか。 phase (既定) = 段が名指しする矢印はその段が来るまで描かない。 all = 段に関わらず最初から全部描く。"
2940
- },
2941
- "relations": {
2942
- "type": "string",
2943
- "enum": [
2944
- "off",
2945
- "hover"
2946
- ],
2947
- "description": "箱に触れると関係する線だけを光らせるか。 off (既定) = 何もしない。 hover = 箱に触れた時にその箱と繋がる線と相手の箱だけが光り、他が沈む。 順番を持たない record の関係図で使う。"
2948
- },
2949
- "bands": {
2950
- "type": "array",
2951
- "description": "順序図で面が動いている間の帯。 書かなければ面ごとに「最初に関わった段から最後まで」 の 1 本になる。",
2952
- "items": {
2953
- "type": "object",
2954
- "required": [
2955
- "actor",
2956
- "from",
2957
- "to"
2958
- ],
2959
- "additionalProperties": false,
2960
- "properties": {
2961
- "actor": {
2962
- "type": "string",
2963
- "description": "帯を出す面の名前"
2964
- },
2965
- "from": {
2966
- "type": "integer",
2967
- "minimum": 0,
2968
- "description": "始まりの言づての番号 (0 起点)"
2969
- },
2970
- "to": {
2971
- "type": "integer",
2972
- "minimum": 0,
2973
- "description": "終わりの言づての番号 (0 起点)"
2974
- }
2975
- }
2976
- }
2977
- },
2978
- "events": {
2979
- "type": "array",
2980
- "description": "押下などの出来事で動く仕掛け。 相手は名前で指し、指し方の項目をちょうど 1 つだけ書く。",
2981
- "items": {
2982
- "type": "object",
2983
- "required": [
2984
- "on",
2985
- "handler"
2986
- ],
2987
- "additionalProperties": false,
2988
- "properties": {
2989
- "on": {
2990
- "type": "string",
2991
- "enum": [
2992
- "click",
2993
- "hover",
2994
- "double-click",
2995
- "long-press",
2996
- "drag",
2997
- "drop",
2998
- "keydown",
2999
- "focus",
3000
- "blur"
3001
- ]
3002
- },
3003
- "handler": {
3004
- "type": "string",
3005
- "minLength": 1,
3006
- "pattern": "\\S"
3007
- },
3008
- "box": {
3009
- "type": "string",
3010
- "minLength": 1,
3011
- "description": "箱の名前"
3012
- },
3013
- "lane": {
3014
- "type": "string",
3015
- "minLength": 1,
3016
- "description": "縦列の名前"
3017
- },
3018
- "arrow": {
3019
- "type": "string",
3020
- "minLength": 1,
3021
- "pattern": "^(?!.*->.*->)\\s*\\S(?:.*\\S)?\\s*->\\s*\\S(?:.*\\S)?\\s*$",
3022
- "description": "矢印。 `A -> B` の形で両端の名前を書く"
3023
- },
3024
- "diagram": {
3025
- "const": true,
3026
- "description": "図全体を指す"
3027
- }
3028
- },
3029
- "oneOf": [
3030
- {
3031
- "required": [
3032
- "box"
3033
- ]
3034
- },
3035
- {
3036
- "required": [
3037
- "lane"
3038
- ]
3039
- },
3040
- {
3041
- "required": [
3042
- "arrow"
3043
- ]
3044
- },
3045
- {
3046
- "required": [
3047
- "diagram"
3048
- ]
3049
- }
3050
- ]
3051
- }
3052
- },
3053
- "scrolls": {
3054
- "type": "object",
3055
- "description": "巻き上げに応じて進む値。 画面を巻き上げた量から 0 から 1 の進み具合を作る。",
3056
- "propertyNames": {
3057
- "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
3058
- },
3059
- "additionalProperties": {
3060
- "type": "object",
3061
- "additionalProperties": false,
3062
- "properties": {
3063
- "start": {
3064
- "type": "number",
3065
- "minimum": 0,
3066
- "maximum": 1,
3067
- "description": "進み具合が 0 になる画面上の位置 (0 が上端、1 が下端)"
3068
- },
3069
- "end": {
3070
- "type": "number",
3071
- "minimum": 0,
3072
- "maximum": 1,
3073
- "description": "進み具合が 1 になる画面上の位置"
3074
- },
3075
- "scrub": {
3076
- "type": "number",
3077
- "minimum": 0,
3078
- "maximum": 1,
3079
- "description": "巻き上げへの追随度合い (0 が段階的、1 が連続)"
3080
- },
3081
- "label": {
3082
- "type": "string"
3083
- }
3084
- }
3085
- }
3086
- }
3087
- }
3088
- }