@web-noise/core 0.0.1 → 0.0.4

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.
package/dist/module.js CHANGED
@@ -1,10 +1,10 @@
1
- let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{withTheme as i,ThemeProvider as l,Global as a,css as d,useTheme as s}from"@emotion/react";import c from"@emotion/styled";import{nanoid as h}from"nanoid";import{useState as p,useEffect as g,useMemo as u,useCallback as m,useRef as f}from"react";import{FaPlus as v}from"react-icons/fa6";import{MdClose as y,MdDragHandle as x,MdSettings as w}from"react-icons/md";import"reactflow/dist/style.css";import b,{getConnectedEdges as C,addEdge as $,applyNodeChanges as N,applyEdgeChanges as k,useOnViewportChange as P,Background as z,BackgroundVariant as E,MiniMap as j,Controls as A,ReactFlowProvider as S,useReactFlow as M,Position as F,Handle as D,ControlButton as T,getBezierPath as H}from"reactflow";import{create as W}from"zustand";import{reverse as _,patch as O,create as I}from"jsondiffpatch";import{injectGlobal as L}from"@emotion/css";import{useContextMenu as R,Item as B,Menu as G,Separator as V}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import U from"js-file-download";import J from"hotkeys-js";import{FileDrop as X}from"react-file-drop";import{FaFileUpload as Y,FaQuestion as q,FaVolumeOff as K,FaMap as Q,FaRegMap as Z}from"react-icons/fa";import{Resizable as ee}from"re-resizable";import eo from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as et,AiFillUnlock as er}from"react-icons/ai";import{RxDashboard as en}from"react-icons/rx";import ei from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as el}from"marked";function ea(e){return e&&e.__esModule?e.default:e}let ed=[],es={},ec=new URL(ea("data:application/javascript,class%20e%20extends%20AudioWorkletProcessor%7Bprocess%28%29%7Breturn%210%7D%7DregisterProcessor%28%22dump-node-processor%22%2Ce%29%3Bexport%7Be%20as%20DumpNodeProcessor%7D%3B"),"file:///packages/patch/src/createPatch.ts"),eh="web-noise-drag-handle",ep=`.${eh}`,eg=10,eu=e=>JSON.parse(JSON.stringify(e)),em=(e,o)=>{let t=new Set(e.map(e=>e.id)),r=new Set(o.map(e=>e.id));return{added:o.filter(e=>!t.has(e.id)),removed:e.filter(e=>!r.has(e.id))}};var ef=W((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:N(o,e).map(e=>({dragHandle:ep,...e}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:k(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:$(o,e)}))},addNode:o=>{e(({nodes:e})=>({nodes:e.concat(o)}))},setNodes:o=>{e({nodes:o})},setEdges:o=>{e({edges:o})},setNodesAndEdges:({nodes:o,edges:t})=>{e({nodes:o,edges:t})},getNodesAndEdges:()=>{let{nodes:e,edges:t}=o();return{nodes:e,edges:t}},clearElements:()=>{e({nodes:[],edges:[]})},getNode:e=>{let{nodes:t}=o();return t.find(o=>o.id===e)||null},updateNodeData:(o,t)=>{e(({nodes:e})=>({nodes:e.map(e=>e.id===o?{...e,data:{...e.data,...t}}:e)}))},nodeTypes:{},setNodeTypes:o=>e({nodeTypes:o})}))(...e),...((e,o)=>({history:{maxHistoryLength:5,buffer:[],pointer:0,skipCollect:!1,push:t=>{let{history:r}=o(),{maxHistoryLength:n,skipCollect:i}=r;if(i)return void e({history:{...r,skipCollect:!1}});e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:r}=e,i=o.slice(Math.max(r-n+1,0),r);return{history:{...e,buffer:[...i,t],pointer:Math.min(r+1,n)}}})},back:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,d=l[a-1];if(!d)return;let s=_(d);s&&e({...O(eu({nodes:t,edges:r,controlPanel:n}),s),history:{...i,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,d=l[a];d&&e({...O(eu({nodes:t,edges:r,controlPanel:n}),d),history:{...i,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:((e=new AudioContext)=>{let o=e.audioWorklet.addModule(ec).then(()=>new AudioWorkletNode(e,"dump-node-processor")),t=new Map,r=new Map,n=async r=>{let{id:n,type:i,data:l}=r;if(!i)return void t.set(n,{loading:!1,error:Error(`Node: ${n} has no type`),node:null});let a=es[i];if(!1!==a){if(!a)return void t.set(n,{loading:!1,error:Error(`Could not find handler for audio type ${i}`),node:null});t.set(n,{loading:!0,error:null,node:null});try{let r=await a(e,l),i=await o;t.set(n,{loading:!1,error:null,node:r}),Object.values(r.outputs||[]).forEach(({port:e})=>{i&&(e instanceof AudioWorkletNode&&e.connect(i),Array.isArray(e)&&e[0]instanceof AudioWorkletNode&&e[0].connect(i,e[1]))})}catch(e){t.set(n,{loading:!1,error:e,node:null})}}},i=async e=>Promise.all(e.map(n)),l=e=>{let{id:o,data:r}=e,n=t.get(o);if(!n)return void console.error(`Audio node #${o} does not exist`);let{loading:i,error:l,node:a}=n;return i?void console.error(`Audio node #${o} is yet not loaded`):l?void console.error(`Audio node #${o} is in error state: ${l.toString()}`):void(a.destroy&&a.destroy(),Object.values(a.inputs||{}).forEach(({port:e})=>e instanceof AudioNode&&e.disconnect&&e.disconnect()),Object.values(a.outputs||{}).forEach(({port:e})=>e instanceof AudioNode&&e.disconnect&&e.disconnect()),t.delete(o))},a=e=>{let{source:o,sourceHandle:n,target:i,targetHandle:l,id:a}=e,{node:d}=t.get(o)||{};if(!d)return void console.error(`can't find source node ${o}`);if(!n)return void console.error(`source handle is not defined in node ${o}`);let s=d.outputs?.[n],c=s?.port,{node:h}=t.get(i)||{};if(!h)return void console.error(`can't find target node ${h}`);if(!l)return void console.error(`source handle is not defined in node ${d}`);let p=h.inputs?.[l],g=p?.port;if(!c)return void console.error(`Can't find output port: ${o}:${n}`);if(!g)return void console.error(`Can't find input port: ${i}:${l}`);let u=g instanceof AudioNode,m=g instanceof AudioParam,f=g instanceof Array,v=u||m,y=c instanceof AudioNode,x=c instanceof Array;y&&v?c.connect(g):y&&f?c.connect(g[0],0,g[1]):x&&v?c[0].connect(g,c[1]):x&&f?c[0].connect(g[0],c[1],g[1]):(console.log(c,g),console.error("ports can be only AudioNode or AudioNodeChannel")),r.set(a,{output:s,input:p})},d=e=>{let{id:o,data:t}=e,n=r.get(o);if(!n)return void console.error(`can't find connection with id: ${o}`);let{input:{port:i},output:{port:l}}=n,a=i instanceof AudioNode,d=i instanceof AudioParam,s=i instanceof Array,c=a||d,h=l instanceof AudioNode,p=l instanceof Array;if(h&&c)l.disconnect(i);else if(h&&s)l.disconnect(i[0],0,i[1]);else if(p&&c)l[0].disconnect(i,l[1]);else if(p&&s)l[0].disconnect(i[0],l[1],i[1]);else throw console.log(l,i),Error("output port can not be only AudioNode or AudioNodeChannel");r.delete(o)};return{audioContext:e,audioNodes:t,registerAudioNode:n,registerAudioNodes:i,unregisterAudioNode:l,unregisterAudioNodes:e=>e.map(l),audioConnections:r,registerAudioConnection:a,registerAudioConnections:e=>e.map(a),unregisterAudioConnection:d,unregisterAudioConnections:e=>e.map(d)}})(),nodesState:{}}))(...e),...((e,o)=>({project:{files:[]},setProject(o){e({project:o,currentFileIndex:0})},getProject:()=>o().project,pullEditorChanges(){let{getEditorState:e,currentFileIndex:t,updateFileContent:r,project:n}=o(),i=n.files[t];r(t,{...i,file:e()})},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),n=[...r.files,t];e({project:{...r,files:n},currentFileIndex:n.length-1})},deleteFile:t=>{let{project:r,currentFileIndex:n}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=n&&e({currentFileIndex:n-1})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:n,createEdges:i,setNodesAndEdges:l,nodes:a,edges:d}=t();l({nodes:[],edges:[]}),await n(e),i(o)},clearGraph:()=>{let{setGraph:e}=t();e({nodes:[],edges:[]})},createNodes:async e=>{let{createNode:o}=t();await Promise.all(e.map(e=>o(e)))},createNode:e=>{let{addNode:o,nodesConfiguration:r}=t(),{type:n,id:i,data:l}=e;if(void 0===n)throw Error(`node type is not defined for node: ${i}`);o({...e,data:{...l,config:{...r[n]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:r,nodes:n,onNodesDelete:i,removeEdges:l,removeNodesFromControlPanel:a}=t(),d=e.map(({id:e})=>e),s=[...e,...n.filter(({parentNode:e})=>e&&d.includes(e))];a(s),l(C(s,r)),i(s);let c=s.map(({id:e})=>e);o({nodes:n.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:r,onEdgesDelete:n}=t(),i=e.map(({id:e})=>e);n(e),o({edges:r.filter(({id:e})=>!i.includes(e))})},createEdges:e=>{let{patch:o,edges:r,setEdges:n}=t();n(e)},onConnect:async e=>{let{edges:o,createEdges:r}=t();r($(e,o))},onEdgesDelete:e=>{let{patch:o}=t()},onNodesDelete:async e=>{let{removeNodesFromControlPanel:o,patch:r}=t();o(e)},plugins:[],setPlugins:async e=>{let{setNodeTypes:r}=t();o({plugins:e});let n=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),i=Object.keys(n).reduce((e,o)=>({...e,[o]:n[o].node}),{});Object.assign(es,Object.keys(n).reduce((e,o)=>({...e,[o]:n[o].audioNode}),{})),r(i),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...n}}))},nodesConfiguration:{},config:{showMinimap:!1},setConfig:e=>{o(({config:o})=>({config:{...o,...e}}))},getEditorState:()=>{let{getNodesAndEdges:e,controlPanel:o,viewport:r}=t();return{...e(),controlPanel:o,viewport:r}},setEditorState:async({nodes:e,edges:r,controlPanel:n,viewport:i})=>{let{setGraph:l}=t();await l({nodes:e,edges:r}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:n,viewport:i})},isHelpShown:!1,toggleHelp:()=>{let{isHelpShown:e}=t();o({isHelpShown:!e})},copyBuffer:{nodes:[],edges:[]},copy:e=>{o({copyBuffer:e})},copySelectedItems:()=>{let{nodes:e,edges:o,copy:r}=t(),n=e.filter(({selected:e})=>e),i=o.filter(({selected:e})=>e);n.length&&r({nodes:n,edges:i})},pasteBuffer:(e=0,r=0)=>{let{copyBuffer:n,createNodes:i,setEdges:l,nodes:a,edges:d}=t(),{nodes:s,edges:c}=n;if(!s.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let h=s.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),p=h.position.x-e,g=h.position.y-r,{nodes:u,mapping:m}=s.reduce((e,o)=>{let t=(e=>{let o=+new Date+Math.floor(1e3*Math.random());return e?.type?`${e.type}-${o}`:o.toString()})(o);return{nodes:[...e.nodes,{...o,id:t,position:{x:o.position.x-p,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:t}}},{nodes:[],mapping:{}});i(u);let f=c.map(e=>{let o=m[e.source]||e.source,t=m[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...d.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:r}=e;if(!r)return null;let n=o[r]?.controlPanelNode;return n||(console.error(`could not find node for type ${r}`),null)},controlPanel:{show:!0,nodes:[],size:{width:200,height:100}},showControlPanel:()=>o(({controlPanel:e})=>({controlPanel:{...e,show:!0}})),hideControlPanel:()=>o(({controlPanel:e})=>({controlPanel:{...e,show:!1}})),addNodeToControlPanel:e=>{let{nodesConfiguration:r}=t(),n=e.type?r[e.type]?.defaultConfig:{},{height:i}=n?.size||{},l={id:e.id,...i?{height:i/eg}:{}};o(({controlPanel:e})=>({controlPanel:{...e,nodes:[...e.nodes,l]}}))},removeNodeFromControlPanel:e=>t().removeNodesFromControlPanel([e]),removeNodesFromControlPanel:e=>{let t=e.map(({id:e})=>e);o(({controlPanel:e})=>{let o=e.nodes.filter(({id:e})=>!t.includes(e));return{controlPanel:{...e,nodes:o}}})},setControlPanelNodes:e=>{o(({controlPanel:o})=>({controlPanel:{...o,nodes:e}}))},setControlPanelSize:e=>{o(({controlPanel:o})=>({controlPanel:{...o,size:e}}))},viewport:{x:0,y:0,zoom:1},setViewport:e=>o({viewport:e})}},o=(o,t,r)=>{let n=((e,o)=>{let t,r=I({propertyFilter:(e,o)=>!!(o.parent?.parent?.childName==="controlPanel"||["data","position","controlPanel"].includes(o.parent?.childName))||["controlPanel","size","edges","nodes","data","label","config","values","position","x","y"].includes(e)}),n=o();return(e,i)=>{e.currentFileIndex!==i.currentFileIndex&&o().history.clear(),clearTimeout(t),n||(n=i),t=setTimeout(()=>{let t=r.diff(n,e);n=null,t&&o().history.push(t)},500)}})(0,t);return r.subscribe(n),e((...e)=>o(...e),t,r)},(e,t,r)=>{r.subscribe(async(e,o)=>{});let n=new Set,i={...t(),nodes:[],edges:[]};return o(async(...o)=>{let r=t(),[l]=o,a={...i,..."function"==typeof l?l({...i}):l},d=em(i.nodes,a.nodes),s=em(i.edges,a.edges);i=a;let c=d.added,h=s.added,p=s.removed,g=d.removed,{patch:u}=r;if(c.length){let e=u.registerAudioNodes(c);n.add(e),await e,n.delete(e)}if(!(h.length||p.length||g.length))return void e(...o);if(n.size)try{await Promise.all([...n.values()])}catch(e){console.log("some error",e)}h.length&&u.registerAudioConnections(h),p.length&&u.unregisterAudioConnections(p),g.length&&u.unregisterAudioNodes(g),e(...o)},t,r)})),ev={colors:{elevation1:"#292d39",elevation2:"#181c20",elevation3:"#373c4b",accent1:"#0066dc",accent2:"#007bff",accent3:"#3c93ff",highlight1:"#535760",highlight2:"#8c92a4",highlight3:"#fefefe",vivid1:"#14df42",whitePrimary:"#ffffff",error:"#db5353"},zIndex:{modal:9998,controlPanel:9999,resumeContextLayout:10003}};L`
1
+ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{withTheme as i,ThemeProvider as l,Global as a,css as d,useTheme as s}from"@emotion/react";import c from"@emotion/styled";import{nanoid as p}from"nanoid";import{useState as h,useEffect as u,useMemo as g,useCallback as m,useRef as f}from"react";import{FaPlus as v}from"react-icons/fa6";import{MdClose as y,MdDragHandle as b,MdSettings as x,MdInfoOutline as w}from"react-icons/md";import"reactflow/dist/style.css";import C,{getConnectedEdges as $,addEdge as k,applyNodeChanges as N,applyEdgeChanges as P,useOnViewportChange as z,Background as A,BackgroundVariant as j,MiniMap as E,Controls as M,ReactFlowProvider as S,useReactFlow as F,Position as T,Handle as D,ControlButton as H,getBezierPath as O}from"reactflow";import{create as _}from"zustand";import{reverse as L,patch as I,create as W}from"jsondiffpatch";import{injectGlobal as R}from"@emotion/css";import{useContextMenu as B,Item as V,Menu as G,Separator as U}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import J from"js-file-download";import X from"hotkeys-js";import{createPortal as Y}from"react-dom";import{FileDrop as q}from"react-file-drop";import{FaFileUpload as K,FaQuestion as Q,FaVolumeOff as Z,FaMap as ee,FaRegMap as eo}from"react-icons/fa";import{Resizable as et}from"re-resizable";import er from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as en,AiFillUnlock as ei}from"react-icons/ai";import{RxDashboard as el}from"react-icons/rx";import ea from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ed}from"marked";function es(e){return e&&e.__esModule?e.default:e}let ec=[],ep={};let eh=new URL(es("data:application/javascript,class%20e%20extends%20AudioWorkletProcessor%7Bprocess%28%29%7Breturn%210%7D%7DregisterProcessor%28%22dump-node-processor%22%2Ce%29%3Bexport%7Be%20as%20DumpNodeProcessor%7D%3B"),"file:///packages/patch/src/createPatch.ts"),eu="web-noise-drag-handle",eg=`.${eu}`,em=10;(ey=eb||(eb={})).Gate="gate",ey.Number="number",ey.Audio="audio",ey.Any="any";let ef=e=>JSON.parse(JSON.stringify(e)),ev=(e,o)=>{let t=new Set(e.map(e=>e.id)),r=new Set(o.map(e=>e.id));return{added:o.filter(e=>!t.has(e.id)),removed:e.filter(e=>!r.has(e.id))}};var ey,eb,ex=_((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:N(o,e).map(e=>({dragHandle:eg,...e}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:P(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:k(o,e)}))},addNode:o=>{e(({nodes:e})=>({nodes:e.concat(o)}))},setNodes:o=>{e({nodes:o})},setEdges:o=>{e({edges:o})},setNodesAndEdges:({nodes:o,edges:t})=>{e({nodes:o,edges:t})},getNodesAndEdges:()=>{let{nodes:e,edges:t}=o();return{nodes:e,edges:t}},clearElements:()=>{e({nodes:[],edges:[]})},getNode:e=>{let{nodes:t}=o();return t.find(o=>o.id===e)||null},updateNodeData:(o,t)=>{e(({nodes:e})=>({nodes:e.map(e=>e.id===o?{...e,data:{...e.data,...t}}:e)}))},nodeTypes:{},setNodeTypes:o=>e({nodeTypes:o})}))(...e),...((e,o)=>({history:{maxHistoryLength:5,buffer:[],pointer:0,skipCollect:!1,push:t=>{let{history:r}=o(),{maxHistoryLength:n,skipCollect:i}=r;if(i)return void e({history:{...r,skipCollect:!1}});e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:r}=e,i=o.slice(Math.max(r-n+1,0),r);return{history:{...e,buffer:[...i,t],pointer:Math.min(r+1,n)}}})},back:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,d=l[a-1];if(!d)return;let s=L(d);s&&e({...I(ef({nodes:t,edges:r,controlPanel:n}),s),history:{...i,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,d=l[a];d&&e({...I(ef({nodes:t,edges:r,controlPanel:n}),d),history:{...i,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:((e=new AudioContext)=>{let o=e.audioWorklet.addModule(eh).then(()=>new AudioWorkletNode(e,"dump-node-processor")),t=new Map,r=new Map,n=async r=>{let{id:n,type:i,data:l}=r;if(!i)return void t.set(n,{loading:!1,error:Error(`Node: ${n} has no type`),node:null});let a=ep[i];if(!1!==a){if(!a)return void t.set(n,{loading:!1,error:Error(`Could not find handler for audio type ${i}`),node:null});t.set(n,{loading:!0,error:null,node:null});try{let r=await a(e,l),i=await o;t.set(n,{loading:!1,error:null,node:r}),Object.values(r.outputs||[]).forEach(({port:e})=>{i&&(e instanceof AudioWorkletNode&&e.connect(i),Array.isArray(e)&&e[0]instanceof AudioWorkletNode&&e[0].connect(i,e[1]))})}catch(e){t.set(n,{loading:!1,error:e,node:null})}}},i=async e=>Promise.all(e.map(n)),l=e=>{let{id:o,data:r}=e,n=t.get(o);if(!n)return void console.error(`Audio node #${o} does not exist`);let{loading:i,error:l,node:a}=n;return i?void console.error(`Audio node #${o} is yet not loaded`):l?void console.error(`Audio node #${o} is in error state: ${l.toString()}`):void(a.destroy&&a.destroy(),Object.values(a.inputs||{}).forEach(({port:e})=>e instanceof AudioNode&&e.disconnect&&e.disconnect()),Object.values(a.outputs||{}).forEach(({port:e})=>e instanceof AudioNode&&e.disconnect&&e.disconnect()),t.delete(o))},a=e=>{let{source:o,sourceHandle:n,target:i,targetHandle:l,id:a}=e,{node:d}=t.get(o)||{};if(!d)return void console.error(`can't find source node ${o}`);if(!n)return void console.error(`source handle is not defined in node ${o}`);let s=d.outputs?.[n],c=s?.port,{node:p}=t.get(i)||{};if(!p)return void console.error(`can't find target node ${p}`);if(!l)return void console.error(`source handle is not defined in node ${d}`);let h=p.inputs?.[l],u=h?.port;if(!c)return void console.error(`Can't find output port: ${o}:${n}`);if(!u)return void console.error(`Can't find input port: ${i}:${l}`);let g=u instanceof AudioNode,m=u instanceof AudioParam,f=u instanceof Array,v=g||m,y=c instanceof AudioNode,b=c instanceof Array;y&&v?c.connect(u):y&&f?c.connect(u[0],0,u[1]):b&&v?c[0].connect(u,c[1]):b&&f?c[0].connect(u[0],c[1],u[1]):(console.log(c,u),console.error("ports can be only AudioNode or AudioNodeChannel")),r.set(a,{output:s,input:h})},d=e=>{let{id:o,data:t}=e,n=r.get(o);if(!n)return void console.error(`can't find connection with id: ${o}`);let{input:{port:i},output:{port:l}}=n,a=i instanceof AudioNode,d=i instanceof AudioParam,s=i instanceof Array,c=a||d,p=l instanceof AudioNode,h=l instanceof Array;if(p&&c)l.disconnect(i);else if(p&&s)l.disconnect(i[0],0,i[1]);else if(h&&c)l[0].disconnect(i,l[1]);else if(h&&s)l[0].disconnect(i[0],l[1],i[1]);else throw console.log(l,i),Error("output port can not be only AudioNode or AudioNodeChannel");r.delete(o)};return{audioContext:e,audioNodes:t,registerAudioNode:n,registerAudioNodes:i,unregisterAudioNode:l,unregisterAudioNodes:e=>e.map(l),audioConnections:r,registerAudioConnection:a,registerAudioConnections:e=>e.map(a),unregisterAudioConnection:d,unregisterAudioConnections:e=>e.map(d)}})(),nodesState:{}}))(...e),...((e,o)=>({project:{files:[]},setProject(o){e({project:o,currentFileIndex:0})},getProject:()=>o().project,pullEditorChanges(){let{getEditorState:e,currentFileIndex:t,updateFileContent:r,project:n}=o(),i=n.files[t];r(t,{...i,file:e()})},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),n=[...r.files,t];e({project:{...r,files:n},currentFileIndex:n.length-1})},deleteFile:t=>{let{project:r,currentFileIndex:n}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=n&&e({currentFileIndex:n-1})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:n,createEdges:i,setNodesAndEdges:l,nodes:a,edges:d}=t();l({nodes:[],edges:[]}),await n(e),i(o)},clearGraph:()=>{let{setGraph:e}=t();e({nodes:[],edges:[]})},createNodes:async e=>{let{createNode:o}=t();await Promise.all(e.map(e=>o(e)))},createNode:e=>{let{addNode:o,nodesConfiguration:r}=t(),{type:n,id:i,data:l}=e;if(void 0===n)throw Error(`node type is not defined for node: ${i}`);o({...e,data:{...l,config:{...r[n]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:r,nodes:n,onNodesDelete:i,removeEdges:l,removeNodesFromControlPanel:a}=t(),d=e.map(({id:e})=>e),s=[...e,...n.filter(({parentNode:e})=>e&&d.includes(e))];a(s),l($(s,r)),i(s);let c=s.map(({id:e})=>e);o({nodes:n.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:r,onEdgesDelete:n}=t(),i=e.map(({id:e})=>e);n(e),o({edges:r.filter(({id:e})=>!i.includes(e))})},createEdges:e=>{let{patch:o,edges:r,setEdges:n}=t();n(e)},onConnect:async e=>{let{edges:o,createEdges:r}=t();r(k(e,o))},onEdgesDelete:e=>{let{patch:o}=t()},onNodesDelete:async e=>{let{removeNodesFromControlPanel:o,patch:r}=t();o(e)},plugins:[],setPlugins:async e=>{let{setNodeTypes:r}=t();o({plugins:e});let n=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),i=Object.keys(n).reduce((e,o)=>({...e,[o]:n[o].node}),{});Object.assign(ep,Object.keys(n).reduce((e,o)=>({...e,[o]:n[o].audioNode}),{})),r(i),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...n}}))},nodesConfiguration:{},config:{showMinimap:!1},setConfig:e=>{o(({config:o})=>({config:{...o,...e}}))},getEditorState:()=>{let{getNodesAndEdges:e,controlPanel:o,viewport:r}=t();return{...e(),controlPanel:o,viewport:r}},setEditorState:async({nodes:e,edges:r,controlPanel:n,viewport:i})=>{let{setGraph:l}=t();await l({nodes:e,edges:r}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:n,viewport:i})},isHelpShown:!1,toggleHelp:()=>{let{isHelpShown:e}=t();o({isHelpShown:!e})},copyBuffer:{nodes:[],edges:[]},copy:e=>{o({copyBuffer:e})},copySelectedItems:()=>{let{nodes:e,edges:o,copy:r}=t(),n=e.filter(({selected:e})=>e),i=o.filter(({selected:e})=>e);n.length&&r({nodes:n,edges:i})},pasteBuffer:(e=0,r=0)=>{let{copyBuffer:n,createNodes:i,setEdges:l,nodes:a,edges:d}=t(),{nodes:s,edges:c}=n;if(!s.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let p=s.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),h=p.position.x-e,u=p.position.y-r,{nodes:g,mapping:m}=s.reduce((e,o)=>{let t=(e=>{let o=+new Date+Math.floor(1e3*Math.random());return e?.type?`${e.type}-${o}`:o.toString()})(o);return{nodes:[...e.nodes,{...o,id:t,position:{x:o.position.x-h,y:o.position.y-u},selected:!0}],mapping:{...e.mapping,[o.id]:t}}},{nodes:[],mapping:{}});i(g);let f=c.map(e=>{let o=m[e.source]||e.source,t=m[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...d.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:r}=e;if(!r)return null;let n=o[r]?.controlPanelNode;return n||(console.error(`could not find node for type ${r}`),null)},controlPanel:{show:!0,nodes:[],size:{width:200,height:100}},showControlPanel:()=>o(({controlPanel:e})=>({controlPanel:{...e,show:!0}})),hideControlPanel:()=>o(({controlPanel:e})=>({controlPanel:{...e,show:!1}})),addNodeToControlPanel:e=>{let{nodesConfiguration:r}=t(),n=e.type?r[e.type]?.defaultConfig:{},{height:i}=n?.size||{},l={id:e.id,...i?{height:i/em}:{}};o(({controlPanel:e})=>({controlPanel:{...e,nodes:[...e.nodes,l]}}))},removeNodeFromControlPanel:e=>t().removeNodesFromControlPanel([e]),removeNodesFromControlPanel:e=>{let t=e.map(({id:e})=>e);o(({controlPanel:e})=>{let o=e.nodes.filter(({id:e})=>!t.includes(e));return{controlPanel:{...e,nodes:o}}})},setControlPanelNodes:e=>{o(({controlPanel:o})=>({controlPanel:{...o,nodes:e}}))},setControlPanelSize:e=>{o(({controlPanel:o})=>({controlPanel:{...o,size:e}}))},viewport:{x:0,y:0,zoom:1},setViewport:e=>o({viewport:e})}},o=(o,t,r)=>{let n=((e,o)=>{let t,r=W({propertyFilter:(e,o)=>!!(o.parent?.parent?.childName==="controlPanel"||["data","position","controlPanel"].includes(o.parent?.childName))||["controlPanel","size","edges","nodes","data","label","config","values","position","x","y"].includes(e)}),n=o();return(e,i)=>{e.currentFileIndex!==i.currentFileIndex&&o().history.clear(),clearTimeout(t),n||(n=i),t=setTimeout(()=>{let t=r.diff(n,e);n=null,t&&o().history.push(t)},500)}})(0,t);return r.subscribe(n),e((...e)=>o(...e),t,r)},(e,t,r)=>{r.subscribe(async(e,o)=>{});let n=new Set,i={...t(),nodes:[],edges:[]};return o(async(...o)=>{let r=t(),[l]=o,a={...i,..."function"==typeof l?l({...i}):l},d=ev(i.nodes,a.nodes),s=ev(i.edges,a.edges);i=a;let c=d.added,p=s.added,h=s.removed,u=d.removed,{patch:g}=r;if(c.length){let e=g.registerAudioNodes(c);n.add(e),await e,n.delete(e)}if(!(p.length||h.length||u.length))return void e(...o);if(n.size)try{await Promise.all([...n.values()])}catch(e){console.log("some error",e)}p.length&&g.registerAudioConnections(p),h.length&&g.unregisterAudioConnections(h),u.length&&g.unregisterAudioNodes(u),e(...o)},t,r)})),ew={colors:{elevation1:"#292d39",elevation2:"#181c20",elevation3:"#373c4b",accent1:"#0066dc",accent2:"#007bff",accent3:"#3c93ff",highlight1:"#535760",highlight2:"#8c92a4",highlight3:"#fefefe",vivid1:"#14df42",whitePrimary:"#ffffff",error:"#db5353"},zIndex:{modal:9998,controlPanel:9999,resumeContextLayout:10003}};R`
2
2
  .react-flow {
3
3
  .react-flow__pane {
4
4
  /* background: rgb(106 106 106); */
5
5
  /* background: "white"; */
6
6
  // background: #292d39;
7
- background: ${ev.colors.elevation3};
7
+ background: ${ew.colors.elevation3};
8
8
  }
9
9
 
10
10
  .react-flow__background {
@@ -25,28 +25,28 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
25
25
  }
26
26
 
27
27
  .react-flow__edge-path {
28
- stroke: ${ev.colors.accent2};
28
+ stroke: ${ew.colors.accent2};
29
29
  }
30
30
 
31
31
  .react-flow__node.selected {
32
- border: 1px solid ${ev.colors.accent2};
33
- box-shadow: 0 0 0 0.5px #${ev.colors.accent2};
32
+ border: 1px solid ${ew.colors.accent2};
33
+ box-shadow: 0 0 0 0.5px #${ew.colors.accent2};
34
34
  }
35
35
 
36
36
  .react-flow__node-default.selected, .react-flow__node-default.selected:hover {
37
- box-shadow: 0 0 0 0.5px #${ev.colors.accent2};
37
+ box-shadow: 0 0 0 0.5px #${ew.colors.accent2};
38
38
  }
39
39
 
40
40
  /* .react-flow__minimap-mask {
41
- fill: ${ev.colors.elevation1}
41
+ fill: ${ew.colors.elevation1}
42
42
  }
43
43
 
44
44
  .react-flow__minimap-node {
45
- fill:${ev.colors.accent2}
45
+ fill:${ew.colors.accent2}
46
46
  } */
47
47
  }
48
48
 
49
- `;var ey=()=>s();let ex=c(B)``,ew=c(G)`
49
+ `;var eC=()=>s();let e$=c(V)``,ek=c(G)`
50
50
  background: ${({colors:e})=>e.elevation2};
51
51
  padding: 0;
52
52
  border-radius: 0;
@@ -59,7 +59,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
59
59
  background-color: ${({colors:e})=>e.elevation1};
60
60
  margin: 0;
61
61
  }
62
- `,eb="editor-edge-menu";var eC=()=>{let e=ey(),o=ef(e=>e.removeEdges);return r(n,{children:r(ew,{id:eb,animation:!1,colors:e.colors,children:r(ex,{onClick:e=>o([e.props.edge]),children:"Delete Edge (DEL)"})})})};let e$=c.div`
62
+ `,eN="editor-edge-menu";var eP=()=>{let e=eC(),o=ex(e=>e.removeEdges);return r(n,{children:r(ek,{id:eN,animation:!1,colors:e.colors,children:r(e$,{onClick:e=>o([e.props.edge]),children:"Delete Edge (DEL)"})})})};let ez=c.div`
63
63
  position: fixed;
64
64
  z-index: ${({theme:e})=>e.zIndex.modal};
65
65
  width: 100%;
@@ -70,7 +70,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
70
70
  display: flex;
71
71
  align-items: center;
72
72
  justify-content: center;
73
- `,eN=c.div`
73
+ `,eA=c.div`
74
74
  background: ${({theme:e})=>e.colors.elevation2};
75
75
  box-shadow: 1px 1px 1px 1px ${({theme:e})=>e.colors.elevation1};
76
76
  color: white;
@@ -78,15 +78,15 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
78
78
  height: 80%;
79
79
  overflow-y: scroll;
80
80
  position: relative;
81
- `,ek=c(y)`
81
+ `,ej=c(y)`
82
82
  position: absolute;
83
83
  top: 0.2rem;
84
84
  right: 0.2rem;
85
85
  cursor: pointer;
86
- `;var eP=({children:e,onClose:o,...n})=>{let i=ey();return g(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),r(e$,{theme:i,onClick:o,children:t(eN,{...n,onClick:e=>{e.stopPropagation()},theme:i,children:[e,r(ek,{theme:i,onClick:o})]})})};let ez=c.div`
86
+ `;var eE=({children:e,onClose:o,...n})=>{let i=eC();return u(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),Y(r(ez,{theme:i,onClick:o,children:t(eA,{...n,onClick:e=>{e.stopPropagation()},theme:i,children:[e,r(ej,{theme:i,onClick:o})]})}),document.body)};let eM=c.div`
87
87
  display: flex;
88
88
  position: relative;
89
- `,eE=c.input`
89
+ `,eS=c.input`
90
90
  padding-right: 2rem;
91
91
  padding-left: 0.3rem;
92
92
  width: 100%;
@@ -117,13 +117,14 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
117
117
  -webkit-appearance: none;
118
118
  margin-right: 1rem;
119
119
  }
120
- `,ej=c.div`
120
+ `,eF=c.div`
121
121
  display: flex;
122
122
  flex-direction: column;
123
123
  padding: 0.6rem;
124
124
  gap: 0.6rem;
125
125
  border-right: 1px solid ${({theme:e})=>e.colors.elevation3};
126
- `,eA=c.label`
126
+ min-width: 14rem;
127
+ `,eT=c.label`
127
128
  user-select: none;
128
129
  input {
129
130
  display: none;
@@ -135,11 +136,14 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
135
136
  color: ${({theme:e})=>e.colors.accent3};
136
137
  cursor: pointer;
137
138
  }
138
- `;var eS=({onChange:e,value:o})=>{let n=ey(),i=ef(({plugins:e})=>e),l=f(null);return g(()=>{l.current&&l.current.focus()},[l]),t(ej,{theme:n,children:[r(ez,{children:r(eE,{ref:l,theme:n,value:o.search||"",placeholder:"search...",onChange:t=>e({...o,search:t.target.value})})}),i.map(({name:i,components:l},a)=>i?t(eA,{theme:n,children:[r("input",{type:"checkbox",name:"plugin",value:i,checked:i===o.plugin,onChange:()=>{e({...o,plugin:i===o.plugin?null:i})}}),r("span",{children:i})]},a):null)]})};let eM=c.div`
139
+ `;var eD=({onChange:e,value:o})=>{let n=eC(),i=ex(({plugins:e})=>e),l=f(null);return u(()=>{l.current&&l.current.focus()},[l]),t(eF,{theme:n,children:[r(eM,{children:r(eS,{ref:l,theme:n,value:o.search||"",placeholder:"search...",onChange:t=>e({...o,search:t.target.value})})}),i.map(({name:i,components:l},a)=>i?t(eT,{theme:n,children:[r("input",{type:"checkbox",name:"plugin",value:i,checked:i===o.plugin,onChange:()=>{e({...o,plugin:i===o.plugin?null:i})}}),r("span",{children:i})]},a):null)]})};let eH=i(c.div`
139
140
  width: 100%;
140
- `,eF=c.div`
141
+ `),eO=i(c.div`
141
142
  padding: 1rem;
142
- `,eD=c.ul`
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: 1rem;
146
+ `),e_=i(c.ul`
143
147
  list-style: none;
144
148
  margin: 0;
145
149
  padding: 0;
@@ -147,26 +151,43 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
147
151
  columns: 2;
148
152
 
149
153
  li {
154
+ display: flex;
155
+ flex-direction: column;
156
+ gap: 8px;
150
157
  padding: 4px;
158
+ overflow: hidden;
159
+ border: 1px solid ${({theme:e})=>e.colors.elevation3};
160
+ border-radius: 4px;
161
+ margin-bottom: 0.5rem;
151
162
  &:hover {
152
- color: ${({theme:e})=>e.colors.accent2};
163
+ border-color: ${({theme:e})=>e.colors.accent2};
153
164
  cursor: pointer;
154
165
  }
155
166
  }
156
- `,eT=c.div`
167
+ `),eL=i(c.div`
168
+ white-space: nowrap;
169
+ overflow: hidden;
170
+ text-overflow: ellipsis;
171
+ `),eI=i(c.div`
172
+ color: ${({theme:e})=>e.colors.highlight2};
173
+ font-size: 12px;
174
+ `),eW=i(c.div``),eR=i(c.div`
157
175
  font-size: 1.1rem;
158
- padding: 0.25rem;
176
+ padding: 0.25rem 0;
177
+ color: ${({theme:e})=>e.colors.highlight3};
178
+ `),eB=i(c.div`
159
179
  color: ${({theme:e})=>e.colors.highlight2};
160
- `;var eH=({onComponentClick:e,filters:{plugin:o,search:n}})=>{let i=ey(),l=ef(({plugins:e})=>e),a=u(()=>o?l.filter(({name:e})=>e===o):l,[l,o]);return r(eM,{theme:i,children:u(()=>n?a.map(e=>({...e,components:e.components.filter(({type:e})=>e.toLocaleLowerCase().includes(n.toLocaleLowerCase()))})):a,[a,n]).map(({name:o,components:n},l)=>n.length?t(eF,{theme:i,children:[r(eT,{theme:i,children:o}),r(eD,{theme:i,children:n.sort((e,o)=>e.type.toLowerCase()>o.type.toLowerCase()?1:-1).map((o,t)=>r("li",{onClick:()=>e(o),children:o.type},t))})]},l):null)})};let eW=c.div`
180
+ font-size: 12px;
181
+ `);var eV=({onComponentClick:e,filters:{plugin:o,search:n}})=>{let i=ex(({plugins:e})=>e),l=g(()=>o?i.filter(({name:e})=>e===o):i,[i,o]);return r(eH,{children:g(()=>n?l.map(e=>({...e,components:e.components.filter(({type:e,name:o})=>e.toLocaleLowerCase().includes(n.toLocaleLowerCase())||o?.toLocaleLowerCase().includes(n.toLocaleLowerCase()))})):l,[l,n]).map(({name:o,description:n,components:i},l)=>i.length?t(eO,{children:[t(eW,{children:[r(eR,{children:o}),r(eB,{children:n})]}),r(e_,{children:i.sort((e,o)=>e.type.toLowerCase()>o.type.toLowerCase()?1:-1).map((o,n)=>t("li",{onClick:()=>e(o),children:[r(eL,{children:o.name||o.type}),o.description&&r(eI,{children:o.description})]},n))})]},l):null)})};let eG=c.div`
161
182
  height: 100%;
162
183
  width: 100%;
163
184
  display: flex;
164
185
  gap: 1rem;
165
- `,e_=c.div`
186
+ `,eU=c.div`
166
187
  flex-grow: 1;
167
188
  height: 100%;
168
189
  overflow-y: scroll;
169
- `;var eO=({isOpen:e,closeMenu:o,mousePosition:n})=>{let i=ey(),{screenToFlowPosition:l}=M(),{createNode:a}=ef(({createNode:e})=>({createNode:e})),[d,s]=p({}),c=m(({type:e})=>{let{x:t,y:r}=l(n);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:r},targetPosition:F.Left,sourcePosition:F.Right}),o()},[n,l,a,o,n]);return e?r(eP,{onClose:()=>{o(),s({})},children:t(eW,{theme:i,children:[r(eS,{onChange:s,value:d}),r(e_,{theme:i,children:r(eH,{filters:d,onComponentClick:e=>{c(e),s({})}})})]})}):null};let eI=c.div`
190
+ `;var eJ=({isOpen:e,closeMenu:o,mousePosition:n})=>{let i=eC(),{screenToFlowPosition:l}=F(),{createNode:a}=ex(({createNode:e})=>({createNode:e})),[d,s]=h({}),c=m(({type:e})=>{let{x:t,y:r}=l(n);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:r},targetPosition:T.Left,sourcePosition:T.Right}),o()},[n,l,a,o,n]);return e?r(eE,{onClose:()=>{o(),s({})},children:t(eG,{theme:i,children:[r(eD,{onChange:s,value:d}),r(eU,{theme:i,children:r(eV,{filters:d,onComponentClick:e=>{c(e),s({})}})})]})}):null};let eX=c.div`
170
191
  display: flex;
171
192
  align-items: center;
172
193
  justify-content: center;
@@ -192,19 +213,19 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
192
213
  .drop-zone-drag-over {
193
214
  opacity: 1;
194
215
  }
195
- `,eL=c.div`
216
+ `,eY=c.div`
196
217
  display: flex;
197
218
  flex-wrap: wrap;
198
219
  align-items: center;
199
220
  justify-content: center;
200
221
  height: 100%;
201
222
  width: 100%;
202
- `,eR=c(Y)`
223
+ `,eq=c(K)`
203
224
  width: 100%;
204
225
  height: 8rem;
205
- `,eB=c.div`
226
+ `,eK=c.div`
206
227
  font-size: 2rem;
207
- `;var eG=({isOpen:e,closeMenu:o})=>{let n=ey(),i=ef(({setGraph:e})=>e),l=ef(e=>e.setEditorState),a=f(null),d=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{l(e),o()}).catch(console.error)},[i,o]);return e?r(eP,{onClose:o,children:t(eI,{theme:n,children:[r("input",{onChange:({target:{files:e}})=>d(e),ref:a,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),r(X,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{a.current?.click()},onDrop:e=>d(e),children:t(eL,{theme:n,children:[r(eR,{}),r(eB,{children:"click or drop file here"})]})})]})}):null};let eV=c.div`
228
+ `;var eQ=({isOpen:e,closeMenu:o})=>{let n=eC(),i=ex(({setGraph:e})=>e),l=ex(e=>e.setEditorState),a=f(null),d=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{l(e),o()}).catch(console.error)},[i,o]);return e?r(eE,{onClose:o,children:t(eX,{theme:n,children:[r("input",{onChange:({target:{files:e}})=>d(e),ref:a,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),r(q,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{a.current?.click()},onDrop:e=>d(e),children:t(eY,{theme:n,children:[r(eq,{}),r(eK,{children:"click or drop file here"})]})})]})}):null};let eZ=c.div`
208
229
  display: flex;
209
230
  align-items: center;
210
231
  justify-content: center;
@@ -230,19 +251,19 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
230
251
  .drop-zone-drag-over {
231
252
  opacity: 1;
232
253
  }
233
- `,eU=c.div`
254
+ `,e0=c.div`
234
255
  display: flex;
235
256
  flex-wrap: wrap;
236
257
  align-items: center;
237
258
  justify-content: center;
238
259
  height: 100%;
239
260
  width: 100%;
240
- `,eJ=c(Y)`
261
+ `,e1=c(K)`
241
262
  width: 100%;
242
263
  height: 8rem;
243
- `,eX=c.div`
264
+ `,e2=c.div`
244
265
  font-size: 2rem;
245
- `;var eY=({isOpen:e,closeMenu:o})=>{let n=ey(),i=ef(e=>e.setProject),l=f(null),a=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{i(e),o()}).catch(console.error)},[i,o]);return e?r(eP,{onClose:o,children:t(eV,{theme:n,children:[r("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),r(X,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:t(eU,{theme:n,children:[r(eJ,{}),r(eX,{children:"click or drop file here"})]})})]})}):null};let eq="editor-menu";var eK=({editorContextMenu:e=[]})=>{let o=ey(),[i,l]=p({x:0,y:0}),[a,d]=p(!1),[s,c]=p(!1),[h,f]=p(!1),v=m((e,o)=>{l({x:e,y:o}),d(!0)},[d]),y=ef(e=>e.pasteBuffer),{screenToFlowPosition:x}=M(),w=m(e=>{let{x:o,y:t}=x(e);y(o,t)},[d,x]),b=ef(({clearGraph:e})=>e),C=ef(e=>e.getEditorState),$=ef(e=>e.getProject),N=m(()=>{b()},[b]),k=ef(e=>e.toggleHelp),P=ef(e=>e.history.back),z=ef(e=>e.history.forward),E=ef(e=>e.history.pointer),j=ef(e=>e.history.buffer),A=ef(e=>e.copySelectedItems),S=ef(e=>e.nodes),F=u(()=>S.filter(({selected:e})=>e),[S]),D=ef(e=>e.copyBuffer),T=M(),H=m(()=>{U(JSON.stringify({...C()},null,2),"web-noise-patch.json")},[C,T]),W=m(()=>{U(JSON.stringify({...$()},null,2),"web-noise-project.json")},[C,T]);return g(()=>(J("command+shift+a",()=>(v(200,50),!1)),J("shift+/",()=>(k(),!1)),J("command+z",()=>(P(),!1)),J("command+shift+z",()=>(z(),!1)),J("command+c",()=>(A(),!1)),J("command+v",()=>(w({x:200,y:50}),!1)),()=>{J.unbind()}),[v,w]),t(n,{children:[r(eO,{isOpen:a,closeMenu:()=>d(!1),mousePosition:i}),r(eG,{isOpen:s,closeMenu:()=>c(!1)}),r(eY,{isOpen:h,closeMenu:()=>f(!1)}),t(ew,{id:eq,animation:!1,colors:o.colors,children:[r(ex,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>v(e,o),children:"Add Node (⌘+⇧+A)"}),r(V,{}),r(ex,{onClick:N,children:"Delete All"}),r(V,{}),r(ex,{onClick:H,children:"Download patch"}),r(ex,{onClick:()=>c(!0),children:"Upload patch"}),r(V,{}),r(ex,{onClick:W,children:"Download project"}),r(ex,{onClick:()=>f(!0),children:"Upload project"}),r(V,{}),r(ex,{disabled:0===E,onClick:P,children:"Undo (⌘+z)"}),r(ex,{disabled:E===j.length,onClick:z,children:"Redo (⌘+⇧+Z)"}),r(V,{}),r(ex,{disabled:!F.length,onClick:A,children:"Copy Selected (⌘+c)"}),r(ex,{disabled:!D.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>w({x:e,y:o}),children:"Paste (⌘+v)"}),r(V,{}),e.map((e,o)=>r(ex,{children:e},o)),r(V,{}),r(ex,{onClick:k,children:"Help (⇧+?)"})]})]})};let eQ="editor-node-menu";var eZ=e=>{let o=ey(),i=ef(e=>e.removeNodes),l=ef(e=>e.addNodeToControlPanel),a=ef(e=>e.removeNodeFromControlPanel),d=ef(e=>e.copy),s=ef(e=>e.nodesConfiguration),c=ef(e=>e.controlPanel.nodes),h=m(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),p=m(({props:e})=>{if(!e?.node.type)return!1;let o=s[e.node.type];return!!o?.controlPanelNode},[s]);return r(n,{children:t(ew,{id:eQ,animation:!1,colors:o.colors,children:[r(ex,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),r(ex,{hidden:(...e)=>!p(...e)||h(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),r(ex,{hidden:(...e)=>!p(...e)||!h(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),r(ex,{onClick:e=>d({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},e0=e=>ef(({patch:e})=>e).audioNodes.get(e),e1=e=>{let o=ef(({updateNodeData:e})=>e),t=m(t=>o(e,{values:t}),[e,o]);return{updateNodeValues:t,updateNodeConfig:m(t=>o(e,{config:t}),[e,o]),updateNodeLabel:m(t=>o(e,{label:t}),[e,o])}};let e2=c.input`
266
+ `;var e3=({isOpen:e,closeMenu:o})=>{let n=eC(),i=ex(e=>e.setProject),l=f(null),a=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{i(e),o()}).catch(console.error)},[i,o]);return e?r(eE,{onClose:o,children:t(eZ,{theme:n,children:[r("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),r(q,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:t(e0,{theme:n,children:[r(e1,{}),r(e2,{children:"click or drop file here"})]})})]})}):null};let e9="editor-menu";var e8=({editorContextMenu:e=[]})=>{let o=eC(),[i,l]=h({x:0,y:0}),[a,d]=h(!1),[s,c]=h(!1),[p,f]=h(!1),v=m((e,o)=>{l({x:e,y:o}),d(!0)},[d]),y=ex(e=>e.pasteBuffer),{screenToFlowPosition:b}=F(),x=m(e=>{let{x:o,y:t}=b(e);y(o,t)},[d,b]),w=ex(({clearGraph:e})=>e),C=ex(e=>e.getEditorState),$=ex(e=>e.getProject),k=m(()=>{w()},[w]),N=ex(e=>e.toggleHelp),P=ex(e=>e.history.back),z=ex(e=>e.history.forward),A=ex(e=>e.history.pointer),j=ex(e=>e.history.buffer),E=ex(e=>e.copySelectedItems),M=ex(e=>e.nodes),S=g(()=>M.filter(({selected:e})=>e),[M]),T=ex(e=>e.copyBuffer),D=F(),H=m(()=>{J(JSON.stringify({...C()},null,2),"web-noise-patch.json")},[C,D]),O=m(()=>{J(JSON.stringify({...$()},null,2),"web-noise-project.json")},[C,D]);return u(()=>(X("command+shift+a",()=>(v(200,50),!1)),X("shift+/",()=>(N(),!1)),X("command+z",()=>(P(),!1)),X("command+shift+z",()=>(z(),!1)),X("command+c",()=>(E(),!1)),X("command+v",()=>(x({x:200,y:50}),!1)),()=>{X.unbind()}),[v,x]),t(n,{children:[r(eJ,{isOpen:a,closeMenu:()=>d(!1),mousePosition:i}),r(eQ,{isOpen:s,closeMenu:()=>c(!1)}),r(e3,{isOpen:p,closeMenu:()=>f(!1)}),t(ek,{id:e9,animation:!1,colors:o.colors,children:[r(e$,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>v(e,o),children:"Add Node (⌘+⇧+A)"}),r(U,{}),r(e$,{onClick:k,children:"Delete All"}),r(U,{}),r(e$,{onClick:H,children:"Download patch"}),r(e$,{onClick:()=>c(!0),children:"Upload patch"}),r(U,{}),r(e$,{onClick:O,children:"Download project"}),r(e$,{onClick:()=>f(!0),children:"Upload project"}),r(U,{}),r(e$,{disabled:0===A,onClick:P,children:"Undo (⌘+z)"}),r(e$,{disabled:A===j.length,onClick:z,children:"Redo (⌘+⇧+Z)"}),r(U,{}),r(e$,{disabled:!S.length,onClick:E,children:"Copy Selected (⌘+c)"}),r(e$,{disabled:!T.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>x({x:e,y:o}),children:"Paste (⌘+v)"}),r(U,{}),e.map((e,o)=>r(e$,{children:e},o)),r(U,{}),r(e$,{onClick:N,children:"Help (⇧+?)"})]})]})};let e5="editor-node-menu";var e4=e=>{let o=eC(),i=ex(e=>e.removeNodes),l=ex(e=>e.addNodeToControlPanel),a=ex(e=>e.removeNodeFromControlPanel),d=ex(e=>e.copy),s=ex(e=>e.nodesConfiguration),c=ex(e=>e.controlPanel.nodes),p=m(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),h=m(({props:e})=>{if(!e?.node.type)return!1;let o=s[e.node.type];return!!o?.controlPanelNode},[s]);return r(n,{children:t(ek,{id:e5,animation:!1,colors:o.colors,children:[r(e$,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),r(e$,{hidden:(...e)=>!h(...e)||p(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),r(e$,{hidden:(...e)=>!h(...e)||!p(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),r(e$,{onClick:e=>d({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},e7=e=>ex(({patch:e})=>e).audioNodes.get(e),e6=e=>{let o=ex(({updateNodeData:e})=>e),t=m(t=>o(e,{values:t}),[e,o]);return{updateNodeValues:t,updateNodeConfig:m(t=>o(e,{config:t}),[e,o]),updateNodeLabel:m(t=>o(e,{label:t}),[e,o])}};let oe=c.input`
246
267
  width: 100%;
247
268
  background: none;
248
269
  border: none;
@@ -271,13 +292,41 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
271
292
  padding: 0.3rem;
272
293
  border-radius: 0.2rem;
273
294
  }
274
- `;var e3=({onChange:e,value:o="",className:t})=>{let n=f(null),[i,l]=p(!1),a=m(e=>{e.target?.select(),l(!0)},[l]),d=m(()=>{window.getSelection()?.collapseToEnd(),l(!1)},[l]),s=m(()=>{d(),n.current&&e(n.current.value)},[n,d,e]),c=m(()=>{d(),n.current&&o&&(n.current.value=o)},[n,d,o]);return g(()=>{n.current&&(n.current.value=o)},[o,n]),r(e2,{ref:n,type:"text",readOnly:!i,onDoubleClick:e=>a(e),onBlur:s,onKeyDown:e=>{switch(e.key){case"Escape":c();break;case"Enter":s()}},className:t})};let e9=c.div`
295
+ `;var oo=({onChange:e,value:o="",className:t})=>{let n=f(null),[i,l]=h(!1),a=m(e=>{e.target?.select(),l(!0)},[l]),d=m(()=>{window.getSelection()?.collapseToEnd(),l(!1)},[l]),s=m(()=>{d(),n.current&&e(n.current.value)},[n,d,e]),c=m(()=>{d(),n.current&&o&&(n.current.value=o)},[n,d,o]);return u(()=>{n.current&&(n.current.value=o)},[o,n]),r(oe,{ref:n,type:"text",readOnly:!i,onDoubleClick:e=>a(e),onBlur:s,onKeyDown:e=>{switch(e.key){case"Escape":c();break;case"Enter":s()}},className:t})};let ot=i(c.div`
296
+ height: 100%;
297
+ width: 100%;
298
+ overflow: scroll;
299
+ padding: 0.6rem;
300
+ box-sizing: border-box;
301
+
302
+ hr {
303
+ border: none;
304
+ border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
305
+ }
306
+
307
+ code {
308
+ background-color: ${({theme:e})=>e.colors.elevation3};
309
+ color: ${({theme:e})=>e.colors.highlight3};
310
+ font-family:
311
+ source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
312
+ }
313
+
314
+ pre {
315
+ background-color: ${({theme:e})=>e.colors.elevation3};
316
+ padding: 0.2rem 0.3rem;
317
+ border-radius: 1px;
318
+ }
319
+
320
+ a {
321
+ color: ${({theme:e})=>e.colors.accent1};
322
+ }
323
+ `);var or=({isOpen:e,onClose:o,type:t,node:n})=>{let{info:i,portsDescription:l}=ex(e=>e.nodesConfiguration[t]),a=g(()=>{let e=[],o=n.inputs;if(o)for(let t in e.push("## Inputs"),o){let r=o[t];e.push(`### *${t}*`);let n=l?.inputs?.[t];n&&e.push(n),Array.isArray(r.type)?e.push(`**Types**: \`${r.type.join(", ")}\``):e.push(`**Type**: \`${r.type||"unknown"}\``),r.range&&e.push(`**Range**: \`[${r.range[0]}, ${r.range[1]}]\``),void 0!==r.defaultValue&&e.push(`**Default**: \`${r.defaultValue}\``)}let t=n.outputs;if(t)for(let o in e.push("## Outputs"),t){let r=t[o];e.push(`### *${o}*`);let n=l?.outputs?.[o];n&&e.push(n),Array.isArray(r.type)?e.push(`**Types**: \`${r.type.join(", ")}\``):e.push(`**Type**: \`${r.type||"unknown"}\``),r.range&&e.push(`**Range**: \`[${r.range[0]}, ${r.range[1]}]\``),void 0!==r.defaultValue&&e.push(`**Default**: \`${r.defaultValue}\``)}return e.join("\n\n")},[n,l]);return e?r(eE,{onClose:o,children:r(ot,{dangerouslySetInnerHTML:{__html:ed((i||"")+"\n\n"+a||"")}})}):null};let on=c.div`
275
324
  background-color: var(--leva-colors-elevation1);
276
- `,e8=c(e9)`
325
+ `,oi=c(on)`
277
326
  padding: 2rem 5rem;
278
- `,e5=c(e9)`
327
+ `,ol=c(on)`
279
328
  padding: 1rem 2rem;
280
- `,e7=c(w)`
329
+ `,oa=c(x)`
281
330
  font-size: 1.2rem;
282
331
  opacity: 0.4;
283
332
  width: 1rem;
@@ -285,12 +334,20 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
285
334
  opacity: 1;
286
335
  cursor: pointer;
287
336
  }
288
- `,e4=c.div`
337
+ `,od=c(w)`
338
+ font-size: 1.2rem;
339
+ opacity: 0.4;
340
+ width: 1rem;
341
+ &:hover {
342
+ opacity: 1;
343
+ cursor: pointer;
344
+ }
345
+ `,os=c.div`
289
346
  position: relative;
290
347
  font-family: var(--leva-fonts-mono);
291
348
  font-size: var(--leva-fontSizes-root);
292
349
  background-color: var(--leva-colors-elevation1);
293
- `,e6=c(e4)`
350
+ `,oc=c(os)`
294
351
  display: flex;
295
352
  height: var(--leva-sizes-titleBarHeight);
296
353
  touch-action: none;
@@ -300,33 +357,38 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
300
357
  color: var(--leva-colors-highlight1);
301
358
  padding: 0 0.4rem;
302
359
  gap: 0.3rem;
303
- `,oe=c(e4)(({theme:e})=>`
360
+ `,op=c(os)(({theme:e})=>`
304
361
  display: grid;
305
362
  grid-template-areas: "inputs outputs";
306
363
  background: ${e.colors.elevation2};
307
364
  border-bottom: 1px solid ${e.colors.elevation1};
308
365
  color: ${e.colors.highlight3};
309
366
  font-size: 0.6rem;
310
- `),oo=c.div`
367
+ `),oh=c.div`
311
368
  grid-area: inputs;
312
369
  text-align: left;
313
- `,ot=c.div`
370
+ `,ou=c.div`
314
371
  grid-area: outputs;
315
372
  text-align: right;
316
- `,or=c.div`
373
+ `,og=c.div`
317
374
  position: relative;
318
375
  padding: 5px 10px;
319
- `,on=c(D)`
376
+ `,om={[eb.Audio]:"#4ade80",[eb.Gate]:"#c084fc",[eb.Number]:"#38bdf8",[eb.Any]:"#fb923c"},of=i(c(D,{shouldForwardProp:e=>"portType"!==e})`
377
+ --port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return om[e.portType];{let o=e.portType.map(e=>om[e]);return`linear-gradient(0.25turn, ${o.join(", ")});`}}};
378
+ border-color: var(--port-color);
379
+ background: var(--port-color);
380
+ box-shadow: 0px 0px 0px 1px ${({theme:e})=>e.colors.elevation2} inset;
381
+ `),ov=i(c(of)`
320
382
  left: -3px;
321
- `,oi=e=>r(on,{...e,type:"target",position:F.Left}),ol=c(D)`
383
+ `),oy=({...e})=>r(ov,{...e,type:"target",position:T.Left}),ob=i(c(of)`
322
384
  right: -3px;
323
- `,oa=e=>r(ol,{...e,type:"source",position:F.Right}),od=({className:e,...o})=>r(e6,{...o,className:[e,eh].join(" ")}),os=e=>{var o;let{id:n,children:i,selected:l,...a}=e,d=ey(),s=ef(({getNode:e})=>e),c=ef(e=>e.nodesConfiguration),h=u(()=>c[e.type].resizable??!1,[c,e.type]),{updateNodeLabel:g,updateNodeConfig:m}=e1(n),{data:f}=s(n)||{},v=e0(n),{ConfigNode:y}=(o=a.type,{ConfigNode:ef(e=>e.nodesConfiguration[o]?.configNode)}),[x,w]=p(!1);if(!v)return r(e8,{className:eh,children:"can't find audio node"});if(v.loading)return r(e8,{className:eh,children:"loading"});if(v.error)return t(e5,{className:eh,children:["error: ",v.error.toString()]});if(!v.node)return r(e8,{className:eh,children:"can't find audio node"});let b=f?.config?.size,{node:{inputs:C,outputs:$}}=v;return t(e9,{children:[t(od,{children:[r(e3,{value:f?.label??"No Name",onChange:g}),y&&r(e7,{onClickCapture:()=>w(e=>!e)})]}),t(oe,{theme:d,children:[r(oo,{children:C?Object.keys(C).map((e,o)=>t(or,{children:[r(oi,{id:e}),r("span",{children:e})]},o)):null}),r(ot,{children:$?Object.keys($).map((e,o)=>t(or,{children:[r(oa,{id:e}),r("span",{children:e})]},o)):null})]}),y&&x&&l?r(y,{...e}):h?r(ee,{size:b,minWidth:180,minHeight:30,enable:{bottom:!0,bottomRight:!0,right:!0},onResizeStop:(e,o,t,r)=>{let n=b?{width:b.width+r.width,height:b.height+r.height}:t.getBoundingClientRect();m({...f?.config,size:n})},children:i}):i]})},oc=c.div`
385
+ `),ox=e=>r(ob,{...e,type:"source",position:T.Right}),ow=({className:e,...o})=>r(oc,{...o,className:[e,eu].join(" ")}),oC=e=>ex(o=>o.nodesConfiguration[e]),o$=e=>{let{id:o,children:n,selected:i,...l}=e,a=eC(),d=ex(({getNode:e})=>e),s=ex(e=>e.nodesConfiguration),[c,p]=h(!1),{info:u}=oC(e.type),m=g(()=>s[e.type].resizable??!1,[s,e.type]),{updateNodeLabel:f,updateNodeConfig:v}=e6(o),{data:y}=d(o)||{},b=e7(o),{ConfigNode:x}=(e=>{let{configNode:o}=oC(e);return{ConfigNode:o}})(l.type),[w,C]=h(!1);if(!b)return r(oi,{className:eu,children:"can't find audio node"});if(b.loading)return r(oi,{className:eu,children:"loading"});if(b.error)return t(ol,{className:eu,children:["error: ",b.error.toString()]});if(!b.node)return r(oi,{className:eu,children:"can't find audio node"});let $=y?.config?.size,{node:{inputs:k,outputs:N}}=b;return t(on,{children:[t(ow,{children:[u&&r(od,{onClickCapture:()=>p(!0)}),r(oo,{value:y?.label??"No Name",onChange:f}),x&&r(oa,{onClickCapture:()=>C(e=>!e)})]}),t(op,{theme:a,children:[r(oh,{children:k?Object.keys(k).map((e,o)=>t(og,{children:[r(oy,{id:e,portType:k[e].type}),r("span",{children:e})]},o)):null}),r(ou,{children:N?Object.keys(N).map((e,o)=>t(og,{children:[r(ox,{id:e,portType:N[e].type}),r("span",{children:e})]},o)):null})]}),x&&w&&i?r(x,{...e}):m?r(et,{size:$,minWidth:180,minHeight:30,enable:{bottom:!0,bottomRight:!0,right:!0},onResizeStop:(e,o,t,r)=>{let n=$?{width:$.width+r.width,height:$.height+r.height}:t.getBoundingClientRect();v({...y?.config,size:n})},children:n}):n,r(or,{isOpen:c,type:e.type,onClose:()=>p(!1),node:b.node})]})},ok=c.div`
324
386
  width: 100%;
325
387
  padding: 0.4rem 0;
326
388
  white-space: nowrap;
327
389
  overflow: hidden;
328
390
  text-overflow: ellipsis;
329
- `,oh=c(od)`
391
+ `,oN=c(ow)`
330
392
  display: flex;
331
393
  gap: 0.1rem;
332
394
  padding: 0 0.4rem;
@@ -334,13 +396,13 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
334
396
  font-size: 0.6rem;
335
397
  height: auto;
336
398
  min-width: 0;
337
- `,op=c.div`
399
+ `,oP=c.div`
338
400
  display: flex;
339
401
  align-items: center;
340
402
  height: 70%;
341
403
  width: auto;
342
404
  gap: 0.4rem;
343
- `,og=c.span`
405
+ `,oz=c.span`
344
406
  width: auto;
345
407
  height: 100%;
346
408
  cursor: pointer;
@@ -352,11 +414,11 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
352
414
  color: ${({theme:e})=>e.colors.highlight2};
353
415
  cursor: pointer;
354
416
  }
355
- `,ou=c.div`
417
+ `,oA=c.div`
356
418
  height: 100%;
357
419
  display: grid;
358
420
  grid-template-rows: auto 1fr;
359
- `,om=e=>{let{node:o}=e,t=ef(e=>e.getControlPanelNode),n=u(()=>t(o),[o]);return n?r(n,{...e}):null};var of=e=>{let{node:o,showControls:n,onDelete:i}=e,l=ey(),{id:a}=o,{node:d}=e0(a)||{},{updateNodeValues:s}=e1(a);return t(ou,{theme:l,children:[t(oh,{theme:l,children:[r(oc,{children:o.data.label}),n&&t(op,{children:[r(og,{theme:l,children:r(x,{className:"grid-item-handle"})}),r(og,{theme:l,children:r(y,{onClick:()=>i(o)})})]})]}),r(om,{node:o,audioNode:d,updateNodeValues:s})]})};let ov=c.div`
421
+ `,oj=e=>{let{node:o}=e,t=ex(e=>e.getControlPanelNode),n=g(()=>t(o),[o]);return n?r(n,{...e}):null};var oE=e=>{let{node:o,showControls:n,onDelete:i}=e,l=eC(),{id:a}=o,{node:d}=e7(a)||{},{updateNodeValues:s}=e6(a);return t(oA,{theme:l,children:[t(oN,{theme:l,children:[r(ok,{children:o.data.label}),n&&t(oP,{children:[r(oz,{theme:l,children:r(b,{className:"grid-item-handle"})}),r(oz,{theme:l,children:r(y,{onClick:()=>i(o)})})]})]}),r(oj,{node:o,audioNode:d,updateNodeValues:s})]})};let oM=c.div`
360
422
  position: fixed;
361
423
  z-index: 5;
362
424
  box-shadow: 0px 1px 2px ${({theme:e})=>e.colors.elevation2};
@@ -376,34 +438,34 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
376
438
  color: ${({theme:e})=>e.colors.highlight2};
377
439
  cursor: pointer;
378
440
  }
379
- `,oy=c(op)`
441
+ `,oS=c(oP)`
380
442
  height: 80%;
381
- `,ox=c(og)`
443
+ `,oF=c(oz)`
382
444
  font-size: 1rem;
383
445
  display: flex;
384
446
  align-items: center;
385
- `,ow=c(oh)`
447
+ `,oT=c(oN)`
386
448
  grid-template-columns: 1fr auto;
387
449
  border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
388
450
  font-size: 0.7rem;
389
- `,ob=c(oc)`
451
+ `,oD=c(ok)`
390
452
  text-align: center;
391
- `,oC=c.div`
453
+ `,oH=c.div`
392
454
  height: 100%;
393
455
  width: 100%;
394
456
  padding: 0.3rem 0.4rem;
395
457
  box-sizing: border-box;
396
- `,o$=c.div`
458
+ `,oO=c.div`
397
459
  height: auto;
398
460
  padding: 0;
399
461
  max-height: 95vh;
400
462
  overflow-y: scroll;
401
463
  border: 1px solid ${({theme:e})=>e.colors.elevation3};
402
- `,oN=c.div`
464
+ `,o_=c.div`
403
465
  padding: 1rem 0;
404
466
  font-family: var(--leva-fonts-mono);
405
467
  font-size: 0.8rem;
406
- `,ok=c.div`
468
+ `,oL=c.div`
407
469
  display: flex;
408
470
  align-items: center;
409
471
  gap: 0.5rem;
@@ -412,7 +474,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
412
474
  &:hover {
413
475
  color: ${({theme:e})=>e.colors.highlight2};
414
476
  }
415
- `,oP=c.div`
477
+ `,oI=c.div`
416
478
  position: absolute;
417
479
  height: 1rem;
418
480
  top: 0;
@@ -420,14 +482,14 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
420
482
  margin: auto;
421
483
  left: 0.5rem;
422
484
  border-right: 1px solid ${({theme:e})=>e.colors.whitePrimary};
423
- `,oz=c.div`
485
+ `,oW=c.div`
424
486
  box-sizing: border-box;
425
487
  overflow: hidden;
426
488
  .react-resizable-handle:after {
427
489
  border-color: ${({theme:e})=>e.colors.whitePrimary};
428
490
  border-width: 1px;
429
491
  }
430
- `;var oE=()=>{let e=ey(),o=f(null),i=ef(e=>e.nodes),{show:l,nodes:a,size:d}=ef(e=>e.controlPanel),{width:s=200,height:c}=d,h=u(()=>{let e=a.map(({id:e})=>e);return i.filter(({id:o})=>e.includes(o))},[i,a]),g=ef(e=>e.showControlPanel),m=ef(e=>e.hideControlPanel),v=ef(e=>e.setControlPanelNodes),x=ef(e=>e.setControlPanelSize),w=ef(e=>e.removeNodeFromControlPanel),[b,C]=p(!0),$=u(()=>{let e=a.reduce((e,{height:o=eg,x:t,y:r=0})=>{let n=r+o;return n>e?n:e},0);return a.map(({id:o,width:t,height:r,x:n,y:i})=>({i:o,w:t||4,h:r||6,x:n??0,y:i??e}))},[a]);return h.length?t(n,{children:[r(ov,{theme:e,ref:o,onClick:g,children:r(en,{})}),t(ei,{open:l,onClose:m,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[t(ow,{theme:e,children:[r(ob,{children:"Control Panel"}),r(oy,{children:r(ox,{onClick:m,theme:e,children:r(y,{})})})]}),t(oC,{children:[r(oN,{children:b?t(ok,{theme:e,onClick:()=>C(!1),children:[r(et,{}),"Unlock grid"]}):t(ok,{theme:e,onClick:()=>C(!0),children:[r(er,{}),"Lock grid"]})}),r(ee,{enable:{top:!1,right:!b,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:r(oP,{theme:e})},minWidth:120,size:{width:s,height:"auto"},onResizeStop:(e,o,t,r)=>{x({width:s+r.width,height:c+r.height})},children:r(o$,{theme:e,children:r(eo,{layout:$,className:"layout",cols:4,rowHeight:eg,width:s,margin:[0,0],isResizable:!b,draggableHandle:".grid-item-handle",onLayoutChange:e=>{requestAnimationFrame(()=>{v(e.map(({i:e,w:o,h:t,x:r,y:n})=>({id:e,width:o,height:t,x:r,y:n})))})},children:h.map(o=>r(oz,{theme:e,children:r(of,{node:o,showControls:!b,onDelete:w})},o.id))})})})]})]})]}):null},oj={};oj="# Quick start\n\n## Add node\n - Mouse right click\n - Select **'Add Node'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Press `CMD+SHIFT+A`\n\n<br/>\n\n## Connect nodes\n - Mouse left click and hold on source port\n - Drop on target port\n\n<br/>\n\n## Delete Node or Connection\n - Mouse right click on node/connection\n - Select **'Delete Node'**/**'Delete Connection'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Mouse left click on node/connection, then press `Backspace`\n\n<br/>\n\n\n## Move node\n - Drag and Drop\n\n";let oA=i(c.div`
492
+ `;var oR=()=>{let e=eC(),o=f(null),i=ex(e=>e.nodes),{show:l,nodes:a,size:d}=ex(e=>e.controlPanel),{width:s=200,height:c}=d,p=g(()=>{let e=a.map(({id:e})=>e);return i.filter(({id:o})=>e.includes(o))},[i,a]),u=ex(e=>e.showControlPanel),m=ex(e=>e.hideControlPanel),v=ex(e=>e.setControlPanelNodes),b=ex(e=>e.setControlPanelSize),x=ex(e=>e.removeNodeFromControlPanel),[w,C]=h(!0),$=g(()=>{let e=a.reduce((e,{height:o=em,x:t,y:r=0})=>{let n=r+o;return n>e?n:e},0);return a.map(({id:o,width:t,height:r,x:n,y:i})=>({i:o,w:t||4,h:r||6,x:n??0,y:i??e}))},[a]);return p.length?t(n,{children:[r(oM,{theme:e,ref:o,onClick:u,children:r(el,{})}),t(ea,{open:l,onClose:m,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[t(oT,{theme:e,children:[r(oD,{children:"Control Panel"}),r(oS,{children:r(oF,{onClick:m,theme:e,children:r(y,{})})})]}),t(oH,{children:[r(o_,{children:w?t(oL,{theme:e,onClick:()=>C(!1),children:[r(en,{}),"Unlock grid"]}):t(oL,{theme:e,onClick:()=>C(!0),children:[r(ei,{}),"Lock grid"]})}),r(et,{enable:{top:!1,right:!w,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:r(oI,{theme:e})},minWidth:120,size:{width:s,height:"auto"},onResizeStop:(e,o,t,r)=>{b({width:s+r.width,height:c+r.height})},children:r(oO,{theme:e,children:r(er,{layout:$,className:"layout",cols:4,rowHeight:em,width:s,margin:[0,0],isResizable:!w,draggableHandle:".grid-item-handle",onLayoutChange:e=>{requestAnimationFrame(()=>{v(e.map(({i:e,w:o,h:t,x:r,y:n})=>({id:e,width:o,height:t,x:r,y:n})))})},children:p.map(o=>r(oW,{theme:e,children:r(oE,{node:o,showControls:!w,onDelete:x})},o.id))})})})]})]})]}):null},oB={};oB="# Quick start\n\n## Add node\n - Mouse right click\n - Select **'Add Node'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Press `CMD+SHIFT+A`\n\n<br/>\n\n## Connect nodes\n - Mouse left click and hold on source port\n - Drop on target port\n\n<br/>\n\n## Delete Node or Connection\n - Mouse right click on node/connection\n - Select **'Delete Node'**/**'Delete Connection'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Mouse left click on node/connection, then press `Backspace`\n\n<br/>\n\n\n## Move node\n - Drag and Drop\n\n";let oV=i(c.div`
431
493
  font-family: var(--leva-fonts-mono);
432
494
  font-size: 0.7rem;
433
495
  box-sizing: border-box;
@@ -441,13 +503,13 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
441
503
  color: ${({theme:e})=>e.colors.accent3};
442
504
  filter: hue-rotate(180deg);
443
505
  }
444
- `),oS=i(c.div`
506
+ `),oG=i(c.div`
445
507
  padding: 1rem;
446
508
  height: 100%;
447
509
  width: 100%;
448
510
  box-sizing: border-box;
449
511
  overflow: hidden;
450
- `);var oM=()=>{let e=ef(e=>e.isHelpShown),o=ef(e=>e.toggleHelp);return e?r(eP,{onClose:()=>{o()},children:r(oS,{children:r(oA,{dangerouslySetInnerHTML:{__html:el(ea(oj))},onWheelCapture:e=>e.stopPropagation()})})}):null};let oF=()=>r(n,{children:r(T,{onClick:ef(e=>e.toggleHelp),children:r(q,{})})}),oD=c.div`
512
+ `);var oU=()=>{let e=ex(e=>e.isHelpShown),o=ex(e=>e.toggleHelp);return e?r(eE,{onClose:()=>{o()},children:r(oG,{children:r(oV,{dangerouslySetInnerHTML:{__html:ed(es(oB))},onWheelCapture:e=>e.stopPropagation()})})}):null};let oJ=()=>r(n,{children:r(H,{onClick:ex(e=>e.toggleHelp),children:r(Q,{})})}),oX=c.div`
451
513
  position: fixed;
452
514
  z-index: ${({theme:e})=>e.zIndex.resumeContextLayout};
453
515
  width: 100%;
@@ -461,28 +523,28 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
461
523
  justify-content: center;
462
524
  color: ${({theme:e})=>e.colors.whitePrimary};
463
525
  cursor: pointer;
464
- `,oT=c.div`
526
+ `,oY=c.div`
465
527
  display: flex;
466
528
  width: 100%;
467
529
  align-items: center;
468
530
  justify-content: center;
469
- `,oH=c.div`
531
+ `,oq=c.div`
470
532
  font-family: var(--leva-fonts-mono);
471
533
  font-size: 2rem;
472
- `,oW=c(K)`
534
+ `,oK=c(Z)`
473
535
  width: 7rem;
474
536
  height: 7rem;
475
- `;var o_=()=>{let e=ey(),o=ef(({patch:e})=>e).audioContext,[n,i]=p("running"===o.state);return n?null:t(oD,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[r(oT,{children:r(oH,{theme:e,children:"Click anywhere to resume audio context"})}),r(oT,{children:r(oW,{})})]})},oO=()=>{let e=ef(({setConfig:e})=>e),{showMinimap:o}=ef(({config:e})=>e);return r(T,{onClick:()=>e({showMinimap:!o}),children:o?r(Q,{}):r(Z,{})})},oI=({id:e,sourceX:o,sourceY:i,targetX:l,targetY:a,sourcePosition:d,targetPosition:s,style:c={},data:h,markerStart:p,markerEnd:u,source:m,target:f,sourceHandleId:v,targetHandleId:y,selected:x})=>{let w=ey(),b=ef(({getNode:e})=>e),C=b(m),$=b(f),N=C?.selected||$?.selected;g(()=>{if(v&&y)return console.log(`connected ${m} to ${f}`),()=>{console.log(`disconnected ${m} from ${f}`)}},[m,v,f,y]);let[k]=H({targetX:l,targetY:a,targetPosition:s,sourceX:o,sourceY:i,sourcePosition:d});return t(n,{children:[r("path",{id:e,style:{...c,stroke:x?w.colors.accent2:N?w.colors.highlight3:w.colors.highlight2},className:"react-flow__edge-path Wire",d:k,markerEnd:u}),r("path",{style:{...c,strokeWidth:8,color:"transparent",opacity:0,cursor:"pointer"},d:k,markerEnd:u})]})};let oL=(e,o)=>console.log("drag stop",o),oR=(e,o)=>console.log("click",o),oB=[20,20],oG=({editorState:e,plugins:o=[],editorContextMenu:n=[],onChange:i=()=>{}})=>{let l=u(()=>({wire:oI}),[]),{nodes:a,edges:d,controlPanel:s,onNodesChange:c,onNodesDelete:h,onEdgesChange:f,onEdgesDelete:v,onConnect:y,setEditorState:x,setPlugins:w,setViewport:C,viewport:$}=ef(),N=ef(({config:e})=>e),k=ef(({nodeTypes:e})=>e);g(()=>{w(o)},[o]),g(()=>{e&&x(e)},[e,x]);let[S,M]=p(null);g(()=>{S&&i({nodes:a,edges:d,controlPanel:s,viewport:$})},[a,d,s,$]);let F=m(e=>{S||(M(e),console.log("flow loaded:",e))},[S]),{onContextMenu:D}=(()=>{let{show:e}=R({id:eq});return{onContextMenu:e}})(),{onContextMenu:T}=(()=>{let{show:e}=R({id:eQ});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:H}=(()=>{let{show:e}=R({id:eb});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return g(()=>{$&&S?.setViewport($)},[$,S]),P({onEnd:C}),t(b,{nodes:a,edges:d,onNodesChange:c,onNodesDelete:h,onEdgesChange:f,onConnect:y,onNodeDragStop:oL,onEdgesDelete:v,onInit:F,onNodeClick:oR,onContextMenu:D,onNodeContextMenu:T,onEdgeContextMenu:H,nodeTypes:k,edgeTypes:l,snapGrid:oB,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[r(z,{variant:E.Dots,gap:12}),N.showMinimap?r(j,{}):null,t(A,{style:{right:"1rem",left:"initial",bottom:"40%",top:"initial"},showInteractive:!1,children:[r(oO,{}),r(oF,{})]}),r(o_,{}),r(oE,{}),r(oM,{}),r(eK,{editorContextMenu:n}),r(eZ,{}),r(eC,{})]})},oV=e=>r(S,{children:r(oG,{...e})}),oU={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},oJ=i(c.div`
537
+ `;var oQ=()=>{let e=eC(),o=ex(({patch:e})=>e).audioContext,[n,i]=h("running"===o.state);return n?null:t(oX,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[r(oY,{children:r(oq,{theme:e,children:"Click anywhere to resume audio context"})}),r(oY,{children:r(oK,{})})]})},oZ=()=>{let e=ex(({setConfig:e})=>e),{showMinimap:o}=ex(({config:e})=>e);return r(H,{onClick:()=>e({showMinimap:!o}),children:o?r(ee,{}):r(eo,{})})},o0=({id:e,sourceX:o,sourceY:i,targetX:l,targetY:a,sourcePosition:d,targetPosition:s,style:c={},data:p,markerStart:h,markerEnd:g,source:m,target:f,sourceHandleId:v,targetHandleId:y,selected:b})=>{let x=eC(),w=ex(({getNode:e})=>e),C=w(m),$=w(f),k=C?.selected||$?.selected;u(()=>{if(v&&y)return console.log(`connected ${m} to ${f}`),()=>{console.log(`disconnected ${m} from ${f}`)}},[m,v,f,y]);let[N]=O({targetX:l,targetY:a,targetPosition:s,sourceX:o,sourceY:i,sourcePosition:d});return t(n,{children:[r("path",{id:e,style:{...c,stroke:b?x.colors.accent2:k?x.colors.highlight3:x.colors.highlight2},className:"react-flow__edge-path Wire",d:N,markerEnd:g}),r("path",{style:{...c,strokeWidth:8,color:"transparent",opacity:0,cursor:"pointer"},d:N,markerEnd:g})]})};let o1=(e,o)=>console.log("drag stop",o),o2=(e,o)=>console.log("click",o),o3=[20,20],o9=({editorState:e,plugins:o=[],editorContextMenu:n=[],onChange:i=()=>{}})=>{let l=g(()=>({wire:o0}),[]),{nodes:a,edges:d,controlPanel:s,onNodesChange:c,onNodesDelete:p,onEdgesChange:f,onEdgesDelete:v,onConnect:y,setEditorState:b,setPlugins:x,setViewport:w,viewport:$}=ex(),k=ex(({config:e})=>e),N=ex(({nodeTypes:e})=>e);u(()=>{x(o)},[o]),u(()=>{e&&b(e)},[e,b]);let[P,S]=h(null);u(()=>{P&&i({nodes:a,edges:d,controlPanel:s,viewport:$})},[a,d,s,$]);let F=m(e=>{P||(S(e),console.log("flow loaded:",e))},[P]),{onContextMenu:T}=(()=>{let{show:e}=B({id:e9});return{onContextMenu:e}})(),{onContextMenu:D}=(()=>{let{show:e}=B({id:e5});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:H}=(()=>{let{show:e}=B({id:eN});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return u(()=>{$&&P?.setViewport($)},[$,P]),z({onEnd:w}),t(C,{nodes:a,edges:d,onNodesChange:c,onNodesDelete:p,onEdgesChange:f,onConnect:y,onNodeDragStop:o1,onEdgesDelete:v,onInit:F,onNodeClick:o2,onContextMenu:T,onNodeContextMenu:D,onEdgeContextMenu:H,nodeTypes:N,edgeTypes:l,snapGrid:o3,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[r(A,{variant:j.Dots,gap:12}),k.showMinimap?r(E,{}):null,t(M,{style:{right:"1rem",left:"initial",bottom:"40%",top:"initial"},showInteractive:!1,children:[r(oZ,{}),r(oJ,{})]}),r(oQ,{}),r(oR,{}),r(oU,{}),r(e8,{editorContextMenu:n}),r(e4,{}),r(eP,{})]})},o8=e=>r(S,{children:r(o9,{...e})}),o5={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},o4=i(c.div`
476
538
  display: flex;
477
539
  flex-direction: column;
478
540
  height: 100%;
479
541
  width: 100%;
480
- `),oX=i(c.div`
542
+ `),o7=i(c.div`
481
543
  height: 100%;
482
544
  width: 100%;
483
545
  display: flex;
484
546
  position: relative;
485
- `),oY=i(c.div`
547
+ `),o6=i(c.div`
486
548
  background: ${({theme:e})=>e.colors.elevation2};
487
549
  opacity: 0.7;
488
550
  position: absolute;
@@ -497,12 +559,12 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
497
559
  align-items: center;
498
560
  justify-content: center;
499
561
  font-size: 6rem;
500
- `),oq=i(c.div`
562
+ `),te=i(c.div`
501
563
  height: 2rem;
502
564
  display: flex;
503
565
  align-items: center;
504
566
  background: ${({theme:e})=>e.colors.elevation2};
505
- `),oK=i(c.div`
567
+ `),to=i(c.div`
506
568
  display: flex;
507
569
  align-items: center;
508
570
  cursor: pointer;
@@ -519,7 +581,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
519
581
  background-color: ${({theme:e})=>e.colors.elevation1};
520
582
  }
521
583
  }
522
- `),oQ=i(c.div`
584
+ `),tt=i(c.div`
523
585
  display: flex;
524
586
  align-items: center;
525
587
  height: 100%;
@@ -530,10 +592,10 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
530
592
  &:hover {
531
593
  color: ${({theme:e})=>e.colors.whitePrimary};
532
594
  }
533
- `),oZ=i(c(v)`
595
+ `),tr=i(c(v)`
534
596
  height: 40%;
535
597
  width: auto;
536
- `),o0=i(c(y)`
598
+ `),tn=i(c(y)`
537
599
  height: 70%;
538
600
  width: auto;
539
601
  cursor: pointer;
@@ -541,7 +603,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
541
603
  &:hover {
542
604
  color: ${({theme:e})=>e.colors.whitePrimary};
543
605
  }
544
- `),o1=()=>({file:oU,name:"Unnamed",type:"patch",id:h()});var o2=({...e})=>{let{projectState:o,theme:n}=e,i=ef(e=>e.currentFileIndex),s=ef(e=>e.setCurrentFileIndex),c=ef(e=>e.project),h=ef(e=>e.setProject),u=ef(e=>e.getProject),m=ef(e=>e.updateFileName),f=ef(e=>e.pullEditorChanges),v=ef(e=>e.addFile),y=ef(e=>e.deleteFile),x=ef(e=>e.setEditorState),[w,b]=p(!1);return g(()=>{h(o||{files:[o1()]}),o&&x(o.files[0].file)},[o]),g(()=>{var e;return e=async(...e)=>{let o=new Request(...e),t=u().files,r=o.url.replace("project://",""),n=t.find(({id:e})=>e===r);return new Response(JSON.stringify(n?.file??null))},ed.push(["project://*",e]),()=>{}},[u]),g(()=>{b(!0),x(u().files[i]?.file),setTimeout(()=>{b(!1)},1600)},[i,x]),t(l,{theme:n||ev,children:[r(a,{styles:d`
606
+ `),ti=()=>({file:o5,name:"Unnamed",type:"patch",id:p()});var tl=({...e})=>{let{projectState:o,theme:n}=e,i=ex(e=>e.currentFileIndex),s=ex(e=>e.setCurrentFileIndex),c=ex(e=>e.project),p=ex(e=>e.setProject),g=ex(e=>e.getProject),m=ex(e=>e.updateFileName),f=ex(e=>e.pullEditorChanges),v=ex(e=>e.addFile),y=ex(e=>e.deleteFile),b=ex(e=>e.setEditorState),[x,w]=h(!1);return u(()=>{p(o||{files:[ti()]}),o&&b(o.files[0].file)},[o]),u(()=>{var e;return e=async(...e)=>{let o=new Request(...e),t=g().files,r=o.url.replace("project://",""),n=t.find(({id:e})=>e===r);return new Response(JSON.stringify(n?.file??null))},ec.push(["project://*",e]),()=>{}},[g]),u(()=>{w(!0),b(g().files[i]?.file),setTimeout(()=>{w(!1)},1600)},[i,b]),t(l,{theme:n||ew,children:[r(a,{styles:d`
545
607
  :root {
546
608
  --leva-colors-elevation1: #292d39;
547
609
  --leva-colors-elevation2: #181c20;
@@ -598,5 +660,5 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
598
660
  --leva-fontWeights-folder: normal;
599
661
  --leva-fontWeights-button: normal;
600
662
  }
601
- `}),t(oJ,{children:[t(oq,{children:[c.files.map((e,o)=>t(oK,{onClick:()=>s(o),active:o===i,children:[r(e3,{onChange:e=>m(o,e),value:e.name||"Unnamed"}),r(o0,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&y(o)}})]},o)),r(oQ,{onClick:()=>v(o1()),children:r(oZ,{})})]}),t(oX,{children:[r(oV,{...e,onChange:e=>{f()},editorState:oU}),r(oY,{show:w,children:"Loading..."})]})]})]})};export{o2 as Editor,oI as Wire,os as WNNode,od as TitleBar,oe as PortsPanel,ot as OutputPorts,oa as OutputHandle,oo as InputPorts,oi as InputHandle,or as Port,eP as Modal,e3 as EditableLabel,e0 as useAudioNode,e1 as useNode,ey as useTheme,ef as useStore,ev as theme};
663
+ `}),t(o4,{children:[t(te,{children:[c.files.map((e,o)=>t(to,{onClick:()=>s(o),active:o===i,children:[r(oo,{onChange:e=>m(o,e),value:e.name||"Unnamed"}),r(tn,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&y(o)}})]},o)),r(tt,{onClick:()=>v(ti()),children:r(tr,{})})]}),t(o7,{children:[r(o8,{...e,onChange:e=>{f()},editorState:o5}),r(o6,{show:x,children:"Loading..."})]})]})]})};export{tl as Editor,o5 as EDITOR_DEFAULTS,o0 as Wire,o$ as WNNode,ow as TitleBar,op as PortsPanel,ou as OutputPorts,ox as OutputHandle,oh as InputPorts,oy as InputHandle,og as Port,eE as Modal,oo as EditableLabel,e7 as useAudioNode,e6 as useNode,eC as useTheme,ex as useStore,ew as theme,eb as PortType};
602
664
  //# sourceMappingURL=module.js.map