@particle-academy/fancy-conformance 0.5.0 → 0.9.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.
@@ -0,0 +1,1912 @@
1
+ {
2
+ "$schema": "../../../schema/case-table.schema.json",
3
+ "suite": "dark-slide/table-cell-model",
4
+ "cases": [
5
+ {
6
+ "id": "0001-defaults-header-cell",
7
+ "title": "A table that styles nothing: the header cell's every default",
8
+ "since": "0.7.0",
9
+ "fn": "resolvedCell",
10
+ "notes": "The floor. If a port disagrees here it disagrees everywhere, and every later row's diff would be noise on top of this one.",
11
+ "input": {
12
+ "element": {
13
+ "type": "table",
14
+ "w": 0.9,
15
+ "columns": [
16
+ {
17
+ "key": "a",
18
+ "label": "A"
19
+ },
20
+ {
21
+ "key": "b",
22
+ "label": "B"
23
+ }
24
+ ],
25
+ "rows": [
26
+ {
27
+ "a": "1",
28
+ "b": "2"
29
+ }
30
+ ]
31
+ },
32
+ "theme": [],
33
+ "row": 0,
34
+ "col": 0
35
+ },
36
+ "expected": {
37
+ "text": "A",
38
+ "bold": "1",
39
+ "italic": "0",
40
+ "underline": "0",
41
+ "color": "FFFFFF",
42
+ "fill": "8B5CF6",
43
+ "align": "left",
44
+ "anchor": "middle",
45
+ "fontSizeHundredths": "1400",
46
+ "letterSpacingHundredths": "0",
47
+ "caps": "none",
48
+ "padding": {
49
+ "left": "91440",
50
+ "right": "91440",
51
+ "top": "45720",
52
+ "bottom": "45720"
53
+ },
54
+ "borders": {
55
+ "left": {
56
+ "widthEmu": "9525",
57
+ "color": "D9DEE4",
58
+ "style": "solid"
59
+ },
60
+ "right": {
61
+ "widthEmu": "9525",
62
+ "color": "D9DEE4",
63
+ "style": "solid"
64
+ },
65
+ "top": {
66
+ "widthEmu": "9525",
67
+ "color": "D9DEE4",
68
+ "style": "solid"
69
+ },
70
+ "bottom": {
71
+ "widthEmu": "9525",
72
+ "color": "D9DEE4",
73
+ "style": "solid"
74
+ }
75
+ },
76
+ "colSpan": "1",
77
+ "rowSpan": "1",
78
+ "merged": "none"
79
+ }
80
+ },
81
+ {
82
+ "id": "0002-defaults-body-cell",
83
+ "title": "A table that styles nothing: the first body cell, which is never striped",
84
+ "since": "0.7.0",
85
+ "fn": "resolvedCell",
86
+ "notes": "Striping counts over BODY rows and starts unstriped. Counting over the emitted grid instead shifts every stripe by one when a header is present.",
87
+ "input": {
88
+ "element": {
89
+ "type": "table",
90
+ "w": 0.9,
91
+ "columns": [
92
+ {
93
+ "key": "a",
94
+ "label": "A"
95
+ }
96
+ ],
97
+ "rows": [
98
+ {
99
+ "a": "1"
100
+ },
101
+ {
102
+ "a": "2"
103
+ }
104
+ ]
105
+ },
106
+ "theme": [],
107
+ "row": 1,
108
+ "col": 0
109
+ },
110
+ "expected": {
111
+ "text": "1",
112
+ "bold": "0",
113
+ "italic": "0",
114
+ "underline": "0",
115
+ "color": "0F172A",
116
+ "fill": null,
117
+ "align": "left",
118
+ "anchor": "middle",
119
+ "fontSizeHundredths": "1400",
120
+ "letterSpacingHundredths": "0",
121
+ "caps": "none",
122
+ "padding": {
123
+ "left": "91440",
124
+ "right": "91440",
125
+ "top": "45720",
126
+ "bottom": "45720"
127
+ },
128
+ "borders": {
129
+ "left": {
130
+ "widthEmu": "9525",
131
+ "color": "D9DEE4",
132
+ "style": "solid"
133
+ },
134
+ "right": {
135
+ "widthEmu": "9525",
136
+ "color": "D9DEE4",
137
+ "style": "solid"
138
+ },
139
+ "top": {
140
+ "widthEmu": "9525",
141
+ "color": "D9DEE4",
142
+ "style": "solid"
143
+ },
144
+ "bottom": {
145
+ "widthEmu": "9525",
146
+ "color": "D9DEE4",
147
+ "style": "solid"
148
+ }
149
+ },
150
+ "colSpan": "1",
151
+ "rowSpan": "1",
152
+ "merged": "none"
153
+ }
154
+ },
155
+ {
156
+ "id": "0003-second-body-row-is-striped",
157
+ "title": "The second body row takes the stripe fill",
158
+ "since": "0.7.0",
159
+ "fn": "resolvedCell",
160
+ "input": {
161
+ "element": {
162
+ "type": "table",
163
+ "w": 0.9,
164
+ "columns": [
165
+ {
166
+ "key": "a",
167
+ "label": "A"
168
+ }
169
+ ],
170
+ "rows": [
171
+ {
172
+ "a": "1"
173
+ },
174
+ {
175
+ "a": "2"
176
+ }
177
+ ]
178
+ },
179
+ "theme": [],
180
+ "row": 2,
181
+ "col": 0
182
+ },
183
+ "expected": {
184
+ "text": "2",
185
+ "bold": "0",
186
+ "italic": "0",
187
+ "underline": "0",
188
+ "color": "0F172A",
189
+ "fill": "F8FAFC",
190
+ "align": "left",
191
+ "anchor": "middle",
192
+ "fontSizeHundredths": "1400",
193
+ "letterSpacingHundredths": "0",
194
+ "caps": "none",
195
+ "padding": {
196
+ "left": "91440",
197
+ "right": "91440",
198
+ "top": "45720",
199
+ "bottom": "45720"
200
+ },
201
+ "borders": {
202
+ "left": {
203
+ "widthEmu": "9525",
204
+ "color": "D9DEE4",
205
+ "style": "solid"
206
+ },
207
+ "right": {
208
+ "widthEmu": "9525",
209
+ "color": "D9DEE4",
210
+ "style": "solid"
211
+ },
212
+ "top": {
213
+ "widthEmu": "9525",
214
+ "color": "D9DEE4",
215
+ "style": "solid"
216
+ },
217
+ "bottom": {
218
+ "widthEmu": "9525",
219
+ "color": "D9DEE4",
220
+ "style": "solid"
221
+ }
222
+ },
223
+ "colSpan": "1",
224
+ "rowSpan": "1",
225
+ "merged": "none"
226
+ }
227
+ },
228
+ {
229
+ "id": "0004-header-fill-comes-from-the-theme-accent",
230
+ "title": "The header fill is the theme accent, not a constant",
231
+ "since": "0.7.0",
232
+ "notes": "Every engine hardcoded 8B5CF6 here. That happens to be the DEFAULT accent, so a port that kept the constant passes case 0001 and fails only this one.",
233
+ "fn": "resolvedCell",
234
+ "input": {
235
+ "element": {
236
+ "type": "table",
237
+ "w": 0.9,
238
+ "columns": [
239
+ {
240
+ "key": "a",
241
+ "label": "A"
242
+ }
243
+ ],
244
+ "rows": [
245
+ {
246
+ "a": "1"
247
+ }
248
+ ]
249
+ },
250
+ "theme": {
251
+ "colors": {
252
+ "accent": "#1B3A5C"
253
+ }
254
+ },
255
+ "row": 0,
256
+ "col": 0
257
+ },
258
+ "expected": {
259
+ "text": "A",
260
+ "bold": "1",
261
+ "italic": "0",
262
+ "underline": "0",
263
+ "color": "FFFFFF",
264
+ "fill": "1B3A5C",
265
+ "align": "left",
266
+ "anchor": "middle",
267
+ "fontSizeHundredths": "1400",
268
+ "letterSpacingHundredths": "0",
269
+ "caps": "none",
270
+ "padding": {
271
+ "left": "91440",
272
+ "right": "91440",
273
+ "top": "45720",
274
+ "bottom": "45720"
275
+ },
276
+ "borders": {
277
+ "left": {
278
+ "widthEmu": "9525",
279
+ "color": "D9DEE4",
280
+ "style": "solid"
281
+ },
282
+ "right": {
283
+ "widthEmu": "9525",
284
+ "color": "D9DEE4",
285
+ "style": "solid"
286
+ },
287
+ "top": {
288
+ "widthEmu": "9525",
289
+ "color": "D9DEE4",
290
+ "style": "solid"
291
+ },
292
+ "bottom": {
293
+ "widthEmu": "9525",
294
+ "color": "D9DEE4",
295
+ "style": "solid"
296
+ }
297
+ },
298
+ "colSpan": "1",
299
+ "rowSpan": "1",
300
+ "merged": "none"
301
+ }
302
+ },
303
+ {
304
+ "id": "0005-borders-false-turns-every-side-off",
305
+ "title": "`borders: false` at table level stops the chain for all four sides",
306
+ "since": "0.7.0",
307
+ "fn": "resolvedCell",
308
+ "input": {
309
+ "element": {
310
+ "type": "table",
311
+ "w": 0.9,
312
+ "columns": [
313
+ {
314
+ "key": "a",
315
+ "label": "A"
316
+ }
317
+ ],
318
+ "rows": [
319
+ {
320
+ "a": "1"
321
+ }
322
+ ],
323
+ "style": {
324
+ "borders": false
325
+ }
326
+ },
327
+ "theme": [],
328
+ "row": 1,
329
+ "col": 0
330
+ },
331
+ "expected": {
332
+ "text": "1",
333
+ "bold": "0",
334
+ "italic": "0",
335
+ "underline": "0",
336
+ "color": "0F172A",
337
+ "fill": null,
338
+ "align": "left",
339
+ "anchor": "middle",
340
+ "fontSizeHundredths": "1400",
341
+ "letterSpacingHundredths": "0",
342
+ "caps": "none",
343
+ "padding": {
344
+ "left": "91440",
345
+ "right": "91440",
346
+ "top": "45720",
347
+ "bottom": "45720"
348
+ },
349
+ "borders": {
350
+ "left": null,
351
+ "right": null,
352
+ "top": null,
353
+ "bottom": null
354
+ },
355
+ "colSpan": "1",
356
+ "rowSpan": "1",
357
+ "merged": "none"
358
+ }
359
+ },
360
+ {
361
+ "id": "0006-one-side-off-leaves-the-others-on",
362
+ "title": "`{all: …, left: false}` keeps three sides and drops one",
363
+ "since": "0.7.0",
364
+ "notes": "A port using truthiness rather than key PRESENCE reads `left: false` as absent and leaves the border on.",
365
+ "fn": "resolvedCell",
366
+ "input": {
367
+ "element": {
368
+ "type": "table",
369
+ "w": 0.9,
370
+ "columns": [
371
+ {
372
+ "key": "a",
373
+ "label": "A"
374
+ }
375
+ ],
376
+ "rows": [
377
+ {
378
+ "a": "1"
379
+ }
380
+ ],
381
+ "style": {
382
+ "borders": {
383
+ "all": {
384
+ "width": 1,
385
+ "color": "#D8E0E8"
386
+ },
387
+ "left": false
388
+ }
389
+ }
390
+ },
391
+ "theme": [],
392
+ "row": 1,
393
+ "col": 0
394
+ },
395
+ "expected": {
396
+ "text": "1",
397
+ "bold": "0",
398
+ "italic": "0",
399
+ "underline": "0",
400
+ "color": "0F172A",
401
+ "fill": null,
402
+ "align": "left",
403
+ "anchor": "middle",
404
+ "fontSizeHundredths": "1400",
405
+ "letterSpacingHundredths": "0",
406
+ "caps": "none",
407
+ "padding": {
408
+ "left": "91440",
409
+ "right": "91440",
410
+ "top": "45720",
411
+ "bottom": "45720"
412
+ },
413
+ "borders": {
414
+ "left": null,
415
+ "right": {
416
+ "widthEmu": "12700",
417
+ "color": "D8E0E8",
418
+ "style": "solid"
419
+ },
420
+ "top": {
421
+ "widthEmu": "12700",
422
+ "color": "D8E0E8",
423
+ "style": "solid"
424
+ },
425
+ "bottom": {
426
+ "widthEmu": "12700",
427
+ "color": "D8E0E8",
428
+ "style": "solid"
429
+ }
430
+ },
431
+ "colSpan": "1",
432
+ "rowSpan": "1",
433
+ "merged": "none"
434
+ }
435
+ },
436
+ {
437
+ "id": "0007-outer-and-inner-resolve-by-position-top-left",
438
+ "title": "outer/inner: the top-left cell takes outer on left+top, inner on right+bottom",
439
+ "since": "0.7.0",
440
+ "fn": "resolvedCell",
441
+ "input": {
442
+ "element": {
443
+ "type": "table",
444
+ "w": 0.9,
445
+ "columns": [
446
+ {
447
+ "key": "a",
448
+ "label": "A"
449
+ },
450
+ {
451
+ "key": "b",
452
+ "label": "B"
453
+ }
454
+ ],
455
+ "rows": [
456
+ {
457
+ "a": "1",
458
+ "b": "2"
459
+ }
460
+ ],
461
+ "style": {
462
+ "borders": {
463
+ "outer": {
464
+ "width": 2,
465
+ "color": "#1B3A5C"
466
+ },
467
+ "inner": {
468
+ "width": 0.5,
469
+ "color": "#D8E0E8"
470
+ }
471
+ }
472
+ }
473
+ },
474
+ "theme": [],
475
+ "row": 0,
476
+ "col": 0
477
+ },
478
+ "expected": {
479
+ "text": "A",
480
+ "bold": "1",
481
+ "italic": "0",
482
+ "underline": "0",
483
+ "color": "FFFFFF",
484
+ "fill": "8B5CF6",
485
+ "align": "left",
486
+ "anchor": "middle",
487
+ "fontSizeHundredths": "1400",
488
+ "letterSpacingHundredths": "0",
489
+ "caps": "none",
490
+ "padding": {
491
+ "left": "91440",
492
+ "right": "91440",
493
+ "top": "45720",
494
+ "bottom": "45720"
495
+ },
496
+ "borders": {
497
+ "left": {
498
+ "widthEmu": "25400",
499
+ "color": "1B3A5C",
500
+ "style": "solid"
501
+ },
502
+ "right": {
503
+ "widthEmu": "6350",
504
+ "color": "D8E0E8",
505
+ "style": "solid"
506
+ },
507
+ "top": {
508
+ "widthEmu": "25400",
509
+ "color": "1B3A5C",
510
+ "style": "solid"
511
+ },
512
+ "bottom": {
513
+ "widthEmu": "6350",
514
+ "color": "D8E0E8",
515
+ "style": "solid"
516
+ }
517
+ },
518
+ "colSpan": "1",
519
+ "rowSpan": "1",
520
+ "merged": "none"
521
+ }
522
+ },
523
+ {
524
+ "id": "0008-outer-and-inner-resolve-by-position-bottom-right",
525
+ "title": "outer/inner: the bottom-right cell is the mirror of 0007",
526
+ "since": "0.7.0",
527
+ "notes": "Both corners are pinned because a port that gets `isOuter` from the row only, or the column only, passes one and fails the other.",
528
+ "fn": "resolvedCell",
529
+ "input": {
530
+ "element": {
531
+ "type": "table",
532
+ "w": 0.9,
533
+ "columns": [
534
+ {
535
+ "key": "a",
536
+ "label": "A"
537
+ },
538
+ {
539
+ "key": "b",
540
+ "label": "B"
541
+ }
542
+ ],
543
+ "rows": [
544
+ {
545
+ "a": "1",
546
+ "b": "2"
547
+ }
548
+ ],
549
+ "style": {
550
+ "borders": {
551
+ "outer": {
552
+ "width": 2,
553
+ "color": "#1B3A5C"
554
+ },
555
+ "inner": {
556
+ "width": 0.5,
557
+ "color": "#D8E0E8"
558
+ }
559
+ }
560
+ }
561
+ },
562
+ "theme": [],
563
+ "row": 1,
564
+ "col": 1
565
+ },
566
+ "expected": {
567
+ "text": "2",
568
+ "bold": "0",
569
+ "italic": "0",
570
+ "underline": "0",
571
+ "color": "0F172A",
572
+ "fill": null,
573
+ "align": "left",
574
+ "anchor": "middle",
575
+ "fontSizeHundredths": "1400",
576
+ "letterSpacingHundredths": "0",
577
+ "caps": "none",
578
+ "padding": {
579
+ "left": "91440",
580
+ "right": "91440",
581
+ "top": "45720",
582
+ "bottom": "45720"
583
+ },
584
+ "borders": {
585
+ "left": {
586
+ "widthEmu": "6350",
587
+ "color": "D8E0E8",
588
+ "style": "solid"
589
+ },
590
+ "right": {
591
+ "widthEmu": "25400",
592
+ "color": "1B3A5C",
593
+ "style": "solid"
594
+ },
595
+ "top": {
596
+ "widthEmu": "6350",
597
+ "color": "D8E0E8",
598
+ "style": "solid"
599
+ },
600
+ "bottom": {
601
+ "widthEmu": "25400",
602
+ "color": "1B3A5C",
603
+ "style": "solid"
604
+ }
605
+ },
606
+ "colSpan": "1",
607
+ "rowSpan": "1",
608
+ "merged": "none"
609
+ }
610
+ },
611
+ {
612
+ "id": "0009-precedence-table-layer",
613
+ "title": "Precedence 1 of 5: a table-level colour reaches a body cell",
614
+ "since": "0.7.0",
615
+ "fn": "resolvedCell",
616
+ "input": {
617
+ "element": {
618
+ "type": "table",
619
+ "w": 0.9,
620
+ "columns": [
621
+ {
622
+ "key": "a",
623
+ "label": "A"
624
+ }
625
+ ],
626
+ "rows": [
627
+ {
628
+ "a": "1"
629
+ }
630
+ ],
631
+ "style": {
632
+ "color": "#111111"
633
+ }
634
+ },
635
+ "theme": [],
636
+ "row": 1,
637
+ "col": 0
638
+ },
639
+ "expected": {
640
+ "text": "1",
641
+ "bold": "0",
642
+ "italic": "0",
643
+ "underline": "0",
644
+ "color": "111111",
645
+ "fill": null,
646
+ "align": "left",
647
+ "anchor": "middle",
648
+ "fontSizeHundredths": "1400",
649
+ "letterSpacingHundredths": "0",
650
+ "caps": "none",
651
+ "padding": {
652
+ "left": "91440",
653
+ "right": "91440",
654
+ "top": "45720",
655
+ "bottom": "45720"
656
+ },
657
+ "borders": {
658
+ "left": {
659
+ "widthEmu": "9525",
660
+ "color": "D9DEE4",
661
+ "style": "solid"
662
+ },
663
+ "right": {
664
+ "widthEmu": "9525",
665
+ "color": "D9DEE4",
666
+ "style": "solid"
667
+ },
668
+ "top": {
669
+ "widthEmu": "9525",
670
+ "color": "D9DEE4",
671
+ "style": "solid"
672
+ },
673
+ "bottom": {
674
+ "widthEmu": "9525",
675
+ "color": "D9DEE4",
676
+ "style": "solid"
677
+ }
678
+ },
679
+ "colSpan": "1",
680
+ "rowSpan": "1",
681
+ "merged": "none"
682
+ }
683
+ },
684
+ {
685
+ "id": "0010-precedence-band-beats-table",
686
+ "title": "Precedence 2 of 5: the header band beats the table layer",
687
+ "since": "0.7.0",
688
+ "fn": "resolvedCell",
689
+ "input": {
690
+ "element": {
691
+ "type": "table",
692
+ "w": 0.9,
693
+ "columns": [
694
+ {
695
+ "key": "a",
696
+ "label": "A"
697
+ }
698
+ ],
699
+ "rows": [
700
+ {
701
+ "a": "1"
702
+ }
703
+ ],
704
+ "style": {
705
+ "color": "#111111",
706
+ "header": {
707
+ "color": "#222222"
708
+ }
709
+ }
710
+ },
711
+ "theme": [],
712
+ "row": 0,
713
+ "col": 0
714
+ },
715
+ "expected": {
716
+ "text": "A",
717
+ "bold": "1",
718
+ "italic": "0",
719
+ "underline": "0",
720
+ "color": "222222",
721
+ "fill": "8B5CF6",
722
+ "align": "left",
723
+ "anchor": "middle",
724
+ "fontSizeHundredths": "1400",
725
+ "letterSpacingHundredths": "0",
726
+ "caps": "none",
727
+ "padding": {
728
+ "left": "91440",
729
+ "right": "91440",
730
+ "top": "45720",
731
+ "bottom": "45720"
732
+ },
733
+ "borders": {
734
+ "left": {
735
+ "widthEmu": "9525",
736
+ "color": "D9DEE4",
737
+ "style": "solid"
738
+ },
739
+ "right": {
740
+ "widthEmu": "9525",
741
+ "color": "D9DEE4",
742
+ "style": "solid"
743
+ },
744
+ "top": {
745
+ "widthEmu": "9525",
746
+ "color": "D9DEE4",
747
+ "style": "solid"
748
+ },
749
+ "bottom": {
750
+ "widthEmu": "9525",
751
+ "color": "D9DEE4",
752
+ "style": "solid"
753
+ }
754
+ },
755
+ "colSpan": "1",
756
+ "rowSpan": "1",
757
+ "merged": "none"
758
+ }
759
+ },
760
+ {
761
+ "id": "0011-precedence-column-beats-band",
762
+ "title": "Precedence 3 of 5: a column's alignment beats the band's",
763
+ "since": "0.7.0",
764
+ "fn": "resolvedCell",
765
+ "input": {
766
+ "element": {
767
+ "type": "table",
768
+ "w": 0.9,
769
+ "columns": [
770
+ {
771
+ "key": "a",
772
+ "label": "A",
773
+ "align": "right"
774
+ }
775
+ ],
776
+ "rows": [
777
+ {
778
+ "a": "1"
779
+ }
780
+ ],
781
+ "style": {
782
+ "align": "left",
783
+ "header": {
784
+ "align": "center"
785
+ }
786
+ }
787
+ },
788
+ "theme": [],
789
+ "row": 0,
790
+ "col": 0
791
+ },
792
+ "expected": {
793
+ "text": "A",
794
+ "bold": "1",
795
+ "italic": "0",
796
+ "underline": "0",
797
+ "color": "FFFFFF",
798
+ "fill": "8B5CF6",
799
+ "align": "right",
800
+ "anchor": "middle",
801
+ "fontSizeHundredths": "1400",
802
+ "letterSpacingHundredths": "0",
803
+ "caps": "none",
804
+ "padding": {
805
+ "left": "91440",
806
+ "right": "91440",
807
+ "top": "45720",
808
+ "bottom": "45720"
809
+ },
810
+ "borders": {
811
+ "left": {
812
+ "widthEmu": "9525",
813
+ "color": "D9DEE4",
814
+ "style": "solid"
815
+ },
816
+ "right": {
817
+ "widthEmu": "9525",
818
+ "color": "D9DEE4",
819
+ "style": "solid"
820
+ },
821
+ "top": {
822
+ "widthEmu": "9525",
823
+ "color": "D9DEE4",
824
+ "style": "solid"
825
+ },
826
+ "bottom": {
827
+ "widthEmu": "9525",
828
+ "color": "D9DEE4",
829
+ "style": "solid"
830
+ }
831
+ },
832
+ "colSpan": "1",
833
+ "rowSpan": "1",
834
+ "merged": "none"
835
+ }
836
+ },
837
+ {
838
+ "id": "0012-precedence-row-beats-column",
839
+ "title": "Precedence 4 of 5: the row beats the column",
840
+ "since": "0.7.0",
841
+ "fn": "resolvedCell",
842
+ "input": {
843
+ "element": {
844
+ "type": "table",
845
+ "w": 0.9,
846
+ "columns": [
847
+ {
848
+ "key": "a",
849
+ "label": "A",
850
+ "align": "right"
851
+ }
852
+ ],
853
+ "rows": [
854
+ {
855
+ "cells": {
856
+ "a": "1"
857
+ },
858
+ "align": "center"
859
+ }
860
+ ],
861
+ "style": []
862
+ },
863
+ "theme": [],
864
+ "row": 1,
865
+ "col": 0
866
+ },
867
+ "expected": {
868
+ "text": "1",
869
+ "bold": "0",
870
+ "italic": "0",
871
+ "underline": "0",
872
+ "color": "0F172A",
873
+ "fill": null,
874
+ "align": "center",
875
+ "anchor": "middle",
876
+ "fontSizeHundredths": "1400",
877
+ "letterSpacingHundredths": "0",
878
+ "caps": "none",
879
+ "padding": {
880
+ "left": "91440",
881
+ "right": "91440",
882
+ "top": "45720",
883
+ "bottom": "45720"
884
+ },
885
+ "borders": {
886
+ "left": {
887
+ "widthEmu": "9525",
888
+ "color": "D9DEE4",
889
+ "style": "solid"
890
+ },
891
+ "right": {
892
+ "widthEmu": "9525",
893
+ "color": "D9DEE4",
894
+ "style": "solid"
895
+ },
896
+ "top": {
897
+ "widthEmu": "9525",
898
+ "color": "D9DEE4",
899
+ "style": "solid"
900
+ },
901
+ "bottom": {
902
+ "widthEmu": "9525",
903
+ "color": "D9DEE4",
904
+ "style": "solid"
905
+ }
906
+ },
907
+ "colSpan": "1",
908
+ "rowSpan": "1",
909
+ "merged": "none"
910
+ }
911
+ },
912
+ {
913
+ "id": "0013-precedence-cell-beats-row",
914
+ "title": "Precedence 5 of 5: the cell beats the row",
915
+ "since": "0.7.0",
916
+ "fn": "resolvedCell",
917
+ "input": {
918
+ "element": {
919
+ "type": "table",
920
+ "w": 0.9,
921
+ "columns": [
922
+ {
923
+ "key": "a",
924
+ "label": "A"
925
+ }
926
+ ],
927
+ "rows": [
928
+ {
929
+ "cells": {
930
+ "a": {
931
+ "text": "1",
932
+ "color": "#B91C1C"
933
+ }
934
+ },
935
+ "color": "#334155"
936
+ }
937
+ ],
938
+ "style": []
939
+ },
940
+ "theme": [],
941
+ "row": 1,
942
+ "col": 0
943
+ },
944
+ "expected": {
945
+ "text": "1",
946
+ "bold": "0",
947
+ "italic": "0",
948
+ "underline": "0",
949
+ "color": "B91C1C",
950
+ "fill": null,
951
+ "align": "left",
952
+ "anchor": "middle",
953
+ "fontSizeHundredths": "1400",
954
+ "letterSpacingHundredths": "0",
955
+ "caps": "none",
956
+ "padding": {
957
+ "left": "91440",
958
+ "right": "91440",
959
+ "top": "45720",
960
+ "bottom": "45720"
961
+ },
962
+ "borders": {
963
+ "left": {
964
+ "widthEmu": "9525",
965
+ "color": "D9DEE4",
966
+ "style": "solid"
967
+ },
968
+ "right": {
969
+ "widthEmu": "9525",
970
+ "color": "D9DEE4",
971
+ "style": "solid"
972
+ },
973
+ "top": {
974
+ "widthEmu": "9525",
975
+ "color": "D9DEE4",
976
+ "style": "solid"
977
+ },
978
+ "bottom": {
979
+ "widthEmu": "9525",
980
+ "color": "D9DEE4",
981
+ "style": "solid"
982
+ }
983
+ },
984
+ "colSpan": "1",
985
+ "rowSpan": "1",
986
+ "merged": "none"
987
+ }
988
+ },
989
+ {
990
+ "id": "0014-a-total-row-in-its-own-fill",
991
+ "title": "The highlighted total row: row-level fill, colour and weight together",
992
+ "since": "0.7.0",
993
+ "notes": "The construct the whole capability was built for. It is one row-level layer, not a special case anywhere in the engine.",
994
+ "fn": "resolvedCell",
995
+ "input": {
996
+ "element": {
997
+ "type": "table",
998
+ "w": 0.9,
999
+ "columns": [
1000
+ {
1001
+ "key": "a",
1002
+ "label": "A"
1003
+ },
1004
+ {
1005
+ "key": "b",
1006
+ "label": "B"
1007
+ }
1008
+ ],
1009
+ "rows": [
1010
+ {
1011
+ "a": "1",
1012
+ "b": "2"
1013
+ },
1014
+ {
1015
+ "cells": {
1016
+ "a": "Total",
1017
+ "b": "$51,000"
1018
+ },
1019
+ "fill": "#0E7C86",
1020
+ "color": "#FFFFFF",
1021
+ "bold": true,
1022
+ "letterSpacing": 0.6
1023
+ }
1024
+ ],
1025
+ "style": {
1026
+ "stripe": {
1027
+ "fill": "#F1F5F9"
1028
+ }
1029
+ }
1030
+ },
1031
+ "theme": [],
1032
+ "row": 2,
1033
+ "col": 0
1034
+ },
1035
+ "expected": {
1036
+ "text": "Total",
1037
+ "bold": "1",
1038
+ "italic": "0",
1039
+ "underline": "0",
1040
+ "color": "FFFFFF",
1041
+ "fill": "0E7C86",
1042
+ "align": "left",
1043
+ "anchor": "middle",
1044
+ "fontSizeHundredths": "1400",
1045
+ "letterSpacingHundredths": "60",
1046
+ "caps": "none",
1047
+ "padding": {
1048
+ "left": "91440",
1049
+ "right": "91440",
1050
+ "top": "45720",
1051
+ "bottom": "45720"
1052
+ },
1053
+ "borders": {
1054
+ "left": {
1055
+ "widthEmu": "9525",
1056
+ "color": "D9DEE4",
1057
+ "style": "solid"
1058
+ },
1059
+ "right": {
1060
+ "widthEmu": "9525",
1061
+ "color": "D9DEE4",
1062
+ "style": "solid"
1063
+ },
1064
+ "top": {
1065
+ "widthEmu": "9525",
1066
+ "color": "D9DEE4",
1067
+ "style": "solid"
1068
+ },
1069
+ "bottom": {
1070
+ "widthEmu": "9525",
1071
+ "color": "D9DEE4",
1072
+ "style": "solid"
1073
+ }
1074
+ },
1075
+ "colSpan": "1",
1076
+ "rowSpan": "1",
1077
+ "merged": "none"
1078
+ }
1079
+ },
1080
+ {
1081
+ "id": "0015-padding-scalar-and-per-side",
1082
+ "title": "Per-side padding overrides only the sides it names",
1083
+ "since": "0.7.0",
1084
+ "fn": "resolvedCell",
1085
+ "input": {
1086
+ "element": {
1087
+ "type": "table",
1088
+ "w": 0.9,
1089
+ "columns": [
1090
+ {
1091
+ "key": "a",
1092
+ "label": "A"
1093
+ }
1094
+ ],
1095
+ "rows": [
1096
+ {
1097
+ "a": "1"
1098
+ }
1099
+ ],
1100
+ "style": {
1101
+ "padding": {
1102
+ "left": 12,
1103
+ "top": 3
1104
+ }
1105
+ }
1106
+ },
1107
+ "theme": [],
1108
+ "row": 1,
1109
+ "col": 0
1110
+ },
1111
+ "expected": {
1112
+ "text": "1",
1113
+ "bold": "0",
1114
+ "italic": "0",
1115
+ "underline": "0",
1116
+ "color": "0F172A",
1117
+ "fill": null,
1118
+ "align": "left",
1119
+ "anchor": "middle",
1120
+ "fontSizeHundredths": "1400",
1121
+ "letterSpacingHundredths": "0",
1122
+ "caps": "none",
1123
+ "padding": {
1124
+ "left": "152400",
1125
+ "right": "91440",
1126
+ "top": "38100",
1127
+ "bottom": "45720"
1128
+ },
1129
+ "borders": {
1130
+ "left": {
1131
+ "widthEmu": "9525",
1132
+ "color": "D9DEE4",
1133
+ "style": "solid"
1134
+ },
1135
+ "right": {
1136
+ "widthEmu": "9525",
1137
+ "color": "D9DEE4",
1138
+ "style": "solid"
1139
+ },
1140
+ "top": {
1141
+ "widthEmu": "9525",
1142
+ "color": "D9DEE4",
1143
+ "style": "solid"
1144
+ },
1145
+ "bottom": {
1146
+ "widthEmu": "9525",
1147
+ "color": "D9DEE4",
1148
+ "style": "solid"
1149
+ }
1150
+ },
1151
+ "colSpan": "1",
1152
+ "rowSpan": "1",
1153
+ "merged": "none"
1154
+ }
1155
+ },
1156
+ {
1157
+ "id": "0016-a-row-turns-one-border-off-against-a-live-table-spec",
1158
+ "title": "A row drops its bottom rule while the table still asks for one",
1159
+ "since": "0.7.0",
1160
+ "notes": "This is how a KPI figure and its caption become one visual cell. If a port merges border specs instead of REPLACING at each layer, the bottom rule survives and the band grows a line through the middle.",
1161
+ "fn": "resolvedCell",
1162
+ "input": {
1163
+ "element": {
1164
+ "type": "table",
1165
+ "w": 0.9,
1166
+ "columns": [
1167
+ {
1168
+ "key": "a",
1169
+ "label": "A"
1170
+ }
1171
+ ],
1172
+ "rows": [
1173
+ {
1174
+ "cells": {
1175
+ "a": "1"
1176
+ },
1177
+ "borders": {
1178
+ "inner": {
1179
+ "width": 0.75,
1180
+ "color": "#D9DEE4"
1181
+ },
1182
+ "outer": {
1183
+ "width": 0.75,
1184
+ "color": "#D9DEE4"
1185
+ },
1186
+ "bottom": false
1187
+ }
1188
+ }
1189
+ ],
1190
+ "style": {
1191
+ "header": false,
1192
+ "borders": {
1193
+ "all": {
1194
+ "width": 2,
1195
+ "color": "#000000"
1196
+ }
1197
+ }
1198
+ }
1199
+ },
1200
+ "theme": [],
1201
+ "row": 0,
1202
+ "col": 0
1203
+ },
1204
+ "expected": {
1205
+ "text": "1",
1206
+ "bold": "0",
1207
+ "italic": "0",
1208
+ "underline": "0",
1209
+ "color": "0F172A",
1210
+ "fill": null,
1211
+ "align": "left",
1212
+ "anchor": "middle",
1213
+ "fontSizeHundredths": "1400",
1214
+ "letterSpacingHundredths": "0",
1215
+ "caps": "none",
1216
+ "padding": {
1217
+ "left": "91440",
1218
+ "right": "91440",
1219
+ "top": "45720",
1220
+ "bottom": "45720"
1221
+ },
1222
+ "borders": {
1223
+ "left": {
1224
+ "widthEmu": "9525",
1225
+ "color": "D9DEE4",
1226
+ "style": "solid"
1227
+ },
1228
+ "right": {
1229
+ "widthEmu": "9525",
1230
+ "color": "D9DEE4",
1231
+ "style": "solid"
1232
+ },
1233
+ "top": {
1234
+ "widthEmu": "9525",
1235
+ "color": "D9DEE4",
1236
+ "style": "solid"
1237
+ },
1238
+ "bottom": null
1239
+ },
1240
+ "colSpan": "1",
1241
+ "rowSpan": "1",
1242
+ "merged": "none"
1243
+ }
1244
+ },
1245
+ {
1246
+ "id": "0017-grid-widths-as-weights",
1247
+ "title": "Column widths given as weights, summing to the table exactly",
1248
+ "since": "0.7.0",
1249
+ "fn": "gridWidthsEmu",
1250
+ "input": {
1251
+ "element": {
1252
+ "type": "table",
1253
+ "w": 0.9,
1254
+ "columns": [
1255
+ {
1256
+ "key": "a",
1257
+ "label": "A",
1258
+ "width": 2.4
1259
+ },
1260
+ {
1261
+ "key": "b",
1262
+ "label": "B",
1263
+ "width": 1.3
1264
+ },
1265
+ {
1266
+ "key": "c",
1267
+ "label": "C",
1268
+ "width": 1.6
1269
+ },
1270
+ {
1271
+ "key": "d",
1272
+ "label": "D",
1273
+ "width": 1.3
1274
+ }
1275
+ ],
1276
+ "rows": []
1277
+ },
1278
+ "theme": [],
1279
+ "totalEmu": 8229600
1280
+ },
1281
+ "expected": [
1282
+ "2992582",
1283
+ "1620982",
1284
+ "1995054",
1285
+ "1620982"
1286
+ ]
1287
+ },
1288
+ {
1289
+ "id": "0018-grid-widths-as-fractions-with-a-remainder",
1290
+ "title": "Widths <= 1 are fractions; undeclared columns share what is left",
1291
+ "since": "0.7.0",
1292
+ "notes": "The mode boundary is at exactly 1.0, so this row's 0.5 stays in fraction mode while 0017's 2.4 does not.",
1293
+ "fn": "gridWidthsEmu",
1294
+ "input": {
1295
+ "element": {
1296
+ "type": "table",
1297
+ "w": 0.9,
1298
+ "columns": [
1299
+ {
1300
+ "key": "a",
1301
+ "label": "A",
1302
+ "width": 0.5
1303
+ },
1304
+ {
1305
+ "key": "b",
1306
+ "label": "B"
1307
+ },
1308
+ {
1309
+ "key": "c",
1310
+ "label": "C"
1311
+ }
1312
+ ],
1313
+ "rows": []
1314
+ },
1315
+ "theme": [],
1316
+ "totalEmu": 8229600
1317
+ },
1318
+ "expected": [
1319
+ "4114800",
1320
+ "2057400",
1321
+ "2057400"
1322
+ ]
1323
+ },
1324
+ {
1325
+ "id": "0019-grid-widths-that-independent-rounding-gets-wrong",
1326
+ "title": "Three equal columns over a total that does not divide by three",
1327
+ "since": "0.7.0",
1328
+ "notes": "8229601 / 3 rounded independently gives three columns that do not sum to the total. Accumulating and differencing does. The golden is the accumulated answer; if a port matches every other width row and fails this one, that is the bug.",
1329
+ "fn": "gridWidthsEmu",
1330
+ "input": {
1331
+ "element": {
1332
+ "type": "table",
1333
+ "w": 0.9,
1334
+ "columns": [
1335
+ {
1336
+ "key": "a",
1337
+ "label": "A"
1338
+ },
1339
+ {
1340
+ "key": "b",
1341
+ "label": "B"
1342
+ },
1343
+ {
1344
+ "key": "c",
1345
+ "label": "C"
1346
+ }
1347
+ ],
1348
+ "rows": []
1349
+ },
1350
+ "theme": [],
1351
+ "totalEmu": 8229601
1352
+ },
1353
+ "expected": [
1354
+ "2743200",
1355
+ "2743201",
1356
+ "2743200"
1357
+ ]
1358
+ },
1359
+ {
1360
+ "id": "0020-colspan-is-clamped-to-the-grid",
1361
+ "title": "A colSpan wider than the table is clamped, not emitted",
1362
+ "since": "0.7.0",
1363
+ "fn": "resolvedCell",
1364
+ "input": {
1365
+ "element": {
1366
+ "type": "table",
1367
+ "w": 0.9,
1368
+ "columns": [
1369
+ {
1370
+ "key": "a",
1371
+ "label": "A"
1372
+ },
1373
+ {
1374
+ "key": "b",
1375
+ "label": "B"
1376
+ }
1377
+ ],
1378
+ "rows": [
1379
+ {
1380
+ "cells": {
1381
+ "a": {
1382
+ "text": "wide",
1383
+ "colSpan": 99
1384
+ }
1385
+ }
1386
+ }
1387
+ ],
1388
+ "style": {
1389
+ "header": false
1390
+ }
1391
+ },
1392
+ "theme": [],
1393
+ "row": 0,
1394
+ "col": 0
1395
+ },
1396
+ "expected": {
1397
+ "text": "wide",
1398
+ "bold": "0",
1399
+ "italic": "0",
1400
+ "underline": "0",
1401
+ "color": "0F172A",
1402
+ "fill": null,
1403
+ "align": "left",
1404
+ "anchor": "middle",
1405
+ "fontSizeHundredths": "1400",
1406
+ "letterSpacingHundredths": "0",
1407
+ "caps": "none",
1408
+ "padding": {
1409
+ "left": "91440",
1410
+ "right": "91440",
1411
+ "top": "45720",
1412
+ "bottom": "45720"
1413
+ },
1414
+ "borders": {
1415
+ "left": {
1416
+ "widthEmu": "9525",
1417
+ "color": "D9DEE4",
1418
+ "style": "solid"
1419
+ },
1420
+ "right": {
1421
+ "widthEmu": "9525",
1422
+ "color": "D9DEE4",
1423
+ "style": "solid"
1424
+ },
1425
+ "top": {
1426
+ "widthEmu": "9525",
1427
+ "color": "D9DEE4",
1428
+ "style": "solid"
1429
+ },
1430
+ "bottom": {
1431
+ "widthEmu": "9525",
1432
+ "color": "D9DEE4",
1433
+ "style": "solid"
1434
+ }
1435
+ },
1436
+ "colSpan": "2",
1437
+ "rowSpan": "1",
1438
+ "merged": "none"
1439
+ }
1440
+ },
1441
+ {
1442
+ "id": "0021-the-cell-a-colspan-swallows-is-still-emitted",
1443
+ "title": "The covered cell carries `merged` and an empty text, and is not dropped",
1444
+ "since": "0.7.0",
1445
+ "notes": "A row with fewer cells than the grid declares is a corrupt file, not a narrow table.",
1446
+ "fn": "resolvedCell",
1447
+ "input": {
1448
+ "element": {
1449
+ "type": "table",
1450
+ "w": 0.9,
1451
+ "columns": [
1452
+ {
1453
+ "key": "a",
1454
+ "label": "A"
1455
+ },
1456
+ {
1457
+ "key": "b",
1458
+ "label": "B"
1459
+ }
1460
+ ],
1461
+ "rows": [
1462
+ {
1463
+ "cells": {
1464
+ "a": {
1465
+ "text": "wide",
1466
+ "colSpan": 2
1467
+ },
1468
+ "b": "swallowed"
1469
+ }
1470
+ }
1471
+ ],
1472
+ "style": {
1473
+ "header": false
1474
+ }
1475
+ },
1476
+ "theme": [],
1477
+ "row": 0,
1478
+ "col": 1
1479
+ },
1480
+ "expected": {
1481
+ "text": "",
1482
+ "bold": "0",
1483
+ "italic": "0",
1484
+ "underline": "0",
1485
+ "color": "0F172A",
1486
+ "fill": null,
1487
+ "align": "left",
1488
+ "anchor": "middle",
1489
+ "fontSizeHundredths": "1400",
1490
+ "letterSpacingHundredths": "0",
1491
+ "caps": "none",
1492
+ "padding": {
1493
+ "left": "91440",
1494
+ "right": "91440",
1495
+ "top": "45720",
1496
+ "bottom": "45720"
1497
+ },
1498
+ "borders": {
1499
+ "left": {
1500
+ "widthEmu": "9525",
1501
+ "color": "D9DEE4",
1502
+ "style": "solid"
1503
+ },
1504
+ "right": {
1505
+ "widthEmu": "9525",
1506
+ "color": "D9DEE4",
1507
+ "style": "solid"
1508
+ },
1509
+ "top": {
1510
+ "widthEmu": "9525",
1511
+ "color": "D9DEE4",
1512
+ "style": "solid"
1513
+ },
1514
+ "bottom": {
1515
+ "widthEmu": "9525",
1516
+ "color": "D9DEE4",
1517
+ "style": "solid"
1518
+ }
1519
+ },
1520
+ "colSpan": "1",
1521
+ "rowSpan": "1",
1522
+ "merged": "horizontal"
1523
+ }
1524
+ },
1525
+ {
1526
+ "id": "0022-rowspan-marks-the-cell-below",
1527
+ "title": "A rowSpan marks the cell beneath it as a vertical continuation",
1528
+ "since": "0.7.0",
1529
+ "fn": "resolvedCell",
1530
+ "input": {
1531
+ "element": {
1532
+ "type": "table",
1533
+ "w": 0.9,
1534
+ "columns": [
1535
+ {
1536
+ "key": "a",
1537
+ "label": "A"
1538
+ },
1539
+ {
1540
+ "key": "b",
1541
+ "label": "B"
1542
+ }
1543
+ ],
1544
+ "rows": [
1545
+ {
1546
+ "cells": {
1547
+ "a": {
1548
+ "text": "tall",
1549
+ "rowSpan": 2
1550
+ },
1551
+ "b": "1"
1552
+ }
1553
+ },
1554
+ {
1555
+ "b": "2"
1556
+ }
1557
+ ],
1558
+ "style": {
1559
+ "header": false
1560
+ }
1561
+ },
1562
+ "theme": [],
1563
+ "row": 1,
1564
+ "col": 0
1565
+ },
1566
+ "expected": {
1567
+ "text": "",
1568
+ "bold": "0",
1569
+ "italic": "0",
1570
+ "underline": "0",
1571
+ "color": "0F172A",
1572
+ "fill": "F8FAFC",
1573
+ "align": "left",
1574
+ "anchor": "middle",
1575
+ "fontSizeHundredths": "1400",
1576
+ "letterSpacingHundredths": "0",
1577
+ "caps": "none",
1578
+ "padding": {
1579
+ "left": "91440",
1580
+ "right": "91440",
1581
+ "top": "45720",
1582
+ "bottom": "45720"
1583
+ },
1584
+ "borders": {
1585
+ "left": {
1586
+ "widthEmu": "9525",
1587
+ "color": "D9DEE4",
1588
+ "style": "solid"
1589
+ },
1590
+ "right": {
1591
+ "widthEmu": "9525",
1592
+ "color": "D9DEE4",
1593
+ "style": "solid"
1594
+ },
1595
+ "top": {
1596
+ "widthEmu": "9525",
1597
+ "color": "D9DEE4",
1598
+ "style": "solid"
1599
+ },
1600
+ "bottom": {
1601
+ "widthEmu": "9525",
1602
+ "color": "D9DEE4",
1603
+ "style": "solid"
1604
+ }
1605
+ },
1606
+ "colSpan": "1",
1607
+ "rowSpan": "1",
1608
+ "merged": "vertical"
1609
+ }
1610
+ },
1611
+ {
1612
+ "id": "0023-letter-spacing-and-small-caps",
1613
+ "title": "Letter spacing and capitalisation reach a cell run",
1614
+ "since": "0.7.0",
1615
+ "fn": "resolvedCell",
1616
+ "input": {
1617
+ "element": {
1618
+ "type": "table",
1619
+ "w": 0.9,
1620
+ "columns": [
1621
+ {
1622
+ "key": "a",
1623
+ "label": "Prepared by"
1624
+ }
1625
+ ],
1626
+ "rows": [
1627
+ {
1628
+ "a": "1"
1629
+ }
1630
+ ],
1631
+ "style": {
1632
+ "header": {
1633
+ "letterSpacing": 1.2,
1634
+ "caps": "small"
1635
+ }
1636
+ }
1637
+ },
1638
+ "theme": [],
1639
+ "row": 0,
1640
+ "col": 0
1641
+ },
1642
+ "expected": {
1643
+ "text": "Prepared by",
1644
+ "bold": "1",
1645
+ "italic": "0",
1646
+ "underline": "0",
1647
+ "color": "FFFFFF",
1648
+ "fill": "8B5CF6",
1649
+ "align": "left",
1650
+ "anchor": "middle",
1651
+ "fontSizeHundredths": "1400",
1652
+ "letterSpacingHundredths": "120",
1653
+ "caps": "small",
1654
+ "padding": {
1655
+ "left": "91440",
1656
+ "right": "91440",
1657
+ "top": "45720",
1658
+ "bottom": "45720"
1659
+ },
1660
+ "borders": {
1661
+ "left": {
1662
+ "widthEmu": "9525",
1663
+ "color": "D9DEE4",
1664
+ "style": "solid"
1665
+ },
1666
+ "right": {
1667
+ "widthEmu": "9525",
1668
+ "color": "D9DEE4",
1669
+ "style": "solid"
1670
+ },
1671
+ "top": {
1672
+ "widthEmu": "9525",
1673
+ "color": "D9DEE4",
1674
+ "style": "solid"
1675
+ },
1676
+ "bottom": {
1677
+ "widthEmu": "9525",
1678
+ "color": "D9DEE4",
1679
+ "style": "solid"
1680
+ }
1681
+ },
1682
+ "colSpan": "1",
1683
+ "rowSpan": "1",
1684
+ "merged": "none"
1685
+ }
1686
+ },
1687
+ {
1688
+ "id": "0024-an-object-cell-without-spec-keys-is-still-json",
1689
+ "title": "A nested value an agent meant to DISPLAY is not silently emptied",
1690
+ "since": "0.7.0",
1691
+ "notes": "Object cells used to be JSON-encoded into the text. Reading every object as a cell spec would turn a genuine nested value into a blank cell, so only objects carrying a spec key are treated as one.",
1692
+ "fn": "resolvedCell",
1693
+ "input": {
1694
+ "element": {
1695
+ "type": "table",
1696
+ "w": 0.9,
1697
+ "columns": [
1698
+ {
1699
+ "key": "a",
1700
+ "label": "A"
1701
+ }
1702
+ ],
1703
+ "rows": [
1704
+ {
1705
+ "a": {
1706
+ "nested": "value"
1707
+ }
1708
+ }
1709
+ ],
1710
+ "style": {
1711
+ "header": false
1712
+ }
1713
+ },
1714
+ "theme": [],
1715
+ "row": 0,
1716
+ "col": 0
1717
+ },
1718
+ "expected": {
1719
+ "text": "{\"nested\":\"value\"}",
1720
+ "bold": "0",
1721
+ "italic": "0",
1722
+ "underline": "0",
1723
+ "color": "0F172A",
1724
+ "fill": null,
1725
+ "align": "left",
1726
+ "anchor": "middle",
1727
+ "fontSizeHundredths": "1400",
1728
+ "letterSpacingHundredths": "0",
1729
+ "caps": "none",
1730
+ "padding": {
1731
+ "left": "91440",
1732
+ "right": "91440",
1733
+ "top": "45720",
1734
+ "bottom": "45720"
1735
+ },
1736
+ "borders": {
1737
+ "left": {
1738
+ "widthEmu": "9525",
1739
+ "color": "D9DEE4",
1740
+ "style": "solid"
1741
+ },
1742
+ "right": {
1743
+ "widthEmu": "9525",
1744
+ "color": "D9DEE4",
1745
+ "style": "solid"
1746
+ },
1747
+ "top": {
1748
+ "widthEmu": "9525",
1749
+ "color": "D9DEE4",
1750
+ "style": "solid"
1751
+ },
1752
+ "bottom": {
1753
+ "widthEmu": "9525",
1754
+ "color": "D9DEE4",
1755
+ "style": "solid"
1756
+ }
1757
+ },
1758
+ "colSpan": "1",
1759
+ "rowSpan": "1",
1760
+ "merged": "none"
1761
+ }
1762
+ },
1763
+ {
1764
+ "id": "0025-header-false-makes-row-zero-data",
1765
+ "title": "With no header, grid row 0 is the first DATA row",
1766
+ "since": "0.7.0",
1767
+ "notes": "Every metadataGrid and kpiBand is a header-less table, so this is the common case rather than a corner.",
1768
+ "fn": "resolvedCell",
1769
+ "input": {
1770
+ "element": {
1771
+ "type": "table",
1772
+ "w": 0.9,
1773
+ "columns": [
1774
+ {
1775
+ "key": "a",
1776
+ "label": "Ignored"
1777
+ }
1778
+ ],
1779
+ "rows": [
1780
+ {
1781
+ "a": "first"
1782
+ }
1783
+ ],
1784
+ "style": {
1785
+ "header": false
1786
+ }
1787
+ },
1788
+ "theme": [],
1789
+ "row": 0,
1790
+ "col": 0
1791
+ },
1792
+ "expected": {
1793
+ "text": "first",
1794
+ "bold": "0",
1795
+ "italic": "0",
1796
+ "underline": "0",
1797
+ "color": "0F172A",
1798
+ "fill": null,
1799
+ "align": "left",
1800
+ "anchor": "middle",
1801
+ "fontSizeHundredths": "1400",
1802
+ "letterSpacingHundredths": "0",
1803
+ "caps": "none",
1804
+ "padding": {
1805
+ "left": "91440",
1806
+ "right": "91440",
1807
+ "top": "45720",
1808
+ "bottom": "45720"
1809
+ },
1810
+ "borders": {
1811
+ "left": {
1812
+ "widthEmu": "9525",
1813
+ "color": "D9DEE4",
1814
+ "style": "solid"
1815
+ },
1816
+ "right": {
1817
+ "widthEmu": "9525",
1818
+ "color": "D9DEE4",
1819
+ "style": "solid"
1820
+ },
1821
+ "top": {
1822
+ "widthEmu": "9525",
1823
+ "color": "D9DEE4",
1824
+ "style": "solid"
1825
+ },
1826
+ "bottom": {
1827
+ "widthEmu": "9525",
1828
+ "color": "D9DEE4",
1829
+ "style": "solid"
1830
+ }
1831
+ },
1832
+ "colSpan": "1",
1833
+ "rowSpan": "1",
1834
+ "merged": "none"
1835
+ }
1836
+ },
1837
+ {
1838
+ "id": "0026-font-size-is-halved-into-points",
1839
+ "title": "A table's fontSize is halved into points, as it is everywhere else in the schema",
1840
+ "since": "0.7.0",
1841
+ "notes": "The halving is a schema-wide convention (fancy-slides designs against a 1920px width), not a table quirk. A port that takes the number as points renders every table at double size and nothing else disagrees.",
1842
+ "fn": "resolvedCell",
1843
+ "input": {
1844
+ "element": {
1845
+ "type": "table",
1846
+ "w": 0.9,
1847
+ "columns": [
1848
+ {
1849
+ "key": "a",
1850
+ "label": "A"
1851
+ }
1852
+ ],
1853
+ "rows": [
1854
+ {
1855
+ "a": "1"
1856
+ }
1857
+ ],
1858
+ "style": {
1859
+ "fontSize": 26
1860
+ }
1861
+ },
1862
+ "theme": [],
1863
+ "row": 1,
1864
+ "col": 0
1865
+ },
1866
+ "expected": {
1867
+ "text": "1",
1868
+ "bold": "0",
1869
+ "italic": "0",
1870
+ "underline": "0",
1871
+ "color": "0F172A",
1872
+ "fill": null,
1873
+ "align": "left",
1874
+ "anchor": "middle",
1875
+ "fontSizeHundredths": "1300",
1876
+ "letterSpacingHundredths": "0",
1877
+ "caps": "none",
1878
+ "padding": {
1879
+ "left": "91440",
1880
+ "right": "91440",
1881
+ "top": "45720",
1882
+ "bottom": "45720"
1883
+ },
1884
+ "borders": {
1885
+ "left": {
1886
+ "widthEmu": "9525",
1887
+ "color": "D9DEE4",
1888
+ "style": "solid"
1889
+ },
1890
+ "right": {
1891
+ "widthEmu": "9525",
1892
+ "color": "D9DEE4",
1893
+ "style": "solid"
1894
+ },
1895
+ "top": {
1896
+ "widthEmu": "9525",
1897
+ "color": "D9DEE4",
1898
+ "style": "solid"
1899
+ },
1900
+ "bottom": {
1901
+ "widthEmu": "9525",
1902
+ "color": "D9DEE4",
1903
+ "style": "solid"
1904
+ }
1905
+ },
1906
+ "colSpan": "1",
1907
+ "rowSpan": "1",
1908
+ "merged": "none"
1909
+ }
1910
+ }
1911
+ ]
1912
+ }