[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"navigation_docs":3,"-vue-guide-primitives":159,"-vue-guide-primitives-surround":373},[4,29,57,76,100,124,152],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,12,16,20,24],{"title":5,"path":7,"stem":11},"1.getting-started\u002Findex",{"title":13,"path":14,"stem":15},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation",{"title":17,"path":18,"stem":19},"First Game","\u002Fgetting-started\u002Ffirst-game","1.getting-started\u002F2.first-game",{"title":21,"path":22,"stem":23},"SSR and Mounting","\u002Fgetting-started\u002Fssr-and-mounting","1.getting-started\u002F3.ssr-and-mounting",{"title":25,"path":26,"stem":27,"icon":28},"Skills","\u002Fgetting-started\u002Fskills","1.getting-started\u002F4.skills","i-lucide-sparkles",{"title":30,"icon":31,"path":32,"stem":33,"children":34},"Vue Guide","i-lucide-book-open","\u002Fvue-guide","2.vue-guide",[35,37,41,45,49,53],{"title":30,"path":32,"stem":36},"2.vue-guide\u002Findex",{"title":38,"path":39,"stem":40},"PhaserGame","\u002Fvue-guide\u002Fphaser-game","2.vue-guide\u002F1.phaser-game",{"title":42,"path":43,"stem":44},"Scenes","\u002Fvue-guide\u002Fscenes","2.vue-guide\u002F2.scenes",{"title":46,"path":47,"stem":48},"Primitives","\u002Fvue-guide\u002Fprimitives","2.vue-guide\u002F3.primitives",{"title":50,"path":51,"stem":52},"Composables and Bridge","\u002Fvue-guide\u002Fcomposables-and-bridge","2.vue-guide\u002F4.composables-and-bridge",{"title":54,"path":55,"stem":56},"Escape Hatches","\u002Fvue-guide\u002Fescape-hatches","2.vue-guide\u002F5.escape-hatches",{"title":58,"icon":59,"path":60,"stem":61,"children":62},"Nuxt Module","i-lucide-layers-3","\u002Fnuxt-module","3.nuxt-module",[63,65,68,72],{"title":58,"path":60,"stem":64},"3.nuxt-module\u002Findex",{"title":13,"path":66,"stem":67},"\u002Fnuxt-module\u002Finstallation","3.nuxt-module\u002F1.installation",{"title":69,"path":70,"stem":71},"Runtime Defaults","\u002Fnuxt-module\u002Fruntime-defaults","3.nuxt-module\u002F2.runtime-defaults",{"title":73,"path":74,"stem":75},"Client-only Wrapper","\u002Fnuxt-module\u002Fclient-only-wrapper","3.nuxt-module\u002F3.client-only-wrapper",{"title":77,"icon":78,"path":79,"stem":80,"children":81},"Examples","i-lucide-play-square","\u002Fexamples","4.examples",[82,84,88,92,96],{"title":77,"path":79,"stem":83},"4.examples\u002Findex",{"title":85,"path":86,"stem":87},"Minimal","\u002Fexamples\u002Fminimal","4.examples\u002F1.minimal",{"title":89,"path":90,"stem":91},"Imperative Escape Hatch","\u002Fexamples\u002Fimperative-escape-hatch","4.examples\u002F2.imperative-escape-hatch",{"title":93,"path":94,"stem":95},"Multi-scene","\u002Fexamples\u002Fmulti-scene","4.examples\u002F3.multi-scene",{"title":97,"path":98,"stem":99},"Nuxt Playground","\u002Fexamples\u002Fnuxt-playground","4.examples\u002F4.nuxt-playground",{"title":101,"icon":102,"path":103,"stem":104,"children":105},"API Reference","i-lucide-book-open-text","\u002Fapi-reference","5.api-reference",[106,108,112,116,120],{"title":101,"path":103,"stem":107},"5.api-reference\u002Findex",{"title":109,"path":110,"stem":111},"Vue Components","\u002Fapi-reference\u002Fvue-components","5.api-reference\u002F1.vue-components",{"title":113,"path":114,"stem":115},"Composables","\u002Fapi-reference\u002Fcomposables","5.api-reference\u002F2.composables",{"title":117,"path":118,"stem":119},"Types","\u002Fapi-reference\u002Ftypes","5.api-reference\u002F3.types",{"title":121,"path":122,"stem":123},"Nuxt Module Options","\u002Fapi-reference\u002Fnuxt-module-options","5.api-reference\u002F4.nuxt-module-options",{"title":125,"icon":126,"path":127,"stem":128,"children":129},"Guides","i-lucide-compass","\u002Fguides","6.guides",[130,132,136,140,144,148],{"title":125,"path":127,"stem":131},"6.guides\u002Findex",{"title":133,"path":134,"stem":135},"Performance","\u002Fguides\u002Fperformance","6.guides\u002F1.performance",{"title":137,"path":138,"stem":139},"Scene-first Design","\u002Fguides\u002Fscene-first-design","6.guides\u002F2.scene-first-design",{"title":141,"path":142,"stem":143},"Vue Reactivity vs Phaser Imperative Updates","\u002Fguides\u002Fvue-reactivity-vs-phaser-imperative-updates","6.guides\u002F3.vue-reactivity-vs-phaser-imperative-updates",{"title":145,"path":146,"stem":147},"Testing scene primitives in Vue","\u002Fguides\u002Ftesting-scene-primitives-in-vue","6.guides\u002F4.testing-scene-primitives-in-vue",{"title":149,"path":150,"stem":151},"Testing a Phaser canvas in Nuxt","\u002Fguides\u002Ftesting-a-phaser-canvas-in-nuxt","6.guides\u002F5.testing-a-phaser-canvas-in-nuxt",{"title":153,"path":154,"stem":155,"children":156,"icon":158},"Roadmap","\u002Froadmap","7.roadmap\u002Findex",[157],{"title":153,"path":154,"stem":155},"i-lucide-flag",{"id":160,"title":46,"body":161,"description":367,"extension":368,"links":369,"meta":370,"navigation":303,"path":47,"seo":371,"stem":48,"__hash__":372},"docs\u002F2.vue-guide\u002F3.primitives.md",{"type":162,"value":163,"toc":362},"minimark",[164,168,173,198,202,333,337,354,358],[165,166,167],"p",{},"The primitive layer stays intentionally small in this alpha. Each primitive creates one Phaser object, patches supported mutable props, and destroys itself cleanly on unmount.",[169,170,172],"h2",{"id":171},"available-primitives","Available primitives",[174,175,176,183,188,193],"ul",{},[177,178,179],"li",{},[180,181,182],"code",{},"PhaserContainer",[177,184,185],{},[180,186,187],{},"PhaserImage",[177,189,190],{},[180,191,192],{},"PhaserSprite",[177,194,195],{},[180,196,197],{},"PhaserText",[169,199,201],{"id":200},"example","Example",[203,204,210],"pre",{"className":205,"code":206,"filename":207,"language":208,"meta":209,"style":209},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CPhaserGame :width=\"800\" :height=\"480\" background-color=\"#16213e\">\n  \u003CPhaserScene scene-key=\"main\">\n    \u003CPhaserContainer :x=\"32\" :y=\"32\">\n      \u003CPhaserText text=\"Score: 120\" :style=\"{ color: '#fff', fontSize: '28px' }\" \u002F>\n    \u003C\u002FPhaserContainer>\n\n    \u003CPhaserImage texture=\"background\" :x=\"400\" :y=\"240\" \u002F>\n    \u003CPhaserSprite texture=\"player\" :x=\"120\" :y=\"220\" \u002F>\n  \u003C\u002FPhaserScene>\n\u003C\u002FPhaserGame>\n","src\u002FApp.vue","vue","",[180,211,212,273,280,286,292,298,305,311,317,323],{"__ignoreMap":209},[213,214,217,221,224,227,231,234,237,241,243,245,248,250,252,255,257,260,262,264,268,270],"span",{"class":215,"line":216},"line",1,[213,218,220],{"class":219},"sMK4o","\u003C",[213,222,38],{"class":223},"swJcz",[213,225,226],{"class":219}," :",[213,228,230],{"class":229},"spNyl","width",[213,232,233],{"class":219},"=",[213,235,236],{"class":219},"\"",[213,238,240],{"class":239},"sbssI","800",[213,242,236],{"class":219},[213,244,226],{"class":219},[213,246,247],{"class":229},"height",[213,249,233],{"class":219},[213,251,236],{"class":219},[213,253,254],{"class":239},"480",[213,256,236],{"class":219},[213,258,259],{"class":229}," background-color",[213,261,233],{"class":219},[213,263,236],{"class":219},[213,265,267],{"class":266},"sfazB","#16213e",[213,269,236],{"class":219},[213,271,272],{"class":219},">\n",[213,274,276],{"class":215,"line":275},2,[213,277,279],{"class":278},"sTEyZ","  \u003CPhaserScene scene-key=\"main\">\n",[213,281,283],{"class":215,"line":282},3,[213,284,285],{"class":278},"    \u003CPhaserContainer :x=\"32\" :y=\"32\">\n",[213,287,289],{"class":215,"line":288},4,[213,290,291],{"class":278},"      \u003CPhaserText text=\"Score: 120\" :style=\"{ color: '#fff', fontSize: '28px' }\" \u002F>\n",[213,293,295],{"class":215,"line":294},5,[213,296,297],{"class":278},"    \u003C\u002FPhaserContainer>\n",[213,299,301],{"class":215,"line":300},6,[213,302,304],{"emptyLinePlaceholder":303},true,"\n",[213,306,308],{"class":215,"line":307},7,[213,309,310],{"class":278},"    \u003CPhaserImage texture=\"background\" :x=\"400\" :y=\"240\" \u002F>\n",[213,312,314],{"class":215,"line":313},8,[213,315,316],{"class":278},"    \u003CPhaserSprite texture=\"player\" :x=\"120\" :y=\"220\" \u002F>\n",[213,318,320],{"class":215,"line":319},9,[213,321,322],{"class":278},"  \u003C\u002FPhaserScene>\n",[213,324,326,329,331],{"class":215,"line":325},10,[213,327,328],{"class":219},"\u003C\u002F",[213,330,38],{"class":223},[213,332,272],{"class":219},[169,334,336],{"id":335},"rules-the-primitives-follow","Rules the primitives follow",[174,338,339,342,345,348],{},[177,340,341],{},"Constructor-only identity props do not trigger hidden destroy-and-recreate behavior.",[177,343,344],{},"Mutable display props patch in place through explicit setter maps.",[177,346,347],{},"Parent containers work through injected context, not by crawling the Phaser tree.",[177,349,350,353],{},[180,351,352],{},"@ready"," and object refs expose the raw Phaser object.",[355,356,357],"warning",{},"Do not drive sprite position from Vue reactivity every frame. Use scene code, tweens, or physics for hot-path updates.",[359,360,361],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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":209,"searchDepth":275,"depth":275,"links":363},[364,365,366],{"id":171,"depth":275,"text":172},{"id":200,"depth":275,"text":201},{"id":335,"depth":275,"text":336},"Create a small set of Phaser objects declaratively when scene setup is simple and low-frequency.","md",null,{},{"title":46,"description":367},"WV23isFktGqzNvaI-BaLl--8SJZgBfCrvihO0T4p5i4",[374,376],{"title":42,"path":43,"stem":44,"description":375,"children":-1},"Define managed scenes with stable keys and keep Phaser's scene model intact.",{"title":50,"path":51,"stem":52,"description":377,"children":-1},"Reach the current game or scene, subscribe to low-frequency state, and connect DOM UI to Phaser through typed events.",1777965860694]