@arraypress/covers 1.3.1 → 1.5.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 (39) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +1 -1
  3. package/package.json +3 -2
  4. package/recipes/flyers/construction.json +36 -0
  5. package/recipes/flyers/fluted-poster.json +95 -0
  6. package/recipes/flyers/grid-poster.json +91 -0
  7. package/recipes/flyers/logofolio.json +60 -0
  8. package/recipes/flyers/pixel-mosaic.json +58 -0
  9. package/recipes/flyers/series-card.json +81 -0
  10. package/schema/recipe.schema.json +768 -4
  11. package/src/index.d.ts +9 -7
  12. package/src/json-recipe.js +5 -0
  13. package/src/layer-options.js +7 -3
  14. package/src/layers/construction.d.ts +34 -0
  15. package/src/layers/construction.js +137 -0
  16. package/src/layers/guides.d.ts +38 -0
  17. package/src/layers/guides.js +212 -0
  18. package/src/layers/index.d.ts +12 -0
  19. package/src/layers/index.js +6 -0
  20. package/src/layers/isolines.d.ts +21 -0
  21. package/src/layers/isolines.js +271 -0
  22. package/src/layers/mark-draw.d.ts +21 -0
  23. package/src/layers/mark-draw.js +93 -0
  24. package/src/layers/mark-geometry.d.ts +15 -0
  25. package/src/layers/mark-geometry.js +46 -0
  26. package/src/layers/marks.d.ts +25 -0
  27. package/src/layers/marks.js +102 -0
  28. package/src/layers/mosaic.d.ts +32 -0
  29. package/src/layers/mosaic.js +155 -0
  30. package/src/layers/outline.d.ts +26 -0
  31. package/src/layers/outline.js +105 -0
  32. package/src/layers.js +7 -6
  33. package/src/type/fallback.js +1 -1
  34. package/src/type/spans.d.ts +5 -1
  35. package/src/type/spans.js +26 -3
  36. package/src/type/symbols.d.ts +1 -1
  37. package/src/type/symbols.js +20 -2
  38. package/src/type/typeset.js +6 -2
  39. package/src/version.js +1 -1
@@ -370,6 +370,45 @@
370
370
  }
371
371
  }
372
372
  },
373
+ {
374
+ "type": "object",
375
+ "description": "To the nearest whole number.",
376
+ "required": [
377
+ "round"
378
+ ],
379
+ "additionalProperties": false,
380
+ "properties": {
381
+ "round": {
382
+ "$ref": "#/$defs/value"
383
+ }
384
+ }
385
+ },
386
+ {
387
+ "type": "object",
388
+ "description": "Down to a whole number.",
389
+ "required": [
390
+ "floor"
391
+ ],
392
+ "additionalProperties": false,
393
+ "properties": {
394
+ "floor": {
395
+ "$ref": "#/$defs/value"
396
+ }
397
+ }
398
+ },
399
+ {
400
+ "type": "object",
401
+ "description": "Up to a whole number.",
402
+ "required": [
403
+ "ceil"
404
+ ],
405
+ "additionalProperties": false,
406
+ "properties": {
407
+ "ceil": {
408
+ "$ref": "#/$defs/value"
409
+ }
410
+ }
411
+ },
373
412
  {
374
413
  "type": "object",
375
414
  "description": "[from, to, steps, amount?]: steps colours from one toward the other.",
@@ -670,6 +709,7 @@
670
709
  "pinch",
671
710
  "fisheye",
672
711
  "glass",
712
+ "fluted",
673
713
  "displace",
674
714
  "kaleidoscope",
675
715
  "mirror",
@@ -698,6 +738,7 @@
698
738
  "crt",
699
739
  "vhs",
700
740
  "jpeg",
741
+ "print",
701
742
  "newsprint",
702
743
  "chromatic",
703
744
  "rgbSplit",
@@ -2550,6 +2591,97 @@
2550
2591
  }
2551
2592
  }
2552
2593
  },
2594
+ {
2595
+ "if": {
2596
+ "properties": {
2597
+ "kind": {
2598
+ "const": "fluted"
2599
+ }
2600
+ },
2601
+ "required": [
2602
+ "kind"
2603
+ ]
2604
+ },
2605
+ "then": {
2606
+ "properties": {
2607
+ "preset": {
2608
+ "$ref": "#/$defs/value",
2609
+ "description": "fluted (default) | reeded-soft | reeded-deep | reeded-prism"
2610
+ },
2611
+ "profile": {
2612
+ "$ref": "#/$defs/value",
2613
+ "description": "concave (flutes: squeezed upright, legible) | convex (reeds: turned over)"
2614
+ },
2615
+ "ribs": {
2616
+ "$ref": "#/$defs/value",
2617
+ "description": "Count across the frame."
2618
+ },
2619
+ "width": {
2620
+ "$ref": "#/$defs/value",
2621
+ "description": "Length: each rib (wins over ribs)."
2622
+ },
2623
+ "refraction": {
2624
+ "$ref": "#/$defs/value",
2625
+ "description": "How strongly each rib bends what is behind it: how far its edge looks, in rib widths (about 1 legible; convex past 2: deep)."
2626
+ },
2627
+ "stretch": {
2628
+ "$ref": "#/$defs/value",
2629
+ "description": "Length: the defocus, smeared along the ribs (a little across), mostly at rib edges."
2630
+ },
2631
+ "chroma": {
2632
+ "$ref": "#/$defs/value",
2633
+ "description": "0–1+: colours parted where bright content meets a rib edge."
2634
+ },
2635
+ "ridge": {
2636
+ "$ref": "#/$defs/value",
2637
+ "description": "0–1: a specular kiss down each rib, only over bright content (about 0.1)."
2638
+ },
2639
+ "grain": {
2640
+ "$ref": "#/$defs/value",
2641
+ "description": "0–1."
2642
+ },
2643
+ "angle": {
2644
+ "$ref": "#/$defs/value",
2645
+ "description": "Degrees (0: upright ribs, 90: level)."
2646
+ },
2647
+ "seed": {
2648
+ "$ref": "#/$defs/value",
2649
+ "description": "Number or string."
2650
+ },
2651
+ "mask": {
2652
+ "$ref": "#/$defs/value",
2653
+ "description": "{ gradient: linear | radial | band, from, to, center, angle, aspect, invert, ease } or { layers, invert }: where the effect applies."
2654
+ },
2655
+ "colorSpace": {
2656
+ "$ref": "#/$defs/value",
2657
+ "description": "sRGB (default) | linearRGB: where filter primitives do their arithmetic."
2658
+ },
2659
+ "pad": {
2660
+ "$ref": "#/$defs/value",
2661
+ "description": "Filter region padding, a fraction of the canvas."
2662
+ }
2663
+ },
2664
+ "propertyNames": {
2665
+ "enum": [
2666
+ "preset",
2667
+ "profile",
2668
+ "ribs",
2669
+ "width",
2670
+ "refraction",
2671
+ "stretch",
2672
+ "chroma",
2673
+ "ridge",
2674
+ "grain",
2675
+ "angle",
2676
+ "seed",
2677
+ "kind",
2678
+ "mask",
2679
+ "colorSpace",
2680
+ "pad"
2681
+ ]
2682
+ }
2683
+ }
2684
+ },
2553
2685
  {
2554
2686
  "if": {
2555
2687
  "properties": {
@@ -4094,6 +4226,97 @@
4094
4226
  }
4095
4227
  }
4096
4228
  },
4229
+ {
4230
+ "if": {
4231
+ "properties": {
4232
+ "kind": {
4233
+ "const": "print"
4234
+ }
4235
+ },
4236
+ "required": [
4237
+ "kind"
4238
+ ]
4239
+ },
4240
+ "then": {
4241
+ "properties": {
4242
+ "finish": {
4243
+ "$ref": "#/$defs/value",
4244
+ "description": "letterpress (default) | riso | stamp"
4245
+ },
4246
+ "amount": {
4247
+ "$ref": "#/$defs/value",
4248
+ "description": "0–1+: scales breakup, specks, uneven, squeeze and grain. Default 1."
4249
+ },
4250
+ "rough": {
4251
+ "$ref": "#/$defs/value",
4252
+ "description": "Length: edge wobble."
4253
+ },
4254
+ "edge": {
4255
+ "$ref": "#/$defs/value",
4256
+ "description": "Length: how far in from the outline ink breaks up."
4257
+ },
4258
+ "breakup": {
4259
+ "$ref": "#/$defs/value",
4260
+ "description": "0–1."
4261
+ },
4262
+ "specks": {
4263
+ "$ref": "#/$defs/value",
4264
+ "description": "0–1: holes in the body."
4265
+ },
4266
+ "size": {
4267
+ "$ref": "#/$defs/value",
4268
+ "description": "Length: the speck and breakup scale."
4269
+ },
4270
+ "uneven": {
4271
+ "$ref": "#/$defs/value",
4272
+ "description": "0–1: coverage."
4273
+ },
4274
+ "squeeze": {
4275
+ "$ref": "#/$defs/value",
4276
+ "description": "0–1: a denser rim."
4277
+ },
4278
+ "grain": {
4279
+ "$ref": "#/$defs/value",
4280
+ "description": "0–1."
4281
+ },
4282
+ "seed": {
4283
+ "$ref": "#/$defs/value",
4284
+ "description": "Number."
4285
+ },
4286
+ "mask": {
4287
+ "$ref": "#/$defs/value",
4288
+ "description": "{ gradient: linear | radial | band, from, to, center, angle, aspect, invert, ease } or { layers, invert }: where the effect applies."
4289
+ },
4290
+ "colorSpace": {
4291
+ "$ref": "#/$defs/value",
4292
+ "description": "sRGB (default) | linearRGB: where filter primitives do their arithmetic."
4293
+ },
4294
+ "pad": {
4295
+ "$ref": "#/$defs/value",
4296
+ "description": "Filter region padding, a fraction of the canvas."
4297
+ }
4298
+ },
4299
+ "propertyNames": {
4300
+ "enum": [
4301
+ "finish",
4302
+ "amount",
4303
+ "rough",
4304
+ "edge",
4305
+ "breakup",
4306
+ "specks",
4307
+ "size",
4308
+ "uneven",
4309
+ "squeeze",
4310
+ "grain",
4311
+ "seed",
4312
+ "kind",
4313
+ "mask",
4314
+ "colorSpace",
4315
+ "pad"
4316
+ ]
4317
+ }
4318
+ }
4319
+ },
4097
4320
  {
4098
4321
  "if": {
4099
4322
  "properties": {
@@ -4838,7 +5061,11 @@
4838
5061
  "barcode",
4839
5062
  "perforation",
4840
5063
  "tear",
4841
- "texture"
5064
+ "texture",
5065
+ "mosaic",
5066
+ "marks",
5067
+ "outline",
5068
+ "construction"
4842
5069
  ]
4843
5070
  },
4844
5071
  "id": {
@@ -5682,7 +5909,7 @@
5682
5909
  },
5683
5910
  "divisions": {
5684
5911
  "$ref": "#/$defs/value",
5685
- "description": "Grid/lines: N equal cells (inner lines only) instead of size."
5912
+ "description": "Grid/lines: N equal cells (inner lines only) instead of size; [cols, rows] for a design grid."
5686
5913
  },
5687
5914
  "gaps": {
5688
5915
  "$ref": "#/$defs/value",
@@ -6056,7 +6283,7 @@
6056
6283
  "properties": {
6057
6284
  "content": {
6058
6285
  "$ref": "#/$defs/value",
6059
- "description": "The text (\"{title}\")."
6286
+ "description": "The text (\"{title}\"); an array is a line per item, an item may be a span ({ content, bold })."
6060
6287
  },
6061
6288
  "font": {
6062
6289
  "$ref": "#/$defs/value",
@@ -6066,6 +6293,10 @@
6066
6293
  "$ref": "#/$defs/value",
6067
6294
  "description": "Default 600."
6068
6295
  },
6296
+ "boldWeight": {
6297
+ "$ref": "#/$defs/value",
6298
+ "description": "The weight of spans and lines marked bold: true. Default 700."
6299
+ },
6069
6300
  "style": {
6070
6301
  "$ref": "#/$defs/value",
6071
6302
  "description": "normal | italic"
@@ -6220,7 +6451,7 @@
6220
6451
  },
6221
6452
  "spans": {
6222
6453
  "$ref": "#/$defs/value",
6223
- "description": "[{ content, font, weight, style, axes, scale, size, color, letterSpacing, dy }]: mixed runs on the same lines."
6454
+ "description": "[{ content, font, weight, bold, style, axes, scale, size, color, letterSpacing, dy }]: mixed runs on the same lines."
6224
6455
  },
6225
6456
  "glyphs": {
6226
6457
  "$ref": "#/$defs/value",
@@ -6291,6 +6522,7 @@
6291
6522
  "content",
6292
6523
  "font",
6293
6524
  "weight",
6525
+ "boldWeight",
6294
6526
  "style",
6295
6527
  "size",
6296
6528
  "minSize",
@@ -9082,6 +9314,538 @@
9082
9314
  ]
9083
9315
  }
9084
9316
  }
9317
+ },
9318
+ {
9319
+ "if": {
9320
+ "properties": {
9321
+ "type": {
9322
+ "const": "mosaic"
9323
+ }
9324
+ },
9325
+ "required": [
9326
+ "type"
9327
+ ]
9328
+ },
9329
+ "then": {
9330
+ "properties": {
9331
+ "markup": {
9332
+ "$ref": "#/$defs/value",
9333
+ "description": "The mark's paths (512 grid)."
9334
+ },
9335
+ "x": {
9336
+ "$ref": "#/$defs/value",
9337
+ "description": "Box x, px or %."
9338
+ },
9339
+ "y": {
9340
+ "$ref": "#/$defs/value",
9341
+ "description": "Box y."
9342
+ },
9343
+ "width": {
9344
+ "$ref": "#/$defs/value",
9345
+ "description": "Box width (default the canvas)."
9346
+ },
9347
+ "height": {
9348
+ "$ref": "#/$defs/value",
9349
+ "description": "Box height."
9350
+ },
9351
+ "cells": {
9352
+ "$ref": "#/$defs/value",
9353
+ "description": "Cells across the mark's longest side, 4–48. Default 10."
9354
+ },
9355
+ "gap": {
9356
+ "$ref": "#/$defs/value",
9357
+ "description": "Gap between cells, a share of a cell. Default 0.12."
9358
+ },
9359
+ "radius": {
9360
+ "$ref": "#/$defs/value",
9361
+ "description": "Cell corner radius, a share of a cell. Default 0."
9362
+ },
9363
+ "drop": {
9364
+ "$ref": "#/$defs/value",
9365
+ "description": "Share of filled cells left out (seeded), 0–0.9. Default 0.12."
9366
+ },
9367
+ "color": {
9368
+ "$ref": "#/$defs/value",
9369
+ "description": "Default @accent."
9370
+ },
9371
+ "accent": {
9372
+ "$ref": "#/$defs/value",
9373
+ "description": "asterisk | dot: a small glyph in one empty cell beside the mark."
9374
+ },
9375
+ "accentColor": {
9376
+ "$ref": "#/$defs/value",
9377
+ "description": "Default color."
9378
+ },
9379
+ "opacity": {
9380
+ "$ref": "#/$defs/value",
9381
+ "description": "0–1."
9382
+ },
9383
+ "blend": {
9384
+ "$ref": "#/$defs/value",
9385
+ "description": "A CSS mix-blend-mode."
9386
+ },
9387
+ "seed": {
9388
+ "$ref": "#/$defs/value",
9389
+ "description": "This layer's own random stream."
9390
+ },
9391
+ "transform": {
9392
+ "$ref": "#/$defs/value",
9393
+ "description": "{ translate, rotate, scale, skewX, skewY, mirror: x | y, origin } (on text, a case keyword is still the case)."
9394
+ },
9395
+ "effects": {
9396
+ "$ref": "#/$defs/effects",
9397
+ "description": "[{ kind, mask, colorSpace, … }]: filters, pixel effects and copies, in order (see docs/effects.md; kinds in EFFECTS)."
9398
+ },
9399
+ "mask": {
9400
+ "$ref": "#/$defs/value",
9401
+ "description": "Layers whose luminance masks this one (white shows)."
9402
+ },
9403
+ "knockout": {
9404
+ "$ref": "#/$defs/value",
9405
+ "description": "Layers cut out of this one."
9406
+ },
9407
+ "clip": {
9408
+ "$ref": "#/$defs/value",
9409
+ "description": "Layers this one shows only inside."
9410
+ },
9411
+ "area": {
9412
+ "$ref": "#/$defs/value",
9413
+ "description": "trim | safe | bleed, or { x, y, width, height } fractions: draw the layer in that box."
9414
+ },
9415
+ "motion": {
9416
+ "$ref": "#/$defs/motion",
9417
+ "description": "A motion, a preset name (drift | spin | breathe | blink | marquee), or a list: plays in the SVG as CSS keyframes (see MOTION_OPTIONS)."
9418
+ }
9419
+ },
9420
+ "propertyNames": {
9421
+ "enum": [
9422
+ "type",
9423
+ "id",
9424
+ "when",
9425
+ "markup",
9426
+ "x",
9427
+ "y",
9428
+ "width",
9429
+ "height",
9430
+ "cells",
9431
+ "gap",
9432
+ "radius",
9433
+ "drop",
9434
+ "color",
9435
+ "accent",
9436
+ "accentColor",
9437
+ "opacity",
9438
+ "blend",
9439
+ "seed",
9440
+ "transform",
9441
+ "effects",
9442
+ "mask",
9443
+ "knockout",
9444
+ "clip",
9445
+ "area",
9446
+ "motion"
9447
+ ]
9448
+ }
9449
+ }
9450
+ },
9451
+ {
9452
+ "if": {
9453
+ "properties": {
9454
+ "type": {
9455
+ "const": "marks"
9456
+ }
9457
+ },
9458
+ "required": [
9459
+ "type"
9460
+ ]
9461
+ },
9462
+ "then": {
9463
+ "properties": {
9464
+ "marks": {
9465
+ "$ref": "#/$defs/value",
9466
+ "description": "The marks: paths on a 512 grid (or { markup })."
9467
+ },
9468
+ "cols": {
9469
+ "$ref": "#/$defs/value",
9470
+ "description": "Default from the count: 3 × 3 up to 10 × 7."
9471
+ },
9472
+ "rows": {
9473
+ "$ref": "#/$defs/value",
9474
+ "description": "Default from the count."
9475
+ },
9476
+ "x": {
9477
+ "$ref": "#/$defs/value",
9478
+ "description": "Box x, px or %."
9479
+ },
9480
+ "y": {
9481
+ "$ref": "#/$defs/value",
9482
+ "description": "Box y."
9483
+ },
9484
+ "width": {
9485
+ "$ref": "#/$defs/value",
9486
+ "description": "Box width (default the canvas)."
9487
+ },
9488
+ "height": {
9489
+ "$ref": "#/$defs/value",
9490
+ "description": "Box height."
9491
+ },
9492
+ "size": {
9493
+ "$ref": "#/$defs/value",
9494
+ "description": "Share of a cell a mark's area takes. Default 0.5."
9495
+ },
9496
+ "optical": {
9497
+ "$ref": "#/$defs/value",
9498
+ "description": "false: fit each mark's bounds to the same box instead. Default true."
9499
+ },
9500
+ "color": {
9501
+ "$ref": "#/$defs/value",
9502
+ "description": "Default @text."
9503
+ },
9504
+ "opacity": {
9505
+ "$ref": "#/$defs/value",
9506
+ "description": "0–1."
9507
+ },
9508
+ "blend": {
9509
+ "$ref": "#/$defs/value",
9510
+ "description": "A CSS mix-blend-mode."
9511
+ },
9512
+ "seed": {
9513
+ "$ref": "#/$defs/value",
9514
+ "description": "This layer's own random stream."
9515
+ },
9516
+ "transform": {
9517
+ "$ref": "#/$defs/value",
9518
+ "description": "{ translate, rotate, scale, skewX, skewY, mirror: x | y, origin } (on text, a case keyword is still the case)."
9519
+ },
9520
+ "effects": {
9521
+ "$ref": "#/$defs/effects",
9522
+ "description": "[{ kind, mask, colorSpace, … }]: filters, pixel effects and copies, in order (see docs/effects.md; kinds in EFFECTS)."
9523
+ },
9524
+ "mask": {
9525
+ "$ref": "#/$defs/value",
9526
+ "description": "Layers whose luminance masks this one (white shows)."
9527
+ },
9528
+ "knockout": {
9529
+ "$ref": "#/$defs/value",
9530
+ "description": "Layers cut out of this one."
9531
+ },
9532
+ "clip": {
9533
+ "$ref": "#/$defs/value",
9534
+ "description": "Layers this one shows only inside."
9535
+ },
9536
+ "area": {
9537
+ "$ref": "#/$defs/value",
9538
+ "description": "trim | safe | bleed, or { x, y, width, height } fractions: draw the layer in that box."
9539
+ },
9540
+ "motion": {
9541
+ "$ref": "#/$defs/motion",
9542
+ "description": "A motion, a preset name (drift | spin | breathe | blink | marquee), or a list: plays in the SVG as CSS keyframes (see MOTION_OPTIONS)."
9543
+ }
9544
+ },
9545
+ "propertyNames": {
9546
+ "enum": [
9547
+ "type",
9548
+ "id",
9549
+ "when",
9550
+ "marks",
9551
+ "cols",
9552
+ "rows",
9553
+ "x",
9554
+ "y",
9555
+ "width",
9556
+ "height",
9557
+ "size",
9558
+ "optical",
9559
+ "color",
9560
+ "opacity",
9561
+ "blend",
9562
+ "seed",
9563
+ "transform",
9564
+ "effects",
9565
+ "mask",
9566
+ "knockout",
9567
+ "clip",
9568
+ "area",
9569
+ "motion"
9570
+ ]
9571
+ }
9572
+ }
9573
+ },
9574
+ {
9575
+ "if": {
9576
+ "properties": {
9577
+ "type": {
9578
+ "const": "outline"
9579
+ }
9580
+ },
9581
+ "required": [
9582
+ "type"
9583
+ ]
9584
+ },
9585
+ "then": {
9586
+ "properties": {
9587
+ "markup": {
9588
+ "$ref": "#/$defs/value",
9589
+ "description": "The mark's paths (512 grid)."
9590
+ },
9591
+ "x": {
9592
+ "$ref": "#/$defs/value",
9593
+ "description": "Box x, px or %."
9594
+ },
9595
+ "y": {
9596
+ "$ref": "#/$defs/value",
9597
+ "description": "Box y."
9598
+ },
9599
+ "width": {
9600
+ "$ref": "#/$defs/value",
9601
+ "description": "Box width (default the canvas)."
9602
+ },
9603
+ "height": {
9604
+ "$ref": "#/$defs/value",
9605
+ "description": "Box height."
9606
+ },
9607
+ "size": {
9608
+ "$ref": "#/$defs/value",
9609
+ "description": "Share of the box's shorter side the whole takes. Default 1."
9610
+ },
9611
+ "lines": {
9612
+ "$ref": "#/$defs/value",
9613
+ "description": "Contour lines, 0–8: the outline and more round it (0: the mark solid). Default 4."
9614
+ },
9615
+ "gap": {
9616
+ "$ref": "#/$defs/value",
9617
+ "description": "Between lines, a share of the mark's longest side. Default 0.05."
9618
+ },
9619
+ "direction": {
9620
+ "$ref": "#/$defs/value",
9621
+ "description": "out (default) | in"
9622
+ },
9623
+ "stroke": {
9624
+ "$ref": "#/$defs/value",
9625
+ "description": "Line width. Default \"0.4vmin\"."
9626
+ },
9627
+ "color": {
9628
+ "$ref": "#/$defs/value",
9629
+ "description": "Default @text."
9630
+ },
9631
+ "opacity": {
9632
+ "$ref": "#/$defs/value",
9633
+ "description": "0–1."
9634
+ },
9635
+ "blend": {
9636
+ "$ref": "#/$defs/value",
9637
+ "description": "A CSS mix-blend-mode."
9638
+ },
9639
+ "seed": {
9640
+ "$ref": "#/$defs/value",
9641
+ "description": "This layer's own random stream."
9642
+ },
9643
+ "transform": {
9644
+ "$ref": "#/$defs/value",
9645
+ "description": "{ translate, rotate, scale, skewX, skewY, mirror: x | y, origin } (on text, a case keyword is still the case)."
9646
+ },
9647
+ "effects": {
9648
+ "$ref": "#/$defs/effects",
9649
+ "description": "[{ kind, mask, colorSpace, … }]: filters, pixel effects and copies, in order (see docs/effects.md; kinds in EFFECTS)."
9650
+ },
9651
+ "mask": {
9652
+ "$ref": "#/$defs/value",
9653
+ "description": "Layers whose luminance masks this one (white shows)."
9654
+ },
9655
+ "knockout": {
9656
+ "$ref": "#/$defs/value",
9657
+ "description": "Layers cut out of this one."
9658
+ },
9659
+ "clip": {
9660
+ "$ref": "#/$defs/value",
9661
+ "description": "Layers this one shows only inside."
9662
+ },
9663
+ "area": {
9664
+ "$ref": "#/$defs/value",
9665
+ "description": "trim | safe | bleed, or { x, y, width, height } fractions: draw the layer in that box."
9666
+ },
9667
+ "motion": {
9668
+ "$ref": "#/$defs/motion",
9669
+ "description": "A motion, a preset name (drift | spin | breathe | blink | marquee), or a list: plays in the SVG as CSS keyframes (see MOTION_OPTIONS)."
9670
+ }
9671
+ },
9672
+ "propertyNames": {
9673
+ "enum": [
9674
+ "type",
9675
+ "id",
9676
+ "when",
9677
+ "markup",
9678
+ "x",
9679
+ "y",
9680
+ "width",
9681
+ "height",
9682
+ "size",
9683
+ "lines",
9684
+ "gap",
9685
+ "direction",
9686
+ "stroke",
9687
+ "color",
9688
+ "opacity",
9689
+ "blend",
9690
+ "seed",
9691
+ "transform",
9692
+ "effects",
9693
+ "mask",
9694
+ "knockout",
9695
+ "clip",
9696
+ "area",
9697
+ "motion"
9698
+ ]
9699
+ }
9700
+ }
9701
+ },
9702
+ {
9703
+ "if": {
9704
+ "properties": {
9705
+ "type": {
9706
+ "const": "construction"
9707
+ }
9708
+ },
9709
+ "required": [
9710
+ "type"
9711
+ ]
9712
+ },
9713
+ "then": {
9714
+ "properties": {
9715
+ "markup": {
9716
+ "$ref": "#/$defs/value",
9717
+ "description": "The mark's paths (512 grid)."
9718
+ },
9719
+ "x": {
9720
+ "$ref": "#/$defs/value",
9721
+ "description": "Box x, px or %."
9722
+ },
9723
+ "y": {
9724
+ "$ref": "#/$defs/value",
9725
+ "description": "Box y."
9726
+ },
9727
+ "width": {
9728
+ "$ref": "#/$defs/value",
9729
+ "description": "Box width (default the canvas)."
9730
+ },
9731
+ "height": {
9732
+ "$ref": "#/$defs/value",
9733
+ "description": "Box height."
9734
+ },
9735
+ "size": {
9736
+ "$ref": "#/$defs/value",
9737
+ "description": "Share of the box's shorter side the mark's longest side takes. Default 0.6."
9738
+ },
9739
+ "grid": {
9740
+ "$ref": "#/$defs/value",
9741
+ "description": "Grid cells across the mark's longest side; 0 none. Default 8."
9742
+ },
9743
+ "circles": {
9744
+ "$ref": "#/$defs/value",
9745
+ "description": "The most circles read from its curves. Default 6."
9746
+ },
9747
+ "lines": {
9748
+ "$ref": "#/$defs/value",
9749
+ "description": "The most lines read from its straight edges. Default 6."
9750
+ },
9751
+ "color": {
9752
+ "$ref": "#/$defs/value",
9753
+ "description": "The guides. Default @accent."
9754
+ },
9755
+ "gridColor": {
9756
+ "$ref": "#/$defs/value",
9757
+ "description": "Default color."
9758
+ },
9759
+ "gridOpacity": {
9760
+ "$ref": "#/$defs/value",
9761
+ "description": "Default 0.3."
9762
+ },
9763
+ "markColor": {
9764
+ "$ref": "#/$defs/value",
9765
+ "description": "Default @text; \"none\" leaves the mark out."
9766
+ },
9767
+ "over": {
9768
+ "$ref": "#/$defs/value",
9769
+ "description": "The guides' opacity over the mark, 0–1. Default 0.4."
9770
+ },
9771
+ "stroke": {
9772
+ "$ref": "#/$defs/value",
9773
+ "description": "Guide width. Default \"0.15vmin\"."
9774
+ },
9775
+ "opacity": {
9776
+ "$ref": "#/$defs/value",
9777
+ "description": "0–1."
9778
+ },
9779
+ "blend": {
9780
+ "$ref": "#/$defs/value",
9781
+ "description": "A CSS mix-blend-mode."
9782
+ },
9783
+ "seed": {
9784
+ "$ref": "#/$defs/value",
9785
+ "description": "This layer's own random stream."
9786
+ },
9787
+ "transform": {
9788
+ "$ref": "#/$defs/value",
9789
+ "description": "{ translate, rotate, scale, skewX, skewY, mirror: x | y, origin } (on text, a case keyword is still the case)."
9790
+ },
9791
+ "effects": {
9792
+ "$ref": "#/$defs/effects",
9793
+ "description": "[{ kind, mask, colorSpace, … }]: filters, pixel effects and copies, in order (see docs/effects.md; kinds in EFFECTS)."
9794
+ },
9795
+ "mask": {
9796
+ "$ref": "#/$defs/value",
9797
+ "description": "Layers whose luminance masks this one (white shows)."
9798
+ },
9799
+ "knockout": {
9800
+ "$ref": "#/$defs/value",
9801
+ "description": "Layers cut out of this one."
9802
+ },
9803
+ "clip": {
9804
+ "$ref": "#/$defs/value",
9805
+ "description": "Layers this one shows only inside."
9806
+ },
9807
+ "area": {
9808
+ "$ref": "#/$defs/value",
9809
+ "description": "trim | safe | bleed, or { x, y, width, height } fractions: draw the layer in that box."
9810
+ },
9811
+ "motion": {
9812
+ "$ref": "#/$defs/motion",
9813
+ "description": "A motion, a preset name (drift | spin | breathe | blink | marquee), or a list: plays in the SVG as CSS keyframes (see MOTION_OPTIONS)."
9814
+ }
9815
+ },
9816
+ "propertyNames": {
9817
+ "enum": [
9818
+ "type",
9819
+ "id",
9820
+ "when",
9821
+ "markup",
9822
+ "x",
9823
+ "y",
9824
+ "width",
9825
+ "height",
9826
+ "size",
9827
+ "grid",
9828
+ "circles",
9829
+ "lines",
9830
+ "color",
9831
+ "gridColor",
9832
+ "gridOpacity",
9833
+ "markColor",
9834
+ "over",
9835
+ "stroke",
9836
+ "opacity",
9837
+ "blend",
9838
+ "seed",
9839
+ "transform",
9840
+ "effects",
9841
+ "mask",
9842
+ "knockout",
9843
+ "clip",
9844
+ "area",
9845
+ "motion"
9846
+ ]
9847
+ }
9848
+ }
9085
9849
  }
9086
9850
  ]
9087
9851
  }