@brianmsm/quarto-bento 0.0.0-stage → 0.1.1

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 (122) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -2
  3. package/bin/qbento-npm.mjs +62 -0
  4. package/distribution/LICENSE +21 -0
  5. package/distribution/PACKAGING.md +59 -0
  6. package/distribution/bin/qbento +5 -0
  7. package/distribution/bin/qbento.cmd +4 -0
  8. package/distribution/manifest.json +720 -0
  9. package/distribution/runtime/LICENSE +21 -0
  10. package/distribution/runtime/_extensions/qbento/_extension.yml +24 -0
  11. package/distribution/runtime/_extensions/qbento/capture.lua +21 -0
  12. package/distribution/runtime/_extensions/qbento/guard.lua +7 -0
  13. package/distribution/runtime/_extensions/qbento/post.ts +2 -0
  14. package/distribution/runtime/_extensions/qbento/pre.ts +2 -0
  15. package/distribution/runtime/_extensions/qbento/producer-activation.js +129 -0
  16. package/distribution/runtime/src/bridge/browser.js +168 -0
  17. package/distribution/runtime/src/bridge/isolation.ts +55 -0
  18. package/distribution/runtime/src/browser/chromium.ts +218 -0
  19. package/distribution/runtime/src/cli.ts +232 -0
  20. package/distribution/runtime/src/core/agent.ts +546 -0
  21. package/distribution/runtime/src/core/annotations.ts +384 -0
  22. package/distribution/runtime/src/core/capture.ts +203 -0
  23. package/distribution/runtime/src/core/component-actions.ts +550 -0
  24. package/distribution/runtime/src/core/component-frames.ts +59 -0
  25. package/distribution/runtime/src/core/component-sync.ts +290 -0
  26. package/distribution/runtime/src/core/design-diagnostics.ts +78 -0
  27. package/distribution/runtime/src/core/design-registry.ts +287 -0
  28. package/distribution/runtime/src/core/graph-relations.ts +354 -0
  29. package/distribution/runtime/src/core/graph-scope.ts +63 -0
  30. package/distribution/runtime/src/core/graph-sync.ts +228 -0
  31. package/distribution/runtime/src/core/io.ts +27 -0
  32. package/distribution/runtime/src/core/kpi-appearance.ts +205 -0
  33. package/distribution/runtime/src/core/layouts.ts +245 -0
  34. package/distribution/runtime/src/core/project.ts +851 -0
  35. package/distribution/runtime/src/core/reconcile.ts +384 -0
  36. package/distribution/runtime/src/core/recovery.ts +1255 -0
  37. package/distribution/runtime/src/core/slide-actions.ts +158 -0
  38. package/distribution/runtime/src/core/source-scope.ts +50 -0
  39. package/distribution/runtime/src/core/sync.ts +2557 -0
  40. package/distribution/runtime/src/core/widgets.ts +300 -0
  41. package/distribution/runtime/src/integration/install.ts +98 -0
  42. package/distribution/runtime/src/integration/invocation.ts +100 -0
  43. package/distribution/runtime/src/integration/quarto.ts +457 -0
  44. package/distribution/runtime/src/render/assets.ts +66 -0
  45. package/distribution/runtime/src/render/capture.lua +8 -0
  46. package/distribution/runtime/src/render/chart.ts +165 -0
  47. package/distribution/runtime/src/render/components.ts +199 -0
  48. package/distribution/runtime/src/render/design.ts +820 -0
  49. package/distribution/runtime/src/render/diagnostics.ts +36 -0
  50. package/distribution/runtime/src/render/graphs.ts +747 -0
  51. package/distribution/runtime/src/render/html.ts +82 -0
  52. package/distribution/runtime/src/render/images.ts +268 -0
  53. package/distribution/runtime/src/render/inline.ts +259 -0
  54. package/distribution/runtime/src/render/kpi.ts +385 -0
  55. package/distribution/runtime/src/render/lists.ts +183 -0
  56. package/distribution/runtime/src/render/math.ts +413 -0
  57. package/distribution/runtime/src/render/measure.ts +185 -0
  58. package/distribution/runtime/src/render/native-layout.ts +174 -0
  59. package/distribution/runtime/src/render/producer-capture.ts +319 -0
  60. package/distribution/runtime/src/render/producer-environment.R +49 -0
  61. package/distribution/runtime/src/render/producer-environment.ts +96 -0
  62. package/distribution/runtime/src/render/producer-profile.R +91 -0
  63. package/distribution/runtime/src/render/producer-site-profile.R +18 -0
  64. package/distribution/runtime/src/render/project.ts +1806 -0
  65. package/distribution/runtime/src/render/quarto.ts +127 -0
  66. package/distribution/runtime/src/render/registry.ts +233 -0
  67. package/distribution/runtime/src/render/resources.ts +292 -0
  68. package/distribution/runtime/src/render/shell.ts +110 -0
  69. package/distribution/runtime/src/render/source-inline.ts +169 -0
  70. package/distribution/runtime/src/render/table.ts +220 -0
  71. package/distribution/runtime/src/render/text-overflow.ts +208 -0
  72. package/distribution/runtime/src/render/types.ts +71 -0
  73. package/distribution/runtime/src/render/validate.ts +572 -0
  74. package/distribution/runtime/src/rich/project.ts +117 -0
  75. package/distribution/runtime/src/rich/table.ts +374 -0
  76. package/distribution/runtime/src/source/annotations.ts +490 -0
  77. package/distribution/runtime/src/source/attributes.ts +415 -0
  78. package/distribution/runtime/src/source/chart.ts +165 -0
  79. package/distribution/runtime/src/source/code-language.ts +277 -0
  80. package/distribution/runtime/src/source/component-insertion.ts +160 -0
  81. package/distribution/runtime/src/source/deletion.ts +278 -0
  82. package/distribution/runtime/src/source/graphs.ts +517 -0
  83. package/distribution/runtime/src/source/identities.ts +256 -0
  84. package/distribution/runtime/src/source/identity-id.ts +6 -0
  85. package/distribution/runtime/src/source/image.ts +50 -0
  86. package/distribution/runtime/src/source/kpi.ts +196 -0
  87. package/distribution/runtime/src/source/mod.ts +876 -0
  88. package/distribution/runtime/src/source/notes.ts +308 -0
  89. package/distribution/runtime/src/source/structure.ts +647 -0
  90. package/distribution/runtime/src/source/table.ts +290 -0
  91. package/distribution/runtime/src/source/text-conversion.ts +146 -0
  92. package/distribution/runtime/src/state/components.ts +281 -0
  93. package/distribution/runtime/src/state/graphs.ts +200 -0
  94. package/distribution/runtime/src/state/json.ts +162 -0
  95. package/distribution/runtime/src/state/merge.ts +1034 -0
  96. package/distribution/runtime/src/state/mod.ts +5 -0
  97. package/distribution/runtime/src/state/store.ts +226 -0
  98. package/distribution/runtime/src/state/types.ts +151 -0
  99. package/distribution/runtime/src/studio/client.js +892 -0
  100. package/distribution/runtime/src/studio/components.js +188 -0
  101. package/distribution/runtime/src/studio/index.html +283 -0
  102. package/distribution/runtime/src/studio/layouts.js +170 -0
  103. package/distribution/runtime/src/studio/registry.js +283 -0
  104. package/distribution/runtime/src/studio/relations.js +169 -0
  105. package/distribution/runtime/src/studio/server.ts +461 -0
  106. package/distribution/runtime/src/widgets/deck.ts +39 -0
  107. package/distribution/runtime/src/widgets/plotly.ts +354 -0
  108. package/distribution/runtime/src/widgets/presenter.ts +367 -0
  109. package/distribution/runtime/src/widgets/snapshot.ts +116 -0
  110. package/distribution/runtime/vendor/bento/FONT_NOTICES.md +49 -0
  111. package/distribution/runtime/vendor/bento/LICENSE +21 -0
  112. package/distribution/runtime/vendor/bento/THIRD_PARTY_NOTICES.md +51 -0
  113. package/distribution/runtime/vendor/bento/font-licenses/fraunces-OFL.txt +93 -0
  114. package/distribution/runtime/vendor/bento/font-licenses/instrument-sans-OFL.txt +93 -0
  115. package/distribution/runtime/vendor/bento/pin.json +69 -0
  116. package/distribution/runtime/vendor/bento/provenance/slides.package-lock.json +1928 -0
  117. package/distribution/runtime/vendor/bento/provenance/slides.package.json +28 -0
  118. package/distribution/runtime/vendor/bento/runtime-dependencies.json +244 -0
  119. package/distribution/runtime/vendor/bento/runtime-licenses.json +4038 -0
  120. package/distribution/runtime/vendor/bento/shell.html +269 -0
  121. package/distribution/runtime/vendor/bento/slides.schema.json +2379 -0
  122. package/package.json +40 -4
@@ -0,0 +1,2379 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://bento.page/schema/slides.json",
4
+ "title": "bento/slides document",
5
+ "description": "The #bento-doc JSON of a Bento Slides file, generated from the app's validation tables. Guide: https://bento.page/agents.md",
6
+ "x-bento-version": "1.2.6",
7
+ "$ref": "#/$defs/doc",
8
+ "$defs": {
9
+ "prop-fx": {
10
+ "type": "object",
11
+ "properties": {
12
+ "ambient": {
13
+ "type": "string",
14
+ "enum": [
15
+ "kenburns"
16
+ ]
17
+ },
18
+ "countUp": {
19
+ "type": "boolean"
20
+ },
21
+ "enter": {
22
+ "type": "string",
23
+ "enum": [
24
+ "fade-up",
25
+ "fade",
26
+ "fade-down",
27
+ "slide-left",
28
+ "slide-right",
29
+ "slide-up",
30
+ "slide-down"
31
+ ]
32
+ },
33
+ "enterDur": {
34
+ "type": "number",
35
+ "minimum": 0,
36
+ "maximum": 600
37
+ },
38
+ "ken": {
39
+ "type": "object",
40
+ "properties": {
41
+ "dir": {
42
+ "type": "string",
43
+ "enum": [
44
+ "drift",
45
+ "out",
46
+ "in"
47
+ ]
48
+ },
49
+ "duration": {
50
+ "type": "number",
51
+ "minimum": 0,
52
+ "maximum": 3600
53
+ },
54
+ "scale": {
55
+ "type": "number",
56
+ "minimum": 0,
57
+ "maximum": 100
58
+ }
59
+ },
60
+ "additionalProperties": false
61
+ },
62
+ "loop": {
63
+ "type": "object",
64
+ "properties": {
65
+ "delay": {
66
+ "type": "number",
67
+ "minimum": 0,
68
+ "maximum": 3600
69
+ },
70
+ "distance": {
71
+ "type": "number",
72
+ "minimum": -100000,
73
+ "maximum": 100000
74
+ },
75
+ "duration": {
76
+ "type": "number",
77
+ "minimum": 0,
78
+ "maximum": 3600
79
+ },
80
+ "ease": {
81
+ "type": "string",
82
+ "maxLength": 64,
83
+ "pattern": "^[^\"'<>{};]*$"
84
+ },
85
+ "path": {
86
+ "type": "string",
87
+ "maxLength": 65536,
88
+ "description": "SVG path data"
89
+ },
90
+ "speeds": {
91
+ "type": "array",
92
+ "maxItems": 2000,
93
+ "items": {
94
+ "type": "number",
95
+ "minimum": 0.001,
96
+ "maximum": 1000
97
+ }
98
+ },
99
+ "type": {
100
+ "type": "string",
101
+ "enum": [
102
+ "dash-march",
103
+ "motion-path"
104
+ ]
105
+ }
106
+ },
107
+ "additionalProperties": false,
108
+ "required": [
109
+ "type"
110
+ ]
111
+ },
112
+ "order": {
113
+ "type": "number",
114
+ "minimum": -10000,
115
+ "maximum": 10000
116
+ },
117
+ "step": {
118
+ "type": "number",
119
+ "minimum": 0,
120
+ "maximum": 10000
121
+ }
122
+ },
123
+ "additionalProperties": false
124
+ },
125
+ "prop-shadow": {
126
+ "anyOf": [
127
+ {
128
+ "type": "object",
129
+ "properties": {
130
+ "blur": {
131
+ "type": "number",
132
+ "minimum": 0,
133
+ "maximum": 10000
134
+ },
135
+ "color": {
136
+ "type": "string",
137
+ "maxLength": 64,
138
+ "description": "CSS colour; no url()"
139
+ },
140
+ "x": {
141
+ "type": "number",
142
+ "minimum": -10000,
143
+ "maximum": 10000
144
+ },
145
+ "y": {
146
+ "type": "number",
147
+ "minimum": -10000,
148
+ "maximum": 10000
149
+ }
150
+ },
151
+ "additionalProperties": false,
152
+ "required": [
153
+ "blur",
154
+ "color"
155
+ ]
156
+ },
157
+ {
158
+ "type": "array",
159
+ "maxItems": 16,
160
+ "items": {
161
+ "type": "object",
162
+ "properties": {
163
+ "blur": {
164
+ "type": "number",
165
+ "minimum": 0,
166
+ "maximum": 10000
167
+ },
168
+ "color": {
169
+ "type": "string",
170
+ "maxLength": 64,
171
+ "description": "CSS colour; no url()"
172
+ },
173
+ "x": {
174
+ "type": "number",
175
+ "minimum": -10000,
176
+ "maximum": 10000
177
+ },
178
+ "y": {
179
+ "type": "number",
180
+ "minimum": -10000,
181
+ "maximum": 10000
182
+ }
183
+ },
184
+ "additionalProperties": false,
185
+ "required": [
186
+ "blur",
187
+ "color"
188
+ ]
189
+ }
190
+ }
191
+ ]
192
+ },
193
+ "prop-colorGradient": {
194
+ "type": "object",
195
+ "properties": {
196
+ "angle": {
197
+ "type": "number",
198
+ "minimum": -3600,
199
+ "maximum": 3600
200
+ },
201
+ "stops": {
202
+ "type": "array",
203
+ "maxItems": 64,
204
+ "items": {
205
+ "type": "object",
206
+ "properties": {
207
+ "at": {
208
+ "type": "number",
209
+ "minimum": 0,
210
+ "maximum": 1
211
+ },
212
+ "color": {
213
+ "type": "string",
214
+ "maxLength": 64,
215
+ "description": "CSS colour; no url()"
216
+ }
217
+ },
218
+ "additionalProperties": false,
219
+ "required": [
220
+ "at",
221
+ "color"
222
+ ]
223
+ }
224
+ }
225
+ },
226
+ "additionalProperties": false,
227
+ "required": [
228
+ "stops"
229
+ ]
230
+ },
231
+ "prop-themeRefs": {
232
+ "type": "object",
233
+ "additionalProperties": {
234
+ "type": "string"
235
+ },
236
+ "maxProperties": 64,
237
+ "description": "property path → palette token"
238
+ },
239
+ "prop-textStroke": {
240
+ "type": "object",
241
+ "properties": {
242
+ "width": {
243
+ "type": "number",
244
+ "minimum": 0,
245
+ "maximum": 1000
246
+ },
247
+ "color": {
248
+ "type": "string",
249
+ "maxLength": 64,
250
+ "description": "CSS colour; no url()"
251
+ },
252
+ "fill": {
253
+ "type": "string",
254
+ "maxLength": 64,
255
+ "description": "CSS colour; no url()"
256
+ }
257
+ },
258
+ "additionalProperties": false,
259
+ "required": [
260
+ "width",
261
+ "color"
262
+ ]
263
+ },
264
+ "prop-link": {
265
+ "type": "string",
266
+ "maxLength": 4000,
267
+ "description": "slide id or http(s) URL"
268
+ },
269
+ "text": {
270
+ "type": "object",
271
+ "properties": {
272
+ "align": {
273
+ "type": "string",
274
+ "enum": [
275
+ "left",
276
+ "center",
277
+ "right"
278
+ ]
279
+ },
280
+ "backdropFilter": {
281
+ "type": "number",
282
+ "minimum": 0,
283
+ "maximum": 1000
284
+ },
285
+ "blend": {
286
+ "type": "string",
287
+ "maxLength": 64,
288
+ "pattern": "^[^\"'<>{};]*$"
289
+ },
290
+ "blur": {
291
+ "type": "number",
292
+ "minimum": 0,
293
+ "maximum": 1000
294
+ },
295
+ "color": {
296
+ "type": "string",
297
+ "maxLength": 64,
298
+ "description": "CSS colour; no url()"
299
+ },
300
+ "colorGradient": {
301
+ "$ref": "#/$defs/prop-colorGradient"
302
+ },
303
+ "fontFamily": {
304
+ "type": "string",
305
+ "maxLength": 300
306
+ },
307
+ "fontSize": {
308
+ "type": "number",
309
+ "minimum": 0,
310
+ "maximum": 4000
311
+ },
312
+ "fontWeight": {
313
+ "type": "number",
314
+ "minimum": 1,
315
+ "maximum": 1000
316
+ },
317
+ "fx": {
318
+ "$ref": "#/$defs/prop-fx"
319
+ },
320
+ "group": {
321
+ "type": "string",
322
+ "maxLength": 200,
323
+ "pattern": "^[^\"'<>{};]*$"
324
+ },
325
+ "groupId": {
326
+ "type": "string",
327
+ "maxLength": 200,
328
+ "pattern": "^[^\"'<>{};]*$"
329
+ },
330
+ "h": {
331
+ "type": "number",
332
+ "minimum": 0,
333
+ "maximum": 1000000
334
+ },
335
+ "html": {
336
+ "type": "string",
337
+ "maxLength": 65536
338
+ },
339
+ "id": {
340
+ "type": "string",
341
+ "maxLength": 200,
342
+ "pattern": "^[^\"'<>{};]*$"
343
+ },
344
+ "letterSpacing": {
345
+ "type": "number",
346
+ "minimum": -1000,
347
+ "maximum": 1000
348
+ },
349
+ "lineHeight": {
350
+ "type": "number",
351
+ "minimum": 0,
352
+ "maximum": 100
353
+ },
354
+ "link": {
355
+ "$ref": "#/$defs/prop-link"
356
+ },
357
+ "morphId": {
358
+ "type": "string",
359
+ "maxLength": 200,
360
+ "pattern": "^[^\"'<>{};]*$"
361
+ },
362
+ "opacity": {
363
+ "type": "number",
364
+ "minimum": 0,
365
+ "maximum": 1
366
+ },
367
+ "placeholder": {
368
+ "type": "string",
369
+ "maxLength": 4000
370
+ },
371
+ "role": {
372
+ "type": "string",
373
+ "maxLength": 200,
374
+ "pattern": "^[^\"'<>{};]*$"
375
+ },
376
+ "rotation": {
377
+ "type": "number",
378
+ "minimum": -3600,
379
+ "maximum": 3600
380
+ },
381
+ "shadow": {
382
+ "$ref": "#/$defs/prop-shadow"
383
+ },
384
+ "showOnHover": {
385
+ "type": "string",
386
+ "maxLength": 200,
387
+ "pattern": "^[^\"'<>{};]*$"
388
+ },
389
+ "textStroke": {
390
+ "$ref": "#/$defs/prop-textStroke"
391
+ },
392
+ "themeRefs": {
393
+ "$ref": "#/$defs/prop-themeRefs"
394
+ },
395
+ "type": {
396
+ "const": "text"
397
+ },
398
+ "valign": {
399
+ "type": "string",
400
+ "enum": [
401
+ "top",
402
+ "middle",
403
+ "bottom"
404
+ ]
405
+ },
406
+ "w": {
407
+ "type": "number",
408
+ "minimum": 0,
409
+ "maximum": 1000000
410
+ },
411
+ "x": {
412
+ "type": "number",
413
+ "minimum": -1000000,
414
+ "maximum": 1000000
415
+ },
416
+ "y": {
417
+ "type": "number",
418
+ "minimum": -1000000,
419
+ "maximum": 1000000
420
+ }
421
+ },
422
+ "additionalProperties": false,
423
+ "required": [
424
+ "type",
425
+ "id",
426
+ "html"
427
+ ],
428
+ "description": "text element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
429
+ },
430
+ "prop-fillGradient": {
431
+ "type": "object",
432
+ "properties": {
433
+ "angle": {
434
+ "type": "number",
435
+ "minimum": -3600,
436
+ "maximum": 3600
437
+ },
438
+ "stops": {
439
+ "type": "array",
440
+ "maxItems": 64,
441
+ "items": {
442
+ "type": "object",
443
+ "properties": {
444
+ "at": {
445
+ "type": "number",
446
+ "minimum": 0,
447
+ "maximum": 1
448
+ },
449
+ "color": {
450
+ "type": "string",
451
+ "maxLength": 64,
452
+ "description": "CSS colour; no url()"
453
+ }
454
+ },
455
+ "additionalProperties": false,
456
+ "required": [
457
+ "at",
458
+ "color"
459
+ ]
460
+ }
461
+ }
462
+ },
463
+ "additionalProperties": false,
464
+ "required": [
465
+ "stops"
466
+ ]
467
+ },
468
+ "prop-from": {
469
+ "type": "object",
470
+ "properties": {
471
+ "el": {
472
+ "type": "string",
473
+ "maxLength": 200,
474
+ "pattern": "^[^\"'<>{};]*$"
475
+ },
476
+ "side": {
477
+ "type": "string",
478
+ "enum": [
479
+ "auto",
480
+ "top",
481
+ "right",
482
+ "bottom",
483
+ "left"
484
+ ]
485
+ }
486
+ },
487
+ "additionalProperties": false,
488
+ "required": [
489
+ "el"
490
+ ]
491
+ },
492
+ "prop-to": {
493
+ "type": "object",
494
+ "properties": {
495
+ "el": {
496
+ "type": "string",
497
+ "maxLength": 200,
498
+ "pattern": "^[^\"'<>{};]*$"
499
+ },
500
+ "side": {
501
+ "type": "string",
502
+ "enum": [
503
+ "auto",
504
+ "top",
505
+ "right",
506
+ "bottom",
507
+ "left"
508
+ ]
509
+ }
510
+ },
511
+ "additionalProperties": false,
512
+ "required": [
513
+ "el"
514
+ ]
515
+ },
516
+ "shape": {
517
+ "type": "object",
518
+ "properties": {
519
+ "backdropFilter": {
520
+ "type": "number",
521
+ "minimum": 0,
522
+ "maximum": 1000
523
+ },
524
+ "blend": {
525
+ "type": "string",
526
+ "maxLength": 64,
527
+ "pattern": "^[^\"'<>{};]*$"
528
+ },
529
+ "blur": {
530
+ "type": "number",
531
+ "minimum": 0,
532
+ "maximum": 1000
533
+ },
534
+ "d": {
535
+ "type": "string",
536
+ "maxLength": 65536,
537
+ "description": "SVG path data"
538
+ },
539
+ "fill": {
540
+ "type": "string",
541
+ "maxLength": 64,
542
+ "description": "CSS colour or url(#local-id)"
543
+ },
544
+ "fillGradient": {
545
+ "$ref": "#/$defs/prop-fillGradient"
546
+ },
547
+ "from": {
548
+ "$ref": "#/$defs/prop-from"
549
+ },
550
+ "fx": {
551
+ "$ref": "#/$defs/prop-fx"
552
+ },
553
+ "group": {
554
+ "type": "string",
555
+ "maxLength": 200,
556
+ "pattern": "^[^\"'<>{};]*$"
557
+ },
558
+ "groupId": {
559
+ "type": "string",
560
+ "maxLength": 200,
561
+ "pattern": "^[^\"'<>{};]*$"
562
+ },
563
+ "h": {
564
+ "type": "number",
565
+ "minimum": 0,
566
+ "maximum": 1000000
567
+ },
568
+ "heads": {
569
+ "type": "number",
570
+ "minimum": 2,
571
+ "maximum": 2
572
+ },
573
+ "id": {
574
+ "type": "string",
575
+ "maxLength": 200,
576
+ "pattern": "^[^\"'<>{};]*$"
577
+ },
578
+ "lineEnd": {
579
+ "type": "string",
580
+ "enum": [
581
+ "none",
582
+ "arrow",
583
+ "dot",
584
+ "bar",
585
+ "arrow-open",
586
+ "triangle",
587
+ "triangle-open",
588
+ "diamond",
589
+ "diamond-open",
590
+ "square",
591
+ "circle-open"
592
+ ]
593
+ },
594
+ "lineStart": {
595
+ "type": "string",
596
+ "enum": [
597
+ "none",
598
+ "arrow",
599
+ "dot",
600
+ "bar",
601
+ "arrow-open",
602
+ "triangle",
603
+ "triangle-open",
604
+ "diamond",
605
+ "diamond-open",
606
+ "square",
607
+ "circle-open"
608
+ ]
609
+ },
610
+ "link": {
611
+ "$ref": "#/$defs/prop-link"
612
+ },
613
+ "morphId": {
614
+ "type": "string",
615
+ "maxLength": 200,
616
+ "pattern": "^[^\"'<>{};]*$"
617
+ },
618
+ "opacity": {
619
+ "type": "number",
620
+ "minimum": 0,
621
+ "maximum": 1
622
+ },
623
+ "pathBox": {
624
+ "type": "array",
625
+ "minItems": 4,
626
+ "maxItems": 4,
627
+ "items": {
628
+ "type": "number"
629
+ }
630
+ },
631
+ "radius": {
632
+ "type": "number",
633
+ "minimum": 0,
634
+ "maximum": 100000
635
+ },
636
+ "role": {
637
+ "type": "string",
638
+ "maxLength": 200,
639
+ "pattern": "^[^\"'<>{};]*$"
640
+ },
641
+ "rotation": {
642
+ "type": "number",
643
+ "minimum": -3600,
644
+ "maximum": 3600
645
+ },
646
+ "shadow": {
647
+ "$ref": "#/$defs/prop-shadow"
648
+ },
649
+ "shape": {
650
+ "type": "string",
651
+ "enum": [
652
+ "rect",
653
+ "ellipse",
654
+ "triangle",
655
+ "arrow",
656
+ "line",
657
+ "path"
658
+ ]
659
+ },
660
+ "showOnHover": {
661
+ "type": "string",
662
+ "maxLength": 200,
663
+ "pattern": "^[^\"'<>{};]*$"
664
+ },
665
+ "stroke": {
666
+ "type": "string",
667
+ "maxLength": 64,
668
+ "description": "CSS colour or url(#local-id)"
669
+ },
670
+ "strokeDash": {
671
+ "type": "number",
672
+ "minimum": 0,
673
+ "maximum": 10000
674
+ },
675
+ "strokeStyle": {
676
+ "type": "string",
677
+ "enum": [
678
+ "solid",
679
+ "dashed",
680
+ "dotted"
681
+ ]
682
+ },
683
+ "strokeWidth": {
684
+ "type": "number",
685
+ "minimum": 0,
686
+ "maximum": 10000
687
+ },
688
+ "themeRefs": {
689
+ "$ref": "#/$defs/prop-themeRefs"
690
+ },
691
+ "to": {
692
+ "$ref": "#/$defs/prop-to"
693
+ },
694
+ "type": {
695
+ "const": "shape"
696
+ },
697
+ "w": {
698
+ "type": "number",
699
+ "minimum": 0,
700
+ "maximum": 1000000
701
+ },
702
+ "x": {
703
+ "type": "number",
704
+ "minimum": -1000000,
705
+ "maximum": 1000000
706
+ },
707
+ "y": {
708
+ "type": "number",
709
+ "minimum": -1000000,
710
+ "maximum": 1000000
711
+ }
712
+ },
713
+ "additionalProperties": false,
714
+ "required": [
715
+ "type",
716
+ "id",
717
+ "shape",
718
+ "fill"
719
+ ],
720
+ "description": "shape element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
721
+ },
722
+ "prop-crop": {
723
+ "type": "object",
724
+ "properties": {
725
+ "scale": {
726
+ "type": "number",
727
+ "minimum": 1,
728
+ "maximum": 64
729
+ },
730
+ "x": {
731
+ "type": "number",
732
+ "minimum": 0,
733
+ "maximum": 1
734
+ },
735
+ "y": {
736
+ "type": "number",
737
+ "minimum": 0,
738
+ "maximum": 1
739
+ }
740
+ },
741
+ "additionalProperties": false,
742
+ "required": [
743
+ "x",
744
+ "y",
745
+ "scale"
746
+ ]
747
+ },
748
+ "image": {
749
+ "type": "object",
750
+ "properties": {
751
+ "backdropFilter": {
752
+ "type": "number",
753
+ "minimum": 0,
754
+ "maximum": 1000
755
+ },
756
+ "blend": {
757
+ "type": "string",
758
+ "maxLength": 64,
759
+ "pattern": "^[^\"'<>{};]*$"
760
+ },
761
+ "blur": {
762
+ "type": "number",
763
+ "minimum": 0,
764
+ "maximum": 1000
765
+ },
766
+ "crop": {
767
+ "$ref": "#/$defs/prop-crop"
768
+ },
769
+ "fit": {
770
+ "type": "string",
771
+ "enum": [
772
+ "contain",
773
+ "cover",
774
+ "fill"
775
+ ]
776
+ },
777
+ "fx": {
778
+ "$ref": "#/$defs/prop-fx"
779
+ },
780
+ "group": {
781
+ "type": "string",
782
+ "maxLength": 200,
783
+ "pattern": "^[^\"'<>{};]*$"
784
+ },
785
+ "groupId": {
786
+ "type": "string",
787
+ "maxLength": 200,
788
+ "pattern": "^[^\"'<>{};]*$"
789
+ },
790
+ "h": {
791
+ "type": "number",
792
+ "minimum": 0,
793
+ "maximum": 1000000
794
+ },
795
+ "id": {
796
+ "type": "string",
797
+ "maxLength": 200,
798
+ "pattern": "^[^\"'<>{};]*$"
799
+ },
800
+ "keepAspectRatio": {
801
+ "type": "boolean"
802
+ },
803
+ "link": {
804
+ "$ref": "#/$defs/prop-link"
805
+ },
806
+ "morphId": {
807
+ "type": "string",
808
+ "maxLength": 200,
809
+ "pattern": "^[^\"'<>{};]*$"
810
+ },
811
+ "opacity": {
812
+ "type": "number",
813
+ "minimum": 0,
814
+ "maximum": 1
815
+ },
816
+ "radius": {
817
+ "type": "number",
818
+ "minimum": 0,
819
+ "maximum": 100000
820
+ },
821
+ "role": {
822
+ "type": "string",
823
+ "maxLength": 200,
824
+ "pattern": "^[^\"'<>{};]*$"
825
+ },
826
+ "rotation": {
827
+ "type": "number",
828
+ "minimum": -3600,
829
+ "maximum": 3600
830
+ },
831
+ "shadow": {
832
+ "$ref": "#/$defs/prop-shadow"
833
+ },
834
+ "showOnHover": {
835
+ "type": "string",
836
+ "maxLength": 200,
837
+ "pattern": "^[^\"'<>{};]*$"
838
+ },
839
+ "src": {
840
+ "type": "string",
841
+ "maxLength": 33554432,
842
+ "description": "data: URI, asset:<key> or URL"
843
+ },
844
+ "themeRefs": {
845
+ "$ref": "#/$defs/prop-themeRefs"
846
+ },
847
+ "type": {
848
+ "const": "image"
849
+ },
850
+ "w": {
851
+ "type": "number",
852
+ "minimum": 0,
853
+ "maximum": 1000000
854
+ },
855
+ "x": {
856
+ "type": "number",
857
+ "minimum": -1000000,
858
+ "maximum": 1000000
859
+ },
860
+ "y": {
861
+ "type": "number",
862
+ "minimum": -1000000,
863
+ "maximum": 1000000
864
+ }
865
+ },
866
+ "additionalProperties": false,
867
+ "required": [
868
+ "type",
869
+ "id",
870
+ "src"
871
+ ],
872
+ "description": "image element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
873
+ },
874
+ "svg": {
875
+ "type": "object",
876
+ "properties": {
877
+ "asset": {
878
+ "type": "string",
879
+ "maxLength": 200,
880
+ "pattern": "^[^\"'<>{};]*$"
881
+ },
882
+ "backdropFilter": {
883
+ "type": "number",
884
+ "minimum": 0,
885
+ "maximum": 1000
886
+ },
887
+ "blend": {
888
+ "type": "string",
889
+ "maxLength": 64,
890
+ "pattern": "^[^\"'<>{};]*$"
891
+ },
892
+ "blur": {
893
+ "type": "number",
894
+ "minimum": 0,
895
+ "maximum": 1000
896
+ },
897
+ "css": {
898
+ "type": "string",
899
+ "maxLength": 131072
900
+ },
901
+ "fx": {
902
+ "$ref": "#/$defs/prop-fx"
903
+ },
904
+ "group": {
905
+ "type": "string",
906
+ "maxLength": 200,
907
+ "pattern": "^[^\"'<>{};]*$"
908
+ },
909
+ "groupId": {
910
+ "type": "string",
911
+ "maxLength": 200,
912
+ "pattern": "^[^\"'<>{};]*$"
913
+ },
914
+ "h": {
915
+ "type": "number",
916
+ "minimum": 0,
917
+ "maximum": 1000000
918
+ },
919
+ "id": {
920
+ "type": "string",
921
+ "maxLength": 200,
922
+ "pattern": "^[^\"'<>{};]*$"
923
+ },
924
+ "link": {
925
+ "$ref": "#/$defs/prop-link"
926
+ },
927
+ "markup": {
928
+ "type": "string",
929
+ "maxLength": 4194304
930
+ },
931
+ "morphId": {
932
+ "type": "string",
933
+ "maxLength": 200,
934
+ "pattern": "^[^\"'<>{};]*$"
935
+ },
936
+ "opacity": {
937
+ "type": "number",
938
+ "minimum": 0,
939
+ "maximum": 1
940
+ },
941
+ "role": {
942
+ "type": "string",
943
+ "maxLength": 200,
944
+ "pattern": "^[^\"'<>{};]*$"
945
+ },
946
+ "rotation": {
947
+ "type": "number",
948
+ "minimum": -3600,
949
+ "maximum": 3600
950
+ },
951
+ "shadow": {
952
+ "$ref": "#/$defs/prop-shadow"
953
+ },
954
+ "showOnHover": {
955
+ "type": "string",
956
+ "maxLength": 200,
957
+ "pattern": "^[^\"'<>{};]*$"
958
+ },
959
+ "themeRefs": {
960
+ "$ref": "#/$defs/prop-themeRefs"
961
+ },
962
+ "type": {
963
+ "const": "svg"
964
+ },
965
+ "w": {
966
+ "type": "number",
967
+ "minimum": 0,
968
+ "maximum": 1000000
969
+ },
970
+ "x": {
971
+ "type": "number",
972
+ "minimum": -1000000,
973
+ "maximum": 1000000
974
+ },
975
+ "y": {
976
+ "type": "number",
977
+ "minimum": -1000000,
978
+ "maximum": 1000000
979
+ }
980
+ },
981
+ "additionalProperties": false,
982
+ "required": [
983
+ "type",
984
+ "id"
985
+ ],
986
+ "description": "svg element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
987
+ },
988
+ "prop-source": {
989
+ "type": "object",
990
+ "properties": {
991
+ "tableId": {
992
+ "type": "string",
993
+ "maxLength": 200,
994
+ "pattern": "^[^\"'<>{};]*$"
995
+ }
996
+ },
997
+ "additionalProperties": false,
998
+ "required": [
999
+ "tableId"
1000
+ ]
1001
+ },
1002
+ "prop-option": {
1003
+ "type": "object",
1004
+ "description": "ECharts-shaped option, plain JSON"
1005
+ },
1006
+ "chart": {
1007
+ "type": "object",
1008
+ "properties": {
1009
+ "backdropFilter": {
1010
+ "type": "number",
1011
+ "minimum": 0,
1012
+ "maximum": 1000
1013
+ },
1014
+ "blend": {
1015
+ "type": "string",
1016
+ "maxLength": 64,
1017
+ "pattern": "^[^\"'<>{};]*$"
1018
+ },
1019
+ "blur": {
1020
+ "type": "number",
1021
+ "minimum": 0,
1022
+ "maximum": 1000
1023
+ },
1024
+ "fx": {
1025
+ "$ref": "#/$defs/prop-fx"
1026
+ },
1027
+ "group": {
1028
+ "type": "string",
1029
+ "maxLength": 200,
1030
+ "pattern": "^[^\"'<>{};]*$"
1031
+ },
1032
+ "groupId": {
1033
+ "type": "string",
1034
+ "maxLength": 200,
1035
+ "pattern": "^[^\"'<>{};]*$"
1036
+ },
1037
+ "h": {
1038
+ "type": "number",
1039
+ "minimum": 0,
1040
+ "maximum": 1000000
1041
+ },
1042
+ "id": {
1043
+ "type": "string",
1044
+ "maxLength": 200,
1045
+ "pattern": "^[^\"'<>{};]*$"
1046
+ },
1047
+ "link": {
1048
+ "$ref": "#/$defs/prop-link"
1049
+ },
1050
+ "morphId": {
1051
+ "type": "string",
1052
+ "maxLength": 200,
1053
+ "pattern": "^[^\"'<>{};]*$"
1054
+ },
1055
+ "opacity": {
1056
+ "type": "number",
1057
+ "minimum": 0,
1058
+ "maximum": 1
1059
+ },
1060
+ "option": {
1061
+ "$ref": "#/$defs/prop-option"
1062
+ },
1063
+ "preset": {
1064
+ "type": "string",
1065
+ "maxLength": 200,
1066
+ "pattern": "^[^\"'<>{};]*$"
1067
+ },
1068
+ "role": {
1069
+ "type": "string",
1070
+ "maxLength": 200,
1071
+ "pattern": "^[^\"'<>{};]*$"
1072
+ },
1073
+ "rotation": {
1074
+ "type": "number",
1075
+ "minimum": -3600,
1076
+ "maximum": 3600
1077
+ },
1078
+ "shadow": {
1079
+ "$ref": "#/$defs/prop-shadow"
1080
+ },
1081
+ "showOnHover": {
1082
+ "type": "string",
1083
+ "maxLength": 200,
1084
+ "pattern": "^[^\"'<>{};]*$"
1085
+ },
1086
+ "source": {
1087
+ "$ref": "#/$defs/prop-source"
1088
+ },
1089
+ "themeRefs": {
1090
+ "$ref": "#/$defs/prop-themeRefs"
1091
+ },
1092
+ "type": {
1093
+ "const": "chart"
1094
+ },
1095
+ "w": {
1096
+ "type": "number",
1097
+ "minimum": 0,
1098
+ "maximum": 1000000
1099
+ },
1100
+ "x": {
1101
+ "type": "number",
1102
+ "minimum": -1000000,
1103
+ "maximum": 1000000
1104
+ },
1105
+ "y": {
1106
+ "type": "number",
1107
+ "minimum": -1000000,
1108
+ "maximum": 1000000
1109
+ }
1110
+ },
1111
+ "additionalProperties": false,
1112
+ "required": [
1113
+ "type",
1114
+ "id",
1115
+ "option"
1116
+ ],
1117
+ "description": "chart element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
1118
+ },
1119
+ "prop-style": {
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "borderColor": {
1123
+ "type": "string",
1124
+ "maxLength": 64,
1125
+ "description": "CSS colour; no url()"
1126
+ },
1127
+ "borderWidth": {
1128
+ "type": "number",
1129
+ "minimum": 0,
1130
+ "maximum": 1000
1131
+ },
1132
+ "cellPadX": {
1133
+ "type": "number",
1134
+ "minimum": 0,
1135
+ "maximum": 1000
1136
+ },
1137
+ "cellPadY": {
1138
+ "type": "number",
1139
+ "minimum": 0,
1140
+ "maximum": 1000
1141
+ },
1142
+ "color": {
1143
+ "type": "string",
1144
+ "maxLength": 64,
1145
+ "description": "CSS colour; no url()"
1146
+ },
1147
+ "fontFamily": {
1148
+ "type": "string",
1149
+ "maxLength": 300
1150
+ },
1151
+ "fontSize": {
1152
+ "type": "number",
1153
+ "minimum": 0,
1154
+ "maximum": 4000
1155
+ },
1156
+ "headerBg": {
1157
+ "type": "string",
1158
+ "maxLength": 64,
1159
+ "description": "CSS colour; no url()"
1160
+ },
1161
+ "headerColor": {
1162
+ "type": "string",
1163
+ "maxLength": 64,
1164
+ "description": "CSS colour; no url()"
1165
+ },
1166
+ "radius": {
1167
+ "type": "number",
1168
+ "minimum": 0,
1169
+ "maximum": 100000
1170
+ },
1171
+ "zebra": {
1172
+ "type": "string",
1173
+ "maxLength": 64,
1174
+ "description": "CSS colour; no url()"
1175
+ }
1176
+ },
1177
+ "additionalProperties": false
1178
+ },
1179
+ "prop-rows": {
1180
+ "type": "array",
1181
+ "maxItems": 2000,
1182
+ "items": {
1183
+ "type": "object",
1184
+ "properties": {
1185
+ "cells": {
1186
+ "type": "array",
1187
+ "maxItems": 200,
1188
+ "items": {
1189
+ "type": "object",
1190
+ "properties": {
1191
+ "align": {
1192
+ "type": "string",
1193
+ "enum": [
1194
+ "left",
1195
+ "center",
1196
+ "right"
1197
+ ]
1198
+ },
1199
+ "bg": {
1200
+ "type": "string",
1201
+ "maxLength": 64,
1202
+ "description": "CSS colour; no url()"
1203
+ },
1204
+ "bold": {
1205
+ "type": "boolean"
1206
+ },
1207
+ "color": {
1208
+ "type": "string",
1209
+ "maxLength": 64,
1210
+ "description": "CSS colour; no url()"
1211
+ },
1212
+ "html": {
1213
+ "type": "string",
1214
+ "maxLength": 65536
1215
+ }
1216
+ },
1217
+ "additionalProperties": false
1218
+ }
1219
+ }
1220
+ },
1221
+ "additionalProperties": false,
1222
+ "required": [
1223
+ "cells"
1224
+ ]
1225
+ }
1226
+ },
1227
+ "prop-columns": {
1228
+ "type": "array",
1229
+ "maxItems": 200,
1230
+ "items": {
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "w": {
1234
+ "type": "number",
1235
+ "minimum": 0,
1236
+ "maximum": 1000000
1237
+ }
1238
+ },
1239
+ "additionalProperties": false,
1240
+ "required": [
1241
+ "w"
1242
+ ]
1243
+ }
1244
+ },
1245
+ "table": {
1246
+ "type": "object",
1247
+ "properties": {
1248
+ "backdropFilter": {
1249
+ "type": "number",
1250
+ "minimum": 0,
1251
+ "maximum": 1000
1252
+ },
1253
+ "blend": {
1254
+ "type": "string",
1255
+ "maxLength": 64,
1256
+ "pattern": "^[^\"'<>{};]*$"
1257
+ },
1258
+ "blur": {
1259
+ "type": "number",
1260
+ "minimum": 0,
1261
+ "maximum": 1000
1262
+ },
1263
+ "columns": {
1264
+ "$ref": "#/$defs/prop-columns"
1265
+ },
1266
+ "fx": {
1267
+ "$ref": "#/$defs/prop-fx"
1268
+ },
1269
+ "group": {
1270
+ "type": "string",
1271
+ "maxLength": 200,
1272
+ "pattern": "^[^\"'<>{};]*$"
1273
+ },
1274
+ "groupId": {
1275
+ "type": "string",
1276
+ "maxLength": 200,
1277
+ "pattern": "^[^\"'<>{};]*$"
1278
+ },
1279
+ "h": {
1280
+ "type": "number",
1281
+ "minimum": 0,
1282
+ "maximum": 1000000
1283
+ },
1284
+ "header": {
1285
+ "type": "boolean"
1286
+ },
1287
+ "id": {
1288
+ "type": "string",
1289
+ "maxLength": 200,
1290
+ "pattern": "^[^\"'<>{};]*$"
1291
+ },
1292
+ "link": {
1293
+ "$ref": "#/$defs/prop-link"
1294
+ },
1295
+ "morphId": {
1296
+ "type": "string",
1297
+ "maxLength": 200,
1298
+ "pattern": "^[^\"'<>{};]*$"
1299
+ },
1300
+ "opacity": {
1301
+ "type": "number",
1302
+ "minimum": 0,
1303
+ "maximum": 1
1304
+ },
1305
+ "role": {
1306
+ "type": "string",
1307
+ "maxLength": 200,
1308
+ "pattern": "^[^\"'<>{};]*$"
1309
+ },
1310
+ "rotation": {
1311
+ "type": "number",
1312
+ "minimum": -3600,
1313
+ "maximum": 3600
1314
+ },
1315
+ "rows": {
1316
+ "$ref": "#/$defs/prop-rows"
1317
+ },
1318
+ "shadow": {
1319
+ "$ref": "#/$defs/prop-shadow"
1320
+ },
1321
+ "showOnHover": {
1322
+ "type": "string",
1323
+ "maxLength": 200,
1324
+ "pattern": "^[^\"'<>{};]*$"
1325
+ },
1326
+ "style": {
1327
+ "$ref": "#/$defs/prop-style"
1328
+ },
1329
+ "themeRefs": {
1330
+ "$ref": "#/$defs/prop-themeRefs"
1331
+ },
1332
+ "type": {
1333
+ "const": "table"
1334
+ },
1335
+ "w": {
1336
+ "type": "number",
1337
+ "minimum": 0,
1338
+ "maximum": 1000000
1339
+ },
1340
+ "x": {
1341
+ "type": "number",
1342
+ "minimum": -1000000,
1343
+ "maximum": 1000000
1344
+ },
1345
+ "y": {
1346
+ "type": "number",
1347
+ "minimum": -1000000,
1348
+ "maximum": 1000000
1349
+ }
1350
+ },
1351
+ "additionalProperties": false,
1352
+ "required": [
1353
+ "type",
1354
+ "id",
1355
+ "columns",
1356
+ "rows"
1357
+ ],
1358
+ "description": "table element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
1359
+ },
1360
+ "media": {
1361
+ "type": "object",
1362
+ "properties": {
1363
+ "autoplay": {
1364
+ "type": "boolean"
1365
+ },
1366
+ "backdropFilter": {
1367
+ "type": "number",
1368
+ "minimum": 0,
1369
+ "maximum": 1000
1370
+ },
1371
+ "blend": {
1372
+ "type": "string",
1373
+ "maxLength": 64,
1374
+ "pattern": "^[^\"'<>{};]*$"
1375
+ },
1376
+ "blur": {
1377
+ "type": "number",
1378
+ "minimum": 0,
1379
+ "maximum": 1000
1380
+ },
1381
+ "controls": {
1382
+ "type": "boolean"
1383
+ },
1384
+ "fit": {
1385
+ "type": "string",
1386
+ "enum": [
1387
+ "contain",
1388
+ "cover",
1389
+ "fill"
1390
+ ]
1391
+ },
1392
+ "fx": {
1393
+ "$ref": "#/$defs/prop-fx"
1394
+ },
1395
+ "group": {
1396
+ "type": "string",
1397
+ "maxLength": 200,
1398
+ "pattern": "^[^\"'<>{};]*$"
1399
+ },
1400
+ "groupId": {
1401
+ "type": "string",
1402
+ "maxLength": 200,
1403
+ "pattern": "^[^\"'<>{};]*$"
1404
+ },
1405
+ "h": {
1406
+ "type": "number",
1407
+ "minimum": 0,
1408
+ "maximum": 1000000
1409
+ },
1410
+ "id": {
1411
+ "type": "string",
1412
+ "maxLength": 200,
1413
+ "pattern": "^[^\"'<>{};]*$"
1414
+ },
1415
+ "kind": {
1416
+ "type": "string",
1417
+ "enum": [
1418
+ "video",
1419
+ "audio"
1420
+ ]
1421
+ },
1422
+ "link": {
1423
+ "$ref": "#/$defs/prop-link"
1424
+ },
1425
+ "loop": {
1426
+ "type": "boolean"
1427
+ },
1428
+ "morphId": {
1429
+ "type": "string",
1430
+ "maxLength": 200,
1431
+ "pattern": "^[^\"'<>{};]*$"
1432
+ },
1433
+ "muted": {
1434
+ "type": "boolean"
1435
+ },
1436
+ "opacity": {
1437
+ "type": "number",
1438
+ "minimum": 0,
1439
+ "maximum": 1
1440
+ },
1441
+ "poster": {
1442
+ "type": "string",
1443
+ "maxLength": 33554432,
1444
+ "description": "data: URI, asset:<key> or URL"
1445
+ },
1446
+ "radius": {
1447
+ "type": "number",
1448
+ "minimum": 0,
1449
+ "maximum": 100000
1450
+ },
1451
+ "role": {
1452
+ "type": "string",
1453
+ "maxLength": 200,
1454
+ "pattern": "^[^\"'<>{};]*$"
1455
+ },
1456
+ "rotation": {
1457
+ "type": "number",
1458
+ "minimum": -3600,
1459
+ "maximum": 3600
1460
+ },
1461
+ "shadow": {
1462
+ "$ref": "#/$defs/prop-shadow"
1463
+ },
1464
+ "showOnHover": {
1465
+ "type": "string",
1466
+ "maxLength": 200,
1467
+ "pattern": "^[^\"'<>{};]*$"
1468
+ },
1469
+ "src": {
1470
+ "type": "string",
1471
+ "maxLength": 33554432,
1472
+ "description": "data: URI, asset:<key> or URL"
1473
+ },
1474
+ "themeRefs": {
1475
+ "$ref": "#/$defs/prop-themeRefs"
1476
+ },
1477
+ "type": {
1478
+ "const": "media"
1479
+ },
1480
+ "w": {
1481
+ "type": "number",
1482
+ "minimum": 0,
1483
+ "maximum": 1000000
1484
+ },
1485
+ "x": {
1486
+ "type": "number",
1487
+ "minimum": -1000000,
1488
+ "maximum": 1000000
1489
+ },
1490
+ "y": {
1491
+ "type": "number",
1492
+ "minimum": -1000000,
1493
+ "maximum": 1000000
1494
+ }
1495
+ },
1496
+ "additionalProperties": false,
1497
+ "required": [
1498
+ "type",
1499
+ "id",
1500
+ "kind",
1501
+ "src"
1502
+ ],
1503
+ "description": "media element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
1504
+ },
1505
+ "prop-doc": {
1506
+ "anyOf": [
1507
+ {
1508
+ "type": "string",
1509
+ "maxLength": 200
1510
+ },
1511
+ {
1512
+ "type": "object"
1513
+ }
1514
+ ]
1515
+ },
1516
+ "embed": {
1517
+ "type": "object",
1518
+ "properties": {
1519
+ "app": {
1520
+ "type": "string",
1521
+ "maxLength": 200,
1522
+ "pattern": "^[^\"'<>{};]*$"
1523
+ },
1524
+ "backdropFilter": {
1525
+ "type": "number",
1526
+ "minimum": 0,
1527
+ "maximum": 1000
1528
+ },
1529
+ "blend": {
1530
+ "type": "string",
1531
+ "maxLength": 64,
1532
+ "pattern": "^[^\"'<>{};]*$"
1533
+ },
1534
+ "blur": {
1535
+ "type": "number",
1536
+ "minimum": 0,
1537
+ "maximum": 1000
1538
+ },
1539
+ "doc": {
1540
+ "$ref": "#/$defs/prop-doc"
1541
+ },
1542
+ "fx": {
1543
+ "$ref": "#/$defs/prop-fx"
1544
+ },
1545
+ "group": {
1546
+ "type": "string",
1547
+ "maxLength": 200,
1548
+ "pattern": "^[^\"'<>{};]*$"
1549
+ },
1550
+ "groupId": {
1551
+ "type": "string",
1552
+ "maxLength": 200,
1553
+ "pattern": "^[^\"'<>{};]*$"
1554
+ },
1555
+ "h": {
1556
+ "type": "number",
1557
+ "minimum": 0,
1558
+ "maximum": 1000000
1559
+ },
1560
+ "id": {
1561
+ "type": "string",
1562
+ "maxLength": 200,
1563
+ "pattern": "^[^\"'<>{};]*$"
1564
+ },
1565
+ "link": {
1566
+ "$ref": "#/$defs/prop-link"
1567
+ },
1568
+ "live": {
1569
+ "type": "boolean"
1570
+ },
1571
+ "morphId": {
1572
+ "type": "string",
1573
+ "maxLength": 200,
1574
+ "pattern": "^[^\"'<>{};]*$"
1575
+ },
1576
+ "opacity": {
1577
+ "type": "number",
1578
+ "minimum": 0,
1579
+ "maximum": 1
1580
+ },
1581
+ "role": {
1582
+ "type": "string",
1583
+ "maxLength": 200,
1584
+ "pattern": "^[^\"'<>{};]*$"
1585
+ },
1586
+ "rotation": {
1587
+ "type": "number",
1588
+ "minimum": -3600,
1589
+ "maximum": 3600
1590
+ },
1591
+ "shadow": {
1592
+ "$ref": "#/$defs/prop-shadow"
1593
+ },
1594
+ "showOnHover": {
1595
+ "type": "string",
1596
+ "maxLength": 200,
1597
+ "pattern": "^[^\"'<>{};]*$"
1598
+ },
1599
+ "themeRefs": {
1600
+ "$ref": "#/$defs/prop-themeRefs"
1601
+ },
1602
+ "type": {
1603
+ "const": "embed"
1604
+ },
1605
+ "url": {
1606
+ "type": "string",
1607
+ "maxLength": 4000,
1608
+ "pattern": "^https?://"
1609
+ },
1610
+ "view": {
1611
+ "type": "string",
1612
+ "maxLength": 4194304
1613
+ },
1614
+ "w": {
1615
+ "type": "number",
1616
+ "minimum": 0,
1617
+ "maximum": 1000000
1618
+ },
1619
+ "x": {
1620
+ "type": "number",
1621
+ "minimum": -1000000,
1622
+ "maximum": 1000000
1623
+ },
1624
+ "y": {
1625
+ "type": "number",
1626
+ "minimum": -1000000,
1627
+ "maximum": 1000000
1628
+ }
1629
+ },
1630
+ "additionalProperties": false,
1631
+ "required": [
1632
+ "type",
1633
+ "id"
1634
+ ],
1635
+ "description": "embed element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
1636
+ },
1637
+ "code": {
1638
+ "type": "object",
1639
+ "properties": {
1640
+ "align": {
1641
+ "type": "string",
1642
+ "enum": [
1643
+ "left",
1644
+ "center",
1645
+ "right"
1646
+ ]
1647
+ },
1648
+ "backdropFilter": {
1649
+ "type": "number",
1650
+ "minimum": 0,
1651
+ "maximum": 1000
1652
+ },
1653
+ "blend": {
1654
+ "type": "string",
1655
+ "maxLength": 64,
1656
+ "pattern": "^[^\"'<>{};]*$"
1657
+ },
1658
+ "blur": {
1659
+ "type": "number",
1660
+ "minimum": 0,
1661
+ "maximum": 1000
1662
+ },
1663
+ "color": {
1664
+ "type": "string",
1665
+ "maxLength": 64,
1666
+ "description": "CSS colour; no url()"
1667
+ },
1668
+ "content": {
1669
+ "type": "string",
1670
+ "maxLength": 65536
1671
+ },
1672
+ "fontFamily": {
1673
+ "type": "string",
1674
+ "maxLength": 300
1675
+ },
1676
+ "fontSize": {
1677
+ "type": "number",
1678
+ "minimum": 0,
1679
+ "maximum": 4000
1680
+ },
1681
+ "fx": {
1682
+ "$ref": "#/$defs/prop-fx"
1683
+ },
1684
+ "grammarAssetId": {
1685
+ "type": "string",
1686
+ "maxLength": 200,
1687
+ "pattern": "^[^\"'<>{};]*$"
1688
+ },
1689
+ "grammarName": {
1690
+ "type": "string",
1691
+ "maxLength": 64,
1692
+ "pattern": "^[^\"'<>{};]*$"
1693
+ },
1694
+ "group": {
1695
+ "type": "string",
1696
+ "maxLength": 200,
1697
+ "pattern": "^[^\"'<>{};]*$"
1698
+ },
1699
+ "groupId": {
1700
+ "type": "string",
1701
+ "maxLength": 200,
1702
+ "pattern": "^[^\"'<>{};]*$"
1703
+ },
1704
+ "h": {
1705
+ "type": "number",
1706
+ "minimum": 0,
1707
+ "maximum": 1000000
1708
+ },
1709
+ "id": {
1710
+ "type": "string",
1711
+ "maxLength": 200,
1712
+ "pattern": "^[^\"'<>{};]*$"
1713
+ },
1714
+ "lineHeight": {
1715
+ "type": "number",
1716
+ "minimum": 0,
1717
+ "maximum": 100
1718
+ },
1719
+ "link": {
1720
+ "$ref": "#/$defs/prop-link"
1721
+ },
1722
+ "morphId": {
1723
+ "type": "string",
1724
+ "maxLength": 200,
1725
+ "pattern": "^[^\"'<>{};]*$"
1726
+ },
1727
+ "opacity": {
1728
+ "type": "number",
1729
+ "minimum": 0,
1730
+ "maximum": 1
1731
+ },
1732
+ "role": {
1733
+ "type": "string",
1734
+ "maxLength": 200,
1735
+ "pattern": "^[^\"'<>{};]*$"
1736
+ },
1737
+ "rotation": {
1738
+ "type": "number",
1739
+ "minimum": -3600,
1740
+ "maximum": 3600
1741
+ },
1742
+ "shadow": {
1743
+ "$ref": "#/$defs/prop-shadow"
1744
+ },
1745
+ "showOnHover": {
1746
+ "type": "string",
1747
+ "maxLength": 200,
1748
+ "pattern": "^[^\"'<>{};]*$"
1749
+ },
1750
+ "themeAssetId": {
1751
+ "type": "string",
1752
+ "maxLength": 200,
1753
+ "pattern": "^[^\"'<>{};]*$"
1754
+ },
1755
+ "themeName": {
1756
+ "type": "string",
1757
+ "maxLength": 64,
1758
+ "pattern": "^[^\"'<>{};]*$"
1759
+ },
1760
+ "themeRefs": {
1761
+ "$ref": "#/$defs/prop-themeRefs"
1762
+ },
1763
+ "type": {
1764
+ "const": "code"
1765
+ },
1766
+ "valign": {
1767
+ "type": "string",
1768
+ "enum": [
1769
+ "top",
1770
+ "middle",
1771
+ "bottom"
1772
+ ]
1773
+ },
1774
+ "w": {
1775
+ "type": "number",
1776
+ "minimum": 0,
1777
+ "maximum": 1000000
1778
+ },
1779
+ "x": {
1780
+ "type": "number",
1781
+ "minimum": -1000000,
1782
+ "maximum": 1000000
1783
+ },
1784
+ "y": {
1785
+ "type": "number",
1786
+ "minimum": -1000000,
1787
+ "maximum": 1000000
1788
+ }
1789
+ },
1790
+ "additionalProperties": false,
1791
+ "required": [
1792
+ "type",
1793
+ "id"
1794
+ ],
1795
+ "description": "code element; x/y/w/h in slide px (1280×720 default); a stable id pairs morphs"
1796
+ },
1797
+ "element": {
1798
+ "oneOf": [
1799
+ {
1800
+ "$ref": "#/$defs/text"
1801
+ },
1802
+ {
1803
+ "$ref": "#/$defs/shape"
1804
+ },
1805
+ {
1806
+ "$ref": "#/$defs/image"
1807
+ },
1808
+ {
1809
+ "$ref": "#/$defs/svg"
1810
+ },
1811
+ {
1812
+ "$ref": "#/$defs/chart"
1813
+ },
1814
+ {
1815
+ "$ref": "#/$defs/table"
1816
+ },
1817
+ {
1818
+ "$ref": "#/$defs/media"
1819
+ },
1820
+ {
1821
+ "$ref": "#/$defs/embed"
1822
+ },
1823
+ {
1824
+ "$ref": "#/$defs/code"
1825
+ }
1826
+ ]
1827
+ },
1828
+ "slide": {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "background": {
1832
+ "type": "string",
1833
+ "maxLength": 200,
1834
+ "description": "CSS colour; no url()"
1835
+ },
1836
+ "comments": {
1837
+ "type": "array",
1838
+ "maxItems": 500,
1839
+ "items": {
1840
+ "type": "object",
1841
+ "properties": {
1842
+ "at": {
1843
+ "type": "string",
1844
+ "maxLength": 200
1845
+ },
1846
+ "author": {
1847
+ "type": "string",
1848
+ "maxLength": 4000
1849
+ },
1850
+ "elementId": {
1851
+ "type": "string",
1852
+ "maxLength": 200,
1853
+ "pattern": "^[^\"'<>{};]*$"
1854
+ },
1855
+ "id": {
1856
+ "type": "string",
1857
+ "maxLength": 200,
1858
+ "pattern": "^[^\"'<>{};]*$"
1859
+ },
1860
+ "replies": {
1861
+ "type": "array",
1862
+ "maxItems": 500,
1863
+ "items": {
1864
+ "type": "object",
1865
+ "properties": {
1866
+ "id": {
1867
+ "type": "string",
1868
+ "maxLength": 200,
1869
+ "pattern": "^[^\"'<>{};]*$"
1870
+ },
1871
+ "author": {
1872
+ "type": "string",
1873
+ "maxLength": 4000
1874
+ },
1875
+ "text": {
1876
+ "type": "string",
1877
+ "maxLength": 4000
1878
+ },
1879
+ "at": {
1880
+ "type": "string",
1881
+ "maxLength": 200
1882
+ }
1883
+ },
1884
+ "additionalProperties": false
1885
+ }
1886
+ },
1887
+ "resolved": {
1888
+ "type": "boolean"
1889
+ },
1890
+ "text": {
1891
+ "type": "string",
1892
+ "maxLength": 4000
1893
+ },
1894
+ "x": {
1895
+ "type": "number",
1896
+ "minimum": -1000000,
1897
+ "maximum": 1000000
1898
+ },
1899
+ "y": {
1900
+ "type": "number",
1901
+ "minimum": -1000000,
1902
+ "maximum": 1000000
1903
+ }
1904
+ },
1905
+ "additionalProperties": false
1906
+ }
1907
+ },
1908
+ "elements": {
1909
+ "type": "array",
1910
+ "maxItems": 5000,
1911
+ "items": {
1912
+ "$ref": "#/$defs/element"
1913
+ }
1914
+ },
1915
+ "hidden": {
1916
+ "type": "boolean"
1917
+ },
1918
+ "hover": {
1919
+ "type": "object",
1920
+ "properties": {
1921
+ "type": {
1922
+ "type": "string",
1923
+ "enum": [
1924
+ "focus-group",
1925
+ "reveal"
1926
+ ]
1927
+ },
1928
+ "dim": {
1929
+ "type": "number",
1930
+ "minimum": 0,
1931
+ "maximum": 1
1932
+ },
1933
+ "default": {
1934
+ "type": "string",
1935
+ "maxLength": 200,
1936
+ "pattern": "^[^\"'<>{};]*$"
1937
+ }
1938
+ },
1939
+ "additionalProperties": false,
1940
+ "required": [
1941
+ "type"
1942
+ ]
1943
+ },
1944
+ "id": {
1945
+ "type": "string",
1946
+ "maxLength": 200,
1947
+ "pattern": "^[^\"'<>{};]*$"
1948
+ },
1949
+ "name": {
1950
+ "type": "string",
1951
+ "maxLength": 4000
1952
+ },
1953
+ "notes": {
1954
+ "type": "string",
1955
+ "maxLength": 65536
1956
+ },
1957
+ "stateOf": {
1958
+ "type": "string",
1959
+ "maxLength": 200,
1960
+ "pattern": "^[^\"'<>{};]*$"
1961
+ },
1962
+ "themeRefs": {
1963
+ "type": "object",
1964
+ "additionalProperties": {
1965
+ "type": "string"
1966
+ },
1967
+ "maxProperties": 64,
1968
+ "description": "property path → palette token"
1969
+ },
1970
+ "transition": {
1971
+ "type": "string",
1972
+ "enum": [
1973
+ "none",
1974
+ "fade",
1975
+ "slide",
1976
+ "zoom",
1977
+ "morph"
1978
+ ]
1979
+ },
1980
+ "unnumbered": {
1981
+ "type": "boolean"
1982
+ }
1983
+ },
1984
+ "additionalProperties": false,
1985
+ "required": [
1986
+ "id"
1987
+ ],
1988
+ "description": "stateOf = hidden variant reached by a link; transition morph pairs same-id elements"
1989
+ },
1990
+ "tableStyle": {
1991
+ "type": "object",
1992
+ "properties": {
1993
+ "borderColor": {
1994
+ "type": "string",
1995
+ "maxLength": 64,
1996
+ "description": "CSS colour; no url()"
1997
+ },
1998
+ "borderWidth": {
1999
+ "type": "number",
2000
+ "minimum": 0,
2001
+ "maximum": 1000
2002
+ },
2003
+ "cellPadX": {
2004
+ "type": "number",
2005
+ "minimum": 0,
2006
+ "maximum": 1000
2007
+ },
2008
+ "cellPadY": {
2009
+ "type": "number",
2010
+ "minimum": 0,
2011
+ "maximum": 1000
2012
+ },
2013
+ "color": {
2014
+ "type": "string",
2015
+ "maxLength": 64,
2016
+ "description": "CSS colour; no url()"
2017
+ },
2018
+ "fontFamily": {
2019
+ "type": "string",
2020
+ "maxLength": 300
2021
+ },
2022
+ "fontSize": {
2023
+ "type": "number",
2024
+ "minimum": 0,
2025
+ "maximum": 4000
2026
+ },
2027
+ "headerBg": {
2028
+ "type": "string",
2029
+ "maxLength": 64,
2030
+ "description": "CSS colour; no url()"
2031
+ },
2032
+ "headerColor": {
2033
+ "type": "string",
2034
+ "maxLength": 64,
2035
+ "description": "CSS colour; no url()"
2036
+ },
2037
+ "radius": {
2038
+ "type": "number",
2039
+ "minimum": 0,
2040
+ "maximum": 100000
2041
+ },
2042
+ "zebra": {
2043
+ "type": "string",
2044
+ "maxLength": 64,
2045
+ "description": "CSS colour; no url()"
2046
+ }
2047
+ },
2048
+ "additionalProperties": false
2049
+ },
2050
+ "theme": {
2051
+ "type": "object",
2052
+ "properties": {
2053
+ "accent": {
2054
+ "type": "string",
2055
+ "maxLength": 64,
2056
+ "description": "accent colour"
2057
+ },
2058
+ "background": {
2059
+ "type": "string",
2060
+ "maxLength": 64,
2061
+ "description": "slide background"
2062
+ },
2063
+ "chartPalette": {
2064
+ "type": "array",
2065
+ "maxItems": 64,
2066
+ "items": {
2067
+ "type": "string",
2068
+ "maxLength": 64,
2069
+ "description": "series colour"
2070
+ }
2071
+ },
2072
+ "codePalette": {
2073
+ "type": "object",
2074
+ "properties": {
2075
+ "a": {
2076
+ "type": "string",
2077
+ "maxLength": 64,
2078
+ "description": "token colour"
2079
+ },
2080
+ "c": {
2081
+ "type": "string",
2082
+ "maxLength": 64,
2083
+ "description": "token colour"
2084
+ },
2085
+ "d": {
2086
+ "type": "string",
2087
+ "maxLength": 64,
2088
+ "description": "token colour"
2089
+ },
2090
+ "f": {
2091
+ "type": "string",
2092
+ "maxLength": 64,
2093
+ "description": "token colour"
2094
+ },
2095
+ "k": {
2096
+ "type": "string",
2097
+ "maxLength": 64,
2098
+ "description": "token colour"
2099
+ },
2100
+ "n": {
2101
+ "type": "string",
2102
+ "maxLength": 64,
2103
+ "description": "token colour"
2104
+ },
2105
+ "p": {
2106
+ "type": "string",
2107
+ "maxLength": 64,
2108
+ "description": "token colour"
2109
+ },
2110
+ "s": {
2111
+ "type": "string",
2112
+ "maxLength": 64,
2113
+ "description": "token colour"
2114
+ }
2115
+ },
2116
+ "additionalProperties": false
2117
+ },
2118
+ "color": {
2119
+ "type": "string",
2120
+ "maxLength": 64,
2121
+ "description": "body text colour"
2122
+ },
2123
+ "fontFamily": {
2124
+ "type": "string",
2125
+ "maxLength": 300,
2126
+ "description": "CSS font-family stack for body text"
2127
+ },
2128
+ "headingFamily": {
2129
+ "type": "string",
2130
+ "maxLength": 300,
2131
+ "description": "display face for headings; absent = fontFamily"
2132
+ },
2133
+ "palette": {
2134
+ "type": "object",
2135
+ "properties": {
2136
+ "accent2": {
2137
+ "type": "string",
2138
+ "maxLength": 64,
2139
+ "description": "brand slot accent2"
2140
+ },
2141
+ "accent3": {
2142
+ "type": "string",
2143
+ "maxLength": 64,
2144
+ "description": "brand slot accent3"
2145
+ },
2146
+ "accent4": {
2147
+ "type": "string",
2148
+ "maxLength": 64,
2149
+ "description": "brand slot accent4"
2150
+ },
2151
+ "accent5": {
2152
+ "type": "string",
2153
+ "maxLength": 64,
2154
+ "description": "brand slot accent5"
2155
+ },
2156
+ "accent6": {
2157
+ "type": "string",
2158
+ "maxLength": 64,
2159
+ "description": "brand slot accent6"
2160
+ },
2161
+ "bg2": {
2162
+ "type": "string",
2163
+ "maxLength": 64,
2164
+ "description": "brand slot bg2"
2165
+ },
2166
+ "folHlink": {
2167
+ "type": "string",
2168
+ "maxLength": 64,
2169
+ "description": "brand slot folHlink"
2170
+ },
2171
+ "hlink": {
2172
+ "type": "string",
2173
+ "maxLength": 64,
2174
+ "description": "brand slot hlink"
2175
+ },
2176
+ "tx2": {
2177
+ "type": "string",
2178
+ "maxLength": 64,
2179
+ "description": "brand slot tx2"
2180
+ }
2181
+ },
2182
+ "additionalProperties": false
2183
+ },
2184
+ "table": {
2185
+ "$ref": "#/$defs/tableStyle"
2186
+ }
2187
+ },
2188
+ "additionalProperties": false,
2189
+ "required": [
2190
+ "background",
2191
+ "color",
2192
+ "accent",
2193
+ "fontFamily"
2194
+ ]
2195
+ },
2196
+ "doc": {
2197
+ "type": "object",
2198
+ "properties": {
2199
+ "assets": {
2200
+ "type": "object",
2201
+ "maxProperties": 2000,
2202
+ "additionalProperties": {
2203
+ "type": "string",
2204
+ "maxLength": 33554432
2205
+ },
2206
+ "description": "key → data: URI or svg, used as asset:<key>"
2207
+ },
2208
+ "blobs": {
2209
+ "type": "object",
2210
+ "description": "runtime-written"
2211
+ },
2212
+ "collab": {
2213
+ "type": "object",
2214
+ "description": "runtime-written credentials; never author"
2215
+ },
2216
+ "docId": {
2217
+ "type": "string",
2218
+ "maxLength": 200,
2219
+ "description": "runtime-minted uuid; omit"
2220
+ },
2221
+ "fonts": {
2222
+ "type": "array",
2223
+ "maxItems": 2000,
2224
+ "items": {
2225
+ "type": "object",
2226
+ "properties": {
2227
+ "asset": {
2228
+ "type": "string",
2229
+ "maxLength": 200,
2230
+ "description": "asset:<key> or builtin:<name>"
2231
+ },
2232
+ "family": {
2233
+ "type": "string",
2234
+ "maxLength": 300
2235
+ },
2236
+ "style": {
2237
+ "type": "string",
2238
+ "maxLength": 64
2239
+ },
2240
+ "weight": {
2241
+ "type": "string",
2242
+ "maxLength": 64
2243
+ }
2244
+ },
2245
+ "additionalProperties": false,
2246
+ "required": [
2247
+ "family",
2248
+ "asset"
2249
+ ]
2250
+ }
2251
+ },
2252
+ "format": {
2253
+ "const": "bento/slides"
2254
+ },
2255
+ "layouts": {
2256
+ "type": "array",
2257
+ "maxItems": 500,
2258
+ "items": {
2259
+ "$ref": "#/$defs/slide"
2260
+ },
2261
+ "description": "slide templates"
2262
+ },
2263
+ "meta": {
2264
+ "type": "object",
2265
+ "properties": {
2266
+ "author": {
2267
+ "type": "string",
2268
+ "maxLength": 4000
2269
+ },
2270
+ "company": {
2271
+ "type": "string",
2272
+ "maxLength": 4000
2273
+ },
2274
+ "event": {
2275
+ "type": "string",
2276
+ "maxLength": 4000
2277
+ },
2278
+ "keywords": {
2279
+ "type": "string",
2280
+ "maxLength": 4000
2281
+ },
2282
+ "subject": {
2283
+ "type": "string",
2284
+ "maxLength": 4000
2285
+ }
2286
+ },
2287
+ "additionalProperties": false
2288
+ },
2289
+ "modified": {
2290
+ "type": "string",
2291
+ "maxLength": 200,
2292
+ "description": "runtime-written"
2293
+ },
2294
+ "present": {
2295
+ "type": "object",
2296
+ "properties": {
2297
+ "controls": {
2298
+ "type": "boolean"
2299
+ },
2300
+ "morphSeconds": {
2301
+ "type": "number",
2302
+ "minimum": 0,
2303
+ "maximum": 60
2304
+ },
2305
+ "numberHidden": {
2306
+ "type": "boolean"
2307
+ },
2308
+ "progress": {
2309
+ "type": "boolean"
2310
+ },
2311
+ "slideNumber": {
2312
+ "type": "boolean"
2313
+ }
2314
+ },
2315
+ "additionalProperties": false
2316
+ },
2317
+ "readonly": {
2318
+ "type": "boolean",
2319
+ "description": "presentation package"
2320
+ },
2321
+ "size": {
2322
+ "type": "object",
2323
+ "properties": {
2324
+ "height": {
2325
+ "type": "number",
2326
+ "minimum": 1,
2327
+ "maximum": 100000
2328
+ },
2329
+ "width": {
2330
+ "type": "number",
2331
+ "minimum": 1,
2332
+ "maximum": 100000
2333
+ }
2334
+ },
2335
+ "additionalProperties": false,
2336
+ "required": [
2337
+ "width",
2338
+ "height"
2339
+ ]
2340
+ },
2341
+ "slides": {
2342
+ "type": "array",
2343
+ "minItems": 1,
2344
+ "maxItems": 500,
2345
+ "items": {
2346
+ "$ref": "#/$defs/slide"
2347
+ }
2348
+ },
2349
+ "template": {
2350
+ "type": "boolean"
2351
+ },
2352
+ "theme": {
2353
+ "$ref": "#/$defs/theme"
2354
+ },
2355
+ "title": {
2356
+ "type": "string",
2357
+ "maxLength": 4000
2358
+ },
2359
+ "version": {
2360
+ "type": "integer",
2361
+ "minimum": 1,
2362
+ "description": "format version; this shell writes 1"
2363
+ },
2364
+ "$schema": {
2365
+ "type": "string"
2366
+ },
2367
+ "compact": {
2368
+ "const": true,
2369
+ "description": "input only: omitted fields take editor defaults (AGENTS.md)"
2370
+ }
2371
+ },
2372
+ "additionalProperties": false,
2373
+ "required": [
2374
+ "format",
2375
+ "slides"
2376
+ ]
2377
+ }
2378
+ }
2379
+ }