vuer 0.0.44__py3-none-any.whl → 0.0.46__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-311.pyc +0 -0
- vuer/__pycache__/base.cpython-311.pyc +0 -0
- vuer/__pycache__/base.cpython-38.pyc +0 -0
- vuer/__pycache__/server.cpython-311.pyc +0 -0
- vuer/__pycache__/server.cpython-38.pyc +0 -0
- vuer/base.py +7 -7
- vuer/client_build/404.html +3 -3
- vuer/client_build/assets/chunks/chunk-18G0VHqw.js +2 -0
- vuer/client_build/assets/chunks/chunk-18G0VHqw.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-Bc6jPe19.js +283 -0
- vuer/client_build/assets/chunks/chunk-Bc6jPe19.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-Bkj5sU0H.js +2 -0
- vuer/client_build/assets/chunks/chunk-Bkj5sU0H.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-CZzxeY6d.js +2 -0
- vuer/client_build/assets/chunks/chunk-CZzxeY6d.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-Cg0OFbR3.js +16 -0
- vuer/client_build/assets/chunks/chunk-Cg0OFbR3.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-CgL2fCVp.js +8555 -0
- vuer/client_build/assets/chunks/chunk-CgL2fCVp.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-Cl2arkqa.js +7736 -0
- vuer/client_build/assets/chunks/chunk-Cl2arkqa.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-CmZvw6P9.js +2 -0
- vuer/client_build/assets/chunks/chunk-CmZvw6P9.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-CwRl4dQC.js +3 -0
- vuer/client_build/assets/chunks/chunk-CwRl4dQC.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-DXO4-vDe.js +2 -0
- vuer/client_build/assets/chunks/chunk-DXO4-vDe.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-IuGwgvtb.js +102 -0
- vuer/client_build/assets/chunks/chunk-IuGwgvtb.js.map +1 -0
- vuer/client_build/assets/chunks/chunk-WT4fnZC5.js +53 -0
- vuer/client_build/assets/chunks/chunk-WT4fnZC5.js.map +1 -0
- vuer/client_build/assets/entries/entry-client-routing.DygxbdMN.js +5 -0
- vuer/client_build/assets/entries/entry-client-routing.DygxbdMN.js.map +1 -0
- vuer/client_build/assets/entries/pages_editor.nNsIXIzJ.js +2 -0
- vuer/client_build/assets/entries/pages_editor.nNsIXIzJ.js.map +1 -0
- vuer/client_build/assets/entries/pages_error.BNv2Fuig.js +2 -0
- vuer/client_build/assets/entries/pages_error.BNv2Fuig.js.map +1 -0
- vuer/client_build/assets/entries/pages_index.D1BavadI.js +2 -0
- vuer/client_build/assets/entries/pages_index.D1BavadI.js.map +1 -0
- vuer/client_build/assets/entries/pages_simple.DYWd0uF8.js +2 -0
- vuer/client_build/assets/entries/pages_simple.DYWd0uF8.js.map +1 -0
- vuer/client_build/editor/index.html +5 -5
- vuer/client_build/index.html +5 -5
- vuer/client_build/simple/index.html +4 -4
- vuer/schemas/__pycache__/html_components.cpython-311.pyc +0 -0
- vuer/schemas/__pycache__/physics_components.cpython-311.pyc +0 -0
- vuer/schemas/__pycache__/physics_components.cpython-38.pyc +0 -0
- vuer/schemas/__pycache__/scene_components.cpython-311.pyc +0 -0
- vuer/schemas/scene_components.py +11 -10
- vuer/server.py +36 -16
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/METADATA +33 -30
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/RECORD +56 -22
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/WHEEL +1 -1
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/LICENSE +0 -0
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/entry_points.txt +0 -0
- {vuer-0.0.44.dist-info → vuer-0.0.46.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{R as L,d as H,J as B,r as l,j as s,H as K,i as q,a as J,b as X,c as k}from"../chunks/chunk-WT4fnZC5.js";import{V as G,T as W,F as Z,L as Q,Z as Y,b as v,_ as ee,a as re,H as g,$ as te,k as ne,c as ae,f as se,d as ie,j as x,G as w,l as j,z as S,D as F,E as b,y as E,e as oe,g as T,h as A,J as O,M as de,N as fe}from"../chunks/chunk-Cl2arkqa.js";import{X as ce,D as le}from"../chunks/chunk-Bc6jPe19.js";import"../chunks/chunk-D7HrI6pR.js";const P="%[a-f0-9]{2}",U=new RegExp("("+P+")|([^%]+?)","gi"),D=new RegExp("("+P+")+","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(U)||[];for(let t=1;t<r.length;t++)e=m(r,t).join(""),r=e.match(U)||[];return e}}function me(e){const r={"%FE%FF":"��","%FF%FE":"��"};let t=D.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=D.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 N(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 we(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 C(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 $(e){const r=e.indexOf("#");return r!==-1&&(e=e.slice(0,r)),e}function je(e){let r="";const t=e.indexOf("#");return t!==-1&&(r=e.slice(t)),r}function R(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=$(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},C(r.arrayFormatSeparator);const t=we(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]=N(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]=R(d,r,u)}else typeof o=="object"&&o!==null&&r.types[a]==="string"?n[a]=Object.values(o).join(r.arrayFormatSeparator):n[a]=R(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 z(e,r){if(!e)return"";r={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...r},C(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 M(e,r){var a;r={decode:!0,...r};let[t,n]=N(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 I(e,r){r={encode:!0,strict:!0,[y]:!0,...r};const t=$(e.url).split("?")[0]||"",n=h(e.url),a={...p(n,{sort:!1}),...e.query};let o=z(a,r);o&&(o=`?${o}`);let i=je(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}=M(e,t);return I({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:M,pick:_,stringify:z,stringifyUrl:I},Symbol.toStringTag,{value:"Module"}));typeof window<"u"&&(window.React=L,window.ReactDOM=H,window.VUER=G,window.THREE=W,window.JSX=B,window.FIBER=Z,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(w,{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(j,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.44-rc6",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(w,{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(j,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.44-rc6",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"})),Pe={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:k}},onPageTransitionEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:X}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:J}},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{Pe as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_editor.nNsIXIzJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_editor.nNsIXIzJ.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.44-rc6\"\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.44-rc6\"\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":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as r,j as o,i,a as n,b as l,c as d}from"../chunks/chunk-WT4fnZC5.js";function s(){const e=r();let{is404:t,abortReason:a}=e;return a||(a=t?"Page not found.":"Something went wrong."),o.jsx(p,{children:o.jsx("p",{style:{fontSize:"1.3em"},children:a})})}function p({style:e,...t}){return o.jsx("div",{style:{height:"calc(100vh - 100px)",display:"flex",justifyContent:"center",alignItems:"center",...e},...t})}const u=Object.freeze(Object.defineProperty({__proto__:null,Page:s},Symbol.toStringTag,{value:"Module"})),h={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:n}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onRenderClient.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:i}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/_error/+Page.tsx",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:u}}};export{h as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_error.BNv2Fuig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_error.BNv2Fuig.js","sources":["../../../../pages/_error/+Page.tsx"],"sourcesContent":["export { Page }\n\nimport React from 'react'\nimport { usePageContext } from '../../renderer/usePageContext'\n\nfunction Page() {\n const pageContext = usePageContext()\n let { is404, abortReason } = pageContext\n if (!abortReason) {\n abortReason = is404 ? 'Page not found.' : 'Something went wrong.'\n }\n return (\n <Center>\n <p style={{ fontSize: '1.3em' }}>{abortReason}</p>\n </Center>\n )\n}\n\nfunction Center({ style, ...props }: any) {\n return (\n <div\n style={{\n height: 'calc(100vh - 100px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n ...style\n }}\n {...props}\n ></div>\n )\n}\n"],"names":["Page","pageContext","usePageContext","is404","abortReason","jsx","Center","style","props"],"mappings":"8EAKA,SAASA,GAAO,CACd,MAAMC,EAAcC,EAAe,EAC/B,GAAA,CAAE,MAAAC,EAAO,YAAAC,CAAA,EAAgBH,EAC7B,OAAKG,IACHA,EAAcD,EAAQ,kBAAoB,yBAG1CE,EAAA,IAACC,EACC,CAAA,SAAAD,EAAAA,IAAC,IAAE,CAAA,MAAO,CAAE,SAAU,OAAY,EAAA,SAAAD,CAAA,CAAY,CAChD,CAAA,CAEJ,CAEA,SAASE,EAAO,CAAE,MAAAC,EAAO,GAAGC,GAAc,CAEtC,OAAAH,EAAA,IAAC,MAAA,CACC,MAAO,CACL,OAAQ,sBACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,GAAGE,CACL,EACC,GAAGC,CAAA,CACL,CAEL"}
|
|
@@ -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 c,b as f,c as m}from"../chunks/chunk-WT4fnZC5.js";import{V as w,T as h,F as T,L as y,Z as S,O as x,_ as g,P as E,l as P,z as j,D as v,E as D,y as R}from"../chunks/chunk-Cl2arkqa.js";import{X as U,D as z}from"../chunks/chunk-Bc6jPe19.js";import"../chunks/chunk-D7HrI6pR.js";const A="_main_ct6c1_1",_={main:A};typeof window<"u"&&(window.React=i,window.ReactDOM=l,window.VUER=w,window.THREE=h,window.JSX=d,window.FIBER=T,window.XR=U,window.Drei=z,window.LEVA=y,window.ZUSTAND=S);function V(){return e.jsx(E,{bgChildren:[e.jsx(j,{_key:"grid"},"grid"),e.jsx(v,{},"default-light-stage"),e.jsx(D,{},"hands"),e.jsx(R,{fps:30,stream:!0},"motion-controllers")],children:e.jsx(P,{_key:"contrib-loader-mujoco",library:"@vuer-ai/mujoco-ts",version:"0.0.44-rc6",main:"dist/index.umd.js"})})}function b(){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:_.main,children:e.jsx(x,{value:n,children:s?null:e.jsx(g,{children:e.jsx(V,{})})})})]})}const H=Object.freeze(Object.defineProperty({__proto__:null,default:b},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:f}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:c}},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:H}}};export{F as configValuesSerialized};
|
|
2
|
+
//# sourceMappingURL=pages_index.D1BavadI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_index.D1BavadI.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.44-rc6\"\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":"iXA4CI,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,aACR,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-Cl2arkqa.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.DYWd0uF8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages_simple.DYWd0uF8.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.
|
|
13
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
14
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
11
|
+
<script src="/assets/entries/entry-client-routing.DygxbdMN.js" type="module" async></script>
|
|
12
|
+
<link rel="modulepreload" href="/assets/entries/pages_editor.nNsIXIzJ.js" as="script" type="text/javascript">
|
|
13
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
14
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Cl2arkqa.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-Bc6jPe19.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.
|
|
13
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
14
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
11
|
+
<script src="/assets/entries/entry-client-routing.DygxbdMN.js" type="module" async></script>
|
|
12
|
+
<link rel="modulepreload" href="/assets/entries/pages_index.D1BavadI.js" as="script" type="text/javascript">
|
|
13
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
14
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Cl2arkqa.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-Bc6jPe19.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.
|
|
12
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
13
|
-
<link rel="modulepreload" href="/assets/chunks/chunk-
|
|
10
|
+
<script src="/assets/entries/entry-client-routing.DygxbdMN.js" type="module" async></script>
|
|
11
|
+
<link rel="modulepreload" href="/assets/entries/pages_simple.DYWd0uF8.js" as="script" type="text/javascript">
|
|
12
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-WT4fnZC5.js" as="script" type="text/javascript">
|
|
13
|
+
<link rel="modulepreload" href="/assets/chunks/chunk-Cl2arkqa.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
|
vuer/schemas/scene_components.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
from typing import List, Literal
|
|
2
|
+
|
|
1
3
|
import numpy as np
|
|
2
4
|
from numpy.typing import NDArray
|
|
3
|
-
from typing import List, Literal
|
|
4
5
|
|
|
5
|
-
from .html_components import BlockElement,
|
|
6
|
+
from .html_components import BlockElement, Element, Image
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class SceneElement(BlockElement):
|
|
@@ -355,7 +356,7 @@ class VideoPlane(Image, SceneElement):
|
|
|
355
356
|
tag = "VideoPlane"
|
|
356
357
|
|
|
357
358
|
|
|
358
|
-
class WebRTCVideoPlane(
|
|
359
|
+
class WebRTCVideoPlane(SceneElement):
|
|
359
360
|
"""A Head-up display (HUD) plane that is always facing the camera. Requires
|
|
360
361
|
mounting a material."""
|
|
361
362
|
|
|
@@ -369,7 +370,7 @@ class StereoVideoPlane(Image, SceneElement):
|
|
|
369
370
|
tag = "StereoVideoPlane"
|
|
370
371
|
|
|
371
372
|
|
|
372
|
-
class WebRTCStereoVideoPlane(
|
|
373
|
+
class WebRTCStereoVideoPlane(SceneElement):
|
|
373
374
|
"""A Head-up display (HUD) plane that is always facing the camera. Requires
|
|
374
375
|
mounting a material."""
|
|
375
376
|
|
|
@@ -606,17 +607,17 @@ class Hands(SceneElement):
|
|
|
606
607
|
def __init__(
|
|
607
608
|
self,
|
|
608
609
|
key="hands",
|
|
609
|
-
eventTypes=("squeeze",),
|
|
610
|
+
# eventTypes=("squeeze",),
|
|
610
611
|
stream=True,
|
|
611
|
-
disableLeft=
|
|
612
|
-
disableRight=
|
|
613
|
-
hideLeft=
|
|
614
|
-
hideRight=
|
|
612
|
+
disableLeft=False, # disables the left data stream, also hides the hand.
|
|
613
|
+
disableRight=False, # disables the right data stream, also hides the hand.
|
|
614
|
+
hideLeft=False, # hides the hand, but still streams the data.
|
|
615
|
+
hideRight=False, # hides the hand, but still streams the data.
|
|
615
616
|
**kwargs,
|
|
616
617
|
):
|
|
617
618
|
super().__init__(
|
|
618
619
|
key=key,
|
|
619
|
-
eventTypes=eventTypes,
|
|
620
|
+
# eventTypes=eventTypes,
|
|
620
621
|
stream=stream,
|
|
621
622
|
disableLeft=disableLeft,
|
|
622
623
|
disableRight=disableRight,
|
vuer/server.py
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
from asyncio import sleep
|
|
3
|
-
from collections import
|
|
3
|
+
from collections import defaultdict, deque
|
|
4
4
|
from functools import partial
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import Callable, Dict, Union, cast
|
|
7
7
|
from uuid import uuid4
|
|
8
8
|
|
|
9
9
|
from aiohttp.hdrs import UPGRADE
|
|
10
|
-
from aiohttp.web_request import
|
|
10
|
+
from aiohttp.web_request import BaseRequest, Request
|
|
11
11
|
from aiohttp.web_response import Response
|
|
12
12
|
from aiohttp.web_ws import WebSocketResponse
|
|
13
13
|
from msgpack import packb, unpackb
|
|
14
|
-
from params_proto import
|
|
14
|
+
from params_proto import Flag, PrefixProto, Proto
|
|
15
15
|
from websockets import ConnectionClosedError
|
|
16
16
|
|
|
17
17
|
from vuer.base import Server, handle_file_request, websocket_handler
|
|
18
18
|
from vuer.events import (
|
|
19
|
+
INIT,
|
|
20
|
+
NOOP,
|
|
21
|
+
Add,
|
|
19
22
|
ClientEvent,
|
|
23
|
+
Frame,
|
|
24
|
+
GrabRender,
|
|
20
25
|
NullEvent,
|
|
26
|
+
Remove,
|
|
21
27
|
ServerEvent,
|
|
22
|
-
|
|
23
|
-
Frame,
|
|
28
|
+
ServerRPC,
|
|
24
29
|
Set,
|
|
25
30
|
Update,
|
|
26
|
-
INIT,
|
|
27
|
-
Remove,
|
|
28
|
-
Add,
|
|
29
|
-
ServerRPC,
|
|
30
|
-
GrabRender,
|
|
31
31
|
Upsert,
|
|
32
32
|
)
|
|
33
33
|
from vuer.schemas import Page
|
|
@@ -755,6 +755,25 @@ class Vuer(PrefixProto, Server):
|
|
|
755
755
|
else:
|
|
756
756
|
return await websocket_handler(request, self.downlink)
|
|
757
757
|
|
|
758
|
+
def add_route(self, path, fn: Callable, method="GET", content_type="text/html"):
|
|
759
|
+
if self.verbose:
|
|
760
|
+
print("========= Adding Route =========")
|
|
761
|
+
print(" path:", path)
|
|
762
|
+
print(" fn:", fn)
|
|
763
|
+
print(" method:", method)
|
|
764
|
+
print("content_type:", content_type)
|
|
765
|
+
print("--------------------------------")
|
|
766
|
+
|
|
767
|
+
async def handler(request: Request):
|
|
768
|
+
try:
|
|
769
|
+
output = fn()
|
|
770
|
+
return Response(text=output, content_type=content_type)
|
|
771
|
+
except Exception as e:
|
|
772
|
+
print("\033[91m" + str(e) + "\033[0m", flush=True)
|
|
773
|
+
return Response(status=500, text=str(e))
|
|
774
|
+
|
|
775
|
+
self._add_route(path, handler, method=method)
|
|
776
|
+
|
|
758
777
|
def run(self, kill=None, *args, **kwargs):
|
|
759
778
|
import os
|
|
760
779
|
|
|
@@ -762,6 +781,7 @@ class Vuer(PrefixProto, Server):
|
|
|
762
781
|
# port = int(_)
|
|
763
782
|
if kill or self.free_port:
|
|
764
783
|
import time
|
|
784
|
+
|
|
765
785
|
from killport import kill_ports
|
|
766
786
|
|
|
767
787
|
kill_ports(ports=[self.port])
|
|
@@ -772,14 +792,14 @@ class Vuer(PrefixProto, Server):
|
|
|
772
792
|
# self._static_file("", Path(__file__).parent / "client_build", filename="index.html")
|
|
773
793
|
|
|
774
794
|
# use the same endpoint for websocket and file serving.
|
|
775
|
-
self.
|
|
776
|
-
self.
|
|
777
|
-
self.
|
|
795
|
+
self._add_route("", self.socket_index, method="GET")
|
|
796
|
+
self._add_static("/assets", self.client_root / "assets")
|
|
797
|
+
self._static_file("/editor", self.client_root, "editor/index.html")
|
|
778
798
|
|
|
779
799
|
# serve local files via /static endpoint
|
|
780
|
-
self.
|
|
800
|
+
self._add_static("/static", self.static_root)
|
|
781
801
|
print("Serving file://" + os.path.abspath(self.static_root), "at", "/static")
|
|
782
|
-
self.
|
|
802
|
+
self._add_route("/relay", self.relay, method="POST")
|
|
783
803
|
|
|
784
804
|
print("Visit: " + self.get_url())
|
|
785
805
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: vuer
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.46
|
|
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
|
|
@@ -10,39 +10,42 @@ Classifier: Programming Language :: Python
|
|
|
10
10
|
Requires-Python: >=3.7
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist: params-proto
|
|
13
|
+
Requires-Dist: params-proto>=2.13.0
|
|
14
14
|
Requires-Dist: pillow
|
|
15
15
|
Requires-Dist: msgpack
|
|
16
|
-
Requires-Dist: numpy
|
|
16
|
+
Requires-Dist: numpy>=1.21
|
|
17
17
|
Requires-Dist: websockets
|
|
18
18
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: aiohttp
|
|
20
|
-
Requires-Dist: aiohttp-cors
|
|
21
|
-
Requires-Dist: killport
|
|
22
|
-
Provides-Extra: dev
|
|
23
|
-
Requires-Dist: aiohttp ==3.10.5 ; extra == 'dev'
|
|
24
|
-
Requires-Dist: aiohttp-cors ; extra == 'dev'
|
|
25
|
-
Requires-Dist: killport ; extra == 'dev'
|
|
26
|
-
Requires-Dist: black ==22.3.0 ; extra == 'dev'
|
|
27
|
-
Requires-Dist: pylint ==2.13.4 ; extra == 'dev'
|
|
28
|
-
Requires-Dist: pytest ==7.1.2 ; extra == 'dev'
|
|
29
|
-
Requires-Dist: sphinx ==7.1.2 ; extra == 'dev'
|
|
30
|
-
Requires-Dist: furo ; extra == 'dev'
|
|
31
|
-
Requires-Dist: sphinx-autobuild ; extra == 'dev'
|
|
32
|
-
Requires-Dist: sphinx-copybutton ; extra == 'dev'
|
|
33
|
-
Requires-Dist: myst-parser ; extra == 'dev'
|
|
34
|
-
Requires-Dist: trimesh ; extra == 'dev'
|
|
35
|
-
Requires-Dist: tqdm ; extra == 'dev'
|
|
19
|
+
Requires-Dist: aiohttp==3.10.5; extra == "all"
|
|
20
|
+
Requires-Dist: aiohttp-cors; extra == "all"
|
|
21
|
+
Requires-Dist: killport; extra == "all"
|
|
36
22
|
Provides-Extra: example
|
|
37
|
-
Requires-Dist: aiohttp
|
|
38
|
-
Requires-Dist: aiohttp-cors
|
|
39
|
-
Requires-Dist: killport
|
|
40
|
-
Requires-Dist: open3d
|
|
41
|
-
Requires-Dist: trimesh
|
|
42
|
-
Requires-Dist: cmx
|
|
43
|
-
Requires-Dist:
|
|
44
|
-
Requires-Dist:
|
|
45
|
-
Requires-Dist: opencv-python
|
|
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"
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: aiohttp==3.10.5; extra == "dev"
|
|
34
|
+
Requires-Dist: aiohttp-cors; extra == "dev"
|
|
35
|
+
Requires-Dist: killport; extra == "dev"
|
|
36
|
+
Requires-Dist: black==22.3.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pylint==2.13.4; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest==7.1.2; extra == "dev"
|
|
39
|
+
Requires-Dist: sphinx==7.1.2; extra == "dev"
|
|
40
|
+
Requires-Dist: furo; extra == "dev"
|
|
41
|
+
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
42
|
+
Requires-Dist: sphinx_copybutton; extra == "dev"
|
|
43
|
+
Requires-Dist: myst_parser; extra == "dev"
|
|
44
|
+
Requires-Dist: trimesh; extra == "dev"
|
|
45
|
+
Requires-Dist: tqdm; extra == "dev"
|
|
46
|
+
Dynamic: author
|
|
47
|
+
Dynamic: author-email
|
|
48
|
+
Dynamic: home-page
|
|
46
49
|
|
|
47
50
|
<h2>Vuer: Modern High-Performance Visualization for AI & Robotics in VR
|
|
48
51
|
<br/>
|