x4js 1.5.21 → 1.5.23

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.
Files changed (65) hide show
  1. package/lib/cjs/index.js +1 -1
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/esm/index.mjs +1 -1
  4. package/lib/esm/index.mjs.map +1 -1
  5. package/lib/src/version.ts +1 -1
  6. package/lib/types/action.d.ts +57 -0
  7. package/lib/types/app_sockets.d.ts +29 -0
  8. package/lib/types/application.d.ts +104 -0
  9. package/lib/types/autocomplete.d.ts +58 -0
  10. package/lib/types/base_component.d.ts +88 -0
  11. package/lib/types/button.d.ts +151 -0
  12. package/lib/types/calendar.d.ts +82 -0
  13. package/lib/types/canvas.d.ts +92 -0
  14. package/lib/types/cardview.d.ts +87 -0
  15. package/lib/types/checkbox.d.ts +77 -0
  16. package/lib/types/color.d.ts +148 -0
  17. package/lib/types/colorpicker.d.ts +107 -0
  18. package/lib/types/combobox.d.ts +107 -0
  19. package/lib/types/component.d.ts +601 -0
  20. package/lib/types/datastore.d.ts +396 -0
  21. package/lib/types/dialog.d.ts +175 -0
  22. package/lib/types/dom_events.d.ts +302 -0
  23. package/lib/types/drag_manager.d.ts +54 -0
  24. package/lib/types/drawtext.d.ts +48 -0
  25. package/lib/types/fileupload.d.ts +64 -0
  26. package/lib/types/form.d.ts +133 -0
  27. package/lib/types/formatters.d.ts +35 -0
  28. package/lib/types/gridview.d.ts +175 -0
  29. package/lib/types/i18n.d.ts +73 -0
  30. package/lib/types/icon.d.ts +64 -0
  31. package/lib/types/image.d.ts +55 -0
  32. package/lib/types/index.d.ts +84 -0
  33. package/lib/types/input.d.ts +91 -0
  34. package/lib/types/label.d.ts +58 -0
  35. package/lib/types/layout.d.ts +87 -0
  36. package/lib/types/link.d.ts +50 -0
  37. package/lib/types/listview.d.ts +178 -0
  38. package/lib/types/md5.d.ts +61 -0
  39. package/lib/types/menu.d.ts +130 -0
  40. package/lib/types/messagebox.d.ts +69 -0
  41. package/lib/types/panel.d.ts +47 -0
  42. package/lib/types/popup.d.ts +75 -0
  43. package/lib/types/property_editor.d.ts +71 -0
  44. package/lib/types/radiobtn.d.ts +73 -0
  45. package/lib/types/rating.d.ts +53 -0
  46. package/lib/types/request.d.ts +52 -0
  47. package/lib/types/router.d.ts +42 -0
  48. package/lib/types/settings.d.ts +37 -0
  49. package/lib/types/sidebarview.d.ts +49 -0
  50. package/lib/types/spreadsheet.d.ts +222 -0
  51. package/lib/types/styles.d.ts +85 -0
  52. package/lib/types/svgcomponent.d.ts +215 -0
  53. package/lib/types/tabbar.d.ts +58 -0
  54. package/lib/types/tabview.d.ts +49 -0
  55. package/lib/types/textarea.d.ts +77 -0
  56. package/lib/types/textedit.d.ts +123 -0
  57. package/lib/types/toaster.d.ts +42 -0
  58. package/lib/types/tools.d.ts +394 -0
  59. package/lib/types/tooltips.d.ts +46 -0
  60. package/lib/types/treeview.d.ts +144 -0
  61. package/lib/types/version.d.ts +29 -0
  62. package/lib/types/x4dom.d.ts +49 -0
  63. package/lib/types/x4events.d.ts +269 -0
  64. package/lib/types/x4react.d.ts +41 -0
  65. package/package.json +3 -2
package/lib/esm/index.mjs CHANGED
@@ -6,7 +6,7 @@ var Gi=Object.defineProperty;var ys=(o,e,t)=>e in o?Gi(o,e,{enumerable:!0,config
6
6
  `,n="";this.m_columns.map(a=>{n.length&&(n+=i),n+=a.title}),t+=n+s;let r=this.m_dataview.count;for(let a=0;a<r;a++){let h=this.m_dataview.getByIndex(a);n="";let m=this.m_columns.map(c=>{let d=h.getField(c.id),p=c.formatter;p&&p instanceof Function&&(d=p(d,h)),n.length>0&&(n+=i),n+=d});t+=n+s}t=t.replace(/[àâä]/gm,"a"),t=t.replace(/[éèê]/gm,"e"),t=t.replace(/[îï]/gm,"i"),t=t.replace(/[ûüù]/gm,"u"),t=t.replace(/ /gm," "),os(t,"text/csv",e)}set empty_text(e){this.m_empty_msg.text=e}_renderCheck(e){let t="--x4-icon-square";return this.m_marks.has(e.getID())&&(t="--x4-icon-square-check"),new L({icon:`var(${t})`})}_toggleMark(e){let t=e.getID(),i=!1;this.m_marks.has(t)?this.m_marks.delete(t):(this.m_marks.add(t),i=!0),this.emit("gridCheck",nn(e,i)),this._buildItems(!1)}getMarks(){let e=[];for(let t of this.m_marks.values())e.push(t);return e}clearMarks(){this.m_marks.size&&(this.m_marks=new Set,this._buildItems(!1))}setFooterData(e){this.m_footer&&this.m_footer.enumChilds(t=>{let i=t.getData("col");if(i){let s=this.m_columns[i],n=e[s.id];if(n!==void 0)if(Z(n))n(t);else{let r,a=s.formatter;a&&a instanceof Function?r=a(n,e):r=n,t.setContent(r,!1)}}})}};l(Fi,"GridView");var ki=class extends u{constructor(e){super(e),this.setDomEvent("click",()=>this._handleClick()),this.mapPropEvents(e,"click")}_handleClick(){this.emit("click",ne())}render(e){let t=e.text??"",i=e.href??"#";this.setTag("a"),this.setAttribute("tabindex",0),this.setAttribute("href",i),this.setAttribute("target",e.target),t&&this.setContent(le(t)?t:st`<span>${t}</span>`)}set text(e){this.m_props.text=e,this.update()}};l(ki,"Link");var se=class{static hashStr(e,t=!1){return this.onePassHasher.start().appendStr(e).end(t)}static hashAsciiStr(e,t=!1){return this.onePassHasher.start().appendAsciiStr(e).end(t)}static _hex(e){let t=se.hexChars,i=se.hexOut,s,n,r,a;for(a=0;a<4;a+=1)for(n=a*8,s=e[a],r=0;r<8;r+=2)i[n+1+r]=t.charAt(s&15),s>>>=4,i[n+0+r]=t.charAt(s&15),s>>>=4;return i.join("")}static _md5cycle(e,t){let i=e[0],s=e[1],n=e[2],r=e[3];i+=(s&n|~s&r)+t[0]-680876936|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&n)+t[1]-389564586|0,r=(r<<12|r>>>20)+i|0,n+=(r&i|~r&s)+t[2]+606105819|0,n=(n<<17|n>>>15)+r|0,s+=(n&r|~n&i)+t[3]-1044525330|0,s=(s<<22|s>>>10)+n|0,i+=(s&n|~s&r)+t[4]-176418897|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&n)+t[5]+1200080426|0,r=(r<<12|r>>>20)+i|0,n+=(r&i|~r&s)+t[6]-1473231341|0,n=(n<<17|n>>>15)+r|0,s+=(n&r|~n&i)+t[7]-45705983|0,s=(s<<22|s>>>10)+n|0,i+=(s&n|~s&r)+t[8]+1770035416|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&n)+t[9]-1958414417|0,r=(r<<12|r>>>20)+i|0,n+=(r&i|~r&s)+t[10]-42063|0,n=(n<<17|n>>>15)+r|0,s+=(n&r|~n&i)+t[11]-1990404162|0,s=(s<<22|s>>>10)+n|0,i+=(s&n|~s&r)+t[12]+1804603682|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&n)+t[13]-40341101|0,r=(r<<12|r>>>20)+i|0,n+=(r&i|~r&s)+t[14]-1502002290|0,n=(n<<17|n>>>15)+r|0,s+=(n&r|~n&i)+t[15]+1236535329|0,s=(s<<22|s>>>10)+n|0,i+=(s&r|n&~r)+t[1]-165796510|0,i=(i<<5|i>>>27)+s|0,r+=(i&n|s&~n)+t[6]-1069501632|0,r=(r<<9|r>>>23)+i|0,n+=(r&s|i&~s)+t[11]+643717713|0,n=(n<<14|n>>>18)+r|0,s+=(n&i|r&~i)+t[0]-373897302|0,s=(s<<20|s>>>12)+n|0,i+=(s&r|n&~r)+t[5]-701558691|0,i=(i<<5|i>>>27)+s|0,r+=(i&n|s&~n)+t[10]+38016083|0,r=(r<<9|r>>>23)+i|0,n+=(r&s|i&~s)+t[15]-660478335|0,n=(n<<14|n>>>18)+r|0,s+=(n&i|r&~i)+t[4]-405537848|0,s=(s<<20|s>>>12)+n|0,i+=(s&r|n&~r)+t[9]+568446438|0,i=(i<<5|i>>>27)+s|0,r+=(i&n|s&~n)+t[14]-1019803690|0,r=(r<<9|r>>>23)+i|0,n+=(r&s|i&~s)+t[3]-187363961|0,n=(n<<14|n>>>18)+r|0,s+=(n&i|r&~i)+t[8]+1163531501|0,s=(s<<20|s>>>12)+n|0,i+=(s&r|n&~r)+t[13]-1444681467|0,i=(i<<5|i>>>27)+s|0,r+=(i&n|s&~n)+t[2]-51403784|0,r=(r<<9|r>>>23)+i|0,n+=(r&s|i&~s)+t[7]+1735328473|0,n=(n<<14|n>>>18)+r|0,s+=(n&i|r&~i)+t[12]-1926607734|0,s=(s<<20|s>>>12)+n|0,i+=(s^n^r)+t[5]-378558|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^n)+t[8]-2022574463|0,r=(r<<11|r>>>21)+i|0,n+=(r^i^s)+t[11]+1839030562|0,n=(n<<16|n>>>16)+r|0,s+=(n^r^i)+t[14]-35309556|0,s=(s<<23|s>>>9)+n|0,i+=(s^n^r)+t[1]-1530992060|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^n)+t[4]+1272893353|0,r=(r<<11|r>>>21)+i|0,n+=(r^i^s)+t[7]-155497632|0,n=(n<<16|n>>>16)+r|0,s+=(n^r^i)+t[10]-1094730640|0,s=(s<<23|s>>>9)+n|0,i+=(s^n^r)+t[13]+681279174|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^n)+t[0]-358537222|0,r=(r<<11|r>>>21)+i|0,n+=(r^i^s)+t[3]-722521979|0,n=(n<<16|n>>>16)+r|0,s+=(n^r^i)+t[6]+76029189|0,s=(s<<23|s>>>9)+n|0,i+=(s^n^r)+t[9]-640364487|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^n)+t[12]-421815835|0,r=(r<<11|r>>>21)+i|0,n+=(r^i^s)+t[15]+530742520|0,n=(n<<16|n>>>16)+r|0,s+=(n^r^i)+t[2]-995338651|0,s=(s<<23|s>>>9)+n|0,i+=(n^(s|~r))+t[0]-198630844|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~n))+t[7]+1126891415|0,r=(r<<10|r>>>22)+i|0,n+=(i^(r|~s))+t[14]-1416354905|0,n=(n<<15|n>>>17)+r|0,s+=(r^(n|~i))+t[5]-57434055|0,s=(s<<21|s>>>11)+n|0,i+=(n^(s|~r))+t[12]+1700485571|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~n))+t[3]-1894986606|0,r=(r<<10|r>>>22)+i|0,n+=(i^(r|~s))+t[10]-1051523|0,n=(n<<15|n>>>17)+r|0,s+=(r^(n|~i))+t[1]-2054922799|0,s=(s<<21|s>>>11)+n|0,i+=(n^(s|~r))+t[8]+1873313359|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~n))+t[15]-30611744|0,r=(r<<10|r>>>22)+i|0,n+=(i^(r|~s))+t[6]-1560198380|0,n=(n<<15|n>>>17)+r|0,s+=(r^(n|~i))+t[13]+1309151649|0,s=(s<<21|s>>>11)+n|0,i+=(n^(s|~r))+t[4]-145523070|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~n))+t[11]-1120210379|0,r=(r<<10|r>>>22)+i|0,n+=(i^(r|~s))+t[2]+718787259|0,n=(n<<15|n>>>17)+r|0,s+=(r^(n|~i))+t[9]-343485551|0,s=(s<<21|s>>>11)+n|0,e[0]=i+e[0]|0,e[1]=s+e[1]|0,e[2]=n+e[2]|0,e[3]=r+e[3]|0}_dataLength;_bufferLength;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(se.stateIdentity),this}appendStr(e){let t=this._buffer8,i=this._buffer32,s=this._bufferLength,n,r;for(r=0;r<e.length;r+=1){if(n=e.charCodeAt(r),n<128)t[s++]=n;else if(n<2048)t[s++]=(n>>>6)+192,t[s++]=n&63|128;else if(n<55296||n>56319)t[s++]=(n>>>12)+224,t[s++]=n>>>6&63|128,t[s++]=n&63|128;else{if(n=(n-55296)*1024+(e.charCodeAt(++r)-56320)+65536,n>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");t[s++]=(n>>>18)+240,t[s++]=n>>>12&63|128,t[s++]=n>>>6&63|128,t[s++]=n&63|128}s>=64&&(this._dataLength+=64,se._md5cycle(this._state,i),s-=64,i[0]=i[16])}return this._bufferLength=s,this}appendAsciiStr(e){let t=this._buffer8,i=this._buffer32,s=this._bufferLength,n,r=0;for(;;){for(n=Math.min(e.length-r,64-s);n--;)t[s++]=e.charCodeAt(r++);if(s<64)break;this._dataLength+=64,se._md5cycle(this._state,i),s=0}return this._bufferLength=s,this}appendByteArray(e){let t=this._buffer8,i=this._buffer32,s=this._bufferLength,n,r=0;for(;;){for(n=Math.min(e.length-r,64-s);n--;)t[s++]=e[r++];if(s<64)break;this._dataLength+=64,se._md5cycle(this._state,i),s=0}return this._bufferLength=s,this}getState(){let e=this,t=e._state;return{buffer:String.fromCharCode.apply(null,e._buffer8),buflen:e._bufferLength,length:e._dataLength,state:[t[0],t[1],t[2],t[3]]}}setState(e){let t=e.buffer,i=e.state,s=this._state,n;for(this._dataLength=e.length,this._bufferLength=e.buflen,s[0]=i[0],s[1]=i[1],s[2]=i[2],s[3]=i[3],n=0;n<t.length;n+=1)this._buffer8[n]=t.charCodeAt(n)}end(e=!1){let t=this._bufferLength,i=this._buffer8,s=this._buffer32,n=(t>>2)+1,r;if(this._dataLength+=t,i[t]=128,i[t+1]=i[t+2]=i[t+3]=0,s.set(se.buffer32Identity.subarray(n),n),t>55&&(se._md5cycle(this._state,s),s.set(se.buffer32Identity)),r=this._dataLength*8,r<=4294967295)s[14]=r;else{let a=r.toString(16).match(/(.*?)(.{0,8})$/);if(a===null)return;let h=parseInt(a[2],16),m=parseInt(a[1],16)||0;s[14]=h,s[15]=m}return se._md5cycle(this._state,s),e?this._state:se._hex(this._state)}},Me=se;l(Me,"Md5"),k(Me,"stateIdentity",new Int32Array([1732584193,-271733879,-1732584194,271733878])),k(Me,"buffer32Identity",new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])),k(Me,"hexChars","0123456789abcdef"),k(Me,"hexOut",[]),k(Me,"onePassHasher",new se);var Pe=class extends De{m_label;constructor(e){let t=e.icon??"var( --x4-icon-exclamation )";e.icon=void 0;let i=e.buttons===void 0?["ok"]:e.buttons;e.buttons=void 0,super(e);let s=e.message;this.form.updateContent(new w({style:{padding:8},content:[t?new L({cls:"icon",icon:t}):null,this.m_label=new I({cls:"text",text:s,multiline:!0})]}),i),this.on("btnClick",n=>{this.m_props.click&&ue(()=>{this.m_props.click(n.button)})})}set text(e){this.m_label.text=e}static show(e){let t;return B(e)||le(e)?t=new Pe({message:e,click:()=>{}}):t=new Pe(e),t.show(),t}static async showAsync(e){return new Promise((t,i)=>{let s,n=l(a=>{t(a)},"cb");B(e)||le(e)?s={message:e,click:n}:s={...e,click:n},new Pe(s).show()})}static alert(e,t=null){new Pe({cls:"warning",title:t,message:e,buttons:["ok"],click:()=>{}}).show()}};l(Pe,"MessageBox");var Ye=class extends De{m_edit;constructor(e){e.buttons=void 0,e.width=e.width??500,super(e),this.form.updateContent(new w({cls:"panel",content:[this.m_edit=new U({flex:1,autoFocus:!0,label:e.message,value:e.value})]}),["ok","cancel"]),e.click&&this.on("btnClick",t=>{t.button==="ok"&&ue(()=>{this.m_props.click(this.m_edit.value)})})}set text(e){this.m_edit.label=e}static show(e,t){let i;return B(e)||le(e)?i=new Ye({message:e,click:t}):i=new Ye(e),i.show(),i}};l(Ye,"PromptDialogBox");var Ii=class extends H{m_ui_title;m_ui_body;constructor(e){super(e);let t=e?.sens=="horizontal"?"@hlayout":"@vlayout";this.m_ui_title=new I({cls:"title",text:this.m_props.title}),this.m_ui_body=new u({cls:"body "+t,content:this.m_props.content,style:e.bodyStyle})}render(){let e=this.m_props.gadgets??[],t=this.m_props.icon?new L({icon:this.m_props.icon}):null;super.setContent([new w({cls:"title",content:[t,this.m_ui_title,...e]}),this.m_ui_body])}setContent(e){this.m_ui_body.setContent(e)}set title(e){this.m_ui_title.text=e}};l(Ii,"Panel");var vt=class{text;cls};l(vt,"CellData"),k(vt,"empty_cell",{text:""});var Ct=class extends H{m_columns;m_row_limit;m_cells_data;m_rows_data;m_view;m_container;m_header;m_itemHeight;m_topIndex;m_visible_cells;m_row_count;m_selection;m_editor;m_autoedit;m_lockupdate;m_auto_row_count;m_recycler;m_used_cells;constructor(e){super(e),this.m_columns=e.columns,this.m_autoedit=e.autoedit,this.m_lockupdate=0,this.m_cells_data=new Map,this.m_rows_data=new Map,this.m_itemHeight=0,this.m_selection={row:0,col:0},this.m_row_count=0,this.m_auto_row_count=!1,this.m_recycler=[],this.m_used_cells=[],e.maxrows===void 0?(this.m_row_limit=0,this.m_auto_row_count=!0):e.maxrows<0?(this.m_row_limit=0,this.m_auto_row_count=!0):this.m_row_limit=e.maxrows,this.setAttribute("tabindex",0),this.setDomEvent("click",t=>this._itemClick(t)),this.setDomEvent("dblclick",t=>this._itemDblClick(t)),this.setDomEvent("keydown",t=>this._handleKey(t)),this.setDomEvent("keypress",t=>this._keyPress(t)),this.setDomEvent("focus",()=>this._focus(!0)),this.setDomEvent("focusout",()=>this._focus(!1)),this.setDomEvent("contextmenu",t=>this._ctxMenu(t)),this.mapPropEvents(e,"dblClick","selectionChange","contextMenu","change")}componentCreated(){super.componentCreated(),this._updateScroll(!0)}setColWidth(e,t){this._on_col_resize(e,t),this.update(10)}getColWidth(e){if(this.m_columns[e])return this.m_columns[e].width}setColTitle(e,t){console.assert(this.m_columns[e]!==void 0),this.m_columns[e].title=t,this.update(10)}reset(e){e&&(this.m_columns=e),this.m_cells_data=new Map,this.m_rows_data=new Map,this.update(10)}insertRow(e){let t=new Map;this.m_cells_data.forEach((s,n)=>{let{row:r,col:a}=qt(n);r>=e?t.set(xe(r+1,a),s):t.set(n,s)});let i=new Map;this.m_rows_data.forEach((s,n)=>{n>=e?i.set(n+1,s):i.set(n,s)}),this.m_cells_data=t,this.m_rows_data=i,this._buildItems()}deleteRow(e){let t=new Map,i=new Map;this.m_cells_data.forEach((s,n)=>{let{row:r,col:a}=qt(n);r>e?t.set(xe(r-1,a),s):r<e&&t.set(n,s)}),this.m_rows_data.forEach((s,n)=>{n>e?i.set(n-1,s):n<e&&i.set(n,s)}),this.m_cells_data=t,this.m_rows_data=i,this._buildItems()}insertCol(e,t){let i=e;if(i<0&&(i=this.m_columns.length+1),this.m_columns.splice(i,0,t),e>=0){let s=new Map;this.m_cells_data.forEach((n,r)=>{let{row:a,col:h}=qt(r);h>=e?s.set(xe(a,h+1),n):s.set(r,n)}),this.m_cells_data=s}this.update()}deleteCol(e){this.m_columns.splice(e,1);let t=new Map;this.m_cells_data.forEach((i,s)=>{let{row:n,col:r}=qt(s);r>e?t.set(xe(n,r-1),i):r<e&&t.set(s,i)}),this.m_cells_data=t,this.update()}_getCellData(e,t,i=!1){let s=this.m_cells_data.get(xe(e,t));return s===void 0?i?null:vt.empty_cell:s}_focus(e){this.setClass("@focus",e)}_ctxMenu(e){let t=e.target,i=this.dom;for(;t&&t!=i;){let s=u.getElement(t),n=s.getData("row-id"),r=s.getData("col-id");if(n!==void 0){this._selectItem(n,r),this.emit("contextMenu",fe(e,{row:n,col:r,item:s})),e.preventDefault();return}t=t.parentElement}}render(){this.m_recycler=[],this.m_container=new u({cls:"content"}),this.m_view=new u({cls:"@scroll-view",flex:1,dom_events:{sizechange:()=>this._updateScroll(!0),scroll:()=>this._updateScroll(!1)},content:this.m_container});let e=this.m_columns.map((t,i)=>{let s=new u({cls:"@cell c"+i,content:t.title?t.title:"&nbsp",flex:t.width<0?-t.width:void 0,attrs:{title:t.title},style:{width:t.width>=0?t.width:void 0,minWidth:t.min_width}});return new ve({target:s,sens:"right",resize:n=>{this._on_col_resize(i,n.size.width)}}),t.$col=s,s});this.m_header=new w({cls:"@header",content:e}),this.setContent([this.m_header,this.m_view])}_on_col_resize(e,t){this.m_columns[e]&&(t<=0?this.m_columns[e].width=-1:this.m_columns[e].width=t,this._updateScroll(!0))}_computeItemHeight(){let e=f.createElement("div");e.classList.add("x-spreadsheet");let t=f.createElement("div");t.classList.add("content");let i=f.createElement("div");i.classList.add("x-cell"),i.append("&nbsp;"),t.appendChild(i),e.appendChild(t),this.dom.appendChild(e);let s=i.getBoundingClientRect();this.dom.removeChild(e),this.m_itemHeight=s.height}_calcColWidths(e){let t=0,i=0,s=new Int32Array(this.m_columns.length),n=new Int32Array(this.m_columns.length),r=new Int32Array(this.m_columns.length);if(this.m_columns.forEach((a,h)=>{let m=Math.max(10,a.min_width??0);if(a.width>0){let c=Math.max(a.width,m);t+=c,s[h]=c}else{let c=-a.width;n[h]=c,i+=c}r[h]=m}),i){let a=e-t;for(let h=0;h<this.m_columns.length&&i;h++)if(!s[h]){let m=Math.round(a/i)*n[h];m<r[h]&&(m=r[h]),s[h]=m,a-=m,i-=n[h]}}return s}_createCell(){let e;return this.m_recycler.length?(e=this.m_recycler.pop(),e.clearClasses(),e.addClass("@comp")):e=new u({cls:"@cell"}),e.dom||this.m_container.appendChild(e),e}_buildItems(){let e=this.getBoundingRect(),t=this.m_header.getBoundingRect(),i=e.height-t.height;this.m_itemHeight==0&&this._computeItemHeight();let s=this.m_topIndex*this.m_itemHeight,n=0,r=0,a=this.m_topIndex,h=this.m_row_limit;this.m_auto_row_count&&(this.m_row_limit=h=this.getMaxRowCount());let m=0;if(h*this.m_itemHeight>i){let x=u.getScrollbarSize();e.width-=x,m=x}let c=!!(this.m_topIndex&1);this.m_visible_cells=new Map,this.m_used_cells.forEach(x=>{this.m_recycler.push(x)}),this.m_used_cells=[];let d=this._calcColWidths(e.width),p=0;for(let x=0;x<d.length;x++)p+=d[x];p<=e.width?(this.m_view.setStyleValue("overflow-x","hidden"),this.m_header.setStyleValue("width",e.width),this.m_container.setStyleValue("width",e.width),this.m_container.setStyle({height:h*this.m_itemHeight})):(this.m_header.setStyleValue("width",p),this.m_container.setStyleValue("width",p),this.m_view.setStyleValue("overflow-x","visible"),this.m_container.setStyle({height:h*this.m_itemHeight,width:p})),this.m_view.addClass("@hidden");let g=100;for(;n<i&&a<h&&--g>0;){let x=this.m_rows_data.get(a),_=0,F=this.m_columns.map((S,E)=>{let W="@cell c"+E;S.align&&(W+=" "+S.align),S.cls&&(W+=" "+S.cls);let A,b=this._getCellData(a,E),y=b.text;return S.renderer&&y.length&&(y=S.renderer(y,{row:a,col:E})),W+=c?" even":" odd",x&&(W+=" "+x),A=this._createCell(),this.m_used_cells.push(A),A.setContent(y),A.addClass(W),A.setStyle({left:_,top:s+n,width:d[E],height:this.m_itemHeight}),this.m_selection.row==a&&this.m_selection.col==E&&A.addClass("@selected"),A.setData("row-id",a),A.setData("col-id",E),b.cls&&A.addClass(b.cls),this.m_visible_cells.set(xe(a,E),A),_+=d[E],A});c=!c,n+=this.m_itemHeight,a++,r++}this.m_recycler.forEach(x=>{x.addClass("@hidden")}),this.m_row_count=r,this.m_view.removeClass("@hidden"),this.setClass("empty",h==0)}_itemClick(e){let t=e.target;if(this.m_editor&&this.m_editor.dom.contains(t))return;let i=u.getElement(t,u);if(!i)return;let s=i.getData("row-id"),n=i.getData("col-id");s===void 0||n===void 0||this._selectItem(s,n)}_itemDblClick(e){let t=e.target;if(this.m_editor&&this.m_editor.dom.contains(t))return;let i=u.getElement(t),s=i.getData("row-id"),n=i.getData("col-id");s===void 0||n===void 0||(this.emit("dblClick",ke({row:s,col:n})),this.editCell(s,n))}_selectItem(e,t,i){e<0&&(e=0),e>this.m_row_limit-1&&(e=this.m_row_limit-1),t<0&&(t=0);let s=this.m_columns.length-1;t>s&&(t=s),!(this.m_selection.row==e&&this.m_selection.col==t)&&this.select(e,t,i)}_scrollIntoView(e,t){let i=l((n,r="nearest")=>{n.scrollIntoView({block:r})},"doscroll"),s=this.m_topIndex+this.m_row_count-1;e<this.m_topIndex?(this.m_topIndex=e,this.m_view.dom.scrollTop=this.m_topIndex*this.m_itemHeight,this._buildItems(),i(this._findItem(e,t),"start")):e>s?(this.m_topIndex=e-this.m_row_count+1,this.m_view.dom.scrollTop=this.m_topIndex*this.m_itemHeight,this._buildItems(),i(this._findItem(e,t),"end")):i(this._findItem(e,t))}_findItem(e,t){return this.m_visible_cells?this.m_visible_cells.get(xe(e,t)):null}_updateScroll(e){if(!this?.m_view?.dom)return;let t=Math.floor(this.m_view.dom.scrollTop/(this.m_itemHeight||1));(t!=this.m_topIndex||e)&&(this.m_topIndex=t,this._buildItems());let i=this.m_view.dom.scrollLeft;this.m_header.setStyleValue("left",-i)}_moveSel(e,t){let i=this.m_selection,s=i.row??0,n=i.col??0;if(e==1?s++:e==-1?s--:e==2?s+=this.m_row_count-1:e==-2?s-=this.m_row_count-1:e==3?s=this.m_row_limit-1:e==-3&&(s=0),t==1)n++;else if(t==-1)n--;else if(t==2)n=this.m_columns.length-1;else if(t==-2)n=0;else if(t==3){n++;let r=this.m_columns.length-1;e:for(let a=0;a<2;a++){for(;n<r;){if(this.m_columns[n].createEditor!==null)break e;n++}n>r&&(s++,n=0)}}else if(t==-3){n--;let r=this.m_columns.length-1;e:for(let a=0;a<2;a++){for(;n>=0;){if(this.m_columns[n].createEditor!==null)break e;n--}n<0&&(s--,n=r)}}this._selectItem(s,n,!0)}_handleKey(e){let t=e.target;if(!(this.m_editor&&this.m_editor.dom.contains(t)))switch(e.key){case"ArrowDown":case"Down":{this._moveSel(1,0);break}case"ArrowUp":case"Up":{this._moveSel(-1,0);break}case"PageUp":{this._moveSel(-2,0);break}case"PageDown":{this._moveSel(2,0);break}case"ArrowLeft":case"Left":{this._moveSel(0,-1);break}case"ArrowRight":case"Right":{this._moveSel(0,1);break}case"Home":{e.ctrlKey?this._moveSel(-3,0):this._moveSel(0,-2);break}case"End":{e.ctrlKey?this._moveSel(3,0):this._moveSel(0,2);break}case"Enter":{this.editCurCell(),e.stopPropagation(),e.preventDefault();break}case"Delete":{this.clearCell(this.m_selection.row,this.m_selection.col);break}default:break}}_keyPress(e){let t=e.target;this.m_editor&&this.m_editor.dom.contains(t)||e.ctrlKey||e.altKey||this.editCurCell(e.key)}getSelection(){return this.m_selection}select(e,t,i=!0){if(this.m_selection.row==e&&this.m_selection.col==t)return;let s=this._findItem(this.m_selection.row,this.m_selection.col);s&&s.removeClass("@selected"),this.m_selection={row:e,col:t},i&&this._scrollIntoView(e,t);let n=this._findItem(e,t);n&&n.addClass("@selected"),this.emit("selectionChange",ie({row:e,col:t}))}rowCount(){return this.m_row_limit}getMaxRowCount(){let e=0;return this.m_cells_data.forEach((t,i)=>{let s=Math.round(i/1e3)+1;e<s&&(e=s)}),e}getColCount(){return this.m_columns.length}setRowStyle(e,t){this.m_rows_data.set(e,t),this.m_lockupdate==0&&this._buildItems()}getRowStyle(e){return this.m_rows_data.get(e)}setCellStyle(e,t,i){let s=this._getCellData(e,t,!0);if(s||(s={text:""},this.m_cells_data.set(xe(e,t),s)),s.cls=i,this.m_lockupdate==0&&this.m_visible_cells){let n=this._findItem(e,t);n?n.setClass(i,!0):this._buildItems()}}getCellText(e,t){return this._getCellData(e,t).text}getCellNumber(e,t){let i=this._getCellData(e,t).text;return rs(i)}clearRow(e){for(let t=0;t<this.m_columns.length;t++)this.clearCell(e,t);this.update(10)}clearCell(e,t){this.setCellText(e,t,null)}editCurCell(e){this.editCell(this.m_selection.row,this.m_selection.col,e)}editCell(e,t,i){if(!this.m_autoedit||this.m_columns[t].createEditor===null)return;this._scrollIntoView(e,t);let n=this._findItem(e,t).dom,r=n.parentElement,a=n.getBoundingClientRect(),h=r.getBoundingClientRect(),m=this._getCellData(e,t,!0),c=l((p,g,x)=>new U(p),"edtBuilder");this.m_columns[t].createEditor&&(c=this.m_columns[t].createEditor);let d=i||(m?m.text:"");this.m_editor=c({cls:"@editor",style:{left:a.left-h.left,top:a.top-h.top,width:a.width-1,height:a.height-1},tabIndex:!1,value:d,data:{row:e,col:t}},e,t),this.m_editor&&(r.appendChild(this.m_editor._build()),this._setupEditor(),this.m_editor.setData("old-value",d),this.m_editor.focus(),this.m_editor instanceof U&&this.m_editor.selectAll())}_setupEditor(){let e=l((t,i)=>{ls(()=>{this.killEditor(!0),this._moveSel(t,i),this.editCurCell()})},"movesel");if(this.m_editor instanceof U){let i=this.m_editor.input;i.setDomEvent("blur",()=>{this.killEditor(!0)}),i.setDomEvent("keydown",s=>{if(!s.defaultPrevented)switch(s.key){case"Escape":{this.killEditor(!1),s.stopPropagation(),s.preventDefault();break}case"Enter":case"Tab":{let n=3;s.shiftKey&&(n=-3),e(0,n),s.stopPropagation(),s.preventDefault();break}case"ArrowUp":case"Up":{e(-1,0),s.stopPropagation(),s.preventDefault();break}case"ArrowDown":case"Down":{e(1,0),s.stopPropagation(),s.preventDefault();break}}})}else if(this.m_editor instanceof qe){let t=this.m_editor.input;t.setDomEvent("blur",()=>{this.killEditor(!0)}),t.setDomEvent("keydown",i=>{switch(i.key){case"Escape":{this.killEditor(!1),i.stopPropagation(),i.preventDefault();break}case"Enter":case"Tab":{let s=3;i.shiftKey&&(s=-3),e(0,s),i.stopPropagation(),i.preventDefault();break}}}),this.m_editor.showPopup(),this.m_editor.on("change",i=>{this.killEditor(!0)}),this.m_editor.on("cancel",i=>{this.killEditor(!1)})}}killEditor(e){if(this.m_editor){if(e){let i,s;this.m_editor instanceof U?i=this.m_editor.value:this.m_editor instanceof qe&&(s=this.m_editor.value,i=this.m_editor.valueText);let n=this.m_editor.getData("row"),r=this.m_editor.getData("col"),a=this.m_editor.getData("old-value");this.setCellText(n,r,i);let h=M(i,{row:n,col:r,oldValue:a,id:s});this.emit("change",h),h.defaultPrevented&&this.setCellText(n,r,a)}let t=this.m_editor;ue(()=>{t.dispose()}),this.m_editor=null,this.focus()}}clearData(){this.m_cells_data=new Map,this.m_rows_data=new Map}setCellText(e,t,i){if(i==null||i.length==0)this.m_cells_data.delete(xe(e,t)),i="";else{let s=this._getCellData(e,t,!0);s||(s={}),s.text=i,this.m_cells_data.set(xe(e,t),s)}if(this.m_lockupdate==0&&this.m_visible_cells){let s=this._findItem(e,t);s?(this.m_columns[t].renderer&&(i=this.m_columns[t].renderer(i,{row:e,col:t})),s.setContent(i)):this._buildItems()}}lockUpdate(e){e?this.m_lockupdate++:--this.m_lockupdate==0&&this._updateScroll(!0)}};l(Ct,"Spreadsheet");function xe(o,e){return o*1e3+e}l(xe,"_mkid");function qt(o){return{row:Math.floor(o/1e3)|0,col:o%1e3|0}}l(qt,"_getid");var Di=class extends u{m_fields;m_record;m_sheet;m_label_w;constructor(e){super(e),this.mapPropEvents(e,"change")}render(e){this.m_record=e.record,this.m_fields=e.fields??[],this.m_label_w=e.labelWidth,this.m_sheet=new Ct({cls:"@fit",columns:[{title:D.global.property,width:this.m_label_w>0?this.m_label_w:-1,cls:"property"},{title:D.global.value,width:-1,createEditor:(...t)=>this._editCell(...t),renderer:(...t)=>this._renderCell(...t)}],autoedit:!0,change:t=>this._cellChange(t)}),this._updateProperties(),this.setContent(this.m_sheet)}setFields(e){e?(this.m_fields=e,this._updateProperties()):this.m_sheet.clearData()}setRecord(e){this.m_record=e,this._updateProperties()}_updateProperties(){this.m_sheet.lockUpdate(!0),this.m_sheet.clearData(),this.m_fields.forEach((e,t)=>{this.m_sheet.setCellText(t,0,e.title),this.m_record?this.m_sheet.setCellText(t,1,this.m_record.getField(e.id)):this.m_sheet.setCellText(t,1,e.value)}),this.m_sheet.lockUpdate(!1)}_cellChange(e){let t=e.context,i=e.value;if(t.col!=1)return;let s=this.m_fields[t.row];switch(s.type){default:case"string":break;case"number":break;case"password":break;case"boolean":break;case"choice":break}this.m_record?this.m_record.setField(s.id,i):s.value=i,this.emit("change",M(i,s))}_renderCell(e,t){switch(this.m_fields[t.row].type){default:case"string":break;case"number":break;case"password":{e="\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF";break}case"boolean":break;case"choice":break}return e}_editCell(e,t,i){let s=this.m_fields[t],n;switch(s.type){default:case"string":{n=new U(e);break}case"number":{n=new U(e);break}case"password":{e.type="password",e.value=this.m_record.getField(s.id),n=new j(e);break}case"boolean":{n=new Ie(e);break}case"choice":break}return n}_choicesFromArray(e){return e.map(i=>typeof i=="object"?{id:i.id,text:i.value}:{id:i,text:""+i})}_choicesFromStore(e,t){let i=[];for(let s=0,n=e.count;s<n;s++){let r=e.getByIndex(s);i.push({id:r.getID(),text:r.getField(t)})}return i}};l(Di,"PropertyEditor");var wt=class extends u{m_ui_input;constructor(e){super(e),this.mapPropEvents(e,"change")}render(e){let t=e.text??"",i=e.name??e.group,s=e.labelWidth??-1,n=e.checked??!1,r=e.align??"left",a=e.value,h=e.icon;this.setTag("label"),this.addClass("@hlayout"),this.addClass(r),this._setTabIndex(e.tabIndex),n&&this.addClass("checked"),this.setContent([this.m_ui_input=new j({type:"radio",name:i,tabIndex:e.tabIndex,value:a,attrs:{checked:n?"":void 0},dom_events:{change:()=>this._change(),focus:()=>this.m_ui_input.focus()}}),new I({ref:"label",icon:h,text:t,width:s==="flex"?void 0:s,flex:s==="flex"?1:void 0,style:{order:r=="right"?-1:void 0}})])}_change(){let t=".x-input[name="+this.m_props.name+"]";f.querySelectorAll(t).forEach(n=>{u.getElement(n,wt).removeClass("checked")});let s=this.m_ui_input.dom;this.setClass("checked",s.checked),this.emit("change",M(!0))}get check(){return this.m_ui_input?this.m_ui_input.dom.checked:this.m_props.checked}set check(e){let t=this.m_ui_input.dom;e?(t&&(t.checked=!0),this.m_props.checked=!0):(t&&(t.checked=!1),this.m_props.checked=!1)}get text(){return this.itemWithRef("label").text}set text(e){this.itemWithRef("label").text=e}};l(wt,"RadioBtn");var Mi=class extends w{m_els;m_input;constructor(e){super(e),e.steps=e.steps??5}render(e){let t=e.shape??"star",i=e.value??0;this.m_input=new j({cls:"@hidden",name:e.name,value:""+i}),this.addClass(t),this.setDomEvent("click",s=>this._onclick(s)),this.m_els=[];for(let s=0;s<e.steps;s++){let n="item";s+1<=i&&(n+=" checked");let r=new u({tag:"option",cls:n,data:{value:s+1}});this.m_els.push(r)}this.m_els.push(this.m_input),this.setContent(this.m_els)}getValue(){return this.m_props.value??0}set value(e){this.m_props.value=e;for(let t=0;t<this.m_props.steps;t++)this.m_els[t].setClass("checked",this.m_els[t].getData("value")<=e);this.m_input.value=""+this.m_props.value}set steps(e){this.m_props.steps=e,this.update()}set shape(e){this.removeClass(this.m_props.shape),this.m_props.shape=e,this.addClass(this.m_props.shape)}_onclick(e){let t=!0;for(let i=this.dom.firstChild;i;i=i.nextSibling){let s=u.getElement(i);s.setClass("checked",t),i==e.target&&(this.m_input.value=s.getData("value"),t=!1)}this.emit("change",M(this.m_props.value))}};l(Mi,"Rating");function rn(o,e=!1){if(o instanceof RegExp)return{keys:null,pattern:o};let t=o.split("/"),i=[],s="";t[0]==""&&t.shift();for(let n of t){let r=n[0];if(r==="*")i.push("wild"),s+="/(.*)";else if(r===":"){let a=n.indexOf("?",1),h=n.indexOf(".",1);i.push(n.substring(1,a>=0?a:h>=0?h:n.length)),s+=a>=0&&h<0?"(?:/([^/]+?))?":"/([^/]+?)",h>=0&&(s+=(a>=0?"?":"")+"\\"+n.substring(h))}else s+="/"+n}return{keys:i,pattern:new RegExp(`^${s}${e?"(?=$|/)":"/?$"}`,"i")}}l(rn,"parseRoute");var Pi=class extends ce{routes;constructor(){super(),this.routes=[],window.addEventListener("popstate",e=>{let t=f.location.pathname,i=this._find(t);i.handlers.forEach(s=>{s(i.params,t)})})}get(e,t){let{keys:i,pattern:s}=rn(e);this.routes.push({keys:i,pattern:s,handler:t})}init(){this.navigate(window.location.pathname)}navigate(e,t=!0){let i=this._find(e);if(!i||i.handlers.length==0){console.log("route not found: "+e),this.signal("error",Zi(404,"route not found"));return}window.history.pushState({},"",e),t&&i.handlers.forEach(s=>{s(i.params,e)})}_find(e){let t=[],i={},s=[];for(let n of this.routes)if(n.keys)if(n.keys.length>0){if(t=n.pattern.exec(e),t===null)continue;for(let r=0;r<n.keys.length;)i[n.keys[r]]=t[++r];s=[...s,n.handler]}else n.pattern.test(e)&&(s=[...s,n.handler]);else{if(t=n.pattern.exec(e),!t)continue;if(t.groups)for(let r in t.groups)i[r]=t.groups[r];s=[...s,n.handler]}return{params:i,handlers:s}}};l(Pi,"Router");var Si=class extends Le{m_sidebar;m_content;constructor(e){super(e),this.addClass("@hlayout"),this.m_sidebar=new H({cls:"@side-bar",width:e.bar_width??void 0}),this.m_content=new w({flex:1,cls:"@tab-container"})}render(){let e=[];this.m_cards.forEach(t=>{e.push(t.selector)}),this.m_sidebar.setContent(new H({flex:1,cls:"content",content:e})),this.setContent([this.m_sidebar,this.m_props.bar_sizable?new ot({orientation:"horizontal",sizing:"before"}):void 0,this.m_content])}_prepareSelector(e){return new z({text:e.title,icon:e.icon,tooltip:e.title,click:()=>{this.switchTo(e.name)}})}_preparePage(e){super._preparePage(e),e.dom||this.m_content.appendChild(e)}};l(Si,"SideBarView");var on=/^-?\d+(\.\d+)?$/;function an(o){return o*Math.PI/180}l(an,"d2r");function vs(o,e,t,i){let s=an(i);return{x:o+t*Math.cos(s),y:e+t*Math.sin(s)}}l(vs,"p2c");function te(o){return Math.round(o*1e3)/1e3}l(te,"num");function Ai(o,...e){return e=e.map(t=>typeof t=="number"&&isFinite(t)?te(t):t),String.raw(o,...e)}l(Ai,"clean");var Se=class{m_tag;m_attrs;m_style;constructor(e){this.m_tag=e,this.m_attrs=new Map,this.m_style=new Map}render(){return`<${this.m_tag} ${this.renderAttrs()} ${this.renderStyle()}>${this.renderContent()}</${this.m_tag}>`}stroke(e,t){return this.attr("stroke",e),t!==void 0&&this.attr("stroke-width",t+"px"),this}strokeWidth(e){return this.attr("stroke-width",e+"px"),this}fill(e){return this.attr("fill",e),this}attr(e,t){return this.m_attrs.set(e,t),this}style(e,t){if(t===void 0||t===""||t===void 0){this.m_style.delete(e);return}return!si[e]&&(tt(t)||on.test(t))&&(t=t+"px"),this.m_style.set(e,""+t),this}class(e){let t=this.m_attrs.get("class");return this.m_attrs.set("class",(t??" "+e).trim()),this}renderAttrs(){if(!this.m_attrs.size)return"";let e="";return this.m_attrs.forEach((t,i)=>{e+=` ${i} = "${t}"`}),e}renderStyle(){if(!this.m_style.size)return"";let e='style="';return this.m_style.forEach((t,i)=>{e+=`${i}:${t};`}),e+'"'}renderContent(){return""}clip(e){return this.attr("clip-path",`url(#${e})`),this}transform(e){this.attr("transform",e)}rotate(e,t,i){this.transform(`rotate( ${e} ${t} ${i} )`)}translate(e,t){this.transform(`translate( ${e} ${t} )`)}scale(e){this.transform(`scale( ${e} )`)}};l(Se,"SVGItem");var Xt=class extends Se{m_path;constructor(){super("path"),this.m_path=""}renderAttrs(){return this.attr("d",this.m_path),super.renderAttrs()}moveTo(e,t){return this.m_path+=Ai`M${e},${t}`,this}lineTo(e,t){return this.m_path+=Ai`L${e},${t}`,this}closePath(){return this.m_path+="Z",this}arc(e,t,i,s,n){let r=vs(e,t,i,s-90),a=vs(e,t,i,n-90),h=n-s<=180?"0":"1";return this.m_path+=Ai`M${r.x},${r.y}A${i},${i} 0 ${h} 1 ${a.x},${a.y}`,this}};l(Xt,"SVGPath");var Zt=class extends Se{m_text;constructor(e,t,i){super("text"),this.m_text=i,this.attr("x",te(e)+""),this.attr("y",te(t)+"")}font(e){return this.attr("font-family",e),this}fontSize(e){return this.attr("font-size",e+""),this}fontWeight(e){return this.attr("font-weight",e),this}textAlign(e){let t;switch(e){case"left":t="start";break;case"center":t="middle";break;case"right":t="end";break;default:return this}return this.attr("text-anchor",t),this}verticalAlign(e){let t;switch(e){case"top":t="hanging";break;case"center":t="middle";break;case"bottom":t="baseline";break;default:return}return this.attr("alignment-baseline",t),this}renderContent(){return this.m_text}};l(Zt,"SVGText");var yt=class extends Se{constructor(e){super(e)}};l(yt,"SVGShape");var Jt=class extends Se{m_id;m_stops;constructor(e,t,i,s){super("linearGradient"),this.m_id="gx-"+Jt.g_id,this.attr("id",this.m_id),this.attr("x1",B(e)?e:te(e)+""),this.attr("x2",B(i)?i:te(i)+""),this.attr("y1",B(t)?t:te(t)+""),this.attr("y2",B(s)?s:te(s)+""),this.m_stops=[],Jt.g_id++}get id(){return"url(#"+this.m_id+")"}addStop(e,t){return this.m_stops.push({offset:e,color:t}),this}renderContent(){let e=[];return this.m_stops.forEach(t=>{e.push(`<stop offset="${t.offset}%" stop-color="${t.color}"></stop>`)}),e.join(`
7
7
  `)}},Et=Jt;l(Et,"SVGGradient"),k(Et,"g_id",1);var Ft=class extends Se{m_items;constructor(e="g"){super(e),this.m_items=[]}path(){let e=new Xt;return this.m_items.push(e),e}text(e,t,i){let s=new Zt(e,t,i);return this.m_items.push(s),s}ellipse(e,t,i,s=i){let n=new yt("ellipse");return n.attr("cx",te(e)+""),n.attr("cy",te(t)+""),n.attr("rx",te(i)+""),n.attr("ry",te(s)+""),this.m_items.push(n),n}rect(e,t,i,s){let n=new yt("rect");return n.attr("x",te(e)+""),n.attr("y",te(t)+""),n.attr("width",te(i)+""),n.attr("height",te(s)+""),this.m_items.push(n),n}linear_gradient(e,t,i,s){let n=new Et(e,t,i,s);return this.m_items.push(n),n}clear(){this.m_items=[]}renderContent(){let e=[];return this.m_items.forEach(t=>{e.push(t.render())}),e.join(`
8
8
  `)}};l(Ft,"SVGGroup");var Bi=class extends Ft{constructor(){super("")}addClip(e,t,i,s){let n="c-"+Bi.g_clip_id++,r=new Ft("clipPath");return r.attr("id",n),r.rect(e,t,i,s),this.m_items.push(r),n}render(){let e=[];return this.m_items.forEach(t=>{e.push(t.render())}),e.join(`
9
- `)}},Yt=Bi;l(Yt,"SVGPathBuilder"),k(Yt,"g_clip_id",1);var Ti=class extends u{constructor(e){super(e),this.setTag("svg","http://www.w3.org/2000/svg"),this.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.setAttributes({viewBox:e.viewBox}),this.setContent(e.path)}};l(Ti,"SVGComponent");var Li=class extends O{m_pages;m_curPage;constructor(e){super(e),this.m_pages=[],this.m_curPage=null,this.mapPropEvents(e,"change"),e.vertical?this.addClass("@vlayout"):this.addClass("@hlayout"),this.m_props.pages?.forEach(t=>this.addPage(t))}componentCreated(){this.m_props.default&&this.select(this.m_props.default,!0)}addPage(e){this.m_pages.push({...e}),this._updateContent()}render(){let e=[];this.m_pages.forEach(t=>{t.btn=new z({cls:t===this.m_curPage?"selected":"",text:t.title,icon:t.icon,click:()=>this._select(t,!0)}),e.push(t.btn)}),this.setContent(e)}select(e,t=!1){if(e){let i=this.m_pages.find(s=>s.id===e);return i?(this._select(i,t),!0):!1}else return this._select(null,t),!0}_select(e,t){if(this.m_curPage!=e){if(!this.dom){this.m_props.default=e.id;return}this.m_curPage&&(this.m_curPage.btn.removeClass("selected"),this.m_curPage.page&&this.m_curPage.page.hide()),this.m_curPage=e,t&&this.signal("change",M(e?e.id:null)),this.m_curPage&&(this.m_curPage.btn.addClass("selected"),this.m_curPage.page&&this.m_curPage.page.show())}}get selection(){return this.m_curPage?.page}};l(Li,"TabBar");var Hi=class extends Le{m_tab_selector;m_menu;constructor(e){super(e),this.m_tab_selector=!!e.tab_selector,this.m_menu=e.menu,this.addClass("@vlayout")}render(){let e=[],t=[];this.m_menu&&(this.m_menu.addClass("@button @tab-btn"),this.m_menu.removeClass("@menu-item"),e.push(this.m_menu)),this.m_cards.forEach(i=>{e.push(i.selector),i.page instanceof Function||t.push(i.page)}),this.m_tab_selector&&t.unshift(new w({cls:"@tab-switch",content:e})),this.setContent(t)}_updateSelector(){}_prepareSelector(e){return new z({cls:"@tab-btn",text:e.title,icon:e.icon,click:()=>{this.switchTo(e.name)}})}_preparePage(e){super._preparePage(e),e.dom||this.appendChild(e)}};l(Hi,"TabView");var Ri=class extends u{constructor(e){super(e),this.mapPropEvents(e,"change")}render(e){e.text=e.text??"",this.setAttribute("tabindex",e.tabIndex??0),e.spellcheck===!1&&this.setAttribute("spellcheck","false"),e.readOnly!==void 0&&this.setAttribute("readonly",e.readOnly),e.rows&&this.setAttribute("rows",e.rows),e.placeHolder&&this.setAttribute("placeholder",e.placeHolder),e.autoFocus&&this.setAttribute("autofocus",e.autoFocus),e.name&&this.setAttribute("name",e.name),e.autoGrow&&(this.m_props.autoGrow=!0,this.setAttribute("rows",this._calcHeight(e.text)),this.setDomEvent("keydown",()=>{ue(()=>this._updateHeight())})),this.setDomEvent("keydown",t=>{t.stopPropagation()}),this.setTag("textarea"),this.setDomEvent("input",()=>this._change())}_change(){this.emit("change",M(this.value))}componentCreated(){this.value=this.m_props.text}get value(){return this.dom?this.dom.value:this.m_props.text}set value(e){this.m_props.text=e??"",this.dom&&(this.dom.value=this.m_props.text,this.m_props.autoGrow&&this.setAttribute("rows",this._calcHeight(this.m_props.text)))}get text(){return this.value}set text(e){this.value=e}_calcHeight(e){return 1+(e.match(/\n/g)||[]).length}_updateHeight(){let e=this.value,t=this._calcHeight(e);this.getData("lines")!=t&&(this.setAttribute("rows",t),this.setData("lines",t))}insertText(e){this.appendText(e)}appendText(e){if(this.dom){let t=this.dom,i=t.selectionEnd;t.setRangeText(e,i,i,"end")}}replaceText(e){this.dom&&this.dom.setRangeText(e)}getSelection(){if(this.dom){let e=this.dom;return{start:e.selectionStart,end:e.selectionEnd}}else return{start:0,end:0}}setSelection(e){if(this.dom){let t=this.dom;e.start!==void 0&&(t.selectionStart=e.start),e.end!==void 0&&(t.selectionEnd=e.end)}}getStoreValue(){return this.value}setStoreValue(e){this.value=e}};l(Ri,"TextArea");var zi=class extends q{m_message;m_icon;constructor(e){super(e),this.m_message=e.message,this.m_icon=e.icon,this.enableMask(!1),this.addClass("@non-maskable")}render(){this.addClass("@hlayout"),this.setContent([new I({icon:this.m_icon,text:this.m_message})])}show(){this.show=super.show,this.displayAt(9999,9999,"br",{x:0,y:-24});let e=1;this.startTimer("fadeout",2e3,!1,()=>{this.startTimer("opacity",100,!0,()=>{this.setStyleValue("opacity",e),e-=.1,e<0&&this.dispose()})})}};l(zi,"Toaster");function ln(o){return P({node:o})}l(ln,"EvExpand");var Vi=class extends H{m_view;m_container;m_selection;constructor(e){super(e),e.root=e.root,e.indent=e.indent??8,e.gadgets=e.gadgets,e.sort=e.sort??!1,this.m_selection=null,this.m_container=new O({cls:"@scroll-container"}),this.m_view=new O({cls:"@scroll-view",flex:1,content:this.m_container}),this.setContent([this.m_view,e.gadgets?new w({cls:"gadgets",content:e.gadgets}):null]),this.setDomEvent("click",t=>this._click(t)),this.setDomEvent("dblclick",t=>this._click(t)),this.setDomEvent("contextmenu",t=>this._handleCtxMenu(t)),e.canDragItems&&(this.setDomEvent("dragstart",t=>{let s=u.getElement(t.target,u)?.getData("node");s?(t.dataTransfer.effectAllowed="move",t.dataTransfer.items.add(JSON.stringify({type:"treeview",id:s.id}),"string")):(t.preventDefault(),t.stopPropagation())}),this.setDomEvent("dragover",t=>this._dragEnter(t)),this.setDomEvent("dragenter",t=>this._dragEnter(t)),this.setDomEvent("dragend",t=>this._dragLeave(t)),this.setDomEvent("dragleave",t=>this._dragLeave(t)),this.setDomEvent("drop",t=>this._dragLeave(t)),this.setDomEvent("drop",t=>this._drop(t))),this.mapPropEvents(e,"dblclick","drag","selectionchange","contextMenu")}_dragEnter(e){e.preventDefault();let t=u.getElement(e.target,u);t?.getData("node")&&(t.addClass("@drag-over"),e.dataTransfer.dropEffect="move")}_dragLeave(e){let t=u.getElement(e.target,u);t?.getData("node")&&t.removeClass("@drag-over")}_drop(e){let t=u.getElement(e.target,u),i=t?.getData("node");if(i||(i=this.m_props.root),i){let s;i.children?s=i:s=t.getData("parent");for(let n=0;n<e.dataTransfer.items.length;n++)e.dataTransfer.items[0].getAsString(r=>{let a=JSON.parse(r);this.emit("drag",Xi(i,a,s))})}}render(){this.__update()}__update(){if(this.m_props.root){let e=[];this._buildBranch(this.m_props.root,-1,e,this.m_props.root),this.m_container.setContent(e)}}updateElement(e){let{node:t,item:i}=this._getNode(e);if(t){let s=t.dom.parentNode,n=this._makeNode(i,t.dom.classList.value,t.getData("icon"),t.getData("level")),r=n._build();s.replaceChild(r,t.dom),this.m_selection?.el===t&&(this.m_selection.el=n)}}set root(e){this.m_props.root=e,this.update()}openAll(e=!0){this.forEach(t=>{t.children&&(t.open=e)}),this.__update()}refreshRoot(e){let t=[];this.forEach(s=>(s.open&&t.push(s.id),!1));let i=this.selection;e&&(this.m_props.root=e),this.forEach(s=>(t.indexOf(s.id)>=0&&(s.open=!0),!1)),this.__update()}_buildBranch(e,t,i,s){let n="@tree-item";e.cls&&(n+=" "+e.cls),!e.open&&e.children&&(n+=" collapsed"),e.children&&(n+=" folder",e.children.length==0&&(n+=" empty"));let r=e.icon;if(r===void 0&&e.children&&(e.open===!0?r="var(--x4-icon-chevron-down)":r="var(--x4-icon-chevron-right)"),t>=0){let a=this._makeNode(e,n,r,t);this.m_selection?.id==e.id&&(this.m_selection.el=a,a.addClass("selected")),i.push(a)}(t==-1||e.open)&&e.children&&(this.m_props.sort&&(e.children=e.children.sort((a,h)=>{let m=(a.children?"0"+a.text:a.text)?.toLocaleLowerCase(),c=(h.children?"0"+h.text:h.text)?.toLocaleLowerCase();return m<c?-1:m>c?1:0})),e.children.forEach(a=>{this._buildBranch(a,t+1,i,e)}))}_renderDef(e){return new I({cls:"tree-label",flex:1,text:e.text})}_makeNode(e,t,i,s){return new w({cls:t,content:[new L({cls:"tree-icon",icon:i}),this.m_props.renderItem?this.m_props.renderItem(e):this._renderDef(e)],data:{node:e,level:s,icon:i},style:{paddingLeft:4+s*this.m_props.indent},attrs:{draggable:this.m_props.canDragItems?!0:void 0}})}forEach(e){let t=null;function i(s){if(e(s)==!0)return!0;if(s.children){for(let n=0;n<s.children.length;n++)if(i(s.children[n]))return!0}}return l(i,"scan"),this.m_props.root&&i(this.m_props.root),t}ensureVisible(e){let{node:t}=this._getNode(e);t&&t.scrollIntoView()}set selection(e){this.select(e,!1)}select(e,t=!0){if(this.m_selection?.el&&this.m_selection.el.removeClass("selected"),this.m_selection=null,e!==void 0){let{node:i}=this._getNode(e);if(i&&(this.m_selection={id:e,el:i},i.addClass("selected"),i.scrollIntoView(),t)){let s=i.getData("node");this.emit("selectionchange",ie(s))}}else t&&this.emit("selectionchange",ie(null))}_getNode(e){let t={node:null,item:null};return this.m_container.enumChilds(i=>{let s=i.getData("node");if(s?.id==e)return t={node:i,item:s},!0}),t}get selection(){return this.m_selection?.id}getNodeWithId(e){return this.forEach(t=>t.id==e)}_click(e){let t=e.target,i=t,s=!1;for(t.tabIndex!==-1&&(s=!0);t!=this.dom;){let n=u.getElement(t),r=n?.getData("node");if(r){if(r.children&&!s){(n.hasClass("selected")||i.classList.contains("tree-icon"))&&(r.open=!r.open),this.m_selection={id:r.id,el:null};let a=this.m_view?.dom?.scrollTop;this.update(),a&&this.m_view.dom.scrollTo(0,a),this.emit("expand",ln(r))}else this.selection=r.id,s||(e.type=="click"?this.emit("click",ne(r)):this.emit("dblclick",ke(r)));this.emit("selectionchange",ie(r));return}t=t.parentElement}e.type=="click"&&(this.m_selection=null,this.update(),this.emit("selectionchange",ie(null)))}_handleCtxMenu(e){e.preventDefault();let t=e.target,i=t;for(;t!=this.dom;){let n=u.getElement(t)?.getData("node");if(n){if(n.children&&i.classList.contains("tree-icon"))return;this.selection=n.id,this.emit("click",ne(n)),this.emit("contextMenu",fe(e,n));return}t=t.parentElement}this.selection=null,this.emit("contextMenu",fe(e,null))}static buildFromStrings(e,t="/"){let i={id:0,text:"<root>",children:[]};function s(n,r){let a=r.indexOf(t),h=r.substr(0,a<0?void 0:a),m;a>=0&&(m=n.find(c=>c.text==h)),m||(m={id:r,text:h},n.push(m)),a>=0&&(m.children||(m.children=[]),s(m.children,r.substr(a+t.length)))}return l(s,"insert"),e.forEach(n=>{s(i.children,n)}),i}static buildFromHierarchy(e,t){let i={id:0,text:"<root>",children:[]},s=[];function n(r){let a,h;r.parent>0?(h=s.find(m=>m.id==r.parent),h||(h={id:r.parent,text:"",children:[]},s.push(h)),h.children||(h.children=[])):h=i,a=s.find(m=>m.id==r.id),a?(a.text=r.name,a.parent=r.parent):(a={id:r.id,text:r.name,parent:r.parent,cls:r.cls,icon:r.icon,data:r.data},r.leaf?a.icon=null:a.children=[]),s.push(a),h.children.push(a)}return l(n,"insert"),e.forEach(n),t&&s.forEach(t),i}};l(Vi,"TreeView");var hn=l((o,e,...t)=>{let i;return o==ws||o==Cs?t:(o instanceof Function?i=new o(e):i=new u({tag:o,...e}),t&&t.length&&i.setContent(t),i)},"createElement"),Cs=Symbol("fragment"),ws=l(()=>null,"createFragment"),zd={createElement:hn,createFragment:ws,Fragment:Cs},Oi=class extends u{render(e){let t=this.renderTSX(e);t&&this.setContent(t)}};l(Oi,"TSXComponent");var Es=Symbol("msg_sent");function Nd(o){let e=window.location.protocol==="https:"?"wss://":"ws://",t=new WebSocket(`${e}${window.location.hostname}:${window.location.port}`,"messaging"),i=Ce.instance();i.on("global",s=>{s[Es]||t.send(JSON.stringify({msg:s.msg,params:s.params}))}),t.onmessage=s=>{if(s.data!="ping"){let n=JSON.parse(s.data);n[Es]=!0,i.signal("global",n)}},t.onclose=s=>{console.log("websocket closed:",s),o()},t.onerror=s=>{console.log("websocket error:",s)}}l(Nd,"setupWSMessaging");var Kd="1.5.21";export{ri as AbsLayout,Ce as Application,_i as AutoComplete,oi as AutoLayout,_t as AutoRecord,ut as BaseButton,oe as BaseComponent,P as BasicEvent,z as Button,nt as CSSParser,Ht as Calendar,xi as Canvas,Le as CardView,Ie as CheckBox,Qt as Clipboard,V as Color,ft as ColorPicker,Re as ColorPickerBox,bi as ColorPickerEditor,qe as ComboBox,u as Component,Ke as ComputedStyle,O as Container,xt as DataProxy,ze as DataStore,Nt as DataView,De as Dialog,_s as EvBtnClick,Vs as EvCancel,M as EvChange,ne as EvClick,fe as EvContextMenu,ke as EvDblClick,Xi as EvDrag,Zi as EvError,ni as EvFocus,nn as EvGridCheck,At as EvLoaded,un as EvMessage,us as EvMove,Bs as EvOverlayResize,ie as EvSelectionChange,Q as EvSize,Yi as EvTimer,Ot as EvViewChange,ce as EventSource,Kt as FileUpload,Fe as Flex,pt as Form,ai as GridLayout,Fi as GridView,w as HLayout,G as HtmlString,L as Icon,Ve as Image,Ei as ImageUpload,j as Input,I as Label,ki as Link,Lt as ListView,mi as Masonry,Me as Md5,ee as Menu,pi as MenuBar,pe as MenuItem,ui as MenuSeparator,di as MenuTitle,Pe as MessageBox,Je as NetworkError,Ii as Panel,ae as Point,q as Popup,dt as PopupCalendar,Be as PopupListView,Ye as PromptDialogBox,Di as PropertyEditor,wt as RadioBtn,Mi as Rating,zd as React,$e as Record,Y as Rect,Pi as Router,Ti as SVGComponent,Yt as SVGPathBuilder,hi as ScrollView,ot as Separator,at as Settings,Si as SideBarView,ge as Size,ve as SizerOverlay,ii as Space,Ct as Spreadsheet,he as Stylesheet,Oi as TSXComponent,Li as TabBar,Hi as TabView,li as TableLayout,Ri as TextArea,U as TextEdit,zi as Toaster,fi as ToggleButton,Ge as Tooltip,Vi as TreeView,H as VLayout,Dn as _date_set_locale,D as _tr,si as _x4_unitless,ts as addTranslation,gs as ajax,kl as ajaxAsJSON,Il as ajaxAsText,Rt as ajaxRequest,ue as asap,Tm as bool_formatter,Tn as calcAge,kn as camelCase,it as clamp,ti as classNames,Hn as crc32,Qi as createLanguage,Js as data,ei as date_calc_weeknum,et as date_clone,Pn as date_diff,Mn as date_format,Pm as date_formatter,Qe as date_hash,An as date_sql_utc,Sn as date_to_sql,ls as deferCall,os as downloadData,sm as dragManager,hm as drawText,Pt as escapeHtml,J as flyWrap,$ as formatIntlDate,zn as generatePassword,Cn as getAvailableLanguages,vn as getCurrentLanguage,re as getMousePos,st as html,Fa as initTooltips,Vn as installHMR,X as isArray,Z as isFunction,le as isHtmlString,es as isLanguage,as as isLiteralObject,tt as isNumber,B as isString,Mt as isTouchDevice,Ln as markdownToHtml,Rn as mix,Sm as money_formatter,Am as money_formatter_nz,ym as openFileDialog,ye as pad,St as parseIntlDate,rs as parseIntlFloat,Ue as pascalCase,In as removeHtmlTags,je as roundTo,Fm as saveFileDialog,ks as selectLanguage,sn as setCurrencySymbol,Nd as setupWSMessaging,Ze as sprintf,Mm as sql_date_formatter,Bn as waitFontLoading,Kd as x4js_version};
9
+ `)}},Yt=Bi;l(Yt,"SVGPathBuilder"),k(Yt,"g_clip_id",1);var Ti=class extends u{constructor(e){super(e),this.setTag("svg","http://www.w3.org/2000/svg"),this.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.setAttributes({viewBox:e.viewBox}),this.setContent(e.path)}};l(Ti,"SVGComponent");var Li=class extends O{m_pages;m_curPage;constructor(e){super(e),this.m_pages=[],this.m_curPage=null,this.mapPropEvents(e,"change"),e.vertical?this.addClass("@vlayout"):this.addClass("@hlayout"),this.m_props.pages?.forEach(t=>this.addPage(t))}componentCreated(){this.m_props.default&&this.select(this.m_props.default,!0)}addPage(e){this.m_pages.push({...e}),this._updateContent()}render(){let e=[];this.m_pages.forEach(t=>{t.btn=new z({cls:t===this.m_curPage?"selected":"",text:t.title,icon:t.icon,click:()=>this._select(t,!0)}),e.push(t.btn)}),this.setContent(e)}select(e,t=!1){if(e){let i=this.m_pages.find(s=>s.id===e);return i?(this._select(i,t),!0):!1}else return this._select(null,t),!0}_select(e,t){if(this.m_curPage!=e){if(!this.dom){this.m_props.default=e.id;return}this.m_curPage&&(this.m_curPage.btn.removeClass("selected"),this.m_curPage.page&&this.m_curPage.page.hide()),this.m_curPage=e,t&&this.signal("change",M(e?e.id:null)),this.m_curPage&&(this.m_curPage.btn.addClass("selected"),this.m_curPage.page&&this.m_curPage.page.show())}}get selection(){return this.m_curPage?.page}};l(Li,"TabBar");var Hi=class extends Le{m_tab_selector;m_menu;constructor(e){super(e),this.m_tab_selector=!!e.tab_selector,this.m_menu=e.menu,this.addClass("@vlayout")}render(){let e=[],t=[];this.m_menu&&(this.m_menu.addClass("@button @tab-btn"),this.m_menu.removeClass("@menu-item"),e.push(this.m_menu)),this.m_cards.forEach(i=>{e.push(i.selector),i.page instanceof Function||t.push(i.page)}),this.m_tab_selector&&t.unshift(new w({cls:"@tab-switch",content:e})),this.setContent(t)}_updateSelector(){}_prepareSelector(e){return new z({cls:"@tab-btn",text:e.title,icon:e.icon,click:()=>{this.switchTo(e.name)}})}_preparePage(e){super._preparePage(e),e.dom||this.appendChild(e)}};l(Hi,"TabView");var Ri=class extends u{constructor(e){super(e),this.mapPropEvents(e,"change")}render(e){e.text=e.text??"",this.setAttribute("tabindex",e.tabIndex??0),e.spellcheck===!1&&this.setAttribute("spellcheck","false"),e.readOnly!==void 0&&this.setAttribute("readonly",e.readOnly),e.rows&&this.setAttribute("rows",e.rows),e.placeHolder&&this.setAttribute("placeholder",e.placeHolder),e.autoFocus&&this.setAttribute("autofocus",e.autoFocus),e.name&&this.setAttribute("name",e.name),e.autoGrow&&(this.m_props.autoGrow=!0,this.setAttribute("rows",this._calcHeight(e.text)),this.setDomEvent("keydown",()=>{ue(()=>this._updateHeight())})),this.setDomEvent("keydown",t=>{t.stopPropagation()}),this.setTag("textarea"),this.setDomEvent("input",()=>this._change())}_change(){this.emit("change",M(this.value))}componentCreated(){this.value=this.m_props.text}get value(){return this.dom?this.dom.value:this.m_props.text}set value(e){this.m_props.text=e??"",this.dom&&(this.dom.value=this.m_props.text,this.m_props.autoGrow&&this.setAttribute("rows",this._calcHeight(this.m_props.text)))}get text(){return this.value}set text(e){this.value=e}_calcHeight(e){return 1+(e.match(/\n/g)||[]).length}_updateHeight(){let e=this.value,t=this._calcHeight(e);this.getData("lines")!=t&&(this.setAttribute("rows",t),this.setData("lines",t))}insertText(e){this.appendText(e)}appendText(e){if(this.dom){let t=this.dom,i=t.selectionEnd;t.setRangeText(e,i,i,"end")}}replaceText(e){this.dom&&this.dom.setRangeText(e)}getSelection(){if(this.dom){let e=this.dom;return{start:e.selectionStart,end:e.selectionEnd}}else return{start:0,end:0}}setSelection(e){if(this.dom){let t=this.dom;e.start!==void 0&&(t.selectionStart=e.start),e.end!==void 0&&(t.selectionEnd=e.end)}}getStoreValue(){return this.value}setStoreValue(e){this.value=e}};l(Ri,"TextArea");var zi=class extends q{m_message;m_icon;constructor(e){super(e),this.m_message=e.message,this.m_icon=e.icon,this.enableMask(!1),this.addClass("@non-maskable")}render(){this.addClass("@hlayout"),this.setContent([new I({icon:this.m_icon,text:this.m_message})])}show(){this.show=super.show,this.displayAt(9999,9999,"br",{x:0,y:-24});let e=1;this.startTimer("fadeout",2e3,!1,()=>{this.startTimer("opacity",100,!0,()=>{this.setStyleValue("opacity",e),e-=.1,e<0&&this.dispose()})})}};l(zi,"Toaster");function ln(o){return P({node:o})}l(ln,"EvExpand");var Vi=class extends H{m_view;m_container;m_selection;constructor(e){super(e),e.root=e.root,e.indent=e.indent??8,e.gadgets=e.gadgets,e.sort=e.sort??!1,this.m_selection=null,this.m_container=new O({cls:"@scroll-container"}),this.m_view=new O({cls:"@scroll-view",flex:1,content:this.m_container}),this.setContent([this.m_view,e.gadgets?new w({cls:"gadgets",content:e.gadgets}):null]),this.setDomEvent("click",t=>this._click(t)),this.setDomEvent("dblclick",t=>this._click(t)),this.setDomEvent("contextmenu",t=>this._handleCtxMenu(t)),e.canDragItems&&(this.setDomEvent("dragstart",t=>{let s=u.getElement(t.target,u)?.getData("node");s?(t.dataTransfer.effectAllowed="move",t.dataTransfer.items.add(JSON.stringify({type:"treeview",id:s.id}),"string")):(t.preventDefault(),t.stopPropagation())}),this.setDomEvent("dragover",t=>this._dragEnter(t)),this.setDomEvent("dragenter",t=>this._dragEnter(t)),this.setDomEvent("dragend",t=>this._dragLeave(t)),this.setDomEvent("dragleave",t=>this._dragLeave(t)),this.setDomEvent("drop",t=>this._dragLeave(t)),this.setDomEvent("drop",t=>this._drop(t))),this.mapPropEvents(e,"dblclick","drag","selectionchange","contextMenu")}_dragEnter(e){e.preventDefault();let t=u.getElement(e.target,u);t?.getData("node")&&(t.addClass("@drag-over"),e.dataTransfer.dropEffect="move")}_dragLeave(e){let t=u.getElement(e.target,u);t?.getData("node")&&t.removeClass("@drag-over")}_drop(e){let t=u.getElement(e.target,u),i=t?.getData("node");if(i||(i=this.m_props.root),i){let s;i.children?s=i:s=t.getData("parent");for(let n=0;n<e.dataTransfer.items.length;n++)e.dataTransfer.items[0].getAsString(r=>{let a=JSON.parse(r);this.emit("drag",Xi(i,a,s))})}}render(){this.__update()}__update(){if(this.m_props.root){let e=[];this._buildBranch(this.m_props.root,-1,e,this.m_props.root),this.m_container.setContent(e)}}updateElement(e){let{node:t,item:i}=this._getNode(e);if(t){let s=t.dom.parentNode,n=this._makeNode(i,t.dom.classList.value,t.getData("icon"),t.getData("level")),r=n._build();s.replaceChild(r,t.dom),this.m_selection?.el===t&&(this.m_selection.el=n)}}set root(e){this.m_props.root=e,this.update()}openAll(e=!0){this.forEach(t=>{t.children&&(t.open=e)}),this.__update()}refreshRoot(e){let t=[];this.forEach(s=>(s.open&&t.push(s.id),!1));let i=this.selection;e&&(this.m_props.root=e),this.forEach(s=>(t.indexOf(s.id)>=0&&(s.open=!0),!1)),this.__update()}_buildBranch(e,t,i,s){let n="@tree-item";e.cls&&(n+=" "+e.cls),!e.open&&e.children&&(n+=" collapsed"),e.children&&(n+=" folder",e.children.length==0&&(n+=" empty"));let r=e.icon;if(r===void 0&&e.children&&(e.open===!0?r="var(--x4-icon-chevron-down)":r="var(--x4-icon-chevron-right)"),t>=0){let a=this._makeNode(e,n,r,t);this.m_selection?.id==e.id&&(this.m_selection.el=a,a.addClass("selected")),i.push(a)}(t==-1||e.open)&&e.children&&(this.m_props.sort&&(e.children=e.children.sort((a,h)=>{let m=(a.children?"0"+a.text:a.text)?.toLocaleLowerCase(),c=(h.children?"0"+h.text:h.text)?.toLocaleLowerCase();return m<c?-1:m>c?1:0})),e.children.forEach(a=>{this._buildBranch(a,t+1,i,e)}))}_renderDef(e){return new I({cls:"tree-label",flex:1,text:e.text})}_makeNode(e,t,i,s){return new w({cls:t,content:[new L({cls:"tree-icon",icon:i}),this.m_props.renderItem?this.m_props.renderItem(e):this._renderDef(e)],data:{node:e,level:s,icon:i},style:{paddingLeft:4+s*this.m_props.indent},attrs:{draggable:this.m_props.canDragItems?!0:void 0}})}forEach(e){let t=null;function i(s){if(e(s)==!0)return!0;if(s.children){for(let n=0;n<s.children.length;n++)if(i(s.children[n]))return!0}}return l(i,"scan"),this.m_props.root&&i(this.m_props.root),t}ensureVisible(e){let{node:t}=this._getNode(e);t&&t.scrollIntoView()}set selection(e){this.select(e,!1)}select(e,t=!0){if(this.m_selection?.el&&this.m_selection.el.removeClass("selected"),this.m_selection=null,e!==void 0){let{node:i}=this._getNode(e);if(i&&(this.m_selection={id:e,el:i},i.addClass("selected"),i.scrollIntoView(),t)){let s=i.getData("node");this.emit("selectionchange",ie(s))}}else t&&this.emit("selectionchange",ie(null))}_getNode(e){let t={node:null,item:null};return this.m_container.enumChilds(i=>{let s=i.getData("node");if(s?.id==e)return t={node:i,item:s},!0}),t}get selection(){return this.m_selection?.id}getNodeWithId(e){return this.forEach(t=>t.id==e)}_click(e){let t=e.target,i=t,s=!1;for(t.tabIndex!==-1&&(s=!0);t!=this.dom;){let n=u.getElement(t),r=n?.getData("node");if(r){if(r.children&&!s){(n.hasClass("selected")||i.classList.contains("tree-icon"))&&(r.open=!r.open),this.m_selection={id:r.id,el:null};let a=this.m_view?.dom?.scrollTop;this.update(),a&&this.m_view.dom.scrollTo(0,a),this.emit("expand",ln(r))}else this.selection=r.id,s||(e.type=="click"?this.emit("click",ne(r)):this.emit("dblclick",ke(r)));this.emit("selectionchange",ie(r));return}t=t.parentElement}e.type=="click"&&(this.m_selection=null,this.update(),this.emit("selectionchange",ie(null)))}_handleCtxMenu(e){e.preventDefault();let t=e.target,i=t;for(;t!=this.dom;){let n=u.getElement(t)?.getData("node");if(n){if(n.children&&i.classList.contains("tree-icon"))return;this.selection=n.id,this.emit("click",ne(n)),this.emit("contextMenu",fe(e,n));return}t=t.parentElement}this.selection=null,this.emit("contextMenu",fe(e,null))}static buildFromStrings(e,t="/"){let i={id:0,text:"<root>",children:[]};function s(n,r){let a=r.indexOf(t),h=r.substr(0,a<0?void 0:a),m;a>=0&&(m=n.find(c=>c.text==h)),m||(m={id:r,text:h},n.push(m)),a>=0&&(m.children||(m.children=[]),s(m.children,r.substr(a+t.length)))}return l(s,"insert"),e.forEach(n=>{s(i.children,n)}),i}static buildFromHierarchy(e,t){let i={id:0,text:"<root>",children:[]},s=[];function n(r){let a,h;r.parent>0?(h=s.find(m=>m.id==r.parent),h||(h={id:r.parent,text:"",children:[]},s.push(h)),h.children||(h.children=[])):h=i,a=s.find(m=>m.id==r.id),a?(a.text=r.name,a.parent=r.parent):(a={id:r.id,text:r.name,parent:r.parent,cls:r.cls,icon:r.icon,data:r.data},r.leaf?a.icon=null:a.children=[]),s.push(a),h.children.push(a)}return l(n,"insert"),e.forEach(n),t&&s.forEach(t),i}};l(Vi,"TreeView");var hn=l((o,e,...t)=>{let i;return o==ws||o==Cs?t:(o instanceof Function?i=new o(e):i=new u({tag:o,...e}),t&&t.length&&i.setContent(t),i)},"createElement"),Cs=Symbol("fragment"),ws=l(()=>null,"createFragment"),zd={createElement:hn,createFragment:ws,Fragment:Cs},Oi=class extends u{render(e){let t=this.renderTSX(e);t&&this.setContent(t)}};l(Oi,"TSXComponent");var Es=Symbol("msg_sent");function Nd(o){let e=window.location.protocol==="https:"?"wss://":"ws://",t=new WebSocket(`${e}${window.location.hostname}:${window.location.port}`,"messaging"),i=Ce.instance();i.on("global",s=>{s[Es]||t.send(JSON.stringify({msg:s.msg,params:s.params}))}),t.onmessage=s=>{if(s.data!="ping"){let n=JSON.parse(s.data);n[Es]=!0,i.signal("global",n)}},t.onclose=s=>{console.log("websocket closed:",s),o()},t.onerror=s=>{console.log("websocket error:",s)}}l(Nd,"setupWSMessaging");var Kd="1.5.23";export{ri as AbsLayout,Ce as Application,_i as AutoComplete,oi as AutoLayout,_t as AutoRecord,ut as BaseButton,oe as BaseComponent,P as BasicEvent,z as Button,nt as CSSParser,Ht as Calendar,xi as Canvas,Le as CardView,Ie as CheckBox,Qt as Clipboard,V as Color,ft as ColorPicker,Re as ColorPickerBox,bi as ColorPickerEditor,qe as ComboBox,u as Component,Ke as ComputedStyle,O as Container,xt as DataProxy,ze as DataStore,Nt as DataView,De as Dialog,_s as EvBtnClick,Vs as EvCancel,M as EvChange,ne as EvClick,fe as EvContextMenu,ke as EvDblClick,Xi as EvDrag,Zi as EvError,ni as EvFocus,nn as EvGridCheck,At as EvLoaded,un as EvMessage,us as EvMove,Bs as EvOverlayResize,ie as EvSelectionChange,Q as EvSize,Yi as EvTimer,Ot as EvViewChange,ce as EventSource,Kt as FileUpload,Fe as Flex,pt as Form,ai as GridLayout,Fi as GridView,w as HLayout,G as HtmlString,L as Icon,Ve as Image,Ei as ImageUpload,j as Input,I as Label,ki as Link,Lt as ListView,mi as Masonry,Me as Md5,ee as Menu,pi as MenuBar,pe as MenuItem,ui as MenuSeparator,di as MenuTitle,Pe as MessageBox,Je as NetworkError,Ii as Panel,ae as Point,q as Popup,dt as PopupCalendar,Be as PopupListView,Ye as PromptDialogBox,Di as PropertyEditor,wt as RadioBtn,Mi as Rating,zd as React,$e as Record,Y as Rect,Pi as Router,Ti as SVGComponent,Yt as SVGPathBuilder,hi as ScrollView,ot as Separator,at as Settings,Si as SideBarView,ge as Size,ve as SizerOverlay,ii as Space,Ct as Spreadsheet,he as Stylesheet,Oi as TSXComponent,Li as TabBar,Hi as TabView,li as TableLayout,Ri as TextArea,U as TextEdit,zi as Toaster,fi as ToggleButton,Ge as Tooltip,Vi as TreeView,H as VLayout,Dn as _date_set_locale,D as _tr,si as _x4_unitless,ts as addTranslation,gs as ajax,kl as ajaxAsJSON,Il as ajaxAsText,Rt as ajaxRequest,ue as asap,Tm as bool_formatter,Tn as calcAge,kn as camelCase,it as clamp,ti as classNames,Hn as crc32,Qi as createLanguage,Js as data,ei as date_calc_weeknum,et as date_clone,Pn as date_diff,Mn as date_format,Pm as date_formatter,Qe as date_hash,An as date_sql_utc,Sn as date_to_sql,ls as deferCall,os as downloadData,sm as dragManager,hm as drawText,Pt as escapeHtml,J as flyWrap,$ as formatIntlDate,zn as generatePassword,Cn as getAvailableLanguages,vn as getCurrentLanguage,re as getMousePos,st as html,Fa as initTooltips,Vn as installHMR,X as isArray,Z as isFunction,le as isHtmlString,es as isLanguage,as as isLiteralObject,tt as isNumber,B as isString,Mt as isTouchDevice,Ln as markdownToHtml,Rn as mix,Sm as money_formatter,Am as money_formatter_nz,ym as openFileDialog,ye as pad,St as parseIntlDate,rs as parseIntlFloat,Ue as pascalCase,In as removeHtmlTags,je as roundTo,Fm as saveFileDialog,ks as selectLanguage,sn as setCurrencySymbol,Nd as setupWSMessaging,Ze as sprintf,Mm as sql_date_formatter,Bn as waitFontLoading,Kd as x4js_version};
10
10
  /**
11
11
  * ___ ___ __
12
12
  * \ \_/ / / _