vuer 0.0.49__py3-none-any.whl → 0.0.50__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vuer might be problematic. Click here for more details.
- vuer/__pycache__/__init__.cpython-39.pyc +0 -0
- vuer/__pycache__/base.cpython-39.pyc +0 -0
- vuer/__pycache__/events.cpython-39.pyc +0 -0
- vuer/__pycache__/serdes.cpython-39.pyc +0 -0
- vuer/__pycache__/server.cpython-39.pyc +0 -0
- vuer/__pycache__/types.cpython-39.pyc +0 -0
- vuer/client_build/404.html +1 -1
- vuer/client_build/assets/chunks/chunk-Bm8teWZD.js +7734 -0
- vuer/client_build/assets/chunks/chunk-Bm8teWZD.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-DEEIqcqV.js +102 -0
- vuer/client_build/assets/chunks/chunk-DEEIqcqV.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-F9PTxH3Y.js +3 -0
- vuer/client_build/assets/chunks/chunk-F9PTxH3Y.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-N_iRFAvl.js +8555 -0
- vuer/client_build/assets/chunks/chunk-N_iRFAvl.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-p1qjqNL8.js +283 -0
- vuer/client_build/assets/chunks/chunk-p1qjqNL8.js.map +1 -0
- vuer/client_build/assets/entries/entry-client-routing.PaStComK.js +5 -0
- vuer/client_build/assets/entries/entry-client-routing.PaStComK.js.map +1 -0
- vuer/client_build/assets/entries/pages_editor.CNudNU59.js +2 -0
- vuer/client_build/assets/entries/pages_editor.CNudNU59.js.map +1 -0
- vuer/client_build/assets/entries/pages_index.BCFjFkWa.js +2 -0
- vuer/client_build/assets/entries/pages_index.BCFjFkWa.js.map +1 -0
- vuer/client_build/assets/entries/pages_simple.Bea-CbV9.js +2 -0
- vuer/client_build/assets/entries/pages_simple.Bea-CbV9.js.map +1 -0
- vuer/client_build/editor/index.html +4 -4
- vuer/client_build/index.html +4 -4
- vuer/client_build/simple/index.html +3 -3
- vuer/schemas/__pycache__/__init__.cpython-39.pyc +0 -0
- vuer/schemas/__pycache__/drei_components.cpython-39.pyc +0 -0
- vuer/schemas/__pycache__/html_components.cpython-39.pyc +0 -0
- vuer/schemas/__pycache__/physics_components.cpython-39.pyc +0 -0
- vuer/schemas/__pycache__/scene_components.cpython-39.pyc +0 -0
- vuer/schemas/__pycache__/vuer_components.cpython-39.pyc +0 -0
- vuer/schemas/scene_components.py +162 -0
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info}/METADATA +20 -15
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info}/RECORD +41 -11
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info}/WHEEL +1 -1
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info}/entry_points.txt +0 -0
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info/licenses}/LICENSE +0 -0
- {vuer-0.0.49.dist-info → vuer-0.0.50.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{R as H,d as L,J as B,r as l,j as s,H as K,i as q,a as X,b as k,c as J}from"../chunks/chunk-WT4fnZC5.js";import{V as W,T as Z,F as G,L as Q,Z as Y,l as v,y as ee,a as re,C as g,P as te,x as ne,s as ae,b as se,_ as ie,D as x,c as j,e as w,O as S,v as F,d as b,f as E,g as oe,h as T,i as A,j as O,w as de,k as fe}from"../chunks/chunk-Bm8teWZD.js";import{X as ce,D as le}from"../chunks/chunk-p1qjqNL8.js";import"../chunks/chunk-D7HrI6pR.js";const R="%[a-f0-9]{2}",D=new RegExp("("+R+")|([^%]+?)","gi"),U=new RegExp("("+R+")+","gi");function m(e,r){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;r=r||1;const t=e.slice(0,r),n=e.slice(r);return Array.prototype.concat.call([],m(t),m(n))}function ue(e){try{return decodeURIComponent(e)}catch{let r=e.match(D)||[];for(let t=1;t<r.length;t++)e=m(r,t).join(""),r=e.match(D)||[];return e}}function me(e){const r={"%FE%FF":"��","%FF%FE":"��"};let t=U.exec(e);for(;t;){try{r[t[0]]=decodeURIComponent(t[0])}catch{const a=ue(t[0]);a!==t[0]&&(r[t[0]]=a)}t=U.exec(e)}r["%C2"]="�";const n=Object.keys(r);for(const a of n)e=e.replace(new RegExp(a,"g"),r[a]);return e}function ye(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return decodeURIComponent(e)}catch{return me(e)}}function he(e,r){const t={};if(Array.isArray(r))for(const n of r){const a=Object.getOwnPropertyDescriptor(e,n);a!=null&&a.enumerable&&Object.defineProperty(t,n,a)}else for(const n of Reflect.ownKeys(e)){const a=Object.getOwnPropertyDescriptor(e,n);if(a.enumerable){const o=e[n];r(n,o,e)&&Object.defineProperty(t,n,a)}}return t}function C(e,r){if(!(typeof e=="string"&&typeof r=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e===""||r==="")return[];const t=e.indexOf(r);return t===-1?[]:[e.slice(0,t),e.slice(t+r.length)]}const pe=e=>e==null,ge=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,r=>`%${r.charCodeAt(0).toString(16).toUpperCase()}`),y=Symbol("encodeFragmentIdentifier");function xe(e){switch(e.arrayFormat){case"index":return r=>(t,n)=>{const a=t.length;return n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?t:n===null?[...t,[f(r,e),"[",a,"]"].join("")]:[...t,[f(r,e),"[",f(a,e),"]=",f(n,e)].join("")]};case"bracket":return r=>(t,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?t:n===null?[...t,[f(r,e),"[]"].join("")]:[...t,[f(r,e),"[]=",f(n,e)].join("")];case"colon-list-separator":return r=>(t,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?t:n===null?[...t,[f(r,e),":list="].join("")]:[...t,[f(r,e),":list=",f(n,e)].join("")];case"comma":case"separator":case"bracket-separator":{const r=e.arrayFormat==="bracket-separator"?"[]=":"=";return t=>(n,a)=>a===void 0||e.skipNull&&a===null||e.skipEmptyString&&a===""?n:(a=a===null?"":a,n.length===0?[[f(t,e),r,f(a,e)].join("")]:[[n,f(a,e)].join(e.arrayFormatSeparator)])}default:return r=>(t,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?t:n===null?[...t,f(r,e)]:[...t,[f(r,e),"=",f(n,e)].join("")]}}function je(e){let r;switch(e.arrayFormat){case"index":return(t,n,a)=>{if(r=/\[(\d*)]$/.exec(t),t=t.replace(/\[\d*]$/,""),!r){a[t]=n;return}a[t]===void 0&&(a[t]={}),a[t][r[1]]=n};case"bracket":return(t,n,a)=>{if(r=/(\[])$/.exec(t),t=t.replace(/\[]$/,""),!r){a[t]=n;return}if(a[t]===void 0){a[t]=[n];return}a[t]=[...a[t],n]};case"colon-list-separator":return(t,n,a)=>{if(r=/(:list)$/.exec(t),t=t.replace(/:list$/,""),!r){a[t]=n;return}if(a[t]===void 0){a[t]=[n];return}a[t]=[...a[t],n]};case"comma":case"separator":return(t,n,a)=>{const o=typeof n=="string"&&n.includes(e.arrayFormatSeparator),i=typeof n=="string"&&!o&&c(n,e).includes(e.arrayFormatSeparator);n=i?c(n,e):n;const d=o||i?n.split(e.arrayFormatSeparator).map(u=>c(u,e)):n===null?n:c(n,e);a[t]=d};case"bracket-separator":return(t,n,a)=>{const o=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!o){a[t]=n&&c(n,e);return}const i=n===null?[]:c(n,e).split(e.arrayFormatSeparator);if(a[t]===void 0){a[t]=i;return}a[t]=[...a[t],...i]};default:return(t,n,a)=>{if(a[t]===void 0){a[t]=n;return}a[t]=[...[a[t]].flat(),n]}}}function N(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function f(e,r){return r.encode?r.strict?ge(e):encodeURIComponent(e):e}function c(e,r){return r.decode?ye(e):e}function V(e){return Array.isArray(e)?e.sort():typeof e=="object"?V(Object.keys(e)).sort((r,t)=>Number(r)-Number(t)).map(r=>e[r]):e}function I(e){const r=e.indexOf("#");return r!==-1&&(e=e.slice(0,r)),e}function we(e){let r="";const t=e.indexOf("#");return t!==-1&&(r=e.slice(t)),r}function P(e,r,t){return t==="string"&&typeof e=="string"?e:typeof t=="function"&&typeof e=="string"?t(e):r.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")?e.toLowerCase()==="true":t==="number"&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""||r.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?Number(e):e}function h(e){e=I(e);const r=e.indexOf("?");return r===-1?"":e.slice(r+1)}function p(e,r){r={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...r},N(r.arrayFormatSeparator);const t=je(r),n=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return n;for(const a of e.split("&")){if(a==="")continue;const o=r.decode?a.replaceAll("+"," "):a;let[i,d]=C(o,"=");i===void 0&&(i=o),d=d===void 0?null:["comma","separator","bracket-separator"].includes(r.arrayFormat)?d:c(d,r),t(c(i,r),d,n)}for(const[a,o]of Object.entries(n))if(typeof o=="object"&&o!==null&&r.types[a]!=="string")for(const[i,d]of Object.entries(o)){const u=r.types[a]?r.types[a].replace("[]",""):void 0;o[i]=P(d,r,u)}else typeof o=="object"&&o!==null&&r.types[a]==="string"?n[a]=Object.values(o).join(r.arrayFormatSeparator):n[a]=P(o,r,r.types[a]);return r.sort===!1?n:(r.sort===!0?Object.keys(n).sort():Object.keys(n).sort(r.sort)).reduce((a,o)=>{const i=n[o];return a[o]=i&&typeof i=="object"&&!Array.isArray(i)?V(i):i,a},Object.create(null))}function M(e,r){if(!e)return"";r={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...r},N(r.arrayFormatSeparator);const t=i=>r.skipNull&&pe(e[i])||r.skipEmptyString&&e[i]==="",n=xe(r),a={};for(const[i,d]of Object.entries(e))t(i)||(a[i]=d);const o=Object.keys(a);return r.sort!==!1&&o.sort(r.sort),o.map(i=>{const d=e[i];return d===void 0?"":d===null?f(i,r):Array.isArray(d)?d.length===0&&r.arrayFormat==="bracket-separator"?f(i,r)+"[]":d.reduce(n(i),[]).join("&"):f(i,r)+"="+f(d,r)}).filter(i=>i.length>0).join("&")}function z(e,r){var a;r={decode:!0,...r};let[t,n]=C(e,"#");return t===void 0&&(t=e),{url:((a=t==null?void 0:t.split("?"))==null?void 0:a[0])??"",query:p(h(e),r),...r&&r.parseFragmentIdentifier&&n?{fragmentIdentifier:c(n,r)}:{}}}function _(e,r){r={encode:!0,strict:!0,[y]:!0,...r};const t=I(e.url).split("?")[0]||"",n=h(e.url),a={...p(n,{sort:!1}),...e.query};let o=M(a,r);o&&(o=`?${o}`);let i=we(e.url);if(typeof e.fragmentIdentifier=="string"){const d=new URL(t);d.hash=e.fragmentIdentifier,i=r[y]?d.hash:`#${e.fragmentIdentifier}`}return`${t}${o}${i}`}function $(e,r,t){t={parseFragmentIdentifier:!0,[y]:!1,...t};const{url:n,query:a,fragmentIdentifier:o}=z(e,t);return _({url:n,query:he(a,r),fragmentIdentifier:o},t)}function Se(e,r,t){const n=Array.isArray(r)?a=>!r.includes(a):(a,o)=>!r(a,o);return $(e,n,t)}const Fe=Object.freeze(Object.defineProperty({__proto__:null,exclude:Se,extract:h,parse:p,parseUrl:z,pick:$,stringify:M,stringifyUrl:_},Symbol.toStringTag,{value:"Module"}));typeof window<"u"&&(window.React=H,window.ReactDOM=L,window.VUER=W,window.THREE=Z,window.JSX=B,window.FIBER=G,window.XR=ce,window.Drei=le,window.LEVA=Q,window.ZUSTAND=Y);function be(){const e=ae(),{downlink:r}=se();l.useEffect(()=>{if(!e)return;const n=[r.subscribe("SET",e.addKeyFrame),r.subscribe("ADD",e.addKeyFrame),r.subscribe("UPDATE",e.addKeyFrame),r.subscribe("UPSERT",e.addKeyFrame),r.subscribe("REMOVE",e.addKeyFrame)];return()=>{n.forEach(a=>a())}},[e,r]);const t=l.useMemo(()=>e!=null&&e.store?new ie(r,e.store):r,[r,e==null?void 0:e.store]);return e?s.jsxs(oe,{offset:200,minOffset:48,hidden:!0,style:{width:"100%",height:"100%"},children:[s.jsx(x,{stream:t,prompt:"scene files supported: *.urdf *.pcd *.ply *.splat",style:{display:"flex",flexDirection:"row"},innerStyle:{display:"flex",flexDirection:"row"},children:s.jsx(j,{frameloop:"always",stream:t,bgChildren:[s.jsx(S,{_key:"default-grid"},"default-grid"),s.jsx(F,{},"default-light-stage"),s.jsx(b,{fps:30,stream:!0},"default-hands"),s.jsx(E,{fps:30,stream:!0},"motion-controllers")],children:s.jsx(w,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.45",main:"dist/index.umd.js",dependencies:["VUER","LEVA","FIBER"]})})}),s.jsx(s.Fragment,{children:s.jsx(T,{children:s.jsxs(A,{children:[s.jsx(O,{}),s.jsx(de,{children:s.jsx(fe,{})})]})})}),s.jsx(T,{children:s.jsx(A,{children:s.jsx(O,{})})})]}):s.jsx(x,{stream:t,style:{display:"flex",flexDirection:"row"},innerStyle:{display:"flex",flexDirection:"row"},children:s.jsx(j,{frameloop:"always",stream:r,bgChildren:[s.jsx(S,{_key:"grid"},"grid"),s.jsx(F,{},"default-light-stage"),s.jsx(b,{fps:30,stream:!0},"hands"),s.jsx(E,{fps:30,stream:!0},"motion-controllers")],children:s.jsx(w,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.45",main:"dist/index.umd.js"})})})}function Ee(){const e=g(({children:t})=>t),r=g(({ops:t})=>t);return s.jsxs(te,{vertical:!0,offset:-200,hidden:!0,children:[s.jsx(be,{}),s.jsx(ne,{title:"Scene Graph",nodes:e,sceneOps:r})]})}function Te(){const e=typeof window>"u";if(e)return null;const r=l.useMemo(()=>{const n=Fe.parse(window.document.location.search);return typeof n.collapseMenu=="string"&&(n.collapseMenu=n.collapseMenu.toLowerCase()),n},[]),t=l.useMemo(()=>r.collapseMenu==="true",[r.collapseMenu]);return s.jsxs(s.Fragment,{children:[s.jsx(K,{children:s.jsx("title",{children:"Vuer Editor"})}),s.jsxs("main",{children:[s.jsx(v,{children:e?null:s.jsx(ee,{children:s.jsx(Ee,{})})}),s.jsx(re,{theme:{sizes:{rootWidth:"380px",controlWidth:"200px",numberInputMinWidth:"56px"}},collapsed:t})]})]})}const Ae=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"})),Re={onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},hydrationCanBeAborted:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hydrationCanBeAborted"]},valueSerialized:{type:"js-serialized",value:!0}},hooksTimeout:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hooksTimeout"]},valueSerialized:{type:"js-serialized",value:{data:{error:3e4,warning:1e4}}}},onHydrationEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onHydrationEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:J}},onPageTransitionEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:k}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:X}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onRenderClient.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:q}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/editor/+Page.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Ae}}};export{Re as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_editor.CNudNU59.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_editor.CNudNU59.js","sources":["../../../../node_modules/decode-uri-component/index.js","../../../../node_modules/filter-obj/index.js","../../../../node_modules/split-on-first/index.js","../../../../node_modules/query-string/base.js","../../../../pages/editor/+Page.tsx"],"sourcesContent":["const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import { Helmet } from '@vuer-ai/react-helmet-async';\nimport './index.scss';\nimport * as VUER from '@vuer-ai/vuer';\nimport {\n Combine,\n ContribLoader,\n GraphView,\n Grid,\n Hands,\n HemisphereLightStage, MotionControllers,\n PlaybackBar,\n PlaybackProvider,\n PlaybackStateProvider,\n QueryParams,\n Resizable,\n ResizableSwitch,\n SceneContainer,\n SceneFileDropContainer,\n Timeline,\n TimelineFileDrop,\n TimelineStateProvider,\n usePlayback,\n useSceneStore,\n useSocket,\n WebSocketProvider,\n} from '@vuer-ai/vuer';\nimport * as LEVA from 'leva';\nimport { Leva } from 'leva';\n\n/** inject globals for plugins */\nimport React, { useEffect, useMemo } from 'react';\nimport * as FIBER from '@react-three/fiber';\nimport * as ReactDOM from 'react-dom';\nimport * as THREE from 'three';\nimport * as JSX from 'react/jsx-runtime';\nimport * as Drei from '@react-three/drei';\nimport * as XR from '@react-three/xr';\nimport * as ZUSTAND from 'zustand';\n\nimport queryString from 'query-string';\n\n// import * as mujoco from '@vuer-ai/mujoco-ts';\n// console.log(mujoco);\n\ndeclare global {\n interface Window {\n React: typeof React;\n ReactDOM: typeof ReactDOM;\n VUER: typeof VUER;\n THREE: typeof THREE;\n JSX: typeof JSX;\n FIBER: typeof FIBER;\n XR: typeof XR;\n Drei: typeof Drei;\n LEVA: typeof LEVA;\n ZUSTAND: typeof ZUSTAND;\n }\n}\n\nif (typeof window !== 'undefined') {\n window.React = React;\n window.ReactDOM = ReactDOM;\n window.VUER = VUER;\n window.THREE = THREE;\n window.JSX = JSX;\n window.FIBER = FIBER;\n window.XR = XR;\n window.Drei = Drei;\n window.LEVA = LEVA;\n window.ZUSTAND = ZUSTAND;\n}\n\nfunction VuerPlayback() {\n\n const playback = usePlayback();\n const { downlink } = useSocket();\n\n useEffect(() => {\n if (!playback) return;\n const cancel = [\n downlink.subscribe('SET', playback.addKeyFrame),\n downlink.subscribe('ADD', playback.addKeyFrame),\n downlink.subscribe('UPDATE', playback.addKeyFrame),\n downlink.subscribe('UPSERT', playback.addKeyFrame),\n downlink.subscribe('REMOVE', playback.addKeyFrame),\n ];\n\n return () => {\n cancel.forEach((f) => f());\n };\n }, [playback, downlink]);\n\n const combinedStream = useMemo(() => {\n if (!playback?.store) return downlink;\n return new Combine(downlink, playback.store);\n }, [downlink, playback?.store]);\n\n if (!playback) {\n return (\n <SceneFileDropContainer\n stream={combinedStream}\n style={{\n display: 'flex',\n flexDirection: 'row',\n }}\n innerStyle={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <SceneContainer\n frameloop=\"always\"\n stream={downlink}\n bgChildren={[\n <Grid key=\"grid\" _key=\"grid\" />,\n <HemisphereLightStage key=\"default-light-stage\" />,\n <Hands key=\"hands\" fps={30} stream />,\n <MotionControllers key=\"motion-controllers\" fps={30} stream />,\n ]}\n >\n <ContribLoader\n _key=\"contrib-loader-mujoco\"\n // prodOnly\n library=\"@vuer-ai/mujoco-ts\"\n version=\"0.0.45\"\n main=\"dist/index.umd.js\"\n />\n </SceneContainer>\n </SceneFileDropContainer>\n );\n } else\n return (\n <ResizableSwitch\n offset={200}\n minOffset={48}\n hidden={true}\n style={{\n width: '100%',\n height: '100%',\n }}\n >\n <SceneFileDropContainer\n stream={combinedStream}\n prompt={'scene files supported: *.urdf *.pcd *.ply *.splat'}\n style={{\n display: 'flex',\n flexDirection: 'row',\n }}\n innerStyle={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <SceneContainer\n frameloop=\"always\"\n stream={combinedStream}\n bgChildren={[\n <Grid key=\"default-grid\" _key=\"default-grid\" />,\n <HemisphereLightStage key=\"default-light-stage\" />,\n <Hands key=\"default-hands\" fps={30} stream />,\n <MotionControllers key=\"motion-controllers\" fps={30} stream />,\n ]}\n >\n <ContribLoader\n _key=\"contrib-loader-mujoco\"\n // prodOnly // disable to allow vuer-py self-hosted version.\n // dev\n library=\"@vuer-ai/mujoco-ts\"\n version=\"0.0.45\"\n main=\"dist/index.umd.js\"\n dependencies={[\"VUER\", \"LEVA\", \"FIBER\"]}\n />\n </SceneContainer>\n </SceneFileDropContainer>\n <>\n <PlaybackStateProvider>\n <TimelineStateProvider>\n <PlaybackBar />\n <TimelineFileDrop>\n <Timeline />\n {/*{clips.map((clip, i)=>{*/}\n {/* return <Clip {...clip} onDrag onSelectStart onSelectEnd/>*/}\n {/*})}*/}\n </TimelineFileDrop>\n </TimelineStateProvider>\n </PlaybackStateProvider>\n </>\n <PlaybackStateProvider>\n <TimelineStateProvider>\n <PlaybackBar />\n </TimelineStateProvider>\n </PlaybackStateProvider>\n </ResizableSwitch>\n );\n}\n\nfunction SidePanelView() {\n // this is excessive. triggers when position/rotation changes too.\n // const scene = useSceneStore(({ children, bgChildren, rawChildren }) =>\n // ({ children, bgChildren, rawChildren }));\n const children = useSceneStore(({ children }) => children);\n const sceneOps = useSceneStore(({ ops }) => ops);\n // return <VuerPlayback />;\n\n return (\n <Resizable vertical offset={-200} hidden={true}>\n <VuerPlayback />\n <GraphView title=\"Scene Graph\" nodes={children} sceneOps={sceneOps} />\n </Resizable>\n );\n}\n\nexport default function Page() {\n const isSSR = typeof window === 'undefined';\n\n if (isSSR) return null;\n\n const queries = useMemo<QueryParams>(() => {\n const parsed = queryString.parse(window.document.location.search) as QueryParams;\n if (typeof parsed.collapseMenu === 'string')\n parsed.collapseMenu = parsed.collapseMenu.toLowerCase();\n return parsed;\n }, []);\n\n const collapseMenu = useMemo<boolean>(\n () => queries.collapseMenu === 'true',\n [queries.collapseMenu],\n );\n\n return (\n <>\n <Helmet>\n <title>Vuer Editor</title>\n </Helmet>\n <main>\n <PlaybackProvider>\n {isSSR ? null : (\n <WebSocketProvider>\n {/*<VuerPlayback />*/}\n <SidePanelView />\n </WebSocketProvider>\n )}\n </PlaybackProvider>\n <Leva\n theme={{\n sizes: {\n rootWidth: '380px',\n controlWidth: '200px',\n numberInputMinWidth: '56px',\n },\n }}\n collapsed={collapseMenu}\n />\n </main>\n </>\n );\n}\n"],"names":["token","singleMatcher","multiMatcher","decodeComponents","components","split","left","right","decode","input","tokens","i","customDecodeURIComponent","replaceMap","match","result","entries","key","decodeUriComponent","encodedURI","includeKeys","object","predicate","descriptor","value","splitOnFirst","string","separator","separatorIndex","isNullOrUndefined","strictUriEncode","x","encodeFragmentIdentifier","encoderForArrayFormat","options","index","encode","keyValueSeparator","parserForArrayFormat","accumulator","isArray","isEncodedArray","newValue","item","arrayValue","validateArrayFormatSeparator","decodeComponent","keysSorter","a","b","removeHash","hashStart","getHash","url","hash","parseValue","type","extract","queryStart","parse","query","formatter","returnValue","parameter","parameter_","key2","value2","stringify","shouldFilter","objectCopy","keys","parseUrl","url_","_a","stringifyUrl","queryFromUrl","queryString","urlObjectForFragmentEncode","pick","filter","fragmentIdentifier","exclude","exclusionFilter","React","ReactDOM","VUER","THREE","JSX","FIBER","XR","Drei","LEVA","ZUSTAND","VuerPlayback","playback","usePlayback","downlink","useSocket","useEffect","cancel","f","combinedStream","useMemo","Combine","jsxs","ResizableSwitch","jsx","SceneFileDropContainer","SceneContainer","Grid","HemisphereLightStage","Hands","MotionControllers","ContribLoader","Fragment","PlaybackStateProvider","TimelineStateProvider","PlaybackBar","TimelineFileDrop","Timeline","SidePanelView","children","useSceneStore","sceneOps","ops","Resizable","GraphView","Page","isSSR","queries","parsed","collapseMenu","Helmet","PlaybackProvider","WebSocketProvider","Leva"],"mappings":"4bAAA,MAAMA,EAAQ,eACRC,EAAgB,IAAI,OAAO,IAAMD,EAAQ,aAAc,IAAI,EAC3DE,EAAe,IAAI,OAAO,IAAMF,EAAQ,KAAM,IAAI,EAExD,SAASG,EAAiBC,EAAYC,EAAO,CAC5C,GAAI,CAEH,MAAO,CAAC,mBAAmBD,EAAW,KAAK,EAAE,CAAC,CAAC,CACjD,MAAS,CAET,CAEC,GAAIA,EAAW,SAAW,EACzB,OAAOA,EAGRC,EAAQA,GAAS,EAGjB,MAAMC,EAAOF,EAAW,MAAM,EAAGC,CAAK,EAChCE,EAAQH,EAAW,MAAMC,CAAK,EAEpC,OAAO,MAAM,UAAU,OAAO,KAAK,CAAA,EAAIF,EAAiBG,CAAI,EAAGH,EAAiBI,CAAK,CAAC,CACvF,CAEA,SAASC,GAAOC,EAAO,CACtB,GAAI,CACH,OAAO,mBAAmBA,CAAK,CACjC,MAAS,CACP,IAAIC,EAASD,EAAM,MAAMR,CAAa,GAAK,CAAE,EAE7C,QAASU,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAClCF,EAAQN,EAAiBO,EAAQC,CAAC,EAAE,KAAK,EAAE,EAE3CD,EAASD,EAAM,MAAMR,CAAa,GAAK,CAAE,EAG1C,OAAOQ,CACT,CACA,CAEA,SAASG,GAAyBH,EAAO,CAExC,MAAMI,EAAa,CAClB,SAAU,KACV,SAAU,IACV,EAED,IAAIC,EAAQZ,EAAa,KAAKO,CAAK,EACnC,KAAOK,GAAO,CACb,GAAI,CAEHD,EAAWC,EAAM,CAAC,CAAC,EAAI,mBAAmBA,EAAM,CAAC,CAAC,CACrD,MAAU,CACP,MAAMC,EAASP,GAAOM,EAAM,CAAC,CAAC,EAE1BC,IAAWD,EAAM,CAAC,IACrBD,EAAWC,EAAM,CAAC,CAAC,EAAIC,EAE3B,CAEED,EAAQZ,EAAa,KAAKO,CAAK,CACjC,CAGCI,EAAW,KAAK,EAAI,IAEpB,MAAMG,EAAU,OAAO,KAAKH,CAAU,EAEtC,UAAWI,KAAOD,EAEjBP,EAAQA,EAAM,QAAQ,IAAI,OAAOQ,EAAK,GAAG,EAAGJ,EAAWI,CAAG,CAAC,EAG5D,OAAOR,CACR,CAEe,SAASS,GAAmBC,EAAY,CACtD,GAAI,OAAOA,GAAe,SACzB,MAAM,IAAI,UAAU,sDAAwD,OAAOA,EAAa,GAAG,EAGpG,GAAI,CAEH,OAAO,mBAAmBA,CAAU,CACtC,MAAS,CAEP,OAAOP,GAAyBO,CAAU,CAC5C,CACA,CCzFO,SAASC,GAAYC,EAAQC,EAAW,CAC9C,MAAMP,EAAS,CAAE,EAEjB,GAAI,MAAM,QAAQO,CAAS,EAC1B,UAAWL,KAAOK,EAAW,CAC5B,MAAMC,EAAa,OAAO,yBAAyBF,EAAQJ,CAAG,EAC1DM,GAAA,MAAAA,EAAY,YACf,OAAO,eAAeR,EAAQE,EAAKM,CAAU,CAEjD,KAGE,WAAWN,KAAO,QAAQ,QAAQI,CAAM,EAAG,CAC1C,MAAME,EAAa,OAAO,yBAAyBF,EAAQJ,CAAG,EAC9D,GAAIM,EAAW,WAAY,CAC1B,MAAMC,EAAQH,EAAOJ,CAAG,EACpBK,EAAUL,EAAKO,EAAOH,CAAM,GAC/B,OAAO,eAAeN,EAAQE,EAAKM,CAAU,CAElD,CACA,CAGC,OAAOR,CACR,CCxBe,SAASU,EAAaC,EAAQC,EAAW,CACvD,GAAI,EAAE,OAAOD,GAAW,UAAY,OAAOC,GAAc,UACxD,MAAM,IAAI,UAAU,+CAA+C,EAGpE,GAAID,IAAW,IAAMC,IAAc,GAClC,MAAO,CAAE,EAGV,MAAMC,EAAiBF,EAAO,QAAQC,CAAS,EAE/C,OAAIC,IAAmB,GACf,CAAE,EAGH,CACNF,EAAO,MAAM,EAAGE,CAAc,EAC9BF,EAAO,MAAME,EAAiBD,EAAU,MAAM,CAC9C,CACF,CCfA,MAAME,GAAoBL,GAASA,GAAU,KAGvCM,GAAkBJ,GAAU,mBAAmBA,CAAM,EAAE,WAAW,WAAYK,GAAK,IAAIA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAa,CAAA,EAAE,EAEnIC,EAA2B,OAAO,0BAA0B,EAElE,SAASC,GAAsBC,EAAS,CACvC,OAAQA,EAAQ,YAAW,CAC1B,IAAK,QACJ,OAAOjB,GAAO,CAACF,EAAQS,IAAU,CAChC,MAAMW,EAAQpB,EAAO,OAErB,OACCS,IAAU,QACNU,EAAQ,UAAYV,IAAU,MAC9BU,EAAQ,iBAAmBV,IAAU,GAElCT,EAGJS,IAAU,KACN,CACN,GAAGT,EAAQ,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,IAAKC,EAAO,GAAG,EAAE,KAAK,EAAE,CAC1D,EAGK,CACN,GAAGpB,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,IAAKE,EAAOD,EAAOD,CAAO,EAAG,KAAME,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAK,EAAE,CACzF,CACD,EAGF,IAAK,UACJ,OAAOjB,GAAO,CAACF,EAAQS,IAErBA,IAAU,QACNU,EAAQ,UAAYV,IAAU,MAC9BU,EAAQ,iBAAmBV,IAAU,GAElCT,EAGJS,IAAU,KACN,CACN,GAAGT,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,IAAI,EAAE,KAAK,EAAE,CACpC,EAGK,CACN,GAAGnB,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,MAAOE,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAK,EAAE,CAC7D,EAIH,IAAK,uBACJ,OAAOjB,GAAO,CAACF,EAAQS,IAErBA,IAAU,QACNU,EAAQ,UAAYV,IAAU,MAC9BU,EAAQ,iBAAmBV,IAAU,GAElCT,EAGJS,IAAU,KACN,CACN,GAAGT,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,QAAQ,EAAE,KAAK,EAAE,CACxC,EAGK,CACN,GAAGnB,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,SAAUE,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAK,EAAE,CAChE,EAIH,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAMG,EAAoBH,EAAQ,cAAgB,oBAC/C,MACA,IAEH,OAAOjB,GAAO,CAACF,EAAQS,IAErBA,IAAU,QACNU,EAAQ,UAAYV,IAAU,MAC9BU,EAAQ,iBAAmBV,IAAU,GAElCT,GAIRS,EAAQA,IAAU,KAAO,GAAKA,EAE1BT,EAAO,SAAW,EACd,CAAC,CAACqB,EAAOnB,EAAKiB,CAAO,EAAGG,EAAmBD,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAG5E,CAAC,CAACnB,EAAQqB,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAKA,EAAQ,oBAAoB,CAAC,EAE/E,CAEE,QACC,OAAOjB,GAAO,CAACF,EAAQS,IAErBA,IAAU,QACNU,EAAQ,UAAYV,IAAU,MAC9BU,EAAQ,iBAAmBV,IAAU,GAElCT,EAGJS,IAAU,KACN,CACN,GAAGT,EACHqB,EAAOnB,EAAKiB,CAAO,CACnB,EAGK,CACN,GAAGnB,EACH,CAACqB,EAAOnB,EAAKiB,CAAO,EAAG,IAAKE,EAAOZ,EAAOU,CAAO,CAAC,EAAE,KAAK,EAAE,CAC3D,CAGL,CACA,CAEA,SAASI,GAAqBJ,EAAS,CACtC,IAAInB,EAEJ,OAAQmB,EAAQ,YAAW,CAC1B,IAAK,QACJ,MAAO,CAACjB,EAAKO,EAAOe,IAAgB,CAKnC,GAJAxB,EAAS,YAAY,KAAKE,CAAG,EAE7BA,EAAMA,EAAI,QAAQ,UAAW,EAAE,EAE3B,CAACF,EAAQ,CACZwB,EAAYtB,CAAG,EAAIO,EACnB,MACL,CAEQe,EAAYtB,CAAG,IAAM,SACxBsB,EAAYtB,CAAG,EAAI,CAAE,GAGtBsB,EAAYtB,CAAG,EAAEF,EAAO,CAAC,CAAC,EAAIS,CAC9B,EAGF,IAAK,UACJ,MAAO,CAACP,EAAKO,EAAOe,IAAgB,CAInC,GAHAxB,EAAS,SAAS,KAAKE,CAAG,EAC1BA,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EAExB,CAACF,EAAQ,CACZwB,EAAYtB,CAAG,EAAIO,EACnB,MACL,CAEI,GAAIe,EAAYtB,CAAG,IAAM,OAAW,CACnCsB,EAAYtB,CAAG,EAAI,CAACO,CAAK,EACzB,MACL,CAEIe,EAAYtB,CAAG,EAAI,CAAC,GAAGsB,EAAYtB,CAAG,EAAGO,CAAK,CAC9C,EAGF,IAAK,uBACJ,MAAO,CAACP,EAAKO,EAAOe,IAAgB,CAInC,GAHAxB,EAAS,WAAW,KAAKE,CAAG,EAC5BA,EAAMA,EAAI,QAAQ,SAAU,EAAE,EAE1B,CAACF,EAAQ,CACZwB,EAAYtB,CAAG,EAAIO,EACnB,MACL,CAEI,GAAIe,EAAYtB,CAAG,IAAM,OAAW,CACnCsB,EAAYtB,CAAG,EAAI,CAACO,CAAK,EACzB,MACL,CAEIe,EAAYtB,CAAG,EAAI,CAAC,GAAGsB,EAAYtB,CAAG,EAAGO,CAAK,CAC9C,EAGF,IAAK,QACL,IAAK,YACJ,MAAO,CAACP,EAAKO,EAAOe,IAAgB,CACnC,MAAMC,EAAU,OAAOhB,GAAU,UAAYA,EAAM,SAASU,EAAQ,oBAAoB,EAClFO,EAAkB,OAAOjB,GAAU,UAAY,CAACgB,GAAWhC,EAAOgB,EAAOU,CAAO,EAAE,SAASA,EAAQ,oBAAoB,EAC7HV,EAAQiB,EAAiBjC,EAAOgB,EAAOU,CAAO,EAAIV,EAClD,MAAMkB,EAAWF,GAAWC,EAAiBjB,EAAM,MAAMU,EAAQ,oBAAoB,EAAE,IAAIS,GAAQnC,EAAOmC,EAAMT,CAAO,CAAC,EAAKV,IAAU,KAAOA,EAAQhB,EAAOgB,EAAOU,CAAO,EAC3KK,EAAYtB,CAAG,EAAIyB,CACnB,EAGF,IAAK,oBACJ,MAAO,CAACzB,EAAKO,EAAOe,IAAgB,CACnC,MAAMC,EAAU,SAAS,KAAKvB,CAAG,EAGjC,GAFAA,EAAMA,EAAI,QAAQ,OAAQ,EAAE,EAExB,CAACuB,EAAS,CACbD,EAAYtB,CAAG,EAAIO,GAAQhB,EAAOgB,EAAOU,CAAO,EAChD,MACL,CAEI,MAAMU,EAAapB,IAAU,KAC1B,CAAA,EACAhB,EAAOgB,EAAOU,CAAO,EAAE,MAAMA,EAAQ,oBAAoB,EAE5D,GAAIK,EAAYtB,CAAG,IAAM,OAAW,CACnCsB,EAAYtB,CAAG,EAAI2B,EACnB,MACL,CAEIL,EAAYtB,CAAG,EAAI,CAAC,GAAGsB,EAAYtB,CAAG,EAAG,GAAG2B,CAAU,CACtD,EAGF,QACC,MAAO,CAAC3B,EAAKO,EAAOe,IAAgB,CACnC,GAAIA,EAAYtB,CAAG,IAAM,OAAW,CACnCsB,EAAYtB,CAAG,EAAIO,EACnB,MACL,CAEIe,EAAYtB,CAAG,EAAI,CAAC,GAAG,CAACsB,EAAYtB,CAAG,CAAC,EAAE,KAAM,EAAEO,CAAK,CACvD,CAEJ,CACA,CAEA,SAASqB,EAA6BrB,EAAO,CAC5C,GAAI,OAAOA,GAAU,UAAYA,EAAM,SAAW,EACjD,MAAM,IAAI,UAAU,sDAAsD,CAE5E,CAEA,SAASY,EAAOZ,EAAOU,EAAS,CAC/B,OAAIA,EAAQ,OACJA,EAAQ,OAASJ,GAAgBN,CAAK,EAAI,mBAAmBA,CAAK,EAGnEA,CACR,CAEA,SAAShB,EAAOgB,EAAOU,EAAS,CAC/B,OAAIA,EAAQ,OACJY,GAAgBtB,CAAK,EAGtBA,CACR,CAEA,SAASuB,EAAWtC,EAAO,CAC1B,OAAI,MAAM,QAAQA,CAAK,EACfA,EAAM,KAAM,EAGhB,OAAOA,GAAU,SACbsC,EAAW,OAAO,KAAKtC,CAAK,CAAC,EAClC,KAAK,CAACuC,EAAGC,IAAM,OAAOD,CAAC,EAAI,OAAOC,CAAC,CAAC,EACpC,IAAIhC,GAAOR,EAAMQ,CAAG,CAAC,EAGjBR,CACR,CAEA,SAASyC,EAAWzC,EAAO,CAC1B,MAAM0C,EAAY1C,EAAM,QAAQ,GAAG,EACnC,OAAI0C,IAAc,KACjB1C,EAAQA,EAAM,MAAM,EAAG0C,CAAS,GAG1B1C,CACR,CAEA,SAAS2C,GAAQC,EAAK,CACrB,IAAIC,EAAO,GACX,MAAMH,EAAYE,EAAI,QAAQ,GAAG,EACjC,OAAIF,IAAc,KACjBG,EAAOD,EAAI,MAAMF,CAAS,GAGpBG,CACR,CAEA,SAASC,EAAW/B,EAAOU,EAASsB,EAAM,CACzC,OAAIA,IAAS,UAAY,OAAOhC,GAAU,SAClCA,EAGJ,OAAOgC,GAAS,YAAc,OAAOhC,GAAU,SAC3CgC,EAAKhC,CAAK,EAGdU,EAAQ,eAAiBV,IAAU,OAASA,EAAM,YAAa,IAAK,QAAUA,EAAM,YAAa,IAAK,SAClGA,EAAM,YAAW,IAAO,OAG5BgC,IAAS,UAAY,CAAC,OAAO,MAAM,OAAOhC,CAAK,CAAC,GAAM,OAAOA,GAAU,UAAYA,EAAM,KAAM,IAAK,IAIpGU,EAAQ,cAAgB,CAAC,OAAO,MAAM,OAAOV,CAAK,CAAC,GAAM,OAAOA,GAAU,UAAYA,EAAM,KAAM,IAAK,GACnG,OAAOA,CAAK,EAGbA,CACR,CAEO,SAASiC,EAAQhD,EAAO,CAC9BA,EAAQyC,EAAWzC,CAAK,EACxB,MAAMiD,EAAajD,EAAM,QAAQ,GAAG,EACpC,OAAIiD,IAAe,GACX,GAGDjD,EAAM,MAAMiD,EAAa,CAAC,CAClC,CAEO,SAASC,EAAMC,EAAO1B,EAAS,CACrCA,EAAU,CACT,OAAQ,GACR,KAAM,GACN,YAAa,OACb,qBAAsB,IACtB,aAAc,GACd,cAAe,GACf,MAAO,OAAO,OAAO,IAAI,EACzB,GAAGA,CACH,EAEDW,EAA6BX,EAAQ,oBAAoB,EAEzD,MAAM2B,EAAYvB,GAAqBJ,CAAO,EAGxC4B,EAAc,OAAO,OAAO,IAAI,EAQtC,GANI,OAAOF,GAAU,WAIrBA,EAAQA,EAAM,KAAI,EAAG,QAAQ,SAAU,EAAE,EAErC,CAACA,GACJ,OAAOE,EAGR,UAAWC,KAAaH,EAAM,MAAM,GAAG,EAAG,CACzC,GAAIG,IAAc,GACjB,SAGD,MAAMC,EAAa9B,EAAQ,OAAS6B,EAAU,WAAW,IAAK,GAAG,EAAIA,EAErE,GAAI,CAAC9C,EAAKO,CAAK,EAAIC,EAAauC,EAAY,GAAG,EAE3C/C,IAAQ,SACXA,EAAM+C,GAKPxC,EAAQA,IAAU,OAAY,KAAQ,CAAC,QAAS,YAAa,mBAAmB,EAAE,SAASU,EAAQ,WAAW,EAAIV,EAAQhB,EAAOgB,EAAOU,CAAO,EAC/I2B,EAAUrD,EAAOS,EAAKiB,CAAO,EAAGV,EAAOsC,CAAW,CACpD,CAEC,SAAW,CAAC7C,EAAKO,CAAK,IAAK,OAAO,QAAQsC,CAAW,EACpD,GAAI,OAAOtC,GAAU,UAAYA,IAAU,MAAQU,EAAQ,MAAMjB,CAAG,IAAM,SACzE,SAAW,CAACgD,EAAMC,CAAM,IAAK,OAAO,QAAQ1C,CAAK,EAAG,CACnD,MAAMgC,EAAOtB,EAAQ,MAAMjB,CAAG,EAAIiB,EAAQ,MAAMjB,CAAG,EAAE,QAAQ,KAAM,EAAE,EAAI,OACzEO,EAAMyC,CAAI,EAAIV,EAAWW,EAAQhC,EAASsB,CAAI,CAClD,MACa,OAAOhC,GAAU,UAAYA,IAAU,MAAQU,EAAQ,MAAMjB,CAAG,IAAM,SAChF6C,EAAY7C,CAAG,EAAI,OAAO,OAAOO,CAAK,EAAE,KAAKU,EAAQ,oBAAoB,EAEzE4B,EAAY7C,CAAG,EAAIsC,EAAW/B,EAAOU,EAASA,EAAQ,MAAMjB,CAAG,CAAC,EAIlE,OAAIiB,EAAQ,OAAS,GACb4B,GAKA5B,EAAQ,OAAS,GAAO,OAAO,KAAK4B,CAAW,EAAE,OAAS,OAAO,KAAKA,CAAW,EAAE,KAAK5B,EAAQ,IAAI,GAAG,OAAO,CAACnB,EAAQE,IAAQ,CACtI,MAAMO,EAAQsC,EAAY7C,CAAG,EAC7B,OAAAF,EAAOE,CAAG,EAAYO,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,EAAIuB,EAAWvB,CAAK,EAAIA,EAClGT,CACT,EAAI,OAAO,OAAO,IAAI,CAAC,CACvB,CAEO,SAASoD,EAAU9C,EAAQa,EAAS,CAC1C,GAAI,CAACb,EACJ,MAAO,GAGRa,EAAU,CACT,OAAQ,GACR,OAAQ,GACR,YAAa,OACb,qBAAsB,IACtB,GAAGA,CACH,EAEDW,EAA6BX,EAAQ,oBAAoB,EAEzD,MAAMkC,EAAenD,GACnBiB,EAAQ,UAAYL,GAAkBR,EAAOJ,CAAG,CAAC,GAC9CiB,EAAQ,iBAAmBb,EAAOJ,CAAG,IAAM,GAG1C4C,EAAY5B,GAAsBC,CAAO,EAEzCmC,EAAa,CAAE,EAErB,SAAW,CAACpD,EAAKO,CAAK,IAAK,OAAO,QAAQH,CAAM,EAC1C+C,EAAanD,CAAG,IACpBoD,EAAWpD,CAAG,EAAIO,GAIpB,MAAM8C,EAAO,OAAO,KAAKD,CAAU,EAEnC,OAAInC,EAAQ,OAAS,IACpBoC,EAAK,KAAKpC,EAAQ,IAAI,EAGhBoC,EAAK,IAAIrD,GAAO,CACtB,MAAMO,EAAQH,EAAOJ,CAAG,EAExB,OAAIO,IAAU,OACN,GAGJA,IAAU,KACNY,EAAOnB,EAAKiB,CAAO,EAGvB,MAAM,QAAQV,CAAK,EAClBA,EAAM,SAAW,GAAKU,EAAQ,cAAgB,oBAC1CE,EAAOnB,EAAKiB,CAAO,EAAI,KAGxBV,EACL,OAAOqC,EAAU5C,CAAG,EAAG,CAAE,CAAA,EACzB,KAAK,GAAG,EAGJmB,EAAOnB,EAAKiB,CAAO,EAAI,IAAME,EAAOZ,EAAOU,CAAO,CAC3D,CAAE,EAAE,OAAOH,GAAKA,EAAE,OAAS,CAAC,EAAE,KAAK,GAAG,CACtC,CAEO,SAASwC,EAASlB,EAAKnB,EAAS,OACtCA,EAAU,CACT,OAAQ,GACR,GAAGA,CACH,EAED,GAAI,CAACsC,EAAMlB,CAAI,EAAI7B,EAAa4B,EAAK,GAAG,EAExC,OAAImB,IAAS,SACZA,EAAOnB,GAGD,CACN,MAAKoB,EAAAD,GAAA,YAAAA,EAAM,MAAM,OAAZ,YAAAC,EAAmB,KAAM,GAC9B,MAAOd,EAAMF,EAAQJ,CAAG,EAAGnB,CAAO,EAClC,GAAIA,GAAWA,EAAQ,yBAA2BoB,EAAO,CAAC,mBAAoB9C,EAAO8C,EAAMpB,CAAO,CAAC,EAAI,CAAA,CACvG,CACF,CAEO,SAASwC,EAAarD,EAAQa,EAAS,CAC7CA,EAAU,CACT,OAAQ,GACR,OAAQ,GACR,CAACF,CAAwB,EAAG,GAC5B,GAAGE,CACH,EAED,MAAMmB,EAAMH,EAAW7B,EAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAK,GAC9CsD,EAAelB,EAAQpC,EAAO,GAAG,EAEjCuC,EAAQ,CACb,GAAGD,EAAMgB,EAAc,CAAC,KAAM,EAAK,CAAC,EACpC,GAAGtD,EAAO,KACV,EAED,IAAIuD,EAAcT,EAAUP,EAAO1B,CAAO,EAC1C0C,MAAgB,IAAIA,CAAW,IAE/B,IAAItB,EAAOF,GAAQ/B,EAAO,GAAG,EAC7B,GAAI,OAAOA,EAAO,oBAAuB,SAAU,CAClD,MAAMwD,EAA6B,IAAI,IAAIxB,CAAG,EAC9CwB,EAA2B,KAAOxD,EAAO,mBACzCiC,EAAOpB,EAAQF,CAAwB,EAAI6C,EAA2B,KAAO,IAAIxD,EAAO,kBAAkB,EAC5G,CAEC,MAAO,GAAGgC,CAAG,GAAGuB,CAAW,GAAGtB,CAAI,EACnC,CAEO,SAASwB,EAAKrE,EAAOsE,EAAQ7C,EAAS,CAC5CA,EAAU,CACT,wBAAyB,GACzB,CAACF,CAAwB,EAAG,GAC5B,GAAGE,CACH,EAED,KAAM,CAAC,IAAAmB,EAAK,MAAAO,EAAO,mBAAAoB,CAAkB,EAAIT,EAAS9D,EAAOyB,CAAO,EAEhE,OAAOwC,EAAa,CACnB,IAAArB,EACA,MAAOjC,GAAYwC,EAAOmB,CAAM,EAChC,mBAAAC,CACA,EAAE9C,CAAO,CACX,CAEO,SAAS+C,GAAQxE,EAAOsE,EAAQ7C,EAAS,CAC/C,MAAMgD,EAAkB,MAAM,QAAQH,CAAM,EAAI9D,GAAO,CAAC8D,EAAO,SAAS9D,CAAG,EAAI,CAACA,EAAKO,IAAU,CAACuD,EAAO9D,EAAKO,CAAK,EAEjH,OAAOsD,EAAKrE,EAAOyE,EAAiBhD,CAAO,CAC5C,+KCheI,OAAO,OAAW,MACpB,OAAO,MAAQiD,EACf,OAAO,SAAWC,EAClB,OAAO,KAAOC,EACd,OAAO,MAAQC,EACf,OAAO,IAAMC,EACb,OAAO,MAAQC,EACf,OAAO,GAAKC,GACZ,OAAO,KAAOC,GACd,OAAO,KAAOC,EACd,OAAO,QAAUC,GAGnB,SAASC,IAAe,CAEtB,MAAMC,EAAWC,GAAY,EACvB,CAAE,SAAAC,CAAS,EAAIC,GAAU,EAE/BC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACJ,EAAU,OACf,MAAMK,EAAS,CACbH,EAAS,UAAU,MAAOF,EAAS,WAAW,EAC9CE,EAAS,UAAU,MAAOF,EAAS,WAAW,EAC9CE,EAAS,UAAU,SAAUF,EAAS,WAAW,EACjDE,EAAS,UAAU,SAAUF,EAAS,WAAW,EACjDE,EAAS,UAAU,SAAUF,EAAS,WAAW,CACnD,EAEA,MAAO,IAAM,CACXK,EAAO,QAASC,GAAMA,EAAA,CAAG,CAC3B,CAAA,EACC,CAACN,EAAUE,CAAQ,CAAC,EAEjB,MAAAK,EAAiBC,EAAAA,QAAQ,IACxBR,GAAA,MAAAA,EAAU,MACR,IAAIS,GAAQP,EAAUF,EAAS,KAAK,EADdE,EAE5B,CAACA,EAAUF,GAAA,YAAAA,EAAU,KAAK,CAAC,EAE9B,OAAKA,EAmCDU,EAAA,KAACC,GAAA,CACC,OAAQ,IACR,UAAW,GACX,OAAQ,GACR,MAAO,CACL,MAAO,OACP,OAAQ,MACV,EAEA,SAAA,CAAAC,EAAA,IAACC,EAAA,CACC,OAAQN,EACR,OAAQ,oDACR,MAAO,CACL,QAAS,OACT,cAAe,KACjB,EACA,WAAY,CACV,QAAS,OACT,cAAe,KACjB,EAEA,SAAAK,EAAA,IAACE,EAAA,CACC,UAAU,SACV,OAAQP,EACR,WAAY,CACTK,EAAAA,IAAAG,EAAA,CAAwB,KAAK,cAAA,EAApB,cAAmC,EAC7CH,MAACI,KAAyB,qBAAsB,QAC/CC,EAA0B,CAAA,IAAK,GAAI,OAAM,IAA/B,eAAgC,QAC1CC,EAA2C,CAAA,IAAK,GAAI,OAAM,IAApC,oBAAqC,CAC9D,EAEA,SAAAN,EAAA,IAACO,EAAA,CACC,KAAK,wBAGL,QAAQ,qBACR,QAAQ,SACR,KAAK,oBACL,aAAc,CAAC,OAAQ,OAAQ,OAAO,CAAA,CAAA,CACxC,CAAA,CACF,CACF,EAEEP,EAAAA,IAAAQ,EAAA,SAAA,CAAA,SAAAR,MAACS,EACC,CAAA,SAAAX,EAAA,KAACY,EACC,CAAA,SAAA,CAAAV,EAAA,IAACW,EAAY,EAAA,EACZX,EAAA,IAAAY,GAAA,CACC,SAACZ,EAAAA,IAAAa,GAAA,CAAA,CAAS,CAIZ,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF,QACCJ,EACC,CAAA,SAAAT,EAAA,IAACU,GACC,SAACV,MAAAW,EAAA,CAAY,CAAA,CACf,CAAA,CACF,CAAA,CAAA,CAAA,CACF,EA7FAX,EAAA,IAACC,EAAA,CACC,OAAQN,EACR,MAAO,CACL,QAAS,OACT,cAAe,KACjB,EACA,WAAY,CACV,QAAS,OACT,cAAe,KACjB,EAEA,SAAAK,EAAA,IAACE,EAAA,CACC,UAAU,SACV,OAAQZ,EACR,WAAY,CACTU,EAAAA,IAAAG,EAAA,CAAgB,KAAK,MAAA,EAAZ,MAAmB,EAC7BH,MAACI,KAAyB,qBAAsB,QAC/CC,EAAkB,CAAA,IAAK,GAAI,OAAM,IAAvB,OAAwB,QAClCC,EAA2C,CAAA,IAAK,GAAI,OAAM,IAApC,oBAAqC,CAC9D,EAEA,SAAAN,EAAA,IAACO,EAAA,CACC,KAAK,wBAEL,QAAQ,qBACR,QAAQ,SACR,KAAK,mBAAA,CAAA,CACP,CAAA,CACF,CACF,CAkEN,CAEA,SAASO,IAAgB,CAIvB,MAAMC,EAAWC,EAAc,CAAC,CAAE,SAAAD,KAAeA,CAAQ,EACnDE,EAAWD,EAAc,CAAC,CAAE,IAAAE,CAAA,IAAUA,CAAG,EAG/C,cACGC,GAAU,CAAA,SAAQ,GAAC,OAAQ,KAAM,OAAQ,GACxC,SAAA,CAAAnB,EAAA,IAACb,GAAa,EAAA,QACbiC,GAAU,CAAA,MAAM,cAAc,MAAOL,EAAU,SAAAE,CAAoB,CAAA,CAAA,EACtE,CAEJ,CAEA,SAAwBI,IAAO,CACvB,MAAAC,EAAQ,OAAO,OAAW,IAEhC,GAAIA,EAAc,OAAA,KAEZ,MAAAC,EAAU3B,EAAAA,QAAqB,IAAM,CACzC,MAAM4B,EAAStD,GAAY,MAAM,OAAO,SAAS,SAAS,MAAM,EAC5D,OAAA,OAAOsD,EAAO,cAAiB,WAC1BA,EAAA,aAAeA,EAAO,aAAa,YAAY,GACjDA,CACT,EAAG,EAAE,EAECC,EAAe7B,EAAA,QACnB,IAAM2B,EAAQ,eAAiB,OAC/B,CAACA,EAAQ,YAAY,CACvB,EAEA,OAEIzB,EAAA,KAAAU,WAAA,CAAA,SAAA,CAAAR,MAAC0B,EACC,CAAA,SAAA1B,EAAA,IAAC,QAAM,CAAA,SAAA,aAAW,CAAA,EACpB,SACC,OACC,CAAA,SAAA,CAACA,EAAAA,IAAA2B,EAAA,CACE,WAAQ,KACP3B,EAAA,IAAC4B,IAEC,SAAC5B,EAAAA,IAAAc,GAAA,CAAA,CAAc,EACjB,CAEJ,CAAA,EACAd,EAAA,IAAC6B,GAAA,CACC,MAAO,CACL,MAAO,CACL,UAAW,QACX,aAAc,QACd,oBAAqB,MAAA,CAEzB,EACA,UAAWJ,CAAA,CAAA,CACb,CACF,CAAA,CAAA,EACF,CAEJ","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{R as i,e as l,J as d,r as a,j as e,H as u,i as p,a as f,b as c,c as m}from"../chunks/chunk-WT4fnZC5.js";import{V as w,T as h,F as T,L as S,Z as y,m as x,y as g,n as E,e as j,O as v,v as P,d as R,f as U}from"../chunks/chunk-Bm8teWZD.js";import{X as A,D}from"../chunks/chunk-p1qjqNL8.js";import"../chunks/chunk-D7HrI6pR.js";const z="_main_ct6c1_1",V={main:z};typeof window<"u"&&(window.React=i,window.ReactDOM=l,window.VUER=w,window.THREE=h,window.JSX=d,window.FIBER=T,window.XR=A,window.Drei=D,window.LEVA=S,window.ZUSTAND=y);function b(){return e.jsx(E,{bgChildren:[e.jsx(v,{_key:"grid"},"grid"),e.jsx(P,{},"default-light-stage"),e.jsx(R,{},"hands"),e.jsx(U,{fps:30,stream:!0},"motion-controllers")],children:e.jsx(j,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.45",main:"dist/index.umd.js"})})}function H(){const s=typeof window>"u",[{message:O,mtype:B},o]=a.useState({message:null,mtype:null});a.useEffect(()=>{const t=console.error;return()=>{console.error=t}},[]),a.useEffect(()=>{const t=console.warn;return console.warn=r=>{setTimeout(()=>{o({message:r,mtype:"warning"}),console.log(r)},1)},()=>{console.warn=t}},[]);const n=a.useMemo(()=>({showError:t=>setTimeout(()=>o({message:t,mtype:"error"}),1),showSuccess:t=>setTimeout(()=>o({message:t,mtype:"success"}),1),showWarning:t=>setTimeout(()=>o({message:t,mtype:"warning"}),1),showInfo:t=>setTimeout(()=>o({message:t,mtype:"info"}),1),showModal:t=>{console.log(t)}}),[]);return e.jsxs(e.Fragment,{children:[e.jsx(u,{children:e.jsx("title",{children:"Vuer (Technical Preview)"})}),e.jsx("main",{className:V.main,children:e.jsx(x,{value:n,children:s?null:e.jsx(g,{children:e.jsx(b,{})})})})]})}const _=Object.freeze(Object.defineProperty({__proto__:null,default:H},Symbol.toStringTag,{value:"Module"})),F={onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},hydrationCanBeAborted:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hydrationCanBeAborted"]},valueSerialized:{type:"js-serialized",value:!0}},hooksTimeout:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hooksTimeout"]},valueSerialized:{type:"js-serialized",value:{data:{error:3e4,warning:1e4}}}},onHydrationEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onHydrationEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:m}},onPageTransitionEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:c}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:f}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onRenderClient.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:p}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/index/+Page.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:_}}};export{F as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_index.BCFjFkWa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_index.BCFjFkWa.js","sources":["../../../../pages/index/+Page.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Helmet } from '@vuer-ai/react-helmet-async';\n// import { ClickAwayListener, useSnackbar } from '@mui/base';\n// import {\n// InfoSnackbar,\n// Snackbars,\n// SuccessSnackbar,\n// WarningSnackbar,\n// } from './_components/snackbars';\nimport style from './index.module.scss';\nimport {\n AppProvider, ContribLoader,\n Grid,\n Hands,\n HemisphereLightStage, MotionControllers,\n VuerRoot,\n WebSocketProvider,\n} from '@vuer-ai/vuer';\nimport ReactDOM from 'react-dom';\nimport * as THREE from 'three';\nimport * as JSX from 'react/jsx-runtime';\nimport * as FIBER from '@react-three/fiber';\nimport * as VUER from '@vuer-ai/vuer';\nimport * as Drei from '@react-three/drei';\nimport * as XR from '@react-three/xr';\nimport * as LEVA from 'leva';\nimport * as ZUSTAND from 'zustand';\n\n// import { HandActuator } from '@vuer-ai/mujoco-ts';\n// console.log(HandActuator);\n\ndeclare global {\n interface Window {\n React: typeof React;\n ReactDOM: typeof ReactDOM;\n VUER: typeof VUER;\n THREE: typeof THREE;\n JSX: typeof JSX;\n FIBER: typeof FIBER;\n XR: typeof XR;\n Drei: typeof Drei;\n }\n}\n\nif (typeof window !== 'undefined') {\n window.React = React;\n window.ReactDOM = ReactDOM;\n window.VUER = VUER;\n window.THREE = THREE;\n window.JSX = JSX;\n window.FIBER = FIBER;\n window.XR = XR;\n window.Drei = Drei;\n window.LEVA = LEVA;\n window.ZUSTAND = ZUSTAND;\n}\n\ntype MTypes = 'error' | 'warning' | 'success' | 'info';\ntype StateT = {\n message?: string | null;\n mtype?: MTypes | null;\n};\n\nfunction AppView() {\n return (\n <VuerRoot\n bgChildren={[\n <Grid key=\"grid\" _key=\"grid\" />,\n <HemisphereLightStage key=\"default-light-stage\" />,\n <Hands key=\"hands\" />,\n <MotionControllers key=\"motion-controllers\" fps={30} stream />,\n ]}\n >\n <ContribLoader\n _key=\"contrib-loader-mujoco\"\n // prodOnly\n library=\"@vuer-ai/mujoco-ts\"\n version=\"0.0.45\"\n main=\"dist/index.umd.js\"\n />\n </VuerRoot>\n );\n}\n\nfunction Page() {\n const isSSR = typeof window === 'undefined';\n const [{ message, mtype }, setState] = useState({\n message: null,\n mtype: null,\n } as StateT);\n\n // const { getRootProps, onClickAway } = useSnackbar({\n // onClose: () => {\n // setState({ message: null, mtype: null });\n // },\n // open: !!message,\n // autoHideDuration: 5000,\n // });\n\n useEffect(() => {\n const oldError = console.error;\n // console.error = (err) => {\n // setTimeout(() => {\n // setState({ message: err, mtype: \"error\" });\n // console.log(err);\n // }, 1)\n // };\n return () => {\n console.error = oldError;\n };\n }, []);\n\n useEffect(() => {\n const oldWarn = console.warn;\n console.warn = (err) => {\n setTimeout(() => {\n setState({ message: err, mtype: 'warning' });\n console.log(err);\n }, 1);\n };\n return () => {\n console.warn = oldWarn;\n };\n }, []);\n\n const context = useMemo(\n () => ({\n showError: (message: string) =>\n setTimeout(() => setState({ message, mtype: 'error' }), 1),\n showSuccess: (message: string) =>\n setTimeout(() => setState({ message, mtype: 'success' }), 1),\n showWarning: (message: string) =>\n setTimeout(() => setState({ message, mtype: 'warning' }), 1),\n showInfo: (message: string) =>\n setTimeout(() => setState({ message, mtype: 'info' }), 1),\n showModal: (message: string) => {\n console.log(message);\n },\n }),\n [],\n );\n\n // function render({ message, mtype }: StateT) {\n // switch (mtype) {\n // case 'error':\n // return <Snackbars {...getRootProps()}>ERROR: {message}</Snackbars>;\n // case 'warning':\n // return (\n // <WarningSnackbar {...getRootProps()}>\n // WARNING: {message}\n // </WarningSnackbar>\n // );\n // case 'success':\n // return (\n // <SuccessSnackbar {...getRootProps()}>\n // SUCCESS: {message}\n // </SuccessSnackbar>\n // );\n // case 'info':\n // default:\n // return <InfoSnackbar {...getRootProps()}>INFO: {message}</InfoSnackbar>;\n // }\n // }\n\n // if (isSSR) return null;\n return (\n <>\n <Helmet>\n <title>Vuer (Technical Preview)</title>\n </Helmet>\n <main className={style.main}>\n {/*{message ? (*/}\n {/* <ClickAwayListener onClickAway={onClickAway}>*/}\n {/* {render({ message, mtype })}*/}\n {/* </ClickAwayListener>*/}\n {/*) : null}*/}\n {/*<Suspense fallback={<div>Loading...</div>}>*/}\n <AppProvider value={context}>\n {!isSSR ? (\n <WebSocketProvider>\n <AppView />\n </WebSocketProvider>\n ) : null}\n </AppProvider>\n {/*</Suspense>*/}\n </main>\n </>\n );\n}\n\nexport default Page;\n"],"names":["React","ReactDOM","VUER","THREE","JSX","FIBER","XR","Drei","LEVA","ZUSTAND","AppView","jsx","VuerRoot","Grid","HemisphereLightStage","Hands","MotionControllers","ContribLoader","Page","isSSR","message","mtype","setState","useState","useEffect","oldError","oldWarn","err","context","useMemo","jsxs","Fragment","Helmet","style","AppProvider","WebSocketProvider"],"mappings":"4WA4CI,OAAO,OAAW,MACpB,OAAO,MAAQA,EACf,OAAO,SAAWC,EAClB,OAAO,KAAOC,EACd,OAAO,MAAQC,EACf,OAAO,IAAMC,EACb,OAAO,MAAQC,EACf,OAAO,GAAKC,EACZ,OAAO,KAAOC,EACd,OAAO,KAAOC,EACd,OAAO,QAAUC,GASnB,SAASC,GAAU,CAEf,OAAAC,EAAA,IAACC,EAAA,CACC,WAAY,CACTD,EAAAA,IAAAE,EAAA,CAAgB,KAAK,MAAA,EAAZ,MAAmB,EAC7BF,MAACG,KAAyB,qBAAsB,EAChDH,MAACI,KAAU,OAAQ,QAClBC,EAA2C,CAAA,IAAK,GAAI,OAAM,IAApC,oBAAqC,CAC9D,EAEA,SAAAL,EAAA,IAACM,EAAA,CACC,KAAK,wBAEL,QAAQ,qBACR,QAAQ,SACR,KAAK,mBAAA,CAAA,CACP,CACF,CAEJ,CAEA,SAASC,GAAO,CACR,MAAAC,EAAQ,OAAO,OAAW,IAC1B,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAS,EAAAC,CAAQ,EAAIC,EAAAA,SAAS,CAC9C,QAAS,KACT,MAAO,IAAA,CACE,EAUXC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAW,QAAQ,MAOzB,MAAO,IAAM,CACX,QAAQ,MAAQA,CAClB,CACF,EAAG,EAAE,EAELD,EAAAA,UAAU,IAAM,CACd,MAAME,EAAU,QAAQ,KAChB,eAAA,KAAQC,GAAQ,CACtB,WAAW,IAAM,CACfL,EAAS,CAAE,QAASK,EAAK,MAAO,UAAW,EAC3C,QAAQ,IAAIA,CAAG,GACd,CAAC,CACN,EACO,IAAM,CACX,QAAQ,KAAOD,CACjB,CACF,EAAG,EAAE,EAEL,MAAME,EAAUC,EAAA,QACd,KAAO,CACL,UAAYT,GACV,WAAW,IAAME,EAAS,CAAE,QAAAF,EAAS,MAAO,OAAS,CAAA,EAAG,CAAC,EAC3D,YAAcA,GACZ,WAAW,IAAME,EAAS,CAAE,QAAAF,EAAS,MAAO,SAAW,CAAA,EAAG,CAAC,EAC7D,YAAcA,GACZ,WAAW,IAAME,EAAS,CAAE,QAAAF,EAAS,MAAO,SAAW,CAAA,EAAG,CAAC,EAC7D,SAAWA,GACT,WAAW,IAAME,EAAS,CAAE,QAAAF,EAAS,MAAO,MAAQ,CAAA,EAAG,CAAC,EAC1D,UAAYA,GAAoB,CAC9B,QAAQ,IAAIA,CAAO,CAAA,CACrB,GAEF,CAAA,CACF,EAyBA,OAEIU,EAAA,KAAAC,WAAA,CAAA,SAAA,CAAApB,MAACqB,EACC,CAAA,SAAArB,EAAA,IAAC,QAAM,CAAA,SAAA,0BAAwB,CAAA,EACjC,QACC,OAAK,CAAA,UAAWsB,EAAM,KAOrB,SAAAtB,MAACuB,GAAY,MAAON,EACjB,SAACT,EAIE,WAHDgB,EACC,CAAA,SAAAxB,EAAAA,IAACD,IAAQ,CACX,CAAA,CAEJ,CAAA,CAEF,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,k as t,H as a,r,i as o,a as i,b as l,c as d}from"../chunks/chunk-WT4fnZC5.js";import{fk as n,fl as s}from"../chunks/chunk-Bm8teWZD.js";import"../chunks/chunk-D7HrI6pR.js";function p(){return e.jsxs(t,{children:[e.jsx(a,{children:e.jsx("title",{children:"Vuer | Stereo Video and WebRTC Demo"})}),e.jsx("main",{children:e.jsx(r.Suspense,{fallback:e.jsx("div",{children:"Loading..."}),children:e.jsx(n,{children:e.jsx(s,{})})})})]})}const u=Object.freeze(Object.defineProperty({__proto__:null,default:p},Symbol.toStringTag,{value:"Module"})),S={onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},hydrationCanBeAborted:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hydrationCanBeAborted"]},valueSerialized:{type:"js-serialized",value:!0}},hooksTimeout:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hooksTimeout"]},valueSerialized:{type:"js-serialized",value:{data:{error:3e4,warning:1e4}}}},onHydrationEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onHydrationEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:d}},onPageTransitionEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:l}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:i}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onRenderClient.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:o}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/simple/+Page.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:u}}};export{S as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_simple.Bea-CbV9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_simple.Bea-CbV9.js","sources":["../../../../pages/simple/+Page.tsx"],"sourcesContent":["import { Suspense, useEffect, useMemo } from 'react';\nimport { Helmet, HelmetProvider } from '@vuer-ai/react-helmet-async';\nimport { SimpleComponent, SimpleProvider } from '@vuer-ai/vuer';\n\n// const { SimpleComponent, SimpleProvider } = require('@vuer-ai/vuer');\n\nexport default function Page() {\n const isSSR = typeof window === 'undefined';\n\n return (\n <HelmetProvider>\n <Helmet>\n <title>Vuer | Stereo Video and WebRTC Demo</title>\n </Helmet>\n <main>\n <Suspense fallback={<div>Loading...</div>}>\n <SimpleProvider>\n <SimpleComponent />\n </SimpleProvider>\n {/*{isSSR ? null : (*/}\n {/*)}*/}\n </Suspense>\n </main>\n </HelmetProvider>\n );\n}\n"],"names":["Page","HelmetProvider","jsx","Helmet","Suspense","SimpleProvider","SimpleComponent"],"mappings":"yLAMA,SAAwBA,GAAO,CAG7B,cACGC,EACC,CAAA,SAAA,CAAAC,MAACC,EACC,CAAA,SAAAD,EAAA,IAAC,QAAM,CAAA,SAAA,qCAAmC,CAAA,EAC5C,EACCA,EAAAA,IAAA,OAAA,CACC,SAACA,MAAAE,EAAAA,SAAA,CAAS,SAAWF,EAAA,IAAA,MAAA,CAAI,SAAU,aAAA,EACjC,eAACG,EACC,CAAA,SAAAH,MAACI,EAAgB,CAAA,CAAA,EACnB,EAGF,CACF,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
<body>
|
|
9
9
|
<div id="react-root"><div id="react-root" style="padding:0;height:100%;width:100%"></div></div>
|
|
10
10
|
<script id="vike_pageContext" type="application/json">{"someAsyncProps":42,"abortReason":"!undefined","_urlRewrite":null,"_urlRedirect":"!undefined","abortStatusCode":"!undefined","_abortCall":"!undefined","_pageContextInitIsPassedToClient":"!undefined","_pageId":"/pages/editor","routeParams":{},"data":"!undefined"}</script>
|
|
11
|
-
<script src="/assets/entries/entry-client-routing.
|
|
12
|
-
<link rel="modulepreload" href="/assets/entries/pages_editor.
|
|
11
|
+
<script src="/assets/entries/entry-client-routing.PaStComK.js" type="module" async></script>
|
|
12
|
+
<link rel="modulepreload" href="/assets/entries/pages_editor.CNudNU59.js" as="script" type="text/javascript">
|
|
13
13
|
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
14
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
14
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Bm8teWZD.js" as="script" type="text/javascript">
|
|
15
15
|
<link rel="modulepreload" href="/assets/chunks/chunk-D7HrI6pR.js" as="script" type="text/javascript">
|
|
16
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
16
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-p1qjqNL8.js" as="script" type="text/javascript">
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
vuer/client_build/index.html
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
<body>
|
|
9
9
|
<div id="react-root"><div id="react-root" style="padding:0;height:100%;width:100%"><main class="_main_ct6c1_1"></main></div></div>
|
|
10
10
|
<script id="vike_pageContext" type="application/json">{"someAsyncProps":42,"abortReason":"!undefined","_urlRewrite":null,"_urlRedirect":"!undefined","abortStatusCode":"!undefined","_abortCall":"!undefined","_pageContextInitIsPassedToClient":"!undefined","_pageId":"/pages/index","routeParams":{},"data":"!undefined"}</script>
|
|
11
|
-
<script src="/assets/entries/entry-client-routing.
|
|
12
|
-
<link rel="modulepreload" href="/assets/entries/pages_index.
|
|
11
|
+
<script src="/assets/entries/entry-client-routing.PaStComK.js" type="module" async></script>
|
|
12
|
+
<link rel="modulepreload" href="/assets/entries/pages_index.BCFjFkWa.js" as="script" type="text/javascript">
|
|
13
13
|
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
14
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
14
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Bm8teWZD.js" as="script" type="text/javascript">
|
|
15
15
|
<link rel="modulepreload" href="/assets/chunks/chunk-D7HrI6pR.js" as="script" type="text/javascript">
|
|
16
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
16
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-p1qjqNL8.js" as="script" type="text/javascript">
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
<body>
|
|
8
8
|
<div id="react-root"><div id="react-root" style="padding:0;height:100%;width:100%"><main><!--$--><div><h1 class="_listName_1s0ny_1">Simple Component</h1><p>This is cool!</p></div><!--/$--></main></div></div>
|
|
9
9
|
<script id="vike_pageContext" type="application/json">{"someAsyncProps":42,"abortReason":"!undefined","_urlRewrite":null,"_urlRedirect":"!undefined","abortStatusCode":"!undefined","_abortCall":"!undefined","_pageContextInitIsPassedToClient":"!undefined","_pageId":"/pages/simple","routeParams":{},"data":"!undefined"}</script>
|
|
10
|
-
<script src="/assets/entries/entry-client-routing.
|
|
11
|
-
<link rel="modulepreload" href="/assets/entries/pages_simple.
|
|
10
|
+
<script src="/assets/entries/entry-client-routing.PaStComK.js" type="module" async></script>
|
|
11
|
+
<link rel="modulepreload" href="/assets/entries/pages_simple.Bea-CbV9.js" as="script" type="text/javascript">
|
|
12
12
|
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
13
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
13
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Bm8teWZD.js" as="script" type="text/javascript">
|
|
14
14
|
<link rel="modulepreload" href="/assets/chunks/chunk-D7HrI6pR.js" as="script" type="text/javascript">
|
|
15
15
|
</body>
|
|
16
16
|
</html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
vuer/schemas/scene_components.py
CHANGED
|
@@ -803,6 +803,168 @@ class PointerControls(SceneElement):
|
|
|
803
803
|
# todo: consider adding default component keys here.
|
|
804
804
|
|
|
805
805
|
|
|
806
|
+
class AccumulativeShadows(SceneElement):
|
|
807
|
+
"""A planar, Y-up oriented shadow-catcher that accumulates soft shadows with zero performance impact after accumulation.
|
|
808
|
+
|
|
809
|
+
The shadow-catcher can operate in temporal mode (accumulating over time) or instantaneous mode. It must be paired with
|
|
810
|
+
light sources and scene objects that cast shadows as children. Works best with RandomizedLight components for realistic
|
|
811
|
+
raycast-like shadows and ambient occlusion.
|
|
812
|
+
|
|
813
|
+
:param frames: Number of frames to render. More frames yield cleaner results but take longer. Defaults to 40.
|
|
814
|
+
:type frames: int
|
|
815
|
+
:param blend: Controls the refresh ratio when frames=Infinity. Defaults to 100.
|
|
816
|
+
:type blend: int
|
|
817
|
+
:param limit: Limits rendered frames when frames=Infinity to regain performance once scene settles. Defaults to Infinity.
|
|
818
|
+
:type limit: int
|
|
819
|
+
:param scale: Scale of the shadow plane. No default.
|
|
820
|
+
:type scale: float
|
|
821
|
+
:param temporal: Whether to accumulate shadows over time (more performant but has visual regression). Defaults to False.
|
|
822
|
+
:type temporal: bool
|
|
823
|
+
:param opacity: Opacity of the shadow plane. Defaults to 1.
|
|
824
|
+
:type opacity: float
|
|
825
|
+
:param alphaTest: Threshold for discarding alpha pixels. Defaults to 0.65.
|
|
826
|
+
:type alphaTest: float
|
|
827
|
+
:param color: Shadow color. Defaults to black.
|
|
828
|
+
:type color: str
|
|
829
|
+
:param colorBlend: How much colors turn to black (0 is black). Defaults to 2.
|
|
830
|
+
:type colorBlend: float
|
|
831
|
+
:param resolution: Buffer resolution. Defaults to 1024.
|
|
832
|
+
:type resolution: int
|
|
833
|
+
|
|
834
|
+
Example Usage::
|
|
835
|
+
|
|
836
|
+
AccumulativeShadows(
|
|
837
|
+
temporal=True,
|
|
838
|
+
frames=100,
|
|
839
|
+
scale=10,
|
|
840
|
+
children=[
|
|
841
|
+
RandomizedLight(amount=8, position=[5, 5, -10])
|
|
842
|
+
]
|
|
843
|
+
)
|
|
844
|
+
"""
|
|
845
|
+
|
|
846
|
+
tag = "AccumulativeShadows"
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
class Trail(SceneElement):
|
|
850
|
+
"""A declarative, three.MeshLine based Trails implementation. You can attach it to any mesh and it will give it a beautiful trail.
|
|
851
|
+
|
|
852
|
+
:param width: Width of the line. Defaults to 0.2.
|
|
853
|
+
:type width: float
|
|
854
|
+
:param color: Color of the line. Defaults to 'hotpink'.
|
|
855
|
+
:type color: str
|
|
856
|
+
:param length: Length of the line. Defaults to 1.
|
|
857
|
+
:type length: float
|
|
858
|
+
:param decay: How fast the line fades away. Defaults to 1.
|
|
859
|
+
:type decay: float
|
|
860
|
+
:param local: Whether to use the target's world or local positions. Defaults to False.
|
|
861
|
+
:type local: bool
|
|
862
|
+
:param stride: Min distance between previous and current point. Defaults to 0.
|
|
863
|
+
:type stride: float
|
|
864
|
+
:param interval: Number of frames to wait before next calculation. Defaults to 1.
|
|
865
|
+
:type interval: int
|
|
866
|
+
:param target: Optional target. This object will produce the trail.
|
|
867
|
+
:type target: Any
|
|
868
|
+
:param attenuation: A function to define the width in each point along it.
|
|
869
|
+
:type attenuation: callable
|
|
870
|
+
|
|
871
|
+
Note: If `target` is not defined, Trail will use the first `Object3D` child as the target.
|
|
872
|
+
You can optionally define a custom meshLineMaterial to use.
|
|
873
|
+
|
|
874
|
+
Example Usage::
|
|
875
|
+
|
|
876
|
+
Trail(
|
|
877
|
+
width=0.2,
|
|
878
|
+
color='hotpink',
|
|
879
|
+
length=1,
|
|
880
|
+
decay=1,
|
|
881
|
+
local=False,
|
|
882
|
+
stride=0,
|
|
883
|
+
interval=1
|
|
884
|
+
)
|
|
885
|
+
"""
|
|
886
|
+
|
|
887
|
+
tag = "Trail"
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
class Center(SceneElement):
|
|
891
|
+
"""Centers its children by calculating their boundary box.
|
|
892
|
+
|
|
893
|
+
The Center component automatically centers child elements by calculating their bounding box.
|
|
894
|
+
It allows fine control over which axes to center along.
|
|
895
|
+
|
|
896
|
+
:param top: Align to top edge instead of center on Y axis
|
|
897
|
+
:type top: bool
|
|
898
|
+
:param right: Align to right edge instead of center on X axis
|
|
899
|
+
:type right: bool
|
|
900
|
+
:param bottom: Align to bottom edge instead of center on Y axis
|
|
901
|
+
:type bottom: bool
|
|
902
|
+
:param left: Align to left edge instead of center on X axis
|
|
903
|
+
:type left: bool
|
|
904
|
+
:param front: Align to front edge instead of center on Z axis
|
|
905
|
+
:type front: bool
|
|
906
|
+
:param back: Align to back edge instead of center on Z axis
|
|
907
|
+
:type back: bool
|
|
908
|
+
:param disable: Disable centering on all axes
|
|
909
|
+
:type disable: bool
|
|
910
|
+
:param disableX: Disable centering on X axis
|
|
911
|
+
:type disableX: bool
|
|
912
|
+
:param disableY: Disable centering on Y axis
|
|
913
|
+
:type disableY: bool
|
|
914
|
+
:param disableZ: Disable centering on Z axis
|
|
915
|
+
:type disableZ: bool
|
|
916
|
+
:param precise: Use precise boundary box calculation (default: True)
|
|
917
|
+
:type precise: bool
|
|
918
|
+
|
|
919
|
+
Example Usage::
|
|
920
|
+
|
|
921
|
+
Center(
|
|
922
|
+
top=True,
|
|
923
|
+
left=True,
|
|
924
|
+
children=[mesh]
|
|
925
|
+
)
|
|
926
|
+
"""
|
|
927
|
+
|
|
928
|
+
tag = "Center"
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
class Text3D(SceneElement):
|
|
932
|
+
"""Renders 3D text using ThreeJS's TextGeometry.
|
|
933
|
+
|
|
934
|
+
Text3D will suspend while loading the font data. It requires fonts in JSON format
|
|
935
|
+
generated through typeface.json, either as a path to a JSON file or a JSON object.
|
|
936
|
+
If you face display issues try checking "Reverse font direction" in the typeface tool.
|
|
937
|
+
|
|
938
|
+
:param font: Font URL or JSON object with font data
|
|
939
|
+
:type font: str
|
|
940
|
+
:param smooth: Merges vertices with a tolerance and calls computeVertexNormals
|
|
941
|
+
:type smooth: float
|
|
942
|
+
:param lineHeight: Line height in threejs units (default: 0)
|
|
943
|
+
:type lineHeight: float
|
|
944
|
+
:param letterSpacing: Letter spacing factor (default: 1)
|
|
945
|
+
:type letterSpacing: float
|
|
946
|
+
|
|
947
|
+
You can align the text using the Center component:
|
|
948
|
+
|
|
949
|
+
.. code-block:: python
|
|
950
|
+
|
|
951
|
+
Center(
|
|
952
|
+
Text3D(
|
|
953
|
+
"Hello world!",
|
|
954
|
+
font="fonts/helvetiker.json",
|
|
955
|
+
smooth=1,
|
|
956
|
+
lineHeight=0.5,
|
|
957
|
+
letterSpacing=-0.025
|
|
958
|
+
)
|
|
959
|
+
)
|
|
960
|
+
"""
|
|
961
|
+
|
|
962
|
+
tag = "Text3D"
|
|
963
|
+
|
|
964
|
+
def __init__(self, *text, font=None, smooth=None, lineHeight=0, letterSpacing=1, **kwargs):
|
|
965
|
+
super().__init__(*text, font=font, smooth=smooth, lineHeight=lineHeight, letterSpacing=letterSpacing, **kwargs)
|
|
966
|
+
|
|
967
|
+
|
|
806
968
|
class Scene(BlockElement):
|
|
807
969
|
tag = "Scene"
|
|
808
970
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: vuer
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.50
|
|
4
4
|
Home-page: https://github.com/vuer-ai/vuer
|
|
5
5
|
Author: Ge Yang<ge.ike.yang@gmail.com>
|
|
6
6
|
Author-email: ge.ike.yang@gmail.com
|
|
@@ -19,30 +19,35 @@ Provides-Extra: all
|
|
|
19
19
|
Requires-Dist: aiohttp==3.10.5; extra == "all"
|
|
20
20
|
Requires-Dist: aiohttp-cors; extra == "all"
|
|
21
21
|
Requires-Dist: killport; extra == "all"
|
|
22
|
+
Provides-Extra: example
|
|
23
|
+
Requires-Dist: aiohttp==3.10.5; extra == "example"
|
|
24
|
+
Requires-Dist: aiohttp-cors; extra == "example"
|
|
25
|
+
Requires-Dist: killport; extra == "example"
|
|
26
|
+
Requires-Dist: open3d<0.16.0,>=0.15.0; extra == "example"
|
|
27
|
+
Requires-Dist: trimesh; extra == "example"
|
|
28
|
+
Requires-Dist: cmx; extra == "example"
|
|
29
|
+
Requires-Dist: functional_notations; extra == "example"
|
|
30
|
+
Requires-Dist: ml_logger; extra == "example"
|
|
31
|
+
Requires-Dist: opencv-python; extra == "example"
|
|
22
32
|
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: cmx; extra == "dev"
|
|
23
34
|
Requires-Dist: aiohttp==3.10.5; extra == "dev"
|
|
24
35
|
Requires-Dist: aiohttp-cors; extra == "dev"
|
|
25
36
|
Requires-Dist: killport; extra == "dev"
|
|
26
|
-
Requires-Dist: black==22.3.0; extra == "dev"
|
|
27
37
|
Requires-Dist: pylint==2.13.4; extra == "dev"
|
|
28
38
|
Requires-Dist: pytest==7.1.2; extra == "dev"
|
|
29
39
|
Requires-Dist: sphinx==7.1.2; extra == "dev"
|
|
30
40
|
Requires-Dist: furo; extra == "dev"
|
|
31
41
|
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
42
|
+
Requires-Dist: sphinx_copybutton; extra == "dev"
|
|
43
|
+
Requires-Dist: sphinxcontrib-video; extra == "dev"
|
|
44
|
+
Requires-Dist: myst_parser; extra == "dev"
|
|
34
45
|
Requires-Dist: trimesh; extra == "dev"
|
|
35
46
|
Requires-Dist: tqdm; extra == "dev"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Requires-Dist: open3d<0.16.0,>=0.15.0; extra == "example"
|
|
41
|
-
Requires-Dist: trimesh; extra == "example"
|
|
42
|
-
Requires-Dist: cmx; extra == "example"
|
|
43
|
-
Requires-Dist: functional-notations; extra == "example"
|
|
44
|
-
Requires-Dist: ml-logger; extra == "example"
|
|
45
|
-
Requires-Dist: opencv-python; extra == "example"
|
|
47
|
+
Dynamic: author
|
|
48
|
+
Dynamic: author-email
|
|
49
|
+
Dynamic: home-page
|
|
50
|
+
Dynamic: license-file
|
|
46
51
|
|
|
47
52
|
<h2>Vuer: Modern High-Performance Visualization for AI & Robotics in VR
|
|
48
53
|
<br/>
|