@web-noise/core 0.0.17 → 0.0.18-alpha.2
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 +4 -4
- package/dist/cjs/components.js.map +1 -1
- package/dist/esm/components.js +1 -1
- package/dist/esm/components.js.map +1 -1
- package/dist/main.js +4 -4
- package/dist/main.js.map +1 -1
- package/dist/module.js +9 -9
- package/dist/module.js.map +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,useOnViewportChange as F,ReactFlow as E,Background as j,BackgroundVariant as D,MiniMap as T,ReactFlowProvider as M,useReactFlow as S,Position as A,Handle as _,ControlButton as I,getBezierPath as R}from"@xyflow/react";import{create as H}from"zustand";import{setAudioNodeTypes as L,createPatch as W}from"@web-noise/patch";import{reverse as O,patch as B,create as U}from"jsondiffpatch";import{injectGlobal as V}from"@emotion/css";import"@xyflow/react/dist/style.css";import{useContextMenu as G,Item as X,Menu as Y,Separator as J}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import Z from"hotkeys-js";import{createPortal as q}from"react-dom";import{FileDrop as K}from"react-file-drop";import{FaFileUpload as Q,FaQuestion as ee,FaVolumeOff as eo,FaMap as et,FaRegMap as en}from"react-icons/fa";import{Resizable as er}from"re-resizable";import ei from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as el,AiFillUnlock as ea}from"react-icons/ai";import{RxDashboard as es}from"react-icons/rx";import ed from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ec}from"marked";let ep="web-noise-drag-handle",eh=`.${ep}`,eg=10;(eb=ey||(ey={})).Gate="gate",eb.Number="number",eb.Audio="audio",eb.Any="any";let em=e=>JSON.parse(JSON.stringify(e)),eu=(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))}},ef=e=>!("type"in e)||"patch"===e.type,ev=e=>"audio"===e.type;var eb,ey,ex=H((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:P(o,e).map(e=>({dragHandle:eh,...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=O(s);d&&e({...B(em({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({...B(em({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:W(),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];ev(i)||n(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:n}=o(),r=n.files[e];"audio"===r.type?console.log("audio file. skipping"):t(r.file)},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}),{});L(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/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,n)=>{let r,i,l,a=(i=U({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=new Set,i={...t(),nodes:[],edges:[]};return o(async(...o)=>{let n=t(),[l]=o,a={...i,..."function"==typeof l?l({...i}):l},s=eu(i.nodes,a.nodes),d=eu(i.edges,a.edges);i=a;let c=s.added,p=d.added,h=d.removed,g=s.removed,{patch:m}=n;if(c.length){let e=m.registerAudioNodes(c);r.add(e),await e,r.delete(e)}if(!(p.length||h.length||g.length))return void e(...o);if(r.size)try{await Promise.all([...r.values()])}catch(e){console.log("some error",e)}p.length&&m.registerAudioConnections(p),h.length&&m.unregisterAudioConnections(h),g.length&&m.unregisterAudioNodes(g),e(...o)},t,n)})),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}};V`
|
|
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,useOnViewportChange as F,ReactFlow as E,Background as j,BackgroundVariant as D,MiniMap as T,ReactFlowProvider as M,useReactFlow as S,Position as A,Handle as _,ControlButton as I,getBezierPath as R}from"@xyflow/react";import{create as H}from"zustand";import{setAudioNodeTypes as L,createPatch as W}from"@web-noise/patch";import{reverse as O,patch as B,create as U}from"jsondiffpatch";import{injectGlobal as V}from"@emotion/css";import"@xyflow/react/dist/style.css";import{useContextMenu as G,Item as X,Menu as Y,Separator as J}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import Z from"hotkeys-js";import{createPortal as q}from"react-dom";import{FileDrop as K}from"react-file-drop";import{FaFileUpload as Q,FaQuestion as ee,FaVolumeOff as eo,FaMap as et,FaRegMap as en}from"react-icons/fa";import{Resizable as er}from"re-resizable";import ei from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as el,AiFillUnlock as ea}from"react-icons/ai";import{RxDashboard as es}from"react-icons/rx";import ed from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ec}from"marked";let ep="web-noise-drag-handle",eh=`.${ep}`,eg=10;(eb=ey||(ey={})).Gate="gate",eb.Number="number",eb.Audio="audio",eb.Any="any";let em=e=>JSON.parse(JSON.stringify(e)),eu=(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))}},ef=e=>!("type"in e)||"patch"===e.type,ev=e=>"audio"===e.type;var eb,ey,ex=H((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:P(o,e).map(e=>({dragHandle:eh,...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=O(s);d&&e({...B(em({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({...B(em({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:W(),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];ev(i)||n(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:n}=o(),r=n.files[e];"audio"===r.type?console.log("audio file. skipping"):t(r.file)},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=>{console.log(135135,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}),{});L(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/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,n)=>{let r,i,l,a=(i=U({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=new Set,i={...t(),nodes:[],edges:[]};return o(async(...o)=>{let n=t(),[l]=o,a={...i,..."function"==typeof l?l({...i}):l},s=eu(i.nodes,a.nodes);console.log(8880000888e3,s);let d=eu(i.edges,a.edges);i=a;let c=s.added,p=d.added,h=d.removed,g=s.removed,{patch:m}=n;if(c.length){let e=m.registerAudioNodes(c);r.add(e),await e,r.delete(e)}if(!(p.length||h.length||g.length))return void e(...o);if(r.size)try{await Promise.all([...r.values()])}catch(e){console.log("some error",e)}p.length&&m.registerAudioConnections(p),h.length&&m.unregisterAudioConnections(h),g.length&&m.unregisterAudioNodes(g),e(...o)},t,n)})),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}};V`
|
|
2
2
|
.react-flow {
|
|
3
3
|
.react-flow__pane {
|
|
4
4
|
/* background: rgb(106 106 106); */
|
|
@@ -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
|
`,e2=c.div`
|
|
256
256
|
font-size: 2rem;
|
|
257
|
-
`;var e3=({isOpen:e,closeMenu:o})=>{let r=eC();ex(({setGraph:e})=>e),ex(e=>e.setEditorState);let i=ex(e=>e.addFile),l=f(null),a=u(async e=>{let[t]=e||[],n=await eK(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:n}),o()},[i,o]);return e?t(eD,{onClose:o,children:n(eQ,{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(K,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:n(e0,{theme:r,children:[t(e1,{}),t(e2,{children:"click or drop file here"})]})})]})}):null};let e6="editor-menu";var
|
|
257
|
+
`;var e3=({isOpen:e,closeMenu:o})=>{let r=eC();ex(({setGraph:e})=>e),ex(e=>e.setEditorState);let i=ex(e=>e.addFile),l=f(null),a=u(async e=>{let[t]=e||[],n=await eK(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:n}),o()},[i,o]);return e?t(eD,{onClose:o,children:n(eQ,{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(K,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:n(e0,{theme:r,children:[t(e1,{}),t(e2,{children:"click or drop file here"})]})})]})}):null};let e6="editor-menu";var e8=({editorContextMenu:e=[]})=>{let o=eC(),[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=ex(e=>e.pasteBuffer),{screenToFlowPosition:v}=S(),b=u(e=>{let{x:o,y:t}=v(e);f(o,t)},[s,v]),y=ex(({clearGraph:e})=>e),x=u(()=>{window.confirm("This action will delete all nodes in this patch. Continue?")&&y()},[y]),w=ex(e=>e.toggleHelp),C=ex(e=>e.history.back),k=ex(e=>e.history.forward),$=ex(e=>e.history.pointer),P=ex(e=>e.history.buffer),N=ex(e=>e.copySelectedItems),z=ex(e=>e.nodes),F=m(()=>z.filter(({selected:e})=>e),[z]),E=ex(e=>e.copyBuffer);return S(),g(()=>(Z("command+shift+a",()=>(p(200,50),!1)),Z("shift+/",()=>(w(),!1)),Z("command+z",()=>(C(),!1)),Z("command+shift+z",()=>(k(),!1)),Z("command+c",()=>(N(),!1)),Z("command+v",()=>(b({x:200,y:50}),!1)),()=>{Z.unbind()}),[p,b]),n(r,{children:[t(eq,{isOpen:a,closeMenu:()=>s(!1),mousePosition:i}),t(e3,{isOpen:d,closeMenu:()=>c(!1)}),n(eP,{id:e6,animation:!1,colors:o.colors,children:[t(ek,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>p(e,o),children:"Add Node (⌘+⇧+A)"}),t(J,{}),t(e$,{onClick:x,children:"Delete All"}),t(J,{}),t(ek,{onClick:()=>c(!0),children:"Upload Audio File"}),t(J,{}),t(ek,{disabled:0===$,onClick:C,children:"Undo (⌘+z)"}),t(ek,{disabled:$===P.length,onClick:k,children:"Redo (⌘+⇧+Z)"}),t(J,{}),t(ek,{disabled:!F.length,onClick:N,children:"Copy Selected (⌘+c)"}),t(ek,{disabled:!E.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>b({x:e,y:o}),children:"Paste (⌘+v)"}),t(J,{}),e.map((e,o)=>null===e?t(J,{},o):t(ek,{children:e},o)),t(J,{}),t(ek,{onClick:w,children:"Help (⇧+?)"})]})]})};let e4="editor-node-menu";var e9=e=>{let o=eC(),i=ex(e=>e.removeNodes),l=ex(e=>e.addNodeToControlPanel),a=ex(e=>e.removeNodeFromControlPanel),s=ex(e=>e.copy),d=ex(e=>e.nodesConfiguration),c=ex(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(eP,{id:e4,animation:!1,colors:o.colors,children:[t(ek,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),t(ek,{hidden:(...e)=>!h(...e)||p(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),t(ek,{hidden:(...e)=>!h(...e)||!p(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),t(ek,{onClick:e=>s({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},e5=e=>ex(({patch:e})=>e).audioNodes.get(e),e7=e=>{let o=ex(({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 oe=c.input`
|
|
258
258
|
width: 100%;
|
|
259
259
|
background: none;
|
|
260
260
|
border: none;
|
|
@@ -424,7 +424,7 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
424
424
|
left: 0;
|
|
425
425
|
`),ob=({...e})=>t(ov,{...e,type:"target",position:A.Left}),oy=i(c(of)`
|
|
426
426
|
right: 0;
|
|
427
|
-
`),ox=e=>t(oy,{...e,type:"source",position:A.Right}),ow=({className:e,...o})=>t(oc,{...o,className:[e,ep].join(" ")}),oC=e=>ex(o=>o.nodesConfiguration[e]),ok=e=>{let{id:o,children:r,selected:i,...l}=e,a=eC(),s=ex(({getNode:e})=>e),d=ex(e=>e.nodesConfiguration),[c,p]=h(!1),{info:g}=oC(e.type),u=m(()=>d[e.type].resizable??!1,[d,e.type]),{updateNodeLabel:f,updateNodeConfig:v}=
|
|
427
|
+
`),ox=e=>t(oy,{...e,type:"source",position:A.Right}),ow=({className:e,...o})=>t(oc,{...o,className:[e,ep].join(" ")}),oC=e=>ex(o=>o.nodesConfiguration[e]),ok=e=>{let{id:o,children:r,selected:i,...l}=e,a=eC(),s=ex(({getNode:e})=>e),d=ex(e=>e.nodesConfiguration),[c,p]=h(!1),{info:g}=oC(e.type),u=m(()=>d[e.type].resizable??!1,[d,e.type]),{updateNodeLabel:f,updateNodeConfig:v}=e7(o),{data:b}=s(o)||{},y=e5(o),{ConfigNode:x}=(e=>{let{configNode:o}=oC(e);return{ConfigNode:o}})(l.type),[w,C]=h(!1);if(!y)return t(oi,{className:ep,children:"can't find audio node"});if(y.loading)return t(oi,{className:ep,children:"loading"});if(y.error)return n(ol,{className:ep,children:["error: ",y.error.toString()]});if(!y.node)return t(oi,{className:ep,children:"can't find audio node"});let k=b?.config?.size,{node:{inputs:$,outputs:P}}=y;return n(or,{children:[n(ow,{children:[g&&t(os,{onClickCapture:()=>p(!0)}),t(oo,{value:b?.label??"No Name",onChange:f}),x&&t(oa,{onClickCapture:()=>C(e=>!e)})]}),n(op,{theme:a,children:[t(oh,{children:$?Object.keys($).map((e,o)=>n(om,{children:[t(ob,{id:e,portType:$[e].type}),t("span",{children:e})]},o)):null}),t(og,{children:P?Object.keys(P).map((e,o)=>n(om,{children:[t(ox,{id:e,portType:P[e].type}),t("span",{children:e})]},o)):null})]}),x&&w&&i?t(x,{...e,data:{label:"unknown",...e.data}}):u?t(er,{size:k,minWidth:180,minHeight:30,enable:{bottom:!0,bottomRight:!0,right:!0},onResizeStop:(e,o,t,n)=>{let r=k?{width:k.width+n.width,height:k.height+n.height}:t.getBoundingClientRect();v({...b?.config,size:r})},children:r}):r,t(on,{isOpen:c,type:e.type,onClose:()=>p(!1),node:y.node})]})},o$=c.div`
|
|
428
428
|
width: 100%;
|
|
429
429
|
padding: 0.4rem 0;
|
|
430
430
|
white-space: nowrap;
|
|
@@ -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
|
-
`,oE=e=>{let{node:o}=e,n=ex(e=>e.getControlPanelNode),r=m(()=>n(o),[o]);return r?t(r,{...e}):null};var oj=e=>{let{node:o,showControls:r,onDelete:i}=e,l=eC(),{id:a}=o,{node:s}=
|
|
463
|
+
`,oE=e=>{let{node:o}=e,n=ex(e=>e.getControlPanelNode),r=m(()=>n(o),[o]);return r?t(r,{...e}):null};var oj=e=>{let{node:o,showControls:r,onDelete:i}=e,l=eC(),{id:a}=o,{node:s}=e5(a)||{},{updateNodeValues:d}=e7(a);return n(oF,{theme:l,children:[n(oP,{theme:l,children:[t(o$,{children:o.data.label}),r&&n(oN,{children:[t(oz,{theme:l,children:t(y,{className:"grid-item-handle"})}),t(oz,{theme:l,children:t(b,{onClick:()=>i(o)})})]})]}),t(oE,{node:o,audioNode:s,updateNodeValues:d})]})};let oD=c.div`
|
|
464
464
|
position: fixed;
|
|
465
465
|
z-index: 5;
|
|
466
466
|
box-shadow: 0px 1px 2px ${({theme:e})=>e.colors.elevation2};
|
|
@@ -636,12 +636,12 @@ 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
|
-
`),o2=(e,o)=>console.log("drag stop",o),o3=(e,o)=>console.log("click",o),o6=[20,20],
|
|
639
|
+
`),o2=(e,o)=>console.log("drag stop",o),o3=(e,o)=>console.log("click",o),o6=[20,20],o8=({editorState:e,plugins:o=[],editorContextMenu:r=[],onChange:i=()=>{},...l})=>{let a=m(()=>({wire:o0}),[]),{nodes:s,edges:d,controlPanel:c,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onEdgesDelete:b,onConnect:y,setViewport:x,viewport:w}=ex(),C=ex(({config:e})=>e),k=ex(({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:e6});return{onContextMenu:e}})(),{onContextMenu:M}=(()=>{let{show:e}=G({id:e4});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:S}=(()=>{let{show:e}=G({id:eN});return{onContextMenu:u((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return g(()=>{w&&$?.setViewport(w)},[w,$]),F({onEnd:x}),n(E,{nodes:s,edges:d,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onConnect:y,onNodeDragStop:o2,onEdgesDelete:b,onInit:N,onNodeClick:o3,onContextMenu:z,onNodeContextMenu:M,onEdgeContextMenu:S,nodeTypes:k,edgeTypes:a,snapGrid:o6,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[t(j,{variant:D.Dots,gap:12}),C.showMinimap?t(T,{}):null,n(o1,{showInteractive:!1,position:"bottom-right",children:[t(oQ,{}),t(oX,{})]}),t(oK,{}),t(oO,{}),t(oG,{}),t(e8,{editorContextMenu:r}),t(e9,{}),t(ez,{})]})},o4=e=>t(M,{children:t(o8,{...e})}),o9={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},o5=i(c.div`
|
|
640
640
|
display: flex;
|
|
641
641
|
flex-direction: column;
|
|
642
642
|
height: 100%;
|
|
643
643
|
width: 100%;
|
|
644
|
-
`),
|
|
644
|
+
`),o7=i(c.div`
|
|
645
645
|
position: fixed;
|
|
646
646
|
height: 100%;
|
|
647
647
|
width: 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
|
-
`),tn=e=>{let o=ex(e=>e.pullEditorChanges),i=ex(e=>e.currentFileIndex),l=ex(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(to,{children:t("audio",{src:d.file,controls:!0})}):n(r,{children:[t(o4,{...e,onChange:e=>{o()},editorState:d.file||
|
|
680
|
+
`),tn=e=>{let o=ex(e=>e.pullEditorChanges),i=ex(e=>e.currentFileIndex),l=ex(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(to,{children:t("audio",{src:d.file,controls:!0})}):n(r,{children:[t(o4,{...e,onChange:e=>{o()},editorState:d.file||o9}),t(tt,{show:a,children:"Loading..."})]}):null},tr=i(c.div`
|
|
681
681
|
height: 2rem;
|
|
682
682
|
display: flex;
|
|
683
683
|
align-items: center;
|
|
@@ -721,7 +721,7 @@ 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
|
-
`),td=()=>({file:
|
|
724
|
+
`),td=()=>({file:o9,name:"Unnamed",type:"patch",id:p()});var tc=({...e})=>{let{projectState:o,theme:r,plugins:i=[]}=e,d=ex(e=>e.setPlugins),c=ex(e=>e.currentFileIndex),p=ex(e=>e.project.files[e.currentFileIndex]),m=ex(e=>e.setCurrentFileIndex),u=ex(e=>e.project),f=ex(e=>e.setProject),v=ex(e=>e.getProject),b=ex(e=>e.updateFileName),y=ex(e=>e.addFile),x=ex(e=>e.deleteFile),w=ex(e=>e.syncEditorWithCurrentFile),k=ex(e=>e.setEditorState);ex(e=>e.pullEditorChanges);let[$,P]=h(!1);return g(()=>{d(i)},[i]),g(()=>{f(o||{files:[td()]});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?ef(r)?new Response(JSON.stringify(r.file??null)):ev(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||ew,children:[t(a,{styles:s`
|
|
725
725
|
:root {
|
|
726
726
|
--leva-colors-elevation1: #292d39;
|
|
727
727
|
--leva-colors-elevation2: #181c20;
|
|
@@ -778,5 +778,5 @@ let e,o;import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{w
|
|
|
778
778
|
--leva-fontWeights-folder: normal;
|
|
779
779
|
--leva-fontWeights-button: normal;
|
|
780
780
|
}
|
|
781
|
-
`}),n(
|
|
781
|
+
`}),n(o5,{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({...td(),file:{...o,controlPanel:{...o9.controlPanel,...o.controlPanel}},name:e.name},e.name);return}if(e.type.match(/^audio\//)){let o=await eK(e);y({type:"audio",id:`audio-file-${+new Date}`,name:e.name,file:o});return}console.error("Unsupported file type",e)})},children:[n(tr,{children:[u.files.map((e,o)=>n(ti,{onClick:()=>{m(o)},active:o===c,children:[t(oo,{onChange:e=>b(o,e),value:e.name||"Unnamed"}),t(ts,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&(x(o),1===u.files.length&&(y(td()),m(0),w()))}})]},o)),t(tl,{onClick:()=>{y(td()),m(u.files.length)},children:t(ta,{})})]}),t(te,{children:t(tn,{file:p,...e})}),$&&t(o7,{children:"Drop file(s) to upload to the project"})]})]})};export{tc as Editor,o9 as EDITOR_DEFAULTS,o0 as Wire,ok as WNNode,ow as TitleBar,op as PortsPanel,og as OutputPorts,ox as OutputHandle,oh as InputPorts,ob as InputHandle,om as Port,eD as Modal,oo as EditableLabel,e5 as useAudioNode,e7 as useNode,eC as useTheme,ex as useStore,ew as theme,ev as isAudio,ef as isPatch,ey as PortType};
|
|
782
782
|
//# sourceMappingURL=module.js.map
|