{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "One element of a screenplay: a scene heading, a paragraph of action, a character cue, a parenthetical, a run of dialogue or lyric, a transition, or centered text. A script is a flat sequence of these blocks, the paragraph-type model of Fountain and Final Draft; a speech is a character block followed by the parenthetical, dialogue and lyric blocks that belong to it. Renderers set each element by screenplay convention (a monospaced face, dialogue and cues indented, transitions flush right, headings, cues and transitions in capitals) and keep a cue with the speech that follows it. Mirrors the shape of pub.leaflet.blocks.text so the same rich-text tooling applies. Designed to sit inside pub.leaflet.pages.* open block unions; renderers that don't recognize it skip it, so the document's textContent should still carry the script plaintext.",
"properties": {
"dual": {
"description": "On a character block: this speech runs beside the previous one (dual dialogue). Renderers that can't set speeches side by side may stack them.",
"type": "boolean"
},
"element": {
"description": "Which screenplay element this block is. A renderer that meets an unknown value should set it as action.",
"knownValues": [
"sceneHeading",
"action",
"character",
"parenthetical",
"dialogue",
"lyric",
"transition",
"centered"
],
"maxLength": 100,
"type": "string"
},
"facets": {
"description": "Byte-range annotations over plaintext (emphasis, underline), same facet system as Leaflet blocks.",
"items": {
"ref": "pub.leaflet.richtext.facet",
"type": "ref"
},
"type": "array"
},
"plaintext": {
"description": "The element's text as the author wrote it; a newline is a hard line break. Capitalization conventions (headings, cues, transitions) are the renderer's to apply, so the stored case is the author's.",
"maxLength": 100000,
"type": "string"
},
"sceneNumber": {
"description": "The scene's number as printed in the margins (\"12\", \"12A\"). Meaningful on sceneHeading only.",
"maxGraphemes": 10,
"maxLength": 100,
"type": "string"
}
},
"required": [
"element",
"plaintext"
],
"type": "object"
}
},
"id": "page.cavu.blocks.screenplay",
"lexicon": 1
}