[{"data":1,"prerenderedAt":2247},["ShallowReactive",2],{"navigation_docs":3,"-guides-query":412,"-guides-query-surround":2242},[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":238,"body":414,"description":2235,"extension":2236,"links":2237,"meta":2238,"navigation":2239,"path":239,"seo":2240,"stem":240,"__hash__":2241},"docs\u002F3.guides\u002F38.query.md",{"type":415,"value":416,"toc":2227},"minimark",[417,443,579,584,1148,1308,1312,1315,1388,1399,1403,1413,1697,1728,1750,1754,1812,1828,1832,1873,1934,2156,2173,2177,2185,2206,2223],[418,419,420,421,425,426,430,431,434,435,438,439,442],"p",{},"A ",[422,423,424],"strong",{},"query"," (",[427,428,429],"code",{},"DataQuery",", ",[427,432,433],{},"@skaile\u002Fforge-editor\u002Fcore",") asks the Block index for the Blocks of one or several Block types: which Documents, which Properties, in which order, grouped how, totalled how. A query is data. It is a JSON object that a view stores in a Typed block's ",[427,436,437],{},"meta",", that the client sends over HTTP, and that the document chat builds in a tool call. One evaluator, ",[427,440,441],{},"evaluateQuery",", answers all of them.",[444,445,446,462],"table",{},[447,448,449],"thead",{},[450,451,452,456,459],"tr",{},[453,454,455],"th",{},"Piece",[453,457,458],{},"What it does",[453,460,461],{},"Port (capability)",[463,464,465,487,499,511,529,543,557],"tbody",{},[450,466,467,478,484],{},[468,469,470,430,472,430,475],"td",{},[427,471,429],{},[427,473,474],{},"DataResult",[427,476,477],{},"QueryIssue",[468,479,480,481,483],{},"the query and its answer (",[427,482,433],{},")",[468,485,486],{},"none",[450,488,489,494,497],{},[468,490,491],{},[427,492,493],{},"validateQuery(defs, query)",[468,495,496],{},"the issues of a query: unknown field, operator the type does not take, wrong value",[468,498,486],{},[450,500,501,506,509],{},[468,502,503],{},[427,504,505],{},"evaluateQuery(rows, defs, query, env)",[468,507,508],{},"filters, searches, sorts, groups, totals and pages the rows",[468,510,486],{},[450,512,513,518,524],{},[468,514,515],{},[427,516,517],{},"BlockIndex.query(query, scope, env, definitions?)",[468,519,520,521],{},"answers a query over the Documents in ",[427,522,523],{},"scope",[468,525,526],{},[427,527,528],{},"index",[450,530,531,536,539],{},[468,532,533],{},[427,534,535],{},"POST \u002Fapi\u002Feditor\u002Fquery",[468,537,538],{},"the same over HTTP",[468,540,541],{},[427,542,528],{},[450,544,545,550,553],{},[468,546,547],{},[427,548,549],{},"EditorBackend['index'].query",[468,551,552],{},"the client call",[468,554,555],{},[427,556,528],{},[450,558,559,572,575],{},[468,560,561,564,565,568,569],{},[427,562,563],{},"find_blocks"," with ",[427,566,567],{},"blockType"," and ",[427,570,571],{},"filter",[468,573,574],{},"the document chat lists Blocks by their Properties",[468,576,577],{},[427,578,528],{},[580,581,583],"h2",{"id":582},"the-query","The query",[585,586,591],"pre",{"className":587,"code":588,"language":589,"meta":590,"style":590},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"v\": 1,\n  \"source\": { \"kind\": \"blocks\", \"blockType\": \"task\", \"scope\": { \"documentIds\": [\"plan\"] } },\n  \"filter\": { \"and\": [\n    { \"field\": \"status\", \"op\": \"eq\", \"value\": \"done\" },\n    { \"field\": \"points\", \"op\": \"gte\", \"value\": 3 }\n  ] },\n  \"search\": { \"q\": \"angebot\" },\n  \"sorts\": [{ \"field\": \"due\", \"dir\": \"asc\", \"nulls\": \"last\" }],\n  \"group\": { \"field\": \"$basket\", \"hideEmpty\": true },\n  \"aggregates\": [{ \"fn\": \"sum\", \"field\": \"points\", \"as\": \"total\" }],\n  \"select\": [\"status\", \"points\", \"due\"],\n  \"page\": { \"limit\": 50 }\n}\n","json","",[427,592,593,602,625,717,742,802,855,863,895,964,1009,1075,1114,1142],{"__ignoreMap":590},[594,595,598],"span",{"class":596,"line":597},"line",1,[594,599,601],{"class":600},"sMK4o","{\n",[594,603,605,608,612,615,618,622],{"class":596,"line":604},2,[594,606,607],{"class":600},"  \"",[594,609,611],{"class":610},"spNyl","v",[594,613,614],{"class":600},"\"",[594,616,617],{"class":600},":",[594,619,621],{"class":620},"sbssI"," 1",[594,623,624],{"class":600},",\n",[594,626,628,630,633,635,637,640,643,647,649,651,653,657,659,662,664,666,668,670,672,675,677,679,681,683,685,687,689,691,694,696,698,701,703,706,708,711,714],{"class":596,"line":627},3,[594,629,607],{"class":600},[594,631,632],{"class":610},"source",[594,634,614],{"class":600},[594,636,617],{"class":600},[594,638,639],{"class":600}," {",[594,641,642],{"class":600}," \"",[594,644,646],{"class":645},"sBMFI","kind",[594,648,614],{"class":600},[594,650,617],{"class":600},[594,652,642],{"class":600},[594,654,656],{"class":655},"sfazB","blocks",[594,658,614],{"class":600},[594,660,661],{"class":600},",",[594,663,642],{"class":600},[594,665,567],{"class":645},[594,667,614],{"class":600},[594,669,617],{"class":600},[594,671,642],{"class":600},[594,673,674],{"class":655},"task",[594,676,614],{"class":600},[594,678,661],{"class":600},[594,680,642],{"class":600},[594,682,523],{"class":645},[594,684,614],{"class":600},[594,686,617],{"class":600},[594,688,639],{"class":600},[594,690,642],{"class":600},[594,692,693],{"class":620},"documentIds",[594,695,614],{"class":600},[594,697,617],{"class":600},[594,699,700],{"class":600}," [",[594,702,614],{"class":600},[594,704,705],{"class":655},"plan",[594,707,614],{"class":600},[594,709,710],{"class":600},"]",[594,712,713],{"class":600}," }",[594,715,716],{"class":600}," },\n",[594,718,720,722,724,726,728,730,732,735,737,739],{"class":596,"line":719},4,[594,721,607],{"class":600},[594,723,571],{"class":610},[594,725,614],{"class":600},[594,727,617],{"class":600},[594,729,639],{"class":600},[594,731,642],{"class":600},[594,733,734],{"class":645},"and",[594,736,614],{"class":600},[594,738,617],{"class":600},[594,740,741],{"class":600}," [\n",[594,743,745,748,750,753,755,757,759,762,764,766,768,771,773,775,777,780,782,784,786,789,791,793,795,798,800],{"class":596,"line":744},5,[594,746,747],{"class":600},"    {",[594,749,642],{"class":600},[594,751,752],{"class":620},"field",[594,754,614],{"class":600},[594,756,617],{"class":600},[594,758,642],{"class":600},[594,760,761],{"class":655},"status",[594,763,614],{"class":600},[594,765,661],{"class":600},[594,767,642],{"class":600},[594,769,770],{"class":620},"op",[594,772,614],{"class":600},[594,774,617],{"class":600},[594,776,642],{"class":600},[594,778,779],{"class":655},"eq",[594,781,614],{"class":600},[594,783,661],{"class":600},[594,785,642],{"class":600},[594,787,788],{"class":620},"value",[594,790,614],{"class":600},[594,792,617],{"class":600},[594,794,642],{"class":600},[594,796,797],{"class":655},"done",[594,799,614],{"class":600},[594,801,716],{"class":600},[594,803,805,807,809,811,813,815,817,820,822,824,826,828,830,832,834,837,839,841,843,845,847,849,852],{"class":596,"line":804},6,[594,806,747],{"class":600},[594,808,642],{"class":600},[594,810,752],{"class":620},[594,812,614],{"class":600},[594,814,617],{"class":600},[594,816,642],{"class":600},[594,818,819],{"class":655},"points",[594,821,614],{"class":600},[594,823,661],{"class":600},[594,825,642],{"class":600},[594,827,770],{"class":620},[594,829,614],{"class":600},[594,831,617],{"class":600},[594,833,642],{"class":600},[594,835,836],{"class":655},"gte",[594,838,614],{"class":600},[594,840,661],{"class":600},[594,842,642],{"class":600},[594,844,788],{"class":620},[594,846,614],{"class":600},[594,848,617],{"class":600},[594,850,851],{"class":620}," 3",[594,853,854],{"class":600}," }\n",[594,856,858,861],{"class":596,"line":857},7,[594,859,860],{"class":600},"  ]",[594,862,716],{"class":600},[594,864,866,868,871,873,875,877,879,882,884,886,888,891,893],{"class":596,"line":865},8,[594,867,607],{"class":600},[594,869,870],{"class":610},"search",[594,872,614],{"class":600},[594,874,617],{"class":600},[594,876,639],{"class":600},[594,878,642],{"class":600},[594,880,881],{"class":645},"q",[594,883,614],{"class":600},[594,885,617],{"class":600},[594,887,642],{"class":600},[594,889,890],{"class":655},"angebot",[594,892,614],{"class":600},[594,894,716],{"class":600},[594,896,898,900,903,905,907,910,912,914,916,918,920,923,925,927,929,932,934,936,938,941,943,945,947,950,952,954,956,959,961],{"class":596,"line":897},9,[594,899,607],{"class":600},[594,901,902],{"class":610},"sorts",[594,904,614],{"class":600},[594,906,617],{"class":600},[594,908,909],{"class":600}," [{",[594,911,642],{"class":600},[594,913,752],{"class":645},[594,915,614],{"class":600},[594,917,617],{"class":600},[594,919,642],{"class":600},[594,921,922],{"class":655},"due",[594,924,614],{"class":600},[594,926,661],{"class":600},[594,928,642],{"class":600},[594,930,931],{"class":645},"dir",[594,933,614],{"class":600},[594,935,617],{"class":600},[594,937,642],{"class":600},[594,939,940],{"class":655},"asc",[594,942,614],{"class":600},[594,944,661],{"class":600},[594,946,642],{"class":600},[594,948,949],{"class":645},"nulls",[594,951,614],{"class":600},[594,953,617],{"class":600},[594,955,642],{"class":600},[594,957,958],{"class":655},"last",[594,960,614],{"class":600},[594,962,963],{"class":600}," }],\n",[594,965,967,969,972,974,976,978,980,982,984,986,988,991,993,995,997,1000,1002,1004,1007],{"class":596,"line":966},10,[594,968,607],{"class":600},[594,970,971],{"class":610},"group",[594,973,614],{"class":600},[594,975,617],{"class":600},[594,977,639],{"class":600},[594,979,642],{"class":600},[594,981,752],{"class":645},[594,983,614],{"class":600},[594,985,617],{"class":600},[594,987,642],{"class":600},[594,989,990],{"class":655},"$basket",[594,992,614],{"class":600},[594,994,661],{"class":600},[594,996,642],{"class":600},[594,998,999],{"class":645},"hideEmpty",[594,1001,614],{"class":600},[594,1003,617],{"class":600},[594,1005,1006],{"class":600}," true",[594,1008,716],{"class":600},[594,1010,1012,1014,1017,1019,1021,1023,1025,1028,1030,1032,1034,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1062,1064,1066,1068,1071,1073],{"class":596,"line":1011},11,[594,1013,607],{"class":600},[594,1015,1016],{"class":610},"aggregates",[594,1018,614],{"class":600},[594,1020,617],{"class":600},[594,1022,909],{"class":600},[594,1024,642],{"class":600},[594,1026,1027],{"class":645},"fn",[594,1029,614],{"class":600},[594,1031,617],{"class":600},[594,1033,642],{"class":600},[594,1035,1036],{"class":655},"sum",[594,1038,614],{"class":600},[594,1040,661],{"class":600},[594,1042,642],{"class":600},[594,1044,752],{"class":645},[594,1046,614],{"class":600},[594,1048,617],{"class":600},[594,1050,642],{"class":600},[594,1052,819],{"class":655},[594,1054,614],{"class":600},[594,1056,661],{"class":600},[594,1058,642],{"class":600},[594,1060,1061],{"class":645},"as",[594,1063,614],{"class":600},[594,1065,617],{"class":600},[594,1067,642],{"class":600},[594,1069,1070],{"class":655},"total",[594,1072,614],{"class":600},[594,1074,963],{"class":600},[594,1076,1078,1080,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111],{"class":596,"line":1077},12,[594,1079,607],{"class":600},[594,1081,1082],{"class":610},"select",[594,1084,614],{"class":600},[594,1086,617],{"class":600},[594,1088,700],{"class":600},[594,1090,614],{"class":600},[594,1092,761],{"class":655},[594,1094,614],{"class":600},[594,1096,661],{"class":600},[594,1098,642],{"class":600},[594,1100,819],{"class":655},[594,1102,614],{"class":600},[594,1104,661],{"class":600},[594,1106,642],{"class":600},[594,1108,922],{"class":655},[594,1110,614],{"class":600},[594,1112,1113],{"class":600},"],\n",[594,1115,1117,1119,1122,1124,1126,1128,1130,1133,1135,1137,1140],{"class":596,"line":1116},13,[594,1118,607],{"class":600},[594,1120,1121],{"class":610},"page",[594,1123,614],{"class":600},[594,1125,617],{"class":600},[594,1127,639],{"class":600},[594,1129,642],{"class":600},[594,1131,1132],{"class":645},"limit",[594,1134,614],{"class":600},[594,1136,617],{"class":600},[594,1138,1139],{"class":620}," 50",[594,1141,854],{"class":600},[594,1143,1145],{"class":596,"line":1144},14,[594,1146,1147],{"class":600},"}\n",[1149,1150,1151,1186,1210,1219,1228,1256,1281,1290],"ul",{},[1152,1153,1154,1157,1158,1160,1161,430,1164,1167,1168,1171,1172,430,1174,1177,1178,1181,1182,1185],"li",{},[427,1155,1156],{},"source.blockType"," is one Block type id or a list. A Typed block's type is its ",[427,1159,567],{},"; any other Block has its node type (",[427,1162,1163],{},"paragraph",[427,1165,1166],{},"heading",", …). ",[427,1169,1170],{},"source.scope"," narrows further: ",[427,1173,693],{},[427,1175,1176],{},"tags"," (a row needs one of them), ",[427,1179,1180],{},"basket",". ",[427,1183,1184],{},"subtreeOf"," is not applied: the index does not know the nesting, and the answer says so with a warning.",[1152,1187,1188,1190,1191,1194,1195,1198,1199,1202,1203,1205,1206,1209],{},[427,1189,571],{}," is a condition ",[427,1192,1193],{},"{ field, op, value? }"," or ",[427,1196,1197],{},"{ and: [...] }"," \u002F ",[427,1200,1201],{},"{ or: [...] }",", nested as deep as needed. An empty ",[427,1204,734],{}," holds, an empty ",[427,1207,1208],{},"or"," does not.",[1152,1211,1212,1215,1216,1218],{},[427,1213,1214],{},"search.q"," uses the words rule of the workspace search: every word must match, as a whole word or as the start of one. Without a ",[427,1217,902],{}," entry that decides, the best match comes first.",[1152,1220,1221,1223,1224,1227],{},[427,1222,902],{},": the first entry that tells two rows apart wins. A row without a value sorts last; ",[427,1225,1226],{},"nulls: 'first'"," turns that around.",[1152,1229,1230,1232,1233,1236,1237,1239,1240,430,1243,430,1246,1248,1249,1252,1253,1255],{},[427,1231,971],{}," partitions the page into ",[427,1234,1235],{},"groups",". The groups follow the order of the property's options (a ",[427,1238,761],{}," group ",[427,1241,1242],{},"todo",[427,1244,1245],{},"doing",[427,1247,797],{}," as declared), else the order of first appearance; the group without a value (",[427,1250,1251],{},"key: null",") is last unless ",[427,1254,999],{},".",[1152,1257,1258,425,1260,430,1263,430,1265,430,1268,430,1271,1274,1275,1278,1279,1255],{},[427,1259,1016],{},[427,1261,1262],{},"count",[427,1264,1036],{},[427,1266,1267],{},"avg",[427,1269,1270],{},"min",[427,1272,1273],{},"max",") are computed over ",[422,1276,1277],{},"all"," matching rows, not just the page, and answered under ",[427,1280,1061],{},[1152,1282,1283,1285,1286,1289],{},[427,1284,1082],{}," lists the property keys and pseudo-fields to put in ",[427,1287,1288],{},"DataRow.values",". Absent: every property of the Block.",[1152,1291,1292,1295,1296,1299,1300,1303,1304,1307],{},[427,1293,1294],{},"page.limit"," is at most ",[427,1297,1298],{},"MAX_QUERY_ROWS"," (1000). ",[427,1301,1302],{},"nextCursor"," of an answer goes into ",[427,1305,1306],{},"page.cursor"," of the next request. The cursor is the base64 of the row offset, so a page is not stable if Blocks change between two calls.",[580,1309,1311],{"id":1310},"fields","Fields",[418,1313,1314],{},"A field is a property key of the Block types in the source, or a pseudo-field:",[444,1316,1317,1327],{},[447,1318,1319],{},[450,1320,1321,1324],{},[453,1322,1323],{},"Pseudo-field",[453,1325,1326],{},"Value",[463,1328,1329,1339,1349,1359,1369,1379],{},[450,1330,1331,1336],{},[468,1332,1333],{},[427,1334,1335],{},"$title",[468,1337,1338],{},"the title of a Typed block, the text of a heading",[450,1340,1341,1346],{},[468,1342,1343],{},[427,1344,1345],{},"$tags",[468,1347,1348],{},"the tag names in the Block",[450,1350,1351,1356],{},[468,1352,1353],{},[427,1354,1355],{},"$type",[468,1357,1358],{},"the Block type id or node type",[450,1360,1361,1366],{},[468,1362,1363],{},[427,1364,1365],{},"$id",[468,1367,1368],{},"the block ID",[450,1370,1371,1376],{},[468,1372,1373],{},[427,1374,1375],{},"$doc",[468,1377,1378],{},"the Document ID",[450,1380,1381,1385],{},[468,1382,1383],{},[427,1384,990],{},[468,1386,1387],{},"the colour basket of a Typed block",[418,1389,1390,1391,1394,1395,1398],{},"Property keys must not start with ",[427,1392,1393],{},"$","; ",[427,1396,1397],{},"propertyDefinitionSchema"," refuses them.",[580,1400,1402],{"id":1401},"operators-per-property-kind","Operators per property kind",[418,1404,1405,1406,425,1409,1412],{},"Which operators, sort key, group key and aggregates apply is the property kind's entry in ",[427,1407,1408],{},"PROPERTY_KINDS",[427,1410,1411],{},"core\u002Fproperty-kinds.ts","); the query does not branch on the type itself.",[444,1414,1415,1428],{},[447,1416,1417],{},[450,1418,1419,1422,1425],{},[453,1420,1421],{},"Kind",[453,1423,1424],{},"Operators",[453,1426,1427],{},"Aggregates",[463,1429,1430,1467,1507,1541,1572,1599,1616,1635,1658],{},[450,1431,1432,1443,1463],{},[468,1433,1434,430,1437,430,1440],{},[427,1435,1436],{},"text",[427,1438,1439],{},"textarea",[427,1441,1442],{},"url",[468,1444,1445,1447,1448,1447,1451,1447,1454,1447,1457,1447,1460],{},[427,1446,779],{}," ",[427,1449,1450],{},"ne",[427,1452,1453],{},"contains",[427,1455,1456],{},"startsWith",[427,1458,1459],{},"isEmpty",[427,1461,1462],{},"isNotEmpty",[468,1464,1465],{},[427,1466,1262],{},[450,1468,1469,1474,1495],{},[468,1470,1471],{},[427,1472,1473],{},"number",[468,1475,1476,1447,1478,1447,1480,1447,1483,1447,1486,1447,1489,1447,1491,1447,1493],{},[427,1477,779],{},[427,1479,1450],{},[427,1481,1482],{},"lt",[427,1484,1485],{},"lte",[427,1487,1488],{},"gt",[427,1490,836],{},[427,1492,1459],{},[427,1494,1462],{},[468,1496,1497,1447,1499,1447,1501,1447,1503,1447,1505],{},[427,1498,1262],{},[427,1500,1036],{},[427,1502,1267],{},[427,1504,1270],{},[427,1506,1273],{},[450,1508,1509,1514,1533],{},[468,1510,1511],{},[427,1512,1513],{},"date",[468,1515,1516,1447,1518,1447,1520,1447,1523,1447,1526,1447,1529,1447,1531],{},[427,1517,779],{},[427,1519,1450],{},[427,1521,1522],{},"before",[427,1524,1525],{},"after",[427,1527,1528],{},"on",[427,1530,1459],{},[427,1532,1462],{},[468,1534,1535,1447,1537,1447,1539],{},[427,1536,1262],{},[427,1538,1270],{},[427,1540,1273],{},[450,1542,1543,1552,1568],{},[468,1544,1545,430,1547,430,1549],{},[427,1546,1082],{},[427,1548,761],{},[427,1550,1551],{},"reference",[468,1553,1554,1447,1556,1447,1558,1447,1561,1447,1564,1447,1566],{},[427,1555,779],{},[427,1557,1450],{},[427,1559,1560],{},"hasAny",[427,1562,1563],{},"hasNone",[427,1565,1459],{},[427,1567,1462],{},[468,1569,1570],{},[427,1571,1262],{},[450,1573,1574,1582,1595],{},[468,1575,1576,430,1579],{},[427,1577,1578],{},"multiselect",[427,1580,1581],{},"reference-list",[468,1583,1584,1447,1586,1447,1589,1447,1591,1447,1593],{},[427,1585,1560],{},[427,1587,1588],{},"hasAll",[427,1590,1563],{},[427,1592,1459],{},[427,1594,1462],{},[468,1596,1597],{},[427,1598,1262],{},[450,1600,1601,1606,1612],{},[468,1602,1603],{},[427,1604,1605],{},"checkbox",[468,1607,1608,1447,1610],{},[427,1609,779],{},[427,1611,1450],{},[468,1613,1614],{},[427,1615,1262],{},[450,1617,1618,1623,1631],{},[468,1619,1620],{},[427,1621,1622],{},"bibliography",[468,1624,1625,1447,1627,1447,1629],{},[427,1626,1453],{},[427,1628,1459],{},[427,1630,1462],{},[468,1632,1633],{},[427,1634,1262],{},[450,1636,1637,1642,1654],{},[468,1638,1639],{},[427,1640,1641],{},"derivation",[468,1643,1644,1447,1646,1447,1648,1447,1650,1447,1652],{},[427,1645,779],{},[427,1647,1450],{},[427,1649,1453],{},[427,1651,1459],{},[427,1653,1462],{},[468,1655,1656],{},[427,1657,1262],{},[450,1659,1660,1665,1685],{},[468,1661,1662],{},[427,1663,1664],{},"source-anchor",[468,1666,1667,1447,1669,1447,1671,1447,1673,1447,1675,1447,1677,1447,1679,1447,1681,1447,1683],{},[427,1668,779],{},[427,1670,1450],{},[427,1672,1482],{},[427,1674,1485],{},[427,1676,1488],{},[427,1678,836],{},[427,1680,1453],{},[427,1682,1459],{},[427,1684,1462],{},[468,1686,1687,1447,1689,1447,1691,1693,1694,1696],{},[427,1688,1262],{},[427,1690,1270],{},[427,1692,1273],{}," (the page; ",[427,1695,1453],{}," reads the quoted text)",[418,1698,1699,1700,1702,1703,1706,1707,1710,1711,568,1713,1715,1716,1719,1720,1723,1724,1727],{},"Dates: ",[427,1701,1528],{}," compares the calendar day in ",[427,1704,1705],{},"env.timeZone"," (a plain ",[427,1708,1709],{},"YYYY-MM-DD"," is that day whatever the time zone), ",[427,1712,1522],{},[427,1714,1525],{}," compare the instant (a plain day counts as its start in UTC). Text sorts by the collation of ",[427,1717,1718],{},"env.locale",", numerically where it holds numbers (",[427,1721,1722],{},"item 2"," before ",[427,1725,1726],{},"item 10",").",[418,1729,1730,425,1733,1736,1737,430,1740,430,1743,568,1746,1749],{},[427,1731,1732],{},"env",[427,1734,1735],{},"QueryEnv",") carries ",[427,1738,1739],{},"locale",[427,1741,1742],{},"timeZone",[427,1744,1745],{},"now",[427,1747,1748],{},"me",". The evaluator is pure: the same rows, query and env give the same answer.",[580,1751,1753],{"id":1752},"which-property-definitions-apply","Which Property definitions apply",[418,1755,1756,1759,1760,1763,1764,1766,1767,1770,1771,1774,1775,1778,1779,1782,1783,1785,1786,1788,1789,1791,1792,1794,1795,1797,1798,1800,1801,1804,1805,1808,1809,1811],{},[427,1757,1758],{},"evaluateQuery(rows, defs, …)"," types a field by ",[427,1761,1762],{},"defs",". On the server, ",[427,1765,1762],{}," are the ",[427,1768,1769],{},"properties"," capability of the host's Block types (",[427,1772,1773],{},"EditorServerOptions.blockTypes",") that the query's source names, merged, the first definition of a key winning (",[427,1776,1777],{},"queryDefinitionsOf"," in ",[427,1780,1781],{},"@skaile\u002Fforge-editor\u002Fserver","). A property that no Block type declares is not an error: the evaluator infers a kind from the values of the rows (a boolean is a ",[427,1784,1605],{},", a number a ",[427,1787,1473],{},", a date-like text a ",[427,1790,1513],{},", other text ",[427,1793,1436],{},", a list of addresses a ",[427,1796,1581],{},", a list of text a ",[427,1799,1578],{},"; the first value of a key decides). A key that no row has is an ",[427,1802,1803],{},"unknown-field",". So a host with no ",[427,1806,1807],{},"blockTypes"," configured still answers queries over ",[427,1810,674],{}," Blocks, just without option order or status groups.",[418,1813,1814,1815,430,1818,1821,1822,1824,1825,1827],{},"An error issue means no rows: the answer has ",[427,1816,1817],{},"rows: []",[427,1819,1820],{},"total: 0"," and the issues. A warning (a ",[427,1823,1082],{}," entry nobody has, ",[427,1826,1184],{},") is answered along with the rows.",[580,1829,1831],{"id":1830},"the-port-the-route-and-the-client","The port, the route and the client",[418,1833,1834,1836,1837,1181,1839,1842,1843,1846,1847,1849,1850,1852,1853,1856,1857,1860,1861,1863,1864,1866,1867,1869,1870,1255],{},[427,1835,517],{}," answers a query over the Blocks of the Documents in ",[427,1838,523],{},[427,1840,1841],{},"source.scope.documentIds"," narrows the scope and never widens it (",[427,1844,1845],{},"narrowScope","). The memory adapter runs ",[427,1848,441],{}," over its rows. The drizzle adapter loads the rows of the source's Block types per Document with one SQL statement and evaluates in JS; a database-specific adapter may push parts of the filter into SQL as long as it gives the answer ",[427,1851,441],{}," gives (the ",[427,1854,1855],{},"BlockIndex"," contract in ",[427,1858,1859],{},"test\u002Fsupport\u002Fblock-index-contract.ts"," checks this). A custom ",[427,1862,1855],{}," must implement ",[427,1865,424],{},"; the quickest way is ",[427,1868,441],{}," over ",[427,1871,1872],{},"byDocument",[418,1874,1875,1877,1878,425,1881,1394,1884,1886,1887,568,1889,1891,1892,1895,1896,1899,1900,1903,1904,1906,1907,1910,1911,1914,1915,1918,1919,1922,1923,1926,1927,1930,1931,1933],{},[427,1876,535],{}," takes ",[427,1879,1880],{},"{ query, env? }",[427,1882,1883],{},"QueryRequestBody",[427,1885,1732],{}," has ",[427,1888,1739],{},[427,1890,1742],{},", defaulting to the first ",[427,1893,1894],{},"Accept-Language"," tag ",[427,1897,1898],{},"Intl"," knows and ",[427,1901,1902],{},"UTC","). It answers a ",[427,1905,474],{}," for the Documents the user may read (",[427,1908,1909],{},"readableDocumentsOf","). ",[427,1912,1913],{},"401"," without a user, ",[427,1916,1917],{},"400"," for a body that is no query, ",[427,1920,1921],{},"422"," when the query has an error issue (the error's ",[427,1924,1925],{},"data"," lists the issues), ",[427,1928,1929],{},"501"," without the ",[427,1932,528],{}," port.",[585,1935,1939],{"className":1936,"code":1937,"language":1938,"meta":590,"style":590},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const result = await backend.index.query({\n  v: 1,\n  source: { kind: 'blocks', blockType: 'task' },\n  filter: { field: 'status', op: 'eq', value: 'done' },\n  group: { field: '$basket' },\n})\nfor (const group of result.groups ?? []) console.log(group.key, group.rows.length)\n","ts",[427,1940,1941,1974,1986,2023,2071,2092,2100],{"__ignoreMap":590},[594,1942,1943,1946,1950,1953,1957,1960,1962,1964,1966,1969,1972],{"class":596,"line":597},[594,1944,1945],{"class":610},"const",[594,1947,1949],{"class":1948},"sTEyZ"," result ",[594,1951,1952],{"class":600},"=",[594,1954,1956],{"class":1955},"s7zQu"," await",[594,1958,1959],{"class":1948}," backend",[594,1961,1255],{"class":600},[594,1963,528],{"class":1948},[594,1965,1255],{"class":600},[594,1967,424],{"class":1968},"s2Zo4",[594,1970,1971],{"class":1948},"(",[594,1973,601],{"class":600},[594,1975,1976,1980,1982,1984],{"class":596,"line":604},[594,1977,1979],{"class":1978},"swJcz","  v",[594,1981,617],{"class":600},[594,1983,621],{"class":620},[594,1985,624],{"class":600},[594,1987,1988,1991,1993,1995,1998,2000,2003,2005,2008,2010,2013,2015,2017,2019,2021],{"class":596,"line":627},[594,1989,1990],{"class":1978},"  source",[594,1992,617],{"class":600},[594,1994,639],{"class":600},[594,1996,1997],{"class":1978}," kind",[594,1999,617],{"class":600},[594,2001,2002],{"class":600}," '",[594,2004,656],{"class":655},[594,2006,2007],{"class":600},"'",[594,2009,661],{"class":600},[594,2011,2012],{"class":1978}," blockType",[594,2014,617],{"class":600},[594,2016,2002],{"class":600},[594,2018,674],{"class":655},[594,2020,2007],{"class":600},[594,2022,716],{"class":600},[594,2024,2025,2028,2030,2032,2035,2037,2039,2041,2043,2045,2048,2050,2052,2054,2056,2058,2061,2063,2065,2067,2069],{"class":596,"line":719},[594,2026,2027],{"class":1978},"  filter",[594,2029,617],{"class":600},[594,2031,639],{"class":600},[594,2033,2034],{"class":1978}," field",[594,2036,617],{"class":600},[594,2038,2002],{"class":600},[594,2040,761],{"class":655},[594,2042,2007],{"class":600},[594,2044,661],{"class":600},[594,2046,2047],{"class":1978}," op",[594,2049,617],{"class":600},[594,2051,2002],{"class":600},[594,2053,779],{"class":655},[594,2055,2007],{"class":600},[594,2057,661],{"class":600},[594,2059,2060],{"class":1978}," value",[594,2062,617],{"class":600},[594,2064,2002],{"class":600},[594,2066,797],{"class":655},[594,2068,2007],{"class":600},[594,2070,716],{"class":600},[594,2072,2073,2076,2078,2080,2082,2084,2086,2088,2090],{"class":596,"line":744},[594,2074,2075],{"class":1978},"  group",[594,2077,617],{"class":600},[594,2079,639],{"class":600},[594,2081,2034],{"class":1978},[594,2083,617],{"class":600},[594,2085,2002],{"class":600},[594,2087,990],{"class":655},[594,2089,2007],{"class":600},[594,2091,716],{"class":600},[594,2093,2094,2097],{"class":596,"line":804},[594,2095,2096],{"class":600},"}",[594,2098,2099],{"class":1948},")\n",[594,2101,2102,2105,2107,2109,2111,2114,2117,2119,2122,2125,2128,2130,2133,2136,2138,2141,2143,2146,2148,2151,2153],{"class":596,"line":857},[594,2103,2104],{"class":1955},"for",[594,2106,425],{"class":1948},[594,2108,1945],{"class":610},[594,2110,1239],{"class":1948},[594,2112,2113],{"class":600},"of",[594,2115,2116],{"class":1948}," result",[594,2118,1255],{"class":600},[594,2120,2121],{"class":1948},"groups ",[594,2123,2124],{"class":600},"??",[594,2126,2127],{"class":1948}," []) console",[594,2129,1255],{"class":600},[594,2131,2132],{"class":1968},"log",[594,2134,2135],{"class":1948},"(group",[594,2137,1255],{"class":600},[594,2139,2140],{"class":1948},"key",[594,2142,661],{"class":600},[594,2144,2145],{"class":1948}," group",[594,2147,1255],{"class":600},[594,2149,2150],{"class":1948},"rows",[594,2152,1255],{"class":600},[594,2154,2155],{"class":1948},"length)\n",[418,2157,2158,2161,2162,425,2165,430,2167,2169,2170,2172],{},[427,2159,2160],{},"EditorBackend.index.query?(query, { env?, signal? })"," is optional: a backend without it leaves data views out. It rejects with ",[427,2163,2164],{},"BackendError",[427,2166,1921],{},[427,2168,1925],{}," = the issues) for an invalid query. The HTTP backend sends the browser's time zone unless ",[427,2171,1732],{}," says otherwise.",[580,2174,2176],{"id":2175},"the-document-chat","The document chat",[418,2178,2179,425,2181,2184],{},[427,2180,563],{},[427,2182,2183],{},"createWorkspaceTools()",") gains two inputs:",[1149,2186,2187,2195],{},[1152,2188,2189,2191,2192,2194],{},[427,2190,567],{}," lists the Blocks of that type (all of them without a ",[427,2193,571],{},");",[1152,2196,2197,2199,2200,2203,2204,1255],{},[427,2198,571],{}," is a ",[427,2201,2202],{},"FilterNode"," over their Properties, and needs ",[427,2205,567],{},[418,2207,2208,2209,2211,2212,2215,2216,2219,2220,2222],{},"With ",[427,2210,424],{}," as well, only the hits of the search come back. Each hit then carries its ",[427,2213,2214],{},"values",". A filter that does not fit the type comes back to the model as a sentence (",[427,2217,2218],{},"Ungültige Abfrage: …"," naming the field and the operators the type takes), so it can correct the call. Without ",[427,2221,567],{}," the tool works as before: a search by words.",[2224,2225,2226],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":590,"searchDepth":604,"depth":604,"links":2228},[2229,2230,2231,2232,2233,2234],{"id":582,"depth":604,"text":583},{"id":1310,"depth":604,"text":1311},{"id":1401,"depth":604,"text":1402},{"id":1752,"depth":604,"text":1753},{"id":1830,"depth":604,"text":1831},{"id":2175,"depth":604,"text":2176},"The DataQuery model, its pseudo-fields and operators per property kind, the evaluator, the BlockIndex.query port method, the route, the client call and the find_blocks tool.","md",null,{},{"icon":241},{"title":238,"description":2235},"RfS6in7L3ID-ur9MaXwT0wBy8S9b1jsINPICMnzoq8U",[2243,2245],{"title":234,"path":235,"stem":236,"description":2244,"icon":163,"children":-1},"Show unchecked AI results as „KI-Vorschlag“ in the Freigabestatus, list what to look at before a Typed block is exported, and register your own check source.",{"title":243,"path":244,"stem":245,"description":2246,"icon":246,"children":-1},"Which Blocks point at a Block: the Edges the Block index projects from references, Derivations, embeds and tags, the ones a person adds in the inspector, the edges route and the drizzle table.",1793213906304]