madoi-client-react
Version:
A React Utilities for Madoi Client
2 lines (1 loc) • 3.41 kB
JavaScript
(function(u,f){typeof exports=="object"&&typeof module<"u"?f(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],f):(u=typeof globalThis<"u"?globalThis:u||self,f(u["madoi-react"]={},u.React))})(this,function(u,f){"use strict";var D=Object.defineProperty;var V=(u,f,S)=>f in u?D(u,f,{enumerable:!0,configurable:!0,writable:!0,value:S}):u[f]=S;var b=(u,f,S)=>V(u,typeof f!="symbol"?f+"":f,S);function S(e={}){return t=>{t.madoiClassConfig_=e}}const _={type:"beforeExec",maxLog:0,allowedTo:["USER"]};function M(e=_){const t=e;return t.type||(t.type="beforeExec"),t.maxLog||(t.maxLog=0),(o,r,c)=>{const a={share:t};o[r].madoiMethodConfig_=a}}const j={maxInterval:5e3};function C(e=j){const t=e;return(o,r,c)=>{const a={getState:t};o[r].madoiMethodConfig_=a}}function P(e={}){const t=e;return(o,r,c)=>{const a={setState:t};o[r].madoiMethodConfig_=a}}var w=Object.defineProperty,E=Object.getOwnPropertyDescriptor,y=(e,t,o,r)=>{for(var c=r>1?void 0:r?E(t,o):t,a=e.length-1,g;a>=0;a--)(g=e[a])&&(c=(r?g(t,o,c):g(c))||c);return r&&c&&w(t,o,c),c};function h(e){return typeof e=="function"?e():e}function v(e,t){return typeof t=="function"?t(e):t}let m=class{constructor(e){b(this,"state");this.state=e}updateState(e){this.state=e}setState(e){this.state=e}getState(){return this.state}};y([M()],m.prototype,"updateState",1),y([P()],m.prototype,"setState",1),y([C()],m.prototype,"getState",1),m=y([S({className:"State"})],m);function L(e,t){var g;const o=f.useRef(null),r=f.useRef(null),[c,a]=f.useState();return o.current===null&&(o.current=h(t)),f.useEffect(()=>{if(r.current!==null)return;const n=new m(o.current);r.current=n;let l=null;for(let i of Object.getOwnPropertyNames(Object.getPrototypeOf(n))){const p=n[i].madoiMethodConfig_;p&&p.getState&&(l=n[i])}if(l==null)throw new Error(`${typeof n} must declare @GetState method.`);for(let i of Object.getOwnPropertyNames(Object.getPrototypeOf(n))){const p=n[i].madoiMethodConfig_;if(p){if(p.share){const d=n[i],s=function(){d.apply(n,arguments),a(l.apply(n))};s.madoiMethodConfig_=p,n[i]=s}else if(p.setState){const d=n[i],s=function(){d.apply(n,arguments),a(l.apply(n))};s.madoiMethodConfig_=p,n[i]=s}}}e.register(n)},[]),[((g=r.current)==null?void 0:g.getState())||o.current,n=>{var l,i;(i=r.current)==null||i.updateState(v((l=r.current)==null?void 0:l.getState(),n))}]}function R(e,t,o=!0){const r=f.useRef(null),c=f.useRef(!1),[a,g]=f.useState();return r.current===null&&(r.current=h(t)),f.useEffect(()=>{var i,p;if(c.current)return;const n=r.current;let l=null;for(let d of Object.getOwnPropertyNames(Object.getPrototypeOf(n))){const s=(i=n[d])==null?void 0:i.madoiMethodConfig_;s&&s.getState&&(l=n[d])}for(let d of Object.getOwnPropertyNames(Object.getPrototypeOf(n))){const s=(p=n[d])==null?void 0:p.madoiMethodConfig_;if(s&&(s.share||s.setState||s.enterRoomAllowed||s.leaveRoomDone||s.peerEntered||s.peerProfileUpdated||s.peerLeaved)){const T=n[d],O=function(){T.apply(n,arguments),o&&g(l?l.apply(n):new Object)};O.madoiMethodConfig_=s,n[d]=O}}e.register(n),c.current=!0},[]),r.current}function N(e,t){for(const o of Object.keys(t))e.addEventListener(o,t[o]);return()=>{for(const o of Object.keys(t))e.removeEventListener(o,t[o])}}function x(...e){return()=>e.forEach(t=>t())}u.bundleCleanups=x,u.eventListnersEffect=N,u.useSharedModel=R,u.useSharedState=L,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});