@web-noise/core 0.0.18 → 0.0.19
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/cjs/components.js +7 -4
- package/dist/cjs/components.js.map +1 -1
- package/dist/esm/components.js +10 -7
- package/dist/esm/components.js.map +1 -1
- package/dist/main.js +7 -4
- package/dist/main.js.map +1 -1
- package/dist/module.js +21 -18
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{withTheme as i,ThemeProvider as l,Global as a,css as s,useTheme as d}from"@emotion/react";import c from"@emotion/styled";import{nanoid as p}from"nanoid";import{useState as h,useEffect as g,useMemo as m,useCallback as u,useRef as f}from"react";import{FaPlus as v}from"react-icons/fa6";import{MdClose as b,MdDragHandle as y,MdSettings as x,MdInfoOutline as w}from"react-icons/md";import{registerFetcher as C}from"@web-noise/fetch";import{getConnectedEdges as k,addEdge as $,applyNodeChanges as P,applyEdgeChanges as N,Controls as z,ReactFlow as F,Background as E,BackgroundVariant as j,MiniMap as D,ReactFlowProvider as T,useReactFlow as M,Position as S,Handle as A,ControlButton as _,getBezierPath as I}from"@xyflow/react";import{create as R}from"zustand";import{setAudioNodeTypes as H,createPatch as L}from"@web-noise/patch";import{reverse as W,patch as O,create as B}from"jsondiffpatch";import{injectGlobal as U}from"@emotion/css";import"@xyflow/react/dist/style.css";import{useContextMenu as G,Item as V,Menu as X,Separator as Y}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import J from"hotkeys-js";import{createPortal as Z}from"react-dom";import{FileDrop as q}from"react-file-drop";import{FaFileUpload as K,FaQuestion as Q,FaVolumeOff as ee,FaMap as eo,FaRegMap as et}from"react-icons/fa";import{Resizable as en}from"re-resizable";import er from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as ei,AiFillUnlock as el}from"react-icons/ai";import{RxDashboard as ea}from"react-icons/rx";import es from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ed}from"marked";let ec="web-noise-drag-handle",ep=`.${ec}`,eh=10;(ev=eb||(eb={})).Gate="gate",ev.Number="number",ev.Audio="audio",ev.Any="any";let eg=e=>JSON.parse(JSON.stringify(e)),em=(e,o)=>{let t=new Set(e.map(e=>e.id)),n=new Set(o.map(e=>e.id));return{added:o.filter(e=>!t.has(e.id)),removed:e.filter(e=>!n.has(e.id))}},eu=e=>!("type"in e)||"patch"===e.type,ef=e=>"audio"===e.type;var ev,eb,ey=R((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:P(o,e).map(e=>({dragHandle:ep,...e,data:{label:"unknown",...e.data}}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:N(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:n}=o(),{maxHistoryLength:r,skipCollect:i}=n;i?e({history:{...n,skipCollect:!1}}):e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:n}=e,i=o.slice(Math.max(n-r+1,0),n);return{history:{...e,buffer:[...i,t],pointer:Math.min(n+1,r)}}})},back:()=>{let{nodes:t,edges:n,controlPanel:r,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a-1];if(!s)return;let d=W(s);d&&e({...O(eg({nodes:t,edges:n,controlPanel:r}),d),history:{...i,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:n,controlPanel:r,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a];s&&e({...O(eg({nodes:t,edges:n,controlPanel:r}),s),history:{...i,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:L(),nodesState:{}}))(...e),...((e,o)=>({project:{files:[]},setProject(o){e({project:o,currentFileIndex:0})},getProject:()=>o().project,pullEditorChanges(){let{getEditorState:e,currentFileIndex:t,updateFileContent:n,project:r}=o(),i=r.files[t];ef(i)||n(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:n}=o(),r=n.files[e];r?"audio"===r.type?console.log("audio file. skipping"):t(r.file):console.warn("No current file to sync with editor")},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:n}=o();t!==n&&e({currentFileIndex:t})},updateFileContent(t,n){let{project:r}=o();e({project:{...r,files:r.files.map((e,o)=>o===t?{...e,...n}:e)}})},updateFileName(t,n){let{project:r}=o();e({project:{...r,files:r.files.map((e,o)=>o===t?{...e,name:n}:e)}})},addFile(t){let{project:n}=o(),r=[...n.files,t];e({project:{...n,files:r}})},deleteFile:t=>{let{project:n,currentFileIndex:r}=o();e({project:{...n,files:n.files.filter((e,o)=>t!==o)}}),t<=r&&e({currentFileIndex:Math.max(0,r-1)})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:n,createNodes:r,createEdges:i,setNodesAndEdges:l,nodes:a,edges:s}=t();l({nodes:[],edges:[]}),await r(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:n}=t(),{type:r,id:i,data:l}=e;if(void 0===r)throw Error(`node type is not defined for node: ${i}`);o({...e,data:{...l,config:{...n[r]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:n,nodes:r,onNodesDelete:i,removeEdges:l,removeNodesFromControlPanel:a}=t(),s=e.map(({id:e})=>e),d=[...e,...r.filter(({parentId:e})=>e&&s.includes(e))];a(d),l(k(d,n)),i(d);let c=d.map(({id:e})=>e);o({nodes:r.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:n,onEdgesDelete:r}=t(),i=e.map(({id:e})=>e);r(e),o({edges:n.filter(({id:e})=>!i.includes(e))})},createEdges:e=>{let{patch:o,edges:n,setEdges:r}=t();r(e)},onConnect:async e=>{let{edges:o,createEdges:n}=t();n($(e,o))},onEdgesDelete:e=>{let{patch:o}=t()},onNodesDelete:async e=>{let{removeNodesFromControlPanel:o,patch:n}=t();o(e)},plugins:[],setPlugins:async e=>{let{setNodeTypes:n}=t();o({plugins:e});let r=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),i=Object.keys(r).reduce((e,o)=>({...e,[o]:r[o].node}),{});H(Object.keys(r).reduce((e,o)=>({...e,[o]:r[o].audioNode}),{})),n(i),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...r}}))},nodesConfiguration:{},config:{showMinimap:!1},setConfig:e=>{o(({config:o})=>({config:{...o,...e}}))},getEditorState:()=>{let{getNodesAndEdges:e,controlPanel:o,viewport:n}=t();return{...e(),controlPanel:o,viewport:n}},setEditorState:async({nodes:e,edges:n,controlPanel:r,viewport:i})=>{let{setGraph:l}=t();await l({nodes:e,edges:n}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:r,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:n}=t(),r=e.filter(({selected:e})=>e),i=o.filter(({selected:e})=>e);r.length&&n({nodes:r,edges:i})},pasteBuffer:(e=0,n=0)=>{let{copyBuffer:r,createNodes:i,setEdges:l,nodes:a,edges:s}=t(),{nodes:d,edges:c}=r;if(!d.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let p=d.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),h=p.position.x-e,g=p.position.y-n,{nodes:m,mapping:u}=d.reduce((e,o)=>{let t,n=(t=+new Date+Math.floor(1e3*Math.random()),o?.type?`${o.type}-${t}`:t.toString());return{nodes:[...e.nodes,{...o,id:n,position:{x:o.position.x-h,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:n}}},{nodes:[],mapping:{}});i(m);let f=c.map(e=>{let o=u[e.source]||e.source,t=u[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...s.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:n}=e;if(!n)return null;let r=o[n]?.controlPanelNode;return r||(console.error(`could not find node for type ${n}`),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:n}=t(),r=e.type?n[e.type]?.defaultConfig:{},{height:i}=r?.size||{},l={id:e.id,...i?{height:i/eh}:{}};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,n)=>{let r,i,l,a=(i=B({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)}),l=t(),(e,o)=>{e.currentFileIndex!==o.currentFileIndex&&t().history.clear(),clearTimeout(r),l||(l=o),r=setTimeout(()=>{let o=i.diff(l,e);l=null,o&&t().history.push(o)},500)});return n.subscribe(a),e((...e)=>o(...e),t,n)},(e,t,n)=>{n.subscribe(async(e,o)=>{});let r={...t(),nodes:[],edges:[]},i=Promise.resolve();return o((...o)=>{i=i.then(async()=>{let n=t(),[i]=o,l={...r,..."function"==typeof i?i({...r}):i},a=em(r.nodes,l.nodes),s=em(r.edges,l.edges);r=l;let d=a.added,c=s.added,p=s.removed,h=a.removed,{patch:g}=n;d.length&&await g.registerAudioNodes(d),c.length&&g.registerAudioConnections(c),p.length&&g.unregisterAudioConnections(p),h.length&&g.unregisterAudioNodes(h),e(...o)}).catch(e=>{console.error("audioPatch middleware error:",e)})},t,n)})),ex={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}};U`
|
|
1
|
+
let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{withTheme as i,ThemeProvider as l,Global as a,css as s,useTheme as d}from"@emotion/react";import c from"@emotion/styled";import{nanoid as p}from"nanoid";import{useState as h,useEffect as g,useMemo as m,useCallback as u,useRef as f}from"react";import{FaPlus as v}from"react-icons/fa6";import{MdClose as b,MdDragHandle as y,MdSettings as x,MdInfoOutline as w}from"react-icons/md";import{registerFetcher as C}from"@web-noise/fetch";import{getConnectedEdges as k,addEdge as $,applyNodeChanges as P,applyEdgeChanges as N,Controls as z,ReactFlow as j,Background as F,BackgroundVariant as E,MiniMap as D,ReactFlowProvider as T,useReactFlow as M,Position as S,Handle as A,ControlButton as _,getBezierPath as I}from"@xyflow/react";import{create as R}from"zustand";import{setAudioNodeTypes as H,createPatch as L}from"@web-noise/patch";import{reverse as W,patch as O,create as B}from"jsondiffpatch";import{injectGlobal as U}from"@emotion/css";import"@xyflow/react/dist/style.css";import{useContextMenu as G,Item as V,Menu as Y,Separator as X}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import J from"hotkeys-js";import{createPortal as Z}from"react-dom";import{FileDrop as q}from"react-file-drop";import{FaFileUpload as K,FaQuestion as Q,FaVolumeOff as ee,FaMap as eo,FaRegMap as et}from"react-icons/fa";import{Resizable as en}from"re-resizable";import er from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as ei,AiFillUnlock as el}from"react-icons/ai";import{RxDashboard as ea}from"react-icons/rx";import es from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ed}from"marked";let ec="web-noise-drag-handle",ep=`.${ec}`,eh=10;(ev=eb||(eb={})).Gate="gate",ev.Number="number",ev.Audio="audio",ev.Any="any";let eg=e=>JSON.parse(JSON.stringify(e)),em=(e,o)=>{let t=new Set(e.map(e=>e.id)),n=new Set(o.map(e=>e.id));return{added:o.filter(e=>!t.has(e.id)),removed:e.filter(e=>!n.has(e.id))}},eu=e=>!("type"in e)||"patch"===e.type,ef=e=>"audio"===e.type;var ev,eb,ey=R((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:P(o,e).map(e=>({dragHandle:ep,...e,data:{label:"unknown",...e.data}}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:N(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:n}=o(),{maxHistoryLength:r,skipCollect:i}=n;i?e({history:{...n,skipCollect:!1}}):e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:n}=e,i=o.slice(Math.max(n-r+1,0),n);return{history:{...e,buffer:[...i,t],pointer:Math.min(n+1,r)}}})},back:()=>{let{nodes:t,edges:n,controlPanel:r,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a-1];if(!s)return;let d=W(s);d&&e({...O(eg({nodes:t,edges:n,controlPanel:r}),d),history:{...i,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:n,controlPanel:r,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a];s&&e({...O(eg({nodes:t,edges:n,controlPanel:r}),s),history:{...i,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:L(),nodesState:{}}))(...e),...((e,o)=>({project:{files:[],currentFileIndex:0},setProject(o){e({project:o})},getProject:()=>o().project,pullEditorChanges(){let{getEditorState:e,updateFileContent:t,project:n}=o(),r=n.currentFileIndex||0,i=n.files[r];ef(i)||t(r,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{setEditorState:e,project:t}=o(),n=t.currentFileIndex||0,r=t.files[n];r?"audio"===r.type?console.log("audio file. skipping"):e(r.file):console.warn("No current file to sync with editor")},setCurrentFileIndex(t){let{project:n,getProject:r}=o();t!==(n.currentFileIndex??0)&&e({project:{...n,currentFileIndex:t}})},updateFileContent(t,n){let{project:r}=o();e({project:{...r,files:r.files.map((e,o)=>o===t?{...e,...n}:e)}})},updateFileName(t,n){let{project:r}=o();e({project:{...r,files:r.files.map((e,o)=>o===t?{...e,name:n}:e)}})},addFile(e){let{project:t,setProject:n}=o(),r=[...t.files,e];n({...t,files:r,currentFileIndex:r.length-1})},deleteFile:t=>{let{project:n}=o(),r=n.currentFileIndex??0,i=r===n.files.length-1?Math.max(0,r-1):r,l=n.files.filter((e,o)=>t!==o);e({project:{...n,files:l,currentFileIndex:i}})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:n,createNodes:r,createEdges:i,setNodesAndEdges:l,nodes:a,edges:s}=t();l({nodes:[],edges:[]}),await r(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:n}=t(),{type:r,id:i,data:l}=e;if(void 0===r)throw Error(`node type is not defined for node: ${i}`);o({...e,data:{...l,config:{...n[r]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:n,nodes:r,onNodesDelete:i,removeEdges:l,removeNodesFromControlPanel:a}=t(),s=e.map(({id:e})=>e),d=[...e,...r.filter(({parentId:e})=>e&&s.includes(e))];a(d),l(k(d,n)),i(d);let c=d.map(({id:e})=>e);o({nodes:r.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:n,onEdgesDelete:r}=t(),i=e.map(({id:e})=>e);r(e),o({edges:n.filter(({id:e})=>!i.includes(e))})},createEdges:e=>{let{patch:o,edges:n,setEdges:r}=t();r(e)},onConnect:async e=>{let{edges:o,createEdges:n}=t();n($(e,o))},onEdgesDelete:e=>{let{patch:o}=t()},onNodesDelete:async e=>{let{removeNodesFromControlPanel:o,patch:n}=t();o(e)},plugins:[],setPlugins:async e=>{let{setNodeTypes:n}=t();o({plugins:e});let r=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),i=Object.keys(r).reduce((e,o)=>({...e,[o]:r[o].node}),{});H(Object.keys(r).reduce((e,o)=>({...e,[o]:r[o].audioNode}),{})),n(i),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...r}}))},nodesConfiguration:{},config:{showMinimap:!1},setConfig:e=>{o(({config:o})=>({config:{...o,...e}}))},getEditorState:()=>{let{getNodesAndEdges:e,controlPanel:o,viewport:n}=t();return{...e(),controlPanel:o,viewport:n}},setEditorState:async({nodes:e,edges:n,controlPanel:r,viewport:i})=>{let{setGraph:l}=t();await l({nodes:e,edges:n}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:r,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:n}=t(),r=e.filter(({selected:e})=>e),i=o.filter(({selected:e})=>e);r.length&&n({nodes:r,edges:i})},pasteBuffer:(e=0,n=0)=>{let{copyBuffer:r,createNodes:i,setEdges:l,nodes:a,edges:s}=t(),{nodes:d,edges:c}=r;if(!d.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let p=d.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),h=p.position.x-e,g=p.position.y-n,{nodes:m,mapping:u}=d.reduce((e,o)=>{let t,n=(t=+new Date+Math.floor(1e3*Math.random()),o?.type?`${o.type}-${t}`:t.toString());return{nodes:[...e.nodes,{...o,id:n,position:{x:o.position.x-h,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:n}}},{nodes:[],mapping:{}});i(m);let f=c.map(e=>{let o=u[e.source]||e.source,t=u[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...s.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:n}=e;if(!n)return null;let r=o[n]?.controlPanelNode;return r||(console.error(`could not find node for type ${n}`),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:n}=t(),r=e.type?n[e.type]?.defaultConfig:{},{height:i}=r?.size||{},l={id:e.id,...i?{height:i/eh}:{}};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,n)=>{let r,i,l,a=(i=B({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)}),l=t(),(e,o)=>{e.project.currentFileIndex!==o.project.currentFileIndex&&t().history.clear(),clearTimeout(r),l||(l=o),r=setTimeout(()=>{let o=i.diff(l,e);l=null,o&&t().history.push(o)},500)});return n.subscribe(a),e((...e)=>o(...e),t,n)},(e,t,n)=>{n.subscribe(async(e,o)=>{});let r={...t(),nodes:[],edges:[]},i=Promise.resolve();return o((...o)=>{i=i.then(async()=>{let n=t(),[i]=o,l={...r,..."function"==typeof i?i({...r}):i},a=em(r.nodes,l.nodes),s=em(r.edges,l.edges);r=l;let d=a.added,c=s.added,p=s.removed,h=a.removed,{patch:g}=n;d.length&&await g.registerAudioNodes(d),c.length&&g.registerAudioConnections(c),p.length&&g.unregisterAudioConnections(p),h.length&&g.unregisterAudioNodes(h),e(...o)}).catch(e=>{console.error("audioPatch middleware error:",e)})},t,n)})),ex={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}};U`
|
|
2
2
|
.react-flow {
|
|
3
3
|
.react-flow__pane {
|
|
4
4
|
/* background: rgb(106 106 106); */
|
|
@@ -51,7 +51,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
51
51
|
.react-contexify__item__content {
|
|
52
52
|
color: ${({theme:e})=>e.colors.error};
|
|
53
53
|
}
|
|
54
|
-
`),e$=c(
|
|
54
|
+
`),e$=c(Y)`
|
|
55
55
|
background: ${({colors:e})=>e.elevation2};
|
|
56
56
|
padding: 0;
|
|
57
57
|
border-radius: 0;
|
|
@@ -75,7 +75,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
75
75
|
display: flex;
|
|
76
76
|
align-items: center;
|
|
77
77
|
justify-content: center;
|
|
78
|
-
`,
|
|
78
|
+
`,ej=c.div`
|
|
79
79
|
background: ${({theme:e})=>e.colors.elevation2};
|
|
80
80
|
box-shadow: 1px 1px 1px 1px ${({theme:e})=>e.colors.elevation1};
|
|
81
81
|
color: white;
|
|
@@ -83,12 +83,12 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
83
83
|
height: 80%;
|
|
84
84
|
overflow-y: scroll;
|
|
85
85
|
position: relative;
|
|
86
|
-
`,
|
|
86
|
+
`,eF=c(b)`
|
|
87
87
|
position: absolute;
|
|
88
88
|
top: 0.2rem;
|
|
89
89
|
right: 0.2rem;
|
|
90
90
|
cursor: pointer;
|
|
91
|
-
`;var
|
|
91
|
+
`;var eE=({children:e,onClose:o,...r})=>{let i=ew();return g(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),Z(t(ez,{theme:i,onClick:o,children:n(ej,{...r,onClick:e=>{e.stopPropagation()},theme:i,children:[e,t(eF,{theme:i,onClick:o})]})}),document.body)};let eD=i(c.div`
|
|
92
92
|
width: 100%;
|
|
93
93
|
`),eT=i(c.div`
|
|
94
94
|
padding: 1rem;
|
|
@@ -207,7 +207,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
207
207
|
content: "×";
|
|
208
208
|
margin-left: 0.4rem;
|
|
209
209
|
}
|
|
210
|
-
`);var
|
|
210
|
+
`);var eY=({onChange:e,value:o})=>{let r=ew(),i=ey(({plugins:e})=>e),l=f(null);return g(()=>{l.current&&l.current.focus()},[l]),n(eU,{theme:r,children:[t(eO,{children:t(eB,{ref:l,theme:r,value:o.search||"",placeholder:"search...",onChange:t=>e({...o,search:t.target.value})})}),t(e_,{children:o.tags?.map((n,r)=>t(eV,{isActive:!0,onClick:()=>{let t=o.tags?.filter(e=>e!==n)||[];e({...o,tags:t})},children:n},r))}),i.map(({name:i,components:l},a)=>i?n(eG,{theme:r,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 eX=c.div`
|
|
211
211
|
height: 100%;
|
|
212
212
|
width: 100%;
|
|
213
213
|
display: flex;
|
|
@@ -216,7 +216,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
216
216
|
flex-grow: 1;
|
|
217
217
|
height: 100%;
|
|
218
218
|
overflow-y: scroll;
|
|
219
|
-
`;var eZ=({isOpen:e,closeMenu:o,mousePosition:r})=>{let i=ew(),{screenToFlowPosition:l}=M(),{createNode:a}=ey(({createNode:e})=>({createNode:e})),[s,d]=h({}),c=u(({type:e})=>{let{x:t,y:n}=l(r);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:n},targetPosition:S.Left,sourcePosition:S.Right}),o()},[r,l,a,o,r]);return e?t(
|
|
219
|
+
`;var eZ=({isOpen:e,closeMenu:o,mousePosition:r})=>{let i=ew(),{screenToFlowPosition:l}=M(),{createNode:a}=ey(({createNode:e})=>({createNode:e})),[s,d]=h({}),c=u(({type:e})=>{let{x:t,y:n}=l(r);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:n},targetPosition:S.Left,sourcePosition:S.Right}),o()},[r,l,a,o,r]);return e?t(eE,{onClose:()=>{o(),d({})},children:n(eX,{theme:i,children:[t(eY,{onChange:d,value:s}),t(eJ,{theme:i,children:t(eW,{filters:s,onTagClick:e=>{d(o=>({...o,tags:o.tags?.includes(e)?o.tags.filter(o=>o!==e):[...o.tags||[],e]}))},onComponentClick:e=>{c(e),d({})}})})]})}):null};let eq=e=>new Promise((o,t)=>{let n=new FileReader;n.readAsDataURL(e),n.onload=()=>o(n.result?.toString()||""),n.onerror=e=>t(e)}),eK=c.div`
|
|
220
220
|
display: flex;
|
|
221
221
|
align-items: center;
|
|
222
222
|
justify-content: center;
|
|
@@ -254,7 +254,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
254
254
|
height: 8rem;
|
|
255
255
|
`,e1=c.div`
|
|
256
256
|
font-size: 2rem;
|
|
257
|
-
`;var e2=({isOpen:e,closeMenu:o})=>{let r=ew();ey(({setGraph:e})=>e),ey(e=>e.setEditorState);let i=ey(e=>e.addFile),l=f(null),a=u(async e=>{let[t]=e||[],n=await eq(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:n}),o()},[i,o]);return e?t(
|
|
257
|
+
`;var e2=({isOpen:e,closeMenu:o})=>{let r=ew();ey(({setGraph:e})=>e),ey(e=>e.setEditorState);let i=ey(e=>e.addFile),l=f(null),a=u(async e=>{let[t]=e||[],n=await eq(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:n}),o()},[i,o]);return e?t(eE,{onClose:o,children:n(eK,{theme:r,children:[t("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".wav,.mp3,.ogg"}),t(q,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:n(eQ,{theme:r,children:[t(e0,{}),t(e1,{children:"click or drop file here"})]})})]})}):null};let e3="editor-menu";var e6=({editorContextMenu:e=[]})=>{let o=ew(),[i,l]=h({x:0,y:0}),[a,s]=h(!1),[d,c]=h(!1),p=u((e,o)=>{l({x:e,y:o}),s(!0)},[s]),f=ey(e=>e.pasteBuffer),{screenToFlowPosition:v}=M(),b=u(e=>{let{x:o,y:t}=v(e);f(o,t)},[s,v]),y=ey(({clearGraph:e})=>e),x=u(()=>{window.confirm("This action will delete all nodes in this patch. Continue?")&&y()},[y]),w=ey(e=>e.toggleHelp),C=ey(e=>e.history.back),k=ey(e=>e.history.forward),$=ey(e=>e.history.pointer),P=ey(e=>e.history.buffer),N=ey(e=>e.copySelectedItems),z=ey(e=>e.nodes),j=m(()=>z.filter(({selected:e})=>e),[z]),F=ey(e=>e.copyBuffer);return M(),g(()=>(J("command+shift+a",()=>(p(200,50),!1)),J("shift+/",()=>(w(),!1)),J("command+z",()=>(C(),!1)),J("command+shift+z",()=>(k(),!1)),J("command+c",()=>(N(),!1)),J("command+v",()=>(b({x:200,y:50}),!1)),()=>{J.unbind()}),[p,b]),n(r,{children:[t(eZ,{isOpen:a,closeMenu:()=>s(!1),mousePosition:i}),t(e2,{isOpen:d,closeMenu:()=>c(!1)}),n(e$,{id:e3,animation:!1,colors:o.colors,children:[t(eC,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>p(e,o),children:"Add Node (⌘+⇧+A)"}),t(X,{}),t(ek,{onClick:x,children:"Delete All"}),t(X,{}),t(eC,{onClick:()=>c(!0),children:"Upload Audio File"}),t(X,{}),t(eC,{disabled:0===$,onClick:C,children:"Undo (⌘+z)"}),t(eC,{disabled:$===P.length,onClick:k,children:"Redo (⌘+⇧+Z)"}),t(X,{}),t(eC,{disabled:!j.length,onClick:N,children:"Copy Selected (⌘+c)"}),t(eC,{disabled:!F.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>b({x:e,y:o}),children:"Paste (⌘+v)"}),t(X,{}),e.map((e,o)=>null===e?t(X,{},o):t(eC,{children:e},o)),t(X,{}),t(eC,{onClick:w,children:"Help (⇧+?)"})]})]})};let e4="editor-node-menu";var e9=e=>{let o=ew(),i=ey(e=>e.removeNodes),l=ey(e=>e.addNodeToControlPanel),a=ey(e=>e.removeNodeFromControlPanel),s=ey(e=>e.copy),d=ey(e=>e.nodesConfiguration),c=ey(e=>e.controlPanel.nodes),p=u(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),h=u(({props:e})=>{if(!e?.node.type)return!1;let o=d[e.node.type];return!!o?.controlPanelNode},[d]);return t(r,{children:n(e$,{id:e4,animation:!1,colors:o.colors,children:[t(eC,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),t(eC,{hidden:(...e)=>!h(...e)||p(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),t(eC,{hidden:(...e)=>!h(...e)||!p(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),t(eC,{onClick:e=>s({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},e8=e=>ey(({patch:e})=>e).audioNodes.get(e),e7=e=>{let o=ey(({updateNodeData:e})=>e);return{updateNodeValues:u(t=>o(e,{values:t}),[e,o]),updateNodeConfig:u(t=>o(e,{config:t}),[e,o]),updateNodeLabel:u(t=>o(e,{label:t}),[e,o])}};let e5=c.input`
|
|
258
258
|
width: 100%;
|
|
259
259
|
background: none;
|
|
260
260
|
border: none;
|
|
@@ -362,7 +362,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
362
362
|
margin-inline-end: 0px;
|
|
363
363
|
unicode-bidi: isolate;
|
|
364
364
|
}
|
|
365
|
-
`);var ot=({isOpen:e,onClose:o,type:n,node:r})=>{let{info:i,portsDescription:l}=ey(e=>e.nodesConfiguration[n]),a=m(()=>{let e=[],o=r.inputs;if(o)for(let t in e.push("## Inputs"),o){let n=o[t];e.push(`### *${t}*`);let r=l?.inputs?.[t];r&&e.push(r),Array.isArray(n.type)?e.push(`**Types**: \`${n.type.join(", ")}\``):e.push(`**Type**: \`${n.type||"unknown"}\``),n.range&&e.push(`**Range**: \`[${n.range[0]}, ${n.range[1]}]\``),void 0!==n.defaultValue&&e.push(`**Default**: \`${n.defaultValue}\``)}let t=r.outputs;if(t)for(let o in e.push("## Outputs"),t){let n=t[o];e.push(`### *${o}*`);let r=l?.outputs?.[o];r&&e.push(r),Array.isArray(n.type)?e.push(`**Types**: \`${n.type.join(", ")}\``):e.push(`**Type**: \`${n.type||"unknown"}\``),n.range&&e.push(`**Range**: \`[${n.range[0]}, ${n.range[1]}]\``),void 0!==n.defaultValue&&e.push(`**Default**: \`${n.defaultValue}\``)}return e.join("\n\n")},[r,l]);return e?t(
|
|
365
|
+
`);var ot=({isOpen:e,onClose:o,type:n,node:r})=>{let{info:i,portsDescription:l}=ey(e=>e.nodesConfiguration[n]),a=m(()=>{let e=[],o=r.inputs;if(o)for(let t in e.push("## Inputs"),o){let n=o[t];e.push(`### *${t}*`);let r=l?.inputs?.[t];r&&e.push(r),Array.isArray(n.type)?e.push(`**Types**: \`${n.type.join(", ")}\``):e.push(`**Type**: \`${n.type||"unknown"}\``),n.range&&e.push(`**Range**: \`[${n.range[0]}, ${n.range[1]}]\``),void 0!==n.defaultValue&&e.push(`**Default**: \`${n.defaultValue}\``)}let t=r.outputs;if(t)for(let o in e.push("## Outputs"),t){let n=t[o];e.push(`### *${o}*`);let r=l?.outputs?.[o];r&&e.push(r),Array.isArray(n.type)?e.push(`**Types**: \`${n.type.join(", ")}\``):e.push(`**Type**: \`${n.type||"unknown"}\``),n.range&&e.push(`**Range**: \`[${n.range[0]}, ${n.range[1]}]\``),void 0!==n.defaultValue&&e.push(`**Default**: \`${n.defaultValue}\``)}return e.join("\n\n")},[r,l]);return e?t(eE,{onClose:o,children:t(oo,{dangerouslySetInnerHTML:{__html:ed((i||"")+"\n\n"+a||"")}})}):null};let on=c.div`
|
|
366
366
|
background-color: var(--leva-colors-elevation1);
|
|
367
367
|
`,or=c(on)`
|
|
368
368
|
padding: 2rem 5rem;
|
|
@@ -460,7 +460,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
460
460
|
height: 100%;
|
|
461
461
|
display: grid;
|
|
462
462
|
grid-template-rows: auto 1fr;
|
|
463
|
-
`,
|
|
463
|
+
`,oj=e=>{let{node:o}=e,n=ey(e=>e.getControlPanelNode),r=m(()=>n(o),[o]);return r?t(r,{...e}):null};var oF=e=>{let{node:o,showControls:r,onDelete:i}=e,l=ew(),{id:a}=o,{node:s}=e8(a)||{},{updateNodeValues:d}=e7(a);return n(oz,{theme:l,children:[n(o$,{theme:l,children:[t(ok,{children:o.data.label}),r&&n(oP,{children:[t(oN,{theme:l,children:t(y,{className:"grid-item-handle"})}),t(oN,{theme:l,children:t(b,{onClick:()=>i(o)})})]})]}),t(oj,{node:o,audioNode:s,updateNodeValues:d})]})};let oE=c.div`
|
|
464
464
|
position: fixed;
|
|
465
465
|
z-index: 5;
|
|
466
466
|
box-shadow: 0px 1px 2px ${({theme:e})=>e.colors.elevation2};
|
|
@@ -531,7 +531,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
531
531
|
border-color: ${({theme:e})=>e.colors.whitePrimary};
|
|
532
532
|
border-width: 1px;
|
|
533
533
|
}
|
|
534
|
-
`;var oW=()=>{let e=ew(),o=f(null),i=ey(e=>e.nodes),{show:l,nodes:a,size:s}=ey(e=>e.controlPanel),{width:d=200,height:c}=s,p=m(()=>{let e=a.map(({id:e})=>e);return i.filter(({id:o})=>e.includes(o))},[i,a]),g=ey(e=>e.showControlPanel),u=ey(e=>e.hideControlPanel),v=ey(e=>e.setControlPanelNodes),y=ey(e=>e.setControlPanelSize),x=ey(e=>e.removeNodeFromControlPanel),[w,C]=h(!0),k=m(()=>{let e=a.reduce((e,{height:o=eh,x:t,y:n=0})=>{let r=n+o;return r>e?r:e},0);return a.map(({id:o,width:t,height:n,x:r,y:i})=>({i:o,w:t||4,h:n||6,x:r??0,y:i??e}))},[a]);return p.length?n(r,{children:[t(
|
|
534
|
+
`;var oW=()=>{let e=ew(),o=f(null),i=ey(e=>e.nodes),{show:l,nodes:a,size:s}=ey(e=>e.controlPanel),{width:d=200,height:c}=s,p=m(()=>{let e=a.map(({id:e})=>e);return i.filter(({id:o})=>e.includes(o))},[i,a]),g=ey(e=>e.showControlPanel),u=ey(e=>e.hideControlPanel),v=ey(e=>e.setControlPanelNodes),y=ey(e=>e.setControlPanelSize),x=ey(e=>e.removeNodeFromControlPanel),[w,C]=h(!0),k=m(()=>{let e=a.reduce((e,{height:o=eh,x:t,y:n=0})=>{let r=n+o;return r>e?r:e},0);return a.map(({id:o,width:t,height:n,x:r,y:i})=>({i:o,w:t||4,h:n||6,x:r??0,y:i??e}))},[a]);return p.length?n(r,{children:[t(oE,{theme:e,ref:o,onClick:g,children:t(ea,{})}),n(es,{open:l,onClose:u,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[n(oM,{theme:e,children:[t(oS,{children:"Control Panel"}),t(oD,{children:t(oT,{onClick:u,theme:e,children:t(b,{})})})]}),n(oA,{children:[t(oI,{children:w?n(oR,{theme:e,onClick:()=>C(!1),children:[t(ei,{}),"Unlock grid"]}):n(oR,{theme:e,onClick:()=>C(!0),children:[t(el,{}),"Lock grid"]})}),t(en,{enable:{top:!1,right:!w,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:t(oH,{theme:e})},minWidth:120,size:{width:d,height:"auto"},onResizeStop:(e,o,t,n)=>{y({width:d+n.width,height:c+n.height})},children:t(o_,{theme:e,children:t(er,{layout:k,className:"layout",cols:4,rowHeight:eh,width:d,margin:[0,0],isResizable:!w,draggableHandle:".grid-item-handle",onLayoutChange:e=>{requestAnimationFrame(()=>{v(e.map(({i:e,w:o,h:t,x:n,y:r})=>({id:e,width:o,height:t,x:n,y:r})))})},children:p.map(o=>t(oL,{theme:e,children:t(oF,{node:o,showControls:!w,onDelete:x})},o.id))})})})]})]})]}):null},oO={};oO="# 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<br/>\n\n## Rename node\n - Doubleclick the node title\n\n<br/>\n\n## Undo/Redo\n - `CMD+Z` to Undo / `CMD+SHIFT+Z` to Redo\n - Select **'Undo'**/**'Redo'** from the Edit menu\n\n<br/>\n\n## Upload file\n - Drag and drop audio or patch files onto the application\n - Uploaded file appears as a new tab in the tabs bar at the top\n - Click on the tab to view or edit the file\n\n<br/>\n\n## Rename file in the project\n - Doubleclick the tab title\n\n\n";let oB=i(c.div`
|
|
535
535
|
font-family: var(--leva-fonts-mono);
|
|
536
536
|
font-size: 0.7rem;
|
|
537
537
|
box-sizing: border-box;
|
|
@@ -602,7 +602,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
602
602
|
width: 100%;
|
|
603
603
|
box-sizing: border-box;
|
|
604
604
|
overflow: hidden;
|
|
605
|
-
`);var oG=()=>{var e;let o=ey(e=>e.isHelpShown),n=ey(e=>e.toggleHelp);return o?t(
|
|
605
|
+
`);var oG=()=>{var e;let o=ey(e=>e.isHelpShown),n=ey(e=>e.toggleHelp);return o?t(eE,{onClose:()=>{n()},children:t(oU,{children:t(oB,{dangerouslySetInnerHTML:{__html:ed((e=oO)&&e.__esModule?e.default:e)},onWheelCapture:e=>e.stopPropagation()})})}):null};let oV=()=>t(r,{children:t(_,{onClick:ey(e=>e.toggleHelp),children:t(Q,{})})}),oY=c.div`
|
|
606
606
|
position: fixed;
|
|
607
607
|
z-index: ${({theme:e})=>e.zIndex.resumeContextLayout};
|
|
608
608
|
width: 100%;
|
|
@@ -616,7 +616,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
616
616
|
justify-content: center;
|
|
617
617
|
color: ${({theme:e})=>e.colors.whitePrimary};
|
|
618
618
|
cursor: pointer;
|
|
619
|
-
`,
|
|
619
|
+
`,oX=c.div`
|
|
620
620
|
display: flex;
|
|
621
621
|
width: 100%;
|
|
622
622
|
align-items: center;
|
|
@@ -627,7 +627,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
627
627
|
`,oZ=c(ee)`
|
|
628
628
|
width: 7rem;
|
|
629
629
|
height: 7rem;
|
|
630
|
-
`;var oq=()=>{let e=ew(),o=ey(({patch:e})=>e).audioContext,[r,i]=h("running"===o.state);return r?null:n(
|
|
630
|
+
`;var oq=()=>{let e=ew(),o=ey(({patch:e})=>e).audioContext,[r,i]=h("running"===o.state);return r?null:n(oY,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[t(oX,{children:t(oJ,{theme:e,children:"Click anywhere to resume audio context"})}),t(oX,{children:t(oZ,{})})]})},oK=()=>{let e=ey(({setConfig:e})=>e),{showMinimap:o}=ey(({config:e})=>e);return t(_,{onClick:()=>e({showMinimap:!o}),children:o?t(eo,{}):t(et,{})})},oQ=({id:e,sourceX:o,sourceY:i,targetX:l,targetY:a,sourcePosition:s,targetPosition:d,style:c={},data:p,markerStart:h,markerEnd:m,source:u,target:f,sourceHandleId:v,targetHandleId:b,selected:y})=>{let x=ew(),w=ey(({getNode:e})=>e),C=w(u),k=w(f),$=C?.selected||k?.selected;g(()=>{if(v&&b)return console.log(`connected ${u} to ${f}`),()=>{console.log(`disconnected ${u} from ${f}`)}},[u,v,f,b]);let[P]=I({targetX:l,targetY:a,targetPosition:d,sourceX:o,sourceY:i,sourcePosition:s});return n(r,{children:[t("path",{id:e,style:{...c,stroke:y?x.colors.accent2:$?x.colors.highlight3:x.colors.highlight2},className:"react-flow__edge-path Wire",d:P,markerEnd:m}),t("path",{style:{...c,strokeWidth:8,color:"transparent",opacity:0,cursor:"pointer"},d:P,markerEnd:m})]})};let o0=i(c(z)`
|
|
631
631
|
&.bottom {
|
|
632
632
|
right: 1rem;
|
|
633
633
|
bottom: 40%;
|
|
@@ -636,7 +636,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
636
636
|
svg {
|
|
637
637
|
color: ${({theme:e})=>e.colors.elevation2};
|
|
638
638
|
}
|
|
639
|
-
`),o1=(e,o)=>console.log("drag stop",o),o2=(e,o)=>console.log("click",o),o3=[20,20],o6=({editorState:e,plugins:o=[],editorContextMenu:r=[],onChange:i=()=>{},...l})=>{let a=m(()=>({wire:oQ}),[]),{nodes:s,edges:d,controlPanel:c,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onEdgesDelete:b,onConnect:y,setViewport:x,viewport:w}=ey();g(()=>{e?.viewport&&!w&&x(e.viewport)},[e?.viewport,x,w]);let C=ey(({config:e})=>e),k=ey(({nodeTypes:e})=>e),[$,P]=h(null);g(()=>{$&&i({nodes:s,edges:d,controlPanel:c,viewport:w})},[s,d,c,w]);let N=u(e=>{$||(P(e),console.log("flow loaded:",e))},[$]),{onContextMenu:z}=(()=>{let{show:e}=G({id:e3});return{onContextMenu:e}})(),{onContextMenu:T}=(()=>{let{show:e}=G({id:e4});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:M}=(()=>{let{show:e}=G({id:eP});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return n(
|
|
639
|
+
`),o1=(e,o)=>console.log("drag stop",o),o2=(e,o)=>console.log("click",o),o3=[20,20],o6=({editorState:e,plugins:o=[],editorContextMenu:r=[],onChange:i=()=>{},...l})=>{let a=m(()=>({wire:oQ}),[]),{nodes:s,edges:d,controlPanel:c,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onEdgesDelete:b,onConnect:y,setViewport:x,viewport:w}=ey();g(()=>{e?.viewport&&!w&&x(e.viewport)},[e?.viewport,x,w]);let C=ey(({config:e})=>e),k=ey(({nodeTypes:e})=>e),[$,P]=h(null);g(()=>{$&&i({nodes:s,edges:d,controlPanel:c,viewport:w})},[s,d,c,w]);let N=u(e=>{$||(P(e),console.log("flow loaded:",e))},[$]),{onContextMenu:z}=(()=>{let{show:e}=G({id:e3});return{onContextMenu:e}})(),{onContextMenu:T}=(()=>{let{show:e}=G({id:e4});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:M}=(()=>{let{show:e}=G({id:eP});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return n(j,{nodes:s,edges:d,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onConnect:y,onNodeDragStop:o1,onEdgesDelete:b,onInit:N,onNodeClick:o2,onContextMenu:z,onNodeContextMenu:T,onEdgeContextMenu:M,nodeTypes:k,edgeTypes:a,snapGrid:o3,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,onViewportChange:x,viewport:e?.viewport,disableKeyboardA11y:!0,children:[t(F,{variant:E.Dots,gap:12}),C.showMinimap?t(D,{}):null,n(o0,{showInteractive:!1,position:"bottom-right",children:[t(oK,{}),t(oV,{})]}),t(oq,{}),t(oW,{}),t(oG,{}),t(e6,{editorContextMenu:r}),t(e9,{}),t(eN,{})]})},o4=e=>t(T,{children:t(o6,{...e})}),o9={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},o8=i(c.div`
|
|
640
640
|
display: flex;
|
|
641
641
|
flex-direction: column;
|
|
642
642
|
height: 100%;
|
|
@@ -677,7 +677,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
677
677
|
align-items: center;
|
|
678
678
|
justify-content: center;
|
|
679
679
|
font-size: 6rem;
|
|
680
|
-
`),tt=e=>{let o=ey(e=>e.pullEditorChanges),i=ey(e=>e.currentFileIndex),l=ey(e=>e.project),[a,s]=h(!0);g(()=>{e.onChange?.(l)},[l,e.onChange]),g(()=>{s(!0),setTimeout(()=>{s(!1)},1600)},[i]);let{file:d}=e;return d?"audio"===d.type?t(te,{children:t("audio",{src:d.file,controls:!0})}):n(r,{children:[t(o4,{...e,onChange:e=>{o()},editorState:d.file||o9}),t(to,{show:a,children:"Loading..."})]}):null},tn=i(c.div`
|
|
680
|
+
`),tt=e=>{let o=ey(e=>e.pullEditorChanges),i=ey(e=>e.project.currentFileIndex),l=ey(e=>e.project),[a,s]=h(!0);g(()=>{e.onChange?.(l)},[l,e.onChange]),g(()=>{s(!0),setTimeout(()=>{s(!1)},1600)},[i]);let{file:d}=e;return d?"audio"===d.type?t(te,{children:t("audio",{src:d.file,controls:!0})}):n(r,{children:[t(o4,{...e,onChange:e=>{o()},editorState:d.file||o9}),t(to,{show:a,children:"Loading..."})]}):null},tn=i(c.div`
|
|
681
681
|
height: 2rem;
|
|
682
682
|
display: flex;
|
|
683
683
|
align-items: center;
|
|
@@ -721,7 +721,10 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
721
721
|
&:hover {
|
|
722
722
|
color: ${({theme:e})=>e.colors.whitePrimary};
|
|
723
723
|
}
|
|
724
|
-
|
|
724
|
+
${({hide:e})=>e?`
|
|
725
|
+
display: none;
|
|
726
|
+
`:""};
|
|
727
|
+
`),ts=()=>({file:o9,name:"Unnamed",type:"patch",id:p()});var td=({...e})=>{let{projectState:o,theme:r,plugins:i=[]}=e,d=ey(e=>e.setPlugins),c=ey(e=>e.project.currentFileIndex||0),p=ey(e=>e.project.files[e.project.currentFileIndex||0]),m=ey(e=>e.setCurrentFileIndex),u=ey(e=>e.project),f=ey(e=>e.setProject),v=ey(e=>e.getProject),b=ey(e=>e.updateFileName),y=ey(e=>e.addFile),x=ey(e=>e.deleteFile);ey(e=>e.updateFileContent);let w=ey(e=>e.syncEditorWithCurrentFile),k=ey(e=>e.setEditorState);ey(e=>e.pullEditorChanges);let[$,P]=h(!1);return g(()=>{d(i)},[i]),g(()=>{f(o||{files:[ts()],currentFileIndex:0});let e=o?.files[0];e?.file&&e?.type!=="audio"&&k(e.file)},[o]),g(()=>(C("project://*",async(...e)=>{let o=new Request(...e),t=v().files,n=o.url.replace("project://",""),r=t.find(({id:e})=>e===n);return r?eu(r)?new Response(JSON.stringify(r.file??null)):ef(r)?fetch(r.file):new Response(null):new Response(`File not found: ${o.url}`,{status:404})}),()=>{}),[v]),g(()=>{w()},[c,w]),n(l,{theme:r||ex,children:[t(a,{styles:s`
|
|
725
728
|
:root {
|
|
726
729
|
--leva-colors-elevation1: #292d39;
|
|
727
730
|
--leva-colors-elevation2: #181c20;
|
|
@@ -778,5 +781,5 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
778
781
|
--leva-fontWeights-folder: normal;
|
|
779
782
|
--leva-fontWeights-button: normal;
|
|
780
783
|
}
|
|
781
|
-
`}),n(o8,{onDragOver:e=>{e.preventDefault(),e.stopPropagation(),P(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),P(!1)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),P(!1),Array.from(e.dataTransfer.files).forEach(async e=>{if("application/json"===e.type){let o=JSON.parse(await e.text());if(o.files&&o.files.length){if(!window.confirm("This action will replace your current project. Continue?"))return;f(o),m(0),w();return}y({...ts(),file:{...o,controlPanel:{...o9.controlPanel,...o.controlPanel}},name:e.name},e.name);return}if(e.type.match(/^audio\//)){let o=await eq(e);y({type:"audio",id:`audio-file-${+new Date}`,name:e.name,file:o});return}console.error("Unsupported file type",e)})},children:[n(tn,{children:[u.files.map((e,o)=>n(tr,{onClick:()=>{m(o)},active:o===c,children:[t(oe,{onChange:e=>b(o,e),value:e.name||"Unnamed"}),t(ta,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")
|
|
784
|
+
`}),n(o8,{onDragOver:e=>{e.preventDefault(),e.stopPropagation(),P(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),P(!1)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),P(!1),Array.from(e.dataTransfer.files).forEach(async e=>{if("application/json"===e.type){let o=JSON.parse(await e.text());if(o.files&&o.files.length){if(!window.confirm("This action will replace your current project. Continue?"))return;f(o),m(0),w();return}y({...ts(),file:{...o,controlPanel:{...o9.controlPanel,...o.controlPanel}},name:e.name},e.name);return}if(e.type.match(/^audio\//)){let o=await eq(e);y({type:"audio",id:`audio-file-${+new Date}`,name:e.name,file:o});return}console.error("Unsupported file type",e)})},children:[n(tn,{children:[u.files.map((e,o)=>n(tr,{onClick:()=>{m(o)},active:o===c,children:[t(oe,{onChange:e=>b(o,e),value:e.name||"Unnamed"}),u.files.length>1&&t(ta,{onClick:e=>{if(e.stopPropagation(),window.confirm("Do you really want to delete this file?")){if(1===u.files.length)return void alert("You cannot delete the last file in the project");x(o)}}})]},o)),t(ti,{onClick:()=>{y(ts())},children:t(tl,{})})]}),t(o5,{children:t(tt,{file:p,...e})}),$&&t(o7,{children:"Drop file(s) to upload to the project"})]})]})};export{td as Editor,o9 as EDITOR_DEFAULTS,oQ as Wire,oC as WNNode,ox as TitleBar,oc as PortsPanel,oh as OutputPorts,oy as OutputHandle,op as InputPorts,ov as InputHandle,og as Port,eE as Modal,oe as EditableLabel,e8 as useAudioNode,e7 as useNode,ew as useTheme,ey as useStore,ex as theme,ef as isAudio,eu as isPatch,eb as PortType};
|
|
782
785
|
//# sourceMappingURL=module.js.map
|