@lmjs/core 2.1.10 → 2.1.11
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/lumenjs-core.js +2 -2
- package/package.json +1 -1
- package/src/_re.js +103 -0
- package/src/lstnrs.js +8 -1
package/dist/lumenjs-core.js
CHANGED
|
@@ -10,7 +10,7 @@ var _upw = `let _w=self;var files=[];function defer(){var e,t,s=new Promise(((s,
|
|
|
10
10
|
//# sourceMappingURL=astring.min.js.map
|
|
11
11
|
class WalkerBase{constructor(){this.should_skip=false;this.should_remove=false;this.replacement=null;this.context={skip:()=>this.should_skip=true,remove:()=>this.should_remove=true,replace:node=>this.replacement=node}}replace(parent,prop,index,node){if(parent&&prop){if(index!=null){parent[prop][index]=node}else{parent[prop]=node}}}remove(parent,prop,index){if(parent&&prop){if(index!==null&&index!==void 0){parent[prop].splice(index,1)}else{delete parent[prop]}}}}class SyncWalker extends WalkerBase{constructor(enter,leave){super();this.should_skip=false;this.should_remove=false;this.replacement=null;this.context={skip:()=>this.should_skip=true,remove:()=>this.should_remove=true,replace:node=>this.replacement=node};this.enter=enter;this.leave=leave}visit(node,parent,prop,index){if(node){if(this.enter){const _should_skip=this.should_skip;const _should_remove=this.should_remove;const _replacement=this.replacement;this.should_skip=false;this.should_remove=false;this.replacement=null;this.enter.call(this.context,node,parent,prop,index);if(this.replacement){if(Array.isArray(this.replacement)){var expressions=[];for(let rp=0;rp<this.replacement.length;rp++){expressions.push(this.replacement[rp])}if(this.replacement.length>1){node={"type":"VariableDeclaration","start":node.start,"kind":"let","declarations":expressions,"level":node.level,"scope":node.scope}}else{node={"type":"ExpressionStatement","expression":{"type":"SequenceExpression","expressions":expressions,"level":node.level,"scope":node.scope},"level":node.level,"scope":node.scope}}this.replace(parent,prop,index,node)}else{node=this.replacement;this.replace(parent,prop,index,node)}}if(this.should_remove){this.remove(parent,prop,index)}const skipped=this.should_skip;const removed=this.should_remove;this.should_skip=_should_skip;this.should_remove=_should_remove;this.replacement=_replacement;if(skipped)return node;if(removed)return null}let key;for(key in node){const value=node[key];if(value&&typeof value==="object"){if(Array.isArray(value)){const nodes=value;for(let i=0;i<nodes.length;i+=1){const item=nodes[i];if(isNode(item)){if(!this.visit(item,node,key,i)){i--}}}}else if(isNode(value)){this.visit(value,node,key,null)}}}if(this.leave){const _replacement=this.replacement;const _should_remove=this.should_remove;this.replacement=null;this.should_remove=false;this.leave.call(this.context,node,parent,prop,index);if(this.replacement){if(Array.isArray(this.replacement)){for(let rp=0;rp<this.replacement.length;rp++){node=this.replacement[rp];this.replace(parent,prop,index,node)}}else{node=this.replacement;this.replace(parent,prop,index,node)}}if(this.should_remove){this.remove(parent,prop,index)}const removed=this.should_remove;this.replacement=_replacement;this.should_remove=_should_remove;if(removed)return null}}return node}}function isNode(value){return value!==null&&typeof value==="object"&&"type"in value&&typeof value.type==="string"}function walk(ast,{enter,leave}){const instance=new SyncWalker(enter,leave);return instance.visit(ast,null)}function getProgramBody(node){if(node.type=="Program"){return node.body}return node}function parseNode(node){}function checkNodeL1(node,varz,vazzz){try{if(node&&typeof node==="object"){if(Array.isArray(node)){for(let i=0;i<node.length;i++){const nd=node[i];if(isNode(nd)){if(nd.type==="VariableDeclaration"){let declarators=nd.declarations;for(let x=0;x<declarators.length;x++){let dec=declarators[x].id;if(vazzz.includes(dec.name)){varz.push({name:dec.name,node:dec});dec.marked=true}}}else if(nd.type=="Identifier"){}parseNode(nd)}}}else if(isNode(node)){}}}catch(e){}}function getL1Vs(AST,view,vazzz){var level=0,block=[{start:0}];var varz=view?.varz??[];let nodes=getProgramBody(AST);checkNodeL1(nodes,varz,vazzz);return{"varz":varz,"AST":AST}}function getWatcher(AST,view,vazzz,targetKey="View"){AST=JSON.parse(JSON.stringify(AST));let Vars=getL1Vs(AST,view,vazzz);AST=Vars["AST"];let varz=Vars["varz"];validateBeforeRewrite(AST,view);AST=changeReactiveVarsOccurences(AST,vazzz,targetKey);AST=transformTopLevelDeclarations(AST,vazzz,targetKey);return{"code":astring.generate(AST),"varz":varz}}function validateBeforeRewrite(AST,view){try{new Function(astring.generate(AST))}catch(e){if(typeof reportLumenError==="function"){reportLumenError({stage:"validate",view:view?.name,error:e,hint:"This is a real JavaScript error in your <script> block (for example, a variable declared twice with let/const) \u2014 fix it in the .view file; it will not surface again once rewritten."})}}}function buildTargetRootExpr(targetKey){const segments=Array.isArray(targetKey)?targetKey:[targetKey];let expr={type:"Identifier",name:"_vt"};for(const seg of segments){if(typeof seg==="number"){expr={type:"MemberExpression",object:expr,property:{type:"Literal",value:seg,raw:String(seg)},computed:true}}else{expr={type:"MemberExpression",object:expr,property:{type:"Identifier",name:seg},computed:false}}}return expr}function changeReactiveVarsOccurences(AST,reactiveVariables,targetKey="View"){const reactive=new Set(reactiveVariables||[]);const scopeStack=[];const bindingIdNodes=new WeakSet;const pushScope=isFunction=>scopeStack.push({isFunction:!!isFunction,names:new Set});const popScope=()=>scopeStack.pop();const currentScope=()=>scopeStack[scopeStack.length-1];function declare(name,kind){if(!name)return;if(kind==="var"||kind==="function"){for(let i=scopeStack.length-1;i>=0;i--){if(scopeStack[i].isFunction||i===0){scopeStack[i].names.add(name);return}}}else{currentScope().names.add(name)}}function rootHas(name){return scopeStack.length>0&&scopeStack[0].names.has(name)}function isShadowedFromRoot(name){for(let i=scopeStack.length-1;i>=1;i--){if(scopeStack[i].names.has(name))return true}return false}function visitPattern(node,onId){if(!node)return;switch(node.type){case"Identifier":onId(node);break;case"RestElement":visitPattern(node.argument,onId);break;case"AssignmentPattern":visitPattern(node.left,onId);break;case"ArrayPattern":for(const el of node.elements)if(el)visitPattern(el,onId);break;case"ObjectPattern":for(const p of node.properties){if(p.type==="Property")visitPattern(p.value,onId);else if(p.type==="RestElement")visitPattern(p.argument,onId)}break;default:break}}function markPatternBindings(pattern,kind="var"){if(!pattern)return;visitPattern(pattern,idNode=>{bindingIdNodes.add(idNode);declare(idNode.name,kind)})}function predeclareProgram(programNode){if(!programNode||!Array.isArray(programNode.body))return;for(const stmt of programNode.body){if(stmt.type==="VariableDeclaration"){for(const d of stmt.declarations){visitPattern(d.id,id=>{bindingIdNodes.add(id);declare(id.name,stmt.kind)})}}else if(stmt.type==="FunctionDeclaration"&&stmt.id){bindingIdNodes.add(stmt.id);declare(stmt.id.name,"function")}else if(stmt.type==="ClassDeclaration"&&stmt.id){bindingIdNodes.add(stmt.id);declare(stmt.id.name,"let")}else if(stmt.type==="ImportDeclaration"){for(const spec of stmt.specifiers||[]){if(spec.local){bindingIdNodes.add(spec.local);declare(spec.local.name,"const")}}}}}function predeclareBlockLexicals(blockNode){if(!blockNode||!Array.isArray(blockNode.body))return;for(const stmt of blockNode.body){if(stmt.type==="VariableDeclaration"&&stmt.kind!=="var"){for(const d of stmt.declarations){visitPattern(d.id,id=>{bindingIdNodes.add(id);currentScope().names.add(id.name)})}}else if(stmt.type==="FunctionDeclaration"&&stmt.id){bindingIdNodes.add(stmt.id);currentScope().names.add(stmt.id.name)}else if(stmt.type==="ClassDeclaration"&&stmt.id){bindingIdNodes.add(stmt.id);currentScope().names.add(stmt.id.name)}}}function predeclareForHeader(node){const header=node.type==="ForStatement"?node.init:node.left;if(header&&header.type==="VariableDeclaration"&&header.kind!=="var"){for(const d of header.declarations){visitPattern(d.id,id=>{bindingIdNodes.add(id);currentScope().names.add(id.name)})}}}function shouldSkipIdentifier(node,parent,prop){if(!parent)return false;if(parent.type==="LabeledStatement"&&prop==="label"||(parent.type==="BreakStatement"||parent.type==="ContinueStatement")&&prop==="label")return true;if(parent.type==="MemberExpression"){if(prop==="property"&&parent.computed===false)return true}if(parent.type==="Property"){if(prop==="key"&&parent.computed===false)return true}if((parent.type==="MethodDefinition"||parent.type==="ClassProperty"||parent.type==="PropertyDefinition")&&prop==="key"&&parent.computed===false)return true;if(parent.type==="ImportSpecifier"||parent.type==="ImportDefaultSpecifier"||parent.type==="ImportNamespaceSpecifier"||parent.type==="ExportSpecifier")return true;return false}function walk2(node,parent,prop,index){if(!node||typeof node!=="object")return;switch(node.type){case"Program":pushScope(true);predeclareProgram(node);break;case"BlockStatement":case"StaticBlock":pushScope(false);predeclareBlockLexicals(node);break;case"FunctionDeclaration":if(node.id){bindingIdNodes.add(node.id);declare(node.id.name,"function")}pushScope(true);for(const p of node.params)markPatternBindings(p,"param");break;case"FunctionExpression":pushScope(true);if(node.id){bindingIdNodes.add(node.id);declare(node.id.name,"let")}for(const p of node.params)markPatternBindings(p,"param");break;case"ArrowFunctionExpression":pushScope(true);for(const p of node.params)markPatternBindings(p,"param");break;case"CatchClause":pushScope(false);if(node.param)markPatternBindings(node.param,"let");break;case"ForStatement":case"ForInStatement":case"ForOfStatement":pushScope(false);predeclareForHeader(node);break;case"VariableDeclaration":for(const decl of node.declarations){markPatternBindings(decl.id,node.kind||"var")}break;case"ClassDeclaration":if(node.id){bindingIdNodes.add(node.id);declare(node.id.name,"let")}break;case"ImportDeclaration":for(const spec of node.specifiers||[]){if(spec.local){bindingIdNodes.add(spec.local);declare(spec.local.name,"const")}}break}for(const key in node){if(key==="parent")continue;const child=node[key];if(Array.isArray(child)){for(let i=0;i<child.length;i++){if(child[i]&&typeof child[i]==="object"){walk2(child[i],node,key,i)}}}else if(child&&typeof child==="object"){walk2(child,node,key,null)}}if(node.type==="Identifier"){const name=node.name;if(!reactive.has(name)||bindingIdNodes.has(node)){}else if(!rootHas(name)){}else if(isShadowedFromRoot(name)){}else if(shouldSkipIdentifier(node,parent,prop)){}else{if(parent&&parent.type==="Property"&&parent.shorthand&&prop==="value"){parent.shorthand=false}const replacement={type:"MemberExpression",object:{type:"MemberExpression",object:buildTargetRootExpr(targetKey),property:{type:"Identifier",name:"vars"},computed:false},property:{type:"Literal",value:name,raw:JSON.stringify(name)},computed:true};if(parent){if(index!==null&&Array.isArray(parent[prop])){parent[prop][index]=replacement}else{parent[prop]=replacement}}else{Object.keys(node).forEach(k=>delete node[k]);Object.assign(node,replacement)}}}switch(node.type){case"Program":case"BlockStatement":case"StaticBlock":case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":case"CatchClause":case"ForStatement":case"ForInStatement":case"ForOfStatement":popScope();break;default:break}}walk2(AST,null,null,null);return AST}function _reactiveAssignStatement(name,init,targetKey="View"){return{type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"MemberExpression",computed:true,object:{type:"MemberExpression",computed:false,object:buildTargetRootExpr(targetKey),property:{type:"Identifier",name:"vars"}},property:{type:"Literal",value:name}},right:init||{type:"Identifier",name:"undefined"}}}}function _fnRegisterStatement(name,targetKey){return{type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"MemberExpression",computed:true,object:{type:"MemberExpression",computed:false,object:buildTargetRootExpr(targetKey),property:{type:"Identifier",name:"fns"}},property:{type:"Literal",value:name}},right:{type:"Identifier",name}}}}function transformTopLevelDeclarations(AST,reactiveVariables,targetKey="View"){const reactive=new Set(reactiveVariables||[]);const newBody=[];for(const stmt of AST.body){if(stmt.type==="FunctionDeclaration"&&stmt.id){newBody.push(stmt);newBody.push(_fnRegisterStatement(stmt.id.name,targetKey));continue}if(stmt.type!=="VariableDeclaration"){newBody.push(stmt);continue}const reactiveDecls=stmt.declarations.filter(d=>reactive.has(d.id.name));const nonReactiveDecls=stmt.declarations.filter(d=>!reactive.has(d.id.name));if(reactiveDecls.length===0){newBody.push(stmt);continue}for(const decl of reactiveDecls){newBody.push(_reactiveAssignStatement(decl.id.name,decl.init,targetKey))}if(nonReactiveDecls.length>0){newBody.push({type:"VariableDeclaration",kind:stmt.kind,declarations:nonReactiveDecls})}}AST.body=newBody;return AST}if(typeof module!=="undefined"&&module.exports){module.exports={getWatcher,changeReactiveVarsOccurences,transformTopLevelDeclarations,validateBeforeRewrite}}
|
|
12
12
|
|
|
13
|
-
var cl=console.log;class _v{static name;static type;static vars;static fns;static rvs;static _pv;static mx;static views;static hst;static settings;constructor(obj){this.name=obj.name??"home";this.type=obj.type??"main";this.hst=obj.hst??[];this.views=obj.views??[];this.vars=obj.vars??{};this.fns=obj.fns??{};this.rvs=obj.rvs??{};this._pv=obj._pv??null;this.mx=obj.mx??[];this.settings=obj.settings??{layout:"default",requireAuth:false}}}const consoleLogOriginal=console.log;console.log=function(){for(let i=0;i<arguments.length;i++){const arg=arguments[i];if(arg&&arg.hasOwnProperty("__isProxy")||arg?.target){arguments[i]=arguments[i].target}}consoleLogOriginal.apply(console,arguments)};var _lumenDevMode=true;var _lumenErrorLog=[];var _mountedSubviewEngines=[];var EXPECTED_HST_FORMAT_VERSION=1;var _entityDecodeEl;function decodeHtmlEntities(str){if(!str||str.indexOf("&")===-1)return str;if(!_entityDecodeEl)_entityDecodeEl=document.createElement("textarea");_entityDecodeEl.innerHTML=str;return _entityDecodeEl.value}function _translateLumenError(message){if(!message)return message;return message.replace(/_vt\.View\.vars\[["'`]([^"'`\]]+)["'`]\]/g,"$1")}function reportLumenError(info){info=info||{};var rawMessage=info.message||info.error&&info.error.message||"Unknown error";var entry={time:new Date().toISOString(),stage:info.stage||"runtime",view:info.view||(typeof _vt!=="undefined"&&_vt.View?_vt.View.name:void 0),expr:info.expr,message:_translateLumenError(rawMessage),hint:info.hint};_lumenErrorLog.push(entry);if(_lumenDevMode){console.error("[LumenJS] "+entry.stage+' error in "'+(entry.view||"unknown")+'"'+(entry.expr?" \u2014 "+entry.expr:"")+": "+entry.message+(entry.hint?"\n "+entry.hint:""))}return entry}function _x(_x2){var currPath=[];function _dispatchVarsUpdate(key){let varsIdx=currPath.indexOf("vars");if(varsIdx===-1)return;let varName=varsIdx<currPath.length-1?currPath[varsIdx+1]:key;let rootPath=currPath.slice(0,varsIdx);if(rootPath[0]==="Global"){try{if(typeof window!=="undefined")window[varName]=_x2.Global.vars[varName]}catch(e){}if(_vt.View._re)_vt.View._re.update(varName);for(const regionName in _vt.Widgets){if(_vt.Widgets[regionName]&&_vt.Widgets[regionName]._re){_vt.Widgets[regionName]._re.update(varName)}}for(let msi=0;msi<_mountedSubviewEngines.length;msi++){_mountedSubviewEngines[msi].update(varName)}return}let owner=_x2;for(let i=0;i<rootPath.length&&owner;i++){owner=owner[rootPath[i]]}if(owner&&owner._re)owner._re.update(varName)}const handler={get(target,key){if(key=="__isProxy")return true;if(target===_x2)currPath=[];currPath.push(key);if(typeof target[key]==="object"&&target[key]!==null&&key!="_re"){return new Proxy(target[key],handler)}else{return target[key]??(key=="target"?target:void 0)??void 0}},set(target,key,value){target[key]=value;try{_dispatchVarsUpdate(key)}catch(e){cl(e)}currPath=[];return true},deleteProperty(target,key){if(!(key in target)){return false}delete target[key];try{_dispatchVarsUpdate(key)}catch(e){cl(e)}return true},ownKeys(target){return Reflect.ownKeys(target)},has(target,key){return key in target},defineProperty(target,key,descriptor){if(descriptor&&"value"in descriptor){target[key]=descriptor.value}return target},getOwnPropertyDescriptor(target,key){const value=target[key];return key in target?{value,enumerable:true,configurable:true}:void 0}};var x=new Proxy(_x2,handler);return x}let _vt=_x({"View":new _v({}),"Global":{"vars":{},"fns":{}},"Widgets":{}});function touch(name){if(_vt.Global.vars.hasOwnProperty(name)){_vt.Global.vars[name]=_vt.Global.vars[name]}}var _deepReactiveCache=typeof WeakMap!=="undefined"?new WeakMap:null;function _deepReactive(obj,onChange){if(obj===null||typeof obj!=="object")return obj;if(_deepReactiveCache&&_deepReactiveCache.has(obj))return _deepReactiveCache.get(obj);var proxy=new Proxy(obj,{get(target,key){var v=target[key];if(v!==null&&typeof v==="object"&&typeof key!=="symbol"){return _deepReactive(v,onChange)}return v},set(target,key,value){target[key]=value;onChange();return true},deleteProperty(target,key){if(key in target)delete target[key];onChange();return true}});if(_deepReactiveCache)_deepReactiveCache.set(obj,proxy);return proxy}function _lookupInWidgets(name){for(const wname in _vt.Widgets){if(_vt.Widgets[wname].vars.hasOwnProperty(name))return _vt.Widgets[wname].vars[name]}return void 0}function _mergedWidgetsVars(){let out={};let names=Object.keys(_vt.Widgets).reverse();for(const wname of names){out={...out,..._vt.Widgets[wname].vars}}return out}class _lm{_RealDOM=[];_effects={};_cc={};_jj={};_ready=false;view=void 0;sbscrbs=[];reactiveVariables=[];vrs={};_CXR=[];_LXR=[];constructor(view){this.view=view;this.view._re=this;this.reactiveVariables=view?.rvs??{};this.init();if(this.view.type=="main")_vt.View=this.view;if(this.view._pv){this.view._pv.subscribe(this.view)}return this}init(){var par2=this;this.view.hst.forEach(function(doc2){par2.walk(doc2,null)})}subscribe(view){this.sbscrbs.push(view)}scopedEval(context,expr,kk){let ctx=this.concatVarsAtLevel(context,this);if(kk){if(!ctx.hasOwnProperty(kk))return void 0;delete ctx[kk]}try{const evaluator=Function.apply(null,[...Object.keys(ctx),"expr","return eval(expr)"]);return evaluator.apply(null,[...Object.values(ctx),expr])}catch(e){if(e instanceof TypeError&&!kk){let hadUndefined=false;let strippedCtx={};for(const k2 in ctx){if(ctx[k2]===void 0||ctx[k2]===null){hadUndefined=true;continue}strippedCtx[k2]=ctx[k2]}if(hadUndefined){try{const evaluator2=Function.apply(null,[...Object.keys(strippedCtx),"expr","return eval(expr)"]);return evaluator2.apply(null,[...Object.values(strippedCtx),expr])}catch(e2){reportLumenError({stage:"expression",expr,error:e2});return void 0}}}reportLumenError({stage:"expression",expr,error:e});return void 0}}getVals(effect){let val="";if(effect.type=="text"){if(!effect.isSplit){for(let i=0;i<effect.splits.length;i++){let split=effect.splits[i];if(split.type=="mustache"){val+=this.getVal(split.content)}else{val+=split.content}}}else{val=this.getVal(effect.content)}}else if(effect.type=="attr"||effect.type=="event"){for(let i=0;i<effect.splits.length;i++){let split=effect.splits[i];if(split.type=="mustache"){val+=this.getVal(split.content)}else{val+=split.content}}}return val}renderAll(){if(this._ready)return;this._ready=true;for(const rv in this._effects){if(Object.prototype.hasOwnProperty.call(this._effects,rv)){const effects=this._effects[rv];for(let ei=0;ei<effects.length;ei++){const effect=effects[ei];if(!effect.nd)continue;try{if(effect.type=="text"){effect.nd.textContent=this.render(effect)}else if(effect.type=="attr"){if(effect.name=="value"){effect.nd.value=this.render(effect)}else{effect.nd.setAttribute(effect.name,this.render(effect));if(effect.name=="view"){effect.nd.subPath=this.render(effect);renderView(this.render(effect),true,{})}}}else if(effect.type=="event"){effect.nd.events[effect.name]=this.render(effect)}}catch(e){cl("Eeeeee",e)}}}}this.updateCXRs();this.updateLXRs();this.updateVXRs();if(typeof appSettings!=="undefined"&&appSettings&&typeof appSettings.tick==="function"){try{appSettings.tick()}catch(e){cl(e)}}}chainConnected(cx){for(let i=cx.chain.length-1;i>=0;i--){const cxs=cx.chain[i];if(cxs.ref.isPreConnected){return true}}return false}async updateVXRs(k){let subsNames=[];for(let i=0;i<this.view.views.length;i++){const _view=this.view.views[i];if(!subsNames.includes(_view.subPath))subsNames.push(_view.subPath)}for(let i=0;i<subsNames.length;i++){const n=subsNames[i];renderView(n,true,{},"views",this.view.views,this.view.scopePath||["View"])}}async updateCXRs(k){for(let i=0;i<this._CXR.length;i++){const cx=this._CXR[i];if(cx.name=="if"){let isTrue=this.evalExp(cx.content,this.reactiveVariables);if(isTrue){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}else if(cx.name=="else-if"){if(!this.chainConnected(cx)){let isTrue=this.evalExp(cx.content,this.reactiveVariables);if(isTrue){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}else{await this.hideSectionCX(cx)}}else if(cx.name=="else"){if(!this.chainConnected(cx)){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}}}async showSectionCX(cx,k){let wasConnected=cx.ref.node.isConnected;cx.ref.isPreConnected=true;await renderSection(cx.ref,cx.doc,this,k);if(!wasConnected)await fireRenderHook(cx,"after-render",cx.ref.node,{visible:true})}async hideSectionCX(cx){if(cx.ref.node.isConnected)await fireRenderHook(cx,"before-render",cx.ref.node,{visible:false});cx.ref.isPreConnected=false;cx.ref.node.replaceWith(cx.ref)}render(effect){let x="";try{if(effect.type=="text"||effect.type=="attr"||effect.type=="event"){x=this.getVals(effect)}}catch(e){cl(e)}return x}update(k){if(!this._ready)return;if(this._effects.hasOwnProperty(k)){const effects=this._effects[k];for(let ei=0;ei<effects.length;ei++){const effect=effects[ei];if(!effect.nd)continue;try{if(effect.type=="text"){effect.nd.textContent=this.render(effect)}else if(effect.type=="attr"){if(effect.name=="value"){effect.nd.value=this.render(effect)}else{effect.nd.setAttribute(effect.name,this.render(effect));if(effect.name=="view"){effect.nd.subPath=this.render(effect);renderView(this.render(effect),true,{})}}}else if(effect.type=="event"){effect.nd.events[effect.name]=this.render(effect)}}catch(e){cl("Eeeeee",e)}}}this.updateCXRs(k);this.updateLXRs(k);for(let sbscsi=0;sbscsi<this.sbscrbs.length;sbscsi++){const sbscr=this.sbscrbs[sbscsi];sbscr._re.update(k)}if(typeof appSettings!=="undefined"&&appSettings&&typeof appSettings.tick==="function"){try{appSettings.tick()}catch(e){cl(e)}}}async updateLXRs(k){for(let i=0;i<this._LXR.length;i++){var cx=this._LXR[i];var forX=cx.forX;if(k&&k!=forX["js"])continue;var val=this.getVal(forX["js"],"");var tempVal=[];if(this.typeStr(val)=="number"){for(let i2=0;i2<val;i2++){tempVal.push(i2)}val=tempVal}let vals=[];let isObj=false;if(this.typeStr(val)=="object"){isObj=true;for(const oKey in val){if(Object.hasOwnProperty.call(val,oKey)){const item=val[oKey];let objj={key:oKey,value:item};vals.push(objj)}}}else vals=clone(val);if(this.typeStr(vals)=="array"&&vals.length>0){let forIf=cx.cond;let limit=vals.length;let offset=0;if(cx.limit)limit=(isNaN(cx.limit)?cx.limit:limit)>vals.length?vals.length:cx.limit*1;if(cx.offset)offset=(isNaN(cx.offset)?cx.offset:offset)<0?0:cx.offset*1;let marray=[];if(forIf){marray=vals.slice(offset*1,vals.length)}else{marray=vals.slice(offset*1,limit*1+offset*1)}let myLimit=0;let arrayToRender=[];let arrayToRenderVXs=[];for(var index=0;index<marray.length;index++){if(myLimit==limit*1)break;try{let vx={};vx["index"]=myLimit;if(forX["dx"]!="")vx[forX["dx"]]=myLimit;if(isObj){if(forX["as"]["v"]!=""){if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index]["key"];if(forX["as"]["v"])vx[forX["as"]["v"]]=marray[index]["value"]}else{if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index]}vx["key"]=marray[index]["key"];vx["value"]=marray[index]["value"]}else{if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index];else if(marray[index]&&typeof marray[index]==="object"){for(const k2 in marray[index]){if(Object.prototype.hasOwnProperty.call(marray[index],k2)){vx[k2]=marray[index][k2]}}}}if(forIf){let _prevVrs=this.vrs;this.vrs=vx;let isTrue;try{isTrue=this.evalExp(forIf,[])}finally{this.vrs=_prevVrs}if(!isTrue)continue}let miIndexx=offset*1+index*1;arrayToRender.push(marray[index]);arrayToRenderVXs.push(vx);myLimit++}catch(e){cl(e)}}let oldATR=cx.atr;cx.atr=clone(arrayToRender);const actions=this.compareArrays(oldATR,arrayToRender);if(actions.length)await fireRenderHook(cx,"before-render",cx.ref.parentElement,{items:arrayToRender,actions});for(let ai=0;ai<actions.length;ai++){const actn=actions[ai];if(actn.action=="add"){let vx=arrayToRenderVXs[actn.index];let cln=await this.createSection(cx,vx,isObj,forX);cx.ref.before(cln);cln.replaceWith(cln.node)}else if(actn.action=="remove"){var keyed=cx.key+"_"+actn.index;let tx2=cx.ref?.nodes[keyed];if(tx2){tx2.remove();tx2.node.remove();delete cx.tx?.nodes[keyed]}}else{var keyed=cx.key+"_"+actn.index;let tx2=cx.ref?.nodes[keyed];let vx=arrayToRenderVXs[actn.index];if(tx2){tx2._re.vrs=vx;if(tx2.isObj){if(tx2.forX.as["k"]!="")tx2._re.update(tx2.forX.as["k"]);else tx2._re.update(tx2.forX.js);if(tx2.forX.as["v"]!="")tx2._re.update(tx2.forX.as["v"]);for(let actnsi=0;actnsi<actn.updates.length;actnsi++){const actnu=actn.updates[actnsi];tx2._re.update(actnu.property)}}else{if(tx2.forX.as["k"]!="")tx2._re.update(tx2.forX.as["k"]);else tx2._re.update(tx2.forX.js)}}}}if(actions.length)await fireRenderHook(cx,"after-render",cx.ref.parentElement,{items:arrayToRender,actions})}else{cx.nodes=[]}}}compareLogic(array1,array2){if(array1.length===array2.length){return 1}else{if(array1.length>array2.length){return 2}else{return 3}}}compareArrays(array1,array2){const actions=[];const maxLength=Math.max(array1.length,array2.length);for(let i=0;i<maxLength;i++){const element1=array1[i];const element2=array2[i];if(!element2){actions.push({action:"remove",index:i})}else if(!element1){actions.push({action:"add",index:i,element:element2})}else if(!this.deepCompare(element1,element2)){actions.push({action:"update",index:i,updates:this.getUpdates(element1,element2)})}}return actions}findDeletedIndexes(array1,array2){const deletedIndexes=[];let par2=this;array1.forEach((item,index)=>{const foundIndex=array2.findIndex(el2=>par2.deepCompare(el2,item));if(foundIndex===-1){deletedIndexes.push(index)}});return deletedIndexes}findAddedIndexes(array1,array2){const addedIndexes=[];let par2=this;array2.forEach((item,index)=>{const foundIndex=array1.findIndex(el2=>par2.deepCompare(el2,item));if(foundIndex===-1){addedIndexes.push(index)}});return addedIndexes}deepCompare(obj1,obj2){return JSON.stringify(obj1)===JSON.stringify(obj2)}getUpdates(oldObj,newObj){const updates=[];for(const key in newObj){if(newObj.hasOwnProperty(key)&&newObj[key]!==oldObj[key]){updates.push({property:key,value:newObj[key]})}}return updates}getVal(mo,indexName){let vars={};try{for(let i=0;i<this.reactiveVariables.length;i++){let __name=this.reactiveVariables[i];if(_vt.View.vars.hasOwnProperty(__name)){vars[__name]=_vt.View.vars[__name]}else{let _wv=_lookupInWidgets(__name);let _gv=_wv!==void 0?_wv:_vt.Global.vars[__name];if(_gv!==void 0)vars[__name]=_gv}}for(const ky in this.vrs){if(Object.prototype.hasOwnProperty.call(this.vrs,ky)){vars[ky]=this.vrs[ky]}}if(this.view&&this.view.vars){for(const ky in this.view.vars){if(Object.prototype.hasOwnProperty.call(this.view.vars,ky)){vars[ky]=this.view.vars[ky]}}}}catch(e){cl(e)}mo=mo.trim();if(mo.slice(0,2)=="{{"){mo=mo.slice(2,-2)}let value="";let _mo=mo;if(mo.indexOf("`")>-1){var matchesVal=_mo.match(/\.`[\s\S]*?`/g);if(matchesVal)for(var y=0;y<matchesVal.length;y++){_mo=_mo.split(matchesVal[y]).join("."+this.getVal(matchesVal[y].substr(1).slice(1,-1),indexName))}var matchesVal=_mo.match(/`[\s\S]*?`/g);if(matchesVal)for(var y=0;y<matchesVal.length;y++){_mo=_mo.split(matchesVal[y]).join("'"+this.getVal(matchesVal[y].slice(1,-1),indexName)+"'")}return this.getVal(_mo,indexName)}if(mo.indexOf(";")>-1){let zxx=mo.split(";");mo=$.trim(zxx[0])}if(mo.indexOf(" as ")>-1){mo=mo.split(" as ");return this.getVal(mo[0],indexName)}if(indexName){indexName=indexName.toString();if(mo.indexOf(indexName)>-1&&mo!=indexName&&vars.hasOwnProperty(indexName)&&mo!="index"){mo=mo.split(indexName).join(vars[indexName]);return this.getVal(mo,indexName)}}var Ondex=mo.match(/\bindex\b/g);if(Ondex&&mo!="index"&&vars.hasOwnProperty("index")){_mo=mo.replace(/\bindex\b/g,vars["index"]);return this.getVal(_mo,indexName)}value=this.lookup(mo,vars);return value??""}concatVarsAtLevel(levelVars,parent2){if(!parent2.view._pv){var concatenatedVars={...levelVars};if(parent2.view.vars){concatenatedVars={..._vt.Global.vars,..._mergedWidgetsVars(),...parent2.view.vars,...concatenatedVars}}return concatenatedVars}var concatenatedVars={...levelVars};if(parent2.view.vars){concatenatedVars={...parent2.view.vars,...concatenatedVars}}return this.concatVarsAtLevel(concatenatedVars,parent2.view._pv)}lookup(name,vaz){let vars=this.concatVarsAtLevel(vaz,this);try{var value;var names,index,lookupHit=false;if(this.hasProperty(vars,name)){value=vars[name]}else if(name.indexOf(".")>-1&&name.indexOf("[")==-1){var value=this.scopedEval(vars,name);if(!(value||value==0)){value=vars;names=name.split(".");index=0;while(value!=null&&index<names.length){if(index===names.length-1)lookupHit=this.hasProperty(value,names[index]);value=value[names[index++]]}}}else{var value=this.scopedEval(vars,name);if(!(value||value==0)){if(name.indexOf(".")==-1&&name.indexOf("[")>-1){let _name=name;var matchesVal=_name.match(/\[[\s\S]*?\]/g);for(var y=0;y<matchesVal.length;y++){if(matchesVal[y].indexOf("'")==-1&&matchesVal[y].indexOf('"')==-1)_name=_name.split(matchesVal[y]).join("['"+matchesVal[y].slice(1,-1)+"']")}var value=this.scopedEval(vars,_name)}}}if(this.isFunction(value))value=value.call(value)}catch(e){reportLumenError({stage:"lookup",expr:name,error:e});return""}return value}objectToString=Object.prototype.toString;isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};isFunction(object){return typeof object==="function"}typeStr(obj){return this.isArray(obj)?"array":typeof obj}hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}createEl(tag,attrs,children,events,doc2){const _el2=document.createElement(tag);Object.defineProperty(_el2,"_ownerRe",{value:this,enumerable:false,configurable:true,writable:true});_el2.isSub=false;if(attrs.hasOwnProperty("view")){_el2.isSub=true;_el2.subPath=attrs["view"];_el2.vars={};_el2.views=[];_el2.fns={};if(doc2&&doc2.evs&&doc2.evs.hasOwnProperty("@init")){let _initAttr=doc2.evs["@init"];if(_initAttr){let _initResult=evalEvAttr(_initAttr,{cType:"init"},$(_el2),"init",this.vrs);if(_initResult&&typeof _initResult==="object"&&typeof _initResult.then!=="function"){Object.assign(_el2.vars,_initResult)}}}this.view.views.push(_el2)}_el2.events={};for(const prop in attrs){if(prop=="view"||prop==":data"||prop==":if"||prop==":else-if"||prop==":else"||prop==":for"||prop==":for-limit"||prop==":for-offset"||prop==":for-if")continue;try{let val=doc2&&doc2.ax.hasOwnProperty(prop)?"":attrs[prop];if(prop=="value"){_el2.value=val}else _el2.setAttribute(prop,val)}catch(e){cl(e)}}for(const prop in events){try{_el2.events[prop]=events[prop]}catch(e){cl(e)}}if(children.length)_el2.append(...children);if(events&&events["@after-render"]&&!(attrs&&(attrs.hasOwnProperty(":for")||attrs.hasOwnProperty(":if")||attrs.hasOwnProperty(":else-if")||attrs.hasOwnProperty(":else")))){fireRenderHook({doc:doc2},"after-render",_el2,{})}autoInitPlugins(_el2,attrs);return _el2}evalExp(expr,vars){let rvars={};try{for(let i=0;i<vars.length;i++){let __name=vars[i];if(_vt.View.vars.hasOwnProperty(__name)){rvars[__name]=_vt.View.vars[__name]}else{let _wv=_lookupInWidgets(__name);rvars[__name]=_wv!==void 0?_wv:_vt.Global.vars[__name]}}for(const ky in this.vrs){if(Object.prototype.hasOwnProperty.call(this.vrs,ky)){rvars[ky]=this.vrs[ky]}}if(this.view&&this.view.vars){for(const ky in this.view.vars){if(Object.prototype.hasOwnProperty.call(this.view.vars,ky)){rvars[ky]=this.view.vars[ky]}}}}catch(e){cl(e)}try{var value=this.scopedEval(rvars,expr);if(value&&value!=0)return true}catch(e){reportLumenError({stage:"condition",expr,error:e});return false}return false}splitTextWithMustaches(text,mustaches){mustaches.sort((a,b)=>a.start-b.start);const elements=[];let currentIndex=0;for(const mustache of mustaches){if(currentIndex<mustache.start){elements.push({type:"static",content:text.substring(currentIndex,mustache.start)})}elements.push({type:"mustache",jst:mustache.jst,rvs:mustache.rvs,content:text.substring(mustache.start,mustache.end)});currentIndex=mustache.end}if(currentIndex<text.length){elements.push({type:"static",content:text.substring(currentIndex)})}return elements}walk(doc,parent){var par=this;var tx,el;switch(doc.type){case"text":if(doc.mss.length){let splitIt=true;if(doc.tag=="textarea"){splitIt=false}if(splitIt){let splits=this.splitTextWithMustaches(doc.content,doc.mss);for(let si=0;si<splits.length;si++){const split=splits[si];if(split.type=="static"){let txnd=document.createTextNode(decodeHtmlEntities(split.content));if(!parent)par._RealDOM.push(txnd);(tx??(tx=[])).push(txnd)}else{let txnd=document.createTextNode("");for(let ri=0;ri<split.rvs.length;ri++){const element=split.rvs[ri];(this._effects[element]??(this._effects[element]=[])).push({"type":"text","content":split.content,"jst":split.jst,"rvs":split.rvs,"isSplit":true,"nd":txnd,"tag":doc.tag})}if(!parent)par._RealDOM.push(txnd);(tx??(tx=[])).push(txnd)}}return tx}else{tx=document.createTextNode("");for(let mui=0;mui<doc.mss.length;mui++){const mus=doc.mss[mui];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];(this._effects[element]??(this._effects[element]=[])).push({"type":"text","content":doc.content,"splits":this.splitTextWithMustaches(doc.content,doc.mss),"jst":mus.jst,"rvs":mus.rvs,"isSplit":false,"nd":tx,"tag":doc.tag})}}if(!parent)par._RealDOM.push(tx);return tx}}else{tx=document.createTextNode(decodeHtmlEntities(doc.content));if(!parent)par._RealDOM.push(tx);return tx}break;case"sections":case"section":var _dd=md5(new Date().getTime()/1e3+"::"+Math.random());tx=document.createTextNode("");var typeN=null;if(doc.attrs.hasOwnProperty(":else"))typeN="else";else if(doc.attrs.hasOwnProperty(":else-if"))typeN="else-if";else if(doc.attrs.hasOwnProperty(":if"))typeN="if";else typeN="for";if(doc.type=="section"){var chain=[];if(typeN=="else-if"||typeN=="else"){try{let lastInChain=this._CXR.at(-1);if(lastInChain){_dd=lastInChain.key;chain.push(...lastInChain.chain,lastInChain)}}catch(e){}}el=par.createEl(doc.name,doc.attrs,[],doc.evs,doc);tx.node=el;this._CXR.push({"type":"section","name":typeN,"content":doc.cond,"doc":doc,"key":_dd,"chain":chain,"ref":tx});this.setEffects(doc,el)}else if(doc.type=="sections"){tx.key=_dd;tx.node=null;tx.nodes={};let docRaw=doc;this._LXR.push({"type":"sections","name":typeN,"cond":doc.attrs.hasOwnProperty(":for-if")?doc.attrs[":for-if"]:null,"limit":doc.attrs.hasOwnProperty(":for-limit")?doc.attrs[":for-limit"]:0,"offset":doc.attrs.hasOwnProperty(":for-offset")?doc.attrs[":for-offset"]:0,"content":doc.content,"forX":doc.forX,"doc":docRaw,"key":_dd,"atr":[],"ref":tx})}if(!parent)par._RealDOM.push(tx);return tx;break;case"tag":var _dd=md5(new Date().getTime()/1e3+"::"+Math.random());if(doc.name.toLowerCase()=="settings"){if(par.view.type=="main"){var defaultSettings={layout:"default",requireAuth:false};try{let settingsC=doc.children[0].content;let settings={};eval("settings = "+settingsC+";");if(settings){if(settings.layout==null)settings.layout="default";if(settings.requireAuth==null)settings.requireAuth=false;par.view.settings=settings}else{par.view.settings=defaultSettings}}catch(e){setError(e,"Error in your settings tag inside the '"+par.view.name.toLowerCase()+"' main view!");par.view.settings=defaultSettings}}}else if(doc.name.toLowerCase()=="script"||doc.name.toLowerCase()=="js"){let child=doc.children[0];let js=child.content;let jst=child.jst;let isScoped=false;if(doc.attrs.hasOwnProperty("scoped")){delete doc.attrs["scoped"];isScoped=true}el=par.createEl("script",doc.attrs,[],doc.evs,doc);el._sc=isScoped;el._dd=_dd;el._jst=jst;(par._jj[_dd]??(par._jj[_dd]=[])).push({"nd":el})}else if(doc.name.toLowerCase()=="style"){let css=doc.children[0].content;let isScoped=false;el=par.createEl("style",{},[],doc.evs,doc);if(doc.attrs.hasOwnProperty("scoped")){if(!parent){if(par.view._dd)_dd=par.view._dd;else{par.view._dd=_dd;if(par.view.type=="main")$("[body]")[0].setAttribute("vuid",_dd)}}else{if(parent._dd)_dd=parent._dd;else{parent._dd=_dd;parent.setAttribute("vuid",_dd)}}delete doc.attrs["scoped"];isScoped=true;el._sc=isScoped;el._dd=_dd;el._css=css;(par._cc[_dd]??(par._cc[_dd]=[])).push({"nd":el,"_css":css})}else{el._sc=isScoped;el._dd=_dd;el.textContent=css}for(const prop in doc.attrs){try{_el.setAttribute(prop,doc.attrs[prop])}catch(e){cl(e)}}}else if(doc.name.toLowerCase()=="icon"){let child=par.createEl("span",{"class":"iconify","data-icon":doc?.icon??"mdi:home"},[],{},null);el=par.createEl("span",doc.attrs,[child],doc.evs,doc)}else if(doc.name.toLowerCase()=="slot"){let slotName=doc.attrs&&doc.attrs.name;if(slotName){let tempWrapper=document.createElement("div");let childs=[];for(let i=0;i<doc.children.length;i++){const dc=doc.children[i];let chils=par.walk(dc,tempWrapper);if(chils){if(Array.isArray(chils)){if(chils.length)childs=[...childs,...chils]}else{childs.push(chils)}}}(par.view._slots??(par.view._slots={}))[slotName]=childs}}else if(doc.attrs&&doc.attrs.hasOwnProperty("tpl")&&!doc.attrs.hasOwnProperty(":for")){reportLumenError({stage:"tpl",error:new Error('tpl="'+doc.attrs["tpl"]+'" must be used together with :for on the same element \u2014 templates only render inside a repeated/list context.')})}else{el=par.createEl(doc.name,doc.attrs,[],doc.evs,doc);if(!doc.isV&&!el.isSub){let childs=[];for(let i=0;i<doc.children.length;i++){const dc=doc.children[i];let chils=par.walk(dc,el);if(chils){if(Array.isArray(chils)){if(chils.length)childs=[...childs,...chils]}else{childs.push(chils)}}}childs.length?el.append(...childs):null}}this.setEffects(doc,el);if(el){if(!parent)par._RealDOM.push(el)}return el;break;case"comment":break;default:break}}setEffects(doc2,el2){let rvs=[];if(Object.keys(doc2.ax).length){for(const attrName in doc2.ax){if(Object.hasOwnProperty.call(doc2.ax,attrName)){const attrMustaches=doc2.ax[attrName];for(let i=0;i<attrMustaches.length;i++){const mus=attrMustaches[i];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];rvs.push(element);(this._effects[element]??(this._effects[element]=[])).push({"type":"attr","name":attrName,"content":doc2.attrs[attrName],"splits":this.splitTextWithMustaches(doc2.attrs[attrName],doc2.ax[attrName]),"jst":mus.jst,"rvs":mus.rvs,"nd":el2})}}}}}if(Object.keys(doc2.ex).length){for(const ky in doc2.ex){if(Object.hasOwnProperty.call(doc2.ex,ky)){const mss=doc2.ex[ky];for(let i=0;i<mss.length;i++){const mus=mss[i];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];rvs.push(element);(this._effects[element]??(this._effects[element]=[])).push({"type":"event","name":ky,"content":doc2.evs[ky],"splits":this.splitTextWithMustaches(doc2.evs[ky],doc2.ex[ky]),"jst":mus.jst,"rvs":mus.rvs,"nd":el2})}}}}}return rvs.filter((value,index,self)=>{return self.indexOf(value)===index})}async createSection(cx,vx,isObj,forX){var keyed=cx.key+"_"+vx.index;var tx2=document.createTextNode("");var typeN2=null;if(cx.doc.attrs.hasOwnProperty(":else"))typeN2="else";else if(cx.doc.attrs.hasOwnProperty(":else-if"))typeN2="else-if";else if(cx.doc.attrs.hasOwnProperty(":if"))typeN2="if";else typeN2="for";let el2=this.createEl(cx.doc.name,cx.doc.attrs,[],cx.doc.evs,cx.doc);tx2.node=el2;tx2.key=cx.key;tx2.keyed=keyed;tx2.isObj=isObj;tx2.forX=forX;tx2.vx=vx;let scsc=await renderSection(tx2,cx.doc,this,cx.key);scsc._re=scsc;cx.ref.nodes[keyed]=tx2;return tx2}attrString(attrs){var buff=[];for(var key in attrs){buff.push(key+'="'+attrs[key]+'"')}if(!buff.length)return"";return" "+buff.join(" ")}_stringify(buff,doc2){var par2=this;switch(doc2.type){case"text":return buff+doc2.content;case"tag":buff+="<"+doc2.name+(doc2.attrs?par2.attrString(doc2.attrs):"")+(doc2.isV?"/>":">");if(doc2.isV)return buff;for(let i=0;i<doc2.children.length;i++){const dc=doc2.children[i];buff=buff+par2._stringify("",dc)}return buff+"</"+doc2.name+">";case"comment":return buff;default:return""}}stringify(doc2){var par2=this;return doc2.reduce(function(token,rootEl){return token+par2._stringify("",rootEl)},"")}}async function renderHST(hst,n,type="main",tx2,_pv=null,scopePath=["View"],ownVars,ownFns,ownViews){var reactiveVariables=hst.reactiveVars;hst=hst.hst;let _re=new _lm(new _v({"name":n,"type":type,"hst":hst,"vars":ownVars??tx2?.vx,"fns":ownFns,"views":ownViews,"rvs":reactiveVariables,"_pv":_pv}));_re.view.scopePath=scopePath;if(Object.keys(_re._cc).length){for(const ky in _re._cc){if(Object.hasOwnProperty.call(_re._cc,ky)){const csses=_re._cc[ky];for(let inde=0;inde<csses.length;inde++){let prom=new defer;const css=csses[inde];_csswrk.trigger("css-ready",{"csses":[css._css],"pre":"[vuid='"+ky+"']","key":ky});_vuid[ky]=prom;let _csses=await prom;css.nd.textContent=_csses[0]}}}}if(Object.keys(_re._jj).length){for(const ky in _re._jj){if(Object.hasOwnProperty.call(_re._jj,ky)){const jses=_re._jj[ky];for(let inde=0;inde<jses.length;inde++){const nd=jses[inde].nd;let code=getWatcher(nd._jst,_re.view,reactiveVariables,scopePath).code;code=`try { `+code+` } catch (e) { reportLumenError({ stage: 'script', error: e }); }`;code=code+`
|
|
13
|
+
var cl=console.log;class _v{static name;static type;static vars;static fns;static rvs;static _pv;static mx;static views;static hst;static settings;constructor(obj){this.name=obj.name??"home";this.type=obj.type??"main";this.hst=obj.hst??[];this.views=obj.views??[];this.vars=obj.vars??{};this.fns=obj.fns??{};this.rvs=obj.rvs??{};this._pv=obj._pv??null;this.mx=obj.mx??[];this.settings=obj.settings??{layout:"default",requireAuth:false}}}const consoleLogOriginal=console.log;console.log=function(){for(let i=0;i<arguments.length;i++){const arg=arguments[i];if(arg&&arg.hasOwnProperty("__isProxy")||arg?.target){arguments[i]=arguments[i].target}}consoleLogOriginal.apply(console,arguments)};var _lumenDevMode=true;var _lumenErrorLog=[];var _mountedSubviewEngines=[];var EXPECTED_HST_FORMAT_VERSION=1;var _entityDecodeEl;function decodeHtmlEntities(str){if(!str||str.indexOf("&")===-1)return str;if(!_entityDecodeEl)_entityDecodeEl=document.createElement("textarea");_entityDecodeEl.innerHTML=str;return _entityDecodeEl.value}function _translateLumenError(message){if(!message)return message;return message.replace(/_vt\.View\.vars\[["'`]([^"'`\]]+)["'`]\]/g,"$1")}function reportLumenError(info){info=info||{};var rawMessage=info.message||info.error&&info.error.message||"Unknown error";var entry={time:new Date().toISOString(),stage:info.stage||"runtime",view:info.view||(typeof _vt!=="undefined"&&_vt.View?_vt.View.name:void 0),expr:info.expr,message:_translateLumenError(rawMessage),hint:info.hint};_lumenErrorLog.push(entry);if(_lumenDevMode){console.error("[LumenJS] "+entry.stage+' error in "'+(entry.view||"unknown")+'"'+(entry.expr?" \u2014 "+entry.expr:"")+": "+entry.message+(entry.hint?"\n "+entry.hint:""))}return entry}function _x(_x2){var currPath=[];function _dispatchVarsUpdate(key){let varsIdx=currPath.indexOf("vars");if(varsIdx===-1)return;let varName=varsIdx<currPath.length-1?currPath[varsIdx+1]:key;let rootPath=currPath.slice(0,varsIdx);if(rootPath[0]==="Global"){try{if(typeof window!=="undefined")window[varName]=_x2.Global.vars[varName]}catch(e){}if(_vt.View._re)_vt.View._re.update(varName);for(const regionName in _vt.Widgets){if(_vt.Widgets[regionName]&&_vt.Widgets[regionName]._re){_vt.Widgets[regionName]._re.update(varName)}}for(let msi=0;msi<_mountedSubviewEngines.length;msi++){_mountedSubviewEngines[msi].update(varName)}return}let owner=_x2;for(let i=0;i<rootPath.length&&owner;i++){owner=owner[rootPath[i]]}if(owner&&owner._re)owner._re.update(varName)}const handler={get(target,key){if(key=="__isProxy")return true;if(target===_x2)currPath=[];currPath.push(key);if(typeof target[key]==="object"&&target[key]!==null&&key!="_re"){return new Proxy(target[key],handler)}else{return target[key]??(key=="target"?target:void 0)??void 0}},set(target,key,value){target[key]=value;try{_dispatchVarsUpdate(key)}catch(e){cl(e)}currPath=[];return true},deleteProperty(target,key){if(!(key in target)){return false}delete target[key];try{_dispatchVarsUpdate(key)}catch(e){cl(e)}return true},ownKeys(target){return Reflect.ownKeys(target)},has(target,key){return key in target},defineProperty(target,key,descriptor){if(descriptor&&"value"in descriptor){target[key]=descriptor.value}return target},getOwnPropertyDescriptor(target,key){const value=target[key];return key in target?{value,enumerable:true,configurable:true}:void 0}};var x=new Proxy(_x2,handler);return x}let _vt=_x({"View":new _v({}),"Global":{"vars":{},"fns":{}},"Widgets":{}});function touch(name){if(_vt.Global.vars.hasOwnProperty(name)){_vt.Global.vars[name]=_vt.Global.vars[name]}}var _deepReactiveCache=typeof WeakMap!=="undefined"?new WeakMap:null;function _deepReactive(obj,onChange){if(obj===null||typeof obj!=="object")return obj;if(_deepReactiveCache&&_deepReactiveCache.has(obj))return _deepReactiveCache.get(obj);var proxy=new Proxy(obj,{get(target,key){var v=target[key];if(v!==null&&typeof v==="object"&&typeof key!=="symbol"){return _deepReactive(v,onChange)}return v},set(target,key,value){target[key]=value;onChange();return true},deleteProperty(target,key){if(key in target)delete target[key];onChange();return true}});if(_deepReactiveCache)_deepReactiveCache.set(obj,proxy);return proxy}function _lookupInWidgets(name){for(const wname in _vt.Widgets){if(_vt.Widgets[wname].vars.hasOwnProperty(name))return _vt.Widgets[wname].vars[name]}return void 0}function _resolveScopePathTarget(scopePath){let target=_vt;for(let i=0;i<scopePath.length;i++)target=target[scopePath[i]];return target}function _evalEventScopedExpr(ownerRe,expr){if(!ownerRe||!ownerRe.view)return eval(expr);let ownVars=ownerRe.view.vars||{};let widgetsVars=_mergedWidgetsVars();let scopeProxy=new Proxy({},{has(target,key){if(typeof key==="symbol")return false;return ownVars.hasOwnProperty(key)||widgetsVars.hasOwnProperty(key)||_vt.Global.vars.hasOwnProperty(key)},get(target,key){if(ownVars.hasOwnProperty(key))return ownVars[key];if(widgetsVars.hasOwnProperty(key))return widgetsVars[key];return _vt.Global.vars[key]},set(target,key,value){try{if(ownVars.hasOwnProperty(key)&&ownerRe.view.scopePath){_resolveScopePathTarget(ownerRe.view.scopePath).vars[key]=value}else if(widgetsVars.hasOwnProperty(key)){for(const wname in _vt.Widgets){if(_vt.Widgets[wname].vars.hasOwnProperty(key)){_vt.Widgets[wname].vars[key]=value;break}}}else{_vt.Global.vars[key]=value}}catch(e){cl(e)}return true}});function _runWithScope(expr){with(scopeProxy){return eval(expr)}}return _runWithScope(expr)}function _mergedWidgetsVars(){let out={};let names=Object.keys(_vt.Widgets).reverse();for(const wname of names){out={...out,..._vt.Widgets[wname].vars}}return out}class _lm{_RealDOM=[];_effects={};_cc={};_jj={};_ready=false;view=void 0;sbscrbs=[];reactiveVariables=[];vrs={};_CXR=[];_LXR=[];constructor(view){this.view=view;this.view._re=this;this.reactiveVariables=view?.rvs??{};this.init();if(this.view.type=="main")_vt.View=this.view;if(this.view._pv){this.view._pv.subscribe(this.view)}return this}init(){var par2=this;this.view.hst.forEach(function(doc2){par2.walk(doc2,null)})}subscribe(view){this.sbscrbs.push(view)}scopedEval(context,expr2,kk){let ctx=this.concatVarsAtLevel(context,this);if(kk){if(!ctx.hasOwnProperty(kk))return void 0;delete ctx[kk]}try{const evaluator=Function.apply(null,[...Object.keys(ctx),"expr","return eval(expr)"]);return evaluator.apply(null,[...Object.values(ctx),expr2])}catch(e){if(e instanceof TypeError&&!kk){let hadUndefined=false;let strippedCtx={};for(const k2 in ctx){if(ctx[k2]===void 0||ctx[k2]===null){hadUndefined=true;continue}strippedCtx[k2]=ctx[k2]}if(hadUndefined){try{const evaluator2=Function.apply(null,[...Object.keys(strippedCtx),"expr","return eval(expr)"]);return evaluator2.apply(null,[...Object.values(strippedCtx),expr2])}catch(e2){reportLumenError({stage:"expression",expr:expr2,error:e2});return void 0}}}reportLumenError({stage:"expression",expr:expr2,error:e});return void 0}}getVals(effect){let val="";if(effect.type=="text"){if(!effect.isSplit){for(let i=0;i<effect.splits.length;i++){let split=effect.splits[i];if(split.type=="mustache"){val+=this.getVal(split.content)}else{val+=split.content}}}else{val=this.getVal(effect.content)}}else if(effect.type=="attr"||effect.type=="event"){for(let i=0;i<effect.splits.length;i++){let split=effect.splits[i];if(split.type=="mustache"){val+=this.getVal(split.content)}else{val+=split.content}}}return val}renderAll(){if(this._ready)return;this._ready=true;for(const rv in this._effects){if(Object.prototype.hasOwnProperty.call(this._effects,rv)){const effects=this._effects[rv];for(let ei=0;ei<effects.length;ei++){const effect=effects[ei];if(!effect.nd)continue;try{if(effect.type=="text"){effect.nd.textContent=this.render(effect)}else if(effect.type=="attr"){if(effect.name=="value"){effect.nd.value=this.render(effect)}else{effect.nd.setAttribute(effect.name,this.render(effect));if(effect.name=="view"){effect.nd.subPath=this.render(effect);renderView(this.render(effect),true,{})}}}else if(effect.type=="event"){effect.nd.events[effect.name]=this.render(effect)}}catch(e){cl("Eeeeee",e)}}}}this.updateCXRs();this.updateLXRs();this.updateVXRs();if(typeof appSettings!=="undefined"&&appSettings&&typeof appSettings.tick==="function"){try{appSettings.tick()}catch(e){cl(e)}}}chainConnected(cx){for(let i=cx.chain.length-1;i>=0;i--){const cxs=cx.chain[i];if(cxs.ref.isPreConnected){return true}}return false}async updateVXRs(k){let subsNames=[];for(let i=0;i<this.view.views.length;i++){const _view=this.view.views[i];if(!subsNames.includes(_view.subPath))subsNames.push(_view.subPath)}for(let i=0;i<subsNames.length;i++){const n=subsNames[i];renderView(n,true,{},"views",this.view.views,this.view.scopePath||["View"])}}async updateCXRs(k){for(let i=0;i<this._CXR.length;i++){const cx=this._CXR[i];if(cx.name=="if"){let isTrue=this.evalExp(cx.content,this.reactiveVariables);if(isTrue){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}else if(cx.name=="else-if"){if(!this.chainConnected(cx)){let isTrue=this.evalExp(cx.content,this.reactiveVariables);if(isTrue){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}else{await this.hideSectionCX(cx)}}else if(cx.name=="else"){if(!this.chainConnected(cx)){await this.showSectionCX(cx,k)}else{await this.hideSectionCX(cx)}}}}async showSectionCX(cx,k){let wasConnected=cx.ref.node.isConnected;cx.ref.isPreConnected=true;await renderSection(cx.ref,cx.doc,this,k);if(!wasConnected)await fireRenderHook(cx,"after-render",cx.ref.node,{visible:true})}async hideSectionCX(cx){if(cx.ref.node.isConnected)await fireRenderHook(cx,"before-render",cx.ref.node,{visible:false});cx.ref.isPreConnected=false;cx.ref.node.replaceWith(cx.ref)}render(effect){let x="";try{if(effect.type=="text"||effect.type=="attr"||effect.type=="event"){x=this.getVals(effect)}}catch(e){cl(e)}return x}update(k){if(!this._ready)return;if(this._effects.hasOwnProperty(k)){const effects=this._effects[k];for(let ei=0;ei<effects.length;ei++){const effect=effects[ei];if(!effect.nd)continue;try{if(effect.type=="text"){effect.nd.textContent=this.render(effect)}else if(effect.type=="attr"){if(effect.name=="value"){effect.nd.value=this.render(effect)}else{effect.nd.setAttribute(effect.name,this.render(effect));if(effect.name=="view"){effect.nd.subPath=this.render(effect);renderView(this.render(effect),true,{})}}}else if(effect.type=="event"){effect.nd.events[effect.name]=this.render(effect)}}catch(e){cl("Eeeeee",e)}}}this.updateCXRs(k);this.updateLXRs(k);for(let sbscsi=0;sbscsi<this.sbscrbs.length;sbscsi++){const sbscr=this.sbscrbs[sbscsi];sbscr._re.update(k)}if(typeof appSettings!=="undefined"&&appSettings&&typeof appSettings.tick==="function"){try{appSettings.tick()}catch(e){cl(e)}}}async updateLXRs(k){for(let i=0;i<this._LXR.length;i++){var cx=this._LXR[i];var forX=cx.forX;if(k&&k!=forX["js"])continue;if(cx._updating)continue;cx._updating=true;try{var val=this.getVal(forX["js"],"");var tempVal=[];if(this.typeStr(val)=="number"){for(let i2=0;i2<val;i2++){tempVal.push(i2)}val=tempVal}let vals=[];let isObj=false;if(this.typeStr(val)=="object"){isObj=true;for(const oKey in val){if(Object.hasOwnProperty.call(val,oKey)){const item=val[oKey];let objj={key:oKey,value:item};vals.push(objj)}}}else vals=clone(val);if(this.typeStr(vals)=="array"&&vals.length>0){let forIf=cx.cond;let limit=vals.length;let offset=0;if(cx.limit)limit=(isNaN(cx.limit)?cx.limit:limit)>vals.length?vals.length:cx.limit*1;if(cx.offset)offset=(isNaN(cx.offset)?cx.offset:offset)<0?0:cx.offset*1;let marray=[];if(forIf){marray=vals.slice(offset*1,vals.length)}else{marray=vals.slice(offset*1,limit*1+offset*1)}let myLimit=0;let arrayToRender=[];let arrayToRenderVXs=[];for(var index=0;index<marray.length;index++){if(myLimit==limit*1)break;try{let vx={};vx["index"]=myLimit;if(forX["dx"]!="")vx[forX["dx"]]=myLimit;if(isObj){if(forX["as"]["v"]!=""){if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index]["key"];if(forX["as"]["v"])vx[forX["as"]["v"]]=marray[index]["value"]}else{if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index]}vx["key"]=marray[index]["key"];vx["value"]=marray[index]["value"]}else{if(forX["as"]["k"])vx[forX["as"]["k"]]=marray[index];else if(marray[index]&&typeof marray[index]==="object"){for(const k2 in marray[index]){if(Object.prototype.hasOwnProperty.call(marray[index],k2)){vx[k2]=marray[index][k2]}}}}if(forIf){let _prevVrs=this.vrs;this.vrs=vx;let isTrue;try{isTrue=this.evalExp(forIf,[])}finally{this.vrs=_prevVrs}if(!isTrue)continue}let miIndexx=offset*1+index*1;arrayToRender.push(marray[index]);arrayToRenderVXs.push(vx);myLimit++}catch(e){cl(e)}}let oldATR=cx.atr;cx.atr=clone(arrayToRender);const actions=this.compareArrays(oldATR,arrayToRender);if(actions.length)await fireRenderHook(cx,"before-render",cx.ref.parentElement,{items:arrayToRender,actions});for(let ai=0;ai<actions.length;ai++){const actn=actions[ai];if(actn.action=="add"){let vx=arrayToRenderVXs[actn.index];let cln=await this.createSection(cx,vx,isObj,forX);cx.ref.before(cln);cln.replaceWith(cln.node)}else if(actn.action=="remove"){var keyed=cx.key+"_"+actn.index;let tx2=cx.ref?.nodes[keyed];if(tx2){tx2.remove();tx2.node.remove();delete cx.tx?.nodes[keyed]}}else{var keyed=cx.key+"_"+actn.index;let tx2=cx.ref?.nodes[keyed];let vx=arrayToRenderVXs[actn.index];if(tx2){tx2._re.vrs=vx;if(tx2.isObj){if(tx2.forX.as["k"]!="")tx2._re.update(tx2.forX.as["k"]);else tx2._re.update(tx2.forX.js);if(tx2.forX.as["v"]!="")tx2._re.update(tx2.forX.as["v"]);for(let actnsi=0;actnsi<actn.updates.length;actnsi++){const actnu=actn.updates[actnsi];tx2._re.update(actnu.property)}}else{if(tx2.forX.as["k"]!="")tx2._re.update(tx2.forX.as["k"]);else tx2._re.update(tx2.forX.js)}}}}if(actions.length)await fireRenderHook(cx,"after-render",cx.ref.parentElement,{items:arrayToRender,actions})}else{cx.nodes=[]}}finally{cx._updating=false}}}compareLogic(array1,array2){if(array1.length===array2.length){return 1}else{if(array1.length>array2.length){return 2}else{return 3}}}compareArrays(array1,array2){const actions=[];const maxLength=Math.max(array1.length,array2.length);for(let i=0;i<maxLength;i++){const element1=array1[i];const element2=array2[i];if(!element2){actions.push({action:"remove",index:i})}else if(!element1){actions.push({action:"add",index:i,element:element2})}else if(!this.deepCompare(element1,element2)){actions.push({action:"update",index:i,updates:this.getUpdates(element1,element2)})}}return actions}findDeletedIndexes(array1,array2){const deletedIndexes=[];let par2=this;array1.forEach((item,index)=>{const foundIndex=array2.findIndex(el2=>par2.deepCompare(el2,item));if(foundIndex===-1){deletedIndexes.push(index)}});return deletedIndexes}findAddedIndexes(array1,array2){const addedIndexes=[];let par2=this;array2.forEach((item,index)=>{const foundIndex=array1.findIndex(el2=>par2.deepCompare(el2,item));if(foundIndex===-1){addedIndexes.push(index)}});return addedIndexes}deepCompare(obj1,obj2){return JSON.stringify(obj1)===JSON.stringify(obj2)}getUpdates(oldObj,newObj){const updates=[];for(const key in newObj){if(newObj.hasOwnProperty(key)&&newObj[key]!==oldObj[key]){updates.push({property:key,value:newObj[key]})}}return updates}getVal(mo,indexName){let vars={};try{for(let i=0;i<this.reactiveVariables.length;i++){let __name=this.reactiveVariables[i];if(_vt.View.vars.hasOwnProperty(__name)){vars[__name]=_vt.View.vars[__name]}else{let _wv=_lookupInWidgets(__name);let _gv=_wv!==void 0?_wv:_vt.Global.vars[__name];if(_gv!==void 0)vars[__name]=_gv}}for(const ky in this.vrs){if(Object.prototype.hasOwnProperty.call(this.vrs,ky)){vars[ky]=this.vrs[ky]}}if(this.view&&this.view.vars){for(const ky in this.view.vars){if(Object.prototype.hasOwnProperty.call(this.view.vars,ky)){vars[ky]=this.view.vars[ky]}}}}catch(e){cl(e)}mo=mo.trim();if(mo.slice(0,2)=="{{"){mo=mo.slice(2,-2)}let value="";let _mo=mo;if(mo.indexOf("`")>-1){var matchesVal=_mo.match(/\.`[\s\S]*?`/g);if(matchesVal)for(var y=0;y<matchesVal.length;y++){_mo=_mo.split(matchesVal[y]).join("."+this.getVal(matchesVal[y].substr(1).slice(1,-1),indexName))}var matchesVal=_mo.match(/`[\s\S]*?`/g);if(matchesVal)for(var y=0;y<matchesVal.length;y++){_mo=_mo.split(matchesVal[y]).join("'"+this.getVal(matchesVal[y].slice(1,-1),indexName)+"'")}return this.getVal(_mo,indexName)}if(mo.indexOf(";")>-1){let zxx=mo.split(";");mo=$.trim(zxx[0])}if(mo.indexOf(" as ")>-1){mo=mo.split(" as ");return this.getVal(mo[0],indexName)}if(indexName){indexName=indexName.toString();if(mo.indexOf(indexName)>-1&&mo!=indexName&&vars.hasOwnProperty(indexName)&&mo!="index"){mo=mo.split(indexName).join(vars[indexName]);return this.getVal(mo,indexName)}}var Ondex=mo.match(/\bindex\b/g);if(Ondex&&mo!="index"&&vars.hasOwnProperty("index")){_mo=mo.replace(/\bindex\b/g,vars["index"]);return this.getVal(_mo,indexName)}value=this.lookup(mo,vars);return value??""}concatVarsAtLevel(levelVars,parent2){if(!parent2.view._pv){var concatenatedVars={...levelVars};if(parent2.view.vars){concatenatedVars={..._vt.Global.vars,..._mergedWidgetsVars(),...parent2.view.vars,...concatenatedVars}}return concatenatedVars}var concatenatedVars={...levelVars};if(parent2.view.vars){concatenatedVars={...parent2.view.vars,...concatenatedVars}}return this.concatVarsAtLevel(concatenatedVars,parent2.view._pv)}lookup(name,vaz){let vars=this.concatVarsAtLevel(vaz,this);try{var value;var names,index,lookupHit=false;if(this.hasProperty(vars,name)){value=vars[name]}else if(name.indexOf(".")>-1&&name.indexOf("[")==-1){var value=this.scopedEval(vars,name);if(!(value||value==0)){value=vars;names=name.split(".");index=0;while(value!=null&&index<names.length){if(index===names.length-1)lookupHit=this.hasProperty(value,names[index]);value=value[names[index++]]}}}else{var value=this.scopedEval(vars,name);if(!(value||value==0)){if(name.indexOf(".")==-1&&name.indexOf("[")>-1){let _name=name;var matchesVal=_name.match(/\[[\s\S]*?\]/g);for(var y=0;y<matchesVal.length;y++){if(matchesVal[y].indexOf("'")==-1&&matchesVal[y].indexOf('"')==-1)_name=_name.split(matchesVal[y]).join("['"+matchesVal[y].slice(1,-1)+"']")}var value=this.scopedEval(vars,_name)}}}if(this.isFunction(value))value=value.call(value)}catch(e){reportLumenError({stage:"lookup",expr:name,error:e});return""}return value}objectToString=Object.prototype.toString;isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};isFunction(object){return typeof object==="function"}typeStr(obj){return this.isArray(obj)?"array":typeof obj}hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}createEl(tag,attrs,children,events,doc2){const _el2=document.createElement(tag);Object.defineProperty(_el2,"_ownerRe",{value:this,enumerable:false,configurable:true,writable:true});_el2.isSub=false;if(attrs.hasOwnProperty("view")){_el2.isSub=true;_el2.subPath=attrs["view"];_el2.vars={};_el2.views=[];_el2.fns={};if(doc2&&doc2.evs&&doc2.evs.hasOwnProperty("@init")){let _initAttr=doc2.evs["@init"];if(_initAttr){let _initResult=evalEvAttr(_initAttr,{cType:"init"},$(_el2),"init",this.vrs);if(_initResult&&typeof _initResult==="object"&&typeof _initResult.then!=="function"){Object.assign(_el2.vars,_initResult)}}}this.view.views.push(_el2)}_el2.events={};for(const prop in attrs){if(prop=="view"||prop==":data"||prop==":if"||prop==":else-if"||prop==":else"||prop==":for"||prop==":for-limit"||prop==":for-offset"||prop==":for-if")continue;try{let val=doc2&&doc2.ax.hasOwnProperty(prop)?"":attrs[prop];if(prop=="value"){_el2.value=val}else _el2.setAttribute(prop,val)}catch(e){cl(e)}}for(const prop in events){try{_el2.events[prop]=events[prop]}catch(e){cl(e)}}if(children.length)_el2.append(...children);if(events&&events["@after-render"]&&!(attrs&&(attrs.hasOwnProperty(":for")||attrs.hasOwnProperty(":if")||attrs.hasOwnProperty(":else-if")||attrs.hasOwnProperty(":else")))){fireRenderHook({doc:doc2},"after-render",_el2,{})}autoInitPlugins(_el2,attrs);return _el2}evalExp(expr2,vars){let rvars={};try{for(let i=0;i<vars.length;i++){let __name=vars[i];if(_vt.View.vars.hasOwnProperty(__name)){rvars[__name]=_vt.View.vars[__name]}else{let _wv=_lookupInWidgets(__name);rvars[__name]=_wv!==void 0?_wv:_vt.Global.vars[__name]}}for(const ky in this.vrs){if(Object.prototype.hasOwnProperty.call(this.vrs,ky)){rvars[ky]=this.vrs[ky]}}if(this.view&&this.view.vars){for(const ky in this.view.vars){if(Object.prototype.hasOwnProperty.call(this.view.vars,ky)){rvars[ky]=this.view.vars[ky]}}}}catch(e){cl(e)}try{var value=this.scopedEval(rvars,expr2);if(value&&value!=0)return true}catch(e){reportLumenError({stage:"condition",expr:expr2,error:e});return false}return false}splitTextWithMustaches(text,mustaches){mustaches.sort((a,b)=>a.start-b.start);const elements=[];let currentIndex=0;for(const mustache of mustaches){if(currentIndex<mustache.start){elements.push({type:"static",content:text.substring(currentIndex,mustache.start)})}elements.push({type:"mustache",jst:mustache.jst,rvs:mustache.rvs,content:text.substring(mustache.start,mustache.end)});currentIndex=mustache.end}if(currentIndex<text.length){elements.push({type:"static",content:text.substring(currentIndex)})}return elements}walk(doc,parent){var par=this;var tx,el;switch(doc.type){case"text":if(doc.mss.length){let splitIt=true;if(doc.tag=="textarea"){splitIt=false}if(splitIt){let splits=this.splitTextWithMustaches(doc.content,doc.mss);for(let si=0;si<splits.length;si++){const split=splits[si];if(split.type=="static"){let txnd=document.createTextNode(decodeHtmlEntities(split.content));if(!parent)par._RealDOM.push(txnd);(tx??(tx=[])).push(txnd)}else{let txnd=document.createTextNode("");for(let ri=0;ri<split.rvs.length;ri++){const element=split.rvs[ri];(this._effects[element]??(this._effects[element]=[])).push({"type":"text","content":split.content,"jst":split.jst,"rvs":split.rvs,"isSplit":true,"nd":txnd,"tag":doc.tag})}if(!parent)par._RealDOM.push(txnd);(tx??(tx=[])).push(txnd)}}return tx}else{tx=document.createTextNode("");for(let mui=0;mui<doc.mss.length;mui++){const mus=doc.mss[mui];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];(this._effects[element]??(this._effects[element]=[])).push({"type":"text","content":doc.content,"splits":this.splitTextWithMustaches(doc.content,doc.mss),"jst":mus.jst,"rvs":mus.rvs,"isSplit":false,"nd":tx,"tag":doc.tag})}}if(!parent)par._RealDOM.push(tx);return tx}}else{tx=document.createTextNode(decodeHtmlEntities(doc.content));if(!parent)par._RealDOM.push(tx);return tx}break;case"sections":case"section":var _dd=md5(new Date().getTime()/1e3+"::"+Math.random());tx=document.createTextNode("");var typeN=null;if(doc.attrs.hasOwnProperty(":else"))typeN="else";else if(doc.attrs.hasOwnProperty(":else-if"))typeN="else-if";else if(doc.attrs.hasOwnProperty(":if"))typeN="if";else typeN="for";if(doc.type=="section"){var chain=[];if(typeN=="else-if"||typeN=="else"){try{let lastInChain=this._CXR.at(-1);if(lastInChain){_dd=lastInChain.key;chain.push(...lastInChain.chain,lastInChain)}}catch(e){}}el=par.createEl(doc.name,doc.attrs,[],doc.evs,doc);tx.node=el;this._CXR.push({"type":"section","name":typeN,"content":doc.cond,"doc":doc,"key":_dd,"chain":chain,"ref":tx});this.setEffects(doc,el)}else if(doc.type=="sections"){tx.key=_dd;tx.node=null;tx.nodes={};let docRaw=doc;this._LXR.push({"type":"sections","name":typeN,"cond":doc.attrs.hasOwnProperty(":for-if")?doc.attrs[":for-if"]:null,"limit":doc.attrs.hasOwnProperty(":for-limit")?doc.attrs[":for-limit"]:0,"offset":doc.attrs.hasOwnProperty(":for-offset")?doc.attrs[":for-offset"]:0,"content":doc.content,"forX":doc.forX,"doc":docRaw,"key":_dd,"atr":[],"ref":tx})}if(!parent)par._RealDOM.push(tx);return tx;break;case"tag":var _dd=md5(new Date().getTime()/1e3+"::"+Math.random());if(doc.name.toLowerCase()=="settings"){if(par.view.type=="main"){var defaultSettings={layout:"default",requireAuth:false};try{let settingsC=doc.children[0].content;let settings={};eval("settings = "+settingsC+";");if(settings){if(settings.layout==null)settings.layout="default";if(settings.requireAuth==null)settings.requireAuth=false;par.view.settings=settings}else{par.view.settings=defaultSettings}}catch(e){setError(e,"Error in your settings tag inside the '"+par.view.name.toLowerCase()+"' main view!");par.view.settings=defaultSettings}}}else if(doc.name.toLowerCase()=="script"||doc.name.toLowerCase()=="js"){let child=doc.children[0];let js=child.content;let jst=child.jst;let isScoped=false;if(doc.attrs.hasOwnProperty("scoped")){delete doc.attrs["scoped"];isScoped=true}el=par.createEl("script",doc.attrs,[],doc.evs,doc);el._sc=isScoped;el._dd=_dd;el._jst=jst;(par._jj[_dd]??(par._jj[_dd]=[])).push({"nd":el})}else if(doc.name.toLowerCase()=="style"){let css=doc.children[0].content;let isScoped=false;el=par.createEl("style",{},[],doc.evs,doc);if(doc.attrs.hasOwnProperty("scoped")){if(!parent){if(par.view._dd)_dd=par.view._dd;else{par.view._dd=_dd;if(par.view.type=="main")$("[body]")[0].setAttribute("vuid",_dd)}}else{if(parent._dd)_dd=parent._dd;else{parent._dd=_dd;parent.setAttribute("vuid",_dd)}}delete doc.attrs["scoped"];isScoped=true;el._sc=isScoped;el._dd=_dd;el._css=css;(par._cc[_dd]??(par._cc[_dd]=[])).push({"nd":el,"_css":css})}else{el._sc=isScoped;el._dd=_dd;el.textContent=css}for(const prop in doc.attrs){try{_el.setAttribute(prop,doc.attrs[prop])}catch(e){cl(e)}}}else if(doc.name.toLowerCase()=="icon"){let child=par.createEl("span",{"class":"iconify","data-icon":doc?.icon??"mdi:home"},[],{},null);el=par.createEl("span",doc.attrs,[child],doc.evs,doc)}else if(doc.name.toLowerCase()=="slot"){let slotName=doc.attrs&&doc.attrs.name;if(slotName){let tempWrapper=document.createElement("div");let childs=[];for(let i=0;i<doc.children.length;i++){const dc=doc.children[i];let chils=par.walk(dc,tempWrapper);if(chils){if(Array.isArray(chils)){if(chils.length)childs=[...childs,...chils]}else{childs.push(chils)}}}(par.view._slots??(par.view._slots={}))[slotName]=childs}}else if(doc.attrs&&doc.attrs.hasOwnProperty("tpl")&&!doc.attrs.hasOwnProperty(":for")){reportLumenError({stage:"tpl",error:new Error('tpl="'+doc.attrs["tpl"]+'" must be used together with :for on the same element \u2014 templates only render inside a repeated/list context.')})}else{el=par.createEl(doc.name,doc.attrs,[],doc.evs,doc);if(!doc.isV&&!el.isSub){let childs=[];for(let i=0;i<doc.children.length;i++){const dc=doc.children[i];let chils=par.walk(dc,el);if(chils){if(Array.isArray(chils)){if(chils.length)childs=[...childs,...chils]}else{childs.push(chils)}}}childs.length?el.append(...childs):null}}this.setEffects(doc,el);if(el){if(!parent)par._RealDOM.push(el)}return el;break;case"comment":break;default:break}}setEffects(doc2,el2){let rvs=[];if(Object.keys(doc2.ax).length){for(const attrName in doc2.ax){if(Object.hasOwnProperty.call(doc2.ax,attrName)){const attrMustaches=doc2.ax[attrName];for(let i=0;i<attrMustaches.length;i++){const mus=attrMustaches[i];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];rvs.push(element);(this._effects[element]??(this._effects[element]=[])).push({"type":"attr","name":attrName,"content":doc2.attrs[attrName],"splits":this.splitTextWithMustaches(doc2.attrs[attrName],doc2.ax[attrName]),"jst":mus.jst,"rvs":mus.rvs,"nd":el2})}}}}}if(Object.keys(doc2.ex).length){for(const ky in doc2.ex){if(Object.hasOwnProperty.call(doc2.ex,ky)){const mss=doc2.ex[ky];for(let i=0;i<mss.length;i++){const mus=mss[i];for(let ri=0;ri<mus.rvs.length;ri++){const element=mus.rvs[ri];rvs.push(element);(this._effects[element]??(this._effects[element]=[])).push({"type":"event","name":ky,"content":doc2.evs[ky],"splits":this.splitTextWithMustaches(doc2.evs[ky],doc2.ex[ky]),"jst":mus.jst,"rvs":mus.rvs,"nd":el2})}}}}}return rvs.filter((value,index,self)=>{return self.indexOf(value)===index})}async createSection(cx,vx,isObj,forX){var keyed=cx.key+"_"+vx.index;var tx2=document.createTextNode("");var typeN2=null;if(cx.doc.attrs.hasOwnProperty(":else"))typeN2="else";else if(cx.doc.attrs.hasOwnProperty(":else-if"))typeN2="else-if";else if(cx.doc.attrs.hasOwnProperty(":if"))typeN2="if";else typeN2="for";let el2=this.createEl(cx.doc.name,cx.doc.attrs,[],cx.doc.evs,cx.doc);tx2.node=el2;tx2.key=cx.key;tx2.keyed=keyed;tx2.isObj=isObj;tx2.forX=forX;tx2.vx=vx;let scsc=await renderSection(tx2,cx.doc,this,cx.key);scsc._re=scsc;cx.ref.nodes[keyed]=tx2;return tx2}attrString(attrs){var buff=[];for(var key in attrs){buff.push(key+'="'+attrs[key]+'"')}if(!buff.length)return"";return" "+buff.join(" ")}_stringify(buff,doc2){var par2=this;switch(doc2.type){case"text":return buff+doc2.content;case"tag":buff+="<"+doc2.name+(doc2.attrs?par2.attrString(doc2.attrs):"")+(doc2.isV?"/>":">");if(doc2.isV)return buff;for(let i=0;i<doc2.children.length;i++){const dc=doc2.children[i];buff=buff+par2._stringify("",dc)}return buff+"</"+doc2.name+">";case"comment":return buff;default:return""}}stringify(doc2){var par2=this;return doc2.reduce(function(token,rootEl){return token+par2._stringify("",rootEl)},"")}}async function renderHST(hst,n,type="main",tx2,_pv=null,scopePath=["View"],ownVars2,ownFns,ownViews){var reactiveVariables=hst.reactiveVars;hst=hst.hst;let _re=new _lm(new _v({"name":n,"type":type,"hst":hst,"vars":ownVars2??tx2?.vx,"fns":ownFns,"views":ownViews,"rvs":reactiveVariables,"_pv":_pv}));_re.view.scopePath=scopePath;if(Object.keys(_re._cc).length){for(const ky in _re._cc){if(Object.hasOwnProperty.call(_re._cc,ky)){const csses=_re._cc[ky];for(let inde=0;inde<csses.length;inde++){let prom=new defer;const css=csses[inde];_csswrk.trigger("css-ready",{"csses":[css._css],"pre":"[vuid='"+ky+"']","key":ky});_vuid[ky]=prom;let _csses=await prom;css.nd.textContent=_csses[0]}}}}if(Object.keys(_re._jj).length){for(const ky in _re._jj){if(Object.hasOwnProperty.call(_re._jj,ky)){const jses=_re._jj[ky];for(let inde=0;inde<jses.length;inde++){const nd=jses[inde].nd;let code=getWatcher(nd._jst,_re.view,reactiveVariables,scopePath).code;code=`try { `+code+` } catch (e) { reportLumenError({ stage: 'script', error: e }); }`;code=code+`
|
|
14
14
|
//# sourceURL=`+(_re.view?.name||"view")+`.view.generated.js`;nd.textContent=code}}}}return _re}async function fireRenderHook(cx,n,containerEl,extra){if(!containerEl)return;let attrKey="@"+n;if(!cx.doc||!cx.doc.evs||!cx.doc.evs.hasOwnProperty(attrKey))return;let attrVal=cx.doc.evs[attrKey];if(!attrVal)return;let ev=Object.assign({cType:n},extra||{});let result=evalEvAttr(attrVal,ev,$(containerEl),n);if(result&&typeof result.then==="function"){try{return await result}catch(e){return void 0}}return result}function autoInitPlugins(el2,attrs){if(!attrs)return;try{if(attrs.hasOwnProperty("sl")&&typeof $.fn.select2==="function"){initSl($(el2))}if(attrs.hasOwnProperty("color")&&typeof $.fn.colorpicker==="function"){$(el2).removeAttr("color").colorpicker({format:"rgba"})}if(typeof $.fn.datetimepicker==="function"){if(attrs.hasOwnProperty("time"))dtp($(el2),"time");if(attrs.hasOwnProperty("date"))dtp($(el2),"date");if(attrs.hasOwnProperty("datetime"))dtp($(el2),"datetime")}}catch(e){cl(e)}}function initSl(t){if(t.hasClass("select2-hidden-accessible"))return;try{var plchldr=t.attr("placeholder")?t.attr("placeholder"):"";var dir=$("body").hasClass("rtl")?"rtl":"ltr";var nr=t.attr("sl-nrmsg")?t.attr("sl-nrmsg"):"No results found";var minResultsForSearch=t.attr("sl-mins")?t.attr("sl-mins"):10;var allowNewTags=t.attr("sl-ntgs")?true:false;var dropdownParent=t.attr("sl-prt")?t.attr("sl-prt"):"body";if(dropdownParent=="self")dropdownParent=t.parent();else dropdownParent=$(dropdownParent);var query=t.attr("sl-query")?t.attr("sl-query"):null;var uniquer=Date.now();if(typeof window[query]==="function"){t.select2.amd.define("adapt_"+uniquer,["select2/data/array","select2/utils"],function(ArrayAdapter,Utils){function CustomDataAdapter($element,options){CustomDataAdapter.__super__.constructor.call(this,$element,options)}Utils.Extend(CustomDataAdapter,ArrayAdapter);CustomDataAdapter.prototype.query=function(params,callback){clearTimeout(_dbcrs[uniquer]);let _t=t;_dbcrs[uniquer]=setTimeout(function(){window[query](params,callback,_t)},!_dbcrs.hasOwnProperty(uniquer)?0:_dbcrsTime)};return CustomDataAdapter});t.select2({dropdownParent,minimumResultsForSearch:minResultsForSearch,placeholder:plchldr,dir,tags:allowNewTags,allowClear:true,language:{noResults:function(){return nr}},...t.select2.amd.require("adapt_"+uniquer)?{ajax:{},dataAdapter:t.select2.amd.require("adapt_"+uniquer)}:{}})}else{t.select2({dropdownParent,minimumResultsForSearch:minResultsForSearch,placeholder:plchldr,dir,tags:allowNewTags,allowClear:true,language:{noResults:function(){return nr}}})}if(t.attr("sl-nosrch"))t.on("select2:opening select2:closing",function(event){$(this).parent().find(".select2-search__field").prop("disabled",true)});if(t.attr("sl-class")){t.on("select2:opening",function(event){dropdownParent.addClass(t.attr("sl-class"))});t.on("select2:closing",function(event){dropdownParent.removeClass(t.attr("sl-class"))})}if(t.attr("sl-id")||t.attr("sl-text")){let text=t.attr("sl-text");let id=t.attr("sl-id");if(!text)text=id;if(!id)id=text;let newOption=new Option(text,id,true,true);t.append(newOption).trigger("select")}else{t.select2("val","")}if(t.attr("sl-value"))t.val(t.attr("sl-value")).trigger("change")}catch(e){cl(e)}}var _dbcrs={};var _dbcrsTime=250;function dtp(el2,t){el2.removeAttr(t);let opts={format:t=="date"?"yyyy-mm-dd":t=="time"?"hh:ii":"yyyy-mm-dd hh:ii",weekStart:el2.attr("date-week-start")??1,startView:t=="time"?1:el2.attr("startview")?el2.attr("startview"):2,minView:el2.attr("minview")?el2.attr("minview"):t=="time"?0:t=="datetime"?0:2,maxView:el2.attr("maxview")?el2.attr("maxview"):t=="time"?1:4,todayBtn:t=="time"?0:el2.attr("date-today")=="false"?0:1,todayHighlight:t=="time"?0:el2.attr("date-today")=="false"?0:1,language:el2.attr("date-lang")??"en",minuteStep:el2.attr("date-minute-step")??5,pickerPosition:el2.attr("date-position")??"top-right",autoclose:1,showMeridian:false};if(el2.attr("date-start"))opts["startDate"]=el2.attr("date-start");if(el2.attr("date-end"))opts["endDate"]=el2.attr("date-end");if(el2.attr("date-value"))opts["date"]=el2.attr("date-value");el2.datetimepicker(opts);if(t=="time"){el2.on("show",function(ev){$(".table-condensed > thead, .table-condensed > thead > tr > th, .table-condensed > thead > tr > th > i").attr("style","visibility: hidden; font-size:0px !important; overflow: hidden; height: 0px;")}).on("hide",function(ev){$(".table-condensed > thead, .table-condensed > thead > tr > th, .table-condensed > thead > tr > th > i").attr("style","visibility: visible;")})}if(el2.attr("date-link-start")){el2.on("change",function(e){let dp1=el2.data("datetimepicker");let dp2=$(el2.attr("date-link-start")).data("datetimepicker");dp2.setStartDate(dp1.getFormattedDate());if(dp2.getFormattedDate()<dp1.getFormattedDate()||dp2.getFormattedDate()=="")$(el2.attr("date-link-start")).val(dp1.getFormattedDate())})}else if(el2.attr("date-link-end")){el2.on("change",function(e){let dp1=$(el2.attr("date-link-end")).data("datetimepicker");let dp2=el2.data("datetimepicker");dp1.setEndDate(dp2.getFormattedDate())});opts["useCurrent"]=false}}async function renderSection(tx2,doc2,par2,k,sectionsData){if(tx2.node.isConnected){if(k){tx2._re.update(k)}return tx2._re}var hst=doc2.children;if(doc2.attrs&&doc2.attrs.hasOwnProperty("tpl")){let _payload=typeof _vcD!=="undefined"&&_vcD||(typeof _vcData!=="undefined"?_vcData:void 0);let _tplName=doc2.attrs["tpl"];let _tplKey=btoa("src/tpls/"+_tplName+".tpl");let _tplEntry=_payload&&_payload.tpls&&_payload.tpls[_tplKey];if(_tplEntry){hst=_tplEntry.hst}else{reportLumenError({stage:"tpl",error:new Error('tpl="'+_tplName+'" \u2014 no such file at src/tpls/'+_tplName+".tpl")})}}let _re=await renderHST({hst,mxes:[]},tx2.key,"section",tx2,par2,par2?.view?.scopePath||["View"],void 0,void 0,par2?.view?.views);tx2._re=_re;if(tx2.node){tx2.replaceWith(tx2.node);tx2.node.innerHTML="";tx2.node.append(..._re._RealDOM);_re.setEffects(doc2,tx2.node);_re.renderAll("section")}return _re}async function renderView(n,isSub,d,type="views",viewsArr,scopeBase=["View"]){let filePath="src/views/"+n+".view";if(type=="layouts")filePath="src/layouts/"+n+".layout";let fileKey=btoa(filePath);if(!isSub){View.props=d??{};var _queryParams=window.location.href.split("?");var nn=_queryParams.shift();View.params=paraToObj(_queryParams)??{}}n=prepareNode(n);var _queryParams=n.split("?");n=_queryParams.shift();let _payload=_vcD||(typeof _vcData!=="undefined"?_vcData:void 0);if(_payload&&!_payload.__hstVersionChecked){_payload.__hstVersionChecked=true;if(_payload.hstFormatVersion!==void 0&&_payload.hstFormatVersion!==EXPECTED_HST_FORMAT_VERSION){reportLumenError({stage:"hst-version-mismatch",error:new Error("This project was compiled for HST format v"+_payload.hstFormatVersion+", but this LumenJS runtime expects v"+EXPECTED_HST_FORMAT_VERSION+". @lmjs/cli and @lmjs/core are out of sync \u2014 reinstall/upgrade both together.")});return}}if(_payload&&_payload[type].hasOwnProperty(fileKey)&&_csswrk.isStarted()){if(isSub)cl("Rendering",n,fileKey);var hst=_payload[type][fileKey];if(isSub){let searchArr=viewsArr||_vt.View.views;let els=[];for(let i=0;i<searchArr.length;i++){let _el2=searchArr[i];if(_el2.__isProxy)_el2=_el2.target;if(_el2.subPath==n)els.push({el:_el2,viewsIndex:i})}if(els.length){for(let i=0;i<els.length;i++){const{el:el2,viewsIndex}=els[i];el2.vars=el2.vars||{};el2.views=el2.views||[];el2.fns=el2.fns||{};let _re=await renderHST(hst,n,"sub",void 0,null,scopeBase.concat(["views",viewsIndex]),el2.vars,el2.fns,el2.views);el2._re=_re;_mountedSubviewEngines.push(_re);el2.innerHTML="";el2.append(..._re._RealDOM);_re.renderAll()}}}else{if(type=="layouts"){let appSelector=appSettings.App??"[app]";var appContainer=$(appSelector);if(appContainer.length){let _rel=await renderHST(hst,n,"layout");appContainer.data("layout",n).html(_rel._RealDOM);_rel.renderAll();goToNode()}}else{let _re=await renderHST(hst,n,"main");let layout=_re.view.settings.layout;let filePathL="src/layouts/"+layout+".layout";let fileKeyL=btoa(filePathL);let hstL=_payload["layouts"][fileKeyL];let appSelector=appSettings.App??"[app]";var appContainer=$(appSelector);let layoutJustSwapped=false;if(appContainer.length){let currentLayout=$(appSelector).data("layout");if(currentLayout!=layout){let _rel=await renderHST(hstL,layout,"layout");appContainer.data("layout",layout).html(_rel._RealDOM);_rel.renderAll();layoutJustSwapped=true}else{}}else{$("body").prepend("<div "+appSelector+"></div>");let _rel=await renderHST(hstL,layout,"layout");appContainer=$(appSelector);appContainer.data("layout",layout).html(_rel._RealDOM);_rel.renderAll();layoutJustSwapped=true}let declaredRegions=hstL&&hstL.regions||[];for(const regionName of declaredRegions){let settingsKey="has"+regionName[0].toUpperCase()+regionName.slice(1);let want=_re.view.settings.hasOwnProperty(settingsKey)?_re.view.settings[settingsKey]:true;let resolvedFile=want===false?null:want===true?regionName:want;let w=_vt.Widgets[regionName]||(_vt.Widgets[regionName]={vars:{},fns:{},views:[],_re:null,_resolvedFile:void 0});if(resolvedFile!==w._resolvedFile){if(resolvedFile===null){$("["+regionName+"]").html("");w._re=null;w._resolvedFile=resolvedFile}else{let wFilePath="src/views/widgets/"+resolvedFile+".view";let wHst=_payload["views"][btoa(wFilePath)];if(wHst){let _rew=await renderHST(wHst,resolvedFile,"widget",void 0,null,["Widgets",regionName],w.vars,w.fns,w.views);w._re=_rew;$("["+regionName+"]").html(_rew._RealDOM);_rew.renderAll();w._resolvedFile=resolvedFile}}}else if(layoutJustSwapped&&w._re){$("["+regionName+"]").html(w._re._RealDOM)}}$("[body]").html(_re._RealDOM);if(_re.view._slots){for(const slotName in _re.view._slots){if(Object.prototype.hasOwnProperty.call(_re.view._slots,slotName)){$('[slot="'+slotName+'"]').html(_re.view._slots[slotName])}}}_re.renderAll()}}}else{setTimeout(()=>{renderView(n,isSub,d)},10)}}
|
|
15
15
|
|
|
16
16
|
!(function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()})(this,function(){function a(b,c,d){function l(a2,b2){var c2=document.createEvent("CustomEvent");return c2.initCustomEvent(a2,false,false,b2),c2}var e={debug:false,automaticOpen:true,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1,timeoutInterval:3e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i2=false,j=false,k=document.createElement("div");k.addEventListener("open",function(a2){g.onopen(a2)}),k.addEventListener("close",function(a2){g.onclose(a2)}),k.addEventListener("connecting",function(a2){g.onconnecting(a2)}),k.addEventListener("message",function(a2){g.onmessage(a2)}),k.addEventListener("error",function(a2){g.onerror(a2)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b2){try{h=new WebSocket(g.url,c||[]),b2||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d2=h,e2=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=true,j=false;if(d2.readyState==1)d2.close()},g.timeoutInterval);h.onopen=function(){clearTimeout(e2),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d3=l("open");d3.isReconnect=b2,b2=false,k.dispatchEvent(d3)},h.onclose=function(c2){if(clearTimeout(e3),h=null,i2)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d3=l("connecting");d3.code=c2.code,d3.reason=c2.reason,d3.wasClean=c2.wasClean,k.dispatchEvent(d3),b2||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e3=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(true)},e3>g.maxReconnectInterval?g.maxReconnectInterval:e3)}},h.onmessage=function(b3){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b3.data);var c2=l("message");c2.data=b3.data,k.dispatchEvent(c2)},h.onerror=function(b3){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b3),k.dispatchEvent(l("error"))}}catch(error){console.error("WebSocket connection error:",error)}},1==this.automaticOpen&&this.open(false),this.send=function(b2){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b2),h.send(b2);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a2,b2){"undefined"==typeof a2&&(a2=1e3),i2=true,h&&h.close(a2,b2)},this.refresh=function(){h&&h.readyState==1&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=false,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});let _isTipped=false;var _debugMode=false;var _initialized=null;var _dbcrs={};var _dbcrsTime=200;var _tickTime=20;var _scW=0;var cl=console.log;if(!_vcData)var _vcData=void 0;if(!_beaTn)var _beaTn=void 0;var beas;var appSettings;var execEl="";var currentlyValidTags=new Array;var _upwrk=new WebWorker("_upw");var _csswrk=new WebWorker("_cssw");_csswrk.start();var _ups=[];(function(e,t2){typeof module!="undefined"&&module.exports?module.exports=t2():typeof define=="function"&&define.amd?define(t2):this[e]=t2()})("bea",function(){function p(e2,t3){for(var n3=0,i3=e2.length;n3<i3;++n3)if(!t3(e2[n3]))return r2;return 1}function d(e2,t3){p(e2,function(e3){return t3(e3),1})}function v(e2,t3,n3){function g(e3){return e3.call?e3():u[e3]}function y(){if(!--h2){u[o2]=1,s2&&s2();for(var e3 in f)p(e3.split("|"),g)&&!d(f[e3],g)&&(f[e3]=[])}}e2=e2[i2]?e2:[e2];var r3=t3&&t3.call,s2=r3?t3:n3,o2=r3?e2.join(""):t3,h2=e2.length;return setTimeout(function(){d(e2,function t4(e3,n4){if(e3===null)return y();/*!n &&
|
|
@@ -35,7 +35,7 @@ var cl=console.log;class _v{static name;static type;static vars;static fns;stati
|
|
|
35
35
|
|
|
36
36
|
class AbstractWebSocket{constructor(url,connectionTimeout=5e3){this.url=url;this.socket=null;this.reconnectInterval=3e3;this.reconnectTimeout=null;this.connectionTimeout=connectionTimeout;this.connectionTimeoutId=null;this.connected=false;this.messageQueue=[]}connect(){this.socket=new WebSocket(this.url);this.connectionTimeoutId=setTimeout(()=>{this.handleConnectionTimeout()},this.connectionTimeout);this.socket.onopen=()=>{clearTimeout(this.connectionTimeoutId);this.connected=true;this.onOpen();this.processMessageQueue()};this.socket.onmessage=event=>{this.onMessage(event.data)};this.socket.onclose=event=>{clearTimeout(this.connectionTimeoutId);this.connected=false;this.onClose(event.code);this.reconnect()};this.socket.onerror=error=>{clearTimeout(this.connectionTimeoutId);this.onError(error)}}send(message){cl("Sending ",message);if(this.connected){this.socket.send(message)}else{this.messageQueue.push(message);console.error("WebSocket is not open. Unable to send message.")}}processMessageQueue(){while(this.messageQueue.length>0){const message=this.messageQueue.shift();cl("Sending From Queue ",message);this.socket.send(message)}}handleConnectionTimeout(){this.socket.close()}disconnect(){if(this.socket){this.socket.close()}clearTimeout(this.reconnectTimeout)}onOpen(){}onMessage(message){}onClose(code){}onError(error){}reconnect(){clearTimeout(this.reconnectTimeout);this.reconnectTimeout=setTimeout(()=>{this.connect()},this.reconnectInterval)}}class MyWebSocket extends AbstractWebSocket{constructor(url){super(url)}onOpen(){super.onOpen()}onMessage(message){super.onMessage(message)}onClose(code){super.onClose(code)}onError(error){super.onError(error)}}class Nuclear{_iter=0;reconnectAttempts=0;timeoutInterval=4e3;cbs={};_cbs={};lstnrs={};_ws;srvr=void 0;constructor(srvr){this.srvr=srvr;this.init();return this}on(e,cb){if(!this.lstnrs.hasOwnProperty(e))this.lstnrs[e]=[];this.lstnrs[e].push(cb);if(e=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e){if(e=="connect")return this;if(this.lstnrs.hasOwnProperty(e))delete this.lstnrs[e];return this}subscribe(e,cb){return this.on(e,cb)}unsubscribe(e,cb){return this.off(e,cb)}trigger(n,e){if(this.lstnrs.hasOwnProperty(n)){for(let x=0;x<this.lstnrs[n].length;x++){this.lstnrs[n][x](e)}}return this}emit(e,data,cb){try{this._iter++;if(cb)this.cbs["cb_"+this._iter]=cb;if(this.ready()){this._ws.send(JSON.stringify({e,payload:data,_iter:this._iter}))}else{this._send(JSON.stringify({e,payload:data,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e,data){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e,payload:data,_iter:this._iter}))}else{this._send(JSON.stringify({e,payload:data,_iter:this._iter}))}return prom}_send(m){let _s=this;setTimeout(function(){if(_s.ready())_s._ws.send(m);else _s._send(m)},500)}ready(){return this._ws!==void 0&&this._ws.readyState==WebSocket.OPEN}connecting(){return this._ws!==void 0&&this._ws.readyState==WebSocket.CONNECTING}init(){var _s=this;this._ws=new ReconnectingWebSocket(this.srvr?this.srvr:"wss://www.beaapis.com/");this._ws.addEventListener("error",event=>{return false});this._ws.onopen=function(e){_s.trigger("connect",e);_s.trigger("open",e)};this._ws.onclose=function(e){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e){try{let data=JSON.parse(e.data);if(data.hasOwnProperty("e")){let event=data["e"];let iter=data["_iter"];const customEvent=new CustomEvent(event,{detail:data["payload"]});customEvent.data=data["payload"];if(event!="rooms")_s.trigger(event,customEvent);if(_s.cbs["cb_"+iter])_s.cbs["cb_"+iter](customEvent);if(_s._cbs["cb_"+iter])_s._cbs["cb_"+iter].resolve(customEvent)}}catch(e2){if(_debugMode)cl(e2)}};this._ws.onerror=function(e){_gn=0;barSet(1,200)}}}class _Ticker{id="";tick=1e3;duration=1e4;data={};status="created";user=void 0;channel=void 0;_cbs={};constructor(obj,channel,user){this.id=obj.id;this.tick=obj?.tick??1e3;this.duration=obj?.duration??1e4;this.data=obj?.data??{};this.user=user;this.channel=channel;this.user.id=this.user.id;this.init();return this}init(opts,lstnrs){let t=this.tick;let d=this.duration;let data=this.data;if(opts){if(opts.hasOwnProperty("tick"))t=opts.tick;if(opts.hasOwnProperty("duration"))d=opts.duration;if(opts.hasOwnProperty("data"))data=opts.data}this.user.nuke.emit("subscribe",{type:"ticker",ticker:this.id,channel:this.channel.id,user:this.user.id,data:{tick:t,duration:d,data}});if(!this.user.nuke._tickers.hasOwnProperty(this.channel.id))this.user.nuke._tickers[this.channel.id]={};this.user.nuke._tickers[this.channel.id][this.id]=this;if(!lstnrs){var self=this;this.on("create.class",function(e){self.status="created"});this.on("start.class",function(e){self.status="started"});this.on("tick.class",function(e){self.status="started"});this.on("pause.class",function(e){self.status="paused"});this.on("finish.class",function(e){self.status="finished"})}}start(){if(this.status=="started"){setError(null,`This ticker is already started`);return this}if(this.status=="finished"){setError(null,`This ticker is finished`);return this}this.user.nuke.emit("ticker",{ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"start"})}pause(){if(this.status=="paused"){setError(null,`This ticker is already paused`);return this}if(this.status!="started"){setError(null,`This ticker is not started yet!`);return this}this.user.nuke.emit("ticker",{ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"pause"})}restart(opts){if(this.status!="finished"){setError(null,`This ticker is not finished yet!`);return this}this.init(opts,true)}delete(){this.user.nuke.emit("unsubscribe",{type:"ticker",ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"delete"})}extend(t){this.user.nuke.emit("ticker",{ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"extend",data:{time:t}})}on(e,cb){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e)){this._cbs[e].push(cb)}else this._cbs[e]=[cb];return this}off(e){if(this._cbs.hasOwnProperty(e))delete this._cbs[e];return this}trigger(e,customEvent){if(this._cbs.hasOwnProperty(e)){for(let i=0;i<this._cbs[e].length;i++){const cb=this._cbs[e][i];cb(customEvent)}}return this}}class _Channel{id="/";user=void 0;type="room";_cbs={};constructor(id,type,user){this.id=id;this.type=type;this.user=user;this.user.id=this.user.id??"Guest";return this}trigger(e,customEvent){if(this._cbs.hasOwnProperty(e)){for(let i=0;i<this._cbs[e].length;i++){const cb=this._cbs[e][i];cb(customEvent)}}return this}join(){this.user.nuke.emit("subscribe",{type:this.type,channel:this.id,user:this.user.id});if(!this.user.nuke._chnls.hasOwnProperty(this.user.id))this.user.nuke._chnls[this.user.id]={};this.user.nuke._chnls[this.user.id][this.id]=this}leave(){this.user.nuke.emit("unsubscribe",{type:this.type,channel:this.id,user:this.user.id,ev:"leave"});if(this.user.nuke._chnls.hasOwnProperty(this.user.id)){delete this.user.nuke._chnls[this.user.id][this.id]}}broadcast(ev,options){this.user.nuke.emit("broadcast",{type:"room",channel:this.id,user:this.user.id,ev,includeMe:options?.includeMe??true,data:options?.data??{}})}off(e){if(e=="connect")return this;if(this._cbs.hasOwnProperty(e))delete this._cbs[e];return this}on(e,cb){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e)){this._cbs[e].push(cb)}else this._cbs[e]=[cb];return this}createTicker(obj){if(!this.user.nuke._tickers.hasOwnProperty(this.id)){this.user.nuke._tickers[this.id]={}}let t=new _Ticker(obj,this,this.user);return t}getTicker(id){this.user.nuke.emit("get",{type:"ticker",channel:this.id,user:this.user.id,ticker:id})}}class _User{id="";nuke=void 0;_cbs={};constructor(id,nuke){this.id=id;this.nuke=nuke;this.init();return this}init(){this.nuke.emit("subscribe",{type:"user",channel:this.id,user:this.id});if(!this.nuke._users.hasOwnProperty("/"+this.id))this.nuke._users["/"+this.id]=this}on(e,cb){if(this.nuke._users["/"+this.id]._cbs.hasOwnProperty(e)){this.nuke._users["/"+this.id]._cbs[e].push(cb)}else this.nuke._users["/"+this.id]._cbs[e]=[cb];return this}off(e){if(this._cbs.hasOwnProperty(e))delete this._cbs[e];return this}broadcast(ev,options){this.nuke.emit("broadcast",{type:"user",channel:this.id,user:this.id,ev,includeMe:options?.includeMe??true,data:options?.data??{}})}trigger(e,customEvent){if(this._cbs.hasOwnProperty(e)){for(let i=0;i<this._cbs[e].length;i++){const cb=this._cbs[e][i];cb(customEvent)}}return this}_broadcastToAll(IDs,e,d,t){this.nuke.emit("broadcast",{type:t=="u"?"user":"room",user:this.id,ev:e,includeMe:d["includeMe"]??true,data:d["data"],...t=="u"?{users:IDs.join(",")}:{channels:IDs.join(",")}})}broadcastToUsers(uIDs,e,d){this._broadcastToAll(uIDs,e,d,"u")}broadcastToChannels(cIDs,e,d){this._broadcastToAll(cIDs,e,d,"c")}unsubscribe(c){if(this.nuke._chnls.hasOwnProperty(this.id)){if(this.nuke._chnls[this.id].hasOwnProperty(c))this.nuke._chnls[this.id][c].leave()}}subscribe(e,cb){if(!this.nuke._chnls.hasOwnProperty(this.id)){this.nuke._chnls[this.id]={}}let channel=new _Channel(e,"room",this);channel.join();return channel}destroy(){this._cbs={};if(this.nuke._chnls.hasOwnProperty(this.id)){let chnls=this.nuke._chnls[this.id];for(const chnl in chnls){this.unsubscribe(chnl)}}}}class _Live{_chnls={};_users={};_tickers={};_iter=0;reconnectAttempts=0;timeoutInterval=4e3;cbs={};_cbs={};lstnrs={};_ws;srvr=void 0;constructor(srvr){this.srvr=srvr;this.init();return this}on(e,cb){if(!this.lstnrs.hasOwnProperty(e))this.lstnrs[e]=[];this.lstnrs[e].push(cb);if(e=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e){if(e=="connect")return this;if(this.lstnrs.hasOwnProperty(e))delete this.lstnrs[e];return this}createUser(id){let user=new _User(id,this);return user}subscribe(e,cb){return this.on(e,cb)}unsubscribe(e,cb){return this.off(e,cb)}trigger(n,e){if(this.lstnrs.hasOwnProperty(n)){for(let x=0;x<this.lstnrs[n].length;x++){this.lstnrs[n][x](e)}}return this}emit(e,data,cb){try{this._iter++;if(cb)this.cbs["cb_"+this._iter]=cb;if(this.ready()){this._ws.send(JSON.stringify({e,payload:data,_iter:this._iter}))}else{this._send(JSON.stringify({e,payload:data,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e,data){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e,payload:data,_iter:this._iter}))}else{this._send(JSON.stringify({e,payload:data,_iter:this._iter}))}return prom}_send(m){let _s=this;setTimeout(function(){if(_s.ready())_s._ws.send(m);else _s._send(m)},500)}ready(){return this._ws!==void 0&&this._ws.readyState==WebSocket.OPEN}connecting(){return this._ws!==void 0&&this._ws.readyState==WebSocket.CONNECTING}init(){var _s=this;if(_s.ready()||_s.connecting()){return}this._ws=new ReconnectingWebSocket(this.srvr?this.srvr:"wss://www.beaapis.com/");this._ws.addEventListener("error",event=>{});this._ws.onopen=function(e){_s.trigger("connect",e);_s.trigger("open",e)};this._ws.onclose=function(e){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e){try{let data=JSON.parse(e.data);if(data.hasOwnProperty("for")){let t=data["type"]??"room";let ev=data["ev"]??"message";const customEvent=new CustomEvent(ev,{detail:data["payload"]});customEvent.data=data["payload"];let payload=data["payload"];if(payload.hasOwnProperty("user")){if(t=="user"){_s._users[data["for"]].trigger(ev,customEvent)}else if(t=="room")_s._chnls[payload.user.id][data["for"]].trigger(ev,customEvent);else if(t=="ticker"){_s._tickers[data["for"]][payload?.ticker?.id].trigger(ev,customEvent);_s._tickers[data["for"]][payload?.ticker?.id].trigger(ev+".class",customEvent)}}}else if(data.hasOwnProperty("e")){let event=data["e"];let iter=data["_iter"];const customEvent=new CustomEvent(event,{detail:data["payload"]});customEvent.data=data["payload"];if(event!="rooms")_s.trigger(event,customEvent);if(_s.cbs["cb_"+iter])_s.cbs["cb_"+iter](customEvent);if(_s._cbs["cb_"+iter])_s._cbs["cb_"+iter].resolve(customEvent)}}catch(e2){if(_debugMode)cl(e2)}};this._ws.onerror=function(e){_gn=0;barSet(1,200)}}}let LIVE;let Nuke;LIVE=new _Live("wss://www.beaapis.com/");Nuke=new Nuclear(_beaTn?void 0:(window.location.protocol==="https:"?"wss://":"ws://")+window.location.hostname+(window.location.port?":"+window.location.port:""));let _ovcD,_vcD;function syncViewFiles(){Nuke.emit("getfiles",{},function(e){var _files=e.data;let views=_files["views"];let layouts=_files["layouts"];_vcD=_files;if(!_ovcD)_ovcD=clone(_vcD);else{for(var key in views){if(_ovcD["views"].hasOwnProperty(key)){if(!deepCompare(clone(_ovcD["views"][key]),clone(views[key]))){cl("Changed the view "+atob(key));let n=atob(key).split("src/views/").join("").split(".view").join("");let nodes=getURLNodes();_ovcD["views"][key]=views[key];cl("view",n,atob(key));if(n.indexOf("widgets/")===0){let changedWidgetName=n.split("widgets/").join("");for(let regionName in _vt.Widgets){if(_vt.Widgets[regionName]._resolvedFile===changedWidgetName){_vt.Widgets[regionName]._resolvedFile=void 0}}renderView(nodes[0],null,View.props??{})}else if(nodes[0]==n){renderView(nodes[0],null,View.props??{})}else{renderView(n,true,{})}}}}for(var key in layouts){if(_ovcD["layouts"].hasOwnProperty(key)){if(!deepCompare(clone(_ovcD["layouts"][key]),clone(layouts[key]))){cl("Changed the layout "+atob(key));let n=atob(key).split("src/layouts/").join("").split(".layout").join("");let nodes=getURLNodes();_ovcD["layouts"][key]=layouts[key];cl("layout",n,atob(key));renderView(n,false,{},"layouts")}}}}})}Nuke.on("connect",function(){if(_beaTn){Nuke.emit("get_uniquer",{beajsToken:_beaTn,uniquer:globals.uniquer},function(e){let d=e.data;let data=d.uniquer;globals.uniquer=data})}else{syncViewFiles()}});Nuke.on("files-changed",function(){if(!_beaTn)syncViewFiles()});var API={get:function(u,d,h,a,opts){return this.req(u,d,h,"GET",a,opts)},put:function(u,d,h,a,opts){return this.req(u,d,h,"PUT",a,opts)},post:function(u,d,h,a,opts){return this.req(u,d,h,"POST",a,opts)},delete:function(u,d,h,a,opts){return this.req(u,d,h,"DELETE",a,opts)},patch:function(u,d,h,a,opts){return this.req(u,d,h,"PATCH",a,opts)},req:function(u,d,h,m,a,opts,_prom){if(!opts)opts={full:false,progress:true};let prog=opts.hasOwnProperty("progress")?opts.progress:true;let full=opts.hasOwnProperty("full")?opts.full:false;let prom=_prom?_prom:defer();try{return prom}finally{if(Nuke&&Nuke._ws&&Nuke._ws.readyState==1&&(_beaTn?globals.uniquer>0:true)){if(prog){_gn=0;_work()}Nuke.emit("request",{body:{method:m,path:u,api:a??0,headers:h,full},uniquer:globals.uniquer??0,data:d},function(e){if(prog){_gn=0;barSet(1,200)}var r=e.data;prom.resolve(r)})}else{if(_beaTn&&_beaTn!=""){$.ajax({"url":"https://www.beaapis.com/req",headers:{},type:"POST",dataType:"json",data:{body:{method:m,path:u,api:a??0,headers:h,full},uniquer:globals.uniquer??0,_beaTn,data:d},cache:false,success:function(r,s){prom.resolve(r)},error:function(){prom.reject("error")}})}else{setTimeout(()=>{this.req(u,d,h,m,a,opts,prom)},_tickTime)}}}}};
|
|
37
37
|
|
|
38
|
-
var _navT=0;var _nav=false;var _pbc;var _vuid={};$("body").on("click touch tap",function(e2){if(!_pbc)_pbc=new AudioContext;if(_pbc.state=="suspended"){_pbc.resume().then(()=>{})}});$("body").on("click touch",".navTgl",function(e2){_nav=false;clearTimeout(_navT);if($("nav").hasClass("nav-opened")){$("nav").removeClass("nav-opened");$("body").removeClass("nav-opened")}else{$("nav").addClass("nav-opened");$("body").addClass("nav-opened");_navT=setTimeout(function(){_nav=true},20)}e2.stopPropagation()});$(document).keydown(function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode==27){e2.preventDefault();e2.stopPropagation();if($("[loader]").length){if(_loader.options.Dismissible)_loader.hide()}else if(_nav){$("nav").removeClass("nav-opened");$("body").removeClass("nav-opened");_nav=false}else{if($("popup").length&&$("droplet").length){$("droplet").removeClass("is-visible").each(function(){var p=$(this);setTimeout(function(){p.remove()},150)})}else if($("popup").length){$("[close-modal]:last").click()}else{$("body").css({overflow:"visible"});$("droplet").removeClass("is-visible").each(function(){var p=$(this);setTimeout(function(){p.remove()},150)})}}}});_csswrk.on("css-ready",function(e2){let data=e2.originalEvent.data;_vuid[data.key].resolve(data.csses)});_upwrk.on("message",function(e2){let data=e2.originalEvent.data});_upwrk.on("files-added",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"files-added",data.files,data.newfiles)});_upwrk.on("queue-changed",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"queue-changed",data.files)});_upwrk.on("file-removed",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"file-removed",data.files,data.removedfile)});_upwrk.on("upload-start",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-start",data.files)});_upwrk.on("file-uploaded",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"file-uploaded",data.files,data.file)});_upwrk.on("upload-progress",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-progress",data.files)});_upwrk.on("upload-complete",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-complete",data.files)});_upwrk.on("upload-stop",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-stop",data.files)});_upwrk.on("queue-empty",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"queue-empty")});$.fn.extend({startUpload:function(){if(this.hasAttr("up")){_upwrk.trigger("start-upload",{"upid":this.attr("upid")})}return this},stopUpload:function(){if(this.hasAttr("up")){_upwrk.trigger("stop-upload",{"upid":this.attr("upid")})}return this},removeFile:function(id2){if(this.hasAttr("up")){_upwrk.trigger("remove-file",{"upid":this.attr("upid"),"id":id2})}return this}});$("body").on("FilesAdded","[up]",function(e2,files){let t=$(this);var size=t.attr("data-mxs")?t.attr("data-mxs"):"10mb";_upwrk.trigger("handle-files",{"upid":t.attr("upid"),"files":files});processEv(e2,t,"browse-files",files)});$("body").on("dragover","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();let t=$(this).closest("[up]");$(this).addClass("dragover");e2.originalEvent.dataTransfer.dropEffect="copy";return false});$("body").on("dragleave","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();$(this).removeClass("dragover")});$("body").on("drop","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t=$(this).closest("[up]");$(this).removeClass("dragover");t.trigger("FilesAdded",[files]);return false});$("body").on("click","[up] [browse]",function(e2){e2.stopPropagation();e2.preventDefault();let t=$(this).closest("[up]");t.find("[files]").click()});$("body").on("change","[up] [files]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t=$(this).closest("[up]");t.trigger("FilesAdded",[files])});$("body").on("click touch","[ctc]",function(ev){var el=$(this);var ctc=el.attr("ctc");var selector=el;if(ctc.indexOf("el.")!==-1){selector=eval(ctc)}else if(ctc!="")selector=$(ctc);if(!navigator.clipboard){var temp=$("<textarea class='pf' style='left: -40%;' />");$("body").append(temp);temp.val(selector.text()).select();document.execCommand("copy");temp.remove()}else{navigator.clipboard.writeText(selector.text()).then(function(){},function(err){var temp2=$("<textarea class='pf' style='left: -40%;' />");$("body").append(temp2);temp2.val(selector.text()).select();document.execCommand("copy");temp2.remove()})}if(el.hasAttr("stop"))ev.stopPropagation()});$("body").on("click touch","[scroll-left]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollLeft:_p.scrollLeft()-100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-right]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollLeft:_p.scrollLeft()+100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-top]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollTop:_p.scrollTop()-100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-bottom]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollTop:_p.scrollTop()+100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});function bs(t){$("body").css({overflow:t?"visible":"hidden"})}$("body").on("open-modal","[modal]",function(ev2){var el2=$(this);var n2=popups.modals.length;var _view=el2.attr("modal");bs();var va=el2.attr("modal-align")??"center middle";var padding=el2.attr("modal-spacing")??"p10";var ov=el2.attr("modal-ov")??"bgb20";va=va.split(" ");if(va.length==2){va={h:["left","center","right"].indexOf(va[0])>=0?va[0]:"center",v:["top","center","middle","bottom"].indexOf(va[1])>=0?va[1]:"middle"}}else{va={h:"center",v:"middle"};setError(null,"Modal align should be modal-align='vertical horizontal'.")}if(!el2.hasAttr("data-modal")){var selector2="modals_"+n2;var popup='<popup class="ov pf [c] z10000"><pop-o class="ov pf [ov]"></pop-o><tbl_nm fixed class="hv100"><cl class="[va] [ta] [p]"><pop-c><pop-x close-modal data-dismiss="modal" aria-label="Close"><span aria-hidden="true" class="cc c">×</span></pop-x><pop-h><pop-t>[t]</pop-t><pop-d>[d]</pop-d></pop-h><pop-b>[b]</pop-b><pop-f>[f]</pop-f></pop-c></cl></tbl_nm></popup>';var verticalAlign=va["v"]=="center"||va["v"]=="middle"?"vm":va["v"]=="top"?"vt":"vb";var textAlign=va["h"]=="center"?"c":va["h"]=="left"?"l":"r";popup=popup.split("[va]").join(verticalAlign).split("[p]").join(padding).split("[ta]").join(textAlign).split("[ov]").join(ov);let attrsData={t:el2.attr("modal-title")??"New Modal",d:el2.attr("modal-description")??"",c:el2.attr("modal-class")??""};if(_view!=""){popup=popup.split("[t]").join(attrsData.t);popup=popup.split("[d]").join(attrsData.d);popup=popup.split("[b]").join('<div for-modal="'+selector2+`" view='`+_view+"'></div>");popup=popup.split("[f]").join("")}else{var c=getComData(el2);if(!c){if(el2.find("modal").length>0){var modalData=el2.find("modal:first");var c=getComData(modalData,true)}}if(c){if(c.Title)popup=popup.split("[t]").join(c.Title??attrsData.t);popup=popup.split("[d]").join(c.Description??attrsData.d);popup=popup.split("[b]").join(c.Body??"");popup=popup.split("[f]").join(c.Footer??"")}else{popup=popup.split("[t]").join(attrsData.t);popup=popup.split("[d]").join(attrsData.d);popup=popup.split("[b]").join("");popup=popup.split("[f]").join("")}}popup=popup.split("[c]").join(attrsData.c);var newModal=$(popup);newModal.attr("id",selector2).appendTo("body");let modal2=$("#"+selector2);el2.trigger("modal-open",[modal2]);modal2.data("props",el2.data("props"));modal2.addClass("modal-open").delay(10).queue(function(next){$(this).addClass("in");next()});$(this).attr("data-modal",selector2);popups["modals"].push(newModal.get(0));globalWatch()}if(el2.hasAttr("stop"))ev2.stopPropagation()});$("body").on("click touch","[modal]",function(ev2){let modalTriggered=false;var obj={};$.each($(this)[0].attributes,function(){if(this.value.toLowerCase()=="openmodal"){modalTriggered=true;return}obj[this.name]=this.value});if(!modalTriggered){$(this).trigger("open-modal")}});$("body").on("modal-close","[\\@modal-close]",function(ev,modal,cb){let el=$(this),_v=el.attr("@modal-close");let props=modal.data("props");let _fn=_v.split("(")[0];try{if(typeof window[_v]==="function")cb(window[_fn](ev,el,modal,props));else{let _eva=eval(_v);cb(_eva)}}catch(e2){cb()}});$("body").on("modal-open","[\\@modal-open]",function(ev,modal){let el=$(this),_v=el.attr("@modal-open");let _fn=_v.split("(")[0];try{if(typeof window[_v]==="function"){var _data=window[_fn](ev,el,modal);modal.data("props",_data)}else{let _eva=eval(_v);modal.data("props",_eva)}}catch(e2){}});function evalEvAttr(_v,ev,el,n,arg1,arg2,arg3){let _fn=_v.split("(")[0];try{let _rawEl=el[0];let _ownerFns=_rawEl&&_rawEl._ownerRe&&_rawEl._ownerRe.view&&_rawEl._ownerRe.view.fns;let _ownFn=_v===_fn&&_ownerFns&&typeof _ownerFns[_fn]==="function"?_ownerFns[_fn]:null;if(_ownFn||typeof window[_v]==="function"){ev["cType"]=n;let _handler=_ownFn||window[_fn];var _data=arg3?_handler(ev,el,arg1,arg2,arg3):arg2?_handler(ev,el,arg1,arg2):arg1?_handler(ev,el,arg1):_handler(ev,el);return _data}else{let _eva=eval(_v);return _eva}}catch(e2){return false}}function processEv(ev2,el2,n2,arg12,arg22,arg32){if(el2.attr("stop"))ev2.stopPropagation();if(n2=="focusin")n2="focus";else if(n2=="focusout")n2="blur";if(!el2.hasAttr("@"+n2))return;if(el2.hasAttr("@before-"+n2)){if(!evalEvAttr(el2.attr("@before-"+n2),ev2,el2,n2,arg12,arg22,arg32))return}let _v2=el2.attr("@"+n2);if(_v2.toLowerCase()=="openmodal"){el2.trigger("open-modal");return}evalEvAttr(_v2,ev2,el2,n2,arg12,arg22,arg32)}$("body").on("click touch","[ci]",function(ev2){var el2=$(this);var f=el2.closest("form");var inputs=$("");if(el2.attr("ci")!=""){let ci=el2.attr("ci").split(",");for(let index2=0;index2<ci.length;index2++){const selector2=ci[index2];inputs=inputs.add(f.find(selector2))}}else{inputs=f.find($("input[\\:required],select[\\:required],textarea[\\:required]"))}f.removeClass("validation-error");for(var i=0;i<inputs.length;i++){if(!checkFormInputs(f,inputs[i])){f.addClass("validation-error");break}}});$("body").on("doubletap","[\\@dblclick]",function(ev2){processEv(ev2,$(this),"dblclick")});$("body").on("doubletap","[\\@dbltap]",function(ev2){processEv(ev2,$(this),"dbltap")});$("body").on("singletap","[\\@singleclick]",function(ev2){processEv(ev2,$(this),"singleclick")});$("body").on("singletap","[\\@singletap]",function(ev2){processEv(ev2,$(this),"singletap")});$("body").on("taphold","[\\@taphold]",function(ev2){processEv(ev2,$(this),"taphold")});$("body").on("taphold","[\\@clickhold]",function(ev2){processEv(ev2,$(this),"clickhold")});$("body").on("click touch","[\\@click]",function(ev2){processEv(ev2,$(this),"click")});$("body").on("tap","[\\@tap]",function(ev2){processEv(ev2,$(this),"click touch")});$("body").on("tap2","[\\@click2]",function(ev2){processEv(ev2,$(this),"click2")});$("body").on("tap2","[\\@tap2]",function(ev2){processEv(ev2,$(this),"tap2")});$("body").on("tap2hold","[\\@click2hold]",function(ev2){processEv(ev2,$(this),"click2hold")});$("body").on("tap2hold","[\\@tap2hold]",function(ev2){processEv(ev2,$(this),"tap2hold")});$("body").on("orientationchange","[\\@orientationchange]",function(ev2){processEv(ev2,$(this),"orientationchange")});$("body").on("swipe swipeleft swipedown swipeend swipeup swiperight","[\\@swipe],[\\@swipe-down],[\\@swipe-up],[\\@swipe-left],[\\@swipe-right],[\\@swipe-end]",function(ev2){let _v2=ev2.type.length==5?"swipe":ev2.type.split("swipe").join("swipe-");processEv(ev2,$(this),_v2)});$("body").on("mouseover","[\\@mouse-over]",function(ev2){processEv(ev2,$(this),"mouse-over")});$("body").on("mousedown touchstart","[\\@mouse-down]",function(ev2){processEv(ev2,$(this),"mouse-down")});$("body").on("tapstart","[\\@tap-start]",function(ev2){processEv(ev2,$(this),"tap-start")});$("body").on("tapend","[\\@tap-end]",function(ev2){processEv(ev2,$(this),"tap-end")});$("body").on("tapmove","[\\@tap-move]",function(ev2){processEv(ev2,$(this),"tap-move")});$("body").on("mouseup touchend","[\\@mouse-up]",function(ev2){processEv(ev2,$(this),"mouse-up")});$("body").on("mouseout","[\\@mouse-out]",function(ev2){processEv(ev2,$(this),"mouse-out")});$("body").on("mouseenter touchmove","[\\:hover]",function(ev2){let _s=$(this).attr(":hover");$(this).attr("style",($(this).hasAttr("style")?$(this).attr("style").rtrim(";")+";":"")+_s)});$("body").on("mouseleave touchend","[\\:hover]",function(ev2){let _s=$(this).attr(":hover");$(this).attr("style",$(this).attr("style").split(_s).join(""))});$("body").on("mouseenter","[\\@mouse-enter]",function(ev2){processEv(ev2,$(this),"mouse-enter")});$("body").on("mouseleave","[\\@mouse-leave]",function(ev2){processEv(ev2,$(this),"mouse-leave")});$("body").on("mousemove","[\\@mouse-move]",function(ev2){processEv(ev2,$(this),"mouse-move")});$("body").on("touchmove","[\\@mouse-move]",function(ev2){processEv(ev2,$(this),"mouse-move")});$("body").on("sort","[\\@sort]",function(ev2,ui){processEv(ev2,$(this),"sort",ui)});$("body").on("sortupdate","[\\@sort-update]",function(ev2,ui){processEv(ev2,$(this),"sort-update",ui)});$("body").on("sortchange","[\\@sort-change]",function(ev2,ui){processEv(ev2,$(this),"sort-change",ui)});$("body").on("sortstart","[\\@sort-start]",function(ev2,ui){processEv(ev2,$(this),"sort-start",ui)});$("body").on("sortstop","[\\@sort-stop]",function(ev2,ui){processEv(ev2,$(this),"sort-stop",ui)});$("body").on("sortbeforestop","[\\@sort-before-stop]",function(ev2,ui){processEv(ev2,$(this),"sort-before-stop",ui)});$("body").on("drag","[\\@drag]",function(ev2,ui){processEv(ev2,$(this),"drag",ui)});$("body").on("dragstart","[\\@drag-start]",function(ev2,ui){processEv(ev2,$(this),"drag-start",ui)});$("body").on("dragstop","[\\@drag-stop]",function(ev2,ui){processEv(ev2,$(this),"drag-stop",ui)});$("body").on("drop","[\\@drop]",function(ev2,ui){processEv(ev2,$(this),"drop",ui)});$("body").on("clear","[sl]",function(ev2,ui){let t=$(this);t.empty().change();try{let opts=t.data("select2")?.options?.options;opts.data=null;t.select2(opts)}catch(e2){cl(e2)}});$("body").on("change blur focus keyup keydown input","[\\@input],[\\@change],[\\@blur],[\\@focus],[\\@keyup],[\\@keydown]",function(ev2){processEv(ev2,$(this),ev2.type)});$("body").on("click touch","[close-modal]",function(ev){var el=$(this);var modal=el.closest("popup");var id=modal.attr("id");var element_to_remove=$("#"+id).get(0);var index=$.inArray(element_to_remove,popups.modals);var modalOwner=$("[modal][data-modal="+id+"]");if(el.attr("stop"))ev.stopPropagation();ev.preventDefault();if(modalOwner.hasAttr("@modal-beforeclose")){cl("kuku");try{let _bv=modalOwner.attr("@modal-beforeclose");let _fn=_bv.split("(")[0];if(typeof window[_bv]==="function"){cl("sasha");if(window[_fn](ev,el,modalOwner)==false)return;else{cl("llll");let _eva=eval(_bv);if(_eva==false)return;cl("khaaawwwww")}}}catch(e2){cl("haha");cl(e2)}}if(modalOwner.hasAttr("@modal-close")){modalOwner.trigger("modal-close",[modal,function(res){if(res===false)return;$(".select2-container:not(.select2),.colorpicker.colorpicker-visible").remove();if(index>-1){$("[modal][data-modal="+id+"]").removeAttr("data-modal");modal.removeClass("in").delay(150).queue(function(next){$(this).remove();if(popups.modals.length==0)bs(true);next()});popups.modals.splice(index,1)}}])}else{$(".select2-container:not(.select2),.colorpicker.colorpicker-visible").remove();if(index>-1){$("[modal][data-modal="+id+"]").removeAttr("data-modal");modal.removeClass("in").delay(150).queue(function(next){$(this).remove();if(popups.modals.length==0)bs(true);next()});popups.modals.splice(index,1)}}});$("body").on("change keyup","[password]",function(e2){let el2=$(this);let lbl=el2.closest("label");let f=el2.closest("form");var v=$.trim($(this).val());let allCls="has-spaces weak strong very-strong medium";let cls=passwordStrength(v);el2.removeClass(allCls).addClass(cls);if(f.length)f.removeClass(allCls).addClass(cls);if(lbl.length)lbl.removeClass(allCls).addClass(cls);if(!$(this).next().hasClass("passStrength"))$(this).after("<span class='passStrength'></span>");$(this).parent().find(".passStrength").removeClass(allCls).addClass(cls)});$("body").on("change keyup","[username]",function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode!=9&&keyCode!=16&&keyCode!=27&&keyCode!=93&&keyCode!=91&&keyCode!=17&&keyCode!=18){var el2=$(this);let f=el2.closest("form");checkFormInputs(f,el2,true)}});$("body").on("focus","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);var f=el2.closest("form");let lbl=el2.closest("label");if(f.length)f.addClass("focused");if(lbl.length)lbl.addClass("focused");el2.parent().addClass("focused");el2.addClass("focused")});$("body").on("blur","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);var f=el2.closest("form");if(f.length)f.removeClass("focused");el2.parent().removeClass("focused");el2.removeClass("focused")});$("body").on("change keyup","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);let f=el2.closest("form");checkFormInputs(f,el2,true)});var _lookups=0;var _debs={};var _proms={};$("body").on("change keyup","[\\:lookup]",function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode!=9&&keyCode!=16&&keyCode!=27&&keyCode!=93&&keyCode!=91&&keyCode!=17&&keyCode!=18){var el2=$(this);if(!el2.attr("data-i")){el2.attr("data-i",_lookups);_lookups++}var key="lu_"+el2.attr("data-i");clearTimeout(_debs[key]);var v=$(this).val();var callback=el2.attr(":lookup-callback");if(!_proms.hasOwnProperty(key)){_proms[key]=defer();_proms[key].then(function(val){el2.addClass("finished").removeClass("pending")}).catch(reason=>{el2.addClass("pending").removeClass("finished")})}else{}el2.addClass("pending").removeClass("finished");_debs[key]=setTimeout(function(){_proms[key].reject();_proms[key]=defer();_proms[key].then(function(val){el2.addClass("finished").removeClass("pending")}).catch(reason=>{el2.addClass("pending").removeClass("finished")});window[callback](v,_proms[key])},200)}});$("body").on("click touch","a,area",function(e2){var el2=$(this);var link=el2.attr("href");if(link==""||$(this).closest(".cke").length==1||$(this).closest(".chosen-container").length==1||$(this).attr("target")=="_blank"||$(this).attr("target")=="_new"||$(this).hasClass("norm")||$(this).closest(".gm-style").length==1){}else{var local=false;var l=getLocation(link);var l2=getLocation(appSettings.Base);var url="home";local=l.hostname==l2.hostname;var url=l.pathname.split(l2.pathname);if(l.pathname=="/"||l.pathname=="/home"){url="home"}else{url=url.join("/")}if(local&&!cntrlon){e2.preventDefault();if(el2.hasAttr("stop"))e2.stopPropagation();pushURL(url+(l.search!=""?l.search:""))}else{}}});$("body").on("click touch","[h],[s]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));var attrs=el.attr();var hI=Object.keys(attrs).indexOf("h");var sI=Object.keys(attrs).indexOf("s");if(sI<hI){$(el.attr("s")).show();$(el.attr("h")).hide()}else{$(el.attr("h")).hide();$(el.attr("s")).show()}if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[e]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));if($($(this).attr("e")).is("input"))$($(this).attr("e")).val("");else $($(this).attr("e")).empty()});$("body").on("click touch","[f]",function(e2){var el2=$(this);$(el2.attr("f")).trigger("focus");if(el2.hasAttr("stop"))e2.stopPropagation()});$("body").on("click touch","[tgl]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));el.toggleClass(el.attr("tgl"));el.toggleClass("toggled");if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[t]",function(e){var el=$(this);var tcn=el.attr("tcn")?el.attr("tcn"):"active";if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));$(el.attr("t")).toggleClass(tcn);el.toggleClass("toggled");if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[actv]",function(e2){let el2=$(this);if(el2.attr("actv")!="")$(el2.attr("actv")).removeClass("active");el2.addClass("active");if(el2.attr("stop"))e2.stopPropagation()});$("body").on("click touch","[actvt]",function(e2){let el2=$(this);if(el2.attr("actvt")!="")$(el2.attr("actvt")).removeClass("active");if(el2.hasClass("active"))el2.removeClass("active");else el2.addClass("active");if(el2.attr("stop"))e2.stopPropagation()});$("body").on("click touch","[close-notify]",function(e2){var tis=$(this).parent();tis.fadeOut(function(){tis.remove()});if($(this).attr("stop"))e2.stopPropagation()});let _keyInt;$("body").on("change blur focus keyup keydown input","[icons_search]",function(ev2){var key=$.trim($(this).val());var outlet=$($(this).attr("icons_outlet"));var count_outlet=$($(this).attr("icons_count_outlet"));clearTimeout(_keyInt);if(key==""||key.length<=2){count_outlet.hide();outlet.html("")}else{_keyInt=setTimeout(function(){fetch("https://api.iconify.design/search?query="+key+"&limit=250",{method:"GET"}).then(function(response){return response.json()}).then(function(r){count_outlet.show();let icons=r.icons;outlet.html("");count_outlet.html((r.total>250?r.total+"+":r.total)+" icons found..");for(let i=0;i<icons.length;i++){outlet.append(`
|
|
38
|
+
var _navT=0;var _nav=false;var _pbc;var _vuid={};$("body").on("click touch tap",function(e2){if(!_pbc)_pbc=new AudioContext;if(_pbc.state=="suspended"){_pbc.resume().then(()=>{})}});$("body").on("click touch",".navTgl",function(e2){_nav=false;clearTimeout(_navT);if($("nav").hasClass("nav-opened")){$("nav").removeClass("nav-opened");$("body").removeClass("nav-opened")}else{$("nav").addClass("nav-opened");$("body").addClass("nav-opened");_navT=setTimeout(function(){_nav=true},20)}e2.stopPropagation()});$(document).keydown(function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode==27){e2.preventDefault();e2.stopPropagation();if($("[loader]").length){if(_loader.options.Dismissible)_loader.hide()}else if(_nav){$("nav").removeClass("nav-opened");$("body").removeClass("nav-opened");_nav=false}else{if($("popup").length&&$("droplet").length){$("droplet").removeClass("is-visible").each(function(){var p=$(this);setTimeout(function(){p.remove()},150)})}else if($("popup").length){$("[close-modal]:last").click()}else{$("body").css({overflow:"visible"});$("droplet").removeClass("is-visible").each(function(){var p=$(this);setTimeout(function(){p.remove()},150)})}}}});_csswrk.on("css-ready",function(e2){let data=e2.originalEvent.data;_vuid[data.key].resolve(data.csses)});_upwrk.on("message",function(e2){let data=e2.originalEvent.data});_upwrk.on("files-added",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"files-added",data.files,data.newfiles)});_upwrk.on("queue-changed",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"queue-changed",data.files)});_upwrk.on("file-removed",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"file-removed",data.files,data.removedfile)});_upwrk.on("upload-start",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-start",data.files)});_upwrk.on("file-uploaded",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"file-uploaded",data.files,data.file)});_upwrk.on("upload-progress",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-progress",data.files)});_upwrk.on("upload-complete",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-complete",data.files)});_upwrk.on("upload-stop",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"upload-stop",data.files)});_upwrk.on("queue-empty",function(e2){let data=e2.originalEvent.data;processEv(e2,$('[upid="'+data.upid+'"]'),"queue-empty")});$.fn.extend({startUpload:function(){if(this.hasAttr("up")){_upwrk.trigger("start-upload",{"upid":this.attr("upid")})}return this},stopUpload:function(){if(this.hasAttr("up")){_upwrk.trigger("stop-upload",{"upid":this.attr("upid")})}return this},removeFile:function(id2){if(this.hasAttr("up")){_upwrk.trigger("remove-file",{"upid":this.attr("upid"),"id":id2})}return this}});$("body").on("FilesAdded","[up]",function(e2,files){let t=$(this);var size=t.attr("data-mxs")?t.attr("data-mxs"):"10mb";_upwrk.trigger("handle-files",{"upid":t.attr("upid"),"files":files});processEv(e2,t,"browse-files",files)});$("body").on("dragover","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();let t=$(this).closest("[up]");$(this).addClass("dragover");e2.originalEvent.dataTransfer.dropEffect="copy";return false});$("body").on("dragleave","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();$(this).removeClass("dragover")});$("body").on("drop","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t=$(this).closest("[up]");$(this).removeClass("dragover");t.trigger("FilesAdded",[files]);return false});$("body").on("click","[up] [browse]",function(e2){e2.stopPropagation();e2.preventDefault();let t=$(this).closest("[up]");t.find("[files]").click()});$("body").on("change","[up] [files]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t=$(this).closest("[up]");t.trigger("FilesAdded",[files])});$("body").on("click touch","[ctc]",function(ev){var el=$(this);var ctc=el.attr("ctc");var selector=el;if(ctc.indexOf("el.")!==-1){selector=eval(ctc)}else if(ctc!="")selector=$(ctc);if(!navigator.clipboard){var temp=$("<textarea class='pf' style='left: -40%;' />");$("body").append(temp);temp.val(selector.text()).select();document.execCommand("copy");temp.remove()}else{navigator.clipboard.writeText(selector.text()).then(function(){},function(err){var temp2=$("<textarea class='pf' style='left: -40%;' />");$("body").append(temp2);temp2.val(selector.text()).select();document.execCommand("copy");temp2.remove()})}if(el.hasAttr("stop"))ev.stopPropagation()});$("body").on("click touch","[scroll-left]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollLeft:_p.scrollLeft()-100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-right]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollLeft:_p.scrollLeft()+100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-top]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollTop:_p.scrollTop()-100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});$("body").on("click touch","[scroll-bottom]",function(ev2){var _el=$(this);var _wrap=_el.closest("[wrapper]");if(_wrap.length){var _p=_wrap.find("div").first();_p.stop().animate({scrollTop:_p.scrollTop()+100},{duration:200,easing:"easeOutCirc",complete:function(){}})}});function bs(t){$("body").css({overflow:t?"visible":"hidden"})}$("body").on("open-modal","[modal]",function(ev2){var el2=$(this);var n=popups.modals.length;var _view=el2.attr("modal");bs();var va=el2.attr("modal-align")??"center middle";var padding=el2.attr("modal-spacing")??"p10";var ov=el2.attr("modal-ov")??"bgb20";va=va.split(" ");if(va.length==2){va={h:["left","center","right"].indexOf(va[0])>=0?va[0]:"center",v:["top","center","middle","bottom"].indexOf(va[1])>=0?va[1]:"middle"}}else{va={h:"center",v:"middle"};setError(null,"Modal align should be modal-align='vertical horizontal'.")}if(!el2.hasAttr("data-modal")){var selector2="modals_"+n;var popup='<popup class="ov pf [c] z10000"><pop-o class="ov pf [ov]"></pop-o><tbl_nm fixed class="hv100"><cl class="[va] [ta] [p]"><pop-c><pop-x close-modal data-dismiss="modal" aria-label="Close"><span aria-hidden="true" class="cc c">×</span></pop-x><pop-h><pop-t>[t]</pop-t><pop-d>[d]</pop-d></pop-h><pop-b>[b]</pop-b><pop-f>[f]</pop-f></pop-c></cl></tbl_nm></popup>';var verticalAlign=va["v"]=="center"||va["v"]=="middle"?"vm":va["v"]=="top"?"vt":"vb";var textAlign=va["h"]=="center"?"c":va["h"]=="left"?"l":"r";popup=popup.split("[va]").join(verticalAlign).split("[p]").join(padding).split("[ta]").join(textAlign).split("[ov]").join(ov);let attrsData={t:el2.attr("modal-title")??"New Modal",d:el2.attr("modal-description")??"",c:el2.attr("modal-class")??""};if(_view!=""){popup=popup.split("[t]").join(attrsData.t);popup=popup.split("[d]").join(attrsData.d);popup=popup.split("[b]").join('<div for-modal="'+selector2+`" view='`+_view+"'></div>");popup=popup.split("[f]").join("")}else{var c=getComData(el2);if(!c){if(el2.find("modal").length>0){var modalData=el2.find("modal:first");var c=getComData(modalData,true)}}if(c){if(c.Title)popup=popup.split("[t]").join(c.Title??attrsData.t);popup=popup.split("[d]").join(c.Description??attrsData.d);popup=popup.split("[b]").join(c.Body??"");popup=popup.split("[f]").join(c.Footer??"")}else{popup=popup.split("[t]").join(attrsData.t);popup=popup.split("[d]").join(attrsData.d);popup=popup.split("[b]").join("");popup=popup.split("[f]").join("")}}popup=popup.split("[c]").join(attrsData.c);var newModal=$(popup);newModal.attr("id",selector2).appendTo("body");let modal2=$("#"+selector2);el2.trigger("modal-open",[modal2]);modal2.data("props",el2.data("props"));modal2.addClass("modal-open").delay(10).queue(function(next){$(this).addClass("in");next()});$(this).attr("data-modal",selector2);popups["modals"].push(newModal.get(0));globalWatch()}if(el2.hasAttr("stop"))ev2.stopPropagation()});$("body").on("click touch","[modal]",function(ev2){let modalTriggered=false;var obj={};$.each($(this)[0].attributes,function(){if(this.value.toLowerCase()=="openmodal"){modalTriggered=true;return}obj[this.name]=this.value});if(!modalTriggered){$(this).trigger("open-modal")}});$("body").on("modal-close","[\\@modal-close]",function(ev,modal,cb){let el=$(this),_v=el.attr("@modal-close");let props=modal.data("props");let _fn=_v.split("(")[0];try{if(typeof window[_v]==="function")cb(window[_fn](ev,el,modal,props));else{let _eva=eval(_v);cb(_eva)}}catch(e2){cb()}});$("body").on("modal-open","[\\@modal-open]",function(ev,modal){let el=$(this),_v=el.attr("@modal-open");let _fn=_v.split("(")[0];try{if(typeof window[_v]==="function"){var _data=window[_fn](ev,el,modal);modal.data("props",_data)}else{let _eva=eval(_v);modal.data("props",_eva)}}catch(e2){}});function evalEvAttr(_v2,ev2,el2,n,arg1,arg2,arg3){let _fn2=_v2.split("(")[0];try{let _rawEl=el2[0];let _ownerFns=_rawEl&&_rawEl._ownerRe&&_rawEl._ownerRe.view&&_rawEl._ownerRe.view.fns;let _ownFn=_v2===_fn2&&_ownerFns&&typeof _ownerFns[_fn2]==="function"?_ownerFns[_fn2]:null;if(_ownFn||typeof window[_v2]==="function"){ev2["cType"]=n;let _handler=_ownFn||window[_fn2];var _data2=arg3?_handler(ev2,el2,arg1,arg2,arg3):arg2?_handler(ev2,el2,arg1,arg2):arg1?_handler(ev2,el2,arg1):_handler(ev2,el2);return _data2}else{let _eva2=_evalEventScopedExpr(_rawEl&&_rawEl._ownerRe,_v2);return _eva2}}catch(e2){return false}}function processEv(ev2,el2,n,arg1,arg2,arg3){if(el2.attr("stop"))ev2.stopPropagation();if(n=="focusin")n="focus";else if(n=="focusout")n="blur";if(!el2.hasAttr("@"+n))return;if(el2.hasAttr("@before-"+n)){if(!evalEvAttr(el2.attr("@before-"+n),ev2,el2,n,arg1,arg2,arg3))return}let _v2=el2.attr("@"+n);if(_v2.toLowerCase()=="openmodal"){el2.trigger("open-modal");return}evalEvAttr(_v2,ev2,el2,n,arg1,arg2,arg3)}$("body").on("click touch","[ci]",function(ev2){var el2=$(this);var f=el2.closest("form");var inputs=$("");if(el2.attr("ci")!=""){let ci=el2.attr("ci").split(",");for(let index2=0;index2<ci.length;index2++){const selector2=ci[index2];inputs=inputs.add(f.find(selector2))}}else{inputs=f.find($("input[\\:required],select[\\:required],textarea[\\:required]"))}f.removeClass("validation-error");for(var i=0;i<inputs.length;i++){if(!checkFormInputs(f,inputs[i])){f.addClass("validation-error");break}}});$("body").on("doubletap","[\\@dblclick]",function(ev2){processEv(ev2,$(this),"dblclick")});$("body").on("doubletap","[\\@dbltap]",function(ev2){processEv(ev2,$(this),"dbltap")});$("body").on("singletap","[\\@singleclick]",function(ev2){processEv(ev2,$(this),"singleclick")});$("body").on("singletap","[\\@singletap]",function(ev2){processEv(ev2,$(this),"singletap")});$("body").on("taphold","[\\@taphold]",function(ev2){processEv(ev2,$(this),"taphold")});$("body").on("taphold","[\\@clickhold]",function(ev2){processEv(ev2,$(this),"clickhold")});$("body").on("click touch","[\\@click]",function(ev2){processEv(ev2,$(this),"click")});$("body").on("tap","[\\@tap]",function(ev2){processEv(ev2,$(this),"click touch")});$("body").on("tap2","[\\@click2]",function(ev2){processEv(ev2,$(this),"click2")});$("body").on("tap2","[\\@tap2]",function(ev2){processEv(ev2,$(this),"tap2")});$("body").on("tap2hold","[\\@click2hold]",function(ev2){processEv(ev2,$(this),"click2hold")});$("body").on("tap2hold","[\\@tap2hold]",function(ev2){processEv(ev2,$(this),"tap2hold")});$("body").on("orientationchange","[\\@orientationchange]",function(ev2){processEv(ev2,$(this),"orientationchange")});$("body").on("swipe swipeleft swipedown swipeend swipeup swiperight","[\\@swipe],[\\@swipe-down],[\\@swipe-up],[\\@swipe-left],[\\@swipe-right],[\\@swipe-end]",function(ev2){let _v2=ev2.type.length==5?"swipe":ev2.type.split("swipe").join("swipe-");processEv(ev2,$(this),_v2)});$("body").on("mouseover","[\\@mouse-over]",function(ev2){processEv(ev2,$(this),"mouse-over")});$("body").on("mousedown touchstart","[\\@mouse-down]",function(ev2){processEv(ev2,$(this),"mouse-down")});$("body").on("tapstart","[\\@tap-start]",function(ev2){processEv(ev2,$(this),"tap-start")});$("body").on("tapend","[\\@tap-end]",function(ev2){processEv(ev2,$(this),"tap-end")});$("body").on("tapmove","[\\@tap-move]",function(ev2){processEv(ev2,$(this),"tap-move")});$("body").on("mouseup touchend","[\\@mouse-up]",function(ev2){processEv(ev2,$(this),"mouse-up")});$("body").on("mouseout","[\\@mouse-out]",function(ev2){processEv(ev2,$(this),"mouse-out")});$("body").on("mouseenter touchmove","[\\:hover]",function(ev2){let _s=$(this).attr(":hover");$(this).attr("style",($(this).hasAttr("style")?$(this).attr("style").rtrim(";")+";":"")+_s)});$("body").on("mouseleave touchend","[\\:hover]",function(ev2){let _s=$(this).attr(":hover");$(this).attr("style",$(this).attr("style").split(_s).join(""))});$("body").on("mouseenter","[\\@mouse-enter]",function(ev2){processEv(ev2,$(this),"mouse-enter")});$("body").on("mouseleave","[\\@mouse-leave]",function(ev2){processEv(ev2,$(this),"mouse-leave")});$("body").on("mousemove","[\\@mouse-move]",function(ev2){processEv(ev2,$(this),"mouse-move")});$("body").on("touchmove","[\\@mouse-move]",function(ev2){processEv(ev2,$(this),"mouse-move")});$("body").on("sort","[\\@sort]",function(ev2,ui){processEv(ev2,$(this),"sort",ui)});$("body").on("sortupdate","[\\@sort-update]",function(ev2,ui){processEv(ev2,$(this),"sort-update",ui)});$("body").on("sortchange","[\\@sort-change]",function(ev2,ui){processEv(ev2,$(this),"sort-change",ui)});$("body").on("sortstart","[\\@sort-start]",function(ev2,ui){processEv(ev2,$(this),"sort-start",ui)});$("body").on("sortstop","[\\@sort-stop]",function(ev2,ui){processEv(ev2,$(this),"sort-stop",ui)});$("body").on("sortbeforestop","[\\@sort-before-stop]",function(ev2,ui){processEv(ev2,$(this),"sort-before-stop",ui)});$("body").on("drag","[\\@drag]",function(ev2,ui){processEv(ev2,$(this),"drag",ui)});$("body").on("dragstart","[\\@drag-start]",function(ev2,ui){processEv(ev2,$(this),"drag-start",ui)});$("body").on("dragstop","[\\@drag-stop]",function(ev2,ui){processEv(ev2,$(this),"drag-stop",ui)});$("body").on("drop","[\\@drop]",function(ev2,ui){processEv(ev2,$(this),"drop",ui)});$("body").on("clear","[sl]",function(ev2,ui){let t=$(this);t.empty().change();try{let opts=t.data("select2")?.options?.options;opts.data=null;t.select2(opts)}catch(e2){cl(e2)}});$("body").on("change blur focus keyup keydown input","[\\@input],[\\@change],[\\@blur],[\\@focus],[\\@keyup],[\\@keydown]",function(ev2){processEv(ev2,$(this),ev2.type)});$("body").on("click touch","[close-modal]",function(ev){var el=$(this);var modal=el.closest("popup");var id=modal.attr("id");var element_to_remove=$("#"+id).get(0);var index=$.inArray(element_to_remove,popups.modals);var modalOwner=$("[modal][data-modal="+id+"]");if(el.attr("stop"))ev.stopPropagation();ev.preventDefault();if(modalOwner.hasAttr("@modal-beforeclose")){cl("kuku");try{let _bv=modalOwner.attr("@modal-beforeclose");let _fn=_bv.split("(")[0];if(typeof window[_bv]==="function"){cl("sasha");if(window[_fn](ev,el,modalOwner)==false)return;else{cl("llll");let _eva=eval(_bv);if(_eva==false)return;cl("khaaawwwww")}}}catch(e2){cl("haha");cl(e2)}}if(modalOwner.hasAttr("@modal-close")){modalOwner.trigger("modal-close",[modal,function(res){if(res===false)return;$(".select2-container:not(.select2),.colorpicker.colorpicker-visible").remove();if(index>-1){$("[modal][data-modal="+id+"]").removeAttr("data-modal");modal.removeClass("in").delay(150).queue(function(next){$(this).remove();if(popups.modals.length==0)bs(true);next()});popups.modals.splice(index,1)}}])}else{$(".select2-container:not(.select2),.colorpicker.colorpicker-visible").remove();if(index>-1){$("[modal][data-modal="+id+"]").removeAttr("data-modal");modal.removeClass("in").delay(150).queue(function(next){$(this).remove();if(popups.modals.length==0)bs(true);next()});popups.modals.splice(index,1)}}});$("body").on("change keyup","[password]",function(e2){let el2=$(this);let lbl=el2.closest("label");let f=el2.closest("form");var v=$.trim($(this).val());let allCls="has-spaces weak strong very-strong medium";let cls=passwordStrength(v);el2.removeClass(allCls).addClass(cls);if(f.length)f.removeClass(allCls).addClass(cls);if(lbl.length)lbl.removeClass(allCls).addClass(cls);if(!$(this).next().hasClass("passStrength"))$(this).after("<span class='passStrength'></span>");$(this).parent().find(".passStrength").removeClass(allCls).addClass(cls)});$("body").on("change keyup","[username]",function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode!=9&&keyCode!=16&&keyCode!=27&&keyCode!=93&&keyCode!=91&&keyCode!=17&&keyCode!=18){var el2=$(this);let f=el2.closest("form");checkFormInputs(f,el2,true)}});$("body").on("focus","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);var f=el2.closest("form");let lbl=el2.closest("label");if(f.length)f.addClass("focused");if(lbl.length)lbl.addClass("focused");el2.parent().addClass("focused");el2.addClass("focused")});$("body").on("blur","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);var f=el2.closest("form");if(f.length)f.removeClass("focused");el2.parent().removeClass("focused");el2.removeClass("focused")});$("body").on("change keyup","input:not(.select2-search__field,.mobinit),textarea,select",function(ev2){var el2=$(this);let f=el2.closest("form");checkFormInputs(f,el2,true)});var _lookups=0;var _debs={};var _proms={};$("body").on("change keyup","[\\:lookup]",function(e2){var keyCode=e2.keyCode||e2.which;if(keyCode!=9&&keyCode!=16&&keyCode!=27&&keyCode!=93&&keyCode!=91&&keyCode!=17&&keyCode!=18){var el2=$(this);if(!el2.attr("data-i")){el2.attr("data-i",_lookups);_lookups++}var key="lu_"+el2.attr("data-i");clearTimeout(_debs[key]);var v=$(this).val();var callback=el2.attr(":lookup-callback");if(!_proms.hasOwnProperty(key)){_proms[key]=defer();_proms[key].then(function(val){el2.addClass("finished").removeClass("pending")}).catch(reason=>{el2.addClass("pending").removeClass("finished")})}else{}el2.addClass("pending").removeClass("finished");_debs[key]=setTimeout(function(){_proms[key].reject();_proms[key]=defer();_proms[key].then(function(val){el2.addClass("finished").removeClass("pending")}).catch(reason=>{el2.addClass("pending").removeClass("finished")});window[callback](v,_proms[key])},200)}});$("body").on("click touch","a,area",function(e2){var el2=$(this);var link=el2.attr("href");if(link==""||$(this).closest(".cke").length==1||$(this).closest(".chosen-container").length==1||$(this).attr("target")=="_blank"||$(this).attr("target")=="_new"||$(this).hasClass("norm")||$(this).closest(".gm-style").length==1){}else{var local=false;var l=getLocation(link);var l2=getLocation(appSettings.Base);var url="home";local=l.hostname==l2.hostname;var url=l.pathname.split(l2.pathname);if(l.pathname=="/"||l.pathname=="/home"){url="home"}else{url=url.join("/")}if(local&&!cntrlon){e2.preventDefault();if(el2.hasAttr("stop"))e2.stopPropagation();pushURL(url+(l.search!=""?l.search:""))}else{}}});$("body").on("click touch","[h],[s]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));var attrs=el.attr();var hI=Object.keys(attrs).indexOf("h");var sI=Object.keys(attrs).indexOf("s");if(sI<hI){$(el.attr("s")).show();$(el.attr("h")).hide()}else{$(el.attr("h")).hide();$(el.attr("s")).show()}if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[e]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));if($($(this).attr("e")).is("input"))$($(this).attr("e")).val("");else $($(this).attr("e")).empty()});$("body").on("click touch","[f]",function(e2){var el2=$(this);$(el2.attr("f")).trigger("focus");if(el2.hasAttr("stop"))e2.stopPropagation()});$("body").on("click touch","[tgl]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));el.toggleClass(el.attr("tgl"));el.toggleClass("toggled");if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[t]",function(e){var el=$(this);var tcn=el.attr("tcn")?el.attr("tcn"):"active";if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));$(el.attr("t")).toggleClass(tcn);el.toggleClass("toggled");if(el.hasAttr("stop"))e.stopPropagation()});$("body").on("click touch","[actv]",function(e2){let el2=$(this);if(el2.attr("actv")!="")$(el2.attr("actv")).removeClass("active");el2.addClass("active");if(el2.attr("stop"))e2.stopPropagation()});$("body").on("click touch","[actvt]",function(e2){let el2=$(this);if(el2.attr("actvt")!="")$(el2.attr("actvt")).removeClass("active");if(el2.hasClass("active"))el2.removeClass("active");else el2.addClass("active");if(el2.attr("stop"))e2.stopPropagation()});$("body").on("click touch","[close-notify]",function(e2){var tis=$(this).parent();tis.fadeOut(function(){tis.remove()});if($(this).attr("stop"))e2.stopPropagation()});let _keyInt;$("body").on("change blur focus keyup keydown input","[icons_search]",function(ev2){var key=$.trim($(this).val());var outlet=$($(this).attr("icons_outlet"));var count_outlet=$($(this).attr("icons_count_outlet"));clearTimeout(_keyInt);if(key==""||key.length<=2){count_outlet.hide();outlet.html("")}else{_keyInt=setTimeout(function(){fetch("https://api.iconify.design/search?query="+key+"&limit=250",{method:"GET"}).then(function(response){return response.json()}).then(function(r){count_outlet.show();let icons=r.icons;outlet.html("");count_outlet.html((r.total>250?r.total+"+":r.total)+" icons found..");for(let i=0;i<icons.length;i++){outlet.append(`
|
|
39
39
|
<li class="w20 md_w25 m_w33 m_m_w50 c icoLi" data-class="`+icons[i]+`"><div><span class="iconify fs24 mb5 lh40 g_nm" style="height: 40px;" data-icon="`+icons[i]+`" ></span><span class="name-class">`+icons[i]+`</span></div></li>
|
|
40
40
|
`)}})},400)}});$("body").on("click touch","[alert]",function(e2){notify($(this).attr("alert-t"),$(this).attr("alert"),$(this).attr("alert-icon")?$(this).attr("alert-icon"):"alert-circle",$(this).attr("alert-type")?$(this).attr("alert-type"):"alert")});$("body").on("click touch","[rcl],[acl]",function(e){var el=$(this);if(el.hasAttr("confirm")){if(!confirm(el.attr("confirm")))return false}if(el.hasAttr("econfirm"))eval(el.attr("econfirm"));if(el.hasAttr("acl")&&el.hasAttr("rcl")){var attrs=el.attr();var rclcn=el.attr("rclcn")?el.attr("rclcn"):"active";var aclcn=el.attr("aclcn")?el.attr("aclcn"):"active";var rCl=Object.keys(attrs).indexOf("rcl");var aCl=Object.keys(attrs).indexOf("acl");if(aCl<rCl){$(el.attr("acl")).addClass(aclcn);el.addClass("added").removeClass("removed");if(el.hasAttr("stop"))e.stopPropagation();$(el.attr("rcl")).removeClass(rclcn);el.addClass("removed").removeClass("added");if(el.hasAttr("stop"))e.stopPropagation()}else{$(el.attr("rcl")).removeClass(rclcn);el.addClass("removed").removeClass("added");if(el.hasAttr("stop"))e.stopPropagation();$(el.attr("acl")).addClass(aclcn);el.addClass("added").removeClass("removed");if(el.hasAttr("stop"))e.stopPropagation()}}else{if(el.hasAttr("rcl")){var rclcn=el.attr("rclcn")?el.attr("rclcn"):"active";$(el.attr("rcl")).removeClass(rclcn);el.addClass("removed").removeClass("added");if(el.hasAttr("stop"))e.stopPropagation()}else{var aclcn=el.attr("aclcn")?el.attr("aclcn"):"active";$(el.attr("acl")).addClass(aclcn);el.addClass("added").removeClass("removed");if(el.hasAttr("stop"))e.stopPropagation()}}});$("body").on("click touch","[st]",function(e2){st($(this).attr("st"))});class Loader{options={Dismissible:true,Class:"loader",Message:"Please Wait..."};constructor(options){for(var k in options){this.options[k]=options[k]}}dismiss(){if(this.options.Dismissible){this.hide()}}init(){let l=`
|
|
41
41
|
<div loader class="${this.options.Class}">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lmjs/core",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.11",
|
|
4
4
|
"description": "LumenJS reactive core runtime — the reactive engine, HTML/JS AST compiler, realtime socket client, and delegated event listeners powering LumenJS applications.",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/",
|
package/src/_re.js
CHANGED
|
@@ -477,6 +477,85 @@ function _lookupInWidgets(name) {
|
|
|
477
477
|
return undefined;
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
+
// 2026-09-21: @click (and every other @-event handler, lstnrs.js's
|
|
481
|
+
// evalEvAttr()) has never actually been able to mutate a reactive var via
|
|
482
|
+
// an inline expression — @click="isLoggedIn = !isLoggedIn",
|
|
483
|
+
// @click="age++" — found testing real lumenjs.com guide content, whose
|
|
484
|
+
// own demo buttons do exactly this and silently did nothing on click, no
|
|
485
|
+
// console error at all. evalEvAttr()'s fallback for anything that isn't
|
|
486
|
+
// a real named function call was a completely bare `eval(_v)` — no
|
|
487
|
+
// scope/context injection whatsoever. This happened to work for NAMED
|
|
488
|
+
// FUNCTION calls (@click="bump", the only pattern
|
|
489
|
+
// click-events.integration.test.js ever exercised) because top-level
|
|
490
|
+
// function declarations stay real, window-attached globals by design
|
|
491
|
+
// (walk.js deliberately never rewrites those, so onclick="fn()"-style
|
|
492
|
+
// handlers keep working) — but a reactive var (declared with `var`,
|
|
493
|
+
// rewritten by walk.js into _vt.View.vars[...]/_vt.View.views[i]
|
|
494
|
+
// .vars[...]/_vt.Global.vars[...]) has no such real, bare identifier
|
|
495
|
+
// anywhere for a plain eval() to find, let alone write back to.
|
|
496
|
+
//
|
|
497
|
+
// Fixed with a scope-aware evaluator using `with` + a Proxy — the one
|
|
498
|
+
// mechanism that can make a bare identifier's READS *and* WRITES route
|
|
499
|
+
// through the reactive system, since `with` resolves each identifier via
|
|
500
|
+
// the object's own property traps (get/set/has), not real lexical scope.
|
|
501
|
+
// get()'s priority mirrors concatVarsAtLevel()'s existing read order
|
|
502
|
+
// (Global < Widgets < the triggering element's own owner view's vars);
|
|
503
|
+
// set() walks the SAME real _vt Proxy chain (via the owner's own
|
|
504
|
+
// scopePath, the exact mechanism renderView()/renderHST() already use to
|
|
505
|
+
// address a subview instance's nested vars) so a write actually triggers
|
|
506
|
+
// _dispatchVarsUpdate() and a real re-render, not a silent no-op on a
|
|
507
|
+
// detached plain object. has() only claims a name actually found in one
|
|
508
|
+
// of those three tiers — anything else (a real global function like
|
|
509
|
+
// `st`/`$`, a :for-loop-scoped `item`, ...) correctly falls through to
|
|
510
|
+
// the real enclosing scope, completely unaffected by this.
|
|
511
|
+
//
|
|
512
|
+
// `with` is otherwise forbidden in strict-mode code — confirmed safe
|
|
513
|
+
// here: nothing in this bundle's own top-level execution scope declares
|
|
514
|
+
// "use strict" (the one hit, vendor/astring.js, is scoped to its own
|
|
515
|
+
// IIFE and doesn't affect this file).
|
|
516
|
+
function _resolveScopePathTarget(scopePath) {
|
|
517
|
+
let target = _vt;
|
|
518
|
+
for (let i = 0; i < scopePath.length; i++) target = target[scopePath[i]];
|
|
519
|
+
return target;
|
|
520
|
+
}
|
|
521
|
+
function _evalEventScopedExpr(ownerRe, expr) {
|
|
522
|
+
if (!ownerRe || !ownerRe.view) return eval(expr);
|
|
523
|
+
let ownVars = ownerRe.view.vars || {};
|
|
524
|
+
let widgetsVars = _mergedWidgetsVars();
|
|
525
|
+
let scopeProxy = new Proxy({}, {
|
|
526
|
+
has(target, key) {
|
|
527
|
+
if (typeof key === 'symbol') return false;
|
|
528
|
+
return ownVars.hasOwnProperty(key) || widgetsVars.hasOwnProperty(key) || _vt.Global.vars.hasOwnProperty(key);
|
|
529
|
+
},
|
|
530
|
+
get(target, key) {
|
|
531
|
+
if (ownVars.hasOwnProperty(key)) return ownVars[key];
|
|
532
|
+
if (widgetsVars.hasOwnProperty(key)) return widgetsVars[key];
|
|
533
|
+
return _vt.Global.vars[key];
|
|
534
|
+
},
|
|
535
|
+
set(target, key, value) {
|
|
536
|
+
try {
|
|
537
|
+
if (ownVars.hasOwnProperty(key) && ownerRe.view.scopePath) {
|
|
538
|
+
_resolveScopePathTarget(ownerRe.view.scopePath).vars[key] = value;
|
|
539
|
+
} else if (widgetsVars.hasOwnProperty(key)) {
|
|
540
|
+
for (const wname in _vt.Widgets) {
|
|
541
|
+
if (_vt.Widgets[wname].vars.hasOwnProperty(key)) {
|
|
542
|
+
_vt.Widgets[wname].vars[key] = value;
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
} else {
|
|
547
|
+
_vt.Global.vars[key] = value;
|
|
548
|
+
}
|
|
549
|
+
} catch (e) { cl(e); }
|
|
550
|
+
return true;
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
function _runWithScope(expr) {
|
|
554
|
+
with (scopeProxy) { return eval(expr); }
|
|
555
|
+
}
|
|
556
|
+
return _runWithScope(expr);
|
|
557
|
+
}
|
|
558
|
+
|
|
480
559
|
// concatVarsAtLevel() below merges via object spread, not the loop-with-
|
|
481
560
|
// break shape _lookupInWidgets() uses — spread's "later wins" needs the
|
|
482
561
|
// widgets merged in REVERSE declaration order so the first-declared widget
|
|
@@ -887,6 +966,27 @@ class _lm {
|
|
|
887
966
|
|
|
888
967
|
if (k && k != forX['js']) continue;
|
|
889
968
|
|
|
969
|
+
// 2026-09-21: real bug found and fixed — updateLXRs is async
|
|
970
|
+
// and does `await this.createSection(...)` per item inside its
|
|
971
|
+
// own "add" loop below. On a page with many cascading reactive
|
|
972
|
+
// updates (confirmed via direct tracing on a real page: up to
|
|
973
|
+
// hundreds of update() calls firing within a few seconds), a
|
|
974
|
+
// SECOND, overlapping call for the SAME cx can start while the
|
|
975
|
+
// FIRST is still mid-await. Both then read the same stale
|
|
976
|
+
// cx.atr, both independently compute "add" actions for the
|
|
977
|
+
// same items, and both concurrently insert DOM nodes and write
|
|
978
|
+
// into cx.ref.nodes[keyed] — corrupting which node is tracked
|
|
979
|
+
// for which key and silently losing earlier items entirely.
|
|
980
|
+
// Found on a real :for="3" demo that only ever rendered 2 of 3
|
|
981
|
+
// items. A simple per-cx re-entrancy guard: if this cx is
|
|
982
|
+
// already being processed by an in-flight call, skip it for
|
|
983
|
+
// THIS call — the in-flight call finishes processing the
|
|
984
|
+
// CURRENT data itself; anything that changed meanwhile is
|
|
985
|
+
// picked up by the next real update() call regardless.
|
|
986
|
+
if (cx._updating) continue;
|
|
987
|
+
cx._updating = true;
|
|
988
|
+
try {
|
|
989
|
+
|
|
890
990
|
var val = this.getVal(forX['js'], "");
|
|
891
991
|
|
|
892
992
|
// cl("FORR", cx, val);
|
|
@@ -1189,6 +1289,9 @@ class _lm {
|
|
|
1189
1289
|
// }
|
|
1190
1290
|
// }
|
|
1191
1291
|
|
|
1292
|
+
} finally {
|
|
1293
|
+
cx._updating = false;
|
|
1294
|
+
}
|
|
1192
1295
|
}
|
|
1193
1296
|
}
|
|
1194
1297
|
|
package/src/lstnrs.js
CHANGED
|
@@ -519,7 +519,14 @@ function evalEvAttr(_v, ev, el, n, arg1, arg2, arg3) {
|
|
|
519
519
|
var _data = arg3 ? _handler(ev, el, arg1, arg2, arg3) : (arg2 ? _handler(ev, el, arg1, arg2) : (arg1 ? _handler(ev, el, arg1) : _handler(ev, el)));
|
|
520
520
|
return _data;
|
|
521
521
|
} else {
|
|
522
|
-
|
|
522
|
+
// 2026-09-21: routed through _evalEventScopedExpr() (_re.js) instead
|
|
523
|
+
// of a bare eval(_v) — see that function's own comment for the full
|
|
524
|
+
// story. A plain eval() here could never resolve, let alone write
|
|
525
|
+
// back to, a reactive var (isLoggedIn = !isLoggedIn, age++, ...) —
|
|
526
|
+
// only real global functions/vars ever worked. _rawEl._ownerRe is
|
|
527
|
+
// the same owner-instance reference the function-lookup branch above
|
|
528
|
+
// already uses.
|
|
529
|
+
let _eva = _evalEventScopedExpr(_rawEl && _rawEl._ownerRe, _v);
|
|
523
530
|
return _eva;
|
|
524
531
|
}
|
|
525
532
|
} catch (e) {
|