@lmjs/cli 2.1.3 → 2.1.4
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/lib/fcs.js +1 -1
- package/dist/lib/files/libs/lm.js +1 -1
- package/package.json +2 -2
package/dist/lib/fcs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const fetch=require("node-fetch");const path=require("path");const fs=require("fs");const nodemon=require("nodemon");var _acorn=require("acorn");var acorn=require("acorn-loose");var _min=require("html-minifier").minify;const _FD=require("ftp-deploy");const _fD=new _FD;global.astring=global.astring||require("astring");const _corePackageDir=path.dirname(require.resolve("@lmjs/core/package.json"));const _walk=require(path.join(_corePackageDir,"src","walk.js"));const _npmBundle=require(path.join(__dirname,"npm-bundle.js"));exports.hasOwnDependencies=_npmBundle.hasOwnDependencies;exports.buildEntryWithImports=_npmBundle.buildEntryWithImports;const _pluginsBundle=require(path.join(__dirname,"plugins-esbuild-plugin.js"));const _vault=require(path.join(__dirname,"vault.js"));exports.login=_vault.login;exports.apiSet=_vault.apiSet;exports.apiUpdate=_vault.apiUpdate;exports.apiGet=_vault.apiGet;exports.apiList=_vault.apiList;exports.apiRemove=_vault.apiRemove;function selectedProjectPlugins(projectRoot){try{const pkgPath=path.join(projectRoot,"package.json");if(!fs.existsSync(pkgPath))return[];const pkg=JSON.parse(fs.readFileSync(pkgPath,"utf8"));if(!pkg.dependencies)return[];return _pluginsBundle.selectedRegistryEntries(pkg.dependencies)}catch(e){return[]}}exports.selectedProjectPlugins=selectedProjectPlugins;function compileProjectScript(source,name){let ast=_acorn.parse(source,{ecmaVersion:"latest",sourceType:"script"});let topLevelNames=[];for(const stmt of ast.body){if(stmt.type==="VariableDeclaration"){for(const d of stmt.declarations){if(d.id&&d.id.type==="Identifier")topLevelNames.push(d.id.name)}}}return _walk.getWatcher(ast,{name:name||"script"},topLevelNames,"Global").code}exports.compileProjectScript=compileProjectScript;function detectLocalProjectScripts(indexHtmlSource){let found=[];let re=/<script\b[^>]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/gi;let m;while(m=re.exec(indexHtmlSource)){let src=m[1];if(src.indexOf("/")!==0)continue;if(src==="/js/lm.js"||src==="/index.js")continue;found.push(src)}return found}exports.detectLocalProjectScripts=detectLocalProjectScripts;const CORE_Libs={BEACSS:"https://s.beacdn.com/beacss/latest",COREJS:"https://lmjs.beacdn.com/latest"};const HST_FORMAT_VERSION=1;exports.HST_FORMAT_VERSION=HST_FORMAT_VERSION;exports.getAllFiles=getAllFiles;exports.validateTplsAreHtmlOnly=validateTplsAreHtmlOnly;exports.ucwords=ucwords;exports.fetch=fetch;exports.getConfig=getConfig;function getConfig(){config={version:"1.0.0.1",server:{host:"127.0.0.1",port:"3000",ssl:{enabled:false,key:"/key.pem",cert:"/certificate.cer"}},apis:[{baseURL:"https://www.beaapis.com/1",headers:{"X-BEA-Application-ID":"YOUR_APPLICATION_ID","X-BEA-Authorization":"YOUR_REST_API_KEY"}}],ftp:{host:"ftp_host",username:"ftp_username",password:"ftp_password",remotePath:"/",concurrency:4,protocol:"ftp",port:21,ignore:[],syncOption:{delete:false,ignoreExisting:false,skipCreate:false,update:true},connectTimeout:3e4}};let configPath=process.cwd()+path.sep+`config.json`;if(fs.existsSync(configPath)){config=JSON.parse(fs.readFileSync(configPath,{encoding:"utf8"}))}return config}var config=getConfig();function ucwords(str){return(str+"").replace(/^([a-z])|\s+([a-z])/g,function($1){return $1.toUpperCase()})}function lw(s){return s.toString().toLowerCase()}exports.lw=lw;function cd(d){if(!fs.existsSync(d))fs.mkdirSync(d)}exports.cd=cd;function rd(d){if(fs.existsSync(d))fs.rmSync(d,{recursive:true,force:true})}exports.rd=rd;function create(conf){let t=conf.type=="v"||conf.type=="s"||conf.type=="t"?conf.type:"p";let n=conf.type=="v"||conf.type=="s"||conf.type=="t"?lw(conf.name[0]):conf.name.join(" ");if(t=="p"){var libsPath=`${__dirname}`+path.sep+`files`+path.sep+`libs`;var getLibs=false;var _beacssMissing=false;var _lmMissing=false;require("dns").resolve("www.google.com",function(err){if(!err){var _mobiuscssPath=libsPath+path.sep+"mobius.css";_beacssMissing=!fs.existsSync(_mobiuscssPath)||fs.statSync(_mobiuscssPath).size===0;_lmMissing=!fs.existsSync(libsPath+path.sep+"lm.js");if(_lmMissing||_beacssMissing)getLibs=true}if(getLibs){API.get(CORE_Libs.COREJS,{}).then(corejs=>{API.get(CORE_Libs.BEACSS,{}).then(mobiuscss=>{var libsPath2=`${__dirname}`+path.sep+`files`+path.sep+`libs`;cd(libsPath2);if(_lmMissing){fs.writeFileSync(libsPath2+path.sep+"lm.js",String(corejs))}if(_beacssMissing){fs.writeFileSync(libsPath2+path.sep+"mobius.css",String(mobiuscss))}var filePath3=`${process.cwd()}`+path.sep;copyDir(`${__dirname}`+path.sep+`files`+path.sep+`project`,filePath3,n);cd(filePath3+path.sep+"src");cd(filePath3+path.sep+"src"+path.sep+"css");cd(filePath3+path.sep+"src"+path.sep+"images");cd(filePath3+path.sep+"src"+path.sep+"js");let stylesFile=filePath3+path.sep+"src"+path.sep+"css"+path.sep+`styles.css`;let faviconFile=filePath3+path.sep+"src"+path.sep+`favicon.ico`;if(!fs.existsSync(stylesFile))fs.writeFileSync(stylesFile,String(""));if(!fs.existsSync(faviconFile))fs.writeFileSync(faviconFile,String(""));fs.writeFileSync(filePath3+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath3+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss))})}).catch(err2=>{})}else{var filePath2=`${process.cwd()}`+path.sep;copyDir(`${__dirname}`+path.sep+`files`+path.sep+`project`,filePath2,n);cd(filePath2+path.sep+"src");cd(filePath2+path.sep+"src"+path.sep+"css");cd(filePath2+path.sep+"src"+path.sep+"images");cd(filePath2+path.sep+"src"+path.sep+"js");let stylesFile=filePath2+path.sep+"src"+path.sep+"css"+path.sep+`styles.css`;let faviconFile=filePath2+path.sep+"src"+path.sep+`favicon.ico`;if(!fs.existsSync(stylesFile))fs.writeFileSync(stylesFile,String(""));if(!fs.existsSync(faviconFile))fs.writeFileSync(faviconFile,String(""));let corejs=Buffer.from(fs.readFileSync(libsPath+path.sep+"lm.js").toString());let mobiuscss=Buffer.from(fs.readFileSync(libsPath+path.sep+"mobius.css").toString());fs.writeFileSync(filePath2+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath2+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss))}})}else{let file=t=="s"?"sub_view.view":t=="t"?"layout.layout":"view.view";let ident=t=="s"?"SubView":t=="t"?"Template":"View";let dir=t=="t"?"layouts":"views";let ext=t=="t"?"layout":"view";let html5=Buffer.from(fs.readFileSync(`${__dirname}`+path.sep+`files`+path.sep+file).toString().split("["+ident+"Name]").join(ucwords(n)));var filePath=`${process.cwd()}`+path.sep+`src`+path.sep+dir+path.sep+`${n}.${ext}`;if(fs.existsSync(filePath)){console.log(ident+" already exists:",filePath)}else{fs.writeFileSync(filePath,html5)}}}function getAllFiles(dirPath,arrayOfFiles={},mini=false,hst2=true){files=fs.readdirSync(dirPath);files.forEach(function(file){if(fs.statSync(dirPath+path.sep+file).isDirectory()){arrayOfFiles=getAllFiles(dirPath+path.sep+file,arrayOfFiles,mini,hst2)}else{let filePath=path.join(dirPath,path.sep,file);let fileKey=Buffer.from(filePath.split(`${process.cwd()}`+path.sep).join("").split("\\").join("/")).toString("base64");if(mini){var result=_min(fs.readFileSync(filePath,{encoding:"utf8"}),{removeAttributeQuotes:false,caseSensitive:true,collapseWhitespace:true,collapseInlineTagWhitespace:true,conservativeCollapse:true,removeComments:true,minifyJS:false,minifyCSS:false,processConditionalComments:true,collapseBooleanAttributes:false,decodeEntities:false,html5:true,includeAutoGeneratedTags:true,keepClosingSlash:true,maxLineLength:null,minifyURLs:false,preserveLineBreaks:false,preventAttributesEscaping:false,processScripts:["text/html"],quoteCharacter:"",removeEmptyAttributes:true,removeEmptyElements:false,removeOptionalTags:true,removeRedundantAttributes:true,removeScriptTypeAttributes:false,removeStyleLinkTypeAttributes:true,removeTagWhitespace:false,sortAttributes:false,sortClassName:false,trimCustomFragments:true,useShortDoctype:true,continueOnParseError:true})}else if(hst2){var result=_hst(fs.readFileSync(filePath,{encoding:"utf8"}))}else{var result=fs.readFileSync(filePath,{encoding:"utf8"})}arrayOfFiles[fileKey]=result}});return arrayOfFiles}const RESERVED_BARE_ATTRS=new Set(["body","view","scoped","tpl","sl","color","time","date","datetime","up","stop","confirm","econfirm","acl","rcl","hidden","disabled","readonly","required","checked","selected","autofocus","multiple","async","defer"]);function _collectWidgetRegions(nodes,found){if(!Array.isArray(nodes))return;for(const node of nodes){if(node&&node.type==="tag"&&node.attrs){for(const attrName in node.attrs){if(Object.prototype.hasOwnProperty.call(node.attrs,attrName)&&node.attrs[attrName]===""&&!RESERVED_BARE_ATTRS.has(attrName)&&!found.includes(attrName)){found.push(attrName)}}}if(node&&Array.isArray(node.children)){_collectWidgetRegions(node.children,found)}}}function annotateLayoutRegions(layoutsObj){for(const key in layoutsObj){if(!Object.prototype.hasOwnProperty.call(layoutsObj,key))continue;let entry=layoutsObj[key];if(!entry||!entry.hst)continue;let found=[];_collectWidgetRegions(entry.hst,found);entry.regions=found}return layoutsObj}exports.annotateLayoutRegions=annotateLayoutRegions;function validateTplsAreHtmlOnly(tpls){function scan(nodes,fileKey){if(!Array.isArray(nodes))return;for(const node of nodes){if(!node)continue;if(node.type==="tag"&&node.name){let n=node.name.toLowerCase();if(n==="script"||n==="js"||n==="style"){let name=Buffer.from(fileKey,"base64").toString("utf8");throw new Error('tpls/*.tpl files are HTML-only \u2014 "'+name+'" has a <'+node.name+"> block. Templates render inside whatever scope they're used from (a :for item's own), not an isolated one, so they can't carry their own script/style. Use a view= subview instead if this needs its own state or styling.")}}if(node.children)scan(node.children,fileKey)}}for(const fileKey in tpls){if(Object.prototype.hasOwnProperty.call(tpls,fileKey)){scan(tpls[fileKey].hst,fileKey)}}}class hst{htmlVoidElements=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"];moustachePattern=/\{\s*\{\s*([\s\S]*?)\s*\}\s*\}/g;attrRE=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;tagRE=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g;whitespaceRE=/^\s*$/;empty=Object.create(null);reactiveVariables=[];constructor(html){let hst2=this.parse(html);this.reactiveVariables=this.reactiveVariables.filter((value,index,self)=>{return self.indexOf(value)===index});return{hst:hst2,"reactiveVars":this.reactiveVariables}}keepOneSpace(_t){_t=_t.replace(/\s\s/gm," ");if(/\s\s/gm.test(_t))return this.keepOneSpace(_t);return _t}_clean(_t){_t=_t.replace(/(\r?\n|\r)/gm,"");_t=_t.replace(/(\t)/gm,"");_t=this.keepOneSpace(_t);return _t.replace(/^(?:\s*\t*\r*\n*\{*)+|(?:\s*\t*\r*\n*\})+$/g,"").trim()}processAttr(n,v,res){}processForXAttr(val){let forX={"js":"","as":{"k":"","v":""},"dx":""};var val=val.trim();if(val.indexOf(";")>-1){let zxx=val.split(";");forX["dx"]=zxx[1].trim();val=zxx[0].trim()}if(val.indexOf(" as ")>-1){let arr2=val.split(" as ");let kv=[];let arr3=arr2[1].split(" ").join("").split(",");if(arr3.length>1){kv=[arr3[0],arr3[1]]}else{kv=[arr3[0]]}if(kv.length){forX["as"]["k"]=kv[0].trim();if(kv.length>1){forX["as"]["v"]=kv[1].trim()}}val=arr2[0].trim()}forX["js"]=val.trim();return forX}parseTag(tag){var res={type:"tag",name:"",isV:false,attrs:{},ax:{},evs:{},ex:{},children:[]};var tagMatch=tag.match(/<\/?([^\s]+?)[/\s>]/);if(tagMatch){res.name=tagMatch[1];res.isV=this.htmlVoidElements.includes(tagMatch[1])||tag.charAt(tag.length-2)==="/"}var reg=new RegExp(this.attrRE);var result=null;for(;;){result=reg.exec(tag);if(result===null){break}if(!result[0].trim()){continue}if(result[1]){var attr=result[1].trim();var arr=[attr,""];if(arr[0]==":else"){res.type="section";res.cond=""}if(attr.indexOf("=")>-1){arr=attr.split("=")}if(arr[0].substring(0,1)=="@"){}else{if(res.name.toLowerCase()=="icon"&&arr[0].indexOf(":")>-1&&arr[0].substr(0,1)!=":"){res.icon=arr[0]}else res.attrs[arr[0]]=arr[1]}reg.lastIndex--}else if(result[2]){let sl=result[3].trim().substring(1,result[3].length-1);if(result[2]==":if"||result[2]==":else-if"||result[2]==":else"){res.type="section";res.cond=sl;if(sl){try{let condAST=acorn.parse(sl,{ecmaVersion:"latest"});let condVars=this.collectVariableUsageFromAST(condAST,{excludeBuiltins:true,extraBuiltins:[]});for(let X=0;X<condVars.length;X++){this.reactiveVariables.push(condVars[X])}}catch(e){}}}else if(result[2]==":for"){res.type="sections";res.content=sl;res.forX=this.processForXAttr(sl);this.reactiveVariables.push(res.forX.js)}if(result[2].substring(0,1)=="@"){let max=this._getMs2(sl);res.evs[result[2]]=max[1];max[0].length?res.ex[result[2]]=max[0]:null}else{let max=this._getMs2(sl);if(res.name.toLowerCase()=="icon"&&result[2].indexOf(":")>-1&&result[2].substr(0,1)!=":"){res.icon=result[2]}else res.attrs[result[2]]=max[1];max[0].length?res.ax[result[2]]=max[0]:null}}}return res}removeComments(str){str=str.replace(/<!--[\s\S]*?(?:-->)/g,"");return str}cleanExpression(expression){let cleaned="";let inSingle=false,inDouble=false,inTemplate=false;let inRegex=false,escapeNext=false;let inBlockComment=false,inLineComment=false;for(let i=0;i<expression.length;i++){let char=expression[i];let next=expression[i+1];if(escapeNext){cleaned+=char;escapeNext=false;continue}if(inBlockComment){if(char==="*"&&next==="/"){inBlockComment=false;i++}continue}if(inLineComment){if(char==="\n"){inLineComment=false}continue}if(!inSingle&&!inDouble&&!inTemplate&&!inRegex){if(char==="/"&&next==="*"){inBlockComment=true;i++;continue}if(char==="/"&&next==="/"){inLineComment=true;i++;continue}}if(!inDouble&&!inTemplate&&!inRegex&&char==="'"&&!inSingle){inSingle=true;cleaned+=char;continue}else if(inSingle&&char==="'"){inSingle=false;cleaned+=char;continue}if(!inSingle&&!inTemplate&&!inRegex&&char==='"'&&!inDouble){inDouble=true;cleaned+=char;continue}else if(inDouble&&char==='"'){inDouble=false;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inRegex&&char==="`"&&!inTemplate){inTemplate=true;cleaned+=char;continue}else if(inTemplate&&char==="`"){inTemplate=false;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inTemplate&&char==="/"&&!inRegex){let prevNonSpace=cleaned.match(/\S$/);if(!prevNonSpace||/[=({[,;:?!+\-*/%&|^~<>]/.test(prevNonSpace[0])){inRegex=true}cleaned+=char;continue}else if(inRegex&&char==="/"&&expression[i-1]!=="\\"){inRegex=false;cleaned+=char;continue}if(char==="\\"&&(inSingle||inDouble||inTemplate||inRegex)){escapeNext=true;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inTemplate&&!inRegex){if(/\s/.test(char)){if(cleaned[cleaned.length-1]!==" "){cleaned+=" "}continue}}cleaned+=char}return cleaned.trim()}_getMs(_t,wbt){let result="";let lastIndex=0;let _m;var _ms=[];let hasError=false;while((_m=this.moustachePattern.exec(_t))!=null){try{let AST=acorn.parse(_m[0],{ecmaVersion:"latest"});hasError=false;let mux=this._clean(_m[0]);if(wbt){if(_t.substring(_m.index-1,1)=="`"){_ms.push(mux);result+=_t.substring(lastIndex,_m.index);result+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}}else{if(_t.substring(_m.index-1,1)!="`"){_ms.push(mux);result+=_t.substring(lastIndex,_m.index);result+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}}}catch(e){hasError=true;result+=_t.substring(lastIndex,_m.index);result+="{{ /*Invalid Javascript Code*/ }}";console.log("Invalid JS",_m[0])}}if(!hasError)result+=_t.substring(lastIndex);return[_ms,result]}_getMs2(_t,wbt){let content="";let lastIndex=0;let _m;var _muxes=[];let hasError=false;while((_m=this.moustachePattern.exec(_t))!=null){try{hasError=false;let mux=this._clean(_m[0]);let JST=acorn.parse(mux,{ecmaVersion:"latest"});let rvs=[];let vss=this.collectVariableUsageFromAST(JST,{excludeBuiltins:true,extraBuiltins:[]});for(let X=0;X<vss.length;X++){rvs.push(vss[X]);this.reactiveVariables.push(vss[X])}rvs=rvs.filter((value,index,self)=>{return self.indexOf(value)===index});_muxes.push({"mus":mux,"jst":JST,"rvs":rvs});content+=_t.substring(lastIndex,_m.index);content+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}catch(e){hasError=true;content+=_t.substring(lastIndex,_m.index);content+="{{ /*Invalid Javascript Code*/ }}";console.log("Invalid JS",_m[0])}}if(!hasError)content+=_t.substring(lastIndex);_muxes=this.setMuxesIndexes(content,_muxes);return[_muxes,content]}setMuxesIndexes(content,_muxes){let muxes=[];let lastIndex=0;let i=0;let _m;while((_m=this.moustachePattern.exec(content))!=null){muxes.push({..._muxes[i],"start":_m.index,"end":_m.index+_m[0].length});lastIndex=_m.index+_m[0].length;i++}return muxes}parse(html,options){if(options===void 0){options={}}options||(options={});options.components||(options.components=this.empty);html=this.removeComments(html);var result=[];var arr=[];var current;var level=-1;var inComponent=false;var inRawText=false;var par=this;if(html.indexOf("<")!==0){var end=html.indexOf("<");let zl=end===-1?html:html.substring(0,end);let mssx=this._getMs2(zl);let textObj={type:"text",content:mssx[1],mss:mssx[0]};result.push(textObj)}html.replace(this.tagRE,async function(tag,index){if(inComponent||inRawText){if(tag!=="</"+current.name+">"){return""}else{inComponent=false;inRawText=false}}var isOpen=tag.charAt(1)!=="/";var start=index+tag.length;var nextChar=html.charAt(start);var parent;if(isOpen){level++;current=par.parseTag(tag);if(current.type==="tag"&&(current.name==="script"||current.name==="style")){inRawText=true}if(current.type==="tag"&¤t.name&&options.components&&options.components[current.name]){current.type="component";inComponent=true}if(!current.isV&&!inComponent&&nextChar&&nextChar!=="<"&&Array.isArray(current.children)){let end2;if(current.name==="script"||current.name==="style"){let closeRe=new RegExp("</\\s*"+current.name+"\\s*>","i");let m=closeRe.exec(html.slice(start));end2=m?start+m.index:html.length}else{end2=html.indexOf("<",start);while(html.charAt(end2+1)==" "){end2=html.indexOf("<",start+(end2+1-start))}}let hl=html.slice(start,end2);let mssx=null;if(current.name!="script")mssx=par._getMs2(hl);let textObj={type:"text",content:current.name=="script"?"":mssx[1],...current.name=="script"?{jst:acorn.parse(hl,{ecmaVersion:"latest"})}:{mss:mssx[0]},tag:current.name};current.children.push(textObj)}if(level===0){result.push(current)}parent=arr[level-1];if(parent&&parent.children){parent.children.push(current)}arr[level]=current}if(!isOpen||current.isV){if(level>-1&&(current.isV||current.name===tag.slice(2,-1))){level--;current=level===-1?result:arr[level]}if(!inComponent&&nextChar!=="<"&&nextChar){parent=level===-1?result:arr[level].children;var _end=html.indexOf("<",start);var content=html.slice(start,_end===-1?void 0:_end);if(par.whitespaceRE.test(content)){content=" "}if(_end>-1&&level+parent.length>=0||content!==" "){if(parent&&Array.isArray(parent)){if(content!==" "){let mssx=par._getMs2(content);let textObj={type:"text",content:mssx[1],mss:mssx[0]};parent.push(textObj)}}}}}});return result}collectVariableUsageFromAST(ast,options={}){const{excludeBuiltins=true,extraBuiltins=[]}=options;const DEFAULT_BUILTINS=new Set(["undefined","NaN","Infinity","null","true","false","Object","Function","Boolean","Symbol","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","Number","BigInt","Math","Date","String","RegExp","Array","Map","Set","WeakMap","WeakSet","Promise","Reflect","Proxy","Intl","JSON","Atomics","SharedArrayBuffer","ArrayBuffer","DataView","WeakRef","FinalizationRegistry","console","window","document","navigator","location","localStorage","sessionStorage","fetch","XMLHttpRequest","setTimeout","clearTimeout","setInterval","clearInterval","requestAnimationFrame","cancelAnimationFrame","process","global","globalThis","require","module","exports","Buffer","parseInt","parseFloat","isFinite","isNaN","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","escape","unescape"]);const builtinSet=new Set([...DEFAULT_BUILTINS,...extraBuiltins]);function createScope(parent=null,isFunction=false){return{parent,isFunction:!!isFunction,names:new Set}}const scopeForNode=new WeakMap;const bindingIdNodes=new WeakSet;const allDeclaredNames=new Set;function markPatternBindings(pattern,scope,kind="var"){if(!pattern)return;switch(pattern.type){case"Identifier":bindingIdNodes.add(pattern);declareInScope(pattern.name,kind,scope);allDeclaredNames.add(pattern.name);break;case"ArrayPattern":for(const el of pattern.elements)if(el)markPatternBindings(el,scope,kind);break;case"ObjectPattern":for(const p of pattern.properties){if(p.type==="Property")markPatternBindings(p.value,scope,kind);else if(p.type==="RestElement")markPatternBindings(p.argument,scope,kind)}break;case"RestElement":markPatternBindings(pattern.argument,scope,kind);break;case"AssignmentPattern":markPatternBindings(pattern.left,scope,kind);break;default:break}}function declareInScope(name,kind,currentScope){if(!name||!currentScope)return;if(kind==="var"||kind==="function"){let s=currentScope;while(s&&!s.isFunction&&s.parent)s=s.parent;s.names.add(name)}else{currentScope.names.add(name)}}function buildScopes(node,currentScope){if(!node||typeof node!=="object")return;switch(node.type){case"Program":{scopeForNode.set(node,currentScope);for(const stmt of node.body)buildScopes(stmt,currentScope);return}case"FunctionDeclaration":{if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"function",currentScope);allDeclaredNames.add(node.id.name)}const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"FunctionExpression":{const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"let",fnScope);allDeclaredNames.add(node.id.name)}for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"ArrowFunctionExpression":{const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"BlockStatement":case"StaticBlock":case"SwitchStatement":{const blockScope=createScope(currentScope,false);scopeForNode.set(node,blockScope);if(node.type==="SwitchStatement"){for(const c of node.cases)buildScopes(c,blockScope)}else{for(const s of node.body)buildScopes(s,blockScope)}return}case"CatchClause":{const catchScope=createScope(currentScope,false);scopeForNode.set(node,catchScope);if(node.param)markPatternBindings(node.param,catchScope,"let");buildScopes(node.body,catchScope);return}case"ForStatement":case"ForInStatement":case"ForOfStatement":{const forScope=createScope(currentScope,false);scopeForNode.set(node,forScope);if(node.init)buildScopes(node.init,forScope);if(node.left)buildScopes(node.left,forScope);if(node.test)buildScopes(node.test,forScope);if(node.update)buildScopes(node.update,forScope);buildScopes(node.body,forScope);return}case"VariableDeclaration":{for(const decl of node.declarations||[]){markPatternBindings(decl.id,currentScope,node.kind||"var");if(decl.init)buildScopes(decl.init,currentScope)}return}case"ClassDeclaration":{if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"let",currentScope);allDeclaredNames.add(node.id.name)}if(node.body)buildScopes(node.body,currentScope);return}case"ImportDeclaration":{for(const spec of node.specifiers||[]){if(spec.local){bindingIdNodes.add(spec.local);declareInScope(spec.local.name,"const",currentScope);allDeclaredNames.add(spec.local.name)}}return}case"ExportNamedDeclaration":case"ExportDefaultDeclaration":case"ExportAllDeclaration":{if(node.declaration)buildScopes(node.declaration,currentScope);return}default:break}for(const key of Object.keys(node)){if(key==="loc"||key==="range")continue;const child=node[key];if(Array.isArray(child)){for(const c of child)if(c&&typeof c==="object")buildScopes(c,currentScope)}else if(child&&typeof child==="object"){buildScopes(child,currentScope)}}}const rootScope=createScope(null,true);scopeForNode.set(ast,rootScope);buildScopes(ast,rootScope);const usageSet=new Set;function isVariableUsageIdentifier(node,parent,propName){if(!parent)return true;if(bindingIdNodes.has(node))return false;if(parent.type==="LabeledStatement"&&propName==="label"||(parent.type==="BreakStatement"||parent.type==="ContinueStatement")&&propName==="label"){return false}if(parent.type==="MemberExpression"&&propName==="property"&&parent.computed===false){return false}if(parent.type==="Property"&&propName==="key"&&parent.computed===false&&!parent.shorthand){return false}if((parent.type==="MethodDefinition"||parent.type==="PropertyDefinition")&&propName==="key"&&parent.computed===false){return false}if(parent.type&&(parent.type.startsWith("Import")||parent.type.startsWith("Export")||parent.type==="MetaProperty")){return false}if((parent.type==="FunctionDeclaration"||parent.type==="FunctionExpression"||parent.type==="ClassDeclaration")&&propName==="id"){return false}if(parent.type==="VariableDeclarator"&&propName==="id"||parent.type==="CatchClause"&&propName==="param"){return false}if((parent.type==="CallExpression"||parent.type==="OptionalCallExpression")&&propName==="callee"){return false}if(parent.type==="NewExpression"&&propName==="callee"){return false}return true}const scopeStack=[rootScope];function collect(node,parent,propName,index){if(!node||typeof node!=="object")return;const nodeScope=scopeForNode.get(node);if(nodeScope)scopeStack.push(nodeScope);if(node.type==="Identifier"){if(isVariableUsageIdentifier(node,parent,propName)){const name=node.name;if(!(excludeBuiltins&&builtinSet.has(name))){usageSet.add(name)}}}for(const key of Object.keys(node)){if(key==="loc"||key==="range")continue;const child=node[key];if(Array.isArray(child)){for(let i=0;i<child.length;i++){const c=child[i];if(c&&typeof c==="object")collect(c,node,key,i)}}else if(child&&typeof child==="object"){collect(child,node,key,null)}}if(nodeScope)scopeStack.pop()}collect(ast,null,null,null);return Array.from(usageSet).sort()}}function _hst(html){return new hst(html)}function copyDir(src,dest,projectName){try{const entries=fs.readdirSync(src,{encoding:"utf8",withFileTypes:true});cd(dest);for(let entry of entries){const srcPath=path.join(src.toString(),entry.name.toString());const destPath=path.join(dest.toString(),entry.name.toString());if(entry.isDirectory()){if(projectName=="_beajsBuild"){if(entry.name!="layouts"&&entry.name!="views"&&entry.name!="css"&&entry.name!="js")copyDir(srcPath,destPath,projectName)}else copyDir(srcPath,destPath,projectName)}else{if(projectName=="_beajsBuild"){if(projectName=="_beajsBuild"&&entry.name!="index.js"&&entry.name!="index.html")fs.copyFileSync(srcPath,destPath)}else{if(!fs.existsSync(destPath)){if(projectName){if(entry.name=="index.html"){let html5=Buffer.from(fs.readFileSync(srcPath).toString().split("[ProjectName]").join(ucwords(projectName)));fs.writeFileSync(destPath,html5)}else if(entry.name=="package.json"){let slug=lw(projectName).replace(/[^a-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"")||"lumenjs-project";let pkgJson=Buffer.from(fs.readFileSync(srcPath).toString().split("[ProjectName]").join(slug));fs.writeFileSync(destPath,pkgJson)}else fs.copyFileSync(srcPath,destPath)}else fs.copyFileSync(srcPath,destPath)}else{console.log("File already exists:",destPath)}}}}}catch(e){console.log(e)}}exports.copyDir=copyDir;function validURL(string){let url;try{url=new URL(string)}catch(_){return false}return url.protocol==="http:"||url.protocol==="https:"}exports.validURL=validURL;let getPairs=(obj,keys=[])=>Object.entries(obj).reduce((pairs,[key,value])=>{if(typeof value==="object")pairs.push(...getPairs(value,[...keys,key]));else pairs.push([[...keys,key],value]);return pairs},[]);function pairIt(obj){return getPairs(obj).map(([[key0,...keysRest],value])=>`${key0}${keysRest.map(a=>`[${a}]`).join("")}=${value}`).join("&")}var API={get:async function(u,d,h,a){return await this.req(u,d,h,"GET",a)},put:async function(u,d,h,a){return await this.req(u,d,h,"PUT",a)},post:async function(u,d,h,a){return await this.req(u,d,h,"POST",a)},delete:async function(u,d,h,a){return await this.req(u,d,h,"DELETE",a)},patch:async function(u,d,h,a){return await this.req(u,d,h,"PATCH",a)},req:async function(u,d,h,m,a,f){var urled=validURL(u)?u:config.apis[a??0].baseURL+u;if(m.toString().toLowerCase()=="get"){if(urled.indexOf("?")>-1)urled=urled+"&"+pairIt(d??{});else urled=urled+"?"+pairIt(d??{})}let resa=await fetch(urled,{method:m.toString().toLowerCase(),body:m.toString().toLowerCase()=="get"?null:JSON.stringify(d??{}),headers:h??config.apis[a??0].headers});if(f)return resa;let res=await resa.text();try{return JSON.parse(res)}catch(e){return res}}};exports.API=API;exports.processCommand=processCommands;exports.startServer=startServer;exports.create=create;function processCommands(cmd){var command=cmd?cmd:process.argv[2];if(command=="run"||command=="serve"){startServer()}else if(command=="create"||command=="update"){let c=process.argv.slice(3,process.argv.length);let t=lw(c[0]);create({type:t[0]=="-"?t.split("-").join(""):t,name:t[0]=="-"?c.slice(1,c.length):c})}else if(command=="purge"){import("ora").then(async({default:ora,oraPromise})=>{const spinner=ora({color:"green"});spinner.start("Purging..");try{const corejsRes=await API.req(CORE_Libs.COREJS,{},void 0,"GET",void 0,true);if(!corejsRes.ok)throw new Error("fetching core JS failed: HTTP "+corejsRes.status);const corejs=await corejsRes.text();if(!corejs||corejs.length<1e3||/^\s*<(!doctype|html)/i.test(corejs)){throw new Error("fetched core JS doesn't look valid ("+(corejs?corejs.length:0)+" bytes, possibly an error page) \u2014 refusing to overwrite the real bundle")}spinner.start("Gathering Resources..");const mobiuscssRes=await API.req(CORE_Libs.BEACSS,{},void 0,"GET",void 0,true);if(!mobiuscssRes.ok)throw new Error("fetching core CSS failed: HTTP "+mobiuscssRes.status);const mobiuscss=await mobiuscssRes.text();if(mobiuscss==null||/^\s*<(!doctype|html)/i.test(mobiuscss)){throw new Error("fetched core CSS doesn't look valid \u2014 refusing to overwrite")}spinner.start("Writing Files...");var filePath=`${process.cwd()}`;var libsPath=`${__dirname}`+path.sep+`files`+path.sep+`libs`;cd(libsPath);fs.writeFileSync(libsPath+path.sep+"lm.js",String(corejs));fs.writeFileSync(libsPath+path.sep+"mobius.css",String(mobiuscss));fs.writeFileSync(filePath+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss));spinner.succeed("Successfully Purged!")}catch(err){spinner.fail("Purge Failed! "+(err&&err.message?err.message:""))}})}else if(command=="build"){let cmds=process.argv;_bp(cmds)}else if(command=="login"){_vault.login()}else if(command=="api"){let sub=process.argv[3];let name=process.argv[4];if(sub=="set")_vault.apiSet(name);else if(sub=="update")_vault.apiUpdate(name);else if(sub=="get")_vault.apiGet(name);else if(sub=="list")_vault.apiList();else if(sub=="remove")_vault.apiRemove(name);else console.log("Usage: lm api <set|get|update|list|remove> [name]")}else if(command=="-v"||command=="-version"){let _pkgJsonPath=fs.existsSync(path.join(__dirname,"..","..","package.json"))?path.join(__dirname,"..","..","package.json"):path.join(__dirname,"..","package.json");console.log("LumenJS version "+require(_pkgJsonPath).version)}else{console.log("LumenJS CLI's command not found!")}}async function _bp(cmds){import("ora").then(async({default:ora,oraPromise})=>{const spinner=ora({color:"green"});spinner.succeed("Started Building Project For Production").start("Gathering Required Resources..");var projectPath=`${process.cwd()}`;var dest=projectPath+path.sep+"dist";let _views=getAllFiles(`${process.cwd()}`+path.sep+`src`+path.sep+`views`+path.sep,{},false,true);let _layoutsDir=`${process.cwd()}`+path.sep+`src`+path.sep+`layouts`+path.sep;let _layouts=fs.existsSync(_layoutsDir)?annotateLayoutRegions(getAllFiles(_layoutsDir,{},false,true)):{};let _tplsDir=`${process.cwd()}`+path.sep+`src`+path.sep+`tpls`+path.sep;let _tpls=fs.existsSync(_tplsDir)?getAllFiles(_tplsDir,{},false,true):{};validateTplsAreHtmlOnly(_tpls);var indexCode=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"index.html","utf8");var beaCSSCode=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"css"+path.sep+"mobius.css","utf8");var indexJs=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"index.js","utf8");let _hasOwnDeps=_npmBundle.hasOwnDependencies(projectPath);let _localScriptSrcs=detectLocalProjectScripts(String(indexCode));let _compiledScripts="";for(const src of _localScriptSrcs){let scriptPath=projectPath+path.sep+"src"+path.sep+src.split("/").join(path.sep).replace(/^\\|^\//,"");try{let raw=_hasOwnDeps?_npmBundle.buildEntryWithImports(scriptPath,projectPath):fs.readFileSync(scriptPath,"utf8");_compiledScripts+="\n"+compileProjectScript(raw,src);indexCode=indexCode.split(new RegExp(`<script\\b[^>]*\\bsrc\\s*=\\s*["']`+src.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+`["'][^>]*>\\s*<\\/script>`,"i")).join("")}catch(e){}}let vt=`
|
|
1
|
+
const fetch=require("node-fetch");const path=require("path");const fs=require("fs");const nodemon=require("nodemon");var _acorn=require("acorn");var acorn=require("acorn-loose");var _min=require("html-minifier").minify;const _FD=require("ftp-deploy");const _fD=new _FD;global.astring=global.astring||require("astring");const _corePackageDir=path.dirname(require.resolve("@lmjs/core/package.json"));const _walk=require(path.join(_corePackageDir,"src","walk.js"));const _npmBundle=require(path.join(__dirname,"npm-bundle.js"));exports.hasOwnDependencies=_npmBundle.hasOwnDependencies;exports.buildEntryWithImports=_npmBundle.buildEntryWithImports;const _pluginsBundle=require(path.join(__dirname,"plugins-esbuild-plugin.js"));const _vault=require(path.join(__dirname,"vault.js"));exports.login=_vault.login;exports.apiSet=_vault.apiSet;exports.apiUpdate=_vault.apiUpdate;exports.apiGet=_vault.apiGet;exports.apiList=_vault.apiList;exports.apiRemove=_vault.apiRemove;function selectedProjectPlugins(projectRoot){try{const pkgPath=path.join(projectRoot,"package.json");if(!fs.existsSync(pkgPath))return[];const pkg=JSON.parse(fs.readFileSync(pkgPath,"utf8"));if(!pkg.dependencies)return[];return _pluginsBundle.selectedRegistryEntries(pkg.dependencies)}catch(e){return[]}}exports.selectedProjectPlugins=selectedProjectPlugins;function compileProjectScript(source,name){let ast=_acorn.parse(source,{ecmaVersion:"latest",sourceType:"script"});let topLevelNames=[];for(const stmt of ast.body){if(stmt.type==="VariableDeclaration"){for(const d of stmt.declarations){if(d.id&&d.id.type==="Identifier")topLevelNames.push(d.id.name)}}}return _walk.getWatcher(ast,{name:name||"script"},topLevelNames,"Global").code}exports.compileProjectScript=compileProjectScript;function detectLocalProjectScripts(indexHtmlSource){let found=[];let re=/<script\b[^>]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/gi;let m;while(m=re.exec(indexHtmlSource)){let src=m[1];if(src.indexOf("/")!==0)continue;if(src==="/js/lm.js"||src==="/index.js")continue;found.push(src)}return found}exports.detectLocalProjectScripts=detectLocalProjectScripts;const CORE_Libs={BEACSS:"https://s.beacdn.com/beacss/latest",COREJS:"https://lmjs.beacdn.com/latest"};const HST_FORMAT_VERSION=1;exports.HST_FORMAT_VERSION=HST_FORMAT_VERSION;exports.getAllFiles=getAllFiles;exports.validateTplsAreHtmlOnly=validateTplsAreHtmlOnly;exports.ucwords=ucwords;exports.fetch=fetch;exports.getConfig=getConfig;function getConfig(){config={version:"1.0.0.1",server:{host:"127.0.0.1",port:"3000",ssl:{enabled:false,key:"/key.pem",cert:"/certificate.cer"}},apis:[{baseURL:"https://www.beaapis.com/1",headers:{"X-BEA-Application-ID":"YOUR_APPLICATION_ID","X-BEA-Authorization":"YOUR_REST_API_KEY"}}],ftp:{host:"ftp_host",username:"ftp_username",password:"ftp_password",remotePath:"/",concurrency:4,protocol:"ftp",port:21,ignore:[],syncOption:{delete:false,ignoreExisting:false,skipCreate:false,update:true},connectTimeout:3e4}};let configPath=process.cwd()+path.sep+`config.json`;if(fs.existsSync(configPath)){config=JSON.parse(fs.readFileSync(configPath,{encoding:"utf8"}))}return config}var config=getConfig();function ucwords(str){return(str+"").replace(/^([a-z])|\s+([a-z])/g,function($1){return $1.toUpperCase()})}function lw(s){return s.toString().toLowerCase()}exports.lw=lw;function cd(d){if(!fs.existsSync(d))fs.mkdirSync(d)}exports.cd=cd;function rd(d){if(fs.existsSync(d))fs.rmSync(d,{recursive:true,force:true})}exports.rd=rd;function create(conf){let t=conf.type=="v"||conf.type=="s"||conf.type=="t"?conf.type:"p";let n=conf.type=="v"||conf.type=="s"||conf.type=="t"?lw(conf.name[0]):conf.name.join(" ");if(t=="p"){var libsPath=`${__dirname}`+path.sep+`files`+path.sep+`libs`;var getLibs=false;var _beacssMissing=false;var _lmMissing=false;require("dns").resolve("www.google.com",function(err){if(!err){var _mobiuscssPath=libsPath+path.sep+"mobius.css";_beacssMissing=!fs.existsSync(_mobiuscssPath)||fs.statSync(_mobiuscssPath).size===0;_lmMissing=!fs.existsSync(libsPath+path.sep+"lm.js");if(_lmMissing||_beacssMissing)getLibs=true}if(getLibs){API.get(CORE_Libs.COREJS,{}).then(corejs=>{API.get(CORE_Libs.BEACSS,{}).then(mobiuscss=>{var libsPath2=`${__dirname}`+path.sep+`files`+path.sep+`libs`;cd(libsPath2);if(_lmMissing){fs.writeFileSync(libsPath2+path.sep+"lm.js",String(corejs))}if(_beacssMissing){fs.writeFileSync(libsPath2+path.sep+"mobius.css",String(mobiuscss))}var filePath3=`${process.cwd()}`+path.sep;copyDir(`${__dirname}`+path.sep+`files`+path.sep+`project`,filePath3,n);cd(filePath3+path.sep+"src");cd(filePath3+path.sep+"src"+path.sep+"css");cd(filePath3+path.sep+"src"+path.sep+"images");cd(filePath3+path.sep+"src"+path.sep+"js");let stylesFile=filePath3+path.sep+"src"+path.sep+"css"+path.sep+`styles.css`;let faviconFile=filePath3+path.sep+"src"+path.sep+`favicon.ico`;if(!fs.existsSync(stylesFile))fs.writeFileSync(stylesFile,String(""));if(!fs.existsSync(faviconFile))fs.writeFileSync(faviconFile,String(""));fs.writeFileSync(filePath3+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath3+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss))})}).catch(err2=>{})}else{var filePath2=`${process.cwd()}`+path.sep;copyDir(`${__dirname}`+path.sep+`files`+path.sep+`project`,filePath2,n);cd(filePath2+path.sep+"src");cd(filePath2+path.sep+"src"+path.sep+"css");cd(filePath2+path.sep+"src"+path.sep+"images");cd(filePath2+path.sep+"src"+path.sep+"js");let stylesFile=filePath2+path.sep+"src"+path.sep+"css"+path.sep+`styles.css`;let faviconFile=filePath2+path.sep+"src"+path.sep+`favicon.ico`;if(!fs.existsSync(stylesFile))fs.writeFileSync(stylesFile,String(""));if(!fs.existsSync(faviconFile))fs.writeFileSync(faviconFile,String(""));let corejs=Buffer.from(fs.readFileSync(libsPath+path.sep+"lm.js").toString());let mobiuscss=Buffer.from(fs.readFileSync(libsPath+path.sep+"mobius.css").toString());fs.writeFileSync(filePath2+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath2+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss))}})}else{let file=t=="s"?"sub_view.view":t=="t"?"layout.layout":"view.view";let ident=t=="s"?"SubView":t=="t"?"Template":"View";let dir=t=="t"?"layouts":"views";let ext=t=="t"?"layout":"view";let html5=Buffer.from(fs.readFileSync(`${__dirname}`+path.sep+`files`+path.sep+file).toString().split("["+ident+"Name]").join(ucwords(n)));var filePath=`${process.cwd()}`+path.sep+`src`+path.sep+dir+path.sep+`${n}.${ext}`;if(fs.existsSync(filePath)){console.log(ident+" already exists:",filePath)}else{fs.writeFileSync(filePath,html5)}}}function getAllFiles(dirPath,arrayOfFiles={},mini=false,hst2=true){files=fs.readdirSync(dirPath);files.forEach(function(file){if(fs.statSync(dirPath+path.sep+file).isDirectory()){arrayOfFiles=getAllFiles(dirPath+path.sep+file,arrayOfFiles,mini,hst2)}else{let filePath=path.join(dirPath,path.sep,file);let fileKey=Buffer.from(filePath.split(`${process.cwd()}`+path.sep).join("").split("\\").join("/")).toString("base64");if(mini){var result=_min(fs.readFileSync(filePath,{encoding:"utf8"}),{removeAttributeQuotes:false,caseSensitive:true,collapseWhitespace:true,collapseInlineTagWhitespace:true,conservativeCollapse:true,removeComments:true,minifyJS:false,minifyCSS:false,processConditionalComments:true,collapseBooleanAttributes:false,decodeEntities:false,html5:true,includeAutoGeneratedTags:true,keepClosingSlash:true,maxLineLength:null,minifyURLs:false,preserveLineBreaks:false,preventAttributesEscaping:false,processScripts:["text/html"],quoteCharacter:"",removeEmptyAttributes:true,removeEmptyElements:false,removeOptionalTags:true,removeRedundantAttributes:true,removeScriptTypeAttributes:false,removeStyleLinkTypeAttributes:true,removeTagWhitespace:false,sortAttributes:false,sortClassName:false,trimCustomFragments:true,useShortDoctype:true,continueOnParseError:true})}else if(hst2){var result=_hst(fs.readFileSync(filePath,{encoding:"utf8"}))}else{var result=fs.readFileSync(filePath,{encoding:"utf8"})}arrayOfFiles[fileKey]=result}});return arrayOfFiles}const RESERVED_BARE_ATTRS=new Set(["body","view","scoped","tpl","sl","color","time","date","datetime","up","stop","confirm","econfirm","acl","rcl","hidden","disabled","readonly","required","checked","selected","autofocus","multiple","async","defer"]);function _collectWidgetRegions(nodes,found){if(!Array.isArray(nodes))return;for(const node of nodes){if(node&&node.type==="tag"&&node.attrs){for(const attrName in node.attrs){if(Object.prototype.hasOwnProperty.call(node.attrs,attrName)&&node.attrs[attrName]===""&&!RESERVED_BARE_ATTRS.has(attrName)&&!found.includes(attrName)){found.push(attrName)}}}if(node&&Array.isArray(node.children)){_collectWidgetRegions(node.children,found)}}}function annotateLayoutRegions(layoutsObj){for(const key in layoutsObj){if(!Object.prototype.hasOwnProperty.call(layoutsObj,key))continue;let entry=layoutsObj[key];if(!entry||!entry.hst)continue;let found=[];_collectWidgetRegions(entry.hst,found);entry.regions=found}return layoutsObj}exports.annotateLayoutRegions=annotateLayoutRegions;function validateTplsAreHtmlOnly(tpls){function scan(nodes,fileKey){if(!Array.isArray(nodes))return;for(const node of nodes){if(!node)continue;if(node.type==="tag"&&node.name){let n=node.name.toLowerCase();if(n==="script"||n==="js"||n==="style"){let name=Buffer.from(fileKey,"base64").toString("utf8");throw new Error('tpls/*.tpl files are HTML-only \u2014 "'+name+'" has a <'+node.name+"> block. Templates render inside whatever scope they're used from (a :for item's own), not an isolated one, so they can't carry their own script/style. Use a view= subview instead if this needs its own state or styling.")}}if(node.children)scan(node.children,fileKey)}}for(const fileKey in tpls){if(Object.prototype.hasOwnProperty.call(tpls,fileKey)){scan(tpls[fileKey].hst,fileKey)}}}class hst{htmlVoidElements=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"];moustachePattern=/\{\s*\{\s*([\s\S]*?)\s*\}\s*\}/g;attrRE=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;tagRE=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g;whitespaceRE=/^\s*$/;empty=Object.create(null);reactiveVariables=[];constructor(html){let hst2=this.parse(html);this.reactiveVariables=this.reactiveVariables.filter((value,index,self)=>{return self.indexOf(value)===index});return{hst:hst2,"reactiveVars":this.reactiveVariables}}keepOneSpace(_t){_t=_t.replace(/\s\s/gm," ");if(/\s\s/gm.test(_t))return this.keepOneSpace(_t);return _t}_clean(_t){_t=_t.replace(/(\r?\n|\r)/gm,"");_t=_t.replace(/(\t)/gm,"");_t=this.keepOneSpace(_t);return _t.replace(/^(?:\s*\t*\r*\n*\{*)+|(?:\s*\t*\r*\n*\})+$/g,"").trim()}processAttr(n,v,res){}processForXAttr(val){let forX={"js":"","as":{"k":"","v":""},"dx":""};var val=val.trim();if(val.indexOf(";")>-1){let zxx=val.split(";");forX["dx"]=zxx[1].trim();val=zxx[0].trim()}if(val.indexOf(" as ")>-1){let arr2=val.split(" as ");let kv=[];let arr3=arr2[1].split(" ").join("").split(",");if(arr3.length>1){kv=[arr3[0],arr3[1]]}else{kv=[arr3[0]]}if(kv.length){forX["as"]["k"]=kv[0].trim();if(kv.length>1){forX["as"]["v"]=kv[1].trim()}}val=arr2[0].trim()}forX["js"]=val.trim();return forX}parseTag(tag){var res={type:"tag",name:"",isV:false,attrs:{},ax:{},evs:{},ex:{},children:[]};var tagMatch=tag.match(/<\/?([^\s]+?)[/\s>]/);if(tagMatch){res.name=tagMatch[1];res.isV=this.htmlVoidElements.includes(tagMatch[1])||tag.charAt(tag.length-2)==="/"}var reg=new RegExp(this.attrRE);var result=null;for(;;){result=reg.exec(tag);if(result===null){break}if(!result[0].trim()){continue}if(result[1]){var attr=result[1].trim();var arr=[attr,""];if(arr[0]==":else"){res.type="section";res.cond=""}if(attr.indexOf("=")>-1){arr=attr.split("=")}if(arr[0].substring(0,1)=="@"){}else{if(res.name.toLowerCase()=="icon"&&arr[0].indexOf(":")>-1&&arr[0].substr(0,1)!=":"){res.icon=arr[0]}else res.attrs[arr[0]]=arr[1]}reg.lastIndex--}else if(result[2]){let sl=result[3].trim().substring(1,result[3].length-1);if(result[2]==":if"||result[2]==":else-if"||result[2]==":else"){res.type="section";res.cond=sl;if(sl){try{let condAST=acorn.parse(sl,{ecmaVersion:"latest"});let condVars=this.collectVariableUsageFromAST(condAST,{excludeBuiltins:true,extraBuiltins:[]});for(let X=0;X<condVars.length;X++){this.reactiveVariables.push(condVars[X])}}catch(e){}}}else if(result[2]==":for"){res.type="sections";res.content=sl;res.forX=this.processForXAttr(sl);if(res.forX.js){try{let forAST=acorn.parse(res.forX.js,{ecmaVersion:"latest"});let forVars=this.collectVariableUsageFromAST(forAST,{excludeBuiltins:true,extraBuiltins:[]});for(let X=0;X<forVars.length;X++){this.reactiveVariables.push(forVars[X])}}catch(e){}}}if(result[2].substring(0,1)=="@"){let max=this._getMs2(sl);res.evs[result[2]]=max[1];max[0].length?res.ex[result[2]]=max[0]:null}else{let max=this._getMs2(sl);if(res.name.toLowerCase()=="icon"&&result[2].indexOf(":")>-1&&result[2].substr(0,1)!=":"){res.icon=result[2]}else res.attrs[result[2]]=max[1];max[0].length?res.ax[result[2]]=max[0]:null}}}return res}removeComments(str){str=str.replace(/<!--[\s\S]*?(?:-->)/g,"");return str}cleanExpression(expression){let cleaned="";let inSingle=false,inDouble=false,inTemplate=false;let inRegex=false,escapeNext=false;let inBlockComment=false,inLineComment=false;for(let i=0;i<expression.length;i++){let char=expression[i];let next=expression[i+1];if(escapeNext){cleaned+=char;escapeNext=false;continue}if(inBlockComment){if(char==="*"&&next==="/"){inBlockComment=false;i++}continue}if(inLineComment){if(char==="\n"){inLineComment=false}continue}if(!inSingle&&!inDouble&&!inTemplate&&!inRegex){if(char==="/"&&next==="*"){inBlockComment=true;i++;continue}if(char==="/"&&next==="/"){inLineComment=true;i++;continue}}if(!inDouble&&!inTemplate&&!inRegex&&char==="'"&&!inSingle){inSingle=true;cleaned+=char;continue}else if(inSingle&&char==="'"){inSingle=false;cleaned+=char;continue}if(!inSingle&&!inTemplate&&!inRegex&&char==='"'&&!inDouble){inDouble=true;cleaned+=char;continue}else if(inDouble&&char==='"'){inDouble=false;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inRegex&&char==="`"&&!inTemplate){inTemplate=true;cleaned+=char;continue}else if(inTemplate&&char==="`"){inTemplate=false;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inTemplate&&char==="/"&&!inRegex){let prevNonSpace=cleaned.match(/\S$/);if(!prevNonSpace||/[=({[,;:?!+\-*/%&|^~<>]/.test(prevNonSpace[0])){inRegex=true}cleaned+=char;continue}else if(inRegex&&char==="/"&&expression[i-1]!=="\\"){inRegex=false;cleaned+=char;continue}if(char==="\\"&&(inSingle||inDouble||inTemplate||inRegex)){escapeNext=true;cleaned+=char;continue}if(!inSingle&&!inDouble&&!inTemplate&&!inRegex){if(/\s/.test(char)){if(cleaned[cleaned.length-1]!==" "){cleaned+=" "}continue}}cleaned+=char}return cleaned.trim()}_getMs(_t,wbt){let result="";let lastIndex=0;let _m;var _ms=[];let hasError=false;while((_m=this.moustachePattern.exec(_t))!=null){try{let AST=acorn.parse(_m[0],{ecmaVersion:"latest"});hasError=false;let mux=this._clean(_m[0]);if(wbt){if(_t.substring(_m.index-1,1)=="`"){_ms.push(mux);result+=_t.substring(lastIndex,_m.index);result+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}}else{if(_t.substring(_m.index-1,1)!="`"){_ms.push(mux);result+=_t.substring(lastIndex,_m.index);result+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}}}catch(e){hasError=true;result+=_t.substring(lastIndex,_m.index);result+="{{ /*Invalid Javascript Code*/ }}";console.log("Invalid JS",_m[0])}}if(!hasError)result+=_t.substring(lastIndex);return[_ms,result]}_getMs2(_t,wbt){let content="";let lastIndex=0;let _m;var _muxes=[];let hasError=false;while((_m=this.moustachePattern.exec(_t))!=null){try{hasError=false;let mux=this._clean(_m[0]);let JST=acorn.parse(mux,{ecmaVersion:"latest"});let rvs=[];let vss=this.collectVariableUsageFromAST(JST,{excludeBuiltins:true,extraBuiltins:[]});for(let X=0;X<vss.length;X++){rvs.push(vss[X]);this.reactiveVariables.push(vss[X])}rvs=rvs.filter((value,index,self)=>{return self.indexOf(value)===index});_muxes.push({"mus":mux,"jst":JST,"rvs":rvs});content+=_t.substring(lastIndex,_m.index);content+="{{"+mux+"}}";lastIndex=_m.index+_m[0].length}catch(e){hasError=true;content+=_t.substring(lastIndex,_m.index);content+="{{ /*Invalid Javascript Code*/ }}";console.log("Invalid JS",_m[0])}}if(!hasError)content+=_t.substring(lastIndex);_muxes=this.setMuxesIndexes(content,_muxes);return[_muxes,content]}setMuxesIndexes(content,_muxes){let muxes=[];let lastIndex=0;let i=0;let _m;while((_m=this.moustachePattern.exec(content))!=null){muxes.push({..._muxes[i],"start":_m.index,"end":_m.index+_m[0].length});lastIndex=_m.index+_m[0].length;i++}return muxes}parse(html,options){if(options===void 0){options={}}options||(options={});options.components||(options.components=this.empty);html=this.removeComments(html);var result=[];var arr=[];var current;var level=-1;var inComponent=false;var inRawText=false;var par=this;if(html.indexOf("<")!==0){var end=html.indexOf("<");let zl=end===-1?html:html.substring(0,end);let mssx=this._getMs2(zl);let textObj={type:"text",content:mssx[1],mss:mssx[0]};result.push(textObj)}html.replace(this.tagRE,async function(tag,index){if(inComponent||inRawText){if(tag!=="</"+current.name+">"){return""}else{inComponent=false;inRawText=false}}var isOpen=tag.charAt(1)!=="/";var start=index+tag.length;var nextChar=html.charAt(start);var parent;if(isOpen){level++;current=par.parseTag(tag);if(current.type==="tag"&&(current.name==="script"||current.name==="style")){inRawText=true}if(current.type==="tag"&¤t.name&&options.components&&options.components[current.name]){current.type="component";inComponent=true}if(!current.isV&&!inComponent&&nextChar&&nextChar!=="<"&&Array.isArray(current.children)){let end2;if(current.name==="script"||current.name==="style"){let closeRe=new RegExp("</\\s*"+current.name+"\\s*>","i");let m=closeRe.exec(html.slice(start));end2=m?start+m.index:html.length}else{end2=html.indexOf("<",start);while(html.charAt(end2+1)==" "){end2=html.indexOf("<",start+(end2+1-start))}}let hl=html.slice(start,end2);let mssx=null;if(current.name!="script")mssx=par._getMs2(hl);let textObj={type:"text",content:current.name=="script"?"":mssx[1],...current.name=="script"?{jst:acorn.parse(hl,{ecmaVersion:"latest"})}:{mss:mssx[0]},tag:current.name};current.children.push(textObj)}if(level===0){result.push(current)}parent=arr[level-1];if(parent&&parent.children){parent.children.push(current)}arr[level]=current}if(!isOpen||current.isV){if(level>-1&&(current.isV||current.name===tag.slice(2,-1))){level--;current=level===-1?result:arr[level]}if(!inComponent&&nextChar!=="<"&&nextChar){parent=level===-1?result:arr[level].children;var _end=html.indexOf("<",start);var content=html.slice(start,_end===-1?void 0:_end);if(par.whitespaceRE.test(content)){content=" "}if(_end>-1&&level+parent.length>=0||content!==" "){if(parent&&Array.isArray(parent)){if(content!==" "){let mssx=par._getMs2(content);let textObj={type:"text",content:mssx[1],mss:mssx[0]};parent.push(textObj)}}}}}});return result}collectVariableUsageFromAST(ast,options={}){const{excludeBuiltins=true,extraBuiltins=[]}=options;const DEFAULT_BUILTINS=new Set(["undefined","NaN","Infinity","null","true","false","Object","Function","Boolean","Symbol","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","Number","BigInt","Math","Date","String","RegExp","Array","Map","Set","WeakMap","WeakSet","Promise","Reflect","Proxy","Intl","JSON","Atomics","SharedArrayBuffer","ArrayBuffer","DataView","WeakRef","FinalizationRegistry","console","window","document","navigator","location","localStorage","sessionStorage","fetch","XMLHttpRequest","setTimeout","clearTimeout","setInterval","clearInterval","requestAnimationFrame","cancelAnimationFrame","process","global","globalThis","require","module","exports","Buffer","parseInt","parseFloat","isFinite","isNaN","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","escape","unescape"]);const builtinSet=new Set([...DEFAULT_BUILTINS,...extraBuiltins]);function createScope(parent=null,isFunction=false){return{parent,isFunction:!!isFunction,names:new Set}}const scopeForNode=new WeakMap;const bindingIdNodes=new WeakSet;const allDeclaredNames=new Set;function markPatternBindings(pattern,scope,kind="var"){if(!pattern)return;switch(pattern.type){case"Identifier":bindingIdNodes.add(pattern);declareInScope(pattern.name,kind,scope);allDeclaredNames.add(pattern.name);break;case"ArrayPattern":for(const el of pattern.elements)if(el)markPatternBindings(el,scope,kind);break;case"ObjectPattern":for(const p of pattern.properties){if(p.type==="Property")markPatternBindings(p.value,scope,kind);else if(p.type==="RestElement")markPatternBindings(p.argument,scope,kind)}break;case"RestElement":markPatternBindings(pattern.argument,scope,kind);break;case"AssignmentPattern":markPatternBindings(pattern.left,scope,kind);break;default:break}}function declareInScope(name,kind,currentScope){if(!name||!currentScope)return;if(kind==="var"||kind==="function"){let s=currentScope;while(s&&!s.isFunction&&s.parent)s=s.parent;s.names.add(name)}else{currentScope.names.add(name)}}function buildScopes(node,currentScope){if(!node||typeof node!=="object")return;switch(node.type){case"Program":{scopeForNode.set(node,currentScope);for(const stmt of node.body)buildScopes(stmt,currentScope);return}case"FunctionDeclaration":{if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"function",currentScope);allDeclaredNames.add(node.id.name)}const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"FunctionExpression":{const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"let",fnScope);allDeclaredNames.add(node.id.name)}for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"ArrowFunctionExpression":{const fnScope=createScope(currentScope,true);scopeForNode.set(node,fnScope);for(const p of node.params)markPatternBindings(p,fnScope,"param");buildScopes(node.body,fnScope);return}case"BlockStatement":case"StaticBlock":case"SwitchStatement":{const blockScope=createScope(currentScope,false);scopeForNode.set(node,blockScope);if(node.type==="SwitchStatement"){for(const c of node.cases)buildScopes(c,blockScope)}else{for(const s of node.body)buildScopes(s,blockScope)}return}case"CatchClause":{const catchScope=createScope(currentScope,false);scopeForNode.set(node,catchScope);if(node.param)markPatternBindings(node.param,catchScope,"let");buildScopes(node.body,catchScope);return}case"ForStatement":case"ForInStatement":case"ForOfStatement":{const forScope=createScope(currentScope,false);scopeForNode.set(node,forScope);if(node.init)buildScopes(node.init,forScope);if(node.left)buildScopes(node.left,forScope);if(node.test)buildScopes(node.test,forScope);if(node.update)buildScopes(node.update,forScope);buildScopes(node.body,forScope);return}case"VariableDeclaration":{for(const decl of node.declarations||[]){markPatternBindings(decl.id,currentScope,node.kind||"var");if(decl.init)buildScopes(decl.init,currentScope)}return}case"ClassDeclaration":{if(node.id){bindingIdNodes.add(node.id);declareInScope(node.id.name,"let",currentScope);allDeclaredNames.add(node.id.name)}if(node.body)buildScopes(node.body,currentScope);return}case"ImportDeclaration":{for(const spec of node.specifiers||[]){if(spec.local){bindingIdNodes.add(spec.local);declareInScope(spec.local.name,"const",currentScope);allDeclaredNames.add(spec.local.name)}}return}case"ExportNamedDeclaration":case"ExportDefaultDeclaration":case"ExportAllDeclaration":{if(node.declaration)buildScopes(node.declaration,currentScope);return}default:break}for(const key of Object.keys(node)){if(key==="loc"||key==="range")continue;const child=node[key];if(Array.isArray(child)){for(const c of child)if(c&&typeof c==="object")buildScopes(c,currentScope)}else if(child&&typeof child==="object"){buildScopes(child,currentScope)}}}const rootScope=createScope(null,true);scopeForNode.set(ast,rootScope);buildScopes(ast,rootScope);const usageSet=new Set;function isVariableUsageIdentifier(node,parent,propName){if(!parent)return true;if(bindingIdNodes.has(node))return false;if(parent.type==="LabeledStatement"&&propName==="label"||(parent.type==="BreakStatement"||parent.type==="ContinueStatement")&&propName==="label"){return false}if(parent.type==="MemberExpression"&&propName==="property"&&parent.computed===false){return false}if(parent.type==="Property"&&propName==="key"&&parent.computed===false&&!parent.shorthand){return false}if((parent.type==="MethodDefinition"||parent.type==="PropertyDefinition")&&propName==="key"&&parent.computed===false){return false}if(parent.type&&(parent.type.startsWith("Import")||parent.type.startsWith("Export")||parent.type==="MetaProperty")){return false}if((parent.type==="FunctionDeclaration"||parent.type==="FunctionExpression"||parent.type==="ClassDeclaration")&&propName==="id"){return false}if(parent.type==="VariableDeclarator"&&propName==="id"||parent.type==="CatchClause"&&propName==="param"){return false}if((parent.type==="CallExpression"||parent.type==="OptionalCallExpression")&&propName==="callee"){return false}if(parent.type==="NewExpression"&&propName==="callee"){return false}return true}const scopeStack=[rootScope];function collect(node,parent,propName,index){if(!node||typeof node!=="object")return;const nodeScope=scopeForNode.get(node);if(nodeScope)scopeStack.push(nodeScope);if(node.type==="Identifier"){if(isVariableUsageIdentifier(node,parent,propName)){const name=node.name;if(!(excludeBuiltins&&builtinSet.has(name))){usageSet.add(name)}}}for(const key of Object.keys(node)){if(key==="loc"||key==="range")continue;const child=node[key];if(Array.isArray(child)){for(let i=0;i<child.length;i++){const c=child[i];if(c&&typeof c==="object")collect(c,node,key,i)}}else if(child&&typeof child==="object"){collect(child,node,key,null)}}if(nodeScope)scopeStack.pop()}collect(ast,null,null,null);return Array.from(usageSet).sort()}}function _hst(html){return new hst(html)}function copyDir(src,dest,projectName){try{const entries=fs.readdirSync(src,{encoding:"utf8",withFileTypes:true});cd(dest);for(let entry of entries){const srcPath=path.join(src.toString(),entry.name.toString());const destPath=path.join(dest.toString(),entry.name.toString());if(entry.isDirectory()){if(projectName=="_beajsBuild"){if(entry.name!="layouts"&&entry.name!="views"&&entry.name!="css"&&entry.name!="js")copyDir(srcPath,destPath,projectName)}else copyDir(srcPath,destPath,projectName)}else{if(projectName=="_beajsBuild"){if(projectName=="_beajsBuild"&&entry.name!="index.js"&&entry.name!="index.html")fs.copyFileSync(srcPath,destPath)}else{if(!fs.existsSync(destPath)){if(projectName){if(entry.name=="index.html"){let html5=Buffer.from(fs.readFileSync(srcPath).toString().split("[ProjectName]").join(ucwords(projectName)));fs.writeFileSync(destPath,html5)}else if(entry.name=="package.json"){let slug=lw(projectName).replace(/[^a-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"")||"lumenjs-project";let pkgJson=Buffer.from(fs.readFileSync(srcPath).toString().split("[ProjectName]").join(slug));fs.writeFileSync(destPath,pkgJson)}else fs.copyFileSync(srcPath,destPath)}else fs.copyFileSync(srcPath,destPath)}else{console.log("File already exists:",destPath)}}}}}catch(e){console.log(e)}}exports.copyDir=copyDir;function validURL(string){let url;try{url=new URL(string)}catch(_){return false}return url.protocol==="http:"||url.protocol==="https:"}exports.validURL=validURL;let getPairs=(obj,keys=[])=>Object.entries(obj).reduce((pairs,[key,value])=>{if(typeof value==="object")pairs.push(...getPairs(value,[...keys,key]));else pairs.push([[...keys,key],value]);return pairs},[]);function pairIt(obj){return getPairs(obj).map(([[key0,...keysRest],value])=>`${key0}${keysRest.map(a=>`[${a}]`).join("")}=${value}`).join("&")}var API={get:async function(u,d,h,a){return await this.req(u,d,h,"GET",a)},put:async function(u,d,h,a){return await this.req(u,d,h,"PUT",a)},post:async function(u,d,h,a){return await this.req(u,d,h,"POST",a)},delete:async function(u,d,h,a){return await this.req(u,d,h,"DELETE",a)},patch:async function(u,d,h,a){return await this.req(u,d,h,"PATCH",a)},req:async function(u,d,h,m,a,f){var urled=validURL(u)?u:config.apis[a??0].baseURL+u;if(m.toString().toLowerCase()=="get"){if(urled.indexOf("?")>-1)urled=urled+"&"+pairIt(d??{});else urled=urled+"?"+pairIt(d??{})}let resa=await fetch(urled,{method:m.toString().toLowerCase(),body:m.toString().toLowerCase()=="get"?null:JSON.stringify(d??{}),headers:h??config.apis[a??0].headers});if(f)return resa;let res=await resa.text();try{return JSON.parse(res)}catch(e){return res}}};exports.API=API;exports.processCommand=processCommands;exports.startServer=startServer;exports.create=create;function processCommands(cmd){var command=cmd?cmd:process.argv[2];if(command=="run"||command=="serve"){startServer()}else if(command=="create"||command=="update"){let c=process.argv.slice(3,process.argv.length);let t=lw(c[0]);create({type:t[0]=="-"?t.split("-").join(""):t,name:t[0]=="-"?c.slice(1,c.length):c})}else if(command=="purge"){import("ora").then(async({default:ora,oraPromise})=>{const spinner=ora({color:"green"});spinner.start("Purging..");try{const corejsRes=await API.req(CORE_Libs.COREJS,{},void 0,"GET",void 0,true);if(!corejsRes.ok)throw new Error("fetching core JS failed: HTTP "+corejsRes.status);const corejs=await corejsRes.text();if(!corejs||corejs.length<1e3||/^\s*<(!doctype|html)/i.test(corejs)){throw new Error("fetched core JS doesn't look valid ("+(corejs?corejs.length:0)+" bytes, possibly an error page) \u2014 refusing to overwrite the real bundle")}spinner.start("Gathering Resources..");const mobiuscssRes=await API.req(CORE_Libs.BEACSS,{},void 0,"GET",void 0,true);if(!mobiuscssRes.ok)throw new Error("fetching core CSS failed: HTTP "+mobiuscssRes.status);const mobiuscss=await mobiuscssRes.text();if(mobiuscss==null||/^\s*<(!doctype|html)/i.test(mobiuscss)){throw new Error("fetched core CSS doesn't look valid \u2014 refusing to overwrite")}spinner.start("Writing Files...");var filePath=`${process.cwd()}`;var libsPath=`${__dirname}`+path.sep+`files`+path.sep+`libs`;cd(libsPath);fs.writeFileSync(libsPath+path.sep+"lm.js",String(corejs));fs.writeFileSync(libsPath+path.sep+"mobius.css",String(mobiuscss));fs.writeFileSync(filePath+path.sep+"src"+path.sep+"js"+path.sep+"lm.js",String(corejs));fs.writeFileSync(filePath+path.sep+"src"+path.sep+"css"+path.sep+"mobius.css",String(mobiuscss));spinner.succeed("Successfully Purged!")}catch(err){spinner.fail("Purge Failed! "+(err&&err.message?err.message:""))}})}else if(command=="build"){let cmds=process.argv;_bp(cmds)}else if(command=="login"){_vault.login()}else if(command=="api"){let sub=process.argv[3];let name=process.argv[4];if(sub=="set")_vault.apiSet(name);else if(sub=="update")_vault.apiUpdate(name);else if(sub=="get")_vault.apiGet(name);else if(sub=="list")_vault.apiList();else if(sub=="remove")_vault.apiRemove(name);else console.log("Usage: lm api <set|get|update|list|remove> [name]")}else if(command=="-v"||command=="-version"){let _pkgJsonPath=fs.existsSync(path.join(__dirname,"..","..","package.json"))?path.join(__dirname,"..","..","package.json"):path.join(__dirname,"..","package.json");console.log("LumenJS version "+require(_pkgJsonPath).version)}else{console.log("LumenJS CLI's command not found!")}}async function _bp(cmds){import("ora").then(async({default:ora,oraPromise})=>{const spinner=ora({color:"green"});spinner.succeed("Started Building Project For Production").start("Gathering Required Resources..");var projectPath=`${process.cwd()}`;var dest=projectPath+path.sep+"dist";let _views=getAllFiles(`${process.cwd()}`+path.sep+`src`+path.sep+`views`+path.sep,{},false,true);let _layoutsDir=`${process.cwd()}`+path.sep+`src`+path.sep+`layouts`+path.sep;let _layouts=fs.existsSync(_layoutsDir)?annotateLayoutRegions(getAllFiles(_layoutsDir,{},false,true)):{};let _tplsDir=`${process.cwd()}`+path.sep+`src`+path.sep+`tpls`+path.sep;let _tpls=fs.existsSync(_tplsDir)?getAllFiles(_tplsDir,{},false,true):{};validateTplsAreHtmlOnly(_tpls);var indexCode=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"index.html","utf8");var beaCSSCode=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"css"+path.sep+"mobius.css","utf8");var indexJs=fs.readFileSync(projectPath+path.sep+`src`+path.sep+"index.js","utf8");let _hasOwnDeps=_npmBundle.hasOwnDependencies(projectPath);let _localScriptSrcs=detectLocalProjectScripts(String(indexCode));let _compiledScripts="";for(const src of _localScriptSrcs){let scriptPath=projectPath+path.sep+"src"+path.sep+src.split("/").join(path.sep).replace(/^\\|^\//,"");try{let raw=_hasOwnDeps?_npmBundle.buildEntryWithImports(scriptPath,projectPath):fs.readFileSync(scriptPath,"utf8");_compiledScripts+="\n"+compileProjectScript(raw,src);indexCode=indexCode.split(new RegExp(`<script\\b[^>]*\\bsrc\\s*=\\s*["']`+src.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+`["'][^>]*>\\s*<\\/script>`,"i")).join("")}catch(e){}}let vt=`
|
|
2
2
|
var _vcData = {
|
|
3
3
|
"hstFormatVersion": `+HST_FORMAT_VERSION+`,
|
|
4
4
|
"views": `+JSON.stringify(_views)+`,
|
|
@@ -17,7 +17,7 @@ c &&
|
|
|
17
17
|
<div class="ov la pointer" close-notify><span class="cc mdi fs18 mdi-close"></span></div>
|
|
18
18
|
{{Title}}
|
|
19
19
|
{{Text}}
|
|
20
|
-
</div>`;if(!al)al="topCenter";if(!ty)ty="";if(!$("[notify]").length)$("body").append("<div notify class='"+al+"'></div>");else $("[notify]").attr("class","").addClass(al);$("[notify]").prepend(notify2.split("{{Title}}").join(ti!=""?"<h5>"+ti+"</h5>":"").split("{{Icon}}").join(i2).split("{{Text}}").join(tx2).split("{{Type}}").join(ty).split("{{Type}}").join(ti).split("{{Type}}").join(ti));$(".notify").fadeIn();setTimeout(function(){$("[close-notify]:last").click()},5e3)}function _isScrollable(el2){let o1=el2.css("overflow-y")=="scroll"||el2.css("overflow-y")=="auto"&&el2[0].scrollHeight>el2.height()+15;let o2=el2.css("overflow-x")=="scroll"||el2.css("overflow-x")=="auto"&&el2[0].scrollWidth>el2.width()+15;return o1||o2}function _setPos(self2,p,el2){var left=self2.offset().left;var top=self2.offset().top;if(p==""||p=="bottom"){left+=self2.innerWidth()/2;top+=self2.innerHeight()}else if(p=="left"){top+=self2.innerHeight()/2}else if(p=="top"){left+=self2.innerWidth()/2}else{left+=self2.innerWidth();top+=self2.innerHeight()/2}$("tip").css({left,top,right:"unset",bottom:"unset"});if(top+15<el2.offset().top||top>el2.offset().top+el2.height()+10||left+15<el2.offset().left||left>el2.offset().left+el2.width()+10)$("tip").hide();else $("tip").show()}String.prototype.rtrim=function(s){if(s==void 0)s="\\s";try{return this.replace(new RegExp("["+s+"]+$"),"")}catch{return this.replace(new RegExp("[\\"+s+"]+$"),"")}};String.prototype.ltrim=function(s){if(s==void 0)s="\\s";try{return this.replace(new RegExp("^["+s+"]+"),"")}catch{return this.replace(new RegExp("^[\\"+s+"]+"),"")}};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(e2,cb2){if(!this.lstnrs.hasOwnProperty(e2))this.lstnrs[e2]=[];this.lstnrs[e2].push(cb2);if(e2=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e2){if(e2=="connect")return this;if(this.lstnrs.hasOwnProperty(e2))delete this.lstnrs[e2];return this}subscribe(e2,cb2){return this.on(e2,cb2)}unsubscribe(e2,cb2){return this.off(e2,cb2)}trigger(n2,e2){if(this.lstnrs.hasOwnProperty(n2)){for(let x2=0;x2<this.lstnrs[n2].length;x2++){this.lstnrs[n2][x2](e2)}}return this}emit(e2,data2,cb2){try{this._iter++;if(cb2)this.cbs["cb_"+this._iter]=cb2;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e2,data2){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_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(e2){_s.trigger("connect",e2);_s.trigger("open",e2)};this._ws.onclose=function(e2){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e2){try{let data2=JSON.parse(e2.data);if(data2.hasOwnProperty("e")){let event=data2["e"];let iter=data2["_iter"];const customEvent=new CustomEvent(event,{detail:data2["payload"]});customEvent.data=data2["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(e22){if(_debugMode)cl(e22)}};this._ws.onerror=function(e2){_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 t2=this.tick;let d=this.duration;let data2=this.data;if(opts){if(opts.hasOwnProperty("tick"))t2=opts.tick;if(opts.hasOwnProperty("duration"))d=opts.duration;if(opts.hasOwnProperty("data"))data2=opts.data}this.user.nuke.emit("subscribe",{type:"ticker",ticker:this.id,channel:this.channel.id,user:this.user.id,data:{tick:t2,duration:d,data:data2}});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 self2=this;this.on("create.class",function(e2){self2.status="created"});this.on("start.class",function(e2){self2.status="started"});this.on("tick.class",function(e2){self2.status="started"});this.on("pause.class",function(e2){self2.status="paused"});this.on("finish.class",function(e2){self2.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(t2){this.user.nuke.emit("ticker",{ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"extend",data:{time:t2}})}on(e2,cb2){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb2;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e2)){this._cbs[e2].push(cb2)}else this._cbs[e2]=[cb2];return this}off(e2){if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(customEvent)}}return this}}class _Channel{id="/";user=void 0;type="room";_cbs={};constructor(id2,type2,user){this.id=id2;this.type=type2;this.user=user;this.user.id=this.user.id??"Guest";return this}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(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(ev2,options){this.user.nuke.emit("broadcast",{type:"room",channel:this.id,user:this.user.id,ev:ev2,includeMe:options?.includeMe??true,data:options?.data??{}})}off(e2){if(e2=="connect")return this;if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}on(e2,cb2){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb2;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e2)){this._cbs[e2].push(cb2)}else this._cbs[e2]=[cb2];return this}createTicker(obj){if(!this.user.nuke._tickers.hasOwnProperty(this.id)){this.user.nuke._tickers[this.id]={}}let t2=new _Ticker(obj,this,this.user);return t2}getTicker(id2){this.user.nuke.emit("get",{type:"ticker",channel:this.id,user:this.user.id,ticker:id2})}}class _User{id="";nuke=void 0;_cbs={};constructor(id2,nuke){this.id=id2;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(e2,cb2){if(this.nuke._users["/"+this.id]._cbs.hasOwnProperty(e2)){this.nuke._users["/"+this.id]._cbs[e2].push(cb2)}else this.nuke._users["/"+this.id]._cbs[e2]=[cb2];return this}off(e2){if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}broadcast(ev2,options){this.nuke.emit("broadcast",{type:"user",channel:this.id,user:this.id,ev:ev2,includeMe:options?.includeMe??true,data:options?.data??{}})}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(customEvent)}}return this}_broadcastToAll(IDs,e2,d,t2){this.nuke.emit("broadcast",{type:t2=="u"?"user":"room",user:this.id,ev:e2,includeMe:d["includeMe"]??true,data:d["data"],...t2=="u"?{users:IDs.join(",")}:{channels:IDs.join(",")}})}broadcastToUsers(uIDs,e2,d){this._broadcastToAll(uIDs,e2,d,"u")}broadcastToChannels(cIDs,e2,d){this._broadcastToAll(cIDs,e2,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(e2,cb2){if(!this.nuke._chnls.hasOwnProperty(this.id)){this.nuke._chnls[this.id]={}}let channel=new _Channel(e2,"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(e2,cb2){if(!this.lstnrs.hasOwnProperty(e2))this.lstnrs[e2]=[];this.lstnrs[e2].push(cb2);if(e2=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e2){if(e2=="connect")return this;if(this.lstnrs.hasOwnProperty(e2))delete this.lstnrs[e2];return this}createUser(id2){let user=new _User(id2,this);return user}subscribe(e2,cb2){return this.on(e2,cb2)}unsubscribe(e2,cb2){return this.off(e2,cb2)}trigger(n2,e2){if(this.lstnrs.hasOwnProperty(n2)){for(let x2=0;x2<this.lstnrs[n2].length;x2++){this.lstnrs[n2][x2](e2)}}return this}emit(e2,data2,cb2){try{this._iter++;if(cb2)this.cbs["cb_"+this._iter]=cb2;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e2,data2){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_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(e2){_s.trigger("connect",e2);_s.trigger("open",e2)};this._ws.onclose=function(e2){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e2){try{let data2=JSON.parse(e2.data);if(data2.hasOwnProperty("for")){let t2=data2["type"]??"room";let ev2=data2["ev"]??"message";const customEvent=new CustomEvent(ev2,{detail:data2["payload"]});customEvent.data=data2["payload"];let payload=data2["payload"];if(payload.hasOwnProperty("user")){if(t2=="user"){_s._users[data2["for"]].trigger(ev2,customEvent)}else if(t2=="room")_s._chnls[payload.user.id][data2["for"]].trigger(ev2,customEvent);else if(t2=="ticker"){_s._tickers[data2["for"]][payload?.ticker?.id].trigger(ev2,customEvent);_s._tickers[data2["for"]][payload?.ticker?.id].trigger(ev2+".class",customEvent)}}}else if(data2.hasOwnProperty("e")){let event=data2["e"];let iter=data2["_iter"];const customEvent=new CustomEvent(event,{detail:data2["payload"]});customEvent.data=data2["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(e22){if(_debugMode)cl(e22)}};this._ws.onerror=function(e2){_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(e2){var _files=e2.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 n2=atob(key).split("src/views/").join("").split(".view").join("");let nodes2=getURLNodes();_ovcD["views"][key]=views[key];cl("view",n2,atob(key));if(n2.indexOf("widgets/")===0){let changedWidgetName=n2.split("widgets/").join("");for(let regionName in _vt.Widgets){if(_vt.Widgets[regionName]._resolvedFile===changedWidgetName){_vt.Widgets[regionName]._resolvedFile=void 0}}renderView(nodes2[0],null,View.props??{})}else if(nodes2[0]==n2){renderView(nodes2[0],null,View.props??{})}else{renderView(n2,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 n2=atob(key).split("src/layouts/").join("").split(".layout").join("");let nodes2=getURLNodes();_ovcD["layouts"][key]=layouts[key];cl("layout",n2,atob(key));renderView(n2,false,{},"layouts")}}}}})}Nuke.on("connect",function(){if(_beaTn){Nuke.emit("get_uniquer",{beajsToken:_beaTn,uniquer:globals.uniquer},function(e2){let d=e2.data;let data2=d.uniquer;globals.uniquer=data2})}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(e2){if(prog){_gn=0;barSet(1,200)}var r2=e2.data;prom.resolve(r2)})}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(r2,s){prom.resolve(r2)},error:function(){prom.reject("error")}})}else{setTimeout(()=>{this.req(u,d,h,m,a,opts,prom)},_tickTime)}}}}};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 data2=e2.originalEvent.data;_vuid[data2.key].resolve(data2.csses)});_upwrk.on("message",function(e2){let data2=e2.originalEvent.data});_upwrk.on("files-added",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"files-added",data2.files,data2.newfiles)});_upwrk.on("queue-changed",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"queue-changed",data2.files)});_upwrk.on("file-removed",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"file-removed",data2.files,data2.removedfile)});_upwrk.on("upload-start",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-start",data2.files)});_upwrk.on("file-uploaded",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"file-uploaded",data2.files,data2.file)});_upwrk.on("upload-progress",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-progress",data2.files)});_upwrk.on("upload-complete",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-complete",data2.files)});_upwrk.on("upload-stop",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-stop",data2.files)});_upwrk.on("queue-empty",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.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 t2=$(this);var size=t2.attr("data-mxs")?t2.attr("data-mxs"):"10mb";_upwrk.trigger("handle-files",{"upid":t2.attr("upid"),"files":files});processEv(e2,t2,"browse-files",files)});$("body").on("dragover","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();let t2=$(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 t2=$(this).closest("[up]");$(this).removeClass("dragover");t2.trigger("FilesAdded",[files]);return false});$("body").on("click","[up] [browse]",function(e2){e2.stopPropagation();e2.preventDefault();let t2=$(this).closest("[up]");t2.find("[files]").click()});$("body").on("change","[up] [files]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t2=$(this).closest("[up]");t2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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(t2){$("body").css({overflow:t2?"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 i2=0;i2<inputs.length;i2++){if(!checkFormInputs(f,inputs[i2])){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 t2=$(this);t2.empty().change();try{let opts=t2.data("select2")?.options?.options;opts.data=null;t2.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(val2){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(val2){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(r2){count_outlet.show();let icons=r2.icons;outlet.html("");count_outlet.html((r2.total>250?r2.total+"+":r2.total)+" icons found..");for(let i2=0;i2<icons.length;i2++){outlet.append(`
|
|
20
|
+
</div>`;if(!al)al="topCenter";if(!ty)ty="";if(!$("[notify]").length)$("body").append("<div notify class='"+al+"'></div>");else $("[notify]").attr("class","").addClass(al);$("[notify]").prepend(notify2.split("{{Title}}").join(ti!=""?"<h5>"+ti+"</h5>":"").split("{{Icon}}").join(i2).split("{{Text}}").join(tx2).split("{{Type}}").join(ty).split("{{Type}}").join(ti).split("{{Type}}").join(ti));$(".notify").fadeIn();setTimeout(function(){$("[close-notify]:last").click()},5e3)}function _isScrollable(el2){let o1=el2.css("overflow-y")=="scroll"||el2.css("overflow-y")=="auto"&&el2[0].scrollHeight>el2.height()+15;let o2=el2.css("overflow-x")=="scroll"||el2.css("overflow-x")=="auto"&&el2[0].scrollWidth>el2.width()+15;return o1||o2}function _setPos(self2,p,el2){var left=self2.offset().left;var top=self2.offset().top;if(p==""||p=="bottom"){left+=self2.innerWidth()/2;top+=self2.innerHeight()}else if(p=="left"){top+=self2.innerHeight()/2}else if(p=="top"){left+=self2.innerWidth()/2}else{left+=self2.innerWidth();top+=self2.innerHeight()/2}$("tip").css({left,top,right:"unset",bottom:"unset"});if(top+15<el2.offset().top||top>el2.offset().top+el2.height()+10||left+15<el2.offset().left||left>el2.offset().left+el2.width()+10)$("tip").hide();else $("tip").show()}String.prototype.rtrim=function(s){if(s==void 0)s="\\s";try{return this.replace(new RegExp("["+s+"]+$"),"")}catch{return this.replace(new RegExp("[\\"+s+"]+$"),"")}};String.prototype.ltrim=function(s){if(s==void 0)s="\\s";try{return this.replace(new RegExp("^["+s+"]+"),"")}catch{return this.replace(new RegExp("^[\\"+s+"]+"),"")}};function paramsToObj(url){try{var entries=new URL(url).searchParams.entries();const result={};for(const[key,value]of entries){result[key]=value}return result}catch(x2){return{}}}function Arr2Obj(arr,key){if(!Array.isArray(arr))return{};return Object.assign({},...arr.map(x2=>({[x2[key]]:x2})))}function ObjFromArr(a,v,k="objectId"){let obj;try{obj=a.find(x2=>x2[k]==v)}catch(e2){obj={}}return obj}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(e2,cb2){if(!this.lstnrs.hasOwnProperty(e2))this.lstnrs[e2]=[];this.lstnrs[e2].push(cb2);if(e2=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e2){if(e2=="connect")return this;if(this.lstnrs.hasOwnProperty(e2))delete this.lstnrs[e2];return this}subscribe(e2,cb2){return this.on(e2,cb2)}unsubscribe(e2,cb2){return this.off(e2,cb2)}trigger(n2,e2){if(this.lstnrs.hasOwnProperty(n2)){for(let x2=0;x2<this.lstnrs[n2].length;x2++){this.lstnrs[n2][x2](e2)}}return this}emit(e2,data2,cb2){try{this._iter++;if(cb2)this.cbs["cb_"+this._iter]=cb2;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e2,data2){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_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(e2){_s.trigger("connect",e2);_s.trigger("open",e2)};this._ws.onclose=function(e2){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e2){try{let data2=JSON.parse(e2.data);if(data2.hasOwnProperty("e")){let event=data2["e"];let iter=data2["_iter"];const customEvent=new CustomEvent(event,{detail:data2["payload"]});customEvent.data=data2["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(e22){if(_debugMode)cl(e22)}};this._ws.onerror=function(e2){_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 t2=this.tick;let d=this.duration;let data2=this.data;if(opts){if(opts.hasOwnProperty("tick"))t2=opts.tick;if(opts.hasOwnProperty("duration"))d=opts.duration;if(opts.hasOwnProperty("data"))data2=opts.data}this.user.nuke.emit("subscribe",{type:"ticker",ticker:this.id,channel:this.channel.id,user:this.user.id,data:{tick:t2,duration:d,data:data2}});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 self2=this;this.on("create.class",function(e2){self2.status="created"});this.on("start.class",function(e2){self2.status="started"});this.on("tick.class",function(e2){self2.status="started"});this.on("pause.class",function(e2){self2.status="paused"});this.on("finish.class",function(e2){self2.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(t2){this.user.nuke.emit("ticker",{ticker:this.id,channel:this.channel.id,user:this.user.id,ev:"extend",data:{time:t2}})}on(e2,cb2){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb2;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e2)){this._cbs[e2].push(cb2)}else this._cbs[e2]=[cb2];return this}off(e2){if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(customEvent)}}return this}}class _Channel{id="/";user=void 0;type="room";_cbs={};constructor(id2,type2,user){this.id=id2;this.type=type2;this.user=user;this.user.id=this.user.id??"Guest";return this}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(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(ev2,options){this.user.nuke.emit("broadcast",{type:"room",channel:this.id,user:this.user.id,ev:ev2,includeMe:options?.includeMe??true,data:options?.data??{}})}off(e2){if(e2=="connect")return this;if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}on(e2,cb2){let myRef2=document.createElement("live");myRef2.dataset["cb"]=cb2;document.body.append(myRef2);if(this._cbs.hasOwnProperty(e2)){this._cbs[e2].push(cb2)}else this._cbs[e2]=[cb2];return this}createTicker(obj){if(!this.user.nuke._tickers.hasOwnProperty(this.id)){this.user.nuke._tickers[this.id]={}}let t2=new _Ticker(obj,this,this.user);return t2}getTicker(id2){this.user.nuke.emit("get",{type:"ticker",channel:this.id,user:this.user.id,ticker:id2})}}class _User{id="";nuke=void 0;_cbs={};constructor(id2,nuke){this.id=id2;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(e2,cb2){if(this.nuke._users["/"+this.id]._cbs.hasOwnProperty(e2)){this.nuke._users["/"+this.id]._cbs[e2].push(cb2)}else this.nuke._users["/"+this.id]._cbs[e2]=[cb2];return this}off(e2){if(this._cbs.hasOwnProperty(e2))delete this._cbs[e2];return this}broadcast(ev2,options){this.nuke.emit("broadcast",{type:"user",channel:this.id,user:this.id,ev:ev2,includeMe:options?.includeMe??true,data:options?.data??{}})}trigger(e2,customEvent){if(this._cbs.hasOwnProperty(e2)){for(let i2=0;i2<this._cbs[e2].length;i2++){const cb2=this._cbs[e2][i2];cb2(customEvent)}}return this}_broadcastToAll(IDs,e2,d,t2){this.nuke.emit("broadcast",{type:t2=="u"?"user":"room",user:this.id,ev:e2,includeMe:d["includeMe"]??true,data:d["data"],...t2=="u"?{users:IDs.join(",")}:{channels:IDs.join(",")}})}broadcastToUsers(uIDs,e2,d){this._broadcastToAll(uIDs,e2,d,"u")}broadcastToChannels(cIDs,e2,d){this._broadcastToAll(cIDs,e2,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(e2,cb2){if(!this.nuke._chnls.hasOwnProperty(this.id)){this.nuke._chnls[this.id]={}}let channel=new _Channel(e2,"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(e2,cb2){if(!this.lstnrs.hasOwnProperty(e2))this.lstnrs[e2]=[];this.lstnrs[e2].push(cb2);if(e2=="open"&&this._ws?.readyState==1){this.trigger("open",this._ws)}return this}off(e2){if(e2=="connect")return this;if(this.lstnrs.hasOwnProperty(e2))delete this.lstnrs[e2];return this}createUser(id2){let user=new _User(id2,this);return user}subscribe(e2,cb2){return this.on(e2,cb2)}unsubscribe(e2,cb2){return this.off(e2,cb2)}trigger(n2,e2){if(this.lstnrs.hasOwnProperty(n2)){for(let x2=0;x2<this.lstnrs[n2].length;x2++){this.lstnrs[n2][x2](e2)}}return this}emit(e2,data2,cb2){try{this._iter++;if(cb2)this.cbs["cb_"+this._iter]=cb2;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}}catch(error){if(_debugMode)cl(error)}return this}_emit(e2,data2){this._iter++;let prom=defer();this._cbs["cb_"+this._iter]=prom;if(this.ready()){this._ws.send(JSON.stringify({e:e2,payload:data2,_iter:this._iter}))}else{this._send(JSON.stringify({e:e2,payload:data2,_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(e2){_s.trigger("connect",e2);_s.trigger("open",e2)};this._ws.onclose=function(e2){_s._iter=0;_s.cbs={};_gn=0;barSet(1,200);_s.reconnectAttempts++};this._ws.onmessage=function(e2){try{let data2=JSON.parse(e2.data);if(data2.hasOwnProperty("for")){let t2=data2["type"]??"room";let ev2=data2["ev"]??"message";const customEvent=new CustomEvent(ev2,{detail:data2["payload"]});customEvent.data=data2["payload"];let payload=data2["payload"];if(payload.hasOwnProperty("user")){if(t2=="user"){_s._users[data2["for"]].trigger(ev2,customEvent)}else if(t2=="room")_s._chnls[payload.user.id][data2["for"]].trigger(ev2,customEvent);else if(t2=="ticker"){_s._tickers[data2["for"]][payload?.ticker?.id].trigger(ev2,customEvent);_s._tickers[data2["for"]][payload?.ticker?.id].trigger(ev2+".class",customEvent)}}}else if(data2.hasOwnProperty("e")){let event=data2["e"];let iter=data2["_iter"];const customEvent=new CustomEvent(event,{detail:data2["payload"]});customEvent.data=data2["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(e22){if(_debugMode)cl(e22)}};this._ws.onerror=function(e2){_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(e2){var _files=e2.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 n2=atob(key).split("src/views/").join("").split(".view").join("");let nodes2=getURLNodes();_ovcD["views"][key]=views[key];cl("view",n2,atob(key));if(n2.indexOf("widgets/")===0){let changedWidgetName=n2.split("widgets/").join("");for(let regionName in _vt.Widgets){if(_vt.Widgets[regionName]._resolvedFile===changedWidgetName){_vt.Widgets[regionName]._resolvedFile=void 0}}renderView(nodes2[0],null,View.props??{})}else if(nodes2[0]==n2){renderView(nodes2[0],null,View.props??{})}else{renderView(n2,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 n2=atob(key).split("src/layouts/").join("").split(".layout").join("");let nodes2=getURLNodes();_ovcD["layouts"][key]=layouts[key];cl("layout",n2,atob(key));renderView(n2,false,{},"layouts")}}}}})}Nuke.on("connect",function(){if(_beaTn){Nuke.emit("get_uniquer",{beajsToken:_beaTn,uniquer:globals.uniquer},function(e2){let d=e2.data;let data2=d.uniquer;globals.uniquer=data2})}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(e2){if(prog){_gn=0;barSet(1,200)}var r2=e2.data;prom.resolve(r2)})}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(r2,s){prom.resolve(r2)},error:function(){prom.reject("error")}})}else{setTimeout(()=>{this.req(u,d,h,m,a,opts,prom)},_tickTime)}}}}};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 data2=e2.originalEvent.data;_vuid[data2.key].resolve(data2.csses)});_upwrk.on("message",function(e2){let data2=e2.originalEvent.data});_upwrk.on("files-added",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"files-added",data2.files,data2.newfiles)});_upwrk.on("queue-changed",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"queue-changed",data2.files)});_upwrk.on("file-removed",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"file-removed",data2.files,data2.removedfile)});_upwrk.on("upload-start",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-start",data2.files)});_upwrk.on("file-uploaded",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"file-uploaded",data2.files,data2.file)});_upwrk.on("upload-progress",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-progress",data2.files)});_upwrk.on("upload-complete",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-complete",data2.files)});_upwrk.on("upload-stop",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.upid+'"]'),"upload-stop",data2.files)});_upwrk.on("queue-empty",function(e2){let data2=e2.originalEvent.data;processEv(e2,$('[upid="'+data2.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 t2=$(this);var size=t2.attr("data-mxs")?t2.attr("data-mxs"):"10mb";_upwrk.trigger("handle-files",{"upid":t2.attr("upid"),"files":files});processEv(e2,t2,"browse-files",files)});$("body").on("dragover","[up] [drpzn]",function(e2){e2.stopPropagation();e2.preventDefault();let t2=$(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 t2=$(this).closest("[up]");$(this).removeClass("dragover");t2.trigger("FilesAdded",[files]);return false});$("body").on("click","[up] [browse]",function(e2){e2.stopPropagation();e2.preventDefault();let t2=$(this).closest("[up]");t2.find("[files]").click()});$("body").on("change","[up] [files]",function(e2){e2.stopPropagation();e2.preventDefault();var files=e2.originalEvent.dataTransfer?.files||e2.target?.files;let t2=$(this).closest("[up]");t2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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 _el2=$(this);var _wrap=_el2.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(t2){$("body").css({overflow:t2?"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 i2=0;i2<inputs.length;i2++){if(!checkFormInputs(f,inputs[i2])){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 t2=$(this);t2.empty().change();try{let opts=t2.data("select2")?.options?.options;opts.data=null;t2.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(val2){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(val2){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(r2){count_outlet.show();let icons=r2.icons;outlet.html("");count_outlet.html((r2.total>250?r2.total+"+":r2.total)+" icons found..");for(let i2=0;i2<icons.length;i2++){outlet.append(`
|
|
21
21
|
<li class="w20 md_w25 m_w33 m_m_w50 c icoLi" data-class="`+icons[i2]+`"><div><span class="iconify fs24 mb5 lh40 g_nm" style="height: 40px;" data-icon="`+icons[i2]+`" ></span><span class="name-class">`+icons[i2]+`</span></div></li>
|
|
22
22
|
`)}})},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=`
|
|
23
23
|
<div loader class="${this.options.Class}">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lmjs/cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"description": "Command line interface for LumenJS — scaffold, develop, and build LumenJS applications. LumenJS is a tiny, fast reactive JavaScript framework for building web applications and interfaces with standard HTML, CSS, and JavaScript.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"lm": "./dist/bin/commands.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"ora": "^6.1.2",
|
|
52
52
|
"semver": "^7.3.7",
|
|
53
53
|
"ws": "^8.8.1",
|
|
54
|
-
"@lmjs/core": "2.1.
|
|
54
|
+
"@lmjs/core": "2.1.4"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=18.0.0"
|