UNPKG

@thebase/ui

Version:

CDN-installable Owl and Bootstrap 5 UI component library.

3 lines (2 loc) • 5.26 kB
import{a as B,b as Q,c as h,e as L,f as p,g as W,h as j,i as N}from"./chunk-CFWAU3WN.js";import{a as $,b as V,c as u,d as O}from"./chunk-Y4CBBIL4.js";import{A as k,F as A,M as D,P,d as R,h as H,j as T,l as a,m as _,n as o,p as i,r as w,w as E,x as M,z as U}from"./chunk-VJBGANAS.js";import"./chunk-23NN352E.js";var ce=0;var Y=(e,n,s)=>{U(e)===ce&&s(n,k(e))};var q=e=>D(e,(n,s)=>`${encodeURIComponent(s)}=${encodeURIComponent(n)}`).join("&");var g=0,G=3,f=1,ae=2,b=[];b[g]=(e,n,s,t,c)=>{i(e,g);let r=N(n,e,s.doc,s);t&&r===L&&!s.synced&&(s.synced=!0)};b[G]=(e,n,s,t,c)=>{i(e,f),w(e,u(s.awareness,Array.from(s.awareness.getStates().keys())))};b[f]=(e,n,s,t,c)=>{O(s.awareness,M(n),s)};b[ae]=(e,n,s,t,c)=>{Y(n,s.doc,(r,m)=>re(s,m))};var z=3e4,re=(e,n)=>console.warn(`Permission denied to access ${e.url}. ${n}`),J=(e,n,s)=>{let t=E(n),c=a(),r=U(t),m=e.messageHandlers[r];return m?m(c,t,e,s,r):console.error("Unable to compute message"),c},de=e=>!(e.code>=4400&&e.code<4500),C=(e,n,s)=>{if(n!==null&&n===e.ws){e.emit("connection-close",[s,e]),e.ws=null,n.onmessage=null,n.onopen=null,n.onclose=null,n.onerror=()=>{},n.close(),e.wsconnecting=!1,e.wsconnected&&(e.wsconnected=!1,e.synced=!1,V(e.awareness,Array.from(e.awareness.getStates().keys()).filter(c=>c!==e.doc.clientID),e),e.emit("status",[{status:"disconnected"}])),e.wsUnsuccessfulReconnects++;let t=null;s!=null&&!e.shouldReconnect(s,e)&&(e.shouldConnect=!1,t={code:s.code,reason:s.reason}),setTimeout(K,H(T(2,e.wsUnsuccessfulReconnects)*100,e.maxBackoffTime),e),t!==null&&e.emit("closed",[t,e])}},K=e=>{if(e.shouldConnect&&e.ws===null){let n=new e._WS(e.url,e.protocols);n.binaryType="arraybuffer",e.ws=n,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,n.onmessage=s=>{if(e.ws!==n)return;e.wsLastMessageReceived=A();let t=J(e,new Uint8Array(s.data),!0);_(t)>1&&n.send(o(t))},n.onerror=s=>{e.ws===n&&e.emit("connection-error",[s,e])},n.onclose=s=>{C(e,n,s)},n.onopen=()=>{if(e.ws!==n)return;e.wsLastMessageReceived=A(),e.wsconnecting=!1,e.wsconnected=!0,e.emit("status",[{status:"connected"}]);let s=a();if(i(s,g),p(s,e.doc),n.send(o(s)),e.awareness.getLocalState()!==null){let t=a();i(t,f),w(t,u(e.awareness,[e.doc.clientID])),n.send(o(t))}},e.emit("status",[{status:"connecting"}])}},x=(e,n)=>{let s=e.ws;e.wsconnected&&s&&s.readyState===s.OPEN&&s.send(n),e.bcconnected&&h(e.bcChannel,n,e)},F=class extends R{constructor(n,s,t,{connect:c=!0,awareness:r=new $(t),params:m={},protocols:X=[],WebSocketPolyfill:Z=WebSocket,resyncInterval:I=-1,maxBackoffTime:v=2500,disableBc:ee=!1,shouldReconnect:ne=de}={}){for(super();n[n.length-1]==="/";)n=n.slice(0,n.length-1);this.serverUrl=n,this.bcChannel=n+"/"+s,this.maxBackoffTime=v,this.shouldReconnect=ne,this.params=m,this.protocols=X,this.roomname=s,this.doc=t,this._WS=Z,this.awareness=r,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.disableBc=ee,this.wsUnsuccessfulReconnects=0,this.messageHandlers=b.slice(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=c,this._resyncInterval=0,I>0&&(this._resyncInterval=setInterval(()=>{if(this.ws&&this.ws.readyState===WebSocket.OPEN){let d=a();i(d,g),p(d,t),this.ws.send(o(d))}},I)),this._bcSubscriber=(d,y)=>{if(y!==this){let l=J(this,new Uint8Array(d),!1);_(l)>1&&h(this.bcChannel,o(l),this)}},this._updateHandler=(d,y)=>{if(y!==this){let l=a();i(l,g),j(l,d),x(this,o(l))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:d,updated:y,removed:l},le)=>{let se=d.concat(y).concat(l),S=a();i(S,f),w(S,u(r,se)),x(this,o(S))},this._exitHandler=()=>{V(this.awareness,[t.clientID],"app closed")},P&&typeof process<"u"&&process.on("exit",this._exitHandler),r.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval(()=>{this.wsconnected&&z<A()-this.wsLastMessageReceived&&C(this,this.ws,null)},z/10),c&&this.connect()}get url(){let n=q(this.params);return this.serverUrl+"/"+this.roomname+(n.length===0?"":"?"+n)}get synced(){return this._synced}set synced(n){this._synced!==n&&(this._synced=n,n&&(this.wsUnsuccessfulReconnects=0),this.emit("synced",[n]),this.emit("sync",[n]))}destroy(){this._resyncInterval!==0&&clearInterval(this._resyncInterval),clearInterval(this._checkInterval),this.disconnect(),P&&typeof process<"u"&&process.off("exit",this._exitHandler),this.awareness.off("update",this._awarenessUpdateHandler),this.doc.off("update",this._updateHandler),super.destroy()}connectBc(){if(this.disableBc)return;this.bcconnected||(B(this.bcChannel,this._bcSubscriber),this.bcconnected=!0);let n=a();i(n,g),p(n,this.doc),h(this.bcChannel,o(n),this);let s=a();i(s,g),W(s,this.doc),h(this.bcChannel,o(s),this);let t=a();i(t,G),h(this.bcChannel,o(t),this);let c=a();i(c,f),w(c,u(this.awareness,[this.doc.clientID])),h(this.bcChannel,o(c),this)}disconnectBc(){let n=a();i(n,f),w(n,u(this.awareness,[this.doc.clientID],new Map)),x(this,o(n)),this.bcconnected&&(Q(this.bcChannel,this._bcSubscriber),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),this.ws!==null&&C(this,this.ws,null)}connect(){this.shouldConnect=!0,!this.wsconnected&&this.ws===null&&(K(this),this.connectBc())}};export{F as WebsocketProvider,ae as messageAuth,f as messageAwareness,G as messageQueryAwareness,g as messageSync};