@base-framework/base 3.9.7 → 3.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base.js +1 -1
- package/dist/chunks/chunk-3X6POBEJ.js +2 -0
- package/dist/chunks/chunk-4T7YWUSM.js +2 -0
- package/dist/chunks/chunk-7RJQZEA3.js +2 -0
- package/dist/chunks/chunk-DYPO4XWL.js +2 -0
- package/dist/chunks/chunk-E3C6NOMV.js +2 -0
- package/dist/chunks/chunk-FRCLWWKS.js +2 -0
- package/dist/chunks/chunk-G5VVBURO.js +2 -0
- package/dist/chunks/chunk-GV7CJS33.js +2 -0
- package/dist/chunks/chunk-HT53RXU3.js +2 -0
- package/dist/chunks/chunk-IHAOOHJB.js +2 -0
- package/dist/chunks/chunk-IHTCTRTS.js +2 -0
- package/dist/chunks/chunk-ILT4B3VY.js +2 -0
- package/dist/chunks/chunk-J4K3HIHH.js +2 -0
- package/dist/chunks/chunk-KJTST4FO.js +2 -0
- package/dist/chunks/chunk-LX7KL4UO.js +2 -0
- package/dist/chunks/chunk-MXSQXT7V.js +2 -0
- package/dist/chunks/chunk-NU5QKZAD.js +2 -0
- package/dist/chunks/chunk-QZANICYR.js +2 -0
- package/dist/chunks/chunk-RUWEOCXU.js +2 -0
- package/dist/chunks/chunk-SHTKCUQM.js +2 -0
- package/dist/chunks/chunk-UE5UCB2S.js +2 -0
- package/dist/chunks/chunk-UOSGJOHK.js +2 -0
- package/dist/chunks/chunk-VH3TSUK5.js +2 -0
- package/dist/chunks/chunk-XHKEEED5.js +2 -0
- package/dist/modules/ajax.js +1 -1
- package/dist/modules/component.js +1 -1
- package/dist/modules/data.js +1 -1
- package/dist/modules/html.js +1 -1
- package/dist/modules/router.js +1 -1
- package/dist/modules/state.js +1 -1
- package/dist/types/modules/animations/animation.d.ts +7 -0
- package/dist/types/modules/component/shorthand-methods.d.ts +1 -0
- package/dist/types/modules/component/state-helper.d.ts +22 -6
- package/dist/types/modules/data/types/basic-data.d.ts +31 -15
- package/dist/types/modules/data/types/deep-data/data-utils.d.ts +1 -15
- package/dist/types/modules/data/types/deep-data/deep-data.d.ts +10 -1
- package/dist/types/modules/data-binder/data-pub-sub.d.ts +38 -0
- package/dist/types/modules/router/utils.d.ts +11 -0
- package/dist/types/modules/state/state-tracker.d.ts +48 -6
- package/dist/types/shared/lru-cache.d.ts +95 -0
- package/dist/types/shared/objects.d.ts +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as k}from"./chunk-7RJQZEA3.js";import{a as pt,b as mt,c as gt,d as yt,e as C,f as y,g as A}from"./chunk-LX7KL4UO.js";import{a as L,b as ut}from"./chunk-ILT4B3VY.js";import{a as dt,c as I,d as ft,f as M}from"./chunk-E3C6NOMV.js";import{b as f,c as p}from"./chunk-R5DHGQZV.js";var q={items:new Map,add(s,t){return this.items.set(s,t),this},get(s){return this.items.get(s)??null}};f.addType("components",s=>{if(!s)return;let t=s.component;!t||!t.isUnit||(t.persistToken&&t.parent&&t.parent.removePersistedChild(t.persistToken),t.rendered===!0&&(t.prepareDestroy(),t.cleanUpAfterDestroy()))});var me=0,W=class{constructor(t,e,r){this.isUnit=!0,this.data=null,this.persist=null,this.nest=null,this.state=null,this.panel=null,this.parent=null,this.unitType=null,this._classId,this.id="",this.cached=[],this.init();let n,i;if(t==null)n={},i=[];else{let o=typeof t;o==="string"||o==="number"?(n={},i=[{tag:"text",textContent:t}]):Array.isArray(t)?(n={},i=t):(n=t||{},i=typeof e=="string"?[{tag:"text",textContent:e}]:e)}this.setupProps(n),this.children=i||[],this.persistedChildren={},this.persistedCount=0,this.onCreated(),this.rendered=!1,this.container=null}init(){this.id="cp-"+me++,this.unitType=this._classId||this.constructor.name.toLowerCase()}declareProps(){}addPersistedChild(t){let e=t.key,r=t.cache,n;r!=null&&e!=null?n="pk:"+r+":"+e:r!=null?n="pk:"+r:e!=null?n="pk:"+e:n="pc"+this.persistedCount++;let i=this.persistedChildren[n];return i&&t.unitType===i.unitType&&t.resumeScope(i),t.persistToken=n,this.persistedChildren[n]=t,n}removePersistedChild(t){this.rendered&&(!t||!this.persistedChildren[t]||delete this.persistedChildren[t])}setupProps(t){if(this.declareProps(),!(!t||typeof t!="object"))for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&(this[e]=t[e],e==="data"&&(this._externalData=!0))}getChildScope(){return this}getParentContext(){return this.parent?this.parent.getContext():null}setupContext(){if(this._contextResumed)return;let t=this.getParentContext(),e=this.setContext(t);if(e){this.context=e;return}this.context=t,this.setupAddingContext()}setupAddingContext(){let t=this.context,e=this.addContext(t);if(!e)return;let r=e[0];r&&(this.addingContext=!0,this.contextBranchName=r,this.addContextBranch(r,e[1]))}addContextBranch(t,e){this.context??={},this.context[t]=e}setContext(t){return null}addContext(t){return null}removeContext(){this.addingContext&&this.removeContextBranch(this.contextBranchName)}removeContextBranch(t){t&&delete this.context[t]}getContext(){return this.context}onCreated(){}render(){return{}}_cacheRoot(t){return t&&(t.id||(t.id=this.getId()),t.cache="panel",t)}_createLayout(){return this.render()}prepareLayout(){let t=this._createLayout();return this._cacheRoot(t)}afterBuild(){f.add(this.panel,"components",{component:this}),this.rendered=!0,this.afterLayout()}afterLayout(){this.afterSetup()}if(t,e){return t?e||t:null}map(t,e){let r=[];if(!t||t.length<1)return r;for(let n=0,i=t.length;n<i;n++){let o=e(t[n],n);r.push(o)}return r}removeAll(t){return M.removeAll(t)}getId(t){let e=this.id;return typeof t=="string"&&(e+="-"+t),e}cacheEle(t,e){e&&(this[e]=t,this.cached.push(e))}initialize(){this.setupContext(),this.beforeSetup()}beforeSetup(){}afterSetup(){}setup(t){this.setContainer(t),this.initialize()}setContainer(t){this.container=t}_remove(){this.prepareDestroy();let t=this.panel;t&&M.removeElement(t),this.cleanUpAfterDestroy()}cleanUpAfterDestroy(){this.panel=null,this.container=null;let t=this.cached;for(let e=0,r=t.length;e<r;e++)this[t[e]]=null;this.cached=[],this.persist!==!0&&(this.persistedChildren={},this.persistToken=null)}prepareDestroy(){this.persistedCount=0,this.rendered=!1;try{this.beforeDestroy()}catch(t){console.error("Error in beforeDestroy:",t)}this.removeContext(),this.data&&this.persist!==!0&&typeof this.data.unlink=="function"&&this.data.unlink()}beforeDestroy(){}destroy(){this._remove()}};var E=class{static resume(t,e){if(t._externalData){this._resumeExternal(t,e);return}this._resumeOwned(t,e)}static refresh(t){let e=t.setData();e&&t.data&&t.data.set(e.stage),this.refreshContext(t)}static refreshContext(t){let e=t.context;if(!e||!e.data)return;let r=t.getParentContext();if(!r||!r.data)return;let n=r.data.stage,i=e.data.stage,o=null;for(let a in n){if(!Object.prototype.hasOwnProperty.call(n,a))continue;let l=n[a];l!==i[a]&&(o===null&&(o={}),o[a]=l)}o!==null&&(typeof e.data._silentSet=="function"?e.data._silentSet(o):e.data.set(o))}static _resumeExternal(t,e){let r=t.setData();if(!r){t.data=e;return}if(e&&e.stage){let n=e._retainState||r._retainState,i=!n&&(e._refreshState||r._refreshState),o=this._buildExternalUpdates(e.stage,r.stage,n,i);L.isEmpty(o)||r._silentSet(o)}typeof r.flushPending=="function"&&r.flushPending(),t.data=r}static _buildExternalUpdates(t,e,r,n){let i={};for(let o in t){if(!Object.prototype.hasOwnProperty.call(t,o))continue;if(n){Object.prototype.hasOwnProperty.call(e,o)||(i[o]=t[o]);continue}let a=t[o];!r&&a==null||a!==e[o]&&(i[o]=a)}return i}static _resumeOwned(t,e){if(!t.data){t.data=e;return}if(e&&e._retainState){t.data=e;return}if(e&&e.stage){let r=e._refreshState||t.data._refreshState,n=this._buildOwnedUpdates(e.stage,t.data.stage,r);L.isEmpty(n)||t.data._silentSet(n)}t.data&&typeof t.data.flushPending=="function"&&t.data.flushPending()}static _buildOwnedUpdates(t,e,r){let n={};for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;if(r){Object.prototype.hasOwnProperty.call(e,i)||(n[i]=t[i]);continue}let o=t[i];o!=null&&o!==e[i]&&(n[i]=o)}return n}};var N=class{constructor(){this.events=[]}addEvents(t){let e=t.length;if(!(e<1))for(let r=0;r<e;r++){let n=t[r];this.on(n[0],n[1],n[2],n[3])}}on(t,e,r,n){p.on(t,e,r,n),this.events.push({event:t,obj:e,callBack:r,capture:n})}off(t,e,r,n){p.off(t,e,r,n);let i,o=this.events;for(let a=0,l=o.length;a<l;a++)if(i=o[a],i.event===t&&i.obj===e&&i.callBack===r&&i.capture===n){o.splice(a,1);break}}set(){let t=this.events;for(let e=0,r=t.length;e<r;e++){let n=t[e];p.on(n.event,n.obj,n.callBack,n.capture)}}unset(){let t=this.events;for(let e=0,r=t.length;e<r;e++){let n=t[e];p.off(n.event,n.obj,n.callBack,n.capture)}}reset(){this.unset(),this.events=[]}};var F=class{constructor(t,e){this.remoteStates=[],this.callBackStates=[];let r=this.convertStates(e);this.addStatesToTarget(t,r)}addStates(t,e){let r=this.convertStates(e);this.addStatesToTarget(t,r)}createState(t,e,r,n){return{action:t,state:e,callBack:r,targetId:n,token:null,callBackToken:null}}convertStates(t){let e=[];for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;if(r==="remotes"){this.setupRemoteStates(t[r],e);continue}let n=null,i=null,o=t[r];o&&typeof o=="object"&&(i=o.callBack,n=o.id||o.targetId,o=o.state),e.push(this.createState(r,o,i,n))}return e}setupRemoteStates(t,e){for(let r=0,n=t.length;r<n;r++){let i=t[r];if(i)for(let o in i){if(!Object.prototype.hasOwnProperty.call(i,o)||o==="id")continue;let a=null,l=i[o],c=l!==null?l:void 0;c&&typeof c=="object"&&(a=c.callBack,c=c.state),e.push(this.createState(o,c,a,i.id))}}}removeRemoteStates(t){let e=this.remoteStates;e&&this.removeActions(t,e)}removeLocalStates(t){let e=this.callBackStates;if(e)for(let r=0,n=e.length;r<n;r++){let i=e[r];i.callBackToken&&(t.off(i.action,i.callBackToken),i.callBackToken=null)}}removeActions(t,e){if(!(e.length<1))for(let r=0,n=e.length;r<n;r++){let i=e[r];i.token&&this.unbindRemoteState(t,i.token),i.targetId&&k.remove(i.targetId,i.action,i.token)}}restore(t){k.restore(t.id,t);let e=this.callBackStates;if(e)for(let n=0,i=e.length;n<i;n++){let o=e[n];o.callBackToken=t.on(o.action,o.callBack)}let r=this.remoteStates;if(r)for(let n=0,i=r.length;n<i;n++){let o=r[n];o.token=this.bindRemoteState(t,o.action,o.targetId)}}bindRemoteState(t,e,r){let n=k.getTarget(r);return t.link(n,e)}unbindRemoteState(t,e){t.unlink(e)}addStatesToTarget(t,e){let r=this.remoteStates;for(let n=0,i=e.length;n<i;n++){let o=e[n],a=this.addAction(t,o);o.targetId&&(o.token=a,r.push(o))}}addAction(t,e){let r,n=e.action,i=e.targetId;i&&(r=this.bindRemoteState(t,n,i)),typeof e.state<"u"&&t.addAction(n,e.state);let o=e.callBack;return typeof o=="function"&&(e.callBackToken=t.on(n,o),this.callBackStates.push(e)),r||null}};var x=class extends W{constructor(t,e,r){super(t,e,r),this.isComponent=!0,this.stateResumed=!1,this.stateTargetId=null,this._externalData=this._externalData??!1,this._setupData()}setData(){return null}_setupData(){if(this.data)return;let t=this.setData();t&&(this.data=t)}resumeScope(t){if(this._resumeData(t.data),this.state=t.state,this.stateHelper=t.stateHelper,this.persistedChildren=t.persistedChildren,t.context){let e=t.context.data;e&&e._refreshState===!0&&e._retainState!==!0||(this.context=t.context,this._contextResumed=!0)}this.id=t.id,this._refreshContextData()}_resumeData(t){E.resume(this,t)}_refreshData(){E.refresh(this)}_refreshContextData(){E.refreshContext(this)}initialize(){this.setupContext(),this.addStates(),this.beforeSetup()}afterLayout(){this.addEvents(),this.afterSetup()}setupStateTarget(t){let e=t||this.stateTargetId||this.id;this.state=k.attach(String(e))}setupStates(){return{}}addStates(){let t=this.state;if(t){this.stateResumed=!0,this.stateHelper?.restore(t);return}let e=this.setupStates();L.isEmpty(e)||this.setStateHelper(e)}setStateHelper(t={}){this.state||(this.setupStateTarget(),this.stateHelper=new F(this.state??{},t))}addState(t){!this.stateHelper||this.stateResumed===!0||this.stateHelper.addStates(this.state,t)}removeStates(){let t=this.state;if(!t)return;let e=this.stateHelper;e&&(e.removeRemoteStates(t),e.removeLocalStates(t)),k.detach(String(t.id)),this.stateResumed=!1}onFlush(t){let e=this.data??this?.context?.data??null;e&&e.onFlush(t)}setEventHelper(){this.events||(this.events=new N)}setupEvents(){return[]}addEvents(){let t=this.setupEvents();t.length<1||(this.setEventHelper(),this.events&&this.events.addEvents(t))}removeEvents(){let t=this.events;t&&t.reset()}prepareDestroy(){this.persistedCount=0,this.rendered=!1;try{this.beforeDestroy()}catch(t){console.error("Error in beforeDestroy:",t)}this.removeEvents(),this.removeStates(),this.removeContext(),this.data&&this.persist!==!0&&this.data.unlink()}};var xt={created:"onCreated",setStates:"setupStates",state:"setupStates",events:"setupEvents",before:"beforeSetup",render:"render",after:"afterSetup",destroy:"beforeDestroy"},St=(s,t)=>typeof s!="function"&&t==="setupStates"?()=>s:s;var rt=(s,t)=>{if(!s)return t;let e=Object.keys(s);for(let r=0,n=e.length;r<n;r++){let i=e[r],o=s[i],a=xt[i]||i;t[a]=St(o,a)}return t},ge=s=>rt(s,{}),ye=0,vt=(s,t)=>{class e extends s{}return Object.assign(e.prototype,t),e.prototype._classId="jot"+ye++,e},B=(s,t=x)=>{s||(s={});let e,r=typeof s;return r==="object"&&s.render?(e=ge(s),vt(t,e)):(e={render:r==="function"?s:()=>s},vt(t,e))};var st=(s,t)=>({attr:s,directive:t});var S=(s,t)=>({key:s,value:t});var wt=(s,t,e,r)=>({tag:s,attr:t,directives:e,children:r});var Ct=null,xe=()=>Ct||(Ct=q.get("watch")),v=class{static getTag(t){return t.tag||"div"}static setupChildren(t){t.nest&&(t.children=t.nest,delete t.nest)}static setElementContent(t,e,r,n){return t==="text"?(n.push({tag:"text",textContent:e}),!0):t==="html"||t==="innerHTML"?(r.push(S("innerHTML",e)),!0):!1}static setTextAsWatcher(t,e,r){t.push(st(S(e,A.getWatcherSettings(r,ft(e))),xe()))}static setButtonType(t,e,r){if(t==="button"){let n=e.type||"button";r.push(S("type",n))}}static parse(t,e){let r=[],n=[],i=t.tag||"div";i==="button"&&r.push(S("type",t.type||"button"));let o=[],a,l;for(let c in t){if(!Object.prototype.hasOwnProperty.call(t,c)||c==="tag"||(a=t[c],a==null))continue;if(c==="children"||c==="nest"){if(Array.isArray(a))for(let d=0;d<a.length;d++)o.push(a[d]);else o.push(a);continue}if((l=q.get(c))!==null){n.push(st(S(c,a),l));continue}let h=typeof a;if(h==="object"){if(A.isWatching(a)){this.setTextAsWatcher(n,c,a);continue}o.push(a);continue}if(h==="function"){let d=a,m=function(g){d.call(this,g,e)};m.originalCallback=d,r.push(S(c,m));continue}if(h==="string"&&a.includes("[[")){this.setTextAsWatcher(n,c,a);continue}if(c==="text"){o.push({tag:"text",textContent:a});continue}if(c==="html"||c==="innerHTML"){r.push(S("innerHTML",a));continue}r.push(S(c,a))}return wt(i,r,n,o)}};var D=class{build(t,e,r){}setupComponent(t,e,r){let n=r?.getChildScope();t.parent=n,n&&n.persist===!0&&t.persist!==!1&&(t.persist=!0,t.parent.addPersistedChild(t)),t.cache&&n&&(n[t.cache]=t),t.setup(e)}buildComponent(t){let e=t.prepareLayout(),r=this.build(e,t.container,t);return t.afterBuild(),t.component&&typeof t.onCreated=="function"&&t.onCreated(t),r}createComponent(t,e,r){return this.setupComponent(t,e,r),this.buildComponent(t),t}setDirectives(t,e,r){}removeNode(t){}removeAll(t){}};var Se=s=>{for(let e in s)if(e!=="tag"&&e!=="textContent")return!1;let t=s.textContent;return typeof t=="string"?t.indexOf("[[")===-1:typeof t!="object"},Q=class extends D{build(t,e,r){let n=y.createDocFragment();if(Array.isArray(t))for(let i=0,o=t.length;i<o;i++)this.buildElement(t[i],n,r);else this.buildElement(t,n,r);return e&&typeof e=="object"&&e.appendChild(n),n}buildElement(t,e,r){if(t){if(t.isUnit===!0){this.createComponent(t,e,r);return}this.createElement(t,e,r)}}createElement(t,e,r){if(t.tag==="text"&&Se(t)){let c=t.textContent;y.createText(c??"",e);return}let n=r?.getChildScope();if(t.data||t.state){this.createTempComponent(t,e,n);return}let i=v.parse(t,n),o=this.createNode(i,e,n);this.cache(o,t.cache,r);let a=i.children;for(let c=0,h=a.length;c<h;c++){let d=a[c];d!==null&&this.buildElement(d,o,r)}let l=i.directives;l.length&&this.setDirectives(o,l,n)}createTempComponent(t,e,r){let n={cache:t.cache,key:t.key,persist:t.persist,_externalData:!0,setData:()=>t.data,...rt(t.methods||{},{}),render(){return{...t,data:null,state:null,methods:null,key:null,persist:null}}};t.state&&(n.setupStateTarget=function(o){this.state=t.state});let i=new x(n);this.createComponent(i,e,r)}setDirectives(t,e,r){for(let n=0,i=e.length;n<i;n++)this.handleDirective(t,e[n],r)}handleDirective(t,e,r){e.directive(t,e.attr.value,r)}cache(t,e,r){r&&e&&r.cacheEle(t,e)}createNode(t,e,r){let n=t.tag;if(n==="text"){let i=t.attr[0],o=i?i.value:"";return y.createText(o,e)}else if(n==="comment"){let i=t.attr[0],o=i?i.value:"";return y.createComment(o,e)}return y.create(n,t.attr,e,r)}removeNode(t){y.removeElement(t)}removeAll(t){y.removeAll(t)}};var ve=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source"]),we=/[&<>"]/,nt=s=>{let t=typeof s=="string"?s:String(s);return we.test(t)?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):t},O=class{static create(t,e=[],r=""){let n="",i="";for(let o=0,a=e.length;o<a;o++){let l=e[o],c=l.key,h=l.value;if(c==="text"||c==="textContent"){n+=nt(h);continue}if(c==="html"||c==="innerHTML"){n+=h;continue}if(typeof h=="function")continue;let d=c+'="'+nt(h)+'"';i?i+=" "+d:i=d}return ve.has(t)?"<"+t+" "+i+" />":"<"+t+" "+i+">"+n+r+"</"+t+">"}static createText(t){return nt(t)}static createComment(t){return"<!-- "+t+" -->"}};var z=class extends D{build(t,e,r){if(Array.isArray(t)){let n="";for(let i=0,o=t.length;i<o;i++)n+=this.buildElement(t[i],r);return n}return this.buildElement(t,r)}createComponent(t,e,r){return this.setupComponent(t,e,r),this.buildComponent(t)}buildElement(t,e){return t?t.isUnit===!0?this.createComponent(t,{},e):this.createElement(t,e):""}createElement(t,e){let r=v.parse(t,e),n=r.children,i="";for(let o=0,a=n.length;o<a;o++){let l=n[o];l!==null&&(i+=this.buildElement(l,e))}return this.createNode(r,i)}createNode(t,e){let r=t.tag;if(r==="text"){let n=t.attr[0],i=n?n.value:"";return O.createText(i)}else if(r==="comment"){let n=t.attr[0],i=n?n.value:"";return O.createComment(i)}return O.create(r,t.attr,e)}removeAll(t){}};var j=class{static browserIsSupported(){return typeof window<"u"&&typeof document=="object"}static setup(){return this.browserIsSupported()?new Q:new z}};var T=j.setup(),Ce=s=>typeof s=="object"&&s.isUnit===!0,ke=s=>{let t=B(s);return t?new t:null},u=class{static render(t,e,r){return!t||(Ce(t)||(t=ke(t)),!t)?null:T.createComponent(t,e,r)}static build(t,e,r){return T.build(t,e,r)}static rebuild(t,e,r){return T.removeAll(e),this.build(t,e,r)}static setDirectives(t,e,r){T.setDirectives(t,e,r)}static createNode(t,e,r){return T.createNode(t,e,r)}static removeNode(t){T.removeNode(t)}static removeAll(t){T.removeAll(t)}};ut.augment({buildLayout(s,t,e){u.build(s,t,e)}});var it=[],Te=s=>it.indexOf(s)!==-1,be=s=>({tag:"script",src:s.src,async:!1,load(t){it.push(s.src);let e=s.load;e&&e()}}),Pe=s=>({tag:"link",rel:"stylesheet",type:"text/css",href:s.src,load(t){it.push(s.src);let e=s.load;e&&e()}}),$=class{constructor(t){this.percent=0,this.loaded=0,this.total=0,this.callBack=t||null}add(t){this.total++;let e,r=this.update.bind(this);t.indexOf(".css")!==-1?e=Pe({load:r,src:t}):e=be({load:r,src:t}),u.build(e,document.head)}addFiles(t){t&&t.forEach(e=>{Te(e)||this.add(e)})}update(){if(this.updateProgress()<100)return;let e=this.callBack;e&&e()}updateProgress(){return++this.loaded,this.percent=Math.floor(this.loaded/this.total*100)}};var Re=s=>s?typeof s?.prototype?.constructor=="function":!1,b=class{static process(t,e){let r=t.default;return r?e.callback?e.callback(r):(Re(r)?r=new r:r=r(),r.isUnit===!0&&(r.route=e.route,e.persist&&(r.persist=!0)),r):null}static render(t,e,r){let n=u.build(t,null,r),i=n.firstChild||t?.panel;return e.after(n),i}};var Y=class{static load(t,e,r){return t.then(n=>(e&&e(n),n)).catch(n=>{console.error("Error loading module:",n),r&&r(n)})}};var Ie=s=>({tag:"comment",textContent:"import placeholder",onCreated:s.onCreated}),P=new pt(100),Ae=s=>{if(P.has(s)){let r=P.get(s);return r&&typeof r.then!="function"?Promise.resolve(r):r}let t=typeof s,e;if(t==="string")e=import(s);else if(t==="function")e=s();else return s;return e.then(r=>{P.set(s,r)}).catch(()=>{P.delete(s)}),P.set(s,e),e},Ee=s=>{if(!P.has(s))return null;let t=P.get(s);return t&&typeof t.then=="function"?null:t||null},kt=B({declareProps(){this.loaded=!1,this.errorRoot=null,this.generation=0},render(){return Ie({onCreated:s=>{if(this.src){if(this.layout){this.layoutRoot=b.render(this.layout,this.panel,this.parent);return}if(this.depends){new $(()=>{this.loadAndRender(s)}).addFiles(this.depends);return}this.loadAndRender(s)}}})},loadAndRender(s){let t=this.generation,e=Ee(this.src);if(e){this.renderModule(s,e);return}Y.load(Ae(this.src),r=>{t===this.generation&&this.renderModule(s,r)},r=>{t===this.generation&&(this.loaded=!1,this.renderError(s,r))})},renderError(s,t){let e=()=>this.retry(s),r=this.fallback,n=typeof r=="function"?r(t,e):r||{class:"base-import-error",children:[{tag:"span",text:"Failed to load content."},{tag:"button",type:"button",text:"Retry",click:e}]};n&&(this.errorRoot=b.render(n,s,this.parent))},retry(s){this.removeErrorLayout(),this.loadAndRender(s)},removeErrorLayout(){this.errorRoot&&(u.removeNode(this.errorRoot),this.errorRoot=null)},renderModule(s,t){this.loaded=!0;let e=this.layout||b.process(t,{callback:this.callback,route:this.route,persist:this.persist});this.layout=e,this.layoutRoot=b.render(e,s,this.parent)},shouldUpdate(s){return this.updateLayout===!0?!0:this.updateLayout=s&&s.isUnit&&typeof s.update=="function"},updateModuleLayout(s){let t=this.layout;this.shouldUpdate(t)&&t&&t.update(s)},update(s){this.loaded===!0&&this.updateModuleLayout(s)},destroy(){this.generation++,this.removeErrorLayout(),this.layoutRoot&&(u.removeNode(this.layoutRoot),this.persist!==!0&&(this.layoutRoot=null,this.layout=null,this.loaded=!1,this.updateLayout=!1))}});var Tt=s=>{let t=typeof s;return(t==="string"||t==="function"||s instanceof Promise)&&(s={src:s}),new kt(s)};var Be=0,_=class{constructor(t){this.router=t,this.locationId="base-app-router-"+Be++,this.callBack=this.check.bind(this)}setup(){return this.addEvent(),this}check(t){}getScrollPosition(){return{x:window.scrollX,y:window.scrollY}}scrollTo(t){window.scrollTo(t.x,t.y)}addEvent(){return this}};var Pt=typeof navigator<"u"&&/iPad|iPhone|iPod/.test(navigator.userAgent||"")&&!window.MSStream,bt=()=>{Pt&&requestAnimationFrame(()=>requestAnimationFrame(()=>{let s=window.scrollX,t=window.scrollY;window.scrollTo(0,t+1),document.documentElement.offsetHeight,window.scrollTo(s,t)}))},J=class extends _{addEvent(){return p.on("popstate",window,this.callBack),Pt&&(this.pageShowCallBack=this.onPageShow.bind(this),p.on("pageshow",window,this.pageShowCallBack)),this}removeEvent(){return p.off("popstate",window,this.callBack),this.pageShowCallBack&&p.off("pageshow",window,this.pageShowCallBack),this}onPageShow(t){t.persisted&&bt()}check(t){let e=t.state;if(!e||e.location!==this.locationId)return!1;t.preventDefault(),t.stopPropagation(),this.router.checkActiveRoutes(e.uri);let r=e.scrollPosition;r&&this.scrollTo(r),bt()}createState(t,e={}){let r=this.getScrollPosition();return e=e===null?{}:e,{location:this.locationId,...e,scrollPosition:r,uri:t}}addState(t,e,r=!1){let n=window.history,i=n.state;if(i&&i.uri===t)return this;!r&&i&&i.location===this.locationId&&(i.scrollPosition=this.getScrollPosition(),n.replaceState(i,"",window.location.href));let o=this.createState(t,e);return r||(o.scrollPosition={x:0,y:0}),n[r===!1?"pushState":"replaceState"](o,null,t),this}};var K={removeSlashes(s){return typeof s!="string"?"":(s[0]==="/"&&(s=s.substring(1)),s[s.length-1]==="/"&&(s=s.substring(0,s.length-1)),s)},getHashUri(s){if(typeof s!="string")return"";let t=s.indexOf("#");return t===-1?"":s.substring(t+1)}};var V=class extends _{addEvent(){return p.on("hashchange",window,this.callBack),this}removeEvent(){return p.off("hashchange",window,this.callBack),this}check(t){this.router.checkActiveRoutes(K.getHashUri(t.newURL))}addState(t,e,r){return window.location.hash=t,this}};var X=class{static browserIsSupported(){return typeof window=="object"&&"history"in window&&"pushState"in window.history}static setup(t){return this.browserIsSupported()?new J(t).setup():new V(t).setup()}};var ot=class extends x{getChildScope(){return this.parent}},Rt=s=>B(s,ot);var Z=class{constructor(t,e){this.route=t,this.template=e.component,this.component=null,this.hasTemplate=!1,this.setup=!1,this.container=e.container,this.persist=e.persist,this.parent=e.parent}focus(t){this.setup===!1&&(this.route&&typeof this.route.flushPending=="function"&&this.route.flushPending(),this.create()),this.update(t)}setupTemplate(){let e=typeof this.template;e==="function"?this.initializeComponent():e==="object"&&this.initializeTemplateObject(),this.hasTemplate=!0}initializeComponent(){this.template=this.template(),this.initializeTemplateObject()}transferSettings(t){this.persist=this.persist&&t.persist!==!1,Object.assign(t,{route:this.route,persist:this.persist}),this.component=t}initializeTemplateObject(){let t=this.template;if(!t)return;t.isUnit||(this.template=new(Rt(t)));let e=this.template;this.transferSettings(e)}create(){if(this.setupTemplate(),!this.hasTemplate)return;this.setup=!0;let t=this.component;u.render(t,this.container,this.parent)}remove(){if(this.setup!==!0)return;this.setup=!1;let t=this.component;t&&(typeof t.destroy=="function"&&t.destroy(),this.component=null)}update(t){let e=this.component;e&&typeof e.update=="function"&&e.update(t)}};var It=s=>{if(!s.length)return null;let t={};for(let e=0,r=s.length;e<r;e++)t[s[e]]=null;return t},At=s=>{let t=[];if(!s)return t;let e=/[*?]/g;s=s.replace(e,"");let r=/:(.[^./?&($]+)\?*/g,n=s.match(r);if(n===null)return t;for(let i=0,o=n.length;i<o;i++){let a=n[i];a&&t.push(a.replace(":",""))}return t};var De=/(\/):[^/(]*?\?/g,Oe=/\//g,_e=/(\?\/+\*?)/g,Ue=/(:[^/?&($]+)/g,He=/(\*)/g,Le=s=>s.replace(De,t=>t.replace(Oe,"(?:$|/)")),Me=s=>(s=s.replace(_e,"?/*"),s.replace(Ue,t=>t.indexOf(".")<0?"([^/|?]+)":"([^/|?]+.*)")),qe=s=>s.replace(He,".*"),Ge=(s,t)=>s+=t[t.length-1]==="*"?"":"$",Et=s=>{if(!s)return"";let t=s;return t=Le(t),t=Me(t),t=qe(t),t=Ge(t,s),t};var We=0,Bt=(s,t="")=>{let e=s||"",r=typeof t=="string"&&t?t:e,n=null,i=[],o=r.match(/#\{([^}]+)\}/);o&&o[1]&&(n=o[1].trim(),r=r.replace(o[0],""),e=e.replace(o[0],""));let a=r.indexOf("?");if(a>-1){let h=r.substring(a+1);if(h.indexOf("=")>-1){let d=h.split("&");for(let g=0,R=d.length;g<R;g++){let H=d[g];if(!H)continue;let[fe,pe=""]=H.split("="),ht=(fe||"").trim();ht&&i.push({key:ht,value:(pe||"").trim()})}r=r.substring(0,a);let m=e.indexOf("?");m>-1&&(e=e.substring(0,m))}}let l=n!==null||i.length>0;return l&&!r&&(e="*"),{uriPath:e,requiredHash:n,requiredQuery:i,hasConditions:l}},Ne=s=>{if(!s)return"";let t=s.indexOf("?"),e=s.indexOf("#"),r=s.length;return t>-1&&(r=t),e>-1&&e<r&&(r=e),s.substring(0,r)},Fe=s=>{if(!s)return"";let t=s.indexOf("#");return t===-1?"":s.substring(t+1)},Qe=s=>{if(!s)return"";let t=s.indexOf("?");if(t===-1)return"";let e=s.indexOf("#",t);return e===-1?s.substring(t+1):s.substring(t+1,e)},tt=class extends gt{constructor(t,e){let r=t.baseUri,i=Bt(r,t.rawUri).uriPath,o=At(i),a=It(o),l=super(a);return this.uri=r,this.matchUri=i,this.paramKeys=o,this.titleCallBack=e,this.setupRoute(t),this.set("active",!1),l}setup(){this.stage={},this.routeId=null,this.uri=null,this.rawUri=null,this.matchUri="",this.uriQuery=/$^/,this.controller=null,this.paramKeys=[],this.requiredHash=null,this.requiredQuery=[],this.hasConditions=!1,this.titleCallBack=()=>{},this.path=null,this.referralPath=null,this.params=null,this.callBack=null,this.title=null,this.preventScroll=!1,this.scrollTo=null}setupRoute(t){this.routeId=t.id||"bs-rte-"+We++,this.rawUri=t.rawUri||null,this.path=null,this.referralPath=null;let e=Bt(this.uri,this.rawUri||"");this.matchUri=e.uriPath,this.requiredHash=e.requiredHash,this.requiredQuery=e.requiredQuery,this.hasConditions=e.hasConditions;let r=Et(this.matchUri);this.uriQuery=new RegExp("^"+r),this.params=null,this.setupComponentHelper(t),this.callBack=t.callBack,this.title=t.title,this.preventScroll=t.preventScroll||!1,this.scrollTo=t.scrollTo||null}setTitle(t){this.title=t,this.titleCallBack(this,t)}deactivate(){this.set("active",!1);let t=this.controller;t&&t.remove()}getLayout(t){if(t.component)return t.component;let e=t.import;return e?Tt(e):null}setupComponentHelper(t){let e=this.getLayout(t);if(!e)return;let{container:r,persist:n,parent:i}=t,o={component:e,container:r,persist:n,parent:i},a=mt(this);this.controller=new Z(a,o)}resumeRoute(t){let e=this.controller;e&&(e.container=t)}setPath(t,e){this.path=t,this.referralPath=e}select(){this.set("active",!0);let t=this.stage,e=this.callBack;typeof e=="function"&&e(t);let r=this.controller;r&&r.focus(t);let n=this.path;if(!n)return;let i=n.split("#")[1];i&&this.scrollToId(i)}scrollToId(t){if(!t)return;let e=document.getElementById(t);e&&e.scrollIntoView(!0)}match(t){let e=!1,r=Ne(t),n=this.uriQuery||/$^/,i=r.match(n);return i===null?(this.resetParams(),e):Array.isArray(i)?this.matchConditions(t)?(this.setParams(i,1),e=i,e):(this.resetParams(),!1):e}matchConditions(t){if(!this.hasConditions)return!0;if(this.requiredHash!==null&&Fe(t)!==this.requiredHash)return!1;let e=this.requiredQuery||[];if(e.length>0){let r=Qe(t);if(!r)return!1;let n=new URLSearchParams(r);for(let i=0,o=e.length;i<o;i++){let a=e[i];if(!n.has(a.key)||n.get(a.key)!==a.value)return!1}}return!0}resetParams(){this.stage={}}setParams(t,e=0){if(!Array.isArray(t))return;let r=this.paramKeys;if(!r)return;let n={};for(let i=0,o=r.length;i<o;i++){let a=r[i];typeof a<"u"&&(n[a]=t[i+e])}this.set(n)}getParams(){return this.stage}};var ze=s=>{let t=/\w\S*/;return s.replace(t,e=>e.charAt(0).toUpperCase()+e.substring(1).toLowerCase())},je=s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),$e=(s,t)=>{if(s.indexOf(":")===-1)return s;let e=t.stage;for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let n=new RegExp(":"+je(r),"gi");s=s.replace(n,()=>e[r])}return s},Ye=(s,t)=>t&&(typeof t=="function"&&(t=t(s.stage)),t=$e(t,s),ze(t)),Je=(s,t)=>(t!==""&&(s+=" - "+t),s),Dt=(s,t,e)=>t&&(t=Ye(s,t),Je(t,e));var Ke=()=>typeof window<"u"?window.location:{},at=class{constructor(){this.version="1.0.2",this.baseURI="/",this.title="",this.lastPath=null,this.path=null,this.lastMatchedRoute=null,this.lastScrollGroup=null,this.currentGroupId=null,this.scrollWaitToken=0,this.history=null,this.callBackLink=null,this.location=Ke(),this.routes=[],this.switches=new Map,this.switchCount=0,this.data=new yt({path:""})}setupHistory(){this.history=X.setup(this)}createRoute(t){let e=t.uri||"*";return t.rawUri=e,t.baseUri=this.createURI(e),new tt(t,this.updateTitle.bind(this))}add(t){if(typeof t!="object"){let r=arguments;t={uri:r[0],component:r[1],callBack:r[2],title:r[3],id:r[4],container:r[5]}}let e=this.createRoute(t);return this.addRoute(e),e}addRoute(t){this.routes.push(t),this.checkRoute(t,this.getPath())}resume(t,e){t.resumeRoute(e),this.addRoute(t)}getBasePath(){if(!this.basePath){let t=this.baseURI||"";t[t.length-1]!=="/"&&(t+="/"),this.basePath=t}return this.basePath}createURI(t){let e=this.getBasePath(),r=K.removeSlashes(t);return r=r.replace(/^(?:\.\/)+/,""),r==="."&&(r=""),e+r}getRoute(t){let e=this.routes,r=e.length;if(r>0)for(let n=0;n<r;n++){let i=e[n];if(i.uri===t)return i}return null}getRouteById(t){let e=this.routes,r=e.length;if(r>0)for(let n=0;n<r;n++){let i=e[n];if(i.routeId===t)return i}return!1}removeRoute(t){let e=this.routes,r=e.indexOf(t);r>-1&&e.splice(r,1),this.lastMatchedRoute===t&&(this.lastMatchedRoute=null),t&&typeof t.deactivate=="function"&&t.deactivate()}addSwitch(t){let e=this.switchCount++,r=this.getSwitchGroup(e);for(let n=0,i=t.length;n<i;n++){let o=t[n];if(!o)continue;let a=this.createRoute(o);r.push(a)}return this.checkGroupForRegistration(e,r),e}resumeSwitch(t,e){let r=this.switchCount++,n=this.getSwitchGroup(r);for(let i=0,o=t.length;i<o;i++){let l=t[i].component.route;l.resumeRoute(e),n.push(l)}return this.checkGroupForRegistration(r,n),r}checkGroupForRegistration(t,e){let r=this.scrollIntent,n=this.currentGroupId;this.scrollIntent=null,this.currentGroupId=t,this.checkGroup(e,this.getPath()),this.currentGroupId=n;let i=this.scrollIntent;i&&i.type==="target"&&i.groupId!==null&&i.groupId!==void 0&&(this.lastScrollGroup=i.groupId),this.scrollIntent=r}getSwitchGroup(t){let e=this.switches.get(t);if(e)return e;let r=[];return this.switches.set(t,r),r}removeSwitch(t){this.switches.delete(t)}remove(t){t=this.createURI(t);let e=this.getRoute(t);return e&&this.removeRoute(e),this}setup(t,e){this.baseURI=t||"/",this.updateBaseTag(this.baseURI),this.title=typeof e<"u"?e:"",this.setupHistory(),this.data.path=this.getPath(),this.callBackLink=this.checkLink.bind(this),p.on("click",document,this.callBackLink);let r=this.getEndPoint();return this.navigate(r,null,!0),this}updateBaseTag(t){let e=document.getElementsByTagName("base");e.length&&(e[0].href=t)}getParentLink(t){return t.closest("a")}checkLink(t){if(t.ctrlKey===!0)return!0;let e=t.target.closest("a");if(!e||e.target==="_blank"||e.dataset.cancelRoute)return!0;let r=e.getAttribute("href");if(r!==null){let n=this.baseURI,i=n!=="/"?r.replace(n,""):r,o=e.dataset.replace==="true";return this.navigate(i,null,o),t.preventDefault(),t.stopPropagation(),!1}}reset(){let t=this.routes;for(let e=0,r=t.length;e<r;e++){let n=t[e];n&&typeof n.deactivate=="function"&&n.deactivate()}return this.routes=[],this.switches=new Map,this.switchCount=0,this.lastMatchedRoute=null,this}activate(){return this.checkActiveRoutes(),this}navigate(t,e,r){return t=this.createURI(t),this.history.addState(t,e,r),this.updatePath(),this.activate(),this}updatePath(){let t=this.getPath();this.data.path=t}updateTitle(t){if(!t||!t.title)return this;let e=t.title;return document.title=Dt(t,e,this.title),this}checkActiveRoutes(t){if(this.lastPath=this.path,t=t||this.getPath(),this.path=t,this.updatePath(),this.scrollIntent=null,this.scrollWaitToken++,this.lastMatchedRoute&&this.check(this.lastMatchedRoute,t))this.select(this.lastMatchedRoute);else{let e=this.routes,r=e.length;for(let n=0;n<r;n++){let i=e[n];typeof i>"u"||this.checkRoute(i,t)}}this.checkSwitches(t),this.applyScrollIntent()}checkSwitches(t){let e=this.switches;for(let[r,n]of e.entries())this.currentGroupId=r,this.checkGroup(n,t);this.currentGroupId=null}checkGroup(t,e){let r=t.length;if(!r)return;let n=null;for(let a=0;a<r;a++)if(t[a].get("active")){n=t[a];break}let i=!1;n&&(i=n.match(e)!==!1);let o;for(let a=0;a<r;a++){let l=t[a];if(typeof l>"u")continue;(l===n?i:l.match(e))!==!1&&o===void 0&&l.controller&&(o=l)}if(!o){n&&n!==t[0]&&n.deactivate(),this.select(t[0],!0);return}this.select(o),n&&n!==o&&n.deactivate();for(let a=0;a<r;a++){let l=t[a];l&&l!==o&&l!==n&&l.deactivate()}}checkRoute(t,e){let r=this.check(t,e);return r!==!1?(this.select(t),this.lastMatchedRoute=t):t.deactivate(),r}check(t,e){return t?(e=e||this.getPath(),t.match(e)!==!1):!1}select(t,e){t&&(t.setPath(this.path,this.lastPath),t.select(),this.updateTitle(t),e!==!0&&(t.scrollTo?this.scrollIntent={type:"target",selector:t.scrollTo,groupId:this.currentGroupId}:t.preventScroll!==!0&&!this.scrollIntent&&(this.scrollIntent={type:"top"})))}applyScrollIntent(){let t=this.scrollIntent;if(this.scrollIntent=null,!t)return;if(t.type==="top"){this.lastScrollGroup=null,this.checkToScroll(),this.reassertScrollTop();return}if(t.type!=="target")return;let e=t.groupId!==null&&t.groupId!==void 0,r=e&&this.lastScrollGroup===t.groupId;r||(typeof window<"u"&&window.scrollTo(0,0),this.reassertScrollTop()),this.lastScrollGroup=e?t.groupId:null,r&&this.scrollToTarget(t.selector)}reassertScrollTop(){if(typeof window>"u"||typeof requestAnimationFrame>"u")return;let t=++this.scrollWaitToken;requestAnimationFrame(()=>{t===this.scrollWaitToken&&(window.scrollY>0||window.pageYOffset>0)&&window.scrollTo(0,0)})}scrollToTarget(t){if(typeof t!="string"||typeof document>"u")return;let e=a=>{let l=window.getComputedStyle(a),c=l.position==="sticky",h;if(c){let g=a.style.position;a.style.position="static",h=a.getBoundingClientRect().top+window.scrollY,a.style.position=g}else h=a.getBoundingClientRect().top+window.scrollY;let d=c&&parseFloat(l.top)||0,m=h-d;window.scrollY>m&&window.scrollTo(0,m)};if(typeof requestAnimationFrame>"u"){let a=document.querySelector(t);a&&e(a);return}let r=++this.scrollWaitToken,n=30,i=0,o=()=>{if(r!==this.scrollWaitToken)return;let a=document.querySelector(t);if(a){e(a);return}++i<n&&requestAnimationFrame(o)};requestAnimationFrame(o)}checkToScroll(){this.shouldScrollToTop()&&window.scrollTo(0,0)}cleanPath(t){return t?t.split("?")[0].split("#")[0]:"/"}shouldScrollToTop(){let t=this.cleanPath(this.getPath()),r=this.cleanPath(this.lastPath).split("/"),n=t.split("/");if(r.length!==n.length)return!0;let i=r[r.length-1],o=n[n.length-1];return i!==o}getEndPoint(){return this.getPath().replace(this.baseURI,"")||"/"}destroy(){typeof this.callBackLink=="function"&&p.off("click",document,this.callBackLink);let t=this.history;t&&typeof t.removeEvent=="function"&&t.removeEvent()}getPath(){let t=this.location,e=this.path=t.pathname;return this.history.type==="hash"?t.hash.replace("#",""):e+t.search+t.hash}},w=new at;var Ot=(s,t)=>({attr:s,value:t}),Ve=(s,t)=>{if(!t.startsWith(s))return!1;let e=t[s.length];return e===void 0||e==="/"||e==="#"||e==="."||e==="?"},ct=class extends x{beforeSetup(){this.selectedClass=this.activeClass||"active"}render(){let t=this.href,e=this.text,r=this.setupWatchers(t,e);return{tag:"a",class:this.class||this.className||null,onState:["selected",{[this.selectedClass]:!0}],href:this.getString(t),text:this.getString(e),nest:this.nest||this.children,dataStateSet:this.dataSet,"data-replace":this.replace?"true":null,watch:r}}getLinkPath(){return this?.panel?.pathname||null}getString(t){let e=typeof t;return e!=="object"&&e!=="undefined"?t:null}setupWatchers(t,e){let r=this.exact===!0,n=w.data,i=[];t&&typeof t=="object"&&i.push(Ot("href",t)),e&&typeof e=="object"&&i.push(Ot("text",e));let o=null,a="",l="";return i.push({value:["[[path]]",n],callBack:(c,h)=>{if(typeof h.pathname>"u")return;let d=h.getAttribute("href");if(d!==o){o=d;let g=h.pathname+h.search+h.hash;a=g,l=h.hash||h.search?g:h.pathname}let m=r?c===a:Ve(l,c);this.update(m)}}),i}setupStates(){return{selected:!1}}update(t){this.state&&(this.state.selected=t)}};var _t=(s,t,e=null)=>{if(!s)return;let r=null,n=!1,i=()=>{n||(n=!0,r&&(clearTimeout(r),r=null),p.off("animationend",s,o),s&&s.classList.remove(t),e&&e())},o=a=>{a.target===s&&i()};p.on("animationend",s,o),requestAnimationFrame(()=>{if(!s){i();return}s.classList.add(t);try{let a=window.getComputedStyle(s),l=parseFloat(a.animationDuration)*1e3||1e3,c=parseFloat(a.animationDelay)*1e3||0;r=setTimeout(i,l+c+100)}catch{r=setTimeout(i,1e3)}})},Ut=(s,t,e)=>{_t(s,t)},Ht=(s,t,e)=>{let r=()=>{s&&s.remove&&s.remove()};Xe(s,()=>_t(s,t,r),e)};f.addType("manual-destroy",s=>{if(!s)return!1;s.callBack(s.ele,s.parent)});var Xe=(s,t,e)=>{f.add(s,"manual-destroy",{ele:s,callBack:t,parent:e})};var G=(s,t,e,r)=>{if(Array.isArray(e[0])){e.forEach(n=>{n&&G(s,t,n,r)});return}Ze(s,t,e,r)},Ze=(s,t,e,r)=>{let n,i;if(e.length<3?[n,i]=e:[t,n,i]=e,!t||!n)return;if(typeof t.on!="function"){console.warn('Watcher directive: Data source does not have an "on" method. Make sure your component has data, state, or context.data initialized before using watchers like onSet, watch, or [[prop]] syntax.',s,t);return}let o=tr(s,n,i,r);I.watch(s,t,n,o)},tr=(s,t,e,r)=>typeof e=="object"?n=>{sr(s,e,n)}:n=>{rr(s,e,t,n,r)},Lt=new WeakSet,er=(s,t,e)=>{!s||!s.isUnit&&!s.isComponent||Lt.has(e)||Lt.add(e)},rr=(s,t,e,r,n)=>{let i=t(r,s,n);switch(typeof i){case"object":if(i===null)break;er(i,e,s),u.rebuild(i,s,n);break;case"string":let o=dt(s);if(o!=="textContent"){s.setAttribute(o,i);break}M.addHtml(s,i);break}},sr=(s,t,e)=>{let r=Object.keys(t);for(let n=0,i=r.length;n<i;n++){let o=r[n];o&&(t[o]===e?s.classList.add(o):s.classList.remove(o))}};var U=(s,t,e)=>{let r=C(e);G(s,r,t,e)};var Mt=(s,t,e)=>{t&&s.setAttribute("role",t)},nr=s=>(t,e)=>{let r=t?"true":"false";e.setAttribute(s,r)},qt=(s,t,e)=>{if(!t)return;let r=t.role;r&&(s.setAttribute("role",r),t.role=null);let n=Object.keys(t);for(let i=0,o=n.length;i<o;i++){let a=n[i],l=t[a];if(l===null)continue;let c="aria-"+a;if(Array.isArray(l)){let h=l.slice();h.push(nr(c)),U(s,h,e)}else s.setAttribute(c,l)}};var Gt=(s,t,e)=>{if(!t)return;let r=v.parse(t,e);y.addAttributes(s,r.attr,e),u.setDirectives(s,r.directives,e)};f.addType("context",s=>{if(!s)return!1;s.parent.removeContextBranch(s.branch)});var lt=s=>s?s.getContext():null,Wt=(s,t,e)=>{if(typeof t!="function")return;let r=lt(e),n=t(r);Gt(s,n,e)},Nt=(s,t,e)=>{if(typeof t!="function")return;let r=lt(e);t(r)},Ft=(s,t,e)=>{if(typeof t!="function"||!e)return;let r=lt(e),n=t(r);if(!n)return;let i=n[0];i&&(e.addContextBranch(i,n[1]),ir(s,i,e))},ir=(s,t,e)=>{f.add(s,"context",{branch:t,parent:e})};var Qt=(s,t,e)=>{};var zt=(s,t,e)=>{if(!e)return;let r=e._layout?e._layout:e.render();console.log("Debug: ","ele: ",s),console.log("Data: ",t),console.log("Layout: ",r),console.log("parent: ",e)};var jt=(s,t,e)=>{},$t=(s,t,e)=>{if(!t||!e)return;let r=t(e,s);r&&u.build(r,s,e)},Yt=(s,t,e)=>{if(!t||!e)return;let r=e.getId(t);s.id=r},Jt=(s,t,e)=>{if(!t||!e)return;let r=t(e.data,s);r&&u.build(r,s,e)},Kt=(s,t,e)=>{if(!t||!e)return;let r=t(e.state,s);r&&u.build(r,s,e)},Vt=(s,t,e)=>{if(!t||!e)return;let r=e.state,n=t(r);if(!e.state){e.setStateHelper(n);return}e.addState(n)},Xt=(s,t,e)=>{if(!(!t||!e)){if(e.events||e.setEventHelper(),t[2]){let r=t[2];t[2]=n=>{r(n,e)}}e.events.on(t[0],t[1],t[2],t[3])}};var Zt=(s,t,e)=>{let r,n,i;if(typeof t=="string"){if(r=C(e),!r)return;n=t}else if(Array.isArray(t))if(typeof t[0]!="object"){let o=C(e);if(!o)return;r=o,n=t[0],i=t[1]}else[r,n,i]=t;I.bind(s,r,n,i)};var et=(s,t,e)=>{G(s,e.state,t,e)};var te=s=>(t,e)=>{let[r,n,i="active"]=s,o=t===n?i:"";e.dataset[r]=o},ee=(s,t,e)=>{if(!t)return;let r=t.length-1,n=t[r],i=t.slice(0,r);i.push(te(n)),U(s,i,e)},re=(s,t,e)=>{if(!t)return;let r=t.length-1,n=t[r],i=t.slice(0,r);i.push(te(n)),et(s,i,e)};var se=s=>{for(let t=0,e=s.length;t<e;t++){let r=s[t];r&&r.remove()}s.length=0};f.addType("forScopes",s=>{if(!s)return!1;se(s.scopes)});var ne=(s,t,e)=>{let r,n,i,o;if(typeof t[0]=="string"||t.length<3){let h=C(e);if(!h)return;r=h,[n,i,o]=t}else[r,n,i,o]=t;let a=o!==!1,l=n+"[",c=a?{scopes:[]}:null;c&&f.add(s,"forScopes",c),I.watch(s,r,n,h=>{if(u.removeAll(s),c&&se(c.scopes),!h||h.length<1)return;let d=[];for(let m=0,g=h.length;m<g;m++){let R=a?r.scope(l+m+"]"):null;R&&c&&c.scopes.push(R);let H=i(h[m],m,R,d);H!==null&&d.push(H)}return u.build(d,s,e)})};var ie=(s,t,e)=>{let r=t[0];if(!r||r.length<1)return;let n=t[1],i=[];for(let o=0,a=r.length;o<a;o++){let l=r[o];if(!l)continue;let c=n(l,o);c!==null&&i.push(c)}u.build(i,s,e)};var oe=(s,t,e)=>{t(s,e)};f.addType("destroyed",s=>{if(!s)return!1;s.callBack(s.ele,s.parent)});var ae=(s,t,e)=>{or(s,t,e)},or=(s,t,e)=>{f.add(s,"destroyed",{ele:s,callBack:t,parent:e})};var ce=(s,t,e)=>{if(t)if(Array.isArray(t)&&typeof t[0]!="string")for(let r=0,n=t.length;r<n;r++)A.setup(s,t[r],e);else A.setup(s,t,e)};f.addType("routes",s=>{if(!s)return!1;let t=s.route;t&&w.removeRoute(t)});var he=(s,t,e)=>{if(t)if(Array.isArray(t))for(let r=0,n=t.length;r<n;r++){let i=t[r];i&&le(s,i,e)}else le(s,t,e)},le=(s,t,e)=>{t.container=s,t.parent=e;let r=w.add(t);ar(s,r)},ar=(s,t)=>{f.add(s,"routes",{route:t})};var ue=(s,t,e)=>{};f.addType("switch",s=>{if(!s)return!1;let t=s.id;w.removeSwitch(t)});var de=(s,t,e)=>{let r=t[0];for(let i=0,o=t.length;i<o;i++){let a=t[i];a&&(a.container=s,a.parent=e)}let n=w.addSwitch(t);cr(s,n)},cr=(s,t)=>{f.add(s,"switch",{id:t})};q.add("cache",jt).add("onCreated",oe).add("onDestroyed",ae).add("bind",Zt).add("data",Qt).add("state",ue).add("onSet",U).add("onState",et).add("animateIn",Ut).add("animateOut",Ht).add("watch",ce).add("useParent",$t).add("useData",Jt).add("useState",Kt).add("getId",Yt).add("addState",Vt).add("addEvent",Xt).add("map",ie).add("for",ne).add("useContext",Nt).add("addContext",Ft).add("context",Wt).add("role",Mt).add("aria",qt).add("route",he).add("debug",zt).add("dataSet",ee).add("dataStateSet",re).add("switch",de);export{q as a,W as b,x as c,xt as d,St as e,B as f,u as g,Tt as h,ct as i,at as j,w as k};
|
|
2
|
+
//# sourceMappingURL=chunk-VH3TSUK5.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as g}from"./chunk-3X6POBEJ.js";var i=class extends g{setup(){this.stage={}}addAction(t,e){return typeof e<"u"&&this.set(t,e),this}getState(t){return this.get(t)}removeAction(t,e){if(e)return this.off(t,e),this;let s=this.stage;return typeof s[t]<"u"&&delete s[t],this}};var n=class extends i{constructor(t){super(),this.id=t}setup(){this.stage={},this.id=""}};var h=class{static targets=new Map;static ownerCounts=new Map;static restore(t,e){this.targets.set(t,e),this.addOwner(t)}static getTarget(t){return this.targets.has(t)||this.targets.set(t,new n(t)),this.targets.get(t)}static attach(t){let e=this.getTarget(t);return this.addOwner(t),e}static addOwner(t){this.ownerCounts.set(t,(this.ownerCounts.get(t)||0)+1)}static detach(t){let e=this.ownerCounts.get(t);if(e===void 0)return;if(e>1){this.ownerCounts.set(t,e-1);return}this.ownerCounts.delete(t);let s=this.targets.get(t);s&&(s.remove(),this.targets.delete(t))}static getActionState(t,e){return this.getTarget(t).get(e)}static add(t,e,s){let r=this.getTarget(t);return e&&r.addAction(e,s),r}static addAction(t,e,s){return this.add(t,e,s)}static removeAction(t,e,s){if(s){this.off(t,e,s);return}let r=this.getTarget(t);r&&e&&r.removeAction(e)}static on(t,e,s){let r=this.getTarget(t);return e?r.on(e,s):null}static off(t,e,s){this.remove(t,e,s)}static remove(t,e,s){let r=this.targets,o=r.get(t);if(o){if(e){o.off(e,s);return}this.targets.delete(t),this.ownerCounts.delete(t)}}static set(t,e,s){this.getTarget(t).set(e,s)}};export{i as a,h as b};
|
|
2
|
+
//# sourceMappingURL=chunk-XHKEEED5.js.map
|
package/dist/modules/ajax.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,d as r}from"../chunks/chunk-
|
|
1
|
+
import{c as e,d as r}from"../chunks/chunk-ILT4B3VY.js";import"../chunks/chunk-R5DHGQZV.js";export{r as Ajax,e as XhrRequest};
|
|
2
2
|
//# sourceMappingURL=ajax.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a
|
|
1
|
+
import{a,b as A,c as i,d as f,e as d,f as P,g as C,h as S}from"../chunks/chunk-RUWEOCXU.js";import"../chunks/chunk-QZANICYR.js";import{g as s}from"../chunks/chunk-4T7YWUSM.js";import"../chunks/chunk-ILT4B3VY.js";import"../chunks/chunk-E3C6NOMV.js";import"../chunks/chunk-R5DHGQZV.js";var D=r=>typeof r!="string"?r:m(r),m=r=>[{tag:"text",textContent:r}],l=()=>({props:{},children:[]}),h=r=>({props:{},children:m(r)}),u=r=>({props:{},children:r}),x=r=>({props:r[0]||{},children:D(r[1])});var O=r=>({props:{watch:r},children:[]}),b=r=>{if(r.length===0)return l();let t=r[0],e=typeof t;if(e==="string"||e==="number")return h(t);if(Array.isArray(t))return s.isWatching(t)?O(t):u(t);let o=r[1]??r[0]??[];return o&&Array.isArray(o)&&s.isWatching(o)&&(r[0]=Array.isArray(r[0])?{}:r[0],r[0].watch=o,r[1]=[]),x(r)},H=r=>(...t)=>{let{props:e,children:o}=b(t);return r(e,o)};var T=(r,t)=>{let e=Object.keys(r);for(let o=0,n=e.length;o<n;o++){let p=e[o],y=r[p],c=f[p]||p;t.prototype[c]=d(y,c)}return t},W=0,j=r=>{let t=class extends r{};return t.prototype._classId="pod"+W++,t},I=(r,t=i)=>{if(!r)return null;let e=j(t),o={},n=r(o);return T(o,e),e.prototype.render=n,e};export{H as Atom,C as Builder,i as Component,a as Directives,S as Import,P as Jot,I as Pod,A as Unit};
|
|
2
2
|
//# sourceMappingURL=component.js.map
|
package/dist/modules/data.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{d as a,h as e,i as o}from"../chunks/chunk-4T7YWUSM.js";import"../chunks/chunk-ILT4B3VY.js";import"../chunks/chunk-E3C6NOMV.js";import"../chunks/chunk-R5DHGQZV.js";export{a as Data,e as Model,o as SimpleData};
|
|
2
2
|
//# sourceMappingURL=data.js.map
|
package/dist/modules/html.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{f as m}from"../chunks/chunk-
|
|
1
|
+
import{f as m}from"../chunks/chunk-E3C6NOMV.js";import"../chunks/chunk-R5DHGQZV.js";export{m as Html};
|
|
2
2
|
//# sourceMappingURL=html.js.map
|
package/dist/modules/router.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{i as r,j as o,k as t}from"../chunks/chunk-RUWEOCXU.js";import"../chunks/chunk-QZANICYR.js";import"../chunks/chunk-4T7YWUSM.js";import"../chunks/chunk-ILT4B3VY.js";import"../chunks/chunk-E3C6NOMV.js";import"../chunks/chunk-R5DHGQZV.js";export{r as NavLink,o as Router,t as router};
|
|
2
2
|
//# sourceMappingURL=router.js.map
|
package/dist/modules/state.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as r,b as t}from"../chunks/chunk-
|
|
1
|
+
import{a as r,b as t}from"../chunks/chunk-QZANICYR.js";import"../chunks/chunk-4T7YWUSM.js";import"../chunks/chunk-ILT4B3VY.js";import"../chunks/chunk-E3C6NOMV.js";import"../chunks/chunk-R5DHGQZV.js";export{r as State,t as Store};
|
|
2
2
|
//# sourceMappingURL=state.js.map
|
|
@@ -29,6 +29,13 @@ export class Animation {
|
|
|
29
29
|
* @returns {void}
|
|
30
30
|
*/
|
|
31
31
|
addMovement(property: any): void;
|
|
32
|
+
/**
|
|
33
|
+
* Step every movement of the animation.
|
|
34
|
+
*
|
|
35
|
+
* @param {number} delta - The eased progress of the animation (0-1).
|
|
36
|
+
* @returns {void}
|
|
37
|
+
*/
|
|
38
|
+
step(delta: number): void;
|
|
32
39
|
/**
|
|
33
40
|
* Setup the movements for the animation.
|
|
34
41
|
*
|
|
@@ -18,6 +18,14 @@ export class StateHelper {
|
|
|
18
18
|
* @type {Array<any>} remoteStates
|
|
19
19
|
*/
|
|
20
20
|
remoteStates: Array<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Actions that registered a callBack on the local target.
|
|
23
|
+
* The subscription token has to be kept or the callBack can
|
|
24
|
+
* never be released.
|
|
25
|
+
*
|
|
26
|
+
* @type {Array<any>} callBackStates
|
|
27
|
+
*/
|
|
28
|
+
callBackStates: Array<any>;
|
|
21
29
|
/**
|
|
22
30
|
* This will add states to a state.
|
|
23
31
|
*
|
|
@@ -60,6 +68,14 @@ export class StateHelper {
|
|
|
60
68
|
* @returns {void}
|
|
61
69
|
*/
|
|
62
70
|
removeRemoteStates(state: object): void;
|
|
71
|
+
/**
|
|
72
|
+
* This will release the action callBacks registered on the
|
|
73
|
+
* local target.
|
|
74
|
+
*
|
|
75
|
+
* @param {object} state
|
|
76
|
+
* @returns {void}
|
|
77
|
+
*/
|
|
78
|
+
removeLocalStates(state: object): void;
|
|
63
79
|
/**
|
|
64
80
|
* This will remove the actions.
|
|
65
81
|
*
|
|
@@ -81,17 +97,17 @@ export class StateHelper {
|
|
|
81
97
|
* @param {object} target
|
|
82
98
|
* @param {string} actionEvent
|
|
83
99
|
* @param {string} remoteTargetId
|
|
84
|
-
* @returns {
|
|
100
|
+
* @returns {number} The link token.
|
|
85
101
|
*/
|
|
86
|
-
bindRemoteState(target: object, actionEvent: string, remoteTargetId: string):
|
|
102
|
+
bindRemoteState(target: object, actionEvent: string, remoteTargetId: string): number;
|
|
87
103
|
/**
|
|
88
104
|
* This will unbind a remote state.
|
|
89
105
|
*
|
|
90
106
|
* @param {object} target
|
|
91
|
-
* @param {
|
|
107
|
+
* @param {number} token
|
|
92
108
|
* @return {void}
|
|
93
109
|
*/
|
|
94
|
-
unbindRemoteState(target: object, token:
|
|
110
|
+
unbindRemoteState(target: object, token: number): void;
|
|
95
111
|
/**
|
|
96
112
|
* This will add the states to the target.
|
|
97
113
|
*
|
|
@@ -106,7 +122,7 @@ export class StateHelper {
|
|
|
106
122
|
*
|
|
107
123
|
* @param {object} target
|
|
108
124
|
* @param {object} action
|
|
109
|
-
* @returns {
|
|
125
|
+
* @returns {number|null}
|
|
110
126
|
*/
|
|
111
|
-
addAction(target: object, action: object):
|
|
127
|
+
addAction(target: object, action: object): number | null;
|
|
112
128
|
}
|
|
@@ -58,11 +58,20 @@ export class BasicData {
|
|
|
58
58
|
*/
|
|
59
59
|
_refreshState: boolean;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
61
|
+
* Link records keyed by subscription token.
|
|
62
|
+
*
|
|
63
|
+
* Tokens are the numbers handed out by the event sub, so both
|
|
64
|
+
* sides of a link pair must key and read this map with a
|
|
65
|
+
* number. A stringified token would delete nothing.
|
|
66
|
+
*
|
|
67
|
+
* @type {Map<number, {data: object, attr: string, pair: number}>} links
|
|
63
68
|
* @protected
|
|
64
69
|
*/
|
|
65
|
-
protected links:
|
|
70
|
+
protected links: Map<number, {
|
|
71
|
+
data: object;
|
|
72
|
+
attr: string;
|
|
73
|
+
pair: number;
|
|
74
|
+
}>;
|
|
66
75
|
/**
|
|
67
76
|
* @type {string} dataTypeId
|
|
68
77
|
*/
|
|
@@ -137,7 +146,8 @@ export class BasicData {
|
|
|
137
146
|
*/
|
|
138
147
|
getDataId(): string;
|
|
139
148
|
/**
|
|
140
|
-
* This
|
|
149
|
+
* This will release every subscription and link the data
|
|
150
|
+
* source holds.
|
|
141
151
|
*
|
|
142
152
|
* @returns {void}
|
|
143
153
|
*/
|
|
@@ -347,41 +357,47 @@ export class BasicData {
|
|
|
347
357
|
* @param {object} data
|
|
348
358
|
* @param {string|object} attr
|
|
349
359
|
* @param {string} alias
|
|
350
|
-
* @returns {
|
|
360
|
+
* @returns {number|Array<number>}
|
|
351
361
|
*/
|
|
352
|
-
link(data: object, attr: string | object, alias: string, ...args: any[]):
|
|
362
|
+
link(data: object, attr: string | object, alias: string, ...args: any[]): number | Array<number>;
|
|
353
363
|
/**
|
|
354
364
|
* This will link a remote data source by property.
|
|
355
365
|
*
|
|
356
366
|
* @param {object} data
|
|
357
367
|
* @param {string} attr
|
|
358
368
|
* @param {string} [alias]
|
|
359
|
-
* @returns {
|
|
369
|
+
* @returns {number} The subscription token.
|
|
360
370
|
*/
|
|
361
|
-
remoteLink(data: object, attr: string, alias?: string):
|
|
371
|
+
remoteLink(data: object, attr: string, alias?: string): number;
|
|
362
372
|
/**
|
|
363
|
-
* This will add a link token to the links
|
|
373
|
+
* This will add a link token to the links map.
|
|
364
374
|
*
|
|
365
|
-
*
|
|
375
|
+
* The attr name is what makes the link removable: subscriptions
|
|
376
|
+
* are registered per attr message, so a record without one can
|
|
377
|
+
* only be forgotten, not unsubscribed.
|
|
378
|
+
*
|
|
379
|
+
* @param {number} token
|
|
366
380
|
* @param {object} data
|
|
381
|
+
* @param {string} [attr]
|
|
382
|
+
* @param {number} [pair] The token of the opposite direction.
|
|
367
383
|
* @returns {void}
|
|
368
384
|
*/
|
|
369
|
-
addLink(token:
|
|
385
|
+
addLink(token: number, data: object, attr?: string, pair?: number): void;
|
|
370
386
|
/**
|
|
371
387
|
* This will remove a link or all links if no token is provided.
|
|
372
388
|
*
|
|
373
|
-
* @param {
|
|
389
|
+
* @param {number|null} [token=null]
|
|
374
390
|
* @returns {void}
|
|
375
391
|
*/
|
|
376
|
-
unlink(token?:
|
|
392
|
+
unlink(token?: number | null): void;
|
|
377
393
|
/**
|
|
378
394
|
* This will remove the linked subscription.
|
|
379
395
|
*
|
|
380
|
-
* @param {
|
|
396
|
+
* @param {number} token
|
|
381
397
|
* @param {boolean} [removeFromLinks=true]
|
|
382
398
|
* @returns {void}
|
|
383
399
|
*/
|
|
384
|
-
removeLink(token:
|
|
400
|
+
removeLink(token: number, removeFromLinks?: boolean): void;
|
|
385
401
|
isData: boolean;
|
|
386
402
|
}
|
|
387
403
|
import { DataPubSub } from '../../data-binder/data-pub-sub.js';
|
|
@@ -25,18 +25,4 @@ export namespace DataUtils {
|
|
|
25
25
|
*/
|
|
26
26
|
function getSegments(str: string): Array<any> | null;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
* Simple LRU Cache implementation for caching parsed path segments.
|
|
30
|
-
* Caches up to 1000 most recently used paths (~50KB memory overhead).
|
|
31
|
-
*
|
|
32
|
-
* @class
|
|
33
|
-
*/
|
|
34
|
-
declare class LRUCache {
|
|
35
|
-
constructor(maxSize?: number);
|
|
36
|
-
cache: Map<any, any>;
|
|
37
|
-
maxSize: number;
|
|
38
|
-
get(key: any): any;
|
|
39
|
-
set(key: any, value: any): void;
|
|
40
|
-
clear(): void;
|
|
41
|
-
}
|
|
42
|
-
export {};
|
|
28
|
+
import { LRUCache } from '../../../../shared/lru-cache.js';
|
|
@@ -125,7 +125,16 @@ export class Data extends BasicData {
|
|
|
125
125
|
* @returns {void}
|
|
126
126
|
*/
|
|
127
127
|
revert(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Deletes go to both channels. Publishing to the event sub
|
|
130
|
+
* alone left every element bound through the data binder
|
|
131
|
+
* rendering a value the data no longer holds.
|
|
132
|
+
*
|
|
133
|
+
* The published value is null rather than the path string the
|
|
134
|
+
* walk used to hand out, to match what BasicData sends for a
|
|
135
|
+
* delete and to keep bound elements from showing the path.
|
|
136
|
+
*/
|
|
128
137
|
_delCommitter: any;
|
|
129
|
-
_deleteCb: (path: any
|
|
138
|
+
_deleteCb: (path: any) => void;
|
|
130
139
|
}
|
|
131
140
|
import { BasicData } from '../basic-data.js';
|
|
@@ -83,6 +83,31 @@ export class DataPubSub {
|
|
|
83
83
|
* @protected
|
|
84
84
|
*/
|
|
85
85
|
protected flushCallbacks: Array<Function>;
|
|
86
|
+
/**
|
|
87
|
+
* The message currently being delivered, used to spot a
|
|
88
|
+
* subscriber that re-publishes its own message.
|
|
89
|
+
*
|
|
90
|
+
* @type {string|null}
|
|
91
|
+
* @protected
|
|
92
|
+
*/
|
|
93
|
+
protected deliveringMessage: string | null;
|
|
94
|
+
/**
|
|
95
|
+
* Messages whose own subscribers re-published them during the
|
|
96
|
+
* current flush cycle. Allocated only when it happens.
|
|
97
|
+
*
|
|
98
|
+
* @type {Set<string>|null}
|
|
99
|
+
* @protected
|
|
100
|
+
*/
|
|
101
|
+
protected reentrantMessages: Set<string> | null;
|
|
102
|
+
/**
|
|
103
|
+
* When true, publishes are dropped instead of queued. Set
|
|
104
|
+
* while the flush breaker drains the surviving updates so the
|
|
105
|
+
* runaway cascade cannot restart.
|
|
106
|
+
*
|
|
107
|
+
* @type {boolean}
|
|
108
|
+
* @protected
|
|
109
|
+
*/
|
|
110
|
+
protected suppressQueue: boolean;
|
|
86
111
|
/**
|
|
87
112
|
* This will get a subscriber array.
|
|
88
113
|
*
|
|
@@ -183,6 +208,19 @@ export class DataPubSub {
|
|
|
183
208
|
* @returns {void}
|
|
184
209
|
*/
|
|
185
210
|
flush(): void;
|
|
211
|
+
/**
|
|
212
|
+
* Stop a runaway cascade without discarding the updates that
|
|
213
|
+
* were only queued alongside it.
|
|
214
|
+
*
|
|
215
|
+
* Dropping the whole queue loses the last value of every
|
|
216
|
+
* unrelated message. Only the self-republishing messages are
|
|
217
|
+
* dropped; the rest are delivered once with queueing suppressed,
|
|
218
|
+
* which guarantees the loop cannot restart.
|
|
219
|
+
*
|
|
220
|
+
* @protected
|
|
221
|
+
* @returns {void}
|
|
222
|
+
*/
|
|
223
|
+
protected _breakCascade(): void;
|
|
186
224
|
/**
|
|
187
225
|
* Resolve all pending flush completion promises and execute callbacks.
|
|
188
226
|
*
|
|
@@ -6,4 +6,15 @@ export namespace Utils {
|
|
|
6
6
|
* @returns {string}
|
|
7
7
|
*/
|
|
8
8
|
function removeSlashes(uri: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* This will get the pathname style uri from a hash url.
|
|
11
|
+
*
|
|
12
|
+
* The hashchange event reports absolute urls, but route patterns
|
|
13
|
+
* are anchored against the uri that `Router.getPath()` produces
|
|
14
|
+
* for hash routing, which is the hash without its '#'.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} url
|
|
17
|
+
* @returns {string}
|
|
18
|
+
*/
|
|
19
|
+
function getHashUri(url: string): string;
|
|
9
20
|
}
|
|
@@ -13,6 +13,19 @@ export class StateTracker {
|
|
|
13
13
|
* @private
|
|
14
14
|
*/
|
|
15
15
|
private static targets;
|
|
16
|
+
/**
|
|
17
|
+
* The number of owners that have attached to each target.
|
|
18
|
+
*
|
|
19
|
+
* Targets are keyed by the owning component's unique instance id,
|
|
20
|
+
* so without a release path the map grows by one entry per mount
|
|
21
|
+
* and never shrinks. Counting owners keeps ids that are shared on
|
|
22
|
+
* purpose (a `stateTargetId` override) alive until the last one
|
|
23
|
+
* detaches.
|
|
24
|
+
*
|
|
25
|
+
* @type {Map<string, number>} ownerCounts
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
private static ownerCounts;
|
|
16
29
|
/**
|
|
17
30
|
* This will restore a state target.
|
|
18
31
|
*
|
|
@@ -28,6 +41,35 @@ export class StateTracker {
|
|
|
28
41
|
* @returns {StateTarget}
|
|
29
42
|
*/
|
|
30
43
|
static getTarget(id: string): StateTarget;
|
|
44
|
+
/**
|
|
45
|
+
* This will get the state target and claim ownership of it.
|
|
46
|
+
*
|
|
47
|
+
* Every attach must be paired with a detach or the target is
|
|
48
|
+
* retained for the life of the page.
|
|
49
|
+
*
|
|
50
|
+
* @param {string} id
|
|
51
|
+
* @returns {StateTarget}
|
|
52
|
+
*/
|
|
53
|
+
static attach(id: string): StateTarget;
|
|
54
|
+
/**
|
|
55
|
+
* This will record an owner of a target.
|
|
56
|
+
*
|
|
57
|
+
* @protected
|
|
58
|
+
* @param {string} id
|
|
59
|
+
* @returns {void}
|
|
60
|
+
*/
|
|
61
|
+
protected static addOwner(id: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* This will release an owner of a state target. The target is
|
|
64
|
+
* reset and dropped once the last owner detaches.
|
|
65
|
+
*
|
|
66
|
+
* Ids that were never attached (targets created on demand by
|
|
67
|
+
* getTarget, e.g. app level states) are left alone.
|
|
68
|
+
*
|
|
69
|
+
* @param {string} id
|
|
70
|
+
* @returns {void}
|
|
71
|
+
*/
|
|
72
|
+
static detach(id: string): void;
|
|
31
73
|
/**
|
|
32
74
|
* This will get the state of an action.
|
|
33
75
|
*
|
|
@@ -60,10 +102,10 @@ export class StateTracker {
|
|
|
60
102
|
*
|
|
61
103
|
* @param {string} targetId
|
|
62
104
|
* @param {string} action
|
|
63
|
-
* @param {
|
|
105
|
+
* @param {number} [token]
|
|
64
106
|
* @returns {void}
|
|
65
107
|
*/
|
|
66
|
-
static removeAction(targetId: string, action: string, token?:
|
|
108
|
+
static removeAction(targetId: string, action: string, token?: number): void;
|
|
67
109
|
/**
|
|
68
110
|
* This will add a new subscriber to the action.
|
|
69
111
|
*
|
|
@@ -78,19 +120,19 @@ export class StateTracker {
|
|
|
78
120
|
*
|
|
79
121
|
* @param {string} targetId
|
|
80
122
|
* @param {string} action
|
|
81
|
-
* @param {
|
|
123
|
+
* @param {number} token
|
|
82
124
|
* @returns {void}
|
|
83
125
|
*/
|
|
84
|
-
static off(targetId: string, action: string, token:
|
|
126
|
+
static off(targetId: string, action: string, token: number): void;
|
|
85
127
|
/**
|
|
86
128
|
* This will remove a target or action or callBack.
|
|
87
129
|
*
|
|
88
130
|
* @param {string} targetId
|
|
89
131
|
* @param {string} [action]
|
|
90
|
-
* @param {
|
|
132
|
+
* @param {number} [token]
|
|
91
133
|
* @returns {void}
|
|
92
134
|
*/
|
|
93
|
-
static remove(targetId: string, action?: string, token?:
|
|
135
|
+
static remove(targetId: string, action?: string, token?: number): void;
|
|
94
136
|
/**
|
|
95
137
|
* This will set the action state.
|
|
96
138
|
*
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LRUCache
|
|
3
|
+
*
|
|
4
|
+
* A bounded cache with recency aware eviction, used to keep the module
|
|
5
|
+
* level parse/lookup caches from growing for the life of the page.
|
|
6
|
+
*
|
|
7
|
+
* Recency is tracked with a second chance (CLOCK) flag rather than by
|
|
8
|
+
* re-inserting keys into the Map. A read marks the entry it returns, and
|
|
9
|
+
* eviction walks the oldest entries, clearing the flag of anything read
|
|
10
|
+
* since the last eviction and taking the first entry that was not. That
|
|
11
|
+
* keeps a key that is still in use from being dropped while leaving
|
|
12
|
+
* reads free of Map mutation, which matters because these caches sit on
|
|
13
|
+
* paths that run per publish and per render.
|
|
14
|
+
*
|
|
15
|
+
* Eviction removes a batch rather than a single entry so the Map key
|
|
16
|
+
* iterator is allocated once per batch instead of once per write. Writes
|
|
17
|
+
* that miss are the common case on a page rendering new rows, and the
|
|
18
|
+
* per-write iterator was the dominant cost of the bound.
|
|
19
|
+
*
|
|
20
|
+
* @class
|
|
21
|
+
*/
|
|
22
|
+
export class LRUCache {
|
|
23
|
+
/**
|
|
24
|
+
* This will create an LRU cache.
|
|
25
|
+
*
|
|
26
|
+
* @constructor
|
|
27
|
+
* @param {number} [maxSize=1000]
|
|
28
|
+
*/
|
|
29
|
+
constructor(maxSize?: number);
|
|
30
|
+
/**
|
|
31
|
+
* @type {Map<*, {value: *, used: boolean}>} cache
|
|
32
|
+
* @protected
|
|
33
|
+
*/
|
|
34
|
+
protected cache: Map<any, {
|
|
35
|
+
value: any;
|
|
36
|
+
used: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* @type {number} maxSize
|
|
40
|
+
*/
|
|
41
|
+
maxSize: number;
|
|
42
|
+
/**
|
|
43
|
+
* The number of entries dropped by one eviction. Caches too
|
|
44
|
+
* small to batch fall back to one, which is also what keeps a
|
|
45
|
+
* cache of two or three entries behaving exactly.
|
|
46
|
+
*
|
|
47
|
+
* @type {number} evictCount
|
|
48
|
+
* @protected
|
|
49
|
+
*/
|
|
50
|
+
protected evictCount: number;
|
|
51
|
+
/**
|
|
52
|
+
* This will get a value and mark the key as recently used.
|
|
53
|
+
*
|
|
54
|
+
* @param {*} key
|
|
55
|
+
* @returns {*} The value or undefined when not cached.
|
|
56
|
+
*/
|
|
57
|
+
get(key: any): any;
|
|
58
|
+
/**
|
|
59
|
+
* This will check if a key is cached without marking it used.
|
|
60
|
+
*
|
|
61
|
+
* @param {*} key
|
|
62
|
+
* @returns {boolean}
|
|
63
|
+
*/
|
|
64
|
+
has(key: any): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* This will add a value, evicting a batch of the least recently
|
|
67
|
+
* used keys when the write goes over capacity.
|
|
68
|
+
*
|
|
69
|
+
* @param {*} key
|
|
70
|
+
* @param {*} value
|
|
71
|
+
* @returns {void}
|
|
72
|
+
*/
|
|
73
|
+
set(key: any, value: any): void;
|
|
74
|
+
/**
|
|
75
|
+
* This will drop entries from the oldest end until the cache has
|
|
76
|
+
* room for the next batch of writes.
|
|
77
|
+
*
|
|
78
|
+
* @protected
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
81
|
+
protected evict(): void;
|
|
82
|
+
/**
|
|
83
|
+
* This will remove a key.
|
|
84
|
+
*
|
|
85
|
+
* @param {*} key
|
|
86
|
+
* @returns {void}
|
|
87
|
+
*/
|
|
88
|
+
delete(key: any): void;
|
|
89
|
+
/**
|
|
90
|
+
* This will empty the cache.
|
|
91
|
+
*
|
|
92
|
+
* @returns {void}
|
|
93
|
+
*/
|
|
94
|
+
clear(): void;
|
|
95
|
+
}
|
|
@@ -58,7 +58,8 @@ export namespace Objects {
|
|
|
58
58
|
* Checks if an object is empty.
|
|
59
59
|
*
|
|
60
60
|
* @param {object} obj - The object to check.
|
|
61
|
-
* @returns {boolean} True if the object
|
|
61
|
+
* @returns {boolean} True if the object holds no entries. Maps and
|
|
62
|
+
* Sets are measured by size, everything else by own properties.
|
|
62
63
|
*/
|
|
63
64
|
function isEmpty(obj: object): boolean;
|
|
64
65
|
}
|