[{"data":1,"prerenderedAt":1603},["ShallowReactive",2],{"navigation_docs":3,"-reference-block-types":412,"-reference-block-types-surround":1598},[4,38,84,326,386],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":37},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,24,28,32],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":6},"Quick start: Nuxt","\u002Fgetting-started\u002Fquick-start-nuxt","1.getting-started\u002F3.quick-start-nuxt",{"title":25,"path":26,"stem":27,"icon":6},"Quick start: plain Vue","\u002Fgetting-started\u002Fquick-start-vue","1.getting-started\u002F4.quick-start-vue",{"title":29,"path":30,"stem":31,"icon":6},"Quick start: React","\u002Fgetting-started\u002Fquick-start-react","1.getting-started\u002F5.quick-start-react",{"title":33,"path":34,"stem":35,"icon":36},"Glossary","\u002Fgetting-started\u002Fglossary","1.getting-started\u002F6.glossary","i-lucide-book-a",false,{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":37},"Tutorial","i-lucide-graduation-cap","\u002Ftutorial","2.tutorial",[44,49,54,59,64,69,74,79],{"title":45,"path":46,"stem":47,"icon":48},"Tutorial: overview","\u002Ftutorial\u002Foverview","2.tutorial\u002F1.overview","i-lucide-map",{"title":50,"path":51,"stem":52,"icon":53},"Chapter 2: A simple editor","\u002Ftutorial\u002Fsimple-editor","2.tutorial\u002F2.simple-editor","i-lucide-pencil",{"title":55,"path":56,"stem":57,"icon":58},"Chapter 3: Compose features","\u002Ftutorial\u002Fcompose-features","2.tutorial\u002F3.compose-features","i-lucide-blocks",{"title":60,"path":61,"stem":62,"icon":63},"Chapter 4: Your own block, path A","\u002Ftutorial\u002Fown-block-path-a","2.tutorial\u002F4.own-block-path-a","i-lucide-square-plus",{"title":65,"path":66,"stem":67,"icon":68},"Chapter 5: Your own feature, path B","\u002Ftutorial\u002Fown-feature-path-b","2.tutorial\u002F5.own-feature-path-b","i-lucide-puzzle",{"title":70,"path":71,"stem":72,"icon":73},"Chapter 6: Backend and collaboration","\u002Ftutorial\u002Fbackend-and-collaboration","2.tutorial\u002F6.backend-and-collaboration","i-lucide-users",{"title":75,"path":76,"stem":77,"icon":78},"Chapter 7: AI","\u002Ftutorial\u002Fai","2.tutorial\u002F7.ai","i-lucide-sparkles",{"title":80,"path":81,"stem":82,"icon":83},"Chapter 8: The React surface","\u002Ftutorial\u002Freact-surface","2.tutorial\u002F8.react-surface","i-lucide-atom",{"title":85,"icon":14,"path":86,"stem":87,"children":88,"page":37},"Guides","\u002Fguides","3.guides",[89,93,98,103,108,112,116,121,126,130,134,139,144,149,154,159,164,169,174,179,184,189,194,199,204,209,213,218,223,228,233,237,242,247,251,256,261,266,271,276,281,286,291,295,302,307,311,316,321],{"title":90,"path":91,"stem":92,"icon":58},"Feature composition and entries","\u002Fguides\u002Fcomposition","3.guides\u002F1.composition",{"title":94,"path":95,"stem":96,"icon":97},"Media, mentions and transcript features","\u002Fguides\u002Fmedia-mentions-transcript","3.guides\u002F10.media-mentions-transcript","i-lucide-image",{"title":99,"path":100,"stem":101,"icon":102},"Authors and comments","\u002Fguides\u002Fauthors-and-comments","3.guides\u002F11.authors-and-comments","i-lucide-message-square-text",{"title":104,"path":105,"stem":106,"icon":107},"Themes (Obsidian)","\u002Fguides\u002Fthemes","3.guides\u002F12.themes","i-lucide-palette",{"title":109,"path":110,"stem":111,"icon":58},"Composites and the settings UI","\u002Fguides\u002Fcomposites","3.guides\u002F13.composites",{"title":113,"path":114,"stem":115,"icon":78},"AI","\u002Fguides\u002Fai","3.guides\u002F14.ai",{"title":117,"path":118,"stem":119,"icon":120},"Document tree","\u002Fguides\u002Fdocument-tree","3.guides\u002F15.document-tree","i-lucide-folder-tree",{"title":122,"path":123,"stem":124,"icon":125},"Markdown and code","\u002Fguides\u002Fmarkdown-and-code","3.guides\u002F16.markdown-and-code","i-lucide-file-code",{"title":127,"path":128,"stem":129,"icon":83},"Advanced editor in React","\u002Fguides\u002Fadvanced-react","3.guides\u002F17.advanced-react",{"title":131,"path":132,"stem":133,"icon":6},"Kitchen sink: learning path","\u002Fguides\u002Fadvanced-nuxt-example","3.guides\u002F18.advanced-nuxt-example",{"title":135,"path":136,"stem":137,"icon":138},"Production","\u002Fguides\u002Fproduction","3.guides\u002F19.production","i-lucide-server",{"title":140,"path":141,"stem":142,"icon":143},"Register the Nuxt module","\u002Fguides\u002Fnuxt-module","3.guides\u002F2.nuxt-module","i-lucide-package",{"title":145,"path":146,"stem":147,"icon":148},"Storage adapters, comment stores, Nitro host","\u002Fguides\u002Fstorage-adapters","3.guides\u002F20.storage-adapters","i-lucide-database",{"title":150,"path":151,"stem":152,"icon":153},"Migrating from #tiptap-editor","\u002Fguides\u002Fmigration","3.guides\u002F21.migration","i-lucide-arrow-right-left",{"title":155,"path":156,"stem":157,"icon":158},"Content tree mechanics","\u002Fguides\u002Fcontent-tree","3.guides\u002F22.content-tree","i-lucide-git-fork",{"title":160,"path":161,"stem":162,"icon":163},"Block capabilities, abilities and actions","\u002Fguides\u002Fblock-capabilities","3.guides\u002F23.block-capabilities","i-lucide-shield-check",{"title":165,"path":166,"stem":167,"icon":168},"Block types in code and JSON","\u002Fguides\u002Fblock-types","3.guides\u002F24.block-types","i-lucide-shapes",{"title":170,"path":171,"stem":172,"icon":173},"Derive methods and the Derivation index","\u002Fguides\u002Fderive-methods","3.guides\u002F25.derive-methods","i-lucide-git-branch-plus",{"title":175,"path":176,"stem":177,"icon":178},"Block properties and Property definitions","\u002Fguides\u002Fblock-properties","3.guides\u002F26.block-properties","i-lucide-sliders-horizontal",{"title":180,"path":181,"stem":182,"icon":183},"Image studio","\u002Fguides\u002Fimage-studio","3.guides\u002F27.image-studio","i-lucide-image-plus",{"title":185,"path":186,"stem":187,"icon":188},"Prüfung and Freigabestatus","\u002Fguides\u002Fpruefung","3.guides\u002F28.pruefung","i-lucide-stamp",{"title":190,"path":191,"stem":192,"icon":193},"Workspace: find, read, reference and embed Blocks across Documents","\u002Fguides\u002Fworkspace","3.guides\u002F29.workspace","i-lucide-network",{"title":195,"path":196,"stem":197,"icon":198},"EditorPorts: auth and storage","\u002Fguides\u002Feditor-ports","3.guides\u002F3.editor-ports","i-lucide-plug",{"title":200,"path":201,"stem":202,"icon":203},"Collections: an ordered list of Blocks","\u002Fguides\u002Fcollections","3.guides\u002F30.collections","i-lucide-list-checks",{"title":205,"path":206,"stem":207,"icon":208},"Data views: a query shown as table, list or board","\u002Fguides\u002Fdata-views","3.guides\u002F31.data-views","i-lucide-table-properties",{"title":210,"path":211,"stem":212,"icon":193},"Explore: backlinks, related Blocks and the trail","\u002Fguides\u002Fexplore","3.guides\u002F32.explore",{"title":214,"path":215,"stem":216,"icon":217},"Render: export a Block or a Document to a file","\u002Fguides\u002Frender","3.guides\u002F33.render","i-lucide-file-output",{"title":219,"path":220,"stem":221,"icon":222},"Importers: what a dropped file becomes","\u002Fguides\u002Fimporters","3.guides\u002F34.importers","i-lucide-file-input",{"title":224,"path":225,"stem":226,"icon":227},"Templates: start a Document from a Dokumentvorlage","\u002Fguides\u002Ftemplates","3.guides\u002F35.templates","i-lucide-file-stack",{"title":229,"path":230,"stem":231,"icon":232},"Citations","\u002Fguides\u002Fcitations","3.guides\u002F36.citations","i-lucide-quote",{"title":234,"path":235,"stem":236,"icon":163},"AI proposals and the export check","\u002Fguides\u002Fexport-check","3.guides\u002F37.export-check",{"title":238,"path":239,"stem":240,"icon":241},"Query: filter, sort, group and total Blocks","\u002Fguides\u002Fquery","3.guides\u002F38.query","i-lucide-list-filter",{"title":243,"path":244,"stem":245,"icon":246},"Edges: backlinks and authored connections","\u002Fguides\u002Fedges","3.guides\u002F39.edges","i-lucide-link-2",{"title":248,"path":249,"stem":250,"icon":163},"Server routes and authentication","\u002Fguides\u002Froutes-and-auth","3.guides\u002F4.routes-and-auth",{"title":252,"path":253,"stem":254,"icon":255},"Speech: text to audio, and subtitle files","\u002Fguides\u002Fspeech","3.guides\u002F41.speech","i-lucide-audio-lines",{"title":257,"path":258,"stem":259,"icon":260},"Graph: the Edges around a Block","\u002Fguides\u002Fgraph","3.guides\u002F42.graph","i-lucide-waypoints",{"title":262,"path":263,"stem":264,"icon":265},"PDF viewer: passages, anchors and quotes","\u002Fguides\u002Fpdf-viewer","3.guides\u002F43.pdf-viewer","i-lucide-file-search",{"title":267,"path":268,"stem":269,"icon":270},"Obsidian: import and export a vault","\u002Fguides\u002Fobsidian","3.guides\u002F44.obsidian","i-lucide-folder-input",{"title":272,"path":273,"stem":274,"icon":275},"Typst: render a Document as a PDF with citations","\u002Fguides\u002Ftypst","3.guides\u002F45.typst","i-lucide-file-text",{"title":277,"path":278,"stem":279,"icon":280},"Audio: read aloud, mixdown and ElevenLabs","\u002Fguides\u002Faudio","3.guides\u002F46.audio","i-lucide-audio-waveform",{"title":282,"path":283,"stem":284,"icon":285},"Slides: decks, slide layouts and exports","\u002Fguides\u002Fslides","3.guides\u002F47.slides","i-lucide-presentation",{"title":287,"path":288,"stem":289,"icon":290},"Knowledge graph: sources and concepts beside the Documents","\u002Fguides\u002Fknowledge-graph","3.guides\u002F49.knowledge-graph","i-lucide-share-2",{"title":292,"path":293,"stem":294,"icon":78},"AI configuration and secrets","\u002Fguides\u002Fai-configuration","3.guides\u002F5.ai-configuration",{"title":296,"path":297,"stem":298,"children":299,"icon":301},"Index on Postgres: typos, meaning and SQL pushdown","\u002Fguides\u002Findex-pg","3.guides\u002F50.index-pg",[300],{"title":296,"path":297,"stem":298,"icon":301},"i-lucide-database-zap",{"title":303,"path":304,"stem":305,"icon":306},"Charts: bar, line, pie and scatter over a query","\u002Fguides\u002Fcharts","3.guides\u002F51.charts","i-lucide-chart-column",{"title":308,"path":309,"stem":310,"icon":73},"Collaboration on the client","\u002Fguides\u002Fcollaboration","3.guides\u002F6.collaboration",{"title":312,"path":313,"stem":314,"icon":315},"Block UI (drag handle, hover actions)","\u002Fguides\u002Fblock-ui","3.guides\u002F7.block-ui","i-lucide-grip-vertical",{"title":317,"path":318,"stem":319,"icon":320},"Settings and app lifetime","\u002Fguides\u002Fsettings","3.guides\u002F8.settings","i-lucide-settings",{"title":322,"path":323,"stem":324,"icon":325},"Language","\u002Fguides\u002Flanguage","3.guides\u002F9.language","i-lucide-languages",{"title":327,"icon":14,"path":328,"stem":329,"children":330,"page":37},"Reference","\u002Freference","4.reference",[331,335,339,344,348,352,356,360,364,368,373,378,382],{"title":332,"path":333,"stem":334,"icon":143},"Public exports","\u002Freference\u002Fexports","4.reference\u002F1.exports",{"title":336,"path":337,"stem":338,"icon":173},"Derive method contract","\u002Freference\u002Fderive-methods","4.reference\u002F10.derive-methods",{"title":340,"path":341,"stem":342,"icon":343},"Changelog","\u002Freference\u002Fchangelog","4.reference\u002F11.changelog","i-lucide-history",{"title":345,"path":346,"stem":347,"icon":217},"Renderer port","\u002Freference\u002Frenderer-port","4.reference\u002F12.renderer-port",{"title":349,"path":350,"stem":351,"icon":255},"Speech port","\u002Freference\u002Fspeech-port","4.reference\u002F13.speech-port",{"title":353,"path":354,"stem":355,"icon":58},"Presets and features","\u002Freference\u002Fpresets-and-features","4.reference\u002F2.presets-and-features",{"title":357,"path":358,"stem":359,"icon":68},"Feature contract","\u002Freference\u002Ffeature-contract","4.reference\u002F3.feature-contract",{"title":361,"path":362,"stem":363,"icon":107},"CSS and UI-provider requirements","\u002Freference\u002Fcss-and-ui","4.reference\u002F4.css-and-ui",{"title":365,"path":366,"stem":367,"icon":148},"Vue-free advanced schema","\u002Freference\u002Fadvanced-schema","4.reference\u002F5.advanced-schema",{"title":369,"path":370,"stem":371,"icon":372},"Dependency rules","\u002Freference\u002Fdependency-rules","4.reference\u002F6.dependency-rules","i-lucide-git-branch",{"title":374,"path":375,"stem":376,"icon":377},"Commands","\u002Freference\u002Fcommands","4.reference\u002F7.commands","i-lucide-terminal",{"title":379,"path":380,"stem":381,"icon":163},"Block capability contract","\u002Freference\u002Fblock-capabilities","4.reference\u002F8.block-capabilities",{"title":383,"path":384,"stem":385,"icon":168},"Block type contract","\u002Freference\u002Fblock-types","4.reference\u002F9.block-types",{"title":387,"path":388,"stem":389,"children":390,"icon":393},"AI agents","\u002Fai-agents","5.ai-agents\u002F1.index",[391,394,398,402,407],{"title":392,"path":388,"stem":389,"icon":393},"Overview","i-lucide-bot",{"title":395,"path":396,"stem":397,"icon":198},"Integrate the editor","\u002Fai-agents\u002Fintegrate","5.ai-agents\u002F2.integrate",{"title":399,"path":400,"stem":401,"icon":68},"Add a block or feature","\u002Fai-agents\u002Fextend","5.ai-agents\u002F3.extend",{"title":403,"path":404,"stem":405,"icon":406},"Pitfalls and invariants","\u002Fai-agents\u002Finvariants","5.ai-agents\u002F4.invariants","i-lucide-shield-alert",{"title":408,"path":409,"stem":410,"icon":411},"Verify","\u002Fai-agents\u002Fverify","5.ai-agents\u002F5.verify","i-lucide-check-check",{"id":413,"title":383,"body":414,"description":1591,"extension":1592,"links":1593,"meta":1594,"navigation":1595,"path":384,"seo":1596,"stem":385,"__hash__":1597},"docs\u002F4.reference\u002F9.block-types.md",{"type":415,"value":416,"toc":1578},"minimark",[417,456,463,478,625,630,666,670,777,789,795,862,876,881,894,1105,1155,1159,1367,1371,1490,1494,1568],[418,419,420,421,425,426,429,430,433,434,429,437,440,441,429,444,447,448,451,452,455],"p",{},"A Block type is plain data. The types come from ",[422,423,424],"code",{},"packages\u002Feditor\u002Fsrc\u002Ffeatures\u002Fcomposites\u002Fblock-types.ts",", ",[422,427,428],{},"block-types-json.ts"," and ",[422,431,432],{},"core\u002Fproperties.ts","; the Block type types are exported from ",[422,435,436],{},"@skaile\u002Fforge-editor\u002Fcomposites",[422,438,439],{},"@skaile\u002Fforge-editor\u002Fcomposites\u002Fschema","; ",[422,442,443],{},"PropertyDefinition",[422,445,446],{},"PROPERTY_TYPES"," only from ",[422,449,450],{},"@skaile\u002Fforge-editor\u002Fcore",". For how to write and load them, see ",[453,454,165],"a",{"href":166},".",[457,458,460],"h2",{"id":459},"blocktype",[422,461,462],{},"BlockType",[418,464,465,467,468,471,472,475,476,455],{},[422,466,462],{}," extends ",[422,469,470],{},"BlockTypeData"," (",[422,473,474],{},"{ id, capabilities }","). A Block type JSON file is one array of ",[422,477,462],{},[479,480,481,497],"table",{},[482,483,484],"thead",{},[485,486,487,491,494],"tr",{},[488,489,490],"th",{},"Field",[488,492,493],{},"Type",[488,495,496],{},"Meaning",[498,499,500,532,546,563,581,596,610],"tbody",{},[485,501,502,508,513],{},[503,504,505],"td",{},[422,506,507],{},"id",[503,509,510],{},[422,511,512],{},"string",[503,514,515,516,519,520,523,524,527,528,531],{},"Stored in the ",[422,517,518],{},"blockType"," attribute of a Typed block, in Markdown fences and in AI requests. 1 to 50 letters, digits, ",[422,521,522],{},"_"," or ",[422,525,526],{},"-"," (checked by ",[422,529,530],{},"parseBlockTypes",").",[485,533,534,539,543],{},[503,535,536],{},[422,537,538],{},"label",[503,540,541],{},[422,542,512],{},[503,544,545],{},"Name shown to the user.",[485,547,548,553,557],{},[503,549,550],{},[422,551,552],{},"icon",[503,554,555],{},[422,556,512],{},[503,558,559,560,455],{},"Iconify name, e.g. ",[422,561,562],{},"i-lucide-gavel",[485,564,565,570,575],{},[503,566,567],{},[422,568,569],{},"capabilities",[503,571,572],{},[422,573,574],{},"{ id: string, config?: unknown }[]",[503,576,577,578,580],{},"The ",[453,579,569],{"href":380}," the Typed blocks of this type have, with their config. A capability that is not listed is absent. No other field switches a behaviour.",[485,582,583,588,593],{},[503,584,585],{},[422,586,587],{},"titlePlaceholder",[503,589,590],{},[422,591,592],{},"string?",[503,594,595],{},"Placeholder of the empty title row.",[485,597,598,603,607],{},[503,599,600],{},[422,601,602],{},"descriptionPlaceholder",[503,604,605],{},[422,606,592],{},[503,608,609],{},"Placeholder of the empty description row.",[485,611,612,617,622],{},[503,613,614],{},[422,615,616],{},"chrome",[503,618,619],{},[422,620,621],{},"{ tags?, tone?, controls? }?",[503,623,624],{},"How much chrome the type shows (below). Absent: all of it.",[418,626,627,629],{},[422,628,616],{},":",[631,632,633,640,657],"ul",{},[634,635,636,639],"li",{},[422,637,638],{},"tags: false"," hides the tag row of the type.",[634,641,642,645,646,649,650,429,653,656],{},[422,643,644],{},"tone"," is a CSS colour or ",[422,647,648],{},"var(...)",". A Typed block of the type gets ",[422,651,652],{},"data-block-type-tone",[422,654,655],{},"--sk-block-type-tone"," on its wrapper (tinted surface and a left border), and its tree rows tint the type icon.",[634,658,659,662,663,455],{},[422,660,661],{},"controls: false"," makes the chrome of the Typed block read-only although the editor is editable: no basket menu, status menu, title-visibility toggle, tag editing or drag handle on the type icon, and a read-only details popover. An existing basket, status and tags still show as chips. Default ",[422,664,665],{},"true",[457,667,669],{"id":668},"config-of-the-built-in-capabilities","Config of the built-in capabilities",[479,671,672,685],{},[482,673,674],{},[485,675,676,679,682],{},[488,677,678],{},"Interface",[488,680,681],{},"Capability",[488,683,684],{},"Members",[498,686,687,705,722,739,757],{},[485,688,689,694,699],{},[503,690,691],{},[422,692,693],{},"ContainerConfig",[503,695,696],{},[422,697,698],{},"container",[503,700,701,704],{},[422,702,703],{},"accepts?: readonly string[] | 'all'",": the Block types accepted as nested Typed blocks; absent: none. Content that is no Typed block is always allowed. Only new moves are checked.",[485,706,707,712,717],{},[503,708,709],{},[422,710,711],{},"PropertiesConfig",[503,713,714],{},[422,715,716],{},"properties",[503,718,719],{},[422,720,721],{},"definitions: readonly PropertyDefinition[]",[485,723,724,729,734],{},[503,725,726],{},[422,727,728],{},"SourceConfig",[503,730,731],{},[422,732,733],{},"source",[503,735,736],{},[422,737,738],{},"media: readonly SourceMedia[]",[485,740,741,746,751],{},[503,742,743],{},[422,744,745],{},"ImportConfig",[503,747,748],{},[422,749,750],{},"import",[503,752,753,756],{},[422,754,755],{},"media?: readonly SourceMedia[]",": the media the type takes. Absent or empty: the type takes every imported file that no other type takes, text and Markdown included.",[485,758,759,764,769],{},[503,760,761],{},[422,762,763],{},"BlockTypeAi",[503,765,766],{},[422,767,768],{},"ai-brief",[503,770,771,772],{},"see ",[453,773,775],{"href":774},"#blocktypeai",[422,776,763],{},[418,778,779,782,783,471,786,531],{},[422,780,781],{},"SourceMedia"," is ",[422,784,785],{},"'image' | 'audio' | 'video' | 'file'",[422,787,788],{},"SOURCE_MEDIA_TYPES",[790,791,793],"h3",{"id":792},"blocktypeai",[422,794,763],{},[479,796,797,805],{},[482,798,799],{},[485,800,801,803],{},[488,802,490],{},[488,804,496],{},[498,806,807,817,827,844],{},[485,808,809,814],{},[503,810,811],{},[422,812,813],{},"purpose",[503,815,816],{},"One or two sentences: what a Typed block of this type is for and what its body holds. Goes into every AI request's block model (chat, generate, tasks).",[485,818,819,824],{},[503,820,821],{},[422,822,823],{},"instructions?",[503,825,826],{},"Default instruction for filling the body of a Typed block of this type (what to write, structure, tone).",[485,828,829,834],{},[503,830,831],{},[422,832,833],{},"instructionsField?",[503,835,836,837,840,841,455],{},"Key of a ",[422,838,839],{},"textarea"," property. A Typed block whose value is non-empty uses it instead of ",[422,842,843],{},"instructions",[485,845,846,851],{},[503,847,848],{},[422,849,850],{},"contentTemplate?",[503,852,853,854,857,858,861],{},"AI content template: target text as Markdown. ",[422,855,856],{},"{key}"," placeholders are replaced by the Typed block's ",[422,859,860],{},"meta[key]"," before it goes to the model; unknown ones stay.",[418,863,864,425,866,429,869,872,873,531],{},[422,865,843],{},[422,867,868],{},"instructionsField",[422,870,871],{},"contentTemplate"," are read only by the AI fill (",[422,874,875],{},"fillComposite",[457,877,879],{"id":878},"propertydefinition",[422,880,443],{},[418,882,883,884,887,888,891,892,455],{},"One Block property of a Block type, stored under ",[422,885,886],{},"key"," in the ",[422,889,890],{},"meta"," attribute of the Typed block. Defined in ",[422,893,432],{},[479,895,896,907],{},[482,897,898],{},[485,899,900,903,905],{},[488,901,902],{},"Member",[488,904,493],{},[488,906,496],{},[498,908,909,929,942,1039,1073,1090],{},[485,910,911,915,919],{},[503,912,913],{},[422,914,886],{},[503,916,917],{},[422,918,512],{},[503,920,921,922,924,925,928],{},"Key under which the value is stored in ",[422,923,890],{},". Non-empty; must not start with ",[422,926,927],{},"$"," (reserved for the pseudo-fields of a Block query).",[485,930,931,935,939],{},[503,932,933],{},[422,934,538],{},[503,936,937],{},[422,938,512],{},[503,940,941],{},"Label in the inspector, the details popover and the table.",[485,943,944,949,954],{},[503,945,946],{},[422,947,948],{},"type",[503,950,951],{},[422,952,953],{},"'text' | 'textarea' | 'date' | 'number' | 'select' | 'multiselect' | 'reference' | 'bibliography' | 'derivation' | 'checkbox' | 'url' | 'status' | 'reference-list' | 'source-anchor'",[503,955,956,957,959,960,963,964,959,967,970,971,974,975,978,979,982,983,986,987,990,991,993,994,997,998,1001,1002,1004,1005,959,1008,990,1011,471,1014,1017,1018,1021,1022,990,1025,1028,1029,425,1032,425,1035,1038],{},"The entries of ",[422,958,446],{},". ",[422,961,962],{},"bibliography",": CSL-JSON item under ",[422,965,966],{},"meta.bib",[422,968,969],{},"derivation",": read-only Derivation of a Derived block. ",[422,972,973],{},"reference",": block ID of another Typed block. ",[422,976,977],{},"multiselect",": several of ",[422,980,981],{},"options",", stored as ",[422,984,985],{},"string[]","; the key is removed when none is chosen. ",[422,988,989],{},"checkbox",": ",[422,992,665],{},"; unchecked removes the key. ",[422,995,996],{},"url",": a link as text. ",[422,999,1000],{},"status",": one of ",[422,1003,981],{},", whose options carry a ",[422,1006,1007],{},"group",[422,1009,1010],{},"reference-list",[422,1012,1013],{},"BlockAddress[]",[422,1015,1016],{},"documentId"," ",[422,1019,1020],{},"''"," = this Document). ",[422,1023,1024],{},"source-anchor",[422,1026,1027],{},"SourceAnchor",", a passage of a PDF (",[422,1030,1031],{},"page",[422,1033,1034],{},"rects",[422,1036,1037],{},"quote","); read-only in the form.",[485,1040,1041,1045,1054],{},[503,1042,1043],{},[422,1044,981],{},[503,1046,1047,471,1050,1053],{},[422,1048,1049],{},"PropertyOption[]?",[422,1051,1052],{},"{ value: string, label: string, group?: 'todo' | 'doing' | 'done' }",")",[503,1055,1056,1057,425,1060,523,1062,1064,1065,959,1067,1069,1070,1072],{},"Choices of a ",[422,1058,1059],{},"select",[422,1061,977],{},[422,1063,1000],{}," property; required for ",[422,1066,977],{},[422,1068,1007],{}," belongs to ",[422,1071,1000],{}," options.",[485,1074,1075,1080,1085],{},[503,1076,1077],{},[422,1078,1079],{},"targets",[503,1081,1082],{},[422,1083,1084],{},"readonly string[]?",[503,1086,1087,1089],{},[422,1088,973],{}," only: the Block type ids the reference may point to. Absent: any Typed block.",[485,1091,1092,1097,1102],{},[503,1093,1094],{},[422,1095,1096],{},"hidden",[503,1098,1099],{},[422,1100,1101],{},"boolean?",[503,1103,1104],{},"Stored and queried like any property, but not shown in the Block inspector, the details popover or the Block table.",[418,1106,1107,1108,959,1111,471,1114,1116,1117,471,1120,425,1123,425,1126,425,1129,425,1132,425,1135,425,1138,1141,1142,425,1145,425,1148,1151,1152,455],{},"For the behaviour of each type, see ",[453,1109,1110],{"href":176},"Block properties",[422,1112,1113],{},"PROPERTY_KINDS",[422,1115,450],{},") maps every type to a ",[422,1118,1119],{},"PropertyKind",[422,1121,1122],{},"ops",[422,1124,1125],{},"sortKey",[422,1127,1128],{},"groupKey",[422,1130,1131],{},"aggregates",[422,1133,1134],{},"text",[422,1136,1137],{},"longText",[422,1139,1140],{},"align","); the filter, aggregate and environment types it uses (",[422,1143,1144],{},"FilterOp",[422,1146,1147],{},"AggregateFn",[422,1149,1150],{},"QueryEnv",") live in ",[422,1153,1154],{},"core\u002Fquery-types.ts",[457,1156,1158],{"id":1157},"functions","Functions",[479,1160,1161,1171],{},[482,1162,1163],{},[485,1164,1165,1168],{},[488,1166,1167],{},"Export",[488,1169,1170],{},"Returns",[498,1172,1173,1189,1203,1227,1244,1257,1272,1288,1306,1318,1347],{},[485,1174,1175,1180],{},[503,1176,1177],{},[422,1178,1179],{},"defaultBlockTypes(t)",[503,1181,1182,1183,471,1186,1053],{},"the built-in Block types in the language of translator ",[422,1184,1185],{},"t",[422,1187,1188],{},"createTranslator('de')",[485,1190,1191,1196],{},[503,1192,1193],{},[422,1194,1195],{},"blockTypeOf(blockTypes, id)",[503,1197,1198,1199,1202],{},"the Block type with that id; an unknown id gets the presentation of the ",[422,1200,1201],{},"section"," type (else the first type) under its own id and label",[485,1204,1205,1213],{},[503,1206,1207,425,1210],{},[422,1208,1209],{},"blockTypeConfigOf(type, id)",[422,1211,1212],{},"listsCapability(type, id)",[503,1214,1215,1216,471,1218,1221,1222,471,1224,531],{},"the config the type gives capability ",[422,1217,507],{},[422,1219,1220],{},"undefined"," when it gives none) and whether it lists it. Both are in ",[422,1223,450],{},[453,1225,1226],{"href":380},"Block capabilities",[485,1228,1229,1234],{},[503,1230,1231],{},[422,1232,1233],{},"isRootBlockType(type)",[503,1235,1236,1237,1239,1240,1243],{},"whether the ",[422,1238,698],{}," config of the type says ",[422,1241,1242],{},"root: true",": the type stands for the file of a document tree (the built-in Document type)",[485,1245,1246,1251],{},[503,1247,1248],{},[422,1249,1250],{},"propertiesOf(type)",[503,1252,1253,1254,1256],{},"the Property definitions of the type (none without the ",[422,1255,716],{}," capability)",[485,1258,1259,1264],{},[503,1260,1261],{},[422,1262,1263],{},"sourceMediaOf(type)",[503,1265,1266,1267,1269,1270],{},"the media of its ",[422,1268,733],{}," capability, or ",[422,1271,1220],{},[485,1273,1274,1279],{},[503,1275,1276],{},[422,1277,1278],{},"aiBriefOf(type)",[503,1280,1281,1282,1284,1285,1287],{},"its ",[422,1283,768],{}," config, or ",[422,1286,1220],{}," (the AI fill is not offered then)",[485,1289,1290,1295],{},[503,1291,1292],{},[422,1293,1294],{},"acceptsChild(blockTypes, parentType, childType)",[503,1296,1297,1298,1301,1302,1305],{},"whether ",[422,1299,1300],{},"parentType"," accepts ",[422,1303,1304],{},"childType"," as nested Typed block; a parent type the list does not know accepts nothing",[485,1307,1308,1313],{},[503,1309,1310],{},[422,1311,1312],{},"acceptsImport(blockTypes, parentType)",[503,1314,1315,1316],{},"whether an imported file can go into a Typed block of ",[422,1317,1300],{},[485,1319,1320,1325],{},[503,1321,1322],{},[422,1323,1324],{},"importTypeOf(blockTypes, media)",[503,1326,1327,1328,471,1331,1334,1335,1337,1338,1340,1341,1343,1344,1346],{},"the id of the Block type that takes an imported file of ",[422,1329,1330],{},"media",[422,1332,1333],{},"null",": text, Markdown or another file the media pipeline does not know): the first type whose ",[422,1336,750],{}," names ",[422,1339,1330],{},", else the first that lists ",[422,1342,750],{}," without media; ",[422,1345,1220],{}," when none takes it",[485,1348,1349,1354],{},[503,1350,1351],{},[422,1352,1353],{},"aiBlockTypesOf(blockTypes)",[503,1355,1356,1357,425,1360,471,1363,1366],{},"the Block types as the AI chat model learns them: ",[422,1358,1359],{},"AiContextBlockType[]",[422,1361,1362],{},"{ id, label, fields, purpose? }",[422,1364,1365],{},"fields",": the Property definitions)",[457,1368,1370],{"id":1369},"json-files","JSON files",[479,1372,1373,1382],{},[482,1374,1375],{},[485,1376,1377,1379],{},[488,1378,1167],{},[488,1380,1381],{},"Does",[498,1383,1384,1422,1443,1462],{},[485,1385,1386,1391],{},[503,1387,1388],{},[422,1389,1390],{},"parseBlockTypes(input, { registry? })",[503,1392,1393,1394,1396,1397,1399,1400,1403,1404,1407,1408,1410,1411,1414,1415,1418,1419,455],{},"reads a JSON array of ",[422,1395,462],{}," (text or parsed value) and checks each entry: the fields (strict: unknown members are refused), a unique ",[422,1398,507],{},", every listed capability exists and is listed once, and its ",[422,1401,1402],{},"config"," passes the ",[422,1405,1406],{},"configSchema",". A capability without a ",[422,1409,1406],{}," takes no config. ",[422,1412,1413],{},"registry"," defaults to the built-in capabilities and those of the composites feature; pass ",[422,1416,1417],{},"preset.capabilities"," when a Feature adds more. Throws ",[422,1420,1421],{},"BlockTypeJsonError",[485,1423,1424,1429],{},[503,1425,1426],{},[422,1427,1428],{},"mergeBlockTypes(base, extra)",[503,1430,1431,1432,1435,1436,1439,1440,1442],{},"layers ",[422,1433,1434],{},"extra"," over ",[422,1437,1438],{},"base",": a type with an id that ",[422,1441,1438],{}," has replaces it in place, the others follow",[485,1444,1445,1449],{},[503,1446,1447],{},[422,1448,1421],{},[503,1450,1451,1454,1455,440,1458,1461],{},[422,1452,1453],{},"Error"," with ",[422,1456,1457],{},"issues: BlockTypeJsonIssue[]",[422,1459,1460],{},"message"," has one line per issue",[485,1463,1464,1469],{},[503,1465,1466],{},[422,1467,1468],{},"BlockTypeJsonIssue",[503,1470,1471,1474,1475,1478,1479,471,1481,1483,1484,1486,1487],{},[422,1472,1473],{},"{ index, typeId, capability, path, message }",": the entry's position (",[422,1476,1477],{},"-1"," for the file), its ",[422,1480,507],{},[422,1482,1333],{}," when it has none), the capability whose config is wrong (",[422,1485,1333],{}," for the entry itself) and the path inside the entry or config, e.g. ",[422,1488,1489],{},"definitions[0].type",[457,1491,1493],{"id":1492},"where-block-types-go-in","Where Block types go in",[479,1495,1496,1506],{},[482,1497,1498],{},[485,1499,1500,1503],{},[488,1501,1502],{},"Place",[488,1504,1505],{},"Option",[498,1507,1508,1522,1532,1552],{},[485,1509,1510,1519],{},[503,1511,1512,1515,1516],{},[422,1513,1514],{},"compositeFeature({ blockTypes })"," (Vue and React), ",[422,1517,1518],{},"compositeFeatureCore(ui, { blockTypes })",[503,1520,1521],{},"the Block types of the editor",[485,1523,1524,1529],{},[503,1525,1526],{},[422,1527,1528],{},"compositeSchemaExtensions({ blockTypes })",[503,1530,1531],{},"schema only; Block types are storage, not schema",[485,1533,1534,1549],{},[503,1535,1536,425,1539,429,1542,1545,1546],{},[422,1537,1538],{},"composeEditor({ blockTypes })",[422,1540,1541],{},"AdvancedEditor",[422,1543,1544],{},"ComposedSurface"," prop ",[422,1547,1548],{},"blockTypes",[503,1550,1551],{},"the same, for the surfaces",[485,1553,1554,1565],{},[503,1555,1556,425,1559,425,1562],{},[422,1557,1558],{},"installEditorServer(nitroApp, { ports, blockTypes })",[422,1560,1561],{},"provideEditorServer({ ports, blockTypes })",[422,1563,1564],{},"AiHandlerContext.blockTypes",[503,1566,1567],{},"the server side: the AI chat describes these types to the model",[418,1569,1570,1571,1573,1574,1577],{},"Without ",[422,1572,1548],{}," the built-in types apply: the editor falls back to ",[422,1575,1576],{},"defaultBlockTypes"," in the language of its translator.",{"title":1579,"searchDepth":1580,"depth":1580,"links":1581},"",2,[1582,1583,1587,1588,1589,1590],{"id":459,"depth":1580,"text":462},{"id":668,"depth":1580,"text":669,"children":1584},[1585],{"id":792,"depth":1586,"text":763},3,{"id":878,"depth":1580,"text":443},{"id":1157,"depth":1580,"text":1158},{"id":1369,"depth":1580,"text":1370},{"id":1492,"depth":1580,"text":1493},"BlockType, the config types of the built-in capabilities, PropertyDefinition and the functions that read and combine Block types.","md",null,{},{"icon":168},{"title":383,"description":1591},"NZRGCwVH75Vab-eE_umEhR0qTy9eKi1l9FIUAEH5xQo",[1599,1601],{"title":379,"path":380,"stem":381,"description":1600,"icon":163,"children":-1},"BlockCapability, the capability registry, the built-in capabilities with their config and appliesTo, and the BlockAction.requires gate.",{"title":392,"path":388,"stem":389,"description":1602,"icon":393,"children":-1},"Machine entry points of this site (llms.txt, markdown twins, sitemap, installable Agent Skill) and where an agent starts.",1793178239035]