pub.leaflet.pages.canvas

leaflet.pub

Schema Diff

+43 -0

From

CID
bafyreieujs5jjk6...
Indexed At
2026-09-29 05:17 UTC
View this version

To

CID
bafyreiapayfh7wa...
Indexed At
2026-10-03 18:44 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 15 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "pub.leaflet.pages.canvas#background", src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.image", kind: "prop", name: Some("image") }
Non-Breaking Changes (15)
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.image" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.opacity" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.width" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.background" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.pattern" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.theme" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.theme.page" }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.background", kind: "prop", name: Some("background") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.pattern", kind: "prop", name: Some("pattern") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.theme", kind: "prop", name: Some("theme") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.opacity", kind: "prop", name: Some("opacity") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.width", kind: "prop", name: Some("width") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas.background", tgt: "pub.leaflet.pages.canvas#background", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas.theme", tgt: "pub.leaflet.theme.page", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.image" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.opacity" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#background.width" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.background" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.pattern" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.theme" }
  • AddedVertex { vertex_id: "pub.leaflet.theme.page" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "pub.leaflet.pages.canvas#background", src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.image", kind: "prop", name: Some("image") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.background", kind: "prop", name: Some("background") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.pattern", kind: "prop", name: Some("pattern") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.theme", kind: "prop", name: Some("theme") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.opacity", kind: "prop", name: Some("opacity") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#background", tgt: "pub.leaflet.pages.canvas#background.width", kind: "prop", name: Some("width") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas.background", tgt: "pub.leaflet.pages.canvas#background", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas.theme", tgt: "pub.leaflet.theme.page", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "background": {
5 +
      "description": "An image tiled across the canvas, under its guide pattern and blocks.",
6 +
      "properties": {
7 +
        "image": {
8 +
          "accept": [
9 +
            "image/*"
10 +
          ],
11 +
          "maxSize": 1000000,
12 +
          "type": "blob"
13 +
        },
14 +
        "opacity": {
15 +
          "description": "Opacity of the image as a percentage. Defaults to 100.",
16 +
          "maximum": 100,
17 +
          "minimum": 0,
18 +
          "type": "integer"
19 +
        },
20 +
        "width": {
21 +
          "description": "Width of each tile in canvas px. Defaults to 500.",
22 +
          "type": "integer"
23 +
        }
24 +
      },
25 +
      "required": [
26 +
        "image"
27 +
      ],
28 +
      "type": "object"
29 +
    },
4 30
    "block": {
5 31
      "properties": {
6 32
        "alignment": {
7 33
          "description": "Alignment of a single block's content. A linear document's blocks carry their own.",
8 34
          "knownValues": [
9 35
            "lex:pub.leaflet.pages.linearDocument#textAlignLeft",
10 36
            "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
11 37
            "lex:pub.leaflet.pages.linearDocument#textAlignRight",
12 38
            "lex:pub.leaflet.pages.linearDocument#textAlignJustify"
13 39
          ],
14 40
          "type": "string"
15 41
        },
16 42
        "block": {
17 43
          "description": "A single block, or a linear document: blocks grouped in reading order that are positioned, sized and rotated on the canvas as one.",
18 44
          "refs": [
19 45
            "pub.leaflet.blocks.iframe",
20 46
            "pub.leaflet.blocks.html",
21 47
            "pub.leaflet.blocks.text",
22 48
            "pub.leaflet.blocks.blockquote",
23 49
            "pub.leaflet.blocks.header",
24 50
            "pub.leaflet.blocks.image",
25 51
            "pub.leaflet.blocks.imageGallery",
26 52
            "pub.leaflet.blocks.unorderedList",
27 53
            "pub.leaflet.blocks.orderedList",
28 54
            "pub.leaflet.blocks.website",
29 55
            "pub.leaflet.blocks.math",
30 56
            "pub.leaflet.blocks.code",
31 57
            "pub.leaflet.blocks.horizontalRule",
32 58
            "pub.leaflet.blocks.bskyPost",
33 59
            "pub.leaflet.blocks.standardSitePost",
34 60
            "pub.leaflet.blocks.standardSitePublication",
35 61
            "pub.leaflet.blocks.page",
36 62
            "pub.leaflet.blocks.embeddedCanvas",
37 63
            "pub.leaflet.blocks.poll",
38 64
            "pub.leaflet.blocks.button",
39 65
            "pub.leaflet.blocks.postsList",
40 66
            "pub.leaflet.blocks.signup",
41 67
            "pub.leaflet.blocks.recommendedPubs",
42 68
            "pub.leaflet.blocks.membersOnlyDelimiter",
43 69
            "pub.leaflet.blocks.postHeader",
44 70
            "pub.leaflet.blocks.drawing",
45 71
            "pub.leaflet.pages.linearDocument"
46 72
          ],
47 73
          "type": "union"
48 74
        },
49 75
        "height": {
50 76
          "type": "integer"
51 77
        },
52 78
        "rotation": {
53 79
          "description": "The rotation of the block in degrees",
54 80
          "type": "integer"
55 81
        },
56 82
        "stackOrder": {
57 83
          "description": "Fractional index ordering this block against its siblings on the z axis. Blocks without one stack below every block with one, ordered by position.",
58 84
          "type": "string"
59 85
        },
60 86
        "width": {
61 87
          "type": "integer"
62 88
        },
63 89
        "x": {
64 90
          "type": "integer"
65 91
        },
66 92
        "y": {
67 93
          "type": "integer"
68 94
        }
69 95
      },
70 96
      "required": [
71 97
        "block",
72 98
        "x",
73 99
        "y",
74 100
        "width"
75 101
      ],
76 102
      "type": "object"
77 103
    },
78 104
    "main": {
79 105
      "properties": {
106 +
        "background": {
107 +
          "ref": "#background",
108 +
          "type": "ref"
109 +
        },
80 110
        "blocks": {
81 111
          "items": {
82 112
            "ref": "#block",
83 113
            "type": "ref"
84 114
          },
85 115
          "type": "array"
86 116
        },
87 117
        "height": {
88 118
          "description": "Fixed canvas height in canvas px; see width.",
89 119
          "type": "integer"
90 120
        },
91 121
        "id": {
92 122
          "type": "string"
93 123
        },
94 124
        "lockViewerZoom": {
95 125
          "description": "Viewers cannot zoom the canvas or scroll it sideways: no wheel, pinch, double-tap or zoom controls, and the initial framing (see mobileView) stays. Vertical scrolling is unaffected.",
96 126
          "type": "boolean"
97 127
        },
98 128
        "mobileView": {
99 129
          "description": "How a narrow viewport frames the canvas: the whole canvas scaled to fit the width (unconstrained, the default), or a phone-width area anchored to the canvas's left edge or centered on it, shown at up to 1:1.",
100 130
          "knownValues": [
101 131
            "unconstrained",
102 132
            "left",
103 133
            "center"
104 134
          ],
105 135
          "type": "string"
106 136
        },
137 +
        "pattern": {
138 +
          "description": "The guide pattern drawn over the canvas's background, under its blocks. Absent, a canvas that grows with its content shows the grid and a fixed-size canvas is plain.",
139 +
          "knownValues": [
140 +
            "grid",
141 +
            "dot",
142 +
            "plain"
143 +
          ],
144 +
          "type": "string"
145 +
        },
146 +
        "theme": {
147 +
          "ref": "pub.leaflet.theme.page",
148 +
          "type": "ref"
149 +
        },
107 150
        "width": {
108 151
          "description": "Fixed canvas width in canvas px. With height, bounds the canvas: blocks are clipped to the area. Absent, the canvas grows with its content and is 1272px wide, or as wide as the inside of the publication's page (its theme's pageWidth) when it is one of a publication's pages.",
109 152
          "type": "integer"
110 153
        }
111 154
      },
112 155
      "required": [
113 156
        "blocks"
114 157
      ],
115 158
      "type": "object"
116 159
    },
117 160
    "position": {
118 161
      "properties": {
119 162
        "block": {
120 163
          "items": {
121 164
            "type": "integer"
122 165
          },
123 166
          "type": "array"
124 167
        },
125 168
        "offset": {
126 169
          "type": "integer"
127 170
        }
128 171
      },
129 172
      "required": [
130 173
        "block",
131 174
        "offset"
132 175
      ],
133 176
      "type": "object"
134 177
    },
135 178
    "quote": {
136 179
      "properties": {
137 180
        "end": {
138 181
          "ref": "#position",
139 182
          "type": "ref"
140 183
        },
141 184
        "start": {
142 185
          "ref": "#position",
143 186
          "type": "ref"
144 187
        }
145 188
      },
146 189
      "required": [
147 190
        "start",
148 191
        "end"
149 192
      ],
150 193
      "type": "object"
151 194
    },
152 195
    "textAlignCenter": {
153 196
      "type": "token"
154 197
    },
155 198
    "textAlignLeft": {
156 199
      "type": "token"
157 200
    },
158 201
    "textAlignRight": {
159 202
      "type": "token"
160 203
    }
161 204
  },
162 205
  "id": "pub.leaflet.pages.canvas",
163 206
  "lexicon": 1
164 207
}

Compare Other Versions

Lexicon Garden

@