[{"data":1,"prerenderedAt":506},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:NDHZHAFMZZtSuJTmjgmbBmIPjEzY4T20x7aKB_FJNZc":303,"content-page-surround:docs:NDHZHAFMZZtSuJTmjgmbBmIPjEzY4T20x7aKB_FJNZc":499,"i-lucide:clipboard":502},[4,28,54,100,176,215,278,298],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Learn",false,"1","en","content:docs:1.evaluate:.navigation.yml","i-lucide-compass","section",[13,18,23],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"path":17},"Why Nuxt Board","content:docs:1.evaluate:1.why-nuxt-board.md","1\u002F1","\u002Fdocs\u002Fevaluate\u002Fwhy-nuxt-board",{"title":19,"id":20,"canonicalKey":21,"locale":8,"draft":6,"path":22},"How Nuxt Board works","content:docs:1.evaluate:2.how-nuxt-board-works.md","1\u002F2","\u002Fdocs\u002Fevaluate\u002Fhow-nuxt-board-works",{"title":24,"id":25,"canonicalKey":26,"locale":8,"draft":6,"path":27},"Design decisions","content:docs:1.evaluate:4.design-decisions.md","1\u002F4","\u002Fdocs\u002Fevaluate\u002Fdesign-decisions",{"title":29,"page":6,"canonicalKey":30,"locale":8,"id":31,"draft":6,"icon":32,"children":33},"Start building","2","content:docs:2.start-building:.navigation.yml","i-lucide-rocket",[34,39,44,49],{"title":35,"id":36,"canonicalKey":37,"locale":8,"draft":6,"path":38},"Installation","content:docs:2.start-building:1.installation.md","2\u002F1","\u002Fdocs\u002Fstart-building\u002Finstallation",{"title":40,"id":41,"canonicalKey":42,"locale":8,"draft":6,"path":43},"Your first board","content:docs:2.start-building:2.your-first-board.md","2\u002F2","\u002Fdocs\u002Fstart-building\u002Fyour-first-board",{"title":45,"id":46,"canonicalKey":47,"locale":8,"draft":6,"path":48},"Customize your first node","content:docs:2.start-building:3.customize-your-first-node.md","2\u002F3","\u002Fdocs\u002Fstart-building\u002Fcustomize-your-first-node",{"title":50,"id":51,"canonicalKey":52,"locale":8,"draft":6,"path":53},"Add connections and history","content:docs:2.start-building:4.add-connections-and-history.md","2\u002F4","\u002Fdocs\u002Fstart-building\u002Fadd-connections-and-history",{"title":55,"page":6,"canonicalKey":56,"locale":8,"id":57,"draft":6,"icon":58,"children":59},"Understand the system","3","content:docs:3.understand-the-system:.navigation.yml","i-lucide-workflow",[60,65,70,75,80,85,90,95],{"title":61,"id":62,"canonicalKey":63,"locale":8,"draft":6,"path":64},"The engine","content:docs:3.understand-the-system:1.the-engine.md","3\u002F1","\u002Fdocs\u002Funderstand-the-system\u002Fthe-engine",{"title":66,"id":67,"canonicalKey":68,"locale":8,"draft":6,"path":69},"Document and session state","content:docs:3.understand-the-system:2.document-and-session-state.md","3\u002F2","\u002Fdocs\u002Funderstand-the-system\u002Fdocument-and-session-state",{"title":71,"id":72,"canonicalKey":73,"locale":8,"draft":6,"path":74},"Commands and transactions","content:docs:3.understand-the-system:3.commands-and-transactions.md","3\u002F3","\u002Fdocs\u002Funderstand-the-system\u002Fcommands-and-transactions",{"title":76,"id":77,"canonicalKey":78,"locale":8,"draft":6,"path":79},"Nodes and hierarchy","content:docs:3.understand-the-system:4.nodes-and-hierarchy.md","3\u002F4","\u002Fdocs\u002Funderstand-the-system\u002Fnodes-and-hierarchy",{"title":81,"id":82,"canonicalKey":83,"locale":8,"draft":6,"path":84},"Camera and coordinates","content:docs:3.understand-the-system:5.camera-and-coordinates.md","3\u002F5","\u002Fdocs\u002Funderstand-the-system\u002Fcamera-and-coordinates",{"title":86,"id":87,"canonicalKey":88,"locale":8,"draft":6,"path":89},"Rendering and interaction","content:docs:3.understand-the-system:6.rendering-and-interaction.md","3\u002F6","\u002Fdocs\u002Funderstand-the-system\u002Frendering-and-interaction",{"title":91,"id":92,"canonicalKey":93,"locale":8,"draft":6,"path":94},"Packages and plugins","content:docs:3.understand-the-system:7.packages-and-plugins.md","3\u002F7","\u002Fdocs\u002Funderstand-the-system\u002Fpackages-and-plugins",{"title":96,"id":97,"canonicalKey":98,"locale":8,"draft":6,"path":99},"Persistence and JSON Canvas","content:docs:3.understand-the-system:8.persistence-and-json-canvas.md","3\u002F8","\u002Fdocs\u002Funderstand-the-system\u002Fpersistence-and-json-canvas",{"title":101,"page":6,"canonicalKey":102,"locale":8,"id":103,"draft":6,"icon":104,"sidebar":11,"children":105},"Build","4","content:docs:4.build-features:.navigation.yml","i-lucide-blocks",[106,113,120,127,134,141,148,155,162,169],{"title":107,"id":108,"canonicalKey":109,"locale":8,"draft":6,"navigation":110,"icon":111,"path":112},"Custom renderers","content:docs:4.build-features:1.custom-node-renderers.md","4\u002F1",{"icon":111},"i-lucide-layout-template","\u002Fdocs\u002Fbuild-features\u002Fcustom-node-renderers",{"title":114,"id":115,"canonicalKey":116,"locale":8,"draft":6,"navigation":117,"icon":118,"path":119},"Connections","content:docs:4.build-features:2.connections.md","4\u002F2",{"icon":118},"i-lucide-cable","\u002Fdocs\u002Fbuild-features\u002Fconnections",{"title":121,"id":122,"canonicalKey":123,"locale":8,"draft":6,"navigation":124,"icon":125,"path":126},"Group nodes","content:docs:4.build-features:3.groups-and-nesting.md","4\u002F3",{"icon":125},"i-lucide-group","\u002Fdocs\u002Fbuild-features\u002Fgroups-and-nesting",{"title":128,"id":129,"canonicalKey":130,"locale":8,"draft":6,"navigation":131,"icon":132,"path":133},"History","content:docs:4.build-features:4.undo-and-redo.md","4\u002F4",{"icon":132},"i-lucide-history","\u002Fdocs\u002Fbuild-features\u002Fundo-and-redo",{"title":135,"id":136,"canonicalKey":137,"locale":8,"draft":6,"navigation":138,"icon":139,"path":140},"Selection and interaction","content:docs:4.build-features:5.selection-and-keyboard.md","4\u002F5",{"icon":139},"i-lucide-mouse-pointer","\u002Fdocs\u002Fbuild-features\u002Fselection-and-keyboard",{"title":142,"id":143,"canonicalKey":144,"locale":8,"draft":6,"navigation":145,"icon":146,"path":147},"First-party features and command guards","content:docs:4.build-features:6.read-only-and-command-guards.md","4\u002F6",{"icon":146},"i-lucide-puzzle","\u002Fdocs\u002Fbuild-features\u002Fread-only-and-command-guards",{"title":149,"id":150,"canonicalKey":151,"locale":8,"draft":6,"navigation":152,"icon":153,"path":154},"Serialization","content:docs:4.build-features:7.save-and-load.md","4\u002F7",{"icon":153},"i-lucide-file-json","\u002Fdocs\u002Fbuild-features\u002Fsave-and-load",{"title":156,"id":157,"canonicalKey":158,"locale":8,"draft":6,"navigation":159,"icon":160,"path":161},"Theming","content:docs:4.build-features:8.theming.md","4\u002F8",{"icon":160},"i-lucide-palette","\u002Fdocs\u002Fbuild-features\u002Ftheming",{"title":163,"id":164,"canonicalKey":165,"locale":8,"draft":6,"navigation":166,"icon":167,"path":168},"Performance","content:docs:4.build-features:9.performance.md","4\u002F9",{"icon":167},"i-lucide-zap","\u002Fdocs\u002Fbuild-features\u002Fperformance",{"title":170,"id":171,"canonicalKey":172,"locale":8,"draft":6,"navigation":173,"icon":174,"path":175},"SSR deterministic scene","content:docs:4.build-features:10.ssr-and-deterministic-state.md","4\u002F10",{"icon":174},"i-lucide-server","\u002Fdocs\u002Fbuild-features\u002Fssr-and-deterministic-state",{"title":177,"page":6,"canonicalKey":178,"locale":8,"id":179,"draft":6,"icon":111,"children":180},"Solutions","5","content:docs:5.solutions:.navigation.yml",[181,187,194,201,208],{"title":182,"id":183,"canonicalKey":184,"locale":8,"draft":6,"navigation":185,"icon":58,"path":186},"Workflow renderer demo","content:docs:5.solutions:1.workflow-builder.md","5\u002F1",{"icon":58},"\u002Fdocs\u002Fsolutions\u002Fworkflow-builder",{"title":188,"id":189,"canonicalKey":190,"locale":8,"draft":6,"navigation":191,"icon":192,"path":193},"Mind map","content:docs:5.solutions:2.mind-map.md","5\u002F2",{"icon":192},"i-lucide-brain","\u002Fdocs\u002Fsolutions\u002Fmind-map",{"title":195,"id":196,"canonicalKey":197,"locale":8,"draft":6,"navigation":198,"icon":199,"path":200},"Planning board","content:docs:5.solutions:3.planning-board.md","5\u002F3",{"icon":199},"i-lucide-square","\u002Fdocs\u002Fsolutions\u002Fplanning-board",{"title":202,"id":203,"canonicalKey":204,"locale":8,"draft":6,"navigation":205,"icon":206,"path":207},"Read-only viewer","content:docs:5.solutions:4.read-only-viewer.md","5\u002F4",{"icon":206},"i-lucide-eye","\u002Fdocs\u002Fsolutions\u002Fread-only-viewer",{"title":209,"id":210,"canonicalKey":211,"locale":8,"draft":6,"navigation":212,"icon":213,"path":214},"Nuxt auto-imports","content:docs:5.solutions:5.nuxt-application.md","5\u002F5",{"icon":213},"i-lucide-sparkles","\u002Fdocs\u002Fsolutions\u002Fnuxt-application",{"title":216,"page":6,"canonicalKey":217,"locale":8,"id":218,"draft":6,"icon":219,"children":220},"Reference","6","content:docs:6.reference:.navigation.yml","i-lucide-braces",[221,226,231,236,241,246,251,256,261,266,273],{"title":222,"id":223,"canonicalKey":224,"locale":8,"draft":6,"path":225},"Package overview","content:docs:6.reference:1.package-overview.md","6\u002F1","\u002Fdocs\u002Freference\u002Fpackage-overview",{"title":227,"id":228,"canonicalKey":229,"locale":8,"draft":6,"path":230},"@lupinum\u002Fboard-core","content:docs:6.reference:2.board-core.md","6\u002F2","\u002Fdocs\u002Freference\u002Fboard-core",{"title":232,"id":233,"canonicalKey":234,"locale":8,"draft":6,"path":235},"@lupinum\u002Fboard-core types","content:docs:6.reference:3.board-core-types.md","6\u002F3","\u002Fdocs\u002Freference\u002Fboard-core-types",{"title":237,"id":238,"canonicalKey":239,"locale":8,"draft":6,"path":240},"@lupinum\u002Fvue-board","content:docs:6.reference:4.vue-board.md","6\u002F4","\u002Fdocs\u002Freference\u002Fvue-board",{"title":242,"id":243,"canonicalKey":244,"locale":8,"draft":6,"path":245},"Vue composables","content:docs:6.reference:5.vue-composables.md","6\u002F5","\u002Fdocs\u002Freference\u002Fvue-composables",{"title":247,"id":248,"canonicalKey":249,"locale":8,"draft":6,"path":250},"@lupinum\u002Fboard-connections","content:docs:6.reference:6.connections.md","6\u002F6","\u002Fdocs\u002Freference\u002Fconnections",{"title":252,"id":253,"canonicalKey":254,"locale":8,"draft":6,"path":255},"@lupinum\u002Fboard-history","content:docs:6.reference:7.history.md","6\u002F7","\u002Fdocs\u002Freference\u002Fhistory",{"title":257,"id":258,"canonicalKey":259,"locale":8,"draft":6,"path":260},"@lupinum\u002Fvue-board\u002Fminimap","content:docs:6.reference:8.minimap.md","6\u002F8","\u002Fdocs\u002Freference\u002Fminimap",{"title":262,"id":263,"canonicalKey":264,"locale":8,"draft":6,"path":265},"@lupinum\u002Fnuxt-board","content:docs:6.reference:9.nuxt-board.md","6\u002F9","\u002Fdocs\u002Freference\u002Fnuxt-board",{"title":267,"id":268,"canonicalKey":269,"locale":8,"draft":6,"navigation":270,"icon":271,"path":272},"Events and subscriptions","content:docs:6.reference:10.events-and-errors.md","6\u002F10",{"icon":271},"i-lucide-bell","\u002Fdocs\u002Freference\u002Fevents-and-errors",{"title":274,"id":275,"canonicalKey":276,"locale":8,"draft":6,"path":277},"Glossary","content:docs:6.reference:11.glossary.md","6\u002F11","\u002Fdocs\u002Freference\u002Fglossary",{"title":279,"page":6,"canonicalKey":280,"locale":8,"id":281,"draft":6,"icon":282,"children":283},"Project","7","content:docs:7.project:.navigation.yml","i-lucide-git-branch",[284,291],{"title":285,"id":286,"canonicalKey":287,"locale":8,"draft":6,"navigation":288,"icon":289,"path":290},"Contributing","content:docs:7.project:1.contributing.md","7\u002F1",{"icon":289},"i-lucide-git-pull-request","\u002Fdocs\u002Fproject\u002Fcontributing",{"title":292,"id":293,"canonicalKey":294,"locale":8,"draft":6,"navigation":295,"icon":296,"path":297},"Support and security","content:docs:7.project:2.support-and-security.md","7\u002F2",{"icon":296},"i-lucide-shield","\u002Fdocs\u002Fproject\u002Fsupport-and-security",{"title":299,"id":300,"canonicalKey":301,"locale":8,"draft":6,"path":302},"Nuxt Board documentation","content:docs:index.md","\u002F","\u002Fdocs",{"title":19,"description":304,"audience":305,"intent":306,"packages":307,"related":308,"body":311,"type":486,"id":20,"canonicalKey":21,"draft":6,"partial":6,"locale":8,"collection":487,"navigationFile":6,"file":488,"route":494,"resolution":496},"The complete mental model from application intent to rendered board.","evaluator","learn",[227,237],[309,310],"\u002Funderstand-the-system\u002Fthe-engine","\u002Fevaluate\u002Fdesign-decisions",{"type":312,"children":313,"toc":480},"root",[314,322,389,406,413,459,463,468],{"type":315,"tag":316,"props":317,"children":318},"element","p",{},[319],{"type":320,"value":321},"text","Nuxt Board follows one direct flow:",{"type":315,"tag":323,"props":324,"children":326},"pre",{"language":320,"class":325},"shiki shiki-themes light-plus dark-plus dark:dark-plus",[327],{"type":315,"tag":328,"props":329,"children":331},"code",{"class":330},"language-text",[332,343,345,353,354,362,363,371,372,380,381],{"type":315,"tag":333,"props":334,"children":337},"span",{"class":335,"style":336},"line","display: inline",[338],{"type":315,"tag":333,"props":339,"children":340},{},[341],{"type":320,"value":342},"application intent",{"type":320,"value":344},"\n",{"type":315,"tag":333,"props":346,"children":347},{"class":335,"style":336},[348],{"type":315,"tag":333,"props":349,"children":350},{},[351],{"type":320,"value":352},"  → engine command",{"type":320,"value":344},{"type":315,"tag":333,"props":355,"children":356},{"class":335,"style":336},[357],{"type":315,"tag":333,"props":358,"children":359},{},[360],{"type":320,"value":361},"  → validated transaction",{"type":320,"value":344},{"type":315,"tag":333,"props":364,"children":365},{"class":335,"style":336},[366],{"type":315,"tag":333,"props":367,"children":368},{},[369],{"type":320,"value":370},"  → canonical board state",{"type":320,"value":344},{"type":315,"tag":333,"props":373,"children":374},{"class":335,"style":336},[375],{"type":315,"tag":333,"props":376,"children":377},{},[378],{"type":320,"value":379},"  → subscriptions",{"type":320,"value":344},{"type":315,"tag":333,"props":382,"children":383},{"class":335,"style":336},[384],{"type":315,"tag":333,"props":385,"children":386},{},[387],{"type":320,"value":388},"  → Vue rendering",{"type":315,"tag":316,"props":390,"children":391},{},[392,397,399,404],{"type":315,"tag":328,"props":393,"children":394},{},[395],{"type":320,"value":396},"createBoardEngine()",{"type":320,"value":398}," creates the source of truth. Application code changes it through commands. ",{"type":315,"tag":328,"props":400,"children":401},{},[402],{"type":320,"value":403},"BoardRoot",{"type":320,"value":405}," subscribes to the engine, renders effective state, and translates pointer and keyboard input through the framework adapter.",{"type":315,"tag":407,"props":408,"children":410},"h2",{"id":409},"four-boundaries",[411],{"type":320,"value":412},"Four boundaries",{"type":315,"tag":414,"props":415,"children":416},"ol",{},[417,429,439,449],{"type":315,"tag":418,"props":419,"children":420},"li",{},[421,427],{"type":315,"tag":422,"props":423,"children":424},"strong",{},[425],{"type":320,"value":426},"Commands own persistent mutation.",{"type":320,"value":428}," Guards, validation, plugins, history, subscriptions, and events see the same commit.",{"type":315,"tag":418,"props":430,"children":431},{},[432,437],{"type":315,"tag":422,"props":433,"children":434},{},[435],{"type":320,"value":436},"Session state stays transient.",{"type":320,"value":438}," Drag and resize updates render immediately without rewriting the persisted document on every pointer move.",{"type":315,"tag":418,"props":440,"children":441},{},[442,447],{"type":315,"tag":422,"props":443,"children":444},{},[445],{"type":320,"value":446},"Renderers own presentation.",{"type":320,"value":448}," A renderer receives a node record. It does not create a competing state model.",{"type":315,"tag":418,"props":450,"children":451},{},[452,457],{"type":315,"tag":422,"props":453,"children":454},{},[455],{"type":320,"value":456},"Packages own named capabilities.",{"type":320,"value":458}," Core owns nodes; connections owns edges; history owns undo stacks; Nuxt owns registration.",{"type":315,"tag":460,"props":461,"children":462},"engine-command-lab",{},[],{"type":315,"tag":316,"props":464,"children":465},{},[466],{"type":320,"value":467},"Run a command in the lab. The document changes before queued public events publish. Subscribers never receive an intermediate candidate.",{"type":315,"tag":316,"props":469,"children":470},{},[471,473,478],{"type":320,"value":472},"The engine is mutable internally so commands remain direct. Its public records and snapshots are immutable contracts. Keep the engine out of Vue deep reactivity; use a stable instance or ",{"type":315,"tag":328,"props":474,"children":475},{},[476],{"type":320,"value":477},"shallowRef",{"type":320,"value":479},".",{"title":481,"searchDepth":482,"depth":482,"links":483},"",4,[484],{"id":409,"depth":485,"text":412},2,"markdown","docs",{"source":489,"path":490,"stem":491,"dir":492,"extension":493},"content","docs\u002F1.evaluate\u002F2.how-nuxt-board-works.md","docs\u002F1.evaluate\u002F2.how-nuxt-board-works","evaluate","md",{"requestedPath":22,"resolvedPath":22,"alternates":495},[],{"requested":497,"resolved":498,"usedFallback":6},{},{"locale":8},{"previous":500,"next":501},{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"path":17},{"title":24,"id":25,"canonicalKey":26,"locale":8,"draft":6,"path":27},{"left":503,"top":503,"width":504,"height":504,"rotate":503,"vFlip":6,"hFlip":6,"body":505},0,24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1786632255123]