UNPKG

happy-juce

Version:

JUCE framework WebView components

2 lines (1 loc) 10.7 kB
var L=Object.create;var{getPrototypeOf:T,defineProperty:f,getOwnPropertyNames:j}=Object;var x=Object.prototype.hasOwnProperty;var D=(e,t,s)=>{s=e!=null?L(T(e)):{};let i=t||!e||!e.__esModule?f(s,"default",{value:e,enumerable:!0}):s;for(let o of j(e))if(!x.call(i,o))f(i,o,{get:()=>e[o],enumerable:!0});return i};var N=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var C=N((g,b)=>{if(typeof window.__JUCE__!=="undefined"&&typeof window.__JUCE__.getAndroidUserScripts!=="undefined"&&typeof window.inAndroidUserScriptEval==="undefined")window.inAndroidUserScriptEval=!0,eval(window.__JUCE__.getAndroidUserScripts()),delete window.inAndroidUserScriptEval;{if(typeof window.__JUCE__==="undefined")console.warn("The 'window.__JUCE__' object is undefined. Native integration features will not work. Defining a placeholder 'window.__JUCE__' object."),window.__JUCE__={postMessage:function(){}};if(typeof window.__JUCE__.initialisationData==="undefined")window.__JUCE__.initialisationData={__juce__platform:[],__juce__functions:[],__juce__registeredGlobalEventIds:[],__juce__sliders:[],__juce__toggles:[],__juce__comboBoxes:[]};class e{constructor(){this.listeners=new Map,this.listenerId=0}addListener(i){let o=this.listenerId++;return this.listeners.set(o,i),o}removeListener(i){if(this.listeners.has(i))this.listeners.delete(i)}callListeners(i){for(let[,o]of this.listeners)o(i)}}class t{constructor(){this.eventListeners=new Map}addEventListener(i,o){if(!this.eventListeners.has(i))this.eventListeners.set(i,new e);let n=this.eventListeners.get(i).addListener(o);return[i,n]}removeEventListener([i,o]){if(this.eventListeners.has(i))this.eventListeners.get(i).removeListener(o)}emitEvent(i,o){if(this.eventListeners.has(i))this.eventListeners.get(i).callListeners(o)}}class s{constructor(){this.listeners=new t}addEventListener(i,o){return this.listeners.addEventListener(i,o)}removeEventListener([i,o]){this.listeners.removeEventListener([i,o])}emitEvent(i,o){window.__JUCE__.postMessage(JSON.stringify({eventId:i,payload:o}))}emitByBackend(i,o){this.listeners.emitEvent(i,JSON.parse(o))}}if(typeof window.__JUCE__.backend==="undefined")window.__JUCE__.backend=new s}});var G=window.__JUCE__.initialisationData.__juce__platform,Y=window.__JUCE__.initialisationData.__juce__comboBoxes,H=window.__JUCE__.initialisationData.__juce__sliders,P=window.__JUCE__.initialisationData.__juce__toggles,B=window.__JUCE__.initialisationData.__juce__functions,X=window.__JUCE__.initialisationData.__juce__registeredGlobalEventIds.filter((e)=>!e.startsWith("__juce__")),q=window.__JUCE__.backend.listeners.eventListeners.keys().filter((e)=>!e.startsWith("__juce__")).toArray(),z=Object.fromEntries(Object.entries(window.__JUCE__.initialisationData).filter(([e,t])=>!e.startsWith("__juce__")));var Z=D(C(),1);class y{constructor(){this.lastPromiseId=0,this.promises=new Map,window.__JUCE__.backend.addEventListener("__juce__complete",({promiseId:e,result:t})=>{if(this.promises.has(e))this.promises.get(e).resolve(t),this.promises.delete(e)})}createPromise(){let e=this.lastPromiseId++,t=new Promise((s,i)=>{this.promises.set(e,{resolve:s,reject:i})});return[e,t]}}var v=new y;function U(e){if(!window.__JUCE__.initialisationData.__juce__functions.includes(e))console.warn(`Creating native function binding for '${e}', which is unknown to the backend`);return function(){let[s,i]=v.createPromise();return window.__JUCE__.backend.emitEvent("__juce__invoke",{name:e,params:Array.prototype.slice.call(arguments),resultId:s}),i}}class r{constructor(){this.listeners=new Map,this.listenerId=0}addListener(e){let t=this.listenerId++;return this.listeners.set(t,e),t}removeListener(e){if(this.listeners.has(e))this.listeners.delete(e)}callListeners(e){for(let[,t]of this.listeners)t(e)}}var c="valueChanged",l="propertiesChanged",O="sliderDragStarted",I="sliderDragEnded";class h{constructor(e){if(!window.__JUCE__.initialisationData.__juce__sliders.includes(e))console.warn("Creating SliderState for '"+e+"', which is unknown to the backend");this.name=e,this.identifier="__juce__slider"+this.name,this.scaledValue=0,this.properties={start:0,end:1,skew:1,name:"",label:"",numSteps:100,interval:0,parameterIndex:-1},this.valueChangedEvent=new r,this.propertiesChangedEvent=new r,window.__JUCE__.backend.addEventListener(this.identifier,(t)=>this.handleEvent(t)),window.__JUCE__.backend.emitEvent(this.identifier,{eventType:"requestInitialUpdate"})}setNormalisedValue(e){this.scaledValue=this.snapToLegalValue(this.normalisedToScaledValue(e)),window.__JUCE__.backend.emitEvent(this.identifier,{eventType:c,value:this.scaledValue})}sliderDragStarted(){window.__JUCE__.backend.emitEvent(this.identifier,{eventType:O})}sliderDragEnded(){window.__JUCE__.backend.emitEvent(this.identifier,{eventType:I})}handleEvent(e){if(e.eventType==c)this.scaledValue=e.value,this.valueChangedEvent.callListeners();if(e.eventType==l){let{eventType:t,...s}=e;this.properties=s,this.propertiesChangedEvent.callListeners()}}getScaledValue(){return this.scaledValue}getNormalisedValue(){return Math.pow((this.scaledValue-this.properties.start)/(this.properties.end-this.properties.start),this.properties.skew)}normalisedToScaledValue(e){return Math.pow(e,1/this.properties.skew)*(this.properties.end-this.properties.start)+this.properties.start}snapToLegalValue(e){let t=this.properties.interval;if(t==0)return e;let s=this.properties.start;return((o,n=0,k=1)=>Math.max(n,Math.min(k,o)))(s+t*Math.floor((e-s)/t+0.5),this.properties.start,this.properties.end)}}var d=new Map;for(let e of window.__JUCE__.initialisationData.__juce__sliders)d.set(e,new h(e));function S(e){if(!d.has(e))d.set(e,new h(e));return d.get(e)}class w{constructor(e){if(!window.__JUCE__.initialisationData.__juce__toggles.includes(e))console.warn("Creating ToggleState for '"+e+"', which is unknown to the backend");this.name=e,this.identifier="__juce__toggle"+this.name,this.value=!1,this.properties={name:"",parameterIndex:-1},this.valueChangedEvent=new r,this.propertiesChangedEvent=new r,window.__JUCE__.backend.addEventListener(this.identifier,(t)=>this.handleEvent(t)),window.__JUCE__.backend.emitEvent(this.identifier,{eventType:"requestInitialUpdate"})}getValue(){return this.value}setValue(e){this.value=e,window.__JUCE__.backend.emitEvent(this.identifier,{eventType:c,value:this.value})}handleEvent(e){if(e.eventType==c)this.value=e.value,this.valueChangedEvent.callListeners();if(e.eventType==l){let{eventType:t,...s}=e;this.properties=s,this.propertiesChangedEvent.callListeners()}}}var u=new Map;for(let e of window.__JUCE__.initialisationData.__juce__toggles)u.set(e,new w(e));function J(e){if(!u.has(e))u.set(e,new w(e));return u.get(e)}class E{constructor(e){if(!window.__JUCE__.initialisationData.__juce__comboBoxes.includes(e))console.warn("Creating ComboBoxState for '"+e+"', which is unknown to the backend");this.name=e,this.identifier="__juce__comboBox"+this.name,this.value=0,this.properties={name:"",parameterIndex:-1,choices:[]},this.valueChangedEvent=new r,this.propertiesChangedEvent=new r,window.__JUCE__.backend.addEventListener(this.identifier,(t)=>this.handleEvent(t)),window.__JUCE__.backend.emitEvent(this.identifier,{eventType:"requestInitialUpdate"})}getChoiceIndex(){return Math.round(this.value*(this.properties.choices.length-1))}setChoiceIndex(e){let t=this.properties.choices.length;this.value=t>1?e/(t-1):0,window.__JUCE__.backend.emitEvent(this.identifier,{eventType:c,value:this.value})}handleEvent(e){if(e.eventType==c)this.value=e.value,this.valueChangedEvent.callListeners();if(e.eventType==l){let{eventType:t,...s}=e;this.properties=s,this.propertiesChangedEvent.callListeners()}}}var a=new Map;for(let e of window.__JUCE__.initialisationData.__juce__comboBoxes)a.set(e,new E(e));function A(e){if(!a.has(e))a.set(e,new E(e));return a.get(e)}function R(e){let t=window.__JUCE__.initialisationData.__juce__platform.length>0?window.__JUCE__.initialisationData.__juce__platform[0]:"";if(t=="windows"||t=="android")return"https://juce.backend/"+e;if(t=="macos"||t=="ios"||t=="linux")return"juce://juce.backend/"+e;return console.warn("getBackendResourceAddress() called, but no JUCE native backend is detected."),e}class W{constructor(e){this.controlParameterIndexAnnotation=e,this.lastElement=null,this.lastControlParameterIndex=null}handleMouseMove(e){let t=document.elementFromPoint(e.clientX,e.clientY);if(t===this.lastElement)return;this.lastElement=t;let s=-1;if(t!==null)s=this.#e(t);if(s===this.lastControlParameterIndex)return;this.lastControlParameterIndex=s,window.__JUCE__.backend.emitEvent("__juce__controlParameterIndexChanged",s)}#e(e){let t=(s)=>{return s!==null&&s!==document.documentElement};while(t(e)){if(e.hasAttribute(this.controlParameterIndexAnnotation))return e.getAttribute(this.controlParameterIndexAnnotation);e=e.parentElement}return-1}}var ee=(e,...t)=>U(e)(...t),te=(e)=>fetch(R(e)),ie=(e,t={})=>window.__JUCE__.backend.emitEvent(e,t),se=(e,t)=>window.__JUCE__.backend.addEventListener(e,t),oe=(e)=>window.__JUCE__.backend.removeEventListener(e);import{create as K}from"zustand";var p=new Map,_=()=>(e)=>(t)=>{if(!p.has(t))p.set(t,K()(e(t)));return p.get(t)()};var ue=_()((e)=>(t,s)=>{let i=A(e);return i.valueChangedEvent.addListener(()=>t({index:i.getChoiceIndex(),value:i.properties.choices[i.getChoiceIndex()]})),{choices:i.properties.choices,index:i.getChoiceIndex(),value:i.properties.choices[i.getChoiceIndex()],setIndex:(o)=>{if(o<0||o>=s().choices.length)return!1;return i.setChoiceIndex(o),!0},setValue:(o)=>{let n=i.properties.choices.indexOf(o);if(n===-1)return!1;return i.setChoiceIndex(n),!0}}});var we=_()((e)=>(t,s)=>{let i=S(e);return i.valueChangedEvent.addListener(()=>t({normalised:i.getNormalisedValue(),scaled:i.getScaledValue()})),{start:i.properties.start,end:i.properties.end,interval:i.properties.interval,skew:i.properties.skew,numSteps:i.properties.numSteps,normalised:i.getNormalisedValue(),scaled:i.getScaledValue(),setNormalised:(o)=>{if(o<0||o>1)return!1;return i.setNormalisedValue(o),!0},setScaled:(o)=>s().setNormalised(F(s().start,s().end,s().skew,o))}}),F=(e,t,s,i)=>Math.pow((i-e)/(t-e),s),Ee=(e,t,s,i)=>Math.pow(i,1/s)*(t-e)+e;var be=_()((e)=>(t,s)=>{let i=J(e);return i.valueChangedEvent.addListener(()=>t({checked:i.getValue()})),{checked:i.getValue(),setChecked:(o)=>i.setValue(o),toggle:()=>s().setChecked(!s().checked)}});export{be as useToggleStore,we as useSliderStore,ue as useComboStore,ie as sendEvent,F as scaledToNormalised,oe as removeEventReceiver,Ee as normalisedToScaled,te as fetchResource,ee as callNativeFunction,se as addEventReceiver,P as TOGGLE_IDS,H as SLIDER_IDS,X as SEND_EVENT_IDS,q as RECV_EVENT_IDS,G as PLATFORM,B as NATIVE_FUNCTION_IDS,z as INIT_DATA,Y as COMBO_IDS};