@web-noise/core 0.0.2 → 0.0.5
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 +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/main.js +84 -22
- package/dist/main.js.map +1 -1
- package/dist/module.js +139 -77
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +70 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -1
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: ${
|
|
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: ${
|
|
28
|
+
stroke: ${ew.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 ${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 #${
|
|
37
|
+
box-shadow: 0 0 0 0.5px #${ew.colors.accent2};
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/* .react-flow__minimap-mask {
|
|
41
|
-
fill: ${
|
|
41
|
+
fill: ${ew.colors.elevation1}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
.react-flow__minimap-node {
|
|
45
|
-
fill:${
|
|
45
|
+
fill:${ew.colors.accent2}
|
|
46
46
|
} */
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
`;var
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
81
|
+
`,ej=c(y)`
|
|
82
82
|
position: absolute;
|
|
83
83
|
top: 0.2rem;
|
|
84
84
|
right: 0.2rem;
|
|
85
85
|
cursor: pointer;
|
|
86
|
-
`;var
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
141
|
+
`),eO=i(c.div`
|
|
141
142
|
padding: 1rem;
|
|
142
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
`,
|
|
186
|
+
`,eU=c.div`
|
|
166
187
|
flex-grow: 1;
|
|
167
188
|
height: 100%;
|
|
168
189
|
overflow-y: scroll;
|
|
169
|
-
`;var
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
223
|
+
`,eq=c(K)`
|
|
203
224
|
width: 100%;
|
|
204
225
|
height: 8rem;
|
|
205
|
-
`,
|
|
226
|
+
`,eK=c.div`
|
|
206
227
|
font-size: 2rem;
|
|
207
|
-
`;var
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
261
|
+
`,e1=c(K)`
|
|
241
262
|
width: 100%;
|
|
242
263
|
height: 8rem;
|
|
243
|
-
`,
|
|
264
|
+
`,e2=c.div`
|
|
244
265
|
font-size: 2rem;
|
|
245
|
-
`;var
|
|
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
|
|
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
|
-
`,
|
|
325
|
+
`,oi=c(on)`
|
|
277
326
|
padding: 2rem 5rem;
|
|
278
|
-
`,
|
|
327
|
+
`,ol=c(on)`
|
|
279
328
|
padding: 1rem 2rem;
|
|
280
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`),
|
|
367
|
+
`),oh=c.div`
|
|
311
368
|
grid-area: inputs;
|
|
312
369
|
text-align: left;
|
|
313
|
-
`,
|
|
370
|
+
`,ou=c.div`
|
|
314
371
|
grid-area: outputs;
|
|
315
372
|
text-align: right;
|
|
316
|
-
`,
|
|
373
|
+
`,og=c.div`
|
|
317
374
|
position: relative;
|
|
318
375
|
padding: 5px 10px;
|
|
319
|
-
`,
|
|
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
|
-
|
|
383
|
+
`),oy=({...e})=>r(ov,{...e,type:"target",position:T.Left}),ob=i(c(of)`
|
|
322
384
|
right: -3px;
|
|
323
|
-
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
417
|
+
`,oA=c.div`
|
|
356
418
|
height: 100%;
|
|
357
419
|
display: grid;
|
|
358
420
|
grid-template-rows: auto 1fr;
|
|
359
|
-
`,
|
|
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
|
-
`,
|
|
441
|
+
`,oS=c(oP)`
|
|
380
442
|
height: 80%;
|
|
381
|
-
`,
|
|
443
|
+
`,oF=c(oz)`
|
|
382
444
|
font-size: 1rem;
|
|
383
445
|
display: flex;
|
|
384
446
|
align-items: center;
|
|
385
|
-
`,
|
|
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
|
-
`,
|
|
451
|
+
`,oD=c(ok)`
|
|
390
452
|
text-align: center;
|
|
391
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
464
|
+
`,o_=c.div`
|
|
403
465
|
padding: 1rem 0;
|
|
404
466
|
font-family: var(--leva-fonts-mono);
|
|
405
467
|
font-size: 0.8rem;
|
|
406
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
|
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 ### 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 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
|
-
`),
|
|
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
|
|
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
|
-
`,
|
|
526
|
+
`,oY=c.div`
|
|
465
527
|
display: flex;
|
|
466
528
|
width: 100%;
|
|
467
529
|
align-items: center;
|
|
468
530
|
justify-content: center;
|
|
469
|
-
`,
|
|
531
|
+
`,oq=c.div`
|
|
470
532
|
font-family: var(--leva-fonts-mono);
|
|
471
533
|
font-size: 2rem;
|
|
472
|
-
`,
|
|
534
|
+
`,oK=c(Z)`
|
|
473
535
|
width: 7rem;
|
|
474
536
|
height: 7rem;
|
|
475
|
-
`;var
|
|
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
|
-
`),
|
|
542
|
+
`),o7=i(c.div`
|
|
481
543
|
height: 100%;
|
|
482
544
|
width: 100%;
|
|
483
545
|
display: flex;
|
|
484
546
|
position: relative;
|
|
485
|
-
`),
|
|
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
|
-
`),
|
|
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
|
-
`),
|
|
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
|
-
`),
|
|
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
|
-
`),
|
|
595
|
+
`),tr=i(c(v)`
|
|
534
596
|
height: 40%;
|
|
535
597
|
width: auto;
|
|
536
|
-
`),
|
|
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
|
-
`),
|
|
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(
|
|
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
|