@web-noise/core 0.0.15-alpha.2 → 0.0.16-alpha.1

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.
@@ -1,4 +1,4 @@
1
- let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion/styled";import{useEffect as n,useState as l,useCallback as a,useRef as s}from"react";import{createPortal as d}from"react-dom";import{MdClose as c,MdSettings as h,MdInfoOutline as p}from"react-icons/md";import{useTheme as g,withTheme as m}from"@emotion/react";import"nanoid";import{FaPlus as u}from"react-icons/fa6";import"@web-noise/fetch";import{getConnectedEdges as f,addEdge as v,applyNodeChanges as b,applyEdgeChanges as w,Controls as x,Handle as y}from"reactflow";import{create as $}from"zustand";import{setAudioNodeTypes as k,createPatch as C}from"@web-noise/patch";import{reverse as P,patch as z,create as N}from"jsondiffpatch";import{injectGlobal as _}from"@emotion/css";import"reactflow/dist/style.css";import{Item as E,Menu as j}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import"hotkeys-js";import"react-file-drop";import{FaFileUpload as S,FaVolumeOff as F,FaRegArrowAltCircleRight as A}from"react-icons/fa";import"re-resizable";import"react-grid-layout";import"react-grid-layout/css/styles.css";import"react-icons/ai";import"react-icons/rx";import"react-modern-drawer";import"react-modern-drawer/dist/index.css";import"marked";import{useThrottledCallback as I}from"use-debounce";import R from"rc-slider";import"rc-slider/assets/index.css";import{CanvasSpliner as T}from"CanvasSpliner";function L(e,o,t,r){Object.defineProperty(e,o,{get:t,set:r,enumerable:!0,configurable:!0})}var D,M,O={};L(O,"Modal",()=>U),L(O,"Checker",()=>ew),L(O,"RadioGroup",()=>ey),L(O,"Input",()=>eC),L(O,"DropdownInput",()=>eS),L(O,"ColorInput",()=>eI),L(O,"NumberInput",()=>eL),L(O,"Button",()=>eD),L(O,"Select",()=>eO),L(O,"Slider",()=>eH),L(O,"SplineEditor",()=>eB),L(O,"ConfigRowLabel",()=>eV),L(O,"ConfigRowControl",()=>eU),L(O,"ConfigRowSeparator",()=>eJ),L(O,"ConfigRow",()=>eK),L(O,"ConfigPanel",()=>eY),L(O,"ConfigRowInner",()=>eX);var H={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}},G=()=>{let e=g();return{...H,...e}};let W=i.div`
1
+ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion/styled";import{useEffect as n,useState as l,useCallback as a,useRef as s}from"react";import{createPortal as d}from"react-dom";import{MdClose as c,MdSettings as h,MdInfoOutline as p}from"react-icons/md";import{useTheme as g,withTheme as m}from"@emotion/react";import"nanoid";import{FaPlus as u}from"react-icons/fa6";import"@web-noise/fetch";import{getConnectedEdges as f,addEdge as v,applyNodeChanges as b,applyEdgeChanges as x,Controls as w,Handle as y}from"@xyflow/react";import{create as $}from"zustand";import{setAudioNodeTypes as k,createPatch as C}from"@web-noise/patch";import{reverse as P,patch as z,create as N}from"jsondiffpatch";import{injectGlobal as _}from"@emotion/css";import"@xyflow/react/dist/style.css";import{Item as E,Menu as j}from"react-contexify";import"react-contexify/dist/ReactContexify.css";import"hotkeys-js";import"react-file-drop";import{FaFileUpload as S,FaVolumeOff as F,FaRegArrowAltCircleRight as A}from"react-icons/fa";import"re-resizable";import"react-grid-layout";import"react-grid-layout/css/styles.css";import"react-icons/ai";import"react-icons/rx";import"react-modern-drawer";import"react-modern-drawer/dist/index.css";import"marked";import{useThrottledCallback as I}from"use-debounce";import R from"rc-slider";import"rc-slider/assets/index.css";import{CanvasSpliner as T}from"CanvasSpliner";function L(e,o,t,r){Object.defineProperty(e,o,{get:t,set:r,enumerable:!0,configurable:!0})}var D,M,O={};L(O,"Modal",()=>U),L(O,"Checker",()=>ew),L(O,"RadioGroup",()=>e$),L(O,"Input",()=>eP),L(O,"DropdownInput",()=>eF),L(O,"ColorInput",()=>eR),L(O,"NumberInput",()=>eD),L(O,"Button",()=>eM),L(O,"Select",()=>eH),L(O,"Slider",()=>eG),L(O,"SplineEditor",()=>eV),L(O,"ConfigRowLabel",()=>eU),L(O,"ConfigRowControl",()=>eJ),L(O,"ConfigRowSeparator",()=>eK),L(O,"ConfigRow",()=>eY),L(O,"ConfigPanel",()=>eX),L(O,"ConfigRowInner",()=>eq);var H={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}},G=()=>{let e=g();return{...H,...e}};let W=i.div`
2
2
  position: fixed;
3
3
  z-index: ${({theme:e})=>e.zIndex.modal};
4
4
  width: 100%;
@@ -22,7 +22,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
22
22
  top: 0.2rem;
23
23
  right: 0.2rem;
24
24
  cursor: pointer;
25
- `,U=({children:e,onClose:o,...i})=>{let l=G();return n(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),d(t(W,{theme:l,onClick:o,children:r(B,{...i,onClick:e=>{e.stopPropagation()},theme:l,children:[e,t(V,{theme:l,onClick:o})]})}),document.body)};var J={};L(J,"DRAG_HANDLE_CLASS",()=>K),L(J,"DRAG_HANDLE_SELECTOR",()=>Y),L(J,"CONTROL_PANEL_GRID_CONFIG",()=>X),L(J,"PortType",()=>M);let K="web-noise-drag-handle",Y=`.${K}`,X={rowHeight:10,cols:4};(D=M||(M={})).Gate="gate",D.Number="number",D.Audio="audio",D.Any="any";let q=e=>JSON.parse(JSON.stringify(e)),Q=(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))}};$((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:b(o,e).map(e=>({dragHandle:Y,...e}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:w(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:v(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:i,skipCollect:n}=r;n?e({history:{...r,skipCollect:!1}}):e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:r}=e,n=o.slice(Math.max(r-i+1,0),r);return{history:{...e,buffer:[...n,t],pointer:Math.min(r+1,i)}}})},back:()=>{let{nodes:t,edges:r,controlPanel:i,history:n}=o(),{buffer:l,pointer:a}=n,s=l[a-1];if(!s)return;let d=P(s);d&&e({...z(q({nodes:t,edges:r,controlPanel:i}),d),history:{...n,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:r,controlPanel:i,history:n}=o(),{buffer:l,pointer:a}=n,s=l[a];s&&e({...z(q({nodes:t,edges:r,controlPanel:i}),s),history:{...n,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:C(),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:i}=o(),n=i.files[t];"audio"!==n.type&&r(t,{...n,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:r}=o(),i=r.files[e];"audio"===i.type?console.log("audio file. skipping"):t(i.file)},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:i}=o();e({project:{...i,files:i.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:i}=o();e({project:{...i,files:i.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),i=[...r.files,t];e({project:{...r,files:i}})},deleteFile:t=>{let{project:r,currentFileIndex:i}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=i&&e({currentFileIndex:Math.max(0,i-1)})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:i,createEdges:n,setNodesAndEdges:l,nodes:a,edges:s}=t();l({nodes:[],edges:[]}),await i(e),n(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:i,id:n,data:l}=e;if(void 0===i)throw Error(`node type is not defined for node: ${n}`);o({...e,data:{...l,config:{...r[i]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:r,nodes:i,onNodesDelete:n,removeEdges:l,removeNodesFromControlPanel:a}=t(),s=e.map(({id:e})=>e),d=[...e,...i.filter(({parentNode:e})=>e&&s.includes(e))];a(d),l(f(d,r)),n(d);let c=d.map(({id:e})=>e);o({nodes:i.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:r,onEdgesDelete:i}=t(),n=e.map(({id:e})=>e);i(e),o({edges:r.filter(({id:e})=>!n.includes(e))})},createEdges:e=>{let{patch:o,edges:r,setEdges:i}=t();i(e)},onConnect:async e=>{let{edges:o,createEdges:r}=t();r(v(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 i=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),n=Object.keys(i).reduce((e,o)=>({...e,[o]:i[o].node}),{});k(Object.keys(i).reduce((e,o)=>({...e,[o]:i[o].audioNode}),{})),r(n),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...i}}))},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:i,viewport:n})=>{let{setGraph:l}=t();await l({nodes:e,edges:r}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:i,viewport:n})},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(),i=e.filter(({selected:e})=>e),n=o.filter(({selected:e})=>e);i.length&&r({nodes:i,edges:n})},pasteBuffer:(e=0,r=0)=>{let{copyBuffer:i,createNodes:n,setEdges:l,nodes:a,edges:s}=t(),{nodes:d,edges:c}=i;if(!d.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let h=d.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),p=h.position.x-e,g=h.position.y-r,{nodes:m,mapping:u}=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-p,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:r}}},{nodes:[],mapping:{}});n(m);let f=c.map(e=>{let o=u[e.source]||e.source,t=u[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...s.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:r}=e;if(!r)return null;let i=o[r]?.controlPanelNode;return i||(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(),i=e.type?r[e.type]?.defaultConfig:{},{height:n}=i?.size||{},l={id:e.id,...n?{height:n/X.rowHeight}:{}};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 i,n,l,a=(n=N({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(i),l||(l=o),i=setTimeout(()=>{let o=n.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 i=new Set,n={...t(),nodes:[],edges:[]};return o(async(...o)=>{let r=t(),[l]=o,a={...n,..."function"==typeof l?l({...n}):l},s=Q(n.nodes,a.nodes),d=Q(n.edges,a.edges);n=a;let c=s.added,h=d.added,p=d.removed,g=s.removed,{patch:m}=r;if(c.length){let e=m.registerAudioNodes(c);i.add(e),await e,i.delete(e)}if(!(h.length||p.length||g.length))return void e(...o);if(i.size)try{await Promise.all([...i.values()])}catch(e){console.log("some error",e)}h.length&&m.registerAudioConnections(h),p.length&&m.unregisterAudioConnections(p),g.length&&m.unregisterAudioNodes(g),e(...o)},t,r)})),_`
25
+ `,U=({children:e,onClose:o,...i})=>{let l=G();return n(()=>{let e=e=>{"Escape"===e.key&&o?.()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[o]),d(t(W,{theme:l,onClick:o,children:r(B,{...i,onClick:e=>{e.stopPropagation()},theme:l,children:[e,t(V,{theme:l,onClick:o})]})}),document.body)};var J={};L(J,"DRAG_HANDLE_CLASS",()=>K),L(J,"DRAG_HANDLE_SELECTOR",()=>Y),L(J,"CONTROL_PANEL_GRID_CONFIG",()=>X),L(J,"PortType",()=>M);let K="web-noise-drag-handle",Y=`.${K}`,X={rowHeight:10,cols:4};(D=M||(M={})).Gate="gate",D.Number="number",D.Audio="audio",D.Any="any";let q=e=>JSON.parse(JSON.stringify(e)),Q=(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))}};$((e=(...e)=>{let[o,t]=e;return{...((e,o)=>({nodes:[],edges:[],onNodesChange:o=>{e(({nodes:e})=>({nodes:b(o,e).map(e=>({dragHandle:Y,...e,data:{label:"unknown",...e.data}}))}))},onEdgesChange:o=>{e(({edges:e})=>({edges:x(o,e)}))},onConnect:o=>{e(({edges:e})=>({edges:v(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:i,skipCollect:n}=r;n?e({history:{...r,skipCollect:!1}}):e(({history:e})=>{if(!e)return{};let{buffer:o,pointer:r}=e,n=o.slice(Math.max(r-i+1,0),r);return{history:{...e,buffer:[...n,t],pointer:Math.min(r+1,i)}}})},back:()=>{let{nodes:t,edges:r,controlPanel:i,history:n}=o(),{buffer:l,pointer:a}=n,s=l[a-1];if(!s)return;let d=P(s);d&&e({...z(q({nodes:t,edges:r,controlPanel:i}),d),history:{...n,pointer:a-1,skipCollect:!0}})},forward:()=>{let{nodes:t,edges:r,controlPanel:i,history:n}=o(),{buffer:l,pointer:a}=n,s=l[a];s&&e({...z(q({nodes:t,edges:r,controlPanel:i}),s),history:{...n,pointer:a+1,skipCollect:!0}})},clear:()=>{let{history:t}=o();e({history:{...t,buffer:[],pointer:0,skipCollect:!0}})}}}))(...e),...((e,o)=>({patch:C(),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:i}=o(),n=i.files[t];"audio"!==n.type&&r(t,{...n,file:e()})},syncEditorWithCurrentFile:()=>{let{currentFileIndex:e,setEditorState:t,project:r}=o(),i=r.files[e];"audio"===i.type?console.log("audio file. skipping"):t(i.file)},currentFileIndex:0,setCurrentFileIndex(t){let{currentFileIndex:r}=o();t!==r&&e({currentFileIndex:t})},updateFileContent(t,r){let{project:i}=o();e({project:{...i,files:i.files.map((e,o)=>o===t?{...e,...r}:e)}})},updateFileName(t,r){let{project:i}=o();e({project:{...i,files:i.files.map((e,o)=>o===t?{...e,name:r}:e)}})},addFile(t){let{project:r}=o(),i=[...r.files,t];e({project:{...r,files:i}})},deleteFile:t=>{let{project:r,currentFileIndex:i}=o();e({project:{...r,files:r.files.filter((e,o)=>t!==o)}}),t<=i&&e({currentFileIndex:Math.max(0,i-1)})}}))(...e),setGraph:async({nodes:e,edges:o})=>{let{patch:r,createNodes:i,createEdges:n,setNodesAndEdges:l,nodes:a,edges:s}=t();l({nodes:[],edges:[]}),await i(e),n(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:i,id:n,data:l}=e;if(void 0===i)throw Error(`node type is not defined for node: ${n}`);o({...e,data:{...l,config:{...r[i]?.defaultConfig,...l?.config}}})},removeNode:e=>t().removeNodes([e]),removeNodes:e=>{let{edges:r,nodes:i,onNodesDelete:n,removeEdges:l,removeNodesFromControlPanel:a}=t(),s=e.map(({id:e})=>e),d=[...e,...i.filter(({parentId:e})=>e&&s.includes(e))];a(d),l(f(d,r)),n(d);let c=d.map(({id:e})=>e);o({nodes:i.filter(({id:e})=>!c.includes(e))})},removeEdges:e=>{let{edges:r,onEdgesDelete:i}=t(),n=e.map(({id:e})=>e);i(e),o({edges:r.filter(({id:e})=>!n.includes(e))})},createEdges:e=>{let{patch:o,edges:r,setEdges:i}=t();i(e)},onConnect:async e=>{let{edges:o,createEdges:r}=t();r(v(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 i=e.reduce((e,o)=>({...e,...o.components.reduce((e,o)=>({...e,[o.type]:o}),{})}),{}),n=Object.keys(i).reduce((e,o)=>({...e,[o]:i[o].node}),{});k(Object.keys(i).reduce((e,o)=>({...e,[o]:i[o].audioNode}),{})),r(n),o(({nodesConfiguration:e})=>({nodesConfiguration:{...e,...i}}))},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:i,viewport:n})=>{let{setGraph:l}=t();await l({nodes:e,edges:r}),await new Promise(e=>setTimeout(e,1e3)),o({controlPanel:i,viewport:n})},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(),i=e.filter(({selected:e})=>e),n=o.filter(({selected:e})=>e);i.length&&r({nodes:i,edges:n})},pasteBuffer:(e=0,r=0)=>{let{copyBuffer:i,createNodes:n,setEdges:l,nodes:a,edges:s}=t(),{nodes:d,edges:c}=i;if(!d.length)return;o({nodes:a.map(e=>({...e,selected:!1}))});let h=d.reduce((e,o)=>!e||o.position.x<e.position.x&&o.position.y<e.position.y?o:e),p=h.position.x-e,g=h.position.y-r,{nodes:m,mapping:u}=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-p,y:o.position.y-g},selected:!0}],mapping:{...e.mapping,[o.id]:r}}},{nodes:[],mapping:{}});n(m);let f=c.map(e=>{let o=u[e.source]||e.source,t=u[e.target]||e.target;return{...e,id:e.id.replace(e.source,o).replace(e.target,t),source:o,target:t,selected:!0}});l([...s.map(e=>({...e,selected:!1})),...f])},getControlPanelNode:e=>{let{nodesConfiguration:o}=t(),{type:r}=e;if(!r)return null;let i=o[r]?.controlPanelNode;return i||(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(),i=e.type?r[e.type]?.defaultConfig:{},{height:n}=i?.size||{},l={id:e.id,...n?{height:n/X.rowHeight}:{}};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 i,n,l,a=(n=N({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(i),l||(l=o),i=setTimeout(()=>{let o=n.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 i=new Set,n={...t(),nodes:[],edges:[]};return o(async(...o)=>{let r=t(),[l]=o,a={...n,..."function"==typeof l?l({...n}):l},s=Q(n.nodes,a.nodes),d=Q(n.edges,a.edges);n=a;let c=s.added,h=d.added,p=d.removed,g=s.removed,{patch:m}=r;if(c.length){let e=m.registerAudioNodes(c);i.add(e),await e,i.delete(e)}if(!(h.length||p.length||g.length))return void e(...o);if(i.size)try{await Promise.all([...i.values()])}catch(e){console.log("some error",e)}h.length&&m.registerAudioConnections(h),p.length&&m.unregisterAudioConnections(p),g.length&&m.unregisterAudioNodes(g),e(...o)},t,r)})),_`
26
26
  .react-flow {
27
27
  .react-flow__pane {
28
28
  /* background: rgb(106 106 106); */
@@ -46,6 +46,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
46
46
  .react-flow__node {
47
47
  padding: 0;
48
48
  width: auto;
49
+ box-sizing: content-box;
49
50
  }
50
51
 
51
52
  .react-flow__edge-path {
@@ -70,7 +71,11 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
70
71
  } */
71
72
  }
72
73
 
73
- `,i(E)``,i(j)`
74
+ `;let Z=i(E)``;m(i(Z)`
75
+ .react-contexify__item__content {
76
+ color: ${({theme:e})=>e.colors.error};
77
+ }
78
+ `),i(j)`
74
79
  background: ${({colors:e})=>e.elevation2};
75
80
  padding: 0;
76
81
  border-radius: 0;
@@ -122,7 +127,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
122
127
  display: flex;
123
128
  gap: 0.2rem;
124
129
  flex-wrap: wrap;
125
- `);let Z=m(i.span`
130
+ `);let ee=m(i.span`
126
131
  cursor: pointer;
127
132
  font-size: 10px;
128
133
  background: ${({theme:e,isActive:o})=>o?e.colors.highlight1:e.colors.elevation3};
@@ -193,7 +198,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
193
198
  color: ${({theme:e})=>e.colors.accent3};
194
199
  cursor: pointer;
195
200
  }
196
- `,m(i(Z)`
201
+ `,m(i(ee)`
197
202
  font-size: 12px;
198
203
  padding: 0.2rem 0.4rem;
199
204
  &:hover {
@@ -211,7 +216,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
211
216
  flex-grow: 1;
212
217
  height: 100%;
213
218
  overflow-y: scroll;
214
- `;var ee={};L(ee,"useWorker",()=>eo),L(ee,"useMessageChannel",()=>et);let eo=e=>{let[o,t]=l(null);return n(()=>{let o=new Worker(e);return t(o),()=>{o?.terminate(),t(null)}},[]),o},et=()=>{let[e,o]=l(null);return n(()=>{let e=new MessageChannel;return e.port2.start(),o(e),()=>{o(null),e.port2.close()}},[]),e};var er={};L(er,"setParameterValue",()=>ei),L(er,"fileToBase64",()=>en);let ei=(e,o,t)=>{void 0!==o&&e.setValueAtTime(o,t.currentTime)},en=e=>new Promise((o,t)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>o(r.result?.toString()||""),r.onerror=e=>t(e)});Object.keys(er).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(ee,e)||Object.defineProperty(ee,e,{enumerable:!0,get:function(){return er[e]}})}),i.div`
219
+ `;var eo={};L(eo,"useWorker",()=>et),L(eo,"useMessageChannel",()=>er);let et=e=>{let[o,t]=l(null);return n(()=>{let o=new Worker(e);return t(o),()=>{o?.terminate(),t(null)}},[]),o},er=()=>{let[e,o]=l(null);return n(()=>{let e=new MessageChannel;return e.port2.start(),o(e),()=>{o(null),e.port2.close()}},[]),e};var ei={};L(ei,"setParameterValue",()=>en),L(ei,"fileToBase64",()=>el);let en=(e,o,t)=>{void 0!==o&&e.setValueAtTime(o,t.currentTime)},el=e=>new Promise((o,t)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>o(r.result?.toString()||""),r.onerror=e=>t(e)});Object.keys(ei).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(eo,e)||Object.defineProperty(eo,e,{enumerable:!0,get:function(){return ei[e]}})}),i.div`
215
220
  display: flex;
216
221
  align-items: center;
217
222
  justify-content: center;
@@ -357,11 +362,11 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
357
362
  margin-inline-end: 0px;
358
363
  unicode-bidi: isolate;
359
364
  }
360
- `);let el=i.div`
365
+ `);let ea=i.div`
361
366
  background-color: var(--leva-colors-elevation1);
362
- `;i(el)`
367
+ `;i(ea)`
363
368
  padding: 2rem 5rem;
364
- `,i(el)`
369
+ `,i(ea)`
365
370
  padding: 1rem 2rem;
366
371
  `,i(h)`
367
372
  font-size: 1.2rem;
@@ -379,12 +384,12 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
379
384
  opacity: 1;
380
385
  cursor: pointer;
381
386
  }
382
- `;let ea=i.div`
387
+ `;let es=i.div`
383
388
  position: relative;
384
389
  font-family: var(--leva-fonts-mono);
385
390
  font-size: var(--leva-fontSizes-root);
386
391
  background-color: var(--leva-colors-elevation1);
387
- `,es=i(ea)`
392
+ `,ed=i(es)`
388
393
  display: flex;
389
394
  height: var(--leva-sizes-titleBarHeight);
390
395
  touch-action: none;
@@ -394,7 +399,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
394
399
  color: var(--leva-colors-highlight1);
395
400
  padding: 0 0.4rem;
396
401
  gap: 0.3rem;
397
- `;i(ea)(({theme:e})=>`
402
+ `;i(es)(({theme:e})=>`
398
403
  display: grid;
399
404
  grid-template-areas: "inputs outputs";
400
405
  background: ${e.colors.elevation2};
@@ -410,22 +415,22 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
410
415
  `,i.div`
411
416
  position: relative;
412
417
  padding: 5px 10px;
413
- `;let ed={[M.Audio]:"#4ade80",[M.Gate]:"#c084fc",[M.Number]:"#38bdf8",[M.Any]:"#ffffff"},ec=m(i(y,{shouldForwardProp:e=>"portType"!==e})`
414
- --port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return ed[e.portType];{let o=e.portType.map(e=>ed[e]);return`linear-gradient(0.25turn, ${o.join(", ")});`}}};
418
+ `;let ec={[M.Audio]:"#4ade80",[M.Gate]:"#c084fc",[M.Number]:"#38bdf8",[M.Any]:"#ffffff"},eh=m(i(y,{shouldForwardProp:e=>"portType"!==e})`
419
+ --port-color: ${e=>{if(!e.portType)return e.theme.colors.highlight2;if(!Array.isArray(e.portType))return ec[e.portType];{let o=e.portType.map(e=>ec[e]);return`linear-gradient(0.25turn, ${o.join(", ")});`}}};
415
420
  border-color: var(--port-color);
416
421
  background: var(--port-color);
417
422
  box-shadow: 0px 0px 0px 1px ${({theme:e})=>e.colors.elevation2} inset;
418
- `);m(i(ec)`
419
- left: -3px;
420
- `),m(i(ec)`
421
- right: -3px;
422
- `);let eh=i.div`
423
+ `);m(i(eh)`
424
+ left: 0;
425
+ `),m(i(eh)`
426
+ right: 0;
427
+ `);let ep=i.div`
423
428
  width: 100%;
424
429
  padding: 0.4rem 0;
425
430
  white-space: nowrap;
426
431
  overflow: hidden;
427
432
  text-overflow: ellipsis;
428
- `,ep=i(({className:e,...o})=>t(es,{...o,className:[e,K].join(" ")}))`
433
+ `,eg=i(({className:e,...o})=>t(ed,{...o,className:[e,K].join(" ")}))`
429
434
  display: flex;
430
435
  gap: 0.1rem;
431
436
  padding: 0 0.4rem;
@@ -433,13 +438,13 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
433
438
  font-size: 0.6rem;
434
439
  height: auto;
435
440
  min-width: 0;
436
- `,eg=i.div`
441
+ `,em=i.div`
437
442
  display: flex;
438
443
  align-items: center;
439
444
  height: 70%;
440
445
  width: auto;
441
446
  gap: 0.4rem;
442
- `,em=i.span`
447
+ `,eu=i.span`
443
448
  width: auto;
444
449
  height: 100%;
445
450
  cursor: pointer;
@@ -475,17 +480,17 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
475
480
  color: ${({theme:e})=>e.colors.highlight2};
476
481
  cursor: pointer;
477
482
  }
478
- `,i(eg)`
479
- height: 80%;
480
483
  `,i(em)`
484
+ height: 80%;
485
+ `,i(eu)`
481
486
  font-size: 1rem;
482
487
  display: flex;
483
488
  align-items: center;
484
- `,i(ep)`
489
+ `,i(eg)`
485
490
  grid-template-columns: 1fr auto;
486
491
  border-bottom: 1px solid ${({theme:e})=>e.colors.elevation3};
487
492
  font-size: 0.7rem;
488
- `,i(eh)`
493
+ `,i(ep)`
489
494
  text-align: center;
490
495
  `,i.div`
491
496
  height: 100%;
@@ -622,7 +627,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
622
627
  `,i(F)`
623
628
  width: 7rem;
624
629
  height: 7rem;
625
- `,m(i(x)`
630
+ `,m(i(w)`
626
631
  &.bottom {
627
632
  right: 1rem;
628
633
  bottom: 40%;
@@ -716,7 +721,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
716
721
  &:hover {
717
722
  color: ${({theme:e})=>e.colors.whitePrimary};
718
723
  }
719
- `);let eu=i.div`
724
+ `);let ef=i.div`
720
725
  display: flex;
721
726
  align-items: center;
722
727
  justify-content: center;
@@ -728,10 +733,10 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
728
733
  content: "";
729
734
  background: ${({theme:e})=>e.colors.accent1};
730
735
  }
731
- `,ef=i.div``,ev=i.div`
736
+ `,ev=i.div``,eb=i.div`
732
737
  font-size: 0.4rem;
733
738
  color: ${({theme:e})=>e.colors.highlight1};
734
- `,eb=i.label`
739
+ `,ex=i.label`
735
740
  display: flex;
736
741
  cursor: pointer;
737
742
  gap: 0.4rem;
@@ -749,7 +754,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
749
754
  width: 70%;
750
755
  height: 70%;
751
756
  }
752
- `,ew=({label:e,subtitle:o,name:i,type:n="checkbox",onChange:l,checked:a=!1})=>{let s=G();return r(eb,{children:[t("input",{type:n,name:i,checked:a,onChange:({target:e})=>l?.(e.checked)}),t(eu,{className:"checker-box",theme:s}),r("div",{children:[t(ef,{children:e}),o?t(ev,{theme:s,children:o}):null]})]})},ex=i.div`
757
+ `,ew=({label:e,subtitle:o,name:i,type:n="checkbox",onChange:l,checked:a=!1})=>{let s=G();return r(ex,{children:[t("input",{type:n,name:i,checked:a,onChange:({target:e})=>l?.(e.checked)}),t(ef,{className:"checker-box",theme:s}),r("div",{children:[t(ev,{children:e}),o?t(eb,{theme:s,children:o}):null]})]})},ey=i.div`
753
758
  display: flex;
754
759
  flex-direction: column;
755
760
  gap: 0.5rem;
@@ -757,10 +762,10 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
757
762
  font-size: 0.7rem;
758
763
  color: ${({theme:e})=>e.colors.highlight2};
759
764
  padding: 0.5rem;
760
- `,ey=({options:e,value:o,onChange:r})=>t(ex,{theme:G(),children:e.map(({value:e,label:i,subtitle:n},l)=>t(ew,{value:o,type:"radio",label:i,subtitle:n,onChange:()=>r(e),checked:e===o},l))}),e$=i.div`
765
+ `,e$=({options:e,value:o,onChange:r})=>t(ey,{theme:G(),children:e.map(({value:e,label:i,subtitle:n},l)=>t(ew,{value:o,type:"radio",label:i,subtitle:n,onChange:()=>r(e),checked:e===o},l))}),ek=i.div`
761
766
  display: flex;
762
767
  position: relative;
763
- `,ek=m(i.input`
768
+ `,eC=m(i.input`
764
769
  padding-right: 2rem;
765
770
  padding-left: 0.3rem;
766
771
  padding-top: 0;
@@ -792,7 +797,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
792
797
  -webkit-appearance: none;
793
798
  margin-right: 1rem;
794
799
  }
795
- `),eC=({type:e,value:o,placeholder:r,onChange:i=()=>{},inputProps:n,...l})=>t(e$,{...l,children:t(ek,{type:e,value:o,placeholder:r,onKeyDownCapture:e=>{e.stopPropagation()},onChange:e=>{i(e.target.value)},...n})}),eP=m(i.button`
800
+ `),eP=({type:e,value:o,placeholder:r,onChange:i=()=>{},inputProps:n,...l})=>t(ek,{...l,children:t(eC,{type:e,value:o,placeholder:r,onKeyDownCapture:e=>{e.stopPropagation()},onChange:e=>{i(e.target.value)},...n})}),ez=m(i.button`
796
801
  position: absolute;
797
802
  right: 0;
798
803
  height: 100%;
@@ -810,10 +815,10 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
810
815
  &:active {
811
816
  color: ${({theme:e})=>e.colors.highlight3};
812
817
  }
813
- `),ez=i.div`
818
+ `),eN=i.div`
814
819
  position: relative;
815
820
  width: 100%;
816
- `,eN=m(i.div`
821
+ `,e_=m(i.div`
817
822
  position: absolute;
818
823
  top: calc(100% + 2px);
819
824
  left: 0;
@@ -843,7 +848,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
843
848
  &::-webkit-scrollbar-thumb:hover {
844
849
  background: ${({theme:e})=>e.colors.highlight1};
845
850
  }
846
- `),e_=m(i.div`
851
+ `),eE=m(i.div`
847
852
  padding: 0.4rem 0.5rem;
848
853
  cursor: pointer;
849
854
  color: ${({theme:e})=>e.colors.highlight1};
@@ -855,21 +860,21 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
855
860
  background-color: ${({theme:e})=>e.colors.elevation3};
856
861
  color: ${({theme:e})=>e.colors.highlight2};
857
862
  }
858
- `),eE=i.div`
863
+ `),ej=i.div`
859
864
  font-size: 0.85em;
860
865
  opacity: 0.7;
861
866
  margin-top: 2px;
862
867
  white-space: nowrap;
863
868
  overflow: hidden;
864
869
  text-overflow: ellipsis;
865
- `,ej=i.div`
870
+ `,eS=i.div`
866
871
  font-size: 1em;
867
872
  white-space: nowrap;
868
873
  overflow: hidden;
869
874
  text-overflow: ellipsis;
870
- `,eS=({value:e="",placeholder:o="",onSubmit:i=()=>{},options:d=[],...c})=>{let[h,p]=l(e),[g,m]=l(!1),[u,f]=l(-1),v=s(null),b=s(null),w=d.filter(e=>""===h||e.value.toLowerCase().includes(h.toLowerCase())||e.label?.toLowerCase().includes(h.toLowerCase())),x=a(()=>{i(h),m(!1),f(-1)},[h,i]),y=a(e=>{p(e.value),i(e.value),m(!1),f(-1)},[i]),$=a(e=>{switch(e.key){case"Escape":m(!1),f(-1);break;case"Enter":g&&u>=0&&w[u]?(e.preventDefault(),y(w[u])):x();break;case"ArrowDown":e.preventDefault(),g?f(e=>e<w.length-1?e+1:e):(m(!0),f(0));break;case"ArrowUp":e.preventDefault(),g&&f(e=>e>0?e-1:e)}},[x,g,u,w,y]);return n(()=>{let e=e=>{b.current&&!b.current.contains(e.target)&&v.current&&!v.current.contains(e.target)&&(m(!1),f(-1))};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),n(()=>{if(u>=0&&b.current){let e=b.current.children[u];e&&e.scrollIntoView({block:"nearest",behavior:"smooth"})}},[u]),r(ez,{children:[r(e$,{children:[t(ek,{...c,ref:v,value:h,placeholder:o,onKeyDown:$,onChange:e=>{p(e.target.value),m(!0),f(-1)},onFocus:()=>{d.length>0&&m(!0)},onBlur:()=>{setTimeout(()=>{m(!1),f(-1)},200)},autoComplete:"off"}),t(eP,{onClick:x,children:t(A,{})})]}),d.length>0&&t(eN,{ref:b,isOpen:g&&w.length>0,children:w.map((e,o)=>r(e_,{isHighlighted:o===u,onClick:()=>y(e),onMouseEnter:()=>f(o),children:[t(ej,{children:e.label||e.value}),e.value&&t(eE,{children:e.value})]},e.value+o))})]})},eF=i(e$)`
875
+ `,eF=({value:e="",placeholder:o="",onSubmit:i=()=>{},options:d=[],...c})=>{let[h,p]=l(e),[g,m]=l(!1),[u,f]=l(-1),v=s(null),b=s(null),x=d.filter(e=>""===h||e.value.toLowerCase().includes(h.toLowerCase())||e.label?.toLowerCase().includes(h.toLowerCase())),w=a(()=>{i(h),m(!1),f(-1)},[h,i]),y=a(e=>{p(e.value),i(e.value),m(!1),f(-1)},[i]),$=a(e=>{switch(e.key){case"Escape":m(!1),f(-1);break;case"Enter":g&&u>=0&&x[u]?(e.preventDefault(),y(x[u])):w();break;case"ArrowDown":e.preventDefault(),g?f(e=>e<x.length-1?e+1:e):(m(!0),f(0));break;case"ArrowUp":e.preventDefault(),g&&f(e=>e>0?e-1:e)}},[w,g,u,x,y]);return n(()=>{let e=e=>{b.current&&!b.current.contains(e.target)&&v.current&&!v.current.contains(e.target)&&(m(!1),f(-1))};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),n(()=>{if(u>=0&&b.current){let e=b.current.children[u];e&&e.scrollIntoView({block:"nearest",behavior:"smooth"})}},[u]),r(eN,{children:[r(ek,{children:[t(eC,{...c,ref:v,value:h,placeholder:o,onKeyDown:$,onChange:e=>{p(e.target.value),m(!0),f(-1)},onFocus:()=>{d.length>0&&m(!0)},onBlur:()=>{setTimeout(()=>{m(!1),f(-1)},200)},autoComplete:"off"}),t(ez,{onClick:w,children:t(A,{})})]}),d.length>0&&t(e_,{ref:b,isOpen:g&&x.length>0,children:x.map((e,o)=>r(eE,{isHighlighted:o===u,onClick:()=>y(e),onMouseEnter:()=>f(o),children:[t(eS,{children:e.label||e.value}),e.value&&t(ej,{children:e.value})]},e.value+o))})]})},eA=i(ek)`
871
876
  gap: 0.5rem;
872
- `,eA=i(ek)`
877
+ `,eI=i(eC)`
873
878
  padding: 0;
874
879
  aspect-ratio: 1 / 1;
875
880
  width: auto;
@@ -881,7 +886,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
881
886
  border-radius: 0.2rem;
882
887
  border: none;
883
888
  }
884
- `,eI=({value:e,onChange:o=()=>{},...i})=>r(eF,{...i,children:[t(eA,{type:"color",value:e,onChange:e=>{o(e.target.value)}}),t(ek,{value:e,onChange:e=>{o(e.target.value)}})]}),eR=i.span`
889
+ `,eR=({value:e,onChange:o=()=>{},...i})=>r(eA,{...i,children:[t(eI,{type:"color",value:e,onChange:e=>{o(e.target.value)}}),t(eC,{value:e,onChange:e=>{o(e.target.value)}})]}),eT=i.span`
885
890
  position: relative;
886
891
  &:after {
887
892
  content: "↕";
@@ -894,7 +899,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
894
899
  font-size: 1.2em;
895
900
  color: var(--leva-colors-highlight1);
896
901
  }
897
- `,eT=i.input`
902
+ `,eL=i.input`
898
903
  width: 100%;
899
904
  appearance: textfield;
900
905
  font-size: inherit;
@@ -922,7 +927,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
922
927
  -webkit-appearance: none;
923
928
  margin-right: 1rem;
924
929
  }
925
- `,eL=({max:e=1/0,min:o=-1/0,value:r,step:i=1,onChange:l=()=>{},placeholder:a,...d})=>{let c=s(null),h=I(t=>{if(void 0===r)return;let n=e<10?5:e/100,a=+(r+Math.round(t.deltaY/n)*i).toFixed(2);a<o||a>e||l(a)},100);return n(()=>{c.current&&(c.current.addEventListener("wheel",e=>{e.preventDefault(),e.stopPropagation(),h(e)}),c.current.onchange=e=>{l(+e.target.value)})},[c.current,l]),n(()=>{void 0!==r&&c.current&&(c.current.value=r.toString())},[c.current,r]),t(eR,{...d,children:t(eT,{ref:c,type:"number",step:i,min:o,max:e,placeholder:a})})},eD=i.button`
930
+ `,eD=({max:e=1/0,min:o=-1/0,value:r,step:i=1,onChange:l=()=>{},placeholder:a,...d})=>{let c=s(null),h=I(t=>{if(void 0===r)return;let n=e<10?5:e/100,a=+(r+Math.round(t.deltaY/n)*i).toFixed(2);a<o||a>e||l(a)},100);return n(()=>{c.current&&(c.current.addEventListener("wheel",e=>{e.preventDefault(),e.stopPropagation(),h(e)}),c.current.onchange=e=>{l(+e.target.value)})},[c.current,l]),n(()=>{void 0!==r&&c.current&&(c.current.value=r.toString())},[c.current,r]),t(eT,{...d,children:t(eL,{ref:c,type:"number",step:i,min:o,max:e,placeholder:a})})},eM=i.button`
926
931
  display: flex;
927
932
  align-items: center;
928
933
  justify-content: center;
@@ -951,7 +956,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
951
956
  ${({theme:e})=>e.colors.accent3};
952
957
  background-color: ${({theme:e})=>e.colors.accent1};
953
958
  }
954
- `,eM=m(i.div`
959
+ `,eO=m(i.div`
955
960
  display: flex;
956
961
  align-items: center;
957
962
  position: relative;
@@ -992,7 +997,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
992
997
  background-color: ${({theme:e})=>e.colors.highlight3};
993
998
  clip-path: polygon(100% 0%, 0 0%, 50% 100%);
994
999
  }
995
- `),eO=({options:e,placeholder:o,value:i,onChange:n,...l})=>t(eM,{...l,children:r("select",{value:i||"",onChange:e=>n?.(e.target.value),children:[o&&t("option",{value:"",disabled:!0,children:o}),e.map(({value:e,label:o})=>t("option",{value:e,children:o},e+o))]})}),eH=i(R)`
1000
+ `),eH=({options:e,placeholder:o,value:i,onChange:n,...l})=>t(eO,{...l,children:r("select",{value:i||"",onChange:e=>n?.(e.target.value),children:[o&&t("option",{value:"",disabled:!0,children:o}),e.map(({value:e,label:o})=>t("option",{value:e,children:o},e+o))]})}),eG=i(R)`
996
1001
  padding: 0;
997
1002
  cursor: pointer;
998
1003
  position: relative;
@@ -1118,7 +1123,7 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
1118
1123
  .rc-slider-mark-text {
1119
1124
  font-size: 0.4rem;
1120
1125
  }
1121
- `;class eG extends T{_updateMousePosition(e){let o=this._canvas?.getBoundingClientRect(),t=this._canvas.width/o.width,r=this._canvas.height/o.height;this._mouse={x:(e.clientX-o.left)*t,y:this._height-(e.clientY-o.top)*r}}getPoints(){let e=1/this._width,o=1/this._height;return this._pointCollection._points.map(({x:t,y:r})=>({x:t*e,y:r*o}))}removeAll(){let e=this._pointCollection.getNumberOfPoints();for(let o=e;o>0;o--)this._pointCollection.remove(o-1)}update(e){this.removeAll();let o=this._width,t=this._height;e.forEach(({x:e,y:r})=>{this._pointCollection.add({x:e*o,y:r*t})}),this.draw()}off(e,o){}}let eW=i.div`
1126
+ `;class eW extends T{_updateMousePosition(e){let o=this._canvas?.getBoundingClientRect(),t=this._canvas.width/o.width,r=this._canvas.height/o.height;this._mouse={x:(e.clientX-o.left)*t,y:this._height-(e.clientY-o.top)*r}}getPoints(){let e=1/this._width,o=1/this._height;return this._pointCollection._points.map(({x:t,y:r})=>({x:t*e,y:r*o}))}removeAll(){let e=this._pointCollection.getNumberOfPoints();for(let o=e;o>0;o--)this._pointCollection.remove(o-1)}update(e){this.removeAll();let o=this._width,t=this._height;e.forEach(({x:e,y:r})=>{this._pointCollection.add({x:e*o,y:r*t})}),this.draw()}off(e,o){}}let eB=i.div`
1122
1127
  height: 100%;
1123
1128
  width: 100%;
1124
1129
  position: relative;
@@ -1130,13 +1135,13 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
1130
1135
  height: 100%;
1131
1136
  width: 100%;
1132
1137
  }
1133
- `,eB=({onChange:e,onMove:o,points:r,type:i="monotonic",textColor:d="red",curveColor:c=H.colors.accent2,gridStep:h=.25,gridColor:p=H.colors.elevation2,controlPointRadius:g=14,controlPointColor:m=H.colors.vivid1})=>{let u=s(null),[f,v]=l(),b=a(o=>{let t=o.getPoints();e?.(t)},[e]),w=a(e=>{let t=e.getPoints();o?.(t)},[o]);return n(()=>f?.update(r),[f,r]),n(()=>f?.setSplineType(i),[f,i]),n(()=>f?.setGridStep(h),[f,h]),n(()=>f?.setGridColor(p),[f,p]),n(()=>f?.setControlPointRadius(g),[f,g]),n(()=>f?.setTextColor(d),[f,d]),n(()=>{f?.setCurveColor("idle",c)},[f,c]),n(()=>{f?.setControlPointColor("idle",m)},[f,m]),n(()=>{if(f)return f.setCurveThickness(4),f.on("movePoint",w),f.on("releasePoint",b),f.on("pointAdded",b),f.on("pointRemoved",b),f.draw(),()=>{f.off("movePoint",w),f.off("releasePoint",b),f.off("pointAdded",b),f.off("pointRemoved",b)}},[f,b,w]),n(()=>{u.current&&v(new eG(u.current,1024,1024))},[u]),t(eW,{ref:u})},eV=i.div``,eU=i.div`
1138
+ `,eV=({onChange:e,onMove:o,points:r,type:i="monotonic",textColor:d="red",curveColor:c=H.colors.accent2,gridStep:h=.25,gridColor:p=H.colors.elevation2,controlPointRadius:g=14,controlPointColor:m=H.colors.vivid1})=>{let u=s(null),[f,v]=l(),b=a(o=>{let t=o.getPoints();e?.(t)},[e]),x=a(e=>{let t=e.getPoints();o?.(t)},[o]);return n(()=>f?.update(r),[f,r]),n(()=>f?.setSplineType(i),[f,i]),n(()=>f?.setGridStep(h),[f,h]),n(()=>f?.setGridColor(p),[f,p]),n(()=>f?.setControlPointRadius(g),[f,g]),n(()=>f?.setTextColor(d),[f,d]),n(()=>{f?.setCurveColor("idle",c)},[f,c]),n(()=>{f?.setControlPointColor("idle",m)},[f,m]),n(()=>{if(f)return f.setCurveThickness(4),f.on("movePoint",x),f.on("releasePoint",b),f.on("pointAdded",b),f.on("pointRemoved",b),f.draw(),()=>{f.off("movePoint",x),f.off("releasePoint",b),f.off("pointAdded",b),f.off("pointRemoved",b)}},[f,b,x]),n(()=>{u.current&&v(new eW(u.current,1024,1024))},[u]),t(eB,{ref:u})},eU=i.div``,eJ=i.div`
1134
1139
  font-family: var(--leva-fonts-mono);
1135
1140
  font-size: 0.7rem;
1136
1141
  color: ${({theme:e})=>e.colors.whitePrimary};
1137
- `,eJ=i.div`
1138
- border-bottom: 1px solid ${({theme:e})=>e.colors.elevation1};
1139
1142
  `,eK=i.div`
1143
+ border-bottom: 1px solid ${({theme:e})=>e.colors.elevation1};
1144
+ `,eY=i.div`
1140
1145
  padding: 0.2rem 0.4rem;
1141
1146
  font-size: 0.7rem;
1142
1147
  color: ${({theme:e})=>e.colors.highlight2};
@@ -1147,11 +1152,11 @@ let e,o;import{jsx as t,jsxs as r}from"react/jsx-runtime";import i from"@emotion
1147
1152
  grid-template-columns: ${({oneLineLabels:e})=>e?"1fr":"auto 10rem"};
1148
1153
  row-gap: 0.1rem;
1149
1154
  column-gap: 0.4rem;
1150
- `,eY=i.div`
1155
+ `,eX=i.div`
1151
1156
  display: flex;
1152
1157
  flex-direction: column;
1153
1158
  gap: 0.4rem;
1154
1159
  background: ${({theme:e})=>e.colors.elevation2};
1155
1160
  padding: 0.4rem 0.1rem;
1156
- `,eX=i.div``;export{U as Modal,ew as Checker,ey as RadioGroup,eC as Input,eS as DropdownInput,eI as ColorInput,eL as NumberInput,eD as Button,eO as Select,eH as Slider,eB as SplineEditor,eV as ConfigRowLabel,eU as ConfigRowControl,eJ as ConfigRowSeparator,eK as ConfigRow,eY as ConfigPanel,eX as ConfigRowInner};
1161
+ `,eq=i.div``;export{U as Modal,ew as Checker,e$ as RadioGroup,eP as Input,eF as DropdownInput,eR as ColorInput,eD as NumberInput,eM as Button,eH as Select,eG as Slider,eV as SplineEditor,eU as ConfigRowLabel,eJ as ConfigRowControl,eK as ConfigRowSeparator,eY as ConfigRow,eX as ConfigPanel,eq as ConfigRowInner};
1157
1162
  //# sourceMappingURL=components.js.map