[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-labs-react-three-fiber":3,"mdc-3mrg1e-key":33,"related-org-vercel-labs-react-three-fiber":3272,"related-repo-vercel-labs-react-three-fiber":3442},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"react-three-fiber","render 3D scenes from JSON specs","React Three Fiber 3D renderer for json-render. Use when working with @json-render\u002Freact-three-fiber, building 3D scenes from JSON specs, rendering meshes\u002Flights\u002Fmodels\u002Fenvironments, or integrating Three.js with json-render catalogs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel-labs","Vercel Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel-labs.png",[12,16,19],{"name":13,"slug":14,"type":15},"React","react","tag",{"name":17,"slug":18,"type":15},"3D","3d",{"name":20,"slug":21,"type":15},"UI Components","ui-components",15678,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fjson-render","2026-07-17T06:08:37.75941",null,845,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"The Generative UI framework","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fjson-render\u002Ftree\u002FHEAD\u002Fskills\u002Freact-three-fiber","---\nname: react-three-fiber\ndescription: React Three Fiber 3D renderer for json-render. Use when working with @json-render\u002Freact-three-fiber, building 3D scenes from JSON specs, rendering meshes\u002Flights\u002Fmodels\u002Fenvironments, or integrating Three.js with json-render catalogs.\n---\n\n# @json-render\u002Freact-three-fiber\n\nReact Three Fiber renderer for json-render. 19 built-in 3D components.\n\n## Two Entry Points\n\n| Entry Point | Exports | Use For |\n|-------------|---------|---------|\n| `@json-render\u002Freact-three-fiber\u002Fcatalog` | `threeComponentDefinitions` | Catalog schemas (no R3F dependency, safe for server) |\n| `@json-render\u002Freact-three-fiber` | `threeComponents`, `ThreeRenderer`, `ThreeCanvas`, schemas | R3F implementations and renderer |\n\n## Usage Pattern\n\nPick the 3D components you need from the standard definitions:\n\n```typescript\nimport { defineCatalog } from \"@json-render\u002Fcore\";\nimport { schema } from \"@json-render\u002Freact\u002Fschema\";\nimport { threeComponentDefinitions } from \"@json-render\u002Freact-three-fiber\u002Fcatalog\";\nimport { defineRegistry } from \"@json-render\u002Freact\";\nimport { threeComponents, ThreeCanvas } from \"@json-render\u002Freact-three-fiber\";\n\n\u002F\u002F Catalog: pick definitions\nconst catalog = defineCatalog(schema, {\n  components: {\n    Box: threeComponentDefinitions.Box,\n    Sphere: threeComponentDefinitions.Sphere,\n    AmbientLight: threeComponentDefinitions.AmbientLight,\n    DirectionalLight: threeComponentDefinitions.DirectionalLight,\n    OrbitControls: threeComponentDefinitions.OrbitControls,\n  },\n  actions: {},\n});\n\n\u002F\u002F Registry: pick matching implementations\nconst { registry } = defineRegistry(catalog, {\n  components: {\n    Box: threeComponents.Box,\n    Sphere: threeComponents.Sphere,\n    AmbientLight: threeComponents.AmbientLight,\n    DirectionalLight: threeComponents.DirectionalLight,\n    OrbitControls: threeComponents.OrbitControls,\n  },\n});\n```\n\n## Rendering\n\n### ThreeCanvas (convenience wrapper)\n\n```tsx\n\u003CThreeCanvas\n  spec={spec}\n  registry={registry}\n  shadows\n  camera={{ position: [5, 5, 5], fov: 50 }}\n  style={{ width: \"100%\", height: \"100vh\" }}\n\u002F>\n```\n\n### Manual Canvas setup\n\n```tsx\nimport { Canvas } from \"@react-three\u002Ffiber\";\nimport { ThreeRenderer } from \"@json-render\u002Freact-three-fiber\";\n\n\u003CCanvas shadows>\n  \u003CThreeRenderer spec={spec} registry={registry}>\n    {\u002F* Additional R3F elements *\u002F}\n  \u003C\u002FThreeRenderer>\n\u003C\u002FCanvas>\n```\n\n## Available Components (19)\n\n### Primitives (7)\n- `Box` -- width, height, depth, material\n- `Sphere` -- radius, widthSegments, heightSegments, material\n- `Cylinder` -- radiusTop, radiusBottom, height, material\n- `Cone` -- radius, height, material\n- `Torus` -- radius, tube, material\n- `Plane` -- width, height, material\n- `Capsule` -- radius, length, material\n\nAll primitives share: `position`, `rotation`, `scale`, `castShadow`, `receiveShadow`, `material`.\n\n### Lights (4)\n- `AmbientLight` -- color, intensity\n- `DirectionalLight` -- position, color, intensity, castShadow\n- `PointLight` -- position, color, intensity, distance, decay\n- `SpotLight` -- position, color, intensity, angle, penumbra\n\n### Other (8)\n- `Group` -- container with position\u002Frotation\u002Fscale, supports children\n- `Model` -- GLTF\u002FGLB loader via url prop\n- `Environment` -- HDRI environment map (preset, background, blur, intensity)\n- `Fog` -- linear fog (color, near, far)\n- `GridHelper` -- reference grid (size, divisions, color)\n- `Text3D` -- SDF text (text, fontSize, color, anchorX, anchorY)\n- `PerspectiveCamera` -- camera (position, fov, near, far, makeDefault)\n- `OrbitControls` -- orbit controls (enableDamping, enableZoom, autoRotate)\n\n## Shared Schemas\n\nReusable Zod schemas for custom 3D catalog definitions:\n\n```typescript\nimport { vector3Schema, materialSchema, transformProps, shadowProps } from \"@json-render\u002Freact-three-fiber\";\nimport { z } from \"zod\";\n\n\u002F\u002F Custom 3D component\nconst myComponentDef = {\n  props: z.object({\n    ...transformProps,\n    ...shadowProps,\n    material: materialSchema.nullable(),\n    myCustomProp: z.string(),\n  }),\n  description: \"My custom 3D component\",\n};\n```\n\n## Material Schema\n\n```typescript\nmaterialSchema = z.object({\n  color: z.string().nullable(),         \u002F\u002F default \"#ffffff\"\n  metalness: z.number().nullable(),     \u002F\u002F default 0\n  roughness: z.number().nullable(),     \u002F\u002F default 1\n  emissive: z.string().nullable(),      \u002F\u002F default \"#000000\"\n  emissiveIntensity: z.number().nullable(), \u002F\u002F default 1\n  opacity: z.number().nullable(),       \u002F\u002F default 1\n  transparent: z.boolean().nullable(),  \u002F\u002F default false\n  wireframe: z.boolean().nullable(),    \u002F\u002F default false\n});\n```\n\n## Spec Format\n\n3D specs use the standard json-render flat element format:\n\n```json\n{\n  \"root\": \"scene\",\n  \"elements\": {\n    \"scene\": {\n      \"type\": \"Group\",\n      \"props\": { \"position\": [0, 0, 0] },\n      \"children\": [\"light\", \"box\"]\n    },\n    \"light\": {\n      \"type\": \"AmbientLight\",\n      \"props\": { \"intensity\": 0.5 },\n      \"children\": []\n    },\n    \"box\": {\n      \"type\": \"Box\",\n      \"props\": {\n        \"position\": [0, 0.5, 0],\n        \"material\": { \"color\": \"#4488ff\", \"metalness\": 0.3, \"roughness\": 0.7 }\n      },\n      \"children\": []\n    }\n  }\n}\n```\n\n## Dependencies\n\nPeer dependencies required:\n- `@react-three\u002Ffiber` >= 8.0.0\n- `@react-three\u002Fdrei` >= 9.0.0\n- `three` >= 0.160.0\n- `react` ^19.0.0\n- `zod` ^4.0.0\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,53,60,162,168,173,930,936,943,1168,1174,1387,1393,1399,1479,1526,1532,1577,1583,1673,1679,1684,2022,2028,2476,2482,2487,3200,3206,3211,3266],{"type":39,"tag":40,"props":41,"children":43},"element","h1",{"id":42},"json-renderreact-three-fiber",[44],{"type":45,"value":46},"text","@json-render\u002Freact-three-fiber",{"type":39,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"React Three Fiber renderer for json-render. 19 built-in 3D components.",{"type":39,"tag":54,"props":55,"children":57},"h2",{"id":56},"two-entry-points",[58],{"type":45,"value":59},"Two Entry Points",{"type":39,"tag":61,"props":62,"children":63},"table",{},[64,88],{"type":39,"tag":65,"props":66,"children":67},"thead",{},[68],{"type":39,"tag":69,"props":70,"children":71},"tr",{},[72,78,83],{"type":39,"tag":73,"props":74,"children":75},"th",{},[76],{"type":45,"value":77},"Entry Point",{"type":39,"tag":73,"props":79,"children":80},{},[81],{"type":45,"value":82},"Exports",{"type":39,"tag":73,"props":84,"children":85},{},[86],{"type":45,"value":87},"Use For",{"type":39,"tag":89,"props":90,"children":91},"tbody",{},[92,120],{"type":39,"tag":69,"props":93,"children":94},{},[95,106,115],{"type":39,"tag":96,"props":97,"children":98},"td",{},[99],{"type":39,"tag":100,"props":101,"children":103},"code",{"className":102},[],[104],{"type":45,"value":105},"@json-render\u002Freact-three-fiber\u002Fcatalog",{"type":39,"tag":96,"props":107,"children":108},{},[109],{"type":39,"tag":100,"props":110,"children":112},{"className":111},[],[113],{"type":45,"value":114},"threeComponentDefinitions",{"type":39,"tag":96,"props":116,"children":117},{},[118],{"type":45,"value":119},"Catalog schemas (no R3F dependency, safe for server)",{"type":39,"tag":69,"props":121,"children":122},{},[123,131,157],{"type":39,"tag":96,"props":124,"children":125},{},[126],{"type":39,"tag":100,"props":127,"children":129},{"className":128},[],[130],{"type":45,"value":46},{"type":39,"tag":96,"props":132,"children":133},{},[134,140,142,148,149,155],{"type":39,"tag":100,"props":135,"children":137},{"className":136},[],[138],{"type":45,"value":139},"threeComponents",{"type":45,"value":141},", ",{"type":39,"tag":100,"props":143,"children":145},{"className":144},[],[146],{"type":45,"value":147},"ThreeRenderer",{"type":45,"value":141},{"type":39,"tag":100,"props":150,"children":152},{"className":151},[],[153],{"type":45,"value":154},"ThreeCanvas",{"type":45,"value":156},", schemas",{"type":39,"tag":96,"props":158,"children":159},{},[160],{"type":45,"value":161},"R3F implementations and renderer",{"type":39,"tag":54,"props":163,"children":165},{"id":164},"usage-pattern",[166],{"type":45,"value":167},"Usage Pattern",{"type":39,"tag":48,"props":169,"children":170},{},[171],{"type":45,"value":172},"Pick the 3D components you need from the standard definitions:",{"type":39,"tag":174,"props":175,"children":180},"pre",{"className":176,"code":177,"language":178,"meta":179,"style":179},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineCatalog } from \"@json-render\u002Fcore\";\nimport { schema } from \"@json-render\u002Freact\u002Fschema\";\nimport { threeComponentDefinitions } from \"@json-render\u002Freact-three-fiber\u002Fcatalog\";\nimport { defineRegistry } from \"@json-render\u002Freact\";\nimport { threeComponents, ThreeCanvas } from \"@json-render\u002Freact-three-fiber\";\n\n\u002F\u002F Catalog: pick definitions\nconst catalog = defineCatalog(schema, {\n  components: {\n    Box: threeComponentDefinitions.Box,\n    Sphere: threeComponentDefinitions.Sphere,\n    AmbientLight: threeComponentDefinitions.AmbientLight,\n    DirectionalLight: threeComponentDefinitions.DirectionalLight,\n    OrbitControls: threeComponentDefinitions.OrbitControls,\n  },\n  actions: {},\n});\n\n\u002F\u002F Registry: pick matching implementations\nconst { registry } = defineRegistry(catalog, {\n  components: {\n    Box: threeComponents.Box,\n    Sphere: threeComponents.Sphere,\n    AmbientLight: threeComponents.AmbientLight,\n    DirectionalLight: threeComponents.DirectionalLight,\n    OrbitControls: threeComponents.OrbitControls,\n  },\n});\n","typescript","",[181],{"type":39,"tag":100,"props":182,"children":183},{"__ignoreMap":179},[184,239,281,322,364,415,425,435,474,493,525,555,585,615,645,654,672,690,698,707,750,766,794,822,850,878,906,914],{"type":39,"tag":185,"props":186,"children":189},"span",{"class":187,"line":188},"line",1,[190,196,202,208,213,218,223,229,234],{"type":39,"tag":185,"props":191,"children":193},{"style":192},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[194],{"type":45,"value":195},"import",{"type":39,"tag":185,"props":197,"children":199},{"style":198},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[200],{"type":45,"value":201}," {",{"type":39,"tag":185,"props":203,"children":205},{"style":204},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[206],{"type":45,"value":207}," defineCatalog",{"type":39,"tag":185,"props":209,"children":210},{"style":198},[211],{"type":45,"value":212}," }",{"type":39,"tag":185,"props":214,"children":215},{"style":192},[216],{"type":45,"value":217}," from",{"type":39,"tag":185,"props":219,"children":220},{"style":198},[221],{"type":45,"value":222}," \"",{"type":39,"tag":185,"props":224,"children":226},{"style":225},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[227],{"type":45,"value":228},"@json-render\u002Fcore",{"type":39,"tag":185,"props":230,"children":231},{"style":198},[232],{"type":45,"value":233},"\"",{"type":39,"tag":185,"props":235,"children":236},{"style":198},[237],{"type":45,"value":238},";\n",{"type":39,"tag":185,"props":240,"children":242},{"class":187,"line":241},2,[243,247,251,256,260,264,268,273,277],{"type":39,"tag":185,"props":244,"children":245},{"style":192},[246],{"type":45,"value":195},{"type":39,"tag":185,"props":248,"children":249},{"style":198},[250],{"type":45,"value":201},{"type":39,"tag":185,"props":252,"children":253},{"style":204},[254],{"type":45,"value":255}," schema",{"type":39,"tag":185,"props":257,"children":258},{"style":198},[259],{"type":45,"value":212},{"type":39,"tag":185,"props":261,"children":262},{"style":192},[263],{"type":45,"value":217},{"type":39,"tag":185,"props":265,"children":266},{"style":198},[267],{"type":45,"value":222},{"type":39,"tag":185,"props":269,"children":270},{"style":225},[271],{"type":45,"value":272},"@json-render\u002Freact\u002Fschema",{"type":39,"tag":185,"props":274,"children":275},{"style":198},[276],{"type":45,"value":233},{"type":39,"tag":185,"props":278,"children":279},{"style":198},[280],{"type":45,"value":238},{"type":39,"tag":185,"props":282,"children":284},{"class":187,"line":283},3,[285,289,293,298,302,306,310,314,318],{"type":39,"tag":185,"props":286,"children":287},{"style":192},[288],{"type":45,"value":195},{"type":39,"tag":185,"props":290,"children":291},{"style":198},[292],{"type":45,"value":201},{"type":39,"tag":185,"props":294,"children":295},{"style":204},[296],{"type":45,"value":297}," threeComponentDefinitions",{"type":39,"tag":185,"props":299,"children":300},{"style":198},[301],{"type":45,"value":212},{"type":39,"tag":185,"props":303,"children":304},{"style":192},[305],{"type":45,"value":217},{"type":39,"tag":185,"props":307,"children":308},{"style":198},[309],{"type":45,"value":222},{"type":39,"tag":185,"props":311,"children":312},{"style":225},[313],{"type":45,"value":105},{"type":39,"tag":185,"props":315,"children":316},{"style":198},[317],{"type":45,"value":233},{"type":39,"tag":185,"props":319,"children":320},{"style":198},[321],{"type":45,"value":238},{"type":39,"tag":185,"props":323,"children":325},{"class":187,"line":324},4,[326,330,334,339,343,347,351,356,360],{"type":39,"tag":185,"props":327,"children":328},{"style":192},[329],{"type":45,"value":195},{"type":39,"tag":185,"props":331,"children":332},{"style":198},[333],{"type":45,"value":201},{"type":39,"tag":185,"props":335,"children":336},{"style":204},[337],{"type":45,"value":338}," defineRegistry",{"type":39,"tag":185,"props":340,"children":341},{"style":198},[342],{"type":45,"value":212},{"type":39,"tag":185,"props":344,"children":345},{"style":192},[346],{"type":45,"value":217},{"type":39,"tag":185,"props":348,"children":349},{"style":198},[350],{"type":45,"value":222},{"type":39,"tag":185,"props":352,"children":353},{"style":225},[354],{"type":45,"value":355},"@json-render\u002Freact",{"type":39,"tag":185,"props":357,"children":358},{"style":198},[359],{"type":45,"value":233},{"type":39,"tag":185,"props":361,"children":362},{"style":198},[363],{"type":45,"value":238},{"type":39,"tag":185,"props":365,"children":367},{"class":187,"line":366},5,[368,372,376,381,386,391,395,399,403,407,411],{"type":39,"tag":185,"props":369,"children":370},{"style":192},[371],{"type":45,"value":195},{"type":39,"tag":185,"props":373,"children":374},{"style":198},[375],{"type":45,"value":201},{"type":39,"tag":185,"props":377,"children":378},{"style":204},[379],{"type":45,"value":380}," threeComponents",{"type":39,"tag":185,"props":382,"children":383},{"style":198},[384],{"type":45,"value":385},",",{"type":39,"tag":185,"props":387,"children":388},{"style":204},[389],{"type":45,"value":390}," ThreeCanvas",{"type":39,"tag":185,"props":392,"children":393},{"style":198},[394],{"type":45,"value":212},{"type":39,"tag":185,"props":396,"children":397},{"style":192},[398],{"type":45,"value":217},{"type":39,"tag":185,"props":400,"children":401},{"style":198},[402],{"type":45,"value":222},{"type":39,"tag":185,"props":404,"children":405},{"style":225},[406],{"type":45,"value":46},{"type":39,"tag":185,"props":408,"children":409},{"style":198},[410],{"type":45,"value":233},{"type":39,"tag":185,"props":412,"children":413},{"style":198},[414],{"type":45,"value":238},{"type":39,"tag":185,"props":416,"children":418},{"class":187,"line":417},6,[419],{"type":39,"tag":185,"props":420,"children":422},{"emptyLinePlaceholder":421},true,[423],{"type":45,"value":424},"\n",{"type":39,"tag":185,"props":426,"children":428},{"class":187,"line":427},7,[429],{"type":39,"tag":185,"props":430,"children":432},{"style":431},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[433],{"type":45,"value":434},"\u002F\u002F Catalog: pick definitions\n",{"type":39,"tag":185,"props":436,"children":438},{"class":187,"line":437},8,[439,445,450,455,460,465,469],{"type":39,"tag":185,"props":440,"children":442},{"style":441},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[443],{"type":45,"value":444},"const",{"type":39,"tag":185,"props":446,"children":447},{"style":204},[448],{"type":45,"value":449}," catalog ",{"type":39,"tag":185,"props":451,"children":452},{"style":198},[453],{"type":45,"value":454},"=",{"type":39,"tag":185,"props":456,"children":458},{"style":457},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[459],{"type":45,"value":207},{"type":39,"tag":185,"props":461,"children":462},{"style":204},[463],{"type":45,"value":464},"(schema",{"type":39,"tag":185,"props":466,"children":467},{"style":198},[468],{"type":45,"value":385},{"type":39,"tag":185,"props":470,"children":471},{"style":198},[472],{"type":45,"value":473}," {\n",{"type":39,"tag":185,"props":475,"children":477},{"class":187,"line":476},9,[478,484,489],{"type":39,"tag":185,"props":479,"children":481},{"style":480},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[482],{"type":45,"value":483},"  components",{"type":39,"tag":185,"props":485,"children":486},{"style":198},[487],{"type":45,"value":488},":",{"type":39,"tag":185,"props":490,"children":491},{"style":198},[492],{"type":45,"value":473},{"type":39,"tag":185,"props":494,"children":496},{"class":187,"line":495},10,[497,502,506,510,515,520],{"type":39,"tag":185,"props":498,"children":499},{"style":480},[500],{"type":45,"value":501},"    Box",{"type":39,"tag":185,"props":503,"children":504},{"style":198},[505],{"type":45,"value":488},{"type":39,"tag":185,"props":507,"children":508},{"style":204},[509],{"type":45,"value":297},{"type":39,"tag":185,"props":511,"children":512},{"style":198},[513],{"type":45,"value":514},".",{"type":39,"tag":185,"props":516,"children":517},{"style":204},[518],{"type":45,"value":519},"Box",{"type":39,"tag":185,"props":521,"children":522},{"style":198},[523],{"type":45,"value":524},",\n",{"type":39,"tag":185,"props":526,"children":528},{"class":187,"line":527},11,[529,534,538,542,546,551],{"type":39,"tag":185,"props":530,"children":531},{"style":480},[532],{"type":45,"value":533},"    Sphere",{"type":39,"tag":185,"props":535,"children":536},{"style":198},[537],{"type":45,"value":488},{"type":39,"tag":185,"props":539,"children":540},{"style":204},[541],{"type":45,"value":297},{"type":39,"tag":185,"props":543,"children":544},{"style":198},[545],{"type":45,"value":514},{"type":39,"tag":185,"props":547,"children":548},{"style":204},[549],{"type":45,"value":550},"Sphere",{"type":39,"tag":185,"props":552,"children":553},{"style":198},[554],{"type":45,"value":524},{"type":39,"tag":185,"props":556,"children":558},{"class":187,"line":557},12,[559,564,568,572,576,581],{"type":39,"tag":185,"props":560,"children":561},{"style":480},[562],{"type":45,"value":563},"    AmbientLight",{"type":39,"tag":185,"props":565,"children":566},{"style":198},[567],{"type":45,"value":488},{"type":39,"tag":185,"props":569,"children":570},{"style":204},[571],{"type":45,"value":297},{"type":39,"tag":185,"props":573,"children":574},{"style":198},[575],{"type":45,"value":514},{"type":39,"tag":185,"props":577,"children":578},{"style":204},[579],{"type":45,"value":580},"AmbientLight",{"type":39,"tag":185,"props":582,"children":583},{"style":198},[584],{"type":45,"value":524},{"type":39,"tag":185,"props":586,"children":588},{"class":187,"line":587},13,[589,594,598,602,606,611],{"type":39,"tag":185,"props":590,"children":591},{"style":480},[592],{"type":45,"value":593},"    DirectionalLight",{"type":39,"tag":185,"props":595,"children":596},{"style":198},[597],{"type":45,"value":488},{"type":39,"tag":185,"props":599,"children":600},{"style":204},[601],{"type":45,"value":297},{"type":39,"tag":185,"props":603,"children":604},{"style":198},[605],{"type":45,"value":514},{"type":39,"tag":185,"props":607,"children":608},{"style":204},[609],{"type":45,"value":610},"DirectionalLight",{"type":39,"tag":185,"props":612,"children":613},{"style":198},[614],{"type":45,"value":524},{"type":39,"tag":185,"props":616,"children":618},{"class":187,"line":617},14,[619,624,628,632,636,641],{"type":39,"tag":185,"props":620,"children":621},{"style":480},[622],{"type":45,"value":623},"    OrbitControls",{"type":39,"tag":185,"props":625,"children":626},{"style":198},[627],{"type":45,"value":488},{"type":39,"tag":185,"props":629,"children":630},{"style":204},[631],{"type":45,"value":297},{"type":39,"tag":185,"props":633,"children":634},{"style":198},[635],{"type":45,"value":514},{"type":39,"tag":185,"props":637,"children":638},{"style":204},[639],{"type":45,"value":640},"OrbitControls",{"type":39,"tag":185,"props":642,"children":643},{"style":198},[644],{"type":45,"value":524},{"type":39,"tag":185,"props":646,"children":648},{"class":187,"line":647},15,[649],{"type":39,"tag":185,"props":650,"children":651},{"style":198},[652],{"type":45,"value":653},"  },\n",{"type":39,"tag":185,"props":655,"children":657},{"class":187,"line":656},16,[658,663,667],{"type":39,"tag":185,"props":659,"children":660},{"style":480},[661],{"type":45,"value":662},"  actions",{"type":39,"tag":185,"props":664,"children":665},{"style":198},[666],{"type":45,"value":488},{"type":39,"tag":185,"props":668,"children":669},{"style":198},[670],{"type":45,"value":671}," {},\n",{"type":39,"tag":185,"props":673,"children":675},{"class":187,"line":674},17,[676,681,686],{"type":39,"tag":185,"props":677,"children":678},{"style":198},[679],{"type":45,"value":680},"}",{"type":39,"tag":185,"props":682,"children":683},{"style":204},[684],{"type":45,"value":685},")",{"type":39,"tag":185,"props":687,"children":688},{"style":198},[689],{"type":45,"value":238},{"type":39,"tag":185,"props":691,"children":693},{"class":187,"line":692},18,[694],{"type":39,"tag":185,"props":695,"children":696},{"emptyLinePlaceholder":421},[697],{"type":45,"value":424},{"type":39,"tag":185,"props":699,"children":701},{"class":187,"line":700},19,[702],{"type":39,"tag":185,"props":703,"children":704},{"style":431},[705],{"type":45,"value":706},"\u002F\u002F Registry: pick matching implementations\n",{"type":39,"tag":185,"props":708,"children":710},{"class":187,"line":709},20,[711,715,719,724,728,733,737,742,746],{"type":39,"tag":185,"props":712,"children":713},{"style":441},[714],{"type":45,"value":444},{"type":39,"tag":185,"props":716,"children":717},{"style":198},[718],{"type":45,"value":201},{"type":39,"tag":185,"props":720,"children":721},{"style":204},[722],{"type":45,"value":723}," registry ",{"type":39,"tag":185,"props":725,"children":726},{"style":198},[727],{"type":45,"value":680},{"type":39,"tag":185,"props":729,"children":730},{"style":198},[731],{"type":45,"value":732}," =",{"type":39,"tag":185,"props":734,"children":735},{"style":457},[736],{"type":45,"value":338},{"type":39,"tag":185,"props":738,"children":739},{"style":204},[740],{"type":45,"value":741},"(catalog",{"type":39,"tag":185,"props":743,"children":744},{"style":198},[745],{"type":45,"value":385},{"type":39,"tag":185,"props":747,"children":748},{"style":198},[749],{"type":45,"value":473},{"type":39,"tag":185,"props":751,"children":753},{"class":187,"line":752},21,[754,758,762],{"type":39,"tag":185,"props":755,"children":756},{"style":480},[757],{"type":45,"value":483},{"type":39,"tag":185,"props":759,"children":760},{"style":198},[761],{"type":45,"value":488},{"type":39,"tag":185,"props":763,"children":764},{"style":198},[765],{"type":45,"value":473},{"type":39,"tag":185,"props":767,"children":769},{"class":187,"line":768},22,[770,774,778,782,786,790],{"type":39,"tag":185,"props":771,"children":772},{"style":480},[773],{"type":45,"value":501},{"type":39,"tag":185,"props":775,"children":776},{"style":198},[777],{"type":45,"value":488},{"type":39,"tag":185,"props":779,"children":780},{"style":204},[781],{"type":45,"value":380},{"type":39,"tag":185,"props":783,"children":784},{"style":198},[785],{"type":45,"value":514},{"type":39,"tag":185,"props":787,"children":788},{"style":204},[789],{"type":45,"value":519},{"type":39,"tag":185,"props":791,"children":792},{"style":198},[793],{"type":45,"value":524},{"type":39,"tag":185,"props":795,"children":797},{"class":187,"line":796},23,[798,802,806,810,814,818],{"type":39,"tag":185,"props":799,"children":800},{"style":480},[801],{"type":45,"value":533},{"type":39,"tag":185,"props":803,"children":804},{"style":198},[805],{"type":45,"value":488},{"type":39,"tag":185,"props":807,"children":808},{"style":204},[809],{"type":45,"value":380},{"type":39,"tag":185,"props":811,"children":812},{"style":198},[813],{"type":45,"value":514},{"type":39,"tag":185,"props":815,"children":816},{"style":204},[817],{"type":45,"value":550},{"type":39,"tag":185,"props":819,"children":820},{"style":198},[821],{"type":45,"value":524},{"type":39,"tag":185,"props":823,"children":825},{"class":187,"line":824},24,[826,830,834,838,842,846],{"type":39,"tag":185,"props":827,"children":828},{"style":480},[829],{"type":45,"value":563},{"type":39,"tag":185,"props":831,"children":832},{"style":198},[833],{"type":45,"value":488},{"type":39,"tag":185,"props":835,"children":836},{"style":204},[837],{"type":45,"value":380},{"type":39,"tag":185,"props":839,"children":840},{"style":198},[841],{"type":45,"value":514},{"type":39,"tag":185,"props":843,"children":844},{"style":204},[845],{"type":45,"value":580},{"type":39,"tag":185,"props":847,"children":848},{"style":198},[849],{"type":45,"value":524},{"type":39,"tag":185,"props":851,"children":853},{"class":187,"line":852},25,[854,858,862,866,870,874],{"type":39,"tag":185,"props":855,"children":856},{"style":480},[857],{"type":45,"value":593},{"type":39,"tag":185,"props":859,"children":860},{"style":198},[861],{"type":45,"value":488},{"type":39,"tag":185,"props":863,"children":864},{"style":204},[865],{"type":45,"value":380},{"type":39,"tag":185,"props":867,"children":868},{"style":198},[869],{"type":45,"value":514},{"type":39,"tag":185,"props":871,"children":872},{"style":204},[873],{"type":45,"value":610},{"type":39,"tag":185,"props":875,"children":876},{"style":198},[877],{"type":45,"value":524},{"type":39,"tag":185,"props":879,"children":881},{"class":187,"line":880},26,[882,886,890,894,898,902],{"type":39,"tag":185,"props":883,"children":884},{"style":480},[885],{"type":45,"value":623},{"type":39,"tag":185,"props":887,"children":888},{"style":198},[889],{"type":45,"value":488},{"type":39,"tag":185,"props":891,"children":892},{"style":204},[893],{"type":45,"value":380},{"type":39,"tag":185,"props":895,"children":896},{"style":198},[897],{"type":45,"value":514},{"type":39,"tag":185,"props":899,"children":900},{"style":204},[901],{"type":45,"value":640},{"type":39,"tag":185,"props":903,"children":904},{"style":198},[905],{"type":45,"value":524},{"type":39,"tag":185,"props":907,"children":909},{"class":187,"line":908},27,[910],{"type":39,"tag":185,"props":911,"children":912},{"style":198},[913],{"type":45,"value":653},{"type":39,"tag":185,"props":915,"children":917},{"class":187,"line":916},28,[918,922,926],{"type":39,"tag":185,"props":919,"children":920},{"style":198},[921],{"type":45,"value":680},{"type":39,"tag":185,"props":923,"children":924},{"style":204},[925],{"type":45,"value":685},{"type":39,"tag":185,"props":927,"children":928},{"style":198},[929],{"type":45,"value":238},{"type":39,"tag":54,"props":931,"children":933},{"id":932},"rendering",[934],{"type":45,"value":935},"Rendering",{"type":39,"tag":937,"props":938,"children":940},"h3",{"id":939},"threecanvas-convenience-wrapper",[941],{"type":45,"value":942},"ThreeCanvas (convenience wrapper)",{"type":39,"tag":174,"props":944,"children":948},{"className":945,"code":946,"language":947,"meta":179,"style":179},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CThreeCanvas\n  spec={spec}\n  registry={registry}\n  shadows\n  camera={{ position: [5, 5, 5], fov: 50 }}\n  style={{ width: \"100%\", height: \"100vh\" }}\n\u002F>\n","tsx",[949],{"type":39,"tag":100,"props":950,"children":951},{"__ignoreMap":179},[952,966,989,1010,1018,1096,1160],{"type":39,"tag":185,"props":953,"children":954},{"class":187,"line":188},[955,960],{"type":39,"tag":185,"props":956,"children":957},{"style":198},[958],{"type":45,"value":959},"\u003C",{"type":39,"tag":185,"props":961,"children":963},{"style":962},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[964],{"type":45,"value":965},"ThreeCanvas\n",{"type":39,"tag":185,"props":967,"children":968},{"class":187,"line":241},[969,974,979,984],{"type":39,"tag":185,"props":970,"children":971},{"style":441},[972],{"type":45,"value":973},"  spec",{"type":39,"tag":185,"props":975,"children":976},{"style":198},[977],{"type":45,"value":978},"={",{"type":39,"tag":185,"props":980,"children":981},{"style":204},[982],{"type":45,"value":983},"spec",{"type":39,"tag":185,"props":985,"children":986},{"style":198},[987],{"type":45,"value":988},"}\n",{"type":39,"tag":185,"props":990,"children":991},{"class":187,"line":283},[992,997,1001,1006],{"type":39,"tag":185,"props":993,"children":994},{"style":441},[995],{"type":45,"value":996},"  registry",{"type":39,"tag":185,"props":998,"children":999},{"style":198},[1000],{"type":45,"value":978},{"type":39,"tag":185,"props":1002,"children":1003},{"style":204},[1004],{"type":45,"value":1005},"registry",{"type":39,"tag":185,"props":1007,"children":1008},{"style":198},[1009],{"type":45,"value":988},{"type":39,"tag":185,"props":1011,"children":1012},{"class":187,"line":324},[1013],{"type":39,"tag":185,"props":1014,"children":1015},{"style":441},[1016],{"type":45,"value":1017},"  shadows\n",{"type":39,"tag":185,"props":1019,"children":1020},{"class":187,"line":366},[1021,1026,1031,1036,1040,1045,1051,1055,1060,1064,1068,1073,1077,1082,1086,1091],{"type":39,"tag":185,"props":1022,"children":1023},{"style":441},[1024],{"type":45,"value":1025},"  camera",{"type":39,"tag":185,"props":1027,"children":1028},{"style":198},[1029],{"type":45,"value":1030},"={{",{"type":39,"tag":185,"props":1032,"children":1033},{"style":480},[1034],{"type":45,"value":1035}," position",{"type":39,"tag":185,"props":1037,"children":1038},{"style":198},[1039],{"type":45,"value":488},{"type":39,"tag":185,"props":1041,"children":1042},{"style":204},[1043],{"type":45,"value":1044}," [",{"type":39,"tag":185,"props":1046,"children":1048},{"style":1047},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1049],{"type":45,"value":1050},"5",{"type":39,"tag":185,"props":1052,"children":1053},{"style":198},[1054],{"type":45,"value":385},{"type":39,"tag":185,"props":1056,"children":1057},{"style":1047},[1058],{"type":45,"value":1059}," 5",{"type":39,"tag":185,"props":1061,"children":1062},{"style":198},[1063],{"type":45,"value":385},{"type":39,"tag":185,"props":1065,"children":1066},{"style":1047},[1067],{"type":45,"value":1059},{"type":39,"tag":185,"props":1069,"children":1070},{"style":204},[1071],{"type":45,"value":1072},"]",{"type":39,"tag":185,"props":1074,"children":1075},{"style":198},[1076],{"type":45,"value":385},{"type":39,"tag":185,"props":1078,"children":1079},{"style":480},[1080],{"type":45,"value":1081}," fov",{"type":39,"tag":185,"props":1083,"children":1084},{"style":198},[1085],{"type":45,"value":488},{"type":39,"tag":185,"props":1087,"children":1088},{"style":1047},[1089],{"type":45,"value":1090}," 50",{"type":39,"tag":185,"props":1092,"children":1093},{"style":198},[1094],{"type":45,"value":1095}," }}\n",{"type":39,"tag":185,"props":1097,"children":1098},{"class":187,"line":417},[1099,1104,1108,1113,1117,1121,1126,1130,1134,1139,1143,1147,1152,1156],{"type":39,"tag":185,"props":1100,"children":1101},{"style":441},[1102],{"type":45,"value":1103},"  style",{"type":39,"tag":185,"props":1105,"children":1106},{"style":198},[1107],{"type":45,"value":1030},{"type":39,"tag":185,"props":1109,"children":1110},{"style":480},[1111],{"type":45,"value":1112}," width",{"type":39,"tag":185,"props":1114,"children":1115},{"style":198},[1116],{"type":45,"value":488},{"type":39,"tag":185,"props":1118,"children":1119},{"style":198},[1120],{"type":45,"value":222},{"type":39,"tag":185,"props":1122,"children":1123},{"style":225},[1124],{"type":45,"value":1125},"100%",{"type":39,"tag":185,"props":1127,"children":1128},{"style":198},[1129],{"type":45,"value":233},{"type":39,"tag":185,"props":1131,"children":1132},{"style":198},[1133],{"type":45,"value":385},{"type":39,"tag":185,"props":1135,"children":1136},{"style":480},[1137],{"type":45,"value":1138}," height",{"type":39,"tag":185,"props":1140,"children":1141},{"style":198},[1142],{"type":45,"value":488},{"type":39,"tag":185,"props":1144,"children":1145},{"style":198},[1146],{"type":45,"value":222},{"type":39,"tag":185,"props":1148,"children":1149},{"style":225},[1150],{"type":45,"value":1151},"100vh",{"type":39,"tag":185,"props":1153,"children":1154},{"style":198},[1155],{"type":45,"value":233},{"type":39,"tag":185,"props":1157,"children":1158},{"style":198},[1159],{"type":45,"value":1095},{"type":39,"tag":185,"props":1161,"children":1162},{"class":187,"line":427},[1163],{"type":39,"tag":185,"props":1164,"children":1165},{"style":198},[1166],{"type":45,"value":1167},"\u002F>\n",{"type":39,"tag":937,"props":1169,"children":1171},{"id":1170},"manual-canvas-setup",[1172],{"type":45,"value":1173},"Manual Canvas setup",{"type":39,"tag":174,"props":1175,"children":1177},{"className":945,"code":1176,"language":947,"meta":179,"style":179},"import { Canvas } from \"@react-three\u002Ffiber\";\nimport { ThreeRenderer } from \"@json-render\u002Freact-three-fiber\";\n\n\u003CCanvas shadows>\n  \u003CThreeRenderer spec={spec} registry={registry}>\n    {\u002F* Additional R3F elements *\u002F}\n  \u003C\u002FThreeRenderer>\n\u003C\u002FCanvas>\n",[1178],{"type":39,"tag":100,"props":1179,"children":1180},{"__ignoreMap":179},[1181,1222,1262,1269,1291,1338,1355,1371],{"type":39,"tag":185,"props":1182,"children":1183},{"class":187,"line":188},[1184,1188,1192,1197,1201,1205,1209,1214,1218],{"type":39,"tag":185,"props":1185,"children":1186},{"style":192},[1187],{"type":45,"value":195},{"type":39,"tag":185,"props":1189,"children":1190},{"style":198},[1191],{"type":45,"value":201},{"type":39,"tag":185,"props":1193,"children":1194},{"style":204},[1195],{"type":45,"value":1196}," Canvas",{"type":39,"tag":185,"props":1198,"children":1199},{"style":198},[1200],{"type":45,"value":212},{"type":39,"tag":185,"props":1202,"children":1203},{"style":192},[1204],{"type":45,"value":217},{"type":39,"tag":185,"props":1206,"children":1207},{"style":198},[1208],{"type":45,"value":222},{"type":39,"tag":185,"props":1210,"children":1211},{"style":225},[1212],{"type":45,"value":1213},"@react-three\u002Ffiber",{"type":39,"tag":185,"props":1215,"children":1216},{"style":198},[1217],{"type":45,"value":233},{"type":39,"tag":185,"props":1219,"children":1220},{"style":198},[1221],{"type":45,"value":238},{"type":39,"tag":185,"props":1223,"children":1224},{"class":187,"line":241},[1225,1229,1233,1238,1242,1246,1250,1254,1258],{"type":39,"tag":185,"props":1226,"children":1227},{"style":192},[1228],{"type":45,"value":195},{"type":39,"tag":185,"props":1230,"children":1231},{"style":198},[1232],{"type":45,"value":201},{"type":39,"tag":185,"props":1234,"children":1235},{"style":204},[1236],{"type":45,"value":1237}," ThreeRenderer",{"type":39,"tag":185,"props":1239,"children":1240},{"style":198},[1241],{"type":45,"value":212},{"type":39,"tag":185,"props":1243,"children":1244},{"style":192},[1245],{"type":45,"value":217},{"type":39,"tag":185,"props":1247,"children":1248},{"style":198},[1249],{"type":45,"value":222},{"type":39,"tag":185,"props":1251,"children":1252},{"style":225},[1253],{"type":45,"value":46},{"type":39,"tag":185,"props":1255,"children":1256},{"style":198},[1257],{"type":45,"value":233},{"type":39,"tag":185,"props":1259,"children":1260},{"style":198},[1261],{"type":45,"value":238},{"type":39,"tag":185,"props":1263,"children":1264},{"class":187,"line":283},[1265],{"type":39,"tag":185,"props":1266,"children":1267},{"emptyLinePlaceholder":421},[1268],{"type":45,"value":424},{"type":39,"tag":185,"props":1270,"children":1271},{"class":187,"line":324},[1272,1276,1281,1286],{"type":39,"tag":185,"props":1273,"children":1274},{"style":198},[1275],{"type":45,"value":959},{"type":39,"tag":185,"props":1277,"children":1278},{"style":962},[1279],{"type":45,"value":1280},"Canvas",{"type":39,"tag":185,"props":1282,"children":1283},{"style":441},[1284],{"type":45,"value":1285}," shadows",{"type":39,"tag":185,"props":1287,"children":1288},{"style":198},[1289],{"type":45,"value":1290},">\n",{"type":39,"tag":185,"props":1292,"children":1293},{"class":187,"line":366},[1294,1299,1303,1308,1312,1316,1321,1325,1329,1333],{"type":39,"tag":185,"props":1295,"children":1296},{"style":198},[1297],{"type":45,"value":1298},"  \u003C",{"type":39,"tag":185,"props":1300,"children":1301},{"style":962},[1302],{"type":45,"value":147},{"type":39,"tag":185,"props":1304,"children":1305},{"style":441},[1306],{"type":45,"value":1307}," spec",{"type":39,"tag":185,"props":1309,"children":1310},{"style":198},[1311],{"type":45,"value":978},{"type":39,"tag":185,"props":1313,"children":1314},{"style":204},[1315],{"type":45,"value":983},{"type":39,"tag":185,"props":1317,"children":1318},{"style":198},[1319],{"type":45,"value":1320},"} ",{"type":39,"tag":185,"props":1322,"children":1323},{"style":441},[1324],{"type":45,"value":1005},{"type":39,"tag":185,"props":1326,"children":1327},{"style":198},[1328],{"type":45,"value":978},{"type":39,"tag":185,"props":1330,"children":1331},{"style":204},[1332],{"type":45,"value":1005},{"type":39,"tag":185,"props":1334,"children":1335},{"style":198},[1336],{"type":45,"value":1337},"}>\n",{"type":39,"tag":185,"props":1339,"children":1340},{"class":187,"line":417},[1341,1346,1351],{"type":39,"tag":185,"props":1342,"children":1343},{"style":198},[1344],{"type":45,"value":1345},"    {",{"type":39,"tag":185,"props":1347,"children":1348},{"style":431},[1349],{"type":45,"value":1350},"\u002F* Additional R3F elements *\u002F",{"type":39,"tag":185,"props":1352,"children":1353},{"style":198},[1354],{"type":45,"value":988},{"type":39,"tag":185,"props":1356,"children":1357},{"class":187,"line":427},[1358,1363,1367],{"type":39,"tag":185,"props":1359,"children":1360},{"style":198},[1361],{"type":45,"value":1362},"  \u003C\u002F",{"type":39,"tag":185,"props":1364,"children":1365},{"style":962},[1366],{"type":45,"value":147},{"type":39,"tag":185,"props":1368,"children":1369},{"style":198},[1370],{"type":45,"value":1290},{"type":39,"tag":185,"props":1372,"children":1373},{"class":187,"line":437},[1374,1379,1383],{"type":39,"tag":185,"props":1375,"children":1376},{"style":198},[1377],{"type":45,"value":1378},"\u003C\u002F",{"type":39,"tag":185,"props":1380,"children":1381},{"style":962},[1382],{"type":45,"value":1280},{"type":39,"tag":185,"props":1384,"children":1385},{"style":198},[1386],{"type":45,"value":1290},{"type":39,"tag":54,"props":1388,"children":1390},{"id":1389},"available-components-19",[1391],{"type":45,"value":1392},"Available Components (19)",{"type":39,"tag":937,"props":1394,"children":1396},{"id":1395},"primitives-7",[1397],{"type":45,"value":1398},"Primitives (7)",{"type":39,"tag":1400,"props":1401,"children":1402},"ul",{},[1403,1414,1424,1435,1446,1457,1468],{"type":39,"tag":1404,"props":1405,"children":1406},"li",{},[1407,1412],{"type":39,"tag":100,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":45,"value":519},{"type":45,"value":1413}," -- width, height, depth, material",{"type":39,"tag":1404,"props":1415,"children":1416},{},[1417,1422],{"type":39,"tag":100,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":45,"value":550},{"type":45,"value":1423}," -- radius, widthSegments, heightSegments, material",{"type":39,"tag":1404,"props":1425,"children":1426},{},[1427,1433],{"type":39,"tag":100,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":45,"value":1432},"Cylinder",{"type":45,"value":1434}," -- radiusTop, radiusBottom, height, material",{"type":39,"tag":1404,"props":1436,"children":1437},{},[1438,1444],{"type":39,"tag":100,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":45,"value":1443},"Cone",{"type":45,"value":1445}," -- radius, height, material",{"type":39,"tag":1404,"props":1447,"children":1448},{},[1449,1455],{"type":39,"tag":100,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":45,"value":1454},"Torus",{"type":45,"value":1456}," -- radius, tube, material",{"type":39,"tag":1404,"props":1458,"children":1459},{},[1460,1466],{"type":39,"tag":100,"props":1461,"children":1463},{"className":1462},[],[1464],{"type":45,"value":1465},"Plane",{"type":45,"value":1467}," -- width, height, material",{"type":39,"tag":1404,"props":1469,"children":1470},{},[1471,1477],{"type":39,"tag":100,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":45,"value":1476},"Capsule",{"type":45,"value":1478}," -- radius, length, material",{"type":39,"tag":48,"props":1480,"children":1481},{},[1482,1484,1490,1491,1497,1498,1504,1505,1511,1512,1518,1519,1525],{"type":45,"value":1483},"All primitives share: ",{"type":39,"tag":100,"props":1485,"children":1487},{"className":1486},[],[1488],{"type":45,"value":1489},"position",{"type":45,"value":141},{"type":39,"tag":100,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":45,"value":1496},"rotation",{"type":45,"value":141},{"type":39,"tag":100,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":45,"value":1503},"scale",{"type":45,"value":141},{"type":39,"tag":100,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":45,"value":1510},"castShadow",{"type":45,"value":141},{"type":39,"tag":100,"props":1513,"children":1515},{"className":1514},[],[1516],{"type":45,"value":1517},"receiveShadow",{"type":45,"value":141},{"type":39,"tag":100,"props":1520,"children":1522},{"className":1521},[],[1523],{"type":45,"value":1524},"material",{"type":45,"value":514},{"type":39,"tag":937,"props":1527,"children":1529},{"id":1528},"lights-4",[1530],{"type":45,"value":1531},"Lights (4)",{"type":39,"tag":1400,"props":1533,"children":1534},{},[1535,1545,1555,1566],{"type":39,"tag":1404,"props":1536,"children":1537},{},[1538,1543],{"type":39,"tag":100,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":45,"value":580},{"type":45,"value":1544}," -- color, intensity",{"type":39,"tag":1404,"props":1546,"children":1547},{},[1548,1553],{"type":39,"tag":100,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":45,"value":610},{"type":45,"value":1554}," -- position, color, intensity, castShadow",{"type":39,"tag":1404,"props":1556,"children":1557},{},[1558,1564],{"type":39,"tag":100,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":45,"value":1563},"PointLight",{"type":45,"value":1565}," -- position, color, intensity, distance, decay",{"type":39,"tag":1404,"props":1567,"children":1568},{},[1569,1575],{"type":39,"tag":100,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":45,"value":1574},"SpotLight",{"type":45,"value":1576}," -- position, color, intensity, angle, penumbra",{"type":39,"tag":937,"props":1578,"children":1580},{"id":1579},"other-8",[1581],{"type":45,"value":1582},"Other (8)",{"type":39,"tag":1400,"props":1584,"children":1585},{},[1586,1597,1608,1619,1630,1641,1652,1663],{"type":39,"tag":1404,"props":1587,"children":1588},{},[1589,1595],{"type":39,"tag":100,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":45,"value":1594},"Group",{"type":45,"value":1596}," -- container with position\u002Frotation\u002Fscale, supports children",{"type":39,"tag":1404,"props":1598,"children":1599},{},[1600,1606],{"type":39,"tag":100,"props":1601,"children":1603},{"className":1602},[],[1604],{"type":45,"value":1605},"Model",{"type":45,"value":1607}," -- GLTF\u002FGLB loader via url prop",{"type":39,"tag":1404,"props":1609,"children":1610},{},[1611,1617],{"type":39,"tag":100,"props":1612,"children":1614},{"className":1613},[],[1615],{"type":45,"value":1616},"Environment",{"type":45,"value":1618}," -- HDRI environment map (preset, background, blur, intensity)",{"type":39,"tag":1404,"props":1620,"children":1621},{},[1622,1628],{"type":39,"tag":100,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":45,"value":1627},"Fog",{"type":45,"value":1629}," -- linear fog (color, near, far)",{"type":39,"tag":1404,"props":1631,"children":1632},{},[1633,1639],{"type":39,"tag":100,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":45,"value":1638},"GridHelper",{"type":45,"value":1640}," -- reference grid (size, divisions, color)",{"type":39,"tag":1404,"props":1642,"children":1643},{},[1644,1650],{"type":39,"tag":100,"props":1645,"children":1647},{"className":1646},[],[1648],{"type":45,"value":1649},"Text3D",{"type":45,"value":1651}," -- SDF text (text, fontSize, color, anchorX, anchorY)",{"type":39,"tag":1404,"props":1653,"children":1654},{},[1655,1661],{"type":39,"tag":100,"props":1656,"children":1658},{"className":1657},[],[1659],{"type":45,"value":1660},"PerspectiveCamera",{"type":45,"value":1662}," -- camera (position, fov, near, far, makeDefault)",{"type":39,"tag":1404,"props":1664,"children":1665},{},[1666,1671],{"type":39,"tag":100,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":45,"value":640},{"type":45,"value":1672}," -- orbit controls (enableDamping, enableZoom, autoRotate)",{"type":39,"tag":54,"props":1674,"children":1676},{"id":1675},"shared-schemas",[1677],{"type":45,"value":1678},"Shared Schemas",{"type":39,"tag":48,"props":1680,"children":1681},{},[1682],{"type":45,"value":1683},"Reusable Zod schemas for custom 3D catalog definitions:",{"type":39,"tag":174,"props":1685,"children":1687},{"className":176,"code":1686,"language":178,"meta":179,"style":179},"import { vector3Schema, materialSchema, transformProps, shadowProps } from \"@json-render\u002Freact-three-fiber\";\nimport { z } from \"zod\";\n\n\u002F\u002F Custom 3D component\nconst myComponentDef = {\n  props: z.object({\n    ...transformProps,\n    ...shadowProps,\n    material: materialSchema.nullable(),\n    myCustomProp: z.string(),\n  }),\n  description: \"My custom 3D component\",\n};\n",[1688],{"type":39,"tag":100,"props":1689,"children":1690},{"__ignoreMap":179},[1691,1758,1799,1806,1814,1834,1869,1886,1902,1936,1969,1985,2014],{"type":39,"tag":185,"props":1692,"children":1693},{"class":187,"line":188},[1694,1698,1702,1707,1711,1716,1720,1725,1729,1734,1738,1742,1746,1750,1754],{"type":39,"tag":185,"props":1695,"children":1696},{"style":192},[1697],{"type":45,"value":195},{"type":39,"tag":185,"props":1699,"children":1700},{"style":198},[1701],{"type":45,"value":201},{"type":39,"tag":185,"props":1703,"children":1704},{"style":204},[1705],{"type":45,"value":1706}," vector3Schema",{"type":39,"tag":185,"props":1708,"children":1709},{"style":198},[1710],{"type":45,"value":385},{"type":39,"tag":185,"props":1712,"children":1713},{"style":204},[1714],{"type":45,"value":1715}," materialSchema",{"type":39,"tag":185,"props":1717,"children":1718},{"style":198},[1719],{"type":45,"value":385},{"type":39,"tag":185,"props":1721,"children":1722},{"style":204},[1723],{"type":45,"value":1724}," transformProps",{"type":39,"tag":185,"props":1726,"children":1727},{"style":198},[1728],{"type":45,"value":385},{"type":39,"tag":185,"props":1730,"children":1731},{"style":204},[1732],{"type":45,"value":1733}," shadowProps",{"type":39,"tag":185,"props":1735,"children":1736},{"style":198},[1737],{"type":45,"value":212},{"type":39,"tag":185,"props":1739,"children":1740},{"style":192},[1741],{"type":45,"value":217},{"type":39,"tag":185,"props":1743,"children":1744},{"style":198},[1745],{"type":45,"value":222},{"type":39,"tag":185,"props":1747,"children":1748},{"style":225},[1749],{"type":45,"value":46},{"type":39,"tag":185,"props":1751,"children":1752},{"style":198},[1753],{"type":45,"value":233},{"type":39,"tag":185,"props":1755,"children":1756},{"style":198},[1757],{"type":45,"value":238},{"type":39,"tag":185,"props":1759,"children":1760},{"class":187,"line":241},[1761,1765,1769,1774,1778,1782,1786,1791,1795],{"type":39,"tag":185,"props":1762,"children":1763},{"style":192},[1764],{"type":45,"value":195},{"type":39,"tag":185,"props":1766,"children":1767},{"style":198},[1768],{"type":45,"value":201},{"type":39,"tag":185,"props":1770,"children":1771},{"style":204},[1772],{"type":45,"value":1773}," z",{"type":39,"tag":185,"props":1775,"children":1776},{"style":198},[1777],{"type":45,"value":212},{"type":39,"tag":185,"props":1779,"children":1780},{"style":192},[1781],{"type":45,"value":217},{"type":39,"tag":185,"props":1783,"children":1784},{"style":198},[1785],{"type":45,"value":222},{"type":39,"tag":185,"props":1787,"children":1788},{"style":225},[1789],{"type":45,"value":1790},"zod",{"type":39,"tag":185,"props":1792,"children":1793},{"style":198},[1794],{"type":45,"value":233},{"type":39,"tag":185,"props":1796,"children":1797},{"style":198},[1798],{"type":45,"value":238},{"type":39,"tag":185,"props":1800,"children":1801},{"class":187,"line":283},[1802],{"type":39,"tag":185,"props":1803,"children":1804},{"emptyLinePlaceholder":421},[1805],{"type":45,"value":424},{"type":39,"tag":185,"props":1807,"children":1808},{"class":187,"line":324},[1809],{"type":39,"tag":185,"props":1810,"children":1811},{"style":431},[1812],{"type":45,"value":1813},"\u002F\u002F Custom 3D component\n",{"type":39,"tag":185,"props":1815,"children":1816},{"class":187,"line":366},[1817,1821,1826,1830],{"type":39,"tag":185,"props":1818,"children":1819},{"style":441},[1820],{"type":45,"value":444},{"type":39,"tag":185,"props":1822,"children":1823},{"style":204},[1824],{"type":45,"value":1825}," myComponentDef ",{"type":39,"tag":185,"props":1827,"children":1828},{"style":198},[1829],{"type":45,"value":454},{"type":39,"tag":185,"props":1831,"children":1832},{"style":198},[1833],{"type":45,"value":473},{"type":39,"tag":185,"props":1835,"children":1836},{"class":187,"line":417},[1837,1842,1846,1850,1854,1859,1864],{"type":39,"tag":185,"props":1838,"children":1839},{"style":480},[1840],{"type":45,"value":1841},"  props",{"type":39,"tag":185,"props":1843,"children":1844},{"style":198},[1845],{"type":45,"value":488},{"type":39,"tag":185,"props":1847,"children":1848},{"style":204},[1849],{"type":45,"value":1773},{"type":39,"tag":185,"props":1851,"children":1852},{"style":198},[1853],{"type":45,"value":514},{"type":39,"tag":185,"props":1855,"children":1856},{"style":457},[1857],{"type":45,"value":1858},"object",{"type":39,"tag":185,"props":1860,"children":1861},{"style":204},[1862],{"type":45,"value":1863},"(",{"type":39,"tag":185,"props":1865,"children":1866},{"style":198},[1867],{"type":45,"value":1868},"{\n",{"type":39,"tag":185,"props":1870,"children":1871},{"class":187,"line":427},[1872,1877,1882],{"type":39,"tag":185,"props":1873,"children":1874},{"style":198},[1875],{"type":45,"value":1876},"    ...",{"type":39,"tag":185,"props":1878,"children":1879},{"style":204},[1880],{"type":45,"value":1881},"transformProps",{"type":39,"tag":185,"props":1883,"children":1884},{"style":198},[1885],{"type":45,"value":524},{"type":39,"tag":185,"props":1887,"children":1888},{"class":187,"line":437},[1889,1893,1898],{"type":39,"tag":185,"props":1890,"children":1891},{"style":198},[1892],{"type":45,"value":1876},{"type":39,"tag":185,"props":1894,"children":1895},{"style":204},[1896],{"type":45,"value":1897},"shadowProps",{"type":39,"tag":185,"props":1899,"children":1900},{"style":198},[1901],{"type":45,"value":524},{"type":39,"tag":185,"props":1903,"children":1904},{"class":187,"line":476},[1905,1910,1914,1918,1922,1927,1932],{"type":39,"tag":185,"props":1906,"children":1907},{"style":480},[1908],{"type":45,"value":1909},"    material",{"type":39,"tag":185,"props":1911,"children":1912},{"style":198},[1913],{"type":45,"value":488},{"type":39,"tag":185,"props":1915,"children":1916},{"style":204},[1917],{"type":45,"value":1715},{"type":39,"tag":185,"props":1919,"children":1920},{"style":198},[1921],{"type":45,"value":514},{"type":39,"tag":185,"props":1923,"children":1924},{"style":457},[1925],{"type":45,"value":1926},"nullable",{"type":39,"tag":185,"props":1928,"children":1929},{"style":204},[1930],{"type":45,"value":1931},"()",{"type":39,"tag":185,"props":1933,"children":1934},{"style":198},[1935],{"type":45,"value":524},{"type":39,"tag":185,"props":1937,"children":1938},{"class":187,"line":495},[1939,1944,1948,1952,1956,1961,1965],{"type":39,"tag":185,"props":1940,"children":1941},{"style":480},[1942],{"type":45,"value":1943},"    myCustomProp",{"type":39,"tag":185,"props":1945,"children":1946},{"style":198},[1947],{"type":45,"value":488},{"type":39,"tag":185,"props":1949,"children":1950},{"style":204},[1951],{"type":45,"value":1773},{"type":39,"tag":185,"props":1953,"children":1954},{"style":198},[1955],{"type":45,"value":514},{"type":39,"tag":185,"props":1957,"children":1958},{"style":457},[1959],{"type":45,"value":1960},"string",{"type":39,"tag":185,"props":1962,"children":1963},{"style":204},[1964],{"type":45,"value":1931},{"type":39,"tag":185,"props":1966,"children":1967},{"style":198},[1968],{"type":45,"value":524},{"type":39,"tag":185,"props":1970,"children":1971},{"class":187,"line":527},[1972,1977,1981],{"type":39,"tag":185,"props":1973,"children":1974},{"style":198},[1975],{"type":45,"value":1976},"  }",{"type":39,"tag":185,"props":1978,"children":1979},{"style":204},[1980],{"type":45,"value":685},{"type":39,"tag":185,"props":1982,"children":1983},{"style":198},[1984],{"type":45,"value":524},{"type":39,"tag":185,"props":1986,"children":1987},{"class":187,"line":557},[1988,1993,1997,2001,2006,2010],{"type":39,"tag":185,"props":1989,"children":1990},{"style":480},[1991],{"type":45,"value":1992},"  description",{"type":39,"tag":185,"props":1994,"children":1995},{"style":198},[1996],{"type":45,"value":488},{"type":39,"tag":185,"props":1998,"children":1999},{"style":198},[2000],{"type":45,"value":222},{"type":39,"tag":185,"props":2002,"children":2003},{"style":225},[2004],{"type":45,"value":2005},"My custom 3D component",{"type":39,"tag":185,"props":2007,"children":2008},{"style":198},[2009],{"type":45,"value":233},{"type":39,"tag":185,"props":2011,"children":2012},{"style":198},[2013],{"type":45,"value":524},{"type":39,"tag":185,"props":2015,"children":2016},{"class":187,"line":587},[2017],{"type":39,"tag":185,"props":2018,"children":2019},{"style":198},[2020],{"type":45,"value":2021},"};\n",{"type":39,"tag":54,"props":2023,"children":2025},{"id":2024},"material-schema",[2026],{"type":45,"value":2027},"Material Schema",{"type":39,"tag":174,"props":2029,"children":2031},{"className":176,"code":2030,"language":178,"meta":179,"style":179},"materialSchema = z.object({\n  color: z.string().nullable(),         \u002F\u002F default \"#ffffff\"\n  metalness: z.number().nullable(),     \u002F\u002F default 0\n  roughness: z.number().nullable(),     \u002F\u002F default 1\n  emissive: z.string().nullable(),      \u002F\u002F default \"#000000\"\n  emissiveIntensity: z.number().nullable(), \u002F\u002F default 1\n  opacity: z.number().nullable(),       \u002F\u002F default 1\n  transparent: z.boolean().nullable(),  \u002F\u002F default false\n  wireframe: z.boolean().nullable(),    \u002F\u002F default false\n});\n",[2032],{"type":39,"tag":100,"props":2033,"children":2034},{"__ignoreMap":179},[2035,2067,2116,2166,2215,2264,2313,2362,2412,2461],{"type":39,"tag":185,"props":2036,"children":2037},{"class":187,"line":188},[2038,2043,2047,2051,2055,2059,2063],{"type":39,"tag":185,"props":2039,"children":2040},{"style":204},[2041],{"type":45,"value":2042},"materialSchema ",{"type":39,"tag":185,"props":2044,"children":2045},{"style":198},[2046],{"type":45,"value":454},{"type":39,"tag":185,"props":2048,"children":2049},{"style":204},[2050],{"type":45,"value":1773},{"type":39,"tag":185,"props":2052,"children":2053},{"style":198},[2054],{"type":45,"value":514},{"type":39,"tag":185,"props":2056,"children":2057},{"style":457},[2058],{"type":45,"value":1858},{"type":39,"tag":185,"props":2060,"children":2061},{"style":204},[2062],{"type":45,"value":1863},{"type":39,"tag":185,"props":2064,"children":2065},{"style":198},[2066],{"type":45,"value":1868},{"type":39,"tag":185,"props":2068,"children":2069},{"class":187,"line":241},[2070,2075,2079,2083,2087,2091,2095,2099,2103,2107,2111],{"type":39,"tag":185,"props":2071,"children":2072},{"style":480},[2073],{"type":45,"value":2074},"  color",{"type":39,"tag":185,"props":2076,"children":2077},{"style":198},[2078],{"type":45,"value":488},{"type":39,"tag":185,"props":2080,"children":2081},{"style":204},[2082],{"type":45,"value":1773},{"type":39,"tag":185,"props":2084,"children":2085},{"style":198},[2086],{"type":45,"value":514},{"type":39,"tag":185,"props":2088,"children":2089},{"style":457},[2090],{"type":45,"value":1960},{"type":39,"tag":185,"props":2092,"children":2093},{"style":204},[2094],{"type":45,"value":1931},{"type":39,"tag":185,"props":2096,"children":2097},{"style":198},[2098],{"type":45,"value":514},{"type":39,"tag":185,"props":2100,"children":2101},{"style":457},[2102],{"type":45,"value":1926},{"type":39,"tag":185,"props":2104,"children":2105},{"style":204},[2106],{"type":45,"value":1931},{"type":39,"tag":185,"props":2108,"children":2109},{"style":198},[2110],{"type":45,"value":385},{"type":39,"tag":185,"props":2112,"children":2113},{"style":431},[2114],{"type":45,"value":2115},"         \u002F\u002F default \"#ffffff\"\n",{"type":39,"tag":185,"props":2117,"children":2118},{"class":187,"line":283},[2119,2124,2128,2132,2136,2141,2145,2149,2153,2157,2161],{"type":39,"tag":185,"props":2120,"children":2121},{"style":480},[2122],{"type":45,"value":2123},"  metalness",{"type":39,"tag":185,"props":2125,"children":2126},{"style":198},[2127],{"type":45,"value":488},{"type":39,"tag":185,"props":2129,"children":2130},{"style":204},[2131],{"type":45,"value":1773},{"type":39,"tag":185,"props":2133,"children":2134},{"style":198},[2135],{"type":45,"value":514},{"type":39,"tag":185,"props":2137,"children":2138},{"style":457},[2139],{"type":45,"value":2140},"number",{"type":39,"tag":185,"props":2142,"children":2143},{"style":204},[2144],{"type":45,"value":1931},{"type":39,"tag":185,"props":2146,"children":2147},{"style":198},[2148],{"type":45,"value":514},{"type":39,"tag":185,"props":2150,"children":2151},{"style":457},[2152],{"type":45,"value":1926},{"type":39,"tag":185,"props":2154,"children":2155},{"style":204},[2156],{"type":45,"value":1931},{"type":39,"tag":185,"props":2158,"children":2159},{"style":198},[2160],{"type":45,"value":385},{"type":39,"tag":185,"props":2162,"children":2163},{"style":431},[2164],{"type":45,"value":2165},"     \u002F\u002F default 0\n",{"type":39,"tag":185,"props":2167,"children":2168},{"class":187,"line":324},[2169,2174,2178,2182,2186,2190,2194,2198,2202,2206,2210],{"type":39,"tag":185,"props":2170,"children":2171},{"style":480},[2172],{"type":45,"value":2173},"  roughness",{"type":39,"tag":185,"props":2175,"children":2176},{"style":198},[2177],{"type":45,"value":488},{"type":39,"tag":185,"props":2179,"children":2180},{"style":204},[2181],{"type":45,"value":1773},{"type":39,"tag":185,"props":2183,"children":2184},{"style":198},[2185],{"type":45,"value":514},{"type":39,"tag":185,"props":2187,"children":2188},{"style":457},[2189],{"type":45,"value":2140},{"type":39,"tag":185,"props":2191,"children":2192},{"style":204},[2193],{"type":45,"value":1931},{"type":39,"tag":185,"props":2195,"children":2196},{"style":198},[2197],{"type":45,"value":514},{"type":39,"tag":185,"props":2199,"children":2200},{"style":457},[2201],{"type":45,"value":1926},{"type":39,"tag":185,"props":2203,"children":2204},{"style":204},[2205],{"type":45,"value":1931},{"type":39,"tag":185,"props":2207,"children":2208},{"style":198},[2209],{"type":45,"value":385},{"type":39,"tag":185,"props":2211,"children":2212},{"style":431},[2213],{"type":45,"value":2214},"     \u002F\u002F default 1\n",{"type":39,"tag":185,"props":2216,"children":2217},{"class":187,"line":366},[2218,2223,2227,2231,2235,2239,2243,2247,2251,2255,2259],{"type":39,"tag":185,"props":2219,"children":2220},{"style":480},[2221],{"type":45,"value":2222},"  emissive",{"type":39,"tag":185,"props":2224,"children":2225},{"style":198},[2226],{"type":45,"value":488},{"type":39,"tag":185,"props":2228,"children":2229},{"style":204},[2230],{"type":45,"value":1773},{"type":39,"tag":185,"props":2232,"children":2233},{"style":198},[2234],{"type":45,"value":514},{"type":39,"tag":185,"props":2236,"children":2237},{"style":457},[2238],{"type":45,"value":1960},{"type":39,"tag":185,"props":2240,"children":2241},{"style":204},[2242],{"type":45,"value":1931},{"type":39,"tag":185,"props":2244,"children":2245},{"style":198},[2246],{"type":45,"value":514},{"type":39,"tag":185,"props":2248,"children":2249},{"style":457},[2250],{"type":45,"value":1926},{"type":39,"tag":185,"props":2252,"children":2253},{"style":204},[2254],{"type":45,"value":1931},{"type":39,"tag":185,"props":2256,"children":2257},{"style":198},[2258],{"type":45,"value":385},{"type":39,"tag":185,"props":2260,"children":2261},{"style":431},[2262],{"type":45,"value":2263},"      \u002F\u002F default \"#000000\"\n",{"type":39,"tag":185,"props":2265,"children":2266},{"class":187,"line":417},[2267,2272,2276,2280,2284,2288,2292,2296,2300,2304,2308],{"type":39,"tag":185,"props":2268,"children":2269},{"style":480},[2270],{"type":45,"value":2271},"  emissiveIntensity",{"type":39,"tag":185,"props":2273,"children":2274},{"style":198},[2275],{"type":45,"value":488},{"type":39,"tag":185,"props":2277,"children":2278},{"style":204},[2279],{"type":45,"value":1773},{"type":39,"tag":185,"props":2281,"children":2282},{"style":198},[2283],{"type":45,"value":514},{"type":39,"tag":185,"props":2285,"children":2286},{"style":457},[2287],{"type":45,"value":2140},{"type":39,"tag":185,"props":2289,"children":2290},{"style":204},[2291],{"type":45,"value":1931},{"type":39,"tag":185,"props":2293,"children":2294},{"style":198},[2295],{"type":45,"value":514},{"type":39,"tag":185,"props":2297,"children":2298},{"style":457},[2299],{"type":45,"value":1926},{"type":39,"tag":185,"props":2301,"children":2302},{"style":204},[2303],{"type":45,"value":1931},{"type":39,"tag":185,"props":2305,"children":2306},{"style":198},[2307],{"type":45,"value":385},{"type":39,"tag":185,"props":2309,"children":2310},{"style":431},[2311],{"type":45,"value":2312}," \u002F\u002F default 1\n",{"type":39,"tag":185,"props":2314,"children":2315},{"class":187,"line":427},[2316,2321,2325,2329,2333,2337,2341,2345,2349,2353,2357],{"type":39,"tag":185,"props":2317,"children":2318},{"style":480},[2319],{"type":45,"value":2320},"  opacity",{"type":39,"tag":185,"props":2322,"children":2323},{"style":198},[2324],{"type":45,"value":488},{"type":39,"tag":185,"props":2326,"children":2327},{"style":204},[2328],{"type":45,"value":1773},{"type":39,"tag":185,"props":2330,"children":2331},{"style":198},[2332],{"type":45,"value":514},{"type":39,"tag":185,"props":2334,"children":2335},{"style":457},[2336],{"type":45,"value":2140},{"type":39,"tag":185,"props":2338,"children":2339},{"style":204},[2340],{"type":45,"value":1931},{"type":39,"tag":185,"props":2342,"children":2343},{"style":198},[2344],{"type":45,"value":514},{"type":39,"tag":185,"props":2346,"children":2347},{"style":457},[2348],{"type":45,"value":1926},{"type":39,"tag":185,"props":2350,"children":2351},{"style":204},[2352],{"type":45,"value":1931},{"type":39,"tag":185,"props":2354,"children":2355},{"style":198},[2356],{"type":45,"value":385},{"type":39,"tag":185,"props":2358,"children":2359},{"style":431},[2360],{"type":45,"value":2361},"       \u002F\u002F default 1\n",{"type":39,"tag":185,"props":2363,"children":2364},{"class":187,"line":437},[2365,2370,2374,2378,2382,2387,2391,2395,2399,2403,2407],{"type":39,"tag":185,"props":2366,"children":2367},{"style":480},[2368],{"type":45,"value":2369},"  transparent",{"type":39,"tag":185,"props":2371,"children":2372},{"style":198},[2373],{"type":45,"value":488},{"type":39,"tag":185,"props":2375,"children":2376},{"style":204},[2377],{"type":45,"value":1773},{"type":39,"tag":185,"props":2379,"children":2380},{"style":198},[2381],{"type":45,"value":514},{"type":39,"tag":185,"props":2383,"children":2384},{"style":457},[2385],{"type":45,"value":2386},"boolean",{"type":39,"tag":185,"props":2388,"children":2389},{"style":204},[2390],{"type":45,"value":1931},{"type":39,"tag":185,"props":2392,"children":2393},{"style":198},[2394],{"type":45,"value":514},{"type":39,"tag":185,"props":2396,"children":2397},{"style":457},[2398],{"type":45,"value":1926},{"type":39,"tag":185,"props":2400,"children":2401},{"style":204},[2402],{"type":45,"value":1931},{"type":39,"tag":185,"props":2404,"children":2405},{"style":198},[2406],{"type":45,"value":385},{"type":39,"tag":185,"props":2408,"children":2409},{"style":431},[2410],{"type":45,"value":2411},"  \u002F\u002F default false\n",{"type":39,"tag":185,"props":2413,"children":2414},{"class":187,"line":476},[2415,2420,2424,2428,2432,2436,2440,2444,2448,2452,2456],{"type":39,"tag":185,"props":2416,"children":2417},{"style":480},[2418],{"type":45,"value":2419},"  wireframe",{"type":39,"tag":185,"props":2421,"children":2422},{"style":198},[2423],{"type":45,"value":488},{"type":39,"tag":185,"props":2425,"children":2426},{"style":204},[2427],{"type":45,"value":1773},{"type":39,"tag":185,"props":2429,"children":2430},{"style":198},[2431],{"type":45,"value":514},{"type":39,"tag":185,"props":2433,"children":2434},{"style":457},[2435],{"type":45,"value":2386},{"type":39,"tag":185,"props":2437,"children":2438},{"style":204},[2439],{"type":45,"value":1931},{"type":39,"tag":185,"props":2441,"children":2442},{"style":198},[2443],{"type":45,"value":514},{"type":39,"tag":185,"props":2445,"children":2446},{"style":457},[2447],{"type":45,"value":1926},{"type":39,"tag":185,"props":2449,"children":2450},{"style":204},[2451],{"type":45,"value":1931},{"type":39,"tag":185,"props":2453,"children":2454},{"style":198},[2455],{"type":45,"value":385},{"type":39,"tag":185,"props":2457,"children":2458},{"style":431},[2459],{"type":45,"value":2460},"    \u002F\u002F default false\n",{"type":39,"tag":185,"props":2462,"children":2463},{"class":187,"line":495},[2464,2468,2472],{"type":39,"tag":185,"props":2465,"children":2466},{"style":198},[2467],{"type":45,"value":680},{"type":39,"tag":185,"props":2469,"children":2470},{"style":204},[2471],{"type":45,"value":685},{"type":39,"tag":185,"props":2473,"children":2474},{"style":198},[2475],{"type":45,"value":238},{"type":39,"tag":54,"props":2477,"children":2479},{"id":2478},"spec-format",[2480],{"type":45,"value":2481},"Spec Format",{"type":39,"tag":48,"props":2483,"children":2484},{},[2485],{"type":45,"value":2486},"3D specs use the standard json-render flat element format:",{"type":39,"tag":174,"props":2488,"children":2492},{"className":2489,"code":2490,"language":2491,"meta":179,"style":179},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"root\": \"scene\",\n  \"elements\": {\n    \"scene\": {\n      \"type\": \"Group\",\n      \"props\": { \"position\": [0, 0, 0] },\n      \"children\": [\"light\", \"box\"]\n    },\n    \"light\": {\n      \"type\": \"AmbientLight\",\n      \"props\": { \"intensity\": 0.5 },\n      \"children\": []\n    },\n    \"box\": {\n      \"type\": \"Box\",\n      \"props\": {\n        \"position\": [0, 0.5, 0],\n        \"material\": { \"color\": \"#4488ff\", \"metalness\": 0.3, \"roughness\": 0.7 }\n      },\n      \"children\": []\n    }\n  }\n}\n","json",[2493],{"type":39,"tag":100,"props":2494,"children":2495},{"__ignoreMap":179},[2496,2503,2540,2564,2588,2625,2700,2759,2767,2790,2825,2874,2898,2905,2928,2963,2986,3035,3146,3154,3177,3185,3193],{"type":39,"tag":185,"props":2497,"children":2498},{"class":187,"line":188},[2499],{"type":39,"tag":185,"props":2500,"children":2501},{"style":198},[2502],{"type":45,"value":1868},{"type":39,"tag":185,"props":2504,"children":2505},{"class":187,"line":241},[2506,2511,2515,2519,2523,2527,2532,2536],{"type":39,"tag":185,"props":2507,"children":2508},{"style":198},[2509],{"type":45,"value":2510},"  \"",{"type":39,"tag":185,"props":2512,"children":2513},{"style":441},[2514],{"type":45,"value":36},{"type":39,"tag":185,"props":2516,"children":2517},{"style":198},[2518],{"type":45,"value":233},{"type":39,"tag":185,"props":2520,"children":2521},{"style":198},[2522],{"type":45,"value":488},{"type":39,"tag":185,"props":2524,"children":2525},{"style":198},[2526],{"type":45,"value":222},{"type":39,"tag":185,"props":2528,"children":2529},{"style":225},[2530],{"type":45,"value":2531},"scene",{"type":39,"tag":185,"props":2533,"children":2534},{"style":198},[2535],{"type":45,"value":233},{"type":39,"tag":185,"props":2537,"children":2538},{"style":198},[2539],{"type":45,"value":524},{"type":39,"tag":185,"props":2541,"children":2542},{"class":187,"line":283},[2543,2547,2552,2556,2560],{"type":39,"tag":185,"props":2544,"children":2545},{"style":198},[2546],{"type":45,"value":2510},{"type":39,"tag":185,"props":2548,"children":2549},{"style":441},[2550],{"type":45,"value":2551},"elements",{"type":39,"tag":185,"props":2553,"children":2554},{"style":198},[2555],{"type":45,"value":233},{"type":39,"tag":185,"props":2557,"children":2558},{"style":198},[2559],{"type":45,"value":488},{"type":39,"tag":185,"props":2561,"children":2562},{"style":198},[2563],{"type":45,"value":473},{"type":39,"tag":185,"props":2565,"children":2566},{"class":187,"line":324},[2567,2572,2576,2580,2584],{"type":39,"tag":185,"props":2568,"children":2569},{"style":198},[2570],{"type":45,"value":2571},"    \"",{"type":39,"tag":185,"props":2573,"children":2574},{"style":962},[2575],{"type":45,"value":2531},{"type":39,"tag":185,"props":2577,"children":2578},{"style":198},[2579],{"type":45,"value":233},{"type":39,"tag":185,"props":2581,"children":2582},{"style":198},[2583],{"type":45,"value":488},{"type":39,"tag":185,"props":2585,"children":2586},{"style":198},[2587],{"type":45,"value":473},{"type":39,"tag":185,"props":2589,"children":2590},{"class":187,"line":366},[2591,2596,2601,2605,2609,2613,2617,2621],{"type":39,"tag":185,"props":2592,"children":2593},{"style":198},[2594],{"type":45,"value":2595},"      \"",{"type":39,"tag":185,"props":2597,"children":2598},{"style":1047},[2599],{"type":45,"value":2600},"type",{"type":39,"tag":185,"props":2602,"children":2603},{"style":198},[2604],{"type":45,"value":233},{"type":39,"tag":185,"props":2606,"children":2607},{"style":198},[2608],{"type":45,"value":488},{"type":39,"tag":185,"props":2610,"children":2611},{"style":198},[2612],{"type":45,"value":222},{"type":39,"tag":185,"props":2614,"children":2615},{"style":225},[2616],{"type":45,"value":1594},{"type":39,"tag":185,"props":2618,"children":2619},{"style":198},[2620],{"type":45,"value":233},{"type":39,"tag":185,"props":2622,"children":2623},{"style":198},[2624],{"type":45,"value":524},{"type":39,"tag":185,"props":2626,"children":2627},{"class":187,"line":417},[2628,2632,2637,2641,2645,2649,2653,2657,2661,2665,2669,2674,2678,2683,2687,2691,2695],{"type":39,"tag":185,"props":2629,"children":2630},{"style":198},[2631],{"type":45,"value":2595},{"type":39,"tag":185,"props":2633,"children":2634},{"style":1047},[2635],{"type":45,"value":2636},"props",{"type":39,"tag":185,"props":2638,"children":2639},{"style":198},[2640],{"type":45,"value":233},{"type":39,"tag":185,"props":2642,"children":2643},{"style":198},[2644],{"type":45,"value":488},{"type":39,"tag":185,"props":2646,"children":2647},{"style":198},[2648],{"type":45,"value":201},{"type":39,"tag":185,"props":2650,"children":2651},{"style":198},[2652],{"type":45,"value":222},{"type":39,"tag":185,"props":2654,"children":2655},{"style":480},[2656],{"type":45,"value":1489},{"type":39,"tag":185,"props":2658,"children":2659},{"style":198},[2660],{"type":45,"value":233},{"type":39,"tag":185,"props":2662,"children":2663},{"style":198},[2664],{"type":45,"value":488},{"type":39,"tag":185,"props":2666,"children":2667},{"style":198},[2668],{"type":45,"value":1044},{"type":39,"tag":185,"props":2670,"children":2671},{"style":1047},[2672],{"type":45,"value":2673},"0",{"type":39,"tag":185,"props":2675,"children":2676},{"style":198},[2677],{"type":45,"value":385},{"type":39,"tag":185,"props":2679,"children":2680},{"style":1047},[2681],{"type":45,"value":2682}," 0",{"type":39,"tag":185,"props":2684,"children":2685},{"style":198},[2686],{"type":45,"value":385},{"type":39,"tag":185,"props":2688,"children":2689},{"style":1047},[2690],{"type":45,"value":2682},{"type":39,"tag":185,"props":2692,"children":2693},{"style":198},[2694],{"type":45,"value":1072},{"type":39,"tag":185,"props":2696,"children":2697},{"style":198},[2698],{"type":45,"value":2699}," },\n",{"type":39,"tag":185,"props":2701,"children":2702},{"class":187,"line":427},[2703,2707,2712,2716,2720,2724,2728,2733,2737,2741,2745,2750,2754],{"type":39,"tag":185,"props":2704,"children":2705},{"style":198},[2706],{"type":45,"value":2595},{"type":39,"tag":185,"props":2708,"children":2709},{"style":1047},[2710],{"type":45,"value":2711},"children",{"type":39,"tag":185,"props":2713,"children":2714},{"style":198},[2715],{"type":45,"value":233},{"type":39,"tag":185,"props":2717,"children":2718},{"style":198},[2719],{"type":45,"value":488},{"type":39,"tag":185,"props":2721,"children":2722},{"style":198},[2723],{"type":45,"value":1044},{"type":39,"tag":185,"props":2725,"children":2726},{"style":198},[2727],{"type":45,"value":233},{"type":39,"tag":185,"props":2729,"children":2730},{"style":225},[2731],{"type":45,"value":2732},"light",{"type":39,"tag":185,"props":2734,"children":2735},{"style":198},[2736],{"type":45,"value":233},{"type":39,"tag":185,"props":2738,"children":2739},{"style":198},[2740],{"type":45,"value":385},{"type":39,"tag":185,"props":2742,"children":2743},{"style":198},[2744],{"type":45,"value":222},{"type":39,"tag":185,"props":2746,"children":2747},{"style":225},[2748],{"type":45,"value":2749},"box",{"type":39,"tag":185,"props":2751,"children":2752},{"style":198},[2753],{"type":45,"value":233},{"type":39,"tag":185,"props":2755,"children":2756},{"style":198},[2757],{"type":45,"value":2758},"]\n",{"type":39,"tag":185,"props":2760,"children":2761},{"class":187,"line":437},[2762],{"type":39,"tag":185,"props":2763,"children":2764},{"style":198},[2765],{"type":45,"value":2766},"    },\n",{"type":39,"tag":185,"props":2768,"children":2769},{"class":187,"line":476},[2770,2774,2778,2782,2786],{"type":39,"tag":185,"props":2771,"children":2772},{"style":198},[2773],{"type":45,"value":2571},{"type":39,"tag":185,"props":2775,"children":2776},{"style":962},[2777],{"type":45,"value":2732},{"type":39,"tag":185,"props":2779,"children":2780},{"style":198},[2781],{"type":45,"value":233},{"type":39,"tag":185,"props":2783,"children":2784},{"style":198},[2785],{"type":45,"value":488},{"type":39,"tag":185,"props":2787,"children":2788},{"style":198},[2789],{"type":45,"value":473},{"type":39,"tag":185,"props":2791,"children":2792},{"class":187,"line":495},[2793,2797,2801,2805,2809,2813,2817,2821],{"type":39,"tag":185,"props":2794,"children":2795},{"style":198},[2796],{"type":45,"value":2595},{"type":39,"tag":185,"props":2798,"children":2799},{"style":1047},[2800],{"type":45,"value":2600},{"type":39,"tag":185,"props":2802,"children":2803},{"style":198},[2804],{"type":45,"value":233},{"type":39,"tag":185,"props":2806,"children":2807},{"style":198},[2808],{"type":45,"value":488},{"type":39,"tag":185,"props":2810,"children":2811},{"style":198},[2812],{"type":45,"value":222},{"type":39,"tag":185,"props":2814,"children":2815},{"style":225},[2816],{"type":45,"value":580},{"type":39,"tag":185,"props":2818,"children":2819},{"style":198},[2820],{"type":45,"value":233},{"type":39,"tag":185,"props":2822,"children":2823},{"style":198},[2824],{"type":45,"value":524},{"type":39,"tag":185,"props":2826,"children":2827},{"class":187,"line":527},[2828,2832,2836,2840,2844,2848,2852,2857,2861,2865,2870],{"type":39,"tag":185,"props":2829,"children":2830},{"style":198},[2831],{"type":45,"value":2595},{"type":39,"tag":185,"props":2833,"children":2834},{"style":1047},[2835],{"type":45,"value":2636},{"type":39,"tag":185,"props":2837,"children":2838},{"style":198},[2839],{"type":45,"value":233},{"type":39,"tag":185,"props":2841,"children":2842},{"style":198},[2843],{"type":45,"value":488},{"type":39,"tag":185,"props":2845,"children":2846},{"style":198},[2847],{"type":45,"value":201},{"type":39,"tag":185,"props":2849,"children":2850},{"style":198},[2851],{"type":45,"value":222},{"type":39,"tag":185,"props":2853,"children":2854},{"style":480},[2855],{"type":45,"value":2856},"intensity",{"type":39,"tag":185,"props":2858,"children":2859},{"style":198},[2860],{"type":45,"value":233},{"type":39,"tag":185,"props":2862,"children":2863},{"style":198},[2864],{"type":45,"value":488},{"type":39,"tag":185,"props":2866,"children":2867},{"style":1047},[2868],{"type":45,"value":2869}," 0.5",{"type":39,"tag":185,"props":2871,"children":2872},{"style":198},[2873],{"type":45,"value":2699},{"type":39,"tag":185,"props":2875,"children":2876},{"class":187,"line":557},[2877,2881,2885,2889,2893],{"type":39,"tag":185,"props":2878,"children":2879},{"style":198},[2880],{"type":45,"value":2595},{"type":39,"tag":185,"props":2882,"children":2883},{"style":1047},[2884],{"type":45,"value":2711},{"type":39,"tag":185,"props":2886,"children":2887},{"style":198},[2888],{"type":45,"value":233},{"type":39,"tag":185,"props":2890,"children":2891},{"style":198},[2892],{"type":45,"value":488},{"type":39,"tag":185,"props":2894,"children":2895},{"style":198},[2896],{"type":45,"value":2897}," []\n",{"type":39,"tag":185,"props":2899,"children":2900},{"class":187,"line":587},[2901],{"type":39,"tag":185,"props":2902,"children":2903},{"style":198},[2904],{"type":45,"value":2766},{"type":39,"tag":185,"props":2906,"children":2907},{"class":187,"line":617},[2908,2912,2916,2920,2924],{"type":39,"tag":185,"props":2909,"children":2910},{"style":198},[2911],{"type":45,"value":2571},{"type":39,"tag":185,"props":2913,"children":2914},{"style":962},[2915],{"type":45,"value":2749},{"type":39,"tag":185,"props":2917,"children":2918},{"style":198},[2919],{"type":45,"value":233},{"type":39,"tag":185,"props":2921,"children":2922},{"style":198},[2923],{"type":45,"value":488},{"type":39,"tag":185,"props":2925,"children":2926},{"style":198},[2927],{"type":45,"value":473},{"type":39,"tag":185,"props":2929,"children":2930},{"class":187,"line":647},[2931,2935,2939,2943,2947,2951,2955,2959],{"type":39,"tag":185,"props":2932,"children":2933},{"style":198},[2934],{"type":45,"value":2595},{"type":39,"tag":185,"props":2936,"children":2937},{"style":1047},[2938],{"type":45,"value":2600},{"type":39,"tag":185,"props":2940,"children":2941},{"style":198},[2942],{"type":45,"value":233},{"type":39,"tag":185,"props":2944,"children":2945},{"style":198},[2946],{"type":45,"value":488},{"type":39,"tag":185,"props":2948,"children":2949},{"style":198},[2950],{"type":45,"value":222},{"type":39,"tag":185,"props":2952,"children":2953},{"style":225},[2954],{"type":45,"value":519},{"type":39,"tag":185,"props":2956,"children":2957},{"style":198},[2958],{"type":45,"value":233},{"type":39,"tag":185,"props":2960,"children":2961},{"style":198},[2962],{"type":45,"value":524},{"type":39,"tag":185,"props":2964,"children":2965},{"class":187,"line":656},[2966,2970,2974,2978,2982],{"type":39,"tag":185,"props":2967,"children":2968},{"style":198},[2969],{"type":45,"value":2595},{"type":39,"tag":185,"props":2971,"children":2972},{"style":1047},[2973],{"type":45,"value":2636},{"type":39,"tag":185,"props":2975,"children":2976},{"style":198},[2977],{"type":45,"value":233},{"type":39,"tag":185,"props":2979,"children":2980},{"style":198},[2981],{"type":45,"value":488},{"type":39,"tag":185,"props":2983,"children":2984},{"style":198},[2985],{"type":45,"value":473},{"type":39,"tag":185,"props":2987,"children":2988},{"class":187,"line":674},[2989,2994,2998,3002,3006,3010,3014,3018,3022,3026,3030],{"type":39,"tag":185,"props":2990,"children":2991},{"style":198},[2992],{"type":45,"value":2993},"        \"",{"type":39,"tag":185,"props":2995,"children":2996},{"style":480},[2997],{"type":45,"value":1489},{"type":39,"tag":185,"props":2999,"children":3000},{"style":198},[3001],{"type":45,"value":233},{"type":39,"tag":185,"props":3003,"children":3004},{"style":198},[3005],{"type":45,"value":488},{"type":39,"tag":185,"props":3007,"children":3008},{"style":198},[3009],{"type":45,"value":1044},{"type":39,"tag":185,"props":3011,"children":3012},{"style":1047},[3013],{"type":45,"value":2673},{"type":39,"tag":185,"props":3015,"children":3016},{"style":198},[3017],{"type":45,"value":385},{"type":39,"tag":185,"props":3019,"children":3020},{"style":1047},[3021],{"type":45,"value":2869},{"type":39,"tag":185,"props":3023,"children":3024},{"style":198},[3025],{"type":45,"value":385},{"type":39,"tag":185,"props":3027,"children":3028},{"style":1047},[3029],{"type":45,"value":2682},{"type":39,"tag":185,"props":3031,"children":3032},{"style":198},[3033],{"type":45,"value":3034},"],\n",{"type":39,"tag":185,"props":3036,"children":3037},{"class":187,"line":692},[3038,3042,3046,3050,3054,3058,3062,3068,3072,3076,3080,3085,3089,3093,3097,3102,3106,3110,3115,3119,3123,3128,3132,3136,3141],{"type":39,"tag":185,"props":3039,"children":3040},{"style":198},[3041],{"type":45,"value":2993},{"type":39,"tag":185,"props":3043,"children":3044},{"style":480},[3045],{"type":45,"value":1524},{"type":39,"tag":185,"props":3047,"children":3048},{"style":198},[3049],{"type":45,"value":233},{"type":39,"tag":185,"props":3051,"children":3052},{"style":198},[3053],{"type":45,"value":488},{"type":39,"tag":185,"props":3055,"children":3056},{"style":198},[3057],{"type":45,"value":201},{"type":39,"tag":185,"props":3059,"children":3060},{"style":198},[3061],{"type":45,"value":222},{"type":39,"tag":185,"props":3063,"children":3065},{"style":3064},"--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53",[3066],{"type":45,"value":3067},"color",{"type":39,"tag":185,"props":3069,"children":3070},{"style":198},[3071],{"type":45,"value":233},{"type":39,"tag":185,"props":3073,"children":3074},{"style":198},[3075],{"type":45,"value":488},{"type":39,"tag":185,"props":3077,"children":3078},{"style":198},[3079],{"type":45,"value":222},{"type":39,"tag":185,"props":3081,"children":3082},{"style":225},[3083],{"type":45,"value":3084},"#4488ff",{"type":39,"tag":185,"props":3086,"children":3087},{"style":198},[3088],{"type":45,"value":233},{"type":39,"tag":185,"props":3090,"children":3091},{"style":198},[3092],{"type":45,"value":385},{"type":39,"tag":185,"props":3094,"children":3095},{"style":198},[3096],{"type":45,"value":222},{"type":39,"tag":185,"props":3098,"children":3099},{"style":3064},[3100],{"type":45,"value":3101},"metalness",{"type":39,"tag":185,"props":3103,"children":3104},{"style":198},[3105],{"type":45,"value":233},{"type":39,"tag":185,"props":3107,"children":3108},{"style":198},[3109],{"type":45,"value":488},{"type":39,"tag":185,"props":3111,"children":3112},{"style":1047},[3113],{"type":45,"value":3114}," 0.3",{"type":39,"tag":185,"props":3116,"children":3117},{"style":198},[3118],{"type":45,"value":385},{"type":39,"tag":185,"props":3120,"children":3121},{"style":198},[3122],{"type":45,"value":222},{"type":39,"tag":185,"props":3124,"children":3125},{"style":3064},[3126],{"type":45,"value":3127},"roughness",{"type":39,"tag":185,"props":3129,"children":3130},{"style":198},[3131],{"type":45,"value":233},{"type":39,"tag":185,"props":3133,"children":3134},{"style":198},[3135],{"type":45,"value":488},{"type":39,"tag":185,"props":3137,"children":3138},{"style":1047},[3139],{"type":45,"value":3140}," 0.7",{"type":39,"tag":185,"props":3142,"children":3143},{"style":198},[3144],{"type":45,"value":3145}," }\n",{"type":39,"tag":185,"props":3147,"children":3148},{"class":187,"line":700},[3149],{"type":39,"tag":185,"props":3150,"children":3151},{"style":198},[3152],{"type":45,"value":3153},"      },\n",{"type":39,"tag":185,"props":3155,"children":3156},{"class":187,"line":709},[3157,3161,3165,3169,3173],{"type":39,"tag":185,"props":3158,"children":3159},{"style":198},[3160],{"type":45,"value":2595},{"type":39,"tag":185,"props":3162,"children":3163},{"style":1047},[3164],{"type":45,"value":2711},{"type":39,"tag":185,"props":3166,"children":3167},{"style":198},[3168],{"type":45,"value":233},{"type":39,"tag":185,"props":3170,"children":3171},{"style":198},[3172],{"type":45,"value":488},{"type":39,"tag":185,"props":3174,"children":3175},{"style":198},[3176],{"type":45,"value":2897},{"type":39,"tag":185,"props":3178,"children":3179},{"class":187,"line":752},[3180],{"type":39,"tag":185,"props":3181,"children":3182},{"style":198},[3183],{"type":45,"value":3184},"    }\n",{"type":39,"tag":185,"props":3186,"children":3187},{"class":187,"line":768},[3188],{"type":39,"tag":185,"props":3189,"children":3190},{"style":198},[3191],{"type":45,"value":3192},"  }\n",{"type":39,"tag":185,"props":3194,"children":3195},{"class":187,"line":796},[3196],{"type":39,"tag":185,"props":3197,"children":3198},{"style":198},[3199],{"type":45,"value":988},{"type":39,"tag":54,"props":3201,"children":3203},{"id":3202},"dependencies",[3204],{"type":45,"value":3205},"Dependencies",{"type":39,"tag":48,"props":3207,"children":3208},{},[3209],{"type":45,"value":3210},"Peer dependencies required:",{"type":39,"tag":1400,"props":3212,"children":3213},{},[3214,3224,3235,3246,3256],{"type":39,"tag":1404,"props":3215,"children":3216},{},[3217,3222],{"type":39,"tag":100,"props":3218,"children":3220},{"className":3219},[],[3221],{"type":45,"value":1213},{"type":45,"value":3223}," >= 8.0.0",{"type":39,"tag":1404,"props":3225,"children":3226},{},[3227,3233],{"type":39,"tag":100,"props":3228,"children":3230},{"className":3229},[],[3231],{"type":45,"value":3232},"@react-three\u002Fdrei",{"type":45,"value":3234}," >= 9.0.0",{"type":39,"tag":1404,"props":3236,"children":3237},{},[3238,3244],{"type":39,"tag":100,"props":3239,"children":3241},{"className":3240},[],[3242],{"type":45,"value":3243},"three",{"type":45,"value":3245}," >= 0.160.0",{"type":39,"tag":1404,"props":3247,"children":3248},{},[3249,3254],{"type":39,"tag":100,"props":3250,"children":3252},{"className":3251},[],[3253],{"type":45,"value":14},{"type":45,"value":3255}," ^19.0.0",{"type":39,"tag":1404,"props":3257,"children":3258},{},[3259,3264],{"type":39,"tag":100,"props":3260,"children":3262},{"className":3261},[],[3263],{"type":45,"value":1790},{"type":45,"value":3265}," ^4.0.0",{"type":39,"tag":3267,"props":3268,"children":3269},"style",{},[3270],{"type":45,"value":3271},"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);}",{"items":3273,"total":3441},[3274,3292,3304,3316,3331,3348,3360,3373,3386,3399,3411,3426],{"slug":3275,"name":3275,"fn":3276,"description":3277,"org":3278,"tags":3279,"stars":3289,"repoUrl":3290,"updatedAt":3291},"agent-browser","automate browser interactions for AI agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3280,3283,3286],{"name":3281,"slug":3282,"type":15},"Agents","agents",{"name":3284,"slug":3285,"type":15},"Automation","automation",{"name":3287,"slug":3288,"type":15},"Browser Automation","browser-automation",38346,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser","2026-07-20T05:55:17.314329",{"slug":3293,"name":3293,"fn":3294,"description":3295,"org":3296,"tags":3297,"stars":3289,"repoUrl":3290,"updatedAt":3303},"agentcore","run browser automation on AWS Bedrock","Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include \"use agentcore\", \"run on AWS\", \"cloud browser with AWS\", \"bedrock browser\", \"agentcore session\", or any task requiring AWS-hosted browser automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3298,3299,3302],{"name":3284,"slug":3285,"type":15},{"name":3300,"slug":3301,"type":15},"AWS","aws",{"name":3287,"slug":3288,"type":15},"2026-07-17T06:08:33.665276",{"slug":3305,"name":3305,"fn":3306,"description":3307,"org":3308,"tags":3309,"stars":3289,"repoUrl":3290,"updatedAt":3315},"core","navigate and interact with web pages","Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3310,3311,3312],{"name":3281,"slug":3282,"type":15},{"name":3287,"slug":3288,"type":15},{"name":3313,"slug":3314,"type":15},"Navigation","navigation","2026-07-26T05:47:42.378419",{"slug":3317,"name":3317,"fn":3318,"description":3319,"org":3320,"tags":3321,"stars":3289,"repoUrl":3290,"updatedAt":3330},"derive-client","reverse engineer internal APIs from browser traffic","Reverse-engineer a website's internal API by recording browser traffic into a HAR file, then generate a standalone client or CLI that calls the endpoints directly, with no browser needed after the first recording. Use when asked to \"derive a client\", \"build a CLI for \u003Csite>\", \"reverse engineer this site's API\", \"record network requests\", \"turn this site into an API\", or when the same site will be automated repeatedly and direct HTTP calls would beat driving the browser every time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3322,3325,3326,3327],{"name":3323,"slug":3324,"type":15},"API Development","api-development",{"name":3284,"slug":3285,"type":15},{"name":3287,"slug":3288,"type":15},{"name":3328,"slug":3329,"type":15},"Web Scraping","web-scraping","2026-07-20T06:24:11.928835",{"slug":3332,"name":3332,"fn":3333,"description":3334,"org":3335,"tags":3336,"stars":3289,"repoUrl":3290,"updatedAt":3347},"dogfood","perform exploratory testing on web applications","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3337,3338,3341,3344],{"name":3287,"slug":3288,"type":15},{"name":3339,"slug":3340,"type":15},"Debugging","debugging",{"name":3342,"slug":3343,"type":15},"QA","qa",{"name":3345,"slug":3346,"type":15},"Testing","testing","2026-07-17T06:07:41.421482",{"slug":3349,"name":3349,"fn":3350,"description":3351,"org":3352,"tags":3353,"stars":3289,"repoUrl":3290,"updatedAt":3359},"electron","automate Electron desktop applications","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3354,3355,3356],{"name":3281,"slug":3282,"type":15},{"name":3287,"slug":3288,"type":15},{"name":3357,"slug":3358,"type":15},"Desktop","desktop","2026-07-17T06:08:28.007783",{"slug":3361,"name":3361,"fn":3362,"description":3363,"org":3364,"tags":3365,"stars":3289,"repoUrl":3290,"updatedAt":3372},"slack","interact with Slack workspaces","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3366,3367,3370],{"name":3287,"slug":3288,"type":15},{"name":3368,"slug":3369,"type":15},"Messaging","messaging",{"name":3371,"slug":3361,"type":15},"Slack","2026-07-17T06:08:27.679015",{"slug":3374,"name":3374,"fn":3375,"description":3376,"org":3377,"tags":3378,"stars":3289,"repoUrl":3290,"updatedAt":3385},"vercel-sandbox","run browser automation in Vercel Sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3379,3380,3381,3382],{"name":3284,"slug":3285,"type":15},{"name":3287,"slug":3288,"type":15},{"name":3345,"slug":3346,"type":15},{"name":3383,"slug":3384,"type":15},"Vercel","vercel","2026-07-17T06:08:28.349899",{"slug":3387,"name":3387,"fn":3388,"description":3389,"org":3390,"tags":3391,"stars":3396,"repoUrl":3397,"updatedAt":3398},"deploy-to-vercel","deploy applications to Vercel","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3392,3395],{"name":3393,"slug":3394,"type":15},"Deployment","deployment",{"name":3383,"slug":3384,"type":15},28993,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills","2026-07-17T06:08:41.18374",{"slug":3400,"name":3400,"fn":3401,"description":3402,"org":3403,"tags":3404,"stars":3396,"repoUrl":3397,"updatedAt":3410},"vercel-cli-with-tokens","manage Vercel projects via CLI","Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3405,3408,3409],{"name":3406,"slug":3407,"type":15},"CLI","cli",{"name":3393,"slug":3394,"type":15},{"name":3383,"slug":3384,"type":15},"2026-07-17T06:08:41.84179",{"slug":3412,"name":3412,"fn":3413,"description":3414,"org":3415,"tags":3416,"stars":3396,"repoUrl":3397,"updatedAt":3425},"vercel-composition-patterns","implement scalable React composition patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3417,3420,3423,3424],{"name":3418,"slug":3419,"type":15},"Best Practices","best-practices",{"name":3421,"slug":3422,"type":15},"Frontend","frontend",{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},"2026-07-17T06:05:40.576913",{"slug":3427,"name":3427,"fn":3428,"description":3429,"org":3430,"tags":3431,"stars":3396,"repoUrl":3397,"updatedAt":3440},"vercel-optimize","optimize Vercel project performance and costs","Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel\u002Fframework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3432,3435,3436,3439],{"name":3433,"slug":3434,"type":15},"Cost Optimization","cost-optimization",{"name":3393,"slug":3394,"type":15},{"name":3437,"slug":3438,"type":15},"Performance","performance",{"name":3383,"slug":3384,"type":15},"2026-07-17T06:04:08.327515",100,{"items":3443,"total":852},[3444,3459,3469,3481,3498,3508,3520],{"slug":3445,"name":3445,"fn":3446,"description":3447,"org":3448,"tags":3449,"stars":22,"repoUrl":23,"updatedAt":3458},"codegen","generate code from UI specifications","Code generation utilities for json-render. Use when generating code from UI specs, building custom code exporters, traversing specs, or serializing props for @json-render\u002Fcodegen.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3450,3453,3456],{"name":3451,"slug":3452,"type":15},"Code Generation","code-generation",{"name":3454,"slug":3455,"type":15},"Engineering","engineering",{"name":3457,"slug":2491,"type":15},"JSON","2026-07-17T06:08:34.68038",{"slug":3460,"name":3460,"fn":3461,"description":3462,"org":3463,"tags":3464,"stars":22,"repoUrl":23,"updatedAt":3468},"devtools","inspect and debug generative UI components","Drop-in inspector panel for any json-render app. Use when the user wants to debug a generative UI, inspect the spec tree, edit state at runtime, see dispatched actions, follow stream patches live, browse a catalog, or pick DOM elements to find their spec keys. Triggers include \"add devtools\", \"debug json-render\", \"inspect the spec\", \"why is this element not rendering\", \"see the state at runtime\", or requests to tap streams \u002F capture action logs for `@json-render\u002Fdevtools`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3465,3466,3467],{"name":3339,"slug":3340,"type":15},{"name":3421,"slug":3422,"type":15},{"name":20,"slug":21,"type":15},"2026-07-17T06:08:35.001228",{"slug":3470,"name":3470,"fn":3471,"description":3472,"org":3473,"tags":3474,"stars":22,"repoUrl":23,"updatedAt":3480},"directives","apply custom directives to JSON specs","Pre-built custom directives for json-render — formatting, math, string manipulation, and i18n. Use when working with @json-render\u002Fdirectives, defining custom directives with defineDirective, or adding $format, $math, $concat, $count, $truncate, $pluralize, $join, or $t to specs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3475,3476,3477,3479],{"name":3284,"slug":3285,"type":15},{"name":3421,"slug":3422,"type":15},{"name":3478,"slug":3478,"type":15},"i18n",{"name":3457,"slug":2491,"type":15},"2026-07-17T06:04:05.866831",{"slug":3482,"name":3482,"fn":3483,"description":3484,"org":3485,"tags":3486,"stars":22,"repoUrl":23,"updatedAt":3497},"image","generate images from JSON specifications","Image renderer for json-render that turns JSON specs into SVG and PNG images via Satori. Use when working with @json-render\u002Fimage, generating OG images from JSON, creating social cards, or rendering AI-generated image specs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3487,3490,3491,3494],{"name":3488,"slug":3489,"type":15},"Images","images",{"name":3457,"slug":2491,"type":15},{"name":3492,"slug":3493,"type":15},"Satori","satori",{"name":3495,"slug":3496,"type":15},"SVG","svg","2026-07-17T06:07:42.441875",{"slug":3499,"name":3499,"fn":3500,"description":3501,"org":3502,"tags":3503,"stars":22,"repoUrl":23,"updatedAt":3507},"ink","render JSON specs as terminal UIs","Ink terminal renderer for json-render that turns JSON specs into interactive terminal UIs. Use when working with @json-render\u002Fink, building terminal UIs from JSON, creating terminal component catalogs, or rendering AI-generated specs in the terminal.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3504,3505,3506],{"name":3406,"slug":3407,"type":15},{"name":3457,"slug":2491,"type":15},{"name":20,"slug":21,"type":15},"2026-07-17T06:08:28.678043",{"slug":3509,"name":3509,"fn":3510,"description":3511,"org":3512,"tags":3513,"stars":22,"repoUrl":23,"updatedAt":3519},"jotai","manage state with Jotai","Jotai adapter for json-render's StateStore interface. Use when integrating json-render with Jotai for state management via @json-render\u002Fjotai.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3514,3515,3516],{"name":3421,"slug":3422,"type":15},{"name":13,"slug":14,"type":15},{"name":3517,"slug":3518,"type":15},"State Management","state-management","2026-07-17T06:05:48.244622",{"slug":3521,"name":3521,"fn":3522,"description":3523,"org":3524,"tags":3525,"stars":22,"repoUrl":23,"updatedAt":3531},"mcp","render interactive UIs with MCP","MCP Apps integration for json-render. Use when building MCP servers that render interactive UIs in Claude, ChatGPT, Cursor, or VS Code, or when integrating json-render with the Model Context Protocol.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3526,3527,3528,3530],{"name":3421,"slug":3422,"type":15},{"name":3457,"slug":2491,"type":15},{"name":3529,"slug":3521,"type":15},"MCP",{"name":20,"slug":21,"type":15},"2026-07-17T06:05:41.274723"]