pub.leaflet.pages.canvas

leaflet.pub

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "block": {
      "properties": {
        "alignment": {
          "description": "Alignment of a single block's content. A linear document's blocks carry their own.",
          "knownValues": [
            "lex:pub.leaflet.pages.linearDocument#textAlignLeft",
            "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
            "lex:pub.leaflet.pages.linearDocument#textAlignRight",
            "lex:pub.leaflet.pages.linearDocument#textAlignJustify"
          ],
          "type": "string"
        },
        "block": {
          "description": "A single block, or a linear document: blocks grouped in reading order that are positioned, sized and rotated on the canvas as one.",
          "refs": [
            "pub.leaflet.blocks.iframe",
            "pub.leaflet.blocks.html",
            "pub.leaflet.blocks.text",
            "pub.leaflet.blocks.blockquote",
            "pub.leaflet.blocks.header",
            "pub.leaflet.blocks.image",
            "pub.leaflet.blocks.imageGallery",
            "pub.leaflet.blocks.unorderedList",
            "pub.leaflet.blocks.orderedList",
            "pub.leaflet.blocks.website",
            "pub.leaflet.blocks.math",
            "pub.leaflet.blocks.code",
            "pub.leaflet.blocks.horizontalRule",
            "pub.leaflet.blocks.bskyPost",
            "pub.leaflet.blocks.standardSitePost",
            "pub.leaflet.blocks.standardSitePublication",
            "pub.leaflet.blocks.page",
            "pub.leaflet.blocks.embeddedCanvas",
            "pub.leaflet.blocks.poll",
            "pub.leaflet.blocks.button",
            "pub.leaflet.blocks.postsList",
            "pub.leaflet.blocks.signup",
            "pub.leaflet.blocks.recommendedPubs",
            "pub.leaflet.blocks.membersOnlyDelimiter",
            "pub.leaflet.blocks.postHeader",
            "pub.leaflet.blocks.drawing",
            "pub.leaflet.pages.linearDocument"
          ],
          "type": "union"
        },
        "height": {
          "type": "integer"
        },
        "rotation": {
          "description": "The rotation of the block in degrees",
          "type": "integer"
        },
        "stackOrder": {
          "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.",
          "type": "string"
        },
        "width": {
          "type": "integer"
        },
        "x": {
          "type": "integer"
        },
        "y": {
          "type": "integer"
        }
      },
      "required": [
        "block",
        "x",
        "y",
        "width"
      ],
      "type": "object"
    },
    "main": {
      "properties": {
        "blocks": {
          "items": {
            "ref": "#block",
            "type": "ref"
          },
          "type": "array"
        },
        "height": {
          "description": "Fixed canvas height in canvas px; see width.",
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "lockViewerZoom": {
          "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.",
          "type": "boolean"
        },
        "mobileView": {
          "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.",
          "knownValues": [
            "unconstrained",
            "left",
            "center"
          ],
          "type": "string"
        },
        "width": {
          "description": "Fixed canvas width in canvas px. With height, bounds the canvas: blocks are clipped to the area. Absent, the canvas is 1272px wide and grows with its content.",
          "type": "integer"
        }
      },
      "required": [
        "blocks"
      ],
      "type": "object"
    },
    "position": {
      "properties": {
        "block": {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        "offset": {
          "type": "integer"
        }
      },
      "required": [
        "block",
        "offset"
      ],
      "type": "object"
    },
    "quote": {
      "properties": {
        "end": {
          "ref": "#position",
          "type": "ref"
        },
        "start": {
          "ref": "#position",
          "type": "ref"
        }
      },
      "required": [
        "start",
        "end"
      ],
      "type": "object"
    },
    "textAlignCenter": {
      "type": "token"
    },
    "textAlignLeft": {
      "type": "token"
    },
    "textAlignRight": {
      "type": "token"
    }
  },
  "id": "pub.leaflet.pages.canvas",
  "lexicon": 1
}

Validate Record

Validate a record against pub.leaflet.pages.canvas

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:btxrwcaeyodrap5mnjw2fvmz
CID
bafyreifidxorq5x5powzvl5e6mx7fpgu45i2lmoqfh54brk5mo4eq7zjgu
Indexed At
2026-09-29 04:39 UTC
AT-URI
at://did:plc:btxrwcaeyodrap5mnjw2fvmz/com.atproto.lexicon.schema/pub.leaflet.pages.canvas

Version History (15 versions)

Referenced Schemas (27)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

Lexicon Garden

@