[{"data":1,"prerenderedAt":1556},["ShallowReactive",2],{"navigation":3,"/api/controls/drag-controls":470,"/api/controls/drag-controls-surround":1551},[4,22],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","1.getting-started/1.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation Guide","/getting-started/installation","1.getting-started/2.installation",{"title":15,"path":16,"stem":17},"Usage","/getting-started/usage","1.getting-started/3.usage",{"title":19,"path":20,"stem":21},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/4.upgrade-guide",{"title":23,"path":24,"stem":25,"children":26},"Api","/api","2.api",[27,30,80,114,156,190,284,310,344,394,436],{"title":28,"path":24,"stem":29},"All","2.api/index",{"title":31,"path":32,"stem":33,"children":34},"Abstractions","/api/abstractions","2.api/1.abstractions/index",[35,36,40,44,48,52,56,60,64,68,72,76],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Align","/api/abstractions/align","2.api/1.abstractions/align",{"title":41,"path":42,"stem":43},"Billboard","/api/abstractions/billboard","2.api/1.abstractions/billboard",{"title":45,"path":46,"stem":47},"Camera Shake","/api/abstractions/camera-shake","2.api/1.abstractions/camera-shake",{"title":49,"path":50,"stem":51},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":53,"path":54,"stem":55},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":57,"path":58,"stem":59},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":61,"path":62,"stem":63},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":65,"path":66,"stem":67},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":69,"path":70,"stem":71},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":73,"path":74,"stem":75},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":77,"path":78,"stem":79},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":81,"path":82,"stem":83,"children":84},"Controls","/api/controls","2.api/2.controls/index",[85,86,90,94,98,102,106,110],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":91,"path":92,"stem":93},"Drag Controls","/api/controls/drag-controls","2.api/2.controls/drag-controls",{"title":95,"path":96,"stem":97},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":99,"path":100,"stem":101},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":103,"path":104,"stem":105},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":107,"path":108,"stem":109},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":111,"path":112,"stem":113},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":115,"path":116,"stem":117,"children":118},"Loaders","/api/loaders","2.api/3.loaders/index",[119,120,124,128,132,136,140,144,148,152],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":125,"path":126,"stem":127},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":129,"path":130,"stem":131},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":133,"path":134,"stem":135},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":137,"path":138,"stem":139},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":141,"path":142,"stem":143},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":145,"path":146,"stem":147},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":149,"path":150,"stem":151},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":153,"path":154,"stem":155},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":157,"path":158,"stem":159,"children":160},"Materials","/api/materials","2.api/4.materials/index",[161,162,166,170,174,178,182,186],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":167,"path":168,"stem":169},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":171,"path":172,"stem":173},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":175,"path":176,"stem":177},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":179,"path":180,"stem":181},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":183,"path":184,"stem":185},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":187,"path":188,"stem":189},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":191,"path":192,"stem":193,"children":194},"Shapes","/api/shapes","2.api/5.shapes/index",[195,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280],{"title":191,"path":192,"stem":193},{"title":197,"path":198,"stem":199},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":201,"path":202,"stem":203},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":205,"path":206,"stem":207},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":209,"path":210,"stem":211},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":213,"path":214,"stem":215},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":217,"path":218,"stem":219},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":221,"path":222,"stem":223},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":225,"path":226,"stem":227},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":229,"path":230,"stem":231},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":233,"path":234,"stem":235},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":237,"path":238,"stem":239},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":241,"path":242,"stem":243},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":245,"path":246,"stem":247},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":249,"path":250,"stem":251},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":253,"path":254,"stem":255},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":257,"path":258,"stem":259},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":261,"path":262,"stem":263},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":265,"path":266,"stem":267},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":269,"path":270,"stem":271},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":273,"path":274,"stem":275},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":277,"path":278,"stem":279},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":281,"path":282,"stem":283},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":285,"path":286,"stem":287,"children":288},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[289,290,294,298,302,306],{"title":285,"path":286,"stem":287},{"title":291,"path":292,"stem":293},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":295,"path":296,"stem":297},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":299,"path":300,"stem":301},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":303,"path":304,"stem":305},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":307,"path":308,"stem":309},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":311,"path":312,"stem":313,"children":314},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[315,316,320,324,328,332,336,340],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":321,"path":322,"stem":323},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":325,"path":326,"stem":327},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":329,"path":330,"stem":331},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":333,"path":334,"stem":335},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":337,"path":338,"stem":339},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":341,"path":342,"stem":343},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":345,"path":346,"stem":347,"children":348},"Staging","/api/staging","2.api/8.staging/index",[349,350,354,358,362,366,370,374,378,382,386,390],{"title":345,"path":346,"stem":347},{"title":351,"path":352,"stem":353},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":355,"path":356,"stem":357},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":359,"path":360,"stem":361},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":363,"path":364,"stem":365},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":367,"path":368,"stem":369},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":371,"path":372,"stem":373},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":375,"path":376,"stem":377},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":379,"path":380,"stem":381},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":383,"path":384,"stem":385},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":387,"path":388,"stem":389},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":391,"path":392,"stem":393},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":395,"path":396,"stem":397,"children":398},"Objects","/api/objects","2.api/9.objects/index",[399,400,404,408,412,416,420,424,428,432],{"title":395,"path":396,"stem":397},{"title":401,"path":402,"stem":403},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":405,"path":406,"stem":407},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":409,"path":410,"stem":411},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":413,"path":414,"stem":415},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":417,"path":418,"stem":419},"HTML","/api/objects/html","2.api/9.objects/html",{"title":421,"path":422,"stem":423},"Image","/api/objects/image","2.api/9.objects/image",{"title":425,"path":426,"stem":427},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":429,"path":430,"stem":431},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":433,"path":434,"stem":435},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":437,"path":438,"stem":439,"children":440},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[441,442,446,450,454,458,462,466],{"title":437,"path":438,"stem":439},{"title":443,"path":444,"stem":445},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":447,"path":448,"stem":449},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":451,"path":452,"stem":453},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":455,"path":456,"stem":457},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":459,"path":460,"stem":461},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":463,"path":464,"stem":465},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":467,"path":468,"stem":469},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":471,"title":91,"body":472,"description":1545,"extension":1546,"links":1547,"meta":1548,"navigation":594,"path":92,"seo":1549,"stem":93,"__hash__":1550},"docs/2.api/2.controls/drag-controls.md",{"type":473,"value":474,"toc":1537},"minimark",[475,486,492,496,507,818,840,844,984,988,1075,1079,1084,1091,1533],[476,477,478,479,485],"p",{},"The ",[480,481,91],"a",{"href":482,"rel":483},"https://threejs.org/docs/#examples/en/controls/DragControls",[484],"nofollow"," allow you to drag and move 3D objects in your scene using pointer events. You can optionally lock movement to a single axis, set drag limits per axis, and listen to drag lifecycle events.",[487,488,489],"scene-controls-wrapper",{},[490,491],"controls-drag-controls",{},[493,494,15],"h2",{"id":495},"usage",[476,497,478,498,502,503,506],{},[499,500,501],"code",{},"objects"," prop accepts an array of ",[499,504,505],{},"Object3D"," instances. You can pass template refs directly — Vue will unwrap them automatically.",[508,509,516],"pre",{"className":510,"code":511,"highlights":512,"language":514,"meta":515,"style":515},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\nimport { shallowRef } from 'vue'\nimport { DragControls } from '@tresjs/cientos'\n\nconst boxRef = shallowRef()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[0, 7.5, 7.5]\" :look-at=\"[0, 0, 0]\" />\n    \u003CDragControls :objects=\"[boxRef]\" />\n    \u003CTresMesh ref=\"boxRef\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshStandardMaterial />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n",[513],3,"vue","",[499,517,518,538,567,589,596,614,624,629,639,650,720,747,768,779,789,799,809],{"__ignoreMap":515},[519,520,523,527,531,535],"span",{"class":521,"line":522},"line",1,[519,524,526],{"class":525},"sMK4o","\u003C",[519,528,530],{"class":529},"swJcz","script",[519,532,534],{"class":533},"spNyl"," setup",[519,536,537],{"class":525},">\n",[519,539,541,545,548,552,555,558,561,564],{"class":521,"line":540},2,[519,542,544],{"class":543},"s7zQu","import",[519,546,547],{"class":525}," {",[519,549,551],{"class":550},"sTEyZ"," shallowRef",[519,553,554],{"class":525}," }",[519,556,557],{"class":543}," from",[519,559,560],{"class":525}," '",[519,562,514],{"class":563},"sfazB",[519,565,566],{"class":525},"'\n",[519,568,571,573,575,578,580,582,584,587],{"class":569,"line":513},[521,570],"highlight",[519,572,544],{"class":543},[519,574,547],{"class":525},[519,576,577],{"class":550}," DragControls",[519,579,554],{"class":525},[519,581,557],{"class":543},[519,583,560],{"class":525},[519,585,586],{"class":563},"@tresjs/cientos",[519,588,566],{"class":525},[519,590,592],{"class":521,"line":591},4,[519,593,595],{"emptyLinePlaceholder":594},true,"\n",[519,597,599,602,605,608,611],{"class":521,"line":598},5,[519,600,601],{"class":533},"const",[519,603,604],{"class":550}," boxRef ",[519,606,607],{"class":525},"=",[519,609,551],{"class":610},"s2Zo4",[519,612,613],{"class":550},"()\n",[519,615,617,620,622],{"class":521,"line":616},6,[519,618,619],{"class":525},"\u003C/",[519,621,530],{"class":529},[519,623,537],{"class":525},[519,625,627],{"class":521,"line":626},7,[519,628,595],{"emptyLinePlaceholder":594},[519,630,632,634,637],{"class":521,"line":631},8,[519,633,526],{"class":525},[519,635,636],{"class":529},"template",[519,638,537],{"class":525},[519,640,642,645,648],{"class":521,"line":641},9,[519,643,644],{"class":525},"  \u003C",[519,646,647],{"class":529},"TresCanvas",[519,649,537],{"class":525},[519,651,653,656,659,662,665,667,670,673,677,680,683,685,687,690,692,694,697,699,701,703,705,707,709,711,713,715,717],{"class":521,"line":652},10,[519,654,655],{"class":525},"    \u003C",[519,657,658],{"class":529},"TresPerspectiveCamera",[519,660,661],{"class":525}," :",[519,663,664],{"class":533},"position",[519,666,607],{"class":525},[519,668,669],{"class":525},"\"",[519,671,672],{"class":525},"[",[519,674,676],{"class":675},"sbssI","0",[519,678,679],{"class":525},", ",[519,681,682],{"class":675},"7.5",[519,684,679],{"class":525},[519,686,682],{"class":675},[519,688,689],{"class":525},"]",[519,691,669],{"class":525},[519,693,661],{"class":525},[519,695,696],{"class":533},"look-at",[519,698,607],{"class":525},[519,700,669],{"class":525},[519,702,672],{"class":525},[519,704,676],{"class":675},[519,706,679],{"class":525},[519,708,676],{"class":675},[519,710,679],{"class":525},[519,712,676],{"class":675},[519,714,689],{"class":525},[519,716,669],{"class":525},[519,718,719],{"class":525}," />\n",[519,721,723,725,728,730,732,734,736,738,741,743,745],{"class":521,"line":722},11,[519,724,655],{"class":525},[519,726,727],{"class":529},"DragControls",[519,729,661],{"class":525},[519,731,501],{"class":533},[519,733,607],{"class":525},[519,735,669],{"class":525},[519,737,672],{"class":525},[519,739,740],{"class":550},"boxRef",[519,742,689],{"class":525},[519,744,669],{"class":525},[519,746,719],{"class":525},[519,748,750,752,755,758,760,762,764,766],{"class":521,"line":749},12,[519,751,655],{"class":525},[519,753,754],{"class":529},"TresMesh",[519,756,757],{"class":533}," ref",[519,759,607],{"class":525},[519,761,669],{"class":525},[519,763,740],{"class":563},[519,765,669],{"class":525},[519,767,537],{"class":525},[519,769,771,774,777],{"class":521,"line":770},13,[519,772,773],{"class":525},"      \u003C",[519,775,776],{"class":529},"TresBoxGeometry",[519,778,719],{"class":525},[519,780,782,784,787],{"class":521,"line":781},14,[519,783,773],{"class":525},[519,785,786],{"class":529},"TresMeshStandardMaterial",[519,788,719],{"class":525},[519,790,792,795,797],{"class":521,"line":791},15,[519,793,794],{"class":525},"    \u003C/",[519,796,754],{"class":529},[519,798,537],{"class":525},[519,800,802,805,807],{"class":521,"line":801},16,[519,803,804],{"class":525},"  \u003C/",[519,806,647],{"class":529},[519,808,537],{"class":525},[519,810,812,814,816],{"class":521,"line":811},17,[519,813,619],{"class":525},[519,815,636],{"class":529},[519,817,537],{"class":525},[819,820,821],"prose-warning",{},[476,822,823,824,831,832,835,836,839],{},"If you are using ",[519,825,827],{"style":826},"background-color:#222;padding:0.25rem;border-radius:4px;",[480,828,830],{"href":104,"style":829},"color:#f7f7f7;text-decoration:none","OrbitControls"," alongside DragControls, they will interfere with each other. Set ",[499,833,834],{},"make-default"," on ",[837,838,830],"strong",{}," to prevent conflicts while dragging.",[493,841,843],{"id":842},"props","Props",[845,846,847,864],"table",{},[848,849,850],"thead",{},[851,852,853,858,861],"tr",{},[854,855,857],"th",{"align":856},"left","Prop",[854,859,860],{"align":856},"Description",[854,862,863],{},"Default",[865,866,867,887,902,921,949,970],"tbody",{},[851,868,869,874,882],{},[870,871,872],"td",{"align":856},[837,873,501],{},[870,875,876,877,881],{"align":856},"Array of ",[480,878,505],{"href":879,"rel":880},"https://threejs.org/docs/index.html#api/en/core/Object3D",[484]," instances to make draggable.",[870,883,884],{},[499,885,886],{},"[]",[851,888,889,894,897],{},[870,890,891],{"align":856},[837,892,893],{},"camera",[870,895,896],{"align":856},"The camera used for raycasting. Defaults to the scene's active camera.",[870,898,899],{},[499,900,901],{},"undefined",[851,903,904,909,916],{},[870,905,906],{"align":856},[837,907,908],{},"enabled",[870,910,911,912,915],{"align":856},"If ",[499,913,914],{},"false",", dragging is disabled and the object snaps back to its position on each drag event.",[870,917,918],{},[499,919,920],{},"true",[851,922,923,928,945],{},[870,924,925],{"align":856},[837,926,927],{},"lock",[870,929,930,931,679,934,679,937,940,941,944],{"align":856},"Locks movement along one axis. Can be ",[499,932,933],{},"'x'",[499,935,936],{},"'y'",[499,938,939],{},"'z'",", or ",[499,942,943],{},"'none'",".",[870,946,947],{},[499,948,943],{},[851,950,951,956,966],{},[870,952,953],{"align":856},[837,954,955],{},"dragLimits",[870,957,958,959,962,963,965],{"align":856},"Per-axis position limits as ",[499,960,961],{},"[[xMin, xMax], [yMin, yMax] | undefined, [zMin, zMax] | undefined]",". Pass ",[499,964,901],{}," for axes with no limit.",[870,967,968],{},[499,969,901],{},[851,971,972,977,980],{},[870,973,974],{"align":856},[837,975,976],{},"domElement",[870,978,979],{"align":856},"The DOM element that listens for pointer events.",[870,981,982],{},[499,983,901],{},[493,985,987],{"id":986},"events","Events",[845,989,990,1002],{},[848,991,992],{},[851,993,994,997,999],{},[854,995,996],{"align":856},"Event",[854,998,860],{"align":856},[854,1000,1001],{"align":856},"Payload",[865,1003,1004,1019,1033,1047,1061],{},[851,1005,1006,1011,1014],{},[870,1007,1008],{"align":856},[837,1009,1010],{},"dragstart",[870,1012,1013],{"align":856},"Fired when the user starts dragging an object.",[870,1015,1016],{"align":856},[499,1017,1018],{},"ThreeDragControls",[851,1020,1021,1026,1029],{},[870,1022,1023],{"align":856},[837,1024,1025],{},"drag",[870,1027,1028],{"align":856},"Fired every frame while an object is being dragged.",[870,1030,1031],{"align":856},[499,1032,1018],{},[851,1034,1035,1040,1043],{},[870,1036,1037],{"align":856},[837,1038,1039],{},"dragend",[870,1041,1042],{"align":856},"Fired when the user releases a dragged object.",[870,1044,1045],{"align":856},[499,1046,1018],{},[851,1048,1049,1054,1057],{},[870,1050,1051],{"align":856},[837,1052,1053],{},"hoveron",[870,1055,1056],{"align":856},"Fired when the pointer moves over a draggable object.",[870,1058,1059],{"align":856},[499,1060,1018],{},[851,1062,1063,1068,1071],{},[870,1064,1065],{"align":856},[837,1066,1067],{},"hoveroff",[870,1069,1070],{"align":856},"Fired when the pointer leaves a draggable object.",[870,1072,1073],{"align":856},[499,1074,1018],{},[493,1076,1078],{"id":1077},"tip","Tip",[1080,1081,1083],"h3",{"id":1082},"grid-snapping","Grid snapping",[476,1085,1086,1087,1090],{},"There is no built-in snap prop, but you can implement snapping in the ",[499,1088,1089],{},"@drag"," event handler by rounding the object's position to the desired interval:",[508,1092,1094],{"className":510,"code":1093,"language":514,"meta":515,"style":515},"\u003Cscript setup>\nimport { shallowRef } from 'vue'\nimport { DragControls } from '@tresjs/cientos'\n\nconst boxRef = shallowRef()\n\nfunction onDrag() {\n  if (!boxRef.value) { return }\n  const snap = 0.5\n  boxRef.value.position.x = Math.round(boxRef.value.position.x / snap) * snap\n  boxRef.value.position.z = Math.round(boxRef.value.position.z / snap) * snap\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[0, 7.5, 7.5]\" :look-at=\"[0, 0, 0]\" />\n    \u003CDragControls :objects=\"[boxRef]\" lock=\"y\" @drag=\"onDrag\" />\n    \u003CTresMesh ref=\"boxRef\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshStandardMaterial />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n",[499,1095,1096,1106,1124,1142,1146,1158,1162,1176,1206,1220,1278,1329,1334,1342,1346,1354,1362,1418,1469,1488,1497,1506,1515,1524],{"__ignoreMap":515},[519,1097,1098,1100,1102,1104],{"class":521,"line":522},[519,1099,526],{"class":525},[519,1101,530],{"class":529},[519,1103,534],{"class":533},[519,1105,537],{"class":525},[519,1107,1108,1110,1112,1114,1116,1118,1120,1122],{"class":521,"line":540},[519,1109,544],{"class":543},[519,1111,547],{"class":525},[519,1113,551],{"class":550},[519,1115,554],{"class":525},[519,1117,557],{"class":543},[519,1119,560],{"class":525},[519,1121,514],{"class":563},[519,1123,566],{"class":525},[519,1125,1126,1128,1130,1132,1134,1136,1138,1140],{"class":521,"line":513},[519,1127,544],{"class":543},[519,1129,547],{"class":525},[519,1131,577],{"class":550},[519,1133,554],{"class":525},[519,1135,557],{"class":543},[519,1137,560],{"class":525},[519,1139,586],{"class":563},[519,1141,566],{"class":525},[519,1143,1144],{"class":521,"line":591},[519,1145,595],{"emptyLinePlaceholder":594},[519,1147,1148,1150,1152,1154,1156],{"class":521,"line":598},[519,1149,601],{"class":533},[519,1151,604],{"class":550},[519,1153,607],{"class":525},[519,1155,551],{"class":610},[519,1157,613],{"class":550},[519,1159,1160],{"class":521,"line":616},[519,1161,595],{"emptyLinePlaceholder":594},[519,1163,1164,1167,1170,1173],{"class":521,"line":626},[519,1165,1166],{"class":533},"function",[519,1168,1169],{"class":610}," onDrag",[519,1171,1172],{"class":525},"()",[519,1174,1175],{"class":525}," {\n",[519,1177,1178,1181,1184,1187,1189,1191,1194,1197,1200,1203],{"class":521,"line":631},[519,1179,1180],{"class":543},"  if",[519,1182,1183],{"class":529}," (",[519,1185,1186],{"class":525},"!",[519,1188,740],{"class":550},[519,1190,944],{"class":525},[519,1192,1193],{"class":550},"value",[519,1195,1196],{"class":529},") ",[519,1198,1199],{"class":525},"{",[519,1201,1202],{"class":543}," return",[519,1204,1205],{"class":525}," }\n",[519,1207,1208,1211,1214,1217],{"class":521,"line":641},[519,1209,1210],{"class":533},"  const",[519,1212,1213],{"class":550}," snap",[519,1215,1216],{"class":525}," =",[519,1218,1219],{"class":675}," 0.5\n",[519,1221,1222,1225,1227,1229,1231,1233,1235,1238,1240,1243,1245,1248,1251,1253,1255,1257,1259,1261,1263,1265,1268,1270,1272,1275],{"class":521,"line":652},[519,1223,1224],{"class":550},"  boxRef",[519,1226,944],{"class":525},[519,1228,1193],{"class":550},[519,1230,944],{"class":525},[519,1232,664],{"class":550},[519,1234,944],{"class":525},[519,1236,1237],{"class":550},"x",[519,1239,1216],{"class":525},[519,1241,1242],{"class":550}," Math",[519,1244,944],{"class":525},[519,1246,1247],{"class":610},"round",[519,1249,1250],{"class":529},"(",[519,1252,740],{"class":550},[519,1254,944],{"class":525},[519,1256,1193],{"class":550},[519,1258,944],{"class":525},[519,1260,664],{"class":550},[519,1262,944],{"class":525},[519,1264,1237],{"class":550},[519,1266,1267],{"class":525}," /",[519,1269,1213],{"class":550},[519,1271,1196],{"class":529},[519,1273,1274],{"class":525},"*",[519,1276,1277],{"class":550}," snap\n",[519,1279,1280,1282,1284,1286,1288,1290,1292,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327],{"class":521,"line":722},[519,1281,1224],{"class":550},[519,1283,944],{"class":525},[519,1285,1193],{"class":550},[519,1287,944],{"class":525},[519,1289,664],{"class":550},[519,1291,944],{"class":525},[519,1293,1294],{"class":550},"z",[519,1296,1216],{"class":525},[519,1298,1242],{"class":550},[519,1300,944],{"class":525},[519,1302,1247],{"class":610},[519,1304,1250],{"class":529},[519,1306,740],{"class":550},[519,1308,944],{"class":525},[519,1310,1193],{"class":550},[519,1312,944],{"class":525},[519,1314,664],{"class":550},[519,1316,944],{"class":525},[519,1318,1294],{"class":550},[519,1320,1267],{"class":525},[519,1322,1213],{"class":550},[519,1324,1196],{"class":529},[519,1326,1274],{"class":525},[519,1328,1277],{"class":550},[519,1330,1331],{"class":521,"line":749},[519,1332,1333],{"class":525},"}\n",[519,1335,1336,1338,1340],{"class":521,"line":770},[519,1337,619],{"class":525},[519,1339,530],{"class":529},[519,1341,537],{"class":525},[519,1343,1344],{"class":521,"line":781},[519,1345,595],{"emptyLinePlaceholder":594},[519,1347,1348,1350,1352],{"class":521,"line":791},[519,1349,526],{"class":525},[519,1351,636],{"class":529},[519,1353,537],{"class":525},[519,1355,1356,1358,1360],{"class":521,"line":801},[519,1357,644],{"class":525},[519,1359,647],{"class":529},[519,1361,537],{"class":525},[519,1363,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416],{"class":521,"line":811},[519,1365,655],{"class":525},[519,1367,658],{"class":529},[519,1369,661],{"class":525},[519,1371,664],{"class":533},[519,1373,607],{"class":525},[519,1375,669],{"class":525},[519,1377,672],{"class":525},[519,1379,676],{"class":675},[519,1381,679],{"class":525},[519,1383,682],{"class":675},[519,1385,679],{"class":525},[519,1387,682],{"class":675},[519,1389,689],{"class":525},[519,1391,669],{"class":525},[519,1393,661],{"class":525},[519,1395,696],{"class":533},[519,1397,607],{"class":525},[519,1399,669],{"class":525},[519,1401,672],{"class":525},[519,1403,676],{"class":675},[519,1405,679],{"class":525},[519,1407,676],{"class":675},[519,1409,679],{"class":525},[519,1411,676],{"class":675},[519,1413,689],{"class":525},[519,1415,669],{"class":525},[519,1417,719],{"class":525},[519,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1444,1446,1448,1451,1453,1456,1458,1460,1462,1465,1467],{"class":521,"line":1420},18,[519,1422,655],{"class":525},[519,1424,727],{"class":529},[519,1426,661],{"class":525},[519,1428,501],{"class":533},[519,1430,607],{"class":525},[519,1432,669],{"class":525},[519,1434,672],{"class":525},[519,1436,740],{"class":550},[519,1438,689],{"class":525},[519,1440,669],{"class":525},[519,1442,1443],{"class":533}," lock",[519,1445,607],{"class":525},[519,1447,669],{"class":525},[519,1449,1450],{"class":563},"y",[519,1452,669],{"class":525},[519,1454,1455],{"class":525}," @",[519,1457,1025],{"class":533},[519,1459,607],{"class":525},[519,1461,669],{"class":525},[519,1463,1464],{"class":550},"onDrag",[519,1466,669],{"class":525},[519,1468,719],{"class":525},[519,1470,1472,1474,1476,1478,1480,1482,1484,1486],{"class":521,"line":1471},19,[519,1473,655],{"class":525},[519,1475,754],{"class":529},[519,1477,757],{"class":533},[519,1479,607],{"class":525},[519,1481,669],{"class":525},[519,1483,740],{"class":563},[519,1485,669],{"class":525},[519,1487,537],{"class":525},[519,1489,1491,1493,1495],{"class":521,"line":1490},20,[519,1492,773],{"class":525},[519,1494,776],{"class":529},[519,1496,719],{"class":525},[519,1498,1500,1502,1504],{"class":521,"line":1499},21,[519,1501,773],{"class":525},[519,1503,786],{"class":529},[519,1505,719],{"class":525},[519,1507,1509,1511,1513],{"class":521,"line":1508},22,[519,1510,794],{"class":525},[519,1512,754],{"class":529},[519,1514,537],{"class":525},[519,1516,1518,1520,1522],{"class":521,"line":1517},23,[519,1519,804],{"class":525},[519,1521,647],{"class":529},[519,1523,537],{"class":525},[519,1525,1527,1529,1531],{"class":521,"line":1526},24,[519,1528,619],{"class":525},[519,1530,636],{"class":529},[519,1532,537],{"class":525},[1534,1535,1536],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":515,"searchDepth":522,"depth":540,"links":1538},[1539,1540,1541,1542],{"id":495,"depth":540,"text":15},{"id":842,"depth":540,"text":843},{"id":986,"depth":540,"text":987},{"id":1077,"depth":540,"text":1078,"children":1543},[1544],{"id":1082,"depth":513,"text":1083},"Drag and drop 3D objects in your scene with pointer events","md",null,{},{"title":91,"description":1545},"2YxxXzKJu1_5kZGn6XdE3ytdSIwn16e75priishcGeA",[1552,1554],{"title":87,"path":88,"stem":89,"description":1553,"children":-1},"Is similar to OrbitControls yet supports smooth transitions and more features.",{"title":95,"path":96,"stem":97,"description":1555,"children":-1},"WASD on QWERTY keyboards or equivalent keys on non-QWERTY keyboards",1776202090762]