web-gambit
Version:
Micro front-end library
1 lines • 5.4 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CreateRouter=exports.PrevRoute=exports.CurrentRoute=exports.ToRoute=exports.loadFMM=exports.createJsx=exports.CreateApp=exports.Context=exports.importStyleModule=exports.importModule=exports.Watch=exports.Emit=exports.Module=exports.AppKey=exports.ChangeLimit=exports.executeUmdModule=exports.executeModule=void 0;let alvi="";const wa=[],cs={},T="Transfer-Limit",q="!",e=".",ko={alvi:alvi},ok=Object.keys,os=Object.assign,u=ok(ko)[0],w=window,d=document,wg="_$$wgb",r="no-cache",m="404";let prp=re({},()=>{}),n=[u[1]+u[1]+u[1],u[3],u[1],u[3]+u[1],u[1]+u[3],u[3]+u[1]+u[3],u[1]+u[3]+u[1],u[3]+u[3]+u[1],u[3]+u[1]+u[1],u[3]+u[3]+u[3]];const pn={name:m,path:`/${m}`,component:()=>({tagName:"not-found-route",props:{as:"h1"},children:[m]}),props:{}},wbg={appKey:[],listeners:{},asModule(t){return wbg.appKey=[t.name],void 0===w[wg]?w[wg]={modules:{},root:!1,state:{},sync:{}}:(void 0===w[wg].modules&&(w[wg].modules={}),void 0===w[wg].state&&(w[wg].state={}),void 0===w[wg].sync&&(w[wg].sync={}),void 0===w[wg].root&&(w[wg].root=!1)),w[wg].modules[t.name]={},w[wg].state[t.name]=re(t.state,(t,o)=>{void 0!==wbg.listeners[t]&&ok(wbg.listeners[t]).forEach(e=>wbg.listeners[t][e](o))}),w[wg].sync[t.name]&&ok(w[wg].sync[t.name]).forEach(e=>w[wg].state[t.name][e]=w[wg].sync[t.name][e]),wbg},send(e,t){wbg.change(e,t)},change(t,o){t&&ok(w[wg].state).forEach(e=>w[wg].state[e][t]=o)},listen({name:e,command:t,action:o}){void 0!==wbg.listeners[t]?wbg.listeners[t][e]=o:wbg.listeners[t]={[e]:o}}};let cr=!1,ar=[],rc,ra=re({},()=>{}),ua=()=>{};function cn(e){if(vip(e))return d.createTextNode(e);let{tagName:t,props:o,children:n}=e;t.includes(r)&&(t=o&&o.as?o.as:"div"),o&&o.as&&(t=o.as);const u=d.createElement(t);return ups(u,{},o),n.forEach(e=>u.appendChild(cn(e))),u}function vip(e){return null===e||"object"!=typeof e&&"function"!=typeof e&&"symbol"!=typeof e}function un(e,t,o){if(void 0!==o){if(vip(t)||vip(o)){if(t===o)return e;var n=cn(o);return e.replaceWith(n),n}if(o.tagName.includes(r)||t.tagName!==o.tagName){o.tagName.includes(r)&&(o.tagName=o.props&&o.props.as?o.props.as:"div");n=cn(o);return e.replaceWith(n),n}return ups(e,t.props,o.props),ucn(e,t.children,o.children),e}e.remove()}function up(e,t,o,n){t.startsWith("on")||null!=n&&!1!==n?os(e,{[t]:n}):e.removeAttribute(t)}function ups(t,o,n){var e={...o,...n};ok(e).forEach(e=>{o&&n&&o[e]!==n[e]&&up(t,e,o[e],n[e])})}function ucn(t,o,n){t.childNodes.forEach((e,t)=>un(e,o[t],n[t])),n.slice(o.length).forEach(e=>t.appendChild(cn(e)))}function pv(e){if(3===e.nodeType)return e.nodeValue;var t=[].map.call(e.childNodes,pv);return createJsx(e.nodeName.toLowerCase(),{},t)}function R(e,t){return(t=un(t,t.v||pv(t),e)).v=e,t}function re(e,n){return new Proxy(e,{get:function(e,t){return e[t]},set:function(e,t,o){return e[t]=o,n(t,o),!0}})}function cv(t){return decodeURIComponent(escape(String.fromCharCode.apply(null,t.split(e).map(e=>parseInt(e)))))}function gar(){var e=ar.find(e=>e.path===location.pathname)||ar.find(e=>e.path===`/${m}`)||pn;return ra=e,rc=e.component,rc()}function executeModule(e){return-1===e.indexOf("function")?load(loadFMM(e)):load(e)}function executeUmdModule(e){return load(`${-1===e.indexOf("function")?loadFMM(e):e}; function $r () { return module }; $r()`)}function load(e){return w[`e${u[2]}${u[0]}${u[1]}`](e)}function ChangeLimit(e){alvi=cv(e)}function AppKey(){return wbg.appKey}function Module({moduleName:e,moduleState:t},o){return wbg.asModule({name:e,state:t})&&o()}function Emit(e,t){wbg.send(e,t)}function Watch(t){var e=w[wg].state[AppKey()][t.command],o=`${AppKey()}_${t.name}`;e&&-1==wa.indexOf(o)&&(t.action(e),wa.push(o)),ok(AppKey()).forEach(e=>wbg.listen({name:`${e}_${t.name}`,command:t.command,action:t.action}))}function importModule(e,t){return fetch(e,t).then(e=>{var t=e.headers.get(T);return t&&ChangeLimit(t),e.text()})}function importStyleModule(e,t,o="css-"){if(!d.getElementById(o+e)){const n=d.createElement("link");n.id=o+e,n.href=t,n.rel="stylesheet",d.getElementsByTagName("head")[0].appendChild(n)}}function Context({id:t,data:e}){return void 0===cs[t]&&(cs[t]=e),{state:cs[t],setState:e=>{cs[t]=e,ua()}}}function CreateApp(e,t){const o=R(e(),t);ua=()=>R(e(),o)}function createJsx(e,t={},...o){return"function"==typeof e?e(t,o):{tagName:e,props:t,children:o.flat()}}function loadFMM(t){const r=[];return t.split(q).forEach(t=>{let o="";t.split(e).forEach(e=>o+=n.indexOf(e)),r.push(alvi[parseInt(o)])}),r.join("")}function ToRoute(e){e!==location.pathname&&(prp=ra,history.pushState(null,"",e),ua())}function CurrentRoute(){return ra}function PrevRoute(){return prp}function CreateRouter(e){return ar=e,cr||(w.addEventListener("popstate",()=>{prp=ra,ua()}),d.body.addEventListener("click",e=>{const t=e.target;t.matches("[type=history]")&&(e.preventDefault(),t.href!==location.href&&ToRoute(t.href))}),cr=!0),gar()}exports.executeModule=executeModule,exports.executeUmdModule=executeUmdModule,exports.ChangeLimit=ChangeLimit,exports.AppKey=AppKey,exports.Module=Module,exports.Emit=Emit,exports.Watch=Watch,exports.importModule=importModule,exports.importStyleModule=importStyleModule,exports.Context=Context,exports.CreateApp=CreateApp,exports.createJsx=createJsx,exports.loadFMM=loadFMM,exports.ToRoute=ToRoute,exports.CurrentRoute=CurrentRoute,exports.PrevRoute=PrevRoute,exports.CreateRouter=CreateRouter;