@fieldia/core 0.9.2 → 0.10.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 (208) hide show
  1. package/package.json +1 -1
  2. package/schema/page.schema.json +1128 -89
  3. package/src/lib/expression/evaluator.d.mts +6 -5
  4. package/src/lib/expression/evaluator.d.ts +6 -5
  5. package/src/lib/expression/evaluator.js +37 -22
  6. package/src/lib/expression/evaluator.js.map +1 -1
  7. package/src/lib/expression/evaluator.mjs +32 -18
  8. package/src/lib/expression/evaluator.mjs.map +1 -1
  9. package/src/lib/expression/expression.d.mts +21 -0
  10. package/src/lib/expression/expression.d.ts +21 -0
  11. package/src/lib/expression/expression.js +29 -0
  12. package/src/lib/expression/expression.js.map +1 -0
  13. package/src/lib/expression/expression.mjs +26 -0
  14. package/src/lib/expression/expression.mjs.map +1 -0
  15. package/src/lib/expression/extractFieldNames.js +6 -1
  16. package/src/lib/expression/extractFieldNames.js.map +1 -1
  17. package/src/lib/expression/extractFieldNames.mjs +6 -1
  18. package/src/lib/expression/extractFieldNames.mjs.map +1 -1
  19. package/src/lib/expression/functions.d.mts +35 -0
  20. package/src/lib/expression/functions.d.ts +35 -0
  21. package/src/lib/expression/functions.js +129 -0
  22. package/src/lib/expression/functions.js.map +1 -0
  23. package/src/lib/expression/functions.mjs +124 -0
  24. package/src/lib/expression/functions.mjs.map +1 -0
  25. package/src/lib/expression/modifier.d.mts +3 -1
  26. package/src/lib/expression/modifier.d.ts +3 -1
  27. package/src/lib/expression/modifier.js +4 -27
  28. package/src/lib/expression/modifier.js.map +1 -1
  29. package/src/lib/expression/modifier.mjs +3 -26
  30. package/src/lib/expression/modifier.mjs.map +1 -1
  31. package/src/lib/expression/operations.d.mts +25 -0
  32. package/src/lib/expression/operations.d.ts +25 -0
  33. package/src/lib/expression/operations.js +81 -0
  34. package/src/lib/expression/operations.js.map +1 -0
  35. package/src/lib/expression/operations.mjs +72 -0
  36. package/src/lib/expression/operations.mjs.map +1 -0
  37. package/src/lib/expression/order.d.mts +11 -0
  38. package/src/lib/expression/order.d.ts +11 -0
  39. package/src/lib/expression/order.js +36 -0
  40. package/src/lib/expression/order.js.map +1 -0
  41. package/src/lib/expression/order.mjs +33 -0
  42. package/src/lib/expression/order.mjs.map +1 -0
  43. package/src/lib/expression/parser.d.mts +34 -4
  44. package/src/lib/expression/parser.d.ts +34 -4
  45. package/src/lib/expression/parser.js +72 -6
  46. package/src/lib/expression/parser.js.map +1 -1
  47. package/src/lib/expression/parser.mjs +72 -6
  48. package/src/lib/expression/parser.mjs.map +1 -1
  49. package/src/lib/expression/reads.d.mts +8 -0
  50. package/src/lib/expression/reads.d.ts +8 -0
  51. package/src/lib/expression/reads.js +48 -0
  52. package/src/lib/expression/reads.js.map +1 -0
  53. package/src/lib/expression/reads.mjs +44 -0
  54. package/src/lib/expression/reads.mjs.map +1 -0
  55. package/src/lib/expression/tokenizer.d.mts +7 -6
  56. package/src/lib/expression/tokenizer.d.ts +7 -6
  57. package/src/lib/expression/tokenizer.js +28 -18
  58. package/src/lib/expression/tokenizer.js.map +1 -1
  59. package/src/lib/expression/tokenizer.mjs +28 -18
  60. package/src/lib/expression/tokenizer.mjs.map +1 -1
  61. package/src/lib/format/field.d.mts +686 -5
  62. package/src/lib/format/field.d.ts +686 -5
  63. package/src/lib/format/field.js +115 -13
  64. package/src/lib/format/field.js.map +1 -1
  65. package/src/lib/format/field.mjs +114 -12
  66. package/src/lib/format/field.mjs.map +1 -1
  67. package/src/lib/format/layout.d.mts +388 -10
  68. package/src/lib/format/layout.d.ts +388 -10
  69. package/src/lib/format/layout.js +50 -3
  70. package/src/lib/format/layout.js.map +1 -1
  71. package/src/lib/format/layout.mjs +49 -2
  72. package/src/lib/format/layout.mjs.map +1 -1
  73. package/src/lib/format/names.d.mts +1 -1
  74. package/src/lib/format/names.d.ts +1 -1
  75. package/src/lib/format/names.js +1 -0
  76. package/src/lib/format/names.js.map +1 -1
  77. package/src/lib/format/names.mjs +1 -0
  78. package/src/lib/format/names.mjs.map +1 -1
  79. package/src/lib/format/page.d.mts +391 -4
  80. package/src/lib/format/page.d.ts +391 -4
  81. package/src/lib/format/page.js +13 -0
  82. package/src/lib/format/page.js.map +1 -1
  83. package/src/lib/format/page.mjs +13 -0
  84. package/src/lib/format/page.mjs.map +1 -1
  85. package/src/lib/format/references.d.mts +14 -1
  86. package/src/lib/format/references.d.ts +14 -1
  87. package/src/lib/format/references.js +96 -8
  88. package/src/lib/format/references.js.map +1 -1
  89. package/src/lib/format/references.mjs +96 -8
  90. package/src/lib/format/references.mjs.map +1 -1
  91. package/src/lib/format/translate.d.mts +20 -0
  92. package/src/lib/format/translate.d.ts +20 -0
  93. package/src/lib/format/translate.js +79 -21
  94. package/src/lib/format/translate.js.map +1 -1
  95. package/src/lib/format/translate.mjs +76 -21
  96. package/src/lib/format/translate.mjs.map +1 -1
  97. package/src/lib/record/check.d.mts +19 -1
  98. package/src/lib/record/check.d.ts +19 -1
  99. package/src/lib/record/check.js +84 -21
  100. package/src/lib/record/check.js.map +1 -1
  101. package/src/lib/record/check.mjs +82 -21
  102. package/src/lib/record/check.mjs.map +1 -1
  103. package/src/lib/record/compute.d.mts +24 -0
  104. package/src/lib/record/compute.d.ts +24 -0
  105. package/src/lib/record/compute.js +107 -0
  106. package/src/lib/record/compute.js.map +1 -0
  107. package/src/lib/record/compute.mjs +103 -0
  108. package/src/lib/record/compute.mjs.map +1 -0
  109. package/src/lib/record/data-source.d.mts +9 -1
  110. package/src/lib/record/data-source.d.ts +9 -1
  111. package/src/lib/record/data-source.js.map +1 -1
  112. package/src/lib/record/data-source.mjs.map +1 -1
  113. package/src/lib/record/env.d.mts +9 -0
  114. package/src/lib/record/env.d.ts +9 -0
  115. package/src/lib/record/env.js +28 -0
  116. package/src/lib/record/env.js.map +1 -0
  117. package/src/lib/record/env.mjs +25 -0
  118. package/src/lib/record/env.mjs.map +1 -0
  119. package/src/lib/record/form.d.mts +24 -0
  120. package/src/lib/record/form.d.ts +24 -0
  121. package/src/lib/record/form.js +160 -32
  122. package/src/lib/record/form.js.map +1 -1
  123. package/src/lib/record/form.mjs +160 -32
  124. package/src/lib/record/form.mjs.map +1 -1
  125. package/src/lib/record/inputs.d.mts +5 -0
  126. package/src/lib/record/inputs.d.ts +5 -0
  127. package/src/lib/record/inputs.js +47 -0
  128. package/src/lib/record/inputs.js.map +1 -0
  129. package/src/lib/record/inputs.mjs +44 -0
  130. package/src/lib/record/inputs.mjs.map +1 -0
  131. package/src/lib/record/limits.d.mts +13 -0
  132. package/src/lib/record/limits.d.ts +13 -0
  133. package/src/lib/record/limits.js +45 -0
  134. package/src/lib/record/limits.js.map +1 -0
  135. package/src/lib/record/limits.mjs +41 -0
  136. package/src/lib/record/limits.mjs.map +1 -0
  137. package/src/lib/record/locales/all.d.mts +7 -0
  138. package/src/lib/record/locales/all.d.ts +7 -0
  139. package/src/lib/record/locales/all.js +13 -0
  140. package/src/lib/record/locales/all.js.map +1 -0
  141. package/src/lib/record/locales/all.mjs +10 -0
  142. package/src/lib/record/locales/all.mjs.map +1 -0
  143. package/src/lib/record/locales/ar.d.mts +3 -0
  144. package/src/lib/record/locales/ar.d.ts +3 -0
  145. package/src/lib/record/locales/ar.js +55 -0
  146. package/src/lib/record/locales/ar.js.map +1 -0
  147. package/src/lib/record/locales/ar.mjs +52 -0
  148. package/src/lib/record/locales/ar.mjs.map +1 -0
  149. package/src/lib/record/locales/de.d.mts +3 -0
  150. package/src/lib/record/locales/de.d.ts +3 -0
  151. package/src/lib/record/locales/de.js +55 -0
  152. package/src/lib/record/locales/de.js.map +1 -0
  153. package/src/lib/record/locales/de.mjs +52 -0
  154. package/src/lib/record/locales/de.mjs.map +1 -0
  155. package/src/lib/record/locales/fr.d.mts +3 -0
  156. package/src/lib/record/locales/fr.d.ts +3 -0
  157. package/src/lib/record/locales/fr.js +55 -0
  158. package/src/lib/record/locales/fr.js.map +1 -0
  159. package/src/lib/record/locales/fr.mjs +52 -0
  160. package/src/lib/record/locales/fr.mjs.map +1 -0
  161. package/src/lib/record/memory-data-source.d.mts +3 -0
  162. package/src/lib/record/memory-data-source.d.ts +3 -0
  163. package/src/lib/record/memory-data-source.js +8 -0
  164. package/src/lib/record/memory-data-source.js.map +1 -1
  165. package/src/lib/record/memory-data-source.mjs +8 -0
  166. package/src/lib/record/memory-data-source.mjs.map +1 -1
  167. package/src/lib/record/messages.d.mts +46 -0
  168. package/src/lib/record/messages.d.ts +46 -0
  169. package/src/lib/record/messages.js +58 -101
  170. package/src/lib/record/messages.js.map +1 -1
  171. package/src/lib/record/messages.mjs +58 -101
  172. package/src/lib/record/messages.mjs.map +1 -1
  173. package/src/lib/record/rules.d.mts +33 -0
  174. package/src/lib/record/rules.d.ts +33 -0
  175. package/src/lib/record/rules.js +83 -0
  176. package/src/lib/record/rules.js.map +1 -0
  177. package/src/lib/record/rules.mjs +79 -0
  178. package/src/lib/record/rules.mjs.map +1 -0
  179. package/src/lib/record/score.d.mts +16 -0
  180. package/src/lib/record/score.d.ts +16 -0
  181. package/src/lib/record/score.js +35 -0
  182. package/src/lib/record/score.js.map +1 -0
  183. package/src/lib/record/score.mjs +32 -0
  184. package/src/lib/record/score.mjs.map +1 -0
  185. package/src/lib/record/set-when.d.mts +24 -0
  186. package/src/lib/record/set-when.d.ts +24 -0
  187. package/src/lib/record/set-when.js +68 -0
  188. package/src/lib/record/set-when.js.map +1 -0
  189. package/src/lib/record/set-when.mjs +65 -0
  190. package/src/lib/record/set-when.mjs.map +1 -0
  191. package/src/lib/record/structures.d.mts +14 -0
  192. package/src/lib/record/structures.d.ts +14 -0
  193. package/src/lib/record/structures.js +32 -0
  194. package/src/lib/record/structures.js.map +1 -0
  195. package/src/lib/record/structures.mjs +28 -0
  196. package/src/lib/record/structures.mjs.map +1 -0
  197. package/src/lib/record/values.d.mts +10 -5
  198. package/src/lib/record/values.d.ts +10 -5
  199. package/src/lib/record/values.js +20 -6
  200. package/src/lib/record/values.js.map +1 -1
  201. package/src/lib/record/values.mjs +19 -6
  202. package/src/lib/record/values.mjs.map +1 -1
  203. package/src/runtime.d.mts +10 -7
  204. package/src/runtime.d.ts +10 -7
  205. package/src/runtime.js +12 -1
  206. package/src/runtime.js.map +1 -1
  207. package/src/runtime.mjs +5 -2
  208. package/src/runtime.mjs.map +1 -1
@@ -79,6 +79,81 @@
79
79
  "top",
80
80
  "bottom"
81
81
  ]
82
+ },
83
+ "look": {
84
+ "type": "object",
85
+ "properties": {
86
+ "accent": {
87
+ "type": "string",
88
+ "pattern": "^#[0-9a-fA-F]{6}$"
89
+ },
90
+ "font": {
91
+ "type": "string",
92
+ "enum": [
93
+ "system",
94
+ "serif",
95
+ "rounded"
96
+ ]
97
+ },
98
+ "density": {
99
+ "type": "string",
100
+ "enum": [
101
+ "compact",
102
+ "comfortable",
103
+ "roomy"
104
+ ]
105
+ },
106
+ "corners": {
107
+ "type": "string",
108
+ "enum": [
109
+ "square",
110
+ "soft",
111
+ "round"
112
+ ]
113
+ },
114
+ "labels": {
115
+ "type": "string",
116
+ "enum": [
117
+ "above",
118
+ "beside",
119
+ "hidden"
120
+ ]
121
+ },
122
+ "labelWidth": {
123
+ "type": "integer",
124
+ "minimum": 60,
125
+ "maximum": 320
126
+ },
127
+ "scheme": {
128
+ "type": "string",
129
+ "enum": [
130
+ "light",
131
+ "dark",
132
+ "auto"
133
+ ]
134
+ }
135
+ },
136
+ "additionalProperties": false
137
+ },
138
+ "language": {
139
+ "type": "string",
140
+ "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
141
+ },
142
+ "translations": {
143
+ "type": "object",
144
+ "propertyNames": {
145
+ "type": "string",
146
+ "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
147
+ },
148
+ "additionalProperties": {
149
+ "type": "object",
150
+ "propertyNames": {
151
+ "type": "string"
152
+ },
153
+ "additionalProperties": {
154
+ "type": "string"
155
+ }
156
+ }
82
157
  }
83
158
  },
84
159
  "required": [
@@ -116,6 +191,17 @@
116
191
  "default": {
117
192
  "$ref": "#/$defs/JsonValue"
118
193
  },
194
+ "compute": {
195
+ "type": "string",
196
+ "minLength": 1
197
+ },
198
+ "setWhen": {
199
+ "minItems": 1,
200
+ "type": "array",
201
+ "items": {
202
+ "$ref": "#/$defs/SetWhen"
203
+ }
204
+ },
119
205
  "size": {
120
206
  "type": "integer",
121
207
  "exclusiveMinimum": 0,
@@ -153,6 +239,17 @@
153
239
  "default": {
154
240
  "$ref": "#/$defs/JsonValue"
155
241
  },
242
+ "compute": {
243
+ "type": "string",
244
+ "minLength": 1
245
+ },
246
+ "setWhen": {
247
+ "minItems": 1,
248
+ "type": "array",
249
+ "items": {
250
+ "$ref": "#/$defs/SetWhen"
251
+ }
252
+ },
156
253
  "size": {
157
254
  "type": "integer",
158
255
  "exclusiveMinimum": 0,
@@ -186,6 +283,17 @@
186
283
  },
187
284
  "default": {
188
285
  "$ref": "#/$defs/JsonValue"
286
+ },
287
+ "compute": {
288
+ "type": "string",
289
+ "minLength": 1
290
+ },
291
+ "setWhen": {
292
+ "minItems": 1,
293
+ "type": "array",
294
+ "items": {
295
+ "$ref": "#/$defs/SetWhen"
296
+ }
189
297
  }
190
298
  },
191
299
  "required": [
@@ -216,6 +324,17 @@
216
324
  "default": {
217
325
  "$ref": "#/$defs/JsonValue"
218
326
  },
327
+ "compute": {
328
+ "type": "string",
329
+ "minLength": 1
330
+ },
331
+ "setWhen": {
332
+ "minItems": 1,
333
+ "type": "array",
334
+ "items": {
335
+ "$ref": "#/$defs/SetWhen"
336
+ }
337
+ },
219
338
  "min": {
220
339
  "type": "number"
221
340
  },
@@ -251,6 +370,17 @@
251
370
  "default": {
252
371
  "$ref": "#/$defs/JsonValue"
253
372
  },
373
+ "compute": {
374
+ "type": "string",
375
+ "minLength": 1
376
+ },
377
+ "setWhen": {
378
+ "minItems": 1,
379
+ "type": "array",
380
+ "items": {
381
+ "$ref": "#/$defs/SetWhen"
382
+ }
383
+ },
254
384
  "min": {
255
385
  "type": "number"
256
386
  },
@@ -304,6 +434,17 @@
304
434
  "default": {
305
435
  "$ref": "#/$defs/JsonValue"
306
436
  },
437
+ "compute": {
438
+ "type": "string",
439
+ "minLength": 1
440
+ },
441
+ "setWhen": {
442
+ "minItems": 1,
443
+ "type": "array",
444
+ "items": {
445
+ "$ref": "#/$defs/SetWhen"
446
+ }
447
+ },
307
448
  "currencyField": {
308
449
  "type": "string",
309
450
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
@@ -364,6 +505,17 @@
364
505
  },
365
506
  "default": {
366
507
  "$ref": "#/$defs/JsonValue"
508
+ },
509
+ "compute": {
510
+ "type": "string",
511
+ "minLength": 1
512
+ },
513
+ "setWhen": {
514
+ "minItems": 1,
515
+ "type": "array",
516
+ "items": {
517
+ "$ref": "#/$defs/SetWhen"
518
+ }
367
519
  }
368
520
  },
369
521
  "required": [
@@ -393,6 +545,34 @@
393
545
  },
394
546
  "default": {
395
547
  "$ref": "#/$defs/JsonValue"
548
+ },
549
+ "compute": {
550
+ "type": "string",
551
+ "minLength": 1
552
+ },
553
+ "setWhen": {
554
+ "minItems": 1,
555
+ "type": "array",
556
+ "items": {
557
+ "$ref": "#/$defs/SetWhen"
558
+ }
559
+ },
560
+ "min": {
561
+ "type": "string",
562
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
563
+ },
564
+ "max": {
565
+ "type": "string",
566
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
567
+ },
568
+ "days": {
569
+ "minItems": 1,
570
+ "type": "array",
571
+ "items": {
572
+ "type": "integer",
573
+ "minimum": 1,
574
+ "maximum": 7
575
+ }
396
576
  }
397
577
  },
398
578
  "required": [
@@ -422,6 +602,34 @@
422
602
  },
423
603
  "default": {
424
604
  "$ref": "#/$defs/JsonValue"
605
+ },
606
+ "compute": {
607
+ "type": "string",
608
+ "minLength": 1
609
+ },
610
+ "setWhen": {
611
+ "minItems": 1,
612
+ "type": "array",
613
+ "items": {
614
+ "$ref": "#/$defs/SetWhen"
615
+ }
616
+ },
617
+ "min": {
618
+ "type": "string",
619
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
620
+ },
621
+ "max": {
622
+ "type": "string",
623
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
624
+ },
625
+ "days": {
626
+ "minItems": 1,
627
+ "type": "array",
628
+ "items": {
629
+ "type": "integer",
630
+ "minimum": 1,
631
+ "maximum": 7
632
+ }
425
633
  }
426
634
  },
427
635
  "required": [
@@ -452,8 +660,18 @@
452
660
  "default": {
453
661
  "$ref": "#/$defs/JsonValue"
454
662
  },
455
- "options": {
663
+ "compute": {
664
+ "type": "string",
665
+ "minLength": 1
666
+ },
667
+ "setWhen": {
456
668
  "minItems": 1,
669
+ "type": "array",
670
+ "items": {
671
+ "$ref": "#/$defs/SetWhen"
672
+ }
673
+ },
674
+ "options": {
457
675
  "type": "array",
458
676
  "items": {
459
677
  "$ref": "#/$defs/Option"
@@ -461,6 +679,15 @@
461
679
  },
462
680
  "multiple": {
463
681
  "type": "boolean"
682
+ },
683
+ "other": {
684
+ "type": "boolean"
685
+ },
686
+ "ownAnswers": {
687
+ "type": "boolean"
688
+ },
689
+ "optionsFrom": {
690
+ "$ref": "#/$defs/OptionsFrom"
464
691
  }
465
692
  },
466
693
  "required": [
@@ -468,7 +695,21 @@
468
695
  "label",
469
696
  "options"
470
697
  ],
471
- "additionalProperties": false
698
+ "additionalProperties": false,
699
+ "anyOf": [
700
+ {
701
+ "properties": {
702
+ "options": {
703
+ "minItems": 1
704
+ }
705
+ }
706
+ },
707
+ {
708
+ "required": [
709
+ "optionsFrom"
710
+ ]
711
+ }
712
+ ]
472
713
  },
473
714
  {
474
715
  "type": "object",
@@ -492,6 +733,17 @@
492
733
  "default": {
493
734
  "$ref": "#/$defs/JsonValue"
494
735
  },
736
+ "compute": {
737
+ "type": "string",
738
+ "minLength": 1
739
+ },
740
+ "setWhen": {
741
+ "minItems": 1,
742
+ "type": "array",
743
+ "items": {
744
+ "$ref": "#/$defs/SetWhen"
745
+ }
746
+ },
495
747
  "accept": {
496
748
  "type": "array",
497
749
  "items": {
@@ -502,13 +754,48 @@
502
754
  "type": "integer",
503
755
  "exclusiveMinimum": 0,
504
756
  "maximum": 9007199254740991
757
+ },
758
+ "multiple": {
759
+ "type": "boolean"
760
+ },
761
+ "minFiles": {
762
+ "type": "integer",
763
+ "minimum": 0,
764
+ "maximum": 9007199254740991
765
+ },
766
+ "maxFiles": {
767
+ "type": "integer",
768
+ "exclusiveMinimum": 0,
769
+ "maximum": 9007199254740991
505
770
  }
506
771
  },
507
772
  "required": [
508
773
  "type",
509
774
  "label"
510
775
  ],
511
- "additionalProperties": false
776
+ "additionalProperties": false,
777
+ "dependentSchemas": {
778
+ "minFiles": {
779
+ "properties": {
780
+ "multiple": {
781
+ "const": true
782
+ }
783
+ },
784
+ "required": [
785
+ "multiple"
786
+ ]
787
+ },
788
+ "maxFiles": {
789
+ "properties": {
790
+ "multiple": {
791
+ "const": true
792
+ }
793
+ },
794
+ "required": [
795
+ "multiple"
796
+ ]
797
+ }
798
+ }
512
799
  },
513
800
  {
514
801
  "type": "object",
@@ -532,17 +819,63 @@
532
819
  "default": {
533
820
  "$ref": "#/$defs/JsonValue"
534
821
  },
822
+ "compute": {
823
+ "type": "string",
824
+ "minLength": 1
825
+ },
826
+ "setWhen": {
827
+ "minItems": 1,
828
+ "type": "array",
829
+ "items": {
830
+ "$ref": "#/$defs/SetWhen"
831
+ }
832
+ },
535
833
  "maxSize": {
536
834
  "type": "integer",
537
835
  "exclusiveMinimum": 0,
538
836
  "maximum": 9007199254740991
837
+ },
838
+ "multiple": {
839
+ "type": "boolean"
840
+ },
841
+ "minFiles": {
842
+ "type": "integer",
843
+ "minimum": 0,
844
+ "maximum": 9007199254740991
845
+ },
846
+ "maxFiles": {
847
+ "type": "integer",
848
+ "exclusiveMinimum": 0,
849
+ "maximum": 9007199254740991
539
850
  }
540
851
  },
541
852
  "required": [
542
853
  "type",
543
854
  "label"
544
855
  ],
545
- "additionalProperties": false
856
+ "additionalProperties": false,
857
+ "dependentSchemas": {
858
+ "minFiles": {
859
+ "properties": {
860
+ "multiple": {
861
+ "const": true
862
+ }
863
+ },
864
+ "required": [
865
+ "multiple"
866
+ ]
867
+ },
868
+ "maxFiles": {
869
+ "properties": {
870
+ "multiple": {
871
+ "const": true
872
+ }
873
+ },
874
+ "required": [
875
+ "multiple"
876
+ ]
877
+ }
878
+ }
546
879
  },
547
880
  {
548
881
  "type": "object",
@@ -566,6 +899,17 @@
566
899
  "default": {
567
900
  "$ref": "#/$defs/JsonValue"
568
901
  },
902
+ "compute": {
903
+ "type": "string",
904
+ "minLength": 1
905
+ },
906
+ "setWhen": {
907
+ "minItems": 1,
908
+ "type": "array",
909
+ "items": {
910
+ "$ref": "#/$defs/SetWhen"
911
+ }
912
+ },
569
913
  "relation": {
570
914
  "type": "string",
571
915
  "minLength": 1
@@ -606,6 +950,17 @@
606
950
  "default": {
607
951
  "$ref": "#/$defs/JsonValue"
608
952
  },
953
+ "compute": {
954
+ "type": "string",
955
+ "minLength": 1
956
+ },
957
+ "setWhen": {
958
+ "minItems": 1,
959
+ "type": "array",
960
+ "items": {
961
+ "$ref": "#/$defs/SetWhen"
962
+ }
963
+ },
609
964
  "relation": {
610
965
  "type": "string",
611
966
  "minLength": 1
@@ -646,6 +1001,17 @@
646
1001
  "default": {
647
1002
  "$ref": "#/$defs/JsonValue"
648
1003
  },
1004
+ "compute": {
1005
+ "type": "string",
1006
+ "minLength": 1
1007
+ },
1008
+ "setWhen": {
1009
+ "minItems": 1,
1010
+ "type": "array",
1011
+ "items": {
1012
+ "$ref": "#/$defs/SetWhen"
1013
+ }
1014
+ },
649
1015
  "relation": {
650
1016
  "type": "string",
651
1017
  "minLength": 1
@@ -698,18 +1064,75 @@
698
1064
  "default": {
699
1065
  "$ref": "#/$defs/JsonValue"
700
1066
  },
1067
+ "compute": {
1068
+ "type": "string",
1069
+ "minLength": 1
1070
+ },
1071
+ "setWhen": {
1072
+ "minItems": 1,
1073
+ "type": "array",
1074
+ "items": {
1075
+ "$ref": "#/$defs/SetWhen"
1076
+ }
1077
+ },
701
1078
  "models": {
702
1079
  "minItems": 1,
703
1080
  "type": "array",
704
1081
  "items": {
705
- "$ref": "#/$defs/Option"
1082
+ "$ref": "#/$defs/Option"
1083
+ }
1084
+ }
1085
+ },
1086
+ "required": [
1087
+ "type",
1088
+ "label",
1089
+ "models"
1090
+ ],
1091
+ "additionalProperties": false
1092
+ },
1093
+ {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "type": {
1097
+ "type": "string",
1098
+ "const": "properties"
1099
+ },
1100
+ "label": {
1101
+ "type": "string"
1102
+ },
1103
+ "help": {
1104
+ "type": "string"
1105
+ },
1106
+ "required": {
1107
+ "type": "boolean"
1108
+ },
1109
+ "readonly": {
1110
+ "type": "boolean"
1111
+ },
1112
+ "default": {
1113
+ "$ref": "#/$defs/JsonValue"
1114
+ },
1115
+ "compute": {
1116
+ "type": "string",
1117
+ "minLength": 1
1118
+ },
1119
+ "setWhen": {
1120
+ "minItems": 1,
1121
+ "type": "array",
1122
+ "items": {
1123
+ "$ref": "#/$defs/SetWhen"
1124
+ }
1125
+ },
1126
+ "definitions": {
1127
+ "type": "array",
1128
+ "items": {
1129
+ "$ref": "#/$defs/PropertyDefinition"
706
1130
  }
707
1131
  }
708
1132
  },
709
1133
  "required": [
710
1134
  "type",
711
- "label",
712
- "models"
1135
+ "label"
713
1136
  ],
714
1137
  "additionalProperties": false
715
1138
  },
@@ -718,7 +1141,7 @@
718
1141
  "properties": {
719
1142
  "type": {
720
1143
  "type": "string",
721
- "const": "properties"
1144
+ "const": "json"
722
1145
  },
723
1146
  "label": {
724
1147
  "type": "string"
@@ -735,10 +1158,15 @@
735
1158
  "default": {
736
1159
  "$ref": "#/$defs/JsonValue"
737
1160
  },
738
- "definitions": {
1161
+ "compute": {
1162
+ "type": "string",
1163
+ "minLength": 1
1164
+ },
1165
+ "setWhen": {
1166
+ "minItems": 1,
739
1167
  "type": "array",
740
1168
  "items": {
741
- "$ref": "#/$defs/PropertyDefinition"
1169
+ "$ref": "#/$defs/SetWhen"
742
1170
  }
743
1171
  }
744
1172
  },
@@ -753,7 +1181,7 @@
753
1181
  "properties": {
754
1182
  "type": {
755
1183
  "type": "string",
756
- "const": "json"
1184
+ "const": "matrix"
757
1185
  },
758
1186
  "label": {
759
1187
  "type": "string"
@@ -769,11 +1197,44 @@
769
1197
  },
770
1198
  "default": {
771
1199
  "$ref": "#/$defs/JsonValue"
1200
+ },
1201
+ "compute": {
1202
+ "type": "string",
1203
+ "minLength": 1
1204
+ },
1205
+ "setWhen": {
1206
+ "minItems": 1,
1207
+ "type": "array",
1208
+ "items": {
1209
+ "$ref": "#/$defs/SetWhen"
1210
+ }
1211
+ },
1212
+ "rows": {
1213
+ "minItems": 1,
1214
+ "type": "array",
1215
+ "items": {
1216
+ "$ref": "#/$defs/Option"
1217
+ }
1218
+ },
1219
+ "columns": {
1220
+ "minItems": 1,
1221
+ "type": "array",
1222
+ "items": {
1223
+ "$ref": "#/$defs/Option"
1224
+ }
1225
+ },
1226
+ "multiple": {
1227
+ "type": "boolean"
1228
+ },
1229
+ "onePerColumn": {
1230
+ "type": "boolean"
772
1231
  }
773
1232
  },
774
1233
  "required": [
775
1234
  "type",
776
- "label"
1235
+ "label",
1236
+ "rows",
1237
+ "columns"
777
1238
  ],
778
1239
  "additionalProperties": false
779
1240
  }
@@ -813,6 +1274,24 @@
813
1274
  }
814
1275
  ]
815
1276
  },
1277
+ "SetWhen": {
1278
+ "type": "object",
1279
+ "properties": {
1280
+ "when": {
1281
+ "type": "string",
1282
+ "minLength": 1
1283
+ },
1284
+ "value": {
1285
+ "type": "string",
1286
+ "minLength": 1
1287
+ }
1288
+ },
1289
+ "required": [
1290
+ "when",
1291
+ "value"
1292
+ ],
1293
+ "additionalProperties": false
1294
+ },
816
1295
  "Option": {
817
1296
  "type": "object",
818
1297
  "properties": {
@@ -824,6 +1303,22 @@
824
1303
  },
825
1304
  "label": {
826
1305
  "type": "string"
1306
+ },
1307
+ "image": {
1308
+ "type": "string",
1309
+ "minLength": 1
1310
+ },
1311
+ "score": {
1312
+ "type": "number"
1313
+ },
1314
+ "alt": {
1315
+ "type": "string"
1316
+ },
1317
+ "exclusive": {
1318
+ "type": "boolean"
1319
+ },
1320
+ "fixed": {
1321
+ "type": "boolean"
827
1322
  }
828
1323
  },
829
1324
  "required": [
@@ -832,6 +1327,27 @@
832
1327
  ],
833
1328
  "additionalProperties": false
834
1329
  },
1330
+ "OptionsFrom": {
1331
+ "type": "object",
1332
+ "properties": {
1333
+ "list": {
1334
+ "type": "string",
1335
+ "minLength": 1
1336
+ },
1337
+ "dependsOn": {
1338
+ "minItems": 1,
1339
+ "type": "array",
1340
+ "items": {
1341
+ "type": "string",
1342
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
1343
+ }
1344
+ }
1345
+ },
1346
+ "required": [
1347
+ "list"
1348
+ ],
1349
+ "additionalProperties": false
1350
+ },
835
1351
  "FilterItem": {
836
1352
  "anyOf": [
837
1353
  {
@@ -942,6 +1458,17 @@
942
1458
  "default": {
943
1459
  "$ref": "#/$defs/JsonValue"
944
1460
  },
1461
+ "compute": {
1462
+ "type": "string",
1463
+ "minLength": 1
1464
+ },
1465
+ "setWhen": {
1466
+ "minItems": 1,
1467
+ "type": "array",
1468
+ "items": {
1469
+ "$ref": "#/$defs/SetWhen"
1470
+ }
1471
+ },
945
1472
  "size": {
946
1473
  "type": "integer",
947
1474
  "exclusiveMinimum": 0,
@@ -979,6 +1506,17 @@
979
1506
  "default": {
980
1507
  "$ref": "#/$defs/JsonValue"
981
1508
  },
1509
+ "compute": {
1510
+ "type": "string",
1511
+ "minLength": 1
1512
+ },
1513
+ "setWhen": {
1514
+ "minItems": 1,
1515
+ "type": "array",
1516
+ "items": {
1517
+ "$ref": "#/$defs/SetWhen"
1518
+ }
1519
+ },
982
1520
  "size": {
983
1521
  "type": "integer",
984
1522
  "exclusiveMinimum": 0,
@@ -1012,6 +1550,17 @@
1012
1550
  },
1013
1551
  "default": {
1014
1552
  "$ref": "#/$defs/JsonValue"
1553
+ },
1554
+ "compute": {
1555
+ "type": "string",
1556
+ "minLength": 1
1557
+ },
1558
+ "setWhen": {
1559
+ "minItems": 1,
1560
+ "type": "array",
1561
+ "items": {
1562
+ "$ref": "#/$defs/SetWhen"
1563
+ }
1015
1564
  }
1016
1565
  },
1017
1566
  "required": [
@@ -1042,6 +1591,17 @@
1042
1591
  "default": {
1043
1592
  "$ref": "#/$defs/JsonValue"
1044
1593
  },
1594
+ "compute": {
1595
+ "type": "string",
1596
+ "minLength": 1
1597
+ },
1598
+ "setWhen": {
1599
+ "minItems": 1,
1600
+ "type": "array",
1601
+ "items": {
1602
+ "$ref": "#/$defs/SetWhen"
1603
+ }
1604
+ },
1045
1605
  "min": {
1046
1606
  "type": "number"
1047
1607
  },
@@ -1077,6 +1637,17 @@
1077
1637
  "default": {
1078
1638
  "$ref": "#/$defs/JsonValue"
1079
1639
  },
1640
+ "compute": {
1641
+ "type": "string",
1642
+ "minLength": 1
1643
+ },
1644
+ "setWhen": {
1645
+ "minItems": 1,
1646
+ "type": "array",
1647
+ "items": {
1648
+ "$ref": "#/$defs/SetWhen"
1649
+ }
1650
+ },
1080
1651
  "min": {
1081
1652
  "type": "number"
1082
1653
  },
@@ -1130,6 +1701,17 @@
1130
1701
  "default": {
1131
1702
  "$ref": "#/$defs/JsonValue"
1132
1703
  },
1704
+ "compute": {
1705
+ "type": "string",
1706
+ "minLength": 1
1707
+ },
1708
+ "setWhen": {
1709
+ "minItems": 1,
1710
+ "type": "array",
1711
+ "items": {
1712
+ "$ref": "#/$defs/SetWhen"
1713
+ }
1714
+ },
1133
1715
  "currencyField": {
1134
1716
  "type": "string",
1135
1717
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
@@ -1190,6 +1772,17 @@
1190
1772
  },
1191
1773
  "default": {
1192
1774
  "$ref": "#/$defs/JsonValue"
1775
+ },
1776
+ "compute": {
1777
+ "type": "string",
1778
+ "minLength": 1
1779
+ },
1780
+ "setWhen": {
1781
+ "minItems": 1,
1782
+ "type": "array",
1783
+ "items": {
1784
+ "$ref": "#/$defs/SetWhen"
1785
+ }
1193
1786
  }
1194
1787
  },
1195
1788
  "required": [
@@ -1219,6 +1812,34 @@
1219
1812
  },
1220
1813
  "default": {
1221
1814
  "$ref": "#/$defs/JsonValue"
1815
+ },
1816
+ "compute": {
1817
+ "type": "string",
1818
+ "minLength": 1
1819
+ },
1820
+ "setWhen": {
1821
+ "minItems": 1,
1822
+ "type": "array",
1823
+ "items": {
1824
+ "$ref": "#/$defs/SetWhen"
1825
+ }
1826
+ },
1827
+ "min": {
1828
+ "type": "string",
1829
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
1830
+ },
1831
+ "max": {
1832
+ "type": "string",
1833
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
1834
+ },
1835
+ "days": {
1836
+ "minItems": 1,
1837
+ "type": "array",
1838
+ "items": {
1839
+ "type": "integer",
1840
+ "minimum": 1,
1841
+ "maximum": 7
1842
+ }
1222
1843
  }
1223
1844
  },
1224
1845
  "required": [
@@ -1248,6 +1869,34 @@
1248
1869
  },
1249
1870
  "default": {
1250
1871
  "$ref": "#/$defs/JsonValue"
1872
+ },
1873
+ "compute": {
1874
+ "type": "string",
1875
+ "minLength": 1
1876
+ },
1877
+ "setWhen": {
1878
+ "minItems": 1,
1879
+ "type": "array",
1880
+ "items": {
1881
+ "$ref": "#/$defs/SetWhen"
1882
+ }
1883
+ },
1884
+ "min": {
1885
+ "type": "string",
1886
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
1887
+ },
1888
+ "max": {
1889
+ "type": "string",
1890
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today([+-]\\d{1,4})?)$"
1891
+ },
1892
+ "days": {
1893
+ "minItems": 1,
1894
+ "type": "array",
1895
+ "items": {
1896
+ "type": "integer",
1897
+ "minimum": 1,
1898
+ "maximum": 7
1899
+ }
1251
1900
  }
1252
1901
  },
1253
1902
  "required": [
@@ -1278,6 +1927,17 @@
1278
1927
  "default": {
1279
1928
  "$ref": "#/$defs/JsonValue"
1280
1929
  },
1930
+ "compute": {
1931
+ "type": "string",
1932
+ "minLength": 1
1933
+ },
1934
+ "setWhen": {
1935
+ "minItems": 1,
1936
+ "type": "array",
1937
+ "items": {
1938
+ "$ref": "#/$defs/SetWhen"
1939
+ }
1940
+ },
1281
1941
  "options": {
1282
1942
  "minItems": 1,
1283
1943
  "type": "array",
@@ -1287,6 +1947,15 @@
1287
1947
  },
1288
1948
  "multiple": {
1289
1949
  "type": "boolean"
1950
+ },
1951
+ "other": {
1952
+ "type": "boolean"
1953
+ },
1954
+ "ownAnswers": {
1955
+ "type": "boolean"
1956
+ },
1957
+ "optionsFrom": {
1958
+ "not": {}
1290
1959
  }
1291
1960
  },
1292
1961
  "required": [
@@ -1318,6 +1987,17 @@
1318
1987
  "default": {
1319
1988
  "$ref": "#/$defs/JsonValue"
1320
1989
  },
1990
+ "compute": {
1991
+ "type": "string",
1992
+ "minLength": 1
1993
+ },
1994
+ "setWhen": {
1995
+ "minItems": 1,
1996
+ "type": "array",
1997
+ "items": {
1998
+ "$ref": "#/$defs/SetWhen"
1999
+ }
2000
+ },
1321
2001
  "accept": {
1322
2002
  "type": "array",
1323
2003
  "items": {
@@ -1328,13 +2008,48 @@
1328
2008
  "type": "integer",
1329
2009
  "exclusiveMinimum": 0,
1330
2010
  "maximum": 9007199254740991
2011
+ },
2012
+ "multiple": {
2013
+ "type": "boolean"
2014
+ },
2015
+ "minFiles": {
2016
+ "type": "integer",
2017
+ "minimum": 0,
2018
+ "maximum": 9007199254740991
2019
+ },
2020
+ "maxFiles": {
2021
+ "type": "integer",
2022
+ "exclusiveMinimum": 0,
2023
+ "maximum": 9007199254740991
1331
2024
  }
1332
2025
  },
1333
2026
  "required": [
1334
2027
  "type",
1335
2028
  "label"
1336
2029
  ],
1337
- "additionalProperties": false
2030
+ "additionalProperties": false,
2031
+ "dependentSchemas": {
2032
+ "minFiles": {
2033
+ "properties": {
2034
+ "multiple": {
2035
+ "const": true
2036
+ }
2037
+ },
2038
+ "required": [
2039
+ "multiple"
2040
+ ]
2041
+ },
2042
+ "maxFiles": {
2043
+ "properties": {
2044
+ "multiple": {
2045
+ "const": true
2046
+ }
2047
+ },
2048
+ "required": [
2049
+ "multiple"
2050
+ ]
2051
+ }
2052
+ }
1338
2053
  },
1339
2054
  {
1340
2055
  "type": "object",
@@ -1358,17 +2073,63 @@
1358
2073
  "default": {
1359
2074
  "$ref": "#/$defs/JsonValue"
1360
2075
  },
2076
+ "compute": {
2077
+ "type": "string",
2078
+ "minLength": 1
2079
+ },
2080
+ "setWhen": {
2081
+ "minItems": 1,
2082
+ "type": "array",
2083
+ "items": {
2084
+ "$ref": "#/$defs/SetWhen"
2085
+ }
2086
+ },
1361
2087
  "maxSize": {
1362
2088
  "type": "integer",
1363
2089
  "exclusiveMinimum": 0,
1364
2090
  "maximum": 9007199254740991
2091
+ },
2092
+ "multiple": {
2093
+ "type": "boolean"
2094
+ },
2095
+ "minFiles": {
2096
+ "type": "integer",
2097
+ "minimum": 0,
2098
+ "maximum": 9007199254740991
2099
+ },
2100
+ "maxFiles": {
2101
+ "type": "integer",
2102
+ "exclusiveMinimum": 0,
2103
+ "maximum": 9007199254740991
1365
2104
  }
1366
2105
  },
1367
2106
  "required": [
1368
2107
  "type",
1369
2108
  "label"
1370
2109
  ],
1371
- "additionalProperties": false
2110
+ "additionalProperties": false,
2111
+ "dependentSchemas": {
2112
+ "minFiles": {
2113
+ "properties": {
2114
+ "multiple": {
2115
+ "const": true
2116
+ }
2117
+ },
2118
+ "required": [
2119
+ "multiple"
2120
+ ]
2121
+ },
2122
+ "maxFiles": {
2123
+ "properties": {
2124
+ "multiple": {
2125
+ "const": true
2126
+ }
2127
+ },
2128
+ "required": [
2129
+ "multiple"
2130
+ ]
2131
+ }
2132
+ }
1372
2133
  },
1373
2134
  {
1374
2135
  "type": "object",
@@ -1392,6 +2153,17 @@
1392
2153
  "default": {
1393
2154
  "$ref": "#/$defs/JsonValue"
1394
2155
  },
2156
+ "compute": {
2157
+ "type": "string",
2158
+ "minLength": 1
2159
+ },
2160
+ "setWhen": {
2161
+ "minItems": 1,
2162
+ "type": "array",
2163
+ "items": {
2164
+ "$ref": "#/$defs/SetWhen"
2165
+ }
2166
+ },
1395
2167
  "relation": {
1396
2168
  "type": "string",
1397
2169
  "minLength": 1
@@ -1432,6 +2204,17 @@
1432
2204
  "default": {
1433
2205
  "$ref": "#/$defs/JsonValue"
1434
2206
  },
2207
+ "compute": {
2208
+ "type": "string",
2209
+ "minLength": 1
2210
+ },
2211
+ "setWhen": {
2212
+ "minItems": 1,
2213
+ "type": "array",
2214
+ "items": {
2215
+ "$ref": "#/$defs/SetWhen"
2216
+ }
2217
+ },
1435
2218
  "relation": {
1436
2219
  "type": "string",
1437
2220
  "minLength": 1
@@ -1472,6 +2255,17 @@
1472
2255
  "default": {
1473
2256
  "$ref": "#/$defs/JsonValue"
1474
2257
  },
2258
+ "compute": {
2259
+ "type": "string",
2260
+ "minLength": 1
2261
+ },
2262
+ "setWhen": {
2263
+ "minItems": 1,
2264
+ "type": "array",
2265
+ "items": {
2266
+ "$ref": "#/$defs/SetWhen"
2267
+ }
2268
+ },
1475
2269
  "models": {
1476
2270
  "minItems": 1,
1477
2271
  "type": "array",
@@ -1509,6 +2303,17 @@
1509
2303
  "default": {
1510
2304
  "$ref": "#/$defs/JsonValue"
1511
2305
  },
2306
+ "compute": {
2307
+ "type": "string",
2308
+ "minLength": 1
2309
+ },
2310
+ "setWhen": {
2311
+ "minItems": 1,
2312
+ "type": "array",
2313
+ "items": {
2314
+ "$ref": "#/$defs/SetWhen"
2315
+ }
2316
+ },
1512
2317
  "definitions": {
1513
2318
  "type": "array",
1514
2319
  "items": {
@@ -1543,6 +2348,17 @@
1543
2348
  },
1544
2349
  "default": {
1545
2350
  "$ref": "#/$defs/JsonValue"
2351
+ },
2352
+ "compute": {
2353
+ "type": "string",
2354
+ "minLength": 1
2355
+ },
2356
+ "setWhen": {
2357
+ "minItems": 1,
2358
+ "type": "array",
2359
+ "items": {
2360
+ "$ref": "#/$defs/SetWhen"
2361
+ }
1546
2362
  }
1547
2363
  },
1548
2364
  "required": [
@@ -1706,7 +2522,7 @@
1706
2522
  "colspan": {
1707
2523
  "type": "integer",
1708
2524
  "minimum": 1,
1709
- "maximum": 4
2525
+ "maximum": 12
1710
2526
  },
1711
2527
  "columns": {
1712
2528
  "minItems": 1,
@@ -1745,6 +2561,21 @@
1745
2561
  "row"
1746
2562
  ]
1747
2563
  },
2564
+ "labels": {
2565
+ "type": "string",
2566
+ "enum": [
2567
+ "above",
2568
+ "beside",
2569
+ "hidden"
2570
+ ]
2571
+ },
2572
+ "validate": {
2573
+ "minItems": 1,
2574
+ "type": "array",
2575
+ "items": {
2576
+ "$ref": "#/$defs/AnswerRule"
2577
+ }
2578
+ },
1748
2579
  "invisible": {
1749
2580
  "$ref": "#/$defs/Modifier"
1750
2581
  },
@@ -1805,7 +2636,7 @@
1805
2636
  "colspan": {
1806
2637
  "type": "integer",
1807
2638
  "minimum": 1,
1808
- "maximum": 4
2639
+ "maximum": 12
1809
2640
  },
1810
2641
  "columns": {
1811
2642
  "minItems": 1,
@@ -1844,6 +2675,21 @@
1844
2675
  "row"
1845
2676
  ]
1846
2677
  },
2678
+ "labels": {
2679
+ "type": "string",
2680
+ "enum": [
2681
+ "above",
2682
+ "beside",
2683
+ "hidden"
2684
+ ]
2685
+ },
2686
+ "validate": {
2687
+ "minItems": 1,
2688
+ "type": "array",
2689
+ "items": {
2690
+ "$ref": "#/$defs/AnswerRule"
2691
+ }
2692
+ },
1847
2693
  "invisible": {
1848
2694
  "$ref": "#/$defs/Modifier"
1849
2695
  },
@@ -1944,6 +2790,11 @@
1944
2790
  "icon": {
1945
2791
  "type": "string"
1946
2792
  },
2793
+ "colspan": {
2794
+ "type": "integer",
2795
+ "minimum": 1,
2796
+ "maximum": 12
2797
+ },
1947
2798
  "invisible": {
1948
2799
  "$ref": "#/$defs/Modifier"
1949
2800
  }
@@ -2135,6 +2986,70 @@
2135
2986
  ],
2136
2987
  "additionalProperties": false
2137
2988
  },
2989
+ "AnswerRule": {
2990
+ "type": "object",
2991
+ "properties": {
2992
+ "minLength": {
2993
+ "type": "integer",
2994
+ "minimum": 0,
2995
+ "maximum": 9007199254740991
2996
+ },
2997
+ "maxLength": {
2998
+ "type": "integer",
2999
+ "minimum": 1,
3000
+ "maximum": 9007199254740991
3001
+ },
3002
+ "pattern": {
3003
+ "type": "string",
3004
+ "minLength": 1
3005
+ },
3006
+ "endsWith": {
3007
+ "type": "string",
3008
+ "minLength": 1
3009
+ },
3010
+ "min": {
3011
+ "type": "number"
3012
+ },
3013
+ "max": {
3014
+ "type": "number"
3015
+ },
3016
+ "atLeast": {
3017
+ "type": "integer",
3018
+ "minimum": 0,
3019
+ "maximum": 9007199254740991
3020
+ },
3021
+ "atMost": {
3022
+ "type": "integer",
3023
+ "minimum": 1,
3024
+ "maximum": 9007199254740991
3025
+ },
3026
+ "date": {
3027
+ "type": "string",
3028
+ "enum": [
3029
+ "past",
3030
+ "future"
3031
+ ]
3032
+ },
3033
+ "holds": {
3034
+ "type": "string",
3035
+ "minLength": 1
3036
+ },
3037
+ "when": {
3038
+ "$ref": "#/$defs/Modifier"
3039
+ },
3040
+ "message": {
3041
+ "type": "string"
3042
+ },
3043
+ "level": {
3044
+ "type": "string",
3045
+ "enum": [
3046
+ "error",
3047
+ "warning"
3048
+ ]
3049
+ }
3050
+ },
3051
+ "additionalProperties": false
3052
+ },
2138
3053
  "Modifier": {
2139
3054
  "anyOf": [
2140
3055
  {
@@ -2188,7 +3103,7 @@
2188
3103
  "colspan": {
2189
3104
  "type": "integer",
2190
3105
  "minimum": 1,
2191
- "maximum": 4
3106
+ "maximum": 12
2192
3107
  },
2193
3108
  "columns": {
2194
3109
  "minItems": 1,
@@ -2227,6 +3142,21 @@
2227
3142
  "row"
2228
3143
  ]
2229
3144
  },
3145
+ "labels": {
3146
+ "type": "string",
3147
+ "enum": [
3148
+ "above",
3149
+ "beside",
3150
+ "hidden"
3151
+ ]
3152
+ },
3153
+ "validate": {
3154
+ "minItems": 1,
3155
+ "type": "array",
3156
+ "items": {
3157
+ "$ref": "#/$defs/AnswerRule"
3158
+ }
3159
+ },
2230
3160
  "invisible": {
2231
3161
  "$ref": "#/$defs/Modifier"
2232
3162
  },
@@ -2286,6 +3216,11 @@
2286
3216
  "icon": {
2287
3217
  "type": "string"
2288
3218
  },
3219
+ "colspan": {
3220
+ "type": "integer",
3221
+ "minimum": 1,
3222
+ "maximum": 12
3223
+ },
2289
3224
  "invisible": {
2290
3225
  "$ref": "#/$defs/Modifier"
2291
3226
  }
@@ -2320,6 +3255,11 @@
2320
3255
  "note"
2321
3256
  ]
2322
3257
  },
3258
+ "colspan": {
3259
+ "type": "integer",
3260
+ "minimum": 1,
3261
+ "maximum": 12
3262
+ },
2323
3263
  "invisible": {
2324
3264
  "$ref": "#/$defs/Modifier"
2325
3265
  }
@@ -2362,6 +3302,121 @@
2362
3302
  },
2363
3303
  {
2364
3304
  "$ref": "#/$defs/TabsNode"
3305
+ },
3306
+ {
3307
+ "type": "object",
3308
+ "properties": {
3309
+ "type": {
3310
+ "type": "string",
3311
+ "const": "divider"
3312
+ },
3313
+ "id": {
3314
+ "type": "string",
3315
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
3316
+ },
3317
+ "invisible": {
3318
+ "$ref": "#/$defs/Modifier"
3319
+ }
3320
+ },
3321
+ "required": [
3322
+ "type",
3323
+ "id"
3324
+ ],
3325
+ "additionalProperties": false
3326
+ },
3327
+ {
3328
+ "type": "object",
3329
+ "properties": {
3330
+ "type": {
3331
+ "type": "string",
3332
+ "const": "spacer"
3333
+ },
3334
+ "id": {
3335
+ "type": "string",
3336
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
3337
+ },
3338
+ "colspan": {
3339
+ "type": "integer",
3340
+ "minimum": 1,
3341
+ "maximum": 12
3342
+ },
3343
+ "invisible": {
3344
+ "$ref": "#/$defs/Modifier"
3345
+ }
3346
+ },
3347
+ "required": [
3348
+ "type",
3349
+ "id"
3350
+ ],
3351
+ "additionalProperties": false
3352
+ },
3353
+ {
3354
+ "type": "object",
3355
+ "properties": {
3356
+ "type": {
3357
+ "type": "string",
3358
+ "const": "image"
3359
+ },
3360
+ "id": {
3361
+ "type": "string",
3362
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
3363
+ },
3364
+ "src": {
3365
+ "type": "string",
3366
+ "minLength": 1
3367
+ },
3368
+ "alt": {
3369
+ "type": "string"
3370
+ },
3371
+ "width": {
3372
+ "anyOf": [
3373
+ {
3374
+ "type": "string",
3375
+ "enum": [
3376
+ "small",
3377
+ "medium",
3378
+ "large",
3379
+ "full"
3380
+ ]
3381
+ },
3382
+ {
3383
+ "type": "integer",
3384
+ "minimum": 16,
3385
+ "maximum": 4000
3386
+ }
3387
+ ]
3388
+ },
3389
+ "align": {
3390
+ "type": "string",
3391
+ "enum": [
3392
+ "start",
3393
+ "center",
3394
+ "end"
3395
+ ]
3396
+ },
3397
+ "href": {
3398
+ "type": "string",
3399
+ "pattern": "^(https?:\\/\\/|mailto:)\\S+$"
3400
+ },
3401
+ "caption": {
3402
+ "type": "string"
3403
+ },
3404
+ "colspan": {
3405
+ "type": "integer",
3406
+ "minimum": 1,
3407
+ "maximum": 12
3408
+ },
3409
+ "invisible": {
3410
+ "$ref": "#/$defs/Modifier"
3411
+ }
3412
+ },
3413
+ "required": [
3414
+ "type",
3415
+ "id",
3416
+ "src",
3417
+ "alt"
3418
+ ],
3419
+ "additionalProperties": false
2365
3420
  }
2366
3421
  ]
2367
3422
  },
@@ -2389,87 +3444,27 @@
2389
3444
  "columns": {
2390
3445
  "anyOf": [
2391
3446
  {
2392
- "anyOf": [
2393
- {
2394
- "type": "number",
2395
- "const": 1
2396
- },
2397
- {
2398
- "type": "number",
2399
- "const": 2
2400
- },
2401
- {
2402
- "type": "number",
2403
- "const": 3
2404
- },
2405
- {
2406
- "type": "number",
2407
- "const": 4
2408
- }
2409
- ]
3447
+ "type": "integer",
3448
+ "minimum": 1,
3449
+ "maximum": 12
2410
3450
  },
2411
3451
  {
2412
3452
  "type": "object",
2413
3453
  "properties": {
2414
3454
  "wide": {
2415
- "anyOf": [
2416
- {
2417
- "type": "number",
2418
- "const": 1
2419
- },
2420
- {
2421
- "type": "number",
2422
- "const": 2
2423
- },
2424
- {
2425
- "type": "number",
2426
- "const": 3
2427
- },
2428
- {
2429
- "type": "number",
2430
- "const": 4
2431
- }
2432
- ]
3455
+ "type": "integer",
3456
+ "minimum": 1,
3457
+ "maximum": 12
2433
3458
  },
2434
3459
  "medium": {
2435
- "anyOf": [
2436
- {
2437
- "type": "number",
2438
- "const": 1
2439
- },
2440
- {
2441
- "type": "number",
2442
- "const": 2
2443
- },
2444
- {
2445
- "type": "number",
2446
- "const": 3
2447
- },
2448
- {
2449
- "type": "number",
2450
- "const": 4
2451
- }
2452
- ]
3460
+ "type": "integer",
3461
+ "minimum": 1,
3462
+ "maximum": 12
2453
3463
  },
2454
3464
  "narrow": {
2455
- "anyOf": [
2456
- {
2457
- "type": "number",
2458
- "const": 1
2459
- },
2460
- {
2461
- "type": "number",
2462
- "const": 2
2463
- },
2464
- {
2465
- "type": "number",
2466
- "const": 3
2467
- },
2468
- {
2469
- "type": "number",
2470
- "const": 4
2471
- }
2472
- ]
3465
+ "type": "integer",
3466
+ "minimum": 1,
3467
+ "maximum": 12
2473
3468
  }
2474
3469
  },
2475
3470
  "required": [
@@ -2485,6 +3480,40 @@
2485
3480
  "collapsed": {
2486
3481
  "type": "boolean"
2487
3482
  },
3483
+ "colspan": {
3484
+ "type": "integer",
3485
+ "minimum": 1,
3486
+ "maximum": 12
3487
+ },
3488
+ "style": {
3489
+ "type": "string",
3490
+ "enum": [
3491
+ "card",
3492
+ "plain",
3493
+ "line",
3494
+ "framed"
3495
+ ]
3496
+ },
3497
+ "labels": {
3498
+ "type": "string",
3499
+ "enum": [
3500
+ "above",
3501
+ "beside",
3502
+ "hidden"
3503
+ ]
3504
+ },
3505
+ "labelWidth": {
3506
+ "type": "integer",
3507
+ "minimum": 60,
3508
+ "maximum": 320
3509
+ },
3510
+ "rows": {
3511
+ "type": "string",
3512
+ "enum": [
3513
+ "full",
3514
+ "gaps"
3515
+ ]
3516
+ },
2488
3517
  "invisible": {
2489
3518
  "$ref": "#/$defs/Modifier"
2490
3519
  },
@@ -2516,6 +3545,11 @@
2516
3545
  "type": "string",
2517
3546
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
2518
3547
  },
3548
+ "colspan": {
3549
+ "type": "integer",
3550
+ "minimum": 1,
3551
+ "maximum": 12
3552
+ },
2519
3553
  "invisible": {
2520
3554
  "$ref": "#/$defs/Modifier"
2521
3555
  },
@@ -2813,6 +3847,11 @@
2813
3847
  "icon": {
2814
3848
  "type": "string"
2815
3849
  },
3850
+ "colspan": {
3851
+ "type": "integer",
3852
+ "minimum": 1,
3853
+ "maximum": 12
3854
+ },
2816
3855
  "invisible": {
2817
3856
  "$ref": "#/$defs/Modifier"
2818
3857
  }