@cardenelabs/dragon 0.33.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 (126) 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 -20299
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +227 -5524
  19. package/dist/index.d.ts +227 -5524
  20. package/dist/index.js +4091 -20226
  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 -148
  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 -62
  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 -3169
  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 -4289
  114. package/src/keywords.ts +0 -418
  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 -3089
  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 -6664
  124. package/src/v05/readout-table.generated.ts +0 -1088
  125. package/src/value-syntax.ts +0 -313
  126. package/src/write-position.ts +0 -270
@@ -1,3089 +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
- "solidity",
33
- "gantt",
34
- "chart",
35
- "pie",
36
- "bar",
37
- "line",
38
- "gauge",
39
- "radial",
40
- "stat",
41
- "waffle",
42
- "stacked",
43
- "slope",
44
- "funnel",
45
- "tree",
46
- "journey",
47
- "quadrant",
48
- "c4",
49
- "mind"
50
- ],
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 の組と同じ扱いになる"
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" } } },
331
- "eyebrow": {
332
- "type": "string",
333
- "description": "図表の箱の上に出す小見出し (省略可)。 効くのは図全体を 1 箱にする型 (chart / funnel / tree / journey / quadrant / mind / gantt) だけ。 箱ごとに分かれる型では相手が決まらないため、 actors[].eyebrow に書く"
334
- },
335
- "axes": {
336
- "type": "object",
337
- "additionalProperties": false,
338
- "description": "quadrant の x / y 軸の端に表示する名前。 記法の axes と同じ。",
339
- "properties": {
340
- "x": {
341
- "type": "object",
342
- "additionalProperties": false,
343
- "properties": {
344
- "left": {
345
- "type": "string"
346
- },
347
- "right": {
348
- "type": "string"
349
- },
350
- "label": { "type": "string" },
351
- "direction": { "type": "boolean", "enum": [true] }
352
- }
353
- },
354
- "y": {
355
- "type": "object",
356
- "additionalProperties": false,
357
- "properties": {
358
- "bottom": {
359
- "type": "string"
360
- },
361
- "top": {
362
- "type": "string"
363
- },
364
- "label": { "type": "string" },
365
- "direction": { "type": "boolean", "enum": [true] }
366
- }
367
- }
368
- }
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
- },
389
- "actors": {
390
- "type": "array",
391
- "minItems": 1,
392
- "description": "登場人物 (node) の配列。 文字列で name のみ、 または object で kind / subtitle 等を指定。",
393
- "items": {
394
- "oneOf": [
395
- {
396
- "type": "string",
397
- "description": "actor 名のみ (kind は default 'actor')"
398
- },
399
- {
400
- "type": "object",
401
- "required": [
402
- "name"
403
- ],
404
- "additionalProperties": false,
405
- "properties": {
406
- "name": {
407
- "type": "string",
408
- "minLength": 1,
409
- "description": "actor 名 (flow の from / to で参照される)"
410
- },
411
- "kind": {
412
- "type": "string",
413
- "description": "node kind。 shape-* を指定して 49 shape 中から選ぶ。 例: 'shape-wallet' / 'shape-smart-contract' / 'shape-cloud' / 'shape-file' / 'actor' (default) / 'function' / 'storage' / 'event' 等。 種別に無い名前は部品の名前として部品の一覧 (partsCatalog) から引き、一覧にも無ければ種別を書かなかった箱になる。 部品を持つ一覧を渡した時は知らせを出し、綴りの近い名前を案内する。"
414
- },
415
- "subtitle": {
416
- "type": "string",
417
- "description": "node 下部の補足テキスト"
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
- },
477
- "eyebrow": {
478
- "type": "string",
479
- "description": "node 上部の分類ラベル (accent 色)"
480
- },
481
- "value": {
482
- "type": "string",
483
- "description": "actor 数値表示 (kind: actor 用)"
484
- },
485
- "previous": {
486
- "type": "string",
487
- "description": "前の時点の値。 type: stacked が 2 本目の帯として描き、type: slope が左の点として描き、type: stat が差として出す。 書かない図は 1 本のまま"
488
- },
489
- "rows": {
490
- "type": "array",
491
- "items": {
492
- "type": "string"
493
- },
494
- "description": "storage 内の column 列 (kind: storage 用)"
495
- },
496
- "marks": {
497
- "type": "array",
498
- "items": {
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
- ]
511
- },
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 または 段階 と書く"
519
- },
520
- "lane": {
521
- "type": "string",
522
- "description": "swimlane / topology で属する lane id"
523
- },
524
- "stack": {
525
- "type": "integer",
526
- "minimum": 0,
527
- "description": "lane 内の縦位置 (0-based)"
528
- },
529
- "initial": {
530
- "type": "boolean",
531
- "description": "始まりの箱か (札の形の箱に 初期 の字が出る)"
532
- },
533
- "final": {
534
- "type": "boolean",
535
- "description": "終わりの箱か (札の形の箱に 最終 の字が出る)"
536
- },
537
- "state": {
538
- "type": "object",
539
- "description": "parts の状態の上書き。 kind に parts identifier を指定した時だけ使える。",
540
- "additionalProperties": {
541
- "type": [
542
- "number",
543
- "string",
544
- "boolean"
545
- ]
546
- }
547
- },
548
- "tone": {
549
- "type": "string",
550
- "description": "箱の色調。 success / warning 等の別名も使える。",
551
- "enum": [
552
- "accent",
553
- "teal",
554
- "success",
555
- "error",
556
- "warning",
557
- "info",
558
- "muted",
559
- "成功",
560
- "失敗",
561
- "警告",
562
- "情報",
563
- "中立",
564
- "neutral"
565
- ]
566
- },
567
- "color": {
568
- "type": "string",
569
- "description": "箱の色名、または # で始まる parts の色番号。",
570
- "anyOf": [
571
- {
572
- "enum": [
573
- "accent",
574
- "teal",
575
- "success",
576
- "error",
577
- "warning",
578
- "info",
579
- "muted",
580
- "成功",
581
- "失敗",
582
- "警告",
583
- "情報",
584
- "中立",
585
- "neutral"
586
- ]
587
- },
588
- {
589
- "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
590
- }
591
- ]
592
- },
593
- "owner": {
594
- "type": "string",
595
- "description": "gantt の工程の担当。"
596
- },
597
- "end": {
598
- "type": "string",
599
- "description": "gantt の工程が終わる時期。 始まりより前の時期は始まりと同じに倒し、知らせを出す。"
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
- },
628
- "touchpoint": {
629
- "type": "string",
630
- "description": "journey の段階が起きる場所。"
631
- },
632
- "opportunity": {
633
- "type": "string",
634
- "description": "journey の段階の改善の余地。"
635
- },
636
- "opportunityPosition": {
637
- "type": "string",
638
- "enum": ["below-chart", "below-point"],
639
- "description": "journey の改善の余地を図の下か、その段階の点の下へ置く。"
640
- },
641
- "posX": {
642
- "type": "number",
643
- "description": "箱の絶対 x 座標。"
644
- },
645
- "posY": {
646
- "type": "number",
647
- "description": "箱の絶対 y 座標。"
648
- },
649
- "posW": {
650
- "type": "number",
651
- "description": "箱の幅。"
652
- },
653
- "posH": {
654
- "type": "number",
655
- "description": "箱の高さ。"
656
- },
657
- "scale": {
658
- "type": "number",
659
- "description": "parts の描画倍率。 kind に parts identifier を指定した時だけ使える。"
660
- },
661
- "phase": {
662
- "type": "boolean",
663
- "description": "parts が持つ段を使うか。 既定は書いた段と番号ごとに並べて再生する。 false を書くと parts の段の中身を空にし、値は animation に書いた段だけが動かす。 kind に parts identifier を指定した時だけ使える。"
664
- },
665
- "pos": {
666
- "type": "object",
667
- "additionalProperties": false,
668
- "description": "auto layout の結果からずらす幅 (dx, dy)。 絶対座標は posX / posY で書く。",
669
- "required": [
670
- "x",
671
- "y"
672
- ],
673
- "properties": {
674
- "x": {
675
- "type": "number"
676
- },
677
- "y": {
678
- "type": "number"
679
- }
680
- }
681
- },
682
- "posRel": {
683
- "type": "object",
684
- "additionalProperties": false,
685
- "description": "位置を他の要素からの相対で書く指定。 座標を知らなくても「誰の」「どちら側に」「どれだけ離して」 で置ける。 解決した後は posX / posY を書いた時と同じ経路を通る。",
686
- "required": [
687
- "anchor",
688
- "dir"
689
- ],
690
- "properties": {
691
- "anchor": {
692
- "type": "string",
693
- "minLength": 1,
694
- "description": "基準にする相手の名前。 actors に書かれた名前をそのまま書く。"
695
- },
696
- "dir": {
697
- "type": "string",
698
- "enum": [
699
- "right",
700
- "left",
701
- "above",
702
- "below"
703
- ],
704
- "description": "基準からどちら側に置くか。"
705
- },
706
- "gap": {
707
- "type": "number",
708
- "description": "相手の縁との間隔。 書かなければ 160 で置く。"
709
- }
710
- }
711
- },
712
- "visibleIf": {
713
- "type": "string",
714
- "description": "その箱を出すかどうかの条件。 状態を差し込める文字列で、\"0\" / \"false\" / 空文字が偽、それ以外は真。"
715
- },
716
- "title": {
717
- "type": "string",
718
- "description": "箱に出す題。 書かなければ name がそのまま題になる。 name は図の中で 1 つに決まる必要があるが、題は重なってよい。"
719
- },
720
- "shape": {
721
- "type": "object",
722
- "description": "箱の中に描く図形。 水位 / 角度 / 半径を状態で動かせる。 kind ごとに書ける欄が違う (rect / circle / arc / wave / polygon)。",
723
- "required": [
724
- "kind"
725
- ],
726
- "properties": {
727
- "kind": {
728
- "type": "string",
729
- "enum": [
730
- "rect",
731
- "circle",
732
- "arc",
733
- "wave",
734
- "polygon"
735
- ]
736
- },
737
- "source": {
738
- "type": [
739
- "number",
740
- "string"
741
- ]
742
- },
743
- "fillMax": {
744
- "type": "number"
745
- },
746
- "orient": {
747
- "type": "string",
748
- "enum": [
749
- "up",
750
- "down",
751
- "left",
752
- "right"
753
- ]
754
- },
755
- "radius": {
756
- "type": [
757
- "number",
758
- "string"
759
- ]
760
- },
761
- "fillProgress": {
762
- "type": [
763
- "number",
764
- "string"
765
- ]
766
- },
767
- "innerRadius": {
768
- "type": "number"
769
- },
770
- "outerRadius": {
771
- "type": "number"
772
- },
773
- "startAngle": {
774
- "type": "number"
775
- },
776
- "angle": {
777
- "type": [
778
- "number",
779
- "string"
780
- ]
781
- },
782
- "sweepMax": {
783
- "type": "number"
784
- },
785
- "level": {
786
- "type": [
787
- "number",
788
- "string"
789
- ]
790
- },
791
- "amplitude": {
792
- "type": "number"
793
- },
794
- "frequency": {
795
- "type": "number"
796
- },
797
- "waveHeight": {
798
- "type": "number"
799
- },
800
- "sides": {
801
- "type": "number"
802
- },
803
- "rotation": {
804
- "type": [
805
- "number",
806
- "string"
807
- ]
808
- },
809
- "fill": {
810
- "type": "string"
811
- },
812
- "stroke": {
813
- "type": "string"
814
- }
815
- },
816
- "additionalProperties": false,
817
- "oneOf": [
818
- {
819
- "properties": {
820
- "kind": {
821
- "enum": [
822
- "rect"
823
- ]
824
- }
825
- },
826
- "required": [
827
- "source",
828
- "fillMax"
829
- ]
830
- },
831
- {
832
- "properties": {
833
- "kind": {
834
- "enum": [
835
- "circle"
836
- ]
837
- }
838
- }
839
- },
840
- {
841
- "properties": {
842
- "kind": {
843
- "enum": [
844
- "arc"
845
- ]
846
- }
847
- },
848
- "required": [
849
- "angle"
850
- ]
851
- },
852
- {
853
- "properties": {
854
- "kind": {
855
- "enum": [
856
- "wave"
857
- ]
858
- }
859
- },
860
- "required": [
861
- "level",
862
- "amplitude"
863
- ]
864
- },
865
- {
866
- "properties": {
867
- "kind": {
868
- "enum": [
869
- "polygon"
870
- ]
871
- }
872
- },
873
- "required": [
874
- "sides"
875
- ]
876
- }
877
- ]
878
- },
879
- "wBind": {
880
- "type": "string",
881
- "minLength": 1,
882
- "pattern": "\\S",
883
- "description": "箱の幅を値に追随させる。 状態の名前を {名前} の形で書く。 配置計算は追随前の大きさを使う"
884
- },
885
- "hBind": {
886
- "type": "string",
887
- "minLength": 1,
888
- "pattern": "\\S",
889
- "description": "箱の高さを値に追随させる。 wBind と同じ読み方"
890
- },
891
- "opacity": {
892
- "type": [
893
- "number",
894
- "string"
895
- ],
896
- "minLength": 1,
897
- "pattern": "\\S",
898
- "description": "箱の濃さ。 0 から 1 の数か、状態の名前。 書かなければ完全に見える"
899
- },
900
- "renderOffsetX": {
901
- "type": [
902
- "number",
903
- "string"
904
- ],
905
- "minLength": 1,
906
- "pattern": "\\S",
907
- "description": "描く時だけ箱を横へずらす量。 配置計算と矢印はずらす前の位置を使う"
908
- },
909
- "renderOffsetY": {
910
- "type": [
911
- "number",
912
- "string"
913
- ],
914
- "minLength": 1,
915
- "pattern": "\\S",
916
- "description": "描く時だけ箱を縦へずらす量。 renderOffsetX と同じ読み方"
917
- }
918
- }
919
- }
920
- ]
921
- }
922
- },
923
- "flow": {
924
- "type": "array",
925
- "description": "step の配列 (矢印で actor 間を繋ぐ)。 sequence では順序が意味を持つ。",
926
- "items": {
927
- "type": "object",
928
- "required": [
929
- "from",
930
- "to",
931
- "label"
932
- ],
933
- "additionalProperties": false,
934
- "properties": {
935
- "from": {
936
- "type": "string",
937
- "description": "起点 actor 名"
938
- },
939
- "to": {
940
- "type": "string",
941
- "description": "終点 actor 名"
942
- },
943
- "label": {
944
- "type": "string",
945
- "description": "矢印上のラベル (関数呼出し名 / メッセージ等)"
946
- },
947
- "sub": {
948
- "type": "string",
949
- "description": "ラベル下の補足"
950
- },
951
- "tailSub": {
952
- "type": "string",
953
- "description": "relation を書いた record の出どころ側の多重度 (例 \"1\")。 sub が行き先の端の多重度"
954
- },
955
- "tone": {
956
- "type": "string",
957
- "enum": [
958
- "accent",
959
- "teal",
960
- "success",
961
- "error",
962
- "warning",
963
- "info",
964
- "muted",
965
- "成功",
966
- "失敗",
967
- "警告",
968
- "情報",
969
- "中立",
970
- "neutral"
971
- ],
972
- "description": "矢印の色調。 success / 成功 等の別名も使える。"
973
- },
974
- "style": {
975
- "type": "string",
976
- "enum": [
977
- "solid",
978
- "dotted-flow",
979
- "dashed"
980
- ],
981
- "description": "矢印の線種"
982
- },
983
- "guard": {
984
- "type": "string",
985
- "description": "移り変わりの条件 (名前の下の行に出る)"
986
- },
987
- "cardinality": {
988
- "type": "string",
989
- "description": "ER の多重度 (type: record 用)。 1:1 / 1:N / N:1 / N:M / 0..1 / 1..* のどれかを書くと、 両端の形がその語から決まり (tailHead / head を書けばそちらが勝つ)、 語は説明文の下の行に出る。 説明文に書いた同じ語は説明文から外す。 6 語以外を書くと説明文に (語) と添えるだけで、 端の形は決まらない (tailHead と head を両方書かなければ、 描かない端を知らせる)。 type: record 以外の図種では描かず、 そのことを知らせる"
990
- },
991
- "side": {
992
- "type": "string",
993
- "enum": [
994
- "top",
995
- "right",
996
- "bottom",
997
- "left"
998
- ],
999
- "description": "矢印がどの辺から出るか。 書かなければ描画側が自動で選ぶ。"
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
- },
1011
- "head": {
1012
- "type": "string",
1013
- "enum": [
1014
- "none",
1015
- "dot",
1016
- "triangle",
1017
- "diamond",
1018
- "open",
1019
- "crow",
1020
- "one",
1021
- "zero-one",
1022
- "many",
1023
- "zero-many"
1024
- ],
1025
- "description": "着き先側の端の形。 端の形で関係の種類を示す = triangle (継承・実装) / diamond (集約・コンポジション) / open (関連・依存) / crow (多) / one / zero-one / many / zero-many (個数)。 書かなければ塗った三角になる。"
1026
- },
1027
- "tailHead": {
1028
- "type": "string",
1029
- "enum": [
1030
- "none",
1031
- "dot",
1032
- "triangle",
1033
- "diamond",
1034
- "open",
1035
- "crow",
1036
- "one",
1037
- "zero-one",
1038
- "many",
1039
- "zero-many"
1040
- ],
1041
- "description": "出どころ側の端の形。 両端に別々の印を立てる時に書く。"
1042
- },
1043
- "headFill": {
1044
- "type": "string",
1045
- "enum": [
1046
- "solid",
1047
- "hollow"
1048
- ],
1049
- "description": "着き先側の端の塗り。 中空は「弱い関係」 を表す。"
1050
- },
1051
- "tailHeadFill": {
1052
- "type": "string",
1053
- "enum": [
1054
- "solid",
1055
- "hollow"
1056
- ],
1057
- "description": "出どころ側の端の塗り。"
1058
- },
1059
- "relation": {
1060
- "type": "string",
1061
- "enum": [
1062
- "extends",
1063
- "implements",
1064
- "aggregates",
1065
- "composes",
1066
- "associates",
1067
- "uses"
1068
- ],
1069
- "description": "record に書く UML 関係の語。 書くと端の形 / 塗り / 線種がまとめて決まる。"
1070
- },
1071
- "role": {
1072
- "type": "string",
1073
- "enum": [
1074
- "main"
1075
- ],
1076
- "description": "辺の役目。 main を書いた辺だけ「いま」 の色で引く。 主となる 1 本 (または 1 続き) にだけ書く"
1077
- },
1078
- "labelPlate": {
1079
- "type": "boolean",
1080
- "description": "説明文の下地を敷くか。 false で外す。 丸い下地は箱と同じ形なので、罫の細い図では名前が小さな箱に見える"
1081
- },
1082
- "kind": {
1083
- "type": "string",
1084
- "enum": [
1085
- "call",
1086
- "return",
1087
- "fire"
1088
- ],
1089
- "description": "順序図の言づての種類。 call (返事を待つ) / return (返し) / fire (返事を待たない)。"
1090
- },
1091
- "labelOffsetX": {
1092
- "type": "number",
1093
- "description": "ラベル位置 x 調整"
1094
- },
1095
- "labelOffsetY": {
1096
- "type": "number",
1097
- "description": "ラベル位置 y 調整"
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
- },
1140
- "overlay": {
1141
- "type": "boolean",
1142
- "description": "true で説明文を矢印の線の上に重ねる (分岐図の条件ラベル用)"
1143
- },
1144
- "fromPartNode": {
1145
- "type": "string",
1146
- "minLength": 1,
1147
- "pattern": "\\S",
1148
- "description": "from が部品の時、矢印を繋ぐ部品の中の要素の id。 要素を 1 つだけ持つ部品は書かなくてもその要素に繋ぐ。 要素を 2 つ以上持つ部品は書かないと矢印を外して知らせる"
1149
- },
1150
- "toPartNode": {
1151
- "type": "string",
1152
- "minLength": 1,
1153
- "pattern": "\\S",
1154
- "description": "to が部品の時、矢印を繋ぐ部品の中の要素の id。 要素を 1 つだけ持つ部品は書かなくてもその要素に繋ぐ。 要素を 2 つ以上持つ部品は書かないと矢印を外して知らせる"
1155
- },
1156
- "pos": {
1157
- "type": "object",
1158
- "additionalProperties": false,
1159
- "description": "矢印の説明文をずらす幅 (dx, dy)。",
1160
- "required": [
1161
- "x",
1162
- "y"
1163
- ],
1164
- "properties": {
1165
- "x": {
1166
- "type": "number"
1167
- },
1168
- "y": {
1169
- "type": "number"
1170
- }
1171
- }
1172
- },
1173
- "widthBind": {
1174
- "type": "string",
1175
- "minLength": 1,
1176
- "pattern": "\\S",
1177
- "description": "線の太さを値に追随させる。 状態やつまみの名前を {名前} の形で書く"
1178
- },
1179
- "strokeBind": {
1180
- "type": "string",
1181
- "minLength": 1,
1182
- "pattern": "\\S",
1183
- "description": "線の色を値に追随させる。 widthBind と同じ読み方"
1184
- },
1185
- "dashOffsetBind": {
1186
- "type": "string",
1187
- "minLength": 1,
1188
- "pattern": "\\S",
1189
- "description": "破線の位置を値に追随させる (流れているように見せる)。 widthBind と同じ読み方"
1190
- }
1191
- }
1192
- }
1193
- },
1194
- "states": {
1195
- "type": "object",
1196
- "description": "状態の初期値。 名前 -> 初期値 の object。 optional。 箱の文字に `{名前}` を置くと、 ここに書いた値が描画時に置き換わる。 段で動かすには animation[].tween / animation[].set を使う。",
1197
- "additionalProperties": false,
1198
- "patternProperties": {
1199
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1200
- "type": [
1201
- "number",
1202
- "string"
1203
- ],
1204
- "description": "初期値。 数か文字列。 名前は英字か _ で始め、 英数字と _ だけを使う"
1205
- }
1206
- },
1207
- "examples": [
1208
- {
1209
- "inflow": 0,
1210
- "done": 0
1211
- }
1212
- ]
1213
- },
1214
- "values": {
1215
- "type": "object",
1216
- "description": "他の値から自動で決まる値。 名前 -> 式 の object。 optional。 式には四則 (+ - * /) と括弧、 比較 (> >= < <= == !=)、 min / max が書ける。 他の値は {名前} で読む。 解くのは描画側で、 参照した値が動けば追随する。",
1217
- "additionalProperties": false,
1218
- "patternProperties": {
1219
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1220
- "type": "string",
1221
- "minLength": 1,
1222
- "description": "式。 例 `{inflow} - {done}`"
1223
- }
1224
- },
1225
- "examples": [
1226
- {
1227
- "waiting": "{inflow} - {done}",
1228
- "busy": "{waiting} > 80"
1229
- }
1230
- ]
1231
- },
1232
- "animation": {
1233
- "type": "array",
1234
- "description": "アニメーション phase 配列。 各 phase で focus 対象を highlight し、 tween / set で states の値を動かす。 optional。",
1235
- "items": {
1236
- "type": "object",
1237
- "required": [
1238
- "step"
1239
- ],
1240
- "additionalProperties": false,
1241
- "properties": {
1242
- "step": {
1243
- "type": "string",
1244
- "minLength": 1,
1245
- "description": "phase 名"
1246
- },
1247
- "duration": {
1248
- "type": "number",
1249
- "minimum": 0.1,
1250
- "description": "phase 時間 (秒、 default 1.4)"
1251
- },
1252
- "focus": {
1253
- "type": "array",
1254
- "items": {
1255
- "type": "string"
1256
- },
1257
- "description": "この phase で active 化する actor 名 or edge 'A -> B' の配列"
1258
- },
1259
- "body": {
1260
- "type": "string",
1261
- "description": "phase 説明文"
1262
- },
1263
- "description": {
1264
- "type": "string",
1265
- "description": "phase 説明文の別名 (記法の description: と同じ)。 正の語は body で、 両方書いた段は body が効く"
1266
- },
1267
- "badge": {
1268
- "type": "string",
1269
- "description": "phase 中に表示する badge label"
1270
- },
1271
- "draw": {
1272
- "type": "string",
1273
- "enum": [
1274
- "line",
1275
- "bar",
1276
- "pie",
1277
- "journey",
1278
- "mind",
1279
- "tree",
1280
- "gantt",
1281
- "funnel",
1282
- "slope",
1283
- "gauge",
1284
- "radial",
1285
- "stacked",
1286
- "waffle"
1287
- ],
1288
- "description": "この phase で起点から描くもの。 語は図種と揃える (数を描く図では shape と揃える)。 line / journey = 線が左端から右へ伸びる / bar = 棒が横軸から上へ伸びる / pie = 扇が 12 時から時計回りに開く / mind = 枝が中心から外へ伸びる / tree = 枝が根から下へ伸びる / gantt = 帯が各始端から右へ伸びる / funnel = 段が上端から順に積まれる / slope = 線が左の軸から右の軸へ伸びる / gauge = 弧が 9 時から上を通って 3 時へ伸びる / radial = 各輪が 12 時から時計回りに開く / stacked = 帯が左端から右へ伸びる / waffle = 印が左上から読む向きに 1 個ずつ埋まる"
1289
- },
1290
- "drawRatio": {
1291
- "type": "number",
1292
- "exclusiveMinimum": 0,
1293
- "maximum": 1,
1294
- "description": "描き終えるまでに phase の何割を使うか。 0.4 なら進みが 0.4 に達した時点で描き終わり、残りは描き終わった姿のまま値だけが動く。 書かなければ phase の終わりに描き終わる。 draw と一緒に書く (draw が無いと何も起きない)"
1295
- },
1296
- "tween": {
1297
- "type": "object",
1298
- "description": "この phase で補間する状態。 状態名 -> [開始値, 終了値]。 名前は英字か _ で始め、 英数字と _ だけを使う",
1299
- "additionalProperties": false,
1300
- "patternProperties": {
1301
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1302
- "type": "array",
1303
- "items": {
1304
- "type": "number"
1305
- },
1306
- "minItems": 2,
1307
- "maxItems": 2
1308
- }
1309
- }
1310
- },
1311
- "set": {
1312
- "type": "object",
1313
- "description": "この phase の切替で差し替える状態。 状態名 -> 値。 名前は英字か _ で始め、 英数字と _ だけを使う",
1314
- "additionalProperties": false,
1315
- "patternProperties": {
1316
- "^[a-zA-Z_][a-zA-Z0-9_]*$": {
1317
- "type": [
1318
- "number",
1319
- "string"
1320
- ]
1321
- }
1322
- }
1323
- }
1324
- }
1325
- }
1326
- },
1327
- "viewport": {
1328
- "type": "object",
1329
- "description": "全体 canvas サイズ + gap の調整。 optional。",
1330
- "additionalProperties": false,
1331
- "properties": {
1332
- "width": {
1333
- "type": "number",
1334
- "minimum": 100
1335
- },
1336
- "height": {
1337
- "type": "number",
1338
- "minimum": 100
1339
- },
1340
- "contentOffsetX": {
1341
- "type": "number"
1342
- },
1343
- "laneWidth": {
1344
- "type": "number",
1345
- "minimum": 100
1346
- },
1347
- "gap": {
1348
- "type": "number",
1349
- "minimum": 0
1350
- },
1351
- "laneGap": {
1352
- "type": "number",
1353
- "minimum": 0
1354
- },
1355
- "nodeGap": {
1356
- "type": "number",
1357
- "minimum": 0
1358
- },
1359
- "labelMargin": {
1360
- "type": "number",
1361
- "minimum": 0
1362
- },
1363
- "scale": {
1364
- "type": "number",
1365
- "description": "図全体の倍率 (既定 1)。 箱 / 文字 / 線 / 間隔がすべて等比で変わる。"
1366
- }
1367
- }
1368
- },
1369
- "lanes": {
1370
- "type": "object",
1371
- "description": "swimlane / topology で使う lane 宣言。 key = lane id、 value = lane 定義。",
1372
- "additionalProperties": {
1373
- "type": "object",
1374
- "additionalProperties": false,
1375
- "properties": {
1376
- "x": {
1377
- "type": "number"
1378
- },
1379
- "width": {
1380
- "type": "number",
1381
- "minimum": 50
1382
- },
1383
- "label": {
1384
- "type": "string"
1385
- },
1386
- "subtitle": {
1387
- "type": "string"
1388
- },
1389
- "contain": {
1390
- "type": "boolean"
1391
- },
1392
- "lifeline": {
1393
- "type": "boolean"
1394
- },
1395
- "pos": {
1396
- "type": "object",
1397
- "additionalProperties": false,
1398
- "description": "縦列をずらす幅 (dx, dy)。",
1399
- "required": [
1400
- "x",
1401
- "y"
1402
- ],
1403
- "properties": {
1404
- "x": {
1405
- "type": "number"
1406
- },
1407
- "y": {
1408
- "type": "number"
1409
- }
1410
- }
1411
- }
1412
- }
1413
- }
1414
- },
1415
- "groups": {
1416
- "type": "object",
1417
- "description": "topology で使う group 宣言。 key = group id、 value = { label, lanes }。",
1418
- "additionalProperties": {
1419
- "type": "object",
1420
- "required": [
1421
- "lanes"
1422
- ],
1423
- "additionalProperties": false,
1424
- "properties": {
1425
- "label": {
1426
- "type": "string"
1427
- },
1428
- "lanes": {
1429
- "type": "array",
1430
- "items": {
1431
- "type": "string"
1432
- },
1433
- "minItems": 1
1434
- }
1435
- }
1436
- }
1437
- },
1438
- "readouts": {
1439
- "type": "array",
1440
- "description": "値を見せる部品。 状態の値を割合の輪 / 数え上げ / 目盛りで出す。 箱ではないので縦列に載らず、図全体に 1 つの並びとして持つ。",
1441
- "items": {
1442
- "type": "object",
1443
- "required": [
1444
- "id",
1445
- "kind"
1446
- ],
1447
- "additionalProperties": false,
1448
- "properties": {
1449
- "id": {
1450
- "type": "string",
1451
- "minLength": 1
1452
- },
1453
- "kind": {
1454
- "type": "string",
1455
- "enum": [
1456
- "activity-feed",
1457
- "alert-banner",
1458
- "array-bar",
1459
- "array-list",
1460
- "article-preview",
1461
- "attendance-grid",
1462
- "avatar",
1463
- "badge",
1464
- "bar",
1465
- "breadcrumb",
1466
- "bubble-chart",
1467
- "bullet-chart",
1468
- "calendar-heatmap",
1469
- "calendar-month",
1470
- "calendar-week",
1471
- "candlestick",
1472
- "cart-summary",
1473
- "chat-bubble",
1474
- "checklist",
1475
- "chess-board",
1476
- "circular-gauge",
1477
- "commit-list",
1478
- "confidence-meter",
1479
- "countup",
1480
- "coupon-code",
1481
- "delta",
1482
- "diff-counter",
1483
- "donut",
1484
- "event-log",
1485
- "file-dropzone",
1486
- "form-summary",
1487
- "fuel-bar",
1488
- "funnel",
1489
- "gantt",
1490
- "gauge",
1491
- "grade",
1492
- "heat-cell",
1493
- "icon-tile",
1494
- "kanban-board",
1495
- "kpi-card",
1496
- "kpi-comparison",
1497
- "kpi-trend-tile",
1498
- "leaderboard",
1499
- "line-chart",
1500
- "log-stream",
1501
- "map-pin",
1502
- "matrix",
1503
- "media-player",
1504
- "metrics-grid",
1505
- "mini-map",
1506
- "notification",
1507
- "number-board",
1508
- "order-status",
1509
- "org-chart-mini",
1510
- "otp-input",
1511
- "password-strength",
1512
- "path-progress",
1513
- "percent-ring",
1514
- "pill-group",
1515
- "podium",
1516
- "polar-area",
1517
- "poll-bar",
1518
- "price-tag",
1519
- "pricing-tier",
1520
- "priority-badge",
1521
- "progress-group",
1522
- "quick-poll-emoji",
1523
- "radar",
1524
- "rating",
1525
- "rating-thumb",
1526
- "reaction-bar",
1527
- "read-receipt",
1528
- "roadmap",
1529
- "sankey",
1530
- "search-result",
1531
- "sequence-timeline",
1532
- "service-health",
1533
- "share-buttons",
1534
- "slope",
1535
- "song-queue",
1536
- "sparkline",
1537
- "spinner",
1538
- "stacked-bar",
1539
- "stat",
1540
- "status-dot",
1541
- "status-timeline",
1542
- "step-indicator",
1543
- "step-progress",
1544
- "stopwatch",
1545
- "tag-cloud",
1546
- "terminal",
1547
- "thermometer",
1548
- "thread-summary",
1549
- "timeline-vertical",
1550
- "timezone-clock",
1551
- "toc-nav",
1552
- "token-list",
1553
- "traffic-light",
1554
- "treemap",
1555
- "typewriter",
1556
- "user-presence",
1557
- "user-stack",
1558
- "venn",
1559
- "video-card",
1560
- "voice-message",
1561
- "waterfall",
1562
- "weather-forecast"
1563
- ]
1564
- },
1565
- "additionsSource": {
1566
- "type": "string"
1567
- },
1568
- "bodySource": {
1569
- "type": "string"
1570
- },
1571
- "canvasH": {
1572
- "type": "number"
1573
- },
1574
- "canvasW": {
1575
- "type": "number"
1576
- },
1577
- "caption": {
1578
- "type": "string"
1579
- },
1580
- "cellGap": {
1581
- "type": "number"
1582
- },
1583
- "cellSize": {
1584
- "type": "number"
1585
- },
1586
- "charMs": {
1587
- "type": "number"
1588
- },
1589
- "color": {
1590
- "type": "string"
1591
- },
1592
- "colorA": {
1593
- "type": "string"
1594
- },
1595
- "colorAccent": {
1596
- "type": "string"
1597
- },
1598
- "colorActive": {
1599
- "type": "string"
1600
- },
1601
- "colorActual": {
1602
- "type": "string"
1603
- },
1604
- "colorAdd": {
1605
- "type": "string"
1606
- },
1607
- "colorApplied": {
1608
- "type": "string"
1609
- },
1610
- "colorB": {
1611
- "type": "string"
1612
- },
1613
- "colorBar": {
1614
- "type": "string"
1615
- },
1616
- "colorBottom": {
1617
- "type": "string"
1618
- },
1619
- "colorDel": {
1620
- "type": "string"
1621
- },
1622
- "colorDiscount": {
1623
- "type": "string"
1624
- },
1625
- "colorDown": {
1626
- "type": "string"
1627
- },
1628
- "colorFocus": {
1629
- "type": "string"
1630
- },
1631
- "colorMap": {
1632
- "type": "array",
1633
- "minItems": 1,
1634
- "items": {
1635
- "type": "object",
1636
- "required": [
1637
- "status",
1638
- "color"
1639
- ],
1640
- "additionalProperties": false,
1641
- "properties": {
1642
- "status": {
1643
- "type": "string"
1644
- },
1645
- "color": {
1646
- "type": "string"
1647
- }
1648
- }
1649
- }
1650
- },
1651
- "colorNeg": {
1652
- "type": "string"
1653
- },
1654
- "colorNew": {
1655
- "type": "string"
1656
- },
1657
- "colorOld": {
1658
- "type": "string"
1659
- },
1660
- "colorOther": {
1661
- "type": "string"
1662
- },
1663
- "colorPending": {
1664
- "type": "string"
1665
- },
1666
- "colorPlay": {
1667
- "type": "string"
1668
- },
1669
- "colorPos": {
1670
- "type": "string"
1671
- },
1672
- "colorRead": {
1673
- "type": "string"
1674
- },
1675
- "colorSelf": {
1676
- "type": "string"
1677
- },
1678
- "colorSource": {
1679
- "type": "string"
1680
- },
1681
- "colorStrong": {
1682
- "type": "string"
1683
- },
1684
- "colorTop": {
1685
- "type": "string"
1686
- },
1687
- "colorTotal": {
1688
- "type": "string"
1689
- },
1690
- "colorUnread": {
1691
- "type": "string"
1692
- },
1693
- "colorUp": {
1694
- "type": "string"
1695
- },
1696
- "colorWeak": {
1697
- "type": "string"
1698
- },
1699
- "colorWinner": {
1700
- "type": "string"
1701
- },
1702
- "colors": {
1703
- "type": "array",
1704
- "items": {
1705
- "type": "string"
1706
- }
1707
- },
1708
- "columnWidth": {
1709
- "type": "number"
1710
- },
1711
- "comparisonSource": {
1712
- "type": "string"
1713
- },
1714
- "count": {
1715
- "type": "number"
1716
- },
1717
- "currency": {
1718
- "type": "string"
1719
- },
1720
- "currentSource": {
1721
- "type": "string"
1722
- },
1723
- "decimals": {
1724
- "type": "number"
1725
- },
1726
- "deletionsSource": {
1727
- "type": "string"
1728
- },
1729
- "duration": {
1730
- "type": "number"
1731
- },
1732
- "durationMs": {
1733
- "type": "number"
1734
- },
1735
- "durationSource": {
1736
- "type": "string"
1737
- },
1738
- "fill": {
1739
- "type": "boolean"
1740
- },
1741
- "highThreshold": {
1742
- "type": "number"
1743
- },
1744
- "history": {
1745
- "type": "number"
1746
- },
1747
- "historySource": {
1748
- "type": "string"
1749
- },
1750
- "innerRatio": {
1751
- "type": "number"
1752
- },
1753
- "itemTemplate": {
1754
- "type": "string"
1755
- },
1756
- "kindSource": {
1757
- "type": "string"
1758
- },
1759
- "label": {
1760
- "type": "string"
1761
- },
1762
- "labelA": {
1763
- "type": "string"
1764
- },
1765
- "labelB": {
1766
- "type": "string"
1767
- },
1768
- "labelSource": {
1769
- "type": "string"
1770
- },
1771
- "lowThreshold": {
1772
- "type": "number"
1773
- },
1774
- "map": {
1775
- "type": "array",
1776
- "minItems": 1,
1777
- "items": {
1778
- "type": "object",
1779
- "required": [
1780
- "value",
1781
- "color"
1782
- ],
1783
- "additionalProperties": false,
1784
- "properties": {
1785
- "value": {
1786
- "type": "string"
1787
- },
1788
- "color": {
1789
- "type": "string"
1790
- },
1791
- "label": {
1792
- "type": "string"
1793
- }
1794
- }
1795
- }
1796
- },
1797
- "max": {
1798
- "type": "number"
1799
- },
1800
- "maxSize": {
1801
- "type": "number"
1802
- },
1803
- "membersSource": {
1804
- "type": "string"
1805
- },
1806
- "min": {
1807
- "type": "number"
1808
- },
1809
- "minSize": {
1810
- "type": "number"
1811
- },
1812
- "monthName": {
1813
- "type": "string"
1814
- },
1815
- "newSource": {
1816
- "type": "string"
1817
- },
1818
- "oldSource": {
1819
- "type": "string"
1820
- },
1821
- "pathD": {
1822
- "type": "string"
1823
- },
1824
- "playingSource": {
1825
- "type": "string"
1826
- },
1827
- "prefix": {
1828
- "type": "string"
1829
- },
1830
- "prevSource": {
1831
- "type": "string"
1832
- },
1833
- "progressSource": {
1834
- "type": "string"
1835
- },
1836
- "rMax": {
1837
- "type": "number"
1838
- },
1839
- "rMin": {
1840
- "type": "number"
1841
- },
1842
- "rangeAvg": {
1843
- "type": "number"
1844
- },
1845
- "rangeBad": {
1846
- "type": "number"
1847
- },
1848
- "runningSource": {
1849
- "type": "string"
1850
- },
1851
- "segments": {
1852
- "type": "number"
1853
- },
1854
- "showValue": {
1855
- "type": "boolean"
1856
- },
1857
- "size": {
1858
- "type": "number"
1859
- },
1860
- "source": {
1861
- "type": "string"
1862
- },
1863
- "sourceA": {
1864
- "type": "string"
1865
- },
1866
- "sourceB": {
1867
- "type": "string"
1868
- },
1869
- "stepsSource": {
1870
- "type": "string"
1871
- },
1872
- "strokeWidth": {
1873
- "type": "number"
1874
- },
1875
- "suffix": {
1876
- "type": "string"
1877
- },
1878
- "targetSource": {
1879
- "type": "string"
1880
- },
1881
- "textSource": {
1882
- "type": "string"
1883
- },
1884
- "titleSource": {
1885
- "type": "string"
1886
- },
1887
- "unit": {
1888
- "type": "string"
1889
- },
1890
- "viewH": {
1891
- "type": "number"
1892
- },
1893
- "viewW": {
1894
- "type": "number"
1895
- },
1896
- "xMax": {
1897
- "type": "number"
1898
- },
1899
- "xMin": {
1900
- "type": "number"
1901
- },
1902
- "yMax": {
1903
- "type": "number"
1904
- },
1905
- "yMin": {
1906
- "type": "number"
1907
- }
1908
- },
1909
- "oneOf": [
1910
- {
1911
- "properties": {
1912
- "kind": {
1913
- "enum": [
1914
- "bar"
1915
- ]
1916
- }
1917
- },
1918
- "required": [
1919
- "source",
1920
- "min",
1921
- "max"
1922
- ]
1923
- },
1924
- {
1925
- "properties": {
1926
- "kind": {
1927
- "enum": [
1928
- "gauge"
1929
- ]
1930
- }
1931
- },
1932
- "required": [
1933
- "source",
1934
- "min",
1935
- "max"
1936
- ]
1937
- },
1938
- {
1939
- "properties": {
1940
- "kind": {
1941
- "enum": [
1942
- "stat"
1943
- ]
1944
- }
1945
- },
1946
- "required": [
1947
- "source"
1948
- ]
1949
- },
1950
- {
1951
- "properties": {
1952
- "kind": {
1953
- "enum": [
1954
- "sparkline"
1955
- ]
1956
- }
1957
- },
1958
- "required": [
1959
- "source"
1960
- ]
1961
- },
1962
- {
1963
- "properties": {
1964
- "kind": {
1965
- "enum": [
1966
- "countup"
1967
- ]
1968
- }
1969
- },
1970
- "required": [
1971
- "source"
1972
- ]
1973
- },
1974
- {
1975
- "properties": {
1976
- "kind": {
1977
- "enum": [
1978
- "typewriter"
1979
- ]
1980
- }
1981
- },
1982
- "required": [
1983
- "source"
1984
- ]
1985
- },
1986
- {
1987
- "properties": {
1988
- "kind": {
1989
- "enum": [
1990
- "delta"
1991
- ]
1992
- }
1993
- },
1994
- "required": [
1995
- "source"
1996
- ]
1997
- },
1998
- {
1999
- "properties": {
2000
- "kind": {
2001
- "enum": [
2002
- "percent-ring"
2003
- ]
2004
- }
2005
- },
2006
- "required": [
2007
- "source",
2008
- "max"
2009
- ]
2010
- },
2011
- {
2012
- "properties": {
2013
- "kind": {
2014
- "enum": [
2015
- "heat-cell"
2016
- ]
2017
- }
2018
- },
2019
- "required": [
2020
- "source",
2021
- "min",
2022
- "max"
2023
- ]
2024
- },
2025
- {
2026
- "properties": {
2027
- "kind": {
2028
- "enum": [
2029
- "donut"
2030
- ]
2031
- }
2032
- },
2033
- "required": [
2034
- "source"
2035
- ]
2036
- },
2037
- {
2038
- "properties": {
2039
- "kind": {
2040
- "enum": [
2041
- "radar"
2042
- ]
2043
- }
2044
- },
2045
- "required": [
2046
- "source",
2047
- "max"
2048
- ]
2049
- },
2050
- {
2051
- "properties": {
2052
- "kind": {
2053
- "enum": [
2054
- "step-progress"
2055
- ]
2056
- }
2057
- },
2058
- "required": [
2059
- "source",
2060
- "stepsSource"
2061
- ]
2062
- },
2063
- {
2064
- "properties": {
2065
- "kind": {
2066
- "enum": [
2067
- "status-dot"
2068
- ]
2069
- }
2070
- },
2071
- "required": [
2072
- "source",
2073
- "map"
2074
- ]
2075
- },
2076
- {
2077
- "properties": {
2078
- "kind": {
2079
- "enum": [
2080
- "notification"
2081
- ]
2082
- }
2083
- },
2084
- "required": [
2085
- "kindSource",
2086
- "titleSource"
2087
- ]
2088
- },
2089
- {
2090
- "properties": {
2091
- "kind": {
2092
- "enum": [
2093
- "kpi-card"
2094
- ]
2095
- }
2096
- },
2097
- "required": [
2098
- "source",
2099
- "historySource",
2100
- "comparisonSource"
2101
- ]
2102
- },
2103
- {
2104
- "properties": {
2105
- "kind": {
2106
- "enum": [
2107
- "status-timeline"
2108
- ]
2109
- }
2110
- },
2111
- "required": [
2112
- "source"
2113
- ]
2114
- },
2115
- {
2116
- "properties": {
2117
- "kind": {
2118
- "enum": [
2119
- "activity-feed",
2120
- "alert-banner",
2121
- "array-list",
2122
- "article-preview",
2123
- "avatar",
2124
- "breadcrumb",
2125
- "calendar-month",
2126
- "calendar-week",
2127
- "cart-summary",
2128
- "chat-bubble",
2129
- "checklist",
2130
- "chess-board",
2131
- "commit-list",
2132
- "confidence-meter",
2133
- "coupon-code",
2134
- "event-log",
2135
- "file-dropzone",
2136
- "form-summary",
2137
- "fuel-bar",
2138
- "funnel",
2139
- "grade",
2140
- "icon-tile",
2141
- "kanban-board",
2142
- "kpi-comparison",
2143
- "leaderboard",
2144
- "log-stream",
2145
- "metrics-grid",
2146
- "number-board",
2147
- "org-chart-mini",
2148
- "otp-input",
2149
- "password-strength",
2150
- "pill-group",
2151
- "podium",
2152
- "poll-bar",
2153
- "pricing-tier",
2154
- "priority-badge",
2155
- "quick-poll-emoji",
2156
- "rating",
2157
- "rating-thumb",
2158
- "reaction-bar",
2159
- "read-receipt",
2160
- "roadmap",
2161
- "sankey",
2162
- "search-result",
2163
- "service-health",
2164
- "share-buttons",
2165
- "song-queue",
2166
- "stopwatch",
2167
- "tag-cloud",
2168
- "terminal",
2169
- "thread-summary",
2170
- "timeline-vertical",
2171
- "timezone-clock",
2172
- "toc-nav",
2173
- "token-list",
2174
- "traffic-light",
2175
- "treemap",
2176
- "user-presence",
2177
- "user-stack",
2178
- "venn",
2179
- "video-card",
2180
- "voice-message",
2181
- "weather-forecast"
2182
- ]
2183
- }
2184
- },
2185
- "required": [
2186
- "source"
2187
- ]
2188
- },
2189
- {
2190
- "properties": {
2191
- "kind": {
2192
- "enum": [
2193
- "badge"
2194
- ]
2195
- },
2196
- "map": {
2197
- "type": "array",
2198
- "minItems": 1,
2199
- "items": {
2200
- "type": "object",
2201
- "required": [
2202
- "value",
2203
- "color"
2204
- ],
2205
- "additionalProperties": false,
2206
- "properties": {
2207
- "value": {
2208
- "type": "string"
2209
- },
2210
- "color": {
2211
- "type": "string"
2212
- }
2213
- }
2214
- }
2215
- }
2216
- },
2217
- "required": [
2218
- "source"
2219
- ]
2220
- },
2221
- {
2222
- "properties": {
2223
- "kind": {
2224
- "enum": [
2225
- "array-bar",
2226
- "candlestick",
2227
- "circular-gauge",
2228
- "gantt",
2229
- "line-chart",
2230
- "matrix",
2231
- "sequence-timeline",
2232
- "slope",
2233
- "thermometer",
2234
- "waterfall"
2235
- ]
2236
- }
2237
- },
2238
- "required": [
2239
- "source",
2240
- "min",
2241
- "max"
2242
- ]
2243
- },
2244
- {
2245
- "properties": {
2246
- "kind": {
2247
- "enum": [
2248
- "attendance-grid"
2249
- ]
2250
- }
2251
- },
2252
- "required": [
2253
- "source",
2254
- "membersSource"
2255
- ]
2256
- },
2257
- {
2258
- "properties": {
2259
- "kind": {
2260
- "enum": [
2261
- "bubble-chart"
2262
- ]
2263
- }
2264
- },
2265
- "required": [
2266
- "source",
2267
- "xMin",
2268
- "xMax",
2269
- "yMin",
2270
- "yMax",
2271
- "rMin",
2272
- "rMax"
2273
- ]
2274
- },
2275
- {
2276
- "properties": {
2277
- "kind": {
2278
- "enum": [
2279
- "bullet-chart"
2280
- ]
2281
- }
2282
- },
2283
- "required": [
2284
- "source",
2285
- "targetSource",
2286
- "max"
2287
- ]
2288
- },
2289
- {
2290
- "properties": {
2291
- "kind": {
2292
- "enum": [
2293
- "calendar-heatmap",
2294
- "polar-area",
2295
- "progress-group"
2296
- ]
2297
- }
2298
- },
2299
- "required": [
2300
- "source",
2301
- "max"
2302
- ]
2303
- },
2304
- {
2305
- "properties": {
2306
- "kind": {
2307
- "enum": [
2308
- "diff-counter"
2309
- ]
2310
- }
2311
- },
2312
- "required": [
2313
- "additionsSource",
2314
- "deletionsSource"
2315
- ]
2316
- },
2317
- {
2318
- "properties": {
2319
- "kind": {
2320
- "enum": [
2321
- "kpi-trend-tile"
2322
- ]
2323
- }
2324
- },
2325
- "required": [
2326
- "source",
2327
- "prevSource",
2328
- "historySource"
2329
- ]
2330
- },
2331
- {
2332
- "properties": {
2333
- "kind": {
2334
- "enum": [
2335
- "map-pin"
2336
- ]
2337
- }
2338
- },
2339
- "required": [
2340
- "source",
2341
- "xMin",
2342
- "xMax",
2343
- "yMin",
2344
- "yMax"
2345
- ]
2346
- },
2347
- {
2348
- "properties": {
2349
- "kind": {
2350
- "enum": [
2351
- "media-player"
2352
- ]
2353
- }
2354
- },
2355
- "required": [
2356
- "source",
2357
- "durationSource",
2358
- "playingSource"
2359
- ]
2360
- },
2361
- {
2362
- "properties": {
2363
- "kind": {
2364
- "enum": [
2365
- "mini-map"
2366
- ]
2367
- }
2368
- },
2369
- "required": [
2370
- "source",
2371
- "canvasW",
2372
- "canvasH"
2373
- ]
2374
- },
2375
- {
2376
- "properties": {
2377
- "kind": {
2378
- "enum": [
2379
- "order-status",
2380
- "step-indicator"
2381
- ]
2382
- }
2383
- },
2384
- "required": [
2385
- "source",
2386
- "stepsSource"
2387
- ]
2388
- },
2389
- {
2390
- "properties": {
2391
- "kind": {
2392
- "enum": [
2393
- "path-progress"
2394
- ]
2395
- }
2396
- },
2397
- "required": [
2398
- "source",
2399
- "pathD"
2400
- ]
2401
- },
2402
- {
2403
- "properties": {
2404
- "kind": {
2405
- "enum": [
2406
- "price-tag"
2407
- ]
2408
- }
2409
- },
2410
- "required": [
2411
- "oldSource",
2412
- "newSource"
2413
- ]
2414
- },
2415
- {
2416
- "properties": {
2417
- "kind": {
2418
- "enum": [
2419
- "spinner"
2420
- ]
2421
- }
2422
- },
2423
- "required": [
2424
- "source",
2425
- "textSource"
2426
- ]
2427
- },
2428
- {
2429
- "properties": {
2430
- "kind": {
2431
- "enum": [
2432
- "stacked-bar"
2433
- ]
2434
- }
2435
- },
2436
- "required": [
2437
- "sourceA",
2438
- "sourceB",
2439
- "min",
2440
- "max"
2441
- ]
2442
- }
2443
- ]
2444
- }
2445
- },
2446
- "inputs": {
2447
- "type": "array",
2448
- "description": "読む人が動かすつまみ。 値を握り、箱の文字や部品がその値を追いかける。 箱ではないので縦列に載らず、図全体に 1 つの並びとして持つ。",
2449
- "items": {
2450
- "type": "object",
2451
- "required": [
2452
- "id",
2453
- "kind"
2454
- ],
2455
- "additionalProperties": false,
2456
- "properties": {
2457
- "id": {
2458
- "type": "string",
2459
- "minLength": 1
2460
- },
2461
- "kind": {
2462
- "type": "string",
2463
- "enum": [
2464
- "color",
2465
- "datetime",
2466
- "dropdown",
2467
- "multi-select",
2468
- "number",
2469
- "radio",
2470
- "range",
2471
- "slider",
2472
- "stepper",
2473
- "tabs",
2474
- "text",
2475
- "timeline",
2476
- "toggle",
2477
- "xypad"
2478
- ]
2479
- },
2480
- "autoplay": {
2481
- "type": "boolean"
2482
- },
2483
- "defaultHi": {
2484
- "type": "number"
2485
- },
2486
- "defaultLo": {
2487
- "type": "number"
2488
- },
2489
- "defaultSpeedIdx": {
2490
- "type": "number"
2491
- },
2492
- "defaultValue": {
2493
- "type": [
2494
- "boolean",
2495
- "number",
2496
- "string"
2497
- ]
2498
- },
2499
- "defaultValues": {
2500
- "type": "array",
2501
- "items": {
2502
- "type": "string"
2503
- }
2504
- },
2505
- "defaultX": {
2506
- "type": "number"
2507
- },
2508
- "defaultY": {
2509
- "type": "number"
2510
- },
2511
- "duration": {
2512
- "type": "number"
2513
- },
2514
- "label": {
2515
- "type": "string"
2516
- },
2517
- "loop": {
2518
- "type": "boolean"
2519
- },
2520
- "max": {
2521
- "type": "number"
2522
- },
2523
- "maxLength": {
2524
- "type": "number"
2525
- },
2526
- "min": {
2527
- "type": "number"
2528
- },
2529
- "offLabel": {
2530
- "type": "string",
2531
- "minLength": 1,
2532
- "description": "切り替え (toggle) が切の時に、箱の字の差し込みへ描く名前。 省略すると false を描く。"
2533
- },
2534
- "onLabel": {
2535
- "type": "string",
2536
- "minLength": 1,
2537
- "description": "切り替え (toggle) が入の時に、箱の字の差し込みへ描く名前。 省略すると true を描く。"
2538
- },
2539
- "options": {
2540
- "type": "array",
2541
- "description": "選択肢。 文字列は値と名前を兼ね、{ value, label } の組は value を値にして label を操作部の選択肢と箱の字の差し込みに描く。 2 つを混ぜて書ける。",
2542
- "items": {
2543
- "oneOf": [
2544
- {
2545
- "type": "string"
2546
- },
2547
- {
2548
- "type": "object",
2549
- "additionalProperties": false,
2550
- "required": [
2551
- "value",
2552
- "label"
2553
- ],
2554
- "properties": {
2555
- "value": {
2556
- "type": "string",
2557
- "minLength": 1
2558
- },
2559
- "label": {
2560
- "type": "string",
2561
- "minLength": 1
2562
- }
2563
- }
2564
- }
2565
- ]
2566
- }
2567
- },
2568
- "placeholder": {
2569
- "type": "string"
2570
- },
2571
- "speeds": {
2572
- "type": "array",
2573
- "items": {
2574
- "type": "number"
2575
- }
2576
- },
2577
- "step": {
2578
- "type": "number"
2579
- },
2580
- "xMax": {
2581
- "type": "number"
2582
- },
2583
- "xMin": {
2584
- "type": "number"
2585
- },
2586
- "yMax": {
2587
- "type": "number"
2588
- },
2589
- "yMin": {
2590
- "type": "number"
2591
- }
2592
- },
2593
- "oneOf": [
2594
- {
2595
- "properties": {
2596
- "kind": {
2597
- "enum": [
2598
- "color",
2599
- "datetime",
2600
- "text"
2601
- ]
2602
- },
2603
- "defaultValue": {
2604
- "type": "string"
2605
- }
2606
- },
2607
- "required": [
2608
- "defaultValue"
2609
- ]
2610
- },
2611
- {
2612
- "properties": {
2613
- "kind": {
2614
- "enum": [
2615
- "dropdown",
2616
- "radio",
2617
- "tabs"
2618
- ]
2619
- },
2620
- "defaultValue": {
2621
- "type": "string"
2622
- }
2623
- },
2624
- "required": [
2625
- "options",
2626
- "defaultValue"
2627
- ]
2628
- },
2629
- {
2630
- "properties": {
2631
- "kind": {
2632
- "enum": [
2633
- "multi-select"
2634
- ]
2635
- }
2636
- },
2637
- "required": [
2638
- "options",
2639
- "defaultValues"
2640
- ]
2641
- },
2642
- {
2643
- "properties": {
2644
- "kind": {
2645
- "enum": [
2646
- "number",
2647
- "stepper"
2648
- ]
2649
- },
2650
- "defaultValue": {
2651
- "type": "number"
2652
- }
2653
- },
2654
- "required": [
2655
- "defaultValue"
2656
- ]
2657
- },
2658
- {
2659
- "properties": {
2660
- "kind": {
2661
- "enum": [
2662
- "range"
2663
- ]
2664
- }
2665
- },
2666
- "required": [
2667
- "min",
2668
- "max",
2669
- "defaultLo",
2670
- "defaultHi"
2671
- ]
2672
- },
2673
- {
2674
- "properties": {
2675
- "kind": {
2676
- "enum": [
2677
- "slider"
2678
- ]
2679
- },
2680
- "defaultValue": {
2681
- "type": "number"
2682
- }
2683
- },
2684
- "required": [
2685
- "min",
2686
- "max",
2687
- "defaultValue"
2688
- ]
2689
- },
2690
- {
2691
- "properties": {
2692
- "kind": {
2693
- "enum": [
2694
- "timeline"
2695
- ]
2696
- }
2697
- },
2698
- "required": [
2699
- "duration"
2700
- ]
2701
- },
2702
- {
2703
- "properties": {
2704
- "kind": {
2705
- "enum": [
2706
- "toggle"
2707
- ]
2708
- },
2709
- "defaultValue": {
2710
- "type": "boolean"
2711
- }
2712
- },
2713
- "required": [
2714
- "defaultValue"
2715
- ]
2716
- },
2717
- {
2718
- "properties": {
2719
- "kind": {
2720
- "enum": [
2721
- "xypad"
2722
- ]
2723
- }
2724
- },
2725
- "required": [
2726
- "xMin",
2727
- "xMax",
2728
- "yMin",
2729
- "yMax",
2730
- "defaultX",
2731
- "defaultY"
2732
- ]
2733
- }
2734
- ]
2735
- }
2736
- },
2737
- "formulas": {
2738
- "type": "object",
2739
- "description": "つまみの値から決まる値。 名前を鍵、式を値に書く。 `values` とは経路が別で、式は名前を中括弧で囲わない (例 \"input * 2\")。 操作部に出す名札を付ける時は { \"expression\": \"input * 2\", \"label\": \"2 倍\" } の組で書く。",
2740
- "additionalProperties": {
2741
- "oneOf": [
2742
- {
2743
- "type": "string",
2744
- "minLength": 1,
2745
- "pattern": "\\S"
2746
- },
2747
- {
2748
- "type": "object",
2749
- "additionalProperties": false,
2750
- "required": [
2751
- "expression"
2752
- ],
2753
- "properties": {
2754
- "expression": {
2755
- "type": "string",
2756
- "minLength": 1,
2757
- "pattern": "\\S",
2758
- "description": "式 (例 \"input * 2\")"
2759
- },
2760
- "label": {
2761
- "type": "string",
2762
- "minLength": 1,
2763
- "pattern": "\\S",
2764
- "description": "操作部に式の名前として出す名札。 書かなければ名前をそのまま出す"
2765
- }
2766
- }
2767
- }
2768
- ]
2769
- },
2770
- "propertyNames": {
2771
- "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
2772
- }
2773
- },
2774
- "direction": {
2775
- "type": "string",
2776
- "enum": [
2777
- "vertical",
2778
- "horizontal"
2779
- ],
2780
- "description": "図の並ぶ向き。 vertical = 1 つの縦列に積む。 horizontal = 1 人ずつ縦列を作る。 効くのは flow と swimlane だけ。"
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
- },
2822
- "palette": {
2823
- "type": "string",
2824
- "enum": [
2825
- "kinari",
2826
- "celadon",
2827
- "blueprint",
2828
- "letterpress",
2829
- "catalog",
2830
- "terminal",
2831
- "sketch",
2832
- "neon",
2833
- "relief"
2834
- ],
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
- }
2933
- },
2934
- "reveal": {
2935
- "type": "string",
2936
- "enum": [
2937
- "phase",
2938
- "all"
2939
- ],
2940
- "description": "矢印をいつ出すか。 phase (既定) = 段が名指しする矢印はその段が来るまで描かない。 all = 段に関わらず最初から全部描く。"
2941
- },
2942
- "relations": {
2943
- "type": "string",
2944
- "enum": [
2945
- "off",
2946
- "hover"
2947
- ],
2948
- "description": "箱に触れると関係する線だけを光らせるか。 off (既定) = 何もしない。 hover = 箱に触れた時にその箱と繋がる線と相手の箱だけが光り、他が沈む。 順番を持たない record の関係図で使う。"
2949
- },
2950
- "bands": {
2951
- "type": "array",
2952
- "description": "順序図で面が動いている間の帯。 書かなければ面ごとに「最初に関わった段から最後まで」 の 1 本になる。",
2953
- "items": {
2954
- "type": "object",
2955
- "required": [
2956
- "actor",
2957
- "from",
2958
- "to"
2959
- ],
2960
- "additionalProperties": false,
2961
- "properties": {
2962
- "actor": {
2963
- "type": "string",
2964
- "description": "帯を出す面の名前"
2965
- },
2966
- "from": {
2967
- "type": "integer",
2968
- "minimum": 0,
2969
- "description": "始まりの言づての番号 (0 起点)"
2970
- },
2971
- "to": {
2972
- "type": "integer",
2973
- "minimum": 0,
2974
- "description": "終わりの言づての番号 (0 起点)"
2975
- }
2976
- }
2977
- }
2978
- },
2979
- "events": {
2980
- "type": "array",
2981
- "description": "押下などの出来事で動く仕掛け。 相手は名前で指し、指し方の項目をちょうど 1 つだけ書く。",
2982
- "items": {
2983
- "type": "object",
2984
- "required": [
2985
- "on",
2986
- "handler"
2987
- ],
2988
- "additionalProperties": false,
2989
- "properties": {
2990
- "on": {
2991
- "type": "string",
2992
- "enum": [
2993
- "click",
2994
- "hover",
2995
- "double-click",
2996
- "long-press",
2997
- "drag",
2998
- "drop",
2999
- "keydown",
3000
- "focus",
3001
- "blur"
3002
- ]
3003
- },
3004
- "handler": {
3005
- "type": "string",
3006
- "minLength": 1,
3007
- "pattern": "\\S"
3008
- },
3009
- "box": {
3010
- "type": "string",
3011
- "minLength": 1,
3012
- "description": "箱の名前"
3013
- },
3014
- "lane": {
3015
- "type": "string",
3016
- "minLength": 1,
3017
- "description": "縦列の名前"
3018
- },
3019
- "arrow": {
3020
- "type": "string",
3021
- "minLength": 1,
3022
- "pattern": "^(?!.*->.*->)\\s*\\S(?:.*\\S)?\\s*->\\s*\\S(?:.*\\S)?\\s*$",
3023
- "description": "矢印。 `A -> B` の形で両端の名前を書く"
3024
- },
3025
- "diagram": {
3026
- "const": true,
3027
- "description": "図全体を指す"
3028
- }
3029
- },
3030
- "oneOf": [
3031
- {
3032
- "required": [
3033
- "box"
3034
- ]
3035
- },
3036
- {
3037
- "required": [
3038
- "lane"
3039
- ]
3040
- },
3041
- {
3042
- "required": [
3043
- "arrow"
3044
- ]
3045
- },
3046
- {
3047
- "required": [
3048
- "diagram"
3049
- ]
3050
- }
3051
- ]
3052
- }
3053
- },
3054
- "scrolls": {
3055
- "type": "object",
3056
- "description": "巻き上げに応じて進む値。 画面を巻き上げた量から 0 から 1 の進み具合を作る。",
3057
- "propertyNames": {
3058
- "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
3059
- },
3060
- "additionalProperties": {
3061
- "type": "object",
3062
- "additionalProperties": false,
3063
- "properties": {
3064
- "start": {
3065
- "type": "number",
3066
- "minimum": 0,
3067
- "maximum": 1,
3068
- "description": "進み具合が 0 になる画面上の位置 (0 が上端、1 が下端)"
3069
- },
3070
- "end": {
3071
- "type": "number",
3072
- "minimum": 0,
3073
- "maximum": 1,
3074
- "description": "進み具合が 1 になる画面上の位置"
3075
- },
3076
- "scrub": {
3077
- "type": "number",
3078
- "minimum": 0,
3079
- "maximum": 1,
3080
- "description": "巻き上げへの追随度合い (0 が段階的、1 が連続)"
3081
- },
3082
- "label": {
3083
- "type": "string"
3084
- }
3085
- }
3086
- }
3087
- }
3088
- }
3089
- }