x4js
Version:
1 lines • 149 kB
JavaScript
"use strict";var ut=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var ln=Object.getOwnPropertyNames;var cn=Object.prototype.hasOwnProperty;var wr=a=>{throw TypeError(a)};var dn=(a,e,t)=>e in a?ut(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var s=(a,e)=>ut(a,"name",{value:e,configurable:!0});var hn=(a,e)=>{for(var t in e)ut(a,t,{get:e[t],enumerable:!0})},pn=(a,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ln(e))!cn.call(a,r)&&r!==t&&ut(a,r,{get:()=>e[r],enumerable:!(o=_r(e,r))||o.enumerable});return a};var un=a=>pn(ut({},"__esModule",{value:!0}),a),u=(a,e,t,o)=>{for(var r=o>1?void 0:o?_r(e,t):e,n=a.length-1,i;n>=0;n--)(i=a[n])&&(r=(o?i(e,t,r):i(r))||r);return o&&r&&ut(e,t,r),r};var O=(a,e,t)=>dn(a,typeof e!="symbol"?e+"":e,t),yr=(a,e,t)=>e.has(a)||wr("Cannot "+t);var P=(a,e,t)=>(yr(a,e,"read from private field"),t?t.call(a):e.get(a)),ae=(a,e,t)=>e.has(a)?wr("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,t),le=(a,e,t,o)=>(yr(a,e,"write to private field"),o?o.call(a,t):e.set(a,t),t);var yi={};hn(yi,{Application:()=>Rt,AssistBox:()=>Re,Box:()=>C,Breadcrumbs:()=>ze,BtnGroup:()=>he,Button:()=>I,CMover:()=>Ht,CSizer:()=>F,Calendar:()=>Ve,Canvas:()=>He,Checkbox:()=>Ne,Color:()=>N,ColorInput:()=>_e,ColorPicker:()=>Ke,Combobox:()=>Ge,Component:()=>d,ComputedStyle:()=>ko,CoreElement:()=>re,DataModel:()=>Jt,DataProxy:()=>eo,DataRecord:()=>Ft,DataStore:()=>Bo,DataView:()=>xt,Dialog:()=>X,DropdownList:()=>ye,EventSource:()=>de,FileDialog:()=>Et,FileDrop:()=>We,Flex:()=>ne,Form:()=>K,GridBox:()=>Fe,Gridview:()=>je,HBox:()=>b,Header:()=>Ye,Icon:()=>E,Image:()=>ue,Input:()=>A,InputBox:()=>Ce,Keyboard:()=>Qe,Label:()=>_,Link:()=>$e,Listbox:()=>pe,MasonryBox:()=>Be,Menu:()=>W,MessageBox:()=>ke,Notification:()=>Ze,Panel:()=>Xe,Popup:()=>z,Progress:()=>Je,PromptBox:()=>Ee,PropertyGrid:()=>et,Radio:()=>tt,Rating:()=>ot,Rect:()=>Me,Router:()=>Yo,Saturation:()=>we,ScrollView:()=>Z,Select:()=>me,SimpleText:()=>H,Slider:()=>rt,Space:()=>St,StackBox:()=>ie,StateManager:()=>$o,Stylesheet:()=>yo,SvgBuilder:()=>zt,SvgComponent:()=>Ot,SvgGradient:()=>io,SvgGroup:()=>_t,SvgIcon:()=>no,SvgPath:()=>oo,SvgShape:()=>vt,SvgText:()=>ro,Switch:()=>nt,Tabs:()=>at,TextArea:()=>lt,TextEdit:()=>ct,TickLine:()=>ur,Timer:()=>De,Treeview:()=>ht,UnsafeHtml:()=>Ae,VBox:()=>k,Viewport:()=>se,_date_set_locale:()=>In,_tr:()=>y,addEvent:()=>Tt,addTranslation:()=>mo,asap:()=>te,beep:()=>Ln,calcAge:()=>Sn,camelCase:()=>Cn,centerRect:()=>wn,clamp:()=>G,class_ns:()=>p,componentFromDOM:()=>T,createLanguage:()=>po,createPainter:()=>lr,data:()=>Fo,date_calc_weeknum:()=>go,date_clone:()=>Pe,date_diff:()=>Mn,date_format:()=>An,date_hash:()=>ge,date_sql_utc:()=>Pn,date_to_sql:()=>Dn,dispatchEvent:()=>Mr,dragManager:()=>Bt,formatIntlDate:()=>j,getAvailableLanguages:()=>xn,getCurrentLanguage:()=>gn,getFocusableElements:()=>Mt,getScrollbarSize:()=>Rn,initTooltips:()=>bi,isArray:()=>Y,isFeatureAvailable:()=>It,isFunction:()=>xo,isLanguage:()=>uo,isNumber:()=>V,isString:()=>M,isUnitLess:()=>Co,kbNav:()=>Dt,kbTreeNav:()=>nn,makeUniqueComponentId:()=>q,oneshot:()=>yn,pad:()=>ce,parseIntlDate:()=>Tn,parseRoute:()=>Sr,pascalCase:()=>kn,selectLanguage:()=>Ir,setWaitCursor:()=>Yt,sprintf:()=>Wt,svgLoader:()=>wt,unbubbleEvents:()=>Ar,unitless:()=>Pt,unsafe:()=>_n,unsafeHtml:()=>ft,wrapDOM:()=>$t,x4_class_ns_sym:()=>At,x4_react:()=>Wo});module.exports=un(yi);var kr=Symbol("i18n"),mt={};function po(a,e){mt[a]={name:a,base:e,src_translations:{},translations:{}}}s(po,"createLanguage");function uo(a){return mt[a]!==void 0}s(uo,"isLanguage");function mo(a,...e){if(!uo(a))return;let t=mt[a];e.forEach(o=>{Cr(t.src_translations,o)}),t.translations=Er(t.src_translations,t.base,!0)}s(mo,"addTranslation");function Cr(a,e){for(let t in e){let o=e[t];typeof o=="string"?a[t]=o:Array.isArray(o)&&(!a[t]||!Array.isArray(a[t]))?a[t]=[...o]:!a[t]||typeof a[t]!="object"?a[t]={...o}:Cr(a[t],e[t])}}s(Cr,"_patch");function Er(a,e,t){let o={};for(let r in a)typeof a[r]!="string"&&!Array.isArray(a[r])?o[r]=Er(a[r],e,!1):o[r]=a[r];return mn(o,e,t)}s(Er,"_proxyfy");function mn(a,e,t){return new Proxy(a,{get:s((o,r)=>{t?Gt=[r]:Gt.push(r);let n=o[r];return n===void 0&&(e&&(n=fn(e)),n===void 0&&console.error("I18N error: unable to find","_tr."+Gt.join("."))),n},"get")})}s(mn,"_mk_proxy");var Gt;function fn(a){for(;a;){let e=mt[a],t=e.translations,o;for(let r of Gt){if(o=t[r],o===void 0)break;t=o}if(o!==void 0)return t;a=e.base}}s(fn,"_findBaseTrans");var y={};function Ir(a){if(uo(a))return y=mt[a].translations,y[kr]=a,y}s(Ir,"selectLanguage");function gn(){return y[kr]}s(gn,"getCurrentLanguage");function xn(){return Object.keys(mt)}s(xn,"getAvailableLanguages");var bn={global:{ok:"OK",cancel:"Annuler",ignore:"Ignorer",yes:"Oui",no:"Non",abort:"Abandonner",retry:"Réessayer",error:"Erreur",today:"Aujourd'hui",open:"Ouvrir",new:"Nouveau",delete:"Supprimer",close:"Fermer",save:"Enregistrer",search:"Rechercher",search_tip:"Saisissez le texte à rechercher. <b>Enter</b> pour lancer la recherche. <b>Esc</b> pour annuler.",required_field:"information requise",invalid_format:"format invalide",invalid_email:"adresse mail invalide",invalid_number:"valeur numérique invalide",diff_date_seconds:"{0} secondes",diff_date_minutes:"{0} minutes",diff_date_hours:"{0} heures",invalid_date:"Date non reconnue ({0})",empty_list:"Liste vide",date_input_formats:"d/m/y|d.m.y|d m y|d-m-y|dmy",date_format:"D/M/Y",day_short:["dim","lun","mar","mer","jeu","ven","sam"],day_long:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],month_short:["jan","fév","mar","avr","mai","jun","jui","aoû","sep","oct","nov","déc"],month_long:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],property:"Propriété",value:"Valeur",err_403:"Vous n'avez pas les droits suffisants pour effectuer cette action",copy:"Copier",cut:"Couper",paste:"Coller",filedrop:"Déposez un fichier",keyboard:{next:"Suivant",numeric:"123",alpha:"Abc"}}},vn={global:{ok:"OK",cancel:"Cancel",ignore:"Ignore",yes:"Yes",no:"No",abort:"Abort",retry:"Retry",error:"Error",today:"Today",open:"Open",new:"New",delete:"Delete",close:"Close",save:"Save",search:"Search",search_tip:"Type in the text to search. <b>Enter</b> to start the search. <b>Esc</b> to cancel.",required_field:"missing information",invalid_format:"invalid format",invalid_email:"invalid email address",invalid_number:"bad numeric value",diff_date_seconds:"{0} seconds",diff_date_minutes:"{0} minutes",diff_date_hours:"{0} hours",invalid_date:"Unrecognized date({0})",empty_list:"Empty list",date_input_formats:"m/d/y|m.d.y|m d y|m-d-y|mdy",date_format:"M/D/Y",day_short:["sun","mon","tue","wed","thu","fri","sat"],day_long:["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],month_short:["jan","feb","mar","apr","may","jun","jui","aug","sep","oct","nov","dec"],month_long:["january","february","march","april","mau","june","jully","august","september","october","november","december"],property:"Property",value:"Value",err_403:"You do not have sufficient rights to do that action",copy:"Copy",cut:"Cut",paste:"Paste",filedrop:"Drop a file",keyboard:{next:"Next",numeric:"123",alpha:"Abc"}}};po("fr",null);mo("fr",bn);po("en","fr");mo("en",vn);Ir("fr");function M(a){return typeof a=="string"}s(M,"isString");function V(a){return typeof a=="number"&&isFinite(a)}s(V,"isNumber");function Y(a){return a instanceof Array}s(Y,"isArray");function xo(a){return a instanceof Function}s(xo,"isFunction");var bo=class bo extends String{constructor(e){super(e)}};s(bo,"UnsafeHtml");var Ae=bo;function ft(a){return new Ae(a)}s(ft,"unsafeHtml");function _n(a,...e){let t=a.reduce((o,r,n)=>o+r+(e[n]||""),"");return ft(t)}s(_n,"unsafe");function G(a,e,t){return a<e?e:a>t?t:a}s(G,"clamp");var jt=class jt{left;top;height;width;constructor(e,t,o,r){e!==void 0&&(V(e)?(this.left=e,this.top=t,this.width=o,this.height=r):Object.assign(this,e))}get right(){return this.left+this.width}get bottom(){return this.top+this.height}contains(e){return e instanceof jt?e.left>=this.left&&e.right<=this.right&&e.top>=this.top&&e.bottom<=this.bottom:e.x>=this.left&&e.x<this.right&&e.y>=this.top&&e.y<this.bottom}touches(e){return!(this.left>e.right||this.right<e.left||this.top>e.bottom||this.bottom<e.top)}normalize(){let e=this.width,t=this.height;return e<0&&(this.left+=e,this.width=-e),t<0&&(this.top+=t,this.height=-t),this}};s(jt,"Rect");var Me=jt;function wn(a,e,t=0){let o=e.width-2*t,r=e.height-2*t,n=a.width/a.height,i=o,l=o/n;l>r&&(l=r,i=r*n);let c=e.left+(e.width-i)/2,h=e.top+(e.height-l)/2;return{left:c,top:h,width:i,height:l}}s(wn,"centerRect");function It(a){switch(a){case"eyedropper":return"EyeDropper"in window}return!1}s(It,"isFeatureAvailable");var vo=class vo{_timers;setTimeout(e,t,o){this._timers?this.clearTimeout(e):this._timers=new Map;let r=setTimeout(o,t);return this._timers.set(e,r),r}clearTimeout(e){this._timers&&this._timers.has(e)&&(clearTimeout(this._timers.get(e)),this._timers.delete(e))}setInterval(e,t,o){this._timers?this.clearInterval(e):this._timers=new Map;let r=setInterval(o,t);return this._timers.set(e,r),r}clearInterval(e){this._timers&&this._timers.has(e)&&(clearInterval(this._timers.get(e)),this._timers.delete(e))}clearAllTimeouts(){var e;(e=this._timers)==null||e.forEach(t=>{clearTimeout(t)}),this._timers=null}};s(vo,"Timer");var De=vo;function te(a){return requestAnimationFrame(a)}s(te,"asap");function yn(a,e=0){return setTimeout(a,e)}s(yn,"oneshot");function ce(a,e,t="0"){let o;return M(a)?o=a:o=""+a,e>0?o.padEnd(e,t):o.padStart(-e,t)}s(ce,"pad");function Wt(a,...e){return a.replace(/{(\d+)}/g,function(t,o){return typeof e[o]<"u"?e[o]:t})}s(Wt,"sprintf");function kn(a){let e=a;return e=e.replace(/([a-z])([A-Z])/g,"$1 $2"),e=e.toLowerCase(),e=e.replace(/[^- a-z0-9]+/g," "),e.indexOf(" ")<0?e:(e=e.trim(),e.replace(/ /g,"-"))}s(kn,"pascalCase");function Cn(a){let e=a.toLowerCase();return e=e.replace(/[^a-zA-Z0-9]+(.)/g,(t,o)=>o.toUpperCase()),e}s(Cn,"camelCase");var En="fr-FR";function In(a){En=a}s(In,"_date_set_locale");function An(a,e){return j(a)}s(An,"date_format");function Mn(a,e,t){let r=(a.getTime()-e.getTime())/1e3;if(r<60)return Wt(y.global.diff_date_seconds,Math.round(r));let n=Math.floor(r/60);if(n<60)return Wt(y.global.diff_date_minutes,Math.round(n));let i=Math.floor(n/60);return Wt(y.global.diff_date_hours,i,n%60)}s(Mn,"date_diff");function Dn(a,e){return e?j(a,"Y-M-D H:I:S"):j(a,"Y-M-D")}s(Dn,"date_to_sql");function Pn(a){return new Date(a+" GMT")}s(Pn,"date_sql_utc");function ge(a){return a.getFullYear()<<16|a.getMonth()<<8|a.getDate()}s(ge,"date_hash");function Pe(a){return new Date(a.getTime())}s(Pe,"date_clone");function go(a){let e=new Date(a.getFullYear(),0,1),t=(a.valueOf()-e.valueOf())/864e5;return Math.floor((t+e.getDay()+1)/7)}s(go,"date_calc_weeknum");function Tn(a,e=y.global.date_input_formats){var o,r,n,i,l,c;let t=e.split("|");for(let h of t){let g="";for(let x=0;x<h.length;x++){let v=h[x];v=="d"?g+="(?<day>\\d{1,2})":v=="D"?g+="(?<day>\\d{2})":v=="m"?g+="(?<month>\\d{1,2})":v=="M"?g+="(?<month>\\d{2})":v=="y"?g+="(?<year>\\d{1,4})":v=="Y"?h[x+1]=="Y"?(g+="(?<year>\\d{4})",x++):g+="(?<year>\\d{2})":v=="h"?g+="(?<hour>\\d{1,2})":v=="H"?g+="(?<hour>\\d{2})":v=="i"?g+="(?<min>\\d{1,2})":v=="I"?g+="(?<min>\\d{2})":v=="s"?g+="(?<sec>\\d{1,2})":v=="S"?g+="(?<sec>\\d{2})":v==" "?g+="\\s+":g+="\\s*\\"+v+"\\s*"}let m=new RegExp("^"+g+"$","m").exec(a);if(m){let x=new Date,v=parseInt((o=m.groups.day)!=null?o:"1"),U=parseInt((r=m.groups.month)!=null?r:"1"),w=parseInt((n=m.groups.year)!=null?n:x.getFullYear()+""),S=parseInt((i=m.groups.hour)!=null?i:"0"),J=parseInt((l=m.groups.min)!=null?l:"0"),B=parseInt((c=m.groups.sec)!=null?c:"0");w>0&&w<100&&(w+=2e3);let L=new Date(w,U-1,v,S,J,B,0),fe=L.getFullYear(),pt=L.getMonth()+1,R=L.getDate();return fe!=w||pt!=U||R!=v?null:L}}return null}s(Tn,"parseIntlDate");function j(a,e=y.global.date_format){if(!a)return"";let t={year:a.getFullYear(),month:a.getMonth()+1,day:a.getDate(),wday:a.getDay(),hours:a.getHours(),minutes:a.getMinutes(),seconds:a.getSeconds(),milli:a.getMilliseconds()},o="",r=0;for(let n of e){if(n=="{"){if(++r==1)continue}else if(n=="}"&&--r==0)continue;if(r){o+=n;continue}n=="d"?o+=t.day:n=="D"?o+=ce(t.day,-2):n=="j"?o+=y.global.day_short[t.wday]:n=="J"?o+=y.global.day_long[t.wday]:n=="w"?o+=go(a):n=="W"?o+=ce(go(a),-2):n=="m"?o+=t.month:n=="M"?o+=ce(t.month,-2):n=="o"?o+=y.global.month_short[t.month-1]:n=="O"?o+=y.global.month_long[t.month-1]:n=="y"||n=="Y"?o+=ce(t.year,-4):n=="a"||n=="A"?o+=t.hours<12?"am":"pm":n=="h"?o+=t.hours:n=="H"?o+=ce(t.hours,-2):n=="i"?o+=t.minutes:n=="I"?o+=ce(t.minutes,-2):n=="s"?o+=t.seconds:n=="S"?o+=ce(t.seconds,-2):n=="l"?o+=t.milli:n=="L"?o+=ce(t.milli,-3):o+=n}return o}s(j,"formatIntlDate");function Sn(a,e){if(e===void 0&&(e=new Date),!a)return 0;let t=e.getFullYear()-a.getFullYear();return(e.getMonth()<a.getMonth()||e.getMonth()==a.getMonth()&&e.getDate()<a.getDate())&&t--,t}s(Sn,"calcAge");function Ln(){new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=").play()}s(Ln,"beep");var fo=-1;function Rn(){if(fo<0){let a=document.createElement("div");a.style.cssText="overflow:auto;position:absolute;top:0;width:100px;height:100px";let e=document.createElement("div");e.style.width="200px",e.style.height="200px",a.appendChild(e),document.body.appendChild(a),fo=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return fo}s(Rn,"getScrollbarSize");var At=Symbol("class-ns");function p(a){return function(e){e[At]=a}}s(p,"class_ns");function Yt(a){document.body.style.cursor=a?"wait":"default"}s(Yt,"setWaitCursor");function Mt(a){let e=['button:not([tabindex="-1"]):not([disabled])',"[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'];return Array.from(a.querySelectorAll(e.join(","))).filter(o=>o.offsetParent!=null)}s(Mt,"getFocusableElements");var Dt=(i=>(i[i.first=0]="first",i[i.prev=1]="prev",i[i.pgdn=2]="pgdn",i[i.pgup=3]="pgup",i[i.next=4]="next",i[i.last=5]="last",i))(Dt||{});var Fn=s(function(){this.propagationStopped=!0},"stopPropagation"),Bn=s(function(){this.defaultPrevented=!0},"preventDefault"),_o=class _o{_source;_registry;constructor(e=null){this._source=e!=null?e:this}addListener(e,t,o=!1){this._registry||(this._registry=new Map);let r=this._registry.get(e);r||(r=[],this._registry.set(e,r));let n=t;return r.indexOf(n)==-1&&(o?r.unshift(n):r.push(n)),()=>{this.removeListener(e,t)}}removeListener(e,t){if(!this._registry)return;let o=this._registry.get(e);if(!o)return;let r=t,n=o.indexOf(r);n!==-1&&o.splice(n,1)}fire(e,t){var r;let o=(r=this._registry)==null?void 0:r.get(e);if(o&&o.length){let n=t;if(n||(n={}),n.source||(n.source=this._source),n.type||(n.type=e),n.preventDefault||(n.preventDefault=Bn),n.stopPropagation||(n.stopPropagation=Fn),o.length==1)o[0](n);else{let i=o.slice();for(let l=0,c=i.length;l<c&&(i[l](n),!n.propagationStopped);l++);}}}};s(_o,"EventSource");var de=_o;var Q,oe,wo=class wo{constructor(){ae(this,Q);ae(this,oe)}__startTimer(e,t,o,r){P(this,oe)?this.__stopTimer(e):le(this,oe,new Map);let n=(o?setInterval:setTimeout)(r,t);P(this,oe).set(e,()=>{(o?clearInterval:clearTimeout)(n),P(this,oe).delete(e)})}__stopTimer(e){var o;let t=(o=P(this,oe))==null?void 0:o.get(e);t&&t()}setTimeout(e,t,o){this.__startTimer(e,t,!1,o)}clearTimeout(e){this.__stopTimer(e)}setInterval(e,t,o){this.__startTimer(e,t,!0,o)}clearInterval(e){this.__stopTimer(e)}clearTimeouts(){for(let[e,t]of P(this,oe))t();P(this,oe).clear()}on(e,t){return console.assert(t!=null),P(this,Q)||le(this,Q,new de(this)),P(this,Q).addListener(e,t),{off:s(()=>{P(this,Q).removeListener(e,t)},"off")}}off(e,t){console.assert(t!=null),P(this,Q)&&P(this,Q).removeListener(e,t)}fire(e,t){P(this,Q)&&P(this,Q).fire(e,t)}};Q=new WeakMap,oe=new WeakMap,s(wo,"CoreElement");var re=wo;var Pt={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};function Co(a){return!!Pt[a]}s(Co,"isUnitLess");var xe=class xe{m_sheet;m_rules=new Map;constructor(){function e(t){for(let o=0;o<document.styleSheets.length;o++){let r=document.styleSheets[o];if(r.title===t)return r}}if(s(e,"getStyleSheet"),this.m_sheet=e("x4-dynamic-css"),!this.m_sheet){let t=document.createElement("style");t.setAttribute("id","x4-dynamic-css"),document.head.appendChild(t),this.m_sheet=t.sheet}}setRule(e,t){if(M(t)){let o=this.m_rules.get(e);o!==void 0?this.m_sheet.deleteRule(o):o=this.m_sheet.cssRules.length,this.m_rules.set(e,this.m_sheet.insertRule(t,o))}else{let o=1;for(let r in t){let n=r+" { ",i=t[r];for(let l in i){let c=i[l];for(let h=0;h<c.length;h++)n+=l+": "+c[h]+"; "}n+="}",this.setRule(e+"--"+o,n),o++}}}static getVar(e){return xe.doc_style||(xe.doc_style=getComputedStyle(document.documentElement)),e.startsWith("--")||(e="--"+e),xe.doc_style.getPropertyValue(e)}};s(xe,"Stylesheet"),O(xe,"guid",1),O(xe,"doc_style");var yo=xe,Eo=class Eo{m_style;constructor(e){this.m_style=e}value(e){return this.m_style[e]}parse(e){return parseInt(this.m_style[e])}get style(){return this.m_style}};s(Eo,"ComputedStyle");var ko=Eo;var Ar={mouseleave:1,mouseenter:1,load:1,unload:1,scroll:1,focus:1,blur:1,rowexit:1,beforeunload:1,stop:1,dragdrop:1,dragenter:1,dragexit:1,draggesture:1,dragover:1,contextmenu:1,created:2,removed:2,sizechange:2},Qt=new WeakMap,Io=null,zn=s((a,e)=>{let t=s((r,n)=>{let i=Qt.get(r);i&&i[n]&&r.dispatchEvent(new Event(n,{}))},"sendEvent"),o=s((r,n)=>{n&&t(r,"created");for(let i=r.firstChild;i;i=i.nextSibling)o(i,n);n||t(r,"removed")},"notify");for(let r of a)r.type=="childList"&&(r.addedNodes&&r.addedNodes.forEach(n=>{o(n,!0)}),r.removedNodes&&r.removedNodes.forEach(n=>{o(n,!1)}))},"observeMutation"),Ao=null;function On(a){a.forEach(e=>{let t=e.target;t.offsetParent!==null&&t.dispatchEvent(new Event("resized"))})}s(On,"observeSize");function Mr(a){let e=a.target,t=Ar[a.type]===2;for(;e;){let o=Qt.get(e);if(o){let r=o[a.type];if(r&&(Array.isArray(r)?r.some(n=>n(a)):r(a),a.stopPropagation||a.defaultPrevented||t))break}if(e=e.parentNode,e==document)break}}s(Mr,"dispatchEvent");function Tt(a,e,t,o=!1){e=="removed"||e=="created"?Io||(Io=new MutationObserver(zn),Io.observe(document.body,{childList:!0,subtree:!0})):e=="resized"&&(Ao||(Ao=new ResizeObserver(On)),Ao.observe(a));let r=Qt.get(a);if(r||(r={},Qt.set(a,r)),!r[e])r[e]=t,a.addEventListener(e,Mr);else{let n=r[e];Array.isArray(n)?n.push(t):r[e]=[n,t]}}s(Tt,"addEvent");var Dr=Symbol("fragment"),Pr=Symbol("component"),Vn=/^-?\d+(\.\d*)?$/;function Hn(a){let e=[],t=Object.getPrototypeOf(a);if(t.constructor==d)return["x4-comp"];for(;t&&t.constructor!==d;){let o=t.constructor.name,r=Object.prototype.hasOwnProperty.call(t.constructor,At)?t.constructor[At]:"";e.push(r+o.toLowerCase()),t=Object.getPrototypeOf(t)}return e}s(Hn,"genClassNames");var Nn=1e3,q=s(()=>`x4-${Nn++}`,"makeUniqueComponentId"),Te,d=class extends re{constructor(t){var o,r;super();O(this,"dom");O(this,"props");O(this,"clsprefix");ae(this,Te);if(this.props=t,t.existingDOM)this.dom=t.existingDOM;else{t.ns?this.dom=document.createElementNS(t.ns,(o=t.tag)!=null?o:"div"):this.dom=document.createElement((r=t.tag)!=null?r:"div"),t.attrs&&this.setAttributes(t.attrs),t.cls&&this.addClass(t.cls),t.hidden&&this.show(!1),t.flex===!0?this.addClass("x4flex"):t.flex!==void 0&&this.setStyle({flexGrow:t.flex+""}),t.id!==void 0&&this.setAttribute("id",t.id),t.width!==void 0&&this.setStyleValue("width",t.width),t.height!==void 0&&this.setStyleValue("height",t.height),t.tooltip&&this.setAttribute("tooltip",t.tooltip),t.style&&this.setStyle(t.style),t.content&&this.setContent(t.content),t.dom_events&&this.setDOMEvents(t.dom_events);let n=Hn(this);this.dom.classList.add(...n),t.disabled&&this.addDOMEvent("created",()=>{this.enable(!1)})}this.dom[Pr]=this}hasClass(t){return this.dom.classList.contains(t)}addClass(t){if(t)if(t.indexOf(" ")>=0){t=t.trim();let o=t.split(" ");this.dom.classList.add(...o)}else this.dom.classList.add(t)}removeClass(t){if(t){if(t=="*"){this.dom.classList.value="";return}if(t.indexOf(" ")>=0){let o=t.split(" ");this.dom.classList.remove(...o)}else this.dom.classList.remove(t)}}removeClassEx(t){Array.from(this.dom.classList).forEach(r=>{r.match(t)&&this.dom.classList.remove(r)})}toggleClass(t){if(!t)return;let o=s(r=>{this.dom.classList.toggle(r)},"toggle");t.indexOf(" ")>=0?t.split(" ").forEach(o):o(t)}setClass(t,o=!0){return o?this.addClass(t):this.removeClass(t),this}setAttributes(t){for(let o in t)this.setAttribute(o,t[o]);return this}setAttribute(t,o){o==null?this.dom.removeAttribute(t):this.dom.setAttribute(t,""+o)}getAttribute(t){return this.dom.getAttribute(t)}getData(t){return this.getAttribute("data-"+t)}getIntData(t){let o=parseInt(this.getAttribute("data-"+t));if(Number.isFinite(o))return o}setData(t,o){return this.setAttribute("data-"+t,o)}setInternalData(t,o){return P(this,Te)||le(this,Te,new Map),P(this,Te).set(t,o),this}getInternalData(t){var o;return(o=P(this,Te))==null?void 0:o.get(t)}addDOMEvent(t,o,r=!1){Tt(this.dom,t,o,r)}setDOMEvents(t){for(let o in t)this.addDOMEvent(o,t[o])}mapPropEvents(t,...o){let r=t;o.forEach(n=>{Object.prototype.hasOwnProperty.call(r,n)&&r[n]&&this.on(n,r[n])})}clearContent(){let t=this.dom;for(;t.firstChild;)t.removeChild(t.firstChild)}setContent(t){this.clearContent(),this.appendContent(t)}appendContent(t){let o=s((r,n)=>{if(n instanceof d)r.appendChild(n.dom);else if(n instanceof Ae)r.insertAdjacentHTML("beforeend",n.toString());else if(typeof n=="string"||typeof n=="number"){let i=document.createTextNode(n.toString());r.appendChild(i)}else n&&console.warn("Unknown type to append: ",n)},"set");if(!Y(t))o(this.dom,t);else if(t.length<=8)for(let r of t)o(this.dom,r);else{let r=document.createDocumentFragment();for(let n of t)o(r,n);this.dom.appendChild(r)}}prependContent(t){let o=this.dom,r=s(n=>{n instanceof d?o.insertAdjacentElement("afterbegin",n.dom):n instanceof Ae?o.insertAdjacentHTML("afterbegin",n.toString()):typeof n=="string"||typeof n=="number"?o.insertAdjacentText("afterbegin",n.toString()):console.warn("Unknown type to append: ",n)},"set");if(!Y(t))r(t);else{let n=document.createDocumentFragment();for(let i of t)r(i);o.insertBefore(o.firstChild,n)}}removeChild(t){this.dom.removeChild(t.dom)}queryAll(t){let o=this.dom.querySelectorAll(t),r=new Array(o.length);return o.forEach((n,i)=>r[i]=$t(n)),r}query(t){let o=this.dom.querySelector(t);return T(o)}setAria(t,o){return this.setAttribute(t,o),this}setStyle(t){let o=this.dom.style;for(let r in t){let n=t[r];!Pt[r]&&(V(n)||Vn.test(n))&&(n+="px"),o[r]=n}return this}setStyleValue(t,o){let r=this.dom.style;if(V(o)){let n=o+"";Pt[t]||(n+="px"),r[t]=n}else r[t]=o;return this}getStyleValue(t){return this.dom.style[t]}setWidth(t){this.setStyleValue("width",V(t)?t+"px":t)}setHeight(t){this.setStyleValue("height",V(t)?t+"px":t)}setStyleVariable(t,o){this.dom.style.setProperty(t,o)}getStyleVariable(t){return this.getComputedStyle().getPropertyValue(t)}getComputedStyle(){return getComputedStyle(this.dom)}setCapture(t){this.dom.setPointerCapture(t)}releaseCapture(t){this.dom.releasePointerCapture(t)}getBoundingRect(){let t=this.dom.getBoundingClientRect();return new Me(t.x,t.y,t.width,t.height)}focus(){return this.dom.focus(),this}hasFocus(){return document.activeElement==this.dom}scrollIntoView(t){this.dom.scrollIntoView(t)}isVisible(){return this.dom.offsetParent!==null}show(t=!0){return this.setClass("x4hidden",!t),this}hide(){return this.show(!1),this}enable(t=!0){return this.setAttribute("disabled",t?null:"true"),(this.dom instanceof HTMLInputElement||this.dom instanceof HTMLButtonElement)&&(this.dom.disabled=!t),this.enumChildNodes(!0).forEach(r=>{(r instanceof HTMLInputElement||r instanceof HTMLButtonElement)&&(r.disabled=!t)}),this}disable(){return this.enable(!1),this}isDisabled(){return this.getAttribute("disabled")}nextElement(){let t=this.dom.nextElementSibling;return T(t)}prevElement(){let t=this.dom.previousElementSibling;return T(t)}parentElement(t){return d.parentElement(this.dom,t)}static parentElement(t,o){for(;t.parentElement;){let r=T(t.parentElement);if(!o||r&&r instanceof o)return r;t=t.parentElement}return null}firstChild(){let t=this.dom.firstElementChild;return T(t)}lastChild(){let t=this.dom.lastElementChild;return T(t)}enumChildComponents(t){let o=[];return this.enumChildNodes(t).forEach(n=>{let i=T(n);i&&o.push(i)}),o}enumChildNodes(t){return Array.from(t?this.dom.querySelectorAll("*"):this.dom.children)}animate(t,o){this.dom.animate(t,o)}static createElement(t,o,...r){let n;return t==this.createFragment||t===Dr?r:(t instanceof Function?(o=o!=null?o:{},!o.children&&r&&r.length&&(o.content=r),n=new t(o!=null?o:{})):n=new d({tag:t,content:r,...o}),r&&r.length,n)}static createFragment(){return this.createElement(Dr,null)}queryInterface(t){return null}};Te=new WeakMap,s(d,"Component"),d=u([p("x4")],d);function T(a){return a?a[Pr]:null}s(T,"componentFromDOM");function $t(a){let e=T(a);return e||new d({existingDOM:a})}s($t,"wrapDOM");var Mo=class Mo extends d{constructor(){super({})}};s(Mo,"Flex");var ne=Mo,Do=class Do extends d{constructor(e,t){super({width:e,cls:t})}};s(Do,"Space");var St=Do;var Tr=Symbol("socket"),Po=null,So=class So{getMaxTouchPoints(){return navigator.maxTouchPoints}};s(So,"Process");var To=So,Lt=class Lt extends re{env=new Map;mainview;constructor(){super(),console.assert(Po==null,"Application must be a singleton."),Po=this}setMainView(e){this.mainview=e,document.body.appendChild(e.dom),this._setupKeyboard()}static instance(){return Po}getMainView(){return this.mainview}setEnv(e,t){this.env.set(e,t)}getEnv(e,t){var o;return(o=this.env.get(e))!=null?o:t}static fireGlobal(e,t){Lt.instance().fire("global",{msg:e,params:t})}_setupKeyboard(){document.addEventListener("keydown",e=>{(e.key=="Tab"||e.key=="Enter")&&this.focusNext(!e.shiftKey)&&e.preventDefault()})}focusNext(e){let t=document.activeElement,o;for(;t!=document.body;){let n=T(t).queryInterface("tab-handler");if(n)return n.focusNext(e);t.classList.contains("x4box")&&(o=t),t=t.parentElement}if(o){let r=Mt(o);if(r.length){let n=r[0],i=r[r.length-1],l;if(!e&&document.activeElement===n?l=i:e&&document.activeElement===i&&(l=n),l)return l.focus(),!0}else return!0}return!1}setupSocketMessaging(e,t){let o=window.location.protocol==="https:"?"wss://":"ws://",r=e?o+e:`${o}${window.location.hostname}:${window.location.port}/ws`,n=0,i=null;this.on("global",l=>{Object.prototype.hasOwnProperty.call(l,Tr)||i&&i.send(JSON.stringify({msg:l.msg,params:l.params}))}),i=new WebSocket(r,"messaging"),i.onopen=()=>{console.log("websocket opened"),n=1},i.onmessage=l=>{if(l.data!="ping"){let c=JSON.parse(l.data);c[Tr]=!0,this.fire("global",c)}},i.onclose=l=>{console.log("websocket closed:",l),i=null,n&&(t(),n=0)}}getStorage(e){return localStorage.getItem(e)}getStorageJSON(e){try{return JSON.parse(localStorage.getItem(e))}catch{return}}setStorage(e,t){localStorage.setItem(e,t+"")}setStorageJSON(e,t){localStorage.setItem(e,JSON.stringify(t))}};s(Lt,"Application"),O(Lt,"process",new To);var Rt=Lt;function Se(a){return a.toString(16).padStart(2,"0")}s(Se,"hx");function gt(a){return Math.round(a)}s(gt,"round");var Lo=class Lo{rgb=[0,0,0,1];invalid=!1;constructor(...e){M(e[0])?this.setValue(e[0]):this.setRgb(e[0],e[1],e[2],e[3])}setValue(e){if(this.invalid=!1,e.length==4&&/#[0-9a-fA-F]{3}/.test(e)){let t=parseInt(e[1],16),o=parseInt(e[2],16),r=parseInt(e[3],16);return this.setRgb(t<<4|t,o<<4|o,r<<4|r,1)}if(e.length==7&&/#[0-9a-fA-F]{6}/.test(e)){let t=parseInt(e[1],16),o=parseInt(e[2],16),r=parseInt(e[3],16),n=parseInt(e[4],16),i=parseInt(e[5],16),l=parseInt(e[6],16);return this.setRgb(t<<4|o,r<<4|n,i<<4|l,1)}if(e.length==9&&/#[0-9a-fA-F]{8}/.test(e)){let t=parseInt(e[1],16),o=parseInt(e[2],16),r=parseInt(e[3],16),n=parseInt(e[4],16),i=parseInt(e[5],16),l=parseInt(e[6],16),c=parseInt(e[7],16),h=parseInt(e[8],16);return this.setRgb(t<<4|o,r<<4|n,i<<4|l,(c<<4|h)/255)}if(e.startsWith("rgba")){let o=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*((\d+)|(\d*\.\d+)|(\.\d+))\s*\)/.exec(e);if(o)return this.setRgb(parseInt(o[1]),parseInt(o[2]),parseInt(o[3]),parseFloat(o[4]))}else if(e.startsWith("rgb")){let o=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(e);if(o)return this.setRgb(parseInt(o[1]),parseInt(o[2]),parseInt(o[3]),1)}else if(e.startsWith("var")){let o=/var\s*\(([^)]*)\)/.exec(e);if(o){let r=o[1].trim(),i=getComputedStyle(document.documentElement).getPropertyValue(r);return this.setValue(i)}}return this.invalid=!0,this.setRgb(255,0,0,1)}setHsv(e,t,o,r=1){let n=Math.min(5,Math.floor(e*6)),i=e*6-n,l=o*(1-t),c=o*(1-i*t),h=o*(1-(1-i)*t),g,f,m;switch(n){case 0:g=o,f=h,m=l;break;case 1:g=c,f=o,m=l;break;case 2:g=l,f=o,m=h;break;case 3:g=l,f=c,m=o;break;case 4:g=h,f=l,m=o;break;case 5:g=o,f=l,m=c;break}return this.setRgb(g*255,f*255,m*255,r)}setRgb(e,t,o,r){return this.rgb=[G(e|0,0,255),G(t|0,0,255),G(o|0,0,255),G(r,0,1)],this}toRgbString(e){let t=this.rgb;return e===!1||t[3]==1?`rgb(${gt(t[0])},${gt(t[1])},${gt(t[2])})`:`rgba(${gt(t[0])},${gt(t[1])},${gt(t[2])},${t[3].toFixed(3)})`}toHexString(){let e=this.rgb;return e[3]==1?`#${Se(e[0])}${Se(e[1])}${Se(e[2])}`:`#${Se(e[0])}${Se(e[1])}${Se(e[2])}${Se(e[3]*255|0)}`}toRgb(){let e=this.rgb;return{red:e[0],green:e[1],blue:e[2],alpha:e[3]}}toHsv(){let e=this.toRgb();e.red/=255,e.green/=255,e.blue/=255;let t=Math.max(e.red,e.green,e.blue),o=Math.min(e.red,e.green,e.blue),r=t-o,n=t===0?0:r/t,i=t,l;if(r===0)l=0;else switch(t){case e.red:l=(e.green-e.blue)/r/6+(e.green<e.blue?1:0);break;case e.green:l=(e.blue-e.red)/r/6+1/3;break;case e.blue:l=(e.red-e.green)/r/6+2/3;break}return{hue:l,saturation:n,value:i,alpha:e.alpha}}getAlpha(){return this.rgb[3]}setAlpha(e){return this.rgb[3]=G(e,0,1),this}isInvalid(){return this.invalid}};s(Lo,"Color");var N=Lo;var zo=class zo{name;id;fields;constructor(e){this.name=e,this.id=void 0,this.fields=[]}};s(zo,"MetaInfos");var Ro=zo,Zt=Symbol("metaField");function Xt(a,e=!0){let t=a.constructor,o=Object.prototype.hasOwnProperty.call(t,Zt)?t[Zt]:void 0;if(o===void 0){e||console.assert(o!==void 0),o=new Ro(t.name);let r=Object.getPrototypeOf(t);if(r!=Jt){let n=r[Zt];o.fields=[...n.fields,...o.fields],console.assert(o.id===void 0,"cannot define mutiple record id"),o.id||(o.id=n.id)}a.constructor[Zt]=o}return o}s(Xt,"_getMetas");var Fo;(g=>{function a(){return(f,m)=>{let x=Xt(f);x.fields.push({name:m,type:"any",required:!0}),x.id=m}}g.id=a,s(a,"id");function e(f){return(m,x)=>{Xt(m).fields.push({name:x,...f})}}g.field=e,s(e,"field");function t(f){return e({...f,type:"string"})}g.string=t,s(t,"string");function o(f){return e({...f,type:"int"})}g.int=o,s(o,"int");function r(f){return e({...f,type:"float"})}g.float=r,s(r,"float");function n(f){return e({...f,type:"bool"})}g.bool=n,s(n,"bool");function i(f){return e({...f,type:"date"})}g.date=i,s(i,"date");function l(f){return e({...f,type:"calc"})}g.calc=l,s(l,"calc");function c(f,m){return g.field({...m,type:"array",model:f?new f:null})}g.array=c,s(c,"array");function h(f){return e({...f,type:"any"})}g.any=h,s(h,"any")})(Fo||(Fo={}));var Oo=class Oo{getFields(){return Xt(this,!1).fields}validate(e){let t=null;return this.getFields().forEach(r=>{r.required&&!this.getField(r.name,e)&&(t&&(t=[]),t.push(new Error(`field ${r.name} is required.`)))}),t}getFieldIndex(e){return this.getFields().findIndex(o=>o.name==e)}serialize(e){let t={};return this.getFields().forEach(o=>{o.calc===void 0&&(t[o.name]=e[o.name])}),t}unSerialize(e,t){let o=this.getFields(),r=new Ft;return o.forEach(n=>{let i=e[n.name];i!==void 0&&(r[n.name]=this._convertField(n,i))}),t!==void 0?r[o[0].name]=t:console.assert(this.getID(r)!==void 0),r}_convertField(e,t){switch(e.type){case"float":{let o=typeof t=="number"?t:parseFloat(t);if(e.prec!==void 0){let r=Math.pow(10,e.prec);o=Math.round(o*r)/r}return o}case"int":return typeof t=="number"?t:parseInt(t);case"date":return M(t)?new Date(t):t;case"array":{debugger;break}}return t}getID(e){if(!e)return null;let t=Xt(this,!1);return e[t.id]}getRaw(e,t){let o,r=this.getFields();if(typeof e=="string"){if(o=r.findIndex(i=>i.name==e),o<0){console.assert(!1,"unknown field: "+e);return}}else if(e<r.length){if(e<0)return;o=e}else{console.assert(!1,"bad field name: "+e);return}let n=r[o];return n.calc!==void 0?n.calc(t):t[n.name]}getField(e,t){let o=this.getRaw(e,t);return o==null?"":""+o}};s(Oo,"DataModel");var Jt=Oo,Vo=class Vo{};s(Vo,"DataRecord");var Ft=Vo,Ho=class Ho extends re{m_props;constructor(e){super(),this.m_props=e}async load(e){e?this.m_props.url=e:e=this.m_props.url,this.m_props.params&&(e+="?"+this.m_props.params.join("&"));let t=await fetch(e);if(t.ok){let o=await t.json(),r=o;this.m_props.solver&&(r=this.m_props.solver(r)),this.fire("change",{value:r,context:o})}}};s(Ho,"DataProxy");var eo=Ho,No=class No extends de{m_model;m_fields;m_records;m_proxy;m_rec_index;constructor(e){super(),this.m_fields=void 0,this.m_records=[],this.m_rec_index=null,this.m_model=e.model,this.m_fields=e.model.getFields(),e.data?this.setRawData(e.data):e.url&&(this.m_proxy=new eo({url:e.url,solver:e.solver}),this.m_proxy.on("change",t=>{this.setData(t.value)}),e.autoload!=!1&&this.m_proxy.load())}async load(e){return this.m_proxy.load(e)}async reload(){return this.m_proxy.load()}setData(e){let t=new Array(e.length);e.forEach((o,r)=>{t[r]=this.m_model.unSerialize(o)}),this.setRawData(t)}setRawData(e){this.m_records=e,this._rebuildIndex(),this.fire("data_change",{change_type:"change"})}_rebuildIndex(){this.m_rec_index=null,this.m_rec_index=this.createIndex(null),this.m_rec_index=this.sortIndex(this.m_rec_index,null)}update(e){let t=this.m_model.getID(e),o=this.indexOfId(t);return o<0?!1:(this.m_records[this.m_rec_index[o]]=e,this.fire("data_change",{change_type:"update",id:t}),!0)}append(e){e instanceof Ft||(e=this.m_model.unSerialize(e));let t=this.m_model.getID(e);console.assert(t!==void 0),this.m_records.push(e),this._rebuildIndex(),this.fire("data_change",{change_type:"create",id:t})}getMaxId(){let e,t=this.m_model;return this.m_records.forEach(o=>{let r=t.getID(o);(e===void 0||e<r)&&(e=r)}),e}delete(e){let t=this.indexOfId(e);return t<0?!1:(t=this.m_rec_index[t],this.m_records.splice(t,1),this._rebuildIndex(),this.fire("data_change",{change_type:"delete",id:e}),!0)}get count(){return this.m_rec_index?this.m_rec_index.length:this.m_records.length}get fields(){return this.m_fields}indexOfId(e){let t=this.m_model;for(let o=this.count,r=0;o!=0;o>>=1){let n=r+(o>>1),i=this.m_rec_index[n],l=t.getID(this.m_records[i]);if(l==e)return n;l<e&&(r=n+1,o--)}return-1}getById(e){let t=this.indexOfId(e);return t<0?null:(t=this.m_rec_index[t],this.m_records[t])}getByIndex(e){let t=this.m_rec_index[e];return this._getRecord(t)}_getRecord(e){var t;return(t=this.m_records[e])!=null?t:null}moveTo(e){e.setRawData(this.m_records)}createView(e){let t={...e,store:this};return new xt(t)}createIndex(e){if(e&&e.op==="empty-result")return new Uint32Array(0);let t=new Uint32Array(this.m_records.length),o=0;if(!e)this.forEach((f,m)=>{t[o++]=m});else if(typeof e.op=="function"){let f=e.op;this.forEach((m,x)=>{m&&f(m)&&(t[o++]=x)})}else{let x=function(R){return R<m},v=function(R){return R<=m},U=function(R){return R==m},w=function(R){return R!=m},S=function(R){return R>=m},J=function(R){return R>m},B=function(R){return fe.lastIndex=-1,fe.test(R)};var r=x,n=v,i=U,l=w,c=S,h=J,g=B;s(x,"_lt"),s(v,"_le"),s(U,"_eq"),s(w,"_neq"),s(S,"_ge"),s(J,"_gt"),s(B,"_re");let f=this.m_model.getFieldIndex(e.field);if(f<0)return console.assert(!1,"unknown field name in filter"),new Uint32Array(0);let m=e.value;M(m)&&!e.caseSensitive&&(m=m.toUpperCase());let L,fe;if(m instanceof RegExp)fe=m,L=B;else switch(e.op){case"<":{L=x;break}case"<=":{L=v;break}case"=":{L=U;break}case">=":{L=S;break}case">":{L=J;break}case"<>":{L=w;break}}let pt=this.m_model;this.forEach((R,qt)=>{if(!R)return;let ee=pt.getRaw(f,R);ee==null?ee="":(ee=""+ee,e.caseSensitive||(ee=ee.toUpperCase())),L(ee)&&(t[o++]=qt)})}return t.slice(0,o)}sortIndex(e,t){let o=0,r=[];if(t===null?r.push({fidx:0,asc:!0}):r=t.map(i=>{let l=this.m_model.getFieldIndex(i.field);return l==-1&&(console.assert(!1,"unknown field name in sort"),o++),{fidx:l,asc:i.ascending}}),o||r.length==0)return e;let n=this.m_model;if(r.length==1){let i=r[0].fidx;e.sort((l,c)=>{var f,m;let h=(f=n.getRaw(i,this.getByIndex(l)))!=null?f:"",g=(m=n.getRaw(i,this.getByIndex(c)))!=null?m:"";return h>g?1:h<g?-1:0}),r[0].asc||e.reverse()}else e.sort((i,l)=>{var c,h;for(let g=0;g<r.length;g++){let f=r[g].fidx,m=r[g].asc?1:-1,x=(c=n.getRaw(f,this.getByIndex(i)))!=null?c:"",v=(h=n.getRaw(f,this.getByIndex(l)))!=null?h:"";if(x>v)return m;if(x<v)return-m}return 0});return e}forEach(e){this.m_rec_index?this.m_rec_index.some((t,o)=>{if(e(this.m_records[t],o))return o}):this.m_records.some((t,o)=>{if(t&&e(t,o))return o})}export(){return this.m_records}changed(){this.fire("data_change",{change_type:"change"})}getModel(){return this.m_model}};s(No,"DataStore");var Bo=No,Uo=class Uo extends re{m_index;m_store;m_model;m_sort;m_filter;m_props;constructor(e){super(),this.m_props=e,this.m_store=e.store,this.m_index=null,this.m_filter=null,this.m_sort=null,this.m_model=this.m_store.getModel(),this.filter(e.filter),e.order?M(e.order)?this.sort([{field:e.order,ascending:!0}]):Y(e.order)?this.sort(e.order):this.sort([e.order]):this.sort(null),this.m_store.addListener("data_change",t=>this._storeChange(t))}_storeChange(e){this._filter(this.m_filter,e.type!="change"),this._sort(this.m_sort,e.type!="change"),this.fire("view_change",{change_type:"change"})}filter(e){return this.m_index=null,this._filter(e,!0)}_filter(e,t){return this.m_index=this.m_store.createIndex(e),this.m_filter=e,this.m_sort&&this.sort(this.m_sort),t&&this.fire("view_change",{change_type:"filter"}),this.m_index.length}sort(e){this._sort(e,!0)}_sort(e,t){this.m_index=this.m_store.sortIndex(this.m_index,e),this.m_sort=e,t&&this.fire("view_change",{change_type:"sort"})}getStore(){return this.m_store}getCount(){return this.m_index.length}indexOfId(e){let t=this.m_store.indexOfId(e);return this.m_index.findIndex(o=>o===t)}getByIndex(e){if(e>=0&&e<this.m_index.length){let t=this.m_index[e];return this.m_store.getByIndex(t)}return null}getIdByIndex(e){let t=this.getByIndex(e);return this.m_model.getID(t)}getRecId(e){return this.m_model.getID(e)}getById(e){return this.m_store.getById(e)}getModel(){return this.m_model}changed(){this.fire("view_change",{change_type:"change"})}forEach(e){this.m_index.some(t=>{let o=this.m_store.getByIndex(t);if(o&&e(o,t))return t})}};s(Uo,"DataView");var xt=Uo;var qo=Symbol("x-drag-cb"),Go=class Go{dragSource;dragGhost;dropTarget;notified;timer;registerDraggableElement(e){e.addDOMEvent("dragstart",t=>{this.dragSource=e,this.dragGhost=e.dom.cloneNode(!0),this.dragGhost.classList.add("dragged"),document.body.appendChild(this.dragGhost),e.addClass("dragging"),t.dataTransfer.setData("text/string","1"),t.dataTransfer.setDragImage(new Image,0,0),t.stopPropagation()}),e.addDOMEvent("drag",t=>{this.dragGhost.style.left=t.pageX+"px",this.dragGhost.style.top=t.pageY+"px"}),e.addDOMEvent("dragend",t=>{e.removeClass("dragging"),this.dragGhost.remove()}),e.setAttribute("draggable","true")}registerDropTarget(e,t,o){let r=s(c=>{if(o&&!o(this.dragSource,c.dataTransfer)){console.log("reject ",e),c.dataTransfer.dropEffect="none";return}console.log("accepted ",e),c.preventDefault(),c.dataTransfer.dropEffect="copy"},"dragEnter"),n=s(c=>{if(o&&!o(this.dragSource,c.dataTransfer)){console.log("reject ",e),c.dataTransfer.dropEffect="none";return}if(c.preventDefault(),this.dropTarget!=e&&(this.dropTarget=e,this._startCheck()),this.dropTarget){let h={pt:{x:c.pageX,y:c.pageY},data:c.dataTransfer};t("drag",this.dragSource,h)}c.dataTransfer.dropEffect="copy"},"dragOver"),i=s(c=>{this.dropTarget=null,c.preventDefault()},"dragLeave"),l=s(c=>{let h={pt:{x:c.pageX,y:c.pageY},data:c.dataTransfer};t("drop",this.dragSource,h),this.dropTarget=null,e.removeClass("drop-over"),c.preventDefault()},"drop");e.addDOMEvent("dragenter",r),e.addDOMEvent("dragover",n),e.addDOMEvent("dragleave",i),e.addDOMEvent("drop",l),e.setInternalData(qo,t)}_startCheck(){this.timer&&(clearInterval(this.timer),this._check()),this.timer=setInterval(()=>this._check(),300)}_check(){let e=s(o=>{o.removeClass("drop-over"),o.getInternalData(qo)("leave",this.dragSource)},"leaving"),t=s(o=>{o.addClass("drop-over"),o.getInternalData(qo)("enter",this.dragSource)},"entering");this.dropTarget?(!this.notified||this.notified!=this.dropTarget)&&(this.notified&&e(this.notified),this.notified=this.dropTarget,t(this.notified)):this.notified&&(e(this.notified),this.notified=null,clearInterval(this.timer))}};s(Go,"DragManager");var Ko=Go,Bt=new Ko;var jo=class jo{static create_element(e,t,...o){t=t||{};let r;return M(e)?(r=new d({tag:e}),Object.entries(t).forEach(([n,i])=>{n.startsWith("on")&&n.toLowerCase()in window?r.dom.addEventListener(n.toLowerCase().substring(2),i):r.setAttribute(n,i)})):r=new e(t),o&&o.length&&r.appendContent(o),r}};s(jo,"x4_react");var Wo=jo;function Sr(a,e=!1){if(a instanceof RegExp)return{keys:null,pattern:a};let t=a.split("/"),o=[],r="";t[0]==""&&t.shift();for(let n of t){let i=n[0];if(i==="*")o.push("wild"),r+="/(.*)";else if(i===":"){let l=n.indexOf("?",1),c=n.indexOf(".",1);o.push(n.substring(1,l>=0?l:c>=0?c:n.length)),r+=l>=0&&c<0?"(?:/([^/]+?))?":"/([^/]+?)",c>=0&&(r+=(l>=0?"?":"")+"\\"+n.substring(c))}else r+="/"+n}return{keys:o,pattern:new RegExp(`^${r}${e?"(?=$|/)":"/?$"}`,"i")}}s(Sr,"parseRoute");var Qo=class Qo extends de{m_routes;m_useHash;constructor(e=!0){super(),this.m_routes=[],this.m_useHash=e,window.addEventListener("popstate",t=>{let o=this._getLocation(),r=this._find(o);r.handlers.forEach(n=>{n(r.params,o)}),this.fire("change",{value:this._getLocation()})})}get(e,t){let{keys:o,pattern:r}=Sr(e);this.m_routes.push({keys:o,pattern:r,handler:t})}init(){this.navigate(this._getLocation())}_getLocation(){return this.m_useHash?"/"+document.location.hash.substring(1):document.location.pathname}navigate(e,t=!0,o=!1){e.startsWith("/")||(e="/"+e);let r=this._find(e);if(!r||r.handlers.length==0)return console.log("route not found: "+e),this.fire("error",{code:404,message:"route not found"}),!1;if(this.m_useHash){for(;e.at(0)=="/";)e=e.substring(1);e="#"+e}return o?window.history.replaceState({},"",e):window.history.pushState({},"",e),t&&r.handlers[0](r.params,e),this.fire("change",{value:this._getLocation()}),!0}_find(e){let t=[],o={},r=[];for(let n of this.m_routes)if(n.keys)if(n.keys.length>0){if(t=n.pattern.exec(e),t===null)continue;for(let i=0;i<n.keys.length;)o[n.keys[i]]=t[++i];r=[...r,n.handler]}else n.pattern.test(e)&&(r=[...r,n.handler]);else{if(t=n.pattern.exec(e),!t)continue;if(t.groups)for(let i in t.groups)o[i]=t.groups[i];r=[...r,n.handler]}return{params:o,handlers:r}}};s(Qo,"Router");var Yo=Qo;var Zo=class Zo{_state;_subscribers;_currentTracking;constructor(e){this._state=e?{...e}:{},this._subscribers=new Map,this._currentTracking=new Set}getState(e,t=null){this._currentTracking&&this._currentTracking.add(e);let o=e.split("."),r=this._state;for(let n of o){if((r==null?void 0:r[n])===void 0)return t;r=r[n]}return r}setState(e,t,o={}){let r=e.split("."),n=this._state;for(let i=0;i<r.length-1;i++){let l=r[i];(!n[l]||typeof n[l]!="object")&&(n[l]={}),n=n[l]}n[r[r.length-1]]=t,this._notifySubscribers(e,t)}};s(Zo,"StateManager");var $o=Zo;var Lr="http://www.w3.org/2000/svg";function Un(a){return a*Math.PI/180}s(Un,"d2r");function Rr(a,e,t,o){let r=Un(o);return{x:a+t*Math.cos(r),y:e+t*Math.sin(r)}}s(Rr,"p2c");function D(a){return Math.round(a*1e3)/1e3}s(D,"num");function to(a,...e){return e=e.map(t=>typeof t=="number"&&isFinite(t)?D(t):t),String.raw(a,...e)}s(to,"clean");var Xo=class Xo{_dom;constructor(e){this._dom=document.createElementNS("http://www.w3.org/2000/svg",e)}getDom(){return this._dom}reset(){let e=this._dom.attributes;for(let t=e.length-1;t>=0;t--)this._dom.removeAttribute(e[t].name);return this}stroke(e,t){return this.setAttr("stroke",e),t!==void 0&&this.setAttr("stroke-width",t+"px"),this}strokeWidth(e){return this.setAttr("stroke-width",e+"px"),this}strokeCap(e){return this.setAttr("stroke-linecap",e)}strokeOpacity(e){return this.setAttr("stroke-opacity",e+"")}antiAlias(e){return this.setAttr("shape-rendering",e?"auto":"crispEdges")}fill(e){return this.setAttr("fill",e),this}no_fill(){return this.setAttr("fill","transparent"),this}getAttr(e){return this._dom.getAttribute(e)}getNumAttr(e){return parseInt(this._dom.getAttribute(e))}setAttr(e,t){return this._dom.setAttribute(e,t),this}setStyle(e,t){let o=this._dom.style;if(V(t)){let r=t+"";Co(e)||(r+="px"),o[e]=r}else o[e]=t;return this}addClass(e){if(e){if(e=e.trim(),e.indexOf(" ")>=0){let t=e.split(" ");this._dom.classList.add(...t)}else this._dom.classList.add(e);return this}}removeClass(e){if(e){if(e.indexOf(" ")>=0){let t=e.split(" ");this._dom.classList.remove(...t)}else this._dom.classList.remove(e);return this}}clip(e){return this.setAttr("clip-path",`url(#${e})`),this}transform(e){var o;let t=(o=this.getAttr("transform"))!=null?o:"";return this.setAttr("transform",t+" "+e),this}clear_transform(){return this.setAttr("transform",null),this}rotate(e,t,o){return this.tra