@web-noise/core 0.0.11 → 0.0.12-fix

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 DELETED
@@ -1,742 +0,0 @@
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,useMemo as u,useCallback as m,useRef as f}from"react";import{FaPlus as v}from"react-icons/fa6";import{MdClose as y,MdDragHandle as b,MdSettings as w,MdInfoOutline as x}from"react-icons/md";import{registerFetcher as C}from"@web-noise/fetch";import $,{getConnectedEdges as k,addEdge as P,applyNodeChanges as N,applyEdgeChanges as z,useOnViewportChange as j,Background as E,BackgroundVariant as F,MiniMap as S,Controls as T,ReactFlowProvider as D,useReactFlow as M,Position as A,Handle as O,ControlButton as _,getBezierPath as I}from"reactflow";import{create as L}from"zustand";import{setAudioNodeTypes as H,createPatch as R}from"@web-noise/patch";import{reverse as W,patch as B,create as G}from"jsondiffpatch";import{injectGlobal as V}from"@emotion/css";import"reactflow/dist/style.css";import{useContextMenu as U,Item as J,Menu as X,Separator as Y}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import q from"js-file-download";import K from"hotkeys-js";import{createPortal as Q}from"react-dom";import{FileDrop as Z}from"react-file-drop";import{FaFileUpload as ee,FaQuestion as eo,FaVolumeOff as et,FaMap as er,FaRegMap as en}from"react-icons/fa";import{Resizable as ei}from"re-resizable";import el from"react-grid-layout";import"react-grid-layout/css/styles.css";import{AiFillLock as ea,AiFillUnlock as es}from"react-icons/ai";import{RxDashboard as ed}from"react-icons/rx";import ec from"react-modern-drawer";import"react-modern-drawer/dist/index.css";import{marked as ep}from"marked";let eh="web-noise-drag-handle",eg=`.${eh}`,eu=10;(eb=ew||(ew={})).Gate="gate",eb.Number="number",eb.Audio="audio",eb.Any="any";let em=e=>JSON.parse(JSON.stringify(e)),ef=(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))}},ev=e=>!("type"in e)||"patch"===e.type,ey=e=>"audio"===e.type;var eb,ew,ex=L((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:N(o,e).map(e=>({dragHandle:eg,...e}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:z(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:P(o,e)}))},addNode:o=>{e(({nodes:e})=>({nodes:e.concat(o)}))},setNodes:o=>{e({nodes:o})},setEdges:o=>{e({edges:o})},setNodesAndEdges:({nodes:o,edges:t})=>{e({nodes:o,edges:t})},getNodesAndEdges:()=>{let{nodes:e,edges:t}=o();return{nodes:e,edges:t}},clearElements:()=>{e({nodes:[],edges:[]})},getNode:e=>{let{nodes:t}=o();return t.find(o=>o.id===e)||null},updateNodeData:(o,t)=>{e(({nodes:e})=>({nodes:e.map(e=>e.id===o?{...e,data:{...e.data,...t}}:e)}))},nodeTypes:{},setNodeTypes:o=>e({nodeTypes:o})}))(...e),...((e,o)=>({history:{maxHistoryLength:5,buffer:[],pointer:0,skipCollect:!1,push:t=>{let{history:r}=o(),{maxHistoryLength:n,skipCollect:i}=r;if(i)return void e({history:{...r,skipCollect:!1}});e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:r}=e,i=o.slice(Math.max(r-n+1,0),r);return{history:{...e,buffer:[...i,t],pointer:Math.min(r+1,n)}}})},back:()=>{let{nodes:t,edges:r,controlPanel:n,history:i}=o(),{buffer:l,pointer:a}=i,s=l[a-1];if(!s)return;let d=W(s);d&&e({...B(em({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({...B(em({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:R(),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];ey(i)||r(t,{...i,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:r}=o(),n=r.files[e];if("audio"===n.type)return void console.log("audio file. skipping");t(n.file)},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:n}=o();e({project:{...n,files:n.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),n=[...r.files,t];e({project:{...r,files:n}})},deleteFile:t=>{let{project:r,currentFileIndex:n}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=n&&e({currentFileIndex:n-1})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:n,createEdges:i,setNodesAndEdges:l,nodes:a,edges: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(k(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(P(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}),{});H(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=(e=>{let o=+new Date+Math.floor(1e3*Math.random());return e?.type?`${e.type}-${o}`:o.toString()})(o);return{nodes:[...e.nodes,{...o,id:t,position:{x:o.position.x-h,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:t}}},{nodes:[],mapping:{}});i(u);let f=c.map(e=>{let o=m[e.source]||e.source,t=m[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...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/eu}:{}};o(({controlPanel:e})=>({controlPanel:{...e,nodes:[...e.nodes,l]}}))},removeNodeFromControlPanel:e=>t().removeNodesFromControlPanel([e]),removeNodesFromControlPanel:e=>{let t=e.map(({id:e})=>e);o(({controlPanel:e})=>{let o=e.nodes.filter(({id:e})=>!t.includes(e));return{controlPanel:{...e,nodes:o}}})},setControlPanelNodes:e=>{o(({controlPanel:o})=>({controlPanel:{...o,nodes:e}}))},setControlPanelSize:e=>{o(({controlPanel:o})=>({controlPanel:{...o,size:e}}))},viewport:{x:0,y:0,zoom:1},setViewport:e=>o({viewport:e})}},o=(o,t,r)=>{let n=((e,o)=>{let t,r=G({propertyFilter:(e,o)=>!!(o.parent?.parent?.childName==="controlPanel"||["data","position","controlPanel"].includes(o.parent?.childName))||["controlPanel","size","edges","nodes","data","label","config","values","position","x","y"].includes(e)}),n=o();return(e,i)=>{e.currentFileIndex!==i.currentFileIndex&&o().history.clear(),clearTimeout(t),n||(n=i),t=setTimeout(()=>{let t=r.diff(n,e);n=null,t&&o().history.push(t)},500)}})(0,t);return r.subscribe(n),e((...e)=>o(...e),t,r)},(e,t,r)=>{r.subscribe(async(e,o)=>{});let n=new Set,i={...t(),nodes:[],edges:[]};return o(async(...o)=>{let r=t(),[l]=o,a={...i,..."function"==typeof l?l({...i}):l},s=ef(i.nodes,a.nodes),d=ef(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)})),eC={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
- .react-flow {
3
- .react-flow__pane {
4
- /* background: rgb(106 106 106); */
5
- /* background: "white"; */
6
- // background: #292d39;
7
- background: ${eC.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: ${eC.colors.accent2};
29
- }
30
-
31
- .react-flow__node.selected {
32
- border: 1px solid ${eC.colors.accent2};
33
- box-shadow: 0 0 0 0.5px #${eC.colors.accent2};
34
- }
35
-
36
- .react-flow__node-default.selected, .react-flow__node-default.selected:hover {
37
- box-shadow: 0 0 0 0.5px #${eC.colors.accent2};
38
- }
39
-
40
- /* .react-flow__minimap-mask {
41
- fill: ${eC.colors.elevation1}
42
- }
43
-
44
- .react-flow__minimap-node {
45
- fill:${eC.colors.accent2}
46
- } */
47
- }
48
-
49
- `;var e$=()=>d();let ek=c(J)``,eP=c(X)`
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
- `,eN="editor-edge-menu";var ez=()=>{let e=e$(),o=ex(e=>e.removeEdges);return t(n,{children:t(eP,{id:eN,animation:!1,colors:e.colors,children:t(ek,{onClick:e=>o([e.props.edge]),children:"Delete Edge (DEL)"})})})};let ej=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
- `,eE=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
- `,eF=c(y)`
82
- position: absolute;
83
- top: 0.2rem;
84
- right: 0.2rem;
85
- cursor: pointer;
86
- `;var eS=({children:e,onClose:o,...n})=>{let i=e$();return g(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),Q(t(ej,{theme:i,onClick:o,children:r(eE,{...n,onClick:e=>{e.stopPropagation()},theme:i,children:[e,t(eF,{theme:i,onClick:o})]})}),document.body)};let eT=i(c.div`
87
- width: 100%;
88
- `),eD=i(c.div`
89
- padding: 1rem;
90
- display: flex;
91
- flex-direction: column;
92
- gap: 1rem;
93
- `),eM=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
- `),eA=i(c.div`
115
- white-space: nowrap;
116
- overflow: hidden;
117
- text-overflow: ellipsis;
118
- `),eO=i(c.div`
119
- color: ${({theme:e})=>e.colors.highlight2};
120
- font-size: 12px;
121
- `),e_=i(c.div`
122
- display: flex;
123
- gap: 0.2rem;
124
- flex-wrap: wrap;
125
- `),eI=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
- `),eL=i(c.div``),eH=i(c.div`
137
- font-size: 1.1rem;
138
- padding: 0.25rem 0;
139
- color: ${({theme:e})=>e.colors.highlight3};
140
- `),eR=i(c.div`
141
- color: ${({theme:e})=>e.colors.highlight2};
142
- font-size: 12px;
143
- `);var eW=({onComponentClick:e,filters:{plugin:o,search:n="",tags:i},onTagClick:l})=>{let a=ex(({plugins:e})=>e),s=u(()=>o?a.filter(({name:e})=>e===o):a,[a,o]);return t(eT,{children:u(()=>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(eD,{children:[r(eL,{children:[t(eH,{children:o}),t(eR,{children:n})]}),t(eM,{children:a.sort((e,o)=>e.type.toLowerCase()>o.type.toLowerCase()?1:-1).map((o,n)=>r("li",{onClick:()=>e(o),children:[t(eA,{children:o.name||o.type}),o.description&&t(eO,{children:o.description}),t(e_,{children:o.tags?.map((e,o)=>t(eI,{isActive:i?.includes(e),onClickCapture:o=>{o.stopPropagation(),l(e)},children:e},o))})]},n))})]},s):null)})};let eB=c.div`
144
- display: flex;
145
- position: relative;
146
- `,eG=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
- `,eV=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
- `,eU=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
- `,eJ=i(c(eI)`
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 eX=({onChange:e,value:o})=>{let n=e$(),i=ex(({plugins:e})=>e),l=f(null);return g(()=>{l.current&&l.current.focus()},[l]),r(eV,{theme:n,children:[t(eB,{children:t(eG,{ref:l,theme:n,value:o.search||"",placeholder:"search...",onChange:t=>e({...o,search:t.target.value})})}),t(e_,{children:o.tags?.map((r,n)=>t(eJ,{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(eU,{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 eY=c.div`
206
- height: 100%;
207
- width: 100%;
208
- display: flex;
209
- gap: 1rem;
210
- `,eq=c.div`
211
- flex-grow: 1;
212
- height: 100%;
213
- overflow-y: scroll;
214
- `;var eK=({isOpen:e,closeMenu:o,mousePosition:n})=>{let i=e$(),{screenToFlowPosition:l}=M(),{createNode:a}=ex(({createNode:e})=>({createNode:e})),[s,d]=h({}),c=m(({type:e})=>{let{x:t,y:r}=l(n);a({id:`${e}-${+new Date}`,type:e,data:{label:e},position:{x:t,y:r},targetPosition:A.Left,sourcePosition:A.Right}),o()},[n,l,a,o,n]);return e?t(eS,{onClose:()=>{o(),d({})},children:r(eY,{theme:i,children:[t(eX,{onChange:d,value:s}),t(eq,{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=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
- `,eZ=c.div`
241
- display: flex;
242
- flex-wrap: wrap;
243
- align-items: center;
244
- justify-content: center;
245
- height: 100%;
246
- width: 100%;
247
- `,e0=c(ee)`
248
- width: 100%;
249
- height: 8rem;
250
- `,e1=c.div`
251
- font-size: 2rem;
252
- `;var e2=({isOpen:e,closeMenu:o})=>{let n=e$(),i=ex(({setGraph:e})=>e),l=ex(e=>e.setEditorState),a=f(null),s=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{l(e),o()}).catch(console.error)},[i,o]);return e?t(eS,{onClose:o,children:r(eQ,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>s(e),ref:a,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(Z,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{a.current?.click()},onDrop:e=>s(e),children:r(eZ,{theme:n,children:[t(e0,{}),t(e1,{children:"click or drop file here"})]})})]})}):null};let e3=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
- `,e8=c.div`
279
- display: flex;
280
- flex-wrap: wrap;
281
- align-items: center;
282
- justify-content: center;
283
- height: 100%;
284
- width: 100%;
285
- `,e9=c(ee)`
286
- width: 100%;
287
- height: 8rem;
288
- `,e5=c.div`
289
- font-size: 2rem;
290
- `;var e7=({isOpen:e,closeMenu:o})=>{let n=e$(),i=ex(e=>e.setProject),l=f(null),a=m(e=>{let[t]=e||[];t.text().then(JSON.parse).then(e=>{i(e),o()}).catch(console.error)},[i,o]);return e?t(eS,{onClose:o,children:r(e3,{theme:n,children:[t("input",{onChange:({target:{files:e}})=>a(e),ref:l,type:"file",className:"hidden",style:{display:"none"},accept:".json"}),t(Z,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:r(e8,{theme:n,children:[t(e9,{}),t(e5,{children:"click or drop file here"})]})})]})}):null};let e6=e=>new Promise((o,t)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>o(r.result?.toString()||""),r.onerror=e=>t(e)}),e4=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
- `,oe=c.div`
317
- display: flex;
318
- flex-wrap: wrap;
319
- align-items: center;
320
- justify-content: center;
321
- height: 100%;
322
- width: 100%;
323
- `,oo=c(ee)`
324
- width: 100%;
325
- height: 8rem;
326
- `,ot=c.div`
327
- font-size: 2rem;
328
- `;var or=({isOpen:e,closeMenu:o})=>{let n=e$();ex(({setGraph:e})=>e),ex(e=>e.setEditorState);let i=ex(e=>e.addFile),l=f(null),a=m(async e=>{let[t]=e||[],r=await e6(t);i({type:"audio",id:`audio-file-${+new Date}`,name:t.name,file:r}),o()},[i,o]);return e?t(eS,{onClose:o,children:r(e4,{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(Z,{className:"drop-zone-wrapper",targetClassName:"drop-zone",draggingOverTargetClassName:"drop-zone-drag-over",onTargetClick:()=>{l.current?.click()},onDrop:e=>a(e),children:r(oe,{theme:n,children:[t(oo,{}),t(ot,{children:"click or drop file here"})]})})]})}):null};let on="editor-menu";var oi=({editorContextMenu:e=[]})=>{let o=e$(),[i,l]=h({x:0,y:0}),[a,s]=h(!1),[d,c]=h(!1),[p,f]=h(!1),[v,y]=h(!1),b=m((e,o)=>{l({x:e,y:o}),s(!0)},[s]),w=ex(e=>e.pasteBuffer),{screenToFlowPosition:x}=M(),C=m(e=>{let{x:o,y:t}=x(e);w(o,t)},[s,x]),$=ex(({clearGraph:e})=>e),k=ex(e=>e.getEditorState),P=ex(e=>e.getProject),N=m(()=>{$()},[$]),z=ex(e=>e.toggleHelp),j=ex(e=>e.history.back),E=ex(e=>e.history.forward),F=ex(e=>e.history.pointer),S=ex(e=>e.history.buffer),T=ex(e=>e.copySelectedItems),D=ex(e=>e.nodes),A=u(()=>D.filter(({selected:e})=>e),[D]),O=ex(e=>e.copyBuffer),_=M(),I=m(()=>{q(JSON.stringify({...k()},null,2),"web-noise-patch.json")},[k,_]),L=m(()=>{q(JSON.stringify({...P()},null,2),"web-noise-project.json")},[k,_]);return g(()=>(K("command+shift+a",()=>(b(200,50),!1)),K("shift+/",()=>(z(),!1)),K("command+z",()=>(j(),!1)),K("command+shift+z",()=>(E(),!1)),K("command+c",()=>(T(),!1)),K("command+v",()=>(C({x:200,y:50}),!1)),()=>{K.unbind()}),[b,C]),r(n,{children:[t(eK,{isOpen:a,closeMenu:()=>s(!1),mousePosition:i}),t(e2,{isOpen:d,closeMenu:()=>c(!1)}),t(e7,{isOpen:p,closeMenu:()=>f(!1)}),t(or,{isOpen:v,closeMenu:()=>y(!1)}),r(eP,{id:on,animation:!1,colors:o.colors,children:[t(ek,{onClick:({triggerEvent:{clientX:e,clientY:o}})=>b(e,o),children:"Add Node (⌘+⇧+A)"}),t(Y,{}),t(ek,{onClick:N,children:"Delete All"}),t(Y,{}),t(ek,{onClick:I,children:"Download patch"}),t(ek,{onClick:()=>c(!0),children:"Upload patch"}),t(Y,{}),t(ek,{onClick:L,children:"Download project"}),t(ek,{onClick:()=>f(!0),children:"Upload project"}),t(Y,{}),t(ek,{onClick:()=>y(!0),children:"Upload Audio File"}),t(Y,{}),t(ek,{disabled:0===F,onClick:j,children:"Undo (⌘+z)"}),t(ek,{disabled:F===S.length,onClick:E,children:"Redo (⌘+⇧+Z)"}),t(Y,{}),t(ek,{disabled:!A.length,onClick:T,children:"Copy Selected (⌘+c)"}),t(ek,{disabled:!O.nodes.length,onClick:({triggerEvent:{clientX:e,clientY:o}})=>C({x:e,y:o}),children:"Paste (⌘+v)"}),t(Y,{}),e.map((e,o)=>t(ek,{children:e},o)),t(Y,{}),t(ek,{onClick:z,children:"Help (⇧+?)"})]})]})};let ol="editor-node-menu";var oa=e=>{let o=e$(),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=m(({props:e})=>!!e?.node.type&&!!c.find(({id:o})=>o===e.node.id),[c]),h=m(({props:e})=>{if(!e?.node.type)return!1;let o=d[e.node.type];return!!o?.controlPanelNode},[d]);return t(n,{children:r(eP,{id:ol,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)"})]})})},os=e=>ex(({patch:e})=>e).audioNodes.get(e),od=e=>{let o=ex(({updateNodeData:e})=>e),t=m(t=>o(e,{values:t}),[e,o]);return{updateNodeValues:t,updateNodeConfig:m(t=>o(e,{config:t}),[e,o]),updateNodeLabel:m(t=>o(e,{label:t}),[e,o])}};let oc=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 op=({onChange:e,value:o="",className:r})=>{let n=f(null),[i,l]=h(!1),a=m(e=>{e.target?.select(),l(!0)},[l]),s=m(()=>{window.getSelection()?.collapseToEnd(),l(!1)},[l]),d=m(()=>{s(),n.current&&e(n.current.value)},[n,s,e]),c=m(()=>{s(),n.current&&o&&(n.current.value=o)},[n,s,o]);return g(()=>{n.current&&(n.current.value=o)},[o,n]),t(oc,{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 oh=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 og=({isOpen:e,onClose:o,type:r,node:n})=>{let{info:i,portsDescription:l}=ex(e=>e.nodesConfiguration[r]),a=u(()=>{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(eS,{onClose:o,children:t(oh,{dangerouslySetInnerHTML:{__html:ep((i||"")+"\n\n"+a||"")}})}):null};let ou=c.div`
386
- background-color: var(--leva-colors-elevation1);
387
- `,om=c(ou)`
388
- padding: 2rem 5rem;
389
- `,of=c(ou)`
390
- padding: 1rem 2rem;
391
- `,ov=c(w)`
392
- font-size: 1.2rem;
393
- opacity: 0.4;
394
- width: 1rem;
395
- &:hover {
396
- opacity: 1;
397
- cursor: pointer;
398
- }
399
- `,oy=c(x)`
400
- font-size: 1.2rem;
401
- opacity: 0.4;
402
- width: 1rem;
403
- &:hover {
404
- opacity: 1;
405
- cursor: pointer;
406
- }
407
- `,ob=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
- `,ow=c(ob)`
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
- `,ox=c(ob)(({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
- `),oC=c.div`
430
- grid-area: inputs;
431
- text-align: left;
432
- `,o$=c.div`
433
- grid-area: outputs;
434
- text-align: right;
435
- `,ok=c.div`
436
- position: relative;
437
- padding: 5px 10px;
438
- `,oP={[ew.Audio]:"#4ade80",[ew.Gate]:"#c084fc",[ew.Number]:"#38bdf8",[ew.Any]:"#ffffff"},oN=i(c(O,{shouldForwardProp:e=>"portType"!==e})`
439
- --port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return oP[e.portType];{let o=e.portType.map(e=>oP[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
- `),oz=i(c(oN)`
444
- left: -3px;
445
- `),oj=({...e})=>t(oz,{...e,type:"target",position:A.Left}),oE=i(c(oN)`
446
- right: -3px;
447
- `),oF=e=>t(oE,{...e,type:"source",position:A.Right}),oS=({className:e,...o})=>t(ow,{...o,className:[e,eh].join(" ")}),oT=e=>ex(o=>o.nodesConfiguration[e]),oD=e=>{let{id:o,children:n,selected:i,...l}=e,a=e$(),s=ex(({getNode:e})=>e),d=ex(e=>e.nodesConfiguration),[c,p]=h(!1),{info:g}=oT(e.type),m=u(()=>d[e.type].resizable??!1,[d,e.type]),{updateNodeLabel:f,updateNodeConfig:v}=od(o),{data:y}=s(o)||{},b=os(o),{ConfigNode:w}=(e=>{let{configNode:o}=oT(e);return{ConfigNode:o}})(l.type),[x,C]=h(!1);if(!b)return t(om,{className:eh,children:"can't find audio node"});if(b.loading)return t(om,{className:eh,children:"loading"});if(b.error)return r(of,{className:eh,children:["error: ",b.error.toString()]});if(!b.node)return t(om,{className:eh,children:"can't find audio node"});let $=y?.config?.size,{node:{inputs:k,outputs:P}}=b;return r(ou,{children:[r(oS,{children:[g&&t(oy,{onClickCapture:()=>p(!0)}),t(op,{value:y?.label??"No Name",onChange:f}),w&&t(ov,{onClickCapture:()=>C(e=>!e)})]}),r(ox,{theme:a,children:[t(oC,{children:k?Object.keys(k).map((e,o)=>r(ok,{children:[t(oj,{id:e,portType:k[e].type}),t("span",{children:e})]},o)):null}),t(o$,{children:P?Object.keys(P).map((e,o)=>r(ok,{children:[t(oF,{id:e,portType:P[e].type}),t("span",{children:e})]},o)):null})]}),w&&x&&i?t(w,{...e}):m?t(ei,{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(og,{isOpen:c,type:e.type,onClose:()=>p(!1),node:b.node})]})},oM=c.div`
448
- width: 100%;
449
- padding: 0.4rem 0;
450
- white-space: nowrap;
451
- overflow: hidden;
452
- text-overflow: ellipsis;
453
- `,oA=c(oS)`
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
- `,oO=c.div`
462
- display: flex;
463
- align-items: center;
464
- height: 70%;
465
- width: auto;
466
- gap: 0.4rem;
467
- `,o_=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
- `,oI=c.div`
480
- height: 100%;
481
- display: grid;
482
- grid-template-rows: auto 1fr;
483
- `,oL=e=>{let{node:o}=e,r=ex(e=>e.getControlPanelNode),n=u(()=>r(o),[o]);return n?t(n,{...e}):null};var oH=e=>{let{node:o,showControls:n,onDelete:i}=e,l=e$(),{id:a}=o,{node:s}=os(a)||{},{updateNodeValues:d}=od(a);return r(oI,{theme:l,children:[r(oA,{theme:l,children:[t(oM,{children:o.data.label}),n&&r(oO,{children:[t(o_,{theme:l,children:t(b,{className:"grid-item-handle"})}),t(o_,{theme:l,children:t(y,{onClick:()=>i(o)})})]})]}),t(oL,{node:o,audioNode:s,updateNodeValues:d})]})};let oR=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
- `,oW=c(oO)`
504
- height: 80%;
505
- `,oB=c(o_)`
506
- font-size: 1rem;
507
- display: flex;
508
- align-items: center;
509
- `,oG=c(oA)`
510
- grid-template-columns: 1fr auto;
511
- border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
512
- font-size: 0.7rem;
513
- `,oV=c(oM)`
514
- text-align: center;
515
- `,oU=c.div`
516
- height: 100%;
517
- width: 100%;
518
- padding: 0.3rem 0.4rem;
519
- box-sizing: border-box;
520
- `,oJ=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
- `,oX=c.div`
527
- padding: 1rem 0;
528
- font-family: var(--leva-fonts-mono);
529
- font-size: 0.8rem;
530
- `,oY=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
- `,oq=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
- `,oK=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 oQ=()=>{let e=e$(),o=f(null),i=ex(e=>e.nodes),{show:l,nodes:a,size:s}=ex(e=>e.controlPanel),{width:d=200,height:c}=s,p=u(()=>{let e=a.map(({id:e})=>e);return i.filter(({id:o})=>e.includes(o))},[i,a]),g=ex(e=>e.showControlPanel),m=ex(e=>e.hideControlPanel),v=ex(e=>e.setControlPanelNodes),b=ex(e=>e.setControlPanelSize),w=ex(e=>e.removeNodeFromControlPanel),[x,C]=h(!0),$=u(()=>{let e=a.reduce((e,{height:o=eu,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(oR,{theme:e,ref:o,onClick:g,children:t(ed,{})}),r(ec,{open:l,onClose:m,direction:"left",className:"",size:"auto",enableOverlay:!1,style:{background:e.colors.elevation1,position:"absolute"},children:[r(oG,{theme:e,children:[t(oV,{children:"Control Panel"}),t(oW,{children:t(oB,{onClick:m,theme:e,children:t(y,{})})})]}),r(oU,{children:[t(oX,{children:x?r(oY,{theme:e,onClick:()=>C(!1),children:[t(ea,{}),"Unlock grid"]}):r(oY,{theme:e,onClick:()=>C(!0),children:[t(es,{}),"Lock grid"]})}),t(ei,{enable:{top:!1,right:!x,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},handleComponent:{right:t(oq,{theme:e})},minWidth:120,size:{width:d,height:"auto"},onResizeStop:(e,o,t,r)=>{b({width:d+r.width,height:c+r.height})},children:t(oJ,{theme:e,children:t(el,{layout:$,className:"layout",cols:4,rowHeight:eu,width:d,margin:[0,0],isResizable:!x,draggableHandle:".grid-item-handle",onLayoutChange:e=>{requestAnimationFrame(()=>{v(e.map(({i:e,w:o,h:t,x:r,y:n})=>({id:e,width:o,height:t,x:r,y:n})))})},children:p.map(o=>t(oK,{theme:e,children:t(oH,{node:o,showControls:!x,onDelete:w})},o.id))})})})]})]})]}):null},oZ={};oZ="# 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 o0=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
- `),o1=i(c.div`
569
- padding: 1rem;
570
- height: 100%;
571
- width: 100%;
572
- box-sizing: border-box;
573
- overflow: hidden;
574
- `);var o2=()=>{var e;let o=ex(e=>e.isHelpShown),r=ex(e=>e.toggleHelp);return o?t(eS,{onClose:()=>{r()},children:t(o1,{children:t(o0,{dangerouslySetInnerHTML:{__html:ep((e=oZ)&&e.__esModule?e.default:e)},onWheelCapture:e=>e.stopPropagation()})})}):null};let o3=()=>t(n,{children:t(_,{onClick:ex(e=>e.toggleHelp),children:t(eo,{})})}),o8=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
- `,o9=c.div`
589
- display: flex;
590
- width: 100%;
591
- align-items: center;
592
- justify-content: center;
593
- `,o5=c.div`
594
- font-family: var(--leva-fonts-mono);
595
- font-size: 2rem;
596
- `,o7=c(et)`
597
- width: 7rem;
598
- height: 7rem;
599
- `;var o6=()=>{let e=e$(),o=ex(({patch:e})=>e).audioContext,[n,i]=h("running"===o.state);return n?null:r(o8,{theme:e,onClick:()=>{o.resume(),i(!0)},children:[t(o9,{children:t(o5,{theme:e,children:"Click anywhere to resume audio context"})}),t(o9,{children:t(o7,{})})]})},o4=()=>{let e=ex(({setConfig:e})=>e),{showMinimap:o}=ex(({config:e})=>e);return t(_,{onClick:()=>e({showMinimap:!o}),children:o?t(er,{}):t(en,{})})},te=({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=e$(),x=ex(({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]=I({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})]})};let to=(e,o)=>console.log("drag stop",o),tt=(e,o)=>console.log("click",o),tr=[20,20],tn=({editorState:e,plugins:o=[],editorContextMenu:n=[],onChange:i=()=>{},...l})=>{let a=u(()=>({wire:te}),[]),{nodes:s,edges:d,controlPanel:c,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onEdgesDelete:y,onConnect:b,setPlugins:w,setViewport:x,viewport:C}=ex(),k=ex(({config:e})=>e),P=ex(({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 D=m(e=>{N||(z(e),console.log("flow loaded:",e))},[N]),{onContextMenu:M}=(()=>{let{show:e}=U({id:on});return{onContextMenu:e}})(),{onContextMenu:A}=(()=>{let{show:e}=U({id:ol});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{node:t}})},[])}})(),{onContextMenu:O}=(()=>{let{show:e}=U({id:eN});return{onContextMenu:m((o,t)=>{o.stopPropagation(),e(o,{props:{edge:t}})},[e])}})();return g(()=>{C&&N?.setViewport(C)},[C,N]),j({onEnd:x}),r($,{nodes:s,edges:d,onNodesChange:p,onNodesDelete:f,onEdgesChange:v,onConnect:b,onNodeDragStop:to,onEdgesDelete:y,onInit:D,onNodeClick:tt,onContextMenu:M,onNodeContextMenu:A,onEdgeContextMenu:O,nodeTypes:P,edgeTypes:a,snapGrid:tr,defaultViewport:e?.viewport,defaultEdgeOptions:{type:"wire"},snapToGrid:!0,fitView:!0,disableKeyboardA11y:!0,children:[t(E,{variant:F.Dots,gap:12}),k.showMinimap?t(S,{}):null,r(T,{style:{right:"1rem",left:"initial",bottom:"40%",top:"initial"},showInteractive:!1,children:[t(o4,{}),t(o3,{})]}),t(o6,{}),t(oQ,{}),t(o2,{}),t(oi,{editorContextMenu:n}),t(oa,{}),t(ez,{})]})},ti=e=>t(D,{children:t(tn,{...e})}),tl={nodes:[],edges:[],controlPanel:{nodes:[],show:!1,size:{width:200,height:100}},viewport:{x:0,y:0,zoom:1.5}},ta=i(c.div`
600
- display: flex;
601
- flex-direction: column;
602
- height: 100%;
603
- width: 100%;
604
- `),ts=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
- `),td=i(c.div`
615
- height: 100%;
616
- width: 100%;
617
- display: flex;
618
- position: relative;
619
- `),tc=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
- `),tp=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
- `),th=e=>{let o=ex(e=>e.pullEditorChanges),i=ex(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(tc,{children:t("audio",{src:s.file,controls:!0})}):r(n,{children:[t(ti,{...e,onChange:e=>{o()},editorState:s.file||tl}),t(tp,{show:l,children:"Loading..."})]}):null},tg=i(c.div`
641
- height: 2rem;
642
- display: flex;
643
- align-items: center;
644
- background: ${({theme:e})=>e.colors.elevation2};
645
- `),tu=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
- `),tm=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
- `),tf=i(c(v)`
674
- height: 40%;
675
- width: auto;
676
- `),tv=i(c(y)`
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
- `),ty=()=>({file:tl,name:"Unnamed",type:"patch",id:p()});var tb=({...e})=>{let{projectState:o,theme:n}=e,i=ex(e=>e.currentFileIndex),d=ex(e=>e.project.files[e.currentFileIndex]),c=ex(e=>e.setCurrentFileIndex),p=ex(e=>e.project),u=ex(e=>e.setProject),m=ex(e=>e.getProject),f=ex(e=>e.updateFileName),v=ex(e=>e.addFile),y=ex(e=>e.deleteFile),b=ex(e=>e.syncEditorWithCurrentFile),w=ex(e=>e.setEditorState);ex(e=>e.pullEditorChanges);let[x,$]=h(!1);return g(()=>{u(o||{files:[ty()]});let e=o?.files[0];e?.file&&e?.type!=="audio"&&w(e.file)},[o]),g(()=>(C("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?ev(n)?new Response(JSON.stringify(n.file??null)):ey(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||eC,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(ta,{onDragOver:e=>{e.preventDefault(),e.stopPropagation(),$(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),$(!1)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),$(!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({...ty(),file:{...o,controlPanel:{...tl.controlPanel,...o.controlPanel}},name:e.name},e.name);return}if(e.type.match(/^audio\//)){let o=await e6(e);v({type:"audio",id:`audio-file-${+new Date}`,name:e.name,file:o});return}console.error("Unsupported file type",e)})},children:[r(tg,{children:[p.files.map((e,o)=>r(tu,{onClick:()=>{c(o)},active:o===i,children:[t(op,{onChange:e=>f(o,e),value:e.name||"Unnamed"}),t(tv,{onClick:e=>{e.stopPropagation(),window.confirm("Do you really want to delete this file?")&&y(o)}})]},o)),t(tm,{onClick:()=>{v(ty()),c(p.files.length)},children:t(tf,{})})]}),t(td,{children:t(th,{file:d,...e})}),x&&t(ts,{children:"Drop file(s) to upload to the project"})]})]})};export{tb as Editor,tl as EDITOR_DEFAULTS,te as Wire,oD as WNNode,oS as TitleBar,ox as PortsPanel,o$ as OutputPorts,oF as OutputHandle,oC as InputPorts,oj as InputHandle,ok as Port,eS as Modal,op as EditableLabel,os as useAudioNode,od as useNode,e$ as useTheme,ex as useStore,eC as theme,ey as isAudio,ev as isPatch,ew as PortType};
742
- //# sourceMappingURL=module.js.map