@web-noise/core 0.0.12-fix → 0.0.12-fix3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.js ADDED
@@ -0,0 +1,742 @@
1
+ let e,o;import{jsx as t,jsxs as r,Fragment as n}from"react/jsx-runtime";import{withTheme as i,ThemeProvider as l,Global as a,css as 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,version as u,useMemo as m,useCallback as f,useRef as v}from"react";import{FaPlus as y}from"react-icons/fa6";import{MdClose as b,MdDragHandle as w,MdSettings as x,MdInfoOutline as C}from"react-icons/md";import{registerFetcher as $}from"@web-noise/fetch";import k,{getConnectedEdges as P,addEdge as N,applyNodeChanges as z,applyEdgeChanges as j,useOnViewportChange as E,Background as F,BackgroundVariant as S,MiniMap as T,Controls as D,ReactFlowProvider as M,useReactFlow as A,Position as O,Handle as _,ControlButton as I,getBezierPath as L}from"reactflow";import{create as H}from"zustand";import{setAudioNodeTypes as R,createPatch as W}from"@web-noise/patch";import{reverse as B,patch as G,create as V}from"jsondiffpatch";import{injectGlobal as U}from"@emotion/css";import"reactflow/dist/style.css";import{useContextMenu as J,Item as X,Menu as Y,Separator as q}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import K from"js-file-download";import Q from"hotkeys-js";import{createPortal as Z}from"react-dom";import{FileDrop as ee}from"react-file-drop";import{FaFileUpload as eo,FaQuestion as et,FaVolumeOff as er,FaMap as en,FaRegMap as ei}from"react-icons/fa";import{Resizable as el}from"re-resizable";import ea from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as es,AiFillUnlock as ed}from"react-icons/ai";import{RxDashboard as ec}from"react-icons/rx";import ep from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as eh}from"marked";let eg="web-noise-drag-handle",eu=`.${eg}`,em=10;(ew=ex||(ex={})).Gate="gate",ew.Number="number",ew.Audio="audio",ew.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))}},ey=e=>!("type"in e)||"patch"===e.type,eb=e=>"audio"===e.type;var ew,ex,eC=H((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:z(o,e).map(e=>({dragHandle:eu,...e}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:j(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:N(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;i?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,s=l[a-1];if(!s)return;let d=B(s);d&&e({...G(ef({nodes:t,edges:r,controlPanel:n}),d),history:{...i,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a];s&&e({...G(ef({nodes:t,edges:r,controlPanel:n}),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:r,project:n}=o(),i=n.files[t];eb(i)||r(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:r}=o(),n=r.files[e];"audio"===n.type?console.log("audio file. skipping"):t(n.file)},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),n=[...r.files,t];e({project:{...r,files:n}})},deleteFile:t=>{let{project:r,currentFileIndex:n}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=n&&e({currentFileIndex:n-1})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:n,createEdges:i,setNodesAndEdges:l,nodes:a,edges:s}=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(),s=e.map(({id:e})=>e),d=[...e,...n.filter(({parentNode:e})=>e&&s.includes(e))];a(d),l(P(d,r)),i(d);let c=d.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(N(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}),{});R(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:s}=t(),{nodes:d,edges:c}=n;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-r,{nodes:u,mapping:m}=d.reduce((e,o)=>{let t,r=(t=+new Date+Math.floor(1e3*Math.random()),o?.type?`${o.type}-${t}`:t.toString());return{nodes:[...e.nodes,{...o,id:r,position:{x:o.position.x-h,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:r}}},{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([...s.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,i,l,a=(i=V({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(n),l||(l=o),n=setTimeout(()=>{let o=i.diff(l,e);l=null,o&&t().history.push(o)},500)});return r.subscribe(a),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},s=ev(i.nodes,a.nodes),d=ev(i.edges,a.edges);i=a;let c=s.added,p=d.added,h=d.removed,g=s.removed,{patch:u}=r;if(c.length){let e=u.registerAudioNodes(c);n.add(e),await e,n.delete(e)}if(!(p.length||h.length||g.length))return void e(...o);if(n.size)try{await Promise.all([...n.values()])}catch(e){console.log("some error",e)}p.length&&u.registerAudioConnections(p),h.length&&u.unregisterAudioConnections(h),g.length&&u.unregisterAudioNodes(g),e(...o)},t,r)})),e$={colors:{elevation1:"#292d39",elevation2:"#181c20",elevation3:"#373c4b",accent1:"#0066dc",accent2:"#007bff",accent3:"#3c93ff",highlight1:"#535760",highlight2:"#8c92a4",highlight3:"#fefefe",vivid1:"#14df42",whitePrimary:"#ffffff",error:"#db5353"},zIndex:{modal:9998,controlPanel:9999,resumeContextLayout:10003}};U`
2
+ .react-flow {
3
+ .react-flow__pane {
4
+ /* background: rgb(106 106 106); */
5
+ /* background: "white"; */
6
+ // background: #292d39;
7
+ background: ${e$.colors.elevation3};
8
+ }
9
+
10
+ .react-flow__background {
11
+ /* background: #efefef; */
12
+ stroke: white;
13
+ }
14
+
15
+ .react-flow__node-default {
16
+ background: #292d39;
17
+ color: white;
18
+ border: none;
19
+ /* background: transparent; */
20
+ }
21
+
22
+ .react-flow__node {
23
+ padding: 0;
24
+ width: auto;
25
+ }
26
+
27
+ .react-flow__edge-path {
28
+ stroke: ${e$.colors.accent2};
29
+ }
30
+
31
+ .react-flow__node.selected {
32
+ border: 1px solid ${e$.colors.accent2};
33
+ box-shadow: 0 0 0 0.5px #${e$.colors.accent2};
34
+ }
35
+
36
+ .react-flow__node-default.selected, .react-flow__node-default.selected:hover {
37
+ box-shadow: 0 0 0 0.5px #${e$.colors.accent2};
38
+ }
39
+
40
+ /* .react-flow__minimap-mask {
41
+ fill: ${e$.colors.elevation1}
42
+ }
43
+
44
+ .react-flow__minimap-node {
45
+ fill:${e$.colors.accent2}
46
+ } */
47
+ }
48
+
49
+ `;var ek=()=>d();let eP=c(X)``,eN=c(Y)`
50
+ background: ${({colors:e})=>e.elevation2};
51
+ padding: 0;
52
+ border-radius: 0;
53
+
54
+ .react-contexify__item__content {
55
+ color: ${({colors:e})=>e.whitePrimary};
56
+ }
57
+
58
+ .react-contexify__separator {
59
+ background-color: ${({colors:e})=>e.elevation1};
60
+ margin: 0;
61
+ }
62
+ `,ez="editor-edge-menu";var ej=()=>{let e=ek(),o=eC(e=>e.removeEdges);return t(n,{children:t(eN,{id:ez,animation:!1,colors:e.colors,children:t(eP,{onClick:e=>o([e.props.edge]),children:"Delete Edge (DEL)"})})})};let eE=c.div`
63
+ position: fixed;
64
+ z-index: ${({theme:e})=>e.zIndex.modal};
65
+ width: 100%;
66
+ height: 100%;
67
+ top: 0;
68
+ left: 0;
69
+ background: ${({theme:e})=>e.colors.elevation3}cc;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ `,eF=c.div`
74
+ background: ${({theme:e})=>e.colors.elevation2};
75
+ box-shadow: 1px 1px 1px 1px ${({theme:e})=>e.colors.elevation1};
76
+ color: white;
77
+ width: 70%;
78
+ height: 80%;
79
+ overflow-y: scroll;
80
+ position: relative;
81
+ `,eS=c(b)`
82
+ position: absolute;
83
+ top: 0.2rem;
84
+ right: 0.2rem;
85
+ cursor: pointer;
86
+ `;var eT=({children:e,onClose:o,...n})=>{let i=ek();return g(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),Z(t(eE,{theme:i,onClick:o,children:r(eF,{...n,onClick:e=>{e.stopPropagation()},theme:i,children:[e,t(eS,{theme:i,onClick:o})]})}),document.body)};let eD=i(c.div`
87
+ width: 100%;
88
+ `),eM=i(c.div`
89
+ padding: 1rem;
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: 1rem;
93
+ `),eA=i(c.ul`
94
+ list-style: none;
95
+ margin: 0;
96
+ padding: 0;
97
+ padding-bottom: 10px;
98
+ columns: 2;
99
+
100
+ li {
101
+ display: flex;
102
+ flex-direction: column;
103
+ gap: 8px;
104
+ padding: 4px;
105
+ overflow: hidden;
106
+ border: 1px solid ${({theme:e})=>e.colors.elevation3};
107
+ border-radius: 4px;
108
+ margin-bottom: 0.5rem;
109
+ &:hover {
110
+ border-color: ${({theme:e})=>e.colors.accent2};
111
+ cursor: pointer;
112
+ }
113
+ }
114
+ `),eO=i(c.div`
115
+ white-space: nowrap;
116
+ overflow: hidden;
117
+ text-overflow: ellipsis;
118
+ `),e_=i(c.div`
119
+ color: ${({theme:e})=>e.colors.highlight2};
120
+ font-size: 12px;
121
+ `),eI=i(c.div`
122
+ display: flex;
123
+ gap: 0.2rem;
124
+ flex-wrap: wrap;
125
+ `),eL=i(c.span`
126
+ cursor: pointer;
127
+ font-size: 10px;
128
+ background: ${({theme:e,isActive:o})=>o?e.colors.highlight1:e.colors.elevation3};
129
+ border-radius: 2px;
130
+ padding: 0.1rem 0.2rem;
131
+ border: 1px solid;
132
+ border-color: ${({theme:e})=>e.colors.elevation2};
133
+ &:hover {
134
+ border-color: ${({theme:e})=>e.colors.accent2};
135
+ }
136
+ `),eH=i(c.div``),eR=i(c.div`
137
+ font-size: 1.1rem;
138
+ padding: 0.25rem 0;
139
+ color: ${({theme:e})=>e.colors.highlight3};
140
+ `),eW=i(c.div`
141
+ color: ${({theme:e})=>e.colors.highlight2};
142
+ font-size: 12px;
143
+ `);var eB=({onComponentClick:e,filters:{plugin:o,search:n="",tags:i},onTagClick:l})=>{let a=eC(({plugins:e})=>e),s=m(()=>o?a.filter(({name:e})=>e===o):a,[a,o]);return t(eD,{children:m(()=>n||i?.length?s.map(e=>({...e,components:i?.length?e.components.filter(e=>i?.every(o=>e.tags?.includes(o))):e.components})).map(e=>({...e,components:e.components.filter(({type:e,name:o})=>e.toLocaleLowerCase().includes(n.toLocaleLowerCase())||o?.toLocaleLowerCase().includes(n.toLocaleLowerCase()))})):s,[s,n,i]).map(({name:o,description:n,components:a},s)=>a.length?r(eM,{children:[r(eH,{children:[t(eR,{children:o}),t(eW,{children:n})]}),t(eA,{children:a.sort((e,o)=>e.type.toLowerCase()>o.type.toLowerCase()?1:-1).map((o,n)=>r("li",{onClick:()=>e(o),children:[t(eO,{children:o.name||o.type}),o.description&&t(e_,{children:o.description}),t(eI,{children:o.tags?.map((e,o)=>t(eL,{isActive:i?.includes(e),onClickCapture:o=>{o.stopPropagation(),l(e)},children:e},o))})]},n))})]},s):null)})};let eG=c.div`
144
+ display: flex;
145
+ position: relative;
146
+ `,eV=c.input`
147
+ padding-right: 2rem;
148
+ padding-left: 0.3rem;
149
+ width: 100%;
150
+ appearance: textfield;
151
+ font-size: inherit;
152
+ background: none;
153
+ border: none;
154
+ color: var(--leva-colors-highlight1);
155
+ font-family: var(--leva-fonts-mono);
156
+ cursor: inherit;
157
+ text-overflow: ellipsis;
158
+ outline: none;
159
+ appearance: textfield;
160
+ cursor: auto;
161
+ background-color: ${({theme:e})=>e.colors.elevation3};
162
+ border-radius: 0.1rem;
163
+ height: 2rem;
164
+ color: ${({theme:e})=>e.colors.highlight2};
165
+
166
+ &:focus,
167
+ &:hover {
168
+ box-shadow: 0 0 0 var(--leva-borderWidths-focus)
169
+ ${({theme:e})=>e.colors.accent2};
170
+ color: ${({theme:e})=>e.colors.whitePrimary};
171
+ }
172
+ &::-webkit-inner-spin-button,
173
+ &::-webkit-outer-spin-button {
174
+ -webkit-appearance: none;
175
+ margin-right: 1rem;
176
+ }
177
+ `,eU=c.div`
178
+ display: flex;
179
+ flex-direction: column;
180
+ padding: 0.6rem;
181
+ gap: 0.6rem;
182
+ border-right: 1px solid ${({theme:e})=>e.colors.elevation3};
183
+ min-width: 14rem;
184
+ `,eJ=c.label`
185
+ user-select: none;
186
+ input {
187
+ display: none;
188
+ }
189
+ input:checked + span {
190
+ color: ${({theme:e})=>e.colors.accent2};
191
+ }
192
+ &:hover {
193
+ color: ${({theme:e})=>e.colors.accent3};
194
+ cursor: pointer;
195
+ }
196
+ `,eX=i(c(eL)`
197
+ font-size: 12px;
198
+ padding: 0.2rem 0.4rem;
199
+ &:hover {
200
+ }
201
+ &::after {
202
+ content: "×";
203
+ margin-left: 0.4rem;
204
+ }
205
+ `);var eY=({onChange:e,value:o})=>{let n=ek(),i=eC(({plugins:e})=>e),l=v(null);return g(()=>{l.current&&l.current.focus()},[l]),r(eU,{theme:n,children:[t(eG,{children:t(eV,{ref:l,theme:n,value:o.search||"",placeholder:"search...",onChange:t=>e({...o,search:t.target.value})})}),t(eI,{children:o.tags?.map((r,n)=>t(eX,{isActive:!0,onClick:()=>{let t=o.tags?.filter(e=>e!==r)||[];e({...o,tags:t})},children:r},n))}),i.map(({name:i,components:l},a)=>i?r(eJ,{theme:n,children:[t("input",{type:"checkbox",name:"plugin",value:i,checked:i===o.plugin,onChange:()=>{e({...o,plugin:i===o.plugin?null:i})}}),t("span",{children:i})]},a):null)]})};let eq=c.div`
206
+ height: 100%;
207
+ width: 100%;
208
+ display: flex;
209
+ gap: 1rem;
210
+ `,eK=c.div`
211
+ flex-grow: 1;
212
+ height: 100%;
213
+ overflow-y: scroll;
214
+ `;var eQ=({isOpen:e,closeMenu:o,mousePosition:n})=>{let i=ek(),{screenToFlowPosition:l}=A(),{createNode:a}=eC(({createNode:e})=>({createNode:e})),[s,d]=h({}),c=f(({type:e})=>{let{x:t,y:r}=l(n);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:r},targetPosition:O.Left,sourcePosition:O.Right}),o()},[n,l,a,o,n]);return e?t(eT,{onClose:()=>{o(),d({})},children:r(eq,{theme:i,children:[t(eY,{onChange:d,value:s}),t(eK,{theme:i,children:t(eB,{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 eZ=c.div`
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ height: 100%;
219
+ width: 100%;
220
+
221
+ .drop-zone-wrapper {
222
+ width: 80%;
223
+ height: 80%;
224
+ }
225
+
226
+ .drop-zone {
227
+ height: 100%;
228
+ width: 100%;
229
+ border-style: dashed;
230
+ border-width: 2px;
231
+ border-color: ${({theme:e})=>e.colors.highlight2};
232
+ opacity: 0.5;
233
+ cursor: pointer;
234
+ }
235
+
236
+ .drop-zone:hover,
237
+ .drop-zone-drag-over {
238
+ opacity: 1;
239
+ }
240
+ `,e0=c.div`
241
+ display: flex;
242
+ flex-wrap: wrap;
243
+ align-items: center;
244
+ justify-content: center;
245
+ height: 100%;
246
+ width: 100%;
247
+ `,e1=c(eo)`
248
+ width: 100%;
249
+ height: 8rem;
250
+ `,e2=c.div`
251
+ font-size: 2rem;
252
+ `;var e3=({isOpen:e,closeMenu:o})=>{let n=ek(),i=eC(({setGraph:e})=>e),l=eC(e=>e.setEditorState),a=v(null),s=f(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{l(e),o()}).catch(console.error)},[i,o]);return e?t(eT,{onClose:o,children:r(eZ,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>s(e),ref:a,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(ee,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{a.current?.click()},onDrop:e=>s(e),children:r(e0,{theme:n,children:[t(e1,{}),t(e2,{children:"click or drop file here"})]})})]})}):null};let e8=c.div`
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: center;
256
+ height: 100%;
257
+ width: 100%;
258
+
259
+ .drop-zone-wrapper {
260
+ width: 80%;
261
+ height: 80%;
262
+ }
263
+
264
+ .drop-zone {
265
+ height: 100%;
266
+ width: 100%;
267
+ border-style: dashed;
268
+ border-width: 2px;
269
+ border-color: ${({theme:e})=>e.colors.highlight2};
270
+ opacity: 0.5;
271
+ cursor: pointer;
272
+ }
273
+
274
+ .drop-zone:hover,
275
+ .drop-zone-drag-over {
276
+ opacity: 1;
277
+ }
278
+ `,e9=c.div`
279
+ display: flex;
280
+ flex-wrap: wrap;
281
+ align-items: center;
282
+ justify-content: center;
283
+ height: 100%;
284
+ width: 100%;
285
+ `,e5=c(eo)`
286
+ width: 100%;
287
+ height: 8rem;
288
+ `,e7=c.div`
289
+ font-size: 2rem;
290
+ `;var e6=({isOpen:e,closeMenu:o})=>{let n=ek(),i=eC(e=>e.setProject),l=v(null),a=f(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{i(e),o()}).catch(console.error)},[i,o]);return e?t(eT,{onClose:o,children:r(e8,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(ee,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:r(e9,{theme:n,children:[t(e5,{}),t(e7,{children:"click or drop file here"})]})})]})}):null};console.log(888888,`React version: ${u}`);let e4=e=>new Promise((o,t)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>o(r.result?.toString()||""),r.onerror=e=>t(e)}),oe=c.div`
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ height: 100%;
295
+ width: 100%;
296
+
297
+ .drop-zone-wrapper {
298
+ width: 80%;
299
+ height: 80%;
300
+ }
301
+
302
+ .drop-zone {
303
+ height: 100%;
304
+ width: 100%;
305
+ border-style: dashed;
306
+ border-width: 2px;
307
+ border-color: ${({theme:e})=>e.colors.highlight2};
308
+ opacity: 0.5;
309
+ cursor: pointer;
310
+ }
311
+
312
+ .drop-zone:hover,
313
+ .drop-zone-drag-over {
314
+ opacity: 1;
315
+ }
316
+ `,oo=c.div`
317
+ display: flex;
318
+ flex-wrap: wrap;
319
+ align-items: center;
320
+ justify-content: center;
321
+ height: 100%;
322
+ width: 100%;
323
+ `,ot=c(eo)`
324
+ width: 100%;
325
+ height: 8rem;
326
+ `,or=c.div`
327
+ font-size: 2rem;
328
+ `;var on=({isOpen:e,closeMenu:o})=>{let n=ek();eC(({setGraph:e})=>e),eC(e=>e.setEditorState);let i=eC(e=>e.addFile),l=v(null),a=f(async e=>{let[t]=e||[],r=await e4(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:r}),o()},[i,o]);return e?t(eT,{onClose:o,children:r(oe,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".wav,.mp3,.ogg"}),t(ee,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:r(oo,{theme:n,children:[t(ot,{}),t(or,{children:"click or drop file here"})]})})]})}):null};let oi="editor-menu";var ol=({editorContextMenu:e=[]})=>{let o=ek(),[i,l]=h({x:0,y:0}),[a,s]=h(!1),[d,c]=h(!1),[p,u]=h(!1),[v,y]=h(!1),b=f((e,o)=>{l({x:e,y:o}),s(!0)},[s]),w=eC(e=>e.pasteBuffer),{screenToFlowPosition:x}=A(),C=f(e=>{let{x:o,y:t}=x(e);w(o,t)},[s,x]),$=eC(({clearGraph:e})=>e),k=eC(e=>e.getEditorState),P=eC(e=>e.getProject),N=f(()=>{$()},[$]),z=eC(e=>e.toggleHelp),j=eC(e=>e.history.back),E=eC(e=>e.history.forward),F=eC(e=>e.history.pointer),S=eC(e=>e.history.buffer),T=eC(e=>e.copySelectedItems),D=eC(e=>e.nodes),M=m(()=>D.filter(({selected:e})=>e),[D]),O=eC(e=>e.copyBuffer),_=A(),I=f(()=>{K(JSON.stringify({...k()},null,2),"web-noise-patch.json")},[k,_]),L=f(()=>{K(JSON.stringify({...P()},null,2),"web-noise-project.json")},[k,_]);return g(()=>(Q("command+shift+a",()=>(b(200,50),!1)),Q("shift+/",()=>(z(),!1)),Q("command+z",()=>(j(),!1)),Q("command+shift+z",()=>(E(),!1)),Q("command+c",()=>(T(),!1)),Q("command+v",()=>(C({x:200,y:50}),!1)),()=>{Q.unbind()}),[b,C]),r(n,{children:[t(eQ,{isOpen:a,closeMenu:()=>s(!1),mousePosition:i}),t(e3,{isOpen:d,closeMenu:()=>c(!1)}),t(e6,{isOpen:p,closeMenu:()=>u(!1)}),t(on,{isOpen:v,closeMenu:()=>y(!1)}),r(eN,{id:oi,animation:!1,colors:o.colors,children:[t(eP,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>b(e,o),children:"Add Node (⌘+⇧+A)"}),t(q,{}),t(eP,{onClick:N,children:"Delete All"}),t(q,{}),t(eP,{onClick:I,children:"Download patch"}),t(eP,{onClick:()=>c(!0),children:"Upload patch"}),t(q,{}),t(eP,{onClick:L,children:"Download project"}),t(eP,{onClick:()=>u(!0),children:"Upload project"}),t(q,{}),t(eP,{onClick:()=>y(!0),children:"Upload Audio File"}),t(q,{}),t(eP,{disabled:0===F,onClick:j,children:"Undo (⌘+z)"}),t(eP,{disabled:F===S.length,onClick:E,children:"Redo (⌘+⇧+Z)"}),t(q,{}),t(eP,{disabled:!M.length,onClick:T,children:"Copy Selected (⌘+c)"}),t(eP,{disabled:!O.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>C({x:e,y:o}),children:"Paste (⌘+v)"}),t(q,{}),e.map((e,o)=>t(eP,{children:e},o)),t(q,{}),t(eP,{onClick:z,children:"Help (⇧+?)"})]})]})};let oa="editor-node-menu";var os=e=>{let o=ek(),i=eC(e=>e.removeNodes),l=eC(e=>e.addNodeToControlPanel),a=eC(e=>e.removeNodeFromControlPanel),s=eC(e=>e.copy),d=eC(e=>e.nodesConfiguration),c=eC(e=>e.controlPanel.nodes),p=f(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),h=f(({props:e})=>{if(!e?.node.type)return!1;let o=d[e.node.type];return!!o?.controlPanelNode},[d]);return t(n,{children:r(eN,{id:oa,animation:!1,colors:o.colors,children:[t(eP,{onClick:e=>i([e.props.node]),children:"Delete Node (DEL)"}),t(eP,{hidden:(...e)=>!h(...e)||p(...e),onClick:e=>l(e.props.node),children:"Add To Control Panel"}),t(eP,{hidden:(...e)=>!h(...e)||!p(...e),onClick:e=>a(e.props.node),children:"Remove From Control Panel"}),t(eP,{onClick:e=>s({nodes:[e.props.node],edges:[]}),children:"Copy (⌘+c)"})]})})},od=e=>eC(({patch:e})=>e).audioNodes.get(e),oc=e=>{let o=eC(({updateNodeData:e})=>e);return{updateNodeValues:f(t=>o(e,{values:t}),[e,o]),updateNodeConfig:f(t=>o(e,{config:t}),[e,o]),updateNodeLabel:f(t=>o(e,{label:t}),[e,o])}};let op=c.input`
329
+ width: 100%;
330
+ background: none;
331
+ border: none;
332
+ text-align: center;
333
+ color: var(--leva-colors-highlight1);
334
+ font-family: var(--leva-fonts-mono);
335
+ font-size: var(--leva-fontSizes-root);
336
+ cursor: inherit;
337
+ text-overflow: ellipsis;
338
+ outline: none;
339
+
340
+ &:focus {
341
+ box-shadow: 0 0 0 green var(--leva-colors-accent2);
342
+ }
343
+ &:focus-within {
344
+ box-shadow: 0 0 0 green var(--leva-colors-accent2);
345
+ }
346
+ &:focus-vissible {
347
+ box-shadow: 0 0 0 green var(--leva-colors-accent2);
348
+ }
349
+ &:not([readonly]):focus {
350
+ color: #fff;
351
+ appearance: none;
352
+ cursor: auto;
353
+ background-color: var(--leva-colors-elevation2);
354
+ padding: 0.3rem;
355
+ border-radius: 0.2rem;
356
+ }
357
+ `;var oh=({onChange:e,value:o="",className:r})=>{let n=v(null),[i,l]=h(!1),a=f(e=>{e.target?.select(),l(!0)},[l]),s=f(()=>{window.getSelection()?.collapseToEnd(),l(!1)},[l]),d=f(()=>{s(),n.current&&e(n.current.value)},[n,s,e]),c=f(()=>{s(),n.current&&o&&(n.current.value=o)},[n,s,o]);return g(()=>{n.current&&(n.current.value=o)},[o,n]),t(op,{ref:n,type:"text",readOnly:!i,onDoubleClick:e=>a(e),onBlur:d,onKeyDown:e=>{switch(e.key){case"Escape":c();break;case"Enter":d()}},className:r})};let og=i(c.div`
358
+ height: 100%;
359
+ width: 100%;
360
+ overflow: scroll;
361
+ padding: 0.6rem;
362
+ box-sizing: border-box;
363
+
364
+ hr {
365
+ border: none;
366
+ border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
367
+ }
368
+
369
+ code {
370
+ background-color: ${({theme:e})=>e.colors.elevation3};
371
+ color: ${({theme:e})=>e.colors.highlight3};
372
+ font-family:
373
+ source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
374
+ }
375
+
376
+ pre {
377
+ background-color: ${({theme:e})=>e.colors.elevation3};
378
+ padding: 0.2rem 0.3rem;
379
+ border-radius: 1px;
380
+ }
381
+
382
+ a {
383
+ color: ${({theme:e})=>e.colors.accent1};
384
+ }
385
+ `);var ou=({isOpen:e,onClose:o,type:r,node:n})=>{let{info:i,portsDescription:l}=eC(e=>e.nodesConfiguration[r]),a=m(()=>{let e=[],o=n.inputs;if(o)for(let t in e.push("## Inputs"),o){let r=o[t];e.push(`### *${t}*`);let n=l?.inputs?.[t];n&&e.push(n),Array.isArray(r.type)?e.push(`**Types**: \`${r.type.join(", ")}\``):e.push(`**Type**: \`${r.type||"unknown"}\``),r.range&&e.push(`**Range**: \`[${r.range[0]}, ${r.range[1]}]\``),void 0!==r.defaultValue&&e.push(`**Default**: \`${r.defaultValue}\``)}let t=n.outputs;if(t)for(let o in e.push("## Outputs"),t){let r=t[o];e.push(`### *${o}*`);let n=l?.outputs?.[o];n&&e.push(n),Array.isArray(r.type)?e.push(`**Types**: \`${r.type.join(", ")}\``):e.push(`**Type**: \`${r.type||"unknown"}\``),r.range&&e.push(`**Range**: \`[${r.range[0]}, ${r.range[1]}]\``),void 0!==r.defaultValue&&e.push(`**Default**: \`${r.defaultValue}\``)}return e.join("\n\n")},[n,l]);return e?t(eT,{onClose:o,children:t(og,{dangerouslySetInnerHTML:{__html:eh((i||"")+"\n\n"+a||"")}})}):null};let om=c.div`
386
+ background-color: var(--leva-colors-elevation1);
387
+ `,of=c(om)`
388
+ padding: 2rem 5rem;
389
+ `,ov=c(om)`
390
+ padding: 1rem 2rem;
391
+ `,oy=c(x)`
392
+ font-size: 1.2rem;
393
+ opacity: 0.4;
394
+ width: 1rem;
395
+ &:hover {
396
+ opacity: 1;
397
+ cursor: pointer;
398
+ }
399
+ `,ob=c(C)`
400
+ font-size: 1.2rem;
401
+ opacity: 0.4;
402
+ width: 1rem;
403
+ &:hover {
404
+ opacity: 1;
405
+ cursor: pointer;
406
+ }
407
+ `,ow=c.div`
408
+ position: relative;
409
+ font-family: var(--leva-fonts-mono);
410
+ font-size: var(--leva-fontSizes-root);
411
+ background-color: var(--leva-colors-elevation1);
412
+ `,ox=c(ow)`
413
+ display: flex;
414
+ height: var(--leva-sizes-titleBarHeight);
415
+ touch-action: none;
416
+ align-items: center;
417
+ justify-content: center;
418
+ flex: 1 1 0%;
419
+ color: var(--leva-colors-highlight1);
420
+ padding: 0 0.4rem;
421
+ gap: 0.3rem;
422
+ `,oC=c(ow)(({theme:e})=>`
423
+ display: grid;
424
+ grid-template-areas: "inputs outputs";
425
+ background: ${e.colors.elevation2};
426
+ border-bottom: 1px solid ${e.colors.elevation1};
427
+ color: ${e.colors.highlight3};
428
+ font-size: 0.6rem;
429
+ `),o$=c.div`
430
+ grid-area: inputs;
431
+ text-align: left;
432
+ `,ok=c.div`
433
+ grid-area: outputs;
434
+ text-align: right;
435
+ `,oP=c.div`
436
+ position: relative;
437
+ padding: 5px 10px;
438
+ `,oN={[ex.Audio]:"#4ade80",[ex.Gate]:"#c084fc",[ex.Number]:"#38bdf8",[ex.Any]:"#ffffff"},oz=i(c(_,{shouldForwardProp:e=>"portType"!==e})`
439
+ --port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return oN[e.portType];{let o=e.portType.map(e=>oN[e]);return`linear-gradient(0.25turn, ${o.join(", ")});`}}};
440
+ border-color: var(--port-color);
441
+ background: var(--port-color);
442
+ box-shadow: 0px 0px 0px 1px ${({theme:e})=>e.colors.elevation2} inset;
443
+ `),oj=i(c(oz)`
444
+ left: -3px;
445
+ `),oE=({...e})=>t(oj,{...e,type:"target",position:O.Left}),oF=i(c(oz)`
446
+ right: -3px;
447
+ `),oS=e=>t(oF,{...e,type:"source",position:O.Right}),oT=({className:e,...o})=>t(ox,{...o,className:[e,eg].join(" ")}),oD=e=>eC(o=>o.nodesConfiguration[e]),oM=e=>{let{id:o,children:n,selected:i,...l}=e,a=ek(),s=eC(({getNode:e})=>e),d=eC(e=>e.nodesConfiguration),[c,p]=h(!1),{info:g}=oD(e.type),u=m(()=>d[e.type].resizable??!1,[d,e.type]),{updateNodeLabel:f,updateNodeConfig:v}=oc(o),{data:y}=s(o)||{},b=od(o),{ConfigNode:w}=(e=>{let{configNode:o}=oD(e);return{ConfigNode:o}})(l.type),[x,C]=h(!1);if(!b)return t(of,{className:eg,children:"can't find audio node"});if(b.loading)return t(of,{className:eg,children:"loading"});if(b.error)return r(ov,{className:eg,children:["error: ",b.error.toString()]});if(!b.node)return t(of,{className:eg,children:"can't find audio node"});let $=y?.config?.size,{node:{inputs:k,outputs:P}}=b;return r(om,{children:[r(oT,{children:[g&&t(ob,{onClickCapture:()=>p(!0)}),t(oh,{value:y?.label??"No Name",onChange:f}),w&&t(oy,{onClickCapture:()=>C(e=>!e)})]}),r(oC,{theme:a,children:[t(o$,{children:k?Object.keys(k).map((e,o)=>r(oP,{children:[t(oE,{id:e,portType:k[e].type}),t("span",{children:e})]},o)):null}),t(ok,{children:P?Object.keys(P).map((e,o)=>r(oP,{children:[t(oS,{id:e,portType:P[e].type}),t("span",{children:e})]},o)):null})]}),w&&x&&i?t(w,{...e}):u?t(el,{size:$,minWidth:180,minHeight:30,enable:{bottom:!0,bottomRight:!0,right:!0},onResizeStop:(e,o,t,r)=>{let n=$?{width:$.width+r.width,height:$.height+r.height}:t.getBoundingClientRect();v({...y?.config,size:n})},children:n}):n,t(ou,{isOpen:c,type:e.type,onClose:()=>p(!1),node:b.node})]})},oA=c.div`
448
+ width: 100%;
449
+ padding: 0.4rem 0;
450
+ white-space: nowrap;
451
+ overflow: hidden;
452
+ text-overflow: ellipsis;
453
+ `,oO=c(oT)`
454
+ display: flex;
455
+ gap: 0.1rem;
456
+ padding: 0 0.4rem;
457
+ justify-content: start;
458
+ font-size: 0.6rem;
459
+ height: auto;
460
+ min-width: 0;
461
+ `,o_=c.div`
462
+ display: flex;
463
+ align-items: center;
464
+ height: 70%;
465
+ width: auto;
466
+ gap: 0.4rem;
467
+ `,oI=c.span`
468
+ width: auto;
469
+ height: 100%;
470
+ cursor: pointer;
471
+ svg {
472
+ width: auto;
473
+ height: 100%;
474
+ }
475
+ &:hover {
476
+ color: ${({theme:e})=>e.colors.highlight2};
477
+ cursor: pointer;
478
+ }
479
+ `,oL=c.div`
480
+ height: 100%;
481
+ display: grid;
482
+ grid-template-rows: auto 1fr;
483
+ `,oH=e=>{let{node:o}=e,r=eC(e=>e.getControlPanelNode),n=m(()=>r(o),[o]);return n?t(n,{...e}):null};var oR=e=>{let{node:o,showControls:n,onDelete:i}=e,l=ek(),{id:a}=o,{node:s}=od(a)||{},{updateNodeValues:d}=oc(a);return r(oL,{theme:l,children:[r(oO,{theme:l,children:[t(oA,{children:o.data.label}),n&&r(o_,{children:[t(oI,{theme:l,children:t(w,{className:"grid-item-handle"})}),t(oI,{theme:l,children:t(b,{onClick:()=>i(o)})})]})]}),t(oH,{node:o,audioNode:s,updateNodeValues:d})]})};let oW=c.div`
484
+ position: fixed;
485
+ z-index: 5;
486
+ box-shadow: 0px 1px 2px ${({theme:e})=>e.colors.elevation2};
487
+ left: 1rem;
488
+ top: 4rem;
489
+ width: 2rem;
490
+ height: 2rem;
491
+ border-radius: 50%;
492
+ overflow: hidden;
493
+ display: flex;
494
+ align-items: center;
495
+ justify-content: center;
496
+ background: ${({theme:e})=>e.colors.elevation1};
497
+ color: ${({theme:e})=>e.colors.highlight1};
498
+
499
+ :hover {
500
+ color: ${({theme:e})=>e.colors.highlight2};
501
+ cursor: pointer;
502
+ }
503
+ `,oB=c(o_)`
504
+ height: 80%;
505
+ `,oG=c(oI)`
506
+ font-size: 1rem;
507
+ display: flex;
508
+ align-items: center;
509
+ `,oV=c(oO)`
510
+ grid-template-columns: 1fr auto;
511
+ border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
512
+ font-size: 0.7rem;
513
+ `,oU=c(oA)`
514
+ text-align: center;
515
+ `,oJ=c.div`
516
+ height: 100%;
517
+ width: 100%;
518
+ padding: 0.3rem 0.4rem;
519
+ box-sizing: border-box;
520
+ `,oX=c.div`
521
+ height: auto;
522
+ padding: 0;
523
+ max-height: 95vh;
524
+ overflow-y: scroll;
525
+ border: 1px solid ${({theme:e})=>e.colors.elevation3};
526
+ `,oY=c.div`
527
+ padding: 1rem 0;
528
+ font-family: var(--leva-fonts-mono);
529
+ font-size: 0.8rem;
530
+ `,oq=c.div`
531
+ display: flex;
532
+ align-items: center;
533
+ gap: 0.5rem;
534
+ cursor: pointer;
535
+ color: ${({theme:e})=>e.colors.highlight1};
536
+ &:hover {
537
+ color: ${({theme:e})=>e.colors.highlight2};
538
+ }
539
+ `,oK=c.div`
540
+ position: absolute;
541
+ height: 1rem;
542
+ top: 0;
543
+ bottom: 0;
544
+ margin: auto;
545
+ left: 0.5rem;
546
+ border-right: 1px solid ${({theme:e})=>e.colors.whitePrimary};
547
+ `,oQ=c.div`
548
+ box-sizing: border-box;
549
+ overflow: hidden;
550
+ .react-resizable-handle:after {
551
+ border-color: ${({theme:e})=>e.colors.whitePrimary};
552
+ border-width: 1px;
553
+ }
554
+ `;var oZ=()=>{let e=ek(),o=v(null),i=eC(e=>e.nodes),{show:l,nodes:a,size:s}=eC(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=eC(e=>e.showControlPanel),u=eC(e=>e.hideControlPanel),f=eC(e=>e.setControlPanelNodes),y=eC(e=>e.setControlPanelSize),w=eC(e=>e.removeNodeFromControlPanel),[x,C]=h(!0),$=m(()=>{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?r(n,{children:[t(oW,{theme:e,ref:o,onClick:g,children:t(ec,{})}),r(ep,{open:l,onClose:u,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[r(oV,{theme:e,children:[t(oU,{children:"Control Panel"}),t(oB,{children:t(oG,{onClick:u,theme:e,children:t(b,{})})})]}),r(oJ,{children:[t(oY,{children:x?r(oq,{theme:e,onClick:()=>C(!1),children:[t(es,{}),"Unlock grid"]}):r(oq,{theme:e,onClick:()=>C(!0),children:[t(ed,{}),"Lock grid"]})}),t(el,{enable:{top:!1,right:!x,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:t(oK,{theme:e})},minWidth:120,size:{width:d,height:"auto"},onResizeStop:(e,o,t,r)=>{y({width:d+r.width,height:c+r.height})},children:t(oX,{theme:e,children:t(ea,{layout:$,className:"layout",cols:4,rowHeight:em,width:d,margin:[0,0],isResizable:!x,draggableHandle:".grid-item-handle",onLayoutChange:e=>{requestAnimationFrame(()=>{f(e.map(({i:e,w:o,h:t,x:r,y:n})=>({id:e,width:o,height:t,x:r,y:n})))})},children:p.map(o=>t(oQ,{theme:e,children:t(oR,{node:o,showControls:!x,onDelete:w})},o.id))})})})]})]})]}):null},o0={};o0="# Quick start\n\n## Add node\n - Mouse right click\n - Select **'Add Node'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Press `CMD+SHIFT+A`\n\n<br/>\n\n## Connect nodes\n - Mouse left click and hold on source port\n - Drop on target port\n\n<br/>\n\n## Delete Node or Connection\n - Mouse right click on node/connection\n - Select **'Delete Node'**/**'Delete Connection'** from context menu\n\n ### &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or\n\n - Mouse left click on node/connection, then press `Backspace`\n\n<br/>\n\n\n## Move node\n - Drag and Drop\n\n<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\n";let o1=i(c.div`
555
+ font-family: var(--leva-fonts-mono);
556
+ font-size: 0.7rem;
557
+ box-sizing: border-box;
558
+ height: 100%;
559
+ width: 100%;
560
+ overflow: scroll;
561
+ color: ${({theme:e})=>e.colors.whitePrimary};
562
+ padding: 0 0.5rem;
563
+
564
+ code {
565
+ color: ${({theme:e})=>e.colors.accent3};
566
+ filter: hue-rotate(180deg);
567
+ }
568
+ `),o2=i(c.div`
569
+ padding: 1rem;
570
+ height: 100%;
571
+ width: 100%;
572
+ box-sizing: border-box;
573
+ overflow: hidden;
574
+ `);var o3=()=>{var e;let o=eC(e=>e.isHelpShown),r=eC(e=>e.toggleHelp);return o?t(eT,{onClose:()=>{r()},children:t(o2,{children:t(o1,{dangerouslySetInnerHTML:{__html:eh((e=o0)&&e.__esModule?e.default:e)},onWheelCapture:e=>e.stopPropagation()})})}):null};let o8=()=>t(n,{children:t(I,{onClick:eC(e=>e.toggleHelp),children:t(et,{})})}),o9=c.div`
575
+ position: fixed;
576
+ z-index: ${({theme:e})=>e.zIndex.resumeContextLayout};
577
+ width: 100%;
578
+ height: 100%;
579
+ top: 0;
580
+ left: 0;
581
+ background: rgb(24 28 32 / 90%);
582
+ display: flex;
583
+ flex-wrap: wrap;
584
+ align-items: center;
585
+ justify-content: center;
586
+ color: ${({theme:e})=>e.colors.whitePrimary};
587
+ cursor: pointer;
588
+ `,o5=c.div`
589
+ display: flex;
590
+ width: 100%;
591
+ align-items: center;
592
+ justify-content: center;
593
+ `,o7=c.div`
594
+ font-family: var(--leva-fonts-mono);
595
+ font-size: 2rem;
596
+ `,o6=c(er)`
597
+ width: 7rem;
598
+ height: 7rem;
599
+ `;var o4=()=>{let e=ek(),o=eC(({patch:e})=>e).audioContext,[n,i]=h("running"===o.state);return n?null:r(o9,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[t(o5,{children:t(o7,{theme:e,children:"Click anywhere to resume audio context"})}),t(o5,{children:t(o6,{})})]})},te=()=>{let e=eC(({setConfig:e})=>e),{showMinimap:o}=eC(({config:e})=>e);return t(I,{onClick:()=>e({showMinimap:!o}),children:o?t(en,{}):t(ei,{})})},to=({id:e,sourceX:o,sourceY:i,targetX:l,targetY:a,sourcePosition:s,targetPosition:d,style:c={},data:p,markerStart:h,markerEnd:u,source:m,target:f,sourceHandleId:v,targetHandleId:y,selected:b})=>{let w=ek(),x=eC(({getNode:e})=>e),C=x(m),$=x(f),k=C?.selected||$?.selected;g(()=>{if(v&&y)return console.log(`connected ${m} to ${f}`),()=>{console.log(`disconnected ${m} from ${f}`)}},[m,v,f,y]);let[P]=L({targetX:l,targetY:a,targetPosition:d,sourceX:o,sourceY:i,sourcePosition:s});return r(n,{children:[t("path",{id:e,style:{...c,stroke:b?w.colors.accent2:k?w.colors.highlight3:w.colors.highlight2},className:"react-flow__edge-path Wire",d:P,markerEnd:u}),t("path",{style:{...c,strokeWidth:8,color:"transparent",opacity:0,cursor:"pointer"},d:P,markerEnd:u})]})};console.log(99999,`React version: ${u}`);let tt=(e,o)=>console.log("drag stop",o),tr=(e,o)=>console.log("click",o),tn=[20,20],ti=({editorState:e,plugins:o=[],editorContextMenu:n=[],onChange:i=()=>{},...l})=>{let a=m(()=>({wire:to}),[]),{nodes:s,edges:d,controlPanel:c,onNodesChange:p,onNodesDelete:u,onEdgesChange:v,onEdgesDelete:y,onConnect:b,setPlugins:w,setViewport:x,viewport:C}=eC(),$=eC(({config:e})=>e),P=eC(({nodeTypes:e})=>e);g(()=>{w(o)},[o]);let[N,z]=h(null);g(()=>{N&&i({nodes:s,edges:d,controlPanel:c,viewport:C})},[s,d,c,C]);let j=f(e=>{N||(z(e),console.log("flow loaded:",e))},[N]),{onContextMenu:M}=(()=>{let{show:e}=J({id:oi});return{onContextMenu:e}})(),{onContextMenu:A}=(()=>{let{show:e}=J({id:oa});return{onContextMenu:f((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:O}=(()=>{let{show:e}=J({id:ez});return{onContextMenu:f((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return g(()=>{C&&N?.setViewport(C)},[C,N]),E({onEnd:x}),r(k,{nodes:s,edges:d,onNodesChange:p,onNodesDelete:u,onEdgesChange:v,onConnect:b,onNodeDragStop:tt,onEdgesDelete:y,onInit:j,onNodeClick:tr,onContextMenu:M,onNodeContextMenu:A,onEdgeContextMenu:O,nodeTypes:P,edgeTypes:a,snapGrid:tn,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[t(F,{variant:S.Dots,gap:12}),$.showMinimap?t(T,{}):null,r(D,{style:{right:"1rem",left:"initial",bottom:"40%",top:"initial"},showInteractive:!1,children:[t(te,{}),t(o8,{})]}),t(o4,{}),t(oZ,{}),t(o3,{}),t(ol,{editorContextMenu:n}),t(os,{}),t(ej,{})]})},tl=e=>t(M,{children:t(ti,{...e})}),ta={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},ts=i(c.div`
600
+ display: flex;
601
+ flex-direction: column;
602
+ height: 100%;
603
+ width: 100%;
604
+ `),td=i(c.div`
605
+ position: fixed;
606
+ height: 100%;
607
+ width: 100%;
608
+ background: rgba(0, 0, 0, 0.7);
609
+ color: white;
610
+ display: flex;
611
+ justify-content: center;
612
+ align-items: center;
613
+ font-size: 2rem;
614
+ `),tc=i(c.div`
615
+ height: 100%;
616
+ width: 100%;
617
+ display: flex;
618
+ position: relative;
619
+ `),tp=i(c.div`
620
+ display: flex;
621
+ flex: 1;
622
+ align-items: center;
623
+ justify-content: center;
624
+ background: ${({theme:e})=>e.colors.elevation3};
625
+ `),th=i(c.div`
626
+ background: ${({theme:e})=>e.colors.elevation2};
627
+ opacity: 0.7;
628
+ position: absolute;
629
+ width: 100%;
630
+ height: 100%;
631
+ left: 0;
632
+ top: 0;
633
+ z-index: 1;
634
+ font-family: var(--leva-fonts-mono);
635
+ color: ${({theme:e})=>e.colors.whitePrimary};
636
+ display: ${({show:e})=>e?"flex":"none"};
637
+ align-items: center;
638
+ justify-content: center;
639
+ font-size: 6rem;
640
+ `),tg=e=>{let o=eC(e=>e.pullEditorChanges),i=eC(e=>e.currentFileIndex),[l,a]=h(!0);g(()=>{a(!0),setTimeout(()=>{a(!1)},1600)},[i]);let{file:s}=e;return s?"audio"===s.type?t(tp,{children:t("audio",{src:s.file,controls:!0})}):r(n,{children:[t(tl,{...e,onChange:e=>{o()},editorState:s.file||ta}),t(th,{show:l,children:"Loading..."})]}):null},tu=i(c.div`
641
+ height: 2rem;
642
+ display: flex;
643
+ align-items: center;
644
+ background: ${({theme:e})=>e.colors.elevation2};
645
+ `),tm=i(c.div`
646
+ display: flex;
647
+ align-items: center;
648
+ cursor: pointer;
649
+ height: 100%;
650
+ box-sizing: border-box;
651
+ padding: 0.3rem 0.4rem;
652
+
653
+ border-right: 1px solid ${({theme:e})=>e.colors.elevation1};
654
+
655
+ input {
656
+ color: ${({theme:e,active:o})=>o?e.colors.whitePrimary:e.colors.highlight1};
657
+
658
+ &:not([readonly]):focus {
659
+ background-color: ${({theme:e})=>e.colors.elevation1};
660
+ }
661
+ }
662
+ `),tf=i(c.div`
663
+ display: flex;
664
+ align-items: center;
665
+ height: 100%;
666
+ padding: 0 0.5rem;
667
+ cursor: pointer;
668
+
669
+ color: ${({theme:e})=>e.colors.highlight1};
670
+ &:hover {
671
+ color: ${({theme:e})=>e.colors.whitePrimary};
672
+ }
673
+ `),tv=i(c(y)`
674
+ height: 40%;
675
+ width: auto;
676
+ `),ty=i(c(b)`
677
+ height: 70%;
678
+ width: auto;
679
+ cursor: pointer;
680
+ color: ${({theme:e})=>e.colors.highlight1};
681
+ &:hover {
682
+ color: ${({theme:e})=>e.colors.whitePrimary};
683
+ }
684
+ `),tb=()=>({file:ta,name:"Unnamed",type:"patch",id:p()});var tw=({...e})=>{let{projectState:o,theme:n}=e,i=eC(e=>e.currentFileIndex),d=eC(e=>e.project.files[e.currentFileIndex]),c=eC(e=>e.setCurrentFileIndex),p=eC(e=>e.project),u=eC(e=>e.setProject),m=eC(e=>e.getProject),f=eC(e=>e.updateFileName),v=eC(e=>e.addFile),y=eC(e=>e.deleteFile),b=eC(e=>e.syncEditorWithCurrentFile),w=eC(e=>e.setEditorState);eC(e=>e.pullEditorChanges);let[x,C]=h(!1);return g(()=>{u(o||{files:[tb()]});let e=o?.files[0];e?.file&&e?.type!=="audio"&&w(e.file)},[o]),g(()=>($("project://*",async(...e)=>{let o=new Request(...e),t=m().files,r=o.url.replace("project://",""),n=t.find(({id:e})=>e===r);return n?ey(n)?new Response(JSON.stringify(n.file??null)):eb(n)?fetch(n.file):new Response(null):new Response(`File not found: ${o.url}`,{status:404})}),()=>{}),[m]),g(()=>{b()},[i,b]),r(l,{theme:n||e$,children:[t(a,{styles:s`
685
+ :root {
686
+ --leva-colors-elevation1: #292d39;
687
+ --leva-colors-elevation2: #181c20;
688
+ --leva-colors-elevation3: #373c4b;
689
+ --leva-colors-accent1: #0066dc;
690
+ --leva-colors-accent2: #007bff;
691
+ --leva-colors-accent3: #3c93ff;
692
+ --leva-colors-highlight1: #535760;
693
+ --leva-colors-highlight2: #8c92a4;
694
+ --leva-colors-highlight3: #fefefe;
695
+ --leva-colors-vivid1: #ffcc00;
696
+ --leva-colors-folderWidgetColor: var(--leva-colors-highlight2);
697
+ --leva-colors-folderTextColor: var(--leva-colors-highlight3);
698
+ --leva-colors-toolTipBackground: var(--leva-colors-highlight3);
699
+ --leva-colors-toolTipText: var(--leva-colors-elevation2);
700
+ --leva-radii-xs: 2px;
701
+ --leva-radii-sm: 3px;
702
+ --leva-radii-lg: 10px;
703
+ --leva-space-xs: 3px;
704
+ --leva-space-sm: 6px;
705
+ --leva-space-md: 10px;
706
+ --leva-space-rowGap: 7px;
707
+ --leva-space-colGap: 7px;
708
+ --leva-fonts-mono:
709
+ ui-monospace, SFMono-Regular, Menlo, "Roboto Mono", monospace;
710
+ --leva-fonts-sans: system-ui, sans-serif;
711
+ --leva-fontSizes-root: 11px;
712
+ --leva-fontSizes-toolTip: var(--leva-fontSizes-root);
713
+ --leva-sizes-rootWidth: 280px;
714
+ --leva-sizes-controlWidth: 160px;
715
+ --leva-sizes-numberInputMinWidth: 38px;
716
+ --leva-sizes-scrubberWidth: 8px;
717
+ --leva-sizes-scrubberHeight: 16px;
718
+ --leva-sizes-rowHeight: 24px;
719
+ --leva-sizes-folderTitleHeight: 20px;
720
+ --leva-sizes-checkboxSize: 16px;
721
+ --leva-sizes-joystickWidth: 100px;
722
+ --leva-sizes-joystickHeight: 100px;
723
+ --leva-sizes-colorPickerWidth: var(--leva-sizes-controlWidth);
724
+ --leva-sizes-colorPickerHeight: 100px;
725
+ --leva-sizes-imagePreviewWidth: var(--leva-sizes-controlWidth);
726
+ --leva-sizes-imagePreviewHeight: 100px;
727
+ --leva-sizes-monitorHeight: 60px;
728
+ --leva-sizes-titleBarHeight: 39px;
729
+ --leva-shadows-level1: 0 0 9px 0 #00000088;
730
+ --leva-shadows-level2: 0 4px 14px #00000033;
731
+ --leva-borderWidths-root: 0px;
732
+ --leva-borderWidths-input: 1px;
733
+ --leva-borderWidths-focus: 1px;
734
+ --leva-borderWidths-hover: 1px;
735
+ --leva-borderWidths-active: 1px;
736
+ --leva-borderWidths-folder: 1px;
737
+ --leva-fontWeights-label: normal;
738
+ --leva-fontWeights-folder: normal;
739
+ --leva-fontWeights-button: normal;
740
+ }
741
+ `}),r(ts,{onDragOver:e=>{e.preventDefault(),e.stopPropagation(),C(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),C(!1)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),C(!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;u(o),c(0),b();return}v({...tb(),file:{...o,controlPanel:{...ta.controlPanel,...o.controlPanel}},name:e.name},e.name);return}if(e.type.match(/^audio\//)){let o=await e4(e);v({type:"audio",id:`audio-file-${+new Date}`,name:e.name,file:o});return}console.error("Unsupported file type",e)})},children:[r(tu,{children:[p.files.map((e,o)=>r(tm,{onClick:()=>{c(o)},active:o===i,children:[t(oh,{onChange:e=>f(o,e),value:e.name||"Unnamed"}),t(ty,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&y(o)}})]},o)),t(tf,{onClick:()=>{v(tb()),c(p.files.length)},children:t(tv,{})})]}),t(tc,{children:t(tg,{file:d,...e})}),x&&t(td,{children:"Drop file(s) to upload to the project"})]})]})};export{tw as Editor,ta as EDITOR_DEFAULTS,to as Wire,oM as WNNode,oT as TitleBar,oC as PortsPanel,ok as OutputPorts,oS as OutputHandle,o$ as InputPorts,oE as InputHandle,oP as Port,eT as Modal,oh as EditableLabel,od as useAudioNode,oc as useNode,ek as useTheme,eC as useStore,e$ as theme,eb as isAudio,ey as isPatch,ex as PortType};
742
+ //# sourceMappingURL=module.js.map