[{"data":1,"prerenderedAt":2089},["ShallowReactive",2],{"navigation_docs":3,"-guides-block-properties":412,"-guides-block-properties-surround":2084},[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":175,"body":414,"description":2077,"extension":2078,"links":2079,"meta":2080,"navigation":2081,"path":176,"seo":2082,"stem":177,"__hash__":2083},"docs\u002F3.guides\u002F26.block-properties.md",{"type":415,"value":416,"toc":2071},"minimark",[417,441,446,460,1246,1252,1261,1368,1377,1654,1682,1729,1733,1794,1798,1813,1833,1837,1878,1925,2020,2036,2067],[418,419,420,421,425,426,429,430,434,435,440],"p",{},"A ",[422,423,424],"strong",{},"Block property"," is a value that a Block carries, such as a status, a due date or a link to another Block. A ",[422,427,428],{},"Property definition"," declares one: its key, its label and its value type. One definition type serves the whole editor: the ",[431,432,433],"code",{},"properties"," capability, the Block inspector, the details popover, the table, the AI context and the server's chat schema all describe a Block property with it. The ",[436,437,439],"a",{"href":438},"\u002Freference\u002Fblock-types#propertydefinition","Property definition contract"," lists the members.",[442,443,445],"h2",{"id":444},"define-the-properties-of-a-block-type","Define the properties of a Block type",[418,447,448,449,451,452,455,456,459],{},"A Block type lists the ",[431,450,433],{}," capability with ",[431,453,454],{},"{ definitions }",". The example defines four Block properties for the Block type ",[431,457,458],{},"decision"," and sets one of them from code:",[461,462,468],"pre",{"className":463,"code":464,"filename":465,"language":466,"meta":467,"style":467},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { BlockType, PropertiesConfig, PropertyDefinition } from '@skaile\u002Fforge-editor\u002Fcomposites\u002Fschema'\nimport { blockPropertiesAt, setBlockProperty } from '@skaile\u002Fforge-editor\u002Fcomposites'\nimport type { Editor } from '@tiptap\u002Fcore'\n\n\u002F\u002F One Property definition per Block property: the key under which it is stored in `meta`, its label and its value type.\nconst definitions: PropertyDefinition[] = [\n  { key: 'status', label: 'Status', type: 'select', options: [{ value: 'entwurf', label: 'Entwurf' }, { value: 'fertig', label: 'Fertig' }] },\n  { key: 'topics', label: 'Themen', type: 'multiselect', options: [{ value: 'cost', label: 'Kosten' }, { value: 'risk', label: 'Risiko' }] },\n  { key: 'owner', label: 'Zuständig', type: 'text' },\n  { key: 'related', label: 'Verwandt', type: 'reference', targets: ['decision'] },\n]\n\n\u002F\u002F The `properties` capability carries them; a Block type without it has no Block properties.\nexport const decision: BlockType = {\n  id: 'decision',\n  label: 'Entscheidung',\n  icon: 'i-lucide-gavel',\n  capabilities: [{ id: 'properties', config: { definitions } satisfies PropertiesConfig }],\n}\n\n\u002F** Sets `status` on the block around the caret, in one transaction. False when no block there has Block properties. *\u002F\nexport function finishAtCaret(editor: Editor, blockTypes: readonly BlockType[]): boolean {\n  const at = blockPropertiesAt(editor, editor.state.selection.$from, blockTypes)\n  return at ? setBlockProperty(editor, at.properties, 'status', 'fertig') : false\n}\n","docs\u002Fsnippets\u002Fblock-properties.ts","ts","",[431,469,470,517,543,566,573,580,605,727,837,882,943,949,954,960,982,999,1016,1033,1083,1089,1094,1100,1146,1191,1241],{"__ignoreMap":467},[471,472,475,479,482,486,490,493,496,498,501,504,507,510,514],"span",{"class":473,"line":474},"line",1,[471,476,478],{"class":477},"s7zQu","import",[471,480,481],{"class":477}," type",[471,483,485],{"class":484},"sMK4o"," {",[471,487,489],{"class":488},"sTEyZ"," BlockType",[471,491,492],{"class":484},",",[471,494,495],{"class":488}," PropertiesConfig",[471,497,492],{"class":484},[471,499,500],{"class":488}," PropertyDefinition",[471,502,503],{"class":484}," }",[471,505,506],{"class":477}," from",[471,508,509],{"class":484}," '",[471,511,513],{"class":512},"sfazB","@skaile\u002Fforge-editor\u002Fcomposites\u002Fschema",[471,515,516],{"class":484},"'\n",[471,518,520,522,524,527,529,532,534,536,538,541],{"class":473,"line":519},2,[471,521,478],{"class":477},[471,523,485],{"class":484},[471,525,526],{"class":488}," blockPropertiesAt",[471,528,492],{"class":484},[471,530,531],{"class":488}," setBlockProperty",[471,533,503],{"class":484},[471,535,506],{"class":477},[471,537,509],{"class":484},[471,539,540],{"class":512},"@skaile\u002Fforge-editor\u002Fcomposites",[471,542,516],{"class":484},[471,544,546,548,550,552,555,557,559,561,564],{"class":473,"line":545},3,[471,547,478],{"class":477},[471,549,481],{"class":477},[471,551,485],{"class":484},[471,553,554],{"class":488}," Editor",[471,556,503],{"class":484},[471,558,506],{"class":477},[471,560,509],{"class":484},[471,562,563],{"class":512},"@tiptap\u002Fcore",[471,565,516],{"class":484},[471,567,569],{"class":473,"line":568},4,[471,570,572],{"emptyLinePlaceholder":571},true,"\n",[471,574,576],{"class":473,"line":575},5,[471,577,579],{"class":578},"sHwdD","\u002F\u002F One Property definition per Block property: the key under which it is stored in `meta`, its label and its value type.\n",[471,581,583,587,590,593,596,599,602],{"class":473,"line":582},6,[471,584,586],{"class":585},"spNyl","const",[471,588,589],{"class":488}," definitions",[471,591,592],{"class":484},":",[471,594,500],{"class":595},"sBMFI",[471,597,598],{"class":488},"[] ",[471,600,601],{"class":484},"=",[471,603,604],{"class":488}," [\n",[471,606,608,611,615,617,619,622,625,627,630,632,634,637,639,641,643,645,647,650,652,654,657,659,662,665,668,670,672,675,677,679,681,683,685,688,690,693,695,697,699,701,704,706,708,710,712,714,717,719,721,724],{"class":473,"line":607},7,[471,609,610],{"class":484},"  {",[471,612,614],{"class":613},"swJcz"," key",[471,616,592],{"class":484},[471,618,509],{"class":484},[471,620,621],{"class":512},"status",[471,623,624],{"class":484},"'",[471,626,492],{"class":484},[471,628,629],{"class":613}," label",[471,631,592],{"class":484},[471,633,509],{"class":484},[471,635,636],{"class":512},"Status",[471,638,624],{"class":484},[471,640,492],{"class":484},[471,642,481],{"class":613},[471,644,592],{"class":484},[471,646,509],{"class":484},[471,648,649],{"class":512},"select",[471,651,624],{"class":484},[471,653,492],{"class":484},[471,655,656],{"class":613}," options",[471,658,592],{"class":484},[471,660,661],{"class":488}," [",[471,663,664],{"class":484},"{",[471,666,667],{"class":613}," value",[471,669,592],{"class":484},[471,671,509],{"class":484},[471,673,674],{"class":512},"entwurf",[471,676,624],{"class":484},[471,678,492],{"class":484},[471,680,629],{"class":613},[471,682,592],{"class":484},[471,684,509],{"class":484},[471,686,687],{"class":512},"Entwurf",[471,689,624],{"class":484},[471,691,692],{"class":484}," },",[471,694,485],{"class":484},[471,696,667],{"class":613},[471,698,592],{"class":484},[471,700,509],{"class":484},[471,702,703],{"class":512},"fertig",[471,705,624],{"class":484},[471,707,492],{"class":484},[471,709,629],{"class":613},[471,711,592],{"class":484},[471,713,509],{"class":484},[471,715,716],{"class":512},"Fertig",[471,718,624],{"class":484},[471,720,503],{"class":484},[471,722,723],{"class":488},"] ",[471,725,726],{"class":484},"},\n",[471,728,730,732,734,736,738,741,743,745,747,749,751,754,756,758,760,762,764,767,769,771,773,775,777,779,781,783,785,788,790,792,794,796,798,801,803,805,807,809,811,813,816,818,820,822,824,826,829,831,833,835],{"class":473,"line":729},8,[471,731,610],{"class":484},[471,733,614],{"class":613},[471,735,592],{"class":484},[471,737,509],{"class":484},[471,739,740],{"class":512},"topics",[471,742,624],{"class":484},[471,744,492],{"class":484},[471,746,629],{"class":613},[471,748,592],{"class":484},[471,750,509],{"class":484},[471,752,753],{"class":512},"Themen",[471,755,624],{"class":484},[471,757,492],{"class":484},[471,759,481],{"class":613},[471,761,592],{"class":484},[471,763,509],{"class":484},[471,765,766],{"class":512},"multiselect",[471,768,624],{"class":484},[471,770,492],{"class":484},[471,772,656],{"class":613},[471,774,592],{"class":484},[471,776,661],{"class":488},[471,778,664],{"class":484},[471,780,667],{"class":613},[471,782,592],{"class":484},[471,784,509],{"class":484},[471,786,787],{"class":512},"cost",[471,789,624],{"class":484},[471,791,492],{"class":484},[471,793,629],{"class":613},[471,795,592],{"class":484},[471,797,509],{"class":484},[471,799,800],{"class":512},"Kosten",[471,802,624],{"class":484},[471,804,692],{"class":484},[471,806,485],{"class":484},[471,808,667],{"class":613},[471,810,592],{"class":484},[471,812,509],{"class":484},[471,814,815],{"class":512},"risk",[471,817,624],{"class":484},[471,819,492],{"class":484},[471,821,629],{"class":613},[471,823,592],{"class":484},[471,825,509],{"class":484},[471,827,828],{"class":512},"Risiko",[471,830,624],{"class":484},[471,832,503],{"class":484},[471,834,723],{"class":488},[471,836,726],{"class":484},[471,838,840,842,844,846,848,851,853,855,857,859,861,864,866,868,870,872,874,877,879],{"class":473,"line":839},9,[471,841,610],{"class":484},[471,843,614],{"class":613},[471,845,592],{"class":484},[471,847,509],{"class":484},[471,849,850],{"class":512},"owner",[471,852,624],{"class":484},[471,854,492],{"class":484},[471,856,629],{"class":613},[471,858,592],{"class":484},[471,860,509],{"class":484},[471,862,863],{"class":512},"Zuständig",[471,865,624],{"class":484},[471,867,492],{"class":484},[471,869,481],{"class":613},[471,871,592],{"class":484},[471,873,509],{"class":484},[471,875,876],{"class":512},"text",[471,878,624],{"class":484},[471,880,881],{"class":484}," },\n",[471,883,885,887,889,891,893,896,898,900,902,904,906,909,911,913,915,917,919,922,924,926,929,931,933,935,937,939,941],{"class":473,"line":884},10,[471,886,610],{"class":484},[471,888,614],{"class":613},[471,890,592],{"class":484},[471,892,509],{"class":484},[471,894,895],{"class":512},"related",[471,897,624],{"class":484},[471,899,492],{"class":484},[471,901,629],{"class":613},[471,903,592],{"class":484},[471,905,509],{"class":484},[471,907,908],{"class":512},"Verwandt",[471,910,624],{"class":484},[471,912,492],{"class":484},[471,914,481],{"class":613},[471,916,592],{"class":484},[471,918,509],{"class":484},[471,920,921],{"class":512},"reference",[471,923,624],{"class":484},[471,925,492],{"class":484},[471,927,928],{"class":613}," targets",[471,930,592],{"class":484},[471,932,661],{"class":488},[471,934,624],{"class":484},[471,936,458],{"class":512},[471,938,624],{"class":484},[471,940,723],{"class":488},[471,942,726],{"class":484},[471,944,946],{"class":473,"line":945},11,[471,947,948],{"class":488},"]\n",[471,950,952],{"class":473,"line":951},12,[471,953,572],{"emptyLinePlaceholder":571},[471,955,957],{"class":473,"line":956},13,[471,958,959],{"class":578},"\u002F\u002F The `properties` capability carries them; a Block type without it has no Block properties.\n",[471,961,963,966,969,972,974,976,979],{"class":473,"line":962},14,[471,964,965],{"class":477},"export",[471,967,968],{"class":585}," const",[471,970,971],{"class":488}," decision",[471,973,592],{"class":484},[471,975,489],{"class":595},[471,977,978],{"class":484}," =",[471,980,981],{"class":484}," {\n",[471,983,985,988,990,992,994,996],{"class":473,"line":984},15,[471,986,987],{"class":613},"  id",[471,989,592],{"class":484},[471,991,509],{"class":484},[471,993,458],{"class":512},[471,995,624],{"class":484},[471,997,998],{"class":484},",\n",[471,1000,1002,1005,1007,1009,1012,1014],{"class":473,"line":1001},16,[471,1003,1004],{"class":613},"  label",[471,1006,592],{"class":484},[471,1008,509],{"class":484},[471,1010,1011],{"class":512},"Entscheidung",[471,1013,624],{"class":484},[471,1015,998],{"class":484},[471,1017,1019,1022,1024,1026,1029,1031],{"class":473,"line":1018},17,[471,1020,1021],{"class":613},"  icon",[471,1023,592],{"class":484},[471,1025,509],{"class":484},[471,1027,1028],{"class":512},"i-lucide-gavel",[471,1030,624],{"class":484},[471,1032,998],{"class":484},[471,1034,1036,1039,1041,1043,1045,1048,1050,1052,1054,1056,1058,1061,1063,1065,1068,1071,1074,1076,1078,1081],{"class":473,"line":1035},18,[471,1037,1038],{"class":613},"  capabilities",[471,1040,592],{"class":484},[471,1042,661],{"class":488},[471,1044,664],{"class":484},[471,1046,1047],{"class":613}," id",[471,1049,592],{"class":484},[471,1051,509],{"class":484},[471,1053,433],{"class":512},[471,1055,624],{"class":484},[471,1057,492],{"class":484},[471,1059,1060],{"class":613}," config",[471,1062,592],{"class":484},[471,1064,485],{"class":484},[471,1066,1067],{"class":488}," definitions ",[471,1069,1070],{"class":484},"}",[471,1072,1073],{"class":477}," satisfies",[471,1075,495],{"class":595},[471,1077,503],{"class":484},[471,1079,1080],{"class":488},"]",[471,1082,998],{"class":484},[471,1084,1086],{"class":473,"line":1085},19,[471,1087,1088],{"class":484},"}\n",[471,1090,1092],{"class":473,"line":1091},20,[471,1093,572],{"emptyLinePlaceholder":571},[471,1095,1097],{"class":473,"line":1096},21,[471,1098,1099],{"class":578},"\u002F** Sets `status` on the block around the caret, in one transaction. False when no block there has Block properties. *\u002F\n",[471,1101,1103,1105,1108,1112,1115,1119,1121,1123,1125,1128,1130,1133,1135,1138,1141,1144],{"class":473,"line":1102},22,[471,1104,965],{"class":477},[471,1106,1107],{"class":585}," function",[471,1109,1111],{"class":1110},"s2Zo4"," finishAtCaret",[471,1113,1114],{"class":484},"(",[471,1116,1118],{"class":1117},"sHdIc","editor",[471,1120,592],{"class":484},[471,1122,554],{"class":595},[471,1124,492],{"class":484},[471,1126,1127],{"class":1117}," blockTypes",[471,1129,592],{"class":484},[471,1131,1132],{"class":585}," readonly",[471,1134,489],{"class":595},[471,1136,1137],{"class":488},"[]",[471,1139,1140],{"class":484},"):",[471,1142,1143],{"class":595}," boolean",[471,1145,981],{"class":484},[471,1147,1149,1152,1155,1157,1159,1161,1163,1165,1168,1171,1174,1176,1179,1181,1184,1186,1188],{"class":473,"line":1148},23,[471,1150,1151],{"class":585},"  const",[471,1153,1154],{"class":488}," at",[471,1156,978],{"class":484},[471,1158,526],{"class":1110},[471,1160,1114],{"class":613},[471,1162,1118],{"class":488},[471,1164,492],{"class":484},[471,1166,1167],{"class":488}," editor",[471,1169,1170],{"class":484},".",[471,1172,1173],{"class":488},"state",[471,1175,1170],{"class":484},[471,1177,1178],{"class":488},"selection",[471,1180,1170],{"class":484},[471,1182,1183],{"class":488},"$from",[471,1185,492],{"class":484},[471,1187,1127],{"class":488},[471,1189,1190],{"class":613},")\n",[471,1192,1194,1197,1199,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1235,1237],{"class":473,"line":1193},24,[471,1195,1196],{"class":477},"  return",[471,1198,1154],{"class":488},[471,1200,1201],{"class":484}," ?",[471,1203,531],{"class":1110},[471,1205,1114],{"class":613},[471,1207,1118],{"class":488},[471,1209,492],{"class":484},[471,1211,1154],{"class":488},[471,1213,1170],{"class":484},[471,1215,433],{"class":488},[471,1217,492],{"class":484},[471,1219,509],{"class":484},[471,1221,621],{"class":512},[471,1223,624],{"class":484},[471,1225,492],{"class":484},[471,1227,509],{"class":484},[471,1229,703],{"class":512},[471,1231,624],{"class":484},[471,1233,1234],{"class":613},") ",[471,1236,592],{"class":484},[471,1238,1240],{"class":1239},"sfNiH"," false\n",[471,1242,1244],{"class":473,"line":1243},25,[471,1245,1088],{"class":484},[418,1247,1248,1249,1251],{},"A Block type without the ",[431,1250,433],{}," capability has no Block properties: the Block inspector shows no section and the details popover shows no fields.",[418,1253,420,1254,1256,1257,1260],{},[431,1255,621],{}," property says where a Block is in its work. It is no record that someone checked it: a checked state belongs in a Prüfung, which is pinned to the content of the Block and lives outside the document (",[436,1258,1259],{"href":186},"Prüfung",").",[1262,1263,1264,1280],"table",{},[1265,1266,1267],"thead",{},[1268,1269,1270,1277],"tr",{},[1271,1272,1273,1276],"th",{},[431,1274,1275],{},"PropertyDefinition"," member",[1271,1278,1279],{},"Content",[1281,1282,1283,1302,1312,1346,1358],"tbody",{},[1268,1284,1285,1295],{},[1286,1287,1288,1291,1292],"td",{},[431,1289,1290],{},"key",", ",[431,1293,1294],{},"label",[1286,1296,1297,1298,1301],{},"the key under which the Block property is stored in ",[431,1299,1300],{},"meta",", and its label",[1268,1303,1304,1309],{},[1286,1305,1306],{},[431,1307,1308],{},"type",[1286,1310,1311],{},"one of the value types below",[1268,1313,1314,1319],{},[1286,1315,1316],{},[431,1317,1318],{},"options",[1286,1320,1321,1324,1325,1291,1327,1329,1330,1332,1333,1335,1336,1339,1340,1343,1344,656],{},[431,1322,1323],{},"{ value, label, group? }"," choices of a ",[431,1326,649],{},[431,1328,766],{}," or ",[431,1331,621],{}," property (required for ",[431,1334,766],{},"); ",[431,1337,1338],{},"group"," (",[431,1341,1342],{},"'todo' | 'doing' | 'done'",") only on ",[431,1345,621],{},[1268,1347,1348,1353],{},[1286,1349,1350],{},[431,1351,1352],{},"targets",[1286,1354,1355,1357],{},[431,1356,921],{}," only: the Block type ids the Block reference may point to; absent = any Typed block",[1268,1359,1360,1365],{},[1286,1361,1362],{},[431,1363,1364],{},"hidden",[1286,1366,1367],{},"the property is stored and queried like any other, but the Block inspector, the details popover and the Block table do not show it: for a JSON value an own view edits (the query of a collection)",[418,1369,1370,1371,1339,1374,1140],{},"The value types are the entries of ",[431,1372,1373],{},"PROPERTY_TYPES",[431,1375,1376],{},"@skaile\u002Fforge-editor\u002Fcore",[1262,1378,1379,1392],{},[1265,1380,1381],{},[1268,1382,1383,1386,1389],{},[1271,1384,1385],{},"Type",[1271,1387,1388],{},"Stored value",[1271,1390,1391],{},"Notes",[1281,1393,1394,1412,1424,1436,1456,1473,1492,1511,1524,1539,1554,1585,1616],{},[1268,1395,1396,1403,1406],{},[1286,1397,1398,1291,1400],{},[431,1399,876],{},[431,1401,1402],{},"textarea",[1286,1404,1405],{},"string",[1286,1407,1408,1409,1411],{},"a ",[431,1410,1402],{}," property gets no column in the Block table",[1268,1413,1414,1419,1421],{},[1286,1415,1416],{},[431,1417,1418],{},"date",[1286,1420,1405],{},[1286,1422,1423],{},"formatted in the table",[1268,1425,1426,1431,1433],{},[1286,1427,1428],{},[431,1429,1430],{},"number",[1286,1432,1430],{},[1286,1434,1435],{},"a numeric string is converted; an empty value removes the key",[1268,1437,1438,1442,1444],{},[1286,1439,1440],{},[431,1441,649],{},[1286,1443,1405],{},[1286,1445,1446,1447,1449,1450,1452,1453,1455],{},"one of ",[431,1448,1318],{},". A ",[431,1451,649],{}," property with the key ",[431,1454,621],{}," also shows as the status chip on the title line",[1268,1457,1458,1462,1467],{},[1286,1459,1460],{},[431,1461,766],{},[1286,1463,1464],{},[431,1465,1466],{},"string[]",[1286,1468,1469,1470,1472],{},"several of ",[431,1471,1318],{},", which are required",[1268,1474,1475,1479,1482],{},[1286,1476,1477],{},[431,1478,921],{},[1286,1480,1481],{},"block ID",[1286,1483,1484,1485,1487,1488,1491],{},"a Block reference to a Typed block of the Document; ",[431,1486,1352],{}," limits the Block types. It implies the ",[431,1489,1490],{},"references"," capability",[1268,1493,1494,1499,1505],{},[1286,1495,1496],{},[431,1497,1498],{},"bibliography",[1286,1500,1501,1502],{},"CSL-JSON item in ",[431,1503,1504],{},"meta.bib",[1286,1506,1507,1508,1510],{},"needs the ",[431,1509,1498],{}," capability; without it the definition drops out of the fields",[1268,1512,1513,1518,1521],{},[1286,1514,1515],{},[431,1516,1517],{},"derivation",[1286,1519,1520],{},"the Derivation",[1286,1522,1523],{},"read-only",[1268,1525,1526,1531,1536],{},[1286,1527,1528],{},[431,1529,1530],{},"checkbox",[1286,1532,1533],{},[431,1534,1535],{},"true",[1286,1537,1538],{},"a switch; unchecked removes the key",[1268,1540,1541,1546,1548],{},[1286,1542,1543],{},[431,1544,1545],{},"url",[1286,1547,1405],{},[1286,1549,1550,1551],{},"a link as text, edited in an ",[431,1552,1553],{},"\u003Cinput type=\"url\">",[1268,1555,1556,1560,1562],{},[1286,1557,1558],{},[431,1559,621],{},[1286,1561,1405],{},[1286,1563,1446,1564,1566,1567,1569,1570,1339,1572,1291,1575,1291,1578,1581,1582,1584],{},[431,1565,1318],{}," like ",[431,1568,649],{},", whose options carry a ",[431,1571,1338],{},[431,1573,1574],{},"todo",[431,1576,1577],{},"doing",[431,1579,1580],{},"done","). A property with the key ",[431,1583,621],{}," shows as the status chip on the title line; its icon and color follow the option's group",[1268,1586,1587,1592,1597],{},[1286,1588,1589],{},[431,1590,1591],{},"reference-list",[1286,1593,1594],{},[431,1595,1596],{},"BlockAddress[]",[1286,1598,1599,1600,1603,1604,1607,1608,1611,1612,1615],{},"several Blocks (",[431,1601,1602],{},"{ documentId, blockId }","; ",[431,1605,1606],{},"documentId"," ",[431,1609,1610],{},"''"," = this Document). The form lists them as removable chips and adds a Typed block of the Document from a select; entries that are no valid address are dropped (",[431,1613,1614],{},"blockAddressesOf","), and the key is removed when none is left",[1268,1617,1618,1623,1628],{},[1286,1619,1620],{},[431,1621,1622],{},"source-anchor",[1286,1624,1625],{},[431,1626,1627],{},"SourceAnchor",[1286,1629,1630,1631,1339,1634,1291,1636,1291,1639,1641,1642,1645,1646,1649,1650,1653],{},"a passage of a PDF: ",[431,1632,1633],{},"{ page, rects, quote: { exact, prefix?, suffix? } }",[431,1635,1627],{},[431,1637,1638],{},"sourceAnchorOf",[431,1640,1376],{},"). Read-only in the form (page and quoted text); the add-on ",[431,1643,1644],{},"@skaile\u002Fforge-editor-pdf-viewer"," creates it from a text selection. ",[431,1647,1648],{},"rects"," are fractions (0 to 1) of the page; the value is kept only with a page of 1 or more and a non-empty ",[431,1651,1652],{},"quote.exact",", otherwise the key is removed",[418,1655,1656,1661,1662,1664,1665,1667,1668,1671,1672,1674,1675,1678,1679,1681],{},[422,1657,1658,1660],{},[431,1659,766],{}," properties."," A ",[431,1663,766],{}," property stores its choices as a ",[431,1666,1466],{}," under its key: ",[431,1669,1670],{},"meta.topics = ['a', 'b']",". The details popover and the Block inspector show a multi-choice menu (a checkbox list in the React binding). An empty choice removes the key from ",[431,1673,1300],{},", and entries that are not strings are dropped (",[431,1676,1677],{},"metaWithProperty","). Table cells, sort keys and the AI brief read the option labels joined by ",[431,1680,1291],{},", and the chat model is told to write a JSON list.",[418,1683,1684,1685,1687,1688,1291,1690,1291,1693,1291,1696,1699,1700,1704,1705,1708,1709,1291,1712,1291,1715,1291,1718,1291,1721,1724,1725,1728],{},"Do not declare a Property definition with a reserved ",[431,1686,1300],{}," key (",[431,1689,1517],{},[431,1691,1692],{},"bib",[431,1694,1695],{},"basket",[431,1697,1698],{},"titleHidden","). Every Block type keeps those four itself (",[436,1701,1703],{"href":1702},"\u002Fguides\u002Fcomposites#reserved-meta-keys","Reserved meta keys","). A key must not start with ",[431,1706,1707],{},"$"," either: ",[431,1710,1711],{},"$title",[431,1713,1714],{},"$tags",[431,1716,1717],{},"$type",[431,1719,1720],{},"$id",[431,1722,1723],{},"$doc"," and ",[431,1726,1727],{},"$basket"," are the pseudo-fields of a Block query, and the Block type config check rejects such a key.",[442,1730,1732],{"id":1731},"property-kinds","Property kinds",[418,1734,1735,1339,1738,1740,1741,1744,1745,1747,1748,1751,1752,1755,1756,1759,1760,1763,1764,1767,1768,1771,1772,1775,1776,1779,1780,1783,1784,1291,1786,1329,1788,1790,1791,1793],{},[431,1736,1737],{},"PROPERTY_KINDS",[431,1739,1376],{},") holds one ",[431,1742,1743],{},"PropertyKind"," per entry of ",[431,1746,1373],{},": which filter operators apply (",[431,1749,1750],{},"ops","), the ordering key of a value (",[431,1753,1754],{},"sortKey","), the bucket it falls into when rows are grouped (",[431,1757,1758],{},"groupKey","), the aggregate functions that make sense (",[431,1761,1762],{},"aggregates","), the value as text (",[431,1765,1766],{},"text(value, definition, env)",", with ",[431,1769,1770],{},"env: QueryEnv"," carrying the locale and time zone), whether a cell truncates it (",[431,1773,1774],{},"longText",") and the column alignment (",[431,1777,1778],{},"align","). A query and a table read this registry instead of checking the type themselves. ",[431,1781,1782],{},"statusGroupOf(definition, value)"," gives the ",[431,1785,1574],{},[431,1787,1577],{},[431,1789,1580],{}," group of a ",[431,1792,621],{}," value.",[442,1795,1797],{"id":1796},"where-the-values-live","Where the values live",[418,1799,1800,1801,1803,1804,1806,1807,1809,1810,1260],{},"Block properties live in the ",[431,1802,1300],{}," attribute of the node. Only the node of a Typed block has that attribute today, so only Typed blocks carry Block properties. The ",[431,1805,433],{}," capability applies to any node that has a ",[431,1808,1300],{}," attribute and whose Block type lists it (",[431,1811,1812],{},"carriesProperties(node)",[418,1814,1815,1816,1819,1820,1823,1824,1826,1827,1829,1830,1170],{},"Storage is unchanged by the mechanism. In Markdown the values travel in the fence's meta JSON (",[431,1817,1818],{},"::: decision {\"status\":\"open\"}","). ",[431,1821,1822],{},"changeBlockType",", conversions and the fence keep only the keys that the target Block type declares, plus the four reserved ones. A global ",[431,1825,1300],{}," attribute on every Block is not part of the editor: it would need a Markdown block-attribute syntax first, because the fences write ",[431,1828,1300],{}," only inside ",[431,1831,1832],{},"::: kind {meta}",[442,1834,1836],{"id":1835},"the-block-inspector-and-the-other-views","The Block inspector and the other views",[418,1838,1839,1840,1843,1844,1846,1847,1851,1852,1855,1856,1858,1859,1339,1862,1865,1866,1291,1869,1291,1871,1603,1874,1877],{},"The Block inspector (",[431,1841,1842],{},"CompositeInspector",") shows a section „Blockeigenschaften“ (English: \"Block properties\") for any Block that has the ",[431,1845,433],{}," capability, with one input per Property definition of its Block type. The „Dokument“ section stays the Document's own facts. The details popover, the ",[436,1848,1850],{"href":1849},"\u002Fguides\u002Fcomposites#block-table-and-block-inspector","Block table"," and the AI brief read the same definitions. Every edit is one editor transaction, so it reaches collaborators and undo like any other edit. A Derived Block (any Block whose capabilities include ",[431,1853,1854],{},"derived",") also shows its Derivation in the inspector as „Herkunft“ (English: \"Origin\"), with „Quelle fehlt“ (\"Source missing\") when the original is gone, whatever its Block type; a Block type with a ",[431,1857,1517],{}," Property definition shows it once, through that definition. The model reads it as ",[431,1860,1861],{},"state.derivation",[431,1863,1864],{},"InspectorDerivation",": ",[431,1867,1868],{},"node",[431,1870,1517],{},[431,1872,1873],{},"sourceMissing",[431,1875,1876],{},"null"," when the Block is not Derived or the definition shows it).",[418,1879,1880,1881,1339,1884,1886,1887,1890,1891,1339,1894,1291,1897,1291,1900,1291,1902,1905,1906,1909,1910,1291,1912,1291,1914,1291,1916,1291,1918,1291,1920,1724,1922,1924],{},"An own view reads the Block properties at the caret from the framework-free model ",[431,1882,1883],{},"createCompositeInspector(editor)",[431,1885,540],{},"): ",[431,1888,1889],{},"state.properties"," is a ",[431,1892,1893],{},"BlockProperties",[431,1895,1896],{},"id",[431,1898,1899],{},"pos",[431,1901,1300],{},[431,1903,1904],{},"definitions","), and ",[431,1907,1908],{},"setField(definition, value)"," writes one text value to it (the structured types ",[431,1911,921],{},[431,1913,1498],{},[431,1915,1517],{},[431,1917,766],{},[431,1919,1530],{},[431,1921,1591],{},[431,1923,1622],{}," have their own editors and are ignored). The functions below work without it:",[1262,1926,1927,1940],{},[1265,1928,1929],{},[1268,1930,1931,1937],{},[1271,1932,1933,1934,1936],{},"Function (",[431,1935,540],{},")",[1271,1938,1939],{},"Does",[1281,1941,1942,1954,1970,1983,1993,2007],{},[1268,1943,1944,1948],{},[1286,1945,1946],{},[431,1947,1812],{},[1286,1949,1950,1951,1953],{},"whether the node type has the ",[431,1952,1300],{}," attribute",[1268,1955,1956,1961],{},[1286,1957,1958],{},[431,1959,1960],{},"blockPropertiesAt(editor, $pos, blockTypes)",[1286,1962,1963,1964,1967,1968],{},"the innermost Block around ",[431,1965,1966],{},"$pos"," that carries properties, with its node, or ",[431,1969,1876],{},[1268,1971,1972,1977],{},[1286,1973,1974],{},[431,1975,1976],{},"blockPropertiesOf(node, pos, blockTypes, capabilities)",[1286,1978,1979,1980,1982],{},"the ",[431,1981,1893],{}," of one node",[1268,1984,1985,1990],{},[1286,1986,1987],{},[431,1988,1989],{},"propertyHostOf(doc, target)",[1286,1991,1992],{},"finds the Block again by its block ID (or its position without an ID)",[1268,1994,1995,2000],{},[1286,1996,1997],{},[431,1998,1999],{},"setBlockProperty(editor, target, key, value)",[1286,2001,2002,2003,2006],{},"stores one value in one transaction; ",[431,2004,2005],{},"false"," when the Block is gone or carries no properties",[1268,2008,2009,2014],{},[1286,2010,2011],{},[431,2012,2013],{},"metaWithProperty(meta, definition, value)",[1286,2015,2016,2017,2019],{},"the new ",[431,2018,1300],{}," object; an empty value removes the key",[418,2021,2022,2025,2026,2029,2030,2033,2034,1170],{},[431,2023,2024],{},"setBlockProperty"," finds the Block again by its block ID, so a position read before a remote change stays usable. A key that the ",[431,2027,2028],{},"fields"," do not define is written as text. A table row (",[431,2031,2032],{},"CompositeRow",") carries the Property definitions of its Block type as ",[431,2035,2028],{},[418,2037,2038,1607,2041,2043,2044,2046,2047,2050,2051,2053,2054,2057,2058,2060,2061,2063,2064,2066],{},[422,2039,2040],{},"Under collaboration.",[431,2042,1300],{}," is one attribute of the Block, which Yjs syncs as a whole value; two users who each write their whole ",[431,2045,1300],{}," at the same moment would lose one key. In a collaboration session whose backend offers ",[431,2048,2049],{},"collaboration.patchProperty"," (the HTTP backend), ",[431,2052,2024],{}," therefore sends the one key to ",[431,2055,2056],{},"POST \u002Fapi\u002Feditor\u002Fdocuments\u002F:id\u002Fproperty",", the collaboration server writes it into the open document (",[431,2059,1677],{},", one writer) and the sync delivers it to every client: nothing is written locally, and the call returns ",[431,2062,1535],{}," when the Block exists. When the server refuses (the document is not open there, the user is read-only, the Block is unknown), the value is written locally and the editor shows the notice „Eigenschaft konnte nicht synchron gespeichert werden“. Writes by single-actor flows (derive, outline cleanup) stay whole-",[431,2065,1300],{}," writes.",[2068,2069,2070],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":467,"searchDepth":519,"depth":519,"links":2072},[2073,2074,2075,2076],{"id":444,"depth":519,"text":445},{"id":1731,"depth":519,"text":1732},{"id":1796,"depth":519,"text":1797},{"id":1835,"depth":519,"text":1836},"Define Block properties with Property definitions, give them to a Block type with the properties capability and read and write them.","md",null,{},{"icon":178},{"title":175,"description":2077},"hyDdChCkrIhYALjWWDtr9VZPgJyl5LAGFdR8b7DxvOM",[2085,2087],{"title":170,"path":171,"stem":172,"description":2086,"icon":173,"children":-1},"Register one way to make a block from another block, find the Derived blocks of an original and handle a missing source.",{"title":180,"path":181,"stem":182,"description":2088,"icon":183,"children":-1},"The Bild-Studio block: a picture with its description, prompt blocks, references, previous generations and chat. The node, its Markdown form, the state reducers, the images backend port and the dialog for your own store.",1793213904742]