mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-13 22:58:34 +00:00
2 lines
7.6 KiB
JavaScript
2 lines
7.6 KiB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react"),J=require("@uiw/react-codemirror"),p=require("@codemirror/view"),F=require("@codemirror/state"),$=require("@codemirror/lang-javascript"),o=require("@lezer/highlight"),G=require("@uiw/codemirror-themes"),Q=require("react-hook-inview"),z=require("@strudel.cycles/webaudio"),W=require("@strudel.cycles/core"),X=require("@strudel.cycles/transpiler"),V=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},n=V(t),Y=V(J),Z=G.createTheme({theme:"dark",settings:{background:"#222",foreground:"#75baff",caret:"#ffcc00",selection:"rgba(128, 203, 196, 0.5)",selectionMatch:"#036dd626",lineHighlight:"#00000050",gutterBackground:"transparent",gutterForeground:"#8a919966"},styles:[{tag:o.tags.keyword,color:"#c792ea"},{tag:o.tags.operator,color:"#89ddff"},{tag:o.tags.special(o.tags.variableName),color:"#eeffff"},{tag:o.tags.typeName,color:"#c3e88d"},{tag:o.tags.atom,color:"#f78c6c"},{tag:o.tags.number,color:"#c3e88d"},{tag:o.tags.definition(o.tags.variableName),color:"#82aaff"},{tag:o.tags.string,color:"#c3e88d"},{tag:o.tags.special(o.tags.string),color:"#c3e88d"},{tag:o.tags.comment,color:"#7d8799"},{tag:o.tags.variableName,color:"#c792ea"},{tag:o.tags.tagName,color:"#c3e88d"},{tag:o.tags.bracket,color:"#525154"},{tag:o.tags.meta,color:"#ffcb6b"},{tag:o.tags.attributeName,color:"#c792ea"},{tag:o.tags.propertyName,color:"#c792ea"},{tag:o.tags.className,color:"#decb6b"},{tag:o.tags.invalid,color:"#ffffff"}]});const x=F.StateEffect.define(),ee=F.StateField.define({create(){return p.Decoration.none},update(e,r){try{for(let a of r.effects)if(a.is(x))if(a.value){const c=p.Decoration.mark({attributes:{style:"background-color: #FFCA2880"}});e=p.Decoration.set([c.range(0,r.newDoc.length)])}else e=p.Decoration.set([]);return e}catch(a){return console.warn("flash error",a),e}},provide:e=>p.EditorView.decorations.from(e)}),j=e=>{e.dispatch({effects:x.of(!0)}),setTimeout(()=>{e.dispatch({effects:x.of(!1)})},200)},q=F.StateEffect.define(),te=F.StateField.define({create(){return p.Decoration.none},update(e,r){try{for(let a of r.effects)if(a.is(q)){const c=a.value.map(i=>(i.context.locations||[]).map(({start:g,end:d})=>{const f=i.context.color||"#FFCA28";let s=r.newDoc.line(g.line).from+g.column,l=r.newDoc.line(d.line).from+d.column;const m=r.newDoc.length;return s>m||l>m?void 0:p.Decoration.mark({attributes:{style:`outline: 1.5px solid ${f};`}}).range(s,l)})).flat().filter(Boolean)||[];e=p.Decoration.set(c,!0)}return e}catch{return p.Decoration.set([])}},provide:e=>p.EditorView.decorations.from(e)}),re=[$.javascript(),Z,te,ee];function B({value:e,onChange:r,onViewChanged:a,onSelectionChange:c,options:i,editorDidMount:g}){const d=t.useCallback(l=>{r?.(l)},[r]),f=t.useCallback(l=>{a?.(l)},[a]),s=t.useCallback(l=>{l.selectionSet&&c&&c?.(l.state.selection)},[c]);return n.default.createElement(n.default.Fragment,null,n.default.createElement(Y.default,{value:e,onChange:d,onCreateEditor:f,onUpdate:s,extensions:re}))}function P(...e){return e.filter(Boolean).join(" ")}function I({view:e,pattern:r,active:a,getTime:c}){const i=t.useRef([]),g=t.useRef();t.useEffect(()=>{if(e)if(r&&a){let f=function(){try{const s=c(),m=[Math.max(g.current||s,s-1/10,0),s+1/60];g.current=m[1],i.current=i.current.filter(u=>u.whole.end>s);const v=r.queryArc(...m).filter(u=>u.hasOnset());i.current=i.current.concat(v),e.dispatch({effects:q.of(i.current)})}catch{e.dispatch({effects:q.of([])})}d=requestAnimationFrame(f)},d=requestAnimationFrame(f);return()=>{cancelAnimationFrame(d)}}else i.current=[],e.dispatch({effects:q.of([])})},[r,a,e])}const oe="_container_3i85k_1",ae="_header_3i85k_5",ne="_buttons_3i85k_9",se="_button_3i85k_9",ce="_buttonDisabled_3i85k_17",ie="_error_3i85k_21",le="_body_3i85k_25",w={container:oe,header:ae,buttons:ne,button:se,buttonDisabled:ce,error:ie,body:le};function T({type:e}){return n.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor"},{refresh:n.default.createElement("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:n.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:n.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}[e])}function K({defaultOutput:e,interval:r,getTime:a,evalOnMount:c=!1,initialCode:i="",autolink:g=!1,afterEval:d,onEvalError:f}){const[s,l]=t.useState(),[m,v]=t.useState(),[u,C]=t.useState(i),[D,M]=t.useState(u),[k,A]=t.useState(),[S,_]=t.useState(!1),N=u!==D,{scheduler:E,evaluate:y,start:b,stop:O,pause:U}=t.useMemo(()=>W.repl({interval:r,defaultOutput:e,onSchedulerError:l,onEvalError:h=>{v(h),f?.(h)},getTime:a,transpiler:X.transpiler,beforeEval:({code:h})=>{C(h)},afterEval:({pattern:h,code:L})=>{M(L),A(h),v(),l(),g&&(window.location.hash="#"+encodeURIComponent(btoa(L))),d?.()},onToggle:h=>_(h)}),[e,r,a]),R=t.useCallback(async(h=!0)=>y(u,h),[y,u]),H=t.useRef();return t.useEffect(()=>{!H.current&&c&&u&&(H.current=!0,R())},[R,c,u]),t.useEffect(()=>()=>{E.stop()},[E]),{code:u,setCode:C,error:s||m,schedulerError:s,scheduler:E,evalError:m,evaluate:y,activateCode:R,activeCode:D,isDirty:N,pattern:k,started:S,start:b,stop:O,pause:U,togglePlay:async()=>{S?E.pause():await R()}}}const ue=()=>z.getAudioContext().currentTime;function de({tune:e,hideOutsideView:r=!1,init:a,enableKeyboard:c}){const{code:i,setCode:g,evaluate:d,activateCode:f,error:s,isDirty:l,activeCode:m,pattern:v,started:u,scheduler:C,togglePlay:D,stop:M}=K({initialCode:e,defaultOutput:z.webaudioOutput,getTime:ue}),[k,A]=t.useState(),[S,_]=Q.useInView({threshold:.01}),N=t.useRef(),E=t.useMemo(()=>((_||!r)&&(N.current=!0),_||N.current),[_,r]);return I({view:k,pattern:v,active:u&&!m?.includes("strudel disable-highlighting"),getTime:()=>C.getPhase()}),t.useLayoutEffect(()=>{if(c){const y=async b=>{(b.ctrlKey||b.altKey)&&(b.code==="Enter"?(b.preventDefault(),j(k),await f()):b.code==="Period"&&(M(),b.preventDefault()))};return window.addEventListener("keydown",y,!0),()=>window.removeEventListener("keydown",y,!0)}},[c,v,i,d,M,k]),n.default.createElement("div",{className:w.container,ref:S},n.default.createElement("div",{className:w.header},n.default.createElement("div",{className:w.buttons},n.default.createElement("button",{className:P(w.button,u?"sc-animate-pulse":""),onClick:()=>D()},n.default.createElement(T,{type:u?"pause":"play"})),n.default.createElement("button",{className:P(l?w.button:w.buttonDisabled),onClick:()=>f()},n.default.createElement(T,{type:"refresh"}))),s&&n.default.createElement("div",{className:w.error},s.message)),n.default.createElement("div",{className:w.body},E&&n.default.createElement(B,{value:i,onChange:g,onViewChanged:A})))}function fe(e){return t.useEffect(()=>(window.addEventListener("message",e),()=>window.removeEventListener("message",e)),[e]),t.useCallback(r=>window.postMessage(r,"*"),[])}const ge=e=>t.useLayoutEffect(()=>(window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)),[e]);exports.CodeMirror=B;exports.MiniRepl=de;exports.cx=P;exports.flash=j;exports.useHighlighting=I;exports.useKeydown=ge;exports.usePostMessage=fe;exports.useStrudel=K;
|