@web-noise/core 0.0.4 → 0.0.6
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/constants.js +1 -47
- package/dist/constants.js.map +1 -1
- package/dist/main.js +13 -7
- package/dist/main.js.map +1 -1
- package/dist/module.js +86 -80
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +16 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
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 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`
|
|
1
|
+
let e,o;import{jsx as t,jsxs 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 f,useRef as m}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 j,BackgroundVariant as A,MiniMap as E,Controls as M,ReactFlowProvider as F,useReactFlow as S,Position as T,Handle as D,ControlButton as H,getBezierPath as O}from"reactflow";import{create as _}from"zustand";import{reverse as I,patch as W,create as L}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}`,ef=10;(ex=ew||(ew={})).Gate="gate",ex.Number="number",ex.Audio="audio",ex.Any="any";let em=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))}},ey=e=>!("type"in e)||"patch"===e.type,eb=e=>"audio"===e.type;var ex,ew,eC=_((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=I(d);s&&e({...W(em({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({...W(em({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,f=u instanceof AudioParam,m=u instanceof Array,v=g||f,y=c instanceof AudioNode,b=c instanceof Array;y&&v?c.connect(u):y&&m?c.connect(u[0],0,u[1]):b&&v?c[0].connect(u,c[1]):b&&m?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];eb(i)||r(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:r}=o(),n=r.files[e];if("audio"===n.type)return void console.log("audio file. skipping");t(n.file)},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}})},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:f}=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 m=c.map(e=>{let o=f[e.source]||e.source,t=f[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})),...m])},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/ef}:{}};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=L({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)})),e$={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: ${
|
|
7
|
+
background: ${e$.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: ${
|
|
28
|
+
stroke: ${e$.colors.accent2};
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
.react-flow__node.selected {
|
|
32
|
-
border: 1px solid ${
|
|
33
|
-
box-shadow: 0 0 0 0.5px #${
|
|
32
|
+
border: 1px solid ${e$.colors.accent2};
|
|
33
|
+
box-shadow: 0 0 0 0.5px #${e$.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 #${
|
|
37
|
+
box-shadow: 0 0 0 0.5px #${e$.colors.accent2};
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/* .react-flow__minimap-mask {
|
|
41
|
-
fill: ${
|
|
41
|
+
fill: ${e$.colors.elevation1}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
.react-flow__minimap-node {
|
|
45
|
-
fill:${
|
|
45
|
+
fill:${e$.colors.accent2}
|
|
46
46
|
} */
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
`;var
|
|
49
|
+
`;var ek=()=>s();let eN=c(V)``,eP=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
|
-
`,
|
|
62
|
+
`,ez="editor-edge-menu";var ej=()=>{let e=ek(),o=eC(e=>e.removeEdges);return t(n,{children:t(eP,{id:ez,animation:!1,colors:e.colors,children:t(eN,{onClick:e=>o([e.props.edge]),children:"Delete Edge (DEL)"})})})};let eA=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
|
-
`,
|
|
73
|
+
`,eE=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
|
-
`,
|
|
81
|
+
`,eM=c(y)`
|
|
82
82
|
position: absolute;
|
|
83
83
|
top: 0.2rem;
|
|
84
84
|
right: 0.2rem;
|
|
85
85
|
cursor: pointer;
|
|
86
|
-
`;var
|
|
86
|
+
`;var eF=({children:e,onClose:o,...n})=>{let i=ek();return u(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),Y(t(eA,{theme:i,onClick:o,children:r(eE,{...n,onClick:e=>{e.stopPropagation()},theme:i,children:[e,t(eM,{theme:i,onClick:o})]})}),document.body)};let eS=c.div`
|
|
87
87
|
display: flex;
|
|
88
88
|
position: relative;
|
|
89
|
-
`,
|
|
89
|
+
`,eT=c.input`
|
|
90
90
|
padding-right: 2rem;
|
|
91
91
|
padding-left: 0.3rem;
|
|
92
92
|
width: 100%;
|
|
@@ -117,14 +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
|
-
`,
|
|
120
|
+
`,eD=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
126
|
min-width: 14rem;
|
|
127
|
-
`,
|
|
127
|
+
`,eH=c.label`
|
|
128
128
|
user-select: none;
|
|
129
129
|
input {
|
|
130
130
|
display: none;
|
|
@@ -136,14 +136,14 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
136
136
|
color: ${({theme:e})=>e.colors.accent3};
|
|
137
137
|
cursor: pointer;
|
|
138
138
|
}
|
|
139
|
-
`;var
|
|
139
|
+
`;var eO=({onChange:e,value:o})=>{let n=ek(),i=eC(({plugins:e})=>e),l=m(null);return u(()=>{l.current&&l.current.focus()},[l]),r(eD,{theme:n,children:[t(eS,{children:t(eT,{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?r(eH,{theme:n,children:[t("input",{type:"checkbox",name:"plugin",value:i,checked:i===o.plugin,onChange:()=>{e({...o,plugin:i===o.plugin?null:i})}}),t("span",{children:i})]},a):null)]})};let e_=i(c.div`
|
|
140
140
|
width: 100%;
|
|
141
|
-
`),
|
|
141
|
+
`),eI=i(c.div`
|
|
142
142
|
padding: 1rem;
|
|
143
143
|
display: flex;
|
|
144
144
|
flex-direction: column;
|
|
145
145
|
gap: 1rem;
|
|
146
|
-
`),
|
|
146
|
+
`),eW=i(c.ul`
|
|
147
147
|
list-style: none;
|
|
148
148
|
margin: 0;
|
|
149
149
|
padding: 0;
|
|
@@ -168,26 +168,26 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
168
168
|
white-space: nowrap;
|
|
169
169
|
overflow: hidden;
|
|
170
170
|
text-overflow: ellipsis;
|
|
171
|
-
`),
|
|
171
|
+
`),eR=i(c.div`
|
|
172
172
|
color: ${({theme:e})=>e.colors.highlight2};
|
|
173
173
|
font-size: 12px;
|
|
174
|
-
`),
|
|
174
|
+
`),eB=i(c.div``),eV=i(c.div`
|
|
175
175
|
font-size: 1.1rem;
|
|
176
176
|
padding: 0.25rem 0;
|
|
177
177
|
color: ${({theme:e})=>e.colors.highlight3};
|
|
178
|
-
`),
|
|
178
|
+
`),eG=i(c.div`
|
|
179
179
|
color: ${({theme:e})=>e.colors.highlight2};
|
|
180
180
|
font-size: 12px;
|
|
181
|
-
`);var
|
|
181
|
+
`);var eU=({onComponentClick:e,filters:{plugin:o,search:n}})=>{let i=eC(({plugins:e})=>e),l=g(()=>o?i.filter(({name:e})=>e===o):i,[i,o]);return t(e_,{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?r(eI,{children:[r(eB,{children:[t(eV,{children:o}),t(eG,{children:n})]}),t(eW,{children:i.sort((e,o)=>e.type.toLowerCase()>o.type.toLowerCase()?1:-1).map((o,n)=>r("li",{onClick:()=>e(o),children:[t(eL,{children:o.name||o.type}),o.description&&t(eR,{children:o.description})]},n))})]},l):null)})};let eJ=c.div`
|
|
182
182
|
height: 100%;
|
|
183
183
|
width: 100%;
|
|
184
184
|
display: flex;
|
|
185
185
|
gap: 1rem;
|
|
186
|
-
`,
|
|
186
|
+
`,eX=c.div`
|
|
187
187
|
flex-grow: 1;
|
|
188
188
|
height: 100%;
|
|
189
189
|
overflow-y: scroll;
|
|
190
|
-
`;var
|
|
190
|
+
`;var eY=({isOpen:e,closeMenu:o,mousePosition:n})=>{let i=ek(),{screenToFlowPosition:l}=S(),{createNode:a}=eC(({createNode:e})=>({createNode:e})),[d,s]=h({}),c=f(({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?t(eF,{onClose:()=>{o(),s({})},children:r(eJ,{theme:i,children:[t(eO,{onChange:s,value:d}),t(eX,{theme:i,children:t(eU,{filters:d,onComponentClick:e=>{c(e),s({})}})})]})}):null};let eq=c.div`
|
|
191
191
|
display: flex;
|
|
192
192
|
align-items: center;
|
|
193
193
|
justify-content: center;
|
|
@@ -213,19 +213,19 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
213
213
|
.drop-zone-drag-over {
|
|
214
214
|
opacity: 1;
|
|
215
215
|
}
|
|
216
|
-
`,
|
|
216
|
+
`,eK=c.div`
|
|
217
217
|
display: flex;
|
|
218
218
|
flex-wrap: wrap;
|
|
219
219
|
align-items: center;
|
|
220
220
|
justify-content: center;
|
|
221
221
|
height: 100%;
|
|
222
222
|
width: 100%;
|
|
223
|
-
`,
|
|
223
|
+
`,eQ=c(K)`
|
|
224
224
|
width: 100%;
|
|
225
225
|
height: 8rem;
|
|
226
|
-
`,
|
|
226
|
+
`,eZ=c.div`
|
|
227
227
|
font-size: 2rem;
|
|
228
|
-
`;var
|
|
228
|
+
`;var e0=({isOpen:e,closeMenu:o})=>{let n=ek(),i=eC(({setGraph:e})=>e),l=eC(e=>e.setEditorState),a=m(null),d=f(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{l(e),o()}).catch(console.error)},[i,o]);return e?t(eF,{onClose:o,children:r(eq,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>d(e),ref:a,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(q,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{a.current?.click()},onDrop:e=>d(e),children:r(eK,{theme:n,children:[t(eQ,{}),t(eZ,{children:"click or drop file here"})]})})]})}):null};let e1=c.div`
|
|
229
229
|
display: flex;
|
|
230
230
|
align-items: center;
|
|
231
231
|
justify-content: center;
|
|
@@ -251,19 +251,19 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
251
251
|
.drop-zone-drag-over {
|
|
252
252
|
opacity: 1;
|
|
253
253
|
}
|
|
254
|
-
`,
|
|
254
|
+
`,e2=c.div`
|
|
255
255
|
display: flex;
|
|
256
256
|
flex-wrap: wrap;
|
|
257
257
|
align-items: center;
|
|
258
258
|
justify-content: center;
|
|
259
259
|
height: 100%;
|
|
260
260
|
width: 100%;
|
|
261
|
-
`,
|
|
261
|
+
`,e3=c(K)`
|
|
262
262
|
width: 100%;
|
|
263
263
|
height: 8rem;
|
|
264
|
-
`,
|
|
264
|
+
`,e9=c.div`
|
|
265
265
|
font-size: 2rem;
|
|
266
|
-
`;var
|
|
266
|
+
`;var e8=({isOpen:e,closeMenu:o})=>{let n=ek(),i=eC(e=>e.setProject),l=m(null),a=f(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{i(e),o()}).catch(console.error)},[i,o]);return e?t(eF,{onClose:o,children:r(e1,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(q,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:r(e2,{theme:n,children:[t(e3,{}),t(e9,{children:"click or drop file here"})]})})]})}):null};let e5="editor-menu";var e6=({editorContextMenu:e=[]})=>{let o=ek(),[i,l]=h({x:0,y:0}),[a,d]=h(!1),[s,c]=h(!1),[p,m]=h(!1),v=f((e,o)=>{l({x:e,y:o}),d(!0)},[d]),y=eC(e=>e.pasteBuffer),{screenToFlowPosition:b}=S(),x=f(e=>{let{x:o,y:t}=b(e);y(o,t)},[d,b]),w=eC(({clearGraph:e})=>e),C=eC(e=>e.getEditorState),$=eC(e=>e.getProject),k=f(()=>{w()},[w]),N=eC(e=>e.toggleHelp),P=eC(e=>e.history.back),z=eC(e=>e.history.forward),j=eC(e=>e.history.pointer),A=eC(e=>e.history.buffer),E=eC(e=>e.copySelectedItems),M=eC(e=>e.nodes),F=g(()=>M.filter(({selected:e})=>e),[M]),T=eC(e=>e.copyBuffer),D=S(),H=f(()=>{J(JSON.stringify({...C()},null,2),"web-noise-patch.json")},[C,D]),O=f(()=>{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]),r(n,{children:[t(eY,{isOpen:a,closeMenu:()=>d(!1),mousePosition:i}),t(e0,{isOpen:s,closeMenu:()=>c(!1)}),t(e8,{isOpen:p,closeMenu:()=>m(!1)}),r(eP,{id:e5,animation:!1,colors:o.colors,children:[t(eN,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>v(e,o),children:"Add Node (⌘+⇧+A)"}),t(U,{}),t(eN,{onClick:k,children:"Delete All"}),t(U,{}),t(eN,{onClick:H,children:"Download patch"}),t(eN,{onClick:()=>c(!0),children:"Upload patch"}),t(U,{}),t(eN,{onClick:O,children:"Download project"}),t(eN,{onClick:()=>m(!0),children:"Upload project"}),t(U,{}),t(eN,{disabled:0===j,onClick:P,children:"Undo (⌘+z)"}),t(eN,{disabled:j===A.length,onClick:z,children:"Redo (⌘+⇧+Z)"}),t(U,{}),t(eN,{disabled:!F.length,onClick:E,children:"Copy Selected (⌘+c)"}),t(eN,{disabled:!T.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>x({x:e,y:o}),children:"Paste (⌘+v)"}),t(U,{}),e.map((e,o)=>t(eN,{children:e},o)),t(U,{}),t(eN,{onClick:N,children:"Help (⇧+?)"})]})]})};let e4="editor-node-menu";var e7=e=>{let o=ek(),i=eC(e=>e.removeNodes),l=eC(e=>e.addNodeToControlPanel),a=eC(e=>e.removeNodeFromControlPanel),d=eC(e=>e.copy),s=eC(e=>e.nodesConfiguration),c=eC(e=>e.controlPanel.nodes),p=f(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),h=f(({props:e})=>{if(!e?.node.type)return!1;let o=s[e.node.type];return!!o?.controlPanelNode},[s]);return t(n,{children:r(eP,{id:e4,animation:!1,colors:o.colors,children:[t(eN,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),t(eN,{hidden:(...e)=>!h(...e)||p(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),t(eN,{hidden:(...e)=>!h(...e)||!p(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),t(eN,{onClick:e=>d({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},oe=e=>eC(({patch:e})=>e).audioNodes.get(e),oo=e=>{let o=eC(({updateNodeData:e})=>e),t=f(t=>o(e,{values:t}),[e,o]);return{updateNodeValues:t,updateNodeConfig:f(t=>o(e,{config:t}),[e,o]),updateNodeLabel:f(t=>o(e,{label:t}),[e,o])}};let ot=c.input`
|
|
267
267
|
width: 100%;
|
|
268
268
|
background: none;
|
|
269
269
|
border: none;
|
|
@@ -292,7 +292,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
292
292
|
padding: 0.3rem;
|
|
293
293
|
border-radius: 0.2rem;
|
|
294
294
|
}
|
|
295
|
-
`;var
|
|
295
|
+
`;var or=({onChange:e,value:o="",className:r})=>{let n=m(null),[i,l]=h(!1),a=f(e=>{e.target?.select(),l(!0)},[l]),d=f(()=>{window.getSelection()?.collapseToEnd(),l(!1)},[l]),s=f(()=>{d(),n.current&&e(n.current.value)},[n,d,e]),c=f(()=>{d(),n.current&&o&&(n.current.value=o)},[n,d,o]);return u(()=>{n.current&&(n.current.value=o)},[o,n]),t(ot,{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:r})};let on=i(c.div`
|
|
296
296
|
height: 100%;
|
|
297
297
|
width: 100%;
|
|
298
298
|
overflow: scroll;
|
|
@@ -320,13 +320,13 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
320
320
|
a {
|
|
321
321
|
color: ${({theme:e})=>e.colors.accent1};
|
|
322
322
|
}
|
|
323
|
-
`);var
|
|
323
|
+
`);var oi=({isOpen:e,onClose:o,type:r,node:n})=>{let{info:i,portsDescription:l}=eC(e=>e.nodesConfiguration[r]),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?t(eF,{onClose:o,children:t(on,{dangerouslySetInnerHTML:{__html:ed((i||"")+"\n\n"+a||"")}})}):null};let ol=c.div`
|
|
324
324
|
background-color: var(--leva-colors-elevation1);
|
|
325
|
-
`,
|
|
325
|
+
`,oa=c(ol)`
|
|
326
326
|
padding: 2rem 5rem;
|
|
327
|
-
`,
|
|
327
|
+
`,od=c(ol)`
|
|
328
328
|
padding: 1rem 2rem;
|
|
329
|
-
`,
|
|
329
|
+
`,os=c(x)`
|
|
330
330
|
font-size: 1.2rem;
|
|
331
331
|
opacity: 0.4;
|
|
332
332
|
width: 1rem;
|
|
@@ -334,7 +334,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
334
334
|
opacity: 1;
|
|
335
335
|
cursor: pointer;
|
|
336
336
|
}
|
|
337
|
-
`,
|
|
337
|
+
`,oc=c(w)`
|
|
338
338
|
font-size: 1.2rem;
|
|
339
339
|
opacity: 0.4;
|
|
340
340
|
width: 1rem;
|
|
@@ -342,12 +342,12 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
342
342
|
opacity: 1;
|
|
343
343
|
cursor: pointer;
|
|
344
344
|
}
|
|
345
|
-
`,
|
|
345
|
+
`,op=c.div`
|
|
346
346
|
position: relative;
|
|
347
347
|
font-family: var(--leva-fonts-mono);
|
|
348
348
|
font-size: var(--leva-fontSizes-root);
|
|
349
349
|
background-color: var(--leva-colors-elevation1);
|
|
350
|
-
`,
|
|
350
|
+
`,oh=c(op)`
|
|
351
351
|
display: flex;
|
|
352
352
|
height: var(--leva-sizes-titleBarHeight);
|
|
353
353
|
touch-action: none;
|
|
@@ -357,38 +357,38 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
357
357
|
color: var(--leva-colors-highlight1);
|
|
358
358
|
padding: 0 0.4rem;
|
|
359
359
|
gap: 0.3rem;
|
|
360
|
-
`,
|
|
360
|
+
`,ou=c(op)(({theme:e})=>`
|
|
361
361
|
display: grid;
|
|
362
362
|
grid-template-areas: "inputs outputs";
|
|
363
363
|
background: ${e.colors.elevation2};
|
|
364
364
|
border-bottom: 1px solid ${e.colors.elevation1};
|
|
365
365
|
color: ${e.colors.highlight3};
|
|
366
366
|
font-size: 0.6rem;
|
|
367
|
-
`),
|
|
367
|
+
`),og=c.div`
|
|
368
368
|
grid-area: inputs;
|
|
369
369
|
text-align: left;
|
|
370
|
-
`,
|
|
370
|
+
`,of=c.div`
|
|
371
371
|
grid-area: outputs;
|
|
372
372
|
text-align: right;
|
|
373
|
-
`,
|
|
373
|
+
`,om=c.div`
|
|
374
374
|
position: relative;
|
|
375
375
|
padding: 5px 10px;
|
|
376
|
-
`,
|
|
377
|
-
--port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return
|
|
376
|
+
`,ov={[ew.Audio]:"#4ade80",[ew.Gate]:"#c084fc",[ew.Number]:"#38bdf8",[ew.Any]:"#ffffff"},oy=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 ov[e.portType];{let o=e.portType.map(e=>ov[e]);return`linear-gradient(0.25turn, ${o.join(", ")});`}}};
|
|
378
378
|
border-color: var(--port-color);
|
|
379
379
|
background: var(--port-color);
|
|
380
380
|
box-shadow: 0px 0px 0px 1px ${({theme:e})=>e.colors.elevation2} inset;
|
|
381
|
-
`),
|
|
381
|
+
`),ob=i(c(oy)`
|
|
382
382
|
left: -3px;
|
|
383
|
-
`),
|
|
383
|
+
`),ox=({...e})=>t(ob,{...e,type:"target",position:T.Left}),ow=i(c(oy)`
|
|
384
384
|
right: -3px;
|
|
385
|
-
`),
|
|
385
|
+
`),oC=e=>t(ow,{...e,type:"source",position:T.Right}),o$=({className:e,...o})=>t(oh,{...o,className:[e,eu].join(" ")}),ok=e=>eC(o=>o.nodesConfiguration[e]),oN=e=>{let{id:o,children:n,selected:i,...l}=e,a=ek(),d=eC(({getNode:e})=>e),s=eC(e=>e.nodesConfiguration),[c,p]=h(!1),{info:u}=ok(e.type),f=g(()=>s[e.type].resizable??!1,[s,e.type]),{updateNodeLabel:m,updateNodeConfig:v}=oo(o),{data:y}=d(o)||{},b=oe(o),{ConfigNode:x}=(e=>{let{configNode:o}=ok(e);return{ConfigNode:o}})(l.type),[w,C]=h(!1);if(!b)return t(oa,{className:eu,children:"can't find audio node"});if(b.loading)return t(oa,{className:eu,children:"loading"});if(b.error)return r(od,{className:eu,children:["error: ",b.error.toString()]});if(!b.node)return t(oa,{className:eu,children:"can't find audio node"});let $=y?.config?.size,{node:{inputs:k,outputs:N}}=b;return r(ol,{children:[r(o$,{children:[u&&t(oc,{onClickCapture:()=>p(!0)}),t(or,{value:y?.label??"No Name",onChange:m}),x&&t(os,{onClickCapture:()=>C(e=>!e)})]}),r(ou,{theme:a,children:[t(og,{children:k?Object.keys(k).map((e,o)=>r(om,{children:[t(ox,{id:e,portType:k[e].type}),t("span",{children:e})]},o)):null}),t(of,{children:N?Object.keys(N).map((e,o)=>r(om,{children:[t(oC,{id:e,portType:N[e].type}),t("span",{children:e})]},o)):null})]}),x&&w&&i?t(x,{...e}):f?t(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,t(oi,{isOpen:c,type:e.type,onClose:()=>p(!1),node:b.node})]})},oP=c.div`
|
|
386
386
|
width: 100%;
|
|
387
387
|
padding: 0.4rem 0;
|
|
388
388
|
white-space: nowrap;
|
|
389
389
|
overflow: hidden;
|
|
390
390
|
text-overflow: ellipsis;
|
|
391
|
-
`,
|
|
391
|
+
`,oz=c(o$)`
|
|
392
392
|
display: flex;
|
|
393
393
|
gap: 0.1rem;
|
|
394
394
|
padding: 0 0.4rem;
|
|
@@ -396,13 +396,13 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
396
396
|
font-size: 0.6rem;
|
|
397
397
|
height: auto;
|
|
398
398
|
min-width: 0;
|
|
399
|
-
`,
|
|
399
|
+
`,oj=c.div`
|
|
400
400
|
display: flex;
|
|
401
401
|
align-items: center;
|
|
402
402
|
height: 70%;
|
|
403
403
|
width: auto;
|
|
404
404
|
gap: 0.4rem;
|
|
405
|
-
`,
|
|
405
|
+
`,oA=c.span`
|
|
406
406
|
width: auto;
|
|
407
407
|
height: 100%;
|
|
408
408
|
cursor: pointer;
|
|
@@ -414,11 +414,11 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
414
414
|
color: ${({theme:e})=>e.colors.highlight2};
|
|
415
415
|
cursor: pointer;
|
|
416
416
|
}
|
|
417
|
-
`,
|
|
417
|
+
`,oE=c.div`
|
|
418
418
|
height: 100%;
|
|
419
419
|
display: grid;
|
|
420
420
|
grid-template-rows: auto 1fr;
|
|
421
|
-
`,
|
|
421
|
+
`,oM=e=>{let{node:o}=e,r=eC(e=>e.getControlPanelNode),n=g(()=>r(o),[o]);return n?t(n,{...e}):null};var oF=e=>{let{node:o,showControls:n,onDelete:i}=e,l=ek(),{id:a}=o,{node:d}=oe(a)||{},{updateNodeValues:s}=oo(a);return r(oE,{theme:l,children:[r(oz,{theme:l,children:[t(oP,{children:o.data.label}),n&&r(oj,{children:[t(oA,{theme:l,children:t(b,{className:"grid-item-handle"})}),t(oA,{theme:l,children:t(y,{onClick:()=>i(o)})})]})]}),t(oM,{node:o,audioNode:d,updateNodeValues:s})]})};let oS=c.div`
|
|
422
422
|
position: fixed;
|
|
423
423
|
z-index: 5;
|
|
424
424
|
box-shadow: 0px 1px 2px ${({theme:e})=>e.colors.elevation2};
|
|
@@ -438,30 +438,30 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
438
438
|
color: ${({theme:e})=>e.colors.highlight2};
|
|
439
439
|
cursor: pointer;
|
|
440
440
|
}
|
|
441
|
-
`,
|
|
441
|
+
`,oT=c(oj)`
|
|
442
442
|
height: 80%;
|
|
443
|
-
`,
|
|
443
|
+
`,oD=c(oA)`
|
|
444
444
|
font-size: 1rem;
|
|
445
445
|
display: flex;
|
|
446
446
|
align-items: center;
|
|
447
|
-
`,
|
|
447
|
+
`,oH=c(oz)`
|
|
448
448
|
grid-template-columns: 1fr auto;
|
|
449
449
|
border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
|
|
450
450
|
font-size: 0.7rem;
|
|
451
|
-
`,
|
|
451
|
+
`,oO=c(oP)`
|
|
452
452
|
text-align: center;
|
|
453
|
-
`,
|
|
453
|
+
`,o_=c.div`
|
|
454
454
|
height: 100%;
|
|
455
455
|
width: 100%;
|
|
456
456
|
padding: 0.3rem 0.4rem;
|
|
457
457
|
box-sizing: border-box;
|
|
458
|
-
`,
|
|
458
|
+
`,oI=c.div`
|
|
459
459
|
height: auto;
|
|
460
460
|
padding: 0;
|
|
461
461
|
max-height: 95vh;
|
|
462
462
|
overflow-y: scroll;
|
|
463
463
|
border: 1px solid ${({theme:e})=>e.colors.elevation3};
|
|
464
|
-
`,
|
|
464
|
+
`,oW=c.div`
|
|
465
465
|
padding: 1rem 0;
|
|
466
466
|
font-family: var(--leva-fonts-mono);
|
|
467
467
|
font-size: 0.8rem;
|
|
@@ -474,7 +474,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
474
474
|
&:hover {
|
|
475
475
|
color: ${({theme:e})=>e.colors.highlight2};
|
|
476
476
|
}
|
|
477
|
-
`,
|
|
477
|
+
`,oR=c.div`
|
|
478
478
|
position: absolute;
|
|
479
479
|
height: 1rem;
|
|
480
480
|
top: 0;
|
|
@@ -482,14 +482,14 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
482
482
|
margin: auto;
|
|
483
483
|
left: 0.5rem;
|
|
484
484
|
border-right: 1px solid ${({theme:e})=>e.colors.whitePrimary};
|
|
485
|
-
`,
|
|
485
|
+
`,oB=c.div`
|
|
486
486
|
box-sizing: border-box;
|
|
487
487
|
overflow: hidden;
|
|
488
488
|
.react-resizable-handle:after {
|
|
489
489
|
border-color: ${({theme:e})=>e.colors.whitePrimary};
|
|
490
490
|
border-width: 1px;
|
|
491
491
|
}
|
|
492
|
-
`;var
|
|
492
|
+
`;var oV=()=>{let e=ek(),o=m(null),i=eC(e=>e.nodes),{show:l,nodes:a,size:d}=eC(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=eC(e=>e.showControlPanel),f=eC(e=>e.hideControlPanel),v=eC(e=>e.setControlPanelNodes),b=eC(e=>e.setControlPanelSize),x=eC(e=>e.removeNodeFromControlPanel),[w,C]=h(!0),$=g(()=>{let e=a.reduce((e,{height:o=ef,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?r(n,{children:[t(oS,{theme:e,ref:o,onClick:u,children:t(el,{})}),r(ea,{open:l,onClose:f,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[r(oH,{theme:e,children:[t(oO,{children:"Control Panel"}),t(oT,{children:t(oD,{onClick:f,theme:e,children:t(y,{})})})]}),r(o_,{children:[t(oW,{children:w?r(oL,{theme:e,onClick:()=>C(!1),children:[t(en,{}),"Unlock grid"]}):r(oL,{theme:e,onClick:()=>C(!0),children:[t(ei,{}),"Lock grid"]})}),t(et,{enable:{top:!1,right:!w,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:t(oR,{theme:e})},minWidth:120,size:{width:s,height:"auto"},onResizeStop:(e,o,t,r)=>{b({width:s+r.width,height:c+r.height})},children:t(oI,{theme:e,children:t(er,{layout:$,className:"layout",cols:4,rowHeight:ef,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=>t(oB,{theme:e,children:t(oF,{node:o,showControls:!w,onDelete:x})},o.id))})})})]})]})]}):null},oG={};oG="# Quick start\n\n## Add node\n - Mouse right click\n - Select **'Add Node'** from context menu\n\n ### 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 ### 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 oU=i(c.div`
|
|
493
493
|
font-family: var(--leva-fonts-mono);
|
|
494
494
|
font-size: 0.7rem;
|
|
495
495
|
box-sizing: border-box;
|
|
@@ -503,13 +503,13 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
503
503
|
color: ${({theme:e})=>e.colors.accent3};
|
|
504
504
|
filter: hue-rotate(180deg);
|
|
505
505
|
}
|
|
506
|
-
`),
|
|
506
|
+
`),oJ=i(c.div`
|
|
507
507
|
padding: 1rem;
|
|
508
508
|
height: 100%;
|
|
509
509
|
width: 100%;
|
|
510
510
|
box-sizing: border-box;
|
|
511
511
|
overflow: hidden;
|
|
512
|
-
`);var
|
|
512
|
+
`);var oX=()=>{let e=eC(e=>e.isHelpShown),o=eC(e=>e.toggleHelp);return e?t(eF,{onClose:()=>{o()},children:t(oJ,{children:t(oU,{dangerouslySetInnerHTML:{__html:ed(es(oG))},onWheelCapture:e=>e.stopPropagation()})})}):null};let oY=()=>t(n,{children:t(H,{onClick:eC(e=>e.toggleHelp),children:t(Q,{})})}),oq=c.div`
|
|
513
513
|
position: fixed;
|
|
514
514
|
z-index: ${({theme:e})=>e.zIndex.resumeContextLayout};
|
|
515
515
|
width: 100%;
|
|
@@ -523,28 +523,34 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
523
523
|
justify-content: center;
|
|
524
524
|
color: ${({theme:e})=>e.colors.whitePrimary};
|
|
525
525
|
cursor: pointer;
|
|
526
|
-
`,
|
|
526
|
+
`,oK=c.div`
|
|
527
527
|
display: flex;
|
|
528
528
|
width: 100%;
|
|
529
529
|
align-items: center;
|
|
530
530
|
justify-content: center;
|
|
531
|
-
`,
|
|
531
|
+
`,oQ=c.div`
|
|
532
532
|
font-family: var(--leva-fonts-mono);
|
|
533
533
|
font-size: 2rem;
|
|
534
|
-
`,
|
|
534
|
+
`,oZ=c(Z)`
|
|
535
535
|
width: 7rem;
|
|
536
536
|
height: 7rem;
|
|
537
|
-
`;var
|
|
537
|
+
`;var o0=()=>{let e=ek(),o=eC(({patch:e})=>e).audioContext,[n,i]=h("running"===o.state);return n?null:r(oq,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[t(oK,{children:t(oQ,{theme:e,children:"Click anywhere to resume audio context"})}),t(oK,{children:t(oZ,{})})]})},o1=()=>{let e=eC(({setConfig:e})=>e),{showMinimap:o}=eC(({config:e})=>e);return t(H,{onClick:()=>e({showMinimap:!o}),children:o?t(ee,{}):t(eo,{})})},o2=({id:e,sourceX:o,sourceY:i,targetX:l,targetY:a,sourcePosition:d,targetPosition:s,style:c={},data:p,markerStart:h,markerEnd:g,source:f,target:m,sourceHandleId:v,targetHandleId:y,selected:b})=>{let x=ek(),w=eC(({getNode:e})=>e),C=w(f),$=w(m),k=C?.selected||$?.selected;u(()=>{if(v&&y)return console.log(`connected ${f} to ${m}`),()=>{console.log(`disconnected ${f} from ${m}`)}},[f,v,m,y]);let[N]=O({targetX:l,targetY:a,targetPosition:s,sourceX:o,sourceY:i,sourcePosition:d});return r(n,{children:[t("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}),t("path",{style:{...c,strokeWidth:8,color:"transparent",opacity:0,cursor:"pointer"},d:N,markerEnd:g})]})};let o3=(e,o)=>console.log("drag stop",o),o9=(e,o)=>console.log("click",o),o8=[20,20],o5=({editorState:e,plugins:o=[],editorContextMenu:n=[],onChange:i=()=>{},...l})=>{let a=g(()=>({wire:o2}),[]),{nodes:d,edges:s,controlPanel:c,onNodesChange:p,onNodesDelete:m,onEdgesChange:v,onEdgesDelete:y,onConnect:b,setPlugins:x,setViewport:w,viewport:$}=eC(),k=eC(({config:e})=>e),N=eC(({nodeTypes:e})=>e);u(()=>{x(o)},[o]);let[P,F]=h(null);u(()=>{P&&i({nodes:d,edges:s,controlPanel:c,viewport:$})},[d,s,c,$]);let S=f(e=>{P||(F(e),console.log("flow loaded:",e))},[P]),{onContextMenu:T}=(()=>{let{show:e}=B({id:e5});return{onContextMenu:e}})(),{onContextMenu:D}=(()=>{let{show:e}=B({id:e4});return{onContextMenu:f((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:H}=(()=>{let{show:e}=B({id:ez});return{onContextMenu:f((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return u(()=>{$&&P?.setViewport($)},[$,P]),z({onEnd:w}),r(C,{nodes:d,edges:s,onNodesChange:p,onNodesDelete:m,onEdgesChange:v,onConnect:b,onNodeDragStop:o3,onEdgesDelete:y,onInit:S,onNodeClick:o9,onContextMenu:T,onNodeContextMenu:D,onEdgeContextMenu:H,nodeTypes:N,edgeTypes:a,snapGrid:o8,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[t(j,{variant:A.Dots,gap:12}),k.showMinimap?t(E,{}):null,r(M,{style:{right:"1rem",left:"initial",bottom:"40%",top:"initial"},showInteractive:!1,children:[t(o1,{}),t(oY,{})]}),t(o0,{}),t(oV,{}),t(oX,{}),t(e6,{editorContextMenu:n}),t(e7,{}),t(ej,{})]})},o6=e=>t(F,{children:t(o5,{...e})}),o4={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},o7=i(c.div`
|
|
538
538
|
display: flex;
|
|
539
539
|
flex-direction: column;
|
|
540
540
|
height: 100%;
|
|
541
541
|
width: 100%;
|
|
542
|
-
`),
|
|
542
|
+
`),te=i(c.div`
|
|
543
543
|
height: 100%;
|
|
544
544
|
width: 100%;
|
|
545
545
|
display: flex;
|
|
546
546
|
position: relative;
|
|
547
|
-
`),
|
|
547
|
+
`),to=i(c.div`
|
|
548
|
+
display: flex;
|
|
549
|
+
flex: 1;
|
|
550
|
+
align-items: center;
|
|
551
|
+
justify-content: center;
|
|
552
|
+
background: ${({theme:e})=>e.colors.elevation3};
|
|
553
|
+
`),tt=i(c.div`
|
|
548
554
|
background: ${({theme:e})=>e.colors.elevation2};
|
|
549
555
|
opacity: 0.7;
|
|
550
556
|
position: absolute;
|
|
@@ -559,12 +565,12 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
559
565
|
align-items: center;
|
|
560
566
|
justify-content: center;
|
|
561
567
|
font-size: 6rem;
|
|
562
|
-
`),
|
|
568
|
+
`),tr=e=>{let o=eC(e=>e.pullEditorChanges),i=eC(e=>e.currentFileIndex),[l,a]=h(!0);u(()=>{a(!0),setTimeout(()=>{a(!1)},1600)},[i]);let{file:d}=e;return d?"audio"===d.type?t(to,{children:t("audio",{src:d.file,controls:!0})}):r(n,{children:[t(o6,{...e,onChange:e=>{o()},editorState:d.file||o4}),t(tt,{show:l,children:"Loading..."})]}):null},tn=i(c.div`
|
|
563
569
|
height: 2rem;
|
|
564
570
|
display: flex;
|
|
565
571
|
align-items: center;
|
|
566
572
|
background: ${({theme:e})=>e.colors.elevation2};
|
|
567
|
-
`),
|
|
573
|
+
`),ti=i(c.div`
|
|
568
574
|
display: flex;
|
|
569
575
|
align-items: center;
|
|
570
576
|
cursor: pointer;
|
|
@@ -581,7 +587,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
581
587
|
background-color: ${({theme:e})=>e.colors.elevation1};
|
|
582
588
|
}
|
|
583
589
|
}
|
|
584
|
-
`),
|
|
590
|
+
`),tl=i(c.div`
|
|
585
591
|
display: flex;
|
|
586
592
|
align-items: center;
|
|
587
593
|
height: 100%;
|
|
@@ -592,10 +598,10 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
592
598
|
&:hover {
|
|
593
599
|
color: ${({theme:e})=>e.colors.whitePrimary};
|
|
594
600
|
}
|
|
595
|
-
`),
|
|
601
|
+
`),ta=i(c(v)`
|
|
596
602
|
height: 40%;
|
|
597
603
|
width: auto;
|
|
598
|
-
`),
|
|
604
|
+
`),td=i(c(y)`
|
|
599
605
|
height: 70%;
|
|
600
606
|
width: auto;
|
|
601
607
|
cursor: pointer;
|
|
@@ -603,7 +609,7 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
603
609
|
&:hover {
|
|
604
610
|
color: ${({theme:e})=>e.colors.whitePrimary};
|
|
605
611
|
}
|
|
606
|
-
`),
|
|
612
|
+
`),ts=()=>({file:o4,name:"Unnamed",type:"patch",id:p()});var tc=({...e})=>{let{projectState:o,theme:n}=e,i=eC(e=>e.currentFileIndex),s=eC(e=>e.project.files[e.currentFileIndex]),c=eC(e=>e.setCurrentFileIndex),p=eC(e=>e.project),h=eC(e=>e.setProject),g=eC(e=>e.getProject),f=eC(e=>e.updateFileName),m=eC(e=>e.addFile),v=eC(e=>e.deleteFile),y=eC(e=>e.syncEditorWithCurrentFile),b=eC(e=>e.setEditorState);return eC(e=>e.pullEditorChanges),u(()=>{h(o||{files:[ts()]});let e=o?.files[0];e?.file&&e?.type!=="audio"&&b(e.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 n?ey(n)?new Response(JSON.stringify(n.file??null)):eb(n)?fetch(n.file):new Response(null):new Response(`File not found: ${o.url}`,{status:404})},ec.push(["project://*",e]),()=>{}},[g]),u(()=>{y()},[i,y]),r(l,{theme:n||e$,children:[t(a,{styles:d`
|
|
607
613
|
:root {
|
|
608
614
|
--leva-colors-elevation1: #292d39;
|
|
609
615
|
--leva-colors-elevation2: #181c20;
|
|
@@ -660,5 +666,5 @@ let e,o;import{jsxs as t,jsx as r,Fragment as n}from"react/jsx-runtime";import{w
|
|
|
660
666
|
--leva-fontWeights-folder: normal;
|
|
661
667
|
--leva-fontWeights-button: normal;
|
|
662
668
|
}
|
|
663
|
-
`}),
|
|
669
|
+
`}),r(o7,{children:[r(tn,{children:[p.files.map((e,o)=>r(ti,{onClick:()=>{c(o)},active:o===i,children:[t(or,{onChange:e=>f(o,e),value:e.name||"Unnamed"}),t(td,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&v(o)}})]},o)),t(tl,{onClick:()=>{m(ts()),c(p.files.length)},children:t(ta,{})})]}),t(te,{children:t(tr,{file:s,...e})})]})]})};export{tc as Editor,o4 as EDITOR_DEFAULTS,o2 as Wire,oN as WNNode,o$ as TitleBar,ou as PortsPanel,of as OutputPorts,oC as OutputHandle,og as InputPorts,ox as InputHandle,om as Port,eF as Modal,or as EditableLabel,oe as useAudioNode,oo as useNode,ek as useTheme,eC as useStore,e$ as theme,eb as isAudio,ey as isPatch,ew as PortType};
|
|
664
670
|
//# sourceMappingURL=module.js.map
|