tsgrid-ui 2.7.1 → 2.9.0

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 (68) hide show
  1. package/CHANGELOG.md +173 -0
  2. package/dist/base.d.ts +148 -0
  3. package/dist/base.es6.js +11 -0
  4. package/dist/base.es6.js.map +1 -0
  5. package/dist/chunks/chunk-26XP2XU3.js +1795 -0
  6. package/dist/chunks/chunk-26XP2XU3.js.map +1 -0
  7. package/dist/chunks/chunk-3NYH6545.js +2423 -0
  8. package/dist/chunks/chunk-3NYH6545.js.map +1 -0
  9. package/dist/chunks/chunk-BIB3X2TW.js +1638 -0
  10. package/dist/chunks/chunk-BIB3X2TW.js.map +1 -0
  11. package/dist/chunks/chunk-DXZJHS4M.js +1283 -0
  12. package/dist/chunks/chunk-DXZJHS4M.js.map +1 -0
  13. package/dist/chunks/chunk-EVZMMVXO.js +1212 -0
  14. package/dist/chunks/chunk-EVZMMVXO.js.map +1 -0
  15. package/dist/chunks/chunk-GJD5NFWQ.js +2305 -0
  16. package/dist/chunks/chunk-GJD5NFWQ.js.map +1 -0
  17. package/dist/chunks/chunk-IYF3Q7GX.js +127 -0
  18. package/dist/chunks/chunk-IYF3Q7GX.js.map +1 -0
  19. package/dist/chunks/chunk-OFASTA2A.js +2980 -0
  20. package/dist/chunks/chunk-OFASTA2A.js.map +1 -0
  21. package/dist/chunks/chunk-OMLGN735.js +677 -0
  22. package/dist/chunks/chunk-OMLGN735.js.map +1 -0
  23. package/dist/chunks/chunk-WKSLGUB3.js +1127 -0
  24. package/dist/chunks/chunk-WKSLGUB3.js.map +1 -0
  25. package/dist/chunks/chunk-YBY52G2U.js +849 -0
  26. package/dist/chunks/chunk-YBY52G2U.js.map +1 -0
  27. package/dist/field.d.ts +329 -0
  28. package/dist/field.es6.js +11 -0
  29. package/dist/field.es6.js.map +1 -0
  30. package/dist/form.d.ts +162 -0
  31. package/dist/form.es6.js +14 -0
  32. package/dist/form.es6.js.map +1 -0
  33. package/dist/layout.d.ts +108 -0
  34. package/dist/layout.es6.js +13 -0
  35. package/dist/layout.es6.js.map +1 -0
  36. package/dist/locale.d.ts +30 -0
  37. package/dist/locale.es6.js +7 -0
  38. package/dist/locale.es6.js.map +1 -0
  39. package/dist/metafile-esm.json +1 -0
  40. package/dist/popup.d.ts +92 -0
  41. package/dist/popup.es6.js +18 -0
  42. package/dist/popup.es6.js.map +1 -0
  43. package/dist/query-CKGg5Ugv.d.ts +81 -0
  44. package/dist/sidebar.d.ts +138 -0
  45. package/dist/sidebar.es6.js +11 -0
  46. package/dist/sidebar.es6.js.map +1 -0
  47. package/dist/tabs.d.ts +63 -0
  48. package/dist/tabs.es6.js +11 -0
  49. package/dist/tabs.es6.js.map +1 -0
  50. package/dist/toolbar.d.ts +97 -0
  51. package/dist/toolbar.es6.js +11 -0
  52. package/dist/toolbar.es6.js.map +1 -0
  53. package/dist/tooltip.d.ts +322 -0
  54. package/dist/tooltip.es6.js +18 -0
  55. package/dist/tooltip.es6.js.map +1 -0
  56. package/dist/tsgrid-ui.css +2 -2
  57. package/dist/tsgrid-ui.d.ts +16 -2004
  58. package/dist/tsgrid-ui.es6.js +7750 -23830
  59. package/dist/tsgrid-ui.es6.js.map +1 -1
  60. package/dist/tsgrid-ui.es6.min.js +28 -28
  61. package/dist/tsgrid-ui.js +96 -17
  62. package/dist/tsgrid-ui.min.css +2 -2
  63. package/dist/tsgrid-ui.min.js +24 -24
  64. package/dist/tsutils-message-CogFtVtO.d.ts +82 -0
  65. package/dist/utils.d.ts +418 -0
  66. package/dist/utils.es6.js +14 -0
  67. package/dist/utils.es6.js.map +1 -0
  68. package/package.json +26 -5
@@ -1,14 +1,14 @@
1
- var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeFormat:"m/d/yyyy|hh:mi pm",currencyPrefix:"$",currencySuffix:"",currencyPrecision:2,groupSymbol:",",decimalSymbol:".",shortmonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fullmonths:["January","February","March","April","May","June","July","August","September","October","November","December"],shortdays:["M","T","W","T","F","S","S"],fulldays:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],weekStarts:"S",phrases:{"${count} letters or more...":"---","Add new record":"---","Add New":"---","Advanced Search":"---",after:"---","AJAX error. See console for more details.":"---","All Fields":"---",All:"---",Any:"---","Are you sure you want to delete ${count} ${records}?":"---","Attach files by dragging and dropping or Click to Select":"---",before:"---","begins with":"---",begins:"---",between:"---",buffered:"---",Cancel:"---",Close:"---",Column:"---",Confirmation:"---",contains:"---",Copied:"---","Copy to clipboard":"---","Current Date & Time":"---","Delete selected records":"---",Delete:"---",'Do you want to delete search item "${item}"?':"---","Edit selected record":"---",Edit:"---","Empty list":"---","ends with":"---",ends:"---","Field should be at least ${count} characters.":"---",Hide:"---",in:"---","is not":"---",is:"---","less than":"---","Line #":"---","Load ${count} more...":"---","Loading...":"---","Maximum number of files is ${count}":"---","Maximum total size is ${count}":"---",Modified:"---","more than":"---","Multiple Fields":"---",Name:"---","No items found":"---","No matches":"---",No:"---",none:"---","Not a float":"---","Not a hex number":"---","Not a valid date":"---","Not a valid email":"---","Not alpha-numeric":"---","Not an integer":"---","Not in money format":"---","not in":"---",Notification:"---",of:"---",Ok:"---",Opacity:"---","Record ID":"---",record:"---",records:"---","Refreshing...":"---",RegEx:"---",regex:"---","Reload data in the list":"---",Remove:"---","Remove This Field":"---","Request aborted.":"---","Required field":"---",Reset:"---","Restore Default State":"---","Returned data is not in valid JSON format.":"---","Save changed records":"---","Save Grid State":"---",Save:"---","Saved Searches":"---","Saving...":"---","Search took ${count} seconds":"---",Search:"---","Select Hour":"---","Select Minute":"---",selected:"---","Server Response ${count} seconds":"---","Show/hide columns":"---",Show:"---",Size:"---",Skip:"---","Sorting took ${count} seconds":"---","Type to search...":"---",Type:"---",Yes:"---",Yesterday:"---","Your remote data source record count has changed, reloading from the first record.":"---"}};var Re=class n{static version=.8;context;nodes;length;constructor(e,s){this.context=s??document;let t=[];if(Array.isArray(e))t=e;else if(e instanceof Node||e instanceof Window)t=[e];else if(e instanceof n)t=e.nodes;else if(typeof e=="string"){if(typeof this.context.querySelector!="function")throw new Error("Invalid context");t=Array.from(this.context.querySelectorAll(e))}else if(e==null)t=[];else{let i=Array.from(e??[]);if(typeof e=="object"&&Array.isArray(i))t=i;else throw new Error(`Invalid selector "${e}"`)}this.nodes=t,this.length=t.length,this.each((i,o)=>{this[o]=i})}static _fragment(e){let s=document.createElement("template");return s.innerHTML=e,s.content.childNodes.forEach(t=>{let i=n._scriptConvert(t);i!=t&&s.content.replaceChild(i,t)}),s.content}static _scriptConvert(e){let s=t=>{let o=t.ownerDocument.createElement("script");o.text=t.text;let l=t.attributes;for(let a=0;a<l.length;a++){let r=l[a];r&&o.setAttribute(r.name,r.value)}return o};return e.tagName=="SCRIPT"&&(e=s(e)),e.querySelectorAll&&e.querySelectorAll("script").forEach(t=>{t.parentNode.replaceChild(s(t),t)}),e}static _fixProp(e){let s={cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",colspan:"colSpan",contenteditable:"contentEditable",for:"htmlFor",frameborder:"frameBorder",maxlength:"maxLength",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"};return s[e]?s[e]:e}_insert(e,s){let t=[],i=this.length;if(i<1)return this;if(typeof s=="string")this.each(o=>{let l=n._fragment(s);t.push(...l.childNodes),o[e]?.(l)});else if(s instanceof n){let o=i==1;s.each(l=>{this.each(a=>{let r=o?l:l.cloneNode(!0);t.push(r),a[e]?.(r),n._scriptConvert(r)})}),o||s.remove()}else if(s instanceof Node)this.each(o=>{let l=i===1?s:n._fragment(s.outerHTML);t.push(...i===1?[s]:l.childNodes),o[e]?.(l)}),i>1&&s.remove();else throw new Error(`Incorrect argument for "${e}(html)". It expects one string argument.`);return e=="replaceWith"?new n(t,this.context):this}_save(e,s,t){e._mQuery=e._mQuery??{},Array.isArray(t)?(e._mQuery[s]=e._mQuery[s]??[],e._mQuery[s].push(...t)):t!=null?e._mQuery[s]=t:delete e._mQuery[s]}get(e){if(e==null)return this.nodes;e<0&&(e=this.length+e);let s=this[e];return s||null}eq(e){e<0&&(e=this.length+e);let s=this[e],t=s!=null?[s]:[];return new n(t,this.context)}then(e){let s=e(this);return s??this}find(e){let s=[];return this.each(t=>{let i=Array.from(t.querySelectorAll(e));i.length>0&&s.push(...i)}),new n(s,this.context)}filter(e){let s=[];return this.each(t=>{(t===e||typeof e=="string"&&t.matches&&t.matches(e)||typeof e=="function"&&e(t))&&s.push(t)}),new n(s,this.context)}next(){let e=[];return this.each(s=>{let t=s.nextElementSibling;t&&e.push(t)}),new n(e,this.context)}prev(){let e=[];return this.each(s=>{let t=s.previousElementSibling;t&&e.push(t)}),new n(e,this.context)}shadow(e){let s=[];this.each(i=>{i.shadowRoot&&s.push(i.shadowRoot)});let t=new n(s,this.context);return e?t.find(e):t}closest(e){let s=[];return this.each(t=>{let i=t.closest(e);i&&s.push(i)}),new n(s,this.context)}host(e){let s=[],t=o=>o.parentNode?t(o.parentNode):o,i=o=>{let l=t(o);s.push(l.host?l.host:l),l.host&&e&&i(l.host)};return this.each(o=>{i(o)}),new n(s,this.context)}parent(e){return this.parents(e,!0)}parents(e,s){let t=[],i=l=>{if(t.indexOf(l)==-1&&t.push(l),!s&&l.parentNode)return i(l.parentNode)};this.each(l=>{l.parentNode&&i(l.parentNode)});let o=new n(t,this.context);return e?o.filter(e):o}add(e){let s=e instanceof n?e.nodes:Array.isArray(e)?e:[e];return new n(this.nodes.concat(s),this.context)}each(e){return this.nodes.forEach((s,t)=>{e(s,t,this)}),this}append(e){return this._insert("append",e)}prepend(e){return this._insert("prepend",e)}after(e){return this._insert("after",e)}before(e){return this._insert("before",e)}replace(e){return this._insert("replaceWith",e)}remove(){return this.each(e=>{e.remove()}),this}css(e,s){let t=typeof e=="object"?e:{},i=arguments.length;if(i===0||i===1&&typeof e=="string")if(this[0]){let o=this[0].style;if(typeof e=="string"){let l=o.getPropertyPriority(e);return o.getPropertyValue(e)+(l?"!"+l:"")}else return Object.fromEntries(this[0].style.cssText.split(";").filter(l=>!!l).map(l=>l.split(":").map(a=>a.trim())))}else return;else return typeof e!="object"&&(t={},t[e]=s),this.each(o=>{Object.keys(t).forEach(l=>{let a=String(t[l]).toLowerCase().includes("!important")?"important":"";o.style.setProperty(l,String(t[l]).replace(/\!important/i,""),a)})}),this}addClass(e){return this.toggleClass(e,!0),this}removeClass(e){return this.toggleClass(e,!1),this}toggleClass(e,s){return typeof e=="string"&&(e=e.split(/[,\s]+/)),this.each(t=>{let i=e;i==null&&s===!1&&(i=Array.from(t.classList)),i&&i.forEach(o=>{if(o!==""){let l="toggle";s!=null&&(l=s?"add":"remove"),t.classList[l](o)}})}),this}hasClass(e){if(typeof e=="string"&&(e=e.split(/[,\s]+/)),e==null&&this.length>0)return Array.from(this[0].classList);let s=!1;return this.each(t=>{s=s||e.every(i=>Array.from(t.classList??[]).includes(i))}),s}on(e,s,t){let i;typeof s=="function"?(t=s,i=void 0):i=s;let o;return i?.delegate&&(o=i.delegate,delete i.delegate),e.split(/[,\s]+/).forEach(a=>{let r=String(a).toLowerCase().split("."),c=r[0]??"",d=r[1],u=t;if(o){let h=u;u=f=>{let m=j(f.target).parents(o);m.length>0?f.delegate=m[0]:f.delegate=f.target,(f.target.matches(o)||m.length>0)&&h(f)}}this.each(h=>{this._save(h,"events",[{event:c,scope:d,callback:u,options:i}]),h.addEventListener(c,u,i)})}),this}off(e,s,t){return typeof s=="function"&&(t=s,s=void 0),(e??"").split(/[,\s]+/).forEach(o=>{let l=String(o).toLowerCase().split("."),a=l[0]??"",r=l[1];this.each(c=>{if(Array.isArray(c._mQuery?.events))for(let d=c._mQuery.events.length-1;d>=0;d--){let u=c._mQuery.events[d];u&&(r==null||r===""?(u.event==a||a==="")&&(u.callback==t||t==null)&&(c.removeEventListener(u.event,u.callback,u.options),c._mQuery.events.splice(d,1)):(u.event==a||a==="")&&u.scope==r&&(c.removeEventListener(u.event,u.callback,u.options),c._mQuery.events.splice(d,1)))}})}),this}trigger(e,s){let t,i=["click","dblclick","mousedown","mouseup","mousemove"],o=["keydown","keyup","keypress"];return e instanceof Event?t=e:i.includes(e)?t=new MouseEvent(e,s):o.includes(e)?t=new KeyboardEvent(e,s):t=new Event(e,s),this.each(l=>{l.dispatchEvent(t)}),this}attr(e,s){if(s===void 0&&typeof e=="string")return this[0]?this[0].getAttribute(e)??void 0:void 0;{let t={};return typeof e=="object"?t=e:t[e]=s,this.each(i=>{Object.entries(t).forEach(([o,l])=>{i.setAttribute(o,l)})}),this}}removeAttr(...e){return this.each(s=>{e.forEach(t=>{s.removeAttribute(t)})}),this}prop(e,s){if(s===void 0&&typeof e=="string")return this[0]?this[0][e]:void 0;{let t={};return typeof e=="object"?t=e:t[e]=s,this.each(i=>{Object.entries(t).forEach(([o,l])=>{let a=n._fixProp(o);i[a]=l,a=="innerHTML"&&n._scriptConvert(i)})}),this}}removeProp(...e){return this.each(s=>{e.forEach(t=>{delete s[n._fixProp(t)]})}),this}data(e,s){if(e instanceof Object&&typeof e!="string"){Object.entries(e).forEach(t=>{this.data(t[0],t[1])});return}if(e&&typeof e=="string"&&e.indexOf("-")!=-1&&console.error(`Key "${e}" contains "-" (dash). Dashes are not allowed in property names. Use camelCase instead.`),arguments.length<2)if(this[0]){let t=Object.assign({},this[0].dataset);return Object.keys(t).forEach(i=>{let o=t[i];if(o.startsWith("[")||o.startsWith("{"))try{t[i]=JSON.parse(o)}catch{}}),e?t[e]:t}else return;else return this.each(t=>{s!=null?t.dataset[e]=s instanceof Object?JSON.stringify(s):s:delete t.dataset[e]}),this}removeData(e){return typeof e=="string"&&(e=e.split(/[,\s]+/)),this.each(s=>{e.forEach(t=>{delete s.dataset[t]})}),this}show(){return this.toggle(!0)}hide(){return this.toggle(!1)}toggle(e){return this.each(s=>{let t=s.style.display,i=getComputedStyle(s).display,o=t=="none"||i=="none";if(o&&(e==null||e===!0)){let l=s instanceof HTMLTableRowElement?"table-row":s instanceof HTMLTableCellElement?"table-cell":"block";s.style.display=s._mQuery?.prevDisplay??(t==i&&i!="none"?"":l),this._save(s,"prevDisplay",null)}!o&&(e==null||e===!1)&&(i!="none"&&this._save(s,"prevDisplay",i),s.style.setProperty("display","none"))})}empty(){return this.html("")}html(e){return e instanceof HTMLElement?this.empty().append(e):this.prop("innerHTML",e)}text(e){return this.prop("textContent",e)}val(e){return this.prop("value",e)}change(){return this.trigger("change")}click(){return this.trigger("click")}},j=function(n,e){if(typeof n=="function"){let s=n;document.readyState=="complete"?s():window.addEventListener("load",s)}else return new Re(n,e)};j.html=n=>{let e=Re._fragment(n);return j(e.children,e)};j.version=Re.version;function ft(n){return/^[0-1]+$/.test(String(n))}function re(n){return/^[-+]?[0-9]+$/.test(String(n))}function Qe(n,e){return typeof n=="string"&&(n=n.replace(new RegExp(e.groupSymbol,"g"),"").replace(e.decimalSymbol,".")),(typeof n=="number"||typeof n=="string"&&n!=="")&&!isNaN(Number(n))}function ht(n,e){if(typeof n=="object"||n==="")return!1;if(Qe(n,e))return!0;let s=e,t=new RegExp("^"+(s.currencyPrefix?"\\"+s.currencyPrefix+"?":"")+"[-+]?"+(s.currencyPrefix?"\\"+s.currencyPrefix+"?":"")+"[0-9]*[\\"+s.decimalSymbol+"]?[0-9]+"+(s.currencySuffix?"\\"+s.currencySuffix+"?":"")+"$","i");return typeof n=="string"&&(n=n.replace(new RegExp(s.groupSymbol,"g"),"")),t.test(String(n))}function pt(n){return/^(0x)?[0-9a-fA-F]+$/.test(String(n))}function ze(n){return/^[a-zA-Z0-9_-]+$/.test(String(n))}function mt(n){return/^[a-zA-Z0-9._%\-+]+@[а-яА-Яa-zA-Z0-9.-]+\.[а-яА-Яa-zA-Z]+$/.test(String(n))}function gt(n){return new RegExp("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$").test(String(n))}function we(n){if(n==null||Object.prototype.toString.call(n)!=="[object Object]")return!1;if(n.constructor===void 0)return!0;let e=Object.getPrototypeOf(n);return e===null||e===Object.prototype}function Ve(n){if(typeof n!="string")return null;n=n.trim().toUpperCase(),n[0]==="#"&&(n=n.substr(1));let e={r:0,g:0,b:0,a:1};if(n.length===3){let s=n[0]??"0",t=n[1]??"0",i=n[2]??"0";e={r:parseInt(s+s,16),g:parseInt(t+t,16),b:parseInt(i+i,16),a:1}}else if(n.length===6)e={r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16),a:1};else if(n.length===8)e={r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16),a:Math.round(parseInt(n.substr(6,2),16)/255*100)/100};else if(n.length>4&&n.substr(0,4)==="RGB("){let s=n.replace("RGB","").replace(/\(/g,"").replace(/\)/g,"").split(",");e={r:parseInt(s[0]??"0",10),g:parseInt(s[1]??"0",10),b:parseInt(s[2]??"0",10),a:1}}else if(n.length>5&&n.substr(0,5)==="RGBA("){let s=n.replace("RGBA","").replace(/\(/g,"").replace(/\)/g,"").split(",");e={r:parseInt(s[0]??"0",10),g:parseInt(s[1]??"0",10),b:parseInt(s[2]??"0",10),a:parseFloat(s[3]??"1")}}else return null;return e}function qe(n,e){let s=i(n),t=i(e);return(Math.max(s,t)+.05)/(Math.min(s,t)+.05);function i(o){let{r:l,g:a,b:r}=Ve(o)??{r:0,g:0,b:0,a:1},c=2.2,d=l/255,u=a/255,h=r/255,f=d<=.03928?d/12.92:Math.pow((d+.055)/1.055,c),m=u<=.03928?u/12.92:Math.pow((u+.055)/1.055,c),y=h<=.03928?h/12.92:Math.pow((h+.055)/1.055,c);return .2126*f+.7152*m+.0722*y}}function yt(n,e){return qe(n,e).toFixed(2)}function bt(n,e,s,t){let i,o,l;typeof n=="object"&&n!==null&&(e=n.s,s=n.v,t=n.a,n=n.h),n=n/360,e=e/100,s=s/100;let a=Math.floor(n*6),r=n*6-a,c=s*(1-e),d=s*(1-r*e),u=s*(1-(1-r)*e);switch(a%6){case 0:i=s,o=u,l=c;break;case 1:i=d,o=s,l=c;break;case 2:i=c,o=s,l=u;break;case 3:i=c,o=d,l=s;break;case 4:i=u,o=c,l=s;break;case 5:i=s,o=c,l=d;break}return{r:Math.round((i??0)*255),g:Math.round((o??0)*255),b:Math.round((l??0)*255),a:t??1}}function xt(n,e,s,t){typeof n=="object"&&n!==null&&(e=n.g,s=n.b,t=n.a,n=n.r);let i=Math.max(n,e,s),o=Math.min(n,e,s),l=i-o,a,r=i===0?0:l/i,c=i/255;switch(i){case o:a=0;break;case n:a=e-s+l*(e<s?6:0),a/=6*l;break;case e:a=s-n+l*2,a/=6*l;break;case s:a=n-e+l*4,a/=6*l;break}return{h:Math.round((a??0)*360),s:Math.round(r*100),v:Math.round(c*100),a:t??1}}function _e(n,e){let s=Object.assign({functions:!0,elements:!0,events:!0,exclude:[],parent:""},e??{});if(Array.isArray(n)){let t=Array.from(n);return t.forEach((i,o)=>{t[o]=_e(i,{functions:s.functions,elements:s.elements,events:s.events,exclude:s.exclude,parent:s.parent+"[]"})}),t}else if(we(n)){let t={};return Object.assign(t,n),Array.isArray(s.exclude)&&s.exclude.forEach(i=>{delete t[i]}),Object.keys(t).forEach(i=>{typeof s.exclude=="function"&&s.exclude(i,{obj:n,parent:s.parent})?t[i]=void 0:t[i]=_e(t[i],{functions:s.functions,elements:s.elements,events:s.events,exclude:s.exclude,parent:s.parent+(s.parent?".":"")+i}),t[i]===void 0&&delete t[i]}),t}else return n instanceof Function&&!s.functions||n instanceof Node&&!s.elements||n instanceof Event&&!s.events?void 0:n}function te(n,e,...s){if(Array.isArray(n))if(Array.isArray(e))n.splice(0,n.length),e.forEach(t=>{n.push(_e(t))});else throw new Error("Arrays can be extended with arrays only");else{if(n instanceof Node||n instanceof Event)throw new Error("HTML elmenents and events cannot be extended");if(n&&typeof n=="object"&&e!=null){if(typeof e!="object")throw new Error("Object can be extended with other objects only.");Object.keys(e).forEach(t=>{if(n[t]!=null&&typeof n[t]=="object"&&e[t]!=null&&typeof e[t]=="object"){let i=_e(e[t]);n[t]instanceof Node||n[t]instanceof Event?n[t]=i:(Array.isArray(n[t])&&we(i)&&(n[t]={}),te(n[t],i))}else n[t]=_e(e[t])})}else if(e!=null)throw new Error("Object is not extendable, only {} or [] can be extended.")}if(s.length>0)for(let t=0;t<s.length;t++)te(n,s[t]);return n}function vt(n,e){let s=0,t=0,i=1,o=0,l=0,a=String.alphabet;function r(u,h,f){if(f){for(s=h;f=r(u,s),f<76&&f>65;)++s;return+u.slice(h-1,s)}let m=a?a.indexOf(u.charAt(h)):-1;return m>-1?m+76:(m=u.charCodeAt(h)||0,m<45||m>127?m:m<46?65:m<48?m-1:m<58?m+18:m<65?m-11:m<91?m+11:m<97?m-37:m<123?m+5:m-63)}let c=""+n,d=""+e;if(c!=d){for(;i;)if(t=r(c,o++),i=r(d,l++),t<76&&i<76&&t>66&&i>66&&(t=r(c,o,o),i=r(d,l,o=s),l=s),t!=i)return t<i?-1:1}return 0}function Le(n,e){let s;try{s=n;let t=String(e).split(".");for(let i=0;i<t.length;i++)s=s[t[i]??""]}catch{s=void 0}return s}function We(n,e={}){if(Array.isArray(n))return n.forEach((s,t)=>{if(typeof s=="string"||typeof s=="number")n[t]={id:s,text:String(s)};else if(s!=null){if(e.itemMap!=null){let i=Le(s,e.itemMap.id);e.itemMap.id!=null&&i!=null&&(s.id=i),i=Le(s,e.itemMap.text),e.itemMap.text!=null&&i&&(s.text=i)}s.caption!=null&&s.text==null&&(s.text=s.caption),s.text!=null&&s.id==null&&(s.id=s.text),s.text==null&&s.id!=null&&(s.text=s.id)}else n[t]={id:null,text:"null"}}),n;if(typeof n=="function"){let s=n(n,e);return We(s,e)}else if(typeof n=="object"&&n!==null){let s=n;return Object.keys(s).map(t=>({id:t,text:String(s[t]??"")}))}}function Ye(n,e=""){let s="";return Object.keys(n).forEach(t=>{s!=""&&(s+="&"),typeof n[t]=="object"?s+=Ye(n[t],e+t+(e?"]":"")+"["):s+=`${e}${t}${e?"]":""}=${n[t]}`}),s}function Tt(n,e,s,t){let i=s?.dataType??t,o=e.body;switch(e.method=String(e.method).toUpperCase(),i){case"RESTFULL":case"RESTFULJSON":{["POST","PUT","DELETE"].includes(String(e.method))&&(e.headers["Content-Type"]="application/json"),String(e.method)=="GET"&&(i=="RESTFULLJSON"&&(o={request:o}),l());break}case"HTTP":case"HTTPJSON":case"JSON":{String(e.method)=="GET"?((i=="JSON"||i==="HTTPJSON")&&(o={request:o}),l()):(e.headers["Content-Type"]="application/json",e.method="POST");break}default:typeof i=="function"?e=i(n,e,s):console.log(`ERROR: Unsupported dataType "${i}". Supported types are JSON (default), HTTP, RESTFULL. For backward compatibility HTTPJSON is same as JSON. RESTULFLJSON will encode GET request as JSON.`)}return e.body!=null&&(e.body=typeof e.body=="string"?e.body:JSON.stringify(e.body)),e;function l(){let a=o;Object.keys(a).forEach(r=>{let c=a[r];typeof c=="object"&&(c=JSON.stringify(c)),n.searchParams.append(r,String(c??""))}),delete e.body}}function wt(n){let e=[],s=n.replace(/\/\(/g,"(?:/").replace(/\+/g,"__plus__").replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g,(t,i,o,l,a,r)=>(e.push({name:l,optional:!!r}),i=i||"",""+(r?"":i)+"(?:"+(r?i:"")+(o||"")+(a||o&&"([^/.]+?)"||"([^/]+?)")+")"+(r||""))).replace(/([\/.])/g,"\\$1").replace(/__plus__/g,"(.+)").replace(/\*/g,"(.*)");return{path:new RegExp("^"+s+"$","i"),keys:e}}function _t(n,e=250){let s;return(...t)=>{clearTimeout(s),s=setTimeout(()=>{n(...t)},e)}}async function kt(n=0){return new Promise(e=>{setTimeout(()=>e(),n)})}function Ae(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/(?:\r\n|\r|\n)/g," ").replace(/\s\s+/g," ").trim();break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Ae(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Ae(e[s])}),e}}return n}function Fe(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/<(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>/ig,"");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Fe(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Fe(e[s])}),e}}return n}function Ee(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Ee(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Ee(e[s])}),e}}return n}function He(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=He(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=He(e[s])}),e}}return n}function Ct(n){if(n===""||n==null)return"";let e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-￿\w-]/g;return(n+"").replace(e,(s,t)=>t?s==="\0"?"\uFFFD":s.slice(0,-1)+"\\"+s.charCodeAt(s.length-1).toString(16)+" ":"\\"+s)}function Et(n){if(n===""||n==null)return"";let e=/\\[\da-fA-F]{1,6}[\x20\t\r\n\f]?|\\([^\r\n\f])/g;return n.replace(e,(s,t)=>{let i=parseInt("0x"+s.slice(1),16)-65536;return t||(i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,i&1023|56320))})}function St(n){let e=new TextEncoder().encode(n),s="";for(let t of e)s+=String.fromCharCode(t);return btoa(s)}function Rt(n){let e=atob(n),s=new Uint8Array(e.length);for(let t=0;t<e.length;t++)s[t]=e.charCodeAt(t);return new TextDecoder().decode(s)}async function $t(n){let e=new TextEncoder().encode(n);return crypto.subtle.digest("SHA-256",e).then(s=>Array.from(new Uint8Array(s)).map(i=>i.toString(16).padStart(2,"0")).join(""))}function Mt(n,e){return typeof n!="string"||!e||typeof e!="object"?n:n.replace(/\${([^}]+)?}/g,function(s,t){return e[t]||t})}var bi=j;function Dt(n,e){let s=new RegExp(`<${e.tag}[^>]*class=["']${e.class.replace(/-/g,"\\-")}["'][^>]*>([\\s\\S]*?)<\\/${e.tag}>`,"ig");if(typeof n=="string")for(;n.indexOf(`<${e.tag} class="${e.class}"`)!==-1;)n=n.replace(s,"$1");else for(;n.innerHTML.indexOf(`<${e.tag} class="${e.class}"`)!==-1;)n.innerHTML=n.innerHTML.replace(s,"$1")}function Ne(n,e,s,t){let i=t.wholeWord;typeof e!="string"&&(e=String(e)),e=e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&").replace(/&/g,"&amp;").replace(/</g,"&gt;").replace(/>/g,"&lt;");let o=new RegExp((i?"\\b":"")+e+(i?"\\b":"")+"(?![^<]*>)","i"+(t.onlyFirst?"":"g"));return n=n.replace(o,s)}function It(n,e,s={onlyFirst:!1,wholeWord:!1,isRegex:!1}){s.tag??="span",s.class??="tsg-marker",s.raplace=i=>`<${s.tag} class="${s.class}">${i}</${s.tag}>`;let t=s.isRegex||!1;return Array.isArray(e)||(e!=null&&e!==""?e=[e]:e=[]),typeof n=="string"?(Dt(n,s),e.forEach(i=>{if(t)try{let o="i"+(s.onlyFirst?"":"g"),l=new RegExp(i,o);n=n.replace(l,s.raplace)}catch(o){console.error("Invalid regular expression:",o),n=Ne(n,i,s.raplace,s)}else n=Ne(n,i,s.raplace,s)})):bi(n).each(i=>{Dt(i,s),t?e.forEach(o=>{try{let d=function(u){if(u.nodeType===3)c.push(u);else if(u.nodeType===1&&u.tagName!=="SCRIPT"&&u.tagName!=="STYLE")for(let h=0;h<u.childNodes.length;h++)d(u.childNodes[h])};var l=d;let a="i";s.onlyFirst||(a+="g"),s.wholeWord&&(o="\b"+o+"\b");let r=new RegExp(o,a),c=[];d(i),c.forEach(u=>{let h=u.nodeValue,f=[],m;if(s.onlyFirst)m=r.exec(h),m&&f.push({index:m.index,text:m[0]});else for(;(m=r.exec(h))!==null;)f.push({index:m.index,text:m[0]});if(f.length>0){let y=u.parentNode,x=document.createDocumentFragment(),b=0;f.forEach(g=>{g.index>b&&x.appendChild(document.createTextNode(h.substring(b,g.index)));let v=document.createElement(s.tag);v.className=s.class,v.appendChild(document.createTextNode(g.text)),x.appendChild(v),b=g.index+g.text.length}),b<h.length&&x.appendChild(document.createTextNode(h.substring(b))),y.replaceChild(x,u)}})}catch(a){console.error("Invalid regular expression:",a),i.innerHTML=Ne(i.innerHTML,o,s.raplace,s)}}):e.forEach(o=>{i.innerHTML=Ne(i.innerHTML,o,s.raplace,s)})}),n}var se={};function Pe(n){return n==null?(console.log('ERROR: Property "name" is required but not supplied.'),!1):se[n]!=null?(console.log(`ERROR: Object named "${n}" is already registered as TsUi.${n}.`),!1):ze(n)?!0:(console.log('ERROR: Property "name" has to be alpha-numeric (a-z, 0-9, dash and underscore).'),!1)}var ve=j;function Ot(n,e,s){return new Promise(t=>{let i=e??{},o="";typeof n=="object"?(i=n,o=String(i.text??"")):o=String(n??""),i.where??=document.body,i.timeout??=15e3,typeof s.tmpSlot.notify_resolve=="function"&&(s.tmpSlot.notify_resolve(),ve(s.tmpSlot.notify_where).find("#tsg-notify").remove()),s.tmpSlot.notify_resolve=t,s.tmpSlot.notify_where=i.where,clearTimeout(s.tmpSlot.notify_timer);let l=i.where;if(o){if(typeof i.actions=="object"){let r={};Object.keys(i.actions).forEach(c=>{r[c]=`<a class="tsg-notify-link" value="${c}">${c}</a>`}),o=s.execTemplate(o,r)}let a=`
1
+ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeFormat:"m/d/yyyy|hh:mi pm",currencyPrefix:"$",currencySuffix:"",currencyPrecision:2,groupSymbol:",",decimalSymbol:".",shortmonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fullmonths:["January","February","March","April","May","June","July","August","September","October","November","December"],shortdays:["M","T","W","T","F","S","S"],fulldays:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],weekStarts:"S",phrases:{"${count} letters or more...":"---","Add new record":"---","Add New":"---","Advanced Search":"---",after:"---","AJAX error. See console for more details.":"---","All Fields":"---",All:"---",Any:"---","Are you sure you want to delete ${count} ${records}?":"---","Attach files by dragging and dropping or Click to Select":"---",before:"---","begins with":"---",begins:"---",between:"---",buffered:"---",Cancel:"---",Close:"---",Column:"---",Confirmation:"---",contains:"---",Copied:"---","Copy to clipboard":"---","Current Date & Time":"---","Delete selected records":"---",Delete:"---",'Do you want to delete search item "${item}"?':"---","Edit selected record":"---",Edit:"---","Empty list":"---","ends with":"---",ends:"---","Field should be at least ${count} characters.":"---",Hide:"---",in:"---","is not":"---",is:"---","less than":"---","Line #":"---","Load ${count} more...":"---","Loading...":"---","Maximum number of files is ${count}":"---","Maximum total size is ${count}":"---",Modified:"---","more than":"---","Multiple Fields":"---",Name:"---","No items found":"---","No matches":"---",No:"---",none:"---","Not a float":"---","Not a hex number":"---","Not a valid date":"---","Not a valid email":"---","Not alpha-numeric":"---","Not an integer":"---","Not in money format":"---","not in":"---",Notification:"---",of:"---",Ok:"---",Opacity:"---","Record ID":"---",record:"---",records:"---","Refreshing...":"---",RegEx:"---",regex:"---","Reload data in the list":"---",Remove:"---","Remove This Field":"---","Request aborted.":"---","Required field":"---",Reset:"---","Restore Default State":"---","Returned data is not in valid JSON format.":"---","Save changed records":"---","Save Grid State":"---",Save:"---","Saved Searches":"---","Saving...":"---","Search took ${count} seconds":"---",Search:"---","Select Hour":"---","Select Minute":"---",selected:"---","Server Response ${count} seconds":"---","Show/hide columns":"---",Show:"---",Size:"---",Skip:"---","Sorting took ${count} seconds":"---","Type to search...":"---",Type:"---",Yes:"---",Yesterday:"---","Your remote data source record count has changed, reloading from the first record.":"---"}};var Re=class n{static version=.8;context;nodes;length;constructor(e,s){this.context=s??document;let t=[];if(Array.isArray(e))t=e;else if(e instanceof Node||e instanceof Window)t=[e];else if(e instanceof n)t=e.nodes;else if(typeof e=="string"){if(typeof this.context.querySelector!="function")throw new Error("Invalid context");t=Array.from(this.context.querySelectorAll(e))}else if(e==null)t=[];else{let i=Array.from(e??[]);if(typeof e=="object"&&Array.isArray(i))t=i;else throw new Error(`Invalid selector "${e}"`)}this.nodes=t,this.length=t.length,this.each((i,o)=>{this[o]=i})}static _fragment(e){let s=document.createElement("template");return s.innerHTML=e,s.content.childNodes.forEach(t=>{let i=n._scriptConvert(t);i!=t&&s.content.replaceChild(i,t)}),s.content}static _scriptConvert(e){let s=t=>{let o=t.ownerDocument.createElement("script");o.text=t.text;let l=t.attributes;for(let a=0;a<l.length;a++){let r=l[a];r&&o.setAttribute(r.name,r.value)}return o};return e.tagName=="SCRIPT"&&(e=s(e)),e.querySelectorAll&&e.querySelectorAll("script").forEach(t=>{t.parentNode.replaceChild(s(t),t)}),e}static _fixProp(e){let s={cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",colspan:"colSpan",contenteditable:"contentEditable",for:"htmlFor",frameborder:"frameBorder",maxlength:"maxLength",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"};return s[e]?s[e]:e}_insert(e,s){let t=[],i=this.length;if(i<1)return this;if(typeof s=="string")this.each(o=>{let l=n._fragment(s);t.push(...l.childNodes),o[e]?.(l)});else if(s instanceof n){let o=i==1;s.each(l=>{this.each(a=>{let r=o?l:l.cloneNode(!0);t.push(r),a[e]?.(r),n._scriptConvert(r)})}),o||s.remove()}else if(s instanceof Node)this.each(o=>{let l=i===1?s:n._fragment(s.outerHTML);t.push(...i===1?[s]:l.childNodes),o[e]?.(l)}),i>1&&s.remove();else throw new Error(`Incorrect argument for "${e}(html)". It expects one string argument.`);return e=="replaceWith"?new n(t,this.context):this}_save(e,s,t){e._mQuery=e._mQuery??{},Array.isArray(t)?(e._mQuery[s]=e._mQuery[s]??[],e._mQuery[s].push(...t)):t!=null?e._mQuery[s]=t:delete e._mQuery[s]}get(e){if(e==null)return this.nodes;e<0&&(e=this.length+e);let s=this[e];return s||null}eq(e){e<0&&(e=this.length+e);let s=this[e],t=s!=null?[s]:[];return new n(t,this.context)}then(e){let s=e(this);return s??this}find(e){let s=[];return this.each(t=>{let i=Array.from(t.querySelectorAll(e));i.length>0&&s.push(...i)}),new n(s,this.context)}filter(e){let s=[];return this.each(t=>{(t===e||typeof e=="string"&&t.matches&&t.matches(e)||typeof e=="function"&&e(t))&&s.push(t)}),new n(s,this.context)}next(){let e=[];return this.each(s=>{let t=s.nextElementSibling;t&&e.push(t)}),new n(e,this.context)}prev(){let e=[];return this.each(s=>{let t=s.previousElementSibling;t&&e.push(t)}),new n(e,this.context)}shadow(e){let s=[];this.each(i=>{i.shadowRoot&&s.push(i.shadowRoot)});let t=new n(s,this.context);return e?t.find(e):t}closest(e){let s=[];return this.each(t=>{let i=t.closest(e);i&&s.push(i)}),new n(s,this.context)}host(e){let s=[],t=o=>o.parentNode?t(o.parentNode):o,i=o=>{let l=t(o);s.push(l.host?l.host:l),l.host&&e&&i(l.host)};return this.each(o=>{i(o)}),new n(s,this.context)}parent(e){return this.parents(e,!0)}parents(e,s){let t=[],i=l=>{if(t.indexOf(l)==-1&&t.push(l),!s&&l.parentNode)return i(l.parentNode)};this.each(l=>{l.parentNode&&i(l.parentNode)});let o=new n(t,this.context);return e?o.filter(e):o}add(e){let s=e instanceof n?e.nodes:Array.isArray(e)?e:[e];return new n(this.nodes.concat(s),this.context)}each(e){return this.nodes.forEach((s,t)=>{e(s,t,this)}),this}append(e){return this._insert("append",e)}prepend(e){return this._insert("prepend",e)}after(e){return this._insert("after",e)}before(e){return this._insert("before",e)}replace(e){return this._insert("replaceWith",e)}remove(){return this.each(e=>{e.remove()}),this}css(e,s){let t=typeof e=="object"?e:{},i=arguments.length;if(i===0||i===1&&typeof e=="string")if(this[0]){let o=this[0].style;if(typeof e=="string"){let l=o.getPropertyPriority(e);return o.getPropertyValue(e)+(l?"!"+l:"")}else return Object.fromEntries(this[0].style.cssText.split(";").filter(l=>!!l).map(l=>l.split(":").map(a=>a.trim())))}else return;else return typeof e!="object"&&(t={},t[e]=s),this.each(o=>{Object.keys(t).forEach(l=>{let a=String(t[l]).toLowerCase().includes("!important")?"important":"";o.style.setProperty(l,String(t[l]).replace(/\!important/i,""),a)})}),this}addClass(e){return this.toggleClass(e,!0),this}removeClass(e){return this.toggleClass(e,!1),this}toggleClass(e,s){return typeof e=="string"&&(e=e.split(/[,\s]+/)),this.each(t=>{let i=e;i==null&&s===!1&&(i=Array.from(t.classList)),i&&i.forEach(o=>{if(o!==""){let l="toggle";s!=null&&(l=s?"add":"remove"),t.classList[l](o)}})}),this}hasClass(e){if(typeof e=="string"&&(e=e.split(/[,\s]+/)),e==null&&this.length>0)return Array.from(this[0].classList);let s=!1;return this.each(t=>{s=s||e.every(i=>Array.from(t.classList??[]).includes(i))}),s}on(e,s,t){let i;typeof s=="function"?(t=s,i=void 0):i=s;let o;return i?.delegate&&(o=i.delegate,delete i.delegate),e.split(/[,\s]+/).forEach(a=>{let r=String(a).toLowerCase().split("."),c=r[0]??"",d=r[1],u=t;if(o){let h=u;u=f=>{let m=j(f.target).parents(o);m.length>0?f.delegate=m[0]:f.delegate=f.target,(f.target.matches(o)||m.length>0)&&h(f)}}this.each(h=>{this._save(h,"events",[{event:c,scope:d,callback:u,options:i}]),h.addEventListener(c,u,i)})}),this}off(e,s,t){return typeof s=="function"&&(t=s,s=void 0),(e??"").split(/[,\s]+/).forEach(o=>{let l=String(o).toLowerCase().split("."),a=l[0]??"",r=l[1];this.each(c=>{if(Array.isArray(c._mQuery?.events))for(let d=c._mQuery.events.length-1;d>=0;d--){let u=c._mQuery.events[d];u&&(r==null||r===""?(u.event==a||a==="")&&(u.callback==t||t==null)&&(c.removeEventListener(u.event,u.callback,u.options),c._mQuery.events.splice(d,1)):(u.event==a||a==="")&&u.scope==r&&(c.removeEventListener(u.event,u.callback,u.options),c._mQuery.events.splice(d,1)))}})}),this}trigger(e,s){let t,i=["click","dblclick","mousedown","mouseup","mousemove"],o=["keydown","keyup","keypress"];return e instanceof Event?t=e:i.includes(e)?t=new MouseEvent(e,s):o.includes(e)?t=new KeyboardEvent(e,s):t=new Event(e,s),this.each(l=>{l.dispatchEvent(t)}),this}attr(e,s){if(s===void 0&&typeof e=="string")return this[0]?this[0].getAttribute(e)??void 0:void 0;{let t={};return typeof e=="object"?t=e:t[e]=s,this.each(i=>{Object.entries(t).forEach(([o,l])=>{i.setAttribute(o,l)})}),this}}removeAttr(...e){return this.each(s=>{e.forEach(t=>{s.removeAttribute(t)})}),this}prop(e,s){if(s===void 0&&typeof e=="string")return this[0]?this[0][e]:void 0;{let t={};return typeof e=="object"?t=e:t[e]=s,this.each(i=>{Object.entries(t).forEach(([o,l])=>{let a=n._fixProp(o);i[a]=l,a=="innerHTML"&&n._scriptConvert(i)})}),this}}removeProp(...e){return this.each(s=>{e.forEach(t=>{delete s[n._fixProp(t)]})}),this}data(e,s){if(e instanceof Object&&typeof e!="string"){Object.entries(e).forEach(t=>{this.data(t[0],t[1])});return}if(e&&typeof e=="string"&&e.indexOf("-")!=-1&&console.error(`Key "${e}" contains "-" (dash). Dashes are not allowed in property names. Use camelCase instead.`),arguments.length<2)if(this[0]){let t=Object.assign({},this[0].dataset);return Object.keys(t).forEach(i=>{let o=t[i];if(o.startsWith("[")||o.startsWith("{"))try{t[i]=JSON.parse(o)}catch{}}),e?t[e]:t}else return;else return this.each(t=>{s!=null?t.dataset[e]=s instanceof Object?JSON.stringify(s):s:delete t.dataset[e]}),this}removeData(e){return typeof e=="string"&&(e=e.split(/[,\s]+/)),this.each(s=>{e.forEach(t=>{delete s.dataset[t]})}),this}show(){return this.toggle(!0)}hide(){return this.toggle(!1)}toggle(e){return this.each(s=>{let t=s.style.display,i=getComputedStyle(s).display,o=t=="none"||i=="none";if(o&&(e==null||e===!0)){let l=s instanceof HTMLTableRowElement?"table-row":s instanceof HTMLTableCellElement?"table-cell":"block";s.style.display=s._mQuery?.prevDisplay??(t==i&&i!="none"?"":l),this._save(s,"prevDisplay",null)}!o&&(e==null||e===!1)&&(i!="none"&&this._save(s,"prevDisplay",i),s.style.setProperty("display","none"))})}empty(){return this.html("")}html(e){return e instanceof HTMLElement?this.empty().append(e):this.prop("innerHTML",e)}text(e){return this.prop("textContent",e)}val(e){return this.prop("value",e)}change(){return this.trigger("change")}click(){return this.trigger("click")}},j=function(n,e){if(typeof n=="function"){let s=n;document.readyState=="complete"?s():window.addEventListener("load",s)}else return new Re(n,e)};j.html=n=>{let e=Re._fragment(n);return j(e.children,e)};j.version=Re.version;function ft(n){return/^[0-1]+$/.test(String(n))}function re(n){return/^[-+]?[0-9]+$/.test(String(n))}function Qe(n,e){return typeof n=="string"&&(n=n.replace(new RegExp(e.groupSymbol,"g"),"").replace(e.decimalSymbol,".")),(typeof n=="number"||typeof n=="string"&&n!=="")&&!isNaN(Number(n))}function ht(n,e){if(typeof n=="object"||n==="")return!1;if(Qe(n,e))return!0;let s=e,t=new RegExp("^"+(s.currencyPrefix?"\\"+s.currencyPrefix+"?":"")+"[-+]?"+(s.currencyPrefix?"\\"+s.currencyPrefix+"?":"")+"[0-9]*[\\"+s.decimalSymbol+"]?[0-9]+"+(s.currencySuffix?"\\"+s.currencySuffix+"?":"")+"$","i");return typeof n=="string"&&(n=n.replace(new RegExp(s.groupSymbol,"g"),"")),t.test(String(n))}function pt(n){return/^(0x)?[0-9a-fA-F]+$/.test(String(n))}function ze(n){return/^[a-zA-Z0-9_-]+$/.test(String(n))}function mt(n){return/^[a-zA-Z0-9._%\-+]+@[а-яА-Яa-zA-Z0-9.-]+\.[а-яА-Яa-zA-Z]+$/.test(String(n))}function gt(n){return new RegExp("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$").test(String(n))}function we(n){if(n==null||Object.prototype.toString.call(n)!=="[object Object]")return!1;if(n.constructor===void 0)return!0;let e=Object.getPrototypeOf(n);return e===null||e===Object.prototype}function Ve(n){if(typeof n!="string")return null;n=n.trim().toUpperCase(),n[0]==="#"&&(n=n.substr(1));let e={r:0,g:0,b:0,a:1};if(n.length===3){let s=n[0]??"0",t=n[1]??"0",i=n[2]??"0";e={r:parseInt(s+s,16),g:parseInt(t+t,16),b:parseInt(i+i,16),a:1}}else if(n.length===6)e={r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16),a:1};else if(n.length===8)e={r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16),a:Math.round(parseInt(n.substr(6,2),16)/255*100)/100};else if(n.length>4&&n.substr(0,4)==="RGB("){let s=n.replace("RGB","").replace(/\(/g,"").replace(/\)/g,"").split(",");e={r:parseInt(s[0]??"0",10),g:parseInt(s[1]??"0",10),b:parseInt(s[2]??"0",10),a:1}}else if(n.length>5&&n.substr(0,5)==="RGBA("){let s=n.replace("RGBA","").replace(/\(/g,"").replace(/\)/g,"").split(",");e={r:parseInt(s[0]??"0",10),g:parseInt(s[1]??"0",10),b:parseInt(s[2]??"0",10),a:parseFloat(s[3]??"1")}}else return null;return e}function We(n,e){let s=i(n),t=i(e);return(Math.max(s,t)+.05)/(Math.min(s,t)+.05);function i(o){let{r:l,g:a,b:r}=Ve(o)??{r:0,g:0,b:0,a:1},c=2.2,d=l/255,u=a/255,h=r/255,f=d<=.03928?d/12.92:Math.pow((d+.055)/1.055,c),m=u<=.03928?u/12.92:Math.pow((u+.055)/1.055,c),y=h<=.03928?h/12.92:Math.pow((h+.055)/1.055,c);return .2126*f+.7152*m+.0722*y}}function yt(n,e){return We(n,e).toFixed(2)}function bt(n,e,s,t){let i,o,l;typeof n=="object"&&n!==null&&(e=n.s,s=n.v,t=n.a,n=n.h),n=n/360,e=e/100,s=s/100;let a=Math.floor(n*6),r=n*6-a,c=s*(1-e),d=s*(1-r*e),u=s*(1-(1-r)*e);switch(a%6){case 0:i=s,o=u,l=c;break;case 1:i=d,o=s,l=c;break;case 2:i=c,o=s,l=u;break;case 3:i=c,o=d,l=s;break;case 4:i=u,o=c,l=s;break;case 5:i=s,o=c,l=d;break}return{r:Math.round((i??0)*255),g:Math.round((o??0)*255),b:Math.round((l??0)*255),a:t??1}}function xt(n,e,s,t){typeof n=="object"&&n!==null&&(e=n.g,s=n.b,t=n.a,n=n.r);let i=Math.max(n,e,s),o=Math.min(n,e,s),l=i-o,a,r=i===0?0:l/i,c=i/255;switch(i){case o:a=0;break;case n:a=e-s+l*(e<s?6:0),a/=6*l;break;case e:a=s-n+l*2,a/=6*l;break;case s:a=n-e+l*4,a/=6*l;break}return{h:Math.round((a??0)*360),s:Math.round(r*100),v:Math.round(c*100),a:t??1}}function _e(n,e){let s=Object.assign({functions:!0,elements:!0,events:!0,exclude:[],parent:""},e??{});if(Array.isArray(n)){let t=Array.from(n);return t.forEach((i,o)=>{t[o]=_e(i,{functions:s.functions,elements:s.elements,events:s.events,exclude:s.exclude,parent:s.parent+"[]"})}),t}else if(we(n)){let t={};return Object.assign(t,n),Array.isArray(s.exclude)&&s.exclude.forEach(i=>{delete t[i]}),Object.keys(t).forEach(i=>{typeof s.exclude=="function"&&s.exclude(i,{obj:n,parent:s.parent})?t[i]=void 0:t[i]=_e(t[i],{functions:s.functions,elements:s.elements,events:s.events,exclude:s.exclude,parent:s.parent+(s.parent?".":"")+i}),t[i]===void 0&&delete t[i]}),t}else return n instanceof Function&&!s.functions||n instanceof Node&&!s.elements||n instanceof Event&&!s.events?void 0:n}function te(n,e,...s){if(Array.isArray(n))if(Array.isArray(e))n.splice(0,n.length),e.forEach(t=>{n.push(_e(t))});else throw new Error("Arrays can be extended with arrays only");else{if(n instanceof Node||n instanceof Event)throw new Error("HTML elmenents and events cannot be extended");if(n&&typeof n=="object"&&e!=null){if(typeof e!="object")throw new Error("Object can be extended with other objects only.");Object.keys(e).forEach(t=>{if(n[t]!=null&&typeof n[t]=="object"&&e[t]!=null&&typeof e[t]=="object"){let i=_e(e[t]);n[t]instanceof Node||n[t]instanceof Event?n[t]=i:(Array.isArray(n[t])&&we(i)&&(n[t]={}),te(n[t],i))}else n[t]=_e(e[t])})}else if(e!=null)throw new Error("Object is not extendable, only {} or [] can be extended.")}if(s.length>0)for(let t=0;t<s.length;t++)te(n,s[t]);return n}function vt(n,e){let s=0,t=0,i=1,o=0,l=0,a=String.alphabet;function r(u,h,f){if(f){for(s=h;f=r(u,s),f<76&&f>65;)++s;return+u.slice(h-1,s)}let m=a?a.indexOf(u.charAt(h)):-1;return m>-1?m+76:(m=u.charCodeAt(h)||0,m<45||m>127?m:m<46?65:m<48?m-1:m<58?m+18:m<65?m-11:m<91?m+11:m<97?m-37:m<123?m+5:m-63)}let c=""+n,d=""+e;if(c!=d){for(;i;)if(t=r(c,o++),i=r(d,l++),t<76&&i<76&&t>66&&i>66&&(t=r(c,o,o),i=r(d,l,o=s),l=s),t!=i)return t<i?-1:1}return 0}function Le(n,e){let s;try{s=n;let t=String(e).split(".");for(let i=0;i<t.length;i++)s=s[t[i]??""]}catch{s=void 0}return s}function qe(n,e={}){if(Array.isArray(n))return n.forEach((s,t)=>{if(typeof s=="string"||typeof s=="number")n[t]={id:s,text:String(s)};else if(s!=null){if(e.itemMap!=null){let i=Le(s,e.itemMap.id);e.itemMap.id!=null&&i!=null&&(s.id=i),i=Le(s,e.itemMap.text),e.itemMap.text!=null&&i&&(s.text=i)}s.caption!=null&&s.text==null&&(s.text=s.caption),s.text!=null&&s.id==null&&(s.id=s.text),s.text==null&&s.id!=null&&(s.text=s.id)}else n[t]={id:null,text:"null"}}),n;if(typeof n=="function"){let s=n(n,e);return qe(s,e)}else if(typeof n=="object"&&n!==null){let s=n;return Object.keys(s).map(t=>({id:t,text:String(s[t]??"")}))}}function Ye(n,e=""){let s="";return Object.keys(n).forEach(t=>{s!=""&&(s+="&"),typeof n[t]=="object"?s+=Ye(n[t],e+t+(e?"]":"")+"["):s+=`${e}${t}${e?"]":""}=${n[t]}`}),s}function Tt(n,e,s,t){let i=s?.dataType??t,o=e.body;switch(e.method=String(e.method).toUpperCase(),i){case"RESTFULL":case"RESTFULJSON":{["POST","PUT","DELETE"].includes(String(e.method))&&(e.headers["Content-Type"]="application/json"),String(e.method)=="GET"&&(i=="RESTFULLJSON"&&(o={request:o}),l());break}case"HTTP":case"HTTPJSON":case"JSON":{String(e.method)=="GET"?((i=="JSON"||i==="HTTPJSON")&&(o={request:o}),l()):(e.headers["Content-Type"]="application/json",e.method="POST");break}default:typeof i=="function"?e=i(n,e,s):console.log(`ERROR: Unsupported dataType "${i}". Supported types are JSON (default), HTTP, RESTFULL. For backward compatibility HTTPJSON is same as JSON. RESTULFLJSON will encode GET request as JSON.`)}return e.body!=null&&(e.body=typeof e.body=="string"?e.body:JSON.stringify(e.body)),e;function l(){let a=o;Object.keys(a).forEach(r=>{let c=a[r];typeof c=="object"&&(c=JSON.stringify(c)),n.searchParams.append(r,String(c??""))}),delete e.body}}function wt(n){let e=[],s=n.replace(/\/\(/g,"(?:/").replace(/\+/g,"__plus__").replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g,(t,i,o,l,a,r)=>(e.push({name:l,optional:!!r}),i=i||"",""+(r?"":i)+"(?:"+(r?i:"")+(o||"")+(a||o&&"([^/.]+?)"||"([^/]+?)")+")"+(r||""))).replace(/([\/.])/g,"\\$1").replace(/__plus__/g,"(.+)").replace(/\*/g,"(.*)");return{path:new RegExp("^"+s+"$","i"),keys:e}}function _t(n,e=250){let s;return(...t)=>{clearTimeout(s),s=setTimeout(()=>{n(...t)},e)}}async function kt(n=0){return new Promise(e=>{setTimeout(()=>e(),n)})}function Ae(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/(?:\r\n|\r|\n)/g," ").replace(/\s\s+/g," ").trim();break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Ae(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Ae(e[s])}),e}}return n}function Fe(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/<(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>/ig,"");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Fe(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Fe(e[s])}),e}}return n}function Ee(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=Ee(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=Ee(e[s])}),e}}return n}function He(n){if(n==null)return n;switch(typeof n){case"number":break;case"string":n=String(n).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&");break;case"object":if(Array.isArray(n)){let e=te([],n);return e.forEach((s,t)=>{e[t]=He(s)}),e}else{let e=te({},n);return Object.keys(e).forEach(s=>{e[s]=He(e[s])}),e}}return n}function Ct(n){if(n===""||n==null)return"";let e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-￿\w-]/g;return(n+"").replace(e,(s,t)=>t?s==="\0"?"\uFFFD":s.slice(0,-1)+"\\"+s.charCodeAt(s.length-1).toString(16)+" ":"\\"+s)}function Et(n){if(n===""||n==null)return"";let e=/\\[\da-fA-F]{1,6}[\x20\t\r\n\f]?|\\([^\r\n\f])/g;return n.replace(e,(s,t)=>{let i=parseInt("0x"+s.slice(1),16)-65536;return t||(i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,i&1023|56320))})}function St(n){let e=new TextEncoder().encode(n),s="";for(let t of e)s+=String.fromCharCode(t);return btoa(s)}function Rt(n){let e=atob(n),s=new Uint8Array(e.length);for(let t=0;t<e.length;t++)s[t]=e.charCodeAt(t);return new TextDecoder().decode(s)}async function $t(n){let e=new TextEncoder().encode(n);return crypto.subtle.digest("SHA-256",e).then(s=>Array.from(new Uint8Array(s)).map(i=>i.toString(16).padStart(2,"0")).join(""))}function Mt(n,e){return typeof n!="string"||!e||typeof e!="object"?n:n.replace(/\${([^}]+)?}/g,function(s,t){return e[t]||t})}var bi=j;function Dt(n,e){let s=new RegExp(`<${e.tag}[^>]*class=["']${e.class.replace(/-/g,"\\-")}["'][^>]*>([\\s\\S]*?)<\\/${e.tag}>`,"ig");if(typeof n=="string")for(;n.indexOf(`<${e.tag} class="${e.class}"`)!==-1;)n=n.replace(s,"$1");else for(;n.innerHTML.indexOf(`<${e.tag} class="${e.class}"`)!==-1;)n.innerHTML=n.innerHTML.replace(s,"$1")}function Ne(n,e,s,t){let i=t.wholeWord;typeof e!="string"&&(e=String(e)),e=e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&").replace(/&/g,"&amp;").replace(/</g,"&gt;").replace(/>/g,"&lt;");let o=new RegExp((i?"\\b":"")+e+(i?"\\b":"")+"(?![^<]*>)","i"+(t.onlyFirst?"":"g"));return n=n.replace(o,s)}function It(n,e,s={onlyFirst:!1,wholeWord:!1,isRegex:!1}){s.tag??="span",s.class??="tsg-marker",s.raplace=i=>`<${s.tag} class="${s.class}">${i}</${s.tag}>`;let t=s.isRegex||!1;return Array.isArray(e)||(e!=null&&e!==""?e=[e]:e=[]),typeof n=="string"?(Dt(n,s),e.forEach(i=>{if(t)try{let o="i"+(s.onlyFirst?"":"g"),l=new RegExp(i,o);n=n.replace(l,s.raplace)}catch(o){console.error("Invalid regular expression:",o),n=Ne(n,i,s.raplace,s)}else n=Ne(n,i,s.raplace,s)})):bi(n).each(i=>{Dt(i,s),t?e.forEach(o=>{try{let d=function(u){if(u.nodeType===3)c.push(u);else if(u.nodeType===1&&u.tagName!=="SCRIPT"&&u.tagName!=="STYLE")for(let h=0;h<u.childNodes.length;h++)d(u.childNodes[h])};var l=d;let a="i";s.onlyFirst||(a+="g"),s.wholeWord&&(o="\b"+o+"\b");let r=new RegExp(o,a),c=[];d(i),c.forEach(u=>{let h=u.nodeValue,f=[],m;if(s.onlyFirst)m=r.exec(h),m&&f.push({index:m.index,text:m[0]});else for(;(m=r.exec(h))!==null;)f.push({index:m.index,text:m[0]});if(f.length>0){let y=u.parentNode,x=document.createDocumentFragment(),b=0;f.forEach(g=>{g.index>b&&x.appendChild(document.createTextNode(h.substring(b,g.index)));let v=document.createElement(s.tag);v.className=s.class,v.appendChild(document.createTextNode(g.text)),x.appendChild(v),b=g.index+g.text.length}),b<h.length&&x.appendChild(document.createTextNode(h.substring(b))),y.replaceChild(x,u)}})}catch(a){console.error("Invalid regular expression:",a),i.innerHTML=Ne(i.innerHTML,o,s.raplace,s)}}):e.forEach(o=>{i.innerHTML=Ne(i.innerHTML,o,s.raplace,s)})}),n}var se={};function Pe(n){return n==null?(console.log('ERROR: Property "name" is required but not supplied.'),!1):se[n]!=null?(console.log(`ERROR: Object named "${n}" is already registered as TsUi.${n}.`),!1):ze(n)?!0:(console.log('ERROR: Property "name" has to be alpha-numeric (a-z, 0-9, dash and underscore).'),!1)}var ve=j;function Ot(n,e,s){return new Promise(t=>{let i=e??{},o="";typeof n=="object"?(i=n,o=String(i.text??"")):o=String(n??""),i.where??=document.body,i.timeout??=15e3,typeof s.tmpSlot.notify_resolve=="function"&&(s.tmpSlot.notify_resolve(),ve(s.tmpSlot.notify_where).find("#tsg-notify").remove()),s.tmpSlot.notify_resolve=t,s.tmpSlot.notify_where=i.where,clearTimeout(s.tmpSlot.notify_timer);let l=i.where;if(o){if(typeof i.actions=="object"){let r={};Object.keys(i.actions).forEach(c=>{r[c]=`<a class="tsg-notify-link" value="${c}">${c}</a>`}),o=s.execTemplate(o,r)}let a=`
2
2
  <div id="tsg-notify" style="${l==document.body?"position: fixed":""}">
3
3
  <div class="${i.class??""} ${i.error?"tsg-notify-error":""} ${i.success?"tsg-notify-success":""}">
4
4
  ${o}
5
5
  <span class="tsg-notify-close tsg-icon-cross"></span>
6
6
  </div>
7
- </div>`;ve(l).append(a),ve(l).find("#tsg-notify").find(".tsg-notify-close").on("click",r=>{ve(l).find("#tsg-notify").remove(),t()}),i.actions&&ve(l).find("#tsg-notify .tsg-notify-link").on("click",r=>{let c=ve(r.target).attr("value")??"";i.actions[c](),ve(l).find("#tsg-notify").remove(),t()}),i.timeout>0&&(s.tmpSlot.notify_timer=setTimeout(()=>{ve(l).find("#tsg-notify").remove(),t()},i.timeout))}})}var xi=j,$e=class{type;detail;owner;target;phase;object;execute;isStopped;isCancelled;onComplete;listeners;complete;_resolve;_reject;constructor(e,s){Object.assign(this,{type:s.type??null,detail:s,owner:e,target:s.target??null,phase:s.phase??"before",object:s.object??null,execute:null,isStopped:!1,isCancelled:!1,onComplete:null,listeners:[]}),delete s.type,delete s.target,delete s.object,this.complete=new Promise((t,i)=>{this._resolve=t,this._reject=i}),this.complete.catch(()=>{})}finish(e){e&&te(this.detail,e),this.phase="after",this.owner.trigger.call(this.owner,this)}done(e){this.listeners.push(e)}preventDefault(){this._reject(),this.isCancelled=!0}stopPropagation(){this.isStopped=!0}};function vi(n){if(typeof n!="object"||n===null)return{type:null,phase:"before",detail:{},isStopped:!1,isCancelled:!1};let e=n;return{type:typeof e.type=="string"?e.type:null,phase:typeof e.phase=="string"?e.phase:"before",detail:e.detail??{},isStopped:e.isStopped===!0,isCancelled:e.isCancelled===!0}}var ne=class{activeEvents=[];listeners=[];debug=!1;name;box;constructor(e){if(this.activeEvents=[],this.listeners=[],typeof e<"u"){if(!Pe(e))return;se[e]=this}this.debug=!1}on(e,s){return typeof e=="string"?e=e.split(/[,\s]+/):e=[e],e.forEach(t=>{let i=typeof t=="string"?t:t.type+":"+t.execute+"."+t.scope;if(typeof t=="string"){let[o,l]=t.split("."),[a,r]=(o??"").replace(":complete",":after").replace(":done",":after").split(":");t={type:a,execute:r??"before",scope:l}}if(t=te({type:null,execute:"before",onComplete:null},t),!t.type){console.log("ERROR: You must specify event type when calling .on() method of "+this.name);return}if(!s){console.log("ERROR: You must specify event handler function when calling .on() method of "+this.name);return}Array.isArray(this.listeners)||(this.listeners=[]),this.listeners.push({name:i,edata:t,handler:s}),this.debug&&console.log("TsBase: add event",{name:i,edata:t,handler:s})}),this}off(e,s){return typeof e=="string"?e=e.split(/[,\s]+/):e=[e],e.forEach(t=>{let i=typeof t=="string"?t:t.type+":"+t.execute+"."+t.scope;if(typeof t=="string"){let[l,a]=t.split("."),[r,c]=(l??"").replace(":complete",":after").replace(":done",":after").split(":");t={type:r||"*",execute:c||"",scope:a||""}}if(t=te({type:null,execute:null,onComplete:null},t),!t.type&&!t.scope){console.log("ERROR: You must specify event type when calling .off() method of "+this.name);return}s||(s=void 0);let o=0;this.listeners=this.listeners.filter(l=>(t.type==="*"||t.type===l.edata.type)&&(t.execute===""||t.execute===l.edata.execute)&&(t.scope===""||t.scope===l.edata.scope)&&(t.handler==null||t.handler===l.edata.handler)?(o++,!1):!0),this.debug&&console.log(`TsBase: remove event (${o})`,{name:i,edata:t,handler:s})}),this}trigger(e,s){let t;if(arguments.length==1?typeof e=="string"?t={type:e,target:this}:t=e:(t=s,t.type=e,t.target=t.target??this),we(t)&&t.phase=="after"){if(t=this.activeEvents.find(r=>r.type==t.type&&r.target==t.target),!t)return console.log(`ERROR: Cannot find even handler for "${t?.type}" on "${t?.target}".`),t;console.log(`NOTICE: This syntax "edata.trigger({ phase: 'after' })" is outdated. Use edata.finish() instead.`)}else t instanceof $e||(t=new $e(this,t),this.activeEvents.push(t));let i,o,l;Array.isArray(this.listeners)||(this.listeners=[]),this.debug&&console.log(`TsBase: trigger "${t.type}:${t.phase}"`,t);for(let r=this.listeners.length-1;r>=0;r--){let c=this.listeners[r];if(c!=null&&(c.edata.type===t.type||c.edata.type==="*")&&(c.edata.target===t.target||c.edata.target==null)&&(c.edata.execute===t.phase||c.edata.execute==="*"||c.edata.phase==="*")&&(Object.keys(c.edata).forEach(d=>{t[d]==null&&c.edata[d]!=null&&(t[d]=c.edata[d])}),i=[],l=new RegExp(/\((.*?)\)/).exec(String(c.handler).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(c.handler.call(this,t.target,t),this.debug&&console.log(" - call (old)",c.handler)):(c.handler.call(this,t),this.debug&&console.log(" - call",c.handler)),t.isStopped===!0||t.stop===!0))return t}let a="on"+t.type.substr(0,1).toUpperCase()+t.type.substr(1);if(t.phase==="before"&&typeof this[a]=="function"&&(o=this[a],i=[],l=new RegExp(/\((.*?)\)/).exec(String(o).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(o.call(this,t.target,t),this.debug&&console.log(" - call: on[Event] (old)",o)):(o.call(this,t),this.debug&&console.log(" - call: on[Event]",o)),t.isStopped===!0||t.stop===!0)||t.object!=null&&t.phase==="before"&&typeof t.object[a]=="function"&&(o=t.object[a],i=[],l=new RegExp(/\((.*?)\)/).exec(String(o).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(o.call(this,t.target,t),this.debug&&console.log(" - call: edata.object (old)",o)):(o.call(this,t),this.debug&&console.log(" - call: edata.object",o)),t.isStopped===!0||t.stop===!0))return t;if(t.phase==="after"){typeof t.onComplete=="function"&&t.onComplete.call(this,t);for(let c=0;c<t.listeners.length;c++)typeof t.listeners[c]=="function"&&(t.listeners[c].call(this,t),this.debug&&console.log(" - call: done",o));t._resolve(t),this.debug&&console.log(`TsBase: trigger "${t.type}:${t.phase}"`,t);let r=this.activeEvents.indexOf(t);r!==-1&&this.activeEvents.splice(r,1)}return t}render(e){}unmount(){let e=this.trigger("unmount",{target:this.name});if(e.isCancelled)return;let s=[];this.box instanceof HTMLElement&&this.box.classList.forEach(t=>{t.startsWith("tsg-")&&s.push(t)}),xi(this.box).off().removeClass(s).removeAttr("name").html(""),this.box=null,e.finish()}};var G=j;function je(n,e,s){n.actions=n.actions??{};let t=Object.keys(e);return t.forEach(i=>{let o=n["btn_"+i];o&&(e[i]={text:s.lang(String(o.text??e[i]??"")),class:o.class??"",style:o.style??"",attrs:o.attrs??""},delete n["btn_"+i]),["text","class","style","attrs"].forEach(l=>{n[i+"_"+l]&&(typeof e[i]=="string"&&(e[i]={text:e[i]}),e[i][l]=n[i+"_"+l],delete n[i+"_"+l])})}),t.includes("yes")&&t.includes("no")&&(s.settings.macButtonOrder?s.extend(n.actions,{no:e.no,yes:e.yes}):s.extend(n.actions,{yes:e.yes,no:e.no})),t.includes("ok")&&t.includes("cancel")&&(s.settings.macButtonOrder?s.extend(n.actions,{cancel:e.cancel,ok:e.ok}):s.extend(n.actions,{ok:e.ok,cancel:e.cancel})),n}function Xe(n,e,s){let t,i,o,l={},a=()=>{let x=G(n?.box).find(".tsg-message");x.length!=0&&(l=x.get(0)._msg_options||{},typeof l?.close=="function"&&l.close())},r=x=>{let g=x.box?._msg_prevFocus;if(G(n.box).find(".tsg-message").length<=1?n.owner?n.owner.unlock?.(n.param,150):s.unlock(n.box,150):G(n.box).find(`#tsg-message-${n.owner?.name}-${x.msgIndex-1}`).css("z-index","1500"),g){let v=G(g).closest(".tsg-message");v.length>0?v.get(0)._msg_options.setFocus(g):g.focus()}else typeof n.owner?.focus=="function"&&n.owner.focus();if(G(x.box).remove(),x.msgIndex===0){let v=x.tmp;y.css("z-index",v.zIndex),G(n.box).css("overflow",v.overflow)}x.trigger&&o?.finish?.()};if(typeof e=="string"||typeof e=="number"?l={width:String(e).length<300?350:550,height:String(e).length<300?170:250,text:String(e)}:e==null?l=n:l=e??{},(l.text===""||l.text==null)&&(l.body===""||l.body==null)){a();return}if(l.text!=null&&(l.body=`<div class="tsg-centered tsg-msg-text">${l.text}</div>`),l.width==null&&(l.width=350),l.height==null&&(l.height=170),l.hideOn==null&&(l.hideOn=["esc"]),l.cancelAction??="Ok",l.on==null){let x=l;l=new ne,s.extend(l,x)}let c=l;c.on("open",x=>{s.bindEvents(G(c.box).find(".tsg-eaction"),c);let b=x.detail;G(b.box).find("button, input, textarea, [name=hidden-first]").off(".message").on("keydown.message",function(g){g.keyCode==27&&c.hideOn.includes("esc")&&(c.cancelAction?c.action(c.cancelAction):c.close())}),setTimeout(()=>c.setFocus(c.focus),300)}),c.off(".prom");let d={self:l,action(x){return c.on("action.prom",x),d},close(x){return c.on("close.prom",x),d},open(x){return c.on("open.prom",x),d},then(x){return c.on("open:after.prom",x),d}};l.actions==null&&l.buttons==null&&l.html==null&&(l.actions={Ok(x){x.detail?.self?.close?.()}}),c.off(".buttons"),l.actions!=null&&(l.buttons="",Object.keys(l.actions).forEach(x=>{let b=l.actions[x],g=x;if(typeof b=="function"&&(l.buttons+=`<button class="tsg-btn tsg-eaction" data-click='["action","${x}","event"]' name="${x}">${x}</button>`),typeof b=="object"&&b!==null){let v=b;l.buttons+=`<button class="tsg-btn tsg-eaction ${v.class||""}" name="${x}" data-click='["action","${x}","event"]'
7
+ </div>`;ve(l).append(a),ve(l).find("#tsg-notify").find(".tsg-notify-close").on("click",r=>{ve(l).find("#tsg-notify").remove(),t()}),i.actions&&ve(l).find("#tsg-notify .tsg-notify-link").on("click",r=>{let c=ve(r.target).attr("value")??"";i.actions[c](),ve(l).find("#tsg-notify").remove(),t()}),i.timeout>0&&(s.tmpSlot.notify_timer=setTimeout(()=>{ve(l).find("#tsg-notify").remove(),t()},i.timeout))}})}var xi=j,$e=class{type;detail;owner;target;phase;object;execute;isStopped;isCancelled;onComplete;listeners;complete;_resolve;_reject;constructor(e,s){Object.assign(this,{type:s.type??null,detail:s,owner:e,target:s.target??null,phase:s.phase??"before",object:s.object??null,execute:null,isStopped:!1,isCancelled:!1,onComplete:null,listeners:[]}),delete s.type,delete s.target,delete s.object,this.complete=new Promise((t,i)=>{this._resolve=t,this._reject=i}),this.complete.catch(()=>{})}finish(e){e&&te(this.detail,e),this.phase="after",this.owner.trigger.call(this.owner,this)}done(e){this.listeners.push(e)}preventDefault(){this._reject(),this.isCancelled=!0}stopPropagation(){this.isStopped=!0}};function vi(n){if(typeof n!="object"||n===null)return{type:null,phase:"before",detail:{},isStopped:!1,isCancelled:!1};let e=n;return{type:typeof e.type=="string"?e.type:null,phase:typeof e.phase=="string"?e.phase:"before",detail:e.detail??{},isStopped:e.isStopped===!0,isCancelled:e.isCancelled===!0}}var ne=class{activeEvents=[];listeners=[];debug=!1;name;box;constructor(e){if(this.activeEvents=[],this.listeners=[],typeof e<"u"){if(!Pe(e))return;se[e]=this}this.debug=!1}on(e,s){return typeof e=="string"?e=e.split(/[,\s]+/):e=[e],e.forEach(t=>{let i=typeof t=="string"?t:t.type+":"+t.execute+"."+t.scope;if(typeof t=="string"){let[o,l]=t.split("."),[a,r]=(o??"").replace(":complete",":after").replace(":done",":after").split(":");t={type:a,execute:r??"before",scope:l}}if(t=te({type:null,execute:"before",onComplete:null},t),!t.type){console.log("ERROR: You must specify event type when calling .on() method of "+this.name);return}if(!s){console.log("ERROR: You must specify event handler function when calling .on() method of "+this.name);return}Array.isArray(this.listeners)||(this.listeners=[]),this.listeners.push({name:i,edata:t,handler:s}),this.debug&&console.log("TsBase: add event",{name:i,edata:t,handler:s})}),this}off(e,s){return typeof e=="string"?e=e.split(/[,\s]+/):e=[e],e.forEach(t=>{let i=typeof t=="string"?t:t.type+":"+t.execute+"."+t.scope;if(typeof t=="string"){let[l,a]=t.split("."),[r,c]=(l??"").replace(":complete",":after").replace(":done",":after").split(":");t={type:r||"*",execute:c||"",scope:a||""}}if(t=te({type:null,execute:null,onComplete:null},t),!t.type&&!t.scope){console.log("ERROR: You must specify event type when calling .off() method of "+this.name);return}s||(s=void 0);let o=0;this.listeners=this.listeners.filter(l=>(t.type==="*"||t.type===l.edata.type)&&(t.execute===""||t.execute===l.edata.execute)&&(t.scope===""||t.scope===l.edata.scope)&&(t.handler==null||t.handler===l.edata.handler)?(o++,!1):!0),this.debug&&console.log(`TsBase: remove event (${o})`,{name:i,edata:t,handler:s})}),this}trigger(e,s){let t;if(arguments.length==1?typeof e=="string"?t={type:e,target:this}:t=e:(t=s,t.type=e,t.target=t.target??this),we(t)&&t.phase=="after"){if(t=this.activeEvents.find(r=>r.type==t.type&&r.target==t.target),!t)return console.log(`ERROR: Cannot find even handler for "${t?.type}" on "${t?.target}".`),t;console.log(`NOTICE: This syntax "edata.trigger({ phase: 'after' })" is outdated. Use edata.finish() instead.`)}else t instanceof $e||(t=new $e(this,t),this.activeEvents.push(t));let i,o,l;Array.isArray(this.listeners)||(this.listeners=[]),this.debug&&console.log(`TsBase: trigger "${t.type}:${t.phase}"`,t);for(let r=this.listeners.length-1;r>=0;r--){let c=this.listeners[r];if(c!=null&&(c.edata.type===t.type||c.edata.type==="*")&&(c.edata.target===t.target||c.edata.target==null)&&(c.edata.execute===t.phase||c.edata.execute==="*"||c.edata.phase==="*")&&(Object.keys(c.edata).forEach(d=>{t[d]==null&&c.edata[d]!=null&&(t[d]=c.edata[d])}),i=[],l=new RegExp(/\((.*?)\)/).exec(String(c.handler).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(c.handler.call(this,t.target,t),this.debug&&console.log(" - call (old)",c.handler)):(c.handler.call(this,t),this.debug&&console.log(" - call",c.handler)),t.isStopped===!0||t.stop===!0))return t}let a="on"+t.type.substr(0,1).toUpperCase()+t.type.substr(1);if(t.phase==="before"&&typeof this[a]=="function"&&(o=this[a],i=[],l=new RegExp(/\((.*?)\)/).exec(String(o).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(o.call(this,t.target,t),this.debug&&console.log(" - call: on[Event] (old)",o)):(o.call(this,t),this.debug&&console.log(" - call: on[Event]",o)),t.isStopped===!0||t.stop===!0)||t.object!=null&&t.phase==="before"&&typeof t.object[a]=="function"&&(o=t.object[a],i=[],l=new RegExp(/\((.*?)\)/).exec(String(o).split("=>")[0]??""),l&&(i=(l[1]??"").split(/\s*,\s*/)),i.length===2?(o.call(this,t.target,t),this.debug&&console.log(" - call: edata.object (old)",o)):(o.call(this,t),this.debug&&console.log(" - call: edata.object",o)),t.isStopped===!0||t.stop===!0))return t;if(t.phase==="after"){typeof t.onComplete=="function"&&t.onComplete.call(this,t);for(let c=0;c<t.listeners.length;c++)typeof t.listeners[c]=="function"&&(t.listeners[c].call(this,t),this.debug&&console.log(" - call: done",o));t._resolve(t),this.debug&&console.log(`TsBase: trigger "${t.type}:${t.phase}"`,t);let r=this.activeEvents.indexOf(t);r!==-1&&this.activeEvents.splice(r,1)}return t}render(e){}unmount(){let e=this.trigger("unmount",{target:this.name});if(e.isCancelled)return;let s=[];this.box instanceof HTMLElement&&this.box.classList.forEach(t=>{t.startsWith("tsg-")&&s.push(t)}),xi(this.box).off().removeClass(s).removeAttr("name").html(""),this.box=null,e.finish()}};var B=j;function je(n,e,s){n.actions=n.actions??{};let t=Object.keys(e);return t.forEach(i=>{let o=n["btn_"+i];o&&(e[i]={text:s.lang(String(o.text??e[i]??"")),class:o.class??"",style:o.style??"",attrs:o.attrs??""},delete n["btn_"+i]),["text","class","style","attrs"].forEach(l=>{n[i+"_"+l]&&(typeof e[i]=="string"&&(e[i]={text:e[i]}),e[i][l]=n[i+"_"+l],delete n[i+"_"+l])})}),t.includes("yes")&&t.includes("no")&&(s.settings.macButtonOrder?s.extend(n.actions,{no:e.no,yes:e.yes}):s.extend(n.actions,{yes:e.yes,no:e.no})),t.includes("ok")&&t.includes("cancel")&&(s.settings.macButtonOrder?s.extend(n.actions,{cancel:e.cancel,ok:e.ok}):s.extend(n.actions,{ok:e.ok,cancel:e.cancel})),n}function Xe(n,e,s){let t,i,o,l={},a=()=>{let x=B(n?.box).find(".tsg-message");x.length!=0&&(l=x.get(0)._msg_options||{},typeof l?.close=="function"&&l.close())},r=x=>{let g=x.box?._msg_prevFocus;if(B(n.box).find(".tsg-message").length<=1?n.owner?n.owner.unlock?.(n.param,150):s.unlock(n.box,150):B(n.box).find(`#tsg-message-${n.owner?.name}-${x.msgIndex-1}`).css("z-index","1500"),g){let v=B(g).closest(".tsg-message");v.length>0?v.get(0)._msg_options.setFocus(g):g.focus()}else typeof n.owner?.focus=="function"&&n.owner.focus();if(B(x.box).remove(),x.msgIndex===0){let v=x.tmp;y.css("z-index",v.zIndex),B(n.box).css("overflow",v.overflow)}x.trigger&&o?.finish?.()};if(typeof e=="string"||typeof e=="number"?l={width:String(e).length<300?350:550,height:String(e).length<300?170:250,text:String(e)}:e==null?l=n:l=e??{},(l.text===""||l.text==null)&&(l.body===""||l.body==null)){a();return}if(l.text!=null&&(l.body=`<div class="tsg-centered tsg-msg-text">${l.text}</div>`),l.width==null&&(l.width=350),l.height==null&&(l.height=170),l.hideOn==null&&(l.hideOn=["esc"]),l.cancelAction??="Ok",l.on==null){let x=l;l=new ne,s.extend(l,x)}let c=l;c.on("open",x=>{s.bindEvents(B(c.box).find(".tsg-eaction"),c);let b=x.detail;B(b.box).find("button, input, textarea, [name=hidden-first]").off(".message").on("keydown.message",function(g){g.keyCode==27&&c.hideOn.includes("esc")&&(c.cancelAction?c.action(c.cancelAction):c.close())}),setTimeout(()=>c.setFocus(c.focus),300)}),c.off(".prom");let d={self:l,action(x){return c.on("action.prom",x),d},close(x){return c.on("close.prom",x),d},open(x){return c.on("open.prom",x),d},then(x){return c.on("open:after.prom",x),d}};l.actions==null&&l.buttons==null&&l.html==null&&(l.actions={Ok(x){x.detail?.self?.close?.()}}),c.off(".buttons"),l.actions!=null&&(l.buttons="",Object.keys(l.actions).forEach(x=>{let b=l.actions[x],g=x;if(typeof b=="function"&&(l.buttons+=`<button class="tsg-btn tsg-eaction" data-click='["action","${x}","event"]' name="${x}">${x}</button>`),typeof b=="object"&&b!==null){let v=b;l.buttons+=`<button class="tsg-btn tsg-eaction ${v.class||""}" name="${x}" data-click='["action","${x}","event"]'
8
8
  style="${v.style??""}" ${v.attrs??""}>${v.text||x}</button>`,g=Array.isArray(l.actions)?String(v.text):x}typeof b=="string"&&(l.buttons+=`<button class="tsg-btn tsg-eaction" name="${b}" data-click='["action","${b}","event"]'>${b}</button>`,g=b),typeof g=="string"&&(g=(g[0]??"").toLowerCase()+g.substr(1).replace(/\s+/g,"")),d[g]=function(v){return c.on("action.buttons",w=>{let T=w.detail,_=String(T.action);(_[0]??"").toLowerCase()+_.substr(1).replace(/\s+/g,"")==g&&v(w)}),d}})),["html","body","buttons"].forEach(x=>{l[x]=String(l[x]??"").trim()}),(l.body!==""||l.buttons!=="")&&(l.html=`
9
9
  <div class="tsg-message-body">${l.body||""}</div>
10
10
  <div class="tsg-message-buttons">${l.buttons||""}</div>
11
- `);let u=getComputedStyle(G(n.box).get(0)),h=parseFloat(u.width),f=parseFloat(u.height),m=0;G(n.after).length>0&&(u=getComputedStyle(G(n.after).get(0)),m=parseInt(u.display!="none"?u.height:"0")),(l.width??0)>h&&(l.width=h-10),(l.height??0)>f-m&&(l.height=f-10-m),l.width!=null&&(l.originalWidth=l.width),l.height!=null&&(l.originalHeight=l.height),parseInt(String(l.width))<0&&(l.width=h+(l.width??0)),parseInt(String(l.width))<10&&(l.width=10),parseInt(String(l.height))<0&&(l.height=f+(l.height??0)-m),parseInt(String(l.height))<10&&(l.height=10),(l.originalHeight??0)<0&&(l.height=f+(l.originalHeight??0)-m),(l.originalWidth??0)<0&&(l.width=h+(l.originalWidth??0)*2);let y=G(n.box).find(n.after);if(l.tmp||(l.tmp={zIndex:String(y.css("z-index")),overflow:u.overflow}),l.html===""&&l.body===""&&l.buttons==="")a();else{l.msgIndex=G(n.box).find(".tsg-message").length,l.msgIndex===0&&typeof s.lock=="function"&&(G(n.box).css("overflow","hidden"),n.owner?n.owner.lock?.(n.param):s.lock(n.box)),G(n.box).find(".tsg-message").css("z-index","1390"),y.css("z-index","1501");let x=`
11
+ `);let u=getComputedStyle(B(n.box).get(0)),h=parseFloat(u.width),f=parseFloat(u.height),m=0;B(n.after).length>0&&(u=getComputedStyle(B(n.after).get(0)),m=parseInt(u.display!="none"?u.height:"0")),(l.width??0)>h&&(l.width=h-10),(l.height??0)>f-m&&(l.height=f-10-m),l.width!=null&&(l.originalWidth=l.width),l.height!=null&&(l.originalHeight=l.height),parseInt(String(l.width))<0&&(l.width=h+(l.width??0)),parseInt(String(l.width))<10&&(l.width=10),parseInt(String(l.height))<0&&(l.height=f+(l.height??0)-m),parseInt(String(l.height))<10&&(l.height=10),(l.originalHeight??0)<0&&(l.height=f+(l.originalHeight??0)-m),(l.originalWidth??0)<0&&(l.width=h+(l.originalWidth??0)*2);let y=B(n.box).find(n.after);if(l.tmp||(l.tmp={zIndex:String(y.css("z-index")),overflow:u.overflow}),l.html===""&&l.body===""&&l.buttons==="")a();else{l.msgIndex=B(n.box).find(".tsg-message").length,l.msgIndex===0&&typeof s.lock=="function"&&(B(n.box).css("overflow","hidden"),n.owner?n.owner.lock?.(n.param):s.lock(n.box)),B(n.box).find(".tsg-message").css("z-index","1390"),y.css("z-index","1501");let x=`
12
12
  <div id="tsg-message-${n.owner?.name}-${l.msgIndex}" class="tsg-message" data-mousedown="stop"
13
13
  style="z-index: 1500; left: ${(h-(l.width??0))/2}px; top: ${m}px;
14
14
  width: ${l.width}px; height: ${l.height}px; transform: translateY(-${l.height}px)"
@@ -16,7 +16,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
16
16
  <span name="hidden-first" tabindex="0" style="position: absolute; top: 0; outline: none"></span>
17
17
  ${l.html}
18
18
  <span name="hidden-last" tabindex="0" style="position: absolute; top: 0; outline: none"></span>
19
- </div>`;G(n.after).length>0?G(n.box).find(n.after).after(x):G(n.box).prepend(x),l.box=G(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`)[0],s.bindEvents(l.box,s.self),G(l.box).addClass("animating"),l.box._msg_options=l,l.box._msg_prevFocus=document.activeElement,setTimeout(()=>{if(o=c.trigger("open",{target:s.ownerName,box:l.box,self:l}),o.isCancelled===!0){G(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`).remove(),l.msgIndex===0&&(y.css("z-index",l.tmp.zIndex),G(n.box).css("overflow",l.tmp.overflow));return}G(l.box).css({transition:"0.3s",transform:"translateY(0px)"})},0),i=setTimeout(()=>{G(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`).removeClass("animating").css({transition:"0s"}),o?.finish?.()},300)}return l.action=(x,b)=>{let g=l.actions?.[x];g instanceof Object&&g.onClick&&(g=g.onClick);let v=c.trigger("action",{target:s.ownerName,action:x,self:l,originalEvent:b,value:l.input?l.input.value:null}),w=v;w.isCancelled!==!0&&(typeof g=="function"&&g(v),w.finish?.())},l.close=()=>{if(o=c.trigger("close",{target:"self",box:l.box,self:l}),o.isCancelled!==!0){if(clearTimeout(i),G(l.box).hasClass("animating")){clearTimeout(t),r(c);return}G(l.box).addClass("tsg-closing animating").css({transition:"0.15s",transform:"translateY(-"+l.height+"px)"}),(l.msgIndex??0)!==0&&G(n.box).find(`#tsg-message-${n.owner?.name}-${(l.msgIndex??1)-1}`).css("z-index","1499"),t=setTimeout(()=>{r(c)},150)}},l.setFocus=x=>{let b=G(n.box).find(".tsg-message").length-1,g=G(n.box).find(`#tsg-message-${n.owner?.name}-${b}`),v="input, button, select, textarea, [contentEditable], .tsg-input";x!=null?(typeof x=="string"?g.find(v).filter(x).get(0):g.find(v).get(x))?.focus():g.find("[name=hidden-first]").get(0)?.focus(),G(n.box).find(".tsg-message").find(v+",[name=hidden-first],[name=hidden-last]").off(".keep-focus"),G(g).find(v+",[name=hidden-first],[name=hidden-last]").on("blur.keep-focus",function(w){setTimeout(()=>{let T=document.activeElement,_=T!=null&&G(g).find(v).filter(T).length>0,C=G(T).attr("name");!_&&T&&T!==document.body&&G(g).find(v).get(0)?.focus(),C=="hidden-last"&&G(g).find(v).get(0)?.focus(),C=="hidden-first"&&G(g).find(v).get(-1)?.focus()},1)})},d}function zt(n,e,s){return Xe(n,e,s)}function Lt(n,e,s){let t={};["string","number"].includes(typeof e)?t={text:e}:e==null?t=n:t=e??{},s.normButtons(t,{yes:"Yes",no:"No"}),t.cancelAction??="No";let i=s.message(n,t);return i&&i.action(o=>{o.detail?.self?.close?.()}),i}function At(n,e,s){let t={};["string","number"].includes(typeof e)?t={label:e}:e==null?t=n:t=e??{},t.cancelAction??="Cancel",t.label&&(t.focus=0,t.body=t.textarea?`<div class="tsg-prompt textarea">
19
+ </div>`;B(n.after).length>0?B(n.box).find(n.after).after(x):B(n.box).prepend(x),l.box=B(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`)[0],s.bindEvents(l.box,s.self),B(l.box).addClass("animating"),l.box._msg_options=l,l.box._msg_prevFocus=document.activeElement,setTimeout(()=>{if(o=c.trigger("open",{target:s.ownerName,box:l.box,self:l}),o.isCancelled===!0){B(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`).remove(),l.msgIndex===0&&(y.css("z-index",l.tmp.zIndex),B(n.box).css("overflow",l.tmp.overflow));return}B(l.box).css({transition:"0.3s",transform:"translateY(0px)"})},0),i=setTimeout(()=>{B(n.box).find(`#tsg-message-${n.owner?.name}-${l.msgIndex}`).removeClass("animating").css({transition:"0s"}),o?.finish?.()},300)}return l.action=(x,b)=>{let g=l.actions?.[x];g instanceof Object&&g.onClick&&(g=g.onClick);let v=c.trigger("action",{target:s.ownerName,action:x,self:l,originalEvent:b,value:l.input?l.input.value:null}),w=v;w.isCancelled!==!0&&(typeof g=="function"&&g(v),w.finish?.())},l.close=()=>{if(o=c.trigger("close",{target:"self",box:l.box,self:l}),o.isCancelled!==!0){if(clearTimeout(i),B(l.box).hasClass("animating")){clearTimeout(t),r(c);return}B(l.box).addClass("tsg-closing animating").css({transition:"0.15s",transform:"translateY(-"+l.height+"px)"}),(l.msgIndex??0)!==0&&B(n.box).find(`#tsg-message-${n.owner?.name}-${(l.msgIndex??1)-1}`).css("z-index","1499"),t=setTimeout(()=>{r(c)},150)}},l.setFocus=x=>{let b=B(n.box).find(".tsg-message").length-1,g=B(n.box).find(`#tsg-message-${n.owner?.name}-${b}`),v="input, button, select, textarea, [contentEditable], .tsg-input";x!=null?(typeof x=="string"?g.find(v).filter(x).get(0):g.find(v).get(x))?.focus():g.find("[name=hidden-first]").get(0)?.focus(),B(n.box).find(".tsg-message").find(v+",[name=hidden-first],[name=hidden-last]").off(".keep-focus"),B(g).find(v+",[name=hidden-first],[name=hidden-last]").on("blur.keep-focus",function(w){setTimeout(()=>{let T=document.activeElement,_=T!=null&&B(g).find(v).filter(T).length>0,C=B(T).attr("name");!_&&T&&T!==document.body&&B(g).find(v).get(0)?.focus(),C=="hidden-last"&&B(g).find(v).get(0)?.focus(),C=="hidden-first"&&B(g).find(v).get(-1)?.focus()},1)})},d}function zt(n,e,s){return Xe(n,e,s)}function Lt(n,e,s){let t={};["string","number"].includes(typeof e)?t={text:e}:e==null?t=n:t=e??{},s.normButtons(t,{yes:"Yes",no:"No"}),t.cancelAction??="No";let i=s.message(n,t);return i&&i.action(o=>{o.detail?.self?.close?.()}),i}function At(n,e,s){let t={};["string","number"].includes(typeof e)?t={label:e}:e==null?t=n:t=e??{},t.cancelAction??="Cancel",t.label&&(t.focus=0,t.body=t.textarea?`<div class="tsg-prompt textarea">
20
20
  <div>${t.label}</div>
21
21
  <textarea id="TsPrompt" class="tsg-input" ${t.attrs??""}
22
22
  data-keydown="keydown|event" data-keyup="change|event"></textarea>
@@ -24,11 +24,11 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
24
24
  <label>${t.label}&nbsp;</label>
25
25
  <input id="TsPrompt" class="tsg-input" ${t.attrs??""}
26
26
  data-keydown="keydown|event" data-keyup="change|event">
27
- </div>`),s.normButtons(t,{ok:s.lang("Ok"),cancel:s.lang("Cancel")});let i=s.message(n,t);return i&&(i.change=function(o){return i.self?.on?.("change.prom",o),i},i.action(o=>{o.detail?.self?.close?.()}).then(o=>{let l=o.detail;(l?.self).input=G(l?.box).find("#TsPrompt").get(0),G(l?.box).find("#TsPrompt").on("keydown",a=>{a.keyCode==13&&a.shiftKey===!1&&a.preventDefault()}).on("keyup",a=>{let r=l?.self,c=r?.trigger?.("change",{value:a.target.value,input:a.target,originalEvent:a});a.keyCode==13&&a.shiftKey===!1&&r?.action?.("Ok",a),c?.finish?.()})})),i}var K=j;function Ft(n,e,s,t){return new Promise((i,o)=>{let l=getComputedStyle(n),a=parseInt(l.width),r=parseInt(l.height),c=.5;if(!n||!e){console.log("ERROR: Cannot do transition when one of the divs is null");return}switch(n.parentNode.style.cssText+="perspective: 900px; overflow: hidden;",n.style.cssText+="; position: absolute; z-index: 1019; backface-visibility: hidden",e.style.cssText+="; position: absolute; z-index: 1020; backface-visibility: hidden",s){case"slide-left":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d("+a+"px, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(-"+a+"px, 0, 0)"},1);break;case"slide-right":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(-"+a+"px, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0px, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d("+a+"px, 0, 0)"},1);break;case"slide-down":n.style.cssText+="overflow: hidden; z-index: 1; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; z-index: 0; transform: translate3d(0, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(0, "+r+"px, 0)"},1);break;case"slide-up":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(0, "+r+"px, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)"},1);break;case"flip-left":n.style.cssText+="overflow: hidden; transform: rotateY(0deg)",e.style.cssText+="overflow: hidden; transform: rotateY(-180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateY(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateY(180deg)"},1);break;case"flip-right":n.style.cssText+="overflow: hidden; transform: rotateY(0deg)",e.style.cssText+="overflow: hidden; transform: rotateY(180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateY(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateY(-180deg)"},1);break;case"flip-down":n.style.cssText+="overflow: hidden; transform: rotateX(0deg)",e.style.cssText+="overflow: hidden; transform: rotateX(180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateX(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateX(-180deg)"},1);break;case"flip-up":n.style.cssText+="overflow: hidden; transform: rotateX(0deg)",e.style.cssText+="overflow: hidden; transform: rotateX(-180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateX(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateX(180deg)"},1);break;case"pop-in":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); transform: scale(.8); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: scale(1); opacity: 1;",n.style.cssText+="transition: "+c+"s;"},1);break;case"pop-out":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); transform: scale(1); opacity: 1;",e.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; opacity: 1;",n.style.cssText+="transition: "+c+"s; transform: scale(1.7); opacity: 0;"},1);break;default:n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; translate3d(0, 0, 0); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; opacity: 1;",n.style.cssText+="transition: "+c+"s"},1);break}setTimeout(()=>{s==="slide-down"&&(K(n).css("z-index","1019"),K(e).css("z-index","1020")),e&&K(e).css({opacity:"1"}).css({transition:"",transform:""}),n&&K(n).css({opacity:"1"}).css({transition:"",transform:""}),typeof t=="function"&&t(),i()},c*1e3)})}function Ht(n,e={},...s){if(n==null)return;let t=typeof e=="string"?{msg:e}:{...e};s[0]!=null&&(t.spinner=s[0]),t=te({spinner:!1},t);let i=n;n?.[0]instanceof Node&&(i=Array.isArray(n)?n:n.get()),!t.msg&&t.msg!==0&&(t.msg=""),Ke(i);let o=K(i).get(0),l=o.scrollWidth,r=`height: ${o.scrollHeight}px; width: ${l}px`;o.tagName=="BODY"&&(r="position: fixed; right: 0; bottom: 0;"),K(i).prepend(`<div class="tsg-lock" style="${r}"></div><div class="tsg-lock-msg"></div>`);let c=K(i).find(".tsg-lock"),d=K(i).find(".tsg-lock-msg");t.msg||d.css({"background-color":"transparent","background-image":"none",border:"0px","box-shadow":"none"}),t.spinner===!0&&(t.msg=`<div class="tsg-spinner" ${t.msg?"":'style="width: 35px; height: 35px"'}></div>`+t.msg),t.msg?d.html(String(t.msg)).css("display","block"):d.remove(),t.opacity!=null&&c.css("opacity",String(t.opacity)),c.css({display:"block"}),t.bgColor&&c.css({"background-color":t.bgColor});let h=getComputedStyle(c.get(0)).opacity??.15;c.on("mousedown",function(){typeof t.onClick=="function"?t.onClick():c.css({transition:".2s",opacity:String(Number(h)*1.5)})}).on("mouseup",function(){typeof t.onClick!="function"&&c.css({transition:".2s",opacity:String(h)})}).on("mousewheel",function(f){f&&(f.stopPropagation(),f.preventDefault())})}function Ke(n,e){if(n==null)return;clearTimeout(n._prevUnlock);let t=n;if(n?.[0]instanceof Node&&(t=Array.isArray(n)?n:n.get()),re(e)&&(e??0)>0){K(t).find(".tsg-lock").css({transition:(e??0)/1e3+"s",opacity:0});let i=K(t).get(0);clearTimeout(i._prevUnlock),i._prevUnlock=setTimeout(()=>{K(t).find(".tsg-lock").remove()},e),K(t).find(".tsg-lock-msg").remove()}else K(t).find(".tsg-lock").remove(),K(t).find(".tsg-lock-msg").remove()}function Nt(n,e){let s=K(n),t=0;if(s.length>0){let i=getComputedStyle(s[0]);switch(e){case"width":t=parseFloat(i.width),i.width==="auto"&&(t=0);break;case"height":t=parseFloat(i.height),i.height==="auto"&&(t=0);break;default:t=parseFloat(String(i[e]??""))||0;break}}return t}function Pt(n,e,s){let t=K("body > #_tmp_width");t.length===0&&(K("body").append('<div id="_tmp_width" style="position: absolute; top: -9000px;"></div>'),t=K("body > #_tmp_width")),s===void 0&&n.trim().startsWith("<")&&n.trim().endsWith(">")&&(s=!0),t.html(s?n:Ee(n??"")).attr("style",`position: absolute; top: -9000px; ${e||""}`);let i=t[0].clientWidth,o=t[0].clientHeight;return t.html(""),{width:i,height:o}}function jt(n,e){let s=n;if(s?.length==0)return;let t=n;s?.[0]instanceof Node&&(t=Array.isArray(n)?n:n.get()),K(t).each(i=>{let o=K(i).data();Object.keys(o).forEach(l=>{if(["click","dblclick","mouseenter","mouseleave","mouseover","mouseout","mousedown","mousemove","mouseup","contextmenu","focus","focusin","focusout","blur","input","change","keydown","keyup","keypress"].indexOf(String(l).toLowerCase())==-1)return;let r=Array.isArray(o[l])?o[l]:[o[l]];typeof o[l]=="string"&&(r=o[l].split("|").map(d=>{let u=d;d==="true"&&(u=!0),d==="false"&&(u=!1),d==="undefined"&&(u=void 0),d==="null"&&(u=null),typeof u=="string"&&parseFloat(u)==u&&(u=parseFloat(u));let h=["'",'"',"`"];return typeof u=="string"&&h.includes(u[0]??"")&&h.includes(u[u.length-1]??"")&&(u=u.substring(1,u.length-1)),u}));let c=String(r[0]);r=r.slice(1),K(i).off(l+".TsUtils-bind").on(l+".TsUtils-bind",function(d){switch(c){case"alert":alert(r[0]);break;case"stop":d.stopPropagation();break;case"prevent":d.preventDefault();break;case"stopPrevent":return d.stopPropagation(),d.preventDefault(),!1;break;default:if(e[c]==null)throw new Error(`Cannot dispatch event as the method "${c}" does not exist.`);e[c](...r.map((u,h)=>{switch(String(u).toLowerCase()){case"event":return d;case"this":return this;default:return u}}))}})})})}function Je(n,e,s,t){if(!n)return!1;let i="Invalid Date",o,l,a;if(e==null&&(e=t.dateFormat),n instanceof Date)a=n.getFullYear(),o=n.getMonth()+1,l=n.getDate();else if(typeof n=="number"||typeof n=="string"&&parseInt(n)==n&&parseInt(n)>0){let u=new Date(parseInt(String(n)));a=u.getFullYear(),o=u.getMonth()+1,l=u.getDate()}else{let u=String(n);if(new RegExp("mon","ig").test(e)){e=e.replace(/month/ig,"m").replace(/mon/ig,"m").replace(/dd/ig,"d").replace(/[, ]/ig,"/").replace(/\/\//g,"/").toLowerCase(),u=u.replace(/[, ]/ig,"/").replace(/\/\//g,"/").toLowerCase();for(let m=0,y=t.fullmonths.length;m<y;m++){let x=t.fullmonths[m]??"";u=u.replace(new RegExp(x,"ig"),String(m+1)).replace(new RegExp(x.substr(0,3),"ig"),String(m+1))}}let h=u.replace(/-/g,"/").replace(/\./g,"/").toLowerCase().split("/"),f=e.replace(/-/g,"/").replace(/\./g,"/").toLowerCase();f==="mm/dd/yyyy"&&(o=h[0],l=h[1],a=h[2]),f==="m/d/yyyy"&&(o=h[0],l=h[1],a=h[2]),f==="dd/mm/yyyy"&&(o=h[1],l=h[0],a=h[2]),f==="d/m/yyyy"&&(o=h[1],l=h[0],a=h[2]),f==="yyyy/dd/mm"&&(o=h[2],l=h[1],a=h[0]),f==="yyyy/d/m"&&(o=h[2],l=h[1],a=h[0]),f==="yyyy/mm/dd"&&(o=h[1],l=h[2],a=h[0]),f==="yyyy/m/d"&&(o=h[1],l=h[2],a=h[0]),f==="mm/dd/yy"&&(o=h[0],l=h[1],a=h[2]),f==="m/d/yy"&&(o=h[0],l=h[1],a=parseInt(h[2]??"0")+1900),f==="dd/mm/yy"&&(o=h[1],l=h[0],a=parseInt(h[2]??"0")+1900),f==="d/m/yy"&&(o=h[1],l=h[0],a=parseInt(h[2]??"0")+1900),f==="yy/dd/mm"&&(o=h[2],l=h[1],a=parseInt(h[0]??"0")+1900),f==="yy/d/m"&&(o=h[2],l=h[1],a=parseInt(h[0]??"0")+1900),f==="yy/mm/dd"&&(o=h[1],l=h[2],a=parseInt(h[0]??"0")+1900),f==="yy/m/d"&&(o=h[1],l=h[2],a=parseInt(h[0]??"0")+1900)}if(!re(a)||!re(o)||!re(l))return!1;let r=+(a??0),c=+(o??0),d=+(l??0);return i=new Date(r,c-1,d),i.setFullYear(r),c==null||String(i)==="Invalid Date"||i.getMonth()+1!==c||i.getDate()!==d||i.getFullYear()!==r?!1:s===!0?i:!0}function Me(n,e){if(n==null)return!1;let s,t=String(n).toUpperCase(),i=t.indexOf("AM")>=0,o=t.indexOf("PM")>=0,l=o||i;l?s=12:s=24,t=t.replace("AM","").replace("PM","").trim();let a=t.split(":"),r=a[0]??"",c=a[1]??"",d=a[2]??"",u=parseInt(r||"0"),h=parseInt(c||"0"),f=parseInt(d||"0");return(!l||a.length!==1)&&a.length!==2&&a.length!==3||r===""||u<0||u>s||!re(r)||r.length>2||a.length>1&&(c===""||h<0||h>59||!re(c)||c.length!==2)||a.length>2&&(d===""||f<0||f>59||!re(d)||d.length!==2)||!l&&s===u&&(h!==0||f!==0)||l&&a.length===1&&u===0?!1:e===!0?(o&&u!==12&&(u+=12),i&&u===12&&(u+=12),{hours:u,minutes:h,seconds:f}):!0}function Ut(n,e,s,t){if(n instanceof Date)return s!==!0?!0:n;let i=parseInt(String(n));if(i===n)return i<0?!1:s!==!0?!0:new Date(i);let o=String(n),l=o.indexOf(" ");if(l<0)return o.indexOf("T")<0||String(new Date(o))=="Invalid Date"?!1:s!==!0?!0:new Date(o);{e==null&&(e=t.datetimeFormat);let a=e.split("|"),r=[o.substr(0,l),o.substr(l).trim()];a[0]!=null&&(a[0]=a[0].trim()),a[1]&&(a[1]=a[1].trim());let c=Je(r[0],a[0],!0,t),d=Me(r[1],!0);if(c!==!1&&d!==!1){if(s!==!0)return!0;let u=c,h=d;return u.setHours(h.hours),u.setMinutes(h.minutes),u.setSeconds(h.seconds),u}else return!1}}function Gt(n){let e;if(n===""||n==null||(n instanceof Date?e=n:typeof n=="number"||typeof n=="string"&&parseInt(n)==n&&parseInt(n)>0?e=new Date(parseInt(String(n))):e=new Date(String(n)),String(e)==="Invalid Date"))return"";let t=(new Date().getTime()-e.getTime())/1e3,i=0,o="";return t<0?(i=0,o="sec"):t<60?(i=Math.floor(t),o="sec",t<0&&(i=0,o="sec")):t<3600?(i=Math.floor(t/60),o="min"):t<1440*60?(i=Math.floor(t/60/60),o="hour"):t<720*60*60?(i=Math.floor(t/24/60/60),o="day"):t<365*24*60*60?(i=Math.floor(t/30/24/60/60*10)/10,o="month"):t<365*4*24*60*60?(i=Math.floor(t/365/24/60/60*10)/10,o="year"):t>=365*4*24*60*60&&(i=Math.floor(t/365.25/24/60/60*10)/10,o="year"),i+" "+o+(i>1?"s":"")}function Bt(n){let e="";return n<100?e="< 0.01 sec":n<1e3?e=Math.floor(n/10)/100+" sec":n<1e4?e=Math.floor(n/100)/10+" sec":n<6e4?e=Math.floor(n/1e3)+" secs":n<36e5?e=Math.floor(n/6e4)+" mins":n<864e5?e=Math.floor(n/36e5*10)/10+" hours":n<2628e6?e=Math.floor(n/864e5*10)/10+" days":n<31536e6?e=Math.floor(n/2628e6*10)/10+" months":e=Math.floor(n/31536e5)/10+" years",e}function Ze(n,e,s){if(e||(e=s.dateFormat),n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),String(t)==="Invalid Date")return"";let i=t.getFullYear(),o=t.getMonth(),l=t.getDate();return e.toLowerCase().replace("month",s.fullmonths[o]??"").replace("mon",s.shortmonths[o]??"").replace(/yyyy/g,("000"+i).slice(-4)).replace(/yyy/g,("000"+i).slice(-4)).replace(/yy/g,("0"+i).slice(-2)).replace(/(^|[^a-z$])y/g,"$1"+i).replace(/mm/g,("0"+(o+1)).slice(-2)).replace(/dd/g,("0"+l).slice(-2)).replace(/th/g,l==1?"st":"th").replace(/th/g,l==2?"nd":"th").replace(/th/g,l==3?"rd":"th").replace(/(^|[^a-z$])m/g,"$1"+(o+1)).replace(/(^|[^a-z$])d/g,"$1"+l)}function et(n,e,s){if(e||(e=s.timeFormat),n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),Me(n)){let f=Me(n,!0);t=new Date,t.setHours(f.hours),t.setMinutes(f.minutes)}if(String(t)==="Invalid Date")return"";e=="h12"&&(e="hh:mi pm");let i="am",o=t.getHours(),l=t.getHours(),a=t.getMinutes(),r=t.getSeconds();a<10&&(a="0"+a),r<10&&(r="0"+r),(e.indexOf("am")!==-1||e.indexOf("pm")!==-1)&&(o>=12&&(i="pm"),o>12&&(o=o-12),o===0&&(o=12));let c=String(o),d=String(a),u=String(r),h=String(l);return e.toLowerCase().replace("am",i).replace("pm",i).replace("hhh",Number(o)<10?"0"+c:c).replace("hh24",l<10?"0"+h:h).replace("h24",h).replace("hh",c).replace("mm",d).replace("mi",d).replace("ss",u).replace(/(^|[^a-z$])h/g,"$1"+c).replace(/(^|[^a-z$])m/g,"$1"+d).replace(/(^|[^a-z$])s/g,"$1"+u)}function Qt(n,e,s){let t;return n===""||n==null||typeof n=="object"&&!n.getMonth?"":(typeof e!="string"?t=[s.dateFormat,s.timeFormat]:(t=e.split("|"),t[0]!=null&&(t[0]=t[0].trim()),t[1]=t.length>1?(t[1]??"").trim():s.timeFormat),t[1]==="h12"&&(t[1]="h:m pm"),t[1]==="h24"&&(t[1]="h24:m"),Ze(n,t[0],s)+" "+et(n,t[1],s))}function Vt(n,e,s){if(n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),String(t)==="Invalid Date")return"";let i=e.shortmonths,o=new Date,l=new Date;l.setTime(l.getTime()-864e5);let a=i[t.getMonth()]+" "+t.getDate()+", "+t.getFullYear(),r=i[o.getMonth()]+" "+o.getDate()+", "+o.getFullYear(),c=i[l.getMonth()]+" "+l.getDate()+", "+l.getFullYear(),d=t.getHours()-(t.getHours()>12?12:0)+":"+(t.getMinutes()<10?"0":"")+t.getMinutes()+" "+(t.getHours()>=12?"pm":"am"),u=t.getHours()-(t.getHours()>12?12:0)+":"+(t.getMinutes()<10?"0":"")+t.getMinutes()+":"+(t.getSeconds()<10?"0":"")+t.getSeconds()+" "+(t.getHours()>=12?"pm":"am"),h=a;return a===r&&(h=d),a===c&&(h=s.lang("Yesterday")),'<span title="'+a+" "+u+'">'+h+"</span>"}async function tt(n,e,s,t,i){if(Array.isArray(n)){let l=i.extend({},{...t,phrases:{}}),a=n.map(u=>u.length===5?"locale/"+u.toLowerCase()+".json":u),r=[],c={};return a.forEach(u=>{r.push(tt(u,!0,!1,l,i))}),(await Promise.allSettled(r)).forEach(u=>{u.status==="fulfilled"&&u.value.kind==="load"&&(c[u.value.file]=u.value.data)}),a.forEach(u=>{l=i.extend({},l,c[u]??{})}),{kind:"void",settings:l}}if(n||(n="en-us"),typeof n=="object")return{kind:"merge",settings:i.extend({},t,Ce,n)};let o=n;o.length===5&&(o="locale/"+o.toLowerCase()+".json");try{let a=await(await i.fetch(o,{method:"GET"})).json();if(s!==!0)if(e){let r=i.extend({},t,a);return{kind:"load",file:o,data:a,settings:r}}else{let r={...t,phrases:{}},c=i.extend({},r,Ce,a);return{kind:"load",file:o,data:a,settings:c}}return{kind:"load",file:o,data:a}}catch(l){throw console.log("ERROR: Cannot load locale "+o),l}}var Se=j,st=class{version;tmp;settings;i18nCompare;hasLocalStorage;isMac;isMobile;isIOS;isAndroid;isSafari;isFirefox;formatters;constructor(){this.version="2.0.x",this.tmp={},this.settings=this.extend({},{dataType:"JSON",dateStartYear:1950,dateEndYear:2030,macButtonOrder:!1,warnNoPhrase:!1},Ce,{phrases:null}),this.i18nCompare=Intl.Collator().compare,this.hasLocalStorage=e(),this.isMac=/Mac/i.test(navigator.platform),this.isMobile=/(iphone|ipod|mobile|android)/i.test(navigator.userAgent),this.isIOS=/(iphone|ipod|ipad)/i.test(navigator.platform),this.isAndroid=/(android)/i.test(navigator.userAgent),this.isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),this.isFirefox=/(Firefox)/i.test(navigator.userAgent),this.formatters={number(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;return parseInt(String(o))>20&&(o=20),parseInt(String(o))<0&&(o=0),i==null||i===""?"":p.formatNumber(parseFloat(String(i)),o,!0)},float(s,t){return p.formatters.number?.(s,t)??""},int(s,t){return p.formatters.number?.(s,t)??""},money(s,t){t==null&&(t=s);let{value:i}=t;if(i==null||i==="")return"";let o=p.formatNumber(Number(i),p.settings.currencyPrecision,!0);return(p.settings.currencyPrefix||"")+o+(p.settings.currencySuffix||"")},currency(s,t){return p.formatters.money?.(s,t)??""},percent(s,t){t==null&&(t=s);let{value:i,params:o}=t;return i==null||i===""?"":p.formatNumber(i,o||1)+"%"},size(s,t){t==null&&(t=s);let{value:i}=t;return i==null||i===""?"":String(p.formatSize(parseInt(String(i))))},date(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.dateFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatDate(l instanceof Date?l:void 0,o)+"</span>"},datetime(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatDateTime(l instanceof Date?l:void 0,o)+"</span>"},time(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.timeFormat),o==="h12"&&(o="hh:mi pm"),o==="h24"&&(o="h24:mi"),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatTime(i,o)+"</span>"},timestamp(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),l instanceof Date?l.toString():""},gmt(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),l instanceof Date?l.toUTCString():""},age(s,t){t==null&&(t=s);let{value:i,params:o}=t;if(i==null||i===0||i==="")return"";let l=p.isDateTime(i,null,!0);return l===!1&&(l=p.isDate(i,null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.age(i)+(o?" "+o:"")+"</span>"},interval(s,t){t==null&&(t=s);let{value:i,params:o}=t;return i==null||i===0||i===""?"":p.interval(Number(i))+(o?" "+o:"")},toggle(s,t){t==null&&(t=s);let{value:i}=t;return i?p.lang("Yes"):""},password(s,t){t==null&&(t=s);let{value:i}=t,o="";if(!i)return o;let l=String(i);for(let a=0;a<l.length;a++)o+="*";return o}};return;function e(){let s="w2ui_test";try{return localStorage.setItem(s,s),localStorage.removeItem(s),!0}catch{return!1}}}isBin(e){return ft(e)}isInt(e){return re(e)}isFloat(e){return Qe(e,this.settings)}isMoney(e){return ht(e,this.settings)}isHex(e){return pt(e)}isAlphaNumeric(e){return ze(e)}isEmail(e){return mt(e)}isIpAddress(e){return gt(e)}isDate(e,s,t){return Je(e,s,t,this.settings)}isTime(e,s){return Me(e,s)}isDateTime(e,s,t){return Ut(e,s,t,this.settings)}age(e){return Gt(e)}interval(e){return Bt(e)}date(e){return Vt(e,this.settings,{lang:this.lang.bind(this)})}formatSize(e){if(!this.isFloat(e)||e==="")return"";let s=parseFloat(String(e));if(s===0)return 0;let t=["Bt","KB","MB","GB","TB","PB","EB","ZB"],i=parseInt(String(Math.floor(Math.log(s)/Math.log(1024))));return(Math.floor(s/Math.pow(1024,i)*10)/10).toFixed(i===0?0:1)+" "+(t[i]||"??")}formatNumber(e,s,t){if(e==null||e===""||typeof e=="object")return"";let i={minimumFractionDigits:s!=null?parseInt(String(s)):void 0,maximumFractionDigits:s!=null?parseInt(String(s)):void 0,useGrouping:!!t};return(s==null||Number(s)<0)&&(i.minimumFractionDigits=0,i.maximumFractionDigits=20),parseFloat(String(e)).toLocaleString(this.settings.locale,i)}formatDate(e,s){return Ze(e,s,this.settings)}formatTime(e,s){return et(e,s,this.settings)}formatDateTime(e,s){return Qt(e,s,this.settings)}stripSpaces(e){return Ae(e)}stripTags(e){return Fe(e)}encodeTags(e){return Ee(e)}decodeTags(e){return He(e)}escapeId(e){return Ct(e)}unescapeId(e){return Et(e)}base64encode(e){return St(e)}base64decode(e){return Rt(e)}sha256(e){return $t(e)}transition(e,s,t,i){return Ft(e,s,t,i)}lock(e,s={},...t){return Ht(e,s,...t)}unlock(e,s){return Ke(e,s)}_msgDeps(){return{extend:te,bindEvents:(e,s)=>this.bindEvents(e,s),lock:(e,s)=>this.lock(e,s),unlock:(e,s)=>this.unlock(e,s),ownerName:this.name,self:this}}_confirmDeps(){return{extend:te,normButtons:(e,s)=>je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings}),message:(e,s)=>this.message(e,s),settings:this.settings,lang:this.lang.bind(this)}}_promptDeps(){return{extend:te,normButtons:(e,s)=>je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings}),message:(e,s)=>this.message(e,s),settings:this.settings,lang:this.lang.bind(this)}}message(e,s){return Xe(e,s,this._msgDeps())}alert(e,s){return zt(e,s,this._msgDeps())}confirm(e,s){return Lt(e,s,this._confirmDeps())}prompt(e,s){return At(e,s,this._promptDeps())}normButtons(e,s){return je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings})}notify(e,s){return Ot(e,s,{execTemplate:this.execTemplate.bind(this),tmpSlot:this.tmp})}getSize(e,s){return Nt(e,s)}getStrDimentions(e,s,t){return Pt(e,s,t)}getStrWidth(e,s,t){return this.getStrDimentions(e,s,t).width}getStrHeight(e,s,t){return this.getStrDimentions(e,s,t).height}execTemplate(e,s){return Mt(e,s)}marker(e,s,t){return It(e,s,t)}lang(e,s){if(!e||this.settings.phrases==null||typeof e!="string"||"<=>=".includes(e))return this.execTemplate(e,s);let t=this.settings.phrases[e];return t==null?(t=e,this.settings.warnNoPhrase&&(this.settings.missing||(this.settings.missing={}),this.settings.missing[e]="---",this.settings.phrases[e]="---",console.log(`Missing translation for "%c${e}%c", see %c TsUtils.settings.phrases %c with value "---"`,"color: orange","","color: #999",""))):t==="---"&&!this.settings.warnNoPhrase&&(t=e),t==="---"&&(t=`<span ${this.tooltip(e)}>---</span>`),this.execTemplate(t,s)}locale(e,s,t){let i={extend:this.extend.bind(this),fetch:globalThis.fetch.bind(globalThis)};return tt(e,s,t,this.settings,i).then(o=>(o.settings&&(this.settings=o.settings),o.kind==="load"?{file:o.file,data:o.data}:void 0))}scrollBarSize(){return this.tmp.scrollBarSize?this.tmp.scrollBarSize:(Se("body").append(`
27
+ </div>`),s.normButtons(t,{ok:s.lang("Ok"),cancel:s.lang("Cancel")});let i=s.message(n,t);return i&&(i.change=function(o){return i.self?.on?.("change.prom",o),i},i.action(o=>{o.detail?.self?.close?.()}).then(o=>{let l=o.detail;(l?.self).input=B(l?.box).find("#TsPrompt").get(0),B(l?.box).find("#TsPrompt").on("keydown",a=>{a.keyCode==13&&a.shiftKey===!1&&a.preventDefault()}).on("keyup",a=>{let r=l?.self,c=r?.trigger?.("change",{value:a.target.value,input:a.target,originalEvent:a});a.keyCode==13&&a.shiftKey===!1&&r?.action?.("Ok",a),c?.finish?.()})})),i}var K=j;function Ft(n,e,s,t){return new Promise((i,o)=>{let l=getComputedStyle(n),a=parseInt(l.width),r=parseInt(l.height),c=.5;if(!n||!e){console.log("ERROR: Cannot do transition when one of the divs is null");return}switch(n.parentNode.style.cssText+="perspective: 900px; overflow: hidden;",n.style.cssText+="; position: absolute; z-index: 1019; backface-visibility: hidden",e.style.cssText+="; position: absolute; z-index: 1020; backface-visibility: hidden",s){case"slide-left":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d("+a+"px, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(-"+a+"px, 0, 0)"},1);break;case"slide-right":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(-"+a+"px, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0px, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d("+a+"px, 0, 0)"},1);break;case"slide-down":n.style.cssText+="overflow: hidden; z-index: 1; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; z-index: 0; transform: translate3d(0, 0, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(0, "+r+"px, 0)"},1);break;case"slide-up":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(0, "+r+"px, 0)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)",n.style.cssText+="transition: "+c+"s; transform: translate3d(0, 0, 0)"},1);break;case"flip-left":n.style.cssText+="overflow: hidden; transform: rotateY(0deg)",e.style.cssText+="overflow: hidden; transform: rotateY(-180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateY(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateY(180deg)"},1);break;case"flip-right":n.style.cssText+="overflow: hidden; transform: rotateY(0deg)",e.style.cssText+="overflow: hidden; transform: rotateY(180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateY(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateY(-180deg)"},1);break;case"flip-down":n.style.cssText+="overflow: hidden; transform: rotateX(0deg)",e.style.cssText+="overflow: hidden; transform: rotateX(180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateX(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateX(-180deg)"},1);break;case"flip-up":n.style.cssText+="overflow: hidden; transform: rotateX(0deg)",e.style.cssText+="overflow: hidden; transform: rotateX(-180deg)",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: rotateX(0deg)",n.style.cssText+="transition: "+c+"s; transform: rotateX(180deg)"},1);break;case"pop-in":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); transform: scale(.8); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; transform: scale(1); opacity: 1;",n.style.cssText+="transition: "+c+"s;"},1);break;case"pop-out":n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); transform: scale(1); opacity: 1;",e.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; opacity: 1;",n.style.cssText+="transition: "+c+"s; transform: scale(1.7); opacity: 0;"},1);break;default:n.style.cssText+="overflow: hidden; transform: translate3d(0, 0, 0)",e.style.cssText+="overflow: hidden; translate3d(0, 0, 0); opacity: 0;",K(e).show(),setTimeout(()=>{e.style.cssText+="transition: "+c+"s; opacity: 1;",n.style.cssText+="transition: "+c+"s"},1);break}setTimeout(()=>{s==="slide-down"&&(K(n).css("z-index","1019"),K(e).css("z-index","1020")),e&&K(e).css({opacity:"1"}).css({transition:"",transform:""}),n&&K(n).css({opacity:"1"}).css({transition:"",transform:""}),typeof t=="function"&&t(),i()},c*1e3)})}function Ht(n,e={},...s){if(n==null)return;let t=typeof e=="string"?{msg:e}:{...e};s[0]!=null&&(t.spinner=s[0]),t=te({spinner:!1},t);let i=n;n?.[0]instanceof Node&&(i=Array.isArray(n)?n:n.get()),!t.msg&&t.msg!==0&&(t.msg=""),Ke(i);let o=K(i).get(0),l=o.scrollWidth,r=`height: ${o.scrollHeight}px; width: ${l}px`;o.tagName=="BODY"&&(r="position: fixed; right: 0; bottom: 0;"),K(i).prepend(`<div class="tsg-lock" style="${r}"></div><div class="tsg-lock-msg"></div>`);let c=K(i).find(".tsg-lock"),d=K(i).find(".tsg-lock-msg");t.msg||d.css({"background-color":"transparent","background-image":"none",border:"0px","box-shadow":"none"}),t.spinner===!0&&(t.msg=`<div class="tsg-spinner" ${t.msg?"":'style="width: 35px; height: 35px"'}></div>`+t.msg),t.msg?d.html(String(t.msg)).css("display","block"):d.remove(),t.opacity!=null&&c.css("opacity",String(t.opacity)),c.css({display:"block"}),t.bgColor&&c.css({"background-color":t.bgColor});let h=getComputedStyle(c.get(0)).opacity??.15;c.on("mousedown",function(){typeof t.onClick=="function"?t.onClick():c.css({transition:".2s",opacity:String(Number(h)*1.5)})}).on("mouseup",function(){typeof t.onClick!="function"&&c.css({transition:".2s",opacity:String(h)})}).on("mousewheel",function(f){f&&(f.stopPropagation(),f.preventDefault())})}function Ke(n,e){if(n==null)return;clearTimeout(n._prevUnlock);let t=n;if(n?.[0]instanceof Node&&(t=Array.isArray(n)?n:n.get()),re(e)&&(e??0)>0){K(t).find(".tsg-lock").css({transition:(e??0)/1e3+"s",opacity:0});let i=K(t).get(0);clearTimeout(i._prevUnlock),i._prevUnlock=setTimeout(()=>{K(t).find(".tsg-lock").remove()},e),K(t).find(".tsg-lock-msg").remove()}else K(t).find(".tsg-lock").remove(),K(t).find(".tsg-lock-msg").remove()}function Nt(n,e){let s=K(n),t=0;if(s.length>0){let i=getComputedStyle(s[0]);switch(e){case"width":t=parseFloat(i.width),i.width==="auto"&&(t=0);break;case"height":t=parseFloat(i.height),i.height==="auto"&&(t=0);break;default:t=parseFloat(String(i[e]??""))||0;break}}return t}function Pt(n,e,s){let t=K("body > #_tmp_width");t.length===0&&(K("body").append('<div id="_tmp_width" style="position: absolute; top: -9000px;"></div>'),t=K("body > #_tmp_width")),s===void 0&&n.trim().startsWith("<")&&n.trim().endsWith(">")&&(s=!0),t.html(s?n:Ee(n??"")).attr("style",`position: absolute; top: -9000px; ${e||""}`);let i=t[0].clientWidth,o=t[0].clientHeight;return t.html(""),{width:i,height:o}}function jt(n,e){let s=n;if(s?.length==0)return;let t=n;s?.[0]instanceof Node&&(t=Array.isArray(n)?n:n.get()),K(t).each(i=>{let o=K(i).data();Object.keys(o).forEach(l=>{if(["click","dblclick","mouseenter","mouseleave","mouseover","mouseout","mousedown","mousemove","mouseup","contextmenu","focus","focusin","focusout","blur","input","change","keydown","keyup","keypress"].indexOf(String(l).toLowerCase())==-1)return;let r=Array.isArray(o[l])?o[l]:[o[l]];typeof o[l]=="string"&&(r=o[l].split("|").map(d=>{let u=d;d==="true"&&(u=!0),d==="false"&&(u=!1),d==="undefined"&&(u=void 0),d==="null"&&(u=null),typeof u=="string"&&parseFloat(u)==u&&(u=parseFloat(u));let h=["'",'"',"`"];return typeof u=="string"&&h.includes(u[0]??"")&&h.includes(u[u.length-1]??"")&&(u=u.substring(1,u.length-1)),u}));let c=String(r[0]);r=r.slice(1),K(i).off(l+".TsUtils-bind").on(l+".TsUtils-bind",function(d){switch(c){case"alert":alert(r[0]);break;case"stop":d.stopPropagation();break;case"prevent":d.preventDefault();break;case"stopPrevent":return d.stopPropagation(),d.preventDefault(),!1;break;default:if(e[c]==null)throw new Error(`Cannot dispatch event as the method "${c}" does not exist.`);e[c](...r.map((u,h)=>{switch(String(u).toLowerCase()){case"event":return d;case"this":return this;default:return u}}))}})})})}function Je(n,e,s,t){if(!n)return!1;let i="Invalid Date",o,l,a;if(e==null&&(e=t.dateFormat),n instanceof Date)a=n.getFullYear(),o=n.getMonth()+1,l=n.getDate();else if(typeof n=="number"||typeof n=="string"&&parseInt(n)==n&&parseInt(n)>0){let u=new Date(parseInt(String(n)));a=u.getFullYear(),o=u.getMonth()+1,l=u.getDate()}else{let u=String(n);if(new RegExp("mon","ig").test(e)){e=e.replace(/month/ig,"m").replace(/mon/ig,"m").replace(/dd/ig,"d").replace(/[, ]/ig,"/").replace(/\/\//g,"/").toLowerCase(),u=u.replace(/[, ]/ig,"/").replace(/\/\//g,"/").toLowerCase();for(let m=0,y=t.fullmonths.length;m<y;m++){let x=t.fullmonths[m]??"";u=u.replace(new RegExp(x,"ig"),String(m+1)).replace(new RegExp(x.substr(0,3),"ig"),String(m+1))}}let h=u.replace(/-/g,"/").replace(/\./g,"/").toLowerCase().split("/"),f=e.replace(/-/g,"/").replace(/\./g,"/").toLowerCase();f==="mm/dd/yyyy"&&(o=h[0],l=h[1],a=h[2]),f==="m/d/yyyy"&&(o=h[0],l=h[1],a=h[2]),f==="dd/mm/yyyy"&&(o=h[1],l=h[0],a=h[2]),f==="d/m/yyyy"&&(o=h[1],l=h[0],a=h[2]),f==="yyyy/dd/mm"&&(o=h[2],l=h[1],a=h[0]),f==="yyyy/d/m"&&(o=h[2],l=h[1],a=h[0]),f==="yyyy/mm/dd"&&(o=h[1],l=h[2],a=h[0]),f==="yyyy/m/d"&&(o=h[1],l=h[2],a=h[0]),f==="mm/dd/yy"&&(o=h[0],l=h[1],a=h[2]),f==="m/d/yy"&&(o=h[0],l=h[1],a=parseInt(h[2]??"0")+1900),f==="dd/mm/yy"&&(o=h[1],l=h[0],a=parseInt(h[2]??"0")+1900),f==="d/m/yy"&&(o=h[1],l=h[0],a=parseInt(h[2]??"0")+1900),f==="yy/dd/mm"&&(o=h[2],l=h[1],a=parseInt(h[0]??"0")+1900),f==="yy/d/m"&&(o=h[2],l=h[1],a=parseInt(h[0]??"0")+1900),f==="yy/mm/dd"&&(o=h[1],l=h[2],a=parseInt(h[0]??"0")+1900),f==="yy/m/d"&&(o=h[1],l=h[2],a=parseInt(h[0]??"0")+1900)}if(!re(a)||!re(o)||!re(l))return!1;let r=+(a??0),c=+(o??0),d=+(l??0);return i=new Date(r,c-1,d),i.setFullYear(r),c==null||String(i)==="Invalid Date"||i.getMonth()+1!==c||i.getDate()!==d||i.getFullYear()!==r?!1:s===!0?i:!0}function Me(n,e){if(n==null)return!1;let s,t=String(n).toUpperCase(),i=t.indexOf("AM")>=0,o=t.indexOf("PM")>=0,l=o||i;l?s=12:s=24,t=t.replace("AM","").replace("PM","").trim();let a=t.split(":"),r=a[0]??"",c=a[1]??"",d=a[2]??"",u=parseInt(r||"0"),h=parseInt(c||"0"),f=parseInt(d||"0");return(!l||a.length!==1)&&a.length!==2&&a.length!==3||r===""||u<0||u>s||!re(r)||r.length>2||a.length>1&&(c===""||h<0||h>59||!re(c)||c.length!==2)||a.length>2&&(d===""||f<0||f>59||!re(d)||d.length!==2)||!l&&s===u&&(h!==0||f!==0)||l&&a.length===1&&u===0?!1:e===!0?(o&&u!==12&&(u+=12),i&&u===12&&(u+=12),{hours:u,minutes:h,seconds:f}):!0}function Ut(n,e,s,t){if(n instanceof Date)return s!==!0?!0:n;let i=parseInt(String(n));if(i===n)return i<0?!1:s!==!0?!0:new Date(i);let o=String(n),l=o.indexOf(" ");if(l<0)return o.indexOf("T")<0||String(new Date(o))=="Invalid Date"?!1:s!==!0?!0:new Date(o);{e==null&&(e=t.datetimeFormat);let a=e.split("|"),r=[o.substr(0,l),o.substr(l).trim()];a[0]!=null&&(a[0]=a[0].trim()),a[1]&&(a[1]=a[1].trim());let c=Je(r[0],a[0],!0,t),d=Me(r[1],!0);if(c!==!1&&d!==!1){if(s!==!0)return!0;let u=c,h=d;return u.setHours(h.hours),u.setMinutes(h.minutes),u.setSeconds(h.seconds),u}else return!1}}function Gt(n){let e;if(n===""||n==null||(n instanceof Date?e=n:typeof n=="number"||typeof n=="string"&&parseInt(n)==n&&parseInt(n)>0?e=new Date(parseInt(String(n))):e=new Date(String(n)),String(e)==="Invalid Date"))return"";let t=(new Date().getTime()-e.getTime())/1e3,i=0,o="";return t<0?(i=0,o="sec"):t<60?(i=Math.floor(t),o="sec",t<0&&(i=0,o="sec")):t<3600?(i=Math.floor(t/60),o="min"):t<1440*60?(i=Math.floor(t/60/60),o="hour"):t<720*60*60?(i=Math.floor(t/24/60/60),o="day"):t<365*24*60*60?(i=Math.floor(t/30/24/60/60*10)/10,o="month"):t<365*4*24*60*60?(i=Math.floor(t/365/24/60/60*10)/10,o="year"):t>=365*4*24*60*60&&(i=Math.floor(t/365.25/24/60/60*10)/10,o="year"),i+" "+o+(i>1?"s":"")}function Bt(n){let e="";return n<100?e="< 0.01 sec":n<1e3?e=Math.floor(n/10)/100+" sec":n<1e4?e=Math.floor(n/100)/10+" sec":n<6e4?e=Math.floor(n/1e3)+" secs":n<36e5?e=Math.floor(n/6e4)+" mins":n<864e5?e=Math.floor(n/36e5*10)/10+" hours":n<2628e6?e=Math.floor(n/864e5*10)/10+" days":n<31536e6?e=Math.floor(n/2628e6*10)/10+" months":e=Math.floor(n/31536e5)/10+" years",e}function Ze(n,e,s){if(e||(e=s.dateFormat),n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),String(t)==="Invalid Date")return"";let i=t.getFullYear(),o=t.getMonth(),l=t.getDate();return e.toLowerCase().replace("month",s.fullmonths[o]??"").replace("mon",s.shortmonths[o]??"").replace(/yyyy/g,("000"+i).slice(-4)).replace(/yyy/g,("000"+i).slice(-4)).replace(/yy/g,("0"+i).slice(-2)).replace(/(^|[^a-z$])y/g,"$1"+i).replace(/mm/g,("0"+(o+1)).slice(-2)).replace(/dd/g,("0"+l).slice(-2)).replace(/th/g,l==1?"st":"th").replace(/th/g,l==2?"nd":"th").replace(/th/g,l==3?"rd":"th").replace(/(^|[^a-z$])m/g,"$1"+(o+1)).replace(/(^|[^a-z$])d/g,"$1"+l)}function et(n,e,s){if(e||(e=s.timeFormat),n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),Me(n)){let f=Me(n,!0);t=new Date,t.setHours(f.hours),t.setMinutes(f.minutes)}if(String(t)==="Invalid Date")return"";e=="h12"&&(e="hh:mi pm");let i="am",o=t.getHours(),l=t.getHours(),a=t.getMinutes(),r=t.getSeconds();a<10&&(a="0"+a),r<10&&(r="0"+r),(e.indexOf("am")!==-1||e.indexOf("pm")!==-1)&&(o>=12&&(i="pm"),o>12&&(o=o-12),o===0&&(o=12));let c=String(o),d=String(a),u=String(r),h=String(l);return e.toLowerCase().replace("am",i).replace("pm",i).replace("hhh",Number(o)<10?"0"+c:c).replace("hh24",l<10?"0"+h:h).replace("h24",h).replace("hh",c).replace("mm",d).replace("mi",d).replace("ss",u).replace(/(^|[^a-z$])h/g,"$1"+c).replace(/(^|[^a-z$])m/g,"$1"+d).replace(/(^|[^a-z$])s/g,"$1"+u)}function Qt(n,e,s){let t;return n===""||n==null||typeof n=="object"&&!n.getMonth?"":(typeof e!="string"?t=[s.dateFormat,s.timeFormat]:(t=e.split("|"),t[0]!=null&&(t[0]=t[0].trim()),t[1]=t.length>1?(t[1]??"").trim():s.timeFormat),t[1]==="h12"&&(t[1]="h:m pm"),t[1]==="h24"&&(t[1]="h24:m"),Ze(n,t[0],s)+" "+et(n,t[1],s))}function Vt(n,e,s){if(n===""||n==null||typeof n=="object"&&!n.getMonth)return"";let t=new Date(n);if(re(n)&&(t=new Date(Number(n))),String(t)==="Invalid Date")return"";let i=e.shortmonths,o=new Date,l=new Date;l.setTime(l.getTime()-864e5);let a=i[t.getMonth()]+" "+t.getDate()+", "+t.getFullYear(),r=i[o.getMonth()]+" "+o.getDate()+", "+o.getFullYear(),c=i[l.getMonth()]+" "+l.getDate()+", "+l.getFullYear(),d=t.getHours()-(t.getHours()>12?12:0)+":"+(t.getMinutes()<10?"0":"")+t.getMinutes()+" "+(t.getHours()>=12?"pm":"am"),u=t.getHours()-(t.getHours()>12?12:0)+":"+(t.getMinutes()<10?"0":"")+t.getMinutes()+":"+(t.getSeconds()<10?"0":"")+t.getSeconds()+" "+(t.getHours()>=12?"pm":"am"),h=a;return a===r&&(h=d),a===c&&(h=s.lang("Yesterday")),'<span title="'+a+" "+u+'">'+h+"</span>"}async function tt(n,e,s,t,i){if(Array.isArray(n)){let l=i.extend({},{...t,phrases:{}}),a=n.map(u=>u.length===5?"locale/"+u.toLowerCase()+".json":u),r=[],c={};return a.forEach(u=>{r.push(tt(u,!0,!1,l,i))}),(await Promise.allSettled(r)).forEach(u=>{u.status==="fulfilled"&&u.value.kind==="load"&&(c[u.value.file]=u.value.data)}),a.forEach(u=>{l=i.extend({},l,c[u]??{})}),{kind:"void",settings:l}}if(n||(n="en-us"),typeof n=="object")return{kind:"merge",settings:i.extend({},t,Ce,n)};let o=n;o.length===5&&(o="locale/"+o.toLowerCase()+".json");try{let a=await(await i.fetch(o,{method:"GET"})).json();if(s!==!0)if(e){let r=i.extend({},t,a);return{kind:"load",file:o,data:a,settings:r}}else{let r={...t,phrases:{}},c=i.extend({},r,Ce,a);return{kind:"load",file:o,data:a,settings:c}}return{kind:"load",file:o,data:a}}catch(l){throw console.log("ERROR: Cannot load locale "+o),l}}var Se=j,st=class{version;tmp;settings;i18nCompare;hasLocalStorage;isMac;isMobile;isIOS;isAndroid;isSafari;isFirefox;formatters;constructor(){this.version="2.0.x",this.tmp={},this.settings=this.extend({},{dataType:"JSON",dateStartYear:1950,dateEndYear:2030,macButtonOrder:!1,warnNoPhrase:!1},Ce,{phrases:null}),this.i18nCompare=Intl.Collator().compare,this.hasLocalStorage=e(),this.isMac=/Mac/i.test(navigator.platform),this.isMobile=/(iphone|ipod|mobile|android)/i.test(navigator.userAgent),this.isIOS=/(iphone|ipod|ipad)/i.test(navigator.platform),this.isAndroid=/(android)/i.test(navigator.userAgent),this.isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),this.isFirefox=/(Firefox)/i.test(navigator.userAgent),this.formatters={number(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;return parseInt(String(o))>20&&(o=20),parseInt(String(o))<0&&(o=0),i==null||i===""?"":p.formatNumber(parseFloat(String(i)),o,!0)},float(s,t){return p.formatters.number?.(s,t)??""},int(s,t){return p.formatters.number?.(s,t)??""},money(s,t){t==null&&(t=s);let{value:i}=t;if(i==null||i==="")return"";let o=p.formatNumber(Number(i),p.settings.currencyPrecision,!0);return(p.settings.currencyPrefix||"")+o+(p.settings.currencySuffix||"")},currency(s,t){return p.formatters.money?.(s,t)??""},percent(s,t){t==null&&(t=s);let{value:i,params:o}=t;return i==null||i===""?"":p.formatNumber(i,o||1)+"%"},size(s,t){t==null&&(t=s);let{value:i}=t;return i==null||i===""?"":String(p.formatSize(parseInt(String(i))))},date(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.dateFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatDate(l instanceof Date?l:void 0,o)+"</span>"},datetime(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatDateTime(l instanceof Date?l:void 0,o)+"</span>"},time(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.timeFormat),o==="h12"&&(o="hh:mi pm"),o==="h24"&&(o="h24:mi"),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.formatTime(i,o)+"</span>"},timestamp(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),l instanceof Date?l.toString():""},gmt(s,t){t==null&&(t=s);let{value:i}=t,o=t.params;if(o===""&&(o=p.settings.datetimeFormat),i==null||i===0||i==="")return"";let l=p.isDateTime(i,o??null,!0);return l===!1&&(l=p.isDate(i,o??null,!0)),l instanceof Date?l.toUTCString():""},age(s,t){t==null&&(t=s);let{value:i,params:o}=t;if(i==null||i===0||i==="")return"";let l=p.isDateTime(i,null,!0);return l===!1&&(l=p.isDate(i,null,!0)),'<span title="'+(l instanceof Date?l:"")+'">'+p.age(i)+(o?" "+o:"")+"</span>"},interval(s,t){t==null&&(t=s);let{value:i,params:o}=t;return i==null||i===0||i===""?"":p.interval(Number(i))+(o?" "+o:"")},toggle(s,t){t==null&&(t=s);let{value:i}=t;return i?p.lang("Yes"):""},password(s,t){t==null&&(t=s);let{value:i}=t,o="";if(!i)return o;let l=String(i);for(let a=0;a<l.length;a++)o+="*";return o}};return;function e(){let s="w2ui_test";try{return localStorage.setItem(s,s),localStorage.removeItem(s),!0}catch{return!1}}}isBin(e){return ft(e)}isInt(e){return re(e)}isFloat(e){return Qe(e,this.settings)}isMoney(e){return ht(e,this.settings)}isHex(e){return pt(e)}isAlphaNumeric(e){return ze(e)}isEmail(e){return mt(e)}isIpAddress(e){return gt(e)}isDate(e,s,t){return Je(e,s,t,this.settings)}isTime(e,s){return Me(e,s)}isDateTime(e,s,t){return Ut(e,s,t,this.settings)}age(e){return Gt(e)}interval(e){return Bt(e)}date(e){return Vt(e,this.settings,{lang:this.lang.bind(this)})}formatSize(e){if(!this.isFloat(e)||e==="")return"";let s=parseFloat(String(e));if(s===0)return 0;let t=["Bt","KB","MB","GB","TB","PB","EB","ZB"],i=parseInt(String(Math.floor(Math.log(s)/Math.log(1024))));return(Math.floor(s/Math.pow(1024,i)*10)/10).toFixed(i===0?0:1)+" "+(t[i]||"??")}formatNumber(e,s,t){if(e==null||e===""||typeof e=="object")return"";let i={minimumFractionDigits:s!=null?parseInt(String(s)):void 0,maximumFractionDigits:s!=null?parseInt(String(s)):void 0,useGrouping:!!t};return(s==null||Number(s)<0)&&(i.minimumFractionDigits=0,i.maximumFractionDigits=20),parseFloat(String(e)).toLocaleString(this.settings.locale,i)}formatDate(e,s){return Ze(e,s,this.settings)}formatTime(e,s){return et(e,s,this.settings)}formatDateTime(e,s){return Qt(e,s,this.settings)}stripSpaces(e){return Ae(e)}stripTags(e){return Fe(e)}encodeTags(e){return Ee(e)}decodeTags(e){return He(e)}escapeId(e){return Ct(e)}unescapeId(e){return Et(e)}base64encode(e){return St(e)}base64decode(e){return Rt(e)}sha256(e){return $t(e)}transition(e,s,t,i){return Ft(e,s,t,i)}lock(e,s={},...t){return Ht(e,s,...t)}unlock(e,s){return Ke(e,s)}_msgDeps(){return{extend:te,bindEvents:(e,s)=>this.bindEvents(e,s),lock:(e,s)=>this.lock(e,s),unlock:(e,s)=>this.unlock(e,s),ownerName:this.name,self:this}}_confirmDeps(){return{extend:te,normButtons:(e,s)=>je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings}),message:(e,s)=>this.message(e,s),settings:this.settings,lang:this.lang.bind(this)}}_promptDeps(){return{extend:te,normButtons:(e,s)=>je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings}),message:(e,s)=>this.message(e,s),settings:this.settings,lang:this.lang.bind(this)}}message(e,s){return Xe(e,s,this._msgDeps())}alert(e,s){return zt(e,s,this._msgDeps())}confirm(e,s){return Lt(e,s,this._confirmDeps())}prompt(e,s){return At(e,s,this._promptDeps())}normButtons(e,s){return je(e,s,{extend:te,lang:this.lang.bind(this),settings:this.settings})}notify(e,s){return Ot(e,s,{execTemplate:this.execTemplate.bind(this),tmpSlot:this.tmp})}getSize(e,s){return Nt(e,s)}getStrDimentions(e,s,t){return Pt(e,s,t)}getStrWidth(e,s,t){return this.getStrDimentions(e,s,t).width}getStrHeight(e,s,t){return this.getStrDimentions(e,s,t).height}execTemplate(e,s){return Mt(e,s)}marker(e,s,t){return It(e,s,t)}lang(e,s){if(!e||this.settings.phrases==null||typeof e!="string"||"<=>=".includes(e))return this.execTemplate(e,s);let t=this.settings.phrases[e];return t==null?(t=e,this.settings.warnNoPhrase&&(this.settings.missing||(this.settings.missing={}),this.settings.missing[e]="---",this.settings.phrases[e]="---",console.log(`Missing translation for "%c${e}%c", see %c TsUtils.settings.phrases %c with value "---"`,"color: orange","","color: #999",""))):t==="---"&&!this.settings.warnNoPhrase&&(t=e),t==="---"&&(t=`<span ${this.tooltip(e)}>---</span>`),this.execTemplate(t,s)}locale(e,s,t){let i={extend:this.extend.bind(this),fetch:globalThis.fetch.bind(globalThis)};return tt(e,s,t,this.settings,i).then(o=>(o.settings&&(this.settings=o.settings),o.kind==="load"?{file:o.file,data:o.data}:void 0))}scrollBarSize(){return this.tmp.scrollBarSize?this.tmp.scrollBarSize:(Se("body").append(`
28
28
  <div id="_scrollbar_width" style="position: absolute; top: -300px; width: 100px; height: 100px; overflow-y: scroll;">
29
29
  <div style="height: 120px">1</div>
30
30
  </div>
31
- `),this.tmp.scrollBarSize=100-Se("#_scrollbar_width > div")[0].clientWidth,Se("#_scrollbar_width").remove(),this.tmp.scrollBarSize)}checkName(e){return Pe(e)}checkUniqueId(e,s,t,i){Array.isArray(s)||(s=[s]);let o=!0;return s.forEach(l=>{l.id===e&&(console.log(`ERROR: The item id="${e}" is not unique within the ${t} "${i}".`,s),o=!1)}),o}encodeParams(e,s=""){return Ye(e,s)}parseRoute(e){return wt(e)}getCursorPosition(e){if(e==null)return null;let s=0,t=e.ownerDocument||e.document,i=t.defaultView||t.parentWindow,o;if(["INPUT","TEXTAREA"].includes(e.tagName))s=e.selectionStart;else if(i.getSelection){if(o=i.getSelection(),o.rangeCount>0){let l=o.getRangeAt(0),a=l.cloneRange();a.selectNodeContents(e),a.setEnd(l.endContainer,l.endOffset),s=a.toString().length}}else if((o=t.selection)&&o.type!=="Control"){let l=o.createRange(),a=t.body.createTextRange();a.moveToElementText(e),a.setEndPoint("EndToEnd",l),s=a.text.length}return s}setCursorPosition(e,s,t){if(e==null)return;let i=document.createRange(),o=null,l=window.getSelection();if(["INPUT","TEXTAREA"].includes(e.tagName))e.setSelectionRange(s,t??s);else{for(let r=0;r<e.childNodes.length;r++){let c=String(Se(e.childNodes[r]).text());if(e.childNodes[r].tagName&&(c=String(Se(e.childNodes[r]).html()),c=c.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&nbsp;/g," ")),s<=c.length){o=e.childNodes[r]??null,o!=null&&o.childNodes&&o.childNodes.length>0&&(o=o.childNodes[0]??null),o!=null&&o.childNodes&&o.childNodes.length>0&&(o=o.childNodes[0]??null);break}else s-=c.length}if(o==null)return;let a=o.length??0;s>a&&(s=a),i.setStart(o,s),t?i.setEnd(o,t):i.collapse(!0),l?.removeAllRanges(),l?.addRange(i)}}parseColor(e){return Ve(e)}colorContrast(e,s){return yt(e,s)}colorContrastValue(e,s){return qe(e,s)}hsv2rgb(e,s,t,i){return bt(e,s,t,i)}rgb2hsv(e,s,t,i){return xt(e,s,t,i)}tooltip(e,s){let t="mouseenter",i="mouseleave",o=s??{};return typeof e=="object"&&(o=e),typeof e=="string"&&(o={...o,html:e}),o.showOn&&(t=o.showOn,delete o.showOn),o.hideOn&&(i=o.hideOn,delete o.hideOn),o.name||(o.name="no-name"),` on${t}="TsTooltip.show(this, JSON.parse(TsUtils.base64decode('${this.base64encode(JSON.stringify(o))}')))" on${i}="TsTooltip.hide('${o.name}')"`}isPlainObject(e){return we(e)}clone(e,s){return _e(e,s)}extend(e,s,...t){return te(e,s,...t)}naturalCompare(e,s){return vt(e,s)}normMenu(e,s={}){return We(e,s)}prepareParams(e,s,t={}){return Tt(e,s,t,p.settings.dataType)}bindEvents(e,s){return jt(e,s)}debounce(e,s=250){return _t(e,s)}async wait(e=0){return kt(e)}getNested(e,s){return Le(e,s)}},p=new st;var A=j,Ue=class extends ne{defaults;options;status;tmp;handleResize;_promCreated;_promOpened;_promClosing;_promClosed;_timer;constructor(){super(),this.defaults={title:"",text:"",body:"",buttons:"",width:450,height:250,focus:null,actions:null,style:"",speed:.3,blockPage:!0,modal:!1,maximized:!1,keyboard:!0,showClose:!0,showMax:!1,resizable:!1,transition:null,openMaximized:!1,moved:!1},this.name="popup",this.status="closed",this.onOpen=null,this.onClose=null,this.onMax=null,this.onMin=null,this.onToggle=null,this.onKeydown=null,this.onAction=null,this.onMove=null,this.tmp={},this.handleResize=e=>{this.options.moved||this.center(void 0,void 0,!0)}}open(e,s){let t=this;(this.status=="closing"||A("#tsg-popup").hasClass("animating"))&&this.close(!0);let i=this.options;["string","number"].includes(typeof e)&&(e=p.extend({title:"Notification",body:`<div class="tsg-centered">${e}</div>`,actions:{Ok(){t.close()}},cancelAction:"ok"},s??{})),e.text!=null&&(e.body=`<div class="tsg-centered tsg-msg-text">${e.text}</div>`),e=Object.assign({},this.defaults,i,{title:"",body:""},e,{maximized:!1}),this.options=e,A("#tsg-popup").length===0&&(this.off("*"),Object.keys(this).forEach(b=>{b.startsWith("on")&&b!="on"&&(this[b]=null)})),Object.keys(e).forEach(b=>{b.startsWith("on")&&b!="on"&&e[b]&&(this[b]=e[b])}),e.width=parseInt(e.width),e.height=parseInt(e.height);let o,l,{top:a,left:r,width:c,height:d}=this.center();e.width>c&&(e.width=c),e.height>d&&(e.height=d);let u={self:this,action(b){return t.on("action.prom",b),u},close(b){return t.on("close.prom",b),u},then(b){return t.on("open:after.prom",b),u}};e.actions!=null&&!e.buttons&&(e.buttons="",Object.keys(e.actions).forEach(b=>{let g=e.actions[b],v=b;typeof g=="function"&&(e.buttons+=`<button class="tsg-btn tsg-eaction" name="${b}" data-click='["action","${b}","event"]'>${b}</button>`),typeof g=="object"&&(e.buttons+=`<button class="tsg-btn tsg-eaction ${g.class||""}" name="${b}" data-click='["action","${b}","event"]'
31
+ `),this.tmp.scrollBarSize=100-Se("#_scrollbar_width > div")[0].clientWidth,Se("#_scrollbar_width").remove(),this.tmp.scrollBarSize)}checkName(e){return Pe(e)}checkUniqueId(e,s,t,i){Array.isArray(s)||(s=[s]);let o=!0;return s.forEach(l=>{l.id===e&&(console.log(`ERROR: The item id="${e}" is not unique within the ${t} "${i}".`,s),o=!1)}),o}encodeParams(e,s=""){return Ye(e,s)}parseRoute(e){return wt(e)}getCursorPosition(e){if(e==null)return null;let s=0,t=e.ownerDocument||e.document,i=t.defaultView||t.parentWindow,o;if(["INPUT","TEXTAREA"].includes(e.tagName))s=e.selectionStart;else if(i.getSelection){if(o=i.getSelection(),o.rangeCount>0){let l=o.getRangeAt(0),a=l.cloneRange();a.selectNodeContents(e),a.setEnd(l.endContainer,l.endOffset),s=a.toString().length}}else if((o=t.selection)&&o.type!=="Control"){let l=o.createRange(),a=t.body.createTextRange();a.moveToElementText(e),a.setEndPoint("EndToEnd",l),s=a.text.length}return s}setCursorPosition(e,s,t){if(e==null)return;let i=document.createRange(),o=null,l=window.getSelection();if(["INPUT","TEXTAREA"].includes(e.tagName))e.setSelectionRange(s,t??s);else{for(let r=0;r<e.childNodes.length;r++){let c=String(Se(e.childNodes[r]).text());if(e.childNodes[r].tagName&&(c=String(Se(e.childNodes[r]).html()),c=c.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&nbsp;/g," ")),s<=c.length){o=e.childNodes[r]??null,o!=null&&o.childNodes&&o.childNodes.length>0&&(o=o.childNodes[0]??null),o!=null&&o.childNodes&&o.childNodes.length>0&&(o=o.childNodes[0]??null);break}else s-=c.length}if(o==null)return;let a=o.length??0;s>a&&(s=a),i.setStart(o,s),t?i.setEnd(o,t):i.collapse(!0),l?.removeAllRanges(),l?.addRange(i)}}parseColor(e){return Ve(e)}colorContrast(e,s){return yt(e,s)}colorContrastValue(e,s){return We(e,s)}hsv2rgb(e,s,t,i){return bt(e,s,t,i)}rgb2hsv(e,s,t,i){return xt(e,s,t,i)}tooltip(e,s){let t="mouseenter",i="mouseleave",o=s??{};return typeof e=="object"&&(o=e),typeof e=="string"&&(o={...o,html:e}),o.showOn&&(t=o.showOn,delete o.showOn),o.hideOn&&(i=o.hideOn,delete o.hideOn),o.name||(o.name="no-name"),` on${t}="TsTooltip.show(this, JSON.parse(TsUtils.base64decode('${this.base64encode(JSON.stringify(o))}')))" on${i}="TsTooltip.hide('${o.name}')"`}isPlainObject(e){return we(e)}clone(e,s){return _e(e,s)}extend(e,s,...t){return te(e,s,...t)}naturalCompare(e,s){return vt(e,s)}normMenu(e,s={}){return qe(e,s)}prepareParams(e,s,t={}){return Tt(e,s,t,p.settings.dataType)}bindEvents(e,s){return jt(e,s)}debounce(e,s=250){return _t(e,s)}async wait(e=0){return kt(e)}getNested(e,s){return Le(e,s)}},p=new st;var A=j,Ue=class extends ne{defaults;options;status;tmp;handleResize;_promCreated;_promOpened;_promClosing;_promClosed;_timer;constructor(){super(),this.defaults={title:"",text:"",body:"",buttons:"",width:450,height:250,focus:null,actions:null,style:"",speed:.3,blockPage:!0,modal:!1,maximized:!1,keyboard:!0,showClose:!0,showMax:!1,resizable:!1,transition:null,openMaximized:!1,moved:!1},this.name="popup",this.status="closed",this.onOpen=null,this.onClose=null,this.onMax=null,this.onMin=null,this.onToggle=null,this.onKeydown=null,this.onAction=null,this.onMove=null,this.tmp={},this.handleResize=e=>{this.options.moved||this.center(void 0,void 0,!0)}}open(e,s){let t=this;(this.status=="closing"||A("#tsg-popup").hasClass("animating"))&&this.close(!0);let i=this.options;["string","number"].includes(typeof e)&&(e=p.extend({title:"Notification",body:`<div class="tsg-centered">${e}</div>`,actions:{Ok(){t.close()}},cancelAction:"ok"},s??{})),e.text!=null&&(e.body=`<div class="tsg-centered tsg-msg-text">${e.text}</div>`),e=Object.assign({},this.defaults,i,{title:"",body:""},e,{maximized:!1}),this.options=e,A("#tsg-popup").length===0&&(this.off("*"),Object.keys(this).forEach(b=>{b.startsWith("on")&&b!="on"&&(this[b]=null)})),Object.keys(e).forEach(b=>{b.startsWith("on")&&b!="on"&&e[b]&&(this[b]=e[b])}),e.width=parseInt(e.width),e.height=parseInt(e.height);let o,l,{top:a,left:r,width:c,height:d}=this.center();e.width>c&&(e.width=c),e.height>d&&(e.height=d);let u={self:this,action(b){return t.on("action.prom",b),u},close(b){return t.on("close.prom",b),u},then(b){return t.on("open:after.prom",b),u}};e.actions!=null&&!e.buttons&&(e.buttons="",Object.keys(e.actions).forEach(b=>{let g=e.actions[b],v=b;typeof g=="function"&&(e.buttons+=`<button class="tsg-btn tsg-eaction" name="${b}" data-click='["action","${b}","event"]'>${b}</button>`),typeof g=="object"&&(e.buttons+=`<button class="tsg-btn tsg-eaction ${g.class||""}" name="${b}" data-click='["action","${b}","event"]'
32
32
  style="${g.style}" ${g.attrs}>${g.text||b}</button>`,v=Array.isArray(e.actions)?g.text:b),typeof g=="string"&&(g.trim().startsWith("<")?(v="none",e.buttons+=g):(v=(g[0]??"").toLowerCase()+g.substr(1).replace(/\s+/g,""),e.buttons+=`<button class="tsg-btn tsg-eaction" name="${b}" data-click='["action","${v}","event"]'>${g}</button>`)),typeof v=="string"&&(v=(v[0]??"").toLowerCase()+v.substr(1).replace(/\s+/g,"")),u[v]=function(w){return t.on("action.buttons",T=>{(T.detail.action[0]??"").toLowerCase()+T.detail.action.substr(1).replace(/\s+/g,"")==v&&w(T)}),u}}));let h="";if(e.showClose&&(h+=`<div class="tsg-popup-button tsg-popup-close">
33
33
  <span class="tsg-icon tsg-icon-cross tsg-eaction" data-mousedown="stop" data-click="close"></span>
34
34
  </div>`),e.showMax&&(h+=`<div class="tsg-popup-button tsg-popup-max">
@@ -66,7 +66,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
66
66
  style="${l.style||""}; ${c}" ${l.draggable?'data-mousedown="startDrag|event"':""}>
67
67
  ${l.html}
68
68
  </div>
69
- </div>`),o.box=M("#"+p.escapeId(o.id))[0],o.displayed=!0;let h=M(o.anchor).data("tooltipName")??[];h.push(e),M(o.anchor).data("tooltipName",h),p.bindEvents(o.box,{}),o.tmp.originalCSS="",M(o.anchor).length>0&&(o.tmp.originalCSS=M(o.anchor)[0].style.cssText),this.resize(o.name)}return l.anchorStyle&&(o.anchor.style.cssText+=";"+l.anchorStyle),l.anchorClass&&(l.anchorClass=="tsg-focus"&&o.anchor==document.body||M(o.anchor).addClass(l.anchorClass)),typeof l.hideOn=="string"&&(l.hideOn=[l.hideOn]),Array.isArray(l.hideOn)||(l.hideOn=[]),Object.assign(o.tmp,{scrollLeft:document.body.scrollLeft,scrollTop:document.body.scrollTop}),u(),d(document.body),M(o.box).show(),o.tmp.observeTooltipResize.observe(o.box),o.tmp.observeAnchorResize.observe(o.anchor),o.tmp.observeAnchorMove.observe(o.anchor,{attributes:!0}),n.observeRemove.observe(document.body,{subtree:!0,childList:!0}),M(o.box).css("opacity",1).find(".tsg-overlay-body").html(l.html),setTimeout(()=>{M(o.box).css({"pointer-events":"auto"}).data("ready","yes")},100),p.bindEvents(M(o.box).find(".tsg-eaction"),this),delete o.needsUpdate,o.box.overlay=o,M(o.box).off("mousedown.tsg-bringfront").on("mousedown.tsg-bringfront",()=>{i.bringOverlayToFront(o)}),t&&t.finish(),{overlay:o};function d(h){let f="tooltip-"+o.name,m=h;h.tagName=="BODY"&&(m=h.ownerDocument),M(m).off(`.${f}`).on(`scroll.${f}`,y=>{Object.assign(o.tmp,{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop}),i.resize(o.name)})}function u(){let h=y=>{i.hide(o.name)},f=M(o.anchor),m="tooltip-"+o.name;M("html").off(`.${m}`),l.hideOn.includes("doc-click")&&(["INPUT","TEXTAREA"].includes(o.anchor.tagName)&&f.off(`.${m}-doc`).on(`click.${m}-doc`,y=>{y.stopPropagation()}),M("html").on(`click.${m}`,h)),l.hideOn.includes("tooltip-click")&&M(o.box).off(`click.${m}`).on(`click.${m}`,h),(l.hideOn.includes("focus-change")||l.hideOn.includes("blur"))&&M("html").on(`focusin.${m}`,y=>{document.activeElement!=o.anchor&&i.hide(o.name)}),["INPUT","TEXTAREA"].includes(o.anchor.tagName)&&(f.off(`.${m}`),l.hideOn.forEach(y=>{["doc-click","focus-change","blur"].indexOf(y)==-1&&f.on(`${y}.${m}`,{once:!0},h)}))}}hide(e){let s;if(arguments.length==0){Object.keys(n.active).forEach(r=>{this.hide(r)});return}if(e instanceof HTMLElement){(M(e).data("tooltipName")??[]).forEach(c=>{this.hide(c)});return}if(typeof e=="string"&&(e=e.replace(/[\s\.#]/g,"_"),s=n.active[e]),s?.tmp&&(s.tmp.hidden=!0),!s||!s.box)return;let t=this.trigger("hide",{target:e,overlay:s});if(t.isCancelled===!0)return;s.options._keep||delete n.active[e];let i="tooltip-"+s.name;s.tmp.observeTooltipResize?.disconnect(),s.tmp.observeAnchorResize?.disconnect(),s.tmp.observeAnchorMove?.disconnect();let o=0;Object.keys(n.active).forEach(r=>{n.active[r]?.displayed&&o++}),o==0&&n.observeRemove.disconnect(),M("html").off(`.${i}`),M(document).off(`.${i}`),s.box?.remove(),s.box=null,s.displayed=!1;let l=M(s.anchor).data("tooltipName")??[];l.indexOf(s.name)!=-1&&l.splice(l.indexOf(s.name),1),l.length==0?M(s.anchor).removeData("tooltipName"):M(s.anchor).data("tooltipName",l),s.options.anchorStyle&&(s.anchor.style.cssText=s.tmp.originalCSS),M(s.anchor).off(`.${i}`).removeClass(s.options.anchorClass),s.options.url&&(s.options.items.splice(0),s.tmp.remote.hasMore=!0,s.tmp.remote.search=null),t.finish()}resize(e){let s={moved:!1,resize:!1};if(arguments.length==0)return Object.keys(n.active).forEach(d=>{let u=n.active[d];u.displayed&&this.resize(u.name)}),{multiple:!0};let t=n.active[(e??"").replace(/[\s\.#]/g,"_")],i=this.getPosition(t.name),o=i.left+"x"+i.top,l=i.width+"x"+i.height,a,r;return t.tmp.lastPos!=o&&(a=this.trigger("move",{target:e,overlay:t,pos:i}),s.moved=!0),t.tmp.lastSize!=l&&(r=this.trigger("resize",{target:e,overlay:t,pos:i}),s.moved=!0),M(t.box).css({left:i.left+"px",top:i.top+"px"}).then(d=>(i.width!=null&&d.css("width",i.width+"px").find(".tsg-overlay-body").css("width","100%"),i.height!=null&&d.css("height",i.height+"px").find(".tsg-overlay-body").css("height","100%"),d)).find(".tsg-overlay-body").removeClass("tsg-arrow-right tsg-arrow-left tsg-arrow-top tsg-arrow-bottom").addClass(i.arrow.class).closest(".tsg-overlay").find("style:first-child").text(i.arrow.style),t.tmp.lastPos!=o&&a&&(t.tmp.lastPos=o,a.finish()),t.tmp.lastSize!=l&&r&&(t.tmp.lastSize=l,r.finish()),s}getPosition(e){let s=n.active[e.replace(/[\s\.#]/g,"_")];if(!s||!s.box)return;let t=s.options;(s.tmp.resizedY||s.tmp.resizedX)&&M(s.box).css({width:"",height:"",scroll:"auto"});let i=p.scrollBarSize(),o=document.body.scrollWidth!=document.body.clientWidth,l=document.body.scrollHeight!=document.body.clientHeight,a={width:window.innerWidth-(l?i:0),height:window.innerHeight-(o?i:0)},r=t.position=="auto"?"top|bottom|right|left".split("|"):Array.isArray(t.position)?t.position:t.position.split("|"),c=["top","bottom"].includes(r[0]),d=s.box.getBoundingClientRect(),u=s.anchor?.getBoundingClientRect?.(),h=p.getStrWidth(t.html,"",!0);if(d.width<h&&(d.width=h),s.anchor==document.body){let S=t.originalEvent;for(;S?.originalEvent;)S=S.originalEvent;let{x:$,y:H,width:Q,height:Y}=S??{x:t.x,y:t.y,width:0,height:10};u={left:$-(t.contextMenu?4:0),top:H-(t.contextMenu?4:0),width:Q??0,height:Y??10,arrow:t.contextMenu?"none":null}}let f=t.arrowSize;u.arrow=="none"&&(f=0),isNaN(f)&&(f=this.defaults.arrowSize);let m={top:u.top-f,bottom:a.height-f-(u.top+u.height)-(o?i:0)-2,left:u.left,right:a.width-(u.left+u.width)+(l?i:0)};d.width<22&&(d.width=22),d.height<14&&(d.height=14);let y,x,b,g,v="",w={offset:0,class:"",style:`#${s.id} { --tip-size: ${f}px; }`},T={left:0,top:0},_={posX:"",x:0,posY:"",y:0};if(r.forEach(S=>{let $=m[S]??0;["top","bottom"].includes(S)&&(!v&&d.height+f/1.893<$&&(v=S),$>_.y&&Object.assign(_,{posY:S,y:$})),["left","right"].includes(S)&&(!v&&d.width+f/1.893<$&&(v=S),$>_.x&&Object.assign(_,{posX:S,x:$}))}),v||(c?v=_.posY:v=_.posX),t.autoResize){if(["top","bottom"].includes(v)){let S=m[v]??0;d.height>S?(g=S,s.tmp.resizedY=!0):s.tmp.resizedY=!1}if(["left","right"].includes(v)){let S=m[v]??0;d.width>S?(b=S,s.tmp.resizedX=!0):s.tmp.resizedX=!1}}I(v),c&&R(),x=(x??0)+parseFloat(String(t.offsetY*(v=="top"?-1:1))),y=(y??0)+parseFloat(String(t.offsetX*(v=="left"?-1:1))),F();let C=v=="top"?-t.margin:v=="bottom"?t.margin:0,D=v=="left"?-t.margin:v=="right"?t.margin:0;x=Math.floor(((x??0)+parseFloat(C))*100)/100,y=Math.floor(((y??0)+parseFloat(D))*100)/100;let O={left:y??0,top:x??0,arrow:w,adjust:T,pos:v};return b!=null&&(O.width=b),g!=null&&(O.height=g),O;function I(S){switch(w.class=u.arrow?u.arrow:`tsg-arrow-${S}`,S){case"top":{y=u.left+(u.width-(b??d.width))/2,x=u.top-(g??d.height)-f/1.5+1;break}case"bottom":{y=u.left+(u.width-(b??d.width))/2,x=u.top+u.height+f/1.25+1;break}case"left":{y=u.left-(b??d.width)-f/1.2-1,x=u.top+(u.height-(g??d.height))/2;break}case"right":{y=u.left+u.width+f/1.2+1,x=u.top+(u.height-(g??d.height))/2;break}}}function R(){if(t.align=="left"&&(T.left=u.left-(y??0),y=u.left),t.align=="right"&&(T.left=u.left+u.width-(b??d.width)-(y??0),y=u.left+u.width-(b??d.width)),["top","bottom"].includes(v)&&t.align.startsWith("both")){let S=t.align.split(":")[1]??50;u.width>=S&&(y=u.left,b=u.width)}if(t.align=="top"&&(T.top=u.top-(x??0),x=u.top),t.align=="bottom"&&(T.top=u.top+u.height-(g??d.height)-(x??0),x=u.top+u.height-(g??d.height)),["left","right"].includes(v)&&t.align.startsWith("both")){let S=t.align.split(":")[1]??50;u.height>=S&&(x=u.top,g=u.height)}}function F(){let S;(["left","right"].includes(t.align)&&u.width<(b??d.width)||["top","bottom"].includes(t.align)&&u.height<(g??d.height))&&(S=!0);let $=v=="right"?f:t.screenMargin,H=v=="bottom"?f:t.screenMargin,Q=a.width-(b??d.width)-(v=="left"?f:t.screenMargin),Y=a.height-(g??d.height)-(v=="top"?f:t.screenMargin)+3;if((["top","bottom"].includes(v)||t.autoResize)&&((y??0)<$&&(S=!0,T.left-=y??0,y=$),(y??0)>Q&&(S=!0,T.left-=(y??0)-Q,y=(y??0)+Q-(y??0))),(["left","right"].includes(v)||t.autoResize)&&((x??0)<H&&(S=!0,T.top-=x??0,x=H),(x??0)>Y&&(S=!0,T.top-=(x??0)-Y,x=(x??0)+Y-(x??0))),S){let ee=c?"left":"top",Te=c?"width":"height";w.offset=-T[ee];let xe=d[Te]/2-f;Math.abs(w.offset)>xe+f&&(w.class=""),Math.abs(w.offset)>xe&&(w.offset=w.offset<0?-xe:xe),w.style=p.stripSpaces(`#${s.id} .tsg-overlay-body:after,
69
+ </div>`),o.box=M("#"+p.escapeId(o.id))[0],o.displayed=!0;let h=M(o.anchor).data("tooltipName")??[];h.push(e),M(o.anchor).data("tooltipName",h),p.bindEvents(o.box,{}),o.tmp.originalCSS="",M(o.anchor).length>0&&(o.tmp.originalCSS=M(o.anchor)[0].style.cssText),this.resize(o.name)}return l.anchorStyle&&(o.anchor.style.cssText+=";"+l.anchorStyle),l.anchorClass&&(l.anchorClass=="tsg-focus"&&o.anchor==document.body||M(o.anchor).addClass(l.anchorClass)),typeof l.hideOn=="string"&&(l.hideOn=[l.hideOn]),Array.isArray(l.hideOn)||(l.hideOn=[]),Object.assign(o.tmp,{scrollLeft:document.body.scrollLeft,scrollTop:document.body.scrollTop}),u(),d(document.body),M(o.box).show(),o.tmp.observeTooltipResize.observe(o.box),o.tmp.observeAnchorResize.observe(o.anchor),o.tmp.observeAnchorMove.observe(o.anchor,{attributes:!0}),n.observeRemove.observe(document.body,{subtree:!0,childList:!0}),M(o.box).css("opacity",1).find(".tsg-overlay-body").html(l.html),setTimeout(()=>{M(o.box).css({"pointer-events":"auto"}).data("ready","yes")},100),p.bindEvents(M(o.box).find(".tsg-eaction"),this),delete o.needsUpdate,o.box.overlay=o,M(o.box).off("mousedown.tsg-bringfront").on("mousedown.tsg-bringfront",()=>{i.bringOverlayToFront(o)}),t&&t.finish(),{overlay:o};function d(h){let f="tooltip-"+o.name,m=h;h.tagName=="BODY"&&(m=h.ownerDocument),M(m).off(`.${f}`).on(`scroll.${f}`,y=>{Object.assign(o.tmp,{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop}),i.resize(o.name)})}function u(){let h=y=>{i.hide(o.name)},f=M(o.anchor),m="tooltip-"+o.name;M("html").off(`.${m}`),l.hideOn.includes("doc-click")&&(["INPUT","TEXTAREA"].includes(o.anchor.tagName)&&f.off(`.${m}-doc`).on(`click.${m}-doc`,y=>{y.stopPropagation()}),M("html").on(`click.${m}`,h)),l.hideOn.includes("tooltip-click")&&M(o.box).off(`click.${m}`).on(`click.${m}`,h),(l.hideOn.includes("focus-change")||l.hideOn.includes("blur"))&&M("html").on(`focusin.${m}`,y=>{document.activeElement!=o.anchor&&i.hide(o.name)}),["INPUT","TEXTAREA"].includes(o.anchor.tagName)&&(f.off(`.${m}`),l.hideOn.forEach(y=>{["doc-click","focus-change","blur"].indexOf(y)==-1&&f.on(`${y}.${m}`,{once:!0},h)}))}}hide(e){let s;if(arguments.length==0){Object.keys(n.active).forEach(r=>{this.hide(r)});return}if(e instanceof HTMLElement){(M(e).data("tooltipName")??[]).forEach(c=>{this.hide(c)});return}if(typeof e=="string"&&(e=e.replace(/[\s\.#]/g,"_"),s=n.active[e]),s?.tmp&&(s.tmp.hidden=!0),!s||!s.box)return;let t=this.trigger("hide",{target:e,overlay:s});if(t.isCancelled===!0)return;s.options._keep||delete n.active[e];let i="tooltip-"+s.name;s.tmp.observeTooltipResize?.disconnect(),s.tmp.observeAnchorResize?.disconnect(),s.tmp.observeAnchorMove?.disconnect();let o=0;Object.keys(n.active).forEach(r=>{n.active[r]?.displayed&&o++}),o==0&&n.observeRemove.disconnect(),M("html").off(`.${i}`),M(document).off(`.${i}`),s.box?.remove(),s.box=null,s.displayed=!1;let l=M(s.anchor).data("tooltipName")??[];l.indexOf(s.name)!=-1&&l.splice(l.indexOf(s.name),1),l.length==0?M(s.anchor).removeData("tooltipName"):M(s.anchor).data("tooltipName",l),s.options.anchorStyle&&(s.anchor.style.cssText=s.tmp.originalCSS),M(s.anchor).off(`.${i}`).removeClass(s.options.anchorClass),s.options.url&&(s.options.items.splice(0),s.tmp.remote.hasMore=!0,s.tmp.remote.search=null),t.finish()}resize(e){let s={moved:!1,resize:!1};if(arguments.length==0)return Object.keys(n.active).forEach(d=>{let u=n.active[d];u.displayed&&this.resize(u.name)}),{multiple:!0};let t=n.active[(e??"").replace(/[\s\.#]/g,"_")],i=this.getPosition(t.name),o=i.left+"x"+i.top,l=i.width+"x"+i.height,a,r;return t.tmp.lastPos!=o&&(a=this.trigger("move",{target:e,overlay:t,pos:i}),s.moved=!0),t.tmp.lastSize!=l&&(r=this.trigger("resize",{target:e,overlay:t,pos:i}),s.moved=!0),M(t.box).css({left:i.left+"px",top:i.top+"px"}).then(d=>(i.width!=null&&d.css("width",i.width+"px").find(".tsg-overlay-body").css("width","100%"),i.height!=null&&d.css("height",i.height+"px").find(".tsg-overlay-body").css("height","100%"),d)).find(".tsg-overlay-body").removeClass("tsg-arrow-right tsg-arrow-left tsg-arrow-top tsg-arrow-bottom").addClass(i.arrow.class).closest(".tsg-overlay").find("style:first-child").text(i.arrow.style),t.tmp.lastPos!=o&&a&&(t.tmp.lastPos=o,a.finish()),t.tmp.lastSize!=l&&r&&(t.tmp.lastSize=l,r.finish()),s}getPosition(e){let s=n.active[e.replace(/[\s\.#]/g,"_")];if(!s||!s.box)return;let t=s.options;(s.tmp.resizedY||s.tmp.resizedX)&&M(s.box).css({width:"",height:"",scroll:"auto"});let i=p.scrollBarSize(),o=document.body.scrollWidth!=document.body.clientWidth,l=document.body.scrollHeight!=document.body.clientHeight,a={width:window.innerWidth-(l?i:0),height:window.innerHeight-(o?i:0)},r=t.position=="auto"?"top|bottom|right|left".split("|"):Array.isArray(t.position)?t.position:t.position.split("|"),c=["top","bottom"].includes(r[0]),d=s.box.getBoundingClientRect(),u=s.anchor?.getBoundingClientRect?.(),h=p.getStrWidth(t.html,"",!0);if(d.width<h&&(d.width=h),s.anchor==document.body){let S=t.originalEvent;for(;S?.originalEvent;)S=S.originalEvent;let{x:$,y:H,width:V,height:Y}=S??{x:t.x,y:t.y,width:0,height:10};u={left:$-(t.contextMenu?4:0),top:H-(t.contextMenu?4:0),width:V??0,height:Y??10,arrow:t.contextMenu?"none":null}}let f=t.arrowSize;u.arrow=="none"&&(f=0),isNaN(f)&&(f=this.defaults.arrowSize);let m={top:u.top-f,bottom:a.height-f-(u.top+u.height)-(o?i:0)-2,left:u.left,right:a.width-(u.left+u.width)+(l?i:0)};d.width<22&&(d.width=22),d.height<14&&(d.height=14);let y,x,b,g,v="",w={offset:0,class:"",style:`#${s.id} { --tip-size: ${f}px; }`},T={left:0,top:0},_={posX:"",x:0,posY:"",y:0};if(r.forEach(S=>{let $=m[S]??0;["top","bottom"].includes(S)&&(!v&&d.height+f/1.893<$&&(v=S),$>_.y&&Object.assign(_,{posY:S,y:$})),["left","right"].includes(S)&&(!v&&d.width+f/1.893<$&&(v=S),$>_.x&&Object.assign(_,{posX:S,x:$}))}),v||(c?v=_.posY:v=_.posX),t.autoResize){if(["top","bottom"].includes(v)){let S=m[v]??0;d.height>S?(g=S,s.tmp.resizedY=!0):s.tmp.resizedY=!1}if(["left","right"].includes(v)){let S=m[v]??0;d.width>S?(b=S,s.tmp.resizedX=!0):s.tmp.resizedX=!1}}I(v),c&&R(),x=(x??0)+parseFloat(String(t.offsetY*(v=="top"?-1:1))),y=(y??0)+parseFloat(String(t.offsetX*(v=="left"?-1:1))),F();let C=v=="top"?-t.margin:v=="bottom"?t.margin:0,D=v=="left"?-t.margin:v=="right"?t.margin:0;x=Math.floor(((x??0)+parseFloat(C))*100)/100,y=Math.floor(((y??0)+parseFloat(D))*100)/100;let O={left:y??0,top:x??0,arrow:w,adjust:T,pos:v};return b!=null&&(O.width=b),g!=null&&(O.height=g),O;function I(S){switch(w.class=u.arrow?u.arrow:`tsg-arrow-${S}`,S){case"top":{y=u.left+(u.width-(b??d.width))/2,x=u.top-(g??d.height)-f/1.5+1;break}case"bottom":{y=u.left+(u.width-(b??d.width))/2,x=u.top+u.height+f/1.25+1;break}case"left":{y=u.left-(b??d.width)-f/1.2-1,x=u.top+(u.height-(g??d.height))/2;break}case"right":{y=u.left+u.width+f/1.2+1,x=u.top+(u.height-(g??d.height))/2;break}}}function R(){if(t.align=="left"&&(T.left=u.left-(y??0),y=u.left),t.align=="right"&&(T.left=u.left+u.width-(b??d.width)-(y??0),y=u.left+u.width-(b??d.width)),["top","bottom"].includes(v)&&t.align.startsWith("both")){let S=t.align.split(":")[1]??50;u.width>=S&&(y=u.left,b=u.width)}if(t.align=="top"&&(T.top=u.top-(x??0),x=u.top),t.align=="bottom"&&(T.top=u.top+u.height-(g??d.height)-(x??0),x=u.top+u.height-(g??d.height)),["left","right"].includes(v)&&t.align.startsWith("both")){let S=t.align.split(":")[1]??50;u.height>=S&&(x=u.top,g=u.height)}}function F(){let S;(["left","right"].includes(t.align)&&u.width<(b??d.width)||["top","bottom"].includes(t.align)&&u.height<(g??d.height))&&(S=!0);let $=v=="right"?f:t.screenMargin,H=v=="bottom"?f:t.screenMargin,V=a.width-(b??d.width)-(v=="left"?f:t.screenMargin),Y=a.height-(g??d.height)-(v=="top"?f:t.screenMargin)+3;if((["top","bottom"].includes(v)||t.autoResize)&&((y??0)<$&&(S=!0,T.left-=y??0,y=$),(y??0)>V&&(S=!0,T.left-=(y??0)-V,y=(y??0)+V-(y??0))),(["left","right"].includes(v)||t.autoResize)&&((x??0)<H&&(S=!0,T.top-=x??0,x=H),(x??0)>Y&&(S=!0,T.top-=(x??0)-Y,x=(x??0)+Y-(x??0))),S){let ee=c?"left":"top",Te=c?"width":"height";w.offset=-T[ee];let xe=d[Te]/2-f;Math.abs(w.offset)>xe+f&&(w.class=""),Math.abs(w.offset)>xe&&(w.offset=w.offset<0?-xe:xe),w.style=p.stripSpaces(`#${s.id} .tsg-overlay-body:after,
70
70
  #${s.id} .tsg-overlay-body:before {
71
71
  --tip-size: ${f}px;
72
72
  margin-${ee}: ${w.offset}px;
@@ -137,7 +137,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
137
137
  <div class="tsg-color tsg-color-picker tsg-eaction" data-click="pickAndSelect|${e}|event">
138
138
  <span class="tsg-icon tsg-icon-eye-dropper"></span>
139
139
  </div>
140
- </div>`,t}initControls(e){let s,t=this,i=e.options,o=i.color||e.tmp.initColor,l=p.parseColor(o);l==null&&(l={r:140,g:150,b:160,a:1});let a=p.rgb2hsv(l);i.advanced===!0&&this.tabClick(2,e.name),u(a,!0,o??""),M(e.box).off(".TsColor").on("contextmenu.TsColor",b=>{b.preventDefault()}).find("input").off(".TsColor").on("change.TsColor",b=>{let g=M(b.target),v=parseFloat(g.val()),w=parseFloat(g.attr("max"));isNaN(v)&&(v=0,g.val(0)),w>1&&(v=parseInt(String(v))),w>0&&v>w&&(g.val(w),v=w),v<0&&(g.val(0),v=0);let T=g.attr("name"),_={};["r","g","b","a"].indexOf(T)!==-1?(l[T]=v,a=p.rgb2hsv(l)):["h","s","v"].indexOf(T)!==-1&&(_[T]=v),u(_,!0)}),M(e.box).find(".color-original").off(".TsColor").on("click.TsColor",b=>{let g=p.parseColor(M(b.target).css("background-color"));g!=null&&(l=g,a=p.rgb2hsv(l),u(a,!0))});let r=`${p.isMobile?"touchstart":"mousedown"}.TsColor`,c=`${p.isMobile?"touchend":"mouseup"}.TsColor`,d=`${p.isMobile?"touchmove":"mousemove"}.TsColor`;M(e.box).find(".palette, .rainbow, .alpha").off(".TsColor").on(`${r}.TsColor`,m),this.setColor=u;return;function u(b,g,v){b.h!=null&&(a.h=b.h),b.s!=null&&(a.s=b.s),b.v!=null&&(a.v=b.v),b.a!=null&&(l.a=b.a,a.a=b.a),l=p.hsv2rgb(a);let w="rgba("+l.r+","+l.g+","+l.b+","+l.a+")",T=[Number(l.r).toString(16).toUpperCase(),Number(l.g).toString(16).toUpperCase(),Number(l.b).toString(16).toUpperCase(),Math.round(Number(l.a)*255).toString(16).toUpperCase()];T.forEach((C,D)=>{C.length===1&&(T[D]="0"+C)});let _=T[0]+T[1]+T[2]+T[3];if(l.a===1&&(_=T[0]+T[1]+T[2]),M(e.box).find(".color-preview").css("background-color","#"+_),M(e.box).find("input").each(C=>{C.name&&(l[C.name]!=null&&(C.value=String(l[C.name])),a[C.name]!=null&&(C.value=String(a[C.name])),C.name==="a"&&(C.value=String(l.a)),C.name=="hex"&&(C.value=_),C.name=="rgb"&&(C.value=w))}),v!=null){let C=e.tmp.initColor||_;M(e.box).find(".color-original").css("background-color","#"+C),M(e.box).find(".tsg-color.tsg-selected").removeClass("tsg-selected"),M(e.box).find(`.tsg-colors [name="${C}"], .tsg-colors [name="${v}"]`).addClass("tsg-selected"),_.length==8&&t.tabClick(2,e.name)}else t.select(_,e.name);g&&(h(),f())}function h(){let b=M(e.box).find(".palette .value1"),g=M(e.box).find(".rainbow .value2"),v=M(e.box).find(".alpha .value2");if(!b[0]||!g[0]||!v[0])return;let w=b[0].clientWidth/2,T=g[0].clientWidth/2;b.css({left:a.s*150/100-w+"px",top:(100-a.v)*125/100-w+"px"}),g.css("left",a.h/(360/150)-T+"px"),v.css("left",l.a*150-T+"px")}function f(){let b=p.hsv2rgb(a.h,100,100),g=`${b.r},${b.g},${b.b}`;M(e.box).find(".palette").css("background-image",`linear-gradient(90deg, rgba(${g},0) 0%, rgba(${g},1) 100%)`)}function m(b){let g=M(this).find(".value1, .value2"),v=g.prop("clientWidth")/2;g.hasClass("move-x")&&g.css({left:b.offsetX-v+"px"}),g.hasClass("move-y")&&g.css({top:b.offsetY-v+"px"}),s={el:g,x:b.pageX,y:b.pageY,width:g.prop("parentNode").clientWidth,height:g.prop("parentNode").clientHeight,left:parseInt(g.css("left")),top:parseInt(g.css("top"))},x(b),M("html").off(".TsColor").on(d,x).on(c,y)}function y(b){M("html").off(".TsColor")}function x(b){let g=s.el,v=b.pageX-s.x,w=b.pageY-s.y,T=s.left+v,_=s.top+w,C=g.prop("clientWidth")/2;T<-C&&(T=-C),_<-C&&(_=-C),T>s.width-C&&(T=s.width-C),_>s.height-C&&(_=s.height-C),g.hasClass("move-x")&&g.css({left:T+"px"}),g.hasClass("move-y")&&g.css({top:_+"px"});let D=M(g.get(0).parentNode).attr("name"),O=parseInt(g.css("left"))+C,I=parseInt(g.css("top"))+C;if(D==="palette"&&u({s:Math.round(O/s.width*100),v:Math.round(100-I/s.height*100)}),D==="rainbow"){let R=Math.round(2.4*O);u({h:R}),f()}D==="alpha"&&u({a:parseFloat(Number(O/150).toFixed(2))})}}addCustomColor(e,s){if(typeof e=="string"&&e.substr(0,1)=="#"&&[7,9].includes(e.length)){e=e.substr(1).toUpperCase();let t=n.custom_colors;t.includes(e)&&t.splice(t.indexOf(e),1),t.length>=5&&t.pop(),t.unshift(e)}return e}async pickAndSelect(e,s){let t=await this.pickColor();if(typeof t=="string"&&t.substr(0,1)=="#"&&[7,9].includes(t.length)){this.addCustomColor(t,e);let i=M(s.target).closest(".tsg-colors-custom");i.html(this.getCustomColorsHTML(e)),p.bindEvents(i.find(".tsg-eaction"),this),this.select(t.substr(1),e)}}async pickAndUse(e){let s=await this.pickColor();if(typeof s=="string"&&s.substr(0,1)=="#"&&[7,9].includes(s.length)){let t=p.rgb2hsv(p.parseColor(s));this.setColor(t,!0)}}async pickColor(){let e=window;if(!e.EyeDropper){console.error("EyeDropper API is not supported in this browser.");return}let s=new e.EyeDropper;try{return(await s.open()).sRGBHex}catch(t){console.error("Error picking color:",t)}return""}},it=class extends oe{constructor(){super(),this.defaults=p.extend({},this.defaults,{type:"normal",items:[],selected:null,render:null,spinner:!1,msgNoItems:p.lang("No items found"),topHTML:"",menuStyle:"",search:!1,filter:!1,match:"contains",markSearch:!1,prefilter:!1,altRows:!1,arrowSize:10,align:"left",position:"bottom|top",class:"tsg-white",anchorClass:"tsg-focus",autoShowOn:"focus",hideOn:["doc-click","focus-change","select"],onSelect:null,onSubMenu:null,onRemove:null,onTooltip:null,onMouseEnter:null,onMouseLeave:null})}attach(e,s){let t;arguments.length==1&&e instanceof Object?(t=e,e=t.anchor):arguments.length===2&&s!=null&&typeof s=="object"&&(t=s,t.anchor=e);let i=t.hideOn;t=p.extend({},this.defaults,t||{}),i&&(t.hideOn=i),t.style+="; padding: 0;",t.items==null&&(t.items=[]),t.cacheMax<=0&&console.log(`The option "cacheMax" is ${t.cacheMax} but should be more than 0`),t.items=p.normMenu(t.items,t),t.html=this.getMenuHTML(t);let o=super.attach(t),l=o.overlay;return l.on("show:after.attach, update:after.attach",a=>{if(o.overlay?.box){let r="";l.selected=l.options.selected;let c=l.anchor.dataset?.selectedIndex;(l.options.selected!==!1&&l.options.selected!==-1||c!=null)&&["INPUT","TEXTAREA"].includes(l.anchor.tagName)&&(r=l.anchor.value,l.selected=null,c!=null&&(l.selected=c));let d=M(o.overlay.box).find(".tsg-eaction");["INPUT","TEXTAREA"].includes(l.anchor.tagName)&&(l.tmp._new_search=!1,M(l.anchor).on("input.search-trigger",()=>{l.tmp._new_search=!0,M(l.anchor).off("input.search-trigger")})),p.bindEvents(d,this),this.applyFilter(l.name,null,r,void 0).then(u=>{oe.active[l.name]?.displayed&&(this.getActiveChain(l.name,t.items),l.tmp.searchCount=u.count,l.tmp.search=u.search,(t.prefilter||r!=="")&&((u.count===0||!this.getActiveChain(l.name,t.items).includes(l.selected))&&(l.selected=null),this.refreshSearch(l.name)),this.initControls(o.overlay),this.refreshIndex(l.name,!0))})}}),l.next=()=>{let a=this.getActiveChain(l.name);if(l.selected==null||String(l.selected).length==0)l.selected=a[0];else{let r=a.indexOf(String(l.selected));r==-1&&(l.selected=a[0]),r<a.length-1&&(l.selected=a[r+1])}this.refreshIndex(l.name),this.showTooltip(l.name)},l.prev=()=>{let a=this.getActiveChain(l.name);if(l.selected==null||String(l.selected).length==0)l.selected=a[a.length-1];else{let r=a.indexOf(String(l.selected));r==-1&&(l.selected=a[a.length-1]),r>0&&(l.selected=a[r-1])}this.refreshIndex(l.name),this.showTooltip(l.name)},l.click=()=>{M(l.box).find(".tsg-selected").each(a=>{a.click()})},l.on("hide:after.attach",a=>{W.hide(l.name+"-tooltip")}),o.select=a=>(l.on("select.attach",r=>{a(r)}),o),o.remove=a=>(l.on("remove.attach",r=>{a(r)}),o),o.subMenu=a=>(l.on("subMenu.attach",r=>{a(r)}),o),o}update(e,s){let t=oe.active[e];if(t){let i=t.options;i.items!=s&&(i.items=s);let o=this.getMenuHTML(i);i.html!=o&&(i.html=o,t.needsUpdate=!0,this.show(e))}else console.log(`Tooltip "${e}" is not displayed. Cannot update it.`)}initControls(e){let s="mousedown",t="click";p.isMobile&&(s="touchstart",t="touchend"),M(e.box).find(".tsg-menu:not(.tsg-sub-menu)").off(".TsMenu").on("contextmenu.TsMenu",i=>{i.preventDefault()}).on(`${s}.TsMenu`,{delegate:".tsg-menu-item"},i=>{let o=i.delegate.dataset,l=M(i.delegate).closest(".tsg-menu").data("parents");this.menuDown(e,i,o.index,l),p.isMobile&&i.preventDefault()}).on(`${t}.TsMenu`,{delegate:".tsg-menu-item"},i=>{let o=i.delegate.dataset,l=M(i.delegate).closest(".tsg-menu").data("parents");this.menuClick(e,i,parseInt(o.index??"0"),l)}).find(".tsg-menu-item").off(".TsMenu").on("mouseEnter.TsMenu",i=>{let o=i.target.dataset,l=e.options.items[o.index??""],a=this.trigger("mouseEnter",{overlay:e,item:l,originalEvent:i});if(a.isCancelled)return;let r=l?.tooltip;r&&o.hassubmenu!="yes"&&this.showTooltip(e.name,{tooltip:r,anchor:i.target});let c=M(i.target).closest(".tsg-menu").get(0);if(c._evt&&c._evt.target!=i.target&&this.closeSubMenu(c._evt),o.hassubmenu=="yes"){let d={index:parseInt(o.index??"0"),parents:c.dataset.parents!==""?c.dataset.parents.split("-").map(u=>parseInt(u)):[],target:i.target,originalEvent:i,overlay:e};c._evt=d,this.openSubMenu(d)}a.finish()}).on("mouseLeave.TsMenu",i=>{let o=i.target.dataset,l=e.options.items[o.index??""],a=this.trigger("mouseLeave",{overlay:e,item:l,originalEvent:i});a.isCancelled||(W.hide(e.name+"-tooltip"),a.finish())}).find(".menu-help").off(".TsMenu").on("mouseEnter.TsMenu",i=>{let l=i.target.parentNode?.parentNode,a=e.options.items[l.dataset?.index]?.help;a&&W.show({name:e.name+"-help-tp",anchor:i.target,html:a,position:"right|left",hideOn:["doc-click"]})}).on("mouseLeave.TsMenu",i=>{W.hide(e.name+"-help-tp")}),["INPUT","TEXTAREA"].includes(e.anchor.tagName)&&M(e.anchor).off(".TsMenu").on("input.TsMenu",i=>{}).on("keyup.TsMenu",i=>{i._searchType="filter",this.keyUp(e,i)}),e.options.search&&M(e.box).find("#menu-search").off(".TsMenu").on("keyup.TsMenu",i=>{i._searchType="search",this.keyUp(e,i)})}getCurrent(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")],i=t.options,o=String(s||t.selected||"").split("-");o?.[0]===""&&o.shift();let l=o.length-1,a=o[l],r=o.slice(0,o.length-1).join("-");a=p.isInt(a)?parseInt(a):0;let c=i.items;return o.forEach((d,u)=>{u<o.length-1&&(c=c[d].items)}),{last:l,index:a,items:c,item:c?.[a],parents:r}}getMenuHTML(e){if(e.spinner)return`
140
+ </div>`,t}initControls(e){let s,t=this,i=e.options,o=i.color||e.tmp.initColor,l=p.parseColor(o);l==null&&(l={r:140,g:150,b:160,a:1});let a=p.rgb2hsv(l);i.advanced===!0&&this.tabClick(2,e.name),u(a,!0,o??""),M(e.box).off(".TsColor").on("contextmenu.TsColor",b=>{b.preventDefault()}).find("input").off(".TsColor").on("change.TsColor",b=>{let g=M(b.target),v=parseFloat(g.val()),w=parseFloat(g.attr("max"));isNaN(v)&&(v=0,g.val(0)),w>1&&(v=parseInt(String(v))),w>0&&v>w&&(g.val(w),v=w),v<0&&(g.val(0),v=0);let T=g.attr("name"),_={};["r","g","b","a"].indexOf(T)!==-1?(l[T]=v,a=p.rgb2hsv(l)):["h","s","v"].indexOf(T)!==-1&&(_[T]=v),u(_,!0)}),M(e.box).find(".color-original").off(".TsColor").on("click.TsColor",b=>{let g=p.parseColor(M(b.target).css("background-color"));g!=null&&(l=g,a=p.rgb2hsv(l),u(a,!0))});let r=`${p.isMobile?"touchstart":"mousedown"}.TsColor`,c=`${p.isMobile?"touchend":"mouseup"}.TsColor`,d=`${p.isMobile?"touchmove":"mousemove"}.TsColor`;M(e.box).find(".palette, .rainbow, .alpha").off(".TsColor").on(`${r}.TsColor`,m),this.setColor=u;return;function u(b,g,v){b.h!=null&&(a.h=b.h),b.s!=null&&(a.s=b.s),b.v!=null&&(a.v=b.v),b.a!=null&&(l.a=b.a,a.a=b.a),l=p.hsv2rgb(a);let w="rgba("+l.r+","+l.g+","+l.b+","+l.a+")",T=[Number(l.r).toString(16).toUpperCase(),Number(l.g).toString(16).toUpperCase(),Number(l.b).toString(16).toUpperCase(),Math.round(Number(l.a)*255).toString(16).toUpperCase()];T.forEach((C,D)=>{C.length===1&&(T[D]="0"+C)});let _=T[0]+T[1]+T[2]+T[3];if(l.a===1&&(_=T[0]+T[1]+T[2]),M(e.box).find(".color-preview").css("background-color","#"+_),M(e.box).find("input").each(C=>{C.name&&(l[C.name]!=null&&(C.value=String(l[C.name])),a[C.name]!=null&&(C.value=String(a[C.name])),C.name==="a"&&(C.value=String(l.a)),C.name=="hex"&&(C.value=_),C.name=="rgb"&&(C.value=w))}),v!=null){let C=e.tmp.initColor||_;M(e.box).find(".color-original").css("background-color","#"+C),M(e.box).find(".tsg-color.tsg-selected").removeClass("tsg-selected"),M(e.box).find(`.tsg-colors [name="${C}"], .tsg-colors [name="${v}"]`).addClass("tsg-selected"),_.length==8&&t.tabClick(2,e.name)}else t.select(_,e.name);g&&(h(),f())}function h(){let b=M(e.box).find(".palette .value1"),g=M(e.box).find(".rainbow .value2"),v=M(e.box).find(".alpha .value2");if(!b[0]||!g[0]||!v[0])return;let w=b[0].clientWidth/2,T=g[0].clientWidth/2;b.css({left:a.s*150/100-w+"px",top:(100-a.v)*125/100-w+"px"}),g.css("left",a.h/(360/150)-T+"px"),v.css("left",l.a*150-T+"px")}function f(){let b=p.hsv2rgb(a.h,100,100),g=`${b.r},${b.g},${b.b}`;M(e.box).find(".palette").css("background-image",`linear-gradient(90deg, rgba(${g},0) 0%, rgba(${g},1) 100%)`)}function m(b){let g=M(this).find(".value1, .value2"),v=g.prop("clientWidth")/2;g.hasClass("move-x")&&g.css({left:b.offsetX-v+"px"}),g.hasClass("move-y")&&g.css({top:b.offsetY-v+"px"}),s={el:g,x:b.pageX,y:b.pageY,width:g.prop("parentNode").clientWidth,height:g.prop("parentNode").clientHeight,left:parseInt(g.css("left")),top:parseInt(g.css("top"))},x(b),M("html").off(".TsColor").on(d,x).on(c,y)}function y(b){M("html").off(".TsColor")}function x(b){let g=s.el,v=b.pageX-s.x,w=b.pageY-s.y,T=s.left+v,_=s.top+w,C=g.prop("clientWidth")/2;T<-C&&(T=-C),_<-C&&(_=-C),T>s.width-C&&(T=s.width-C),_>s.height-C&&(_=s.height-C),g.hasClass("move-x")&&g.css({left:T+"px"}),g.hasClass("move-y")&&g.css({top:_+"px"});let D=M(g.get(0).parentNode).attr("name"),O=parseInt(g.css("left"))+C,I=parseInt(g.css("top"))+C;if(D==="palette"&&u({s:Math.round(O/s.width*100),v:Math.round(100-I/s.height*100)}),D==="rainbow"){let R=Math.round(2.4*O);u({h:R}),f()}D==="alpha"&&u({a:parseFloat(Number(O/150).toFixed(2))})}}addCustomColor(e,s){if(typeof e=="string"&&e.substr(0,1)=="#"&&[7,9].includes(e.length)){e=e.substr(1).toUpperCase();let t=n.custom_colors;t.includes(e)&&t.splice(t.indexOf(e),1),t.length>=5&&t.pop(),t.unshift(e)}return e}async pickAndSelect(e,s){let t=await this.pickColor();if(typeof t=="string"&&t.substr(0,1)=="#"&&[7,9].includes(t.length)){this.addCustomColor(t,e);let i=M(s.target).closest(".tsg-colors-custom");i.html(this.getCustomColorsHTML(e)),p.bindEvents(i.find(".tsg-eaction"),this),this.select(t.substr(1),e)}}async pickAndUse(e){let s=await this.pickColor();if(typeof s=="string"&&s.substr(0,1)=="#"&&[7,9].includes(s.length)){let t=p.rgb2hsv(p.parseColor(s));this.setColor(t,!0)}}async pickColor(){let e=window;if(!e.EyeDropper){console.error("EyeDropper API is not supported in this browser.");return}let s=new e.EyeDropper;try{return(await s.open()).sRGBHex}catch(t){console.error("Error picking color:",t)}return""}},it=class extends oe{constructor(){super(),this.defaults=p.extend({},this.defaults,{type:"normal",items:[],selected:null,render:null,spinner:!1,msgNoItems:p.lang("No items found"),topHTML:"",menuStyle:"",search:!1,filter:!1,match:"contains",markSearch:!1,prefilter:!1,altRows:!1,arrowSize:10,align:"left",position:"bottom|top",class:"tsg-white",anchorClass:"tsg-focus",autoShowOn:"focus",hideOn:["doc-click","focus-change","select"],onSelect:null,onSubMenu:null,onRemove:null,onTooltip:null,onMouseEnter:null,onMouseLeave:null})}attach(e,s){let t;arguments.length==1&&e instanceof Object?(t=e,e=t.anchor):arguments.length===2&&s!=null&&typeof s=="object"&&(t=s,t.anchor=e);let i=t.hideOn;t=p.extend({},this.defaults,t||{}),i&&(t.hideOn=i),t.style+="; padding: 0;",t.items==null&&(t.items=[]),t.cacheMax<=0&&console.log(`The option "cacheMax" is ${t.cacheMax} but should be more than 0`),t.items=p.normMenu(t.items,t),t.html=this.getMenuHTML(t);let o=super.attach(t),l=o.overlay;return l.on("show:after.attach, update:after.attach",a=>{if(o.overlay?.box){let r="";l.selected=l.options.selected;let c=l.anchor.dataset?.selectedIndex;(l.options.selected!==!1&&l.options.selected!==-1||c!=null)&&["INPUT","TEXTAREA"].includes(l.anchor.tagName)&&(r=l.anchor.value,l.selected=null,c!=null&&(l.selected=c));let d=M(o.overlay.box).find(".tsg-eaction");["INPUT","TEXTAREA"].includes(l.anchor.tagName)&&(l.tmp._new_search=!1,M(l.anchor).on("input.search-trigger",()=>{l.tmp._new_search=!0,M(l.anchor).off("input.search-trigger")})),p.bindEvents(d,this),this.applyFilter(l.name,null,r,void 0).then(u=>{oe.active[l.name]?.displayed&&(this.getActiveChain(l.name,t.items),l.tmp.searchCount=u.count,l.tmp.search=u.search,(t.prefilter||r!=="")&&((u.count===0||!this.getActiveChain(l.name,t.items).includes(l.selected))&&(l.selected=null),this.refreshSearch(l.name)),this.initControls(o.overlay),this.refreshIndex(l.name,!0))})}}),l.next=()=>{let a=this.getActiveChain(l.name);if(l.selected==null||String(l.selected).length==0)l.selected=a[0];else{let r=a.indexOf(String(l.selected));r==-1&&(l.selected=a[0]),r<a.length-1&&(l.selected=a[r+1])}this.refreshIndex(l.name),this.showTooltip(l.name)},l.prev=()=>{let a=this.getActiveChain(l.name);if(l.selected==null||String(l.selected).length==0)l.selected=a[a.length-1];else{let r=a.indexOf(String(l.selected));r==-1&&(l.selected=a[a.length-1]),r>0&&(l.selected=a[r-1])}this.refreshIndex(l.name),this.showTooltip(l.name)},l.click=()=>{M(l.box).find(".tsg-selected").each(a=>{a.click()})},l.on("hide:after.attach",a=>{G.hide(l.name+"-tooltip")}),o.select=a=>(l.on("select.attach",r=>{a(r)}),o),o.remove=a=>(l.on("remove.attach",r=>{a(r)}),o),o.subMenu=a=>(l.on("subMenu.attach",r=>{a(r)}),o),o}update(e,s){let t=oe.active[e];if(t){let i=t.options;i.items!=s&&(i.items=s);let o=this.getMenuHTML(i);i.html!=o&&(i.html=o,t.needsUpdate=!0,this.show(e))}else console.log(`Tooltip "${e}" is not displayed. Cannot update it.`)}initControls(e){let s="mousedown",t="click";p.isMobile&&(s="touchstart",t="touchend"),M(e.box).find(".tsg-menu:not(.tsg-sub-menu)").off(".TsMenu").on("contextmenu.TsMenu",i=>{i.preventDefault()}).on(`${s}.TsMenu`,{delegate:".tsg-menu-item"},i=>{let o=i.delegate.dataset,l=M(i.delegate).closest(".tsg-menu").data("parents");this.menuDown(e,i,o.index,l),p.isMobile&&i.preventDefault()}).on(`${t}.TsMenu`,{delegate:".tsg-menu-item"},i=>{let o=i.delegate.dataset,l=M(i.delegate).closest(".tsg-menu").data("parents");this.menuClick(e,i,parseInt(o.index??"0"),l)}).find(".tsg-menu-item").off(".TsMenu").on("mouseEnter.TsMenu",i=>{let o=i.target.dataset,l=e.options.items[o.index??""],a=this.trigger("mouseEnter",{overlay:e,item:l,originalEvent:i});if(a.isCancelled)return;let r=l?.tooltip;r&&o.hassubmenu!="yes"&&this.showTooltip(e.name,{tooltip:r,anchor:i.target});let c=M(i.target).closest(".tsg-menu").get(0);if(c._evt&&c._evt.target!=i.target&&this.closeSubMenu(c._evt),o.hassubmenu=="yes"){let d={index:parseInt(o.index??"0"),parents:c.dataset.parents!==""?c.dataset.parents.split("-").map(u=>parseInt(u)):[],target:i.target,originalEvent:i,overlay:e};c._evt=d,this.openSubMenu(d)}a.finish()}).on("mouseLeave.TsMenu",i=>{let o=i.target.dataset,l=e.options.items[o.index??""],a=this.trigger("mouseLeave",{overlay:e,item:l,originalEvent:i});a.isCancelled||(G.hide(e.name+"-tooltip"),a.finish())}).find(".menu-help").off(".TsMenu").on("mouseEnter.TsMenu",i=>{let l=i.target.parentNode?.parentNode,a=e.options.items[l.dataset?.index]?.help;a&&G.show({name:e.name+"-help-tp",anchor:i.target,html:a,position:"right|left",hideOn:["doc-click"]})}).on("mouseLeave.TsMenu",i=>{G.hide(e.name+"-help-tp")}),["INPUT","TEXTAREA"].includes(e.anchor.tagName)&&M(e.anchor).off(".TsMenu").on("input.TsMenu",i=>{}).on("keyup.TsMenu",i=>{i._searchType="filter",this.keyUp(e,i)}),e.options.search&&M(e.box).find("#menu-search").off(".TsMenu").on("keyup.TsMenu",i=>{i._searchType="search",this.keyUp(e,i)})}getCurrent(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")],i=t.options,o=String(s||t.selected||"").split("-");o?.[0]===""&&o.shift();let l=o.length-1,a=o[l],r=o.slice(0,o.length-1).join("-");a=p.isInt(a)?parseInt(a):0;let c=i.items;return o.forEach((d,u)=>{u<o.length-1&&(c=c[d].items)}),{last:l,index:a,items:c,item:c?.[a],parents:r}}getMenuHTML(e){if(e.spinner)return`
141
141
  <div class="tsg-menu">
142
142
  <div class="tsg-no-items">
143
143
  <div class="tsg-spinner"></div>
@@ -164,7 +164,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
164
164
  </div>`}}t[c]=r}),i===0&&e.msgNoItems){let c=oe.active[e.name.replace(/[\s\.#]/g,"_")]?.tmp.remote,d=e.msgNoItems;e.url&&(i==0&&c?.hasMore===!1?d=e.msgNoItems:d=e.msgSearch),a+=`
165
165
  <div class="tsg-no-items">
166
166
  ${p.lang(d)}
167
- </div>`}return a+="</div>",a}openSubMenu(e){let s=M(e.originalEvent.target).get(0),{overlay:t}=e,{items:i}=t.options,o=i[e.index],l=[];typeof o.items=="function"?l=o.items(o):Array.isArray(o.items)&&(l=o.items);let a=ie.get(t.name+"-submenu");a&&a.hide(),M(e.target).addClass("expanded"),ie.show({name:t.name+"-submenu",anchor:s,items:l,class:t.options.class+" "+o.overlay?.class,offsetX:-7,arrowSize:0,parentOverlay:t,parents:[...e.parents,e.index],position:"right|left",hideOn:["doc-click","select"]}).hide(r=>{M(e.target).removeClass("expanded")}),setTimeout(()=>{M("#w2overlay-"+t.name+"-submenu").on("mouseenter",r=>{r.target._keepSubOpen=!0}).on("mouseleave",r=>{r.target._keepSubOpen=!1})},10)}closeSubMenu(e){let{overlay:s}=e;if(e.target._keepSubOpen!==!0){let t=ie.get(s.name+"-submenu");t&&t.hide()}}refreshIndex(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")];if(!t)return;t.displayed||this.show(t.name);let i=M(t.box).find(".tsg-overlay-body").get(0),o=M(t.box).find(".tsg-menu-search, .tsg-menu-top").get(0);M(t.box).find(".tsg-menu-item.tsg-selected").removeClass("tsg-selected");let l=M(t.box).find(`.tsg-menu-item[index="${t.selected}"]`).addClass("tsg-selected").get(0);l&&(l.offsetTop+l.clientHeight>i.clientHeight+i.scrollTop&&l.scrollIntoView({behavior:s?"instant":"smooth",block:s?"center":"start",inline:s?"center":"start"}),l.offsetTop<i.scrollTop+(o?o.clientHeight:0)&&l.scrollIntoView({behavior:s?"instant":"smooth",block:s?"center":"end",inline:s?"center":"end"})),W.hide(t.name+"-tooltip")}showTooltip(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")];if(!t||!t.displayed)return;let i=s?.anchor??M(t.box).find(`.tsg-menu-item[index="${t.selected}"]`).get(0),o=s?.tooltip??(t.selected!=null?t.options.items?.[t.selected]?.tooltip:void 0);if(o){let l=o.html??o;W.show(Object.assign({name:t.name+"-tooltip",anchor:i,html:l,position:"right|left",hideOn:["doc-click"],onShow(a){t.self.trigger("tooltip",{overlay:t,action:"show",originalEvent:a})},onHide(a){t.self.trigger("tooltip",{overlay:t,action:"hide",originalEvent:a})}},typeof o=="object"&&o!=null?o:{}))}}refreshSearch(e){let s=oe.active[e.replace(/[\s\.#]/g,"_")];s&&(s.displayed||this.show(s.name),W.hide(s.name+"-tooltip"),M(s.box).find(".tsg-no-items").hide(),M(s.box).find(".tsg-menu-item, .tsg-menu-divider").each(t=>{if(this.getCurrent(e,t.getAttribute("index")).item?.hidden)M(t).hide();else{let o=s.tmp?.search;s.options.markSearch&&p.marker(t,o,{onlyFirst:s.options.match=="begins"}),M(t).show()}}),M(s.box).find(".tsg-sub-menu").each(t=>{let i=M(t).find(".tsg-menu-item").get().some(l=>l.style.display!="none");this.getCurrent(e,t.dataset?.parent).item.expanded&&(i?M(t).parent().show():M(t).parent().hide())}),(s.tmp.searchCount==0||(s.options?.items?.length??0)==0)&&(M(s.box).find(".tsg-no-items").length==0&&M(s.box).find(".tsg-menu:not(.tsg-sub-menu)").append(`
167
+ </div>`}return a+="</div>",a}openSubMenu(e){let s=M(e.originalEvent.target).get(0),{overlay:t}=e,{items:i}=t.options,o=i[e.index],l=[];typeof o.items=="function"?l=o.items(o):Array.isArray(o.items)&&(l=o.items);let a=ie.get(t.name+"-submenu");a&&a.hide(),M(e.target).addClass("expanded"),ie.show({name:t.name+"-submenu",anchor:s,items:l,class:t.options.class+" "+o.overlay?.class,offsetX:-7,arrowSize:0,parentOverlay:t,parents:[...e.parents,e.index],position:"right|left",hideOn:["doc-click","select"]}).hide(r=>{M(e.target).removeClass("expanded")}),setTimeout(()=>{M("#w2overlay-"+t.name+"-submenu").on("mouseenter",r=>{r.target._keepSubOpen=!0}).on("mouseleave",r=>{r.target._keepSubOpen=!1})},10)}closeSubMenu(e){let{overlay:s}=e;if(e.target._keepSubOpen!==!0){let t=ie.get(s.name+"-submenu");t&&t.hide()}}refreshIndex(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")];if(!t)return;t.displayed||this.show(t.name);let i=M(t.box).find(".tsg-overlay-body").get(0),o=M(t.box).find(".tsg-menu-search, .tsg-menu-top").get(0);M(t.box).find(".tsg-menu-item.tsg-selected").removeClass("tsg-selected");let l=M(t.box).find(`.tsg-menu-item[index="${t.selected}"]`).addClass("tsg-selected").get(0);l&&(l.offsetTop+l.clientHeight>i.clientHeight+i.scrollTop&&l.scrollIntoView({behavior:s?"instant":"smooth",block:s?"center":"start",inline:s?"center":"start"}),l.offsetTop<i.scrollTop+(o?o.clientHeight:0)&&l.scrollIntoView({behavior:s?"instant":"smooth",block:s?"center":"end",inline:s?"center":"end"})),G.hide(t.name+"-tooltip")}showTooltip(e,s){let t=oe.active[e.replace(/[\s\.#]/g,"_")];if(!t||!t.displayed)return;let i=s?.anchor??M(t.box).find(`.tsg-menu-item[index="${t.selected}"]`).get(0),o=s?.tooltip??(t.selected!=null?t.options.items?.[t.selected]?.tooltip:void 0);if(o){let l=o.html??o;G.show(Object.assign({name:t.name+"-tooltip",anchor:i,html:l,position:"right|left",hideOn:["doc-click"],onShow(a){t.self.trigger("tooltip",{overlay:t,action:"show",originalEvent:a})},onHide(a){t.self.trigger("tooltip",{overlay:t,action:"hide",originalEvent:a})}},typeof o=="object"&&o!=null?o:{}))}}refreshSearch(e){let s=oe.active[e.replace(/[\s\.#]/g,"_")];s&&(s.displayed||this.show(s.name),G.hide(s.name+"-tooltip"),M(s.box).find(".tsg-no-items").hide(),M(s.box).find(".tsg-menu-item, .tsg-menu-divider").each(t=>{if(this.getCurrent(e,t.getAttribute("index")).item?.hidden)M(t).hide();else{let o=s.tmp?.search;s.options.markSearch&&p.marker(t,o,{onlyFirst:s.options.match=="begins"}),M(t).show()}}),M(s.box).find(".tsg-sub-menu").each(t=>{let i=M(t).find(".tsg-menu-item").get().some(l=>l.style.display!="none");this.getCurrent(e,t.dataset?.parent).item.expanded&&(i?M(t).parent().show():M(t).parent().hide())}),(s.tmp.searchCount==0||(s.options?.items?.length??0)==0)&&(M(s.box).find(".tsg-no-items").length==0&&M(s.box).find(".tsg-menu:not(.tsg-sub-menu)").append(`
168
168
  <div class="tsg-no-items">
169
169
  ${p.lang(s.options.msgNoItems)}
170
170
  </div>`),M(s.box).find(".tsg-no-items").show()))}applyFilter(e,s,t,i){let o=0,l=oe.active[e.replace(/[\s\.#]/g,"_")],a=l.options,r,c,d=new Promise((m,y)=>{r=m,c=y});if(l.tmp._skip_filter===!0)return d;t==null&&(["INPUT","TEXTAREA"].includes(l.anchor.tagName)?t=l.anchor.value:t=""),l.tmp._new_search===!1&&(t="");let u=[];a.selected&&(Array.isArray(a.selected)?u=a.selected.map(m=>m?.id??m):a.selected?.id&&(u=[a.selected.id])),l.tmp.activeChain=null;let h=l.tmp.remote??{hasMore:!0,emptySet:!1,search:null,cached:-1};if(h.hasMore==!1){let m=h.hasMore_search.length;t.substr(0,m)!=h.hasMore_search&&(h.hasMore=!0)}if(s==null&&a.url&&h.hasMore&&h.search!==t){let m=!0,y=p.lang("Loading...");return t.length<(a.minLength??0)&&h.emptySet!==!0&&(y=p.lang("${count} letters or more...",{count:String(a.minLength)}),m=!1,t===""&&(y=p.lang(a.msgSearch)),(a.items?.length??0)>0&&(this.update(e,[]),this.applyFilter(e,null,t))),M(l.box).find(".tsg-no-items").html(y),h.search=t,a.items=[],l.tmp.remote=h,m&&this.request(l,t,i).then(x=>{l.tmp._skip_filter=!0,this.update(e,x),delete l.tmp._skip_filter,l.tmp._new_search=!0,this.applyFilter(e,x,t).then(b=>{this.getActiveChain(l.name,a.items),l.tmp.searchCount=b.count,l.tmp.search=b.search,(a.prefilter||t!=="")&&((b.count===0||!this.getActiveChain(l.name,a.items).includes(l.selected))&&(l.selected=null),this.refreshSearch(l.name)),this.initControls(l),this.refreshIndex(l.name,!0),r(b)})}).catch(x=>{console.log("Server Request error",x)}),d}let f;return s==null&&(f=this.trigger("search",{search:t,overlay:l,prom:d,resolve:r,reject:c}),f.isCancelled===!0)?d:(s==null&&(s=l.options.items),a.filter===!1?(r({count:-1,search:t}),d):(s.forEach(m=>{if(a.match=="regex")try{new RegExp(t,"i").test(m.text)||m.text==="..."?m.hidden=!1:m.hidden=!0}catch{}else{let y="",x="";["is","begins","begins with"].indexOf(a.match??"")!==-1&&(y="^"),["is","ends","ends with"].indexOf(a.match??"")!==-1&&(x="$");try{new RegExp(y+t+x,"i").test(m.text)||m.text==="..."?m.hidden=!1:m.hidden=!0}catch{}}a.hideSelected&&u.includes(m.id)&&(m.hidden=!0),Array.isArray(m.items)&&m.items.length>0&&(delete m._noSearchInside,this.applyFilter(e,m.items,t).then(y=>{let x=y.count;x>0&&(o+=x,m.hidden&&(m._noSearchInside=!0),t&&(m.expanded=!0),m.hidden=!1)})),m.hidden!==!0&&o++}),r({count:o,search:t}),f?.finish(),d))}request(e,s,t){let i=e.options,o=e.tmp.remote,l,a;return(i.items.length===0&&o.cached!==0||o.cached==i.cacheMax&&s.length>o.search.length||s.length>=o.search.length&&s.substr(0,o.search.length)!==o.search||s.length<o.search.length)&&(o.controller&&o.controller.abort(),o.loading=!0,clearTimeout(o.timeout),o.timeout=setTimeout(()=>{let r=i.url,c={search:s,max:i.cacheMax};Object.assign(c,i.postData);let d=this.trigger("request",{search:s,overlay:e,url:r,postData:c,httpMethod:i.method??"GET",httpHeaders:{}});if(d.isCancelled===!0)return;let u=d.detail;r=new URL(u.url,location.href);let h=p.prepareParams(r,{method:u.httpMethod,headers:u.httpHeaders,body:u.postData},{caller:this,overlay:e,search:s});o.controller=new AbortController,h.signal=o.controller.signal,fetch(r,h).then(f=>f.json()).then(f=>{o.controller=null;let m=e.trigger("load",{search:c.search,overlay:e,data:f});if(m.isCancelled!==!0){if(f=m.detail.data,typeof f=="string"&&(f=JSON.parse(f)),Array.isArray(f)&&(f={records:f}),f.records==null&&f.items!=null&&(f.records=f.items,delete f.items),!f.error&&f.records==null&&(f.records=[]),!Array.isArray(f.records)){console.error("ERROR: server did not return proper JSON data structure",`
@@ -209,7 +209,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
209
209
  <div class="tsg-cal-column">${o[2]}</div>
210
210
  </div>
211
211
  ${s.btnNow?`<div class="tsg-cal-now">${p.lang("Now")}</div>`:""}
212
- </div>`}}inRange(e,s,t){let i=!1;if(s.type==="date"){let o=p.isDate(e,s.format,!0);if(o){if(s.start||s.end){let l=typeof s.start=="string"?s.start:M(s.start).val(),a=typeof s.end=="string"?s.end:M(s.end).val(),r=p.isDate(l,s.format,!0),c=p.isDate(a,s.format,!0),d=o instanceof Date?o:new Date,u=new Date(d);r||(r=u),c||(c=u),u>=r&&u<=c&&(i=!0)}else i=!0;Array.isArray(s.blockDates)&&s.blockDates.includes(e)&&(i=!1),Array.isArray(s.blockWeekdays)&&s.blockWeekdays.includes((o instanceof Date?o:new Date).getDay())&&(i=!1)}}else if(s.type==="time")if(s.start||s.end){let o=this.str2min(e)??0,l=this.str2min(s.start)??o,a=this.str2min(s.end)??o;l||(l=o),a||(a=o),o>=l&&o<=a&&(i=!0)}else i=!0;else if(s.type==="datetime"){let o=p.isDateTime(e,s.format,!0);if(o){let l=s.format.split("|").map(a=>a.trim());if(t){let a=p.formatDate(o,l[0]),r=p.extend({},s,{type:"date",format:l[0]});this.inRange(a,r)&&(i=!0)}else{let a=p.formatTime(o,l[1]),r={type:"time",format:l[1],start:s.startTime,end:s.endTime};this.inRange(a,r)&&(i=!0)}}}return i}str2min(e){if(typeof e!="string")return null;let s=e.split(":");if(s.length===2)s[0]=parseInt(s[0]),s[1]=parseInt(s[1]),e.indexOf("pm")!==-1&&s[0]!==12&&(s[0]+=12),e.includes("am")&&s[0]==12&&(s[0]=0);else return null;return s[0]*60+s[1]}min2str(e,s){let t="";e>=1440&&(e=e%1440),e<0&&(e=1440+e);let i=Math.floor(e/60),o=(e%60<10?"0":"")+e%60;return s||(s=p.settings.timeFormat),s.indexOf("h24")!==-1?t=i+":"+o:t=(i<=12?i:i-12)+":"+o+" "+(i>=12?"pm":"am"),t}},W=new oe,ie=new it,De=new nt,lt=new ot;var Z=j,ye=class extends ne{routeData;items;right;tooltip;item_template;last;_refresh;_refreshDebounced;constructor(e){super(e.name),this.box=null,this.name="",this.routeData={},this.items=[],this.right="",this.tooltip="top|left",this.onClick=null,this.onChange=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onLiveUpdate=null,this.item_template={id:null,type:"button",text:null,html:"",tooltip:null,count:null,hidden:!1,disabled:!1,checked:!1,icon:null,route:null,arrow:null,style:null,group:null,items:null,selected:null,color:null,backColor:null,overlay:{anchorClass:""},onClick:null,onRefresh:null},this.last={badge:{},pendingRefresh:{}},this._refresh=({effected:t,resize:i,refreshTooltip:o})=>{let l=this.last.pendingRefresh;l.ids??=[],l.ids.push(...t),Object.assign(l,{resize:i,refreshTooltip:o}),this._refreshDebounced()},this._refreshDebounced=p.debounce(()=>{let t=this.last.pendingRefresh;new Set(t.ids).forEach(i=>{this.refresh(i),t.hideTooltip&&this.tooltipHide(i)}),t.resize&&this.resize(),this.last.pendingRefresh={}},15);let s=e.items;delete e.items,Object.assign(this,e),Array.isArray(s)&&this.add(s,!0),e.items=s,typeof this.box=="string"&&(this.box=Z(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){this.insert(null,e,s)}insert(e,s,t){Array.isArray(s)||(s=[s]),s.forEach((i,o,l)=>{typeof i=="string"&&(i=l[o]={id:i,text:i});let a=["button","check","radio","drop","menu","menu-radio","menu-check","color","text-color","html","label","input","group","break","spacer","new-line"];if(!a.includes(String(i.type))){console.log('ERROR: The parameter "type" should be one of the following:',a,`, but ${i.type} is supplied.`,i);return}if(i.id==null&&!["break","spacer","new-line"].includes(i.type)){console.log('ERROR: The parameter "id" is required but not supplied.',i);return}if(i.type==null){console.log('ERROR: The parameter "type" is required but not supplied.',i);return}if(!p.checkUniqueId(i.id,this.items,"toolbar",this.name))return;let r=p.extend({},this.item_template,i);if(r.type=="group"&&Array.isArray(r.items)&&r.items.forEach((c,d)=>{r.items[d]=p.extend({},this.item_template,r.items[d])}),r.type=="menu-check"?(Array.isArray(r.selected)||(r.selected=[]),Array.isArray(r.items)&&r.items.forEach(c=>{typeof c=="string"&&(c=l[o]={id:c,text:c}),c.checked&&!r.selected.includes(c.id)&&r.selected.push(c.id),!c.checked&&r.selected.includes(c.id)&&(c.checked=!0),c.checked==null&&(c.checked=!1)})):r.type=="menu-radio"&&Array.isArray(r.items)&&r.items.forEach((c,d,u)=>{typeof c=="string"&&(c=u[d]={id:c,text:c}),c.checked&&r.selected==null?r.selected=c.id:c.checked=!1,!c.checked&&r.selected==c.id&&(c.checked=!0),c.checked==null&&(c.checked=!1)}),e==null)this.items.push(r);else{let c=this.get(e,!0);this.items=this.items.slice(0,c).concat([r],this.items.slice(c))}r.line=r.line??1,t!==!0&&this.refresh(r.id)}),t!==!0&&this.resize()}remove(...e){let s=0;return e.forEach(t=>{let i=this.get(t);if(!i||String(t).indexOf(":")!=-1)return;s++,Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(i.id)).remove();let o=this.get(i.id,!0);o!=null&&this.items.splice(o,1)}),this.resize(),s}set(e,s){let t=this.get(e);return t==null?!1:(Object.assign(t,s),this.refresh(String(e).split(":")[0]),!0)}get(e,s,t){if(arguments.length===0){let o=[];for(let l=0;l<this.items.length;l++){let a=this.items[l];if(a.id!=null&&o.push(a.id),a.type=="group")for(let r=0;r<a.items.length;r++)a.items[r].id!=null&&o.push(a.items[r].id)}return o}let i=String(e).split(":");t==null&&(t=this.items);for(let o=0;o<t.length;o++){let l=t[o];if(["menu","menu-radio","menu-check"].includes(l.type)&&i.length==2&&l.id==i[0]){let a=l.items;typeof a=="function"&&(a=a(this));for(let r=0;r<a.length;r++){let c=a[r];if(c.id==i[1]||c.id==null&&c.text==i[1])return s==!0?r:c;if(Array.isArray(c.items)){for(let d=0;d<c.items.length;d++)if(c.items[d].id==i[1]||c.items[d].id==null&&c.items[d].text==i[1])return s==!0?r:c.items[d]}}}else{if(l.id==i[0])return s==!0?o:l;if(l.type=="group"){let a=this.get(e,s,l.items);if(a!=null)return a}}}return null}setCount(e,s,t,i){let o=Z(this.box).find(`#tb_${this.name}_item_${p.escapeId(e)} .tsg-tb-count > span`);if(o.length>0){o.removeClass(null).addClass(t??"").text(s),o.get(0).style.cssText=i??"",this.last.badge[e]={className:t??"",style:i??""};let l=this.get(e);l.count=s}else this.set(e,{count:s}),this.setCount(e,s,t,i)}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.hidden=!1,s.push(String(t).split(":")[0]),i.type=="group"&&i.items.forEach(o=>this.show(o.id)))}),this._refresh({effected:s,resize:!0}),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.hidden=!0,s.push(String(t).split(":")[0]),i.type=="group"&&i.items.forEach(o=>this.hide(o.id)))}),this._refresh({effected:s,hideTooltip:!0,resize:!0}),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.type=="group"?i.items.forEach(o=>this.enable(o.id)):(i.disabled=!1,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.type=="group"?i.items.forEach(o=>this.disable(o.id)):(i.disabled=!0,s.push(String(t).split(":")[0])))}),this._refresh({effected:s,hideTooltip:!0}),s}check(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||String(t).indexOf(":")!=-1||(i.type=="group"?i.items.forEach(o=>this.check(o.id)):(i.checked=!0,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}uncheck(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||String(t).indexOf(":")!=-1||(["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type)&&i.checked&&W.hide(this.name+"-drop"),i.type=="group"?i.items.forEach(o=>this.uncheck(o.id)):(i.checked=!1,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}click(e,s){let t=String(e).split(":"),i=this.get(t[0]),o=i&&i.items?p.normMenu.call(this,i.items,i):[];if(t.length>1){let l=this.get(e);l&&!l.disabled&&this.menuClick({name:this.name,item:i,subItem:l,originalEvent:s});return}if(i&&!i.disabled){let l=this.trigger("click",{target:e??this.name,item:i,object:i,originalEvent:s});if(l.isCancelled===!0)return;o=i&&i.items?p.normMenu.call(this,i.items,i):[];let a="#tb_"+this.name+"_item_"+p.escapeId(i.id);if(Z(this.box).find(a).removeClass("down"),i.type=="radio"){for(let r=0;r<this.items.length;r++){let c=this.items[r];if(c.type=="group")for(let d=0;d<c.items.length;d++){let u=c.items[d];u==null||u.id==i.id||u.type!=="radio"||u.group==i.group&&u.checked&&(u.checked=!1,this.refresh(u.id))}c==null||c.id==i.id||c.type!=="radio"||c.group==i.group&&c.checked&&(c.checked=!1,this.refresh(c.id))}i.checked=!0,Z(this.box).find(a).addClass("checked")}if(["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type))if(this.tooltipHide(e),i.checked){W.hide(this.name+"-drop");return}else{let r=W.get(this.name+"-drop");r?.displayed&&r.hide(),r?.listeners?.splice(0),setTimeout(()=>{let c=(u,h)=>()=>{this.set(u,{checked:!1})},d=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(i.id));if(p.isPlainObject(i.overlay)||(i.overlay={}),i.type=="drop"&&W.show(p.extend({html:i.html,class:"tsg-white",hideOn:["doc-click"]},i.overlay,{anchor:d[0],name:this.name+"-drop",data:{item:i,btn:a}})).hide(c(i.id,a)),["menu","menu-radio","menu-check"].includes(i.type)){let u="normal";i.type=="menu-radio"&&(u="radio",o?.forEach(h=>{i.selected==h.id?h.checked=!0:h.checked=!1})),i.type=="menu-check"&&(u="check",o?.forEach(h=>{Array.isArray(i.selected)&&i.selected.includes(h.id)?h.checked=!0:h.checked=!1})),ie.show(p.extend({items:o,selected:-1,align:i.text?"left":"none"},i.overlay,{type:u,name:this.name+"-drop",anchor:d[0],data:{item:i,btn:a}})).hide(c(i.id,a)).remove(h=>{this.menuClick({name:this.name,remove:!0,item:i,subItem:h.detail.item,originalEvent:h})}).select(h=>{this.menuClick({name:this.name,item:i,subItem:h.detail.item,originalEvent:h})})}["color","text-color"].includes(i.type)&&De.show(p.extend({color:i.color},i.overlay,{anchor:d[0],name:this.name+"-drop",data:{item:i,btn:a}})).hide(c(i.id,a)).liveUpdate(u=>{this.trigger("liveUpdate",{name:this.name,item:i,color:u.detail.color}).finish()}).select(u=>{u.detail.color!=null&&this.colorClick({name:this.name,item:i,color:u.detail.color})})},0)}if(["check","menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type)&&(i.checked=!i.checked,i.checked?Z(this.box).find(a).addClass("checked"):Z(this.box).find(a).removeClass("checked")),i.route){let r=("/"+i.route).replace(/\/{2,}/g,"/"),c=p.parseRoute(r);if(c.keys.length>0)for(let d=0;d<c.keys.length;d++){let u=c.keys[d];u!=null&&(r=r.replace(new RegExp(":"+u.name,"g"),this.routeData[u.name]))}setTimeout(()=>{window.location.hash=r},1)}this.tooltipShow(e),l.finish()}}scroll(e,s,t){return new Promise((i,o)=>{let l=Z(this.box).find(`.tsg-tb-line:nth-child(${s}) .tsg-scroll-wrapper`),a=l.get(0),r=a.scrollLeft,c=l.find(".tsg-tb-right").get(0),d=l.parent().get(0).getBoundingClientRect().width,u=r+c.offsetLeft+c.clientWidth;switch(e){case"left":{let h=r-d+50;h<=0&&(h=0),a.scrollTo({top:0,left:h,behavior:t?"auto":"smooth"});break}case"right":{let h=r+d-50;h>=u-d&&(h=u-d),a.scrollTo({top:0,left:h,behavior:t?"auto":"smooth"});break}}setTimeout(()=>{this.resize(),i()},t?0:600)})}render(e){let s=Date.now();typeof e=="string"&&(e=Z(e).get(0));let t=this.trigger("render",{target:this.name,box:e??this.box});if(t.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;Array.isArray(this.right)||(this.right=[this.right]);let i="",o=0;for(let l=0;l<this.items.length;l++){let a=this.items[l];a!=null&&(a.id==null&&(a.id="item_"+l),a.caption!=null&&console.log("NOTICE: toolbar item.caption property is deprecated, please use item.text. Item -> ",a),a.hint!=null&&console.log("NOTICE: toolbar item.hint property is deprecated, please use item.tooltip. Item -> ",a),(l===0||a.type=="new-line")&&(o++,i+=`
212
+ </div>`}}inRange(e,s,t){let i=!1;if(s.type==="date"){let o=p.isDate(e,s.format,!0);if(o){if(s.start||s.end){let l=typeof s.start=="string"?s.start:M(s.start).val(),a=typeof s.end=="string"?s.end:M(s.end).val(),r=p.isDate(l,s.format,!0),c=p.isDate(a,s.format,!0),d=o instanceof Date?o:new Date,u=new Date(d);r||(r=u),c||(c=u),u>=r&&u<=c&&(i=!0)}else i=!0;Array.isArray(s.blockDates)&&s.blockDates.includes(e)&&(i=!1),Array.isArray(s.blockWeekdays)&&s.blockWeekdays.includes((o instanceof Date?o:new Date).getDay())&&(i=!1)}}else if(s.type==="time")if(s.start||s.end){let o=this.str2min(e)??0,l=this.str2min(s.start)??o,a=this.str2min(s.end)??o;l||(l=o),a||(a=o),o>=l&&o<=a&&(i=!0)}else i=!0;else if(s.type==="datetime"){let o=p.isDateTime(e,s.format,!0);if(o){let l=s.format.split("|").map(a=>a.trim());if(t){let a=p.formatDate(o,l[0]),r=p.extend({},s,{type:"date",format:l[0]});this.inRange(a,r)&&(i=!0)}else{let a=p.formatTime(o,l[1]),r={type:"time",format:l[1],start:s.startTime,end:s.endTime};this.inRange(a,r)&&(i=!0)}}}return i}str2min(e){if(typeof e!="string")return null;let s=e.split(":");if(s.length===2)s[0]=parseInt(s[0]),s[1]=parseInt(s[1]),e.indexOf("pm")!==-1&&s[0]!==12&&(s[0]+=12),e.includes("am")&&s[0]==12&&(s[0]=0);else return null;return s[0]*60+s[1]}min2str(e,s){let t="";e>=1440&&(e=e%1440),e<0&&(e=1440+e);let i=Math.floor(e/60),o=(e%60<10?"0":"")+e%60;return s||(s=p.settings.timeFormat),s.indexOf("h24")!==-1?t=i+":"+o:t=(i<=12?i:i-12)+":"+o+" "+(i>=12?"pm":"am"),t}},G=new oe,ie=new it,De=new nt,lt=new ot;var Z=j,ye=class extends ne{routeData;items;right;tooltip;item_template;last;_refresh;_refreshDebounced;constructor(e){super(e.name),this.box=null,this.name="",this.routeData={},this.items=[],this.right="",this.tooltip="top|left",this.onClick=null,this.onChange=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onLiveUpdate=null,this.item_template={id:null,type:"button",text:null,html:"",tooltip:null,count:null,hidden:!1,disabled:!1,checked:!1,icon:null,route:null,arrow:null,style:null,group:null,items:null,selected:null,color:null,backColor:null,overlay:{anchorClass:""},onClick:null,onRefresh:null},this.last={badge:{},pendingRefresh:{}},this._refresh=({effected:t,resize:i,refreshTooltip:o,hideTooltip:l})=>{let a=this.last.pendingRefresh;a.ids??=[],a.ids.push(...t),Object.assign(a,{resize:i,refreshTooltip:o,hideTooltip:l}),this._refreshDebounced()},this._refreshDebounced=p.debounce(()=>{let t=this.last.pendingRefresh;new Set(t.ids).forEach(i=>{this.refresh(i),t.hideTooltip&&this.tooltipHide(i)}),t.resize&&this.resize(),this.last.pendingRefresh={}},15);let s=e.items;delete e.items,Object.assign(this,e),Array.isArray(s)&&this.add(s,!0),e.items=s,typeof this.box=="string"&&(this.box=Z(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){this.insert(null,e,s)}insert(e,s,t){Array.isArray(s)||(s=[s]),s.forEach((i,o,l)=>{typeof i=="string"&&(i=l[o]={id:i,text:i});let a=["button","check","radio","drop","menu","menu-radio","menu-check","color","text-color","html","label","input","group","break","spacer","new-line"];if(!a.includes(String(i.type))){console.log('ERROR: The parameter "type" should be one of the following:',a,`, but ${i.type} is supplied.`,i);return}if(i.id==null&&!["break","spacer","new-line"].includes(i.type)){console.log('ERROR: The parameter "id" is required but not supplied.',i);return}if(!p.checkUniqueId(i.id,this.items,"toolbar",this.name))return;let r=p.extend({},this.item_template,i);if(r.type=="group"&&Array.isArray(r.items)&&r.items.forEach((c,d)=>{r.items[d]=p.extend({},this.item_template,r.items[d])}),r.type=="menu-check"){if(Array.isArray(r.selected)||(r.selected=[]),Array.isArray(r.items))r.items.forEach((c,d,u)=>{typeof c=="string"&&(c=u[d]={id:c,text:c}),c.checked&&!r.selected.includes(c.id)&&r.selected.push(c.id),!c.checked&&r.selected.includes(c.id)&&(c.checked=!0),c.checked==null&&(c.checked=!1)});else if(typeof r.items=="function"){let c=r.items(r);Array.isArray(c)&&c.forEach(d=>{d&&d.checked&&!r.selected.includes(d.id)&&r.selected.push(d.id)})}}else r.type=="menu-radio"&&Array.isArray(r.items)&&r.items.forEach((c,d,u)=>{typeof c=="string"&&(c=u[d]={id:c,text:c}),c.checked&&r.selected==null?r.selected=c.id:c.checked=!1,!c.checked&&r.selected==c.id&&(c.checked=!0),c.checked==null&&(c.checked=!1)});if(e==null)this.items.push(r);else{let c=this.get(e,!0);c==null?(console.warn(`TsToolbar: insert anchor id "${e}" not found; appending instead.`),this.items.push(r)):this.items=this.items.slice(0,c).concat([r],this.items.slice(c))}r.line=r.line??1,t!==!0&&this.refresh(r.id)}),t!==!0&&this.resize()}remove(...e){let s=0;return e.forEach(t=>{let i=this.get(t);if(!i||String(t).indexOf(":")!=-1)return;s++,Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(i.id)).remove();let o=this.get(i.id,!0);if(o!=null){let l=this.items[o];if(l.id===i.id)this.items.splice(o,1);else if(l.type==="group"&&Array.isArray(l.items)){let a=l.items.findIndex(r=>r&&r.id===i.id);a!==-1&&l.items.splice(a,1)}}}),this.resize(),s}set(e,s){let t=this.get(e);return t==null?!1:(Object.assign(t,s),this.refresh(String(e).split(":")[0]),!0)}get(e,s,t){if(arguments.length===0){let o=[];for(let l=0;l<this.items.length;l++){let a=this.items[l];if(a.id!=null&&o.push(a.id),a.type=="group")for(let r=0;r<a.items.length;r++)a.items[r].id!=null&&o.push(a.items[r].id)}return o}let i=String(e).split(":");t==null&&(t=this.items);for(let o=0;o<t.length;o++){let l=t[o];if(["menu","menu-radio","menu-check"].includes(l.type)&&i.length==2&&l.id==i[0]){let a=l.items;typeof a=="function"&&(a=a(this));for(let r=0;r<a.length;r++){let c=a[r];if(c.id==i[1]||c.id==null&&c.text==i[1])return s==!0?r:c;if(Array.isArray(c.items)){for(let d=0;d<c.items.length;d++)if(c.items[d].id==i[1]||c.items[d].id==null&&c.items[d].text==i[1])return s==!0?r:c.items[d]}}}else{if(l.id==i[0])return s==!0?o:l;if(l.type=="group"){let a=this.get(e,s,l.items);if(a!=null)return s===!0?o:a}}}return null}setCount(e,s,t,i){let o=Z(this.box).find(`#tb_${this.name}_item_${p.escapeId(e)} .tsg-tb-count > span`);if(o.length>0){o.removeClass(null).addClass(t??"").text(s),o.get(0).style.cssText=i??"",this.last.badge[e]={className:t??"",style:i??""};let l=this.get(e);l.count=s}else{if(this.set(e,{count:s}),Z(this.box).find(`#tb_${this.name}_item_${p.escapeId(e)} .tsg-tb-count > span`).length===0)return;this.setCount(e,s,t,i)}}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.hidden=!1,s.push(String(t).split(":")[0]),i.type=="group"&&i.items.forEach(o=>this.show(o.id)))}),this._refresh({effected:s,resize:!0}),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.hidden=!0,s.push(String(t).split(":")[0]),i.type=="group"&&i.items.forEach(o=>this.hide(o.id)))}),this._refresh({effected:s,hideTooltip:!0,resize:!0}),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.type=="group"?i.items.forEach(o=>this.enable(o.id)):(i.disabled=!1,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i&&(i.type=="group"?i.items.forEach(o=>this.disable(o.id)):(i.disabled=!0,s.push(String(t).split(":")[0])))}),this._refresh({effected:s,hideTooltip:!0}),s}check(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||String(t).indexOf(":")!=-1||(i.type=="group"?i.items.forEach(o=>this.check(o.id)):(i.checked=!0,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}uncheck(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||String(t).indexOf(":")!=-1||(["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type)&&i.checked&&G.hide(this.name+"-drop"),i.type=="group"?i.items.forEach(o=>this.uncheck(o.id)):(i.checked=!1,s.push(String(t).split(":")[0])))}),this._refresh({effected:s}),s}toggle(...e){let s=[];return e.flat().forEach(t=>{let i=this.get(t);if(!i||String(t).indexOf(":")!=-1)return;if(i.type=="radio"){console.warn(`TsToolbar.toggle: radio items are not supported, use check()/uncheck() instead. Item: ${t}`);return}if(i.type=="group"){let l=i.items.map(r=>r.id),a=this.toggle(...l);s.push(...a);return}let o=!i.checked;["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type)&&i.checked&&G.hide(this.name+"-drop"),i.checked=o,s.push(String(t).split(":")[0])}),this._refresh({effected:s}),s}click(e,s){let t=String(e).split(":"),i=this.get(t[0]),o=i&&i.items?p.normMenu.call(this,i.items,i):[];if(t.length>1){let l=this.get(e);l&&!l.disabled&&this.menuClick({name:this.name,item:i,subItem:l,originalEvent:s});return}if(i&&!i.disabled){let l=this.trigger("click",{target:e??this.name,item:i,object:i,originalEvent:s});if(l.isCancelled===!0)return;o=i&&i.items?p.normMenu.call(this,i.items,i):[];let a="#tb_"+this.name+"_item_"+p.escapeId(i.id);if(Z(this.box).find(a).removeClass("down"),i.type=="radio"){for(let r=0;r<this.items.length;r++){let c=this.items[r];if(c.type=="group")for(let d=0;d<c.items.length;d++){let u=c.items[d];u==null||u.id==i.id||u.type!=="radio"||u.group==i.group&&u.checked&&(u.checked=!1,this.refresh(u.id))}c==null||c.id==i.id||c.type!=="radio"||c.group==i.group&&c.checked&&(c.checked=!1,this.refresh(c.id))}i.checked=!0,Z(this.box).find(a).addClass("checked")}if(["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type))if(this.tooltipHide(e),i.checked){G.hide(this.name+"-drop");return}else{let r=G.get(this.name+"-drop");r?.displayed&&r.hide(),r?.listeners?.splice(0),setTimeout(()=>{let c=(u,h)=>()=>{this.set(u,{checked:!1})},d=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(i.id));if(p.isPlainObject(i.overlay)||(i.overlay={}),i.type=="drop"&&G.show(p.extend({html:i.html,class:"tsg-white",hideOn:["doc-click"]},i.overlay,{anchor:d[0],name:this.name+"-drop",data:{item:i,btn:a}})).hide(c(i.id,a)),["menu","menu-radio","menu-check"].includes(i.type)){let u="normal";i.type=="menu-radio"&&(u="radio",o?.forEach(h=>{i.selected==h.id?h.checked=!0:h.checked=!1})),i.type=="menu-check"&&(u="check",o?.forEach(h=>{Array.isArray(i.selected)&&i.selected.includes(h.id)?h.checked=!0:h.checked=!1})),ie.show(p.extend({items:o,selected:-1,align:i.text?"left":"none"},i.overlay,{type:u,name:this.name+"-drop",anchor:d[0],data:{item:i,btn:a}})).hide(c(i.id,a)).remove(h=>{this.menuClick({name:this.name,remove:!0,item:i,subItem:h.detail.item,originalEvent:h})}).select(h=>{this.menuClick({name:this.name,item:i,subItem:h.detail.item,originalEvent:h})})}["color","text-color"].includes(i.type)&&De.show(p.extend({color:i.color},i.overlay,{anchor:d[0],name:this.name+"-drop",data:{item:i,btn:a}})).hide(c(i.id,a)).liveUpdate(u=>{this.trigger("liveUpdate",{name:this.name,item:i,color:u.detail.color}).finish()}).select(u=>{u.detail.color!=null&&this.colorClick({name:this.name,item:i,color:u.detail.color})})},0)}if(["check","menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type)&&(i.checked=!i.checked,i.checked?Z(this.box).find(a).addClass("checked"):Z(this.box).find(a).removeClass("checked")),i.route){let r=("/"+i.route).replace(/\/{2,}/g,"/"),c=p.parseRoute(r);if(c.keys.length>0)for(let d=0;d<c.keys.length;d++){let u=c.keys[d];u!=null&&(r=r.replace(new RegExp(":"+u.name,"g"),this.routeData[u.name]))}setTimeout(()=>{window.location.hash=r},1)}this.tooltipShow(e),l.finish()}}scroll(e,s,t){return new Promise((i,o)=>{let l=Z(this.box).find(`.tsg-tb-line:nth-child(${s}) .tsg-scroll-wrapper`),a=l.get(0),r=a.scrollLeft,c=l.find(".tsg-tb-right").get(0),d=l.parent().get(0).getBoundingClientRect().width,u=r+c.offsetLeft+c.clientWidth;switch(e){case"left":{let h=r-d+50;h<=0&&(h=0),a.scrollTo({top:0,left:h,behavior:t?"auto":"smooth"});break}case"right":{let h=r+d-50;h>=u-d&&(h=u-d),a.scrollTo({top:0,left:h,behavior:t?"auto":"smooth"});break}}setTimeout(()=>{this.resize(),i()},t?0:600)})}render(e){let s=Date.now();typeof e=="string"&&(e=Z(e).get(0));let t=this.trigger("render",{target:this.name,box:e??this.box});if(t.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;Array.isArray(this.right)||(this.right=[this.right]);let i="",o=0;for(let l=0;l<this.items.length;l++){let a=this.items[l];a!=null&&(a.id==null&&(a.id="item_"+l),a.caption!=null&&console.log("NOTICE: toolbar item.caption property is deprecated, please use item.text. Item -> ",a),a.hint!=null&&console.log("NOTICE: toolbar item.hint property is deprecated, please use item.tooltip. Item -> ",a),(l===0||a.type=="new-line")&&(o++,i+=`
213
213
  <div class="tsg-tb-line">
214
214
  <div class="tsg-scroll-wrapper tsg-eaction" data-mousedown="resize">
215
215
  <div class="tsg-tb-right">${this.right[o-1]??""}</div>
@@ -217,7 +217,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
217
217
  <div class="tsg-scroll-left tsg-eaction" data-click='["scroll", "left", "${o}"]'></div>
218
218
  <div class="tsg-scroll-right tsg-eaction" data-click='["scroll", "right", "${o}"]'></div>
219
219
  </div>
220
- `),a.line=o)}return Z(this.box).attr("name",this.name).addClass("tsg-reset tsg-toolbar").html(i),Z(this.box).length>0&&(Z(this.box)[0].style.cssText+=this.style),p.bindEvents(Z(this.box).find(".tsg-tb-line .tsg-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),this.refresh(),this.resize(),t.finish(),Date.now()-s}refresh(e){let s=Date.now(),t=this.trigger("refresh",{target:e??this.name,item:this.get(e)});if(t.isCancelled===!0)return;let i;if(e==null){for(let c=0;c<this.items.length;c++){let d=this.items[c];d.id==null&&(d.id="item_"+c),this.refresh(d.id)}return}let o=this.get(e);if(o==null)return!1;if(typeof o.onRefresh=="function"&&(i=this.trigger("refresh",{target:e,item:o,object:o}),i.isCancelled===!0))return;let l=`#tb_${this.name}_item_${p.escapeId(o.id)}`,a=Z(this.box).find(l),r=this.getItemHTML(o);if(this.tooltipHide(e),o.type=="spacer"&&Z(this.box).find(`.tsg-tb-line:nth-child(${o.line??1})`).find(".tsg-tb-right").css("width","auto"),a.length===0){let c=parseInt(this.get(e,!0))+1,d=Z(this.box).find(`#tb_${this.name}_item_${p.escapeId(this.items[c]?this.items[c].id:"--")}`);d.length==0?d=Z(this.box).find(`.tsg-tb-line:nth-child(${o.line}`).find(".tsg-tb-right").before(r):d.after(r),p.bindEvents(Z(this.box).find(`${l}, ${l} .tsg-eaction`),this)}else{Z(this.box).find(l).replace(j.html(r));let c=Z(this.box).find(l);p.bindEvents(c,this),p.bindEvents(c.find(".tsg-eaction"),this);let d=W.get(!0);d!=null&&Object.keys(d).forEach(u=>{d[u]?.anchor==a.get(0)&&(d[u].anchor=c.get(0))})}if(["menu","menu-radio","menu-check"].includes(o.type)&&o.checked){let c=Array.isArray(o.selected)?o.selected:[o.selected],d=typeof o.items=="function"?o.items(o):[...o.items];d.forEach(u=>{c.includes(u.id)?u.checked=!0:u.checked=!1}),ie.update(this.name+"-drop",d)}return typeof o.onRefresh=="function"&&i.finish(),t.finish(),Date.now()-s}resize(){let e=Date.now(),s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0)return Z(this.box).find(".tsg-tb-line").each(t=>{let i=Z(t);i.find(".tsg-scroll-left, .tsg-scroll-right").hide();let o=i.find(".tsg-scroll-wrapper").get(0),l=i.find(".tsg-tb-right"),a=i.get(0).getBoundingClientRect().width,r=l.length>0?l[0].offsetLeft+l[0].clientWidth:0;a<r&&(o.scrollLeft>0&&i.find(".tsg-scroll-left").show(),a<r-o.scrollLeft&&i.find(".tsg-scroll-right").show())}),s.finish(),Date.now()-e}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(Z(this.box).find(".tsg-scroll-wrapper").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}getItemHTML(e){let s="";e.caption!=null&&e.text==null&&(e.text=e.caption),e.text==null&&(e.text=""),e.tooltip==null&&e.hint!=null&&(e.tooltip=e.hint),e.tooltip==null&&(e.tooltip=""),typeof e.get!="function"&&(Array.isArray(e.items)||typeof e.items=="function")&&(e.get=function(a){let r=e.items;return typeof r=="function"&&(r=e.items(e)),r.find(c=>c.id==a)});let t="",i=typeof e.text=="function"?e.text.call(this,e):e.text;e.icon&&(t=e.icon,typeof e.icon=="function"&&(t=e.icon.call(this,e)),String(t).slice(0,1)!=="<"&&(t=`<span class="${t}" ${e.icon_style?`style="${e.icon_style}"`:""}></span>`),t=`<div class="tsg-tb-icon">${t}</div>`);let o=["tsg-tb-button","tsg-eaction"];switch(e.checked&&o.push("checked"),e.disabled&&o.push("disabled"),e.hidden&&o.push("hidden"),t||o.push("no-icon"),e.type){case"color":case"text-color":if(typeof e.color=="string"&&(e.color.slice(0,1)=="#"&&(e.color=e.color.slice(1)),[3,6,8].includes(e.color.length)&&(e.color="#"+e.color)),e.type=="color"&&(i=`<span class="tsg-tb-color-box" style="background-color: ${e.color!=null?e.color:"#fff"}"></span>
220
+ `),a.line=o)}return Z(this.box).attr("name",this.name).addClass("tsg-reset tsg-toolbar").html(i),Z(this.box).length>0&&(Z(this.box)[0].style.cssText+=this.style),p.bindEvents(Z(this.box).find(".tsg-tb-line .tsg-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),this.refresh(),this.resize(),t.finish(),Date.now()-s}refresh(e){let s=Date.now(),t=this.trigger("refresh",{target:e??this.name,item:this.get(e)});if(t.isCancelled===!0)return;let i;if(e==null){for(let c=0;c<this.items.length;c++){let d=this.items[c];d.id==null&&(d.id="item_"+c),this.refresh(d.id)}return}let o=this.get(e);if(o==null)return!1;if(typeof o.onRefresh=="function"&&(i=this.trigger("refresh",{target:e,item:o,object:o}),i.isCancelled===!0))return;let l=`#tb_${this.name}_item_${p.escapeId(o.id)}`,a=Z(this.box).find(l),r=this.getItemHTML(o);if(this.tooltipHide(e),o.type=="spacer"&&Z(this.box).find(`.tsg-tb-line:nth-child(${o.line??1})`).find(".tsg-tb-right").css("width","auto"),a.length===0){let c=parseInt(this.get(e,!0))+1,d=Z(this.box).find(`#tb_${this.name}_item_${p.escapeId(this.items[c]?this.items[c].id:"--")}`);d.length==0?d=Z(this.box).find(`.tsg-tb-line:nth-child(${o.line})`).find(".tsg-tb-right").before(r):d.after(r),p.bindEvents(Z(this.box).find(`${l}, ${l} .tsg-eaction`),this)}else{Z(this.box).find(l).replace(j.html(r));let c=Z(this.box).find(l);p.bindEvents(c,this),p.bindEvents(c.find(".tsg-eaction"),this);let d=G.get(!0);d!=null&&Object.keys(d).forEach(u=>{d[u]?.anchor==a.get(0)&&(d[u].anchor=c.get(0))})}if(["menu","menu-radio","menu-check"].includes(o.type)&&o.checked){let c=Array.isArray(o.selected)?o.selected:[o.selected],d=typeof o.items=="function"?o.items(o):[...o.items];d.forEach(u=>{c.includes(u.id)?u.checked=!0:u.checked=!1}),ie.update(this.name+"-drop",d)}return typeof o.onRefresh=="function"&&i.finish(),t.finish(),Date.now()-s}resize(){let e=Date.now(),s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0)return Z(this.box).find(".tsg-tb-line").each(t=>{let i=Z(t);i.find(".tsg-scroll-left, .tsg-scroll-right").hide();let o=i.find(".tsg-scroll-wrapper").get(0),l=i.find(".tsg-tb-right"),a=i.get(0).getBoundingClientRect().width,r=l.length>0?l[0].offsetLeft+l[0].clientWidth:0;a<r&&(o.scrollLeft>0&&i.find(".tsg-scroll-left").show(),a<r-o.scrollLeft&&i.find(".tsg-scroll-right").show())}),s.finish(),Date.now()-e}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(G.hide(this.name+"-tooltip"),G.hide(this.name+"-drop"),Z(this.box).find(".tsg-scroll-wrapper").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}getItemHTML(e){let s="";e.caption!=null&&e.text==null&&(e.text=e.caption),e.text==null&&(e.text=""),e.tooltip==null&&e.hint!=null&&(e.tooltip=e.hint),e.tooltip==null&&(e.tooltip=""),typeof e.get!="function"&&(Array.isArray(e.items)||typeof e.items=="function")&&(e.get=function(a){let r=e.items;return typeof r=="function"&&(r=e.items(e)),r.find(c=>c.id==a)});let t="",i=typeof e.text=="function"?e.text.call(this,e):e.text;e.icon&&(t=e.icon,typeof e.icon=="function"&&(t=e.icon.call(this,e)),String(t).slice(0,1)!=="<"&&(t=`<span class="${t}" ${e.icon_style?`style="${e.icon_style}"`:""}></span>`),t=`<div class="tsg-tb-icon">${t}</div>`);let o=["tsg-tb-button","tsg-eaction"];switch(e.checked&&o.push("checked"),e.disabled&&o.push("disabled"),e.hidden&&o.push("hidden"),t||o.push("no-icon"),e.type){case"color":case"text-color":if(typeof e.color=="string"&&(e.color.slice(0,1)=="#"&&(e.color=e.color.slice(1)),[3,6,8].includes(e.color.length)&&(e.color="#"+e.color)),e.type=="color"&&(i=`<span class="tsg-tb-color-box" style="background-color: ${e.color!=null?e.color:"#fff"}"></span>
221
221
  ${e.text?`<div style="margin-left: 17px;">${p.lang(e.text)}</div>`:""}`),e.type=="text-color"){let l=e.color!=null?e.color:"#444",a=e.backColor;e.backColor===!0&&(a="#fff",p.colorContrastValue("#fff",l)<2&&(a="#555")),i=`<span style="color: ${l}">${e.text?p.lang(e.text):e.backColor?`<b style="background-color: ${a??"transparent"}; padding: 2px 5px; border-radius: 3px;">Ab</b>`:"<b>Ab</b>"}</span>`}case"menu":case"menu-check":case"menu-radio":case"button":case"check":case"radio":case"label":case"drop":{let l=e.arrow===!0||e.arrow!==!1&&["menu","menu-radio","menu-check","drop","color","text-color"].includes(e.type);s=`
222
222
  <div id="tb_${this.name}_item_${e.id}" class="${o.join(" ")} ${e.class?e.class:""}"
223
223
  style="${e.hidden?"display: none;":""} ${e.type=="label"?(e.style??"")+";":""}"
@@ -262,7 +262,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
262
262
  >
263
263
  ${e.input?.spinner?`<span class="tsg-spinner-inc tsg-eaction" data-click='["spinner", "${e.id}", "inc", "event"]'> + </span>`:""}
264
264
  </div>`;break}case"group":s=`<div id="tb_${this.name}_item_${e.id}" class="tsg-tb-group"
265
- style="display: flex; ${e.hidden?"display: none":""}; ${e.style?e.style:""}">`,Array.isArray(e.items)?e.items.forEach(l=>{s+=this.getItemHTML(l)}):console.log("ERROR: toolbar group is empty"),s+="</div>"}return s}spinner(e,s,t){let i=this.get(e),o=0,l=this.trigger("keyDown",{id:e,item:i,originalEvent:t});switch(s){case"inc":{o=i.input?.step??1;break}case"dec":{o=-(i.input?.step??1);break}case"key":{if(i.input?.spinner||i.input?.step!=null){let a=1;switch((t.shiftKey||t.metaKey)&&(a=10),t.altKey&&(a=.1),t.key){case"ArrowUp":{o=(i.input?.step??1)*a,t.preventDefault();break}case"ArrowDown":{o=-(i.input?.step??1)*a,t.preventDefault();break}}}break}}o!==0&&this.change(e,parseFloat(i.value??0)+o),l.finish()}change(e,s,t){let i=this.get(e),o=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(e)).find("input.tsg-toolbar-input");if(s instanceof HTMLInputElement&&(s=s.value),s==null&&(s=o.val()),(i.input?.spinner||i.input?.min!=null||i.input?.max!=null||i.input?.step!=null)&&(s=parseFloat(s)),i.input?.suffix!=null&&String(s).substr(-i.input.suffix.length)==i.input.suffix&&(s=String(s).substr(0,s.length-i.input.suffix.length)),i.input?.min!=null&&i.input.min>s&&(s=i.input.min),i.input?.max!=null&&i.input.max<s&&(s=i.input.max),i.input?.step!=null){isNaN(s)&&(s=i.input.min??0);let r=i.input.step??1,c=i.input.precision??String(r).split(".")[1]?.length??0;s=Number(s).toFixed(c)}let l=this.trigger(t?"input":"change",{target:e,id:e,value:s,item:i});if(l.isCancelled)return;i.value=s;let a="";i.input?.suffix!=null&&String(s).substr(-i.input.suffix.length)!=i.input.suffix&&(a=i.input.suffix),t||o.val(s+a),l.finish()}tooltipShow(e){if(this.tooltip==null)return;let s=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(e)).get(0),t=this.get(e),i=typeof this.tooltip=="string"?{position:this.tooltip}:this.tooltip,o=t.tooltip;typeof o=="function"&&(o=o.call(this,t)),!(["menu","menu-radio","menu-check","drop","color","text-color"].includes(t.type)&&t.checked==!0)&&W.show({anchor:s,name:this.name+"-tooltip",html:o,...i})}tooltipHide(e){this.tooltip!=null&&W.hide(this.name+"-tooltip")}menuClick(e){if(e.item&&!e.item.disabled){let s=this.trigger(e.remove!==!0?"click":"remove",{target:e.item.id+":"+e.subItem.id,item:e.item,subItem:e.subItem,originalEvent:e.originalEvent});if(s.isCancelled===!0)return;let t=e.subItem,i=this.get(e.item.id),o=i.items;if(typeof o=="function"&&(o=i.items()),i.type=="menu"&&(i.selected=t.id),i.type=="menu-radio"&&(i.selected=t.id,Array.isArray(o)&&o.forEach(l=>{l.checked===!0&&delete l.checked,Array.isArray(l.items)&&l.items.forEach(a=>{a.checked===!0&&delete a.checked})}),t.checked=!0),i.type=="menu-check"){if(Array.isArray(i.selected)||(i.selected=[]),t.group==null){let l=i.selected.indexOf(t.id);l==-1?(i.selected.push(t.id),t.checked=!0):(i.selected.splice(l,1),t.checked=!1)}else if(t.group!==!1){let l=[],a=i.selected.indexOf(t.id),r=c=>{c.forEach(d=>{if(d.group===t.group){let u=i.selected.indexOf(d.id);u!=-1&&(d.id!=t.id&&l.push(d.id),i.selected.splice(u,1))}Array.isArray(d.items)&&r(d.items)})};r(o),a==-1&&(i.selected.push(t.id),t.checked=!0)}}if(typeof t.route=="string"){let l=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",a=p.parseRoute(l);if(a.keys.length>0)for(let r=0;r<a.keys.length;r++){let c=a.keys[r];c==null||this.routeData[c.name]==null||(l=l.replace(new RegExp(":"+c.name,"g"),this.routeData[c.name]))}setTimeout(()=>{window.location.hash=l},1)}this.refresh(e.item.id),s.finish()}}colorClick(e){if(e.item&&!e.item.disabled){let s=this.trigger("click",{target:e.item.id,item:e.item,color:e.color,final:!0});if(s.isCancelled===!0)return;e.item.color=e.color,this.refresh(e.item.id),s.finish()}}mouseAction(e,s,t,i){let o=this.get(i),l=this.trigger("mouse"+t,{target:i,item:o,object:o,originalEvent:e});if(!(l.isCancelled===!0||o.disabled||o.hidden)){switch(t){case"Enter":["label","input"].includes(o.type)||Z(s).addClass("over"),this.tooltipShow(i);break;case"Leave":["label","input"].includes(o.type)||Z(s).removeClass("over down"),this.tooltipHide(i);break;case"Down":["label","input"].includes(o.type)||Z(s).addClass("down");break;case"Up":["label","input"].includes(o.type)||Z(s).removeClass("down");break}l.finish()}}};var N=j,at=class extends ne{nodes;selected;img;icon;style;hasFocus;flat;flatButton;keyboard;editable;reorder;tabIndex;routeData;multi;skipRefresh;last;node_template;constructor(e){super(e.name),this.name="",this.box=null,this.sidebar=null,this.parent=null,this.nodes=[],this.menu=[],this.routeData={},this.selected=null,this.icon=null,this.style="",this.topHTML="",this.bottomHTML="",this.multi=!1,this.editable=!1,this.reorder=!1,this.flatButton=!1,this.keyboard=!0,this.flat=!1,this.hasFocus=!1,this.levelPadding=12,this.toggleAlign="right",this.skipRefresh=!1,this.tabIndex=null,this.handle={width:0,style:"",text:"",tooltip:""},this.badge=null,this.onClick=null,this.onSelect=null,this.onUnselect=null,this.onDblClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onContextMenu=null,this.onMenuClick=null,this.onExpand=null,this.onCollapse=null,this.onKeydown=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onFocus=null,this.onBlur=null,this.onFlat=null,this.onEdit=null,this.onRename=null,this.onReorder=null,this.onDragStart=null,this.onDragOver=null,this.node_template={id:null,text:"",order:null,count:null,icon:null,nodes:[],style:"",route:null,selected:!1,expanded:!1,hidden:!1,disabled:!1,group:!1,groupShowHide:!0,collapsible:!1,plus:!1,childOffset:0,onClick:null,onDblClick:null,onContextMenu:null,onExpand:null,onCollapse:null,parent:null,sidebar:null},this.last={badge:{},renaming:!1,move:null};let s=e.nodes;delete e.nodes,Object.assign(this,e),Array.isArray(s)&&this.add(s),e.nodes=s,typeof this.box=="string"&&(this.box=N(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){return s===void 0&&(s=e,e=this),typeof e=="string"&&(e=this.get(e)),(e==null||e=="")&&(e=this),this.insert(e,null,s)}insert(e,s,t){let i,o,l,a,r;if(t===void 0&&typeof e=="string")if(t=s,s=e,s!=null){if(o=this.get(s),o==null)return Array.isArray(t)||(t=[t]),t[0].caption!=null&&t[0].text==null&&(console.log("NOTICE: sidebar node.caption property is deprecated, please use node.text. Node -> ",t[0]),t[0].text=t[0].caption),i=t[0].text,console.log('ERROR: Cannot insert node "'+i+'" because cannot find node "'+s+'" to insert before.'),null;e=this.get(s).parent}else e=this;typeof e=="string"&&(e=this.get(e)),(e==null||e=="")&&(e=this),Array.isArray(t)||(t=[t]);for(let c=0;c<t.length;c++){if(a=t[c],a.caption!=null&&a.text==null&&(console.log("NOTICE: sidebar node.caption property is deprecated, please use node.text"),a.text=a.caption),typeof a.id==null){i=a.text,console.log('ERROR: Cannot insert node "'+i+'" because it has no id.');continue}if(this.get(this,a.id)!=null){console.log("ERROR: Cannot insert node with id="+a.id+" (text: "+a.text+") because another node with the same id already exists.");continue}if(l=Object.assign({},this.node_template,a),l.sidebar=this,l.parent=e,r=l.nodes||[],l.nodes=[],s==null)e.nodes.push(l);else{if(o=this.get(e,s,!0),o==null)return console.log('ERROR: Cannot insert node "'+a.text+'" because cannot find node "'+s+'" to insert before.'),null;e.nodes.splice(o,0,l)}r.length>0&&this.insert(l,null,r)}return this.skipRefresh||this.refresh(e.id),l}remove(...e){let s=0,t=null;return e.forEach(i=>{let o=this.get(i);if(o==null)return;this.selected!=null&&(Array.isArray(this.selected)?this.selected.splice(this.selected.indexOf(o.id),1):this.selected===o.id&&(this.selected=null));let l=this.get(o.parent,i,!0);l!=null&&(o.parent.nodes[l].selected&&o.sidebar.unselect(o.id),o.parent.nodes.splice(l,1),o.parent.collapsible=o.parent.nodes.length>0,t=o,s++)}),this.skipRefresh||(s>0&&arguments.length==1&&t!=null?this.refresh(t.parent.id):this.refresh()),s}set(e,s,t){if(t===void 0&&(t=s,s=e,e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return null;for(let i=0;i<e.nodes.length;i++)if(e.nodes[i].id===s){let o=this.update(s,t);if(Object.keys(o).length!=0){let l=t.nodes;p.extend(e.nodes[i],t,l!=null?{nodes:[]}:{}),l!=null&&this.add(e.nodes[i],l),this.skipRefresh||this.refresh(s)}return!0}else if(this.set(e.nodes[i],s,t))return!0;return!1}get(e,s,t){if(arguments.length===0){let i=[],o=this.find({});for(let l=0;l<o.length;l++)o[l].id!=null&&i.push(o[l].id);return i}else{if((arguments.length==1||arguments.length==2&&s===!0)&&(t=s,s=e,e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return null;for(let i=0;i<e.nodes.length;i++){if(e.nodes[i].id==s)return t===!0?i:e.nodes[i];{let o=this.get(e.nodes[i],s,t);if(o||o===0)return o}}return null}}setCount(e,s,t={}){if(this.get(e).group){console.log(`Node "${e}" is a group and groups cannot have counts or badges.`);return}this.last.badge[e]={className:t.className??"",style:t.style??""};let o=N(this.box).find(`#node_${p.escapeId(e)} .tsg-node-badge`);if(o.length>0){let l=o.removeClass(null).addClass(`tsg-node-badge ${t.className??"tsg-node-count"}`).text(s);l.get(0).style.cssText=t.style||"";let a=this.get(e);a.count=s}else t.noRepeat||(this.set(e,{count:s}),t.noRepeat=!0,queueMicrotask(()=>this.setCount(e,s,t)))}find(e,s,t){if(arguments.length==1&&(s=e,e=this),t||(t=[]),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return t;for(let i=0;i<e.nodes.length;i++){let o=!0;for(let l in s)e.nodes[i][l]!=s[l]&&(o=!1);o&&t.push(e.nodes[i]),e.nodes[i].nodes.length>0&&(t=this.find(e.nodes[i],s,t))}return t}sort(e,s){(!e||typeof e!="object")&&(e={}),e.foldersFirst==null&&(e.foldersFirst=!0),e.caseSensitive==null&&(e.caseSensitive=!1),e.reverse==null&&(e.reverse=!1),s==null&&(s=this.nodes),s.sort((t,i)=>{let o=t.nodes&&t.nodes.length>0,l=i.nodes&&i.nodes.length>0;if(e.foldersFirst===!1||!o&&!l||o&&l){let a=t.text,r=i.text;t.order!=null&&(a=t.order),i.order!=null&&(r=i.order),e.caseSensitive||(a=a.toLowerCase(),r=r.toLowerCase());let c=p.naturalCompare(a,r);return(c===1||c===-1)&(e.reverse?1:0)?-c:c}if(o&&!l)return e.reverse?1:-1;if(!o&&l)return e.reverse?-1:1}),s.forEach(t=>{t.nodes&&t.nodes.length>0&&this.sort(e,t.nodes)})}each(e,s){s==null&&(s=this.nodes),s.forEach(t=>{e.call(this,t),t.nodes&&t.nodes.length>0&&this.each(e,t.nodes)})}search(e,s=null){let t=0,i=e.toLowerCase();return this.each(l=>{let a=!1;typeof s=="function"?a=s(e,l):a=l.text.toLowerCase().indexOf(i)!==-1,a?(t++,o(l),l.hidden=!1):l.hidden=!0}),this.refresh(),t;function o(l){l.parent&&(l.parent.hidden=!1,o(l.parent))}}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.hidden===!1||(i.hidden=!1,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.hidden===!0||(i.hidden=!0,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.disabled===!1||(i.disabled=!1,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.disabled===!0||(i.disabled=!0,i.selected&&this.unselect(i.id),s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}select(e){if(Array.isArray(e)){[...e].forEach(o=>this.select(o));return}let s=this.get(e);if(!s)return!1;let t=this.trigger("select",{target:e,id:e,node:s});if(t.isCancelled===!0)return!0;if(!this.multi&&this.selected==e&&s.selected)return!1;this.find({selected:!0}).forEach(o=>o.selected=!1);let i=N(this.box).find("#node_"+p.escapeId(e));return i.addClass("tsg-selected").find(".tsg-icon").addClass("tsg-icon-selected"),i.length>0&&(this.inView(e)||this.scrollIntoView(e)),s.selected=!0,this.multi?(Array.isArray(this.selected)||(this.selected=this.selected?[this.selected]:[]),this.selected.push(e)):this.selected=this.multi?[e]:e,t.finish(),!0}unselect(e){if(arguments.length===0&&(e=this.selected),Array.isArray(e)){[...e].forEach(i=>this.unselect(i));return}let s=this.get(e);if(!s)return!1;let t=this.trigger("unselect",{target:e,id:e,node:s});if(t.isCancelled===!0)return!0;if(s.selected=!1,N(this.box).find("#node_"+p.escapeId(e)).removeClass("tsg-selected").find(".tsg-icon").removeClass("tsg-icon-selected"),typeof this.selected=="string"&&this.selected==e&&(this.selected=null),this.multi&&Array.isArray(this.selected)){let i=this.selected.indexOf(e);i!=-1&&this.selected.splice(i,1)}return t.finish(),!0}toggle(e){let s=this.get(e);if(s==null)return!1;if(s.plus){this.set(e,{plus:!1}),this.expand(e),this.refresh(e);return}return s.nodes.length===0||!s.collapsible?!1:this.get(e).expanded?this.collapse(e):this.expand(e)}collapse(e){let s=this.get(e);if(s==null)return!1;let t=this.trigger("collapse",{target:e,object:s,node:s});if(t.isCancelled!==!0)return N(this.box).find("#node_"+p.escapeId(e)+"_sub").hide(),N(this.box).find("#node_"+p.escapeId(e)+" .tsg-expanded").removeClass("tsg-expanded").addClass("tsg-collapsed"),s.expanded=!1,t.finish(),this.refresh(e),!0}expand(e){let s=this.get(e),t=this.trigger("expand",{target:e,object:s,node:s});if(t.isCancelled!==!0)return N(this.box).find("#node_"+p.escapeId(e)+"_sub").show(),N(this.box).find("#node_"+p.escapeId(e)+" .tsg-collapsed").removeClass("tsg-collapsed").addClass("tsg-expanded"),s.expanded=!0,t.finish(),this.refresh(e),!0}collapseAll(e){if(e==null&&(e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return!1;for(let s=0;s<e.nodes.length;s++)e.nodes[s].expanded===!0&&(e.nodes[s].expanded=!1),e.nodes[s].nodes&&e.nodes[s].nodes.length>0&&this.collapseAll(e.nodes[s]);return this.refresh(e.id),!0}expandAll(e){if(e==null&&(e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return!1;for(let s=0;s<e.nodes.length;s++)e.nodes[s].expanded===!1&&(e.nodes[s].expanded=!0),e.nodes[s].nodes&&e.nodes[s].nodes.length>0&&this.expandAll(e.nodes[s]);this.refresh(e.id)}expandParents(e){let s=this.get(e);return s==null?!1:(s.parent&&(s.parent.expanded||(s.parent.expanded=!0,this.refresh(s.parent.id)),this.expandParents(s.parent.id)),!0)}click(e,s){let t=this.get(e);if(t==null)return;if(t.disabled||t.group){this.trigger("click",{target:e,originalEvent:s,node:t,object:t}).finish();return}let i=N(this.box).find("#node_"+p.escapeId(e));i.addClass("tsg-selected").find(".tsg-icon").addClass("tsg-icon-selected"),setTimeout(()=>{let o=this.trigger("click",{target:e,originalEvent:s,node:t,object:t});if(o.isCancelled===!0){i.removeClass("tsg-selected").find(".tsg-icon").removeClass("tsg-icon-selected");return}if(this.multi){let a=s,r=a?.shiftKey??!1,c=(a?.ctrlKey||a?.metaKey)??!1;if(typeof this.selected=="string"&&(this.selected=[this.selected]),c&&!r)if(this.selected?.includes(e)){this.unselect(e);return}else this.select(e);else if(!c&&r){let d=this.getChain(),u=Math.min(this.selected.map(f=>d.indexOf(f))),h=d.indexOf(e);for(let f=Math.min(u,h);f<d.length&&f<=Math.max(u,h);f++){let m=this.get(d[f]);!this.selected.includes(d[f])&&m.hidden!=!0&&this.select(d[f])}}else{let d=this.selected?.filter(u=>u!=e&&this.selected.includes(u));this.unselect(d),this.selected?.includes(e)||this.select(e)}}else if(this.selected!==e){if(this.selected!=null&&this.unselect(this.selected),this.select(e),typeof t.route=="string"){let a=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",r=p.parseRoute(a);if(r.keys.length>0)for(let c=0;c<r.keys.length;c++){let d=r.keys[c];d!=null&&this.routeData[d.name]!=null&&(a=a.replace(new RegExp(":"+d.name,"g"),this.routeData[d.name]))}setTimeout(()=>{window.location.hash=a},1)}if(this.flat){let r=function(c){return c.map(u=>{let h=u.nodes.length>0?r(u.nodes):null;return{id:u.id,text:u.text,icon:u.icon,items:h}})};var l=r;let a=r(t.nodes);a.length>0&&this.flatMenu(i,a)}}o.finish()},1)}flatMenu(e,s){let t=this,i=N(e).find(".tsg-node-data");ie.show({anchor:i.get(0),name:this.name+"_flat-menu",items:s,position:"right|left",onSelect(o){t.unselect(),t.click(o.detail.item.id,o.detail.originalEvent)},onHide(o){t.unselect()}}),W.hide(this.name+"_tooltip")}focus(e){let s=this.trigger("focus",{target:this.name,originalEvent:e});if(s.isCancelled===!0)return!1;this.hasFocus=!0,N(this.box).find(".tsg-sidebar-body").addClass("tsg-focus"),setTimeout(()=>{let t=N(this.box).find("#sidebar_"+this.name+"_focus").get(0);document.activeElement!=t&&t.focus()},10),s.finish()}blur(e){let s=this.trigger("blur",{target:this.name,originalEvent:e});if(s.isCancelled===!0)return!1;this.hasFocus=!1,N(this.box).find(".tsg-sidebar-body").removeClass("tsg-focus"),s.finish()}next(e,s){if(e==null)return null;let t=e.parent,i=this.get(e.id,!0),o=null;if(e.expanded&&e.nodes.length>0&&s!==!0){let l=e.nodes[0]??null;l==null?o=null:l.hidden||l.disabled||l.group?o=this.next(l):o=l}else t&&i+1<t.nodes.length?o=t.nodes[i+1]??null:o=this.next(t,!0);return o!=null&&(o.hidden||o.disabled||o.group)&&(o=this.next(o)),o}prev(e){if(e==null)return null;let s=e.parent,t=this.get(e.id,!0),i=a=>{if(a.expanded&&a.nodes.length>0){let r=a.nodes[a.nodes.length-1]??null;return r==null?a:r.hidden||r.disabled||r.group?this.prev(r):i(r)}return a},o=t>0?s.nodes[t-1]:null,l=t>0&&o!=null?i(o):s;return l!=null&&(l.hidden||l.disabled||l.group)&&(l=this.prev(l)),l}getChain(e,s={}){s.returnDisabled??=!1,s.returnGroups??=!1;let t=[];return e==null&&(e=this.nodes),e.forEach(i=>{(!i.disabled&&!i.group||i.disabled&&s.returnDisabled||i.group&&s.returnGroups)&&t.push(i.id),Array.isArray(i.nodes)&&i.expanded&&t.push(...this.getChain(i.nodes,s))}),t}keydown(e){let s=this,t=Array.isArray(this.selected)?this.selected[0]:this.selected,i=this.get(t);if(this.keyboard!==!0)return;if(i||(i=this.nodes[0]??null),e.keyCode==27){let r=this.last.move;if(r?.reorder&&r?.moved){r.restore();return}}let o=this.trigger("keydown",{target:this.name,originalEvent:e});if(o.isCancelled===!0)return;(e.keyCode==13||e.keyCode==32)&&(e.keyCode==13&&this.editable&&!e.ctrlKey&&!e.metaKey?this.edit(t):i.nodes.length>0&&this.toggle(t)),e.keyCode==37&&(i.nodes.length>0&&i.expanded?this.collapse(t):(l(i.parent),i.parent.group||this.collapse(i.parent.id))),e.keyCode==39&&(i.nodes.length>0||i.plus)&&!i.expanded&&this.expand(t),e.keyCode==38&&(this.get(t)==null?l(this.nodes[0]||null):l(a(i,this.prev))),e.keyCode==40&&(this.get(t)==null?l(this.nodes[0]||null):l(a(i,this.next))),[13,32,37,38,39,40].includes(e.keyCode)&&(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()),o.finish();function l(r,c){r!=null&&!r.hidden&&!r.disabled&&!r.group&&(s.click(r.id,c),s.inView(r.id)||s.scrollIntoView(r.id))}function a(r,c){for(r=c.call(s,r);r!=null&&(r.hidden||r.disabled)&&!r.group;)r=c(r);return r}}inView(e){let s=N(this.box).find("#node_"+p.escapeId(e)).get(0);if(!s)return!1;let t=N(this.box).find(".tsg-sidebar-body").get(0);return!(!t||s.offsetTop<t.scrollTop||s.offsetTop+s.clientHeight>t.clientHeight+t.scrollTop)}scrollIntoView(e,s){return new Promise(t=>{if(e==null&&(e=Array.isArray(this.selected)?this.selected[0]:this.selected),this.get(e)==null)return;let o=N(this.box).find("#node_"+p.escapeId(e)).get(0);o&&o.scrollIntoView({block:"center",inline:"center",behavior:s?"auto":"smooth"}),setTimeout(()=>{this.resize(),t()},s?0:500)})}dblClick(e,s){let t=this.get(e),i=this.trigger("dblClick",{target:e,originalEvent:s,object:t});i.isCancelled!==!0&&(this.editable?this.edit(e):this.flat||this.toggle(e),i.finish())}mouseDown(e,s){let t=this;if(this.reorder){this.last.move={x:s.screenX,y:s.screenY,divX:0,divY:0,reorder:!0,moved:!1};let l=this.last.move,a=N(this.box).find(".tsg-sidebar-body");if(!l.ghost){let r=N(this.box).find(`#node_${p.escapeId(e)}`);l.offsetY=s.offsetY,l.target=e;let c=r.get(0);l.pos={top:c.offsetTop-1,left:c.offsetLeft};let d=N(r.find(".tsg-node-data").get(0).cloneNode(!0));l.node=r,l.nodeSub=r.next(),a.append('<div id="sidebar_'+this.name+'_ghost" class="tsg-node tsg-ghost"></div>'),N(this.box).find("#sidebar_"+this.name+"_ghost").append(d),l.ghost=N(this.box).find("#sidebar_"+this.name+"_ghost"),l.ghost.css({display:"none"}),l.restore=()=>{l.resetReorder(),this.refresh()},l.resetReorder=()=>{this.last.move=null,N(this.box).find(`#sidebar_${this.name}_ghost`).remove(),N(document).off(`.tsg-${this.name}-reorder`)}}N(document).on(`mousemove.tsg-${this.name}-reorder`,i).on(`mouseup.tsg-${this.name}-reorder`,o)}function i(l){if(!l.target.tagName)return;let a=t.last.move;if(a.divX=l.screenX-a.x,a.divY=l.screenY-a.y,Math.abs(a.divX)<=1&&Math.abs(a.divY)<=1)return;if(t.reorder==!0&&a.reorder&&!a.moved){let d=t.trigger("dragStart",{target:a.target,moved:!0,node:t.get(a.target),mv:a,originalEvent:l});if(d.isCancelled===!0){a.restore();return}let u=a.node.get(0).getBoundingClientRect();if(a.moved=!0,a.node.html("").removeAttr("id","data-id").addClass("tsg-reorder-empty").css({height:u.height+"px"}),a.node.next().css("display")!=="none"){let h=a.node.next().get(0).getBoundingClientRect();a.node.next().html('<div class="tsg-reorder-empty-sub"></div>').css({height:h.height+"px"})}a.ghost.css({display:"block"}),d.finish()}a.ghost.css({top:a.pos.top+a.divY+"px",left:0});let c=N(l.target).closest(".tsg-node, .tsg-node-group").attr("data-id");if(N(l.target).hasClass("tsg-sidebar-body")&&l.layerY>5&&!a.append){let d=t.trigger("dragOver",{target:a.target,append:!0,mv:a,originalEvent:l});if(d.isCancelled===!0)return;a.ghost.before(a.node),a.ghost.before(a.nodeSub),a.append=!0,a.moveBefore=null,d.finish()}else if(c!=null&&c!=a.moveBefore){a.append=!1,a.moveBefore=c;let d=t.trigger("dragOver",{target:a.target,moveBefore:c,mv:a,originalEvent:l});if(d.isCancelled===!0)return;let u=N(t.box).find(`#node_${p.escapeId(c)}`);u.before(a.node),u.before(a.nodeSub),d.finish()}}function o(l){let a=t.last.move;if(a.resetReorder(),a.moved)if(a.moveBefore!=null&&a.target!=a.moveBefore||a.append){let r=t.trigger("reorder",{target:a.target,moveBefore:a.moveBefore,append:a.append,originalEvent:l});if(r.isCancelled===!0){t.refresh();return}let c=t.get(a.target),d=c.parent.nodes.indexOf(c),u=c.parent.nodes.splice(d,1);if(a.append)t.nodes.push(...u),u.forEach(h=>h.parent=t);else{let h=t.get(a.moveBefore),f=h.parent.nodes.indexOf(h);u.forEach(m=>m.parent=h.parent),h.parent.nodes.splice(f,0,...u)}t.refresh(),r.finish()}else t.refresh()}}edit(e){let s=this,t=N(this.box).find("#node_"+p.escapeId(e)),i=t.find(".tsg-node-text"),o=this.trigger("edit",{target:e,el:t,textEl:i});if(o.isCancelled===!0)return;this.last.renaming=!0,t.addClass("tsg-editing"),i.addClass("tsg-focus").css("pointer-events","all").attr("contenteditable",p.isFirefox?"true":"plaintext-only").on("blur.node-editing",r=>{setTimeout(a,0)}).on("keydown.node-editing",r=>{let c=r;c.keyCode==13&&a(c),c.keyCode==27&&a(c,!0)}),i.get(0).focus();let l=i.text();return p.setCursorPosition(i[0],0,i.text().length),o.finish(),i.get(0);function a(r,c){let d=i.text();if(t.removeClass("tsg-editing"),i.removeClass("tsg-focus").css("pointer-events","none").removeAttr("contenteditable").off(".node-editing"),!c&&s.last.renaming&&l!==d){let u=s.trigger("rename",{target:e,text_previous:l,text_new:d,originalEvent:r});if(u.isCancelled===!0){i.text(l),s.last.renaming=!1,s.focus();return}s.set(e,{text:d}),u.finish()}c&&s.set(e,{text:l}),s.last.renaming=!1,s.focus()}}contextMenu(e,s){let t=this.get(e);Array.isArray(this.selected)?this.selected.includes(e)||this.click(e):e!=this.selected&&this.click(e);let i=this.trigger("contextMenu",{target:e,originalEvent:s,object:t,allowOnDisabled:!1});i.isCancelled!==!0&&(t.disabled&&!i.detail.allowOnDisabled||(this.menu.length>0&&(ie.hide(this.name+"_menu"),ie.show({name:this.name+"_menu",anchor:document.body,contextMenu:!0,items:this.menu,originalEvent:s})?.select?.(l=>{this.menuClick(e,l.detail)})),s.preventDefault&&s.preventDefault(),i.finish()))}menuClick(e,s={}){let t=this.trigger("menuClick",{target:e,...s});t.isCancelled!==!0&&t.finish()}goFlat(){let e=this.trigger("flat",{goFlat:!this.flat});e.isCancelled!==!0&&(this.flat=!this.flat,this.refresh(),this.flat?(this.nodes.forEach(s=>{s.group||(this.collapse(s.id),this.collapseAll(s.id))}),this.unselect()):this.nodes.forEach(s=>{s.group||(this.expand(s.id),this.expandAll(s.id))}),e.finish())}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=N(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;N(this.box).attr("name",this.name).addClass("tsg-reset tsg-sidebar").html(`<div>
265
+ style="display: ${e.hidden?"none":"flex"}; ${e.style?e.style:""}">`,Array.isArray(e.items)?e.items.forEach(l=>{s+=this.getItemHTML(l)}):console.log("ERROR: toolbar group is empty"),s+="</div>"}return s}spinner(e,s,t){let i=this.get(e),o=0,l=this.trigger("keyDown",{id:e,item:i,originalEvent:t});switch(s){case"inc":{o=i.input?.step??1;break}case"dec":{o=-(i.input?.step??1);break}case"key":{if(i.input?.spinner||i.input?.step!=null){let a=1;switch((t.shiftKey||t.metaKey)&&(a=10),t.altKey&&(a=.1),t.key){case"ArrowUp":{o=(i.input?.step??1)*a,t.preventDefault();break}case"ArrowDown":{o=-(i.input?.step??1)*a,t.preventDefault();break}}}break}}o!==0&&this.change(e,parseFloat(i.value??0)+o),l.finish()}change(e,s,t){let i=this.get(e),o=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(e)).find("input.tsg-toolbar-input");if(s instanceof HTMLInputElement&&(s=s.value),s==null&&(s=o.val()),(i.input?.spinner||i.input?.min!=null||i.input?.max!=null||i.input?.step!=null)&&(s=parseFloat(s)),i.input?.suffix!=null){let r=String(s);r.substr(-i.input.suffix.length)==i.input.suffix&&(s=r.substr(0,r.length-i.input.suffix.length))}if(i.input?.min!=null&&i.input.min>s&&(s=i.input.min),i.input?.max!=null&&i.input.max<s&&(s=i.input.max),i.input?.step!=null){isNaN(s)&&(s=i.input.min??0);let r=i.input.step??1,c=i.input.precision??String(r).split(".")[1]?.length??0;s=Number(s).toFixed(c)}let l=this.trigger(t?"input":"change",{target:e,id:e,value:s,item:i});if(l.isCancelled)return;i.value=s;let a="";i.input?.suffix!=null&&String(s).substr(-i.input.suffix.length)!=i.input.suffix&&(a=i.input.suffix),t||o.val(s+a),l.finish()}tooltipShow(e){if(this.tooltip==null)return;let s=Z(this.box).find("#tb_"+this.name+"_item_"+p.escapeId(e)).get(0),t=this.get(e),i=typeof this.tooltip=="string"?{position:this.tooltip}:this.tooltip,o=t.tooltip;typeof o=="function"&&(o=o.call(this,t)),!(["menu","menu-radio","menu-check","drop","color","text-color"].includes(t.type)&&t.checked==!0)&&G.show({anchor:s,name:this.name+"-tooltip",html:o,...i})}tooltipHide(e){this.tooltip!=null&&G.hide(this.name+"-tooltip")}menuClick(e){if(e.item&&!e.item.disabled){let s=this.trigger(e.remove!==!0?"click":"remove",{target:e.item.id+":"+e.subItem.id,item:e.item,subItem:e.subItem,originalEvent:e.originalEvent});if(s.isCancelled===!0)return;let t=e.subItem,i=this.get(e.item.id),o=i.items;if(typeof o=="function"&&(o=i.items()),i.type=="menu"&&(i.selected=t.id),i.type=="menu-radio"&&(i.selected=t.id,Array.isArray(o)&&o.forEach(l=>{l.checked===!0&&delete l.checked,Array.isArray(l.items)&&l.items.forEach(a=>{a.checked===!0&&delete a.checked})}),t.checked=!0),i.type=="menu-check"){if(Array.isArray(i.selected)||(i.selected=[]),t.group==null){let l=i.selected.indexOf(t.id);l==-1?(i.selected.push(t.id),t.checked=!0):(i.selected.splice(l,1),t.checked=!1)}else if(t.group!==!1){let l=[],a=i.selected.indexOf(t.id),r=c=>{c.forEach(d=>{if(d.group===t.group){let u=i.selected.indexOf(d.id);u!=-1&&(d.id!=t.id&&l.push(d.id),i.selected.splice(u,1))}Array.isArray(d.items)&&r(d.items)})};r(o),a==-1&&(i.selected.push(t.id),t.checked=!0)}}if(typeof t.route=="string"){let l=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",a=p.parseRoute(l);if(a.keys.length>0)for(let r=0;r<a.keys.length;r++){let c=a.keys[r];c==null||this.routeData[c.name]==null||(l=l.replace(new RegExp(":"+c.name,"g"),this.routeData[c.name]))}setTimeout(()=>{window.location.hash=l},1)}this.refresh(e.item.id),s.finish()}}colorClick(e){if(e.item&&!e.item.disabled){let s=this.trigger("click",{target:e.item.id,item:e.item,color:e.color,final:!0});if(s.isCancelled===!0)return;e.item.color=e.color,this.refresh(e.item.id),s.finish()}}mouseAction(e,s,t,i){let o=this.get(i),l=this.trigger("mouse"+t,{target:i,item:o,object:o,originalEvent:e});if(l.isCancelled===!0||o.disabled||o.hidden){l.finish();return}switch(t){case"Enter":["label","input"].includes(o.type)||Z(s).addClass("over"),this.tooltipShow(i);break;case"Leave":["label","input"].includes(o.type)||Z(s).removeClass("over down"),this.tooltipHide(i);break;case"Down":["label","input"].includes(o.type)||Z(s).addClass("down");break;case"Up":["label","input"].includes(o.type)||Z(s).removeClass("down");break}l.finish()}};var N=j,at=class extends ne{nodes;selected;img;icon;style;hasFocus;flat;flatButton;keyboard;editable;reorder;tabIndex;routeData;multi;skipRefresh;last;node_template;constructor(e){super(e.name),this.name="",this.box=null,this.sidebar=null,this.parent=null,this.nodes=[],this.menu=[],this.routeData={},this.selected=null,this.icon=null,this.style="",this.topHTML="",this.bottomHTML="",this.multi=!1,this.editable=!1,this.reorder=!1,this.flatButton=!1,this.keyboard=!0,this.flat=!1,this.hasFocus=!1,this.levelPadding=12,this.toggleAlign="right",this.skipRefresh=!1,this.tabIndex=null,this.handle={width:0,style:"",text:"",tooltip:""},this.badge=null,this.onClick=null,this.onSelect=null,this.onUnselect=null,this.onDblClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onContextMenu=null,this.onMenuClick=null,this.onExpand=null,this.onCollapse=null,this.onKeydown=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onFocus=null,this.onBlur=null,this.onFlat=null,this.onEdit=null,this.onRename=null,this.onReorder=null,this.onDragStart=null,this.onDragOver=null,this.node_template={id:null,text:"",order:null,count:null,icon:null,nodes:[],style:"",route:null,selected:!1,expanded:!1,hidden:!1,disabled:!1,group:!1,groupShowHide:!0,collapsible:!1,plus:!1,childOffset:0,onClick:null,onDblClick:null,onContextMenu:null,onExpand:null,onCollapse:null,parent:null,sidebar:null},this.last={badge:{},renaming:!1,move:null};let s=e.nodes;delete e.nodes,Object.assign(this,e),Array.isArray(s)&&this.add(s),e.nodes=s,typeof this.box=="string"&&(this.box=N(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){return s===void 0&&(s=e,e=this),typeof e=="string"&&(e=this.get(e)),(e==null||e=="")&&(e=this),this.insert(e,null,s)}insert(e,s,t){let i,o,l,a,r;if(t===void 0&&typeof e=="string")if(t=s,s=e,s!=null){if(o=this.get(s),o==null)return Array.isArray(t)||(t=[t]),t[0].caption!=null&&t[0].text==null&&(console.log("NOTICE: sidebar node.caption property is deprecated, please use node.text. Node -> ",t[0]),t[0].text=t[0].caption),i=t[0].text,console.log('ERROR: Cannot insert node "'+i+'" because cannot find node "'+s+'" to insert before.'),null;e=this.get(s).parent}else e=this;typeof e=="string"&&(e=this.get(e)),(e==null||e=="")&&(e=this),Array.isArray(t)||(t=[t]);for(let c=0;c<t.length;c++){if(a=t[c],a.caption!=null&&a.text==null&&(console.log("NOTICE: sidebar node.caption property is deprecated, please use node.text"),a.text=a.caption),typeof a.id==null){i=a.text,console.log('ERROR: Cannot insert node "'+i+'" because it has no id.');continue}if(this.get(this,a.id)!=null){console.log("ERROR: Cannot insert node with id="+a.id+" (text: "+a.text+") because another node with the same id already exists.");continue}if(l=Object.assign({},this.node_template,a),l.sidebar=this,l.parent=e,r=l.nodes||[],l.nodes=[],s==null)e.nodes.push(l);else{if(o=this.get(e,s,!0),o==null)return console.log('ERROR: Cannot insert node "'+a.text+'" because cannot find node "'+s+'" to insert before.'),null;e.nodes.splice(o,0,l)}r.length>0&&this.insert(l,null,r)}return this.skipRefresh||this.refresh(e.id),l}remove(...e){let s=0,t=null;return e.forEach(i=>{let o=this.get(i);if(o==null)return;this.selected!=null&&(Array.isArray(this.selected)?this.selected.splice(this.selected.indexOf(o.id),1):this.selected===o.id&&(this.selected=null));let l=this.get(o.parent,i,!0);l!=null&&(o.parent.nodes[l].selected&&o.sidebar.unselect(o.id),o.parent.nodes.splice(l,1),o.parent.collapsible=o.parent.nodes.length>0,t=o,s++)}),this.skipRefresh||(s>0&&arguments.length==1&&t!=null?this.refresh(t.parent.id):this.refresh()),s}set(e,s,t){if(t===void 0&&(t=s,s=e,e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return null;for(let i=0;i<e.nodes.length;i++)if(e.nodes[i].id===s){let o=this.update(s,t);if(Object.keys(o).length!=0){let l=t.nodes;p.extend(e.nodes[i],t,l!=null?{nodes:[]}:{}),l!=null&&this.add(e.nodes[i],l),this.skipRefresh||this.refresh(s)}return!0}else if(this.set(e.nodes[i],s,t))return!0;return!1}get(e,s,t){if(arguments.length===0){let i=[],o=this.find({});for(let l=0;l<o.length;l++)o[l].id!=null&&i.push(o[l].id);return i}else{if((arguments.length==1||arguments.length==2&&s===!0)&&(t=s,s=e,e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return null;for(let i=0;i<e.nodes.length;i++){if(e.nodes[i].id==s)return t===!0?i:e.nodes[i];{let o=this.get(e.nodes[i],s,t);if(o||o===0)return o}}return null}}setCount(e,s,t={}){if(this.get(e).group){console.log(`Node "${e}" is a group and groups cannot have counts or badges.`);return}this.last.badge[e]={className:t.className??"",style:t.style??""};let o=N(this.box).find(`#node_${p.escapeId(e)} .tsg-node-badge`);if(o.length>0){let l=o.removeClass(null).addClass(`tsg-node-badge ${t.className??"tsg-node-count"}`).text(s);l.get(0).style.cssText=t.style||"";let a=this.get(e);a.count=s}else t.noRepeat||(this.set(e,{count:s}),t.noRepeat=!0,queueMicrotask(()=>this.setCount(e,s,t)))}find(e,s,t){if(arguments.length==1&&(s=e,e=this),t||(t=[]),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return t;for(let i=0;i<e.nodes.length;i++){let o=!0;for(let l in s)e.nodes[i][l]!=s[l]&&(o=!1);o&&t.push(e.nodes[i]),e.nodes[i].nodes.length>0&&(t=this.find(e.nodes[i],s,t))}return t}sort(e,s){(!e||typeof e!="object")&&(e={}),e.foldersFirst==null&&(e.foldersFirst=!0),e.caseSensitive==null&&(e.caseSensitive=!1),e.reverse==null&&(e.reverse=!1),s==null&&(s=this.nodes),s.sort((t,i)=>{let o=t.nodes&&t.nodes.length>0,l=i.nodes&&i.nodes.length>0;if(e.foldersFirst===!1||!o&&!l||o&&l){let a=t.text,r=i.text;t.order!=null&&(a=t.order),i.order!=null&&(r=i.order),e.caseSensitive||(a=a.toLowerCase(),r=r.toLowerCase());let c=p.naturalCompare(a,r);return(c===1||c===-1)&(e.reverse?1:0)?-c:c}if(o&&!l)return e.reverse?1:-1;if(!o&&l)return e.reverse?-1:1}),s.forEach(t=>{t.nodes&&t.nodes.length>0&&this.sort(e,t.nodes)})}each(e,s){s==null&&(s=this.nodes),s.forEach(t=>{e.call(this,t),t.nodes&&t.nodes.length>0&&this.each(e,t.nodes)})}search(e,s=null){let t=0,i=e.toLowerCase();return this.each(l=>{let a=!1;typeof s=="function"?a=s(e,l):a=l.text.toLowerCase().indexOf(i)!==-1,a?(t++,o(l),l.hidden=!1):l.hidden=!0}),this.refresh(),t;function o(l){l.parent&&(l.parent.hidden=!1,o(l.parent))}}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.hidden===!1||(i.hidden=!1,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.hidden===!0||(i.hidden=!0,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.disabled===!1||(i.disabled=!1,s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);i==null||i.disabled===!0||(i.disabled=!0,i.selected&&this.unselect(i.id),s.push(i.id))}),s.length>0&&(e.length==1?this.refresh(e[0]):this.refresh()),s}select(e){if(Array.isArray(e)){[...e].forEach(o=>this.select(o));return}let s=this.get(e);if(!s)return!1;let t=this.trigger("select",{target:e,id:e,node:s});if(t.isCancelled===!0)return!0;if(!this.multi&&this.selected==e&&s.selected)return!1;this.find({selected:!0}).forEach(o=>o.selected=!1);let i=N(this.box).find("#node_"+p.escapeId(e));return i.addClass("tsg-selected").find(".tsg-icon").addClass("tsg-icon-selected"),i.length>0&&(this.inView(e)||this.scrollIntoView(e)),s.selected=!0,this.multi?(Array.isArray(this.selected)||(this.selected=this.selected?[this.selected]:[]),this.selected.push(e)):this.selected=this.multi?[e]:e,t.finish(),!0}unselect(e){if(arguments.length===0&&(e=this.selected),Array.isArray(e)){[...e].forEach(i=>this.unselect(i));return}let s=this.get(e);if(!s)return!1;let t=this.trigger("unselect",{target:e,id:e,node:s});if(t.isCancelled===!0)return!0;if(s.selected=!1,N(this.box).find("#node_"+p.escapeId(e)).removeClass("tsg-selected").find(".tsg-icon").removeClass("tsg-icon-selected"),typeof this.selected=="string"&&this.selected==e&&(this.selected=null),this.multi&&Array.isArray(this.selected)){let i=this.selected.indexOf(e);i!=-1&&this.selected.splice(i,1)}return t.finish(),!0}toggle(e){let s=this.get(e);if(s==null)return!1;if(s.plus){this.set(e,{plus:!1}),this.expand(e),this.refresh(e);return}return s.nodes.length===0||!s.collapsible?!1:this.get(e).expanded?this.collapse(e):this.expand(e)}collapse(e){let s=this.get(e);if(s==null)return!1;let t=this.trigger("collapse",{target:e,object:s,node:s});if(t.isCancelled!==!0)return N(this.box).find("#node_"+p.escapeId(e)+"_sub").hide(),N(this.box).find("#node_"+p.escapeId(e)+" .tsg-expanded").removeClass("tsg-expanded").addClass("tsg-collapsed"),s.expanded=!1,t.finish(),this.refresh(e),!0}expand(e){let s=this.get(e),t=this.trigger("expand",{target:e,object:s,node:s});if(t.isCancelled!==!0)return N(this.box).find("#node_"+p.escapeId(e)+"_sub").show(),N(this.box).find("#node_"+p.escapeId(e)+" .tsg-collapsed").removeClass("tsg-collapsed").addClass("tsg-expanded"),s.expanded=!0,t.finish(),this.refresh(e),!0}collapseAll(e){if(e==null&&(e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return!1;for(let s=0;s<e.nodes.length;s++)e.nodes[s].expanded===!0&&(e.nodes[s].expanded=!1),e.nodes[s].nodes&&e.nodes[s].nodes.length>0&&this.collapseAll(e.nodes[s]);return this.refresh(e.id),!0}expandAll(e){if(e==null&&(e=this),typeof e=="string"&&(e=this.get(e)),e.nodes==null)return!1;for(let s=0;s<e.nodes.length;s++)e.nodes[s].expanded===!1&&(e.nodes[s].expanded=!0),e.nodes[s].nodes&&e.nodes[s].nodes.length>0&&this.expandAll(e.nodes[s]);this.refresh(e.id)}expandParents(e){let s=this.get(e);return s==null?!1:(s.parent&&(s.parent.expanded||(s.parent.expanded=!0,this.refresh(s.parent.id)),this.expandParents(s.parent.id)),!0)}click(e,s){let t=this.get(e);if(t==null)return;if(t.disabled||t.group){this.trigger("click",{target:e,originalEvent:s,node:t,object:t}).finish();return}let i=N(this.box).find("#node_"+p.escapeId(e));i.addClass("tsg-selected").find(".tsg-icon").addClass("tsg-icon-selected"),setTimeout(()=>{let o=this.trigger("click",{target:e,originalEvent:s,node:t,object:t});if(o.isCancelled===!0){i.removeClass("tsg-selected").find(".tsg-icon").removeClass("tsg-icon-selected");return}if(this.multi){let a=s,r=a?.shiftKey??!1,c=(a?.ctrlKey||a?.metaKey)??!1;if(typeof this.selected=="string"&&(this.selected=[this.selected]),c&&!r)if(this.selected?.includes(e)){this.unselect(e);return}else this.select(e);else if(!c&&r){let d=this.getChain(),u=Math.min(this.selected.map(f=>d.indexOf(f))),h=d.indexOf(e);for(let f=Math.min(u,h);f<d.length&&f<=Math.max(u,h);f++){let m=this.get(d[f]);!this.selected.includes(d[f])&&m.hidden!=!0&&this.select(d[f])}}else{let d=this.selected?.filter(u=>u!=e&&this.selected.includes(u));this.unselect(d),this.selected?.includes(e)||this.select(e)}}else if(this.selected!==e){if(this.selected!=null&&this.unselect(this.selected),this.select(e),typeof t.route=="string"){let a=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",r=p.parseRoute(a);if(r.keys.length>0)for(let c=0;c<r.keys.length;c++){let d=r.keys[c];d!=null&&this.routeData[d.name]!=null&&(a=a.replace(new RegExp(":"+d.name,"g"),this.routeData[d.name]))}setTimeout(()=>{window.location.hash=a},1)}if(this.flat){let r=function(c){return c.map(u=>{let h=u.nodes.length>0?r(u.nodes):null;return{id:u.id,text:u.text,icon:u.icon,items:h}})};var l=r;let a=r(t.nodes);a.length>0&&this.flatMenu(i,a)}}o.finish()},1)}flatMenu(e,s){let t=this,i=N(e).find(".tsg-node-data");ie.show({anchor:i.get(0),name:this.name+"_flat-menu",items:s,position:"right|left",onSelect(o){t.unselect(),t.click(o.detail.item.id,o.detail.originalEvent)},onHide(o){t.unselect()}}),G.hide(this.name+"_tooltip")}focus(e){let s=this.trigger("focus",{target:this.name,originalEvent:e});if(s.isCancelled===!0)return!1;this.hasFocus=!0,N(this.box).find(".tsg-sidebar-body").addClass("tsg-focus"),setTimeout(()=>{let t=N(this.box).find("#sidebar_"+this.name+"_focus").get(0);document.activeElement!=t&&t.focus()},10),s.finish()}blur(e){let s=this.trigger("blur",{target:this.name,originalEvent:e});if(s.isCancelled===!0)return!1;this.hasFocus=!1,N(this.box).find(".tsg-sidebar-body").removeClass("tsg-focus"),s.finish()}next(e,s){if(e==null)return null;let t=e.parent,i=this.get(e.id,!0),o=null;if(e.expanded&&e.nodes.length>0&&s!==!0){let l=e.nodes[0]??null;l==null?o=null:l.hidden||l.disabled||l.group?o=this.next(l):o=l}else t&&i+1<t.nodes.length?o=t.nodes[i+1]??null:o=this.next(t,!0);return o!=null&&(o.hidden||o.disabled||o.group)&&(o=this.next(o)),o}prev(e){if(e==null)return null;let s=e.parent,t=this.get(e.id,!0),i=a=>{if(a.expanded&&a.nodes.length>0){let r=a.nodes[a.nodes.length-1]??null;return r==null?a:r.hidden||r.disabled||r.group?this.prev(r):i(r)}return a},o=t>0?s.nodes[t-1]:null,l=t>0&&o!=null?i(o):s;return l!=null&&(l.hidden||l.disabled||l.group)&&(l=this.prev(l)),l}getChain(e,s={}){s.returnDisabled??=!1,s.returnGroups??=!1;let t=[];return e==null&&(e=this.nodes),e.forEach(i=>{(!i.disabled&&!i.group||i.disabled&&s.returnDisabled||i.group&&s.returnGroups)&&t.push(i.id),Array.isArray(i.nodes)&&i.expanded&&t.push(...this.getChain(i.nodes,s))}),t}keydown(e){let s=this,t=Array.isArray(this.selected)?this.selected[0]:this.selected,i=this.get(t);if(this.keyboard!==!0)return;if(i||(i=this.nodes[0]??null),e.keyCode==27){let r=this.last.move;if(r?.reorder&&r?.moved){r.restore();return}}let o=this.trigger("keydown",{target:this.name,originalEvent:e});if(o.isCancelled===!0)return;(e.keyCode==13||e.keyCode==32)&&(e.keyCode==13&&this.editable&&!e.ctrlKey&&!e.metaKey?this.edit(t):i.nodes.length>0&&this.toggle(t)),e.keyCode==37&&(i.nodes.length>0&&i.expanded?this.collapse(t):(l(i.parent),i.parent.group||this.collapse(i.parent.id))),e.keyCode==39&&(i.nodes.length>0||i.plus)&&!i.expanded&&this.expand(t),e.keyCode==38&&(this.get(t)==null?l(this.nodes[0]||null):l(a(i,this.prev))),e.keyCode==40&&(this.get(t)==null?l(this.nodes[0]||null):l(a(i,this.next))),[13,32,37,38,39,40].includes(e.keyCode)&&(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()),o.finish();function l(r,c){r!=null&&!r.hidden&&!r.disabled&&!r.group&&(s.click(r.id,c),s.inView(r.id)||s.scrollIntoView(r.id))}function a(r,c){for(r=c.call(s,r);r!=null&&(r.hidden||r.disabled)&&!r.group;)r=c(r);return r}}inView(e){let s=N(this.box).find("#node_"+p.escapeId(e)).get(0);if(!s)return!1;let t=N(this.box).find(".tsg-sidebar-body").get(0);return!(!t||s.offsetTop<t.scrollTop||s.offsetTop+s.clientHeight>t.clientHeight+t.scrollTop)}scrollIntoView(e,s){return new Promise(t=>{if(e==null&&(e=Array.isArray(this.selected)?this.selected[0]:this.selected),this.get(e)==null)return;let o=N(this.box).find("#node_"+p.escapeId(e)).get(0);o&&o.scrollIntoView({block:"center",inline:"center",behavior:s?"auto":"smooth"}),setTimeout(()=>{this.resize(),t()},s?0:500)})}dblClick(e,s){let t=this.get(e),i=this.trigger("dblClick",{target:e,originalEvent:s,object:t});i.isCancelled!==!0&&(this.editable?this.edit(e):this.flat||this.toggle(e),i.finish())}mouseDown(e,s){let t=this;if(this.reorder){this.last.move={x:s.screenX,y:s.screenY,divX:0,divY:0,reorder:!0,moved:!1};let l=this.last.move,a=N(this.box).find(".tsg-sidebar-body");if(!l.ghost){let r=N(this.box).find(`#node_${p.escapeId(e)}`);l.offsetY=s.offsetY,l.target=e;let c=r.get(0);l.pos={top:c.offsetTop-1,left:c.offsetLeft};let d=N(r.find(".tsg-node-data").get(0).cloneNode(!0));l.node=r,l.nodeSub=r.next(),a.append('<div id="sidebar_'+this.name+'_ghost" class="tsg-node tsg-ghost"></div>'),N(this.box).find("#sidebar_"+this.name+"_ghost").append(d),l.ghost=N(this.box).find("#sidebar_"+this.name+"_ghost"),l.ghost.css({display:"none"}),l.restore=()=>{l.resetReorder(),this.refresh()},l.resetReorder=()=>{this.last.move=null,N(this.box).find(`#sidebar_${this.name}_ghost`).remove(),N(document).off(`.tsg-${this.name}-reorder`)}}N(document).on(`mousemove.tsg-${this.name}-reorder`,i).on(`mouseup.tsg-${this.name}-reorder`,o)}function i(l){if(!l.target.tagName)return;let a=t.last.move;if(a.divX=l.screenX-a.x,a.divY=l.screenY-a.y,Math.abs(a.divX)<=1&&Math.abs(a.divY)<=1)return;if(t.reorder==!0&&a.reorder&&!a.moved){let d=t.trigger("dragStart",{target:a.target,moved:!0,node:t.get(a.target),mv:a,originalEvent:l});if(d.isCancelled===!0){a.restore();return}let u=a.node.get(0).getBoundingClientRect();if(a.moved=!0,a.node.html("").removeAttr("id","data-id").addClass("tsg-reorder-empty").css({height:u.height+"px"}),a.node.next().css("display")!=="none"){let h=a.node.next().get(0).getBoundingClientRect();a.node.next().html('<div class="tsg-reorder-empty-sub"></div>').css({height:h.height+"px"})}a.ghost.css({display:"block"}),d.finish()}a.ghost.css({top:a.pos.top+a.divY+"px",left:0});let c=N(l.target).closest(".tsg-node, .tsg-node-group").attr("data-id");if(N(l.target).hasClass("tsg-sidebar-body")&&l.layerY>5&&!a.append){let d=t.trigger("dragOver",{target:a.target,append:!0,mv:a,originalEvent:l});if(d.isCancelled===!0)return;a.ghost.before(a.node),a.ghost.before(a.nodeSub),a.append=!0,a.moveBefore=null,d.finish()}else if(c!=null&&c!=a.moveBefore){a.append=!1,a.moveBefore=c;let d=t.trigger("dragOver",{target:a.target,moveBefore:c,mv:a,originalEvent:l});if(d.isCancelled===!0)return;let u=N(t.box).find(`#node_${p.escapeId(c)}`);u.before(a.node),u.before(a.nodeSub),d.finish()}}function o(l){let a=t.last.move;if(a.resetReorder(),a.moved)if(a.moveBefore!=null&&a.target!=a.moveBefore||a.append){let r=t.trigger("reorder",{target:a.target,moveBefore:a.moveBefore,append:a.append,originalEvent:l});if(r.isCancelled===!0){t.refresh();return}let c=t.get(a.target),d=c.parent.nodes.indexOf(c),u=c.parent.nodes.splice(d,1);if(a.append)t.nodes.push(...u),u.forEach(h=>h.parent=t);else{let h=t.get(a.moveBefore),f=h.parent.nodes.indexOf(h);u.forEach(m=>m.parent=h.parent),h.parent.nodes.splice(f,0,...u)}t.refresh(),r.finish()}else t.refresh()}}edit(e){let s=this,t=N(this.box).find("#node_"+p.escapeId(e)),i=t.find(".tsg-node-text"),o=this.trigger("edit",{target:e,el:t,textEl:i});if(o.isCancelled===!0)return;this.last.renaming=!0,t.addClass("tsg-editing"),i.addClass("tsg-focus").css("pointer-events","all").attr("contenteditable",p.isFirefox?"true":"plaintext-only").on("blur.node-editing",r=>{setTimeout(a,0)}).on("keydown.node-editing",r=>{let c=r;c.keyCode==13&&a(c),c.keyCode==27&&a(c,!0)}),i.get(0).focus();let l=i.text();return p.setCursorPosition(i[0],0,i.text().length),o.finish(),i.get(0);function a(r,c){let d=i.text();if(t.removeClass("tsg-editing"),i.removeClass("tsg-focus").css("pointer-events","none").removeAttr("contenteditable").off(".node-editing"),!c&&s.last.renaming&&l!==d){let u=s.trigger("rename",{target:e,text_previous:l,text_new:d,originalEvent:r});if(u.isCancelled===!0){i.text(l),s.last.renaming=!1,s.focus();return}s.set(e,{text:d}),u.finish()}c&&s.set(e,{text:l}),s.last.renaming=!1,s.focus()}}contextMenu(e,s){let t=this.get(e);Array.isArray(this.selected)?this.selected.includes(e)||this.click(e):e!=this.selected&&this.click(e);let i=this.trigger("contextMenu",{target:e,originalEvent:s,object:t,allowOnDisabled:!1});i.isCancelled!==!0&&(t.disabled&&!i.detail.allowOnDisabled||(this.menu.length>0&&(ie.hide(this.name+"_menu"),ie.show({name:this.name+"_menu",anchor:document.body,contextMenu:!0,items:this.menu,originalEvent:s})?.select?.(l=>{this.menuClick(e,l.detail)})),s.preventDefault&&s.preventDefault(),i.finish()))}menuClick(e,s={}){let t=this.trigger("menuClick",{target:e,...s});t.isCancelled!==!0&&t.finish()}goFlat(){let e=this.trigger("flat",{goFlat:!this.flat});e.isCancelled!==!0&&(this.flat=!this.flat,this.refresh(),this.flat?(this.nodes.forEach(s=>{s.group||(this.collapse(s.id),this.collapseAll(s.id))}),this.unselect()):this.nodes.forEach(s=>{s.group||(this.expand(s.id),this.expandAll(s.id))}),e.finish())}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=N(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;N(this.box).attr("name",this.name).addClass("tsg-reset tsg-sidebar").html(`<div>
266
266
  <div class="tsg-sidebar-top"></div>
267
267
  <input id="sidebar_${this.name}_focus" ${this.tabIndex?'tabindex="'+this.tabIndex+'"':""}
268
268
  style="position: absolute; top: 0; right: 1px; width: 1px; z-index: -1; opacity: 0"
@@ -331,7 +331,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
331
331
  >
332
332
  <div class="tsg-node-data">${C}</div>
333
333
  </div>
334
- <div class="tsg-node-sub" id="node_${g.id}_sub" style="${g.style}; ${!g.hidden&&g.expanded?"":"display: none;"}"></div>`)}return v}}mouseAction(e,s,t,i,o){let l,a=this.get(t);if(o==null&&(l=this.trigger("mouse"+e,{target:a.id,node:a,originalEvent:i})),o=="tooltip"){let c=p.lang(typeof a.text=="function"?a.text.call(this,a):a.text)+(a.count!=null?' - <span class="tsg-node-badge tsg-node-count">'+a.count+"</span>":"");(e=="Leave"||this.selected==a.id)&&(c=""),this.tooltip(s,c)}if(o=="handle")if(e=="click"){let r=this.handle.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.handle.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}if(o=="icon")if(e=="click"){let r=this.icon.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.icon.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}if(o=="badge")if(e=="click"){let r=this.badge?.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.badge?.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}l?.finish()}tooltip(e,s){let t=N(e).find(".tsg-node-data");s!==""?W.show({anchor:t.get(0),name:this.name+"_tooltip",html:s,position:"right|left"}):W.hide(this.name+"_tooltip")}otherTooltip(e,s){s!==""?W.show({anchor:e,name:this.name+"_tooltip",html:s,position:"top|bottom"}):W.hide(this.name+"_tooltip")}showPlus(e,s){N(e).find("span:nth-child(1)").css("color",s)}resize(){let e=Date.now(),s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0){if(this.box!=null){let i=N(this.box).get(0).getBoundingClientRect();N(this.box).css("overflow","hidden"),N(this.box).find(":scope > div").css({width:i.width+"px",height:i.height+"px"})}return s.finish(),Date.now()-e}}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(N(this.box).find(".tsg-sidebar-body").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}lock(e,s){p.lock(this.box,e,s)}unlock(e){p.unlock(this.box,e)}};var B=j,ke=class extends ne{active;reorder;flow;tooltip;tabs;routeData;last;right;style;tab_template;constructor(e){super(e.name),this.box=null,this.name="",this.active=null,this.reorder=!1,this.flow="down",this.tooltip="top|left",this.tabs=[],this.routeData={},this.last={},this.right="",this.style="",this.onClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onClose=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.tab_template={id:null,text:null,icon:null,route:null,hidden:!1,disabled:!1,closable:!1,tooltip:null,style:"",onClick:null,onRefresh:null,onClose:null};let s=e.tabs;delete e.tabs,Object.assign(this,e),Array.isArray(s)&&this.add(s),e.tabs=s,typeof this.box=="string"&&(this.box=B(this.box).get(0)),this.box&&this.render(this.box)}add(e){return this.insert(null,e)}insert(e,s){Array.isArray(s)||(s=[s]);let t=[];return s.forEach(i=>{if(i.id==null){console.log(`ERROR: The parameter "id" is required but not supplied. (obj: ${this.name})`);return}if(!p.checkUniqueId(i.id,this.tabs,"tabs",this.name))return;let o=Object.assign({},this.tab_template,i);if(e==null)this.tabs.push(o),t.push(this.animateInsert(null,o));else{let l=this.get(e,!0),a=this.tabs[l].id;this.tabs.splice(l,0,o),t.push(this.animateInsert(a,o))}}),Promise.all(t)}remove(...e){let s=0;return e.forEach(t=>{let i=this.get(t);i&&(s++,this.tabs.splice(this.get(i.id,!0),1),B(this.box).find(`#tabs_${this.name}_tab_${p.escapeId(i.id)}`).remove())}),this.resize(),s}select(e){return this.active==e||this.get(e)==null?!1:(this.active=e,this.refresh(),!0)}set(e,s){let t=this.get(e,!0);return t==null?!1:(p.extend(this.tabs[t],s),this.refresh(e),!0)}get(e,s){if(arguments.length===0){let t=[];for(let i=0;i<this.tabs.length;i++)this.tabs[i].id!=null&&t.push(this.tabs[i].id);return t}else for(let t=0;t<this.tabs.length;t++)if(this.tabs[t].id==e)return s===!0?t:this.tabs[t];return null}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.hidden===!1||(i.hidden=!1,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t),this.resize()})},15),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.hidden===!0||(i.hidden=!0,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t),this.resize()})},15),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.disabled===!1||(i.disabled=!1,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t)})},15),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.disabled===!0||(i.disabled=!0,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t)})},15),s}dragMove(e){if(!this.last.reordering)return;let s=this,t=this.last.moving,i=this.tabs[t.index],o=r(t.index,1),l=r(t.index,-1),a=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(i.id));if(t.divX>0&&o){let c=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(o.id)),d=a.get(0).clientWidth,u=c.get(0).clientWidth;if(d<u?(d=Math.floor(d/3),u=u-d):(d=Math.floor(u/3),u=u-d),t.divX>u){let h=this.tabs.indexOf(o);this.tabs.splice(t.index,0,this.tabs.splice(h,1)[0]),t.$tab.before(c.get(0)),t.$tab.css("opacity",0),Object.assign(this.last.moving,{index:h,divX:-d,x:e.pageX+d,left:t.left+t.divX+d});return}}if(t.divX<0&&l){let c=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(l.id)),d=a.get(0).clientWidth,u=c.get(0).clientWidth;if(d<u?(d=Math.floor(d/3),u=u-d):(d=Math.floor(u/3),u=u-d),Math.abs(t.divX)>u){let h=this.tabs.indexOf(l);this.tabs.splice(t.index,0,this.tabs.splice(h,1)[0]),c.before(t.$tab),t.$tab.css("opacity",0),Object.assign(t,{index:h,divX:d,x:e.pageX-d,left:t.left+t.divX-d});return}}function r(c,d){c+=d;let u=s.tabs[c];return u&&u.hidden?r(c,d):u}}mouseAction(e,s,t){let i=this.get(s),o=this.trigger("mouse"+e,{target:s,tab:i,object:i,originalEvent:t});if(!(o.isCancelled===!0||i?.disabled||i?.hidden)){switch(e){case"Enter":this.tooltipShow(s);break;case"Leave":this.tooltipHide(s);break;case"Down":this.initReorder(s,t);break;case"Up":break}o.finish()}}tooltipShow(e){let s=this.get(e),t=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)).get(0);if(this.tooltip==null||s?.disabled||this.last.reordering)return;let i=this.tooltip,o=s?.tooltip;typeof o=="function"&&(o=o.call(this,s)),W.show({anchor:t,name:this.name+"_tooltip",html:o,position:i})}tooltipHide(e){this.tooltip!=null&&W.hide(this.name+"_tooltip")}getTabHTML(e){let s=this.get(e,!0),t=this.tabs[s];if(t==null)return!1;t.text==null&&t.caption!=null&&(t.text=t.caption),t.tooltip==null&&t.hint!=null&&(t.tooltip=t.hint),t.caption!=null&&console.log("NOTICE: tabs tab.caption property is deprecated, please use tab.text. Tab -> ",t),t.hint!=null&&console.log("NOTICE: tabs tab.hint property is deprecated, please use tab.tooltip. Tab -> ",t);let i=t.text;typeof i=="function"&&(i=i.call(this,t)),i==null&&(i="");let o="",l="";t.hidden&&(l+="display: none;"),t.disabled&&(l+="opacity: 0.2;"),t.closable&&!t.disabled&&(o=`<div class="tsg-tab-close tsg-eaction ${this.active===t.id?"active":""}"
334
+ <div class="tsg-node-sub" id="node_${g.id}_sub" style="${g.style}; ${!g.hidden&&g.expanded?"":"display: none;"}"></div>`)}return v}}mouseAction(e,s,t,i,o){let l,a=this.get(t);if(o==null&&(l=this.trigger("mouse"+e,{target:a.id,node:a,originalEvent:i})),o=="tooltip"){let c=p.lang(typeof a.text=="function"?a.text.call(this,a):a.text)+(a.count!=null?' - <span class="tsg-node-badge tsg-node-count">'+a.count+"</span>":"");(e=="Leave"||this.selected==a.id)&&(c=""),this.tooltip(s,c)}if(o=="handle")if(e=="click"){let r=this.handle.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.handle.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}if(o=="icon")if(e=="click"){let r=this.icon.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.icon.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}if(o=="badge")if(e=="click"){let r=this.badge?.onClick;typeof r=="function"&&r.call(this,a,i)}else{let r=this.badge?.tooltip;typeof r=="function"&&(r=r.call(this,a,i)),e=="Leave"&&(r=""),this.otherTooltip(s,r)}l?.finish()}tooltip(e,s){let t=N(e).find(".tsg-node-data");s!==""?G.show({anchor:t.get(0),name:this.name+"_tooltip",html:s,position:"right|left"}):G.hide(this.name+"_tooltip")}otherTooltip(e,s){s!==""?G.show({anchor:e,name:this.name+"_tooltip",html:s,position:"top|bottom"}):G.hide(this.name+"_tooltip")}showPlus(e,s){N(e).find("span:nth-child(1)").css("color",s)}resize(){let e=Date.now(),s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0){if(this.box!=null){let i=N(this.box).get(0).getBoundingClientRect();N(this.box).css("overflow","hidden"),N(this.box).find(":scope > div").css({width:i.width+"px",height:i.height+"px"})}return s.finish(),Date.now()-e}}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(N(this.box).find(".tsg-sidebar-body").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}lock(e,s){p.lock(this.box,e,s)}unlock(e){p.unlock(this.box,e)}};var Q=j,ke=class extends ne{active;reorder;flow;tooltip;tabs;routeData;last;right;style;tab_template;constructor(e){super(e.name),this.box=null,this.name="",this.active=null,this.reorder=!1,this.flow="down",this.tooltip="top|left",this.tabs=[],this.routeData={},this.last={},this.right="",this.style="",this.onClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onClose=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.tab_template={id:null,text:null,icon:null,route:null,hidden:!1,disabled:!1,closable:!1,tooltip:null,style:"",onClick:null,onRefresh:null,onClose:null};let s=e.tabs;delete e.tabs,Object.assign(this,e),Array.isArray(s)&&this.add(s),e.tabs=s,typeof this.box=="string"&&(this.box=Q(this.box).get(0)),this.box&&this.render(this.box)}add(e){return this.insert(null,e)}insert(e,s){Array.isArray(s)||(s=[s]);let t=[];return s.forEach(i=>{if(i.id==null){console.log(`ERROR: The parameter "id" is required but not supplied. (obj: ${this.name})`);return}if(!p.checkUniqueId(i.id,this.tabs,"tabs",this.name))return;let o=Object.assign({},this.tab_template,i);if(e==null)this.tabs.push(o),t.push(this.animateInsert(null,o));else{let l=this.get(e,!0),a=this.tabs[l].id;this.tabs.splice(l,0,o),t.push(this.animateInsert(a,o))}}),Promise.all(t)}remove(...e){let s=0;return e.forEach(t=>{let i=this.get(t);i&&(s++,this.tabs.splice(this.get(i.id,!0),1),Q(this.box).find(`#tabs_${this.name}_tab_${p.escapeId(i.id)}`).remove())}),this.resize(),s}select(e){return this.active==e||this.get(e)==null?!1:(this.active=e,this.refresh(),!0)}set(e,s){let t=this.get(e,!0);return t==null?!1:(p.extend(this.tabs[t],s),this.refresh(e),!0)}get(e,s){if(arguments.length===0){let t=[];for(let i=0;i<this.tabs.length;i++)this.tabs[i].id!=null&&t.push(this.tabs[i].id);return t}else for(let t=0;t<this.tabs.length;t++)if(this.tabs[t].id==e)return s===!0?t:this.tabs[t];return null}show(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.hidden===!1||(i.hidden=!1,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t),this.resize()})},15),s}hide(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.hidden===!0||(i.hidden=!0,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t),this.resize()})},15),s}enable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.disabled===!1||(i.disabled=!1,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t)})},15),s}disable(...e){let s=[];return e.forEach(t=>{let i=this.get(t);!i||i.disabled===!0||(i.disabled=!0,s.push(i.id))}),setTimeout(()=>{s.forEach(t=>{this.refresh(t)})},15),s}dragMove(e){if(!this.last.reordering)return;let s=this,t=this.last.moving,i=this.tabs[t.index],o=r(t.index,1),l=r(t.index,-1),a=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(i.id));if(t.divX>0&&o){let c=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(o.id)),d=a.get(0).clientWidth,u=c.get(0).clientWidth;if(d<u?(d=Math.floor(d/3),u=u-d):(d=Math.floor(u/3),u=u-d),t.divX>u){let h=this.tabs.indexOf(o);this.tabs.splice(t.index,0,this.tabs.splice(h,1)[0]),t.$tab.before(c.get(0)),t.$tab.css("opacity",0),Object.assign(this.last.moving,{index:h,divX:-d,x:e.pageX+d,left:t.left+t.divX+d});return}}if(t.divX<0&&l){let c=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(l.id)),d=a.get(0).clientWidth,u=c.get(0).clientWidth;if(d<u?(d=Math.floor(d/3),u=u-d):(d=Math.floor(u/3),u=u-d),Math.abs(t.divX)>u){let h=this.tabs.indexOf(l);this.tabs.splice(t.index,0,this.tabs.splice(h,1)[0]),c.before(t.$tab),t.$tab.css("opacity",0),Object.assign(t,{index:h,divX:d,x:e.pageX-d,left:t.left+t.divX-d});return}}function r(c,d){c+=d;let u=s.tabs[c];return u&&u.hidden?r(c,d):u}}mouseAction(e,s,t){let i=this.get(s),o=this.trigger("mouse"+e,{target:s,tab:i,object:i,originalEvent:t});if(!(o.isCancelled===!0||i?.disabled||i?.hidden)){switch(e){case"Enter":this.tooltipShow(s);break;case"Leave":this.tooltipHide(s);break;case"Down":this.initReorder(s,t);break;case"Up":break}o.finish()}}tooltipShow(e){let s=this.get(e),t=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)).get(0);if(this.tooltip==null||s?.disabled||this.last.reordering)return;let i=this.tooltip,o=s?.tooltip;typeof o=="function"&&(o=o.call(this,s)),G.show({anchor:t,name:this.name+"_tooltip",html:o,position:i})}tooltipHide(e){this.tooltip!=null&&G.hide(this.name+"_tooltip")}getTabHTML(e){let s=this.get(e,!0),t=this.tabs[s];if(t==null)return!1;t.text==null&&t.caption!=null&&(t.text=t.caption),t.tooltip==null&&t.hint!=null&&(t.tooltip=t.hint),t.caption!=null&&console.log("NOTICE: tabs tab.caption property is deprecated, please use tab.text. Tab -> ",t),t.hint!=null&&console.log("NOTICE: tabs tab.hint property is deprecated, please use tab.tooltip. Tab -> ",t);let i=t.text;typeof i=="function"&&(i=i.call(this,t)),i==null&&(i="");let o="",l="";t.hidden&&(l+="display: none;"),t.disabled&&(l+="opacity: 0.2;"),t.closable&&!t.disabled&&(o=`<div class="tsg-tab-close tsg-eaction ${this.active===t.id?"active":""}"
335
335
  data-mousedown="stop" data-mouseup="clickClose|${t.id}|event">
336
336
  </div>`);let a="";return t.icon&&(a=`<span class="tsg-tab-icon ${t.icon}"></span>`),`
337
337
  <div id="tabs_${this.name}_tab_${t.id}" style="${l} ${t.style}"
@@ -342,19 +342,19 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
342
342
  data-mouseup="mouseAction|Up|${t.id}|event"
343
343
  data-click="click|${t.id}|event">
344
344
  ${a+p.lang(i)+o}
345
- </div>`}refresh(e){let s=Date.now();this.flow=="up"?B(this.box).addClass("tsg-tabs-up"):B(this.box).removeClass("tsg-tabs-up");let t=this.trigger("refresh",{target:e??this.name,object:this.get(e)});if(t.isCancelled!==!0){if(e==null)for(let i=0;i<this.tabs.length;i++)this.refresh(this.tabs[i].id);else{let i="#tabs_"+this.name+"_tab_"+p.escapeId(e),o=B(this.box).find(i),l=this.getTabHTML(e);o.length===0?l&&B(this.box).find("#tabs_"+this.name+"_right").before(l):B(this.box).find(".tab-animate-insert").length==0&&l&&o.replace(l),p.bindEvents(B(this.box).find(`${i}, ${i} .tsg-eaction`),this)}return B(this.box).find("#tabs_"+this.name+"_right").html(this.right),t.finish(),Date.now()-s}}render(e){let s=Date.now();typeof e=="string"&&(e=B(e).get(0));let t=this.trigger("render",{target:this.name,box:e??this.box});if(t.isCancelled===!0)return;if(e!=null&&(this.unmount(),this.box=e),!this.box)return!1;let i=`
345
+ </div>`}refresh(e){let s=Date.now();this.flow=="up"?Q(this.box).addClass("tsg-tabs-up"):Q(this.box).removeClass("tsg-tabs-up");let t=this.trigger("refresh",{target:e??this.name,object:this.get(e)});if(t.isCancelled!==!0){if(e==null)for(let i=0;i<this.tabs.length;i++)this.refresh(this.tabs[i].id);else{let i="#tabs_"+this.name+"_tab_"+p.escapeId(e),o=Q(this.box).find(i),l=this.getTabHTML(e);o.length===0?l&&Q(this.box).find("#tabs_"+this.name+"_right").before(l):Q(this.box).find(".tab-animate-insert").length==0&&l&&o.replace(l),p.bindEvents(Q(this.box).find(`${i}, ${i} .tsg-eaction`),this)}return Q(this.box).find("#tabs_"+this.name+"_right").html(this.right),t.finish(),Date.now()-s}}render(e){let s=Date.now();typeof e=="string"&&(e=Q(e).get(0));let t=this.trigger("render",{target:this.name,box:e??this.box});if(t.isCancelled===!0)return;if(e!=null&&(this.unmount(),this.box=e),!this.box)return!1;let i=`
346
346
  <div class="tsg-tabs-line"></div>
347
347
  <div class="tsg-scroll-wrapper tsg-eaction" data-mousedown="resize">
348
348
  <div id="tabs_${this.name}_right" class="tsg-tabs-right">${this.right}</div>
349
349
  </div>
350
350
  <div class="tsg-scroll-left tsg-eaction" data-click='["scroll","left"]'></div>
351
- <div class="tsg-scroll-right tsg-eaction" data-click='["scroll","right"]'></div>`;return B(this.box).attr("name",this.name).addClass("tsg-reset tsg-tabs").html(i),B(this.box).length>0&&(B(this.box)[0].style.cssText+=this.style),p.bindEvents(B(this.box).find(".tsg-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),t.finish(),this.refresh(),this.resize(),Date.now()-s}initReorder(e,s){if(!this.reorder)return;let t=this,i=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),o=this.get(e,!0),l=B(i.get(0).cloneNode(!0)),a;l.attr("id","#tabs_"+this.name+"_tab_ghost"),this.last.moving={index:o,indexFrom:o,$tab:i,$ghost:l,divX:0,left:i.get(0).getBoundingClientRect().left,parentX:B(this.box).get(0).getBoundingClientRect().left,x:s.pageX,opacity:i.css("opacity")},B(document).off(".w2uiTabReorder").on("mousemove.w2uiTabReorder",function(r){let c=r;if(!t.last.reordering){if(a=t.trigger("reorder",{target:t.tabs[o].id,indexFrom:o,tab:t.tabs[o]}),a.isCancelled===!0)return;W.hide(t.name+"_tooltip"),t.last.reordering=!0,l.addClass("moving"),l.css({"pointer-events":"none",position:"absolute",left:i.get(0).getBoundingClientRect().left}),i.css("opacity",0),B(t.box).find(".tsg-scroll-wrapper").append(l.get(0)),B(t.box).find(".tsg-tab-close").hide()}t.last.moving.divX=c.pageX-t.last.moving.x,l.css("left",t.last.moving.left-t.last.moving.parentX+t.last.moving.divX+"px"),t.dragMove(c)}).on("mouseup.w2uiTabReorder",function(){B(document).off(".w2uiTabReorder"),l.css({transition:"0.1s",left:t.last.moving.$tab.get(0).getBoundingClientRect().left-t.last.moving.parentX}),B(t.box).find(".tsg-tab-close").show(),l.remove(),i.css({opacity:t.last.moving.opacity}),t.last.reordering&&a.finish({indexTo:t.last.moving.index}),t.last.reordering=!1})}scroll(e,s){return new Promise((t,i)=>{let o=B(this.box).find(".tsg-scroll-wrapper"),l=o.get(0),a=l.scrollLeft,r=o.find(".tsg-tabs-right").get(0),c=o.parent().get(0).getBoundingClientRect().width,d=a+r.offsetLeft+r.clientWidth;switch(e){case"left":{let u=a-c+50;u<=0&&(u=0),l.scrollTo({top:0,left:u,behavior:s?"auto":"smooth"});break}case"right":{let u=a+c-50;u>=d-c&&(u=d-c),l.scrollTo({top:0,left:u,behavior:s?"auto":"smooth"});break}}setTimeout(()=>{this.resize(),t()},s?0:350)})}scrollIntoView(e,s){return new Promise((t,i)=>{if(e==null&&(e=this.active),this.get(e)==null)return;B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)).get(0).scrollIntoView({block:"start",inline:"center",behavior:s?"auto":"smooth"}),setTimeout(()=>{this.resize(),t()},s?0:500)})}resize(){let e=Date.now();if(this.box==null)return;let s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0){if(this.box!=null){let t=B(this.box);t.find(".tsg-scroll-left, .tsg-scroll-right").hide();let i=t.find(".tsg-scroll-wrapper").get(0),o=t.find(".tsg-tabs-right"),l=t.get(0).getBoundingClientRect().width,a=o.length>0?o[0].offsetLeft+o[0].clientWidth:0;l<a&&(i.scrollLeft>0&&t.find(".tsg-scroll-left").show(),l<a-i.scrollLeft&&t.find(".tsg-scroll-right").show())}return s.finish(),Date.now()-e}}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(B(this.box).find("#tabs_"+this.name+"_right").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}click(e,s){if(s&&B(s.target).hasClass("tsg-tab-close"))return;let t=this.get(e);if(t==null||t.disabled||this.last.reordering)return!1;let i=this.trigger("click",{target:e,tab:t,object:t,originalEvent:s});if(i.isCancelled!==!0){if(B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(this.active)).removeClass("active"),this.active=t.id,B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(this.active)).addClass("active"),typeof t.route=="string"){let o=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",l=p.parseRoute(o);if(l.keys.length>0)for(let a=0;a<l.keys.length;a++){let r=l.keys[a];r==null||this.routeData[r.name]==null||(o=o.replace(new RegExp(":"+r.name,"g"),this.routeData[r.name]))}setTimeout(()=>{window.location.hash=o},1)}i.finish()}}clickClose(e,s){let t=this.get(e);if(t==null||t.disabled)return!1;let i=this.trigger("close",{target:e,object:t,tab:t,originalEvent:s});i.isCancelled!==!0&&(this.animateClose(e).then(()=>{this.remove(e),i.finish(),this.refresh()}),s?.stopPropagation())}animateClose(e){return new Promise((s,t)=>{let i=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),l=`<div class="tab-animate-close" style="display: inline-block; flex-shrink: 0; width: ${i.get(0).clientWidth||0}px; transition: width 0.25s"></div>`,a=i.replace(l);setTimeout(()=>{a.css({width:"0px"})},1),setTimeout(()=>{a.remove(),this.resize(),s()},500)})}animateInsert(e,s){return new Promise((t,i)=>{let o=B(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),l=this.getTabHTML(s.id),a=j.html(l);if(o.length==0)o=B(this.box).find("#tabs_tabs_right"),o.before(a),this.resize();else{a.css({opacity:0}),B(this.box).find("#tabs_tabs_right").before(a.get(0));let c=B(this.box).find("#"+a.attr("id")).get(0)?.clientWidth??0,d=j.html('<div class="tab-animate-insert" style="flex-shrink: 0; width: 0; transition: width 0.25s"></div>');o.before(d),a.hide(),d.before(a[0]),setTimeout(()=>{d.css({width:c+"px"})},1),setTimeout(()=>{d.remove(),a.css({opacity:1}).show(),this.refresh(s.id),this.resize(),t()},500)}})}};var z=j,le=()=>se,ue=["top","left","main","preview","right","bottom"],rt=class extends ne{panels;last;padding;resizer;style;onShow;onHide;onResizing;onResizerClick;onRender;onRefresh;onChange;onResize;onDestroy;panel_template;constructor(e){super(e.name),this.box=null,this.name="",this.panels=[],this.last={},this.padding=1,this.resizer=4,this.style="",this.onShow=null,this.onHide=null,this.onResizing=null,this.onResizerClick=null,this.onRender=null,this.onRefresh=null,this.onChange=null,this.onResize=null,this.onDestroy=null,this.panel_template={type:null,title:"",size:100,minSize:20,maxSize:!1,hidden:!1,resizable:!1,overflow:"auto",style:"",html:"",tabs:null,toolbar:null,width:null,height:null,show:{toolbar:!1,tabs:!1},removed:null,onRefresh:null,onShow:null,onHide:null},Object.assign(this,e),Array.isArray(this.panels)||(this.panels=[]),this.panels.forEach((i,o)=>{this.panels[o]=p.extend({},this.panel_template,i),(p.isPlainObject(i.tabs)||Array.isArray(i.tabs))&&s(this,i.type),(p.isPlainObject(i.toolbar)||Array.isArray(i.toolbar))&&t(this,i.type)}),ue.forEach(i=>{this.get(i)==null&&this.panels.push(p.extend({},this.panel_template,{type:i,hidden:i!=="main",size:50}))}),typeof this.box=="string"&&(this.box=z(this.box).get(0)),this.box&&this.render(this.box);function s(i,o,l){let a=o!=null?i.get(o):null;if(a!=null&&l==null&&(l=a.tabs),a==null||l==null)return!1;Array.isArray(l)&&(l={tabs:l});let r=i.name+"_"+(o??"")+"_tabs";return le()[r]&&le()[r].destroy(),a.tabs=new ke(p.extend({},l,{owner:i,name:i.name+"_"+(o??"")+"_tabs"})),a.show.tabs=!0,!0}function t(i,o,l){let a=o!=null?i.get(o):null;if(a!=null&&l==null&&(l=a.toolbar),a==null||l==null)return!1;Array.isArray(l)&&(l={items:l});let r=i.name+"_"+(o??"")+"_toolbar";return le()[r]&&le()[r].destroy(),a.toolbar=new ye(p.extend({},l,{owner:i,name:i.name+"_"+(o??"")+"_toolbar"})),a.show.toolbar=!0,!0}}html(e,s,t){let i=this.get(e),o={panel:e,html:i.html,error:!1,cancelled:!1,removed(d){typeof d=="function"&&(i.removed=d)}};if(typeof i.removed=="function"&&(i.removed({panel:e,html:i.html,html_new:s,transition:t||"none"}),i.removed=null),e=="css")return z(this.box).find("#layout_"+this.name+"_panel_css").html("<style>"+s+"</style>"),o.status=!0,o;if(i==null)return console.log("ERROR: incorrect panel name. Panel name can be main, left, right, top, bottom, preview or css"),o.error=!0,o;if(s==null)return o;let l=this.trigger("change",{target:e,panel:i,html_new:s,transition:t});if(l.isCancelled===!0)return o.cancelled=!0,o;let a="#layout_"+this.name+"_panel_"+i.type,r=z(this.box).find(a+'> [data-role="panel-content"]'),c=0;if(r.length>0&&(z(this.box).find(a).get(0).scrollTop=0,c=z(r).css("top")),typeof i.html.unmount=="function"&&i.html.unmount(),r.addClass("tsg-panel-content"),r.removeAttr("style"),this.resizeBoxes(e),i.html==="")i.html=s,this.refresh(e);else if(i.html=s,i.hidden)l.finish();else if(t!=null&&t!==""){z(this.box).addClass("animating");let d=z(this.box).find(a+'> [data-role="panel-content"]');d.after('<div class="tsg-panel-content new-panel" data-role="panel-content" style="'+d[0].style.cssText+'"></div>');let u=z(this.box).find(a+'> [data-role="panel-content"].new-panel');d.css("top",c),u.css("top",c),typeof s=="object"?(s.box=u[0],s.render()):u.hide().html(s);let h,f;switch(t){case"slide-left":h="left: -"+p.getSize(z(this.box),"width")+"px",f="left: 0px";break;case"slide-right":h="left: "+p.getSize(z(this.box),"width")+"px",f="left: 0px";break;case"slide-down":h="top: -"+p.getSize(z(this.box),"height")+"px",f="top: "+c+"px";break;case"slide-up":h="top: "+p.getSize(z(this.box),"height")+"px",f="top: "+c+"px";break;case"flip-left":h="transform: rotate(90deg)",f="transform: rotate(0deg)";break;case"flip-right":h="transform: rotate(-90deg)",f="transform: rotate(0deg)";break;case"flip-down":h="transform: rotate(-180deg)",f="transform: rotate(0deg)";break;case"flip-up":h="transform: rotate(180deg)",f="transform: rotate(0deg)";break;case"pop-in":h="transform: scale(.5); opacity: 0;",f="transform: scale(1); opacity: 1;";break;case"pop-out":h="transform: scale(1); opacity: 1;",f="transform: scale(.5); opacity: 0;";break;default:h="",f=""}d.addClass("previous").css({cssText:"transition: .5s; "+h}),u.addClass("current").css({cssText:"transition: .5s; "+f}),setTimeout(()=>{z(this.box).removeClass("animating"),d.remove(),u.removeClass("new-panel current"),z(this.box).find(a+'> [data-role="panel-content"]').css({cssText:""}),l.finish()},500)}else this.refresh(e),l.finish();return o}message(e,s){let t=this.get(e),i=z(this.box).find("#layout_"+this.name+"_panel_"+t.type),o=i.css("overflow");i.css("overflow","hidden");let l=p.message({owner:this,box:i.get(0),after:".tsg-panel-title",param:e},s);return l&&l.self.on("close:after",()=>{i.css("overflow",o)}),l}confirm(e,s){let t=this.get(e),i=z(this.box).find("#layout_"+this.name+"_panel_"+t.type),o=i.css("overflow");i.css("overflow","hidden");let l=p.confirm({owner:this,box:i.get(0),after:".tsg-panel-title",param:e},s);return l&&l.self.on("close:after",()=>{i.css("overflow",o)}),l}load(e,s,t){return new Promise((i,o)=>{(e=="css"||this.get(e)!=null)&&s!=null?fetch(s).then(l=>l.text()).then(l=>{this.resize(),i(this.html(e,l,t))}):o()})}sizeTo(e,s,t){return this.get(e)==null?!1:(z(this.box).find(":scope > div > .tsg-panel").css("transition",t!==!0?".2s":"0s"),setTimeout(()=>{this.set(e,{size:s})},1),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),this.resize()},300),!0)}show(e,s){let t=this.trigger("show",{target:e,thisect:this.get(e),immediate:s});if(t.isCancelled===!0)return;let i=this.get(e);return i==null?!1:(i.hidden=!1,s===!0?(z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"1"}),t.finish(),this.resize()):(z(this.box).addClass("animating"),z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),z(this.box).find(":scope > div > .tsg-panel").css("transition",".2s"),setTimeout(()=>{this.resize()},1),setTimeout(()=>{z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"1"})},250),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),z(this.box).removeClass("animating"),t.finish(),this.resize()},300)),!0)}hide(e,s){let t=this.trigger("hide",{target:e,object:this.get(e),immediate:s});if(t.isCancelled===!0)return;let i=this.get(e);return i==null?!1:(i.hidden=!0,s===!0?(z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),t.finish(),this.resize()):(z(this.box).addClass("animating"),z(this.box).find(":scope > div > .tsg-panel").css("transition",".2s"),z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),setTimeout(()=>{this.resize()},1),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),z(this.box).removeClass("animating"),t.finish(),this.resize()},300)),!0)}toggle(e,s){let t=this.get(e);return t==null?!1:t.hidden?this.show(e,s):this.hide(e,s)}set(e,s){let t=this.get(e,!0);return t==null?!1:(p.extend(this.panels[t],s),(s.html!=null||s.resizable!=null)&&this.refresh(e),this.resize(),!0)}get(e,s){for(let t=0;t<this.panels.length;t++){let i=this.panels[t];if(i!=null&&i.type==e)return s===!0?t:i}return null}el(e){let s=z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-content"]');return s.length!=1?null:s[0]}hideToolbar(e){let s=this.get(e);s&&(s.show.toolbar=!1,z(this.box).find(`#layout_${this.name}_panel_${e} > [data-role="panel-toolbar"]`).hide(),this.resize())}showToolbar(e){let s=this.get(e);s&&(s.show.toolbar=!0,z(this.box).find(`#layout_${this.name}_panel_${e} > [data-role="panel-toolbar"]`).show(),this.resize())}toggleToolbar(e){let s=this.get(e);s&&(s.show.toolbar?this.hideToolbar(e):this.showToolbar(e))}assignToolbar(e,s){typeof s=="string"&&le()[s]!=null&&(s=le()[s]);let t=this.get(e);t.toolbar=s;let i=z(this.box).find(e+'> [data-role="panel-toolbar"]');t.toolbar!=null?(i.attr("name")!=t.toolbar.name?t.toolbar.render(i.get(0)):t.toolbar!=null&&t.toolbar.refresh(),typeof s!="string"&&s&&(s.owner=this),this.showToolbar(e),this.refresh(e)):(i.html(""),this.hideToolbar(e))}hideTabs(e){let s=this.get(e);s&&(s.show.tabs=!1,z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-tabs"]').hide(),this.resize())}showTabs(e){let s=this.get(e);s&&(s.show.tabs=!0,z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-tabs"]').show(),this.resize())}toggleTabs(e){let s=this.get(e);s&&(s.show.tabs?this.hideTabs(e):this.showTabs(e))}assignTabs(e,s){typeof s=="string"&&le()[s]!=null&&(s=le()[s]);let t=this.get(e);t.tabs=s;let i=z(this.box).find(e+'> [data-role="panel-tabs"]');t.tabs!=null?(i.attr("name")!=t.tabs.name?t.tabs.render(i.get(0)):t.tabs!=null&&t.tabs.refresh(),typeof s!="string"&&s&&(s.owner=this),this.showTabs(e),this.refresh(e)):(i.html(""),this.hideTabs(e))}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=z(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0)return;if(e!=null&&(this.unmount(),this.box=e),!this.box)return!1;z(this.box).attr("name",this.name).addClass("tsg-layout").html("<div></div>"),z(this.box).length>0&&(z(this.box)[0].style.cssText+=this.style);for(let r=0;r<ue.length;r++){let c='<div id="layout_'+this.name+"_panel_"+ue[r]+'" class="tsg-panel"> <div class="tsg-panel-title"></div> <div class="tsg-panel-tabs" data-role="panel-tabs"></div> <div class="tsg-panel-toolbar" data-role="panel-toolbar"></div> <div class="tsg-panel-content" data-role="panel-content"></div></div><div id="layout_'+this.name+"_resizer_"+ue[r]+'" class="tsg-resizer"></div>';z(this.box).find(":scope > div").append(c)}return z(this.box).find(":scope > div").append('<div id="layout_'+this.name+'_panel_css" style="position: absolute; top: 10000px;"></div>'),this.refresh(),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),i.finish(),setTimeout(()=>{t.last.events={resizeStart:o,mouseMove:a,mouseUp:l},this.resize()},0),Date.now()-s;function o(r,c){if(!t.box)return;c||(c=window.event),z(document).off("mousemove",t.last.events.mouseMove).on("mousemove",t.last.events.mouseMove),z(document).off("mouseup",t.last.events.mouseUp).on("mouseup",t.last.events.mouseUp),t.last.resize={type:r,x:c.screenX,y:c.screenY,diff_x:0,diff_y:0,value:0},ue.forEach(u=>{let h=z(t.el(u)).find(".tsg-lock");h.length>0?h.data("locked","yes"):t.lock(u,{opacity:0})});let d=z(t.box).find("#layout_"+t.name+"_resizer_"+r).get(0);(r=="left"||r=="right")&&(t.last.resize.value=parseInt(d.style.left)),(r=="top"||r=="preview"||r=="bottom")&&(t.last.resize.value=parseInt(d.style.top))}function l(r){if(t.box&&(r||(r=window.event),z(document).off("mousemove",t.last.events.mouseMove),z(document).off("mouseup",t.last.events.mouseUp),t.last.resize!=null)){if(ue.forEach(c=>{let d=z(t.el(c)).find(".tsg-lock");d.data("locked")=="yes"?d.removeData("locked"):t.unlock(c)}),t.last.diff_x!==0||t.last.resize.diff_y!==0){let c=t.get("top"),d=t.get("bottom"),u=t.get(t.last.resize.type),h=p.getSize(z(t.box),"width"),f=p.getSize(z(t.box),"height"),m=String(u.size),y,x;switch(t.last.resize.type){case"top":y=parseInt(u.sizeCalculated)+t.last.resize.diff_y,x=0;break;case"bottom":y=parseInt(u.sizeCalculated)-t.last.resize.diff_y,x=0;break;case"preview":y=parseInt(u.sizeCalculated)-t.last.resize.diff_y,x=(c&&!c.hidden?c.sizeCalculated:0)+(d&&!d.hidden?d.sizeCalculated:0);break;case"left":y=parseInt(u.sizeCalculated)+t.last.resize.diff_x,x=0;break;case"right":y=parseInt(u.sizeCalculated)-t.last.resize.diff_x,x=0;break;default:y=0,x=0}m.substr(m.length-1)=="%"?u.size=Math.floor(y*100/(u.type=="left"||u.type=="right"?h:f-x)*100)/100+"%":String(u.size).substr(0,1)=="-"?u.size=parseInt(u.size)-u.sizeCalculated+y:u.size=y,t.resize()}z(t.box).find("#layout_"+t.name+"_resizer_"+t.last.resize.type).removeClass(null).addClass("active"),z(t.box).find("#layout_"+t.name+"_resizer_"+t.last.resize.type).removeClass("active"),delete t.last.resize}}function a(r){if(!t.box||(r||(r=window.event),t.last.resize==null))return;let c=t.get(t.last.resize.type),d=t.last.resize,u=t.trigger("resizing",{target:t.name,object:c,originalEvent:r,panel:d?d.type:"all",diff_x:d?d.diff_x:0,diff_y:d?d.diff_y:0});if(u.isCancelled===!0)return;let h=z(t.box).find("#layout_"+t.name+"_resizer_"+d.type),f=r.screenX-d.x,m=r.screenY-d.y,y=t.get("main");h.hasClass("active")||h.addClass("active");let x=f,b=m;switch(d.type){case"left":c.minSize-x>c.width&&(x=c.minSize-c.width),c.maxSize&&c.width+x>c.maxSize&&(x=c.maxSize-c.width),y.minSize+x>y.width&&(x=y.width-y.minSize);break;case"right":c.minSize+x>c.width&&(x=c.width-c.minSize),c.maxSize&&c.width-x>c.maxSize&&(x=c.width-c.maxSize),y.minSize-x>y.width&&(x=y.minSize-y.width);break;case"top":c.minSize-b>c.height&&(b=c.minSize-c.height),c.maxSize&&c.height+b>c.maxSize&&(b=c.maxSize-c.height),y.minSize+b>y.height&&(b=y.height-y.minSize);break;case"preview":case"bottom":c.minSize+b>c.height&&(b=c.height-c.minSize),c.maxSize&&c.height-b>c.maxSize&&(b=c.height-c.maxSize),y.minSize-b>y.height&&(b=y.minSize-y.height);break}switch(d.diff_x=x,d.diff_y=b,d.type){case"top":case"preview":case"bottom":d.diff_x=0,h.length>0&&(h[0].style.top=d.value+d.diff_y+"px");break;case"left":case"right":d.diff_y=0,h.length>0&&(h[0].style.left=d.value+d.diff_x+"px");break}u.finish()}}unmount(){super.unmount(),this.panels.forEach(e=>{e.tabs?.unmount?.(),e.toolbar?.unmount?.()}),this.last.observeResize?.disconnect()}destroy(){let e=this.trigger("destroy",{target:this.name});if(e.isCancelled!==!0)return le()[this.name]==null?!1:(this.panels.forEach(s=>{s.tabs?.destroy?.(),s.toolbar?.destroy?.()}),z(this.box).find("#layout_"+this.name+"_panel_main").length>0&&this.unmount(),delete le()[this.name],e.finish(),this.last.events&&this.last.events.resize&&z(window).off("resize",this.last.events.resize),!0)}refresh(e){let s=this,t=Date.now(),i=s.trigger("refresh",{target:e??s.name,object:e!=null?s.get(e):null});if(i.isCancelled!==!0){if(typeof e=="string"){let o=s.get(e);if(o==null)return;let l="#layout_"+s.name+"_panel_"+o.type,a="#layout_"+s.name+"_resizer_"+o.type;if(z(s.box).find(l).css({display:o.hidden?"none":"block"}),o.resizable?z(s.box).find(a).show():z(s.box).find(a).hide(),typeof o.html=="object"&&typeof o.html.render=="function")o.html.box=z(s.box).find(l+'> [data-role="panel-content"]')[0],setTimeout(()=>{if(z(s.box).find(l+'> [data-role="panel-content"]').length>0){let c=z(s.box).find(l+'> [data-role="panel-content"]').removeClass(null).removeAttr("name").addClass("tsg-panel-content");c.css("overflow",o.overflow)[0].style.cssText+=";"+o.style}o.html&&typeof o.html.render=="function"&&o.html.render()},1);else if(z(s.box).find(l+'> [data-role="panel-content"]').length>0){let c=z(s.box).find(l+'> [data-role="panel-content"]').removeClass(null).removeAttr("name").addClass("tsg-panel-content");c.html(o.html).css("overflow",o.overflow)[0].style.cssText+=";"+o.style}let r=z(s.box).find(l+'> [data-role="panel-tabs"]');o.show.tabs?(r.attr("name")!=o.tabs?.name&&o.tabs!=null?o.tabs.render(r.get(0)):o.tabs.refresh(),r.addClass("tsg-panel-tabs")):(r.html("").removeAttr("name").removeClass(null),r.css("display","none").hide()),r=z(s.box).find(l+'> [data-role="panel-toolbar"]'),o.show.toolbar?(r.attr("name")!=o.toolbar?.name&&o.toolbar!=null?o.toolbar.render(r.get(0)):o.toolbar.refresh(),r.addClass("tsg-panel-toolbar")):(r.html("").removeAttr("name").removeClass(null),r.css("display","none").hide()),r=z(s.box).find(l+"> .tsg-panel-title"),o.title?r.html(o.title).show():r.html("").hide()}else{if(z(s.box).find("#layout_"+s.name+"_panel_main").length===0){s.render();return}s.resize();for(let o=0;o<this.panels.length;o++){let l=this.panels[o];l!=null&&s.refresh(l.type??void 0)}}return i.finish(),Date.now()-t}}resize(){if(!this.box)return!1;let e=Date.now(),s=this.last.resize,t=this.trigger("resize",{target:this.name,panel:s?s.type:"all",diff_x:s?s.diff_x:0,diff_y:s?s.diff_y:0});if(t.isCancelled===!0)return;this.padding<0&&(this.padding=0);let i=p.getSize(z(this.box),"width"),o=p.getSize(z(this.box),"height"),l=this,a=this.get("main"),r=this.get("preview"),c=this.get("left"),d=this.get("right"),u=this.get("top"),h=this.get("bottom"),f=r!=null&&r.hidden!==!0,m=c!=null&&c.hidden!==!0,y=d!=null&&d.hidden!==!0,x=u!=null&&u.hidden!==!0,b=h!=null&&h.hidden!==!0,g,v,w,T;for(let _=0;_<ue.length;_++){let C=ue[_];if(C==null||C==="main")continue;let D=this.get(C);if(!D)continue;let O=String(D.size||0);if(O.substr(O.length-1)=="%"){let I=o;D.type=="preview"&&(I=I-(u&&!u.hidden?u.sizeCalculated:0)-(h&&!h.hidden?h.sizeCalculated:0)),D.sizeCalculated=parseInt(String((D.type=="left"||D.type=="right"?i:I)*parseFloat(D.size)/100))}else D.sizeCalculated=parseInt(D.size);D.sizeCalculated=Math.max(D.sizeCalculated,parseInt(D.minSize))}return parseInt(d.size)<0&&(m&&parseInt(c.size)<0?console.log("ERROR: you cannot have both left panel.size and right panel.size be negative."):d.sizeCalculated=i-(m?c.sizeCalculated:0)+parseInt(d.size)),parseInt(c.size)<0&&(y&&parseInt(d.size)<0?console.log("ERROR: you cannot have both left panel.size and right panel.size be negative."):c.sizeCalculated=i-(y?d.sizeCalculated:0)+parseInt(c.size)),parseInt(r.size)<0&&(r.sizeCalculated=o+parseInt(r.size),r.sizeCalculated>o&&(r.sizeCalculated=o)),u!=null&&u.hidden!==!0?(g=0,v=0,w=i,T=u.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_top").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),u.width=w,u.height=T,u.resizable&&(v=u.sizeCalculated-(this.padding===0?this.resizer:0),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_top").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"top",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("top",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_top").hide(),z(this.box).find("#layout_"+this.name+"_resizer_top").hide()),c!=null&&c.hidden!==!0?(g=0,v=0+(x?u.sizeCalculated+this.padding:0),w=c.sizeCalculated,T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_left").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),c.width=w,c.height=T,c.resizable&&(g=c.sizeCalculated-(this.padding===0?this.resizer:0),w=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_left").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ew-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"left",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("left",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_left").hide(),z(this.box).find("#layout_"+this.name+"_resizer_left").hide()),d!=null&&d.hidden!==!0?(g=i-d.sizeCalculated,v=0+(x?u.sizeCalculated+this.padding:0),w=d.sizeCalculated,T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_right").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),d.width=w,d.height=T,d.resizable&&(g=g-this.padding,w=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_right").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ew-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"right",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("right",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_right").hide(),z(this.box).find("#layout_"+this.name+"_resizer_right").hide()),h!=null&&h.hidden!==!0?(g=0,v=o-h.sizeCalculated,w=i,T=h.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_bottom").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),h.width=w,h.height=T,h.resizable&&(v=v-(this.padding===0?0:this.padding),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_bottom").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"bottom",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("bottom",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_bottom").hide(),z(this.box).find("#layout_"+this.name+"_resizer_bottom").hide()),g=0+(m?c.sizeCalculated+this.padding:0),v=0+(x?u.sizeCalculated+this.padding:0),w=i-(m?c.sizeCalculated+this.padding:0)-(y?d.sizeCalculated+this.padding:0),T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0)-(f?r.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_main").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),a.width=w,a.height=T,r!=null&&r.hidden!==!0?(g=0+(m?c.sizeCalculated+this.padding:0),v=o-(b?h.sizeCalculated+this.padding:0)-r.sizeCalculated,w=i-(m?c.sizeCalculated+this.padding:0)-(y?d.sizeCalculated+this.padding:0),T=r.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_preview").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),r.width=w,r.height=T,r.resizable&&(v=v-(this.padding===0?0:this.padding),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_preview").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"preview",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("preview",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_preview").hide(),z(this.box).find("#layout_"+this.name+"_resizer_preview").hide()),this.resizeBoxes(),t.finish(),Date.now()-e}resizeBoxes(e){let s=ue;!e&&typeof e=="string"&&s.slice(),s.forEach((t,i)=>{let o=ue[i]!=null?this.get(ue[i]):null,l=`#layout_${this.name}_panel_${t} > `,a=0;if(o){if(o.title){let r=z(this.box).find(l+".tsg-panel-title").css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}if(o.show.tabs){let r=z(this.box).find(l+'[data-role="panel-tabs"]').css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}if(o.show.toolbar){let r=z(this.box).find(l+'[data-role="panel-toolbar"]').css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}}z(this.box).find(l+'[data-role="panel-content"]').css({display:"block",top:a+"px"})})}lock(e,s,t){if(ue.indexOf(e)==-1){console.log("ERROR: First parameter needs to be the a valid panel name.");return}p.lock("#layout_"+this.name+"_panel_"+e,s,t)}unlock(e,s){if(ue.indexOf(e)==-1){console.log("ERROR: First parameter needs to be the a valid panel name.");return}let t="#layout_"+this.name+"_panel_"+e;p.unlock(t,s)}};function qt(n,e,s){let t=0;s===void 0?(s=e,e=n.columns.length):(typeof e=="string"&&(e=n.getColumn(e,!0)),e==null&&(e=n.columns.length)),Array.isArray(s)||(s=[s]);for(let i=0;i<s.length;i++){let o=p.extend({},n.colTemplate,s[i]);if(n.columns.splice(e,0,o),s[i].searchable){let l=s[i].searchable,a="";s[i].searchable===!0&&(l="text",a='size="20"'),n.addSearch({field:s[i].field,label:s[i].text,type:l,attr:a})}e++,t++}return n.refresh(),t}function Wt(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.columns.length-1;o>=0;o--)n.columns[o].field==i&&(n.columns[o].searchable&&n.removeSearch(i),n.columns.splice(o,1),s++)}return n.refresh(),s}function Yt(n,e,s){if(e===void 0){let t=[];for(let i=0;i<n.columns.length;i++)t.push(n.columns[i].field);return t}for(let t=0;t<n.columns.length;t++)if(n.columns[t].field==e)return s===!0?t:n.columns[t];return null}function Xt(n,e,s){let t=0;return e=Array.isArray(e)?e:[e],e.forEach(i=>{n.columns.forEach(o=>{if(o.field==i){let l=p.clone(s);Object.keys(l).forEach(a=>{typeof l[a]=="function"&&(l[a]=l[a](o)),o[a]!=l[a]&&t++}),p.extend(o,l)}})}),t>0&&n.refresh(),t}function Kt(n,...e){return n.updateColumn(e,{hidden(s){return!s.hidden}})}function Jt(n,...e){return n.updateColumn(e,{hidden:!1})}function Zt(n,...e){return n.updateColumn(e,{hidden:!0})}var Ge=j;function es(n,e){if(e!=null)Ge(n.box).find(`#grid_${n.name}_footer`).find(".tsg-footer-left").html(e);else{let s="",t=n.getSelection();if(t.length>0&&(n.show.statusSelection&&t.length>1&&(s=String(t.length).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+p.settings.groupSymbol)+" "+p.lang("selected")),n.show.statusRecordID&&t.length==1)){let i=t[0];typeof i=="object"&&(i=i.recid+", "+p.lang("Column")+": "+i.column),s=p.lang("Record ID")+": "+i+" "}Ge(n.box).find("#grid_"+n.name+"_footer .tsg-footer-left").html(s)}}function ts(n,e,s){let t=[n.box,e,s];setTimeout(()=>{Ge(n.box).find("#grid_"+n.name+"_empty_msg").remove(),p.lock(...t)},10)}function ss(n,e){setTimeout(()=>{Ge(n.box).find(".tsg-message").hasClass("tsg-closing")||p.unlock(n.box,e)},25)}function ns(n,e){let s={columns:[],show:p.clone(n.show),last:{search:n.last.search,multi:n.last.multi,logic:n.last.logic,label:n.last.label,field:n.last.field,scrollTop:n.last.vscroll.scrollTop,scrollLeft:n.last.vscroll.scrollLeft},sortData:[],searchData:[]},t;for(let o=0;o<n.columns.length;o++){let l=n.columns[o],a={};Object.keys(n.stateColProps).forEach((r,c)=>{n.stateColProps[r]&&(l[r]!==void 0?t=l[r]:t=n.colTemplate[r]||null,a[r]=t)}),s.columns.push(a)}for(let o=0;o<n.sortData.length;o++)s.sortData.push(p.clone(n.sortData[o]));for(let o=0;o<n.searchData.length;o++)s.searchData.push(p.clone(n.searchData[o]));let i=n.trigger("stateSave",{target:n.name,state:s});if(i.isCancelled!==!0)return e!==!0&&n.cacheSave("state",s),i.finish(),s}function is(n,e){let s=n.url?.get??n.url;e||(e=n.cache("state"));let t=n.trigger("stateRestore",{target:n.name,state:e});if(t.isCancelled!==!0){if(p.isPlainObject(e)){p.extend(n.show,e.show??{}),p.extend(n.last,e.last??{});let i=n.last.vscroll.scrollTop,o=n.last.vscroll.scrollLeft;for(let l=0;l<e.columns?.length;l++){let a=e.columns[l],r=n.getColumn(a.field,!0);r!==null&&(p.extend(n.columns[r],a),l!==r&&n.columns.splice(l,0,n.columns.splice(r,1)[0]))}n.sortData.splice(0,n.sortData.length);for(let l=0;l<e.sortData?.length;l++)n.sortData.push(e.sortData[l]);n.searchData.splice(0,n.searchData.length);for(let l=0;l<e.searchData?.length;l++)n.searchData.push(e.searchData[l]);setTimeout(()=>{s||(n.sortData.length>0&&n.localSort(),n.searchData.length>0&&n.localSearch()),n.last.vscroll.scrollTop=i,n.last.vscroll.scrollLeft=o,n.refresh()},1),console.log(`INFO (TsUi): state restored for "${n.name}"`)}return t.finish(),!0}}function os(n){n.stateRestore(n.last.state),n.cacheSave("state",null)}function ls(n,e,s){let t;return n.nestedFields?t=p.getNested(e,s):t=e?.[s],t??""}function as(n){let e=n;for(let t=0;t<n.records.length;t++){let i=n.records[t];s(i)}function s(t){for(let i=0;i<e.columns.length;i++){let o=e.columns[i];if(!(t[o.field]==null||typeof o.render!="string")){if(["number","int","float","money","currency","percent"].indexOf(o.render.split(":")[0]??"")!=-1&&typeof t[o.field]!="number"&&(t[o.field]=parseFloat(t[o.field])),["date","age"].indexOf(o.render.split(":")[0]??"")!=-1&&!t[o.field+"_"]){let l=t[o.field];p.isInt(l)&&(l=parseInt(l)),t[o.field+"_"]=new Date(l)}if(["time"].indexOf(o.render)!=-1)if(p.isTime(t[o.field])){let l=p.isTime(t[o.field],!0),a=new Date;a.setHours(l.hours,l.minutes,l.seconds?l.seconds:0,0),t[o.field+"_"]||(t[o.field+"_"]=a)}else{let l=t[o.field];p.isInt(l)&&(l=parseInt(l)),l=l!=null?new Date(l):new Date;let a=new Date;a.setHours(l.getHours(),l.getMinutes(),l.getSeconds(),0),t[o.field+"_"]||(t[o.field+"_"]=a)}}}if(t.TsUi?.children&&t.TsUi?.expanded!==!0)for(let i=0;i<t.TsUi.children.length;i++){let o=t.TsUi.children[i];s(o)}}}function rs(n,e,s,t){let i=s+1;if(i>=n.columns.length){let r=n.nextRow(e);return r==null?null:n.nextCell(r,-1,t)}let o=n.records[e]?.TsUi,l=n.columns[i],a=o&&o.colspan&&l!=null&&!isNaN(o.colspan[l.field])?parseInt(o.colspan[l.field]):1;if(l==null)return null;if(l&&l.hidden||a===0)return n.nextCell(e,i,t);if(t){let r=n.getCellEditable(e,i);if(r==null||["checkbox","check"].indexOf(r.type)!=-1)return n.nextCell(e,i,t)}return{index:e,colIndex:i}}function cs(n,e,s,t){let i=s-1;if(i<0){let r=n.prevRow(e);return r==null?null:n.prevCell(r,n.columns.length,t)}if(i<0)return null;let o=n.records[e]?.TsUi,l=n.columns[i],a=o&&o.colspan&&l!=null&&!isNaN(o.colspan[l.field])?parseInt(o.colspan[l.field]):1;if(l==null)return null;if(l&&l.hidden||a===0)return n.prevCell(e,i,t);if(t){let r=n.getCellEditable(e,i);if(r==null||["checkbox","check"].indexOf(r.type)!=-1)return n.prevCell(e,i,t)}return{index:e,colIndex:i}}function us(n,e,s,t){let i=n.last.searchIds,o=null;if(t==null&&(t=1),t==-1)return n.records.length-1;if(e+t<n.records.length&&i.length===0||i.length>0&&e<(i[i.length-t]??0)){if(e+=t,i.length>0)for(;!(i.includes(e)||e>n.records.length);)e+=t;let l=n.records[e]?.TsUi,a=s!=null?n.columns[s]:void 0;(l&&l.colspan&&a!=null&&!isNaN(l.colspan[a.field])?parseInt(l.colspan[a.field]):1)===0||l?.selectable===!1?o=n.nextRow(e,s,t):o=e}return o}function ds(n,e,s,t){let i=n.last.searchIds,o=null;if(t==null&&(t=1),t==-1)return 0;if(e-t>=0&&i.length===0||i.length>0&&e>(i[0]??0)){if(e-=t,i.length>0)for(;!(i.includes(e)||e<0);)e-=t;let l=n.records[e]?.TsUi,a=s!=null?n.columns[s]:void 0;(l&&l.colspan&&a!=null&&!isNaN(l.colspan[a.field])?parseInt(l.colspan[a.field]):1)===0||l?.selectable===!1?(o=n.prevRow(e,s,t),o==null&&(o=e)):o=e}return o}function fs(n){return n.last.saved_sel=n.getSelection(),n.last.saved_sel}function hs(n,e){let s=Date.now();n.last.selection={indexes:[],columns:{}};let t=n.last.selection,i=n.last.saved_sel;if(i)for(let o=0;o<i.length;o++)if(p.isPlainObject(i[o])){let l=n.get(i[o].recid,!0);l!=null&&(t.indexes.indexOf(l)==-1&&t.indexes.push(l),t.columns[l]||(t.columns[l]=[]),t.columns[l].push(i[o].column))}else{let l=n.get(i[o],!0);l!=null&&t.indexes.push(l)}return delete n.last.saved_sel,e!==!0&&n.refresh(),Date.now()-s}function ps(n,e){return p.message({owner:n,box:n.box,after:".tsg-grid-header"},e)}function ms(n,e){return p.confirm({owner:n,box:n.box,after:".tsg-grid-header"},e)}var V=j;function gs(n,e,s){Array.isArray(e)||(e=[e]);let t=0;for(let o=0;o<e.length;o++){let l=e[o];if(n.recid!=null&&l[n.recid]!=null&&(l.recid=l[n.recid]),l.recid==null){console.log("ERROR: Cannot add record without recid. (obj: "+n.name+")");continue}l.TsUi?.summary===!0?s?n.summary.unshift(l):n.summary.push(l):s?n.records.unshift(l):n.records.push(l),t++}if(n.processGroupBy(),n.url?.get??n.url)n.refresh();else{n.total=n.records.length,n.localSort(!1,!0),n.localSearch();let o=n.records.length-e.length,l=o+e.length;(n.last.vscroll.recIndStart??0)<=l&&(n.last.vscroll.recIndEnd??0)>=o?n.refresh():V(n.box).find("#grid_"+n.name+"_footer .tsg-footer-right .tsg-total").html(p.formatNumber(n.total))}return t}function ys(n,e,s,t){e==null&&(e={});let i=[],o=!1;for(let r in e)String(r).indexOf(".")!=-1&&(o=!0);let l=t?n.last.vscroll.recIndStart??0:0,a=t?(n.last.vscroll.recIndEnd??n.records.length)+1:n.records.length;a>n.records.length&&(a=n.records.length);for(let r=l;r<a;r++){let c=n.records[r],d=!0;for(let u in e){let h=c[u];o&&String(u).indexOf(".")!=-1&&(h=n.parseField(c,u)),e[u]=="not-null"?(h==null||h==="")&&(d=!1):e[u]!=h&&(d=!1)}d&&s!==!0&&i.push(c.recid),d&&s===!0&&i.push(r)}return i}function bs(n,e,s,t){if(typeof e=="object"&&e!==null&&(t=s,s=e,e=null),e==null){for(let i=0;i<n.records.length;i++)p.extend(n.records[i],s);t!==!0&&n.refresh()}else{let i=n.get(e,!0);if(i==null)return!1;n.records[i]?.recid!=e?p.extend(n.summary[i],s):p.extend(n.records[i],s),t!==!0&&n.refreshRow(e,i)}return n.processGroupBy(),!0}function xs(n,e,s,t){let i=n.get(e,!0);return i==null?!1:(n.records[i]?.recid!=e?n.summary[i]=s:n.records[i]=s,t!==!0&&n.refreshRow(e,i),n.processGroupBy(),!0)}function vs(n,e,s){if(Array.isArray(e)){let t=[];for(let i=0;i<e.length;i++){let o=n.get(e[i],s);o!==null&&t.push(o)}return t}else{let t=n.last.idCache;t||(n.last.idCache=t={});let i=t[e];if(typeof i=="number"){if(i>=0&&i<n.records.length&&n.records[i].recid==e)return s===!0?i:n.records[i];if(i=~i,i>=0&&i<n.summary.length&&n.summary[i].recid==e)return s===!0?i:n.summary[i];n.last.idCache=t={}}for(let o=0;o<n.records.length;o++)if(n.records[o].recid==e)return t[e]=o,s===!0?o:n.records[o];for(let o=0;o<n.summary.length;o++)if(n.summary[o].recid==e)return t[e]=~o,s===!0?o:n.summary[o];return null}}function Ts(n,...e){let s=0;for(let i=0;i<e.length;i++){for(let o=n.records.length-1;o>=0;o--)n.records[o].recid==e[i]&&(n.records.splice(o,1),s++);for(let o=n.summary.length-1;o>=0;o--)n.summary[o].recid==e[i]&&(n.summary.splice(o,1),s++)}return(n.url?.get??n.url)||(n.localSort(!1,!0),n.localSearch(),n.total=n.records.length),n.refresh(),s}function ws(n){if(n.groupBy==null)return;let e=n.groupBy,s=[];n.records.forEach(t=>{let i=t[e.field];if(i!=null){if(n.last.groupBy_links[i]==null){let o={recid:"group-"+i,group:i,TsUi:{...e,children:[]}};n.last.groupBy_links[i]=o,delete o.TsUi.field,s.push(o)}t[e.field]="",n.last.groupBy_links[i].TsUi.children.push(t)}}),n.records=s,n.total!==-1&&(n.total=n.records.length)}function _s(n,e,s){let t=n;if(n.url?.get??n.url)return console.log("ERROR: grid.localSort can only be used on local data source, grid.url should be empty."),0;if(Object.keys(n.sortData).length===0){let h=n.last.originalSort;return h&&n.records.sort((f,m)=>{let y=h.indexOf(f.recid),x=h.indexOf(m.recid);return y>x?1:-1}),0}let o=Date.now();n.selectionSave(),n.prepareData(),s||n.reset();for(let h=0;h<n.sortData.length;h++){let f=n.sortData[h],m=n.getColumn(f.field);if(!m)return;if(typeof m.render=="string"){let y=m.render.split(":")[0]??"";["date","age"].indexOf(y)!=-1&&(f.field_=m.field+"_"),["time"].indexOf(y)!=-1&&(f.field_=m.field+"_")}}return l(),n.records.sort((h,f)=>r(h,f)),a(),n.selectionRestore(s),o=Date.now()-o,e!==!0&&n.show.statusSort&&setTimeout(()=>{n.status(p.lang("Sorting took ${count} seconds",{count:o/1e3}))},10),o;function l(){for(let h=0;h<t.records.length;h++){let f=t.records[h];f.TsUi?.parent_recid!=null&&(f.TsUi._path=c(f))}}function a(){for(let h=0;h<t.records.length;h++){let f=t.records[h];f.TsUi?.parent_recid!=null&&(f.TsUi._path=null)}}function r(h,f){if((!h.TsUi||h.TsUi.parent_recid==null)&&(!f.TsUi||f.TsUi.parent_recid==null))return d(h,f);let m=c(h),y=c(f);for(let x=0;x<Math.min(m.length,y.length);x++){let b=d(m[x],y[x]);if(b!==0)return b}return m.length>y.length?1:m.length<y.length?-1:(console.log("ERROR: two paths should not be equal."),0)}function c(h){if(!h.TsUi||h.TsUi.parent_recid==null)return[h];if(h.TsUi._path)return h.TsUi._path;let f=t.get(h.TsUi.parent_recid);return f?c(f).concat(h):(console.log("ERROR: no parent record: "+h.TsUi.parent_recid),[h])}function d(h,f){if(h===f)return 0;for(let y=0;y<t.sortData.length;y++){let x=t.sortData[y],b=x.field,g=x.field_?x.field_:b,v=h[g],w=f[g];String(b).indexOf(".")!=-1&&(v=t.parseField(h,g),w=t.parseField(f,g));let T=t.getColumn(b);T&&T.editable&&Object.keys(T.editable).length>0&&(p.isPlainObject(v)&&v.text&&(v=v.text),p.isPlainObject(w)&&w.text&&(w=w.text));let _=u(v,w,y,x.direction,T?.sortMode||"default");if(_!==0)return _}return u(h.recid,f.recid,-1,"asc")}function u(h,f,m,y,x){if(h===f)return 0;let b=y.toLowerCase()==="asc"?1:-1;if(typeof x=="function")return x(h,f)*b;if((h==null||h==="")&&f!=null&&f!=="")return 1;if(h!=null&&h!==""&&(f==null||f===""))return-1;if(typeof h!=typeof f)return typeof h>typeof f?b:-b;if(h.constructor.name!=f.constructor.name)return h.constructor.name>f.constructor.name?b:-b;h&&typeof h=="object"&&(h=h.valueOf()),f&&typeof f=="object"&&(f=f.valueOf());let g={}.toString;switch(h&&typeof h=="object"&&h.toString!=g&&(h=String(h)),f&&typeof f=="object"&&f.toString!=g&&(f=String(f)),typeof h=="string"&&(h=h.toLowerCase().trim()),typeof f=="string"&&(f=f.toLowerCase().trim()),x){case"natural":x=p.naturalCompare;break;case"i18n":x=p.i18nCompare;break}return typeof x=="function"?x(h,f)*b:h>f?b:h<f?-b:0}}function ks(n,e){let s=n,t=n.url?.get??n.url;if(t){console.log("ERROR: grid.localSearch can only be used on local data source, grid.url should be empty.");return}let i=Date.now(),o={}.toString,l={};if(n.total=n.records.length,n.last.searchIds=[],n.prepareData(),n.searchData.length>0&&!t){n.total=0;for(let c=0;c<n.records.length;c++){let d=n.records[c];if(a(d))if(d?.TsUi&&r(d.TsUi.parent_recid??null),n.showExtraOnSearch>0){let h=n.showExtraOnSearch,f=n.showExtraOnSearch;if(c<h&&(h=c),c+f>n.records.length&&(f=n.records.length-c),h>0)for(let m=c-h;m<c;m++)n.last.searchIds.indexOf(m)<0&&n.last.searchIds.push(m);if(n.last.searchIds.indexOf(c)<0&&n.last.searchIds.push(c),f>0)for(let m=c+1;m<=c+f;m++)n.last.searchIds.indexOf(m)<0&&n.last.searchIds.push(m)}else n.last.searchIds.push(c)}n.total=n.last.searchIds.length}return i=Date.now()-i,e!==!0&&n.show.statusSearch&&setTimeout(()=>{n.status(p.lang("Search took ${count} seconds",{count:i/1e3}))},10),i;function a(c){let d=0,u,h,f,m,y=!1;for(let x=0;x<s.searchData.length;x++){let b=s.searchData[x];if(b==null)continue;let g=s.getSearch(b.field);g==null&&(g={field:b.field,type:b.type});let v=c.TsUi?.changes?.[g.field]??s.parseField(c,g.field);switch(u=v!=null&&(typeof v!="object"||v.toString!=o)?String(v).toLowerCase():"",b.value!=null&&(Array.isArray(b.value)?(h=b.value[0],f=b.value[1]):h=String(b.value).toLowerCase()),b.operator){case"=":case"is":v==b.value||String(v)==b.value?d++:g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDate(m,"yyyy-mm-dd"),h=p.formatDate(p.isDate(h,p.settings.dateFormat,!0),"yyyy-mm-dd"),u==h&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),u==h&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u==h&&d++);break;case"is not":case"!=":v!=b.value&&String(v)!=b.value&&d++;break;case"between":if(["int","float","money","currency","percent"].indexOf(g.type)!=-1)parseFloat(s.parseField(c,g.field))>=parseFloat(h)&&parseFloat(s.parseField(c,g.field))<=parseFloat(f)&&d++;else if(g.type=="date")m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),f=p.isDate(f,p.settings.dateFormat,!0),f instanceof Date&&(f=new Date(f.getTime()+864e5)),u>=h&&u<f&&d++;else if(g.type=="time"){u=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),h=p.isTime(h,!0),f=p.isTime(f,!0);let T=h,_=f;h=new Date().setHours(T.hours,T.minutes,T.seconds?T.seconds:0,0),f=new Date().setHours(_.hours,_.minutes,_.seconds?_.seconds:0,0),u>=h&&u<f&&d++}else g.type=="datetime"&&(u=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),h=p.isDateTime(h,p.settings.datetimeFormat,!0),f=p.isDateTime(f,p.settings.datetimeFormat,!0),f instanceof Date&&(f=new Date(f.getTime()+864e5)),u>=h&&u<f&&d++);break;case"<=":y=!0;case"<":case"less":["int","float","money","currency","percent"].indexOf(g.type)!=-1?(u=parseFloat(s.parseField(c,g.field)),h=parseFloat(b.value),(u<h||y&&u===h)&&d++):g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),(u<h||y&&u===h)&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),(u<h||y&&u===h)&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u.length==h.length&&(u<h||y&&u===h)&&d++);break;case">=":y=!0;case">":case"more":["int","float","money","currency","percent"].indexOf(g.type)!=-1?(u=parseFloat(s.parseField(c,g.field)),h=parseFloat(b.value),(u>h||y&&u===h)&&d++):g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),(u>h||y&&u===h)&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),(u>h||y&&u===h)&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u.length==h.length&&(u>h||y&&u===h)&&d++);break;case"in":m=b.value,b.svalue&&(m=b.svalue),(m.indexOf(p.isFloat(v)?parseFloat(v):v)!==-1||m.indexOf(u)!==-1&&u!=="")&&d++;break;case"not in":m=b.value,b.svalue&&(m=b.svalue),m.indexOf(p.isFloat(v)?parseFloat(v):v)!==-1||m.indexOf(u)!==-1&&u!==""||d++;break;case"begins":case"begins with":u.indexOf(h)===0&&d++;break;case"contains":u.indexOf(h)>=0&&d++;break;case"null":s.parseField(c,g.field)==null&&d++;break;case"not null":s.parseField(c,g.field)!=null&&d++;break;case"ends":case"ends with":let w=u.lastIndexOf(h);w!==-1&&w==u.length-h.length&&d++;break}}if(s.last.logic=="OR"&&d!==0||s.last.logic=="AND"&&d==s.searchData.length)return!0;if(c.TsUi?.children&&c.TsUi?.expanded!==!0)for(let x=0;x<c.TsUi.children.length;x++){let b=c.TsUi.children[x];if(a(b))return!0}return!1}function r(c){if(c==null)return;let d=s.get(c,!0);if(d==null||l[c]||s.last.searchIds.includes(d))return;l[c]=!0;let u=s.records[d];u?.TsUi&&r(u.TsUi.parent_recid??null),s.last.searchIds.push(d)}}function Cs(n,e,s){let t=n.get(e[0].recid,!0)??0,i=n.get(e[1].recid,!0)??0,o=e[0].column,l=e[1].column,a=[];if(o==l)for(let r=Math.min(t,i);r<=Math.max(t,i);r++){let c=n.records[r],d=c[n.columns[o].field]||null;s!==!0?a.push(d):a.push({data:d,column:o,index:r,record:c})}else if(t==i){let r=n.records[t];for(let c=Math.min(o,l);c<=Math.max(o,l);c++){let d=r[n.columns[c].field]||null;s!==!0?a.push(d):a.push({data:d,column:c,index:t,record:r})}}else for(let r=Math.min(t,i);r<=Math.max(t,i);r++){let c=n.records[r],d=[];a.push(d);for(let u=Math.min(o,l);u<=Math.max(o,l);u++){let h=c[n.columns[u].field];s!==!0?d.push(h):d.push({data:h,column:u,index:r,record:c})}}return a}function Es(n,e){let s=0,t,i;if(n.selectType=="row")return s;let o=Array.isArray(e)?e:[e];for(let l=0;l<o.length;l++){if(typeof o[l]!="object"&&(o[l]={name:"selection"}),o[l].name=="selection"){if(n.show.selectionBorder===!1)continue;let a=n.getSelection();if(a.length===0){n.removeRange("selection");continue}else t=a[0],i=a[a.length-1]}else t=o[l].range[0],i=o[l].range[1];if(t){let a={name:o[l].name,range:[{recid:t.recid,column:t.column},{recid:i.recid,column:i.column}],style:o[l].style||"",class:o[l].class},r=!1;for(let c=0;c<n.ranges.length;c++)if(n.ranges[c].name==o[l].name){r=c;break}r!==!1?n.ranges[r]=a:n.ranges.push(a),s++}}return n.refreshRanges(),s}function Ss(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];V(n.box).find("#grid_"+n.name+"_"+i).remove(),V(n.box).find("#grid_"+n.name+"_f"+i).remove();for(let o=n.ranges.length-1;o>=0;o--)n.ranges[o].name==i&&(n.ranges.splice(o,1),s++)}return s}function Rs(n){if(n.ranges.length===0)return;let e=n,s,t=Date.now(),i=V(n.box).find(`#grid_${n.name}_frecords`),o=V(n.box).find(`#grid_${n.name}_records`);for(let h=0;h<n.ranges.length;h++){let f=n.ranges[h],m=f.range[0],y=f.range[1];if(m.index==null){let $=n.get(m.recid,!0);$!=null&&(m.index=$)}if(y.index==null){let $=n.get(y.recid,!0);$!=null&&(y.index=$)}if(m.index!=null&&y.index!=null&&m.index>y.index){let $=m;m=y,y=$}let x=V(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+' td[col="'+m.column+'"]'),b=V(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(y.recid)+' td[col="'+y.column+'"]'),g=V(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(m.recid)+' td[col="'+m.column+'"]'),v=V(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(y.recid)+' td[col="'+y.column+'"]'),w=y.column;m.column<n.last.vscroll.colIndStart&&y.column>n.last.vscroll.colIndStart&&(x=V(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+' td[col="start"]')),m.column<n.last.vscroll.colIndEnd&&y.column>n.last.vscroll.colIndEnd&&(b=V(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(y.recid)+' td[col="end"]'),w="end");let T=parseInt(V(n.box).find("#grid_"+n.name+"_rec_top").next().attr("index")),_=parseInt(V(n.box).find("#grid_"+n.name+"_rec_bottom").prev().attr("index")),C=parseInt(V(n.box).find("#grid_"+n.name+"_frec_top").next().attr("index")),D=parseInt(V(n.box).find("#grid_"+n.name+"_frec_bottom").prev().attr("index"));x.length===0&&m.index<T&&y.index>T&&(x=V(n.box).find("#grid_"+n.name+"_rec_top").next().find('td[col="'+m.column+'"]')),b.length===0&&y.index>_&&m.index<_&&(b=V(n.box).find("#grid_"+n.name+"_rec_bottom").prev().find('td[col="'+w+'"]')),g.length===0&&m.index<C&&y.index>C&&(g=V(n.box).find("#grid_"+n.name+"_frec_top").next().find('td[col="'+m.column+'"]')),v.length===0&&y.index>D&&m.index<D&&(v=V(n.box).find("#grid_"+n.name+"_frec_bottom").prev().find('td[col="'+y.column+'"]'));let I=V(n.box).find("#grid_"+n.name+"_editable").find(".tsg-input"),R=I.attr("index"),F=n.records[R]?.recid,S=I.attr("column");if(!(f.name=="selection"&&f.range[0].recid==F&&f.range[0].column==S)){if(s=V(n.box).find("#grid_"+n.name+"_f"+f.name),g.length>0||v.length>0)if(s.length===0?(i.append('<div id="grid_'+n.name+"_f"+f.name+'" class="tsg-selection" style="'+f.style+'">'+(f.name=="selection"&&n.show.selectionResizer?'<div id="grid_'+n.name+'_resizer" class="tsg-selection-resizer"></div>':"")+"</div>"),s=V(n.box).find("#grid_"+n.name+"_f"+f.name)):(s.attr("style",f.style),s.find(".tsg-selection-resizer").show()),v.length===0&&(v=V(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(y.recid)+" td:last-child"),v.length===0&&(v=V(n.box).find("#grid_"+n.name+"_frec_bottom td:first-child")),s.css("border-right","0px"),s.find(".tsg-selection-resizer").hide()),m.recid!=null&&y.recid!=null&&g.length>0&&v.length>0){let $=getComputedStyle(v[0]),H=g.prop("offsetTop")-g.prop("scrollTop"),Q=g.prop("offsetLeft")+g.prop("scrollLeft"),Y=v.prop("offsetTop")-v.prop("scrollTop"),ee=v.prop("offsetLeft")+v.prop("scrollLeft");s.show().css({top:(H>0?H:0)+"px",left:(Q>0?Q:0)+"px",width:ee-Q+parseFloat($.width)-1+"px",height:Y-H+parseFloat($.height)-1+"px"})}else s.hide();else s.hide();if(s=V(n.box).find("#grid_"+n.name+"_"+f.name),x.length>0||b.length>0)if(s.length===0?(o.append(`
351
+ <div class="tsg-scroll-right tsg-eaction" data-click='["scroll","right"]'></div>`;return Q(this.box).attr("name",this.name).addClass("tsg-reset tsg-tabs").html(i),Q(this.box).length>0&&(Q(this.box)[0].style.cssText+=this.style),p.bindEvents(Q(this.box).find(".tsg-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),t.finish(),this.refresh(),this.resize(),Date.now()-s}initReorder(e,s){if(!this.reorder)return;let t=this,i=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),o=this.get(e,!0),l=Q(i.get(0).cloneNode(!0)),a;l.attr("id","#tabs_"+this.name+"_tab_ghost"),this.last.moving={index:o,indexFrom:o,$tab:i,$ghost:l,divX:0,left:i.get(0).getBoundingClientRect().left,parentX:Q(this.box).get(0).getBoundingClientRect().left,x:s.pageX,opacity:i.css("opacity")},Q(document).off(".w2uiTabReorder").on("mousemove.w2uiTabReorder",function(r){let c=r;if(!t.last.reordering){if(a=t.trigger("reorder",{target:t.tabs[o].id,indexFrom:o,tab:t.tabs[o]}),a.isCancelled===!0)return;G.hide(t.name+"_tooltip"),t.last.reordering=!0,l.addClass("moving"),l.css({"pointer-events":"none",position:"absolute",left:i.get(0).getBoundingClientRect().left}),i.css("opacity",0),Q(t.box).find(".tsg-scroll-wrapper").append(l.get(0)),Q(t.box).find(".tsg-tab-close").hide()}t.last.moving.divX=c.pageX-t.last.moving.x,l.css("left",t.last.moving.left-t.last.moving.parentX+t.last.moving.divX+"px"),t.dragMove(c)}).on("mouseup.w2uiTabReorder",function(){Q(document).off(".w2uiTabReorder"),l.css({transition:"0.1s",left:t.last.moving.$tab.get(0).getBoundingClientRect().left-t.last.moving.parentX}),Q(t.box).find(".tsg-tab-close").show(),l.remove(),i.css({opacity:t.last.moving.opacity}),t.last.reordering&&a.finish({indexTo:t.last.moving.index}),t.last.reordering=!1})}scroll(e,s){return new Promise((t,i)=>{let o=Q(this.box).find(".tsg-scroll-wrapper"),l=o.get(0),a=l.scrollLeft,r=o.find(".tsg-tabs-right").get(0),c=o.parent().get(0).getBoundingClientRect().width,d=a+r.offsetLeft+r.clientWidth;switch(e){case"left":{let u=a-c+50;u<=0&&(u=0),l.scrollTo({top:0,left:u,behavior:s?"auto":"smooth"});break}case"right":{let u=a+c-50;u>=d-c&&(u=d-c),l.scrollTo({top:0,left:u,behavior:s?"auto":"smooth"});break}}setTimeout(()=>{this.resize(),t()},s?0:350)})}scrollIntoView(e,s){return new Promise((t,i)=>{if(e==null&&(e=this.active),this.get(e)==null)return;Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)).get(0).scrollIntoView({block:"start",inline:"center",behavior:s?"auto":"smooth"}),setTimeout(()=>{this.resize(),t()},s?0:500)})}resize(){let e=Date.now();if(this.box==null)return;let s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0){if(this.box!=null){let t=Q(this.box);t.find(".tsg-scroll-left, .tsg-scroll-right").hide();let i=t.find(".tsg-scroll-wrapper").get(0),o=t.find(".tsg-tabs-right"),l=t.get(0).getBoundingClientRect().width,a=o.length>0?o[0].offsetLeft+o[0].clientWidth:0;l<a&&(i.scrollLeft>0&&t.find(".tsg-scroll-left").show(),l<a-i.scrollLeft&&t.find(".tsg-scroll-right").show())}return s.finish(),Date.now()-e}}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(Q(this.box).find("#tabs_"+this.name+"_right").length>0&&this.unmount(),delete se[this.name],e.finish())}unmount(){super.unmount(),this.last.observeResize?.disconnect()}click(e,s){if(s&&Q(s.target).hasClass("tsg-tab-close"))return;let t=this.get(e);if(t==null||t.disabled||this.last.reordering)return!1;let i=this.trigger("click",{target:e,tab:t,object:t,originalEvent:s});if(i.isCancelled!==!0){if(Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(this.active)).removeClass("active"),this.active=t.id,Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(this.active)).addClass("active"),typeof t.route=="string"){let o=t.route!==""?("/"+t.route).replace(/\/{2,}/g,"/"):"",l=p.parseRoute(o);if(l.keys.length>0)for(let a=0;a<l.keys.length;a++){let r=l.keys[a];r==null||this.routeData[r.name]==null||(o=o.replace(new RegExp(":"+r.name,"g"),this.routeData[r.name]))}setTimeout(()=>{window.location.hash=o},1)}i.finish()}}clickClose(e,s){let t=this.get(e);if(t==null||t.disabled)return!1;let i=this.trigger("close",{target:e,object:t,tab:t,originalEvent:s});i.isCancelled!==!0&&(this.animateClose(e).then(()=>{this.remove(e),i.finish(),this.refresh()}),s?.stopPropagation())}animateClose(e){return new Promise((s,t)=>{let i=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),l=`<div class="tab-animate-close" style="display: inline-block; flex-shrink: 0; width: ${i.get(0).clientWidth||0}px; transition: width 0.25s"></div>`,a=i.replace(l);setTimeout(()=>{a.css({width:"0px"})},1),setTimeout(()=>{a.remove(),this.resize(),s()},500)})}animateInsert(e,s){return new Promise((t,i)=>{let o=Q(this.box).find("#tabs_"+this.name+"_tab_"+p.escapeId(e)),l=this.getTabHTML(s.id),a=j.html(l);if(o.length==0)o=Q(this.box).find("#tabs_tabs_right"),o.before(a),this.resize();else{a.css({opacity:0}),Q(this.box).find("#tabs_tabs_right").before(a.get(0));let c=Q(this.box).find("#"+a.attr("id")).get(0)?.clientWidth??0,d=j.html('<div class="tab-animate-insert" style="flex-shrink: 0; width: 0; transition: width 0.25s"></div>');o.before(d),a.hide(),d.before(a[0]),setTimeout(()=>{d.css({width:c+"px"})},1),setTimeout(()=>{d.remove(),a.css({opacity:1}).show(),this.refresh(s.id),this.resize(),t()},500)}})}};var z=j,le=()=>se,ue=["top","left","main","preview","right","bottom"],rt=class extends ne{panels;last;padding;resizer;style;onShow;onHide;onResizing;onResizerClick;onRender;onRefresh;onChange;onResize;onDestroy;panel_template;constructor(e){super(e.name),this.box=null,this.name="",this.panels=[],this.last={},this.padding=1,this.resizer=4,this.style="",this.onShow=null,this.onHide=null,this.onResizing=null,this.onResizerClick=null,this.onRender=null,this.onRefresh=null,this.onChange=null,this.onResize=null,this.onDestroy=null,this.panel_template={type:null,title:"",size:100,minSize:20,maxSize:!1,hidden:!1,resizable:!1,overflow:"auto",style:"",html:"",tabs:null,toolbar:null,width:null,height:null,show:{toolbar:!1,tabs:!1},removed:null,onRefresh:null,onShow:null,onHide:null},Object.assign(this,e),Array.isArray(this.panels)||(this.panels=[]),this.panels.forEach((i,o)=>{this.panels[o]=p.extend({},this.panel_template,i),(p.isPlainObject(i.tabs)||Array.isArray(i.tabs))&&s(this,i.type),(p.isPlainObject(i.toolbar)||Array.isArray(i.toolbar))&&t(this,i.type)}),ue.forEach(i=>{this.get(i)==null&&this.panels.push(p.extend({},this.panel_template,{type:i,hidden:i!=="main",size:50}))}),typeof this.box=="string"&&(this.box=z(this.box).get(0)),this.box&&this.render(this.box);function s(i,o,l){let a=o!=null?i.get(o):null;if(a!=null&&l==null&&(l=a.tabs),a==null||l==null)return!1;Array.isArray(l)&&(l={tabs:l});let r=i.name+"_"+(o??"")+"_tabs";return le()[r]&&le()[r].destroy(),a.tabs=new ke(p.extend({},l,{owner:i,name:i.name+"_"+(o??"")+"_tabs"})),a.show.tabs=!0,!0}function t(i,o,l){let a=o!=null?i.get(o):null;if(a!=null&&l==null&&(l=a.toolbar),a==null||l==null)return!1;Array.isArray(l)&&(l={items:l});let r=i.name+"_"+(o??"")+"_toolbar";return le()[r]&&le()[r].destroy(),a.toolbar=new ye(p.extend({},l,{owner:i,name:i.name+"_"+(o??"")+"_toolbar"})),a.show.toolbar=!0,!0}}html(e,s,t){let i=this.get(e),o={panel:e,html:i.html,error:!1,cancelled:!1,removed(d){typeof d=="function"&&(i.removed=d)}};if(typeof i.removed=="function"&&(i.removed({panel:e,html:i.html,html_new:s,transition:t||"none"}),i.removed=null),e=="css")return z(this.box).find("#layout_"+this.name+"_panel_css").html("<style>"+s+"</style>"),o.status=!0,o;if(i==null)return console.log("ERROR: incorrect panel name. Panel name can be main, left, right, top, bottom, preview or css"),o.error=!0,o;if(s==null)return o;let l=this.trigger("change",{target:e,panel:i,html_new:s,transition:t});if(l.isCancelled===!0)return o.cancelled=!0,o;let a="#layout_"+this.name+"_panel_"+i.type,r=z(this.box).find(a+'> [data-role="panel-content"]'),c=0;if(r.length>0&&(z(this.box).find(a).get(0).scrollTop=0,c=z(r).css("top")),typeof i.html.unmount=="function"&&i.html.unmount(),r.addClass("tsg-panel-content"),r.removeAttr("style"),this.resizeBoxes(e),i.html==="")i.html=s,this.refresh(e);else if(i.html=s,i.hidden)l.finish();else if(t!=null&&t!==""){z(this.box).addClass("animating");let d=z(this.box).find(a+'> [data-role="panel-content"]');d.after('<div class="tsg-panel-content new-panel" data-role="panel-content" style="'+d[0].style.cssText+'"></div>');let u=z(this.box).find(a+'> [data-role="panel-content"].new-panel');d.css("top",c),u.css("top",c),typeof s=="object"?(s.box=u[0],s.render()):u.hide().html(s);let h,f;switch(t){case"slide-left":h="left: -"+p.getSize(z(this.box),"width")+"px",f="left: 0px";break;case"slide-right":h="left: "+p.getSize(z(this.box),"width")+"px",f="left: 0px";break;case"slide-down":h="top: -"+p.getSize(z(this.box),"height")+"px",f="top: "+c+"px";break;case"slide-up":h="top: "+p.getSize(z(this.box),"height")+"px",f="top: "+c+"px";break;case"flip-left":h="transform: rotate(90deg)",f="transform: rotate(0deg)";break;case"flip-right":h="transform: rotate(-90deg)",f="transform: rotate(0deg)";break;case"flip-down":h="transform: rotate(-180deg)",f="transform: rotate(0deg)";break;case"flip-up":h="transform: rotate(180deg)",f="transform: rotate(0deg)";break;case"pop-in":h="transform: scale(.5); opacity: 0;",f="transform: scale(1); opacity: 1;";break;case"pop-out":h="transform: scale(1); opacity: 1;",f="transform: scale(.5); opacity: 0;";break;default:h="",f=""}d.addClass("previous").css({cssText:"transition: .5s; "+h}),u.addClass("current").css({cssText:"transition: .5s; "+f}),setTimeout(()=>{z(this.box).removeClass("animating"),d.remove(),u.removeClass("new-panel current"),z(this.box).find(a+'> [data-role="panel-content"]').css({cssText:""}),l.finish()},500)}else this.refresh(e),l.finish();return o}message(e,s){let t=this.get(e),i=z(this.box).find("#layout_"+this.name+"_panel_"+t.type),o=i.css("overflow");i.css("overflow","hidden");let l=p.message({owner:this,box:i.get(0),after:".tsg-panel-title",param:e},s);return l&&l.self.on("close:after",()=>{i.css("overflow",o)}),l}confirm(e,s){let t=this.get(e),i=z(this.box).find("#layout_"+this.name+"_panel_"+t.type),o=i.css("overflow");i.css("overflow","hidden");let l=p.confirm({owner:this,box:i.get(0),after:".tsg-panel-title",param:e},s);return l&&l.self.on("close:after",()=>{i.css("overflow",o)}),l}load(e,s,t){return new Promise((i,o)=>{(e=="css"||this.get(e)!=null)&&s!=null?fetch(s).then(l=>l.text()).then(l=>{this.resize(),i(this.html(e,l,t))}):o()})}sizeTo(e,s,t){return this.get(e)==null?!1:(z(this.box).find(":scope > div > .tsg-panel").css("transition",t!==!0?".2s":"0s"),setTimeout(()=>{this.set(e,{size:s})},1),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),this.resize()},300),!0)}show(e,s){let t=this.trigger("show",{target:e,thisect:this.get(e),immediate:s});if(t.isCancelled===!0)return;let i=this.get(e);return i==null?!1:(i.hidden=!1,s===!0?(z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"1"}),t.finish(),this.resize()):(z(this.box).addClass("animating"),z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),z(this.box).find(":scope > div > .tsg-panel").css("transition",".2s"),setTimeout(()=>{this.resize()},1),setTimeout(()=>{z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"1"})},250),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),z(this.box).removeClass("animating"),t.finish(),this.resize()},300)),!0)}hide(e,s){let t=this.trigger("hide",{target:e,object:this.get(e),immediate:s});if(t.isCancelled===!0)return;let i=this.get(e);return i==null?!1:(i.hidden=!0,s===!0?(z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),t.finish(),this.resize()):(z(this.box).addClass("animating"),z(this.box).find(":scope > div > .tsg-panel").css("transition",".2s"),z(this.box).find("#layout_"+this.name+"_panel_"+e).css({opacity:"0"}),setTimeout(()=>{this.resize()},1),setTimeout(()=>{z(this.box).find(":scope > div > .tsg-panel").css("transition","0s"),z(this.box).removeClass("animating"),t.finish(),this.resize()},300)),!0)}toggle(e,s){let t=this.get(e);return t==null?!1:t.hidden?this.show(e,s):this.hide(e,s)}set(e,s){let t=this.get(e,!0);return t==null?!1:(p.extend(this.panels[t],s),(s.html!=null||s.resizable!=null)&&this.refresh(e),this.resize(),!0)}get(e,s){for(let t=0;t<this.panels.length;t++){let i=this.panels[t];if(i!=null&&i.type==e)return s===!0?t:i}return null}el(e){let s=z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-content"]');return s.length!=1?null:s[0]}hideToolbar(e){let s=this.get(e);s&&(s.show.toolbar=!1,z(this.box).find(`#layout_${this.name}_panel_${e} > [data-role="panel-toolbar"]`).hide(),this.resize())}showToolbar(e){let s=this.get(e);s&&(s.show.toolbar=!0,z(this.box).find(`#layout_${this.name}_panel_${e} > [data-role="panel-toolbar"]`).show(),this.resize())}toggleToolbar(e){let s=this.get(e);s&&(s.show.toolbar?this.hideToolbar(e):this.showToolbar(e))}assignToolbar(e,s){typeof s=="string"&&le()[s]!=null&&(s=le()[s]);let t=this.get(e);t.toolbar=s;let i=z(this.box).find(e+'> [data-role="panel-toolbar"]');t.toolbar!=null?(i.attr("name")!=t.toolbar.name?t.toolbar.render(i.get(0)):t.toolbar!=null&&t.toolbar.refresh(),typeof s!="string"&&s&&(s.owner=this),this.showToolbar(e),this.refresh(e)):(i.html(""),this.hideToolbar(e))}hideTabs(e){let s=this.get(e);s&&(s.show.tabs=!1,z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-tabs"]').hide(),this.resize())}showTabs(e){let s=this.get(e);s&&(s.show.tabs=!0,z(this.box).find("#layout_"+this.name+"_panel_"+e+'> [data-role="panel-tabs"]').show(),this.resize())}toggleTabs(e){let s=this.get(e);s&&(s.show.tabs?this.hideTabs(e):this.showTabs(e))}assignTabs(e,s){typeof s=="string"&&le()[s]!=null&&(s=le()[s]);let t=this.get(e);t.tabs=s;let i=z(this.box).find(e+'> [data-role="panel-tabs"]');t.tabs!=null?(i.attr("name")!=t.tabs.name?t.tabs.render(i.get(0)):t.tabs!=null&&t.tabs.refresh(),typeof s!="string"&&s&&(s.owner=this),this.showTabs(e),this.refresh(e)):(i.html(""),this.hideTabs(e))}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=z(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0)return;if(e!=null&&(this.unmount(),this.box=e),!this.box)return!1;z(this.box).attr("name",this.name).addClass("tsg-layout").html("<div></div>"),z(this.box).length>0&&(z(this.box)[0].style.cssText+=this.style);for(let r=0;r<ue.length;r++){let c='<div id="layout_'+this.name+"_panel_"+ue[r]+'" class="tsg-panel"> <div class="tsg-panel-title"></div> <div class="tsg-panel-tabs" data-role="panel-tabs"></div> <div class="tsg-panel-toolbar" data-role="panel-toolbar"></div> <div class="tsg-panel-content" data-role="panel-content"></div></div><div id="layout_'+this.name+"_resizer_"+ue[r]+'" class="tsg-resizer"></div>';z(this.box).find(":scope > div").append(c)}return z(this.box).find(":scope > div").append('<div id="layout_'+this.name+'_panel_css" style="position: absolute; top: 10000px;"></div>'),this.refresh(),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),i.finish(),setTimeout(()=>{t.last.events={resizeStart:o,mouseMove:a,mouseUp:l},this.resize()},0),Date.now()-s;function o(r,c){if(!t.box)return;c||(c=window.event),z(document).off("mousemove",t.last.events.mouseMove).on("mousemove",t.last.events.mouseMove),z(document).off("mouseup",t.last.events.mouseUp).on("mouseup",t.last.events.mouseUp),t.last.resize={type:r,x:c.screenX,y:c.screenY,diff_x:0,diff_y:0,value:0},ue.forEach(u=>{let h=z(t.el(u)).find(".tsg-lock");h.length>0?h.data("locked","yes"):t.lock(u,{opacity:0})});let d=z(t.box).find("#layout_"+t.name+"_resizer_"+r).get(0);(r=="left"||r=="right")&&(t.last.resize.value=parseInt(d.style.left)),(r=="top"||r=="preview"||r=="bottom")&&(t.last.resize.value=parseInt(d.style.top))}function l(r){if(t.box&&(r||(r=window.event),z(document).off("mousemove",t.last.events.mouseMove),z(document).off("mouseup",t.last.events.mouseUp),t.last.resize!=null)){if(ue.forEach(c=>{let d=z(t.el(c)).find(".tsg-lock");d.data("locked")=="yes"?d.removeData("locked"):t.unlock(c)}),t.last.diff_x!==0||t.last.resize.diff_y!==0){let c=t.get("top"),d=t.get("bottom"),u=t.get(t.last.resize.type),h=p.getSize(z(t.box),"width"),f=p.getSize(z(t.box),"height"),m=String(u.size),y,x;switch(t.last.resize.type){case"top":y=parseInt(u.sizeCalculated)+t.last.resize.diff_y,x=0;break;case"bottom":y=parseInt(u.sizeCalculated)-t.last.resize.diff_y,x=0;break;case"preview":y=parseInt(u.sizeCalculated)-t.last.resize.diff_y,x=(c&&!c.hidden?c.sizeCalculated:0)+(d&&!d.hidden?d.sizeCalculated:0);break;case"left":y=parseInt(u.sizeCalculated)+t.last.resize.diff_x,x=0;break;case"right":y=parseInt(u.sizeCalculated)-t.last.resize.diff_x,x=0;break;default:y=0,x=0}m.substr(m.length-1)=="%"?u.size=Math.floor(y*100/(u.type=="left"||u.type=="right"?h:f-x)*100)/100+"%":String(u.size).substr(0,1)=="-"?u.size=parseInt(u.size)-u.sizeCalculated+y:u.size=y,t.resize()}z(t.box).find("#layout_"+t.name+"_resizer_"+t.last.resize.type).removeClass(null).addClass("active"),z(t.box).find("#layout_"+t.name+"_resizer_"+t.last.resize.type).removeClass("active"),delete t.last.resize}}function a(r){if(!t.box||(r||(r=window.event),t.last.resize==null))return;let c=t.get(t.last.resize.type),d=t.last.resize,u=t.trigger("resizing",{target:t.name,object:c,originalEvent:r,panel:d?d.type:"all",diff_x:d?d.diff_x:0,diff_y:d?d.diff_y:0});if(u.isCancelled===!0)return;let h=z(t.box).find("#layout_"+t.name+"_resizer_"+d.type),f=r.screenX-d.x,m=r.screenY-d.y,y=t.get("main");h.hasClass("active")||h.addClass("active");let x=f,b=m;switch(d.type){case"left":c.minSize-x>c.width&&(x=c.minSize-c.width),c.maxSize&&c.width+x>c.maxSize&&(x=c.maxSize-c.width),y.minSize+x>y.width&&(x=y.width-y.minSize);break;case"right":c.minSize+x>c.width&&(x=c.width-c.minSize),c.maxSize&&c.width-x>c.maxSize&&(x=c.width-c.maxSize),y.minSize-x>y.width&&(x=y.minSize-y.width);break;case"top":c.minSize-b>c.height&&(b=c.minSize-c.height),c.maxSize&&c.height+b>c.maxSize&&(b=c.maxSize-c.height),y.minSize+b>y.height&&(b=y.height-y.minSize);break;case"preview":case"bottom":c.minSize+b>c.height&&(b=c.height-c.minSize),c.maxSize&&c.height-b>c.maxSize&&(b=c.height-c.maxSize),y.minSize-b>y.height&&(b=y.minSize-y.height);break}switch(d.diff_x=x,d.diff_y=b,d.type){case"top":case"preview":case"bottom":d.diff_x=0,h.length>0&&(h[0].style.top=d.value+d.diff_y+"px");break;case"left":case"right":d.diff_y=0,h.length>0&&(h[0].style.left=d.value+d.diff_x+"px");break}u.finish()}}unmount(){super.unmount(),this.panels.forEach(e=>{e.tabs?.unmount?.(),e.toolbar?.unmount?.()}),this.last.observeResize?.disconnect()}destroy(){let e=this.trigger("destroy",{target:this.name});if(e.isCancelled!==!0)return le()[this.name]==null?!1:(this.panels.forEach(s=>{s.tabs?.destroy?.(),s.toolbar?.destroy?.()}),z(this.box).find("#layout_"+this.name+"_panel_main").length>0&&this.unmount(),delete le()[this.name],e.finish(),this.last.events&&this.last.events.resize&&z(window).off("resize",this.last.events.resize),!0)}refresh(e){let s=this,t=Date.now(),i=s.trigger("refresh",{target:e??s.name,object:e!=null?s.get(e):null});if(i.isCancelled!==!0){if(typeof e=="string"){let o=s.get(e);if(o==null)return;let l="#layout_"+s.name+"_panel_"+o.type,a="#layout_"+s.name+"_resizer_"+o.type;if(z(s.box).find(l).css({display:o.hidden?"none":"block"}),o.resizable?z(s.box).find(a).show():z(s.box).find(a).hide(),typeof o.html=="object"&&typeof o.html.render=="function")o.html.box=z(s.box).find(l+'> [data-role="panel-content"]')[0],setTimeout(()=>{if(z(s.box).find(l+'> [data-role="panel-content"]').length>0){let c=z(s.box).find(l+'> [data-role="panel-content"]').removeClass(null).removeAttr("name").addClass("tsg-panel-content");c.css("overflow",o.overflow)[0].style.cssText+=";"+o.style}o.html&&typeof o.html.render=="function"&&o.html.render()},1);else if(z(s.box).find(l+'> [data-role="panel-content"]').length>0){let c=z(s.box).find(l+'> [data-role="panel-content"]').removeClass(null).removeAttr("name").addClass("tsg-panel-content");c.html(o.html).css("overflow",o.overflow)[0].style.cssText+=";"+o.style}let r=z(s.box).find(l+'> [data-role="panel-tabs"]');o.show.tabs?(r.attr("name")!=o.tabs?.name&&o.tabs!=null?o.tabs.render(r.get(0)):o.tabs.refresh(),r.addClass("tsg-panel-tabs")):(r.html("").removeAttr("name").removeClass(null),r.css("display","none").hide()),r=z(s.box).find(l+'> [data-role="panel-toolbar"]'),o.show.toolbar?(r.attr("name")!=o.toolbar?.name&&o.toolbar!=null?o.toolbar.render(r.get(0)):o.toolbar.refresh(),r.addClass("tsg-panel-toolbar")):(r.html("").removeAttr("name").removeClass(null),r.css("display","none").hide()),r=z(s.box).find(l+"> .tsg-panel-title"),o.title?r.html(o.title).show():r.html("").hide()}else{if(z(s.box).find("#layout_"+s.name+"_panel_main").length===0){s.render();return}s.resize();for(let o=0;o<this.panels.length;o++){let l=this.panels[o];l!=null&&s.refresh(l.type??void 0)}}return i.finish(),Date.now()-t}}resize(){if(!this.box)return!1;let e=Date.now(),s=this.last.resize,t=this.trigger("resize",{target:this.name,panel:s?s.type:"all",diff_x:s?s.diff_x:0,diff_y:s?s.diff_y:0});if(t.isCancelled===!0)return;this.padding<0&&(this.padding=0);let i=p.getSize(z(this.box),"width"),o=p.getSize(z(this.box),"height"),l=this,a=this.get("main"),r=this.get("preview"),c=this.get("left"),d=this.get("right"),u=this.get("top"),h=this.get("bottom"),f=r!=null&&r.hidden!==!0,m=c!=null&&c.hidden!==!0,y=d!=null&&d.hidden!==!0,x=u!=null&&u.hidden!==!0,b=h!=null&&h.hidden!==!0,g,v,w,T;for(let _=0;_<ue.length;_++){let C=ue[_];if(C==null||C==="main")continue;let D=this.get(C);if(!D)continue;let O=String(D.size||0);if(O.substr(O.length-1)=="%"){let I=o;D.type=="preview"&&(I=I-(u&&!u.hidden?u.sizeCalculated:0)-(h&&!h.hidden?h.sizeCalculated:0)),D.sizeCalculated=parseInt(String((D.type=="left"||D.type=="right"?i:I)*parseFloat(D.size)/100))}else D.sizeCalculated=parseInt(D.size);D.sizeCalculated=Math.max(D.sizeCalculated,parseInt(D.minSize))}return parseInt(d.size)<0&&(m&&parseInt(c.size)<0?console.log("ERROR: you cannot have both left panel.size and right panel.size be negative."):d.sizeCalculated=i-(m?c.sizeCalculated:0)+parseInt(d.size)),parseInt(c.size)<0&&(y&&parseInt(d.size)<0?console.log("ERROR: you cannot have both left panel.size and right panel.size be negative."):c.sizeCalculated=i-(y?d.sizeCalculated:0)+parseInt(c.size)),parseInt(r.size)<0&&(r.sizeCalculated=o+parseInt(r.size),r.sizeCalculated>o&&(r.sizeCalculated=o)),u!=null&&u.hidden!==!0?(g=0,v=0,w=i,T=u.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_top").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),u.width=w,u.height=T,u.resizable&&(v=u.sizeCalculated-(this.padding===0?this.resizer:0),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_top").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"top",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("top",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_top").hide(),z(this.box).find("#layout_"+this.name+"_resizer_top").hide()),c!=null&&c.hidden!==!0?(g=0,v=0+(x?u.sizeCalculated+this.padding:0),w=c.sizeCalculated,T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_left").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),c.width=w,c.height=T,c.resizable&&(g=c.sizeCalculated-(this.padding===0?this.resizer:0),w=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_left").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ew-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"left",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("left",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_left").hide(),z(this.box).find("#layout_"+this.name+"_resizer_left").hide()),d!=null&&d.hidden!==!0?(g=i-d.sizeCalculated,v=0+(x?u.sizeCalculated+this.padding:0),w=d.sizeCalculated,T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_right").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),d.width=w,d.height=T,d.resizable&&(g=g-this.padding,w=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_right").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ew-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"right",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("right",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_right").hide(),z(this.box).find("#layout_"+this.name+"_resizer_right").hide()),h!=null&&h.hidden!==!0?(g=0,v=o-h.sizeCalculated,w=i,T=h.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_bottom").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),h.width=w,h.height=T,h.resizable&&(v=v-(this.padding===0?0:this.padding),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_bottom").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"bottom",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("bottom",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_bottom").hide(),z(this.box).find("#layout_"+this.name+"_resizer_bottom").hide()),g=0+(m?c.sizeCalculated+this.padding:0),v=0+(x?u.sizeCalculated+this.padding:0),w=i-(m?c.sizeCalculated+this.padding:0)-(y?d.sizeCalculated+this.padding:0),T=o-(x?u.sizeCalculated+this.padding:0)-(b?h.sizeCalculated+this.padding:0)-(f?r.sizeCalculated+this.padding:0),z(this.box).find("#layout_"+this.name+"_panel_main").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),a.width=w,a.height=T,r!=null&&r.hidden!==!0?(g=0+(m?c.sizeCalculated+this.padding:0),v=o-(b?h.sizeCalculated+this.padding:0)-r.sizeCalculated,w=i-(m?c.sizeCalculated+this.padding:0)-(y?d.sizeCalculated+this.padding:0),T=r.sizeCalculated,z(this.box).find("#layout_"+this.name+"_panel_preview").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px"}),r.width=w,r.height=T,r.resizable&&(v=v-(this.padding===0?0:this.padding),T=this.resizer>this.padding?this.resizer:this.padding,z(this.box).find("#layout_"+this.name+"_resizer_preview").css({display:"block",left:g+"px",top:v+"px",width:w+"px",height:T+"px",cursor:"ns-resize"}).off("mousedown").on("mousedown",function(_){_.preventDefault();let C=l.trigger("resizerClick",{target:"preview",originalEvent:_});if(C.isCancelled!==!0)return le()[l.name].last.events.resizeStart("preview",_),C.finish(),!1}))):(z(this.box).find("#layout_"+this.name+"_panel_preview").hide(),z(this.box).find("#layout_"+this.name+"_resizer_preview").hide()),this.resizeBoxes(),t.finish(),Date.now()-e}resizeBoxes(e){let s=ue;!e&&typeof e=="string"&&s.slice(),s.forEach((t,i)=>{let o=ue[i]!=null?this.get(ue[i]):null,l=`#layout_${this.name}_panel_${t} > `,a=0;if(o){if(o.title){let r=z(this.box).find(l+".tsg-panel-title").css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}if(o.show.tabs){let r=z(this.box).find(l+'[data-role="panel-tabs"]').css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}if(o.show.toolbar){let r=z(this.box).find(l+'[data-role="panel-toolbar"]').css({top:a+"px",display:"block"});a+=p.getSize(r,"height")}}z(this.box).find(l+'[data-role="panel-content"]').css({display:"block",top:a+"px"})})}lock(e,s,t){if(ue.indexOf(e)==-1){console.log("ERROR: First parameter needs to be the a valid panel name.");return}p.lock("#layout_"+this.name+"_panel_"+e,s,t)}unlock(e,s){if(ue.indexOf(e)==-1){console.log("ERROR: First parameter needs to be the a valid panel name.");return}let t="#layout_"+this.name+"_panel_"+e;p.unlock(t,s)}};function Wt(n,e,s){let t=0;s===void 0?(s=e,e=n.columns.length):(typeof e=="string"&&(e=n.getColumn(e,!0)),e==null&&(e=n.columns.length)),Array.isArray(s)||(s=[s]);for(let i=0;i<s.length;i++){let o=p.extend({},n.colTemplate,s[i]);if(n.columns.splice(e,0,o),s[i].searchable){let l=s[i].searchable,a="";s[i].searchable===!0&&(l="text",a='size="20"'),n.addSearch({field:s[i].field,label:s[i].text,type:l,attr:a})}e++,t++}return n.refresh(),t}function qt(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.columns.length-1;o>=0;o--)n.columns[o].field==i&&(n.columns[o].searchable&&n.removeSearch(i),n.columns.splice(o,1),s++)}return n.refresh(),s}function Yt(n,e,s){if(e===void 0){let t=[];for(let i=0;i<n.columns.length;i++)t.push(n.columns[i].field);return t}for(let t=0;t<n.columns.length;t++)if(n.columns[t].field==e)return s===!0?t:n.columns[t];return null}function Xt(n,e,s){let t=0;return e=Array.isArray(e)?e:[e],e.forEach(i=>{n.columns.forEach(o=>{if(o.field==i){let l=p.clone(s);Object.keys(l).forEach(a=>{typeof l[a]=="function"&&(l[a]=l[a](o)),o[a]!=l[a]&&t++}),p.extend(o,l)}})}),t>0&&n.refresh(),t}function Kt(n,...e){return n.updateColumn(e,{hidden(s){return!s.hidden}})}function Jt(n,...e){return n.updateColumn(e,{hidden:!1})}function Zt(n,...e){return n.updateColumn(e,{hidden:!0})}var Ge=j;function es(n,e){if(e!=null)Ge(n.box).find(`#grid_${n.name}_footer`).find(".tsg-footer-left").html(e);else{let s="",t=n.getSelection();if(t.length>0&&(n.show.statusSelection&&t.length>1&&(s=String(t.length).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+p.settings.groupSymbol)+" "+p.lang("selected")),n.show.statusRecordID&&t.length==1)){let i=t[0];typeof i=="object"&&(i=i.recid+", "+p.lang("Column")+": "+i.column),s=p.lang("Record ID")+": "+i+" "}Ge(n.box).find("#grid_"+n.name+"_footer .tsg-footer-left").html(s)}}function ts(n,e,s){let t=[n.box,e,s];setTimeout(()=>{Ge(n.box).find("#grid_"+n.name+"_empty_msg").remove(),p.lock(...t)},10)}function ss(n,e){setTimeout(()=>{Ge(n.box).find(".tsg-message").hasClass("tsg-closing")||p.unlock(n.box,e)},25)}function ns(n,e){let s={columns:[],show:p.clone(n.show),last:{search:n.last.search,multi:n.last.multi,logic:n.last.logic,label:n.last.label,field:n.last.field,scrollTop:n.last.vscroll.scrollTop,scrollLeft:n.last.vscroll.scrollLeft},sortData:[],searchData:[]},t;for(let o=0;o<n.columns.length;o++){let l=n.columns[o],a={};Object.keys(n.stateColProps).forEach((r,c)=>{n.stateColProps[r]&&(l[r]!==void 0?t=l[r]:t=n.colTemplate[r]||null,a[r]=t)}),s.columns.push(a)}for(let o=0;o<n.sortData.length;o++)s.sortData.push(p.clone(n.sortData[o]));for(let o=0;o<n.searchData.length;o++)s.searchData.push(p.clone(n.searchData[o]));let i=n.trigger("stateSave",{target:n.name,state:s});if(i.isCancelled!==!0)return e!==!0&&n.cacheSave("state",s),i.finish(),s}function is(n,e){let s=n.url?.get??n.url;e||(e=n.cache("state"));let t=n.trigger("stateRestore",{target:n.name,state:e});if(t.isCancelled!==!0){if(p.isPlainObject(e)){p.extend(n.show,e.show??{}),p.extend(n.last,e.last??{});let i=n.last.vscroll.scrollTop,o=n.last.vscroll.scrollLeft;for(let l=0;l<e.columns?.length;l++){let a=e.columns[l],r=n.getColumn(a.field,!0);r!==null&&(p.extend(n.columns[r],a),l!==r&&n.columns.splice(l,0,n.columns.splice(r,1)[0]))}n.sortData.splice(0,n.sortData.length);for(let l=0;l<e.sortData?.length;l++)n.sortData.push(e.sortData[l]);n.searchData.splice(0,n.searchData.length);for(let l=0;l<e.searchData?.length;l++)n.searchData.push(e.searchData[l]);setTimeout(()=>{s||(n.sortData.length>0&&n.localSort(),n.searchData.length>0&&n.localSearch()),n.last.vscroll.scrollTop=i,n.last.vscroll.scrollLeft=o,n.refresh()},1),console.log(`INFO (TsUi): state restored for "${n.name}"`)}return t.finish(),!0}}function os(n){n.stateRestore(n.last.state),n.cacheSave("state",null)}function ls(n,e,s){let t;return n.nestedFields?t=p.getNested(e,s):t=e?.[s],t??""}function as(n){let e=n;for(let t=0;t<n.records.length;t++){let i=n.records[t];s(i)}function s(t){for(let i=0;i<e.columns.length;i++){let o=e.columns[i];if(!(t[o.field]==null||typeof o.render!="string")){if(["number","int","float","money","currency","percent"].indexOf(o.render.split(":")[0]??"")!=-1&&typeof t[o.field]!="number"&&(t[o.field]=parseFloat(t[o.field])),["date","age"].indexOf(o.render.split(":")[0]??"")!=-1&&!t[o.field+"_"]){let l=t[o.field];p.isInt(l)&&(l=parseInt(l)),t[o.field+"_"]=new Date(l)}if(["time"].indexOf(o.render)!=-1)if(p.isTime(t[o.field])){let l=p.isTime(t[o.field],!0),a=new Date;a.setHours(l.hours,l.minutes,l.seconds?l.seconds:0,0),t[o.field+"_"]||(t[o.field+"_"]=a)}else{let l=t[o.field];p.isInt(l)&&(l=parseInt(l)),l=l!=null?new Date(l):new Date;let a=new Date;a.setHours(l.getHours(),l.getMinutes(),l.getSeconds(),0),t[o.field+"_"]||(t[o.field+"_"]=a)}}}if(t.TsUi?.children&&t.TsUi?.expanded!==!0)for(let i=0;i<t.TsUi.children.length;i++){let o=t.TsUi.children[i];s(o)}}}function rs(n,e,s,t){let i=s+1;if(i>=n.columns.length){let r=n.nextRow(e);return r==null?null:n.nextCell(r,-1,t)}let o=n.records[e]?.TsUi,l=n.columns[i],a=o&&o.colspan&&l!=null&&!isNaN(o.colspan[l.field])?parseInt(o.colspan[l.field]):1;if(l==null)return null;if(l&&l.hidden||a===0)return n.nextCell(e,i,t);if(t){let r=n.getCellEditable(e,i);if(r==null||["checkbox","check"].indexOf(r.type)!=-1)return n.nextCell(e,i,t)}return{index:e,colIndex:i}}function cs(n,e,s,t){let i=s-1;if(i<0){let r=n.prevRow(e);return r==null?null:n.prevCell(r,n.columns.length,t)}if(i<0)return null;let o=n.records[e]?.TsUi,l=n.columns[i],a=o&&o.colspan&&l!=null&&!isNaN(o.colspan[l.field])?parseInt(o.colspan[l.field]):1;if(l==null)return null;if(l&&l.hidden||a===0)return n.prevCell(e,i,t);if(t){let r=n.getCellEditable(e,i);if(r==null||["checkbox","check"].indexOf(r.type)!=-1)return n.prevCell(e,i,t)}return{index:e,colIndex:i}}function us(n,e,s,t){let i=n.last.searchIds,o=null;if(t==null&&(t=1),t==-1)return n.records.length-1;if(e+t<n.records.length&&i.length===0||i.length>0&&e<(i[i.length-t]??0)){if(e+=t,i.length>0)for(;!(i.includes(e)||e>n.records.length);)e+=t;let l=n.records[e]?.TsUi,a=s!=null?n.columns[s]:void 0;(l&&l.colspan&&a!=null&&!isNaN(l.colspan[a.field])?parseInt(l.colspan[a.field]):1)===0||l?.selectable===!1?o=n.nextRow(e,s,t):o=e}return o}function ds(n,e,s,t){let i=n.last.searchIds,o=null;if(t==null&&(t=1),t==-1)return 0;if(e-t>=0&&i.length===0||i.length>0&&e>(i[0]??0)){if(e-=t,i.length>0)for(;!(i.includes(e)||e<0);)e-=t;let l=n.records[e]?.TsUi,a=s!=null?n.columns[s]:void 0;(l&&l.colspan&&a!=null&&!isNaN(l.colspan[a.field])?parseInt(l.colspan[a.field]):1)===0||l?.selectable===!1?(o=n.prevRow(e,s,t),o==null&&(o=e)):o=e}return o}function fs(n){return n.last.saved_sel=n.getSelection(),n.last.saved_sel}function hs(n,e){let s=Date.now();n.last.selection={indexes:[],columns:{}};let t=n.last.selection,i=n.last.saved_sel;if(i)for(let o=0;o<i.length;o++)if(p.isPlainObject(i[o])){let l=n.get(i[o].recid,!0);l!=null&&(t.indexes.indexOf(l)==-1&&t.indexes.push(l),t.columns[l]||(t.columns[l]=[]),t.columns[l].push(i[o].column))}else{let l=n.get(i[o],!0);l!=null&&t.indexes.push(l)}return delete n.last.saved_sel,e!==!0&&n.refresh(),Date.now()-s}function ps(n,e){return p.message({owner:n,box:n.box,after:".tsg-grid-header"},e)}function ms(n,e){return p.confirm({owner:n,box:n.box,after:".tsg-grid-header"},e)}var W=j;function gs(n,e,s){Array.isArray(e)||(e=[e]);let t=0;for(let o=0;o<e.length;o++){let l=e[o];if(n.recid!=null&&l[n.recid]!=null&&(l.recid=l[n.recid]),l.recid==null){console.log("ERROR: Cannot add record without recid. (obj: "+n.name+")");continue}l.TsUi?.summary===!0?s?n.summary.unshift(l):n.summary.push(l):s?n.records.unshift(l):n.records.push(l),t++}if(n.processGroupBy(),n.url?.get??n.url)n.refresh();else{n.total=n.records.length,n.localSort(!1,!0),n.localSearch();let o=n.records.length-e.length,l=o+e.length;(n.last.vscroll.recIndStart??0)<=l&&(n.last.vscroll.recIndEnd??0)>=o?n.refresh():W(n.box).find("#grid_"+n.name+"_footer .tsg-footer-right .tsg-total").html(p.formatNumber(n.total))}return t}function ys(n,e,s,t){e==null&&(e={});let i=[],o=!1;for(let r in e)String(r).indexOf(".")!=-1&&(o=!0);let l=t?n.last.vscroll.recIndStart??0:0,a=t?(n.last.vscroll.recIndEnd??n.records.length)+1:n.records.length;a>n.records.length&&(a=n.records.length);for(let r=l;r<a;r++){let c=n.records[r],d=!0;for(let u in e){let h=c[u];o&&String(u).indexOf(".")!=-1&&(h=n.parseField(c,u)),e[u]=="not-null"?(h==null||h==="")&&(d=!1):e[u]!=h&&(d=!1)}d&&s!==!0&&i.push(c.recid),d&&s===!0&&i.push(r)}return i}function bs(n,e,s,t){if(typeof e=="object"&&e!==null&&(t=s,s=e,e=null),e==null){for(let i=0;i<n.records.length;i++)p.extend(n.records[i],s);t!==!0&&n.refresh()}else{let i=n.get(e,!0);if(i==null)return!1;n.records[i]?.recid!=e?p.extend(n.summary[i],s):p.extend(n.records[i],s),t!==!0&&n.refreshRow(e,i)}return n.processGroupBy(),!0}function xs(n,e,s,t){let i=n.get(e,!0);return i==null?!1:(n.records[i]?.recid!=e?n.summary[i]=s:n.records[i]=s,t!==!0&&n.refreshRow(e,i),n.processGroupBy(),!0)}function vs(n,e,s){if(Array.isArray(e)){let t=[];for(let i=0;i<e.length;i++){let o=n.get(e[i],s);o!==null&&t.push(o)}return t}else{let t=n.last.idCache;t||(n.last.idCache=t={});let i=t[e];if(typeof i=="number"){if(i>=0&&i<n.records.length&&n.records[i].recid==e)return s===!0?i:n.records[i];if(i=~i,i>=0&&i<n.summary.length&&n.summary[i].recid==e)return s===!0?i:n.summary[i];n.last.idCache=t={}}for(let o=0;o<n.records.length;o++)if(n.records[o].recid==e)return t[e]=o,s===!0?o:n.records[o];for(let o=0;o<n.summary.length;o++)if(n.summary[o].recid==e)return t[e]=~o,s===!0?o:n.summary[o];return null}}function Ts(n,...e){let s=0;for(let i=0;i<e.length;i++){for(let o=n.records.length-1;o>=0;o--)n.records[o].recid==e[i]&&(n.records.splice(o,1),s++);for(let o=n.summary.length-1;o>=0;o--)n.summary[o].recid==e[i]&&(n.summary.splice(o,1),s++)}return(n.url?.get??n.url)||(n.localSort(!1,!0),n.localSearch(),n.total=n.records.length),n.refresh(),s}function ws(n){if(n.groupBy==null)return;let e=n.groupBy,s=[];n.records.forEach(t=>{let i=t[e.field];if(i!=null){if(n.last.groupBy_links[i]==null){let o={recid:"group-"+i,group:i,TsUi:{...e,children:[]}};n.last.groupBy_links[i]=o,delete o.TsUi.field,s.push(o)}t[e.field]="",n.last.groupBy_links[i].TsUi.children.push(t)}}),n.records=s,n.total!==-1&&(n.total=n.records.length)}function _s(n,e,s){let t=n;if(n.url?.get??n.url)return console.log("ERROR: grid.localSort can only be used on local data source, grid.url should be empty."),0;if(Object.keys(n.sortData).length===0){let h=n.last.originalSort;return h&&n.records.sort((f,m)=>{let y=h.indexOf(f.recid),x=h.indexOf(m.recid);return y>x?1:-1}),0}let o=Date.now();n.selectionSave(),n.prepareData(),s||n.reset();for(let h=0;h<n.sortData.length;h++){let f=n.sortData[h],m=n.getColumn(f.field);if(!m)return;if(typeof m.render=="string"){let y=m.render.split(":")[0]??"";["date","age"].indexOf(y)!=-1&&(f.field_=m.field+"_"),["time"].indexOf(y)!=-1&&(f.field_=m.field+"_")}}return l(),n.records.sort((h,f)=>r(h,f)),a(),n.selectionRestore(s),o=Date.now()-o,e!==!0&&n.show.statusSort&&setTimeout(()=>{n.status(p.lang("Sorting took ${count} seconds",{count:o/1e3}))},10),o;function l(){for(let h=0;h<t.records.length;h++){let f=t.records[h];f.TsUi?.parent_recid!=null&&(f.TsUi._path=c(f))}}function a(){for(let h=0;h<t.records.length;h++){let f=t.records[h];f.TsUi?.parent_recid!=null&&(f.TsUi._path=null)}}function r(h,f){if((!h.TsUi||h.TsUi.parent_recid==null)&&(!f.TsUi||f.TsUi.parent_recid==null))return d(h,f);let m=c(h),y=c(f);for(let x=0;x<Math.min(m.length,y.length);x++){let b=d(m[x],y[x]);if(b!==0)return b}return m.length>y.length?1:m.length<y.length?-1:(console.log("ERROR: two paths should not be equal."),0)}function c(h){if(!h.TsUi||h.TsUi.parent_recid==null)return[h];if(h.TsUi._path)return h.TsUi._path;let f=t.get(h.TsUi.parent_recid);return f?c(f).concat(h):(console.log("ERROR: no parent record: "+h.TsUi.parent_recid),[h])}function d(h,f){if(h===f)return 0;for(let y=0;y<t.sortData.length;y++){let x=t.sortData[y],b=x.field,g=x.field_?x.field_:b,v=h[g],w=f[g];String(b).indexOf(".")!=-1&&(v=t.parseField(h,g),w=t.parseField(f,g));let T=t.getColumn(b);T&&T.editable&&Object.keys(T.editable).length>0&&(p.isPlainObject(v)&&v.text&&(v=v.text),p.isPlainObject(w)&&w.text&&(w=w.text));let _=u(v,w,y,x.direction,T?.sortMode||"default");if(_!==0)return _}return u(h.recid,f.recid,-1,"asc")}function u(h,f,m,y,x){if(h===f)return 0;let b=y.toLowerCase()==="asc"?1:-1;if(typeof x=="function")return x(h,f)*b;if((h==null||h==="")&&f!=null&&f!=="")return 1;if(h!=null&&h!==""&&(f==null||f===""))return-1;if(typeof h!=typeof f)return typeof h>typeof f?b:-b;if(h.constructor.name!=f.constructor.name)return h.constructor.name>f.constructor.name?b:-b;h&&typeof h=="object"&&(h=h.valueOf()),f&&typeof f=="object"&&(f=f.valueOf());let g={}.toString;switch(h&&typeof h=="object"&&h.toString!=g&&(h=String(h)),f&&typeof f=="object"&&f.toString!=g&&(f=String(f)),typeof h=="string"&&(h=h.toLowerCase().trim()),typeof f=="string"&&(f=f.toLowerCase().trim()),x){case"natural":x=p.naturalCompare;break;case"i18n":x=p.i18nCompare;break}return typeof x=="function"?x(h,f)*b:h>f?b:h<f?-b:0}}function ks(n,e){let s=n,t=n.url?.get??n.url;if(t){console.log("ERROR: grid.localSearch can only be used on local data source, grid.url should be empty.");return}let i=Date.now(),o={}.toString,l={};if(n.total=n.records.length,n.last.searchIds=[],n.prepareData(),n.searchData.length>0&&!t){n.total=0;for(let c=0;c<n.records.length;c++){let d=n.records[c];if(a(d))if(d?.TsUi&&r(d.TsUi.parent_recid??null),n.showExtraOnSearch>0){let h=n.showExtraOnSearch,f=n.showExtraOnSearch;if(c<h&&(h=c),c+f>n.records.length&&(f=n.records.length-c),h>0)for(let m=c-h;m<c;m++)n.last.searchIds.indexOf(m)<0&&n.last.searchIds.push(m);if(n.last.searchIds.indexOf(c)<0&&n.last.searchIds.push(c),f>0)for(let m=c+1;m<=c+f;m++)n.last.searchIds.indexOf(m)<0&&n.last.searchIds.push(m)}else n.last.searchIds.push(c)}n.total=n.last.searchIds.length}return i=Date.now()-i,e!==!0&&n.show.statusSearch&&setTimeout(()=>{n.status(p.lang("Search took ${count} seconds",{count:i/1e3}))},10),i;function a(c){let d=0,u,h,f,m,y=!1;for(let x=0;x<s.searchData.length;x++){let b=s.searchData[x];if(b==null)continue;let g=s.getSearch(b.field);g==null&&(g={field:b.field,type:b.type});let v=c.TsUi?.changes?.[g.field]??s.parseField(c,g.field);switch(u=v!=null&&(typeof v!="object"||v.toString!=o)?String(v).toLowerCase():"",b.value!=null&&(Array.isArray(b.value)?(h=b.value[0],f=b.value[1]):h=String(b.value).toLowerCase()),b.operator){case"=":case"is":v==b.value||String(v)==b.value?d++:g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDate(m,"yyyy-mm-dd"),h=p.formatDate(p.isDate(h,p.settings.dateFormat,!0),"yyyy-mm-dd"),u==h&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),u==h&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u==h&&d++);break;case"is not":case"!=":v!=b.value&&String(v)!=b.value&&d++;break;case"between":if(["int","float","money","currency","percent"].indexOf(g.type)!=-1)parseFloat(s.parseField(c,g.field))>=parseFloat(h)&&parseFloat(s.parseField(c,g.field))<=parseFloat(f)&&d++;else if(g.type=="date")m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),f=p.isDate(f,p.settings.dateFormat,!0),f instanceof Date&&(f=new Date(f.getTime()+864e5)),u>=h&&u<f&&d++;else if(g.type=="time"){u=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),h=p.isTime(h,!0),f=p.isTime(f,!0);let T=h,_=f;h=new Date().setHours(T.hours,T.minutes,T.seconds?T.seconds:0,0),f=new Date().setHours(_.hours,_.minutes,_.seconds?_.seconds:0,0),u>=h&&u<f&&d++}else g.type=="datetime"&&(u=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),h=p.isDateTime(h,p.settings.datetimeFormat,!0),f=p.isDateTime(f,p.settings.datetimeFormat,!0),f instanceof Date&&(f=new Date(f.getTime()+864e5)),u>=h&&u<f&&d++);break;case"<=":y=!0;case"<":case"less":["int","float","money","currency","percent"].indexOf(g.type)!=-1?(u=parseFloat(s.parseField(c,g.field)),h=parseFloat(b.value),(u<h||y&&u===h)&&d++):g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),(u<h||y&&u===h)&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),(u<h||y&&u===h)&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u.length==h.length&&(u<h||y&&u===h)&&d++);break;case">=":y=!0;case">":case"more":["int","float","money","currency","percent"].indexOf(g.type)!=-1?(u=parseFloat(s.parseField(c,g.field)),h=parseFloat(b.value),(u>h||y&&u===h)&&d++):g.type=="date"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.isDate(m,p.settings.dateFormat,!0),h=p.isDate(h,p.settings.dateFormat,!0),(u>h||y&&u===h)&&d++):g.type=="time"?(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatTime(m,"hh24:mi"),h=p.formatTime(h,"hh24:mi"),(u>h||y&&u===h)&&d++):g.type=="datetime"&&(m=s.parseField(c,g.field+"_")instanceof Date?s.parseField(c,g.field+"_"):s.parseField(c,g.field),u=p.formatDateTime(m,"yyyy-mm-dd|hh24:mm:ss"),h=p.formatDateTime(p.isDateTime(h,p.settings.datetimeFormat,!0),"yyyy-mm-dd|hh24:mm:ss"),u.length==h.length&&(u>h||y&&u===h)&&d++);break;case"in":m=b.value,b.svalue&&(m=b.svalue),(m.indexOf(p.isFloat(v)?parseFloat(v):v)!==-1||m.indexOf(u)!==-1&&u!=="")&&d++;break;case"not in":m=b.value,b.svalue&&(m=b.svalue),m.indexOf(p.isFloat(v)?parseFloat(v):v)!==-1||m.indexOf(u)!==-1&&u!==""||d++;break;case"begins":case"begins with":u.indexOf(h)===0&&d++;break;case"contains":u.indexOf(h)>=0&&d++;break;case"null":s.parseField(c,g.field)==null&&d++;break;case"not null":s.parseField(c,g.field)!=null&&d++;break;case"ends":case"ends with":let w=u.lastIndexOf(h);w!==-1&&w==u.length-h.length&&d++;break}}if(s.last.logic=="OR"&&d!==0||s.last.logic=="AND"&&d==s.searchData.length)return!0;if(c.TsUi?.children&&c.TsUi?.expanded!==!0)for(let x=0;x<c.TsUi.children.length;x++){let b=c.TsUi.children[x];if(a(b))return!0}return!1}function r(c){if(c==null)return;let d=s.get(c,!0);if(d==null||l[c]||s.last.searchIds.includes(d))return;l[c]=!0;let u=s.records[d];u?.TsUi&&r(u.TsUi.parent_recid??null),s.last.searchIds.push(d)}}function Cs(n,e,s){let t=n.get(e[0].recid,!0)??0,i=n.get(e[1].recid,!0)??0,o=e[0].column,l=e[1].column,a=[];if(o==l)for(let r=Math.min(t,i);r<=Math.max(t,i);r++){let c=n.records[r],d=c[n.columns[o].field]||null;s!==!0?a.push(d):a.push({data:d,column:o,index:r,record:c})}else if(t==i){let r=n.records[t];for(let c=Math.min(o,l);c<=Math.max(o,l);c++){let d=r[n.columns[c].field]||null;s!==!0?a.push(d):a.push({data:d,column:c,index:t,record:r})}}else for(let r=Math.min(t,i);r<=Math.max(t,i);r++){let c=n.records[r],d=[];a.push(d);for(let u=Math.min(o,l);u<=Math.max(o,l);u++){let h=c[n.columns[u].field];s!==!0?d.push(h):d.push({data:h,column:u,index:r,record:c})}}return a}function Es(n,e){let s=0,t,i;if(n.selectType=="row")return s;let o=Array.isArray(e)?e:[e];for(let l=0;l<o.length;l++){if(typeof o[l]!="object"&&(o[l]={name:"selection"}),o[l].name=="selection"){if(n.show.selectionBorder===!1)continue;let a=n.getSelection();if(a.length===0){n.removeRange("selection");continue}else t=a[0],i=a[a.length-1]}else t=o[l].range[0],i=o[l].range[1];if(t){let a={name:o[l].name,range:[{recid:t.recid,column:t.column},{recid:i.recid,column:i.column}],style:o[l].style||"",class:o[l].class},r=!1;for(let c=0;c<n.ranges.length;c++)if(n.ranges[c].name==o[l].name){r=c;break}r!==!1?n.ranges[r]=a:n.ranges.push(a),s++}}return n.refreshRanges(),s}function Ss(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];W(n.box).find("#grid_"+n.name+"_"+i).remove(),W(n.box).find("#grid_"+n.name+"_f"+i).remove();for(let o=n.ranges.length-1;o>=0;o--)n.ranges[o].name==i&&(n.ranges.splice(o,1),s++)}return s}function Rs(n){if(n.ranges.length===0)return;let e=n,s,t=Date.now(),i=W(n.box).find(`#grid_${n.name}_frecords`),o=W(n.box).find(`#grid_${n.name}_records`);for(let h=0;h<n.ranges.length;h++){let f=n.ranges[h],m=f.range[0],y=f.range[1];if(m.index==null){let $=n.get(m.recid,!0);$!=null&&(m.index=$)}if(y.index==null){let $=n.get(y.recid,!0);$!=null&&(y.index=$)}if(m.index!=null&&y.index!=null&&m.index>y.index){let $=m;m=y,y=$}let x=W(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+' td[col="'+m.column+'"]'),b=W(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(y.recid)+' td[col="'+y.column+'"]'),g=W(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(m.recid)+' td[col="'+m.column+'"]'),v=W(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(y.recid)+' td[col="'+y.column+'"]'),w=y.column;m.column<n.last.vscroll.colIndStart&&y.column>n.last.vscroll.colIndStart&&(x=W(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+' td[col="start"]')),m.column<n.last.vscroll.colIndEnd&&y.column>n.last.vscroll.colIndEnd&&(b=W(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(y.recid)+' td[col="end"]'),w="end");let T=parseInt(W(n.box).find("#grid_"+n.name+"_rec_top").next().attr("index")),_=parseInt(W(n.box).find("#grid_"+n.name+"_rec_bottom").prev().attr("index")),C=parseInt(W(n.box).find("#grid_"+n.name+"_frec_top").next().attr("index")),D=parseInt(W(n.box).find("#grid_"+n.name+"_frec_bottom").prev().attr("index"));x.length===0&&m.index<T&&y.index>T&&(x=W(n.box).find("#grid_"+n.name+"_rec_top").next().find('td[col="'+m.column+'"]')),b.length===0&&y.index>_&&m.index<_&&(b=W(n.box).find("#grid_"+n.name+"_rec_bottom").prev().find('td[col="'+w+'"]')),g.length===0&&m.index<C&&y.index>C&&(g=W(n.box).find("#grid_"+n.name+"_frec_top").next().find('td[col="'+m.column+'"]')),v.length===0&&y.index>D&&m.index<D&&(v=W(n.box).find("#grid_"+n.name+"_frec_bottom").prev().find('td[col="'+y.column+'"]'));let I=W(n.box).find("#grid_"+n.name+"_editable").find(".tsg-input"),R=I.attr("index"),F=n.records[R]?.recid,S=I.attr("column");if(!(f.name=="selection"&&f.range[0].recid==F&&f.range[0].column==S)){if(s=W(n.box).find("#grid_"+n.name+"_f"+f.name),g.length>0||v.length>0)if(s.length===0?(i.append('<div id="grid_'+n.name+"_f"+f.name+'" class="tsg-selection" style="'+f.style+'">'+(f.name=="selection"&&n.show.selectionResizer?'<div id="grid_'+n.name+'_resizer" class="tsg-selection-resizer"></div>':"")+"</div>"),s=W(n.box).find("#grid_"+n.name+"_f"+f.name)):(s.attr("style",f.style),s.find(".tsg-selection-resizer").show()),v.length===0&&(v=W(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(y.recid)+" td:last-child"),v.length===0&&(v=W(n.box).find("#grid_"+n.name+"_frec_bottom td:first-child")),s.css("border-right","0px"),s.find(".tsg-selection-resizer").hide()),m.recid!=null&&y.recid!=null&&g.length>0&&v.length>0){let $=getComputedStyle(v[0]),H=g.prop("offsetTop")-g.prop("scrollTop"),V=g.prop("offsetLeft")+g.prop("scrollLeft"),Y=v.prop("offsetTop")-v.prop("scrollTop"),ee=v.prop("offsetLeft")+v.prop("scrollLeft");s.show().css({top:(H>0?H:0)+"px",left:(V>0?V:0)+"px",width:ee-V+parseFloat($.width)-1+"px",height:Y-H+parseFloat($.height)-1+"px"})}else s.hide();else s.hide();if(s=W(n.box).find("#grid_"+n.name+"_"+f.name),x.length>0||b.length>0)if(s.length===0?(o.append(`
352
352
  <div id="grid_${n.name}_${f.name}" class="tsg-selection ${f.class??""}" style="${f.style}">
353
353
  ${f.name=="selection"&&n.show.selectionResizer?`<div id="grid_${n.name}_resizer" class="tsg-selection-resizer"></div>`:""}
354
354
  </div>
355
- `),s=V(n.box).find("#grid_"+n.name+"_"+f.name)):s.attr("style",f.style),x.length===0&&(x=V(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+" td:first-child"),x.length===0&&(x=V(n.box).find("#grid_"+n.name+"_rec_top td:first-child"))),v.length!==0&&s.css("border-left","0px"),m.recid!=null&&y.recid!=null&&x.length>0&&b.length>0){let $=getComputedStyle(b[0]),H=x.prop("offsetTop")-x.prop("scrollTop"),Q=x.prop("offsetLeft")+x.prop("scrollLeft"),Y=b.prop("offsetTop")-b.prop("scrollTop"),ee=b.prop("offsetLeft")+b.prop("scrollLeft");s.show().css({top:(H>0?H:0)+"px",left:(Q>0?Q:0)+"px",width:ee-Q+parseFloat($.width)-1+"px",height:Y-H+parseFloat($.height)-1+"px"})}else s.hide();else s.hide()}}V(n.box).find(".tsg-selection-resizer").off(".resizer").on("mousedown.resizer",c).on("dblclick.resizer",h=>{let f=e.trigger("resizerDblClick",{target:e.name,originalEvent:h});f.isCancelled!==!0&&f.finish()});let l,a={target:e.name,originalRange:null,newRange:null},r="abcdefghijklmnopqrstuvwxyz";return Date.now()-t;function c(h){let f=e.getSelectionCells(),m=f[0],y=f[f.length-1];e.last.move={type:"expand",x:h.screenX,y:h.screenY,divX:0,divY:0,index:m.index,recid:m.recid,column:m.column,name:r[m.column]+(m.index+1)+":"+r[y.column]+(y.index+1),originalRange:[p.clone(m),p.clone(y)],newRange:[p.clone(m),p.clone(y)]},a.originalName=e.last.move.name,a.originalRange=e.last.move.originalRange,V("body").off(".tsg-"+e.name).on("mousemove.tsg-"+e.name,d).on("mouseup.tsg-"+e.name,u),h.preventDefault()}function d(h){let f=e.last.move;if(!f||f.type!="expand")return;f.divX=h.screenX-f.x,f.divY=h.screenY-f.y;let m,y=h.target;if(y.tagName.toUpperCase()!="TD"&&(y=V(y).closest("td")[0]),V(y).attr("col")!=null&&(m=parseInt(V(y).attr("col"))),m==null)return;y=V(y).closest("tr")[0];let x=parseInt(V(y).attr("index")),b=e.records[x]?.recid;if(f.newRange[1].recid==b&&f.newRange[1].column==m)return;let g=p.clone(f.newRange);if(f.newRange=[{recid:f.recid,index:f.index,column:f.column},{recid:b,index:x,column:m}],a.newName=r[f.column]+(f.index+1)+":"+r[m]+(x+1),a.newRange=p.clone(f.newRange),l=e.trigger("selectionExtend",a),l.isCancelled===!0){f.newRange=g,a.newRange=g;return}else e.addRange({name:"selection-expand",range:f.newRange,class:"tsg-selection-expand"})}function u(h){e.removeRange("selection-expand"),V("body").off(".tsg-"+e.name),e.last.move?.type=="expand"&&l.finish&&l.finish(),delete e.last.move}}function $s(n,e){n.total=0,n.records=[],n.summary=[],n.last.fetch.offset=0,n.last.idCache={},n.last.selection={indexes:[],columns:{}},n.last.groupBy_links={},n.reset(!0),e||n.refresh()}function Ms(n,e){n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.vscroll.recIndStart=null,n.last.vscroll.recIndEnd=null,V(n.box).find(`#grid_${n.name}_records`).prop("scrollTop",0),e||n.refresh()}function Ds(n,e,s){return e==null?(console.log('ERROR: You need to provide url argument when calling .load() method of "'+n.name+'" object.'),new Promise((t,i)=>{i()})):(n.clear(!0),n.request("load",{},e,s))}function Is(n,e){let s=n.url?.get??n.url;return n.selectionSave(),s?n.load(s,()=>{n.selectionRestore(),typeof e=="function"&&e()}):(n.reset(!0),n.localSearch(),n.selectionRestore(),typeof e=="function"&&e({status:"success"}),new Promise(t=>{t()}))}function Os(n,e,s,t,i){let o=n,l,a,r=new Promise((f,m)=>{l=f,a=m});if(s==null&&(s={}),t||(t=n.url),!t)return new Promise((f,m)=>{m()});p.isInt(n.offset)||(n.offset=0),p.isInt(n.last.fetch.offset)||(n.last.fetch.offset=0);let c,d={limit:n.limit,offset:n.offset+n.last.fetch.offset,searchLogic:n.last.logic,search:n.searchData.map(f=>{let m=p.clone(f);return n.searchMap&&n.searchMap[m.field]&&(m.field=n.searchMap[m.field]),m}),sort:n.sortData.map(f=>{let m=p.clone(f);return n.sortMap&&n.sortMap[m.field]&&(m.field=n.sortMap[m.field]),m})};if(n.searchData.length===0&&(delete d.search,delete d.searchLogic),n.sortData.length===0&&delete d.sort,p.extend(d,n.postData),p.extend(d,s),(e=="delete"||e=="save")&&(delete d.limit,delete d.offset,d.action=e,e=="delete"&&(d[n.recid||"recid"]=n.getSelection())),e=="load"){if(c=n.trigger("request",{target:n.name,url:t,postData:d,httpMethod:"GET",httpHeaders:n.httpHeaders}),c.isCancelled===!0)return new Promise((f,m)=>{m()})}else c={detail:{url:t,postData:d,httpMethod:e=="save"?"PUT":"DELETE",httpHeaders:n.httpHeaders}};if(n.last.fetch.offset===0&&n.lock(p.lang(n.msgRefresh),!0),n.last.fetch.controller)try{n.last.fetch.controller.abort()}catch{}switch(t=c.detail.url,e){case"save":t?.save&&(t=t.save);break;case"delete":t?.remove&&(t=t.remove);break;default:t=t?.get??t}if(Object.keys(n.routeData).length>0){let f=p.parseRoute(t);if(f.keys.length>0)for(let m=0;m<f.keys.length;m++){let y=f.keys[m];n.routeData[y.name]!=null&&(t=t.replace(new RegExp(":"+y.name,"g"),n.routeData[y.name]))}}t=new URL(t,location.href);let u=p.prepareParams(t,{method:c.detail.httpMethod,headers:c.detail.httpHeaders,body:c.detail.postData},{dataType:n.dataType,caller:n,action:e});return Object.assign(n.last.fetch,{action:e,options:u,controller:new AbortController,start:Date.now(),loaded:!1}),u.signal=n.last.fetch.controller.signal,fetch(t,u).catch(h).then(f=>{if(f!=null){if(f?.status!=200){h(f??{});return}f.json().catch(h).then(m=>{n.requestComplete(m??{},e,i,l,a)}).finally(()=>o.unlock())}}),e=="load"&&c.finish(),r;function h(f){if(f?.name==="AbortError")return;o.unlock();let m=o.trigger("error",{response:f,lastFetch:o.last.fetch});m.isCancelled!==!0&&(f.status&&f.status!=200?f.json().then(y=>{o.error(f.status+": "+(y.message||f.statusText))}).catch(()=>{o.error(f.status+": "+f.statusText)}):(console.log("ERROR: Server communication failed.",`
355
+ `),s=W(n.box).find("#grid_"+n.name+"_"+f.name)):s.attr("style",f.style),x.length===0&&(x=W(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(m.recid)+" td:first-child"),x.length===0&&(x=W(n.box).find("#grid_"+n.name+"_rec_top td:first-child"))),v.length!==0&&s.css("border-left","0px"),m.recid!=null&&y.recid!=null&&x.length>0&&b.length>0){let $=getComputedStyle(b[0]),H=x.prop("offsetTop")-x.prop("scrollTop"),V=x.prop("offsetLeft")+x.prop("scrollLeft"),Y=b.prop("offsetTop")-b.prop("scrollTop"),ee=b.prop("offsetLeft")+b.prop("scrollLeft");s.show().css({top:(H>0?H:0)+"px",left:(V>0?V:0)+"px",width:ee-V+parseFloat($.width)-1+"px",height:Y-H+parseFloat($.height)-1+"px"})}else s.hide();else s.hide()}}W(n.box).find(".tsg-selection-resizer").off(".resizer").on("mousedown.resizer",c).on("dblclick.resizer",h=>{let f=e.trigger("resizerDblClick",{target:e.name,originalEvent:h});f.isCancelled!==!0&&f.finish()});let l,a={target:e.name,originalRange:null,newRange:null},r="abcdefghijklmnopqrstuvwxyz";return Date.now()-t;function c(h){let f=e.getSelectionCells(),m=f[0],y=f[f.length-1];e.last.move={type:"expand",x:h.screenX,y:h.screenY,divX:0,divY:0,index:m.index,recid:m.recid,column:m.column,name:r[m.column]+(m.index+1)+":"+r[y.column]+(y.index+1),originalRange:[p.clone(m),p.clone(y)],newRange:[p.clone(m),p.clone(y)]},a.originalName=e.last.move.name,a.originalRange=e.last.move.originalRange,W("body").off(".tsg-"+e.name).on("mousemove.tsg-"+e.name,d).on("mouseup.tsg-"+e.name,u),h.preventDefault()}function d(h){let f=e.last.move;if(!f||f.type!="expand")return;f.divX=h.screenX-f.x,f.divY=h.screenY-f.y;let m,y=h.target;if(y.tagName.toUpperCase()!="TD"&&(y=W(y).closest("td")[0]),W(y).attr("col")!=null&&(m=parseInt(W(y).attr("col"))),m==null)return;y=W(y).closest("tr")[0];let x=parseInt(W(y).attr("index")),b=e.records[x]?.recid;if(f.newRange[1].recid==b&&f.newRange[1].column==m)return;let g=p.clone(f.newRange);if(f.newRange=[{recid:f.recid,index:f.index,column:f.column},{recid:b,index:x,column:m}],a.newName=r[f.column]+(f.index+1)+":"+r[m]+(x+1),a.newRange=p.clone(f.newRange),l=e.trigger("selectionExtend",a),l.isCancelled===!0){f.newRange=g,a.newRange=g;return}else e.addRange({name:"selection-expand",range:f.newRange,class:"tsg-selection-expand"})}function u(h){e.removeRange("selection-expand"),W("body").off(".tsg-"+e.name),e.last.move?.type=="expand"&&l.finish&&l.finish(),delete e.last.move}}function $s(n,e){n.total=0,n.records=[],n.summary=[],n.last.fetch.offset=0,n.last.idCache={},n.last.selection={indexes:[],columns:{}},n.last.groupBy_links={},n.reset(!0),e||n.refresh()}function Ms(n,e){n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.vscroll.recIndStart=null,n.last.vscroll.recIndEnd=null,W(n.box).find(`#grid_${n.name}_records`).prop("scrollTop",0),e||n.refresh()}function Ds(n,e,s){return e==null?(console.log('ERROR: You need to provide url argument when calling .load() method of "'+n.name+'" object.'),new Promise((t,i)=>{i()})):(n.clear(!0),n.request("load",{},e,s))}function Is(n,e){let s=n.url?.get??n.url;return n.selectionSave(),s?n.load(s,()=>{n.selectionRestore(),typeof e=="function"&&e()}):(n.reset(!0),n.localSearch(),n.selectionRestore(),typeof e=="function"&&e({status:"success"}),new Promise(t=>{t()}))}function Os(n,e,s,t,i){let o=n,l,a,r=new Promise((f,m)=>{l=f,a=m});if(s==null&&(s={}),t||(t=n.url),!t)return new Promise((f,m)=>{m()});p.isInt(n.offset)||(n.offset=0),p.isInt(n.last.fetch.offset)||(n.last.fetch.offset=0);let c,d={limit:n.limit,offset:n.offset+n.last.fetch.offset,searchLogic:n.last.logic,search:n.searchData.map(f=>{let m=p.clone(f);return n.searchMap&&n.searchMap[m.field]&&(m.field=n.searchMap[m.field]),m}),sort:n.sortData.map(f=>{let m=p.clone(f);return n.sortMap&&n.sortMap[m.field]&&(m.field=n.sortMap[m.field]),m})};if(n.searchData.length===0&&(delete d.search,delete d.searchLogic),n.sortData.length===0&&delete d.sort,p.extend(d,n.postData),p.extend(d,s),(e=="delete"||e=="save")&&(delete d.limit,delete d.offset,d.action=e,e=="delete"&&(d[n.recid||"recid"]=n.getSelection())),e=="load"){if(c=n.trigger("request",{target:n.name,url:t,postData:d,httpMethod:"GET",httpHeaders:n.httpHeaders}),c.isCancelled===!0)return new Promise((f,m)=>{m()})}else c={detail:{url:t,postData:d,httpMethod:e=="save"?"PUT":"DELETE",httpHeaders:n.httpHeaders}};if(n.last.fetch.offset===0&&n.lock(p.lang(n.msgRefresh),!0),n.last.fetch.controller)try{n.last.fetch.controller.abort()}catch{}switch(t=c.detail.url,e){case"save":t?.save&&(t=t.save);break;case"delete":t?.remove&&(t=t.remove);break;default:t=t?.get??t}if(Object.keys(n.routeData).length>0){let f=p.parseRoute(t);if(f.keys.length>0)for(let m=0;m<f.keys.length;m++){let y=f.keys[m];n.routeData[y.name]!=null&&(t=t.replace(new RegExp(":"+y.name,"g"),n.routeData[y.name]))}}t=new URL(t,location.href);let u=p.prepareParams(t,{method:c.detail.httpMethod,headers:c.detail.httpHeaders,body:c.detail.postData},{dataType:n.dataType,caller:n,action:e});return Object.assign(n.last.fetch,{action:e,options:u,controller:new AbortController,start:Date.now(),loaded:!1}),u.signal=n.last.fetch.controller.signal,fetch(t,u).catch(h).then(f=>{if(f!=null){if(f?.status!=200){h(f??{});return}f.json().catch(h).then(m=>{n.requestComplete(m??{},e,i,l,a)}).finally(()=>o.unlock())}}),e=="load"&&c.finish(),r;function h(f){if(f?.name==="AbortError")return;o.unlock();let m=o.trigger("error",{response:f,lastFetch:o.last.fetch});m.isCancelled!==!0&&(f.status&&f.status!=200?f.json().then(y=>{o.error(f.status+": "+(y.message||f.statusText))}).catch(()=>{o.error(f.status+": "+f.statusText)}):(console.log("ERROR: Server communication failed.",`
356
356
  EXPECTED:`,{total:5,records:[{recid:1,field:"value"}]},`
357
- OR:`,{error:!0,message:"error message"}),o.requestComplete({error:!0,message:p.lang(o.msgHTTPError),response:f},e,i,l,a)),m.finish())}}function zs(n,e){let s=n.getChanges(),t=n.url?.save??n.url,i=n.trigger("save",{target:n.name,changes:s});i.isCancelled!==!0&&(t?n.request("save",{changes:i.detail.changes},null,o=>{o.error||n.mergeChanges(),i.finish(),typeof e=="function"&&e(o)}):(n.mergeChanges(),i.finish()))}var X=j;function Ls(n,...e){if(e.length===0)return 0;let s=0,t=n.last.selection;n.multiSelect||n.selectNone(!0);let i=e.slice();Array.isArray(i[0])&&(i=i[0]),i=i.filter(c=>{let d=c?.recid??c,u=c?.index??n.get(d,!0);return n.records[u]?.TsUi?.selectable===!1?!1:(typeof c=="object"&&(c.index??=u),!0)});let o={target:n.name};if(i.length==1?(o.multiple=!1,p.isPlainObject(i[0])?o.clicked={recid:i[0].recid,column:i[0].column}:o.recid=i[0]):(o.multiple=!0,o.clicked={recids:i}),n.compareSelection(i).select.length==0)return;let l=n.trigger("select",o);if(l.isCancelled===!0)return 0;if(n.selectType=="row")for(let c=0;c<i.length;c++){let d=typeof i[c]=="object"?i[c].recid:i[c],u=n.get(d,!0);if(u==null)continue;let h=null,f=null;if((n.searchData.length!==0||u+1>=(n.last.vscroll.recIndStart??0)&&u+1<=(n.last.vscroll.recIndEnd??0))&&(h=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)),f=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(d))),n.selectType=="row"){if(t.indexes.indexOf(u)!=-1)continue;t.indexes.push(u),h&&f&&(h.addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),f.addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),h.find(".tsg-grid-select-check").prop("checked",!0)),s++}}else{let c={};for(let u=0;u<i.length;u++){let h=typeof i[u]=="object"?i[u].recid:i[u],f=typeof i[u]=="object"?i[u].column:null;if(c[h]=c[h]||[],Array.isArray(f))c[h]=f;else if(p.isInt(f))c[h].push(f);else for(let m=0;m<n.columns.length;m++)n.columns[m].hidden||c[h].push(m)}let d=[];for(let u in c){let h=n.get(u,!0);if(h==null)continue;let f=null,m=null;h+1>=(n.last.vscroll.recIndStart??0)&&h+1<=(n.last.vscroll.recIndEnd??0)&&(f=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(u)),m=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(u)));let y=t.columns[h]||[];t.indexes.indexOf(h)==-1&&t.indexes.push(h);let x=c[u];for(let b=0;b<x.length;b++)y.indexOf(x[b])==-1&&y.push(x[b]);y.sort((b,g)=>b-g);for(let b=0;b<x.length;b++){let g=x[b];d.indexOf(g)==-1&&d.push(g),f&&(f.find("#grid_"+n.name+"_data_"+h+"_"+g).addClass("tsg-selected"),f.find(".tsg-col-number").addClass("tsg-row-selected"),f.find(".tsg-grid-select-check").prop("checked",!0)),m&&(m.find("#grid_"+n.name+"_data_"+h+"_"+g).addClass("tsg-selected"),m.find(".tsg-col-number").addClass("tsg-row-selected"),m.find(".tsg-grid-select-check").prop("checked",!0)),s++}t.columns[h]=y}for(let u=0;u<d.length;u++)X(n.box).find("#grid_"+n.name+"_column_"+d[u]+" .tsg-col-header").addClass("tsg-col-selected")}t.indexes.sort((c,d)=>c-d);let a=n.records.length>0&&t.indexes.length==n.records.length,r=t.indexes.length>0&&n.searchData.length!==0&&t.indexes.length==n.last.searchIds.length;return a||r?X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.addRange("selection"),n.updateToolbar(t,a),l.finish(),s}function As(n,...e){let s=0,t=n.last.selection,i=e.slice();Array.isArray(i[0])&&(i=i[0]);let o={target:n.name};if(i.length==1?(o.multiple=!1,p.isPlainObject(i[0])?o.clicked={recid:i[0].recid,column:i[0].column}:o.clicked={recid:i[0]}):(o.multiple=!0,o.recids=i),n.compareSelection(i).unselect.length==0)return 0;let l=n.trigger("select",o);if(l.isCancelled===!0)return 0;for(let c=0;c<i.length;c++){let d=typeof i[c]=="object"?i[c].recid:i[c],u=n.get(d);if(u==null)continue;let h=n.get(u.recid,!0)??-1,f=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)),m=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(d));if(n.selectType=="row"){if(t.indexes.indexOf(h)==-1)continue;t.indexes.splice(t.indexes.indexOf(h),1),f.removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),m.removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),f.length!=0&&(f[0].style.cssText="height: "+n.recordHeight+"px; "+f.attr("custom_style"),m[0].style.cssText="height: "+n.recordHeight+"px; "+m.attr("custom_style")),f.find(".tsg-grid-select-check").prop("checked",!1),s++}else{let y=i[c].column;if(!p.isInt(y)){let w=[];for(let T=0;T<n.columns.length;T++)n.columns[T].hidden||w.push({recid:d,column:T});return n.unselect(w)}let x=t.columns[h];if(!Array.isArray(x)||x.indexOf(y)==-1)continue;x.splice(x.indexOf(y),1),X(n.box).find(`#grid_${n.name}_rec_${p.escapeId(d)} > td[col="${y}"]`).removeClass("tsg-selected tsg-inactive"),X(n.box).find(`#grid_${n.name}_frec_${p.escapeId(d)} > td[col="${y}"]`).removeClass("tsg-selected tsg-inactive");let b=!1,g=!1,v=n.getSelectionCells();for(let w=0;w<v.length;w++)v[w].column==y&&(b=!0),v[w].recid==d&&(g=!0);b||X(n.box).find(`.tsg-grid-columns td[col="${y}"] .tsg-col-header, .tsg-grid-fcolumns td[col="${y}"] .tsg-col-header`).removeClass("tsg-col-selected"),g||X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)).find(".tsg-col-number").removeClass("tsg-row-selected"),s++,x.length===0&&(delete t.columns[h],t.indexes.splice(t.indexes.indexOf(h),1),f.find(".tsg-grid-select-check").prop("checked",!1))}}let a=n.records.length>0&&t.indexes.length==n.records.length,r=t.indexes.length>0&&n.searchData.length!==0&&t.indexes.length==n.last.searchIds.length;return a||r?X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.addRange("selection"),n.updateToolbar(t,a),l.finish(),s}function Fs(n,e){let s=[],t=[];if(n.selectType=="row"){let i=n.getSelectionRows();e.forEach((o,l)=>{typeof o=="object"&&(e[l]=o.recid)});for(let o=0;o<e.length;o++)i.includes(e[o])||s.push(e[o]);for(let o=0;o<e.length;o++)i.includes(e[o])&&t.push(e[o])}else{let i=n.getSelectionCells();for(let o=0;o<e.length;o++){let l=!1;for(let a=0;a<i.length;a++)e[o].recid==i[a].recid&&e[o].column==i[a].column&&(l=!0);l||s.push({recid:e[o].recid,column:e[o].column})}for(let o=0;o<i.length;o++){let l=!1;for(let a=0;a<e.length;a++)e[a].recid==i[o].recid&&e[a].column==i[o].column&&(l=!0);l||t.push({recid:i[o].recid,column:i[o].column})}}return{select:s,unselect:t}}function Hs(n){let e=Date.now();if(n.multiSelect===!1)return;let s=n.url?.get??n.url,t=p.clone(n.last.selection),i=[];for(let l=0;l<n.columns.length;l++)i.push(l);if(t.indexes=[],!s&&n.searchData.length!==0)for(let l=0;l<n.last.searchIds.length;l++)t.indexes.push(n.last.searchIds[l]),n.selectType!="row"&&(t.columns[n.last.searchIds[l]]=i.slice());else{let l=n.records.length;n.searchData.length!=0&&!s&&(l=n.last.searchIds.length);for(let a=0;a<l;a++)t.indexes.push(a),n.selectType!="row"&&(t.columns[a]=i.slice())}let o=n.trigger("select",{target:n.name,multiple:!0,all:!0,clicked:t});if(o.isCancelled!==!0)return n.last.selection=t,n.selectType=="row"?(X(n.box).find(".tsg-grid-records tr:not(.tsg-empty-record)").addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr:not(.tsg-empty-record)").addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!0)):(X(n.box).find(".tsg-grid-columns td .tsg-col-header, .tsg-grid-fcolumns td .tsg-col-header").addClass("tsg-col-selected"),X(n.box).find(".tsg-grid-records tr .tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-records tr:not(.tsg-empty-record)").find(".tsg-grid-data:not(.tsg-col-select)").addClass("tsg-selected"),X(n.box).find(".tsg-grid-frecords tr .tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr:not(.tsg-empty-record)").find(".tsg-grid-data:not(.tsg-col-select)").addClass("tsg-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!0)),t=n.getSelectionRows(!0),n.addRange("selection"),X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0),n.status(),n.updateToolbar({indexes:t},!0),o.finish(),Date.now()-e}function Ns(n,e){let s=Date.now(),t;if(!e&&(t=n.trigger("select",{target:n.name,clicked:[]}),t.isCancelled===!0))return;let i=n.last.selection;return n.selectType=="row"?(X(n.box).find(".tsg-grid-records tr.tsg-selected").removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr.tsg-selected").removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!1)):(X(n.box).find(".tsg-grid-columns td .tsg-col-header, .tsg-grid-fcolumns td .tsg-col-header").removeClass("tsg-col-selected"),X(n.box).find(".tsg-grid-records tr .tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr .tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-data.tsg-selected").removeClass("tsg-selected tsg-inactive"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!1)),i.indexes=[],i.columns={},n.removeRange("selection"),X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.updateToolbar(i,!1),e||t.finish(),Date.now()-s}function Ps(n,e,s){let t=n,i=e&&e.indexes?e.indexes.length:0;if(!n.toolbar.render)return;n.toolbar.items.forEach(l=>{o(l,""),Array.isArray(l.items)&&l.items.forEach(a=>{o(a,l.id+":")})}),n.show.toolbarSave&&(n.getChanges().length>0?n.toolbar.enable("tsg-save"):n.toolbar.disable("tsg-save"));function o(l,a){if(l.batch!=null){let r=!1;l.batch===!0?i>0&&(r=!0):typeof l.batch=="number"?i===l.batch&&(r=!0):typeof l.batch=="function"&&(r=l.batch({cnt:i,sel:e})),r?t.toolbar.enable(a+l.id):t.toolbar.disable(a+l.id)}}}function js(n,e){let s=[],t=n.last.selection;for(let i=0;i<t.indexes.length;i++){let o=t.indexes[i];n.records[o]&&(e===!0?s.push(o):s.push(n.records[o].recid))}return s}function Us(n){let e=[],s=n.last.selection;for(let t=0;t<s.indexes.length;t++){let i=s.indexes[t],o=s.columns[i]??[];if(n.records[i])for(let l=0;l<o.length;l++)e.push({recid:n.records[i].recid,index:i,column:o[l]})}return e}function Gs(n,e){return n.selectType==="row"?n.getSelectionRows(e):n.getSelectionCells()}var k=j,ce=ie,Ri=De,Ie=lt,Oe=W,fe=class extends ne{el;selected;helpers;type;options;onClick;onAdd;onNew;onRemove;onMouseEnter;onMouseLeave;onScroll;tmp;constructor(e,s){super(),typeof e=="string"&&s==null&&(s={type:e}),typeof e=="object"&&s==null&&(s=p.clone(e)),typeof e=="string"&&typeof s=="object"&&(s.type=e);let t=s;t.type=String(t.type).toLowerCase(),this.el=t.el??null,this.selected=null,this.helpers={},this.type=t.type??"text",this.options=p.clone(t),this.onClick=t.onClick??null,this.onAdd=t.onAdd??null,this.onNew=t.onNew??null,this.onRemove=t.onRemove??null,this.onMouseEnter=t.onMouseEnter??null,this.onMouseLeave=t.onMouseLeave??null,this.onScroll=t.onScroll??null,this.tmp={},delete this.options.type,delete this.options.onClick,delete this.options.onMouseEnter,delete this.options.onMouseLeave,delete this.options.onScroll,this.el&&this.render(this.el)}render(e){if(!(e instanceof HTMLElement)){console.log("ERROR: Cannot init TsField on empty subject");return}let s=e;s._w2field?.reset?.(),s._w2field=this,this.el=s,this.init()}init(){let e=this.options,s;if(this.el==null||!["INPUT","TEXTAREA"].includes(this.el.tagName.toUpperCase())){console.log("ERROR: TsField could only be applied to INPUT or TEXTAREA.",this.el);return}let t=this.el;switch(this.type){case"text":case"int":case"float":case"money":case"currency":case"percent":case"alphanumeric":case"bin":case"hex":{s={min:null,max:null,step:1,autoFormat:!0,autoCorrect:!0,currency:{prefix:p.settings.currencyPrefix,suffix:p.settings.currencySuffix,precision:p.settings.currencyPrecision},decimalSymbol:p.settings.decimalSymbol,groupSymbol:p.settings.groupSymbol,arrows:!1,keyboard:!0,precision:null,prefix:"",suffix:""},this.options=p.extend({},s,e),e=this.options,e.numberRE=new RegExp("["+e.groupSymbol+"]","g"),e.moneyRE=new RegExp("["+e.currency.prefix+e.currency.suffix+e.groupSymbol+"]","g"),e.percentRE=new RegExp("["+e.groupSymbol+"%]","g"),["text","alphanumeric","hex","bin"].includes(this.type)&&(e.arrows=!1,e.keyboard=!1);break}case"color":{let o=parseInt(getComputedStyle(this.el)["font-size"]??"12")||12;s={prefix:"#",suffix:`<div style="width: ${o}px; height: ${o}px; margin-top: -2px;
357
+ OR:`,{error:!0,message:"error message"}),o.requestComplete({error:!0,message:p.lang(o.msgHTTPError),response:f},e,i,l,a)),m.finish())}}function zs(n,e){let s=n.getChanges(),t=n.url?.save??n.url,i=n.trigger("save",{target:n.name,changes:s});i.isCancelled!==!0&&(t?n.request("save",{changes:i.detail.changes},null,o=>{o.error||n.mergeChanges(),i.finish(),typeof e=="function"&&e(o)}):(n.mergeChanges(),i.finish()))}var X=j;function Ls(n,...e){if(e.length===0)return 0;let s=0,t=n.last.selection;n.multiSelect||n.selectNone(!0);let i=e.slice();Array.isArray(i[0])&&(i=i[0]),i=i.filter(c=>{let d=c?.recid??c,u=c?.index??n.get(d,!0);return n.records[u]?.TsUi?.selectable===!1?!1:(typeof c=="object"&&(c.index??=u),!0)});let o={target:n.name};if(i.length==1?(o.multiple=!1,p.isPlainObject(i[0])?o.clicked={recid:i[0].recid,column:i[0].column}:o.recid=i[0]):(o.multiple=!0,o.clicked={recids:i}),n.compareSelection(i).select.length==0)return;let l=n.trigger("select",o);if(l.isCancelled===!0)return 0;if(n.selectType=="row")for(let c=0;c<i.length;c++){let d=typeof i[c]=="object"?i[c].recid:i[c],u=n.get(d,!0);if(u==null)continue;let h=null,f=null;if((n.searchData.length!==0||u+1>=(n.last.vscroll.recIndStart??0)&&u+1<=(n.last.vscroll.recIndEnd??0))&&(h=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)),f=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(d))),n.selectType=="row"){if(t.indexes.indexOf(u)!=-1)continue;t.indexes.push(u),h&&f&&(h.addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),f.addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),h.find(".tsg-grid-select-check").prop("checked",!0)),s++}}else{let c={};for(let u=0;u<i.length;u++){let h=typeof i[u]=="object"?i[u].recid:i[u],f=typeof i[u]=="object"?i[u].column:null;if(c[h]=c[h]||[],Array.isArray(f))c[h]=f;else if(p.isInt(f))c[h].push(f);else for(let m=0;m<n.columns.length;m++)n.columns[m].hidden||c[h].push(m)}let d=[];for(let u in c){let h=n.get(u,!0);if(h==null)continue;let f=null,m=null;h+1>=(n.last.vscroll.recIndStart??0)&&h+1<=(n.last.vscroll.recIndEnd??0)&&(f=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(u)),m=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(u)));let y=t.columns[h]||[];t.indexes.indexOf(h)==-1&&t.indexes.push(h);let x=c[u];for(let b=0;b<x.length;b++)y.indexOf(x[b])==-1&&y.push(x[b]);y.sort((b,g)=>b-g);for(let b=0;b<x.length;b++){let g=x[b];d.indexOf(g)==-1&&d.push(g),f&&(f.find("#grid_"+n.name+"_data_"+h+"_"+g).addClass("tsg-selected"),f.find(".tsg-col-number").addClass("tsg-row-selected"),f.find(".tsg-grid-select-check").prop("checked",!0)),m&&(m.find("#grid_"+n.name+"_data_"+h+"_"+g).addClass("tsg-selected"),m.find(".tsg-col-number").addClass("tsg-row-selected"),m.find(".tsg-grid-select-check").prop("checked",!0)),s++}t.columns[h]=y}for(let u=0;u<d.length;u++)X(n.box).find("#grid_"+n.name+"_column_"+d[u]+" .tsg-col-header").addClass("tsg-col-selected")}t.indexes.sort((c,d)=>c-d);let a=n.records.length>0&&t.indexes.length==n.records.length,r=t.indexes.length>0&&n.searchData.length!==0&&t.indexes.length==n.last.searchIds.length;return a||r?X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.addRange("selection"),n.updateToolbar(t,a),l.finish(),s}function As(n,...e){let s=0,t=n.last.selection,i=e.slice();Array.isArray(i[0])&&(i=i[0]);let o={target:n.name};if(i.length==1?(o.multiple=!1,p.isPlainObject(i[0])?o.clicked={recid:i[0].recid,column:i[0].column}:o.clicked={recid:i[0]}):(o.multiple=!0,o.recids=i),n.compareSelection(i).unselect.length==0)return 0;let l=n.trigger("select",o);if(l.isCancelled===!0)return 0;for(let c=0;c<i.length;c++){let d=typeof i[c]=="object"?i[c].recid:i[c],u=n.get(d);if(u==null)continue;let h=n.get(u.recid,!0)??-1,f=X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)),m=X(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(d));if(n.selectType=="row"){if(t.indexes.indexOf(h)==-1)continue;t.indexes.splice(t.indexes.indexOf(h),1),f.removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),m.removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),f.length!=0&&(f[0].style.cssText="height: "+n.recordHeight+"px; "+f.attr("custom_style"),m[0].style.cssText="height: "+n.recordHeight+"px; "+m.attr("custom_style")),f.find(".tsg-grid-select-check").prop("checked",!1),s++}else{let y=i[c].column;if(!p.isInt(y)){let w=[];for(let T=0;T<n.columns.length;T++)n.columns[T].hidden||w.push({recid:d,column:T});return n.unselect(w)}let x=t.columns[h];if(!Array.isArray(x)||x.indexOf(y)==-1)continue;x.splice(x.indexOf(y),1),X(n.box).find(`#grid_${n.name}_rec_${p.escapeId(d)} > td[col="${y}"]`).removeClass("tsg-selected tsg-inactive"),X(n.box).find(`#grid_${n.name}_frec_${p.escapeId(d)} > td[col="${y}"]`).removeClass("tsg-selected tsg-inactive");let b=!1,g=!1,v=n.getSelectionCells();for(let w=0;w<v.length;w++)v[w].column==y&&(b=!0),v[w].recid==d&&(g=!0);b||X(n.box).find(`.tsg-grid-columns td[col="${y}"] .tsg-col-header, .tsg-grid-fcolumns td[col="${y}"] .tsg-col-header`).removeClass("tsg-col-selected"),g||X(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(d)).find(".tsg-col-number").removeClass("tsg-row-selected"),s++,x.length===0&&(delete t.columns[h],t.indexes.splice(t.indexes.indexOf(h),1),f.find(".tsg-grid-select-check").prop("checked",!1))}}let a=n.records.length>0&&t.indexes.length==n.records.length,r=t.indexes.length>0&&n.searchData.length!==0&&t.indexes.length==n.last.searchIds.length;return a||r?X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.addRange("selection"),n.updateToolbar(t,a),l.finish(),s}function Fs(n,e){let s=[],t=[];if(n.selectType=="row"){let i=n.getSelectionRows();e.forEach((o,l)=>{typeof o=="object"&&(e[l]=o.recid)});for(let o=0;o<e.length;o++)i.includes(e[o])||s.push(e[o]);for(let o=0;o<e.length;o++)i.includes(e[o])&&t.push(e[o])}else{let i=n.getSelectionCells();for(let o=0;o<e.length;o++){let l=!1;for(let a=0;a<i.length;a++)e[o].recid==i[a].recid&&e[o].column==i[a].column&&(l=!0);l||s.push({recid:e[o].recid,column:e[o].column})}for(let o=0;o<i.length;o++){let l=!1;for(let a=0;a<e.length;a++)e[a].recid==i[o].recid&&e[a].column==i[o].column&&(l=!0);l||t.push({recid:i[o].recid,column:i[o].column})}}return{select:s,unselect:t}}function Hs(n){let e=Date.now();if(n.multiSelect===!1)return;let s=n.url?.get??n.url,t=p.clone(n.last.selection),i=[];for(let l=0;l<n.columns.length;l++)i.push(l);if(t.indexes=[],!s&&n.searchData.length!==0)for(let l=0;l<n.last.searchIds.length;l++)t.indexes.push(n.last.searchIds[l]),n.selectType!="row"&&(t.columns[n.last.searchIds[l]]=i.slice());else{let l=n.records.length;n.searchData.length!=0&&!s&&(l=n.last.searchIds.length);for(let a=0;a<l;a++)t.indexes.push(a),n.selectType!="row"&&(t.columns[a]=i.slice())}let o=n.trigger("select",{target:n.name,multiple:!0,all:!0,clicked:t});if(o.isCancelled!==!0)return n.last.selection=t,n.selectType=="row"?(X(n.box).find(".tsg-grid-records tr:not(.tsg-empty-record)").addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr:not(.tsg-empty-record)").addClass("tsg-selected").find(".tsg-col-number").addClass("tsg-row-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!0)):(X(n.box).find(".tsg-grid-columns td .tsg-col-header, .tsg-grid-fcolumns td .tsg-col-header").addClass("tsg-col-selected"),X(n.box).find(".tsg-grid-records tr .tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-records tr:not(.tsg-empty-record)").find(".tsg-grid-data:not(.tsg-col-select)").addClass("tsg-selected"),X(n.box).find(".tsg-grid-frecords tr .tsg-col-number").addClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr:not(.tsg-empty-record)").find(".tsg-grid-data:not(.tsg-col-select)").addClass("tsg-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!0)),t=n.getSelectionRows(!0),n.addRange("selection"),X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0),n.status(),n.updateToolbar({indexes:t},!0),o.finish(),Date.now()-e}function Ns(n,e){let s=Date.now(),t;if(!e&&(t=n.trigger("select",{target:n.name,clicked:[]}),t.isCancelled===!0))return;let i=n.last.selection;return n.selectType=="row"?(X(n.box).find(".tsg-grid-records tr.tsg-selected").removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr.tsg-selected").removeClass("tsg-selected tsg-inactive").find(".tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!1)):(X(n.box).find(".tsg-grid-columns td .tsg-col-header, .tsg-grid-fcolumns td .tsg-col-header").removeClass("tsg-col-selected"),X(n.box).find(".tsg-grid-records tr .tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-frecords tr .tsg-col-number").removeClass("tsg-row-selected"),X(n.box).find(".tsg-grid-data.tsg-selected").removeClass("tsg-selected tsg-inactive"),X(n.box).find("input.tsg-grid-select-check").prop("checked",!1)),i.indexes=[],i.columns={},n.removeRange("selection"),X(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status(),n.updateToolbar(i,!1),e||t.finish(),Date.now()-s}function Ps(n,e,s){let t=n,i=e&&e.indexes?e.indexes.length:0;if(!n.toolbar.render)return;n.toolbar.items.forEach(l=>{o(l,""),Array.isArray(l.items)&&l.items.forEach(a=>{o(a,l.id+":")})}),n.show.toolbarSave&&(n.getChanges().length>0?n.toolbar.enable("tsg-save"):n.toolbar.disable("tsg-save"));function o(l,a){if(l.batch!=null){let r=!1;l.batch===!0?i>0&&(r=!0):typeof l.batch=="number"?i===l.batch&&(r=!0):typeof l.batch=="function"&&(r=l.batch({cnt:i,sel:e})),r?t.toolbar.enable(a+l.id):t.toolbar.disable(a+l.id)}}}function js(n,e){let s=[],t=n.last.selection;for(let i=0;i<t.indexes.length;i++){let o=t.indexes[i];n.records[o]&&(e===!0?s.push(o):s.push(n.records[o].recid))}return s}function Us(n){let e=[],s=n.last.selection;for(let t=0;t<s.indexes.length;t++){let i=s.indexes[t],o=s.columns[i]??[];if(n.records[i])for(let l=0;l<o.length;l++)e.push({recid:n.records[i].recid,index:i,column:o[l]})}return e}function Gs(n,e){return n.selectType==="row"?n.getSelectionRows(e):n.getSelectionCells()}var k=j,ce=ie,Ri=De,Ie=lt,Oe=G,fe=class extends ne{el;selected;helpers;type;options;onClick;onAdd;onNew;onRemove;onMouseEnter;onMouseLeave;onScroll;tmp;constructor(e,s){super(),typeof e=="string"&&s==null&&(s={type:e}),typeof e=="object"&&s==null&&(s=p.clone(e)),typeof e=="string"&&typeof s=="object"&&(s.type=e);let t=s;t.type=String(t.type).toLowerCase(),this.el=t.el??null,this.selected=null,this.helpers={},this.type=t.type??"text",this.options=p.clone(t),this.onClick=t.onClick??null,this.onAdd=t.onAdd??null,this.onNew=t.onNew??null,this.onRemove=t.onRemove??null,this.onMouseEnter=t.onMouseEnter??null,this.onMouseLeave=t.onMouseLeave??null,this.onScroll=t.onScroll??null,this.tmp={},delete this.options.type,delete this.options.onClick,delete this.options.onMouseEnter,delete this.options.onMouseLeave,delete this.options.onScroll,this.el&&this.render(this.el)}render(e){if(!(e instanceof HTMLElement)){console.log("ERROR: Cannot init TsField on empty subject");return}let s=e;s._w2field?.reset?.(),s._w2field=this,this.el=s,this.init()}init(){let e=this.options,s;if(this.el==null||!["INPUT","TEXTAREA"].includes(this.el.tagName.toUpperCase())){console.log("ERROR: TsField could only be applied to INPUT or TEXTAREA.",this.el);return}let t=this.el;switch(this.type){case"text":case"int":case"float":case"money":case"currency":case"percent":case"alphanumeric":case"bin":case"hex":{s={min:null,max:null,step:1,autoFormat:!0,autoCorrect:!0,currency:{prefix:p.settings.currencyPrefix,suffix:p.settings.currencySuffix,precision:p.settings.currencyPrecision},decimalSymbol:p.settings.decimalSymbol,groupSymbol:p.settings.groupSymbol,arrows:!1,keyboard:!0,precision:null,prefix:"",suffix:""},this.options=p.extend({},s,e),e=this.options,e.numberRE=new RegExp("["+e.groupSymbol+"]","g"),e.moneyRE=new RegExp("["+e.currency.prefix+e.currency.suffix+e.groupSymbol+"]","g"),e.percentRE=new RegExp("["+e.groupSymbol+"%]","g"),["text","alphanumeric","hex","bin"].includes(this.type)&&(e.arrows=!1,e.keyboard=!1);break}case"color":{let o=parseInt(getComputedStyle(this.el)["font-size"]??"12")||12;s={prefix:"#",suffix:`<div style="width: ${o}px; height: ${o}px; margin-top: -2px;
358
358
  position: relative; top: 50%; transform: translateY(-50%);">&#160;</div>`,arrows:!1,advanced:null,transparent:!0},this.options=p.extend({},s,e),e=this.options;break}case"date":{s={format:p.settings.dateFormat,keyboard:!0,autoCorrect:!0,start:null,end:null,blockDates:[],blockWeekdays:[],colored:{},btnNow:!0},this.options=p.extend({type:"date"},s,e),e=this.options,k(this.el).attr("placeholder")==null&&k(this.el).attr("placeholder",e.format);break}case"time":{s={format:p.settings.timeFormat,keyboard:!0,autoCorrect:!0,start:null,end:null,btnNow:!0,noMinutes:!1},this.options=p.extend({type:"time"},s,e),e=this.options,k(this.el).attr("placeholder")==null&&k(this.el).attr("placeholder",e.format);break}case"datetime":{s={format:p.settings.dateFormat+"|"+p.settings.timeFormat,keyboard:!0,autoCorrect:!0,start:null,end:null,startTime:null,endTime:null,blockDates:[],blockWeekdays:[],colored:{},btnNow:!0,noMinutes:!1},this.options=p.extend({type:"datetime"},s,e),e=this.options,k(this.el).attr("placeholder")==null&&k(this.el).attr("placeholder",e.placeholder||e.format);break}case"list":case"combo":{s={items:[],selected:{},itemMap:null,match:"begins",filter:!0,compare:null,prefix:"",suffix:"",icon:null,iconStyle:"",url:null,method:null,postData:{},recId:null,recText:null,debounce:250,minLength:1,cacheMax:250,renderDrop:null,maxDropHeight:350,maxDropWidth:null,minDropWidth:null,markSearch:!1,align:"both",altRows:!0,openOnFocus:!1,hideSelected:!1,msgNoItems:"No matches",msgSearch:"Type to search...",onSearch:null,onRequest:null,onLoad:null,onError:null},typeof e.items=="function"&&(e._items_fun=e.items),e.items=p.normMenu.call(this,e.items,e),this.type==="list"&&(k(this.el).addClass("tsg-select"),!p.isPlainObject(e.selected)&&Array.isArray(e.items)&&e.items.forEach(l=>{l&&l.id===e.selected&&(e.selected=p.clone(l))})),e=p.extend({},s,e);let o=["is","begins","contains","ends"];o.includes(e.match)||console.log(`ERROR: invalid value "${e.match}" for option.match. It should be one of following: ${o.join(", ")}.`),this.options=e,p.isPlainObject(e.selected)||(e.selected={}),this.selected=e.selected,k(this.el).attr("autocapitalize","off").attr("autocomplete","off").attr("autocorrect","off").attr("spellcheck","false"),e.selected.text!=null&&k(this.el).val(e.selected.text);break}case"enum":{s={items:[],selected:[],itemMap:null,max:0,match:"begins",filter:!0,compare:null,url:null,method:null,postData:{},recId:null,recText:null,debounce:250,minLength:1,cacheMax:250,maxItemWidth:250,maxDropHeight:350,maxDropWidth:null,renderItem:null,renderDrop:null,style:"",openOnFocus:!1,markSearch:!1,align:"both",altRows:!0,hideSelected:!0,msgNoItems:"No matches",msgSearch:"Type to search...",onAdd:null,onNew:null,onRemove:null,onSearch:null,onClick:null,onRequest:null,onLoad:null,onError:null,onScroll:null,onMouseEnter:null,onMouseLeave:null},e=p.extend({},s,e,{suffix:""}),typeof e.items=="function"&&(e._items_fun=e.items);let o=["is","begins","contains","ends"];o.includes(e.match)||console.log(`ERROR: invalid value "${e.match}" for option.match. It should be one of following: ${o.join(", ")}.`),e.items=p.normMenu.call(this,e.items,e),e.selected=p.normMenu.call(this,e.selected,e),this.options=e,Array.isArray(e.selected)||(e.selected=[]),this.selected=e.selected;break}case"file":{s={selected:[],max:0,maxSize:0,maxFileSize:0,renderItem:null,maxItemWidth:250,maxDropHeight:350,maxDropWidth:null,readContent:!0,showErrors:!0,align:"both",altRows:!0,style:"",onClick:null,onAdd:null,onRemove:null,onMouseEnter:null,onMouseLeave:null},e=p.extend({},s,e),this.options=e,Array.isArray(e.selected)||(e.selected=[]),this.selected=e.selected,k(this.el).attr("placeholder")==null&&k(this.el).attr("placeholder",p.lang("Attach files by dragging and dropping or Click to Select"));break}default:{console.log(`ERROR: field type "${this.type}" is not supported.`);break}}let i=k(this.el);i.css("box-sizing","border-box"),i.addClass("TsField tsg-input").off(".TsField").on("change.TsField",o=>{this.change(o)}).on("click.TsField",o=>{this.click(o)}).on("focus.TsField",o=>{this.focus(o)}).on("blur.TsField",o=>{this.type!=="list"&&this.blur(o)}).on("keydown.TsField",o=>{this.keyDown(o)}).on("keyup.TsField",o=>{this.keyUp(o)}),this.addPrefix(),this.addSuffix(),this.addSearch(),this.addMultiSearch(),this.change(new Event("change"))}get(){let e;return["list","enum","file"].indexOf(this.type)!==-1?e=this.selected:e=k(this.el).val(),e}set(e,s){if(["list","enum","file"].indexOf(this.type)!==-1){let t=ce.get(this.el.id+"_menu");if(t?.hide(),this.type!=="list"&&s)Array.isArray(this.selected)||(this.selected=[]),this.selected.push(e),t&&(t.options.selected=this.selected),k(this.el).trigger("input").trigger("change");else{e==null&&(e=[]);let i=this.type==="enum"&&!Array.isArray(e)?[e]:e;this.selected=i,k(this.el).trigger("input").trigger("change")}this.refresh()}else k(this.el).val(e)}setIndex(e,s){if(["list","enum"].indexOf(this.type)!==-1){let t=ce.get(this.el.id+"_menu");t?.hide();let i=this.options.items;if(i&&i[e])return this.type=="list"&&(this.selected=i[e]),this.type=="enum"&&(s||(this.selected=[]),this.selected.push(i[e])),t&&(t.options.selected=this.selected),k(this.el).trigger("input").trigger("change"),this.refresh(),!0}return!1}refresh(){let e=this.options,s=Date.now(),t=getComputedStyle(this.el);if(this.type=="color"){let o=this.el.value;o.substr(0,1)!="#"&&o.substr(0,3)!="rgb"&&(o="#"+o),k(this.helpers.suffix).find(":scope > div").css("background-color",o)}if(this.type=="list"){if(this.helpers.prefix&&k(this.helpers.prefix).hide(),!this.helpers.search)return Date.now()-s;this.selected==null&&e.icon?(e.prefix=`
359
359
  <span class="tsg-icon ${e.icon} "style="cursor: pointer; font-size: 14px;
360
360
  display: inline-block; margin-top: -1px; color: #7F98AD; ${e.iconStyle}">
@@ -425,14 +425,14 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
425
425
  ${k(this.el).prop("disabled")?"disabled":""}>
426
426
  </div>
427
427
  </div>
428
- </div>`),this.tmp["old-background-color"]=s["background-color"],this.tmp["old-border-color"]=s["border-color"],k(this.el).before(e).css({"border-color":"transparent","background-color":"transparent"});let l=k(this.el.previousElementSibling);this.helpers.multi=l,k(this.el).attr("tabindex",String(-1)),l.on("mousedown",a=>{k(a.target).addClass("has-focus")}).on("mouseup",a=>{k(a.target).removeClass("has-focus")}).on("click",a=>{this.focus(a),this.updateOverlay()}),l.find("input:not(.file-input)").on("click",a=>{this.click(a)}).on("focus",a=>{this.focus(a)}).on("blur",a=>{this.blur(a)}).on("keydown",a=>{this.keyDown(a)}).on("keyup",a=>{this.keyUp(a)}),this.type==="file"&&l.find("input.file-input").off(".drag").on("click.drag",a=>{let r=a;r.stopPropagation(),!(k(this.el).prop("readOnly")||k(this.el).prop("disabled"))&&this.focus(r)}).on("dragenter.drag",a=>{k(this.el).prop("readOnly")||k(this.el).prop("disabled")||l.addClass("tsg-file-dragover")}).on("dragleave.drag",a=>{k(this.el).prop("readOnly")||k(this.el).prop("disabled")||l.removeClass("tsg-file-dragover")}).on("drop.drag",a=>{let r=a;if(k(this.el).prop("readOnly")||k(this.el).prop("disabled"))return;l.removeClass("tsg-file-dragover"),Array.from(r.dataTransfer?.files??[]).forEach(d=>{this.addFile(d)}),this.focus(r),r.preventDefault(),r.stopPropagation()}).on("dragover.drag",a=>{let r=a;r.preventDefault(),r.stopPropagation()}).on("change.drag",a=>{let r=a.target;r.files!=null&&Array.from(r.files).forEach(c=>{this.addFile(c)}),this.focus(a)}),this.refresh()}addFile(e){let s=this.options,t=this.selected,i={name:e.name,type:e.type,modified:new Date(e.lastModified),size:e.size,content:null,file:e},o=0,l=0,a=[];Array.isArray(t)&&t.forEach(c=>{c.name==e.name&&c.size==e.size&&a.push(p.lang('The file "${name}" (${size}) is already added.',{name:e.name,size:String(p.formatSize(e.size))})),o+=c.size,l++}),s.maxFileSize!==0&&i.size>s.maxFileSize&&a.push(p.lang("Maximum file size is ${size}",{size:String(p.formatSize(s.maxFileSize))})),s.maxSize!==0&&o+i.size>s.maxSize&&a.push(p.lang("Maximum total size is ${size}",{size:String(p.formatSize(s.maxSize))})),s.max!==0&&l>=s.max&&a.push(p.lang("Maximum number of files is ${count}",{count:s.max}));let r=this.trigger("add",{target:this.el,file:i,total:l,totalSize:o,errors:a});if(r.isCancelled!==!0){if(a.length>0){s.showErrors&&Oe.show({anchor:this.el,html:"Errors: "+a.join("<br>"),hideOn:["input","doc-click"]}),console.log("ERRORS (while adding files): ",a);return}if(t.push(i),typeof FileReader<"u"&&s.readContent===!0){let c=new FileReader;c.onload=d=>{let u=d.target?.result??"",h=u.indexOf(",");i.content=u.substr(h+1),this.refresh(),k(this.el).trigger("input").trigger("change"),r.finish()},c.readAsDataURL(e)}else this.refresh(),k(this.el).trigger("input").trigger("change"),r.finish()}}moveCaret2end(){setTimeout(()=>{this.el.setSelectionRange(this.el.value.length,this.el.value.length)},0)}};var ae=j,ct=W;function Bs(n,e,s,t,i){let o=n;if(n.last.inEditMode===!0){if(i&&i.keyCode==13){let{index:_,column:C,value:D}=n.last._edit;n.editChange({type:"custom",value:D},_,C,i),n.editDone(_,C,i)}else{let _=ae(n.box).find("div.tsg-edit-box .tsg-input");_.length>0&&(_.get(0).tagName=="DIV"?(_.text(_.text()+t),p.setCursorPosition(_.get(0),_.text().length)):(_.val(_.val()+t),p.setCursorPosition(_.get(0),_.val().length)))}return}let l=n.get(e,!0);if(l==null)return;let a=n.getCellEditable(l,s);if(!a||["checkbox","check"].includes(a.type))return;let r=n.records[l],c=n.columns[s],d=c.frozen===!0?"_f":"_";if(["enum","file"].indexOf(a.type)!=-1){console.log('ERROR: input types "enum" and "file" are not supported in inline editing.');return}let u=n.trigger("editField",{target:n.name,recid:e,column:s,value:t,index:l,originalEvent:i});if(u.isCancelled===!0)return;t=u.detail.value,n.last.inEditMode=!0,n.last.editColumn=s,n.last._edit={value:t,index:l,column:s,recid:e},n.selectNone(!0),n.select({recid:e,column:s});let h=ae(n.box).find("#grid_"+n.name+d+"rec_"+p.escapeId(e)),f=h.find('[col="'+s+'"] > div');n.last._edit.tr=h,n.last._edit.div=f,ae(n.box).find("div.tsg-edit-box").remove(),n.selectType!="row"&&(ae(n.box).find("#grid_"+n.name+d+"selection").attr("id","grid_"+n.name+"_editable").removeClass("tsg-selection").addClass("tsg-edit-box").prepend('<div style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;"></div>').find(".tsg-selection-resizer").remove(),f=ae(n.box).find("#grid_"+n.name+"_editable > div:first-child")),a.attr=a.attr??"",a.text=a.text??"",a.style=a.style??"",a.items=a.items??[];let m=r.TsUi?.changes?.[c.field]!=null?p.stripTags(r.TsUi.changes[c.field]):p.stripTags(o.parseField(r,c.field));m==null&&(m="");let y=typeof m!="object"?m:"";u.detail.prevValue!=null&&(y=u.detail.prevValue),t!=null&&(m=t);let x=c.style!=null?c.style+";":"";if(typeof c.render=="string"){let _=c.render.replace("|",":").split(":");["number","int","float","money","currency","percent","size"].includes(_[0]??"")&&(x+="text-align: right;")}a.items.length>0&&!p.isPlainObject(a.items[0])&&(a.items=p.normMenu(a.items,a));let b,g=["date","time","datetime","color","list","combo"],v=getComputedStyle(h.find('[col="'+s+'"] > div').get(0)),w=`font-family: ${v.getPropertyValue("font-family")}; font-size: ${v.getPropertyValue("font-size")};`;if(a.type==="div")f.addClass("tsg-editable").html(p.stripSpaces(`<div id="grid_${n.name}_edit_${e}_${s}" class="tsg-input tsg-focus"
428
+ </div>`),this.tmp["old-background-color"]=s["background-color"],this.tmp["old-border-color"]=s["border-color"],k(this.el).before(e).css({"border-color":"transparent","background-color":"transparent"});let l=k(this.el.previousElementSibling);this.helpers.multi=l,k(this.el).attr("tabindex",String(-1)),l.on("mousedown",a=>{k(a.target).addClass("has-focus")}).on("mouseup",a=>{k(a.target).removeClass("has-focus")}).on("click",a=>{this.focus(a),this.updateOverlay()}),l.find("input:not(.file-input)").on("click",a=>{this.click(a)}).on("focus",a=>{this.focus(a)}).on("blur",a=>{this.blur(a)}).on("keydown",a=>{this.keyDown(a)}).on("keyup",a=>{this.keyUp(a)}),this.type==="file"&&l.find("input.file-input").off(".drag").on("click.drag",a=>{let r=a;r.stopPropagation(),!(k(this.el).prop("readOnly")||k(this.el).prop("disabled"))&&this.focus(r)}).on("dragenter.drag",a=>{k(this.el).prop("readOnly")||k(this.el).prop("disabled")||l.addClass("tsg-file-dragover")}).on("dragleave.drag",a=>{k(this.el).prop("readOnly")||k(this.el).prop("disabled")||l.removeClass("tsg-file-dragover")}).on("drop.drag",a=>{let r=a;if(k(this.el).prop("readOnly")||k(this.el).prop("disabled"))return;l.removeClass("tsg-file-dragover"),Array.from(r.dataTransfer?.files??[]).forEach(d=>{this.addFile(d)}),this.focus(r),r.preventDefault(),r.stopPropagation()}).on("dragover.drag",a=>{let r=a;r.preventDefault(),r.stopPropagation()}).on("change.drag",a=>{let r=a.target;r.files!=null&&Array.from(r.files).forEach(c=>{this.addFile(c)}),this.focus(a)}),this.refresh()}addFile(e){let s=this.options,t=this.selected,i={name:e.name,type:e.type,modified:new Date(e.lastModified),size:e.size,content:null,file:e},o=0,l=0,a=[];Array.isArray(t)&&t.forEach(c=>{c.name==e.name&&c.size==e.size&&a.push(p.lang('The file "${name}" (${size}) is already added.',{name:e.name,size:String(p.formatSize(e.size))})),o+=c.size,l++}),s.maxFileSize!==0&&i.size>s.maxFileSize&&a.push(p.lang("Maximum file size is ${size}",{size:String(p.formatSize(s.maxFileSize))})),s.maxSize!==0&&o+i.size>s.maxSize&&a.push(p.lang("Maximum total size is ${size}",{size:String(p.formatSize(s.maxSize))})),s.max!==0&&l>=s.max&&a.push(p.lang("Maximum number of files is ${count}",{count:s.max}));let r=this.trigger("add",{target:this.el,file:i,total:l,totalSize:o,errors:a});if(r.isCancelled!==!0){if(a.length>0){s.showErrors&&Oe.show({anchor:this.el,html:"Errors: "+a.join("<br>"),hideOn:["input","doc-click"]}),console.log("ERRORS (while adding files): ",a);return}if(t.push(i),typeof FileReader<"u"&&s.readContent===!0){let c=new FileReader;c.onload=d=>{let u=d.target?.result??"",h=u.indexOf(",");i.content=u.substr(h+1),this.refresh(),k(this.el).trigger("input").trigger("change"),r.finish()},c.readAsDataURL(e)}else this.refresh(),k(this.el).trigger("input").trigger("change"),r.finish()}}moveCaret2end(){setTimeout(()=>{this.el.setSelectionRange(this.el.value.length,this.el.value.length)},0)}};var ae=j,ct=G;function Bs(n,e,s,t,i){let o=n;if(n.last.inEditMode===!0){if(i&&i.keyCode==13){let{index:_,column:C,value:D}=n.last._edit;n.editChange({type:"custom",value:D},_,C,i),n.editDone(_,C,i)}else{let _=ae(n.box).find("div.tsg-edit-box .tsg-input");_.length>0&&(_.get(0).tagName=="DIV"?(_.text(_.text()+t),p.setCursorPosition(_.get(0),_.text().length)):(_.val(_.val()+t),p.setCursorPosition(_.get(0),_.val().length)))}return}let l=n.get(e,!0);if(l==null)return;let a=n.getCellEditable(l,s);if(!a||["checkbox","check"].includes(a.type))return;let r=n.records[l],c=n.columns[s],d=c.frozen===!0?"_f":"_";if(["enum","file"].indexOf(a.type)!=-1){console.log('ERROR: input types "enum" and "file" are not supported in inline editing.');return}let u=n.trigger("editField",{target:n.name,recid:e,column:s,value:t,index:l,originalEvent:i});if(u.isCancelled===!0)return;t=u.detail.value,n.last.inEditMode=!0,n.last.editColumn=s,n.last._edit={value:t,index:l,column:s,recid:e},n.selectNone(!0),n.select({recid:e,column:s});let h=ae(n.box).find("#grid_"+n.name+d+"rec_"+p.escapeId(e)),f=h.find('[col="'+s+'"] > div');n.last._edit.tr=h,n.last._edit.div=f,ae(n.box).find("div.tsg-edit-box").remove(),n.selectType!="row"&&(ae(n.box).find("#grid_"+n.name+d+"selection").attr("id","grid_"+n.name+"_editable").removeClass("tsg-selection").addClass("tsg-edit-box").prepend('<div style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;"></div>').find(".tsg-selection-resizer").remove(),f=ae(n.box).find("#grid_"+n.name+"_editable > div:first-child")),a.attr=a.attr??"",a.text=a.text??"",a.style=a.style??"",a.items=a.items??[];let m=r.TsUi?.changes?.[c.field]!=null?p.stripTags(r.TsUi.changes[c.field]):p.stripTags(o.parseField(r,c.field));m==null&&(m="");let y=typeof m!="object"?m:"";u.detail.prevValue!=null&&(y=u.detail.prevValue),t!=null&&(m=t);let x=c.style!=null?c.style+";":"";if(typeof c.render=="string"){let _=c.render.replace("|",":").split(":");["number","int","float","money","currency","percent","size"].includes(_[0]??"")&&(x+="text-align: right;")}a.items.length>0&&!p.isPlainObject(a.items[0])&&(a.items=p.normMenu(a.items,a));let b,g=["date","time","datetime","color","list","combo"],v=getComputedStyle(h.find('[col="'+s+'"] > div').get(0)),w=`font-family: ${v.getPropertyValue("font-family")}; font-size: ${v.getPropertyValue("font-size")};`;if(a.type==="div")f.addClass("tsg-editable").html(p.stripSpaces(`<div id="grid_${n.name}_edit_${e}_${s}" class="tsg-input tsg-focus"
429
429
  contenteditable autocorrect="off" autocomplete="off" spellcheck="false"
430
430
  style="${w+x+a.style}"
431
431
  field="${c.field}" recid="${e}" column="${s}" ${a.attr}>
432
432
  </div>${a.text}`)),b=f.find("div.tsg-input").get(0),b.innerText=typeof m!="object"?m:"",t!=null?p.setCursorPosition(b,b.innerText.length):p.setCursorPosition(b,0,b.innerText.length);else{f.addClass("tsg-editable").html(p.stripSpaces(`<input id="grid_${n.name}_edit_${e}_${s}" class="tsg-input"
433
433
  autocorrect="off" autocomplete="off" spellcheck="false" type="text"
434
434
  style="${w+x+a.style}"
435
- field="${c.field}" recid="${e}" column="${s}" ${a.attr}>${a.text}`)),b=f.find("input").get(0),a.type=="number"&&(m=p.formatNumber(m)),a.type=="date"&&(m=p.formatDate(p.isDate(m,a.format,!0)||new Date,a.format)),b.value=typeof m!="object"?m:"";let _=C=>{let D=n.last._edit?.escKey,O=!1,I=ae(b).data("tooltipName");I&&ct.get(I[0])?.selected!=null&&(O=!0),n.last.inEditMode&&!D&&g.includes(a.type)&&(C.detail.overlay.anchor?.id==n.last._edit?.input?.id||a.type=="list")&&(n.editChange(),n.editDone(void 0,void 0,{keyCode:O?13:0}))};new fe(p.extend({},a,{el:b,selected:m,onSelect:_,onHide:_})),t==null&&b&&b.select()}Object.assign(n.last._edit,{input:b,edit:a}),ae(b).off(".tsg-editable").on("blur.tsg-editable",_=>{if(n.last.inEditMode){let C=n.last._edit?.edit?.type,D=ae(b).data("tooltipName"),O=_.target;if(D&&g.includes(C)||O?._keepOpen===!0){delete O._keepOpen;return}n.editChange(b,l,s,_),n.editDone()}}).on("mousedown.tsg-editable",_=>{_.stopPropagation()}).on("click.tsg-editable",_=>{T.call(b,_)}).on("paste.tsg-editable",_=>{_.preventDefault();let C=_.clipboardData.getData("text/plain");document.execCommand("insertHTML",!1,C)}).on("keyup.tsg-editable",_=>{T.call(b,_)}).on("keydown.tsg-editable",_=>{let C=_;switch(C.keyCode){case 8:a.type=="list"&&!b._w2field&&C.preventDefault();break;case 9:case 13:C.preventDefault();break;case 27:let D=ae(b).data("tooltipName");if(D&&D.length>0){n.last._edit&&(n.last._edit.escKey=!0),ct.hide(D[0]),C.preventDefault();return}C.stopPropagation();break}setTimeout(()=>{switch(C.keyCode){case 9:{let D=C.shiftKey?o.prevCell(l,s,!0):o.nextCell(l,s,!0);if(D!=null){let O=o.records[D.index].recid;n.editChange(b,l,s,_),n.editDone(l,s,_),o.selectType!="row"?(o.selectNone(!0),o.select({recid:O,column:D.colIndex})):o.editField(O,D.colIndex,null,_),_.preventDefault&&_.preventDefault()}break}case 13:{let D=!1,O=ae(b).data("tooltipName");O&&ct.get(O[0]).selected!=null&&(D=!0),(!O||!D)&&b._keepOpen!==!0?(n.editChange(b,l,s,_),n.editDone(l,s,_)):delete b._keepOpen;break}case 27:{n.last._edit&&(n.last._edit.escKey=!1);let D=o.parseField(r,c.field);r.TsUi?.changes?.[c.field]!=null&&(D=r.TsUi.changes[c.field]),b._prevValue!=null&&(D=b._prevValue),b.tagName=="DIV"?b.innerText=D??"":b.value=D??"",n.editDone(l,s,_),setTimeout(()=>{o.select({recid:e,column:s})},1);break}}T(b)},1)}),b&&(b._prevValue=y),a.type!="list"&&setTimeout(()=>{n.last.inEditMode&&b&&(b.focus(),clearTimeout(n.last.kbd_timer??void 0),b.resize=T,T(b))},50),u.finish({input:b});return;function T(_){try{let C=getComputedStyle(_),D=_.tagName.toUpperCase()=="DIV"?_.innerText:_.value,O=ae(o.box).find("#grid_"+o.name+"_editable").get(0),I=`font-family: ${C.getPropertyValue("font-family")}; font-size: ${C.getPropertyValue("font-size")}; white-space: no-wrap;`,R=p.getStrWidth(D,I);R+20>O.clientWidth&&ae(O).css("width",R+20+"px")}catch{}}}function Qs(n,e,s,t,i){e=e??n.last._edit?.input,s=s??n.last._edit?.index,t=t??n.last._edit?.column,i=i??{};let o=s<0;s=s<0?-s-1:s;let a=(o?n.summary:n.records)[s],r=n.columns[t],c=e?.tagName=="DIV"?e.innerText:e.value,d=e._w2field;d&&(d.type=="list"&&(c=d.selected),(c==null||Object.keys(c).length===0)&&(c=""),p.isPlainObject(c)||(c=d.clean(c))),e.type=="checkbox"&&(a.TsUi?.editable===!1&&(e.checked=!e.checked),c=e.checked);let u=n.parseField(a,r.field),h=a.TsUi?.changes&&a.TsUi.changes.hasOwnProperty(r.field)?a.TsUi.changes[r.field]:u,f={target:n.name,input:e,recid:a.recid,index:s,column:t,originalEvent:i,value:{new:c,previous:h,original:u}};i.target?._prevValue!=null&&(f.value.previous=i.target._prevValue);let m=0;for(;m<20;){if(m++,c=f.value.new,typeof c!="object"&&String(u)!=String(c)||typeof c=="object"&&c&&c.id!=u&&(typeof u!="object"||u==null||c.id!=u.id)){if(f=n.trigger("change",f),f.isCancelled!==!0){if(c!==f.detail.value.new)continue;(f.detail.value.new===""||f.detail.value.new==null)&&(h===""||h==null)||(a.TsUi=a.TsUi??{},a.TsUi.changes=a.TsUi.changes??{},a.TsUi.changes[r.field]=f.detail.value.new),f.finish()}}else if(f=n.trigger("restore",f),f.isCancelled!==!0){if(c!==f.detail.value.new)continue;a.TsUi?.changes&&(delete a.TsUi.changes[r.field],Object.keys(a.TsUi.changes).length===0&&delete a.TsUi.changes),f.finish()}break}}function Vs(n,e,s,t){if(e=e??n.last._edit?.index,s=s??n.last._edit?.column,t=t??{},n.advanceOnEdit&&t.keyCode==13){let r=t.shiftKey?n.prevRow(e,s,1)??e:n.nextRow(e,s,1)??e;setTimeout(()=>{n.selectType!="row"?(n.selectNone(!0),n.select({recid:n.records[r].recid,column:s})):n.editField(n.records[r].recid,s,null,t)},1)}let i=e<0,o=ae(n.last._edit?.tr).find('[col="'+s+'"]'),l=n.records[e],a=n.columns[s];n.last.inEditMode=!1,n.last._edit=null,i||(l.TsUi?.changes?.[a.field]!=null?o.addClass("tsg-changed"):o.removeClass("tsg-changed"),o.replace(n.getCellHTML(e,s,i))),ae(n.box).find("div.tsg-edit-box").remove(),n.updateToolbar(),setTimeout(()=>{let r=ae(n.box).find(`#grid_${n.name}_focus`).get(0);document.activeElement!==r&&!n.last.inEditMode&&r.focus()},10)}var J=j,qs=ie,he=W;function Ws(n,e,s){let t=0;s===void 0?(s=e,e=n.searches.length):(typeof e=="string"&&(e=n.getSearch(e,!0)),e==null&&(e=n.searches.length)),Array.isArray(s)||(s=[s]);for(let i=0;i<s.length;i++)n.searches.splice(e,0,s[i]),e++,t++;return n.searchClose(),t}function Ys(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&(n.searches.splice(o,1),s++)}return n.searchClose(),s}function Xs(n,e,s){if(e===void 0){let t=[];for(let i=0;i<n.searches.length;i++)t.push(n.searches[i].field);return t}for(let t=0;t<n.searches.length;t++)if(n.searches[t].field==e)return s===!0?t:n.searches[t];return null}function Ks(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&(n.searches[o].hidden=!n.searches[o].hidden,s++)}return n.searchClose(),s}function Js(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&n.searches[o].hidden!==!1&&(n.searches[o].hidden=!1,s++)}return n.searchClose(),s}function Zs(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&n.searches[o].hidden!==!0&&(n.searches[o].hidden=!0,s++)}return n.searchClose(),s}function en(n,e){for(let s=0;s<n.searchData.length;s++)if(n.searchData[s].field==e)return n.searchData[s];return null}function tn(n,e,s){let t=n.url?.get??n.url,i=[],o=n.last.multi,l=n.last.logic,a=n.last.field,r=n.last.search,c=!1,d=J(`#w2overlay-${n.name}-search-overlay`);s===""&&(s=null);for(let h=0;h<n.searches.length;h++){let f=n.searches[h];!f.hidden||f.value==null||(i.push({field:f.field,operator:f.operator||"is",type:f.type,value:f.value||""}),c=!0)}if(e===void 0&&d.length===0&&(n.multiSearch?(e=n.searchData,s=n.last.logic):(e=n.last.field,s=n.last.search)),e===void 0&&d.length!==0){n.focus(),l=d.find(`#grid_${n.name}_logic`).val(),r="";for(let h=0;h<n.searches.length;h++){let f=n.searches[h],m=d.find("#grid_"+n.name+"_operator_"+h).val(),y=d.find("#grid_"+n.name+"_field_"+h),x=d.find("#grid_"+n.name+"_field2_"+h),b=y.val(),g=x.val(),v=null,w=null;if(["int","float","money","currency","percent"].indexOf(f.type)!=-1){let T=y[0]._w2field,_=x[0]._w2field;T&&(b=T.clean(b)),_&&(g=_.clean(g))}if(["list","enum"].indexOf(f.type)!=-1||["in","not in"].indexOf(m)!=-1)if(b=y[0]._w2field.selected||{},Array.isArray(b)){v=[];for(let T=0;T<b.length;T++)v.push(p.isFloat(b[T].id)?parseFloat(b[T].id):String(b[T].id).toLowerCase()),delete b[T].hidden;Object.keys(b).length===0&&(b="")}else w=b.text||"",b=b.id||"";if(b!==""&&b!=null||g!=null&&g!==""){let T={field:f.field,type:f.type,operator:m};m=="between"?p.extend(T,{value:[b,g]}):m=="in"&&typeof b=="string"?p.extend(T,{value:b.split(",")}):m=="not in"&&typeof b=="string"?p.extend(T,{value:b.split(",")}):p.extend(T,{value:b}),v&&p.extend(T,{svalue:v}),w&&p.extend(T,{text:w});try{f.type=="date"&&m=="between"&&(T.value[0]=b,T.value[1]=g),f.type=="date"&&m=="is"&&(T.value=b)}catch{}i.push(T),o=!0}}}if(typeof e=="string"&&(s===void 0&&(s=e,e="all"),a=e,r=s,o=!1,l=c?"AND":"OR",s!=null))if(e.toLowerCase()=="all"){if(n.searches.length>0)for(let h=0;h<n.searches.length;h++){let f=n.searches[h];if(f.type=="text"||f.type=="alphanumeric"&&p.isAlphaNumeric(s)||f.type=="int"&&p.isInt(s)||f.type=="float"&&p.isFloat(s)||f.type=="percent"&&p.isFloat(s)||(f.type=="hex"||f.type=="color")&&p.isHex(s)||f.type=="currency"&&p.isMoney(s)||f.type=="money"&&p.isMoney(s)||f.type=="date"&&p.isDate(s)||f.type=="time"&&p.isTime(s)||f.type=="datetime"&&p.isDateTime(s)||f.type=="datetime"&&p.isDate(s)||f.type=="enum"&&p.isAlphaNumeric(s)||f.type=="list"&&p.isAlphaNumeric(s)){let m=n.defaultOperator[n.operatorsMap[f.type]],y={field:f.field,type:f.type,operator:f.operator!=null?f.operator:m,value:s};String(s).trim()!=""&&i.push(y)}if(["int","float","money","currency","percent"].indexOf(f.type)!=-1){let m=String(s).trim().split("-").map(y=>y.trim()).filter(y=>p.isFloat(y));if(m.length==2){let y={field:f.field,type:f.type,operator:"between",value:[m[0],m[1]]};i.push(y)}}if(["list","enum"].indexOf(f.type)!=-1){let m=[];f.options==null&&(f.options={}),Array.isArray(f.options.items)||(f.options.items=[]);for(let y=0;y<f.options.items;y++){let x=f.options.items[y];try{let b=new RegExp(s,"i");b.test(x)&&m.push(y),x.text&&b.test(x.text)&&m.push(x.id)}catch{}}if(m.length>0){let y={field:f.field,type:f.type,operator:f.operator!=null?f.operator:"in",value:m};i.push(y)}}}else for(let h=0;h<n.columns.length;h++){let f={field:n.columns[h].field,type:"text",operator:n.defaultOperator.text,value:s};i.push(f)}if(i.length==0){let h={field:"All",type:"text",operator:n.defaultOperator.text,value:s};i.push(h)}}else{let h=d.find("#grid_"+n.name+"_search_all"),f=n.getSearch(e);if(f==null&&(f={field:e,type:"text"}),f.field==e&&(n.last.label=f.label??""),s!==""){let m=n.defaultOperator[n.operatorsMap[f.type]],y=s;if(["date","time","datetime"].indexOf(f.type)!=-1&&(m="is"),["list","enum"].indexOf(f.type)!=-1){m="is";let b=h._w2field?.get();b&&Object.keys(b).length>0?y=b.id:y=""}if(f.type=="int"&&s!==""){if(m="is",String(s).indexOf("-")!=-1){let b=s.split("-");b.length==2&&(m="between",y=[parseInt(b[0]),parseInt(b[1])])}if(String(s).indexOf(",")!=-1){let b=s.split(",");m="in",y=[];for(let g=0;g<b.length;g++)y.push(b[g])}}f.operator!=null&&(m=f.operator);let x={field:f.field,type:f.type,operator:m,value:y};i.push(x)}}if(Array.isArray(e)){let h="AND";if(typeof s=="string"){let f=s.toUpperCase();(f==="OR"||f==="AND")&&(h=f)}r="",o=!0,l=h;for(let f=0;f<e.length;f++){let m=e[f];typeof m.value=="number"&&m.operator==null&&(m.operator=n.defaultOperator.number),typeof m.value=="string"&&m.operator==null&&(m.operator=n.defaultOperator.text),Array.isArray(m.value)&&m.operator==null&&(m.operator=n.defaultOperator.enum),p.isDate(m.value)&&m.operator==null&&(m.operator=n.defaultOperator.date),i.push(m)}}let u=n.trigger("search",{target:n.name,multi:e===void 0,searchField:e||"multi",searchValue:e?s:"multi",searchData:i,searchLogic:l});u.isCancelled!==!0&&(n.searchData=u.detail.searchData,n.last.field=a,n.last.search=r,n.last.multi=o,n.last.logic=u.detail.searchLogic,n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.selection.indexes=[],n.last.selection.columns={},n.searchClose(),t?(n.last.fetch.offset=0,n.reload()):(n.localSearch(),n.refresh()),u.finish())}function sn(n,e={}){if(!n.box||n.searches.length===0)return;let s=n.trigger("searchOpen",{target:n.name});if(s.isCancelled===!0)return;let t=J(n.toolbar.box).find(".tsg-grid-search-input .tsg-search-drop");t.addClass("checked"),he.show({name:n.name+"-search-overlay",anchor:J(n.box).find("#grid_"+n.name+"_search_all").get(0),position:"bottom|top",html:n.getSearchesHTML(),align:"left",arrowSize:12,class:"tsg-grid-search-advanced",hideOn:["doc-click"],...e?.overlay??{}}).then(i=>{n.initSearches(),n.last.search_opened=!0;let o=J(`#w2overlay-${n.name}-search-overlay`);o.data("gridName",n.name).off(".grid-search").on("click.grid-search",a=>{o.find("input, select").each(r=>{let c=J(r).data("tooltipName");c&&c.forEach(d=>{he.hide(d)})}),console.log(a.target),J(a.target).hasClass("tsg-saved-searches")||he.hide(n.name+"-search-suggest")}),p.bindEvents(o.find("select, input, button"),n);let l=J(`#w2overlay-${n.name}-search-overlay *[rel=search]`);l.length>0&&l[0].focus(),s.finish()}).hide(i=>{let o=n.trigger("searchClose",{target:n.name});o.isCancelled!==!0&&(t.removeClass("checked"),n.last.search_opened=!1,o.finish())})}function nn(n){he.hide(n.name+"-search-overlay")}function on(n,e,s,t){let i=n.searches[e],o=n.searchData[s];if(o==null||i==null)return;let l=o.operator;l=="more"&&o.type=="date"&&(l="since"),l=="less"&&o.type=="date"&&(l="before");let a="",r=o.value;Array.isArray(o.value)?(o.value.forEach(c=>{a+=`<span class="value">${c.text||c}</span>`}),o.type=="date"&&(a="",o.value.forEach(c=>{a+=`<span class="value">${p.formatDate(c)}</span>`}))):o.type=="date"&&(r=p.formatDateTime(r)),he.hide(n.name+"-search-props"),he.show({name:n.name+"-search-props",anchor:t,class:"tsg-white",hideOn:"doc-click",html:`
435
+ field="${c.field}" recid="${e}" column="${s}" ${a.attr}>${a.text}`)),b=f.find("input").get(0),a.type=="number"&&(m=p.formatNumber(m)),a.type=="date"&&(m=p.formatDate(p.isDate(m,a.format,!0)||new Date,a.format)),b.value=typeof m!="object"?m:"";let _=C=>{let D=n.last._edit?.escKey,O=!1,I=ae(b).data("tooltipName");I&&ct.get(I[0])?.selected!=null&&(O=!0),n.last.inEditMode&&!D&&g.includes(a.type)&&(C.detail.overlay.anchor?.id==n.last._edit?.input?.id||a.type=="list")&&(n.editChange(),n.editDone(void 0,void 0,{keyCode:O?13:0}))};new fe(p.extend({},a,{el:b,selected:m,onSelect:_,onHide:_})),t==null&&b&&b.select()}Object.assign(n.last._edit,{input:b,edit:a}),ae(b).off(".tsg-editable").on("blur.tsg-editable",_=>{if(n.last.inEditMode){let C=n.last._edit?.edit?.type,D=ae(b).data("tooltipName"),O=_.target;if(D&&g.includes(C)||O?._keepOpen===!0){delete O._keepOpen;return}n.editChange(b,l,s,_),n.editDone()}}).on("mousedown.tsg-editable",_=>{_.stopPropagation()}).on("click.tsg-editable",_=>{T.call(b,_)}).on("paste.tsg-editable",_=>{_.preventDefault();let C=_.clipboardData.getData("text/plain");document.execCommand("insertHTML",!1,C)}).on("keyup.tsg-editable",_=>{T.call(b,_)}).on("keydown.tsg-editable",_=>{let C=_;switch(C.keyCode){case 8:a.type=="list"&&!b._w2field&&C.preventDefault();break;case 9:case 13:C.preventDefault();break;case 27:let D=ae(b).data("tooltipName");if(D&&D.length>0){n.last._edit&&(n.last._edit.escKey=!0),ct.hide(D[0]),C.preventDefault();return}C.stopPropagation();break}setTimeout(()=>{switch(C.keyCode){case 9:{let D=C.shiftKey?o.prevCell(l,s,!0):o.nextCell(l,s,!0);if(D!=null){let O=o.records[D.index].recid;n.editChange(b,l,s,_),n.editDone(l,s,_),o.selectType!="row"?(o.selectNone(!0),o.select({recid:O,column:D.colIndex})):o.editField(O,D.colIndex,null,_),_.preventDefault&&_.preventDefault()}break}case 13:{let D=!1,O=ae(b).data("tooltipName");O&&ct.get(O[0]).selected!=null&&(D=!0),(!O||!D)&&b._keepOpen!==!0?(n.editChange(b,l,s,_),n.editDone(l,s,_)):delete b._keepOpen;break}case 27:{n.last._edit&&(n.last._edit.escKey=!1);let D=o.parseField(r,c.field);r.TsUi?.changes?.[c.field]!=null&&(D=r.TsUi.changes[c.field]),b._prevValue!=null&&(D=b._prevValue),b.tagName=="DIV"?b.innerText=D??"":b.value=D??"",n.editDone(l,s,_),setTimeout(()=>{o.select({recid:e,column:s})},1);break}}T(b)},1)}),b&&(b._prevValue=y),a.type!="list"&&setTimeout(()=>{n.last.inEditMode&&b&&(b.focus(),clearTimeout(n.last.kbd_timer??void 0),b.resize=T,T(b))},50),u.finish({input:b});return;function T(_){try{let C=getComputedStyle(_),D=_.tagName.toUpperCase()=="DIV"?_.innerText:_.value,O=ae(o.box).find("#grid_"+o.name+"_editable").get(0),I=`font-family: ${C.getPropertyValue("font-family")}; font-size: ${C.getPropertyValue("font-size")}; white-space: no-wrap;`,R=p.getStrWidth(D,I);R+20>O.clientWidth&&ae(O).css("width",R+20+"px")}catch{}}}function Qs(n,e,s,t,i){e=e??n.last._edit?.input,s=s??n.last._edit?.index,t=t??n.last._edit?.column,i=i??{};let o=s<0;s=s<0?-s-1:s;let a=(o?n.summary:n.records)[s],r=n.columns[t],c=e?.tagName=="DIV"?e.innerText:e.value,d=e._w2field;d&&(d.type=="list"&&(c=d.selected),(c==null||Object.keys(c).length===0)&&(c=""),p.isPlainObject(c)||(c=d.clean(c))),e.type=="checkbox"&&(a.TsUi?.editable===!1&&(e.checked=!e.checked),c=e.checked);let u=n.parseField(a,r.field),h=a.TsUi?.changes&&a.TsUi.changes.hasOwnProperty(r.field)?a.TsUi.changes[r.field]:u,f={target:n.name,input:e,recid:a.recid,index:s,column:t,originalEvent:i,value:{new:c,previous:h,original:u}};i.target?._prevValue!=null&&(f.value.previous=i.target._prevValue);let m=0;for(;m<20;){if(m++,c=f.value.new,typeof c!="object"&&String(u)!=String(c)||typeof c=="object"&&c&&c.id!=u&&(typeof u!="object"||u==null||c.id!=u.id)){if(f=n.trigger("change",f),f.isCancelled!==!0){if(c!==f.detail.value.new)continue;(f.detail.value.new===""||f.detail.value.new==null)&&(h===""||h==null)||(a.TsUi=a.TsUi??{},a.TsUi.changes=a.TsUi.changes??{},a.TsUi.changes[r.field]=f.detail.value.new),f.finish()}}else if(f=n.trigger("restore",f),f.isCancelled!==!0){if(c!==f.detail.value.new)continue;a.TsUi?.changes&&(delete a.TsUi.changes[r.field],Object.keys(a.TsUi.changes).length===0&&delete a.TsUi.changes),f.finish()}break}}function Vs(n,e,s,t){if(e=e??n.last._edit?.index,s=s??n.last._edit?.column,t=t??{},n.advanceOnEdit&&t.keyCode==13){let r=t.shiftKey?n.prevRow(e,s,1)??e:n.nextRow(e,s,1)??e;setTimeout(()=>{n.selectType!="row"?(n.selectNone(!0),n.select({recid:n.records[r].recid,column:s})):n.editField(n.records[r].recid,s,null,t)},1)}let i=e<0,o=ae(n.last._edit?.tr).find('[col="'+s+'"]'),l=n.records[e],a=n.columns[s];n.last.inEditMode=!1,n.last._edit=null,i||(l.TsUi?.changes?.[a.field]!=null?o.addClass("tsg-changed"):o.removeClass("tsg-changed"),o.replace(n.getCellHTML(e,s,i))),ae(n.box).find("div.tsg-edit-box").remove(),n.updateToolbar(),setTimeout(()=>{let r=ae(n.box).find(`#grid_${n.name}_focus`).get(0);document.activeElement!==r&&!n.last.inEditMode&&r.focus()},10)}var J=j,Ws=ie,he=G;function qs(n,e,s){let t=0;s===void 0?(s=e,e=n.searches.length):(typeof e=="string"&&(e=n.getSearch(e,!0)),e==null&&(e=n.searches.length)),Array.isArray(s)||(s=[s]);for(let i=0;i<s.length;i++)n.searches.splice(e,0,s[i]),e++,t++;return n.searchClose(),t}function Ys(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&(n.searches.splice(o,1),s++)}return n.searchClose(),s}function Xs(n,e,s){if(e===void 0){let t=[];for(let i=0;i<n.searches.length;i++)t.push(n.searches[i].field);return t}for(let t=0;t<n.searches.length;t++)if(n.searches[t].field==e)return s===!0?t:n.searches[t];return null}function Ks(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&(n.searches[o].hidden=!n.searches[o].hidden,s++)}return n.searchClose(),s}function Js(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&n.searches[o].hidden!==!1&&(n.searches[o].hidden=!1,s++)}return n.searchClose(),s}function Zs(n,...e){let s=0;for(let t=0;t<e.length;t++){let i=e[t];for(let o=n.searches.length-1;o>=0;o--)n.searches[o].field==i&&n.searches[o].hidden!==!0&&(n.searches[o].hidden=!0,s++)}return n.searchClose(),s}function en(n,e){for(let s=0;s<n.searchData.length;s++)if(n.searchData[s].field==e)return n.searchData[s];return null}function tn(n,e,s){let t=n.url?.get??n.url,i=[],o=n.last.multi,l=n.last.logic,a=n.last.field,r=n.last.search,c=!1,d=J(`#w2overlay-${n.name}-search-overlay`);s===""&&(s=null);for(let h=0;h<n.searches.length;h++){let f=n.searches[h];!f.hidden||f.value==null||(i.push({field:f.field,operator:f.operator||"is",type:f.type,value:f.value||""}),c=!0)}if(e===void 0&&d.length===0&&(n.multiSearch?(e=n.searchData,s=n.last.logic):(e=n.last.field,s=n.last.search)),e===void 0&&d.length!==0){n.focus(),l=d.find(`#grid_${n.name}_logic`).val(),r="";for(let h=0;h<n.searches.length;h++){let f=n.searches[h],m=d.find("#grid_"+n.name+"_operator_"+h).val(),y=d.find("#grid_"+n.name+"_field_"+h),x=d.find("#grid_"+n.name+"_field2_"+h),b=y.val(),g=x.val(),v=null,w=null;if(["int","float","money","currency","percent"].indexOf(f.type)!=-1){let T=y[0]._w2field,_=x[0]._w2field;T&&(b=T.clean(b)),_&&(g=_.clean(g))}if(["list","enum"].indexOf(f.type)!=-1||["in","not in"].indexOf(m)!=-1)if(b=y[0]._w2field.selected||{},Array.isArray(b)){v=[];for(let T=0;T<b.length;T++)v.push(p.isFloat(b[T].id)?parseFloat(b[T].id):String(b[T].id).toLowerCase()),delete b[T].hidden;Object.keys(b).length===0&&(b="")}else w=b.text||"",b=b.id||"";if(b!==""&&b!=null||g!=null&&g!==""){let T={field:f.field,type:f.type,operator:m};m=="between"?p.extend(T,{value:[b,g]}):m=="in"&&typeof b=="string"?p.extend(T,{value:b.split(",")}):m=="not in"&&typeof b=="string"?p.extend(T,{value:b.split(",")}):p.extend(T,{value:b}),v&&p.extend(T,{svalue:v}),w&&p.extend(T,{text:w});try{f.type=="date"&&m=="between"&&(T.value[0]=b,T.value[1]=g),f.type=="date"&&m=="is"&&(T.value=b)}catch{}i.push(T),o=!0}}}if(typeof e=="string"&&(s===void 0&&(s=e,e="all"),a=e,r=s,o=!1,l=c?"AND":"OR",s!=null))if(e.toLowerCase()=="all"){if(n.searches.length>0)for(let h=0;h<n.searches.length;h++){let f=n.searches[h];if(f.type=="text"||f.type=="alphanumeric"&&p.isAlphaNumeric(s)||f.type=="int"&&p.isInt(s)||f.type=="float"&&p.isFloat(s)||f.type=="percent"&&p.isFloat(s)||(f.type=="hex"||f.type=="color")&&p.isHex(s)||f.type=="currency"&&p.isMoney(s)||f.type=="money"&&p.isMoney(s)||f.type=="date"&&p.isDate(s)||f.type=="time"&&p.isTime(s)||f.type=="datetime"&&p.isDateTime(s)||f.type=="datetime"&&p.isDate(s)||f.type=="enum"&&p.isAlphaNumeric(s)||f.type=="list"&&p.isAlphaNumeric(s)){let m=n.defaultOperator[n.operatorsMap[f.type]],y={field:f.field,type:f.type,operator:f.operator!=null?f.operator:m,value:s};String(s).trim()!=""&&i.push(y)}if(["int","float","money","currency","percent"].indexOf(f.type)!=-1){let m=String(s).trim().split("-").map(y=>y.trim()).filter(y=>p.isFloat(y));if(m.length==2){let y={field:f.field,type:f.type,operator:"between",value:[m[0],m[1]]};i.push(y)}}if(["list","enum"].indexOf(f.type)!=-1){let m=[];f.options==null&&(f.options={}),Array.isArray(f.options.items)||(f.options.items=[]);for(let y=0;y<f.options.items;y++){let x=f.options.items[y];try{let b=new RegExp(s,"i");b.test(x)&&m.push(y),x.text&&b.test(x.text)&&m.push(x.id)}catch{}}if(m.length>0){let y={field:f.field,type:f.type,operator:f.operator!=null?f.operator:"in",value:m};i.push(y)}}}else for(let h=0;h<n.columns.length;h++){let f={field:n.columns[h].field,type:"text",operator:n.defaultOperator.text,value:s};i.push(f)}if(i.length==0){let h={field:"All",type:"text",operator:n.defaultOperator.text,value:s};i.push(h)}}else{let h=d.find("#grid_"+n.name+"_search_all"),f=n.getSearch(e);if(f==null&&(f={field:e,type:"text"}),f.field==e&&(n.last.label=f.label??""),s!==""){let m=n.defaultOperator[n.operatorsMap[f.type]],y=s;if(["date","time","datetime"].indexOf(f.type)!=-1&&(m="is"),["list","enum"].indexOf(f.type)!=-1){m="is";let b=h._w2field?.get();b&&Object.keys(b).length>0?y=b.id:y=""}if(f.type=="int"&&s!==""){if(m="is",String(s).indexOf("-")!=-1){let b=s.split("-");b.length==2&&(m="between",y=[parseInt(b[0]),parseInt(b[1])])}if(String(s).indexOf(",")!=-1){let b=s.split(",");m="in",y=[];for(let g=0;g<b.length;g++)y.push(b[g])}}f.operator!=null&&(m=f.operator);let x={field:f.field,type:f.type,operator:m,value:y};i.push(x)}}if(Array.isArray(e)){let h="AND";if(typeof s=="string"){let f=s.toUpperCase();(f==="OR"||f==="AND")&&(h=f)}r="",o=!0,l=h;for(let f=0;f<e.length;f++){let m=e[f];typeof m.value=="number"&&m.operator==null&&(m.operator=n.defaultOperator.number),typeof m.value=="string"&&m.operator==null&&(m.operator=n.defaultOperator.text),Array.isArray(m.value)&&m.operator==null&&(m.operator=n.defaultOperator.enum),p.isDate(m.value)&&m.operator==null&&(m.operator=n.defaultOperator.date),i.push(m)}}let u=n.trigger("search",{target:n.name,multi:e===void 0,searchField:e||"multi",searchValue:e?s:"multi",searchData:i,searchLogic:l});u.isCancelled!==!0&&(n.searchData=u.detail.searchData,n.last.field=a,n.last.search=r,n.last.multi=o,n.last.logic=u.detail.searchLogic,n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.selection.indexes=[],n.last.selection.columns={},n.searchClose(),t?(n.last.fetch.offset=0,n.reload()):(n.localSearch(),n.refresh()),u.finish())}function sn(n,e={}){if(!n.box||n.searches.length===0)return;let s=n.trigger("searchOpen",{target:n.name});if(s.isCancelled===!0)return;let t=J(n.toolbar.box).find(".tsg-grid-search-input .tsg-search-drop");t.addClass("checked"),he.show({name:n.name+"-search-overlay",anchor:J(n.box).find("#grid_"+n.name+"_search_all").get(0),position:"bottom|top",html:n.getSearchesHTML(),align:"left",arrowSize:12,class:"tsg-grid-search-advanced",hideOn:["doc-click"],...e?.overlay??{}}).then(i=>{n.initSearches(),n.last.search_opened=!0;let o=J(`#w2overlay-${n.name}-search-overlay`);o.data("gridName",n.name).off(".grid-search").on("click.grid-search",a=>{o.find("input, select").each(r=>{let c=J(r).data("tooltipName");c&&c.forEach(d=>{he.hide(d)})}),console.log(a.target),J(a.target).hasClass("tsg-saved-searches")||he.hide(n.name+"-search-suggest")}),p.bindEvents(o.find("select, input, button"),n);let l=J(`#w2overlay-${n.name}-search-overlay *[rel=search]`);l.length>0&&l[0].focus(),s.finish()}).hide(i=>{let o=n.trigger("searchClose",{target:n.name});o.isCancelled!==!0&&(t.removeClass("checked"),n.last.search_opened=!1,o.finish())})}function nn(n){he.hide(n.name+"-search-overlay")}function on(n,e,s,t){let i=n.searches[e],o=n.searchData[s];if(o==null||i==null)return;let l=o.operator;l=="more"&&o.type=="date"&&(l="since"),l=="less"&&o.type=="date"&&(l="before");let a="",r=o.value;Array.isArray(o.value)?(o.value.forEach(c=>{a+=`<span class="value">${c.text||c}</span>`}),o.type=="date"&&(a="",o.value.forEach(c=>{a+=`<span class="value">${p.formatDate(c)}</span>`}))):o.type=="date"&&(r=p.formatDateTime(r)),he.hide(n.name+"-search-props"),he.show({name:n.name+"-search-props",anchor:t,class:"tsg-white",hideOn:"doc-click",html:`
436
436
  <div class="tsg-grid-search-single">
437
437
  <span class="field">${i.label??""}</span>
438
438
  <span class="operator">${p.lang(l)}</span>
@@ -440,13 +440,13 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
440
440
  <div class="buttons">
441
441
  <button id="remove" class="tsg-btn">${p.lang("Remove This Field")}</button>
442
442
  </div>
443
- </div>`}).then(c=>{J(c.detail.overlay.box).find("#remove").on("click",()=>{n.searchData.splice(s,1),n.reload(),n.localSearch(),he.hide(n.name+"-search-props")})})}function ln(n,e,s,t){if(clearTimeout(n.last.kbd_timer??void 0),clearTimeout(n.last.overlay_timer),n.searchShowFields(!0),t==null&&n.searchClose(),s===!0||t!=null&&J(`#w2overlay-${n.name}-search-suggest`).length>0){he.hide(n.name+"-search-suggest");return}if(J(`#w2overlay-${n.name}-search-suggest`).length>0)return;if(!e){n.last.overlay_timer=setTimeout(()=>{n.searchSuggest(!0)},100);return}let i=t??J(n.box).find(`#grid_${n.name}_search_all`).get(0),o=[...n.defaultSearches??[],...n.defaultSearches?.length>0&&n.savedSearches?.length>0?["--"]:[],...n.savedSearches??[]];Array.isArray(o)&&o.length>0&&qs.show({name:n.name+"-search-suggest",anchor:i,align:t!=null?"left":"both",items:o,selected:!1,filter:!0,hideOn:["doc-click","sleect","remove"],render(l){let a=l.text;return l.isDefault&&(a=`<b>${a}</b>`),a}}).select(l=>{let a=n.trigger("searchSelect",{target:n.name,index:l.detail.index,item:l.detail.item});if(a.isCancelled===!0){l.preventDefault();return}l.detail.overlay.hide(),n.last.logic=l.detail.item.logic||"AND",n.last.search="",n.last.label="[Multiple Fields]",n.searchData=p.clone(l.detail.item.data),n.searchSelected=p.clone(l.detail.item,{exclude:["icon","remove"]}),n.reload(),a.finish()}).remove(l=>{let a=l.detail.item,r=n.trigger("searchRemove",{target:n.name,index:l.detail.index,item:a});if(r.isCancelled===!0){l.preventDefault();return}queueMicrotask(()=>l.detail.overlay.hide()),he.hide(n.name+"-search-overlay"),n.confirm(p.lang('Do you want to delete search "${item}"?',{item:a.text})).yes(c=>{let d=n.savedSearches.findIndex(u=>u.id==a.id);d!==-1&&n.savedSearches.splice(d,1),n.cacheSave("searches",n.savedSearches.map(u=>p.clone(u,{exclude:["remove","icon"]}))),c.detail.self.close(),r.finish()}).no(c=>{c.detail.self.close()})})}function an(n){let e="";n.searchSelected&&(e=n.searchSelected.text);let s=n.savedSearches.findIndex(i=>i.id==n.searchSelected?.id),t=n.trigger("searchSave",{target:n.name,saveLocalStorage:!0});t.isCancelled!==!0&&n.message({width:350,height:150,body:`<div class="tsg-grid-save-search">
443
+ </div>`}).then(c=>{J(c.detail.overlay.box).find("#remove").on("click",()=>{n.searchData.splice(s,1),n.reload(),n.localSearch(),he.hide(n.name+"-search-props")})})}function ln(n,e,s,t){if(clearTimeout(n.last.kbd_timer??void 0),clearTimeout(n.last.overlay_timer),n.searchShowFields(!0),t==null&&n.searchClose(),s===!0||t!=null&&J(`#w2overlay-${n.name}-search-suggest`).length>0){he.hide(n.name+"-search-suggest");return}if(J(`#w2overlay-${n.name}-search-suggest`).length>0)return;if(!e){n.last.overlay_timer=setTimeout(()=>{n.searchSuggest(!0)},100);return}let i=t??J(n.box).find(`#grid_${n.name}_search_all`).get(0),o=[...n.defaultSearches??[],...n.defaultSearches?.length>0&&n.savedSearches?.length>0?["--"]:[],...n.savedSearches??[]];Array.isArray(o)&&o.length>0&&Ws.show({name:n.name+"-search-suggest",anchor:i,align:t!=null?"left":"both",items:o,selected:!1,filter:!0,hideOn:["doc-click","sleect","remove"],render(l){let a=l.text;return l.isDefault&&(a=`<b>${a}</b>`),a}}).select(l=>{let a=n.trigger("searchSelect",{target:n.name,index:l.detail.index,item:l.detail.item});if(a.isCancelled===!0){l.preventDefault();return}l.detail.overlay.hide(),n.last.logic=l.detail.item.logic||"AND",n.last.search="",n.last.label="[Multiple Fields]",n.searchData=p.clone(l.detail.item.data),n.searchSelected=p.clone(l.detail.item,{exclude:["icon","remove"]}),n.reload(),a.finish()}).remove(l=>{let a=l.detail.item,r=n.trigger("searchRemove",{target:n.name,index:l.detail.index,item:a});if(r.isCancelled===!0){l.preventDefault();return}queueMicrotask(()=>l.detail.overlay.hide()),he.hide(n.name+"-search-overlay"),n.confirm(p.lang('Do you want to delete search "${item}"?',{item:a.text})).yes(c=>{let d=n.savedSearches.findIndex(u=>u.id==a.id);d!==-1&&n.savedSearches.splice(d,1),n.cacheSave("searches",n.savedSearches.map(u=>p.clone(u,{exclude:["remove","icon"]}))),c.detail.self.close(),r.finish()}).no(c=>{c.detail.self.close()})})}function an(n){let e="";n.searchSelected&&(e=n.searchSelected.text);let s=n.savedSearches.findIndex(i=>i.id==n.searchSelected?.id),t=n.trigger("searchSave",{target:n.name,saveLocalStorage:!0});t.isCancelled!==!0&&n.message({width:350,height:150,body:`<div class="tsg-grid-save-search">
444
444
  <span>${p.lang(s!=-1?"Update Search":"Save New Search")}</span>
445
445
  <input class="search-name tsg-input" placeholder="${p.lang("Search name")}">
446
446
  </div>`,buttons:`
447
447
  <button id="grid-search-cancel" class="tsg-btn">${p.lang("Cancel")}</button>
448
448
  <button id="grid-search-save" class="tsg-btn tsg-btn-blue" ${String(e).trim()==""?"disabled":""}>${p.lang("Save")}</button>
449
- `})?.open(async i=>{J(i.detail.box).find("input, button").eq(0).val(e),await i.complete,J(i.detail.box).find("#grid-search-cancel").on("click",()=>{n.message()}),J(i.detail.box).find("#grid-search-save").on("click",()=>{let l=J(i.detail.box).find(".tsg-message .search-name").val();n.searchSelected&&s!=-1?Object.assign(n.savedSearches[s],{id:l,text:l,logic:n.last.logic,data:p.clone(n.searchData)}):n.savedSearches.push({id:l,text:l,icon:"tsg-icon-search",remove:!0,logic:n.last.logic,data:n.searchData}),n.cacheSave("searches",n.savedSearches.map(a=>p.clone(a,{exclude:["remove","icon"]}))),n.message(),n.searchSelected?(n.searchSelected.text=l,J(n.box).find(`#grid_${n.name}_search_name .name-text`).html(l)):(n.searchSelected={text:l,logic:n.last.logic,data:p.clone(n.searchData)},J(i.detail.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),J(i.detail.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(l)),t.finish({name:l})}),await p.wait(100),J(i.detail.box).find("input, button").off(".message").on("keydown.message",o=>{let l=String(J(i.detail.box).find(".tsg-message-body input").val()).trim();o.keyCode==13&&l!=""&&J(i.detail.box).find("#grid-search-save").trigger("click"),o.keyCode==27&&n.message()}).eq(0).on("input.message",o=>{let l=J(i.detail.box).closest(".tsg-message").find("#grid-search-save");String(J(i.detail.box).val()).trim()===""?l.prop("disabled",!0):l.prop("disabled",!1)}).get(0).focus()})}function rn(n,e){if(p.hasLocalStorage&&n.useLocalStorage)try{let s=JSON.parse(localStorage.TsUi||"{}");return s[n.stateId||n.name]??={},s[n.stateId||n.name][e]}catch{}return null}function cn(n,e,s){if(p.hasLocalStorage&&n.useLocalStorage)try{let t=JSON.parse(localStorage.TsUi||"{}");return t[n.stateId||n.name]??={},t[n.stateId||n.name][e]=s,localStorage.TsUi=JSON.stringify(t),!0}catch{delete localStorage.TsUi}return!1}function un(n,e){let s=[],t=!1;for(let a=0;a<n.searches.length;a++){let r=n.searches[a];!r.hidden||r.value==null||(s.push({field:r.field,operator:r.operator||"is",type:r.type,value:r.value||""}),t=!0)}let i=n.trigger("search",{reset:!0,target:n.name,searchData:s});if(i.isCancelled===!0)return;let o=J(n.box).find("#grid_"+n.name+"_search_all");n.searchData=i.detail.searchData,n.searchSelected=null,n.last.search="",n.last.logic=t?"AND":n.last.logic,n.multiSearch?o.next().show():o.next().hide(),n.last.multi=!1,n.last.fetch.offset=0,n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.selection.indexes=[],n.last.selection.columns={},n.searchClose();let l=o.val("").get(0);l?._w2field&&l._w2field.reset(),e||n.reload(),i.finish()}function dn(n,e){if(e===!0){he.hide(n.name+"-search-fields");return}let s=[];for(let t=-1;t<n.searches.length;t++){let i=n.searches[t],o=i?i.field:null,l=o!=null?n.getColumn(o):null,a=!1,r=null;if(n.show.searchHiddenMsg==!0&&t!=-1&&(l==null||l.hidden===!0&&l.hideable!==!1)&&(a=!0,r=p.lang(`This column ${l==null?"does not exist":"is hidden"}`)),t==-1){if(!n.multiSearch||!n.show.searchAll)continue;i={field:"all",label:"All Fields",type:"text"}}else if(l!=null&&l.hideable===!1||i==null||i.hidden===!0&&(r=p.lang("This column is hidden"),i.simple===!1))continue;i!=null&&(i.label==null&&i.caption!=null&&(console.log("NOTICE: grid search.caption property is deprecated, please use search.label. Search ->",i),i.label=i.caption),s.push({id:i.field,text:p.lang(i.label??""),search:i,tooltip:r,disabled:a,checked:i.field==n.last.field}))}qs.show({type:"radio",name:n.name+"-search-fields",anchor:J(n.box).find("#grid_"+n.name+"_search_name").parent().find(".tsg-search-down").get(0),items:s,align:"none",hideOn:["doc-click","select"]}).select(t=>{n.searchInitInput(t.detail.item.search.field)})}function fn(n,e,s){let t,i=J(n.box).find("#grid_"+n.name+"_search_all");if(e=="all")t={field:"all",label:p.lang("All Fields")};else if(t=n.getSearch(e),t==null)return;n.last.search!=""?(n.last.label=t.label??"",n.search(t.field,n.last.search)):(n.last.field=t.field,n.last.label=t.label??""),i.attr("placeholder",p.lang("Search")+" "+p.lang(t.label||t.caption||t.field,!0)),n.searchSelected?(J(n.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),J(n.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(n.searchSelected.text)):(J(n.box).find(`#grid_${n.name}_search_all`).prop("readOnly",!1),J(n.box).find(`#grid_${n.name}_search_name`).hide().find(".name-text").html(""))}function hn(n){let e=`
449
+ `})?.open(async i=>{J(i.detail.box).find("input, button").eq(0).val(e),await i.complete,J(i.detail.box).find("#grid-search-cancel").on("click",()=>{n.message()}),J(i.detail.box).find("#grid-search-save").on("click",()=>{let l=J(i.detail.box).find(".tsg-message .search-name").val();n.searchSelected&&s!=-1?Object.assign(n.savedSearches[s],{id:l,text:l,logic:n.last.logic,data:p.clone(n.searchData)}):n.savedSearches.push({id:l,text:l,icon:"tsg-icon-search",remove:!0,logic:n.last.logic,data:n.searchData}),n.cacheSave("searches",n.savedSearches.map(a=>p.clone(a,{exclude:["remove","icon"]}))),n.message(),n.searchSelected?(n.searchSelected.text=l,J(n.box).find(`#grid_${n.name}_search_name .name-text`).html(l)):(n.searchSelected={text:l,logic:n.last.logic,data:p.clone(n.searchData)},J(i.detail.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),J(i.detail.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(l)),t.finish({name:l})}),await p.wait(100),J(i.detail.box).find("input, button").off(".message").on("keydown.message",o=>{let l=String(J(i.detail.box).find(".tsg-message-body input").val()).trim();o.keyCode==13&&l!=""&&J(i.detail.box).find("#grid-search-save").trigger("click"),o.keyCode==27&&n.message()}).eq(0).on("input.message",o=>{let l=J(i.detail.box).closest(".tsg-message").find("#grid-search-save");String(J(i.detail.box).val()).trim()===""?l.prop("disabled",!0):l.prop("disabled",!1)}).get(0).focus()})}function rn(n,e){if(p.hasLocalStorage&&n.useLocalStorage)try{let s=JSON.parse(localStorage.TsUi||"{}");return s[n.stateId||n.name]??={},s[n.stateId||n.name][e]}catch{}return null}function cn(n,e,s){if(p.hasLocalStorage&&n.useLocalStorage)try{let t=JSON.parse(localStorage.TsUi||"{}");return t[n.stateId||n.name]??={},t[n.stateId||n.name][e]=s,localStorage.TsUi=JSON.stringify(t),!0}catch{delete localStorage.TsUi}return!1}function un(n,e){let s=[],t=!1;for(let a=0;a<n.searches.length;a++){let r=n.searches[a];!r.hidden||r.value==null||(s.push({field:r.field,operator:r.operator||"is",type:r.type,value:r.value||""}),t=!0)}let i=n.trigger("search",{reset:!0,target:n.name,searchData:s});if(i.isCancelled===!0)return;let o=J(n.box).find("#grid_"+n.name+"_search_all");n.searchData=i.detail.searchData,n.searchSelected=null,n.last.search="",n.last.logic=t?"AND":n.last.logic,n.multiSearch?o.next().show():o.next().hide(),n.last.multi=!1,n.last.fetch.offset=0,n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0,n.last.selection.indexes=[],n.last.selection.columns={},n.searchClose();let l=o.val("").get(0);l?._w2field&&l._w2field.reset(),e||n.reload(),i.finish()}function dn(n,e){if(e===!0){he.hide(n.name+"-search-fields");return}let s=[];for(let t=-1;t<n.searches.length;t++){let i=n.searches[t],o=i?i.field:null,l=o!=null?n.getColumn(o):null,a=!1,r=null;if(n.show.searchHiddenMsg==!0&&t!=-1&&(l==null||l.hidden===!0&&l.hideable!==!1)&&(a=!0,r=p.lang(`This column ${l==null?"does not exist":"is hidden"}`)),t==-1){if(!n.multiSearch||!n.show.searchAll)continue;i={field:"all",label:"All Fields",type:"text"}}else if(l!=null&&l.hideable===!1||i==null||i.hidden===!0&&(r=p.lang("This column is hidden"),i.simple===!1))continue;i!=null&&(i.label==null&&i.caption!=null&&(console.log("NOTICE: grid search.caption property is deprecated, please use search.label. Search ->",i),i.label=i.caption),s.push({id:i.field,text:p.lang(i.label??""),search:i,tooltip:r,disabled:a,checked:i.field==n.last.field}))}Ws.show({type:"radio",name:n.name+"-search-fields",anchor:J(n.box).find("#grid_"+n.name+"_search_name").parent().find(".tsg-search-down").get(0),items:s,align:"none",hideOn:["doc-click","select"]}).select(t=>{n.searchInitInput(t.detail.item.search.field)})}function fn(n,e,s){let t,i=J(n.box).find("#grid_"+n.name+"_search_all");if(e=="all")t={field:"all",label:p.lang("All Fields")};else if(t=n.getSearch(e),t==null)return;n.last.search!=""?(n.last.label=t.label??"",n.search(t.field,n.last.search)):(n.last.field=t.field,n.last.label=t.label??""),i.attr("placeholder",p.lang("Search")+" "+p.lang(t.label||t.caption||t.field,!0)),n.searchSelected?(J(n.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),J(n.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(n.searchSelected.text)):(J(n.box).find(`#grid_${n.name}_search_all`).prop("readOnly",!1),J(n.box).find(`#grid_${n.name}_search_name`).hide().find(".name-text").html(""))}function hn(n){let e=`
450
450
  <div class="search-title">
451
451
  ${p.lang("Advanced Search")}
452
452
  ${n.savedSearches?.length>0?`<button class="tsg-btn tsg-saved-searches" data-click="searchSuggest|true|false|this">Saved Searches (${n.savedSearches?.length??0})</button>`:""}
@@ -496,7 +496,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
496
496
  `}}else{for(let l=0;l<n.columns.length;l++){let a=n.columns[l];if(a.hidden===!0)continue;let r=a.text?a.text:a.field;a.text&&a.text.length<3&&a.tooltip&&(r=a.tooltip),i+='"'+p.stripTags(r)+'" '}i=i.substr(0,i.length-1),i+=`
497
497
  `;for(let l=0;l<t.length;l++){let a=n.get(t[l],!0);for(let r=0;r<n.columns.length;r++)n.columns[r].hidden!==!0&&(i+='"'+n.getCellCopy(a,r)+'" ');i=i.substr(0,i.length-1),i+=`
498
498
  `}}i=i.substr(0,i.length-1);let o;if(e==null)return o=n.trigger("copy",{target:n.name,text:i,cut:s.keyCode==88,originalEvent:s}),o.isCancelled===!0?"":(i=o.detail.text,o.finish(),i);if(e===!1)return o=n.trigger("copy",{target:n.name,text:i,cut:s.keyCode==88,originalEvent:s}),o.isCancelled===!0?"":(i=o.detail.text,o)}function Nn(n,e,s){return p.stripTags(n.getCellHTML(e,s))}function Pn(n,e,s){let t=n.getSelectionCells(),i=n.get(t[0].recid,!0)??0,o=t[0].column,l=n.trigger("paste",{target:n.name,text:e,index:i,column:o,originalEvent:s});if(l.isCancelled===!0)return;let a=l.detail.text;if(n.selectType=="row"||t.length===0){console.log("ERROR: You can paste only if grid.selectType = 'cell' and when at least one cell selected."),l.finish();return}if(typeof a!="object"){let c=[];a=a.split(`
499
- `);for(let d=0;d<a.length;d++){let u=a[d].split(" "),h=0,f=n.records[i],m=[];if(f!=null){for(let y=0;y<u.length;y++)n.columns[o+h]&&(r(f,n.columns[o+h].field,u[y]),m.push(o+h),h++);for(let y=0;y<m.length;y++)c.push({recid:f.recid,column:m[y]});i++}}n.selectNone(!0),n.select(c)}else n.selectNone(!0),n.select([{recid:n.records[i].recid,column:o}]);n.refresh(),l.finish();function r(c,d,u){c.TsUi=c.TsUi??{},c.TsUi.changes=c.TsUi.changes||{},c.TsUi.changes[d]=u}}var E=j,Ii=ie,be=W;function jn(n){let e=Date.now();if(!n.box||E(n.box).attr("name")!=n.name)return;let s=n.trigger("resize",{target:n.name});if(s.isCancelled!==!0)return n.box!=null&&(n.resizeBoxes(),n.resizeRecords()),s.finish(),Date.now()-e}function Un(n,{cells:e,fullCellRefresh:s,ignoreColumns:t}={}){let i=Date.now(),o=n;if(n.box==null)return 0;if(Array.isArray(e))for(let a=0;a<e.length;a++){let r=e[a].index,c=e[a].column;if(r<0)continue;if(r==null||c==null){console.log("ERROR: Wrong argument for grid.update({ cells }), cells should be [{ index: X, column: Y }, ...]");continue}let d=n.records[r]??{};d.TsUi=d.TsUi??{},d.TsUi._update=d.TsUi._update??{cells:[]};let u=d.TsUi._update.row1,h=d.TsUi._update.row2;(u==null||!u.isConnected||h==null||!h.isColSelected)&&(u=n.box.querySelector(`#grid_${n.name}_rec_${p.escapeId(d.recid)}`),h=n.box.querySelector(`#grid_${n.name}_frec_${p.escapeId(d.recid)}`),d.TsUi._update.row1=u,d.TsUi._update.row2=h),l(d,u,h,r,c)}else for(let a=(n.last.vscroll.recIndStart??0)-1;a<=(n.last.vscroll.recIndEnd??0);a++){let r=a;n.last.searchIds.length>0?r=n.last.searchIds[a]??a:r=a;let c=n.records[r];if(r<0||c==null)continue;c.TsUi=c.TsUi??{},c.TsUi._update=c.TsUi._update??{cells:[]};let d=c.TsUi._update.row1,u=c.TsUi._update.row2;(d==null||!d.isConnected||u==null||!u.isColSelected)&&(d=n.box.querySelector(`#grid_${n.name}_rec_${p.escapeId(c.recid)}`),u=n.box.querySelector(`#grid_${n.name}_frec_${p.escapeId(c.recid)}`),c.TsUi._update.row1=d,c.TsUi._update.row2=u);for(let h=0;h<n.columns.length;h++)l(c,d,u,r,h)}return Date.now()-i;function l(a,r,c,d,u){let h=o.columns[u];if(Array.isArray(t)&&(t.includes(u)||t.includes(h?.field)))return;let f=a.TsUi._update.cells[u];if((f==null||!f.isConnected)&&(f=o.box.querySelector(`#grid_${o.name}_data_${d}_${u}`),a.TsUi._update.cells[u]=f),f!=null){if(s)E(f).replace(o.getCellHTML(d,u,!1)),f=o.box.querySelector(`#grid_${o.name}_data_${d}_${u}`),a.TsUi._update.cells[u]=f;else{let m=f.children[0],{value:y,style:x,className:b}=o.getCellValue(d,u,!1,!0);if(m.innerHTML!=y&&(m.innerHTML=y),x!=""&&f.style.cssText!=x&&(f.style.cssText=x),b!=""){let g=["tsg-grid-data"],v=[],w=b.split(" ").filter(T=>!!T);f.classList.forEach(T=>{g.includes(T)||v.push(T)}),f.classList.remove(...v),f.classList.add(...w)}}if(o.columns[u]?.style&&o.columns[u]?.style!=f.style.cssText&&(f.style.cssText=o.columns[u]?.style??""),a.TsUi.class!=null){if(typeof a.TsUi.class=="string"){let m=["tsg-odd","tsg-even","tsg-record"],y=[],x=a.TsUi.class.split(" ").filter(b=>!!b);r&&c&&(r.classList.forEach(b=>{m.includes(b)||y.push(b)}),r.classList.remove(...y),r.classList.add(...x),c.classList.remove(...y),c.classList.add(...x))}if(p.isPlainObject(a.TsUi.class)&&typeof a.TsUi.class[h?.field??""]=="string"){let m=["tsg-grid-data"],y=[],x=a.TsUi.class[h.field].split(" ").filter(b=>!!b);f.classList.forEach(b=>{m.includes(b)||y.push(b)}),f.classList.remove(...y),f.classList.add(...x)}}(a.TsUi.style!=null||a.TsUi.styles!=null)&&(r&&c&&typeof a.TsUi.style=="string"&&r.style.cssText!==a.TsUi.style&&(r.style.cssText="height: "+o.recordHeight+"px;"+a.TsUi.style,r.setAttribute("custom_style",a.TsUi.style),c.style.cssText="height: "+o.recordHeight+"px;"+a.TsUi.style,c.setAttribute("custom_style",a.TsUi.style)),a.TsUi.styles==null&&(a.TsUi.styles=a.TsUi.style),p.isPlainObject(a.TsUi.styles)&&typeof a.TsUi.styles[h?.field??""]=="string"&&f.style.cssText!==a.TsUi.styles[h?.field??""]&&(f.style.cssText=a.TsUi.styles[h.field]))}}}function Gn(n,e,s){let t=n.get(e,!0),i=n.getColumn(s,!0);if(t==null||i==null)return!1;let o=!(n.records[t]&&n.records[t].recid==e),l=E(n.box).find(`${o?".tsg-grid-summary ":""}#grid_${n.name}_data_${t}_${i}`);return l.length==0?!1:(l.replace(n.getCellHTML(t,i,o)),!0)}function Bn(n,e,s=null){let t=E(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(e)),i=E(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(e));if(t.length>0){s==null&&(s=n.get(e,!0));let o=t.attr("line"),l=!(n.records[s]&&n.records[s].recid==e),a=n.url?.get??n.url;if(n.searchData.length>0&&!a)for(let d=0;d<n.last.searchIds.length;d++)n.last.searchIds[d]==s&&(s=d);let r=n.getRecordHTML(s,o,l);t.replace(r[0]),i.replace(r[1]);let c=n.records[s].TsUi?n.records[s].TsUi.style:"";return typeof c=="string"&&(t=E(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(e)),i=E(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(e)),t.attr("custom_style",c),i.attr("custom_style",c),t.hasClass("tsg-selected")&&(c=c.replace("background-color","none")),t[0].style.cssText="height: "+n.recordHeight+"px;"+c,i[0].style.cssText="height: "+n.recordHeight+"px;"+c),l&&n.resize(),!0}return!1}function Qn(n){let e=Date.now(),s=n.url?.get??n.url;if(n.total<=0&&!s&&n.searchData.length===0&&(n.total=n.records.length),!n.box)return;let t=n.trigger("refresh",{target:n.name});if(t.isCancelled===!0)return;n.show.header?E(n.box).find(`#grid_${n.name}_header`).html(p.lang(n.header)+"&#160;").show():E(n.box).find(`#grid_${n.name}_header`).hide(),n.show.toolbar?E(n.box).find("#grid_"+n.name+"_toolbar").show():E(n.box).find("#grid_"+n.name+"_toolbar").hide(),n.searchClose();let i=()=>{let d=0;for(;d<n.searches.length&&(n.searches[d].hidden||n.searches[d].simple===!1);)d++;return d>=n.searches.length?{field:"",label:""}:n.searches[d]};if(!n.multiSearch&&n.last.field=="all"){let d=i();n.last.field=d.field,n.last.label=d.label??""}if(n.last.field=="all"&&!n.show.searchAll&&(n.last.field=""),!n.last.field)if(n.show.searchAll)n.last.field="all",n.last.label="All Fields";else{let d=i();n.last.field=d.field,n.last.label=d.label??""}let o=E(n.box).find("#grid_"+n.name+"_search_all");for(let d=0;d<n.searches.length;d++)n.searches[d].field==n.last.field&&(n.last.label=n.searches[d].label??"");if(n.last.multi?o.attr("placeholder","["+p.lang("Multiple Fields")+"]"):o.attr("placeholder",p.lang("Search")+" "+p.lang(n.last.label,!0)),o.val()!=n.last.search){let d=n.last.search,u=o._w2field;u&&(d=u.format(d)),o.val(d)}n.refreshSearch(),n.refreshBody(),n.show.footer?E(n.box).find(`#grid_${n.name}_footer`).html(n.getFooterHTML()).show():E(n.box).find(`#grid_${n.name}_footer`).hide();let l=n.last.selection,a=n.records.length>0&&l.indexes.length==n.records.length,r=l.indexes.length>0&&n.searchData.length!==0&&l.indexes.length==n.last.searchIds.length;a||r?E(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):E(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status();let c=n.find({"TsUi.expanded":!0},!0,!0);for(let d=0;d<c.length;d++){let u=n.records[c[d]].TsUi;u&&!Array.isArray(u.children)&&(u.expanded=!1)}return n.markSearch&&setTimeout(()=>{let d=[];for(let u=0;u<n.searchData.length;u++){let h=n.searchData[u],f=n.getSearch(h.field);if(!f||f.hidden)continue;let m=n.getColumn(h.field,!0);d.push({field:h.field,search:h.value,col:m})}d.length>0&&d.forEach(u=>{let h=E(n.box).find('td[col="'+u.col+'"]:not(.tsg-head)');p.marker(h,u.search)})},50),n.updateToolbar(n.last.selection),t.finish(),n.resize(),n.addRange("selection"),setTimeout(()=>{n.resize(),n.scroll()},1),n.reorderColumns&&!n.last.columnDrag?n.last.columnDrag=n.initColumnDrag():!n.reorderColumns&&n.last.columnDrag&&n.last.columnDrag.remove(),Date.now()-e}function Vn(n){if(n.multiSearch&&n.searchData.length>0){E(n.box).find(".tsg-grid-searches").length==0&&E(n.box).find(".tsg-grid-toolbar").css("height",n.last.toolbar_height+35+"px").append(`<div id="grid_${n.name}_searches" class="tsg-grid-searches"></div>`);let e=`
499
+ `);for(let d=0;d<a.length;d++){let u=a[d].split(" "),h=0,f=n.records[i],m=[];if(f!=null){for(let y=0;y<u.length;y++)n.columns[o+h]&&(r(f,n.columns[o+h].field,u[y]),m.push(o+h),h++);for(let y=0;y<m.length;y++)c.push({recid:f.recid,column:m[y]});i++}}n.selectNone(!0),n.select(c)}else n.selectNone(!0),n.select([{recid:n.records[i].recid,column:o}]);n.refresh(),l.finish();function r(c,d,u){c.TsUi=c.TsUi??{},c.TsUi.changes=c.TsUi.changes||{},c.TsUi.changes[d]=u}}var E=j,Ii=ie,be=G;function jn(n){let e=Date.now();if(!n.box||E(n.box).attr("name")!=n.name)return;let s=n.trigger("resize",{target:n.name});if(s.isCancelled!==!0)return n.box!=null&&(n.resizeBoxes(),n.resizeRecords()),s.finish(),Date.now()-e}function Un(n,{cells:e,fullCellRefresh:s,ignoreColumns:t}={}){let i=Date.now(),o=n;if(n.box==null)return 0;if(Array.isArray(e))for(let a=0;a<e.length;a++){let r=e[a].index,c=e[a].column;if(r<0)continue;if(r==null||c==null){console.log("ERROR: Wrong argument for grid.update({ cells }), cells should be [{ index: X, column: Y }, ...]");continue}let d=n.records[r]??{};d.TsUi=d.TsUi??{},d.TsUi._update=d.TsUi._update??{cells:[]};let u=d.TsUi._update.row1,h=d.TsUi._update.row2;(u==null||!u.isConnected||h==null||!h.isColSelected)&&(u=n.box.querySelector(`#grid_${n.name}_rec_${p.escapeId(d.recid)}`),h=n.box.querySelector(`#grid_${n.name}_frec_${p.escapeId(d.recid)}`),d.TsUi._update.row1=u,d.TsUi._update.row2=h),l(d,u,h,r,c)}else for(let a=(n.last.vscroll.recIndStart??0)-1;a<=(n.last.vscroll.recIndEnd??0);a++){let r=a;n.last.searchIds.length>0?r=n.last.searchIds[a]??a:r=a;let c=n.records[r];if(r<0||c==null)continue;c.TsUi=c.TsUi??{},c.TsUi._update=c.TsUi._update??{cells:[]};let d=c.TsUi._update.row1,u=c.TsUi._update.row2;(d==null||!d.isConnected||u==null||!u.isColSelected)&&(d=n.box.querySelector(`#grid_${n.name}_rec_${p.escapeId(c.recid)}`),u=n.box.querySelector(`#grid_${n.name}_frec_${p.escapeId(c.recid)}`),c.TsUi._update.row1=d,c.TsUi._update.row2=u);for(let h=0;h<n.columns.length;h++)l(c,d,u,r,h)}return Date.now()-i;function l(a,r,c,d,u){let h=o.columns[u];if(Array.isArray(t)&&(t.includes(u)||t.includes(h?.field)))return;let f=a.TsUi._update.cells[u];if((f==null||!f.isConnected)&&(f=o.box.querySelector(`#grid_${o.name}_data_${d}_${u}`),a.TsUi._update.cells[u]=f),f!=null){if(s)E(f).replace(o.getCellHTML(d,u,!1)),f=o.box.querySelector(`#grid_${o.name}_data_${d}_${u}`),a.TsUi._update.cells[u]=f;else{let m=f.children[0],{value:y,style:x,className:b}=o.getCellValue(d,u,!1,!0);if(m.innerHTML!=y&&(m.innerHTML=y),x!=""&&f.style.cssText!=x&&(f.style.cssText=x),b!=""){let g=["tsg-grid-data"],v=[],w=b.split(" ").filter(T=>!!T);f.classList.forEach(T=>{g.includes(T)||v.push(T)}),f.classList.remove(...v),f.classList.add(...w)}}if(o.columns[u]?.style&&o.columns[u]?.style!=f.style.cssText&&(f.style.cssText=o.columns[u]?.style??""),a.TsUi.class!=null){if(typeof a.TsUi.class=="string"){let m=["tsg-odd","tsg-even","tsg-record"],y=[],x=a.TsUi.class.split(" ").filter(b=>!!b);r&&c&&(r.classList.forEach(b=>{m.includes(b)||y.push(b)}),r.classList.remove(...y),r.classList.add(...x),c.classList.remove(...y),c.classList.add(...x))}if(p.isPlainObject(a.TsUi.class)&&typeof a.TsUi.class[h?.field??""]=="string"){let m=["tsg-grid-data"],y=[],x=a.TsUi.class[h.field].split(" ").filter(b=>!!b);f.classList.forEach(b=>{m.includes(b)||y.push(b)}),f.classList.remove(...y),f.classList.add(...x)}}(a.TsUi.style!=null||a.TsUi.styles!=null)&&(r&&c&&typeof a.TsUi.style=="string"&&r.style.cssText!==a.TsUi.style&&(r.style.cssText="height: "+o.recordHeight+"px;"+a.TsUi.style,r.setAttribute("custom_style",a.TsUi.style),c.style.cssText="height: "+o.recordHeight+"px;"+a.TsUi.style,c.setAttribute("custom_style",a.TsUi.style)),a.TsUi.styles==null&&(a.TsUi.styles=a.TsUi.style),p.isPlainObject(a.TsUi.styles)&&typeof a.TsUi.styles[h?.field??""]=="string"&&f.style.cssText!==a.TsUi.styles[h?.field??""]&&(f.style.cssText=a.TsUi.styles[h.field]))}}}function Gn(n,e,s){let t=n.get(e,!0),i=n.getColumn(s,!0);if(t==null||i==null)return!1;let o=!(n.records[t]&&n.records[t].recid==e),l=E(n.box).find(`${o?".tsg-grid-summary ":""}#grid_${n.name}_data_${t}_${i}`);return l.length==0?!1:(l.replace(n.getCellHTML(t,i,o)),!0)}function Bn(n,e,s=null){let t=E(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(e)),i=E(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(e));if(t.length>0){s==null&&(s=n.get(e,!0));let o=t.attr("line"),l=!(n.records[s]&&n.records[s].recid==e),a=n.url?.get??n.url;if(n.searchData.length>0&&!a)for(let d=0;d<n.last.searchIds.length;d++)n.last.searchIds[d]==s&&(s=d);let r=n.getRecordHTML(s,o,l);t.replace(r[0]),i.replace(r[1]);let c=n.records[s].TsUi?n.records[s].TsUi.style:"";return typeof c=="string"&&(t=E(n.box).find("#grid_"+n.name+"_frec_"+p.escapeId(e)),i=E(n.box).find("#grid_"+n.name+"_rec_"+p.escapeId(e)),t.attr("custom_style",c),i.attr("custom_style",c),t.hasClass("tsg-selected")&&(c=c.replace("background-color","none")),t[0].style.cssText="height: "+n.recordHeight+"px;"+c,i[0].style.cssText="height: "+n.recordHeight+"px;"+c),l&&n.resize(),!0}return!1}function Qn(n){let e=Date.now(),s=n.url?.get??n.url;if(n.total<=0&&!s&&n.searchData.length===0&&(n.total=n.records.length),!n.box)return;let t=n.trigger("refresh",{target:n.name});if(t.isCancelled===!0)return;n.show.header?E(n.box).find(`#grid_${n.name}_header`).html(p.lang(n.header)+"&#160;").show():E(n.box).find(`#grid_${n.name}_header`).hide(),n.show.toolbar?E(n.box).find("#grid_"+n.name+"_toolbar").show():E(n.box).find("#grid_"+n.name+"_toolbar").hide(),n.searchClose();let i=()=>{let d=0;for(;d<n.searches.length&&(n.searches[d].hidden||n.searches[d].simple===!1);)d++;return d>=n.searches.length?{field:"",label:""}:n.searches[d]};if(!n.multiSearch&&n.last.field=="all"){let d=i();n.last.field=d.field,n.last.label=d.label??""}if(n.last.field=="all"&&!n.show.searchAll&&(n.last.field=""),!n.last.field)if(n.show.searchAll)n.last.field="all",n.last.label="All Fields";else{let d=i();n.last.field=d.field,n.last.label=d.label??""}let o=E(n.box).find("#grid_"+n.name+"_search_all");for(let d=0;d<n.searches.length;d++)n.searches[d].field==n.last.field&&(n.last.label=n.searches[d].label??"");if(n.last.multi?o.attr("placeholder","["+p.lang("Multiple Fields")+"]"):o.attr("placeholder",p.lang("Search")+" "+p.lang(n.last.label,!0)),o.val()!=n.last.search){let d=n.last.search,u=o._w2field;u&&(d=u.format(d)),o.val(d)}n.refreshSearch(),n.refreshBody(),n.show.footer?E(n.box).find(`#grid_${n.name}_footer`).html(n.getFooterHTML()).show():E(n.box).find(`#grid_${n.name}_footer`).hide();let l=n.last.selection,a=n.records.length>0&&l.indexes.length==n.records.length,r=l.indexes.length>0&&n.searchData.length!==0&&l.indexes.length==n.last.searchIds.length;a||r?E(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!0):E(n.box).find("#grid_"+n.name+"_check_all").prop("checked",!1),n.status();let c=n.find({"TsUi.expanded":!0},!0,!0);for(let d=0;d<c.length;d++){let u=n.records[c[d]].TsUi;u&&!Array.isArray(u.children)&&(u.expanded=!1)}return n.markSearch&&setTimeout(()=>{let d=[];for(let u=0;u<n.searchData.length;u++){let h=n.searchData[u],f=n.getSearch(h.field);if(!f||f.hidden)continue;let m=n.getColumn(h.field,!0);d.push({field:h.field,search:h.value,col:m})}d.length>0&&d.forEach(u=>{let h=E(n.box).find('td[col="'+u.col+'"]:not(.tsg-head)');p.marker(h,u.search)})},50),n.updateToolbar(n.last.selection),t.finish(),n.resize(),n.addRange("selection"),setTimeout(()=>{n.resize(),n.scroll()},1),n.reorderColumns&&!n.last.columnDrag?n.last.columnDrag=n.initColumnDrag():!n.reorderColumns&&n.last.columnDrag&&n.last.columnDrag.remove(),Date.now()-e}function Vn(n){if(n.multiSearch&&n.searchData.length>0){E(n.box).find(".tsg-grid-searches").length==0&&E(n.box).find(".tsg-grid-toolbar").css("height",n.last.toolbar_height+35+"px").append(`<div id="grid_${n.name}_searches" class="tsg-grid-searches"></div>`);let e=`
500
500
  <span id="grid_${n.name}_search_logic" class="tsg-grid-search-logic"></span>
501
501
  <div class="grid-search-line"></div>`;n.searchData.forEach((s,t)=>{let i=n.getSearch(s.field,!0),o=i!=null?n.searches[i]:null,l;if(o?.type=="enum"&&Array.isArray(s.value)?l=`<span class="grid-search-count">${s.value.length}</span>`:o?.type=="list"?l=s.text&&s.text!==s.value?`: ${s.text}`:`: ${s.value}`:l=`: ${s.value}`,o&&o.type=="date")if(s.operator=="between"){let a=s.value[0],r=s.value[1];Number(a)===a&&(a=p.formatDate(a)),Number(r)===r&&(r=p.formatDate(r)),l=`: ${a} - ${r}`}else{let a=s.value;Number(a)==a&&(a=p.formatDate(a));let r=s.operator;r=="more"&&(r="since"),r=="less"&&(r="before"),r.substr(0,5)=="more:"&&(r="since"),r=="null"&&(a=""),r=="not null"&&(a=""),l=`: ${r} ${a}`}e+=`<span class="tsg-action" data-click="searchFieldTooltip|${i}|${t}|this">
502
502
  ${o?o.label??o.field:s.field}
@@ -508,10 +508,10 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
508
508
  `:""}
509
509
  <button class="tsg-btn grid-search-btn btn-remove" type="button"
510
510
  data-click="searchReset">X</button>
511
- `,E(n.box).find(`#grid_${n.name}_searches`).html(e),E(n.box).find(`#grid_${n.name}_search_logic`).html(p.lang(n.last.logic=="AND"?"All":"Any"))}else E(n.box).find(".tsg-grid-toolbar").css("height",n.last.toolbar_height+"px").find(".tsg-grid-searches").remove();n.searchSelected?(E(n.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),E(n.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(n.searchSelected.text)):(E(n.box).find(`#grid_${n.name}_search_all`).prop("readOnly",!1),E(n.box).find(`#grid_${n.name}_search_name`).hide().find(".name-text").html("")),p.bindEvents(E(n.box).find(`#grid_${n.name}_searches .tsg-action, #grid_${n.name}_searches button`),n)}function qn(n){n.updateExpanded(),n.scroll();let e=n.getRecordsHTML(),s=n.getColumnsHTML(),t='<div id="grid_'+n.name+'_frecords" class="tsg-grid-frecords" style="margin-bottom: '+(p.scrollBarSize()-1)+'px;">'+e[0]+'</div><div id="grid_'+n.name+'_records" class="tsg-grid-records">'+e[1]+'</div><div id="grid_'+n.name+'_scroll1" class="tsg-grid-scroll1" style="height: '+p.scrollBarSize()+'px"></div><div id="grid_'+n.name+'_fcolumns" class="tsg-grid-fcolumns"> <table><tbody>'+s[0]+'</tbody></table></div><div id="grid_'+n.name+'_columns" class="tsg-grid-columns"> <table><tbody>'+s[1]+`</tbody></table></div><div class="tsg-intersection-marker" style="display: none; height: ${n.recordHeight-5}px">
511
+ `,E(n.box).find(`#grid_${n.name}_searches`).html(e),E(n.box).find(`#grid_${n.name}_search_logic`).html(p.lang(n.last.logic=="AND"?"All":"Any"))}else E(n.box).find(".tsg-grid-toolbar").css("height",n.last.toolbar_height+"px").find(".tsg-grid-searches").remove();n.searchSelected?(E(n.box).find(`#grid_${n.name}_search_all`).val(" ").prop("readOnly",!0),E(n.box).find(`#grid_${n.name}_search_name`).show().find(".name-text").html(n.searchSelected.text)):(E(n.box).find(`#grid_${n.name}_search_all`).prop("readOnly",!1),E(n.box).find(`#grid_${n.name}_search_name`).hide().find(".name-text").html("")),p.bindEvents(E(n.box).find(`#grid_${n.name}_searches .tsg-action, #grid_${n.name}_searches button`),n)}function Wn(n){n.updateExpanded(),n.scroll();let e=n.getRecordsHTML(),s=n.getColumnsHTML(),t='<div id="grid_'+n.name+'_frecords" class="tsg-grid-frecords" style="margin-bottom: '+(p.scrollBarSize()-1)+'px;">'+e[0]+'</div><div id="grid_'+n.name+'_records" class="tsg-grid-records">'+e[1]+'</div><div id="grid_'+n.name+'_scroll1" class="tsg-grid-scroll1" style="height: '+p.scrollBarSize()+'px"></div><div id="grid_'+n.name+'_fcolumns" class="tsg-grid-fcolumns"> <table><tbody>'+s[0]+'</tbody></table></div><div id="grid_'+n.name+'_columns" class="tsg-grid-columns"> <table><tbody>'+s[1]+`</tbody></table></div><div class="tsg-intersection-marker" style="display: none; height: ${n.recordHeight-5}px">
512
512
  <div class="top-marker"></div>
513
513
  <div class="bottom-marker"></div>
514
- </div>`,i=E(n.box).find(`#grid_${n.name}_body`,n.box).html(t),o=E(n.box).find(`#grid_${n.name}_records`,n.box),l=E(n.box).find(`#grid_${n.name}_frecords`,n.box);if(n.selectType=="row"&&(o.on("mouseover mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;E(n.box).find(`#grid_${n.name}_frec_${p.escapeId(c)}`).toggleClass("tsg-record-hover",a.type=="mouseover")}),l.on("mouseover mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;E(n.box).find(`#grid_${n.name}_rec_${p.escapeId(c)}`).toggleClass("tsg-record-hover",a.type=="mouseover")})),p.isMobile?o.append(l).on("click",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.click(c,a)}).on("touchstart",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.last.mobile_touch&&Date.now()-n.last.mobile_touch<350&&(a.preventDefault(),n.dblClick(c,a)),n.last.mobile_touch=Date.now(),setTimeout(()=>n.last.mobile_touch=null,350)}).on("contextmenu",{delegate:"tr"},a=>{let r=parseInt(E(a.delegate).attr("index")),c=n.records[r]?.recid,d=E(a.target).closest("td"),u=d.attr("col")?parseInt(d.attr("col")):void 0,h={index:r};c!=null&&(h.recid=c),u!=null&&(h.column=u),n.showContextMenu(a,h)}):o.add(l).on("click",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;c!="-none-"&&!n.last.inEditMode&&n.click(c,a)}).on("contextmenu",{delegate:"tr"},a=>{let r=parseInt(E(a.delegate).attr("index")),c=n.records[r]?.recid,d=E(a.target).closest("td"),u=d.attr("col")?parseInt(d.attr("col")):void 0,h={index:r};c!=null&&(h.recid=c),u!=null&&(h.column=u),n.showContextMenu(a,h)}).on("mouseover",{delegate:"tr"},a=>{n.last.rec_out=!1;let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;r!==n.last.rec_over&&(n.last.rec_over=r,setTimeout(()=>{delete n.last.rec_out,n.trigger("mouseEnter",{target:n.name,originalEvent:a,index:r,recid:c}).finish()}))}).on("mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.last.rec_out=!0,setTimeout(()=>{let d=()=>{n.trigger("mouseLeave",{target:n.name,originalEvent:a,index:r,recid:c}).finish()};r!==n.last.rec_over&&d(),setTimeout(()=>{n.last.rec_out&&(delete n.last.rec_out,delete n.last.rec_over,d())})})}),i.data("scroll",{lastDelta:0,lastTime:0}).find(".tsg-grid-frecords").on("mousewheel DOMMouseScroll ",a=>{a.preventDefault();let r=i.data("scroll"),c=i.find(".tsg-grid-records"),d=typeof a.wheelDelta<"u"?-a.wheelDelta:a.detail||a.deltaY,u=c.prop("scrollTop");r.lastDelta+=d,d=Math.round(r.lastDelta),i.data("scroll",r),c.get(0).scroll({top:u+d,behavior:"smooth"})}),o.off(".body-global").on("scroll.body-global",{delegate:".tsg-grid-records"},a=>{n.scroll(a)}),E(n.box).find(".tsg-grid-body").off(".body-global").on("click.body-global dblclick.body-global contextmenu.body-global",{delegate:"td.tsg-head"},a=>{let r=parseInt(E(a.delegate).attr("col")),c=n.columns[r]??{field:String(r)};switch(a.type){case"click":n.columnClick(c.field,a);break;case"dblclick":n.columnDblClick(c.field,a);break;case"contextmenu":n.show.columnMenu?n.columnContextMenu(c.field,a):n.showContextMenu(a,{column:r??void 0});break}}).on("mouseover.body-global",{delegate:".tsg-col-header"},a=>{let r=E(a.delegate).parent().attr("col");n.columnTooltipShow(r,a),E(a.delegate).off(".tooltip").on("mouseleave.tooltip",()=>{n.columnTooltipHide(r,a)})}).on("click.body-global",{delegate:"input.tsg-select-all"},a=>{a.delegate.checked?n.selectAll():n.selectNone(),a.stopPropagation(),clearTimeout(n.last.kbd_timer??void 0)}).on("click.body-global",{delegate:".tsg-show-children, .tsg-col-expand"},a=>{a.stopPropagation();let r=E(a.target).parents("tr").attr("index");n.toggle(n.records[r].recid)}).on("click.body-global mouseover.body-global",{delegate:".tsg-info"},a=>{let r=E(a.delegate).closest("td"),c=r.parent(),d=n.columns[r.attr("col")],u=c.parents(".tsg-grid-body").hasClass("tsg-grid-summary");["mouseenter","mouseover"].includes(d?.info?.showOn?.toLowerCase())&&a.type=="mouseover"?n.showBubble(parseInt(c.attr("index")),parseInt(r.attr("col")),u).then(()=>{E(a.delegate).off(".tooltip").on("mouseleave.tooltip",()=>{be.hide(n.name+"-bubble")})}):a.type=="click"&&(be.hide(n.name+"-bubble"),n.showBubble(parseInt(c.attr("index")),parseInt(r.attr("col")),u))}).on("mouseover.body-global",{delegate:".tsg-clipboard-copy"},a=>{if(a.delegate._tooltipShow)return;let r=E(a.delegate).parent(),c=r.parent(),d=n.columns[r.attr("col")],u=c.parents(".tsg-grid-body").hasClass("tsg-grid-summary");be.show({name:n.name+"-bubble",anchor:a.delegate,html:p.lang(typeof d?.clipboardCopy=="string"?d.clipboardCopy:"Copy to clipboard"),position:"top|bottom",offsetY:-2}),E(a.delegate).off(".tooltip").on("mouseleave.tooltip",h=>{be.hide(n.name+"-bubble")}).on("click.tooltip",h=>{h.stopPropagation(),be.update(n.name+"-bubble",p.lang("Copied")),n.clipboardCopy(c.attr("index"),r.attr("col"),u)}),a.delegate._tooltipShow=!0}).on("click.body-global",{delegate:".tsg-editable-checkbox"},a=>{let r=E(a.delegate).data();n.editChange.call(n,a.delegate,r.changeind,r.colind,a),n.updateToolbar()}),n.records.length===0&&n.msgEmpty?E(n.box).find(`#grid_${n.name}_body`).append(`<div id="grid_${n.name}_empty_msg" class="tsg-grid-empty-msg"><div>${p.lang(n.msgEmpty)}</div></div>`):E(n.box).find(`#grid_${n.name}_empty_msg`).length>0&&E(n.box).find(`#grid_${n.name}_empty_msg`).remove(),n.summary.length>0){let a=n.getSummaryHTML();E(n.box).find(`#grid_${n.name}_fsummary`).html(a?.[0]??"").show(),E(n.box).find(`#grid_${n.name}_summary`).html(a?.[1]??"").show()}else E(n.box).find(`#grid_${n.name}_fsummary`).hide(),E(n.box).find(`#grid_${n.name}_summary`).hide()}function Wn(n){let e=n.trigger("destroy",{target:n.name});e.isCancelled!==!0&&(n.toolbar?.destroy?.(),E(n.box).find(`#grid_${n.name}_body`).length>0&&n.unmount(),delete se[n.name],e.finish())}function Yn(n){let e=[{id:"line-numbers",text:"Line #",checked:n.show.lineNumbers}];for(let i=0;i<n.columns.length;i++){let o=n.columns[i],l=o.text;o.hideable!==!1&&(!l&&o.tooltip&&(l=o.tooltip),l||(l="- column "+(i+1)+" -"),e.push({id:o.field,text:p.stripTags(l),checked:!o.hidden}))}if(((n.url?.get??n.url)&&n.show.skipRecords||n.show.saveRestoreState)&&e.push({text:"--"}),n.show.skipRecords){let i=p.lang("Skip")+`<input id="${n.name}_skip" type="text" class="tsg-input tsg-grid-skip" value="${n.offset}">`+p.lang("records");e.push({id:"tsg-skip",text:i,group:!1,icon:"tsg-icon-empty"})}n.show.saveRestoreState&&e.push({id:"tsg-stateSave",text:p.lang("Save Grid State"),icon:"tsg-icon-empty",group:!1},{id:"tsg-stateReset",text:p.lang("Restore Default State"),icon:"tsg-icon-empty",group:!1});let t=[];return e.forEach(i=>{i.text=p.lang(i.text),i.checked&&t.push(i.id)}),n.toolbar.set("tsg-column-on-off",{selected:t,items:e}),e}function Xn(n,e){if(n.columnGroups&&n.columnGroups.length)throw"Draggable columns are not currently supported with column groups.";let s=n,t={pressed:!1,targetPos:null,columnHead:null},i=(d,u)=>{let h=["tsg-col-number","tsg-col-expand","tsg-col-select"];u!==!0&&h.push("tsg-head-last");for(let f=0;f<h.length;f++)if(E(d).closest(".tsg-head").hasClass(h[f]))return!0;return!1};E(s.box).off(".colDrag").on("mousedown.colDrag",o);function o(d){if(t.pressed||t.numberPreColumnsPresent===0||d.button!==0)return;let u=".tsg-head.tsg-col-number, .tsg-head.tsg-col-expand, .tsg-head.tsg-col-select";if(!E(d.target).parents().hasClass("tsg-head")||i(d.target))return;t.pressed=!0,t.initialX=d.pageX,t.initialY=d.pageY,t.numberPreColumnsPresent=E(s.box).find(u).length;let h=t.columnHead=E(d.target).closest(".tsg-head"),f=t.originalPos=parseInt(h.attr("col"),10),m=s.trigger("columnDragStart",{originalEvent:d,origColumnNumber:f,target:h[0]});if(m.isCancelled===!0)return!1;let y=t.columns=E(s.box).find(".tsg-head:not(.tsg-head-last)");E(document).on("mouseup.colDrag",a),E(document).on("mousemove.colDrag",l);let x=s.columns[t.originalPos],b=p.lang(typeof x.text=="function"?x.text(x):x.text);t.ghost=j.html(`<span col="${t.originalPos}">${b}</span>`)[0],E(document.body).append(t.ghost),E(t.ghost).css({display:"none",left:d.pageX,top:d.pageY,opacity:1,margin:"3px 0 0 20px",padding:"3px","background-color":"white",position:"fixed","z-index":999999}).addClass(".tsg-grid-ghost"),t.offsets=[];for(let g=0,v=y.length;g<v;g++){let w=y[g].getBoundingClientRect();t.offsets.push(w.left)}m.finish()}function l(d){if(!t.pressed||!t.columnHead)return;let u=d.pageX,h=d.pageY;i(d.target,!0)||r(d),c(u,h)}function a(d){if(!t.pressed||!t.columnHead)return;t.pressed=!1;let u,h=()=>{let x=E(s.box).find(".tsg-grid-ghost");E(s.box).find(".tsg-intersection-marker").hide(),E(t.ghost).remove(),x.remove(),E(document).off(".colDrag"),t={}};if(d.pageX==t.initialX&&d.pageY==t.initialY){s.columnClick(s.columns[t.originalPos].field,d),h();return}let f=s.trigger("columnDragEnd",{originalEvent:d,target:t.columnHead[0],dragData:t});if(f.isCancelled===!0)return!1;let m=s.columns[t.originalPos],y=s.columns;t.originalPos!=t.targetPos&&t.targetPos!=null&&(y.splice(t.targetPos,0,p.clone(m)),y.splice(y.indexOf(m),1)),h(),s.refresh(),f.finish({targetColumn:(u??1)-1})}function r(d){if(E(d.target).closest("td").length==0)return;let u=E(d.target).closest("td"),h=u.hasClass("tsg-head-last")?s.columns.length:parseInt(u.attr("col"));if(t.targetPos!=h){let f=E(s.box).find(".tsg-grid-body").get(0).getBoundingClientRect(),m=E(d.target).closest("td").get(0).getBoundingClientRect();E(s.box).find(".tsg-intersection-marker").show().css({left:m.left-f.left+"px",height:m.height+"px"}),t.targetPos=h}}function c(d,u){E(t.ghost).css({left:d-10+"px",top:u-10+"px"}).show()}return{remove(){E(s.box).off(".colDrag"),s.last.columnDrag=!1}}}function Kn(n,e,s){let t=n.trigger("columnOnOff",{target:n.name,field:s,originalEvent:e});if(t.isCancelled===!0)return;let i=n.find({"TsUi.expanded":!0},!0);for(let o=0;o<i.length;o++){let l=n.records[o].TsUi;l&&!Array.isArray(l.children)&&(n.records[o].TsUi.expanded=!1)}if(s=="line-numbers")n.show.lineNumbers=!n.show.lineNumbers,n.refresh();else{let o=n.getColumn(s);o!=null&&o.hidden?n.showColumn(o.field):o!=null&&n.hideColumn(o.field)}t.finish()}function Jn(n){if(n.toolbar.render!=null)return;let e=n.toolbar.items||[];if(n.toolbar.items=[],n.toolbar=new ye(p.extend({},n.toolbar,{name:n.name+"_toolbar",owner:n})),n.show.toolbarReload&&n.toolbar.items.push(p.extend({},n.buttons.reload)),n.show.toolbarColumns&&n.toolbar.items.push(p.extend({},n.buttons.columns)),n.show.toolbarSearch){let s=`
514
+ </div>`,i=E(n.box).find(`#grid_${n.name}_body`,n.box).html(t),o=E(n.box).find(`#grid_${n.name}_records`,n.box),l=E(n.box).find(`#grid_${n.name}_frecords`,n.box);if(n.selectType=="row"&&(o.on("mouseover mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;E(n.box).find(`#grid_${n.name}_frec_${p.escapeId(c)}`).toggleClass("tsg-record-hover",a.type=="mouseover")}),l.on("mouseover mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;E(n.box).find(`#grid_${n.name}_rec_${p.escapeId(c)}`).toggleClass("tsg-record-hover",a.type=="mouseover")})),p.isMobile?o.append(l).on("click",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.click(c,a)}).on("touchstart",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.last.mobile_touch&&Date.now()-n.last.mobile_touch<350&&(a.preventDefault(),n.dblClick(c,a)),n.last.mobile_touch=Date.now(),setTimeout(()=>n.last.mobile_touch=null,350)}).on("contextmenu",{delegate:"tr"},a=>{let r=parseInt(E(a.delegate).attr("index")),c=n.records[r]?.recid,d=E(a.target).closest("td"),u=d.attr("col")?parseInt(d.attr("col")):void 0,h={index:r};c!=null&&(h.recid=c),u!=null&&(h.column=u),n.showContextMenu(a,h)}):o.add(l).on("click",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;c!="-none-"&&!n.last.inEditMode&&n.click(c,a)}).on("contextmenu",{delegate:"tr"},a=>{let r=parseInt(E(a.delegate).attr("index")),c=n.records[r]?.recid,d=E(a.target).closest("td"),u=d.attr("col")?parseInt(d.attr("col")):void 0,h={index:r};c!=null&&(h.recid=c),u!=null&&(h.column=u),n.showContextMenu(a,h)}).on("mouseover",{delegate:"tr"},a=>{n.last.rec_out=!1;let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;r!==n.last.rec_over&&(n.last.rec_over=r,setTimeout(()=>{delete n.last.rec_out,n.trigger("mouseEnter",{target:n.name,originalEvent:a,index:r,recid:c}).finish()}))}).on("mouseout",{delegate:"tr"},a=>{let r=E(a.delegate).attr("index"),c=n.records[r]?.recid;n.last.rec_out=!0,setTimeout(()=>{let d=()=>{n.trigger("mouseLeave",{target:n.name,originalEvent:a,index:r,recid:c}).finish()};r!==n.last.rec_over&&d(),setTimeout(()=>{n.last.rec_out&&(delete n.last.rec_out,delete n.last.rec_over,d())})})}),i.data("scroll",{lastDelta:0,lastTime:0}).find(".tsg-grid-frecords").on("mousewheel DOMMouseScroll ",a=>{a.preventDefault();let r=i.data("scroll"),c=i.find(".tsg-grid-records"),d=typeof a.wheelDelta<"u"?-a.wheelDelta:a.detail||a.deltaY,u=c.prop("scrollTop");r.lastDelta+=d,d=Math.round(r.lastDelta),i.data("scroll",r),c.get(0).scroll({top:u+d,behavior:"smooth"})}),o.off(".body-global").on("scroll.body-global",{delegate:".tsg-grid-records"},a=>{n.scroll(a)}),E(n.box).find(".tsg-grid-body").off(".body-global").on("click.body-global dblclick.body-global contextmenu.body-global",{delegate:"td.tsg-head"},a=>{let r=parseInt(E(a.delegate).attr("col")),c=n.columns[r]??{field:String(r)};switch(a.type){case"click":n.columnClick(c.field,a);break;case"dblclick":n.columnDblClick(c.field,a);break;case"contextmenu":n.show.columnMenu?n.columnContextMenu(c.field,a):n.showContextMenu(a,{column:r??void 0});break}}).on("mouseover.body-global",{delegate:".tsg-col-header"},a=>{let r=E(a.delegate).parent().attr("col");n.columnTooltipShow(r,a),E(a.delegate).off(".tooltip").on("mouseleave.tooltip",()=>{n.columnTooltipHide(r,a)})}).on("click.body-global",{delegate:"input.tsg-select-all"},a=>{a.delegate.checked?n.selectAll():n.selectNone(),a.stopPropagation(),clearTimeout(n.last.kbd_timer??void 0)}).on("click.body-global",{delegate:".tsg-show-children, .tsg-col-expand"},a=>{a.stopPropagation();let r=E(a.target).parents("tr").attr("index");n.toggle(n.records[r].recid)}).on("click.body-global mouseover.body-global",{delegate:".tsg-info"},a=>{let r=E(a.delegate).closest("td"),c=r.parent(),d=n.columns[r.attr("col")],u=c.parents(".tsg-grid-body").hasClass("tsg-grid-summary");["mouseenter","mouseover"].includes(d?.info?.showOn?.toLowerCase())&&a.type=="mouseover"?n.showBubble(parseInt(c.attr("index")),parseInt(r.attr("col")),u).then(()=>{E(a.delegate).off(".tooltip").on("mouseleave.tooltip",()=>{be.hide(n.name+"-bubble")})}):a.type=="click"&&(be.hide(n.name+"-bubble"),n.showBubble(parseInt(c.attr("index")),parseInt(r.attr("col")),u))}).on("mouseover.body-global",{delegate:".tsg-clipboard-copy"},a=>{if(a.delegate._tooltipShow)return;let r=E(a.delegate).parent(),c=r.parent(),d=n.columns[r.attr("col")],u=c.parents(".tsg-grid-body").hasClass("tsg-grid-summary");be.show({name:n.name+"-bubble",anchor:a.delegate,html:p.lang(typeof d?.clipboardCopy=="string"?d.clipboardCopy:"Copy to clipboard"),position:"top|bottom",offsetY:-2}),E(a.delegate).off(".tooltip").on("mouseleave.tooltip",h=>{be.hide(n.name+"-bubble")}).on("click.tooltip",h=>{h.stopPropagation(),be.update(n.name+"-bubble",p.lang("Copied")),n.clipboardCopy(c.attr("index"),r.attr("col"),u)}),a.delegate._tooltipShow=!0}).on("click.body-global",{delegate:".tsg-editable-checkbox"},a=>{let r=E(a.delegate).data();n.editChange.call(n,a.delegate,r.changeind,r.colind,a),n.updateToolbar()}),n.records.length===0&&n.msgEmpty?E(n.box).find(`#grid_${n.name}_body`).append(`<div id="grid_${n.name}_empty_msg" class="tsg-grid-empty-msg"><div>${p.lang(n.msgEmpty)}</div></div>`):E(n.box).find(`#grid_${n.name}_empty_msg`).length>0&&E(n.box).find(`#grid_${n.name}_empty_msg`).remove(),n.summary.length>0){let a=n.getSummaryHTML();E(n.box).find(`#grid_${n.name}_fsummary`).html(a?.[0]??"").show(),E(n.box).find(`#grid_${n.name}_summary`).html(a?.[1]??"").show()}else E(n.box).find(`#grid_${n.name}_fsummary`).hide(),E(n.box).find(`#grid_${n.name}_summary`).hide()}function qn(n){let e=n.trigger("destroy",{target:n.name});e.isCancelled!==!0&&(n.toolbar?.destroy?.(),E(n.box).find(`#grid_${n.name}_body`).length>0&&n.unmount(),delete se[n.name],e.finish())}function Yn(n){let e=[{id:"line-numbers",text:"Line #",checked:n.show.lineNumbers}];for(let i=0;i<n.columns.length;i++){let o=n.columns[i],l=o.text;o.hideable!==!1&&(!l&&o.tooltip&&(l=o.tooltip),l||(l="- column "+(i+1)+" -"),e.push({id:o.field,text:p.stripTags(l),checked:!o.hidden}))}if(((n.url?.get??n.url)&&n.show.skipRecords||n.show.saveRestoreState)&&e.push({text:"--"}),n.show.skipRecords){let i=p.lang("Skip")+`<input id="${n.name}_skip" type="text" class="tsg-input tsg-grid-skip" value="${n.offset}">`+p.lang("records");e.push({id:"tsg-skip",text:i,group:!1,icon:"tsg-icon-empty"})}n.show.saveRestoreState&&e.push({id:"tsg-stateSave",text:p.lang("Save Grid State"),icon:"tsg-icon-empty",group:!1},{id:"tsg-stateReset",text:p.lang("Restore Default State"),icon:"tsg-icon-empty",group:!1});let t=[];return e.forEach(i=>{i.text=p.lang(i.text),i.checked&&t.push(i.id)}),n.toolbar.set("tsg-column-on-off",{selected:t,items:e}),e}function Xn(n,e){if(n.columnGroups&&n.columnGroups.length)throw"Draggable columns are not currently supported with column groups.";let s=n,t={pressed:!1,targetPos:null,columnHead:null},i=(d,u)=>{let h=["tsg-col-number","tsg-col-expand","tsg-col-select"];u!==!0&&h.push("tsg-head-last");for(let f=0;f<h.length;f++)if(E(d).closest(".tsg-head").hasClass(h[f]))return!0;return!1};E(s.box).off(".colDrag").on("mousedown.colDrag",o);function o(d){if(t.pressed||t.numberPreColumnsPresent===0||d.button!==0)return;let u=".tsg-head.tsg-col-number, .tsg-head.tsg-col-expand, .tsg-head.tsg-col-select";if(!E(d.target).parents().hasClass("tsg-head")||i(d.target))return;t.pressed=!0,t.initialX=d.pageX,t.initialY=d.pageY,t.numberPreColumnsPresent=E(s.box).find(u).length;let h=t.columnHead=E(d.target).closest(".tsg-head"),f=t.originalPos=parseInt(h.attr("col"),10),m=s.trigger("columnDragStart",{originalEvent:d,origColumnNumber:f,target:h[0]});if(m.isCancelled===!0)return!1;let y=t.columns=E(s.box).find(".tsg-head:not(.tsg-head-last)");E(document).on("mouseup.colDrag",a),E(document).on("mousemove.colDrag",l);let x=s.columns[t.originalPos],b=p.lang(typeof x.text=="function"?x.text(x):x.text);t.ghost=j.html(`<span col="${t.originalPos}">${b}</span>`)[0],E(document.body).append(t.ghost),E(t.ghost).css({display:"none",left:d.pageX,top:d.pageY,opacity:1,margin:"3px 0 0 20px",padding:"3px","background-color":"white",position:"fixed","z-index":999999}).addClass(".tsg-grid-ghost"),t.offsets=[];for(let g=0,v=y.length;g<v;g++){let w=y[g].getBoundingClientRect();t.offsets.push(w.left)}m.finish()}function l(d){if(!t.pressed||!t.columnHead)return;let u=d.pageX,h=d.pageY;i(d.target,!0)||r(d),c(u,h)}function a(d){if(!t.pressed||!t.columnHead)return;t.pressed=!1;let u,h=()=>{let x=E(s.box).find(".tsg-grid-ghost");E(s.box).find(".tsg-intersection-marker").hide(),E(t.ghost).remove(),x.remove(),E(document).off(".colDrag"),t={}};if(d.pageX==t.initialX&&d.pageY==t.initialY){s.columnClick(s.columns[t.originalPos].field,d),h();return}let f=s.trigger("columnDragEnd",{originalEvent:d,target:t.columnHead[0],dragData:t});if(f.isCancelled===!0)return!1;let m=s.columns[t.originalPos],y=s.columns;t.originalPos!=t.targetPos&&t.targetPos!=null&&(y.splice(t.targetPos,0,p.clone(m)),y.splice(y.indexOf(m),1)),h(),s.refresh(),f.finish({targetColumn:(u??1)-1})}function r(d){if(E(d.target).closest("td").length==0)return;let u=E(d.target).closest("td"),h=u.hasClass("tsg-head-last")?s.columns.length:parseInt(u.attr("col"));if(t.targetPos!=h){let f=E(s.box).find(".tsg-grid-body").get(0).getBoundingClientRect(),m=E(d.target).closest("td").get(0).getBoundingClientRect();E(s.box).find(".tsg-intersection-marker").show().css({left:m.left-f.left+"px",height:m.height+"px"}),t.targetPos=h}}function c(d,u){E(t.ghost).css({left:d-10+"px",top:u-10+"px"}).show()}return{remove(){E(s.box).off(".colDrag"),s.last.columnDrag=!1}}}function Kn(n,e,s){let t=n.trigger("columnOnOff",{target:n.name,field:s,originalEvent:e});if(t.isCancelled===!0)return;let i=n.find({"TsUi.expanded":!0},!0);for(let o=0;o<i.length;o++){let l=n.records[o].TsUi;l&&!Array.isArray(l.children)&&(n.records[o].TsUi.expanded=!1)}if(s=="line-numbers")n.show.lineNumbers=!n.show.lineNumbers,n.refresh();else{let o=n.getColumn(s);o!=null&&o.hidden?n.showColumn(o.field):o!=null&&n.hideColumn(o.field)}t.finish()}function Jn(n){if(n.toolbar.render!=null)return;let e=n.toolbar.items||[];if(n.toolbar.items=[],n.toolbar=new ye(p.extend({},n.toolbar,{name:n.name+"_toolbar",owner:n})),n.show.toolbarReload&&n.toolbar.items.push(p.extend({},n.buttons.reload)),n.show.toolbarColumns&&n.toolbar.items.push(p.extend({},n.buttons.columns)),n.show.toolbarSearch){let s=`
515
515
  <div class="tsg-grid-search-input">
516
516
  ${n.buttons.search.html}
517
517
  <div id="grid_${n.name}_search_name" class="tsg-grid-search-name">
@@ -528,10 +528,10 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
528
528
  style="${n.multiSearch?"":"display: none"}">
529
529
  <span class="tsg-icon-drop"></span>
530
530
  </div>
531
- </div>`;n.toolbar.items.push({id:"tsg-search",type:"html",html:s,onRefresh:async t=>{await t.complete;let i=E(n.box).find(`#grid_${n.name}_search_all`);p.bindEvents(E(n.box).find(`#grid_${n.name}_search_all, .tsg-action`),n);let o=p.debounce(l=>{let a=l.target.value;n.liveSearch&&n.last.liveText!=a&&(n.last.liveText=a,n.search(n.last.field,a))},250);i.on("blur",()=>{n.last.liveText=""}).on("keyup",l=>{switch(l.keyCode){case 40:{n.searchSuggest(!0);break}case 38:{n.searchSuggest(!0,!0);break}case 13:{Ii.hide(n.name+"-search-suggest"),n.search(n.last.field,l.target.value);break}default:{o(l);break}}})}})}if(Array.isArray(e)){let s=e.map(t=>t.id);n.show.toolbarAdd&&!s.includes(n.buttons.add.id)&&n.toolbar.items.push(p.extend({},n.buttons.add)),n.show.toolbarEdit&&!s.includes(n.buttons.edit.id)&&n.toolbar.items.push(p.extend({},n.buttons.edit)),n.show.toolbarDelete&&!s.includes(n.buttons.delete.id)&&n.toolbar.items.push(p.extend({},n.buttons.delete)),n.show.toolbarSave&&!s.includes(n.buttons.save.id)&&((n.show.toolbarAdd||n.show.toolbarDelete||n.show.toolbarEdit)&&n.toolbar.items.push({type:"break",id:"tsg-break2"}),n.toolbar.items.push(p.extend({},n.buttons.save))),e=e.map(t=>n.buttons[t.name]?p.extend({},n.buttons[t.name],t):t)}n.toolbar.items.push(...e),n.toolbar.on("click",s=>{let t=n.trigger("toolbar",{target:s.target,originalEvent:s});if(t.isCancelled===!0)return;let i;switch(s.detail.item.id){case"tsg-reload":if(i=n.trigger("reload",{target:n.name}),i.isCancelled===!0)return!1;n.reload(),i.finish();break;case"tsg-column-on-off":if(s.detail.subItem){let o=s.detail.subItem.id;["tsg-stateSave","tsg-stateReset"].includes(o)?n[o.substring(5)]():o=="tsg-skip"||n.columnOnOff(s,s.detail.subItem.id)}else n.initColumnOnOff(),setTimeout(()=>{E(`#w2overlay-${n.name}_toolbar-drop .tsg-grid-skip`).off(".tsg-grid").on("click.tsg-grid",o=>{o.stopPropagation()}).on("keypress",o=>{o.keyCode==13&&(n.skip(o.target.value),n.toolbar.click("tsg-column-on-off"))})},100);break;case"tsg-add":if(i=n.trigger("add",{target:n.name,recid:null}),i.isCancelled===!0)return!1;i.finish();break;case"tsg-edit":{let o=n.getSelection(),l=null;if(o.length==1&&(l=o[0]),i=n.trigger("edit",{target:n.name,recid:l}),i.isCancelled===!0)return!1;i.finish();break}case"tsg-delete":n.delete();break;case"tsg-save":n.save();break}t.finish()}),n.toolbar.on("refresh",s=>{if(s.target=="tsg-search"){let t=n.searchData;setTimeout(()=>{n.searchInitInput(n.last.field,t.length==1?t[0].value:null)},1)}})}function Zn(n){let e=n;E(n.box).find(".tsg-resizer").off(".grid-col-resize").on("click.grid-col-resize",function(s){s.stopPropagation(),s.preventDefault()}).on("mousedown.grid-col-resize",function(s){let t=s;if(!t)return;e.last.colResizing=!0,e.last.tmp={x:t.screenX,y:t.screenY,gx:t.screenX,gy:t.screenY,col:parseInt(E(this).attr("name"))},e.last.tmp.tds=E(e.box).find("#grid_"+e.name+'_body table tr:first-child td[col="'+e.last.tmp.col+'"]'),t.stopPropagation(),t.preventDefault();for(let r=0;r<e.columns.length;r++)e.columns[r].hidden||(e.columns[r].sizeOriginal==null&&(e.columns[r].sizeOriginal=e.columns[r].size??""),e.columns[r].size=e.columns[r].sizeCalculated??"");let i=e.trigger("columnResize",{target:e.name,resizeBy:0,originalEvent:t,column:e.last.tmp.col,field:e.columns[e.last.tmp.col].field}),o,l=function(r){if(e.last.colResizing!=!0)return;r||(r=window.event);let c=e.trigger("columnResizeMove",p.extend(i.detail,{resizeBy:r.screenX-e.last.tmp.gx,originalEvent:r}));if(c.isCancelled===!0)return;e.last.tmp.x=r.screenX-e.last.tmp.x,e.last.tmp.y=r.screenY-e.last.tmp.y;let d=parseInt(String(e.columns[e.last.tmp.col].size??0))+e.last.tmp.x+"px";e.columns[e.last.tmp.col].size=d,o&&clearTimeout(o),o=setTimeout(()=>{e.resizeRecords(),e.scroll()},100),e.last.tmp.tds.css({width:d}),e.last.tmp.x=r.screenX,e.last.tmp.y=r.screenY,c.finish()},a=function(r){E(document).off(".grid-col-resize"),e.resizeRecords(),e.scroll(),i.finish({originalEvent:r}),setTimeout(()=>{e.last.colResizing=!1},1)};E(document).off(".grid-col-resize").on("mousemove.grid-col-resize",l).on("mouseup.grid-col-resize",a)}).on("dblclick.grid-col-resize",function(s){let t=parseInt(E(this).attr("name"));e.columnAutoSize(t),s.stopPropagation(),s.preventDefault()}).each(s=>{let t=E(s).get(0).parentNode;E(s).css({height:t.clientHeight+"px","margin-left":t.clientWidth-3+"px"})})}function ei(n){let e=E(n.box).find(`#grid_${n.name}_header`),s=E(n.box).find(`#grid_${n.name}_toolbar`),t=E(n.box).find(`#grid_${n.name}_fsummary`),i=E(n.box).find(`#grid_${n.name}_summary`),o=E(n.box).find(`#grid_${n.name}_footer`),l=E(n.box).find(`#grid_${n.name}_body`);n.show.header&&e.css({top:"0px",left:"0px",right:"0px"}),n.show.toolbar&&s.css({top:0+(n.show.header?p.getSize(e,"height"):0)+"px",left:"0px",right:"0px"}),n.summary.length>0&&(t.css({bottom:0+(n.show.footer?p.getSize(o,"height"):0)+"px"}),i.css({bottom:0+(n.show.footer?p.getSize(o,"height"):0)+"px",right:"0px"})),n.show.footer&&o.css({bottom:"0px",left:"0px",right:"0px"}),l.css({top:0+(n.show.header?p.getSize(e,"height"):0)+(n.show.toolbar?p.getSize(s,"height"):0)+"px",bottom:0+(n.show.footer?p.getSize(o,"height"):0)+(n.summary.length>0?p.getSize(i,"height"):0)+"px",left:"0px",right:"0px"})}function ti(n){let e=n;E(n.box).find(".tsg-empty-record").remove();let s=E(n.box),t=E(n.box).find(":scope > div.tsg-grid-box"),i=E(n.box).find(`#grid_${n.name}_header`),o=E(n.box).find(`#grid_${n.name}_toolbar`),l=E(n.box).find(`#grid_${n.name}_summary`),a=E(n.box).find(`#grid_${n.name}_fsummary`),r=E(n.box).find(`#grid_${n.name}_footer`),c=E(n.box).find(`#grid_${n.name}_body`),d=E(n.box).find(`#grid_${n.name}_columns`),u=E(n.box).find(`#grid_${n.name}_fcolumns`),h=E(n.box).find(`#grid_${n.name}_records`),f=E(n.box).find(`#grid_${n.name}_frecords`),m=E(n.box).find(`#grid_${n.name}_scroll1`),y=String(n.total).length*8+10;y<34&&(y=34),n.lineNumberWidth!=null&&(y=n.lineNumberWidth);let x=!1,b=!1,g=0;for(let R=0;R<n.columns.length;R++){if(n.columns[R].frozen||n.columns[R].hidden)continue;let F=parseInt(n.columns[R].sizeCalculated?n.columns[R].sizeCalculated:String(n.columns[R].size??0));g+=F}if(h[0]?.clientWidth<g&&(x=!0),c[0]?.clientHeight-(d[0]?.clientHeight??0)<(E(h).find(":scope > table")[0]?.clientHeight??0)+(x?p.scrollBarSize():0)&&(b=!0),n.fixedBody){let R=t[0]?.clientHeight-(n.show.header?p.getSize(i,"height"):0)-(n.show.toolbar?p.getSize(o,"height"):0)-(l.css("display")!="none"?p.getSize(l,"height"):0)-(n.show.footer?p.getSize(r,"height"):0);c.css("height",R+"px")}else{let R=p.getSize(d,"height")+p.getSize(E(n.box).find("#grid_"+n.name+"_records table"),"height")+(x?p.scrollBarSize():0),F=R+(n.show.header?p.getSize(i,"height"):0)+(n.show.toolbar?p.getSize(o,"height"):0)+(l.css("display")!="none"?p.getSize(l,"height"):0)+(n.show.footer?p.getSize(r,"height"):0);t.css("height",F+"px"),c.css("height",R+"px"),s.css("height",p.getSize(t,"height")+"px")}let v=n.records.length,w=n.url?.get??n.url;if(n.searchData.length!=0&&!w&&(v=n.last.searchIds.length),n.fixedBody||(b=!1),x||b?(d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").css("width",p.scrollBarSize()+"px").show(),h.css({top:(n.columnGroups.length>0&&n.show.columns?1:0)+p.getSize(d,"height")+"px","-webkit-overflow-scrolling":"touch","overflow-x":x?"auto":"hidden","overflow-y":b?"auto":"hidden"})):(d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").hide(),h.css({top:(n.columnGroups.length>0&&n.show.columns?1:0)+p.getSize(d,"height")+"px",overflow:"hidden"}),h.length>0&&(n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0)),x?(f.css("margin-bottom",p.scrollBarSize()+"px"),m.show()):(f.css("margin-bottom",0),m.hide()),f.css({overflow:"hidden",top:h.css("top")}),n.show.emptyRecords&&!b){let R=Math.floor((h[0]?.clientHeight??0)/n.recordHeight)-1,F=0;if(h[0]&&(F=h[0].scrollHeight-R*n.recordHeight),F>=n.recordHeight&&(F-=n.recordHeight,R++),n.fixedBody){for(let S=v;S<R;S++)T(S,n.recordHeight,n);T(R,F,n)}}function T(R,F,S){let $="",H="",Q="";$+='<tr class="'+(R%2?"tsg-even":"tsg-odd")+' tsg-empty-record" recid="-none-" style="height: '+F+'px">',H+='<tr class="'+(R%2?"tsg-even":"tsg-odd")+' tsg-empty-record" recid="-none-" style="height: '+F+'px">',S.show.lineNumbers&&($+='<td class="tsg-col-number"></td>'),S.show.selectColumn&&($+='<td class="tsg-grid-data tsg-col-select"></td>'),S.show.expandColumn&&($+='<td class="tsg-grid-data tsg-col-expand"></td>'),H+='<td class="tsg-grid-data-spacer" col="start" style="border-right: 0"></td>',S.reorderRows&&(H+='<td class="tsg-grid-data tsg-col-order" col="order"></td>');for(let Y=0;Y<S.columns.length;Y++){let ee=S.columns[Y];(ee.hidden||Y<S.last.vscroll.colIndStart||Y>S.last.vscroll.colIndEnd)&&!ee.frozen||(Q='<td class="tsg-grid-data" '+(ee.attr!=null?ee.attr:"")+' col="'+Y+'"></td>',ee.frozen?$+=Q:H+=Q)}$+='<td class="tsg-grid-data-last"></td> </tr>',H+='<td class="tsg-grid-data-last" col="end"></td> </tr>',E(S.box).find("#grid_"+S.name+"_frecords > table").append($),E(S.box).find("#grid_"+S.name+"_records > table").append(H)}let _,C;if(c.length>0){let R=parseInt(c[0].clientWidth)-(b?p.scrollBarSize():0)-(n.show.lineNumbers?y:0)-(n.reorderRows?26:0)-(n.show.selectColumn?26:0)-(n.show.expandColumn?26:0)-1;_=R,C=0;let F=!1;for(let S=0;S<n.columns.length;S++){let $=n.columns[S];($.gridMinWidth??0)>0&&(($.gridMinWidth??0)>_&&$.hidden!==!0&&($.hidden=!0,F=!0),($.gridMinWidth??0)<_&&$.hidden===!0&&($.hidden=!1,F=!0))}if(F===!0){n.refresh();return}for(let S=0;S<n.columns.length;S++){let $=n.columns[S];if($.hidden)continue;let H=String($.size??0);H.substr(H.length-2).toLowerCase()=="px"?(R-=parseFloat(H),$.sizeCalculated=H,$.sizeType="px"):(C+=parseFloat(H),$.sizeType="%",delete $.sizeCorrected)}if(C!=100&&C>0)for(let S=0;S<n.columns.length;S++){let $=n.columns[S];$.hidden||$.sizeType=="%"&&($.sizeCorrected=Math.round(parseFloat(String($.size??0))*100*100/C)/100+"%")}for(let S=0;S<n.columns.length;S++){let $=n.columns[S];$.hidden||$.sizeType=="%"&&($.sizeCorrected!=null?$.sizeCalculated=Math.floor(R*parseFloat(String($.sizeCorrected))/100)-1+"px":$.sizeCalculated=Math.floor(R*parseFloat(String($.size??0))/100)-1+"px")}}let D=0;for(let R=0;R<n.columns.length;R++){let F=n.columns[R];F.hidden||(F.min==null&&(F.min=20),parseInt(F.sizeCalculated??"0")<F.min&&(F.sizeCalculated=F.min+"px"),F.max!=null&&parseInt(F.sizeCalculated??"0")>F.max&&(F.sizeCalculated=F.max+"px"),D+=parseInt(F.sizeCalculated??"0"))}let O=parseInt(_)-D;if(O>0&&C>0){let R=0;for(;;){let F=n.columns[R];if(F==null){R=0;continue}if(F.hidden||F.sizeType=="px"){R++;continue}if(F.sizeCalculated=parseInt(F.sizeCalculated??"0")+1+"px",O--,O===0)break;R++}}else O>0&&d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").css("width",p.scrollBarSize()+"px").show();let I=1;n.show.lineNumbers&&(I+=y),n.show.selectColumn&&(I+=26),n.show.expandColumn&&(I+=26);for(let R=0;R<n.columns.length;R++)n.columns[R].hidden||n.columns[R].frozen&&(I+=parseInt(n.columns[R].sizeCalculated??"0"));u.css("width",I+"px"),f.css("width",I+"px"),a.css("width",I+"px"),m.css("width",I+"px"),d.css({left:I+"px","padding-left":"0.5px"}),h.css({left:I+"px"}),l.css({left:I+"px"}),d.find(":scope > table > tbody > tr:nth-child(1) td").add(u.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}if(E(R).hasClass("tsg-head-last"))if((e.last.vscroll.colIndEnd??0)+1<e.columns.length){let S=0;for(let $=(e.last.vscroll.colIndEnd??0)+1;$<e.columns.length;$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}else E(R).css("width",p.scrollBarSize()+(O>0&&C===0?O:0)+"px")}),d.find(":scope > table > tbody > tr").length==3&&d.find(":scope > table > tbody > tr:nth-child(1) td").add(u.find(":scope > table > tbody > tr:nth-child(1) td")).html("").css({height:"0",border:"0",padding:"0",margin:"0"}),h.find(":scope > table > tbody > tr:nth-child(1) td").add(f.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}if(E(R).hasClass("tsg-grid-data-last")&&E(R).parents(".tsg-grid-frecords").length===0)if((e.last.vscroll.colIndEnd??0)+1<e.columns.length){let S=0;for(let $=(e.last.vscroll.colIndEnd??0)+1;$<e.columns.length;$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}else E(R).css("width",(O>0&&C===0?O:0)+"px")}),l.find(":scope > table > tbody > tr:nth-child(1) td").add(a.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}E(R).hasClass("tsg-grid-data-last")&&E(R).parents(".tsg-grid-frecords").length===0&&E(R).css("width",p.scrollBarSize()+(O>0&&C===0?O:0)+"px")}),n.initResize(),n.refreshRanges(),(n.last.vscroll.scrollTop||n.last.vscroll.scrollLeft)&&h.length>0&&(d.prop("scrollLeft",n.last.vscroll.scrollLeft),h.prop("scrollTop",n.last.vscroll.scrollTop),h.prop("scrollLeft",n.last.vscroll.scrollLeft)),d.css("will-change","scroll-position")}function si(n){let e=n,s="",t="";if(n.show.columnHeaders)if(n.columnGroups.length>0){let l=o(!0),a=i(),r=o(!1);s=(l[0]??"")+(a[0]??"")+(r[0]??""),t=(l[1]??"")+(a[1]??"")+(r[1]??"")}else{let l=o(!0);s=l[0]??"",t=l[1]??""}return[s,t];function i(){let l="<tr>",a="<tr>",r="",c=e.columnGroups.length-1;e.columnGroups[c].text==null&&e.columnGroups[c].caption!=null&&(console.log("NOTICE: grid columnGroup.caption property is deprecated, please use columnGroup.text. Group -> ",e.columnGroups[c]),e.columnGroups[c].text=e.columnGroups[c].caption),e.columnGroups[e.columnGroups.length-1].text!=""&&e.columnGroups.push({text:""}),e.show.lineNumbers&&(l+='<td class="tsg-head tsg-col-number" col="line-number"> <div>&#160;</div></td>'),e.show.selectColumn&&(l+='<td class="tsg-head tsg-col-select" col="select"> <div style="height: 25px">&#160;</div></td>'),e.show.expandColumn&&(l+='<td class="tsg-head tsg-col-expand" col="expand"> <div style="height: 25px">&#160;</div></td>');let d=0;a+=`<td id="grid_${e.name}_column_start" class="tsg-head" col="start" style="border-right: 0"></td>`,e.reorderRows&&(a+='<td class="tsg-head tsg-col-order" col="order"> <div style="height: 25px">&#160;</div></td>');for(let u=0;u<e.columnGroups.length;u++){let h=e.columnGroups[u],f=e.columns[d]??{};h.colspan!=null&&(h.span=h.colspan),(h.span==null||h.span!=parseInt(h.span))&&(h.span=1),f.text==null&&f.caption!=null&&(console.log("NOTICE: grid column.caption property is deprecated, please use column.text. Column ->",f),f.text=f.caption);let m=0;for(let y=d;y<d+h.span;y++)e.columns[y]&&!e.columns[y].hidden&&m++;if(u==e.columnGroups.length-1&&(m=100),!(m<=0))if(h.main===!0){let y="";for(let g=0;g<e.sortData.length;g++)e.sortData[g].field==f.field&&((e.sortData[g].direction||"").toLowerCase()==="asc"&&(y="tsg-sort-up"),(e.sortData[g].direction||"").toLowerCase()==="desc"&&(y="tsg-sort-down"));let x="";f.resizable!==!1&&(x=`<div class="tsg-resizer" name="${d}"></div>`);let b=p.lang(typeof f.text=="function"?f.text(f):f.text);r=`<td id="grid_${e.name}_column_${d}" class="tsg-head ${y}" col="${d}" rowspan="2" colspan="${m}">`+x+` <div class="tsg-col-group tsg-col-header ${y?"tsg-col-sorted":""}"> <div class="${y}"></div>`+(b||"&#160;")+" </div></td>",f&&f.frozen?l+=r:a+=r}else{let y=p.lang(typeof h.text=="function"?h.text(h):h.text);r=`<td id="grid_${e.name}_column_${d}" class="tsg-head" col="${d}" colspan="${m}"> <div class="tsg-col-group" style="${h.style??""}">${y||"&#160;"}</div></td>`,f&&f.frozen?l+=r:a+=r}d+=h.span}return l+="<td></td></tr>",a+=`<td id="grid_${e.name}_column_end" class="tsg-head" col="end"></td></tr>`,[l,a]}function o(l){let a="<tr>",r="<tr>";e.show.lineNumbers&&(a+='<td class="tsg-head tsg-col-number" col="line-number"> <div>#</div></td>'),e.show.selectColumn&&(a+=`<td class="tsg-head tsg-col-select" col="select"> <div> <input type="checkbox" id="grid_${e.name}_check_all" class="tsg-select-all" tabindex="-1" style="${e.multiSelect==!1?"display: none;":""}" > </div></td>`),e.show.expandColumn&&(a+='<td class="tsg-head tsg-col-expand" col="expand"> <div>&#160;</div></td>');let c=0,d=0,u;r+=`<td id="grid_${e.name}_column_start" class="tsg-head" col="start" style="border-right: 0"></td>`,e.reorderRows&&(r+='<td class="tsg-head tsg-col-order" col="order"> <div>&#160;</div></td>');for(let h=0;h<e.columns.length;h++){let f=e.columns[h];if(f.text==null&&f.caption!=null&&(console.log("NOTICE: grid column.caption property is deprecated, please use column.text. Column -> ",f),f.text=f.caption),f.size==null&&(f.size="100%"),h==d&&(u=e.columnGroups[c++]||{},d=d+u.span),!((h<(e.last.vscroll.colIndStart??0)||h>(e.last.vscroll.colIndEnd??1/0))&&!f.frozen)&&!f.hidden&&(u.main!==!0||l)){let m=e.getColumnCellHTML(h);f&&f.frozen?a+=m:r+=m}}return a+='<td class="tsg-head tsg-head-last"><div>&#160;</div></td>',r+='<td class="tsg-head tsg-head-last" col="end"><div>&#160;</div></td>',a+="</tr>",r+="</tr>",[a,r]}}function ni(n,e){let s=n.columns[e];if(s==null)return"";let t=n.reorderColumns&&(!n.columnGroups||!n.columnGroups.length)?" tsg-col-reorderable ":"",i="";for(let c=0;c<n.sortData.length;c++)n.sortData[c].field==s.field&&((n.sortData[c].direction||"").toLowerCase()==="asc"&&(i="tsg-sort-up"),(n.sortData[c].direction||"").toLowerCase()==="desc"&&(i="tsg-sort-down"));let o=n.last.selection.columns,l=!1;for(let c in o)for(let d=0;d<o[c].length;d++)o[c][d]==e&&(l=!0);let a=p.lang(typeof s.text=="function"?s.text(s):s.text);return'<td id="grid_'+n.name+"_column_"+e+'" col="'+e+'" class="tsg-head '+i+t+'">'+(s.resizable!==!1?'<div class="tsg-resizer" name="'+e+'"></div>':"")+' <div class="tsg-col-header '+(i?"tsg-col-sorted":"")+" "+(l?"tsg-col-selected":"")+'"> <div class="'+i+'"></div>'+(a||"&#160;")+" </div></td>"}function ii(n,e,s){let t=E(n.box).find("#grid_"+n.name+"_column_"+e),i=n.columns[e],o=n.columnTooltip;be.show({name:n.name+"-column-tooltip",anchor:t.get(0),html:i?.tooltip,position:o})}function oi(n,e,s){be.hide(n.name+"-column-tooltip")}function li(n){let e=n.records.length,s=n.url?.get??n.url;n.searchData.length!=0&&!s&&(e=n.last.searchIds.length),e>n.vs_start?n.last.vscroll.show_extra=n.vs_extra:n.last.vscroll.show_extra=n.vs_start;let t=E(n.box).find(`#grid_${n.name}_records`),i=Math.floor((t.get(0)?.clientHeight||0)/n.recordHeight)+n.last.vscroll.show_extra+1;i<n.vs_start&&(i=n.vs_start),(!n.fixedBody||i>e)&&(i=e);let o=n.getRecordHTML(-1,0),l="<table><tbody>"+o[0],a="<table><tbody>"+o[1];l+='<tr id="grid_'+n.name+'_frec_top" line="top" style="height: 0px"> <td colspan="2000"></td></tr>',a+='<tr id="grid_'+n.name+'_rec_top" line="top" style="height: 0px"> <td colspan="2000"></td></tr>';for(let c=0;c<i;c++)o=n.getRecordHTML(c,c+1),l+=o[0],a+=o[1];let r=(e-i)*n.recordHeight;return l+='<tr id="grid_'+n.name+'_frec_bottom" rec="bottom" line="bottom" style="height: '+r+'px; vertical-align: top"> <td colspan="2000" style="border: 0"></td></tr><tr id="grid_'+n.name+'_frec_more" style="display: none; "> <td colspan="2000" class="tsg-load-more"></td></tr></tbody></table>',a+='<tr id="grid_'+n.name+'_rec_bottom" rec="bottom" line="bottom" style="height: '+r+'px; vertical-align: top"> <td colspan="2000" style="border: 0"></td></tr><tr id="grid_'+n.name+'_rec_more" style="display: none"> <td colspan="2000" class="tsg-load-more"></td></tr></tbody></table>',n.last.vscroll.recIndStart=0,n.last.vscroll.recIndEnd=i,[l,a]}function ai(n){if(n.summary.length===0)return;let e=n.getRecordHTML(-1,0),s="<table><tbody>"+e[0],t="<table><tbody>"+e[1];for(let i=0;i<n.summary.length;i++)e=n.getRecordHTML(i,i+1,!0),s+=e[0],t+=e[1];return s+="</tbody></table>",t+="</tbody></table>",[s,t]}function ri(n,e,s,t){let i="",o="",l="",a=n.last.selection,r;if(e==-1){o+='<tr line="0">',l+='<tr line="0">',n.show.lineNumbers&&(o+='<td class="tsg-col-number" style="height: 0px"></td>'),n.show.selectColumn&&(o+='<td class="tsg-col-select" style="height: 0px"></td>'),n.show.expandColumn&&(o+='<td class="tsg-col-expand" style="height: 0px"></td>'),l+='<td class="tsg-grid-data tsg-grid-data-spacer" col="start" style="height: 0px; width: 0px"></td>',n.reorderRows&&(l+='<td class="tsg-col-order" style="height: 0px"></td>');for(let y=0;y<n.columns.length;y++){let x=n.columns[y];if(i='<td class="tsg-grid-data" col="'+y+'" style="height: 0px;"></td>',x.frozen&&!x.hidden)o+=i;else{if(x.hidden||y<n.last.vscroll.colIndStart||y>n.last.vscroll.colIndEnd)continue;l+=i}}return o+='<td class="tsg-grid-data-last" style="height: 0px"></td>',l+='<td class="tsg-grid-data-last" col="end" style="height: 0px"></td>',o+="</tr>",l+="</tr>",[o,l]}let c=n.url?.get??n.url;if(t!==!0)if(n.searchData.length>0&&!c){if(e>=n.last.searchIds.length)return"";e=n.last.searchIds[e]??e,r=n.records[e]}else{if(e>=n.records.length)return"";r=n.records[e]}else{if(e>=n.summary.length)return"";r=n.summary[e]}if(!r)return"";if(r.recid==null&&n.recid!=null){let y=n.parseField(r,n.recid);y!=null&&(r.recid=y)}let d=!1;a.indexes.indexOf(e)!=-1&&(d=!0);let u=r.TsUi?r.TsUi.style:"";(u==null||typeof u!="string")&&(u="");let h=r.TsUi?r.TsUi.class:"";if((h==null||typeof h!="string")&&(h=""),o+='<tr id="grid_'+n.name+"_frec_"+r.recid+'" recid="'+r.recid+'" line="'+s+'" index="'+e+'" class="'+(s%2===0?"tsg-even":"tsg-odd")+" tsg-record "+h+(d&&n.selectType=="row"?" tsg-selected":"")+(r.TsUi&&r.TsUi.editable===!1?" tsg-no-edit":"")+(r.TsUi&&r.TsUi.expanded===!0?" tsg-expanded":"")+'" style="height: '+n.recordHeight+"px; "+(!d&&u!=""?u:u.replace("background-color","none"))+'" '+(u!=""?'custom_style="'+u+'"':"")+">",l+='<tr id="grid_'+n.name+"_rec_"+r.recid+'" recid="'+r.recid+'" line="'+s+'" index="'+e+'" class="'+(s%2===0?"tsg-even":"tsg-odd")+" tsg-record "+h+(d&&n.selectType=="row"?" tsg-selected":"")+(r.TsUi&&r.TsUi.editable===!1?" tsg-no-edit":"")+(r.TsUi&&r.TsUi.expanded===!0?" tsg-expanded":"")+'" style="height: '+n.recordHeight+"px; "+(!d&&u!=""?u:u.replace("background-color","none"))+'" '+(u!=""?'custom_style="'+u+'"':"")+">",n.show.lineNumbers&&(o+='<td id="grid_'+n.name+"_cell_"+e+"_number"+(t?"_s":"")+'" class="tsg-col-number '+(d?" tsg-row-selected":"")+'"'+(n.reorderRows?' style="cursor: move"':"")+">"+(t!==!0?n.getLineHTML(s):"")+"</td>"),n.show.selectColumn&&(o+='<td id="grid_'+n.name+"_cell_"+e+"_select"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-select">'+(t!==!0&&!(r.TsUi&&r.TsUi.hideCheckBox===!0)?' <div> <input class="tsg-grid-select-check" type="checkbox" tabindex="-1" '+(d?'checked="checked"':"")+' style="pointer-events: none"/> </div>':"")+"</td>"),n.show.expandColumn){let y="";r.TsUi?.expanded===!0?y="-":y="+",(r.TsUi?.expanded=="none"||!Array.isArray(r.TsUi?.children)||!r.TsUi?.children.length)&&(y="+"),r.TsUi?.expanded=="spinner"&&(y='<div class="tsg-spinner" style="width: 16px; margin: -2px 2px;"></div>'),o+='<td id="grid_'+n.name+"_cell_"+e+"_expand"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-expand">'+(t!==!0?`<div>${y}</div>`:"")+"</td>"}l+='<td class="tsg-grid-data-spacer" col="start" style="border-right: 0"></td>',n.reorderRows&&(l+='<td id="grid_'+n.name+"_cell_"+e+"_order"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-order" col="order">'+(t!==!0?'<div title="Drag to reorder">&nbsp;</div>':"")+"</td>");let f=0,m=0;for(;;){let y=1,x=n.columns[f];if(x==null)break;if(x.hidden){f++,m>0&&m--;continue}if(m>0){if(f++,n.columns[f]==null)break;r.TsUi.colspan[n.columns[f-1].field]=0,m--;continue}else if(r.TsUi){let g=r.TsUi.colspan,v=n.columns[f].field;g&&g[v]===0&&delete g[v]}if((f<(n.last.vscroll.colIndStart??0)||f>(n.last.vscroll.colIndEnd??1/0))&&!x.frozen){f++;continue}if(r.TsUi&&typeof r.TsUi.colspan=="object"){let g=parseInt(r.TsUi.colspan[x.field])||null;if(g!=null&&g>1){let v=0;for(let w=f;w<f+g&&!(w>=n.columns.length);w++)n.columns[w].hidden&&v++;y=g-v,m=g-1}}let b=n.getCellHTML(e,f,t,y);x.frozen?o+=b:l+=b,f++}return o+='<td class="tsg-grid-data-last"></td>',l+='<td class="tsg-grid-data-last" col="end"></td>',o+="</tr>",l+="</tr>",[o,l]}function ci(n,e){return"<div>"+e+"</div>"}function ui(n,e,s,t,i){let o=n,l=n.columns[s];if(l==null)return"";let a=t!==!0?n.records[e]:n.summary[e],{value:r,style:c,className:d,attr:u,divAttr:h,title:f}=n.getCellValue(e,s,t,!0),m=e!==-1?n.getCellEditable(e,s):"",y="max-height: "+n.recordHeight+"px;"+(l.clipboardCopy?"margin-right: 20px":""),x=!t&&a?.TsUi?.changes&&a.TsUi.changes[l.field]!=null,b=n.last.selection,g=!1,v="";if(b.indexes.indexOf(e)!=-1&&(g=!0),i==null&&(a?.TsUi?.colspan&&a.TsUi.colspan[l.field]?i=a.TsUi.colspan[l.field]:i=1),s===n.hierarchyColumn&&Array.isArray(a?.TsUi?.children)){let D=0,O=a.TsUi.parent_recid!=null?n.get(a.TsUi.parent_recid,!0):null;for(;O!=null;){D++;let R=n.records[O].TsUi;if(R!=null&&R.parent_recid!=null)O=n.get(R.parent_recid,!0);else break}if(a.TsUi.parent_recid)for(let R=0;R<D;R++)v+='<span class="tsg-show-children tsg-icon-empty"></span>';let I=a.TsUi?.children?.length>0?a.TsUi.expanded?"tsg-icon-collapse":"tsg-icon-expand":"tsg-icon-empty";a.TsUi?.children?.length>0&&(v+=`<span class="tsg-show-children ${I}"></span>`)}if(l.info===!0&&(l.info={}),l.info!=null){let D="tsg-icon-info";typeof l.info.icon=="function"?D=l.info.icon(a,{self:n,index:e,colIndex:s,summary:!!t}):typeof l.info.icon=="object"?D=l.info.icon[n.parseField(a,l.field)]||"":typeof l.info.icon=="string"&&(D=l.info.icon);let O=l.info.style||"";typeof l.info.style=="function"?O=l.info.style(a,{self:n,index:e,colIndex:s,summary:!!t}):typeof l.info.style=="object"?O=l.info.style[n.parseField(a,l.field)]||"":typeof l.info.style=="string"&&(O=l.info.style),v+=`<span class="tsg-info ${D}" style="${O}"></span>`}let w=r;if(m&&["checkbox","check"].indexOf(m.type)!=-1){let D=t?-(e+1):e;y+="text-align: center;",w=`<input tabindex="-1" type="checkbox" class="tsg-editable-checkbox"
532
- data-changeInd="${D}" data-colInd="${s}" ${w?'checked="checked"':""}>`,v=""}if(w=`<div style="${y}" ${C(w,f)} ${h}>${v}${String(w)}</div>`,w==null&&(w=""),typeof l.render=="string"){let D=l.render.replace("|",":").split(":");["number","int","float","money","currency","percent","size"].includes(D[0])&&(c+="text-align: right;")}a?.TsUi&&(a.TsUi.styles==null&&(a.TsUi.styles=a.TsUi.style),typeof a.TsUi.styles=="object"&&(typeof a.TsUi.styles[s]=="string"&&(c+=a.TsUi.styles[s]+";"),typeof a.TsUi.styles[l.field]=="string"&&(c+=a.TsUi.styles[l.field]+";")),typeof a.TsUi.class=="object"&&(typeof a.TsUi.class[s]=="string"&&(d+=a.TsUi.class[s]+" "),typeof a.TsUi.class[l.field]=="string"&&(d+=a.TsUi.class[l.field]+" ")));let T=!1;g&&b.columns[e]?.includes(s)&&(T=!0);let _;return l.clipboardCopy&&(_='<span class="tsg-clipboard-copy tsg-icon-paste"></span>'),w='<td class="tsg-grid-data'+(T?" tsg-selected":"")+" "+d+(x?" tsg-changed":"")+'" id="grid_'+n.name+"_data_"+e+"_"+s+'" col="'+s+'" style="'+c+(l.style!=null?l.style:"")+'" '+(l.attr!=null?l.attr:"")+u+((i??0)>1?'colspan="'+i+'"':"")+">"+w+(_&&p.stripTags(w)?_:"")+"</td>",e===-1&&t===!0&&(w='<td class="tsg-grid-data" col="'+s+'" style="height: 0px; '+c+'" '+((i??0)>1?'colspan="'+i+'"':"")+"></td>"),w;function C(D,O){return O===void 0&&o.show.recordTitles&&(l.title!=null?(typeof l.title=="function"&&(O=l.title.call(o,a,{self:o,index:e,colIndex:s,summary:!!t})),typeof l.title=="string"&&(O=l.title)):O=p.stripTags(String(D).replace(/"/g,"''"))),O!=null?'title="'+String(O)+'"':""}}function di(n,e,s,t){let i=t?n.summary[e]:n.records[e],o=n.columns[s],l=o?n.parseField(i,o.field):"";o&&typeof o.clipboardCopy=="function"&&(l=o.clipboardCopy(i,{self:n,index:e,colIndex:s,summary:!!t})),E(n.box).find("#grid_"+n.name+"_focus").text(l).get(0).select(),document.execCommand("copy")}function fi(n,e,s,t){let i=n.columns[s]?.info;if(!i)return;let o="",l=n.records[e],a=E(n.box).find(`${t?".tsg-grid-summary":""} #grid_${n.name}_data_${e}_${s} .tsg-info`);if(n.last.bubbleEl&&be.hide(n.name+"-bubble"),n.last.bubbleEl=a,i.fields==null){i.fields=[];for(let c=0;c<n.columns.length;c++){let d=n.columns[c];i.fields.push(d.field+(typeof d.render=="string"?":"+d.render:""))}}let r=i.fields;if(typeof r=="function"&&(r=r(l,{self:n,index:e,colIndex:s,summary:!!t})),typeof i.render=="function")o=i.render(l,{self:n,index:e,colIndex:s,summary:!!t});else if(Array.isArray(r)){o='<table cellpadding="0" cellspacing="0">';for(let c=0;c<r.length;c++){let d=String(r[c]).split(":");if(d[0]==""||d[0]=="-"||d[0]=="--"||d[0]=="---"){o+='<tr><td colspan=2><div style="border-top: '+(d[0]==""?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';continue}let u=n.getColumn(d[0]??"");u==null&&(u={field:d[0]??"",text:d[0]??"",caption:d[0]});let h=u?n.parseField(l,u.field):"";if(l?.TsUi?.changes?.[u.field]!=null&&(h=l.TsUi.changes[u.field]),d.length>1)if(p.formatters[d[1]??""]){let f={self:n,value:h,params:d[2]||null,field:n.columns[s].field,index:e,colIndex:s};h=p.formatters[d[1]].call(n,l,f)}else console.log('ERROR: TsUtils.formatters["'+d[1]+'"] does not exists.');typeof h=="object"&&h.text!=null&&(h=h.text),!(i.showEmpty!==!0&&(h==null||h==""))&&(i.maxLength!=null&&typeof h=="string"&&h.length>i.maxLength&&(h=h.substr(0,i.maxLength)+"..."),o+="<tr><td>"+u.text+"</td><td>"+((h===0?"0":h)||"")+"</td></tr>")}o+="</table>"}else if(p.isPlainObject(r)){o='<table cellpadding="0" cellspacing="0">';for(let c in r){let d=r[c];if(d==""||d=="-"||d=="--"||d=="---"){o+='<tr><td colspan=2><div style="border-top: '+(d==""?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';continue}let u=String(d).split(":"),h=n.getColumn(u[0]??"");h==null&&(h={field:u[0]??"",text:u[0]??"",caption:u[0]});let f=h?n.parseField(l,h.field):"";if(l?.TsUi?.changes?.[h.field]!=null&&(f=l.TsUi.changes[h.field]),u.length>1)if(p.formatters[u[1]??""]){let m={self:n,value:f,params:u[2]||null,field:n.columns[s].field,index:e,colIndex:s};f=p.formatters[u[1]].call(n,l,m)}else console.log('ERROR: TsUtils.formatters["'+u[1]+'"] does not exists.');typeof d=="function"&&(f=d(l,{self:n,index:e,colIndex:s,summary:!!t})),f?.text!=null&&(f=f.text),!(i.showEmpty!==!0&&(f==null||f==""))&&(i.maxLength!=null&&typeof f=="string"&&f.length>i.maxLength&&(f=f.substr(0,i.maxLength)+"..."),o+="<tr><td>"+c+"</td><td>"+((f===0?"0":f)||"")+"</td></tr>")}o+="</table>"}return be.show(p.extend({name:n.name+"-bubble",html:o,anchor:a.get(0),position:"top|bottom",class:"tsg-info-bubble",style:"",hideOn:["doc-click"]},i.options??{})).hide(()=>[n.last.bubbleEl=null])}function hi(n,e,s){let t=n.columns[s],i=n.records[e];if(!i||!t)return null;let o=i.TsUi?i.TsUi.editable:null;if(o===!1)return null;if((o==null||o===!0)&&(o=Object.keys(t.editable??{}).length>0?t.editable:null,typeof t.editable=="function")){let l=n.getCellValue(e,s,!1);o=t.editable.call(n,i,{self:n,value:l,index:e,colIndex:s})}return o}function pi(n,e,s,t,i){let o=n.columns[s],l=t!==!0?n.records[e]:n.summary[e],a=n.parseField(l,o.field),r="",c="",d="",u="",h;if(l?.TsUi?.changes?.[o.field]!=null&&(a=l.TsUi.changes[o.field]),o.render!=null&&e!==-1){let f=o.render,m;if(typeof f=="string"){let y=f.toLowerCase().replace("|",":").split(":"),x=p.formatters[y[0]??""];o.options&&o.options.autoFormat===!1&&(x=void 0),f=x,m=y[1]}if(typeof f=="function"&&l!=null){let y;try{y=f.call(n,l,{self:n,value:a,params:m,field:n.columns[s].field,index:e,colIndex:s,summary:!!t})}catch(x){throw new Error(`Render function for column "${o.field}" in grid "${n.name}": -- `+x.message)}y!=null&&typeof y=="object"&&typeof y!="function"?(y.id!=null&&y.text!=null?a=y.text:typeof y.html=="string"||typeof y.html=="number"?a=String(y.html??"").trim():(a="",console.log("ERROR: render function should return a primitive or an object of the following structure.",{html:"",attr:"",style:"",class:"",divAttr:""},"... but it returned:",y)),d=y.attr??"",c=y.style??"",r=y.class??"",u=y.divAttr??"",h=y.title):a=String(y||"").trim()}if(typeof f=="object"){let y=f[a];y!=null&&y!==""&&(a=y)}}return a==null&&(a=""),i?{value:a,attr:d,style:c,className:r,divAttr:u,title:h}:a}function mi(n){return'<div> <div class="tsg-footer-left"></div> <div class="tsg-footer-right"></div> <div class="tsg-footer-center"></div></div>'}function gi(n,e){let s=n,t=n.url?.get??n.url,i=E(n.box).find(`#grid_${n.name}_records`),o=E(n.box).find(`#grid_${n.name}_frecords`);if(e){let S=e.target.scrollTop,$=e.target.scrollLeft;n.last.vscroll.scrollTop=S,n.last.vscroll.scrollLeft=$;let H=E(n.box).find(`#grid_${n.name}_columns`)[0],Q=E(n.box).find(`#grid_${n.name}_summary`)[0];H&&(H.scrollLeft=$),Q&&(Q.scrollLeft=$),o[0]&&(o[0].scrollTop=S)}n.last.bubbleEl&&(be.hide(n.name+"-bubble"),n.last.bubbleEl=null);let l=null,a=null;if(n.disableCVS||n.columnGroups.length>0)l=0,a=n.columns.length-1;else{let S=i.prop("clientWidth"),$=0;for(let H=0;H<n.columns.length;H++){if(n.columns[H].frozen||n.columns[H].hidden)continue;let Q=parseInt(n.columns[H].sizeCalculated?n.columns[H].sizeCalculated:String(n.columns[H].size??0));$+Q+30>n.last.vscroll.scrollLeft&&l==null&&(l=H),$+Q-30>n.last.vscroll.scrollLeft+S&&a==null&&(a=H),$+=Q}a==null&&(a=n.columns.length-1)}if(l!=null&&(l<0&&(l=0),a<0&&(a=0),l==a&&(l>0?l--:a++),l!=n.last.vscroll.colIndStart||a!=n.last.vscroll.colIndEnd)){let S=E(n.box),$=Math.abs(l-n.last.vscroll.colIndStart),H=Math.abs(a-n.last.vscroll.colIndEnd);if($<5&&H<5){let Q=S.find(`.tsg-grid-columns #grid_${n.name}_column_start`),Y=S.find(".tsg-grid-columns .tsg-head-last"),ee=S.find(`#grid_${n.name}_records .tsg-grid-data-spacer`),Te=S.find(`#grid_${n.name}_records .tsg-grid-data-last`),xe=S.find(`#grid_${n.name}_summary .tsg-grid-data-spacer`),Be=S.find(`#grid_${n.name}_summary .tsg-grid-data-last`);if(l>n.last.vscroll.colIndStart)for(let q=n.last.vscroll.colIndStart;q<l;q++)S.find("#grid_"+n.name+"_columns #grid_"+n.name+"_column_"+q).remove(),S.find("#grid_"+n.name+'_records td[col="'+q+'"]').remove(),S.find("#grid_"+n.name+'_summary td[col="'+q+'"]').remove();if(a<n.last.vscroll.colIndEnd)for(let q=n.last.vscroll.colIndEnd;q>a;q--)S.find("#grid_"+n.name+"_columns #grid_"+n.name+"_column_"+q).remove(),S.find("#grid_"+n.name+'_records td[col="'+q+'"]').remove(),S.find("#grid_"+n.name+'_summary td[col="'+q+'"]').remove();if(l<n.last.vscroll.colIndStart)for(let q=(n.last.vscroll.colIndStart??0)-1;q>=l;q--)n.columns[q]&&(n.columns[q].frozen||n.columns[q].hidden)||(Q.after(n.getColumnCellHTML(q)),ee.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!1)),E(de).after(me)}),xe.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!0)),E(de).after(me)}));if(a>n.last.vscroll.colIndEnd)for(let q=(n.last.vscroll.colIndEnd??0)+1;q<=a;q++)n.columns[q]&&(n.columns[q].frozen||n.columns[q].hidden)||(Y.before(n.getColumnCellHTML(q)),Te.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!1)),E(de).before(me)}),Be.each(de=>{let pe=E(de).parent().attr("index")||-1,me=n.getCellHTML(parseInt(pe),q,!0);E(de).before(me)}));n.last.vscroll.colIndStart=l,n.last.vscroll.colIndEnd=a,n.resizeRecords()}else{n.last.vscroll.colIndStart=l,n.last.vscroll.colIndEnd=a;let Q=n.getColumnsHTML(),Y=n.getRecordsHTML(),ee=n.getSummaryHTML(),Te=S.find(`#grid_${n.name}_columns`),xe=S.find(`#grid_${n.name}_records`),Be=S.find(`#grid_${n.name}_frecords`),q=S.find(`#grid_${n.name}_summary`);Te.find("tbody").html(Q[1]),Be.html(Y[0]),xe.prepend(Y[1]),ee!=null&&q.html(ee[1]),setTimeout(()=>{xe.find(":scope > table").filter(":not(table:first-child)").remove(),q[0]&&(q[0].scrollLeft=n.last.vscroll.scrollLeft)},1),n.resizeRecords()}}let r=n.records.length;if(r>n.total&&n.total!==-1&&(r=n.total),n.searchData.length!=0&&!t&&(r=n.last.searchIds.length),r===0||i.length===0||i.prop("clientHeight")===0)return;r>n.vs_start?n.last.vscroll.show_extra=n.vs_extra:n.last.vscroll.show_extra=n.vs_start;let c=Math.round(i.prop("scrollTop")/n.recordHeight+1),d=c+(Math.round(i.prop("clientHeight")/n.recordHeight)-1);if(c>r&&(c=r),d>=r-1&&(d=r),E(n.box).find("#grid_"+n.name+"_footer .tsg-footer-right").html((n.show.statusRange?p.formatNumber(n.offset+c)+"-"+p.formatNumber(n.offset+d)+(n.total!=-1?" "+p.lang("of")+' <span class="tsg-total">'+p.formatNumber(n.total)+"</span>":""):"")+(t&&n.show.statusBuffered?" ("+p.lang("buffered")+' <span class="tsg-buffered">'+p.formatNumber(r)+"</span>"+(n.offset>0?', skip <span class="tsg-skip">'+p.formatNumber(n.offset):"")+"</span>)":"")),!t&&(!n.fixedBody||n.total!=-1&&n.total<=n.vs_start))return;let u=Math.floor(i.prop("scrollTop")/n.recordHeight)-n.last.vscroll.show_extra,h=u+Math.floor(i.prop("clientHeight")/n.recordHeight)+n.last.vscroll.show_extra*2+1;u<1&&(u=1),h>n.total&&n.total!=-1&&(h=n.total);let f=i.find("#grid_"+n.name+"_rec_top"),m=i.find("#grid_"+n.name+"_rec_bottom"),y=o.find("#grid_"+n.name+"_frec_top"),x=o.find("#grid_"+n.name+"_frec_bottom");String(f.next().prop("id")).indexOf("_expanded_row")!=-1&&(f.next().remove(),y.next().remove()),n.total>h&&String(m.prev().prop("id")).indexOf("_expanded_row")!=-1&&(m.prev().remove(),x.prev().remove());let b=parseInt(f.next().attr("line")),g=parseInt(m.prev().attr("line")),v,w,T,_,C;if(b<=u||b==1||n.last.vscroll.pull_refresh){if(h<=g+n.last.vscroll.show_extra-2&&h!=n.total)return;for(n.last.vscroll.pull_refresh=!1;w=o.find("#grid_"+n.name+"_frec_top").next(),T=i.find("#grid_"+n.name+"_rec_top").next(),T.attr("line")!="bottom";)if(parseInt(T.attr("line"))<u)w.remove(),T.remove();else break;v=i.find("#grid_"+n.name+"_rec_bottom").prev(),_=v.attr("line"),_=="top"&&(_=u);for(let S=parseInt(_)+1;S<=h;S++)n.records[S-1]&&(T=n.records[S-1].TsUi,T&&!Array.isArray(T.children)&&(T.expanded=!1),C=n.getRecordHTML(S-1,S),m.before(C[1]),x.before(C[0]));F(),setTimeout(()=>{n.refreshRanges()},0)}else{if(u>=b-n.last.vscroll.show_extra+2&&u>1)return;for(;w=o.find("#grid_"+n.name+"_frec_bottom").prev(),T=i.find("#grid_"+n.name+"_rec_bottom").prev(),T.attr("line")!="top";)if(parseInt(T.attr("line"))>h)w.remove(),T.remove();else break;v=i.find("#grid_"+n.name+"_rec_top").next(),_=v.attr("line"),_=="bottom"&&(_=h);for(let S=parseInt(_)-1;S>=u;S--)n.records[S-1]&&(T=n.records[S-1].TsUi,T&&!Array.isArray(T.children)&&(T.expanded=!1),C=n.getRecordHTML(S-1,S),f.after(C[1]),y.after(C[0]));F(),setTimeout(()=>{n.refreshRanges()},0)}let D=(u-1)*n.recordHeight,O=(r-h)*n.recordHeight;O<0&&(O=0),f.css("height",D+"px"),y.css("height",D+"px"),m.css("height",O+"px"),x.css("height",O+"px"),n.last.vscroll.recIndStart=u,n.last.vscroll.recIndEnd=h,Math.floor(i.prop("scrollTop")/n.recordHeight)+Math.floor(i.prop("clientHeight")/n.recordHeight)+10>r&&n.last.vscroll.pull_more!==!0&&(r<n.total-n.offset||n.total==-1&&n.last.fetch.hasMore)&&(n.autoLoad===!0&&(n.last.vscroll.pull_more=!0,n.last.fetch.offset=(n.last.fetch.offset??0)+n.limit,n.request("load")),E(n.box).find("#grid_"+n.name+"_rec_more, #grid_"+n.name+"_frec_more").show().eq(1).off(".load-more").on("click.load-more",function(){E(this).find("td").html('<div><div style="width: 20px; height: 20px;" class="tsg-spinner"></div></div>'),s.last.vscroll.pull_more=!0,s.last.fetch.offset=(s.last.fetch.offset??0)+s.limit,s.request("load")}).find("td").html(s.autoLoad?'<div><div style="width: 20px; height: 20px;" class="tsg-spinner"></div></div>':'<div style="padding-top: 15px">'+p.lang("Load ${count} more...",{count:s.limit})+"</div>"));function F(){s.markSearch&&(clearTimeout(s.last.marker_timer??void 0),s.last.marker_timer=setTimeout(()=>{let S=[];for(let $=0;$<s.searchData.length;$++){let H=s.searchData[$],Q=s.getSearch(H.field);if(!Q||Q.hidden)continue;let Y=s.getColumn(H.field,!0);S.push({field:H.field,search:H.value,col:Y})}S.length>0&&S.forEach($=>{let H=E(s.box).find('td[col="'+$.col+'"]:not(.tsg-head)');p.marker(H,$.search)})},50))}}var P=j,ut=class extends ne{columns;columnGroups;records;summary;searches;toolbar;ranges;contextMenu;searchMap;searchData;sortMap;sortData;savedSearches;defaultSearches;groupBy;total;recid;hierarchyColumn;last;header;url;limit;offset;postData;routeData;httpHeaders;show;stateId;hasFocus;autoLoad;fixedBody;recordHeight;lineNumberWidth;keyboard;selectType;liveSearch;multiSearch;multiSelect;multiSort;reorderColumns;reorderRows;showExtraOnSearch;markSearch;columnTooltip;disableCVS;nestedFields;vs_start;vs_extra;style;tabIndex;dataType;parser;advanceOnEdit;useLocalStorage;colTemplate;stateColProps;msgDelete;msgNotJSON;msgHTTPError;msgServerError;msgRefresh;msgNeedReload;msgEmpty;buttons;operators;defaultOperator;operatorsMap;onAdd;onEdit;onRequest;onLoad;onDelete;onSave;onSelect;onClick;onDblClick;onContextMenu;onContextMenuClick;onColumnClick;onColumnDblClick;onColumnContextMenu;onColumnResize;onColumnAutoResize;onSort;onSearch;onSearchOpen;onSearchClose;onChange;onRestore;onExpand;onCollapse;onError;onKeydown;onToolbar;onColumnOnOff;onCopy;onPaste;onSelectionExtend;onEditField;onRender;onRefresh;onReload;onResize;onDestroy;onStateSave;onStateRestore;onFocus;onBlur;onReorderRow;onSearchSave;onSearchRemove;onSearchSelect;onColumnSelect;onColumnDragStart;onColumnDragEnd;onResizerDblClick;onMouseEnter;onMouseLeave;constructor(e){if(super(e.name),this.name="",this.box=null,this.columns=[],this.columnGroups=[],this.records=[],this.summary=[],this.searches=[],this.toolbar={},this.ranges=[],this.contextMenu=[],this.searchMap={},this.searchData=[],this.sortMap={},this.sortData=[],this.savedSearches=[],this.defaultSearches=[],this.groupBy=null,this.total=0,this.recid=null,this.hierarchyColumn=0,this.last={field:"",label:"",logic:"AND",search:"",searchIds:[],selection:{indexes:[],columns:{}},saved_sel:null,multi:!1,fetch:{action:"",offset:null,start:0,response:0,options:null,controller:null,loaded:!1,hasMore:!1},vscroll:{scrollTop:0,scrollLeft:0,recIndStart:null,recIndEnd:null,colIndStart:0,colIndEnd:0,pull_more:!1,pull_refresh:!0,show_extra:0},sel_ind:null,sel_col:null,sel_type:null,sel_recid:null,idCache:{},move:null,cancelClick:null,inEditMode:!1,_edit:null,kbd_timer:null,marker_timer:null,click_time:null,click_recid:null,bubbleEl:null,colResizing:!1,tmp:null,copy_event:null,userSelect:"",columnDrag:!1,state:null,toolbar_height:0,groupBy_links:{}},this.header="",this.url="",this.limit=100,this.offset=0,this.postData={},this.routeData={},this.httpHeaders={},this.show={header:!1,toolbar:!1,footer:!1,columnMenu:!0,columnHeaders:!0,lineNumbers:!1,expandColumn:!1,selectColumn:!1,emptyRecords:!0,toolbarReload:!0,toolbarColumns:!1,toolbarSearch:!0,toolbarAdd:!1,toolbarEdit:!1,toolbarDelete:!1,toolbarSave:!1,searchAll:!0,searchLogic:!0,searchHiddenMsg:!1,searchSave:!0,statusRange:!0,statusBuffered:!1,statusRecordID:!0,statusSelection:!0,statusResponse:!0,statusSort:!1,statusSearch:!1,recordTitles:!1,selectionBorder:!0,selectionResizer:!0,skipRecords:!0,saveRestoreState:!0},this.stateId=null,this.hasFocus=!1,this.autoLoad=!0,this.fixedBody=!0,this.recordHeight=p.settings?.recordHeight??32,this.lineNumberWidth=34,this.keyboard=!0,this.selectType="row",this.liveSearch=!1,this.multiSearch=!0,this.multiSelect=!0,this.multiSort=!0,this.reorderColumns=!1,this.reorderRows=!1,this.showExtraOnSearch=0,this.markSearch=!0,this.columnTooltip="top|bottom",this.disableCVS=!1,this.nestedFields=!0,this.vs_start=150,this.vs_extra=5,this.style="",this.tabIndex=null,this.dataType=null,this.parser=null,this.advanceOnEdit=!0,this.useLocalStorage=!0,this.colTemplate={text:"",field:"",size:null,min:20,max:null,gridMinWidth:null,sizeCorrected:null,sizeCalculated:null,sizeOriginal:null,sizeType:null,hidden:!1,sortable:!1,sortMode:null,searchable:!1,resizable:!0,hideable:!0,autoResize:null,attr:"",style:"",render:null,title:null,tooltip:null,editable:{},frozen:!1,info:null,clipboardCopy:!1},this.stateColProps={text:!1,field:!0,size:!0,min:!1,max:!1,gridMinWidth:!1,sizeCorrected:!1,sizeCalculated:!0,sizeOriginal:!0,sizeType:!0,hidden:!0,sortable:!1,sortMode:!0,searchable:!1,resizable:!1,hideable:!1,autoResize:!1,attr:!1,style:!1,render:!1,title:!1,tooltip:!1,editable:!1,frozen:!0,info:!1,clipboardCopy:!1},this.msgDelete="Are you sure you want to delete ${count} ${records}?",this.msgNotJSON="Returned data is not in valid JSON format.",this.msgHTTPError="HTTP error. See console for more details.",this.msgServerError="Server error",this.msgRefresh="Refreshing...",this.msgNeedReload="Your remote data source record count has changed, reloading from the first record.",this.msgEmpty="",this.buttons={reload:{type:"button",id:"tsg-reload",icon:"tsg-icon-reload",tooltip:p.lang("Reload data in the list")},columns:{type:"menu-check",id:"tsg-column-on-off",icon:"tsg-icon-columns",tooltip:p.lang("Show/hide columns"),overlay:{align:"none"}},search:{type:"html",id:"tsg-search",html:'<div class="tsg-icon tsg-icon-search tsg-search-down tsg-action" data-click="searchShowFields"></div>'},add:{type:"button",id:"tsg-add",text:"Add New",tooltip:p.lang("Add new record"),icon:"tsg-icon-plus"},edit:{type:"button",id:"tsg-edit",text:"Edit",tooltip:p.lang("Edit selected record"),icon:"tsg-icon-pencil",batch:1,disabled:!0},delete:{type:"button",id:"tsg-delete",text:"Delete",tooltip:p.lang("Delete selected records"),icon:"tsg-icon-cross",batch:!0,disabled:!0},save:{type:"button",id:"tsg-save",text:"Save",tooltip:p.lang("Save changed records"),icon:"tsg-icon-check"}},this.operators={text:["is","begins","contains","ends","is not"],number:["=","between",">","<",">=","<=","!="],date:["is",{oper:"less",text:"before"},{oper:"more",text:"since"},"between"],list:["is"],hex:["is","between"],color:["is","begins","contains","ends"],enum:["in","not in"]},this.defaultOperator={text:"begins",number:"=",date:"is",list:"is",enum:"in",hex:"begins",color:"begins"},this.operatorsMap={text:"text",int:"number",float:"number",money:"number",currency:"number",percent:"number",hex:"hex",alphanumeric:"text",color:"color",date:"date",time:"date",datetime:"date",list:"list",combo:"text",enum:"enum",file:"enum",select:"list",radio:"list",checkbox:"list",toggle:"list"},this.onAdd=null,this.onEdit=null,this.onRequest=null,this.onLoad=null,this.onDelete=null,this.onSave=null,this.onSelect=null,this.onClick=null,this.onDblClick=null,this.onContextMenu=null,this.onContextMenuClick=null,this.onColumnClick=null,this.onColumnDblClick=null,this.onColumnContextMenu=null,this.onColumnResize=null,this.onColumnAutoResize=null,this.onSort=null,this.onSearch=null,this.onSearchOpen=null,this.onSearchClose=null,this.onChange=null,this.onRestore=null,this.onExpand=null,this.onCollapse=null,this.onError=null,this.onKeydown=null,this.onToolbar=null,this.onColumnOnOff=null,this.onCopy=null,this.onPaste=null,this.onSelectionExtend=null,this.onEditField=null,this.onRender=null,this.onRefresh=null,this.onReload=null,this.onResize=null,this.onDestroy=null,this.onStateSave=null,this.onStateRestore=null,this.onFocus=null,this.onBlur=null,this.onReorderRow=null,this.onSearchSave=null,this.onSearchRemove=null,this.onSearchSelect=null,this.onColumnSelect=null,this.onColumnDragStart=null,this.onColumnDragEnd=null,this.onResizerDblClick=null,this.onMouseEnter=null,this.onMouseLeave=null,p.extend(this,e),Array.isArray(this.records)){let t=[];this.records.forEach((i,o)=>{this.recid!=null&&i[this.recid]!=null&&(i.recid=i[this.recid]),i.recid==null&&console.log("ERROR: Cannot add records without recid. (obj: "+this.name+")"),i.TsUi?.summary===!0&&(this.summary.push(i),t.push(o))}),t.sort();for(let i=t.length-1;i>=0;i--)this.records.splice(t[i],1);this.processGroupBy()}Array.isArray(this.columns)&&this.columns.forEach((t,i)=>{t=p.extend({},this.colTemplate,t),this.columns[i]=t;let o=t.searchable;if(!(o==null||o===!1||this.getSearch(t.field)!=null))if(p.isPlainObject(o))this.addSearch(p.extend({field:t.field,label:t.text,type:"text"},o));else{let l=t.searchable,a="";t.searchable===!0&&(l="text",a='size="20"'),this.addSearch({field:t.field,label:t.text,type:l,attr:a})}}),Array.isArray(this.defaultSearches)&&this.defaultSearches.forEach((t,i)=>{t.id="default-"+i,t.icon??="tsg-icon-search"});let s=this.cache("searches");Array.isArray(s)&&s.forEach(t=>{this.savedSearches.push({id:t.id??"none",text:t.text??"none",icon:"tsg-icon-search",remove:!0,logic:t.logic??"AND",data:t.data??[]})}),this.initToolbar(),typeof this.box=="string"&&(this.box=P(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){return gs(this,e,s)}find(e,s,t){return ys(this,e,s,t)}set(e,s,t){return bs(this,e,s,t)}replace(e,s,t){return xs(this,e,s,t)}get(e,s){return vs(this,e,s)}getFirst(e){if(this.records.length==0)return null;let s=this.records[0]??null,t=this.last.searchIds;return this.searchData.length>0&&(Array.isArray(t)&&t.length>0?s=this.records[t[e||0]]??null:s=null),s}remove(...e){return Ts(this,...e)}processGroupBy(){return ws(this)}addColumn(e,s){return qt(this,e,s)}removeColumn(...e){return Wt(this,...e)}getColumn(e,s){return Yt(this,e,s)}updateColumn(e,s){return Xt(this,e,s)}toggleColumn(...e){return Kt(this,...e)}showColumn(...e){return Jt(this,...e)}hideColumn(...e){return Zt(this,...e)}addSearch(e,s){return Ws(this,e,s)}removeSearch(...e){return Ys(this,...e)}getSearch(e,s){return Xs(this,e,s)}toggleSearch(...e){return Ks(this,...e)}showSearch(...e){return Js(this,...e)}hideSearch(...e){return Zs(this,...e)}getSearchData(e){return en(this,e)}localSort(e,s){return _s(this,e,s)}localSearch(e){return ks(this,e)}getRangeData(e,s){return Cs(this,e,s)}addRange(e){return Es(this,e)}removeRange(...e){return Ss(this,...e)}refreshRanges(){return Rs(this)}select(...e){return Ls(this,...e)}unselect(...e){return As(this,...e)}compareSelection(e){return Fs(this,e)}selectAll(){return Hs(this)}selectNone(e){return Ns(this,e)}updateToolbar(e,s){return Ps(this,e,s)}getSelectionRows(e){return js(this,e)}getSelectionCells(){return Us(this)}getSelection(e){return Gs(this,e)}search(e,s){return tn(this,e,s)}searchOpen(e={}){return sn(this,e)}searchClose(){return nn(this)}searchFieldTooltip(e,s,t){return on(this,e,s,t)}searchSuggest(e,s,t){return ln(this,e,s,t)}searchSave(){return an(this)}cache(e){return rn(this,e)}cacheSave(e,s){return cn(this,e,s)}searchReset(e){return un(this,e)}searchShowFields(e){return dn(this,e)}searchInitInput(e,s){return fn(this,e,s)}clear(e){return $s(this,e)}reset(e){return Ms(this,e)}skip(e,s){this.url?.get??this.url?(this.offset=parseInt(e),this.offset>this.total&&(this.offset=this.total-this.limit),(this.offset<0||!p.isInt(this.offset))&&(this.offset=0),this.clear(!0),this.reload(s)):console.log("ERROR: grid.skip() can only be called when you have remote data source.")}load(e,s){return Ds(this,e,s)}reload(e){return Is(this,e)}request(e,s,t,i){return Os(this,e,s,t,i)}requestComplete(e,s,t,i,o){let l=e.error??!1;e.error==null&&e.status==="error"&&(l=!0),this.last.fetch.response=(Date.now()-this.last.fetch.start)/1e3,setTimeout(()=>{this.show.statusResponse&&this.status(p.lang("Server Response ${count} seconds",{count:this.last.fetch.response}))},10),this.last.vscroll.pull_more=!1,this.last.vscroll.pull_refresh=!0;let a="load";this.last.fetch.action=="save"&&(a="save"),this.last.fetch.action=="delete"&&(a="delete");let r=this.trigger(a,{target:this.name,error:l,data:e,lastFetch:this.last.fetch});if(r.isCancelled===!0){o();return}if(l)this.error(p.lang(e.message||this.msgServerError)),o(e);else if(typeof this.parser=="function"?(e=this.parser(e),typeof e!="object"&&console.log("ERROR: Your parser did not return proper object")):e==null?e={error:!0,message:p.lang(this.msgNotJSON)}:Array.isArray(e)&&(e={error:l,records:e,total:e.length}),s=="load"){if(e.total==null&&(e.total=-1),e.records==null&&(e.records=[],this.last.groupBy_links={}),e.records.length==this.limit){let d=this.records.length+e.records.length;this.last.fetch.hasMore=d!=this.total}else this.last.fetch.hasMore=!1,this.total=this.offset+(this.last.fetch.offset??0)+e.records.length;if(this.last.fetch.hasMore||P(this.box).find("#grid_"+this.name+"_rec_more, #grid_"+this.name+"_frec_more").hide(),this.last.fetch.offset===0)this.records=[],this.summary=[],this.last.groupBy_links={};else if(e.total!=-1&&parseInt(String(e.total))!=this.total){let d=this;return this.message(p.lang(this.msgNeedReload)).ok(()=>{delete d.last.fetch.offset,d.reload()}),new Promise(u=>{u()})}p.isInt(e.total)&&(this.total=parseInt(e.total)),e.records&&e.records.forEach(d=>{this.recid&&(d.recid=this.parseField(d,this.recid)),d.recid==null&&(d.recid="recid-"+this.records.length),d.TsUi?.summary===!0?this.summary.push(d):this.records.push(d)}),e.groupBy!=null&&(this.groupBy=e.groupBy),this.processGroupBy(),e.summary&&(this.summary=[],e.summary.forEach(d=>{this.recid&&(d.recid=this.parseField(d,this.recid)),d.recid==null&&(d.recid="recid-"+this.summary.length),this.summary.push(d)}))}else if(s=="delete")return this.reset(),this.reload();(this.url?.get??this.url)||(this.localSort(),this.localSearch()),this.total=parseInt(String(this.total)),this.last.fetch.offset===0?this.refresh():(this.scroll(),this.resize()),typeof t=="function"&&t(e),i(e),r.finish(),this.last.fetch.loaded=!0}error(e){let s=this.trigger("error",{target:this.name,message:e});s.isCancelled!==!0&&(this.message(e),s.finish())}getChanges(e){let s=[];typeof e>"u"&&(e=this.records);for(let t=0;t<e.length;t++){let i=e[t];if(i?.TsUi){if(i.TsUi.changes!=null){let o={};o[this.recid||"recid"]=i.recid,s.push(p.extend(o,i.TsUi.changes))}i.TsUi.expanded!==!0&&i.TsUi.children&&i.TsUi.children.length&&s.push(...this.getChanges(i.TsUi.children))}}return s}mergeChanges(){let e=this.getChanges();for(let t=0;t<e.length;t++){let i=e[t],o=this.get(i[this.recid||"recid"]);if(o!=null){for(let l in i)if(!(l=="recid"||this.recid&&l==this.recid)){typeof i[l]=="object"&&(i[l]=i[l].text);try{s(o,l,i[l])}catch(a){console.log("ERROR: Cannot merge. ",a?.message||"",a)}o.TsUi&&delete o.TsUi.changes}}}this.refresh();function s(t,i,o){let l=i.split(".");l.length==1?t[i]=o:(t=t[l[0]],l.shift(),s(t,l.join("."),o))}}save(e){return zs(this,e)}editField(e,s,t,i){return Bs(this,e,s,t,i)}editChange(e,s,t,i){return Qs(this,e,s,t,i)}editDone(e,s,t){return Vs(this,e,s,t)}delete(e){let s=this.trigger("delete",{target:this.name,force:e});if(e&&this.message(),s.isCancelled===!0)return;e=s.detail.force;let t=this.getSelection();if(t.length===0)return;if(this.msgDelete!=""&&!e){this.confirm({text:p.lang(this.msgDelete,{count:t.length,records:p.lang(t.length==1?"record":"records")}),width:380,height:170,yes_text:p.lang("Delete"),yes_class:"tsg-btn-red",no_text:p.lang("Cancel")}).yes(o=>{o.detail.self.close(),this.delete(!0)}).no(o=>{o.detail.self.close()});return}if(this.url?.remove??this.url)this.request("delete");else if(typeof t[0]!="object")this.selectNone(),this.remove(...t);else{let o=t;for(let l=0;l<o.length;l++){let a=o[l],r=this.columns[a.column].field,c=this.get(a.recid,!0),d=c!=null?this.records[c]:null;c!=null&&r!="recid"&&d!=null&&(this.records[c][r]="",d.TsUi?.changes&&delete d.TsUi.changes[r])}this.update()}s.finish()}click(e,s){return xn(this,e,s)}columnClick(e,s){return vn(this,e,s)}columnDblClick(e,s){return Tn(this,e,s)}columnContextMenu(e,s){return wn(this,e,s)}columnAutoSize(e){return _n(this,e)}columnAutoSizeAll(){return kn(this)}focus(e){return Cn(this,e)}blur(e){return En(this,e)}keydown(e){return Sn(this,e)}scrollIntoView(e,s,t,i){return Rn(this,e,s,t,i)}scrollToColumn(e){return $n(this,e)}dblClick(e,s){return Mn(this,e,s)}showContextMenu(e,s){return Dn(this,e,s)}contextMenuClick(e,s,t){return In(this,e,s,t)}toggle(e,s){return On(this,e,s)}expand(e,s){return zn(this,e,s)}collapse(e,s){return Ln(this,e,s)}updateExpanded(){return An(this)}sort(e,s,t){return Fn(this,e,s,t)}copy(e,s){return Hn(this,e,s)}getCellCopy(e,s){return Nn(this,e,s)}paste(e,s){return Pn(this,e,s)}resize(){return jn(this)}update({cells:e,fullCellRefresh:s,ignoreColumns:t}={}){return Un(this,{cells:e,fullCellRefresh:s,ignoreColumns:t})}refreshCell(e,s){return Gn(this,e,s)}refreshRow(e,s=null){return Bn(this,e,s)}refresh(){return Qn(this)}refreshSearch(){return Vn(this)}refreshBody(){return qn(this)}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=P(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;let o=this.url?.get??this.url;this.reset(!0),P(this.box).attr("name",this.name).addClass("tsg-reset tsg-grid tsg-inactive").html('<div class="tsg-grid-box"> <div id="grid_'+this.name+'_header" class="tsg-grid-header"></div> <div id="grid_'+this.name+'_toolbar" class="tsg-grid-toolbar"></div> <div id="grid_'+this.name+'_body" class="tsg-grid-body"></div> <div id="grid_'+this.name+'_fsummary" class="tsg-grid-body tsg-grid-summary"></div> <div id="grid_'+this.name+'_summary" class="tsg-grid-body tsg-grid-summary"></div> <div id="grid_'+this.name+'_footer" class="tsg-grid-footer"></div> <textarea id="grid_'+this.name+'_focus" class="tsg-grid-focus-input" '+(this.tabIndex?'tabindex="'+this.tabIndex+'"':"")+(p.isMobile?"readonly":"")+"></textarea></div>"),this.selectType!="row"&&P(this.box).addClass("tsg-ss"),P(this.box).length>0&&(P(this.box)[0].style.cssText+=this.style);let l=P(this.box).find(`#grid_${this.name}_toolbar`);if(this.toolbar!=null&&this.toolbar.render(l[0]),this.last.toolbar_height=l.prop("offsetHeight"),this.last.field&&this.last.field!="all"){let f=this.searchData;setTimeout(()=>{this.searchInitInput(this.last.field,f.length==1?f[0].value:null)},1)}P(this.box).find(`#grid_${this.name}_footer`).html(this.getFooterHTML()),this.last.state||(this.last.state=this.stateSave(!0)),this.stateRestore(),o&&(this.clear(),this.refresh());let a=!1;for(let f=0;f<this.searches.length;f++)if(this.searches[f].hidden){a=!0;break}a?(this.searchReset(!1),o||setTimeout(()=>{this.searchReset()},1)):this.reload(),P(this.box).find(`#grid_${this.name}_focus`).on("focus",f=>{clearTimeout(this.last.kbd_timer??void 0),this.hasFocus||this.focus()}).on("blur",f=>{clearTimeout(this.last.kbd_timer??void 0),this.last.kbd_timer=setTimeout(()=>{this.hasFocus&&this.blur()},100)}).on("paste",f=>{let m=f.clipboardData?f.clipboardData:null;if(m){let y=m.items;y.length==2&&(y.length==2&&y[1].kind=="file"&&(y=[y[1]]),y.length==2&&y[0].type=="text/plain"&&y[1].type=="text/html"&&(y=[y[1]]));let x=[];for(let b in y){let g=y[b];if(g.kind==="file"){let v=g.getAsFile();x.push({kind:"file",data:v})}else if(g.kind==="string"&&(g.type==="text/plain"||g.type==="text/html")){f.preventDefault();let v=m.getData("text/plain");v.indexOf("\r")!=-1&&v.indexOf(`
531
+ </div>`;n.toolbar.items.push({id:"tsg-search",type:"html",html:s,onRefresh:async t=>{await t.complete;let i=E(n.box).find(`#grid_${n.name}_search_all`);p.bindEvents(E(n.box).find(`#grid_${n.name}_search_all, .tsg-action`),n);let o=p.debounce(l=>{let a=l.target.value;n.liveSearch&&n.last.liveText!=a&&(n.last.liveText=a,n.search(n.last.field,a))},250);i.on("blur",()=>{n.last.liveText=""}).on("keyup",l=>{switch(l.keyCode){case 40:{n.searchSuggest(!0);break}case 38:{n.searchSuggest(!0,!0);break}case 13:{Ii.hide(n.name+"-search-suggest"),n.search(n.last.field,l.target.value);break}default:{o(l);break}}})}})}if(Array.isArray(e)){let s=e.map(t=>t.id);n.show.toolbarAdd&&!s.includes(n.buttons.add.id)&&n.toolbar.items.push(p.extend({},n.buttons.add)),n.show.toolbarEdit&&!s.includes(n.buttons.edit.id)&&n.toolbar.items.push(p.extend({},n.buttons.edit)),n.show.toolbarDelete&&!s.includes(n.buttons.delete.id)&&n.toolbar.items.push(p.extend({},n.buttons.delete)),n.show.toolbarSave&&!s.includes(n.buttons.save.id)&&((n.show.toolbarAdd||n.show.toolbarDelete||n.show.toolbarEdit)&&n.toolbar.items.push({type:"break",id:"tsg-break2"}),n.toolbar.items.push(p.extend({},n.buttons.save))),e=e.map(t=>n.buttons[t.name]?p.extend({},n.buttons[t.name],t):t)}n.toolbar.items.push(...e),n.toolbar.on("click",s=>{let t=n.trigger("toolbar",{target:s.target,originalEvent:s});if(t.isCancelled===!0)return;let i;switch(s.detail.item.id){case"tsg-reload":if(i=n.trigger("reload",{target:n.name}),i.isCancelled===!0)return!1;n.reload(),i.finish();break;case"tsg-column-on-off":if(s.detail.subItem){let o=s.detail.subItem.id;["tsg-stateSave","tsg-stateReset"].includes(o)?n[o.substring(5)]():o=="tsg-skip"||n.columnOnOff(s,s.detail.subItem.id)}else n.initColumnOnOff(),setTimeout(()=>{E(`#w2overlay-${n.name}_toolbar-drop .tsg-grid-skip`).off(".tsg-grid").on("click.tsg-grid",o=>{o.stopPropagation()}).on("keypress",o=>{o.keyCode==13&&(n.skip(o.target.value),n.toolbar.click("tsg-column-on-off"))})},100);break;case"tsg-add":if(i=n.trigger("add",{target:n.name,recid:null}),i.isCancelled===!0)return!1;i.finish();break;case"tsg-edit":{let o=n.getSelection(),l=null;if(o.length==1&&(l=o[0]),i=n.trigger("edit",{target:n.name,recid:l}),i.isCancelled===!0)return!1;i.finish();break}case"tsg-delete":n.delete();break;case"tsg-save":n.save();break}t.finish()}),n.toolbar.on("refresh",s=>{if(s.target=="tsg-search"){let t=n.searchData;setTimeout(()=>{n.searchInitInput(n.last.field,t.length==1?t[0].value:null)},1)}})}function Zn(n){let e=n;E(n.box).find(".tsg-resizer").off(".grid-col-resize").on("click.grid-col-resize",function(s){s.stopPropagation(),s.preventDefault()}).on("mousedown.grid-col-resize",function(s){let t=s;if(!t)return;e.last.colResizing=!0,e.last.tmp={x:t.screenX,y:t.screenY,gx:t.screenX,gy:t.screenY,col:parseInt(E(this).attr("name"))},e.last.tmp.tds=E(e.box).find("#grid_"+e.name+'_body table tr:first-child td[col="'+e.last.tmp.col+'"]'),t.stopPropagation(),t.preventDefault();for(let r=0;r<e.columns.length;r++)e.columns[r].hidden||(e.columns[r].sizeOriginal==null&&(e.columns[r].sizeOriginal=e.columns[r].size??""),e.columns[r].size=e.columns[r].sizeCalculated??"");let i=e.trigger("columnResize",{target:e.name,resizeBy:0,originalEvent:t,column:e.last.tmp.col,field:e.columns[e.last.tmp.col].field}),o,l=function(r){if(e.last.colResizing!=!0)return;r||(r=window.event);let c=e.trigger("columnResizeMove",p.extend(i.detail,{resizeBy:r.screenX-e.last.tmp.gx,originalEvent:r}));if(c.isCancelled===!0)return;e.last.tmp.x=r.screenX-e.last.tmp.x,e.last.tmp.y=r.screenY-e.last.tmp.y;let d=parseInt(String(e.columns[e.last.tmp.col].size??0))+e.last.tmp.x+"px";e.columns[e.last.tmp.col].size=d,o&&clearTimeout(o),o=setTimeout(()=>{e.resizeRecords(),e.scroll()},100),e.last.tmp.tds.css({width:d}),e.last.tmp.x=r.screenX,e.last.tmp.y=r.screenY,c.finish()},a=function(r){E(document).off(".grid-col-resize"),e.resizeRecords(),e.scroll(),i.finish({originalEvent:r}),setTimeout(()=>{e.last.colResizing=!1},1)};E(document).off(".grid-col-resize").on("mousemove.grid-col-resize",l).on("mouseup.grid-col-resize",a)}).on("dblclick.grid-col-resize",function(s){let t=parseInt(E(this).attr("name"));e.columnAutoSize(t),s.stopPropagation(),s.preventDefault()}).each(s=>{let t=E(s).get(0).parentNode;E(s).css({height:t.clientHeight+"px","margin-left":t.clientWidth-3+"px"})})}function ei(n){let e=E(n.box).find(`#grid_${n.name}_header`),s=E(n.box).find(`#grid_${n.name}_toolbar`),t=E(n.box).find(`#grid_${n.name}_fsummary`),i=E(n.box).find(`#grid_${n.name}_summary`),o=E(n.box).find(`#grid_${n.name}_footer`),l=E(n.box).find(`#grid_${n.name}_body`);n.show.header&&e.css({top:"0px",left:"0px",right:"0px"}),n.show.toolbar&&s.css({top:0+(n.show.header?p.getSize(e,"height"):0)+"px",left:"0px",right:"0px"}),n.summary.length>0&&(t.css({bottom:0+(n.show.footer?p.getSize(o,"height"):0)+"px"}),i.css({bottom:0+(n.show.footer?p.getSize(o,"height"):0)+"px",right:"0px"})),n.show.footer&&o.css({bottom:"0px",left:"0px",right:"0px"}),l.css({top:0+(n.show.header?p.getSize(e,"height"):0)+(n.show.toolbar?p.getSize(s,"height"):0)+"px",bottom:0+(n.show.footer?p.getSize(o,"height"):0)+(n.summary.length>0?p.getSize(i,"height"):0)+"px",left:"0px",right:"0px"})}function ti(n){let e=n;E(n.box).find(".tsg-empty-record").remove();let s=E(n.box),t=E(n.box).find(":scope > div.tsg-grid-box"),i=E(n.box).find(`#grid_${n.name}_header`),o=E(n.box).find(`#grid_${n.name}_toolbar`),l=E(n.box).find(`#grid_${n.name}_summary`),a=E(n.box).find(`#grid_${n.name}_fsummary`),r=E(n.box).find(`#grid_${n.name}_footer`),c=E(n.box).find(`#grid_${n.name}_body`),d=E(n.box).find(`#grid_${n.name}_columns`),u=E(n.box).find(`#grid_${n.name}_fcolumns`),h=E(n.box).find(`#grid_${n.name}_records`),f=E(n.box).find(`#grid_${n.name}_frecords`),m=E(n.box).find(`#grid_${n.name}_scroll1`),y=String(n.total).length*8+10;y<34&&(y=34),n.lineNumberWidth!=null&&(y=n.lineNumberWidth);let x=!1,b=!1,g=0;for(let R=0;R<n.columns.length;R++){if(n.columns[R].frozen||n.columns[R].hidden)continue;let F=parseInt(n.columns[R].sizeCalculated?n.columns[R].sizeCalculated:String(n.columns[R].size??0));g+=F}if(h[0]?.clientWidth<g&&(x=!0),c[0]?.clientHeight-(d[0]?.clientHeight??0)<(E(h).find(":scope > table")[0]?.clientHeight??0)+(x?p.scrollBarSize():0)&&(b=!0),n.fixedBody){let R=t[0]?.clientHeight-(n.show.header?p.getSize(i,"height"):0)-(n.show.toolbar?p.getSize(o,"height"):0)-(l.css("display")!="none"?p.getSize(l,"height"):0)-(n.show.footer?p.getSize(r,"height"):0);c.css("height",R+"px")}else{let R=p.getSize(d,"height")+p.getSize(E(n.box).find("#grid_"+n.name+"_records table"),"height")+(x?p.scrollBarSize():0),F=R+(n.show.header?p.getSize(i,"height"):0)+(n.show.toolbar?p.getSize(o,"height"):0)+(l.css("display")!="none"?p.getSize(l,"height"):0)+(n.show.footer?p.getSize(r,"height"):0);t.css("height",F+"px"),c.css("height",R+"px"),s.css("height",p.getSize(t,"height")+"px")}let v=n.records.length,w=n.url?.get??n.url;if(n.searchData.length!=0&&!w&&(v=n.last.searchIds.length),n.fixedBody||(b=!1),x||b?(d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").css("width",p.scrollBarSize()+"px").show(),h.css({top:(n.columnGroups.length>0&&n.show.columns?1:0)+p.getSize(d,"height")+"px","-webkit-overflow-scrolling":"touch","overflow-x":x?"auto":"hidden","overflow-y":b?"auto":"hidden"})):(d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").hide(),h.css({top:(n.columnGroups.length>0&&n.show.columns?1:0)+p.getSize(d,"height")+"px",overflow:"hidden"}),h.length>0&&(n.last.vscroll.scrollTop=0,n.last.vscroll.scrollLeft=0)),x?(f.css("margin-bottom",p.scrollBarSize()+"px"),m.show()):(f.css("margin-bottom",0),m.hide()),f.css({overflow:"hidden",top:h.css("top")}),n.show.emptyRecords&&!b){let R=Math.floor((h[0]?.clientHeight??0)/n.recordHeight)-1,F=0;if(h[0]&&(F=h[0].scrollHeight-R*n.recordHeight),F>=n.recordHeight&&(F-=n.recordHeight,R++),n.fixedBody){for(let S=v;S<R;S++)T(S,n.recordHeight,n);T(R,F,n)}}function T(R,F,S){let $="",H="",V="";$+='<tr class="'+(R%2?"tsg-even":"tsg-odd")+' tsg-empty-record" recid="-none-" style="height: '+F+'px">',H+='<tr class="'+(R%2?"tsg-even":"tsg-odd")+' tsg-empty-record" recid="-none-" style="height: '+F+'px">',S.show.lineNumbers&&($+='<td class="tsg-col-number"></td>'),S.show.selectColumn&&($+='<td class="tsg-grid-data tsg-col-select"></td>'),S.show.expandColumn&&($+='<td class="tsg-grid-data tsg-col-expand"></td>'),H+='<td class="tsg-grid-data-spacer" col="start" style="border-right: 0"></td>',S.reorderRows&&(H+='<td class="tsg-grid-data tsg-col-order" col="order"></td>');for(let Y=0;Y<S.columns.length;Y++){let ee=S.columns[Y];(ee.hidden||Y<S.last.vscroll.colIndStart||Y>S.last.vscroll.colIndEnd)&&!ee.frozen||(V='<td class="tsg-grid-data" '+(ee.attr!=null?ee.attr:"")+' col="'+Y+'"></td>',ee.frozen?$+=V:H+=V)}$+='<td class="tsg-grid-data-last"></td> </tr>',H+='<td class="tsg-grid-data-last" col="end"></td> </tr>',E(S.box).find("#grid_"+S.name+"_frecords > table").append($),E(S.box).find("#grid_"+S.name+"_records > table").append(H)}let _,C;if(c.length>0){let R=parseInt(c[0].clientWidth)-(b?p.scrollBarSize():0)-(n.show.lineNumbers?y:0)-(n.reorderRows?26:0)-(n.show.selectColumn?26:0)-(n.show.expandColumn?26:0)-1;_=R,C=0;let F=!1;for(let S=0;S<n.columns.length;S++){let $=n.columns[S];($.gridMinWidth??0)>0&&(($.gridMinWidth??0)>_&&$.hidden!==!0&&($.hidden=!0,F=!0),($.gridMinWidth??0)<_&&$.hidden===!0&&($.hidden=!1,F=!0))}if(F===!0){n.refresh();return}for(let S=0;S<n.columns.length;S++){let $=n.columns[S];if($.hidden)continue;let H=String($.size??0);H.substr(H.length-2).toLowerCase()=="px"?(R-=parseFloat(H),$.sizeCalculated=H,$.sizeType="px"):(C+=parseFloat(H),$.sizeType="%",delete $.sizeCorrected)}if(C!=100&&C>0)for(let S=0;S<n.columns.length;S++){let $=n.columns[S];$.hidden||$.sizeType=="%"&&($.sizeCorrected=Math.round(parseFloat(String($.size??0))*100*100/C)/100+"%")}for(let S=0;S<n.columns.length;S++){let $=n.columns[S];$.hidden||$.sizeType=="%"&&($.sizeCorrected!=null?$.sizeCalculated=Math.floor(R*parseFloat(String($.sizeCorrected))/100)-1+"px":$.sizeCalculated=Math.floor(R*parseFloat(String($.size??0))/100)-1+"px")}}let D=0;for(let R=0;R<n.columns.length;R++){let F=n.columns[R];F.hidden||(F.min==null&&(F.min=20),parseInt(F.sizeCalculated??"0")<F.min&&(F.sizeCalculated=F.min+"px"),F.max!=null&&parseInt(F.sizeCalculated??"0")>F.max&&(F.sizeCalculated=F.max+"px"),D+=parseInt(F.sizeCalculated??"0"))}let O=parseInt(_)-D;if(O>0&&C>0){let R=0;for(;;){let F=n.columns[R];if(F==null){R=0;continue}if(F.hidden||F.sizeType=="px"){R++;continue}if(F.sizeCalculated=parseInt(F.sizeCalculated??"0")+1+"px",O--,O===0)break;R++}}else O>0&&d.find(":scope > table > tbody > tr:nth-child(1) td.tsg-head-last").css("width",p.scrollBarSize()+"px").show();let I=1;n.show.lineNumbers&&(I+=y),n.show.selectColumn&&(I+=26),n.show.expandColumn&&(I+=26);for(let R=0;R<n.columns.length;R++)n.columns[R].hidden||n.columns[R].frozen&&(I+=parseInt(n.columns[R].sizeCalculated??"0"));u.css("width",I+"px"),f.css("width",I+"px"),a.css("width",I+"px"),m.css("width",I+"px"),d.css({left:I+"px","padding-left":"0.5px"}),h.css({left:I+"px"}),l.css({left:I+"px"}),d.find(":scope > table > tbody > tr:nth-child(1) td").add(u.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}if(E(R).hasClass("tsg-head-last"))if((e.last.vscroll.colIndEnd??0)+1<e.columns.length){let S=0;for(let $=(e.last.vscroll.colIndEnd??0)+1;$<e.columns.length;$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}else E(R).css("width",p.scrollBarSize()+(O>0&&C===0?O:0)+"px")}),d.find(":scope > table > tbody > tr").length==3&&d.find(":scope > table > tbody > tr:nth-child(1) td").add(u.find(":scope > table > tbody > tr:nth-child(1) td")).html("").css({height:"0",border:"0",padding:"0",margin:"0"}),h.find(":scope > table > tbody > tr:nth-child(1) td").add(f.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}if(E(R).hasClass("tsg-grid-data-last")&&E(R).parents(".tsg-grid-frecords").length===0)if((e.last.vscroll.colIndEnd??0)+1<e.columns.length){let S=0;for(let $=(e.last.vscroll.colIndEnd??0)+1;$<e.columns.length;$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}else E(R).css("width",(O>0&&C===0?O:0)+"px")}),l.find(":scope > table > tbody > tr:nth-child(1) td").add(a.find(":scope > table > tbody > tr:nth-child(1) td")).each(R=>{E(R).hasClass("tsg-col-number")&&E(R).css("width",y+"px");let F=E(R).attr("col");if(F!=null){if(F=="start"){let S=0;for(let $=0;$<(e.last.vscroll.colIndStart??0);$++)!e.columns[$]||e.columns[$].frozen||e.columns[$].hidden||(S+=parseInt(e.columns[$].sizeCalculated??"0"));E(R).css("width",S+"px")}e.columns[F]&&E(R).css("width",e.columns[F].sizeCalculated??"")}E(R).hasClass("tsg-grid-data-last")&&E(R).parents(".tsg-grid-frecords").length===0&&E(R).css("width",p.scrollBarSize()+(O>0&&C===0?O:0)+"px")}),n.initResize(),n.refreshRanges(),(n.last.vscroll.scrollTop||n.last.vscroll.scrollLeft)&&h.length>0&&(d.prop("scrollLeft",n.last.vscroll.scrollLeft),h.prop("scrollTop",n.last.vscroll.scrollTop),h.prop("scrollLeft",n.last.vscroll.scrollLeft)),d.css("will-change","scroll-position")}function si(n){let e=n,s="",t="";if(n.show.columnHeaders)if(n.columnGroups.length>0){let l=o(!0),a=i(),r=o(!1);s=(l[0]??"")+(a[0]??"")+(r[0]??""),t=(l[1]??"")+(a[1]??"")+(r[1]??"")}else{let l=o(!0);s=l[0]??"",t=l[1]??""}return[s,t];function i(){let l="<tr>",a="<tr>",r="",c=e.columnGroups.length-1;e.columnGroups[c].text==null&&e.columnGroups[c].caption!=null&&(console.log("NOTICE: grid columnGroup.caption property is deprecated, please use columnGroup.text. Group -> ",e.columnGroups[c]),e.columnGroups[c].text=e.columnGroups[c].caption),e.columnGroups[e.columnGroups.length-1].text!=""&&e.columnGroups.push({text:""}),e.show.lineNumbers&&(l+='<td class="tsg-head tsg-col-number" col="line-number"> <div>&#160;</div></td>'),e.show.selectColumn&&(l+='<td class="tsg-head tsg-col-select" col="select"> <div style="height: 25px">&#160;</div></td>'),e.show.expandColumn&&(l+='<td class="tsg-head tsg-col-expand" col="expand"> <div style="height: 25px">&#160;</div></td>');let d=0;a+=`<td id="grid_${e.name}_column_start" class="tsg-head" col="start" style="border-right: 0"></td>`,e.reorderRows&&(a+='<td class="tsg-head tsg-col-order" col="order"> <div style="height: 25px">&#160;</div></td>');for(let u=0;u<e.columnGroups.length;u++){let h=e.columnGroups[u],f=e.columns[d]??{};h.colspan!=null&&(h.span=h.colspan),(h.span==null||h.span!=parseInt(h.span))&&(h.span=1),f.text==null&&f.caption!=null&&(console.log("NOTICE: grid column.caption property is deprecated, please use column.text. Column ->",f),f.text=f.caption);let m=0;for(let y=d;y<d+h.span;y++)e.columns[y]&&!e.columns[y].hidden&&m++;if(u==e.columnGroups.length-1&&(m=100),!(m<=0))if(h.main===!0){let y="";for(let g=0;g<e.sortData.length;g++)e.sortData[g].field==f.field&&((e.sortData[g].direction||"").toLowerCase()==="asc"&&(y="tsg-sort-up"),(e.sortData[g].direction||"").toLowerCase()==="desc"&&(y="tsg-sort-down"));let x="";f.resizable!==!1&&(x=`<div class="tsg-resizer" name="${d}"></div>`);let b=p.lang(typeof f.text=="function"?f.text(f):f.text);r=`<td id="grid_${e.name}_column_${d}" class="tsg-head ${y}" col="${d}" rowspan="2" colspan="${m}">`+x+` <div class="tsg-col-group tsg-col-header ${y?"tsg-col-sorted":""}"> <div class="${y}"></div>`+(b||"&#160;")+" </div></td>",f&&f.frozen?l+=r:a+=r}else{let y=p.lang(typeof h.text=="function"?h.text(h):h.text);r=`<td id="grid_${e.name}_column_${d}" class="tsg-head" col="${d}" colspan="${m}"> <div class="tsg-col-group" style="${h.style??""}">${y||"&#160;"}</div></td>`,f&&f.frozen?l+=r:a+=r}d+=h.span}return l+="<td></td></tr>",a+=`<td id="grid_${e.name}_column_end" class="tsg-head" col="end"></td></tr>`,[l,a]}function o(l){let a="<tr>",r="<tr>";e.show.lineNumbers&&(a+='<td class="tsg-head tsg-col-number" col="line-number"> <div>#</div></td>'),e.show.selectColumn&&(a+=`<td class="tsg-head tsg-col-select" col="select"> <div> <input type="checkbox" id="grid_${e.name}_check_all" class="tsg-select-all" tabindex="-1" style="${e.multiSelect==!1?"display: none;":""}" > </div></td>`),e.show.expandColumn&&(a+='<td class="tsg-head tsg-col-expand" col="expand"> <div>&#160;</div></td>');let c=0,d=0,u;r+=`<td id="grid_${e.name}_column_start" class="tsg-head" col="start" style="border-right: 0"></td>`,e.reorderRows&&(r+='<td class="tsg-head tsg-col-order" col="order"> <div>&#160;</div></td>');for(let h=0;h<e.columns.length;h++){let f=e.columns[h];if(f.text==null&&f.caption!=null&&(console.log("NOTICE: grid column.caption property is deprecated, please use column.text. Column -> ",f),f.text=f.caption),f.size==null&&(f.size="100%"),h==d&&(u=e.columnGroups[c++]||{},d=d+u.span),!((h<(e.last.vscroll.colIndStart??0)||h>(e.last.vscroll.colIndEnd??1/0))&&!f.frozen)&&!f.hidden&&(u.main!==!0||l)){let m=e.getColumnCellHTML(h);f&&f.frozen?a+=m:r+=m}}return a+='<td class="tsg-head tsg-head-last"><div>&#160;</div></td>',r+='<td class="tsg-head tsg-head-last" col="end"><div>&#160;</div></td>',a+="</tr>",r+="</tr>",[a,r]}}function ni(n,e){let s=n.columns[e];if(s==null)return"";let t=n.reorderColumns&&(!n.columnGroups||!n.columnGroups.length)?" tsg-col-reorderable ":"",i="";for(let c=0;c<n.sortData.length;c++)n.sortData[c].field==s.field&&((n.sortData[c].direction||"").toLowerCase()==="asc"&&(i="tsg-sort-up"),(n.sortData[c].direction||"").toLowerCase()==="desc"&&(i="tsg-sort-down"));let o=n.last.selection.columns,l=!1;for(let c in o)for(let d=0;d<o[c].length;d++)o[c][d]==e&&(l=!0);let a=p.lang(typeof s.text=="function"?s.text(s):s.text);return'<td id="grid_'+n.name+"_column_"+e+'" col="'+e+'" class="tsg-head '+i+t+'">'+(s.resizable!==!1?'<div class="tsg-resizer" name="'+e+'"></div>':"")+' <div class="tsg-col-header '+(i?"tsg-col-sorted":"")+" "+(l?"tsg-col-selected":"")+'"> <div class="'+i+'"></div>'+(a||"&#160;")+" </div></td>"}function ii(n,e,s){let t=E(n.box).find("#grid_"+n.name+"_column_"+e),i=n.columns[e],o=n.columnTooltip;be.show({name:n.name+"-column-tooltip",anchor:t.get(0),html:i?.tooltip,position:o})}function oi(n,e,s){be.hide(n.name+"-column-tooltip")}function li(n){let e=n.records.length,s=n.url?.get??n.url;n.searchData.length!=0&&!s&&(e=n.last.searchIds.length),e>n.vs_start?n.last.vscroll.show_extra=n.vs_extra:n.last.vscroll.show_extra=n.vs_start;let t=E(n.box).find(`#grid_${n.name}_records`),i=Math.floor((t.get(0)?.clientHeight||0)/n.recordHeight)+n.last.vscroll.show_extra+1;i<n.vs_start&&(i=n.vs_start),(!n.fixedBody||i>e)&&(i=e);let o=n.getRecordHTML(-1,0),l="<table><tbody>"+o[0],a="<table><tbody>"+o[1];l+='<tr id="grid_'+n.name+'_frec_top" line="top" style="height: 0px"> <td colspan="2000"></td></tr>',a+='<tr id="grid_'+n.name+'_rec_top" line="top" style="height: 0px"> <td colspan="2000"></td></tr>';for(let c=0;c<i;c++)o=n.getRecordHTML(c,c+1),l+=o[0],a+=o[1];let r=(e-i)*n.recordHeight;return l+='<tr id="grid_'+n.name+'_frec_bottom" rec="bottom" line="bottom" style="height: '+r+'px; vertical-align: top"> <td colspan="2000" style="border: 0"></td></tr><tr id="grid_'+n.name+'_frec_more" style="display: none; "> <td colspan="2000" class="tsg-load-more"></td></tr></tbody></table>',a+='<tr id="grid_'+n.name+'_rec_bottom" rec="bottom" line="bottom" style="height: '+r+'px; vertical-align: top"> <td colspan="2000" style="border: 0"></td></tr><tr id="grid_'+n.name+'_rec_more" style="display: none"> <td colspan="2000" class="tsg-load-more"></td></tr></tbody></table>',n.last.vscroll.recIndStart=0,n.last.vscroll.recIndEnd=i,[l,a]}function ai(n){if(n.summary.length===0)return;let e=n.getRecordHTML(-1,0),s="<table><tbody>"+e[0],t="<table><tbody>"+e[1];for(let i=0;i<n.summary.length;i++)e=n.getRecordHTML(i,i+1,!0),s+=e[0],t+=e[1];return s+="</tbody></table>",t+="</tbody></table>",[s,t]}function ri(n,e,s,t){let i="",o="",l="",a=n.last.selection,r;if(e==-1){o+='<tr line="0">',l+='<tr line="0">',n.show.lineNumbers&&(o+='<td class="tsg-col-number" style="height: 0px"></td>'),n.show.selectColumn&&(o+='<td class="tsg-col-select" style="height: 0px"></td>'),n.show.expandColumn&&(o+='<td class="tsg-col-expand" style="height: 0px"></td>'),l+='<td class="tsg-grid-data tsg-grid-data-spacer" col="start" style="height: 0px; width: 0px"></td>',n.reorderRows&&(l+='<td class="tsg-col-order" style="height: 0px"></td>');for(let y=0;y<n.columns.length;y++){let x=n.columns[y];if(i='<td class="tsg-grid-data" col="'+y+'" style="height: 0px;"></td>',x.frozen&&!x.hidden)o+=i;else{if(x.hidden||y<n.last.vscroll.colIndStart||y>n.last.vscroll.colIndEnd)continue;l+=i}}return o+='<td class="tsg-grid-data-last" style="height: 0px"></td>',l+='<td class="tsg-grid-data-last" col="end" style="height: 0px"></td>',o+="</tr>",l+="</tr>",[o,l]}let c=n.url?.get??n.url;if(t!==!0)if(n.searchData.length>0&&!c){if(e>=n.last.searchIds.length)return"";e=n.last.searchIds[e]??e,r=n.records[e]}else{if(e>=n.records.length)return"";r=n.records[e]}else{if(e>=n.summary.length)return"";r=n.summary[e]}if(!r)return"";if(r.recid==null&&n.recid!=null){let y=n.parseField(r,n.recid);y!=null&&(r.recid=y)}let d=!1;a.indexes.indexOf(e)!=-1&&(d=!0);let u=r.TsUi?r.TsUi.style:"";(u==null||typeof u!="string")&&(u="");let h=r.TsUi?r.TsUi.class:"";if((h==null||typeof h!="string")&&(h=""),o+='<tr id="grid_'+n.name+"_frec_"+r.recid+'" recid="'+r.recid+'" line="'+s+'" index="'+e+'" class="'+(s%2===0?"tsg-even":"tsg-odd")+" tsg-record "+h+(d&&n.selectType=="row"?" tsg-selected":"")+(r.TsUi&&r.TsUi.editable===!1?" tsg-no-edit":"")+(r.TsUi&&r.TsUi.expanded===!0?" tsg-expanded":"")+'" style="height: '+n.recordHeight+"px; "+(!d&&u!=""?u:u.replace("background-color","none"))+'" '+(u!=""?'custom_style="'+u+'"':"")+">",l+='<tr id="grid_'+n.name+"_rec_"+r.recid+'" recid="'+r.recid+'" line="'+s+'" index="'+e+'" class="'+(s%2===0?"tsg-even":"tsg-odd")+" tsg-record "+h+(d&&n.selectType=="row"?" tsg-selected":"")+(r.TsUi&&r.TsUi.editable===!1?" tsg-no-edit":"")+(r.TsUi&&r.TsUi.expanded===!0?" tsg-expanded":"")+'" style="height: '+n.recordHeight+"px; "+(!d&&u!=""?u:u.replace("background-color","none"))+'" '+(u!=""?'custom_style="'+u+'"':"")+">",n.show.lineNumbers&&(o+='<td id="grid_'+n.name+"_cell_"+e+"_number"+(t?"_s":"")+'" class="tsg-col-number '+(d?" tsg-row-selected":"")+'"'+(n.reorderRows?' style="cursor: move"':"")+">"+(t!==!0?n.getLineHTML(s):"")+"</td>"),n.show.selectColumn&&(o+='<td id="grid_'+n.name+"_cell_"+e+"_select"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-select">'+(t!==!0&&!(r.TsUi&&r.TsUi.hideCheckBox===!0)?' <div> <input class="tsg-grid-select-check" type="checkbox" tabindex="-1" '+(d?'checked="checked"':"")+' style="pointer-events: none"/> </div>':"")+"</td>"),n.show.expandColumn){let y="";r.TsUi?.expanded===!0?y="-":y="+",(r.TsUi?.expanded=="none"||!Array.isArray(r.TsUi?.children)||!r.TsUi?.children.length)&&(y="+"),r.TsUi?.expanded=="spinner"&&(y='<div class="tsg-spinner" style="width: 16px; margin: -2px 2px;"></div>'),o+='<td id="grid_'+n.name+"_cell_"+e+"_expand"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-expand">'+(t!==!0?`<div>${y}</div>`:"")+"</td>"}l+='<td class="tsg-grid-data-spacer" col="start" style="border-right: 0"></td>',n.reorderRows&&(l+='<td id="grid_'+n.name+"_cell_"+e+"_order"+(t?"_s":"")+'" class="tsg-grid-data tsg-col-order" col="order">'+(t!==!0?'<div title="Drag to reorder">&nbsp;</div>':"")+"</td>");let f=0,m=0;for(;;){let y=1,x=n.columns[f];if(x==null)break;if(x.hidden){f++,m>0&&m--;continue}if(m>0){if(f++,n.columns[f]==null)break;r.TsUi.colspan[n.columns[f-1].field]=0,m--;continue}else if(r.TsUi){let g=r.TsUi.colspan,v=n.columns[f].field;g&&g[v]===0&&delete g[v]}if((f<(n.last.vscroll.colIndStart??0)||f>(n.last.vscroll.colIndEnd??1/0))&&!x.frozen){f++;continue}if(r.TsUi&&typeof r.TsUi.colspan=="object"){let g=parseInt(r.TsUi.colspan[x.field])||null;if(g!=null&&g>1){let v=0;for(let w=f;w<f+g&&!(w>=n.columns.length);w++)n.columns[w].hidden&&v++;y=g-v,m=g-1}}let b=n.getCellHTML(e,f,t,y);x.frozen?o+=b:l+=b,f++}return o+='<td class="tsg-grid-data-last"></td>',l+='<td class="tsg-grid-data-last" col="end"></td>',o+="</tr>",l+="</tr>",[o,l]}function ci(n,e){return"<div>"+e+"</div>"}function ui(n,e,s,t,i){let o=n,l=n.columns[s];if(l==null)return"";let a=t!==!0?n.records[e]:n.summary[e],{value:r,style:c,className:d,attr:u,divAttr:h,title:f}=n.getCellValue(e,s,t,!0),m=e!==-1?n.getCellEditable(e,s):"",y="max-height: "+n.recordHeight+"px;"+(l.clipboardCopy?"margin-right: 20px":""),x=!t&&a?.TsUi?.changes&&a.TsUi.changes[l.field]!=null,b=n.last.selection,g=!1,v="";if(b.indexes.indexOf(e)!=-1&&(g=!0),i==null&&(a?.TsUi?.colspan&&a.TsUi.colspan[l.field]?i=a.TsUi.colspan[l.field]:i=1),s===n.hierarchyColumn&&Array.isArray(a?.TsUi?.children)){let D=0,O=a.TsUi.parent_recid!=null?n.get(a.TsUi.parent_recid,!0):null;for(;O!=null;){D++;let R=n.records[O].TsUi;if(R!=null&&R.parent_recid!=null)O=n.get(R.parent_recid,!0);else break}if(a.TsUi.parent_recid)for(let R=0;R<D;R++)v+='<span class="tsg-show-children tsg-icon-empty"></span>';let I=a.TsUi?.children?.length>0?a.TsUi.expanded?"tsg-icon-collapse":"tsg-icon-expand":"tsg-icon-empty";a.TsUi?.children?.length>0&&(v+=`<span class="tsg-show-children ${I}"></span>`)}if(l.info===!0&&(l.info={}),l.info!=null){let D="tsg-icon-info";typeof l.info.icon=="function"?D=l.info.icon(a,{self:n,index:e,colIndex:s,summary:!!t}):typeof l.info.icon=="object"?D=l.info.icon[n.parseField(a,l.field)]||"":typeof l.info.icon=="string"&&(D=l.info.icon);let O=l.info.style||"";typeof l.info.style=="function"?O=l.info.style(a,{self:n,index:e,colIndex:s,summary:!!t}):typeof l.info.style=="object"?O=l.info.style[n.parseField(a,l.field)]||"":typeof l.info.style=="string"&&(O=l.info.style),v+=`<span class="tsg-info ${D}" style="${O}"></span>`}let w=r;if(m&&["checkbox","check"].indexOf(m.type)!=-1){let D=t?-(e+1):e;y+="text-align: center;",w=`<input tabindex="-1" type="checkbox" class="tsg-editable-checkbox"
532
+ data-changeInd="${D}" data-colInd="${s}" ${w?'checked="checked"':""}>`,v=""}if(w=`<div style="${y}" ${C(w,f)} ${h}>${v}${String(w)}</div>`,w==null&&(w=""),typeof l.render=="string"){let D=l.render.replace("|",":").split(":");["number","int","float","money","currency","percent","size"].includes(D[0])&&(c+="text-align: right;")}a?.TsUi&&(a.TsUi.styles==null&&(a.TsUi.styles=a.TsUi.style),typeof a.TsUi.styles=="object"&&(typeof a.TsUi.styles[s]=="string"&&(c+=a.TsUi.styles[s]+";"),typeof a.TsUi.styles[l.field]=="string"&&(c+=a.TsUi.styles[l.field]+";")),typeof a.TsUi.class=="object"&&(typeof a.TsUi.class[s]=="string"&&(d+=a.TsUi.class[s]+" "),typeof a.TsUi.class[l.field]=="string"&&(d+=a.TsUi.class[l.field]+" ")));let T=!1;g&&b.columns[e]?.includes(s)&&(T=!0);let _;return l.clipboardCopy&&(_='<span class="tsg-clipboard-copy tsg-icon-paste"></span>'),w='<td class="tsg-grid-data'+(T?" tsg-selected":"")+" "+d+(x?" tsg-changed":"")+'" id="grid_'+n.name+"_data_"+e+"_"+s+'" col="'+s+'" style="'+c+(l.style!=null?l.style:"")+'" '+(l.attr!=null?l.attr:"")+u+((i??0)>1?'colspan="'+i+'"':"")+">"+w+(_&&p.stripTags(w)?_:"")+"</td>",e===-1&&t===!0&&(w='<td class="tsg-grid-data" col="'+s+'" style="height: 0px; '+c+'" '+((i??0)>1?'colspan="'+i+'"':"")+"></td>"),w;function C(D,O){return O===void 0&&o.show.recordTitles&&(l.title!=null?(typeof l.title=="function"&&(O=l.title.call(o,a,{self:o,index:e,colIndex:s,summary:!!t})),typeof l.title=="string"&&(O=l.title)):O=p.stripTags(String(D).replace(/"/g,"''"))),O!=null?'title="'+String(O)+'"':""}}function di(n,e,s,t){let i=t?n.summary[e]:n.records[e],o=n.columns[s],l=o?n.parseField(i,o.field):"";o&&typeof o.clipboardCopy=="function"&&(l=o.clipboardCopy(i,{self:n,index:e,colIndex:s,summary:!!t})),E(n.box).find("#grid_"+n.name+"_focus").text(l).get(0).select(),document.execCommand("copy")}function fi(n,e,s,t){let i=n.columns[s]?.info;if(!i)return;let o="",l=n.records[e],a=E(n.box).find(`${t?".tsg-grid-summary":""} #grid_${n.name}_data_${e}_${s} .tsg-info`);if(n.last.bubbleEl&&be.hide(n.name+"-bubble"),n.last.bubbleEl=a,i.fields==null){i.fields=[];for(let c=0;c<n.columns.length;c++){let d=n.columns[c];i.fields.push(d.field+(typeof d.render=="string"?":"+d.render:""))}}let r=i.fields;if(typeof r=="function"&&(r=r(l,{self:n,index:e,colIndex:s,summary:!!t})),typeof i.render=="function")o=i.render(l,{self:n,index:e,colIndex:s,summary:!!t});else if(Array.isArray(r)){o='<table cellpadding="0" cellspacing="0">';for(let c=0;c<r.length;c++){let d=String(r[c]).split(":");if(d[0]==""||d[0]=="-"||d[0]=="--"||d[0]=="---"){o+='<tr><td colspan=2><div style="border-top: '+(d[0]==""?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';continue}let u=n.getColumn(d[0]??"");u==null&&(u={field:d[0]??"",text:d[0]??"",caption:d[0]});let h=u?n.parseField(l,u.field):"";if(l?.TsUi?.changes?.[u.field]!=null&&(h=l.TsUi.changes[u.field]),d.length>1)if(p.formatters[d[1]??""]){let f={self:n,value:h,params:d[2]||null,field:n.columns[s].field,index:e,colIndex:s};h=p.formatters[d[1]].call(n,l,f)}else console.log('ERROR: TsUtils.formatters["'+d[1]+'"] does not exists.');typeof h=="object"&&h.text!=null&&(h=h.text),!(i.showEmpty!==!0&&(h==null||h==""))&&(i.maxLength!=null&&typeof h=="string"&&h.length>i.maxLength&&(h=h.substr(0,i.maxLength)+"..."),o+="<tr><td>"+u.text+"</td><td>"+((h===0?"0":h)||"")+"</td></tr>")}o+="</table>"}else if(p.isPlainObject(r)){o='<table cellpadding="0" cellspacing="0">';for(let c in r){let d=r[c];if(d==""||d=="-"||d=="--"||d=="---"){o+='<tr><td colspan=2><div style="border-top: '+(d==""?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';continue}let u=String(d).split(":"),h=n.getColumn(u[0]??"");h==null&&(h={field:u[0]??"",text:u[0]??"",caption:u[0]});let f=h?n.parseField(l,h.field):"";if(l?.TsUi?.changes?.[h.field]!=null&&(f=l.TsUi.changes[h.field]),u.length>1)if(p.formatters[u[1]??""]){let m={self:n,value:f,params:u[2]||null,field:n.columns[s].field,index:e,colIndex:s};f=p.formatters[u[1]].call(n,l,m)}else console.log('ERROR: TsUtils.formatters["'+u[1]+'"] does not exists.');typeof d=="function"&&(f=d(l,{self:n,index:e,colIndex:s,summary:!!t})),f?.text!=null&&(f=f.text),!(i.showEmpty!==!0&&(f==null||f==""))&&(i.maxLength!=null&&typeof f=="string"&&f.length>i.maxLength&&(f=f.substr(0,i.maxLength)+"..."),o+="<tr><td>"+c+"</td><td>"+((f===0?"0":f)||"")+"</td></tr>")}o+="</table>"}return be.show(p.extend({name:n.name+"-bubble",html:o,anchor:a.get(0),position:"top|bottom",class:"tsg-info-bubble",style:"",hideOn:["doc-click"]},i.options??{})).hide(()=>[n.last.bubbleEl=null])}function hi(n,e,s){let t=n.columns[s],i=n.records[e];if(!i||!t)return null;let o=i.TsUi?i.TsUi.editable:null;if(o===!1)return null;if((o==null||o===!0)&&(o=Object.keys(t.editable??{}).length>0?t.editable:null,typeof t.editable=="function")){let l=n.getCellValue(e,s,!1);o=t.editable.call(n,i,{self:n,value:l,index:e,colIndex:s})}return o}function pi(n,e,s,t,i){let o=n.columns[s],l=t!==!0?n.records[e]:n.summary[e],a=n.parseField(l,o.field),r="",c="",d="",u="",h;if(l?.TsUi?.changes?.[o.field]!=null&&(a=l.TsUi.changes[o.field]),o.render!=null&&e!==-1){let f=o.render,m;if(typeof f=="string"){let y=f.toLowerCase().replace("|",":").split(":"),x=p.formatters[y[0]??""];o.options&&o.options.autoFormat===!1&&(x=void 0),f=x,m=y[1]}if(typeof f=="function"&&l!=null){let y;try{y=f.call(n,l,{self:n,value:a,params:m,field:n.columns[s].field,index:e,colIndex:s,summary:!!t})}catch(x){throw new Error(`Render function for column "${o.field}" in grid "${n.name}": -- `+x.message)}y!=null&&typeof y=="object"&&typeof y!="function"?(y.id!=null&&y.text!=null?a=y.text:typeof y.html=="string"||typeof y.html=="number"?a=String(y.html??"").trim():(a="",console.log("ERROR: render function should return a primitive or an object of the following structure.",{html:"",attr:"",style:"",class:"",divAttr:""},"... but it returned:",y)),d=y.attr??"",c=y.style??"",r=y.class??"",u=y.divAttr??"",h=y.title):a=String(y||"").trim()}if(typeof f=="object"){let y=f[a];y!=null&&y!==""&&(a=y)}}return a==null&&(a=""),i?{value:a,attr:d,style:c,className:r,divAttr:u,title:h}:a}function mi(n){return'<div> <div class="tsg-footer-left"></div> <div class="tsg-footer-right"></div> <div class="tsg-footer-center"></div></div>'}function gi(n,e){let s=n,t=n.url?.get??n.url,i=E(n.box).find(`#grid_${n.name}_records`),o=E(n.box).find(`#grid_${n.name}_frecords`);if(e){let S=e.target.scrollTop,$=e.target.scrollLeft;n.last.vscroll.scrollTop=S,n.last.vscroll.scrollLeft=$;let H=E(n.box).find(`#grid_${n.name}_columns`)[0],V=E(n.box).find(`#grid_${n.name}_summary`)[0];H&&(H.scrollLeft=$),V&&(V.scrollLeft=$),o[0]&&(o[0].scrollTop=S)}n.last.bubbleEl&&(be.hide(n.name+"-bubble"),n.last.bubbleEl=null);let l=null,a=null;if(n.disableCVS||n.columnGroups.length>0)l=0,a=n.columns.length-1;else{let S=i.prop("clientWidth"),$=0;for(let H=0;H<n.columns.length;H++){if(n.columns[H].frozen||n.columns[H].hidden)continue;let V=parseInt(n.columns[H].sizeCalculated?n.columns[H].sizeCalculated:String(n.columns[H].size??0));$+V+30>n.last.vscroll.scrollLeft&&l==null&&(l=H),$+V-30>n.last.vscroll.scrollLeft+S&&a==null&&(a=H),$+=V}a==null&&(a=n.columns.length-1)}if(l!=null&&(l<0&&(l=0),a<0&&(a=0),l==a&&(l>0?l--:a++),l!=n.last.vscroll.colIndStart||a!=n.last.vscroll.colIndEnd)){let S=E(n.box),$=Math.abs(l-n.last.vscroll.colIndStart),H=Math.abs(a-n.last.vscroll.colIndEnd);if($<5&&H<5){let V=S.find(`.tsg-grid-columns #grid_${n.name}_column_start`),Y=S.find(".tsg-grid-columns .tsg-head-last"),ee=S.find(`#grid_${n.name}_records .tsg-grid-data-spacer`),Te=S.find(`#grid_${n.name}_records .tsg-grid-data-last`),xe=S.find(`#grid_${n.name}_summary .tsg-grid-data-spacer`),Be=S.find(`#grid_${n.name}_summary .tsg-grid-data-last`);if(l>n.last.vscroll.colIndStart)for(let q=n.last.vscroll.colIndStart;q<l;q++)S.find("#grid_"+n.name+"_columns #grid_"+n.name+"_column_"+q).remove(),S.find("#grid_"+n.name+'_records td[col="'+q+'"]').remove(),S.find("#grid_"+n.name+'_summary td[col="'+q+'"]').remove();if(a<n.last.vscroll.colIndEnd)for(let q=n.last.vscroll.colIndEnd;q>a;q--)S.find("#grid_"+n.name+"_columns #grid_"+n.name+"_column_"+q).remove(),S.find("#grid_"+n.name+'_records td[col="'+q+'"]').remove(),S.find("#grid_"+n.name+'_summary td[col="'+q+'"]').remove();if(l<n.last.vscroll.colIndStart)for(let q=(n.last.vscroll.colIndStart??0)-1;q>=l;q--)n.columns[q]&&(n.columns[q].frozen||n.columns[q].hidden)||(V.after(n.getColumnCellHTML(q)),ee.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!1)),E(de).after(me)}),xe.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!0)),E(de).after(me)}));if(a>n.last.vscroll.colIndEnd)for(let q=(n.last.vscroll.colIndEnd??0)+1;q<=a;q++)n.columns[q]&&(n.columns[q].frozen||n.columns[q].hidden)||(Y.before(n.getColumnCellHTML(q)),Te.each(de=>{let pe=E(de).parent().attr("index"),me='<td class="tsg-grid-data" col="'+q+'" style="height: 0px"></td>';pe!=null&&(me=n.getCellHTML(parseInt(pe),q,!1)),E(de).before(me)}),Be.each(de=>{let pe=E(de).parent().attr("index")||-1,me=n.getCellHTML(parseInt(pe),q,!0);E(de).before(me)}));n.last.vscroll.colIndStart=l,n.last.vscroll.colIndEnd=a,n.resizeRecords()}else{n.last.vscroll.colIndStart=l,n.last.vscroll.colIndEnd=a;let V=n.getColumnsHTML(),Y=n.getRecordsHTML(),ee=n.getSummaryHTML(),Te=S.find(`#grid_${n.name}_columns`),xe=S.find(`#grid_${n.name}_records`),Be=S.find(`#grid_${n.name}_frecords`),q=S.find(`#grid_${n.name}_summary`);Te.find("tbody").html(V[1]),Be.html(Y[0]),xe.prepend(Y[1]),ee!=null&&q.html(ee[1]),setTimeout(()=>{xe.find(":scope > table").filter(":not(table:first-child)").remove(),q[0]&&(q[0].scrollLeft=n.last.vscroll.scrollLeft)},1),n.resizeRecords()}}let r=n.records.length;if(r>n.total&&n.total!==-1&&(r=n.total),n.searchData.length!=0&&!t&&(r=n.last.searchIds.length),r===0||i.length===0||i.prop("clientHeight")===0)return;r>n.vs_start?n.last.vscroll.show_extra=n.vs_extra:n.last.vscroll.show_extra=n.vs_start;let c=Math.round(i.prop("scrollTop")/n.recordHeight+1),d=c+(Math.round(i.prop("clientHeight")/n.recordHeight)-1);if(c>r&&(c=r),d>=r-1&&(d=r),E(n.box).find("#grid_"+n.name+"_footer .tsg-footer-right").html((n.show.statusRange?p.formatNumber(n.offset+c)+"-"+p.formatNumber(n.offset+d)+(n.total!=-1?" "+p.lang("of")+' <span class="tsg-total">'+p.formatNumber(n.total)+"</span>":""):"")+(t&&n.show.statusBuffered?" ("+p.lang("buffered")+' <span class="tsg-buffered">'+p.formatNumber(r)+"</span>"+(n.offset>0?', skip <span class="tsg-skip">'+p.formatNumber(n.offset):"")+"</span>)":"")),!t&&(!n.fixedBody||n.total!=-1&&n.total<=n.vs_start))return;let u=Math.floor(i.prop("scrollTop")/n.recordHeight)-n.last.vscroll.show_extra,h=u+Math.floor(i.prop("clientHeight")/n.recordHeight)+n.last.vscroll.show_extra*2+1;u<1&&(u=1),h>n.total&&n.total!=-1&&(h=n.total);let f=i.find("#grid_"+n.name+"_rec_top"),m=i.find("#grid_"+n.name+"_rec_bottom"),y=o.find("#grid_"+n.name+"_frec_top"),x=o.find("#grid_"+n.name+"_frec_bottom");String(f.next().prop("id")).indexOf("_expanded_row")!=-1&&(f.next().remove(),y.next().remove()),n.total>h&&String(m.prev().prop("id")).indexOf("_expanded_row")!=-1&&(m.prev().remove(),x.prev().remove());let b=parseInt(f.next().attr("line")),g=parseInt(m.prev().attr("line")),v,w,T,_,C;if(b<=u||b==1||n.last.vscroll.pull_refresh){if(h<=g+n.last.vscroll.show_extra-2&&h!=n.total)return;for(n.last.vscroll.pull_refresh=!1;w=o.find("#grid_"+n.name+"_frec_top").next(),T=i.find("#grid_"+n.name+"_rec_top").next(),T.attr("line")!="bottom";)if(parseInt(T.attr("line"))<u)w.remove(),T.remove();else break;v=i.find("#grid_"+n.name+"_rec_bottom").prev(),_=v.attr("line"),_=="top"&&(_=u);for(let S=parseInt(_)+1;S<=h;S++)n.records[S-1]&&(T=n.records[S-1].TsUi,T&&!Array.isArray(T.children)&&(T.expanded=!1),C=n.getRecordHTML(S-1,S),m.before(C[1]),x.before(C[0]));F(),setTimeout(()=>{n.refreshRanges()},0)}else{if(u>=b-n.last.vscroll.show_extra+2&&u>1)return;for(;w=o.find("#grid_"+n.name+"_frec_bottom").prev(),T=i.find("#grid_"+n.name+"_rec_bottom").prev(),T.attr("line")!="top";)if(parseInt(T.attr("line"))>h)w.remove(),T.remove();else break;v=i.find("#grid_"+n.name+"_rec_top").next(),_=v.attr("line"),_=="bottom"&&(_=h);for(let S=parseInt(_)-1;S>=u;S--)n.records[S-1]&&(T=n.records[S-1].TsUi,T&&!Array.isArray(T.children)&&(T.expanded=!1),C=n.getRecordHTML(S-1,S),f.after(C[1]),y.after(C[0]));F(),setTimeout(()=>{n.refreshRanges()},0)}let D=(u-1)*n.recordHeight,O=(r-h)*n.recordHeight;O<0&&(O=0),f.css("height",D+"px"),y.css("height",D+"px"),m.css("height",O+"px"),x.css("height",O+"px"),n.last.vscroll.recIndStart=u,n.last.vscroll.recIndEnd=h,Math.floor(i.prop("scrollTop")/n.recordHeight)+Math.floor(i.prop("clientHeight")/n.recordHeight)+10>r&&n.last.vscroll.pull_more!==!0&&(r<n.total-n.offset||n.total==-1&&n.last.fetch.hasMore)&&(n.autoLoad===!0&&(n.last.vscroll.pull_more=!0,n.last.fetch.offset=(n.last.fetch.offset??0)+n.limit,n.request("load")),E(n.box).find("#grid_"+n.name+"_rec_more, #grid_"+n.name+"_frec_more").show().eq(1).off(".load-more").on("click.load-more",function(){E(this).find("td").html('<div><div style="width: 20px; height: 20px;" class="tsg-spinner"></div></div>'),s.last.vscroll.pull_more=!0,s.last.fetch.offset=(s.last.fetch.offset??0)+s.limit,s.request("load")}).find("td").html(s.autoLoad?'<div><div style="width: 20px; height: 20px;" class="tsg-spinner"></div></div>':'<div style="padding-top: 15px">'+p.lang("Load ${count} more...",{count:s.limit})+"</div>"));function F(){s.markSearch&&(clearTimeout(s.last.marker_timer??void 0),s.last.marker_timer=setTimeout(()=>{let S=[];for(let $=0;$<s.searchData.length;$++){let H=s.searchData[$],V=s.getSearch(H.field);if(!V||V.hidden)continue;let Y=s.getColumn(H.field,!0);S.push({field:H.field,search:H.value,col:Y})}S.length>0&&S.forEach($=>{let H=E(s.box).find('td[col="'+$.col+'"]:not(.tsg-head)');p.marker(H,$.search)})},50))}}var P=j,ut=class extends ne{columns;columnGroups;records;summary;searches;toolbar;ranges;contextMenu;searchMap;searchData;sortMap;sortData;savedSearches;defaultSearches;groupBy;total;recid;hierarchyColumn;last;header;url;limit;offset;postData;routeData;httpHeaders;show;stateId;hasFocus;autoLoad;fixedBody;recordHeight;lineNumberWidth;keyboard;selectType;liveSearch;multiSearch;multiSelect;multiSort;reorderColumns;reorderRows;showExtraOnSearch;markSearch;columnTooltip;disableCVS;nestedFields;vs_start;vs_extra;style;tabIndex;dataType;parser;advanceOnEdit;useLocalStorage;colTemplate;stateColProps;msgDelete;msgNotJSON;msgHTTPError;msgServerError;msgRefresh;msgNeedReload;msgEmpty;buttons;operators;defaultOperator;operatorsMap;onAdd;onEdit;onRequest;onLoad;onDelete;onSave;onSelect;onClick;onDblClick;onContextMenu;onContextMenuClick;onColumnClick;onColumnDblClick;onColumnContextMenu;onColumnResize;onColumnAutoResize;onSort;onSearch;onSearchOpen;onSearchClose;onChange;onRestore;onExpand;onCollapse;onError;onKeydown;onToolbar;onColumnOnOff;onCopy;onPaste;onSelectionExtend;onEditField;onRender;onRefresh;onReload;onResize;onDestroy;onStateSave;onStateRestore;onFocus;onBlur;onReorderRow;onSearchSave;onSearchRemove;onSearchSelect;onColumnSelect;onColumnDragStart;onColumnDragEnd;onResizerDblClick;onMouseEnter;onMouseLeave;constructor(e){if(super(e.name),this.name="",this.box=null,this.columns=[],this.columnGroups=[],this.records=[],this.summary=[],this.searches=[],this.toolbar={},this.ranges=[],this.contextMenu=[],this.searchMap={},this.searchData=[],this.sortMap={},this.sortData=[],this.savedSearches=[],this.defaultSearches=[],this.groupBy=null,this.total=0,this.recid=null,this.hierarchyColumn=0,this.last={field:"",label:"",logic:"AND",search:"",searchIds:[],selection:{indexes:[],columns:{}},saved_sel:null,multi:!1,fetch:{action:"",offset:null,start:0,response:0,options:null,controller:null,loaded:!1,hasMore:!1},vscroll:{scrollTop:0,scrollLeft:0,recIndStart:null,recIndEnd:null,colIndStart:0,colIndEnd:0,pull_more:!1,pull_refresh:!0,show_extra:0},sel_ind:null,sel_col:null,sel_type:null,sel_recid:null,idCache:{},move:null,cancelClick:null,inEditMode:!1,_edit:null,kbd_timer:null,marker_timer:null,click_time:null,click_recid:null,bubbleEl:null,colResizing:!1,tmp:null,copy_event:null,userSelect:"",columnDrag:!1,state:null,toolbar_height:0,groupBy_links:{}},this.header="",this.url="",this.limit=100,this.offset=0,this.postData={},this.routeData={},this.httpHeaders={},this.show={header:!1,toolbar:!1,footer:!1,columnMenu:!0,columnHeaders:!0,lineNumbers:!1,expandColumn:!1,selectColumn:!1,emptyRecords:!0,toolbarReload:!0,toolbarColumns:!1,toolbarSearch:!0,toolbarAdd:!1,toolbarEdit:!1,toolbarDelete:!1,toolbarSave:!1,searchAll:!0,searchLogic:!0,searchHiddenMsg:!1,searchSave:!0,statusRange:!0,statusBuffered:!1,statusRecordID:!0,statusSelection:!0,statusResponse:!0,statusSort:!1,statusSearch:!1,recordTitles:!1,selectionBorder:!0,selectionResizer:!0,skipRecords:!0,saveRestoreState:!0},this.stateId=null,this.hasFocus=!1,this.autoLoad=!0,this.fixedBody=!0,this.recordHeight=p.settings?.recordHeight??32,this.lineNumberWidth=34,this.keyboard=!0,this.selectType="row",this.liveSearch=!1,this.multiSearch=!0,this.multiSelect=!0,this.multiSort=!0,this.reorderColumns=!1,this.reorderRows=!1,this.showExtraOnSearch=0,this.markSearch=!0,this.columnTooltip="top|bottom",this.disableCVS=!1,this.nestedFields=!0,this.vs_start=150,this.vs_extra=5,this.style="",this.tabIndex=null,this.dataType=null,this.parser=null,this.advanceOnEdit=!0,this.useLocalStorage=!0,this.colTemplate={text:"",field:"",size:null,min:20,max:null,gridMinWidth:null,sizeCorrected:null,sizeCalculated:null,sizeOriginal:null,sizeType:null,hidden:!1,sortable:!1,sortMode:null,searchable:!1,resizable:!0,hideable:!0,autoResize:null,attr:"",style:"",render:null,title:null,tooltip:null,editable:{},frozen:!1,info:null,clipboardCopy:!1},this.stateColProps={text:!1,field:!0,size:!0,min:!1,max:!1,gridMinWidth:!1,sizeCorrected:!1,sizeCalculated:!0,sizeOriginal:!0,sizeType:!0,hidden:!0,sortable:!1,sortMode:!0,searchable:!1,resizable:!1,hideable:!1,autoResize:!1,attr:!1,style:!1,render:!1,title:!1,tooltip:!1,editable:!1,frozen:!0,info:!1,clipboardCopy:!1},this.msgDelete="Are you sure you want to delete ${count} ${records}?",this.msgNotJSON="Returned data is not in valid JSON format.",this.msgHTTPError="HTTP error. See console for more details.",this.msgServerError="Server error",this.msgRefresh="Refreshing...",this.msgNeedReload="Your remote data source record count has changed, reloading from the first record.",this.msgEmpty="",this.buttons={reload:{type:"button",id:"tsg-reload",icon:"tsg-icon-reload",tooltip:p.lang("Reload data in the list")},columns:{type:"menu-check",id:"tsg-column-on-off",icon:"tsg-icon-columns",tooltip:p.lang("Show/hide columns"),overlay:{align:"none"}},search:{type:"html",id:"tsg-search",html:'<div class="tsg-icon tsg-icon-search tsg-search-down tsg-action" data-click="searchShowFields"></div>'},add:{type:"button",id:"tsg-add",text:"Add New",tooltip:p.lang("Add new record"),icon:"tsg-icon-plus"},edit:{type:"button",id:"tsg-edit",text:"Edit",tooltip:p.lang("Edit selected record"),icon:"tsg-icon-pencil",batch:1,disabled:!0},delete:{type:"button",id:"tsg-delete",text:"Delete",tooltip:p.lang("Delete selected records"),icon:"tsg-icon-cross",batch:!0,disabled:!0},save:{type:"button",id:"tsg-save",text:"Save",tooltip:p.lang("Save changed records"),icon:"tsg-icon-check"}},this.operators={text:["is","begins","contains","ends","is not"],number:["=","between",">","<",">=","<=","!="],date:["is",{oper:"less",text:"before"},{oper:"more",text:"since"},"between"],list:["is"],hex:["is","between"],color:["is","begins","contains","ends"],enum:["in","not in"]},this.defaultOperator={text:"begins",number:"=",date:"is",list:"is",enum:"in",hex:"begins",color:"begins"},this.operatorsMap={text:"text",int:"number",float:"number",money:"number",currency:"number",percent:"number",hex:"hex",alphanumeric:"text",color:"color",date:"date",time:"date",datetime:"date",list:"list",combo:"text",enum:"enum",file:"enum",select:"list",radio:"list",checkbox:"list",toggle:"list"},this.onAdd=null,this.onEdit=null,this.onRequest=null,this.onLoad=null,this.onDelete=null,this.onSave=null,this.onSelect=null,this.onClick=null,this.onDblClick=null,this.onContextMenu=null,this.onContextMenuClick=null,this.onColumnClick=null,this.onColumnDblClick=null,this.onColumnContextMenu=null,this.onColumnResize=null,this.onColumnAutoResize=null,this.onSort=null,this.onSearch=null,this.onSearchOpen=null,this.onSearchClose=null,this.onChange=null,this.onRestore=null,this.onExpand=null,this.onCollapse=null,this.onError=null,this.onKeydown=null,this.onToolbar=null,this.onColumnOnOff=null,this.onCopy=null,this.onPaste=null,this.onSelectionExtend=null,this.onEditField=null,this.onRender=null,this.onRefresh=null,this.onReload=null,this.onResize=null,this.onDestroy=null,this.onStateSave=null,this.onStateRestore=null,this.onFocus=null,this.onBlur=null,this.onReorderRow=null,this.onSearchSave=null,this.onSearchRemove=null,this.onSearchSelect=null,this.onColumnSelect=null,this.onColumnDragStart=null,this.onColumnDragEnd=null,this.onResizerDblClick=null,this.onMouseEnter=null,this.onMouseLeave=null,p.extend(this,e),Array.isArray(this.records)){let t=[];this.records.forEach((i,o)=>{this.recid!=null&&i[this.recid]!=null&&(i.recid=i[this.recid]),i.recid==null&&console.log("ERROR: Cannot add records without recid. (obj: "+this.name+")"),i.TsUi?.summary===!0&&(this.summary.push(i),t.push(o))}),t.sort();for(let i=t.length-1;i>=0;i--)this.records.splice(t[i],1);this.processGroupBy()}Array.isArray(this.columns)&&this.columns.forEach((t,i)=>{t=p.extend({},this.colTemplate,t),this.columns[i]=t;let o=t.searchable;if(!(o==null||o===!1||this.getSearch(t.field)!=null))if(p.isPlainObject(o))this.addSearch(p.extend({field:t.field,label:t.text,type:"text"},o));else{let l=t.searchable,a="";t.searchable===!0&&(l="text",a='size="20"'),this.addSearch({field:t.field,label:t.text,type:l,attr:a})}}),Array.isArray(this.defaultSearches)&&this.defaultSearches.forEach((t,i)=>{t.id="default-"+i,t.icon??="tsg-icon-search"});let s=this.cache("searches");Array.isArray(s)&&s.forEach(t=>{this.savedSearches.push({id:t.id??"none",text:t.text??"none",icon:"tsg-icon-search",remove:!0,logic:t.logic??"AND",data:t.data??[]})}),this.initToolbar(),typeof this.box=="string"&&(this.box=P(this.box).get(0)),this.box&&this.render(this.box)}add(e,s){return gs(this,e,s)}find(e,s,t){return ys(this,e,s,t)}set(e,s,t){return bs(this,e,s,t)}replace(e,s,t){return xs(this,e,s,t)}get(e,s){return vs(this,e,s)}getFirst(e){if(this.records.length==0)return null;let s=this.records[0]??null,t=this.last.searchIds;return this.searchData.length>0&&(Array.isArray(t)&&t.length>0?s=this.records[t[e||0]]??null:s=null),s}remove(...e){return Ts(this,...e)}processGroupBy(){return ws(this)}addColumn(e,s){return Wt(this,e,s)}removeColumn(...e){return qt(this,...e)}getColumn(e,s){return Yt(this,e,s)}updateColumn(e,s){return Xt(this,e,s)}toggleColumn(...e){return Kt(this,...e)}showColumn(...e){return Jt(this,...e)}hideColumn(...e){return Zt(this,...e)}addSearch(e,s){return qs(this,e,s)}removeSearch(...e){return Ys(this,...e)}getSearch(e,s){return Xs(this,e,s)}toggleSearch(...e){return Ks(this,...e)}showSearch(...e){return Js(this,...e)}hideSearch(...e){return Zs(this,...e)}getSearchData(e){return en(this,e)}localSort(e,s){return _s(this,e,s)}localSearch(e){return ks(this,e)}getRangeData(e,s){return Cs(this,e,s)}addRange(e){return Es(this,e)}removeRange(...e){return Ss(this,...e)}refreshRanges(){return Rs(this)}select(...e){return Ls(this,...e)}unselect(...e){return As(this,...e)}compareSelection(e){return Fs(this,e)}selectAll(){return Hs(this)}selectNone(e){return Ns(this,e)}updateToolbar(e,s){return Ps(this,e,s)}getSelectionRows(e){return js(this,e)}getSelectionCells(){return Us(this)}getSelection(e){return Gs(this,e)}search(e,s){return tn(this,e,s)}searchOpen(e={}){return sn(this,e)}searchClose(){return nn(this)}searchFieldTooltip(e,s,t){return on(this,e,s,t)}searchSuggest(e,s,t){return ln(this,e,s,t)}searchSave(){return an(this)}cache(e){return rn(this,e)}cacheSave(e,s){return cn(this,e,s)}searchReset(e){return un(this,e)}searchShowFields(e){return dn(this,e)}searchInitInput(e,s){return fn(this,e,s)}clear(e){return $s(this,e)}reset(e){return Ms(this,e)}skip(e,s){this.url?.get??this.url?(this.offset=parseInt(e),this.offset>this.total&&(this.offset=this.total-this.limit),(this.offset<0||!p.isInt(this.offset))&&(this.offset=0),this.clear(!0),this.reload(s)):console.log("ERROR: grid.skip() can only be called when you have remote data source.")}load(e,s){return Ds(this,e,s)}reload(e){return Is(this,e)}request(e,s,t,i){return Os(this,e,s,t,i)}requestComplete(e,s,t,i,o){let l=e.error??!1;e.error==null&&e.status==="error"&&(l=!0),this.last.fetch.response=(Date.now()-this.last.fetch.start)/1e3,setTimeout(()=>{this.show.statusResponse&&this.status(p.lang("Server Response ${count} seconds",{count:this.last.fetch.response}))},10),this.last.vscroll.pull_more=!1,this.last.vscroll.pull_refresh=!0;let a="load";this.last.fetch.action=="save"&&(a="save"),this.last.fetch.action=="delete"&&(a="delete");let r=this.trigger(a,{target:this.name,error:l,data:e,lastFetch:this.last.fetch});if(r.isCancelled===!0){o();return}if(l)this.error(p.lang(e.message||this.msgServerError)),o(e);else if(typeof this.parser=="function"?(e=this.parser(e),typeof e!="object"&&console.log("ERROR: Your parser did not return proper object")):e==null?e={error:!0,message:p.lang(this.msgNotJSON)}:Array.isArray(e)&&(e={error:l,records:e,total:e.length}),s=="load"){if(e.total==null&&(e.total=-1),e.records==null&&(e.records=[],this.last.groupBy_links={}),e.records.length==this.limit){let d=this.records.length+e.records.length;this.last.fetch.hasMore=d!=this.total}else this.last.fetch.hasMore=!1,this.total=this.offset+(this.last.fetch.offset??0)+e.records.length;if(this.last.fetch.hasMore||P(this.box).find("#grid_"+this.name+"_rec_more, #grid_"+this.name+"_frec_more").hide(),this.last.fetch.offset===0)this.records=[],this.summary=[],this.last.groupBy_links={};else if(e.total!=-1&&parseInt(String(e.total))!=this.total){let d=this;return this.message(p.lang(this.msgNeedReload)).ok(()=>{delete d.last.fetch.offset,d.reload()}),new Promise(u=>{u()})}p.isInt(e.total)&&(this.total=parseInt(e.total)),e.records&&e.records.forEach(d=>{this.recid&&(d.recid=this.parseField(d,this.recid)),d.recid==null&&(d.recid="recid-"+this.records.length),d.TsUi?.summary===!0?this.summary.push(d):this.records.push(d)}),e.groupBy!=null&&(this.groupBy=e.groupBy),this.processGroupBy(),e.summary&&(this.summary=[],e.summary.forEach(d=>{this.recid&&(d.recid=this.parseField(d,this.recid)),d.recid==null&&(d.recid="recid-"+this.summary.length),this.summary.push(d)}))}else if(s=="delete")return this.reset(),this.reload();(this.url?.get??this.url)||(this.localSort(),this.localSearch()),this.total=parseInt(String(this.total)),this.last.fetch.offset===0?this.refresh():(this.scroll(),this.resize()),typeof t=="function"&&t(e),i(e),r.finish(),this.last.fetch.loaded=!0}error(e){let s=this.trigger("error",{target:this.name,message:e});s.isCancelled!==!0&&(this.message(e),s.finish())}getChanges(e){let s=[];typeof e>"u"&&(e=this.records);for(let t=0;t<e.length;t++){let i=e[t];if(i?.TsUi){if(i.TsUi.changes!=null){let o={};o[this.recid||"recid"]=i.recid,s.push(p.extend(o,i.TsUi.changes))}i.TsUi.expanded!==!0&&i.TsUi.children&&i.TsUi.children.length&&s.push(...this.getChanges(i.TsUi.children))}}return s}mergeChanges(){let e=this.getChanges();for(let t=0;t<e.length;t++){let i=e[t],o=this.get(i[this.recid||"recid"]);if(o!=null){for(let l in i)if(!(l=="recid"||this.recid&&l==this.recid)){typeof i[l]=="object"&&(i[l]=i[l].text);try{s(o,l,i[l])}catch(a){console.log("ERROR: Cannot merge. ",a?.message||"",a)}o.TsUi&&delete o.TsUi.changes}}}this.refresh();function s(t,i,o){let l=i.split(".");l.length==1?t[i]=o:(t=t[l[0]],l.shift(),s(t,l.join("."),o))}}save(e){return zs(this,e)}editField(e,s,t,i){return Bs(this,e,s,t,i)}editChange(e,s,t,i){return Qs(this,e,s,t,i)}editDone(e,s,t){return Vs(this,e,s,t)}delete(e){let s=this.trigger("delete",{target:this.name,force:e});if(e&&this.message(),s.isCancelled===!0)return;e=s.detail.force;let t=this.getSelection();if(t.length===0)return;if(this.msgDelete!=""&&!e){this.confirm({text:p.lang(this.msgDelete,{count:t.length,records:p.lang(t.length==1?"record":"records")}),width:380,height:170,yes_text:p.lang("Delete"),yes_class:"tsg-btn-red",no_text:p.lang("Cancel")}).yes(o=>{o.detail.self.close(),this.delete(!0)}).no(o=>{o.detail.self.close()});return}if(this.url?.remove??this.url)this.request("delete");else if(typeof t[0]!="object")this.selectNone(),this.remove(...t);else{let o=t;for(let l=0;l<o.length;l++){let a=o[l],r=this.columns[a.column].field,c=this.get(a.recid,!0),d=c!=null?this.records[c]:null;c!=null&&r!="recid"&&d!=null&&(this.records[c][r]="",d.TsUi?.changes&&delete d.TsUi.changes[r])}this.update()}s.finish()}click(e,s){return xn(this,e,s)}columnClick(e,s){return vn(this,e,s)}columnDblClick(e,s){return Tn(this,e,s)}columnContextMenu(e,s){return wn(this,e,s)}columnAutoSize(e){return _n(this,e)}columnAutoSizeAll(){return kn(this)}focus(e){return Cn(this,e)}blur(e){return En(this,e)}keydown(e){return Sn(this,e)}scrollIntoView(e,s,t,i){return Rn(this,e,s,t,i)}scrollToColumn(e){return $n(this,e)}dblClick(e,s){return Mn(this,e,s)}showContextMenu(e,s){return Dn(this,e,s)}contextMenuClick(e,s,t){return In(this,e,s,t)}toggle(e,s){return On(this,e,s)}expand(e,s){return zn(this,e,s)}collapse(e,s){return Ln(this,e,s)}updateExpanded(){return An(this)}sort(e,s,t){return Fn(this,e,s,t)}copy(e,s){return Hn(this,e,s)}getCellCopy(e,s){return Nn(this,e,s)}paste(e,s){return Pn(this,e,s)}resize(){return jn(this)}update({cells:e,fullCellRefresh:s,ignoreColumns:t}={}){return Un(this,{cells:e,fullCellRefresh:s,ignoreColumns:t})}refreshCell(e,s){return Gn(this,e,s)}refreshRow(e,s=null){return Bn(this,e,s)}refresh(){return Qn(this)}refreshSearch(){return Vn(this)}refreshBody(){return Wn(this)}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=P(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.box))return;let o=this.url?.get??this.url;this.reset(!0),P(this.box).attr("name",this.name).addClass("tsg-reset tsg-grid tsg-inactive").html('<div class="tsg-grid-box"> <div id="grid_'+this.name+'_header" class="tsg-grid-header"></div> <div id="grid_'+this.name+'_toolbar" class="tsg-grid-toolbar"></div> <div id="grid_'+this.name+'_body" class="tsg-grid-body"></div> <div id="grid_'+this.name+'_fsummary" class="tsg-grid-body tsg-grid-summary"></div> <div id="grid_'+this.name+'_summary" class="tsg-grid-body tsg-grid-summary"></div> <div id="grid_'+this.name+'_footer" class="tsg-grid-footer"></div> <textarea id="grid_'+this.name+'_focus" class="tsg-grid-focus-input" '+(this.tabIndex?'tabindex="'+this.tabIndex+'"':"")+(p.isMobile?"readonly":"")+"></textarea></div>"),this.selectType!="row"&&P(this.box).addClass("tsg-ss"),P(this.box).length>0&&(P(this.box)[0].style.cssText+=this.style);let l=P(this.box).find(`#grid_${this.name}_toolbar`);if(this.toolbar!=null&&this.toolbar.render(l[0]),this.last.toolbar_height=l.prop("offsetHeight"),this.last.field&&this.last.field!="all"){let f=this.searchData;setTimeout(()=>{this.searchInitInput(this.last.field,f.length==1?f[0].value:null)},1)}P(this.box).find(`#grid_${this.name}_footer`).html(this.getFooterHTML()),this.last.state||(this.last.state=this.stateSave(!0)),this.stateRestore(),o&&(this.clear(),this.refresh());let a=!1;for(let f=0;f<this.searches.length;f++)if(this.searches[f].hidden){a=!0;break}a?(this.searchReset(!1),o||setTimeout(()=>{this.searchReset()},1)):this.reload(),P(this.box).find(`#grid_${this.name}_focus`).on("focus",f=>{clearTimeout(this.last.kbd_timer??void 0),this.hasFocus||this.focus()}).on("blur",f=>{clearTimeout(this.last.kbd_timer??void 0),this.last.kbd_timer=setTimeout(()=>{this.hasFocus&&this.blur()},100)}).on("paste",f=>{let m=f.clipboardData?f.clipboardData:null;if(m){let y=m.items;y.length==2&&(y.length==2&&y[1].kind=="file"&&(y=[y[1]]),y.length==2&&y[0].type=="text/plain"&&y[1].type=="text/html"&&(y=[y[1]]));let x=[];for(let b in y){let g=y[b];if(g.kind==="file"){let v=g.getAsFile();x.push({kind:"file",data:v})}else if(g.kind==="string"&&(g.type==="text/plain"||g.type==="text/html")){f.preventDefault();let v=m.getData("text/plain");v.indexOf("\r")!=-1&&v.indexOf(`
533
533
  `)==-1&&(v=v.replace(/\r/g,`
534
- `)),x.push({kind:g.type=="text/html"?"html":"text",data:v})}}x.length===1&&x[0].kind!="file"&&(x=x[0].data),se[this.name].paste(x,f),f.preventDefault()}}).on("keydown",function(f){se[t.name].keydown.call(se[t.name],f)});let r;return P(this.box).off("mousedown.mouseStart").on("mousedown.mouseStart",c),this.updateToolbar(),i.finish(),this.last.observeResize=new ResizeObserver(()=>{this.resize(),this.scroll()}),this.last.observeResize.observe(this.box),Date.now()-s;function c(f){if(f.which==1&&(t.last.userSelect=="text"&&(t.last.userSelect="",P(t.box).find(".tsg-grid-body").css("user-select","none")),!(t.selectType=="row"&&(P(f.target).parents().hasClass("tsg-head")||P(f.target).hasClass("tsg-head")))&&!(t.last.move&&t.last.move.type=="expand"))){if(f.altKey)P(t.box).find(".tsg-grid-body").css("user-select","text"),t.selectNone(),t.last.move={type:"text-select"},t.last.userSelect="text";else{let m=f.target,y={x:f.offsetX-10,y:f.offsetY-10},x=!1;for(;m&&!(m.classList&&m.classList.contains("tsg-grid"));)m.tagName&&m.tagName.toUpperCase()=="TD"&&(x=!0),m.tagName&&m.tagName.toUpperCase()!="TR"&&x==!0&&(y.x+=m.offsetLeft,y.y+=m.offsetTop),m=m.parentNode;let b=P(f.target).parents("tr").attr("index"),g=t.records[b]?.recid;if(t.selectType=="cell"&&!f.shiftKey){let T=parseInt(P(f.target).closest("td").attr("col")),_=T;isNaN(T)&&(T=0,_=t.columns.length-1),t.addRange({name:"selection-preview",range:[{recid:g,column:T},{recid:g,column:_}],class:"tsg-selection-preview"})}if(t.last.move={x:f.screenX,y:f.screenY,divX:0,divY:0,focusX:y.x,focusY:y.y,recid:g,column:parseInt(f.target.tagName.toUpperCase()=="TD"?P(f.target).attr("col"):P(f.target).parents("td").attr("col")),type:"select",ghost:!1,start:!0},t.last.move.recid==null&&t.records.length>0){t.last.move.type="select-column";let T=parseInt(P(f.target).closest("td").attr("col")),_=t.records[0].recid,C=t.records[t.records.length-1].recid;t.addRange({name:"selection-preview",range:[{recid:_,column:T},{recid:C,column:T}],class:"tsg-selection-preview"})}let v=f.target,w=P(t.box).find("#grid_"+t.name+"_focus");if(t.last.move){let T=t.last.move.focusX,_=t.last.move.focusY,C=P(v).parents("table").parent();(C.hasClass("tsg-grid-records")||C.hasClass("tsg-grid-frecords")||C.hasClass("tsg-grid-columns")||C.hasClass("tsg-grid-fcolumns")||C.hasClass("tsg-grid-summary"))&&(T=t.last.move.focusX-P(t.box).find("#grid_"+t.name+"_records").prop("scrollLeft"),_=t.last.move.focusY-P(t.box).find("#grid_"+t.name+"_records").prop("scrollTop")),(P(v).hasClass("tsg-grid-footer")||P(v).parents("div.tsg-grid-footer").length>0)&&(_=P(t.box).find("#grid_"+t.name+"_footer").get(0).offsetTop),C.hasClass("tsg-scroll-wrapper")&&C.parent().hasClass("tsg-toolbar")&&(T=t.last.move.focusX-C.prop("scrollLeft")),w.css({left:T-10,top:_})}setTimeout(()=>{t.last.inEditMode||(["INPUT","TEXTAREA","SELECT"].includes(v.tagName)?v.focus():w.get(0)!==document.activeElement&&w.get(0)?.focus({preventScroll:!0}))},50),!t.multiSelect&&!t.reorderRows&&t.last.move.type=="drag"&&delete t.last.move}if(t.reorderRows==!0){let m=f.target;if(m.tagName.toUpperCase()!="TD"&&(m=P(m).parents("td")[0]),P(m).hasClass("tsg-col-number")||P(m).hasClass("tsg-col-order")){let y=t.getSelection();if(y.length>0&&typeof y[0]=="object"){let C=y;t.select([...new Set(C.map(D=>D.recid))]),y=[...new Set(t.getSelectionCells().map(D=>D.recid))]}y.indexOf(t.last.move.recid)==-1&&(t.selectNone(),t.select([t.last.move.recid]),y=[t.last.move.recid]);let x=[],b=C=>{let D=t.get(C);D?.TsUi?.children&&D.TsUi.children.forEach(O=>{t.get(O.recid)&&(x.push(O.recid),b(O.recid))})};y.forEach(C=>b(C)),y=[...y,...x],t.last.move.reorder=!0;let g=P(t.box).find(".tsg-even.tsg-empty-record").css("background-color"),v=P(t.box).find(".tsg-odd.tsg-empty-record").css("background-color");P(t.box).find(".tsg-even td").filter(":not(.tsg-col-number)").css("background-color",g),P(t.box).find(".tsg-odd td").filter(":not(.tsg-col-number)").css("background-color",v);let w=t.last.move,T=P(t.box).find(".tsg-grid-records");if(!w.ghost){let C=y.map(O=>P(t.box).find(`#grid_${t.name}_rec_${O}`)),D=C[0].parents("table").find("tr:first-child").get(0).cloneNode(!0);w.offsetY=f.offsetY,w.from=y,w.pos={top:C[0].get(0).offsetTop-1,left:C[C.length-1].get(0).offsetLeft},w.ghost=P(C.map(O=>O.get(0).cloneNode(!0))),w.ghost.removeAttr("id"),w.ghost.find("td").css({"border-top":"1px solid silver","border-bottom":"1px solid silver"}),C.forEach(O=>{O.find("td").remove(),O.append(`<td colspan="1000"><div class="tsg-reorder-empty" style="height: ${t.recordHeight-2}px"></div></td>`)}),T.append('<div id="grid_'+t.name+'_ghost_line" style="position: absolute; z-index: 999999; pointer-events: none; width: 100%;"></div>'),T.append('<table id="grid_'+t.name+'_ghost" style="position: absolute; z-index: 999998; opacity: 0.9; pointer-events: none;"></table>'),P(t.box).find("#grid_"+t.name+"_ghost").append(D).append(w.ghost)}P(t.box).find("#grid_"+t.name+"_ghost").css({top:w.pos.top+"px",left:w.pos.left+"px"})}else t.last.move.reorder=!1}P(document).on("mousemove.tsg-"+t.name,d).on("mouseup.tsg-"+t.name,u),f.stopPropagation()}}function d(f){if(!f.target.tagName)return;let m=t.last.move;if(!m||!["select","select-column"].includes(m.type)||(m.divX=f.screenX-m.x,m.divY=f.screenY-m.y,Math.abs(m.divX)<=1&&Math.abs(m.divY)<=1))return;if(t.last.cancelClick=!0,t.reorderRows==!0&&t.last.move.reorder){let v=P(f.target).parents("tr").attr("index"),w=t.records[v]?.recid;if((w=="-none-"||w==null)&&(w="bottom"),m.from.indexOf(w)==-1){let _=P(t.box).find("#grid_"+t.name+"_rec_"+w);P(t.box).find(".insert-before"),_.addClass("insert-before"),m.lastY=f.screenY,m.to=w;let C={top:_.get(0)?.offsetTop,left:_.get(0)?.offsetLeft},D=P(t.box).find("#grid_"+t.name+"_ghost_line");C?D.css({top:C.top+"px",left:m.pos.left+"px","border-top":"2px solid #769EFC"}):D.css({"border-top":"2px solid transparent"})}P(t.box).find("#grid_"+t.name+"_ghost").css({top:m.pos.top+m.divY+"px",left:m.pos.left+"px"});return}t.selectType=="row"&&m.start&&m.recid&&(t.selectNone(),m.start=!1);let y=[],x=f.target.tagName.toUpperCase()=="TR"?P(f.target).attr("index"):P(f.target).parents("tr").attr("index"),b=t.records[x]?.recid;if(b==null){if(t.selectType=="row"||t.last.move&&t.last.move.type=="select")return;let g=parseInt(P(f.target).parents("td").attr("col"));if(isNaN(g))t.removeRange("column-selection"),P(t.box).find(".tsg-grid-columns .tsg-col-header, .tsg-grid-fcolumns .tsg-col-header").removeClass("tsg-col-selected"),P(t.box).find(".tsg-col-number").removeClass("tsg-row-selected"),delete m.colRange;else{let v=g+"-"+g;m.column<g&&(v=m.column+"-"+g),m.column>g&&(v=g+"-"+m.column);let w=[],T=v.split("-");for(let _=parseInt(T[0]??"0");_<=parseInt(T[1]??"0");_++)w.push(_);if(m.colRange!=v&&m.type=="select-column"&&(r=t.trigger("columnSelect",{target:t.name,columns:w}),r.isCancelled!==!0)){m.colRange=v;let _=t.records[0].recid,C=t.records[t.records.length-1].recid;t.addRange({name:"selection-preview",range:[{recid:_,column:T[0]},{recid:C,column:T[1]}],class:"tsg-selection-preview"})}}}else{let g=t.get(m.recid,!0);if(g==null||t.records[g]&&t.records[g].recid!=m.recid)return;let v=t.get(b,!0);if(v==null)return;let w=parseInt(m.column),T=parseInt(f.target.tagName.toUpperCase()=="TD"?P(f.target).attr("col"):P(f.target).parents("td").attr("col"));if(isNaN(w)&&isNaN(T)&&(w=0,T=t.columns.length-1),g>v){let C=g;g=v,v=C}let _="ind1:"+g+",ind2;"+v+",col1:"+w+",col2:"+T;if(m.range==_)return;m.range=_;for(let C=g;C<=v;C++)if(!(t.last.searchIds.length>0&&t.last.searchIds.indexOf(C)==-1))if(t.selectType!="row"){if(w>T){let D=w;w=T,T=D}for(let D=w;D<=T;D++)t.columns[D].hidden||y.push({recid:t.records[C].recid,column:D})}else y.push(t.records[C].recid);if(t.selectType!="row"){let C=y[0],D=y[y.length-1];t.addRange({name:"selection-preview",range:[{recid:C?.recid,column:C?.column},{recid:D?.recid,column:D?.column}],class:"tsg-selection-preview"}),m.newRange=y}else if(t.multiSelect){let C=t.getSelection();for(let D=0;D<y.length;D++)C.indexOf(y[D])==-1&&t.select(y[D]);for(let D=0;D<C.length;D++)y.indexOf(C[D])==-1&&t.unselect(C[D])}}}function u(f){let m=t.last.move;if(setTimeout(()=>{t.last.cancelClick=null},1),!(P(f.target).parents().hasClass(".tsg-head")||P(f.target).hasClass(".tsg-head"))){if(t.removeRange("selection-preview"),m&&["select","select-column"].includes(m.type)){if(m.colRange!=null&&r.isCancelled!==!0){let y=m.colRange.split("-"),x=[];for(let b=0;b<t.records.length;b++){let g=[];for(let v=parseInt(y[0]);v<=parseInt(y[1]);v++)g.push(v);x.push({recid:t.records[b].recid,column:g})}r.finish(),t.selectNone(!0),t.select(x)}else m.newRange!=null&&(t.selectNone(!0),t.select(...m.newRange));if(t.reorderRows==!0&&t.last.move.reorder)if(m.to!=null){let y=t.trigger("reorderRow",{target:t.name,recid:m.from,moveBefore:m.to});if(y.isCancelled===!0){h(),delete t.last.move;return}let x=m.from.map(v=>t.get(v,!0)),b=t.get(m.to,!0);m.to=="bottom"&&(b=t.records.length);let g=x.map(v=>t.records[v]);x!=null&&b!=null&&(t.records.splice(x[0],x.length),x[0]>b?t.records.splice(b,0,...g):t.records.splice(b-1,0,...g)),t.sortData=[],P(t.box).find(`#grid_${t.name}_columns .tsg-col-header`).removeClass("tsg-col-sorted"),h(),t.selectNone(!0),t.select(m.from),y.finish()}else h()}delete t.last.move,P(document).off(".tsg-"+t.name)}}function h(){P(t.box).find(`#grid_${t.name}_ghost`).remove(),P(t.box).find(`#grid_${t.name}_ghost_line`).remove(),t.refresh(),delete t.last.move}}unmount(){super.unmount(),this.toolbar?.unmount(),this.last.observeResize?.disconnect()}destroy(){return Wn(this)}initColumnOnOff(){return Yn(this)}initColumnDrag(e){return Xn(this,e)}columnOnOff(e,s){return Kn(this,e,s)}initToolbar(){return Jn(this)}initResize(){return Zn(this)}resizeBoxes(){return ei(this)}resizeRecords(){return ti(this)}getSearchesHTML(){return hn(this)}getOperators(e,s){return pn(this,e,s)}initOperator(e){return mn(this,e)}initSearchLists(e){return gn(this,e)}initSearches(){return yn(this)}getColumnsHTML(){return si(this)}getColumnCellHTML(e){return ni(this,e)}columnTooltipShow(e,s){return ii(this,e,s)}columnTooltipHide(e,s){return oi(this,e,s)}getRecordsHTML(){return li(this)}getSummaryHTML(){return ai(this)}scroll(e){return gi(this,e)}getRecordHTML(e,s,t){return ri(this,e,s,t)}getLineHTML(e){return ci(this,e)}getCellHTML(e,s,t,i){return ui(this,e,s,t,i)}clipboardCopy(e,s,t){return di(this,e,s,t)}showBubble(e,s,t){return fi(this,e,s,t)}getCellEditable(e,s){return hi(this,e,s)}getCellValue(e,s,t,i){return pi(this,e,s,t,i)}getFooterHTML(){return mi(this)}status(e){return es(this,e)}lock(e,s){return ts(this,e,s)}unlock(e){return ss(this,e)}stateSave(e){return ns(this,e)}stateRestore(e){return is(this,e)}stateReset(){return os(this)}parseField(e,s){return ls(this,e,s)}prepareData(){return as(this)}nextCell(e,s,t){return rs(this,e,s,t)}prevCell(e,s,t){return cs(this,e,s,t)}nextRow(e,s,t){return us(this,e,s,t)}prevRow(e,s,t){return ds(this,e,s,t)}selectionSave(){return fs(this)}selectionRestore(e){return hs(this,e)}message(e){return ps(this,e)}confirm(e){return ms(this,e)}};var yi=W,L=j,dt=class extends ne{header;url;method;routeData;formURL;formHTML;page;pageStyle;recid;fields;actions;record;original;dataType;saveCleanRecord;postData;httpHeaders;toolbar;tabs;style;focus;autosize;nestedFields;tabindexBase;isGenerated;last;onRequest;onLoad;onValidate;onSubmit;onProgress;onSave;onChange;onInput;onRender;onRefresh;onResize;onDestroy;onAction;onToolbar;onError;msgRefresh;msgSaving;msgServerError;ALL_TYPES;LIST_TYPES;TsFIELD_TYPES;constructor(e){super(e.name),this.name="",this.header="",this.box=null,this.url="",this.method=null,this.routeData={},this.formURL="",this.formHTML="",this.page=0,this.pageStyle="",this.recid=null,this.fields=[],this.actions={},this.record={},this.original=null,this.dataType=null,this.saveCleanRecord=!0,this.postData={},this.httpHeaders={},this.toolbar={},this.tabs={},this.style="",this.focus=0,this.autosize=!0,this.nestedFields=!0,this.tabindexBase=0,this.isGenerated=!1,this.last={fetchCtrl:null,fetchOptions:null,errors:[]},this.onRequest=null,this.onLoad=null,this.onValidate=null,this.onSubmit=null,this.onProgress=null,this.onSave=null,this.onChange=null,this.onInput=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onAction=null,this.onToolbar=null,this.onError=null,this.msgRefresh="Loading...",this.msgSaving="Saving...",this.msgServerError="Server error",this.ALL_TYPES=["text","textarea","email","pass","password","int","float","money","currency","percent","hex","alphanumeric","color","date","time","datetime","toggle","checkbox","radio","check","checks","list","combo","enum","file","select","switch","map","array","div","custom","html","empty","columns"],this.LIST_TYPES=["select","radio","check","checks","list","combo","enum","switch"],this.TsFIELD_TYPES=["int","float","money","currency","percent","hex","alphanumeric","color","date","time","datetime","list","combo","enum","file"],p.extend(this,e);let s=e.record,t=e.original,i=e.fields,o=e.toolbar,l=e.tabs;if(Object.assign(this,{record:{},original:null,fields:[],tabs:{},toolbar:{},handlers:[]}),i){let r=a(i);this.fields=r.fields,!l&&r.tabs.length>0&&(l=r.tabs)}if(Array.isArray(l)){p.extend(this.tabs,{tabs:[]});for(let r=0;r<l.length;r++){let c=l[r];typeof c=="object"?(this.tabs.tabs.push(c),c.active===!0&&(this.tabs.active=c.id)):this.tabs.tabs.push({id:c,text:c})}}else p.extend(this.tabs,l);p.extend(this.toolbar,o);for(let r in s)p.isPlainObject(s[r])?this.record[r]=p.clone(s[r]):this.record[r]=s[r];for(let r in t)this.original==null&&(this.original={}),p.isPlainObject(t[r])?this.original[r]=p.clone(t[r]):this.original[r]=t[r];this.formURL!==""?fetch(this.formURL).then(r=>r.text()).then(r=>{this.formHTML=r,this.isGenerated=!0,this.box&&this.render(this.box)}):!this.formURL&&!this.formHTML?(this.formHTML=this.generateHTML(),this.isGenerated=!0):this.formHTML&&(this.isGenerated=!0),typeof this.box=="string"&&(this.box=L(this.box).get(0)),this.box&&this.render(this.box);function a(r){let c=[],d=[];if(p.isPlainObject(r)){let m=function(x){let b=["html"];return x.html==null&&(x.html={}),Object.keys(x).forEach((g=>{b.includes(g)||["label","attr","style","text","span","page","column","anchor","group","groupStyle","groupTitleStyle","groupCollapsible"].includes(g)&&(x.html[g]=x[g],delete x[g])})),x},y=function(x,b){let g=["style","html"];Object.keys(x).forEach((v=>{g.includes(v)||["span","column","attr","text","label"].includes(v)&&x[v]&&!b.html[v]&&(b.html[v]=x[v])}))};var u=m,h=y;let f=r;r=[],Object.keys(f).forEach(x=>{let b=f[x];if(b.type=="group"){if(b.text=x,p.isPlainObject(b.fields)){let g=b.fields;b.fields=[],Object.keys(g).forEach(v=>{let w=g[v];w.field=v,b.fields.push(m(w))})}r.push(b)}else if(b.type=="tab"){let g={id:x,text:x};b.style&&(g.style=b.style),d.push(g);let v=a(b.fields).fields;v.forEach(w=>{w.html=w.html||{},w.html.page=d.length-1,y(b,w)}),r.push(...v)}else b.field=x,r.push(m(b))})}return r.forEach(f=>{if(f.type=="group"){let m={group:f.text||"",groupStyle:f.style||"",groupTitleStyle:f.titleStyle||"",groupCollapsible:f.collapsible===!0};Array.isArray(f.fields)&&f.fields.forEach(y=>{let x=p.clone(y);x.html==null&&(x.html={}),p.extend(x.html,m),["span","column","attr","label","page"].forEach(b=>{x.html[b]==null&&f[b]!=null&&(x.html[b]=f[b])}),x.field==null&&x.name!=null&&(console.log("NOTICE: form field.name property is deprecated, please use field.field. Field ->",f),x.field=x.name),c.push(x)})}else{let m=p.clone(f);m.field==null&&m.name!=null&&(console.log("NOTICE: form field.name property is deprecated, please use field.field. Field ->",f),m.field=m.name),c.push(m)}}),{fields:c,tabs:d}}}get(e,s){if(arguments.length===0){let t=[];for(let i=0;i<this.fields.length;i++)this.fields[i].field!=null&&t.push(this.fields[i].field);return t}else{for(let t=0;t<this.fields.length;t++)if(this.fields[t].field==e)return s===!0?t:this.fields[t];return null}}set(e,s){for(let t=0;t<this.fields.length;t++)if(this.fields[t].field==e)return p.extend(this.fields[t],s),delete this.fields[t].TsField,this.refresh(e),!0;return!1}getValue(e,s){if(this.nestedFields){let t;try{let i=s===!0?this.original:this.record;t=String(e).split(".").reduce((o,l)=>o[l],i)}catch{}return t}else return this.record[e]}setValue(e,s,t){if((s===""||s==null||Array.isArray(s)&&s.length===0||p.isPlainObject(s)&&Object.keys(s).length==0)&&(s=null),this.nestedFields)try{let i=this.record;return String(e).split(".").map((o,l,a)=>{a.length-1!==l?(i[o]||(i[o]={}),i=i[o]):i[o]=s}),t||this.setFieldValue(e,s),!0}catch{return!1}else return this.record[e]=s,t||this.setFieldValue(e,s),!0}rememberOriginal(){this.original==null&&(Object.keys(this.record).length>0?this.original=p.clone(this.record):this.original={})}getFieldValue(e){let s=this.get(e);if(s==null)return;let t=s.el,i=this.getValue(e),o=this.getValue(e,!0),l=t.value;if(["int","float","percent","money","currency"].includes(s.type)&&(l=s.TsField.clean(l)),["radio"].includes(s.type)){let r=L(t).closest(".tsg-field-group").find("input:checked").get(0);r?l=s.options.items[L(r).data("index")].id:l=null}if(["toggle","checkbox"].includes(s.type)&&(l=t.checked),["check","checks"].includes(s.type)){l=[];let r=L(t).closest(".tsg-field-group").find("input:checked");r.length>0&&r.each(c=>{let d=c,u=s.options.items[L(d).data("index")];l.push(u.id)}),Array.isArray(i)||(i=[])}let a=s.TsField?.selected;if(["list","enum","file"].includes(s.type)&&a){let r=a,c=i;if(Array.isArray(r)){l=[];for(let d=0;d<r.length;d++)l[d]=p.clone(r[d])}if(Array.isArray(c)){i=[];for(let d=0;d<c.length;d++)i[d]=p.clone(c[d])}p.isPlainObject(r)&&(l=p.clone(r)),p.isPlainObject(c)&&(i=p.clone(c))}return["map","array"].includes(s.type)&&(l=s.type=="map"?{}:[],s.$el.parent().find(".tsg-map-field").each((r,c)=>{let d=L(r).find(".tsg-map.key").val(),u=L(r).find(".tsg-map.value").val();typeof s.html?.render=="function"?(l[c]??={},L(r).find("input, textarea").each(h=>{let f=h,m=f.dataset.name??f.name;m!=null&&m!=""&&(l[c][m]=["checkbox","radio"].includes(f.type)?f.checked:f.value)})):s.type=="map"?l[d]=u:l.push(u)})),{current:l,previous:i,original:o}}findItem(e,s){return s.find(t=>t.id===e||t.id===e?.id)}setFieldValue(e,s){let t=this.get(e);if(t==null)return;let i=t.el;switch(t.type){case"toggle":case"checkbox":{i.checked=!!s;break}case"radio":{s=s?.id??s;let o=L(i).closest(".tsg-field-group").find("input");t.options.items.forEach((a,r)=>{let c=o.filter(`[data-index="${r}"]`);a.id===s?c.prop("checked",!0):c.prop("checked",!1),a.hidden===!0?c.closest(".tsg-field-item").hide():c.closest(".tsg-field-item").show()});break}case"check":case"checks":{Array.isArray(s)||(s!=null?s=[s]:s=[]),s=s.map(a=>a?.id??a);let o=L(i).closest("div.tsg-field-group").find("input");t.options.items.forEach((a,r)=>{let c=o.filter(`[data-index="${r}"]`);c.prop("checked",!!s.includes(a.id)),a.hidden===!0?c.closest(".tsg-field-item").hide():c.closest(".tsg-field-item").show()});break}case"list":case"combo":{let o=s,l=t.options?.itemMap;o?.id==null&&Array.isArray(t.options?.items)&&t.options.items.forEach(a=>{p.getNested(a,l?.id??"id")===s&&(o=a)}),o?.id!=null&&o?.text==null&&Array.isArray(t.options?.items)&&t.options.items.forEach(a=>{p.getNested(a,l?.id??"id")===o.id&&(o.text=p.getNested(a,l.text??"text"))}),o!=s&&this.setValue(t.name,o,!0),t.type=="list"?(t.TsField.selected=o,t.TsField.refresh()):i.value=o?.text??s;break}case"switch":{i.value=s,t.toolbar.uncheck(...t.toolbar.get()),t.toolbar.check(s);break}case"enum":case"file":{Array.isArray(s)||(s=s!=null?[s]:[]);let o=[...s],l=!1;o.forEach((a,r)=>{a?.id==null&&Array.isArray(t.options.items)&&t.options.items.forEach(c=>{c.id==a&&(o[r]=c,l=!0)})}),l&&this.setValue(t.name,o,!0),t.TsField.selected=o,t.TsField.refresh();break}case"map":case"array":{t.type=="map"&&(s==null||!p.isPlainObject(s))&&(this.setValue(t.field,{},!0),s=this.getValue(t.field)),t.type=="array"&&(s==null||!Array.isArray(s))&&(this.setValue(t.field,[],!0),s=this.getValue(t.field));let o=L(t.el).parent().find(".tsg-map-container");t.el.mapRefresh(s,o);break}case"div":case"custom":{L(i).html(s);break}case"color":{i.value=s??"",t.TsField.refresh();break}case"html":case"empty":break;default:if(s!=null&&i._w2field?.format){let o=i._w2field;s=o.format(o.clean(s))}i.value=s??"";break}this.fields.forEach(o=>{if(o?.options?.parentList!=null){let l,a=this.getValue(o.options.parentList);if(Array.isArray(a)?a=a.map(r=>r.id):a=a?.id!=null?[a.id]:[],o.options?.items?.forEach?.(r=>{let c=p.getNested(r,o.options.parentField??"parentId");if(c==null)return;let d=p.clone(Array.isArray(c)?c:[c]);d.unshift("");let u=a.some(h=>d.includes(h));u&&r.hidden===!0?(r.hidden=!1,l=!0):!u&&r.hidden!==!0&&(r.hidden=!0,l=!0)}),l){let r=this.getValue(o.field);if(r?.id!=null&&(r=r.id),o.type=="enum"){let c=o.options.items.filter(h=>!h.hidden).map(h=>h.id),d=this.getValue(o.field);Array.isArray(d)||(d=[d]),d=d.map(h=>((typeof h=="string"||typeof h=="number")&&(h=o.options.items.find(f=>f.id==h)),h));let u=d.filter(h=>c.includes(h.id));this.setValue(o.field,u,!0)}else o.options.items.forEach(c=>{c.id==r&&c.hidden&&this.setValue(o.field,null,!0)});this.set(o.field,{items:o.options.items})}}})}show(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&i.hidden&&(i.hidden=!1,s.push(i.field))}return s.length>0&&this.refresh(...s),this.updateEmptyGroups(),s}hide(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&!i.hidden&&(i.hidden=!0,s.push(i.field))}return s.length>0&&this.refresh(...s),this.updateEmptyGroups(),s}enable(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&i.disabled&&(i.disabled=!1,s.push(i.field))}return s.length>0&&this.refresh(...s),s}disable(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&!i.disabled&&(i.disabled=!0,s.push(i.field))}return s.length>0&&this.refresh(...s),s}updateEmptyGroups(){L(this.box).find(".tsg-group").each(s=>{let t=s;e(L(t).find(".tsg-field"))?L(t).hide():L(t).show()});function e(s){let t=!0;return s.each(i=>{i.style.display!="none"&&(t=!1)}),t}}hideGroup(e){let s=[],t="";this.fields.forEach(i=>{i.html.group!=null&&i.html.group!==""&&(t=String(i.html.group).toLowerCase()),e.toLowerCase()==t&&s.push(i.field)}),this.hide(...s),this.resize()}showGroup(e){let s=[],t="";this.fields.forEach(i=>{i.html.group!=null&&i.html.group!==""&&(t=String(i.html.group).toLowerCase()),e.toLowerCase()==t&&s.push(i.field)}),this.show(...s),this.resize()}toggleGroup(e,s){let t=L(this.box).find('.tsg-group-title[data-group="'+p.base64encode(e)+'"]');if(t.length===0)return;let i=L(t.prop("nextElementSibling"));typeof s>"u"&&(s=i.css("display")=="none"),s?(i.show(),t.find("span").addClass("tsg-icon-collapse").removeClass("tsg-icon-expand")):(i.hide(),t.find("span").addClass("tsg-icon-expand").removeClass("tsg-icon-collapse"))}change(...e){e.forEach(s=>{let t=this.get(s);t.$el&&t.$el.change()})}reload(e){return(typeof this.url!="object"?this.url:this.url.get)&&this.recid!=null?this.request(e):(typeof e=="function"&&e(),new Promise(t=>{t(void 0)}))}clear(...e){e.length!=0?e.forEach(s=>{let t=this.record;String(s).split(".").map((i,o,l)=>{l.length-1!==o?t=t[i]:delete t[i]}),this.refresh(s)}):(this.recid=null,this.record={},this.original=null,this.refresh(),this.hideErrors())}error(e){let s=this.trigger("error",{target:this.name,message:e,fetchCtrl:this.last.fetchCtrl,fetchOptions:this.last.fetchOptions});s.isCancelled!==!0&&(setTimeout(()=>{this.message(e)},1),s.finish())}message(e){return p.message({owner:this,box:this.box,after:".tsg-form-header"},e)}confirm(e){return p.confirm({owner:this,box:this.box,after:".tsg-form-header"},e)}validate(e){e==null&&(e=!0);let s=[];for(let i=0;i<this.fields.length;i++){let o=this.fields[i];if(o.type=="columns"||o.field==null)continue;if(this.getValue(o.field)==null&&this.setValue(o.field,""),["int","float","currency","money"].includes(o.type)){let a=this.getValue(o.field),r=o.options.min,c=o.options.max;r!=null&&a!=null&&a<r&&s.push({field:o,error:p.lang("Should be more than ${min}",{min:r})}),c!=null&&a!=null&&a>c&&s.push({field:o,error:p.lang("Should be less than ${max}",{max:c})})}switch(o.type){case"alphanumeric":this.getValue(o.field)&&!p.isAlphaNumeric(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not alpha-numeric")});break;case"int":this.getValue(o.field)&&!p.isInt(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not an integer")});break;case"percent":case"float":this.getValue(o.field)&&!p.isFloat(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a float")});break;case"currency":case"money":this.getValue(o.field)&&!p.isMoney(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not in money format")});break;case"color":case"hex":this.getValue(o.field)&&!p.isHex(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a hex number")});break;case"email":this.getValue(o.field)&&!p.isEmail(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a valid email")});break;case"checkbox":this.getValue(o.field)==!0?this.setValue(o.field,!0):this.setValue(o.field,!1);break;case"date":o.options.format||(o.options.format=p.settings.dateFormat),this.getValue(o.field)&&!p.isDate(this.getValue(o.field),o.options.format)&&s.push({field:o,error:p.lang("Not a valid date")+": "+o.options.format});break;case"list":case"combo":case"switch":break;case"enum":break}let l=this.getValue(o.field);o.hidden!==!0&&o.required&&!["div","custom","html","empty"].includes(o.type)&&(l==null||l===""||Array.isArray(l)&&l.length===0||p.isPlainObject(l)&&Object.keys(l).length==0)&&s.push({field:o,error:p.lang("Required field")}),o.hidden!==!0&&o.options?.minLength>0&&!["enum","list","combo"].includes(o.type)&&(l==null||l.length<o.options.minLength)&&s.push({field:o,error:p.lang("Field should be at least ${count} characters.",{count:o.options.minLength})})}let t=this.trigger("validate",{target:this.name,errors:s});if(t.isCancelled!==!0)return this.last.errors=s,e&&this.showErrors(),t.finish(),s}showErrors(){let e=this.last.errors;e.length<=0||(this.goto(e[0].field.page),L(e[0].field.$el).parents(".tsg-field").get(0).scrollIntoView({block:"nearest",inline:"nearest"}),e.forEach(s=>{let t=p.extend({anchorClass:"tsg-error",class:"tsg-light",position:"right|left",hideOn:["input","tooltip-click"]},s.options);if(s.field==null)return;let i=s.field.el;s.field.type==="radio"?i=L(s.field.el).closest("div").get(0):["enum","file"].includes(s.field.type),yi.show(p.extend({anchor:i,name:`${this.name}-${s.field.field}-error`,html:s.error},t))}),this.last.errorsShown=!0,L(e[0].field.$el).parents(".tsg-page").off(".hideErrors").on("scroll.hideErrors",s=>{this.last.errorsShown&&this.showErrors()}))}hideErrors(){this.last.errorsShown=!1,this.fields.forEach(e=>{yi.hide(`${this.name}-${e.field}-error`)})}getChanges(){let e={};return this.original!=null&&typeof this.original=="object"&&Object.keys(this.record).length!==0&&(e=s(this.record,this.original,{})),e;function s(t,i,o){if(Array.isArray(t)&&Array.isArray(i))for(;t.length<i.length;)t.push(null);for(let l in t)t[l]!=null&&typeof t[l]=="object"?(o[l]=s(t[l],i[l]||{},{}),(!o[l]||Object.keys(o[l]).length==0&&Object.keys(i[l].length==0))&&delete o[l]):(t[l]!=i[l]||t[l]==null&&i[l]!=null)&&(o[l]=t[l]);return Object.keys(o).length!=0?o:null}}getCleanRecord(e){let s=p.clone(this.record);return this.fields.forEach(t=>{if(!(t.type=="columns"||t.field==null)){if(["list","combo","enum"].includes(t.type)){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field);p.isPlainObject(o)&&o.id!=null&&this.setValue.call(i,t.field,o.id),Array.isArray(o)&&o.forEach((l,a)=>{p.isPlainObject(l)&&l.id&&(o[a]=l.id)})}if(t.type=="map"){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field);o._order&&delete o._order}if(t.type=="file"){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field)??[];o.forEach(l=>{delete l.file,delete l.modified}),this.setValue.call(i,t.field,o)}}}),e===!0&&Object.keys(s).forEach(t=>{this.get(t)||delete s[t]}),s}request(e,s){let t=this,i,o,l=new Promise((h,f)=>{i=h,o=f});if(typeof e=="function"&&(s=e,e=null),e==null&&(e={}),!this.url||typeof this.url=="object"&&!this.url.get)return;let a={};a.action="get",a.recid=this.recid,a.name=this.name,p.extend(a,this.postData),p.extend(a,e);let r=this.trigger("request",{target:this.name,url:this.url,httpMethod:"GET",postData:a,httpHeaders:this.httpHeaders});if(r.isCancelled===!0)return;this.record={},this.original=null,this.lock(p.lang(this.msgRefresh));let c=r.detail.url;if(typeof c=="object"&&c.get&&(c=c.get),this.last.fetchCtrl)try{this.last.fetchCtrl.abort()}catch{}if(Object.keys(this.routeData).length!=0){let h=p.parseRoute(c);if(h.keys.length>0)for(let f=0;f<h.keys.length;f++){let m=h.keys[f];m==null||this.routeData[m.name]==null||(c=c.replace(new RegExp(":"+m.name,"g"),this.routeData[m.name]))}}c=new URL(c,location.href);let d=p.prepareParams(c,{method:r.detail.httpMethod,headers:r.detail.httpHeaders,body:r.detail.postData},{dataType:this.dataType,caller:this,action:"request"});return this.last.fetchCtrl=new AbortController,d.signal=this.last.fetchCtrl.signal,this.last.fetchOptions=d,fetch(c,d).catch(u).then(h=>{if(h?.status!=200){h&&u(h);return}h.json().catch(u).then(f=>{let m=t.trigger("load",{target:t.name,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions,data:f});m.isCancelled!==!0&&(f.error==null&&f.status==="error"&&(f.error=!0),f.record||Object.assign(f,{record:p.clone(f)}),f.error===!0?t.error(p.lang(f.message??t.msgServerError)):t.record=p.clone(f.record),t.unlock(),m.finish(),t.refresh(),t.setFocus(),typeof s=="function"&&s(f),i(f))})}),r.finish(),l;function u(h){if(h.name==="AbortError")return;t.unlock();let f=t.trigger("error",{response:h,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions});f.isCancelled!==!0&&(h.status&&h.status!=200?t.error(h.status+": "+h.statusText):(console.log("ERROR: Server request failed.",h,". ","Expected Response:",{error:!1,record:{field1:1,field2:"item"}},"OR:",{error:!0,message:"Error description"}),t.error(String(h))),f.finish(),o(h))}}submit(e,s){return this.save(e,s)}save(e,s){let t=this,i,o,l=new Promise((f,m)=>{i=f,o=m});if(typeof e=="function"&&(s=e,e=null),(t.validate(!0)?.length??0)!==0)return;if(e==null&&(e={}),!t.url||typeof t.url=="object"&&!t.url.save){console.log("ERROR: Form cannot be saved because no url is defined.");return}t.lock(p.lang(t.msgSaving)+' <span id="'+t.name+'_progress"></span>');let r={};r.action="save",r.recid=t.recid,r.name=t.name,p.extend(r,t.postData),p.extend(r,e),r.record=p.clone(t.saveCleanRecord?t.getCleanRecord():t.record);let c=t.trigger("submit",{target:t.name,url:t.url,httpMethod:this.method??"POST",postData:r,httpHeaders:t.httpHeaders});if(c.isCancelled===!0)return;let d=c.detail.url;if(typeof d=="object"&&d.save&&(d=d.save),t.last.fetchCtrl&&t.last.fetchCtrl.abort(),Object.keys(t.routeData).length>0){let f=p.parseRoute(d);if(f.keys.length>0)for(let m=0;m<f.keys.length;m++){let y=f.keys[m];y==null||t.routeData[y.name]==null||(d=d.replace(new RegExp(":"+y.name,"g"),t.routeData[y.name]))}}d=new URL(d,location.href);let u=p.prepareParams(d,{method:c.detail.httpMethod,headers:c.detail.httpHeaders,body:c.detail.postData},{dataType:this.dataType,caller:this,action:"save"});return this.last.fetchCtrl=new AbortController,u.signal=this.last.fetchCtrl.signal,this.last.fetchOptions=u,fetch(d,u).catch(h).then(f=>{if(t.unlock(),f?.status!=200){h(f??{});return}f.json().catch(h).then(m=>{let y=t.trigger("save",{target:t.name,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions,data:m});y.isCancelled!==!0&&(m.error===!0?t.error(p.lang(m.message??t.msgServerError)):t.original=null,y.finish(),t.refresh(),typeof s=="function"&&s(m),i(m))})}),c.finish(),l;function h(f){if(f?.name==="AbortError")return;t.unlock();let m=t.trigger("error",{response:f,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions});m.isCancelled!==!0&&(f.status&&f.status!=200?f.json().then(y=>{t.error(f.status+": "+(y.message||f.statusText))}).catch(()=>{t.error(f.status+": "+f.statusText)}):(console.log("ERROR: Server request failed.",f,". ","Expected Response:",{error:!1,record:{field1:1,field2:"item"}},"OR:",{error:!0,message:"Error description"}),t.error(String(f))),m.finish(),o())}}lock(e,s){p.lock(this.box,e,s)}unlock(e){let s=this.box;p.unlock(s,e)}lockPage(e,s,t){let i=L(this.box).find(".page-"+e);return i.length?(p.lock(i,s,t),!0):!1}unlockPage(e,s){let t=L(this.box).find(".page-"+e);return t.length?(p.unlock(t,s),!0):!1}goto(e){this.page!==e&&(e!=null&&(this.page=e),L(this.box).data("autoSize")===!0&&(L(this.box).get(0).clientHeight=0),this.refresh())}generateHTML(){let e=[],s="",t,i,o,l;for(let c=0;c<this.fields.length;c++){let d="";o=this.tabindexBase+c+1,l=' tabindex="'+o+'"';let u=this.fields[c];u.html==null&&(u.html={}),typeof u.html=="string"&&(u.html={html:u.html,span:0,attr:"tabindex"},l=""),u.options==null&&(u.options={}),u.html.caption!=null&&u.html.label==null&&(console.log("NOTICE: form field.html.caption property is deprecated, please use field.html.label. Field ->",u),u.html.label=u.html.caption),u.html.label==null&&(u.html.label=u.field),u.html.anchor!=null&&u.html.span==null&&(u.html.span=""),u.html=p.extend({label:"",span:6,attr:"",text:"",style:"",page:0,column:0},u.html),t==null&&(t=u.html.page),i==null&&(i=u.html.column);let h=`<input id="${u.field}" name="${u.field}" class="tsg-input ${u.html.class??""}" type="text" ${u.html.attr+l}>`;switch(u.type){case"pass":case"password":h=h.replace('type="text"','type="password"');break;case"checkbox":{h=`
534
+ `)),x.push({kind:g.type=="text/html"?"html":"text",data:v})}}x.length===1&&x[0].kind!="file"&&(x=x[0].data),se[this.name].paste(x,f),f.preventDefault()}}).on("keydown",function(f){se[t.name].keydown.call(se[t.name],f)});let r;return P(this.box).off("mousedown.mouseStart").on("mousedown.mouseStart",c),this.updateToolbar(),i.finish(),this.last.observeResize=new ResizeObserver(()=>{this.resize(),this.scroll()}),this.last.observeResize.observe(this.box),Date.now()-s;function c(f){if(f.which==1&&(t.last.userSelect=="text"&&(t.last.userSelect="",P(t.box).find(".tsg-grid-body").css("user-select","none")),!(t.selectType=="row"&&(P(f.target).parents().hasClass("tsg-head")||P(f.target).hasClass("tsg-head")))&&!(t.last.move&&t.last.move.type=="expand"))){if(f.altKey)P(t.box).find(".tsg-grid-body").css("user-select","text"),t.selectNone(),t.last.move={type:"text-select"},t.last.userSelect="text";else{let m=f.target,y={x:f.offsetX-10,y:f.offsetY-10},x=!1;for(;m&&!(m.classList&&m.classList.contains("tsg-grid"));)m.tagName&&m.tagName.toUpperCase()=="TD"&&(x=!0),m.tagName&&m.tagName.toUpperCase()!="TR"&&x==!0&&(y.x+=m.offsetLeft,y.y+=m.offsetTop),m=m.parentNode;let b=P(f.target).parents("tr").attr("index"),g=t.records[b]?.recid;if(t.selectType=="cell"&&!f.shiftKey){let T=parseInt(P(f.target).closest("td").attr("col")),_=T;isNaN(T)&&(T=0,_=t.columns.length-1),t.addRange({name:"selection-preview",range:[{recid:g,column:T},{recid:g,column:_}],class:"tsg-selection-preview"})}if(t.last.move={x:f.screenX,y:f.screenY,divX:0,divY:0,focusX:y.x,focusY:y.y,recid:g,column:parseInt(f.target.tagName.toUpperCase()=="TD"?P(f.target).attr("col"):P(f.target).parents("td").attr("col")),type:"select",ghost:!1,start:!0},t.last.move.recid==null&&t.records.length>0){t.last.move.type="select-column";let T=parseInt(P(f.target).closest("td").attr("col")),_=t.records[0].recid,C=t.records[t.records.length-1].recid;t.addRange({name:"selection-preview",range:[{recid:_,column:T},{recid:C,column:T}],class:"tsg-selection-preview"})}let v=f.target,w=P(t.box).find("#grid_"+t.name+"_focus");if(t.last.move){let T=t.last.move.focusX,_=t.last.move.focusY,C=P(v).parents("table").parent();(C.hasClass("tsg-grid-records")||C.hasClass("tsg-grid-frecords")||C.hasClass("tsg-grid-columns")||C.hasClass("tsg-grid-fcolumns")||C.hasClass("tsg-grid-summary"))&&(T=t.last.move.focusX-P(t.box).find("#grid_"+t.name+"_records").prop("scrollLeft"),_=t.last.move.focusY-P(t.box).find("#grid_"+t.name+"_records").prop("scrollTop")),(P(v).hasClass("tsg-grid-footer")||P(v).parents("div.tsg-grid-footer").length>0)&&(_=P(t.box).find("#grid_"+t.name+"_footer").get(0).offsetTop),C.hasClass("tsg-scroll-wrapper")&&C.parent().hasClass("tsg-toolbar")&&(T=t.last.move.focusX-C.prop("scrollLeft")),w.css({left:T-10,top:_})}setTimeout(()=>{t.last.inEditMode||(["INPUT","TEXTAREA","SELECT"].includes(v.tagName)?v.focus():w.get(0)!==document.activeElement&&w.get(0)?.focus({preventScroll:!0}))},50),!t.multiSelect&&!t.reorderRows&&t.last.move.type=="drag"&&delete t.last.move}if(t.reorderRows==!0){let m=f.target;if(m.tagName.toUpperCase()!="TD"&&(m=P(m).parents("td")[0]),P(m).hasClass("tsg-col-number")||P(m).hasClass("tsg-col-order")){let y=t.getSelection();if(y.length>0&&typeof y[0]=="object"){let C=y;t.select([...new Set(C.map(D=>D.recid))]),y=[...new Set(t.getSelectionCells().map(D=>D.recid))]}y.indexOf(t.last.move.recid)==-1&&(t.selectNone(),t.select([t.last.move.recid]),y=[t.last.move.recid]);let x=[],b=C=>{let D=t.get(C);D?.TsUi?.children&&D.TsUi.children.forEach(O=>{t.get(O.recid)&&(x.push(O.recid),b(O.recid))})};y.forEach(C=>b(C)),y=[...y,...x],t.last.move.reorder=!0;let g=P(t.box).find(".tsg-even.tsg-empty-record").css("background-color"),v=P(t.box).find(".tsg-odd.tsg-empty-record").css("background-color");P(t.box).find(".tsg-even td").filter(":not(.tsg-col-number)").css("background-color",g),P(t.box).find(".tsg-odd td").filter(":not(.tsg-col-number)").css("background-color",v);let w=t.last.move,T=P(t.box).find(".tsg-grid-records");if(!w.ghost){let C=y.map(O=>P(t.box).find(`#grid_${t.name}_rec_${O}`)),D=C[0].parents("table").find("tr:first-child").get(0).cloneNode(!0);w.offsetY=f.offsetY,w.from=y,w.pos={top:C[0].get(0).offsetTop-1,left:C[C.length-1].get(0).offsetLeft},w.ghost=P(C.map(O=>O.get(0).cloneNode(!0))),w.ghost.removeAttr("id"),w.ghost.find("td").css({"border-top":"1px solid silver","border-bottom":"1px solid silver"}),C.forEach(O=>{O.find("td").remove(),O.append(`<td colspan="1000"><div class="tsg-reorder-empty" style="height: ${t.recordHeight-2}px"></div></td>`)}),T.append('<div id="grid_'+t.name+'_ghost_line" style="position: absolute; z-index: 999999; pointer-events: none; width: 100%;"></div>'),T.append('<table id="grid_'+t.name+'_ghost" style="position: absolute; z-index: 999998; opacity: 0.9; pointer-events: none;"></table>'),P(t.box).find("#grid_"+t.name+"_ghost").append(D).append(w.ghost)}P(t.box).find("#grid_"+t.name+"_ghost").css({top:w.pos.top+"px",left:w.pos.left+"px"})}else t.last.move.reorder=!1}P(document).on("mousemove.tsg-"+t.name,d).on("mouseup.tsg-"+t.name,u),f.stopPropagation()}}function d(f){if(!f.target.tagName)return;let m=t.last.move;if(!m||!["select","select-column"].includes(m.type)||(m.divX=f.screenX-m.x,m.divY=f.screenY-m.y,Math.abs(m.divX)<=1&&Math.abs(m.divY)<=1))return;if(t.last.cancelClick=!0,t.reorderRows==!0&&t.last.move.reorder){let v=P(f.target).parents("tr").attr("index"),w=t.records[v]?.recid;if((w=="-none-"||w==null)&&(w="bottom"),m.from.indexOf(w)==-1){let _=P(t.box).find("#grid_"+t.name+"_rec_"+w);P(t.box).find(".insert-before"),_.addClass("insert-before"),m.lastY=f.screenY,m.to=w;let C={top:_.get(0)?.offsetTop,left:_.get(0)?.offsetLeft},D=P(t.box).find("#grid_"+t.name+"_ghost_line");C?D.css({top:C.top+"px",left:m.pos.left+"px","border-top":"2px solid #769EFC"}):D.css({"border-top":"2px solid transparent"})}P(t.box).find("#grid_"+t.name+"_ghost").css({top:m.pos.top+m.divY+"px",left:m.pos.left+"px"});return}t.selectType=="row"&&m.start&&m.recid&&(t.selectNone(),m.start=!1);let y=[],x=f.target.tagName.toUpperCase()=="TR"?P(f.target).attr("index"):P(f.target).parents("tr").attr("index"),b=t.records[x]?.recid;if(b==null){if(t.selectType=="row"||t.last.move&&t.last.move.type=="select")return;let g=parseInt(P(f.target).parents("td").attr("col"));if(isNaN(g))t.removeRange("column-selection"),P(t.box).find(".tsg-grid-columns .tsg-col-header, .tsg-grid-fcolumns .tsg-col-header").removeClass("tsg-col-selected"),P(t.box).find(".tsg-col-number").removeClass("tsg-row-selected"),delete m.colRange;else{let v=g+"-"+g;m.column<g&&(v=m.column+"-"+g),m.column>g&&(v=g+"-"+m.column);let w=[],T=v.split("-");for(let _=parseInt(T[0]??"0");_<=parseInt(T[1]??"0");_++)w.push(_);if(m.colRange!=v&&m.type=="select-column"&&(r=t.trigger("columnSelect",{target:t.name,columns:w}),r.isCancelled!==!0)){m.colRange=v;let _=t.records[0].recid,C=t.records[t.records.length-1].recid;t.addRange({name:"selection-preview",range:[{recid:_,column:T[0]},{recid:C,column:T[1]}],class:"tsg-selection-preview"})}}}else{let g=t.get(m.recid,!0);if(g==null||t.records[g]&&t.records[g].recid!=m.recid)return;let v=t.get(b,!0);if(v==null)return;let w=parseInt(m.column),T=parseInt(f.target.tagName.toUpperCase()=="TD"?P(f.target).attr("col"):P(f.target).parents("td").attr("col"));if(isNaN(w)&&isNaN(T)&&(w=0,T=t.columns.length-1),g>v){let C=g;g=v,v=C}let _="ind1:"+g+",ind2;"+v+",col1:"+w+",col2:"+T;if(m.range==_)return;m.range=_;for(let C=g;C<=v;C++)if(!(t.last.searchIds.length>0&&t.last.searchIds.indexOf(C)==-1))if(t.selectType!="row"){if(w>T){let D=w;w=T,T=D}for(let D=w;D<=T;D++)t.columns[D].hidden||y.push({recid:t.records[C].recid,column:D})}else y.push(t.records[C].recid);if(t.selectType!="row"){let C=y[0],D=y[y.length-1];t.addRange({name:"selection-preview",range:[{recid:C?.recid,column:C?.column},{recid:D?.recid,column:D?.column}],class:"tsg-selection-preview"}),m.newRange=y}else if(t.multiSelect){let C=t.getSelection();for(let D=0;D<y.length;D++)C.indexOf(y[D])==-1&&t.select(y[D]);for(let D=0;D<C.length;D++)y.indexOf(C[D])==-1&&t.unselect(C[D])}}}function u(f){let m=t.last.move;if(setTimeout(()=>{t.last.cancelClick=null},1),!(P(f.target).parents().hasClass(".tsg-head")||P(f.target).hasClass(".tsg-head"))){if(t.removeRange("selection-preview"),m&&["select","select-column"].includes(m.type)){if(m.colRange!=null&&r.isCancelled!==!0){let y=m.colRange.split("-"),x=[];for(let b=0;b<t.records.length;b++){let g=[];for(let v=parseInt(y[0]);v<=parseInt(y[1]);v++)g.push(v);x.push({recid:t.records[b].recid,column:g})}r.finish(),t.selectNone(!0),t.select(x)}else m.newRange!=null&&(t.selectNone(!0),t.select(...m.newRange));if(t.reorderRows==!0&&t.last.move.reorder)if(m.to!=null){let y=t.trigger("reorderRow",{target:t.name,recid:m.from,moveBefore:m.to});if(y.isCancelled===!0){h(),delete t.last.move;return}let x=m.from.map(v=>t.get(v,!0)),b=t.get(m.to,!0);m.to=="bottom"&&(b=t.records.length);let g=x.map(v=>t.records[v]);x!=null&&b!=null&&(t.records.splice(x[0],x.length),x[0]>b?t.records.splice(b,0,...g):t.records.splice(b-1,0,...g)),t.sortData=[],P(t.box).find(`#grid_${t.name}_columns .tsg-col-header`).removeClass("tsg-col-sorted"),h(),t.selectNone(!0),t.select(m.from),y.finish()}else h()}delete t.last.move,P(document).off(".tsg-"+t.name)}}function h(){P(t.box).find(`#grid_${t.name}_ghost`).remove(),P(t.box).find(`#grid_${t.name}_ghost_line`).remove(),t.refresh(),delete t.last.move}}unmount(){super.unmount(),this.toolbar?.unmount(),this.last.observeResize?.disconnect()}destroy(){return qn(this)}initColumnOnOff(){return Yn(this)}initColumnDrag(e){return Xn(this,e)}columnOnOff(e,s){return Kn(this,e,s)}initToolbar(){return Jn(this)}initResize(){return Zn(this)}resizeBoxes(){return ei(this)}resizeRecords(){return ti(this)}getSearchesHTML(){return hn(this)}getOperators(e,s){return pn(this,e,s)}initOperator(e){return mn(this,e)}initSearchLists(e){return gn(this,e)}initSearches(){return yn(this)}getColumnsHTML(){return si(this)}getColumnCellHTML(e){return ni(this,e)}columnTooltipShow(e,s){return ii(this,e,s)}columnTooltipHide(e,s){return oi(this,e,s)}getRecordsHTML(){return li(this)}getSummaryHTML(){return ai(this)}scroll(e){return gi(this,e)}getRecordHTML(e,s,t){return ri(this,e,s,t)}getLineHTML(e){return ci(this,e)}getCellHTML(e,s,t,i){return ui(this,e,s,t,i)}clipboardCopy(e,s,t){return di(this,e,s,t)}showBubble(e,s,t){return fi(this,e,s,t)}getCellEditable(e,s){return hi(this,e,s)}getCellValue(e,s,t,i){return pi(this,e,s,t,i)}getFooterHTML(){return mi(this)}status(e){return es(this,e)}lock(e,s){return ts(this,e,s)}unlock(e){return ss(this,e)}stateSave(e){return ns(this,e)}stateRestore(e){return is(this,e)}stateReset(){return os(this)}parseField(e,s){return ls(this,e,s)}prepareData(){return as(this)}nextCell(e,s,t){return rs(this,e,s,t)}prevCell(e,s,t){return cs(this,e,s,t)}nextRow(e,s,t){return us(this,e,s,t)}prevRow(e,s,t){return ds(this,e,s,t)}selectionSave(){return fs(this)}selectionRestore(e){return hs(this,e)}message(e){return ps(this,e)}confirm(e){return ms(this,e)}};var yi=G,L=j,dt=class extends ne{header;url;method;routeData;formURL;formHTML;page;pageStyle;recid;fields;actions;record;original;dataType;saveCleanRecord;postData;httpHeaders;toolbar;tabs;style;focus;autosize;nestedFields;tabindexBase;isGenerated;last;onRequest;onLoad;onValidate;onSubmit;onProgress;onSave;onChange;onInput;onRender;onRefresh;onResize;onDestroy;onAction;onToolbar;onError;msgRefresh;msgSaving;msgServerError;ALL_TYPES;LIST_TYPES;TsFIELD_TYPES;constructor(e){super(e.name),this.name="",this.header="",this.box=null,this.url="",this.method=null,this.routeData={},this.formURL="",this.formHTML="",this.page=0,this.pageStyle="",this.recid=null,this.fields=[],this.actions={},this.record={},this.original=null,this.dataType=null,this.saveCleanRecord=!0,this.postData={},this.httpHeaders={},this.toolbar={},this.tabs={},this.style="",this.focus=0,this.autosize=!0,this.nestedFields=!0,this.tabindexBase=0,this.isGenerated=!1,this.last={fetchCtrl:null,fetchOptions:null,errors:[]},this.onRequest=null,this.onLoad=null,this.onValidate=null,this.onSubmit=null,this.onProgress=null,this.onSave=null,this.onChange=null,this.onInput=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onAction=null,this.onToolbar=null,this.onError=null,this.msgRefresh="Loading...",this.msgSaving="Saving...",this.msgServerError="Server error",this.ALL_TYPES=["text","textarea","email","pass","password","int","float","money","currency","percent","hex","alphanumeric","color","date","time","datetime","toggle","checkbox","radio","check","checks","list","combo","enum","file","select","switch","map","array","div","custom","html","empty","columns"],this.LIST_TYPES=["select","radio","check","checks","list","combo","enum","switch"],this.TsFIELD_TYPES=["int","float","money","currency","percent","hex","alphanumeric","color","date","time","datetime","list","combo","enum","file"],p.extend(this,e);let s=e.record,t=e.original,i=e.fields,o=e.toolbar,l=e.tabs;if(Object.assign(this,{record:{},original:null,fields:[],tabs:{},toolbar:{},handlers:[]}),i){let r=a(i);this.fields=r.fields,!l&&r.tabs.length>0&&(l=r.tabs)}if(Array.isArray(l)){p.extend(this.tabs,{tabs:[]});for(let r=0;r<l.length;r++){let c=l[r];typeof c=="object"?(this.tabs.tabs.push(c),c.active===!0&&(this.tabs.active=c.id)):this.tabs.tabs.push({id:c,text:c})}}else p.extend(this.tabs,l);p.extend(this.toolbar,o);for(let r in s)p.isPlainObject(s[r])?this.record[r]=p.clone(s[r]):this.record[r]=s[r];for(let r in t)this.original==null&&(this.original={}),p.isPlainObject(t[r])?this.original[r]=p.clone(t[r]):this.original[r]=t[r];this.formURL!==""?fetch(this.formURL).then(r=>r.text()).then(r=>{this.formHTML=r,this.isGenerated=!0,this.box&&this.render(this.box)}):!this.formURL&&!this.formHTML?(this.formHTML=this.generateHTML(),this.isGenerated=!0):this.formHTML&&(this.isGenerated=!0),typeof this.box=="string"&&(this.box=L(this.box).get(0)),this.box&&this.render(this.box);function a(r){let c=[],d=[];if(p.isPlainObject(r)){let m=function(x){let b=["html"];return x.html==null&&(x.html={}),Object.keys(x).forEach((g=>{b.includes(g)||["label","attr","style","text","span","page","column","anchor","group","groupStyle","groupTitleStyle","groupCollapsible"].includes(g)&&(x.html[g]=x[g],delete x[g])})),x},y=function(x,b){let g=["style","html"];Object.keys(x).forEach((v=>{g.includes(v)||["span","column","attr","text","label"].includes(v)&&x[v]&&!b.html[v]&&(b.html[v]=x[v])}))};var u=m,h=y;let f=r;r=[],Object.keys(f).forEach(x=>{let b=f[x];if(b.type=="group"){if(b.text=x,p.isPlainObject(b.fields)){let g=b.fields;b.fields=[],Object.keys(g).forEach(v=>{let w=g[v];w.field=v,b.fields.push(m(w))})}r.push(b)}else if(b.type=="tab"){let g={id:x,text:x};b.style&&(g.style=b.style),d.push(g);let v=a(b.fields).fields;v.forEach(w=>{w.html=w.html||{},w.html.page=d.length-1,y(b,w)}),r.push(...v)}else b.field=x,r.push(m(b))})}return r.forEach(f=>{if(f.type=="group"){let m={group:f.text||"",groupStyle:f.style||"",groupTitleStyle:f.titleStyle||"",groupCollapsible:f.collapsible===!0};Array.isArray(f.fields)&&f.fields.forEach(y=>{let x=p.clone(y);x.html==null&&(x.html={}),p.extend(x.html,m),["span","column","attr","label","page"].forEach(b=>{x.html[b]==null&&f[b]!=null&&(x.html[b]=f[b])}),x.field==null&&x.name!=null&&(console.log("NOTICE: form field.name property is deprecated, please use field.field. Field ->",f),x.field=x.name),c.push(x)})}else{let m=p.clone(f);m.field==null&&m.name!=null&&(console.log("NOTICE: form field.name property is deprecated, please use field.field. Field ->",f),m.field=m.name),c.push(m)}}),{fields:c,tabs:d}}}get(e,s){if(arguments.length===0){let t=[];for(let i=0;i<this.fields.length;i++)this.fields[i].field!=null&&t.push(this.fields[i].field);return t}else{for(let t=0;t<this.fields.length;t++)if(this.fields[t].field==e)return s===!0?t:this.fields[t];return null}}set(e,s){for(let t=0;t<this.fields.length;t++)if(this.fields[t].field==e)return p.extend(this.fields[t],s),delete this.fields[t].TsField,this.refresh(e),!0;return!1}getValue(e,s){if(this.nestedFields){let t;try{let i=s===!0?this.original:this.record;t=String(e).split(".").reduce((o,l)=>o[l],i)}catch{}return t}else return this.record[e]}setValue(e,s,t){if((s===""||s==null||Array.isArray(s)&&s.length===0||p.isPlainObject(s)&&Object.keys(s).length==0)&&(s=null),this.nestedFields)try{let i=this.record;return String(e).split(".").map((o,l,a)=>{a.length-1!==l?(i[o]||(i[o]={}),i=i[o]):i[o]=s}),t||this.setFieldValue(e,s),!0}catch{return!1}else return this.record[e]=s,t||this.setFieldValue(e,s),!0}rememberOriginal(){this.original==null&&(Object.keys(this.record).length>0?this.original=p.clone(this.record):this.original={})}getFieldValue(e){let s=this.get(e);if(s==null)return;let t=s.el,i=this.getValue(e),o=this.getValue(e,!0),l=t.value;if(["int","float","percent","money","currency"].includes(s.type)&&(l=s.TsField.clean(l)),["radio"].includes(s.type)){let r=L(t).closest(".tsg-field-group").find("input:checked").get(0);r?l=s.options.items[L(r).data("index")].id:l=null}if(["toggle","checkbox"].includes(s.type)&&(l=t.checked),["check","checks"].includes(s.type)){l=[];let r=L(t).closest(".tsg-field-group").find("input:checked");r.length>0&&r.each(c=>{let d=c,u=s.options.items[L(d).data("index")];l.push(u.id)}),Array.isArray(i)||(i=[])}let a=s.TsField?.selected;if(["list","enum","file"].includes(s.type)&&a){let r=a,c=i;if(Array.isArray(r)){l=[];for(let d=0;d<r.length;d++)l[d]=p.clone(r[d])}if(Array.isArray(c)){i=[];for(let d=0;d<c.length;d++)i[d]=p.clone(c[d])}p.isPlainObject(r)&&(l=p.clone(r)),p.isPlainObject(c)&&(i=p.clone(c))}return["map","array"].includes(s.type)&&(l=s.type=="map"?{}:[],s.$el.parent().find(".tsg-map-field").each((r,c)=>{let d=L(r).find(".tsg-map.key").val(),u=L(r).find(".tsg-map.value").val();typeof s.html?.render=="function"?(l[c]??={},L(r).find("input, textarea").each(h=>{let f=h,m=f.dataset.name??f.name;m!=null&&m!=""&&(l[c][m]=["checkbox","radio"].includes(f.type)?f.checked:f.value)})):s.type=="map"?l[d]=u:l.push(u)})),{current:l,previous:i,original:o}}findItem(e,s){return s.find(t=>t.id===e||t.id===e?.id)}setFieldValue(e,s){let t=this.get(e);if(t==null)return;let i=t.el;switch(t.type){case"toggle":case"checkbox":{i.checked=!!s;break}case"radio":{s=s?.id??s;let o=L(i).closest(".tsg-field-group").find("input");t.options.items.forEach((a,r)=>{let c=o.filter(`[data-index="${r}"]`);a.id===s?c.prop("checked",!0):c.prop("checked",!1),a.hidden===!0?c.closest(".tsg-field-item").hide():c.closest(".tsg-field-item").show()});break}case"check":case"checks":{Array.isArray(s)||(s!=null?s=[s]:s=[]),s=s.map(a=>a?.id??a);let o=L(i).closest("div.tsg-field-group").find("input");t.options.items.forEach((a,r)=>{let c=o.filter(`[data-index="${r}"]`);c.prop("checked",!!s.includes(a.id)),a.hidden===!0?c.closest(".tsg-field-item").hide():c.closest(".tsg-field-item").show()});break}case"list":case"combo":{let o=s,l=t.options?.itemMap;o?.id==null&&Array.isArray(t.options?.items)&&t.options.items.forEach(a=>{p.getNested(a,l?.id??"id")===s&&(o=a)}),o?.id!=null&&o?.text==null&&Array.isArray(t.options?.items)&&t.options.items.forEach(a=>{p.getNested(a,l?.id??"id")===o.id&&(o.text=p.getNested(a,l.text??"text"))}),o!=s&&this.setValue(t.name,o,!0),t.type=="list"?(t.TsField.selected=o,t.TsField.refresh()):i.value=o?.text??s;break}case"switch":{i.value=s,t.toolbar.uncheck(...t.toolbar.get()),t.toolbar.check(s);break}case"enum":case"file":{Array.isArray(s)||(s=s!=null?[s]:[]);let o=[...s],l=!1;o.forEach((a,r)=>{a?.id==null&&Array.isArray(t.options.items)&&t.options.items.forEach(c=>{c.id==a&&(o[r]=c,l=!0)})}),l&&this.setValue(t.name,o,!0),t.TsField.selected=o,t.TsField.refresh();break}case"map":case"array":{t.type=="map"&&(s==null||!p.isPlainObject(s))&&(this.setValue(t.field,{},!0),s=this.getValue(t.field)),t.type=="array"&&(s==null||!Array.isArray(s))&&(this.setValue(t.field,[],!0),s=this.getValue(t.field));let o=L(t.el).parent().find(".tsg-map-container");t.el.mapRefresh(s,o);break}case"div":case"custom":{L(i).html(s);break}case"color":{i.value=s??"",t.TsField.refresh();break}case"html":case"empty":break;default:if(s!=null&&i._w2field?.format){let o=i._w2field;s=o.format(o.clean(s))}i.value=s??"";break}this.fields.forEach(o=>{if(o?.options?.parentList!=null){let l,a=this.getValue(o.options.parentList);if(Array.isArray(a)?a=a.map(r=>r.id):a=a?.id!=null?[a.id]:[],o.options?.items?.forEach?.(r=>{let c=p.getNested(r,o.options.parentField??"parentId");if(c==null)return;let d=p.clone(Array.isArray(c)?c:[c]);d.unshift("");let u=a.some(h=>d.includes(h));u&&r.hidden===!0?(r.hidden=!1,l=!0):!u&&r.hidden!==!0&&(r.hidden=!0,l=!0)}),l){let r=this.getValue(o.field);if(r?.id!=null&&(r=r.id),o.type=="enum"){let c=o.options.items.filter(h=>!h.hidden).map(h=>h.id),d=this.getValue(o.field);Array.isArray(d)||(d=[d]),d=d.map(h=>((typeof h=="string"||typeof h=="number")&&(h=o.options.items.find(f=>f.id==h)),h));let u=d.filter(h=>c.includes(h.id));this.setValue(o.field,u,!0)}else o.options.items.forEach(c=>{c.id==r&&c.hidden&&this.setValue(o.field,null,!0)});this.set(o.field,{items:o.options.items})}}})}show(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&i.hidden&&(i.hidden=!1,s.push(i.field))}return s.length>0&&this.refresh(...s),this.updateEmptyGroups(),s}hide(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&!i.hidden&&(i.hidden=!0,s.push(i.field))}return s.length>0&&this.refresh(...s),this.updateEmptyGroups(),s}enable(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&i.disabled&&(i.disabled=!1,s.push(i.field))}return s.length>0&&this.refresh(...s),s}disable(...e){let s=[];for(let t=0;t<e.length;t++){let i=this.get(e[t]);i&&!i.disabled&&(i.disabled=!0,s.push(i.field))}return s.length>0&&this.refresh(...s),s}updateEmptyGroups(){L(this.box).find(".tsg-group").each(s=>{let t=s;e(L(t).find(".tsg-field"))?L(t).hide():L(t).show()});function e(s){let t=!0;return s.each(i=>{i.style.display!="none"&&(t=!1)}),t}}hideGroup(e){let s=[],t="";this.fields.forEach(i=>{i.html.group!=null&&i.html.group!==""&&(t=String(i.html.group).toLowerCase()),e.toLowerCase()==t&&s.push(i.field)}),this.hide(...s),this.resize()}showGroup(e){let s=[],t="";this.fields.forEach(i=>{i.html.group!=null&&i.html.group!==""&&(t=String(i.html.group).toLowerCase()),e.toLowerCase()==t&&s.push(i.field)}),this.show(...s),this.resize()}toggleGroup(e,s){let t=L(this.box).find('.tsg-group-title[data-group="'+p.base64encode(e)+'"]');if(t.length===0)return;let i=L(t.prop("nextElementSibling"));typeof s>"u"&&(s=i.css("display")=="none"),s?(i.show(),t.find("span").addClass("tsg-icon-collapse").removeClass("tsg-icon-expand")):(i.hide(),t.find("span").addClass("tsg-icon-expand").removeClass("tsg-icon-collapse"))}change(...e){e.forEach(s=>{let t=this.get(s);t.$el&&t.$el.change()})}reload(e){return(typeof this.url!="object"?this.url:this.url.get)&&this.recid!=null?this.request(e):(typeof e=="function"&&e(),new Promise(t=>{t(void 0)}))}clear(...e){e.length!=0?e.forEach(s=>{let t=this.record;String(s).split(".").map((i,o,l)=>{l.length-1!==o?t=t[i]:delete t[i]}),this.refresh(s)}):(this.recid=null,this.record={},this.original=null,this.refresh(),this.hideErrors())}error(e){let s=this.trigger("error",{target:this.name,message:e,fetchCtrl:this.last.fetchCtrl,fetchOptions:this.last.fetchOptions});s.isCancelled!==!0&&(setTimeout(()=>{this.message(e)},1),s.finish())}message(e){return p.message({owner:this,box:this.box,after:".tsg-form-header"},e)}confirm(e){return p.confirm({owner:this,box:this.box,after:".tsg-form-header"},e)}validate(e){e==null&&(e=!0);let s=[];for(let i=0;i<this.fields.length;i++){let o=this.fields[i];if(o.type=="columns"||o.field==null)continue;if(this.getValue(o.field)==null&&this.setValue(o.field,""),["int","float","currency","money"].includes(o.type)){let a=this.getValue(o.field),r=o.options.min,c=o.options.max;r!=null&&a!=null&&a<r&&s.push({field:o,error:p.lang("Should be more than ${min}",{min:r})}),c!=null&&a!=null&&a>c&&s.push({field:o,error:p.lang("Should be less than ${max}",{max:c})})}switch(o.type){case"alphanumeric":this.getValue(o.field)&&!p.isAlphaNumeric(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not alpha-numeric")});break;case"int":this.getValue(o.field)&&!p.isInt(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not an integer")});break;case"percent":case"float":this.getValue(o.field)&&!p.isFloat(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a float")});break;case"currency":case"money":this.getValue(o.field)&&!p.isMoney(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not in money format")});break;case"color":case"hex":this.getValue(o.field)&&!p.isHex(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a hex number")});break;case"email":this.getValue(o.field)&&!p.isEmail(this.getValue(o.field))&&s.push({field:o,error:p.lang("Not a valid email")});break;case"checkbox":this.getValue(o.field)==!0?this.setValue(o.field,!0):this.setValue(o.field,!1);break;case"date":o.options.format||(o.options.format=p.settings.dateFormat),this.getValue(o.field)&&!p.isDate(this.getValue(o.field),o.options.format)&&s.push({field:o,error:p.lang("Not a valid date")+": "+o.options.format});break;case"list":case"combo":case"switch":break;case"enum":break}let l=this.getValue(o.field);o.hidden!==!0&&o.required&&!["div","custom","html","empty"].includes(o.type)&&(l==null||l===""||Array.isArray(l)&&l.length===0||p.isPlainObject(l)&&Object.keys(l).length==0)&&s.push({field:o,error:p.lang("Required field")}),o.hidden!==!0&&o.options?.minLength>0&&!["enum","list","combo"].includes(o.type)&&(l==null||l.length<o.options.minLength)&&s.push({field:o,error:p.lang("Field should be at least ${count} characters.",{count:o.options.minLength})})}let t=this.trigger("validate",{target:this.name,errors:s});if(t.isCancelled!==!0)return this.last.errors=s,e&&this.showErrors(),t.finish(),s}showErrors(){let e=this.last.errors;e.length<=0||(this.goto(e[0].field.page),L(e[0].field.$el).parents(".tsg-field").get(0).scrollIntoView({block:"nearest",inline:"nearest"}),e.forEach(s=>{let t=p.extend({anchorClass:"tsg-error",class:"tsg-light",position:"right|left",hideOn:["input","tooltip-click"]},s.options);if(s.field==null)return;let i=s.field.el;s.field.type==="radio"?i=L(s.field.el).closest("div").get(0):["enum","file"].includes(s.field.type),yi.show(p.extend({anchor:i,name:`${this.name}-${s.field.field}-error`,html:s.error},t))}),this.last.errorsShown=!0,L(e[0].field.$el).parents(".tsg-page").off(".hideErrors").on("scroll.hideErrors",s=>{this.last.errorsShown&&this.showErrors()}))}hideErrors(){this.last.errorsShown=!1,this.fields.forEach(e=>{yi.hide(`${this.name}-${e.field}-error`)})}getChanges(){let e={};return this.original!=null&&typeof this.original=="object"&&Object.keys(this.record).length!==0&&(e=s(this.record,this.original,{})),e;function s(t,i,o){if(Array.isArray(t)&&Array.isArray(i))for(;t.length<i.length;)t.push(null);for(let l in t)t[l]!=null&&typeof t[l]=="object"?(o[l]=s(t[l],i[l]||{},{}),(!o[l]||Object.keys(o[l]).length==0&&Object.keys(i[l].length==0))&&delete o[l]):(t[l]!=i[l]||t[l]==null&&i[l]!=null)&&(o[l]=t[l]);return Object.keys(o).length!=0?o:null}}getCleanRecord(e){let s=p.clone(this.record);return this.fields.forEach(t=>{if(!(t.type=="columns"||t.field==null)){if(["list","combo","enum"].includes(t.type)){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field);p.isPlainObject(o)&&o.id!=null&&this.setValue.call(i,t.field,o.id),Array.isArray(o)&&o.forEach((l,a)=>{p.isPlainObject(l)&&l.id&&(o[a]=l.id)})}if(t.type=="map"){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field);o._order&&delete o._order}if(t.type=="file"){let i={nestedFields:!0,record:s},o=this.getValue.call(i,t.field)??[];o.forEach(l=>{delete l.file,delete l.modified}),this.setValue.call(i,t.field,o)}}}),e===!0&&Object.keys(s).forEach(t=>{this.get(t)||delete s[t]}),s}request(e,s){let t=this,i,o,l=new Promise((h,f)=>{i=h,o=f});if(typeof e=="function"&&(s=e,e=null),e==null&&(e={}),!this.url||typeof this.url=="object"&&!this.url.get)return;let a={};a.action="get",a.recid=this.recid,a.name=this.name,p.extend(a,this.postData),p.extend(a,e);let r=this.trigger("request",{target:this.name,url:this.url,httpMethod:"GET",postData:a,httpHeaders:this.httpHeaders});if(r.isCancelled===!0)return;this.record={},this.original=null,this.lock(p.lang(this.msgRefresh));let c=r.detail.url;if(typeof c=="object"&&c.get&&(c=c.get),this.last.fetchCtrl)try{this.last.fetchCtrl.abort()}catch{}if(Object.keys(this.routeData).length!=0){let h=p.parseRoute(c);if(h.keys.length>0)for(let f=0;f<h.keys.length;f++){let m=h.keys[f];m==null||this.routeData[m.name]==null||(c=c.replace(new RegExp(":"+m.name,"g"),this.routeData[m.name]))}}c=new URL(c,location.href);let d=p.prepareParams(c,{method:r.detail.httpMethod,headers:r.detail.httpHeaders,body:r.detail.postData},{dataType:this.dataType,caller:this,action:"request"});return this.last.fetchCtrl=new AbortController,d.signal=this.last.fetchCtrl.signal,this.last.fetchOptions=d,fetch(c,d).catch(u).then(h=>{if(h?.status!=200){h&&u(h);return}h.json().catch(u).then(f=>{let m=t.trigger("load",{target:t.name,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions,data:f});m.isCancelled!==!0&&(f.error==null&&f.status==="error"&&(f.error=!0),f.record||Object.assign(f,{record:p.clone(f)}),f.error===!0?t.error(p.lang(f.message??t.msgServerError)):t.record=p.clone(f.record),t.unlock(),m.finish(),t.refresh(),t.setFocus(),typeof s=="function"&&s(f),i(f))})}),r.finish(),l;function u(h){if(h.name==="AbortError")return;t.unlock();let f=t.trigger("error",{response:h,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions});f.isCancelled!==!0&&(h.status&&h.status!=200?t.error(h.status+": "+h.statusText):(console.log("ERROR: Server request failed.",h,". ","Expected Response:",{error:!1,record:{field1:1,field2:"item"}},"OR:",{error:!0,message:"Error description"}),t.error(String(h))),f.finish(),o(h))}}submit(e,s){return this.save(e,s)}save(e,s){let t=this,i,o,l=new Promise((f,m)=>{i=f,o=m});if(typeof e=="function"&&(s=e,e=null),(t.validate(!0)?.length??0)!==0)return;if(e==null&&(e={}),!t.url||typeof t.url=="object"&&!t.url.save){console.log("ERROR: Form cannot be saved because no url is defined.");return}t.lock(p.lang(t.msgSaving)+' <span id="'+t.name+'_progress"></span>');let r={};r.action="save",r.recid=t.recid,r.name=t.name,p.extend(r,t.postData),p.extend(r,e),r.record=p.clone(t.saveCleanRecord?t.getCleanRecord():t.record);let c=t.trigger("submit",{target:t.name,url:t.url,httpMethod:this.method??"POST",postData:r,httpHeaders:t.httpHeaders});if(c.isCancelled===!0)return;let d=c.detail.url;if(typeof d=="object"&&d.save&&(d=d.save),t.last.fetchCtrl&&t.last.fetchCtrl.abort(),Object.keys(t.routeData).length>0){let f=p.parseRoute(d);if(f.keys.length>0)for(let m=0;m<f.keys.length;m++){let y=f.keys[m];y==null||t.routeData[y.name]==null||(d=d.replace(new RegExp(":"+y.name,"g"),t.routeData[y.name]))}}d=new URL(d,location.href);let u=p.prepareParams(d,{method:c.detail.httpMethod,headers:c.detail.httpHeaders,body:c.detail.postData},{dataType:this.dataType,caller:this,action:"save"});return this.last.fetchCtrl=new AbortController,u.signal=this.last.fetchCtrl.signal,this.last.fetchOptions=u,fetch(d,u).catch(h).then(f=>{if(t.unlock(),f?.status!=200){h(f??{});return}f.json().catch(h).then(m=>{let y=t.trigger("save",{target:t.name,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions,data:m});y.isCancelled!==!0&&(m.error===!0?t.error(p.lang(m.message??t.msgServerError)):t.original=null,y.finish(),t.refresh(),typeof s=="function"&&s(m),i(m))})}),c.finish(),l;function h(f){if(f?.name==="AbortError")return;t.unlock();let m=t.trigger("error",{response:f,fetchCtrl:t.last.fetchCtrl,fetchOptions:t.last.fetchOptions});m.isCancelled!==!0&&(f.status&&f.status!=200?f.json().then(y=>{t.error(f.status+": "+(y.message||f.statusText))}).catch(()=>{t.error(f.status+": "+f.statusText)}):(console.log("ERROR: Server request failed.",f,". ","Expected Response:",{error:!1,record:{field1:1,field2:"item"}},"OR:",{error:!0,message:"Error description"}),t.error(String(f))),m.finish(),o())}}lock(e,s){p.lock(this.box,e,s)}unlock(e){let s=this.box;p.unlock(s,e)}lockPage(e,s,t){let i=L(this.box).find(".page-"+e);return i.length?(p.lock(i,s,t),!0):!1}unlockPage(e,s){let t=L(this.box).find(".page-"+e);return t.length?(p.unlock(t,s),!0):!1}goto(e){this.page!==e&&(e!=null&&(this.page=e),L(this.box).data("autoSize")===!0&&(L(this.box).get(0).clientHeight=0),this.refresh())}generateHTML(){let e=[],s="",t,i,o,l;for(let c=0;c<this.fields.length;c++){let d="";o=this.tabindexBase+c+1,l=' tabindex="'+o+'"';let u=this.fields[c];u.html==null&&(u.html={}),typeof u.html=="string"&&(u.html={html:u.html,span:0,attr:"tabindex"},l=""),u.options==null&&(u.options={}),u.html.caption!=null&&u.html.label==null&&(console.log("NOTICE: form field.html.caption property is deprecated, please use field.html.label. Field ->",u),u.html.label=u.html.caption),u.html.label==null&&(u.html.label=u.field),u.html.anchor!=null&&u.html.span==null&&(u.html.span=""),u.html=p.extend({label:"",span:6,attr:"",text:"",style:"",page:0,column:0},u.html),t==null&&(t=u.html.page),i==null&&(i=u.html.column);let h=`<input id="${u.field}" name="${u.field}" class="tsg-input ${u.html.class??""}" type="text" ${u.html.attr+l}>`;switch(u.type){case"pass":case"password":h=h.replace('type="text"','type="password"');break;case"checkbox":{h=`
535
535
  <label class="tsg-box-label">
536
536
  <input id="${u.field}" name="${u.field}" class="tsg-input ${u.html.class??""}" type="checkbox" ${u.html.attr+l}>
537
537
  <span>${u.html.label}</span>
@@ -593,7 +593,7 @@ var Ce={locale:"en-US",dateFormat:"m/d/yyyy",timeFormat:"hh:mi pm",datetimeForma
593
593
  </div>`,e[c].after&&(r+=e[c].after),r+=`
594
594
  </div>`,e[c].anchors&&Object.keys(e[c].anchors).forEach((d,u)=>{r=r.replace(d,e[c].anchors[d])})}return r+=a,r}action(e,s){let t=this.actions[e],i=t;p.isPlainObject(t)&&t.onClick&&(i=t.onClick);let o=this.trigger("action",{target:e,action:t,originalEvent:s});o.isCancelled!==!0&&(typeof i=="function"&&i.call(this,s),o.finish())}getAction(e){let s=L(this.box).find('.tsg-buttons button[name="'+e+'"]');return s.length===0&&console.log('ERROR: Action "'+e+'" not found. Valid actions are: '+Object.keys(this.actions).join(", ")),s}actionHide(e){this.getAction(e).hide()}actionShow(e){this.getAction(e).show()}actionDisable(e){this.getAction(e).prop("disabled",!0)}actionEnable(e){this.getAction(e).prop("disabled",!1)}resize(){let e=this,s=this.trigger("resize",{target:this.name});if(s.isCancelled!==!0){if(this.box!=null){let f=function(){let m=e.header!==""?p.getSize(i,"height"):0,y=Array.isArray(e.toolbar?.items)&&e.toolbar?.items?.length>0?p.getSize(o,"height"):0,x=Array.isArray(e.tabs?.tabs)&&e.tabs?.tabs?.length>0?p.getSize(l,"height"):0;return o.css({top:m+"px"}),l.css({top:m+y+"px"}),a.css({top:m+y+x+"px",bottom:(c.length>0?p.getSize(c,"height"):0)+"px"}),{headerHeight:m,tbHeight:y,tabsHeight:x}};var t=f;let i=L(this.box).find(":scope > div .tsg-form-header"),o=L(this.box).find(":scope > div .tsg-form-toolbar"),l=L(this.box).find(":scope > div .tsg-form-tabs"),a=L(this.box).find(":scope > div .tsg-page"),r=L(this.box).find(":scope > div .tsg-page.page-"+this.page+" > div"),c=L(this.box).find(":scope > div .tsg-buttons"),{headerHeight:d,tbHeight:u,tabsHeight:h}=f();this.autosize&&((L(this.box).get(0).clientHeight===0||L(this.box).data("autosize")=="yes")&&(L(this.box).css({height:d+u+h+15+(a.length>0?p.getSize(r,"height"):0)+(c.length>0?p.getSize(c,"height"):0)+"px"}),L(this.box).data("autosize","yes")),f()),this.tabs?.resize?.(),this.toolbar?.resize?.(),this.fields.forEach(m=>{m.type=="switch"&&m.toolbar?.resize?.()})}s.finish()}}refresh(...e){let s=Date.now(),t=this;if(!this.box||!this.isGenerated||!L(this.box).html())return 0;let i=this.trigger("refresh",{target:this.name,page:this.page,field:e[0],fields:e});if(i.isCancelled===!0)return 0;let o=Array.from(this.fields.keys());e.length>0?o=e.map((l,a)=>(typeof l!="string"&&console.log("ERROR: Arguments in refresh functions should be field names"),this.get(l,!0))).filter((l,a)=>l!=null):(L(this.box).find("input, textarea, select").each(l=>{let a=l,r=L(a).attr("name")!=null?L(a).attr("name"):L(a).attr("id"),c=this.get(r);if(c){let d=L(a).closest(".tsg-page");if(d.length>0){for(let u=0;u<100;u++)if(d.hasClass("page-"+u)){c.page=u;break}}}}),L(this.box).find(".tsg-page").hide(),L(this.box).find(".tsg-page.page-"+this.page).show(),L(this.box).find(".tsg-form-header").html(p.lang(this.header)),typeof this.tabs=="object"&&Array.isArray(this.tabs.tabs)&&this.tabs.tabs.length>0?(L(this.box).find("#form_"+this.name+"_tabs").show(),this.tabs.active=this.tabs.tabs[this.page].id,this.tabs.refresh()):L(this.box).find("#form_"+this.name+"_tabs").hide(),typeof this.toolbar=="object"&&Array.isArray(this.toolbar.items)&&this.toolbar.items.length>0?(L(this.box).find("#form_"+this.name+"_toolbar").show(),this.toolbar.refresh()):L(this.box).find("#form_"+this.name+"_toolbar").hide());for(let l=0;l<o.length;l++){let a=o[l];if(a==null)continue;let r=this.fields[a];if(r==null)continue;r.name==null&&r.field!=null&&(r.name=r.field),r.field==null&&r.name!=null&&(r.field=r.name),r.$el=L(this.box).find(`[name='${String(r.name).replace(/\\/g,"\\\\")}']`),r.el=r.$el.get(0),r.el&&(r.el.id=r.name),r.TsField&&r.TsField.reset(),r.$el.off(".TsForm").on("change.TsForm",function(d){let u=t.getFieldValue(r.field);if(u==null)return;if(["enum","file"].includes(r.type)){let f=r.TsField?.helpers?.multi;L(f).removeClass("tsg-error")}this._previous!=null&&(u.previous=this._previous,delete this._previous);let h=t.trigger("change",{target:this.name,field:this.name,value:u,originalEvent:d});h.isCancelled!==!0&&(t.setValue(this.name,u.current),h.finish())}).on("input.TsForm",function(d){t.rememberOriginal();let u=t.getFieldValue(r.field);if(u==null)return;this._previous==null&&(this._previous=u.previous);let h=t.trigger("input",{target:t.name,field:r,value:u,originalEvent:d});h.isCancelled!==!0&&(t.setValue(this.name,u.current,!0),h.finish())}),r.required?r.$el.closest(".tsg-field").addClass("tsg-required"):r.$el.closest(".tsg-field").removeClass("tsg-required"),r.disabled!=null&&(r.disabled?(r.$el.data("tabIndex")==null&&r.$el.data("tabIndex",r.$el.prop("tabIndex")),r.$el.prop("disabled",!0).prop("tabIndex",-1).closest(".tsg-field").addClass("tsg-disabled")):r.$el.prop("disabled",!1).prop("tabIndex",r.$el.data("tabIndex")??r.$el.prop("tabIndex")??0).closest(".tsg-field").removeClass("tsg-disabled"));let c=r.el;c||(c=L(this.box).find("#"+r.field)),r.hidden?L(c).closest(".tsg-field").hide():L(c).closest(".tsg-field").show()}L(this.box).find("button, input[type=button]").each(l=>{L(l).off("click").on("click",function(r){let c=this.value;this.id&&(c=this.id),this.name&&(c=this.name),t.action(c,r)})});for(let l=0;l<o.length;l++){let a=o[l];if(a==null)continue;let r=this.fields[a];if(r!=null&&r.el){if(r.$el.hasClass("tsg-input")||r.$el.addClass("tsg-input"),r.type=String(r.type).toLowerCase(),r.options||(r.options={}),this.LIST_TYPES.includes(r.type)){let c=r.options.items;c==null&&(r.options.items=[]),r.type=="switch"?c.forEach((d,u)=>c[u]=typeof d!="object"?{id:d,text:d}:d):r.options.items=p.normMenu.call(this,c??[],r.options)}if(r.type=="switch"){r.toolbar&&se[this.name+"_"+r.name+"_tb"].destroy(),r.options?.items?.forEach?.(d=>d.text==null?d.text="":"");let c=p.normMenu.call(this,r.options.items,r.options)??[];c.forEach(d=>d.type??="radio"),r.toolbar=new ye({box:r.$el.prev().get(0),name:this.name+"_"+r.name+"_tb",items:c,onClick(d){t.rememberOriginal();let u=t.getFieldValue(r.name);if(u==null)return;u.current=d.detail.item.id;let h=t.trigger("change",{target:r.name,field:r.name,value:u,originalEvent:d});h.isCancelled!==!0&&(t.record[r.name]=u.current,t.setFieldValue(r.name,u.current),h.finish())}}),r.$el.prev().addClass("tsg-form-switch"),r.toolbar.resize(),r.$el.off(".form-input").on("focus.form-input",d=>{let u=r.toolbar.get(r.$el.val(),!0);L(d.target).prop("_index",u),L(r.toolbar.box).addClass("tsg-tb-focus")}).on("blur.form-input",d=>{L(d.target).removeProp("_index"),L(`#${r.name}-tb .tsg-tb-button`).removeClass("over"),L(r.toolbar.box).removeClass("tsg-tb-focus")}).on("keydown.form-input",d=>{let u=L(d.target).prop("_index");switch(d.key){case"ArrowLeft":{u>0&&u--,L(`#${r.name}-tb .tsg-tb-button`).removeClass("over").eq(u).addClass("over"),L(d.target).prop("_index",u);break}case"ArrowRight":{u<r.toolbar.items.length-1&&u++,L(`#${r.name}-tb .tsg-tb-button`).removeClass("over").eq(u).addClass("over"),L(d.target).prop("_index",u);break}}if(d.keyCode==32||d.keyCode==13){t.rememberOriginal();let h=t.getFieldValue(r.name);if(h==null)return;let f=r.toolbar.items[u];h.current=f?.id;let m=t.trigger("change",{target:r.name,field:r.name,value:h,originalEvent:d});if(m.isCancelled===!0)return;t.record[r.name]=h.current,t.setFieldValue(r.name,h.current),m.finish(),L(`#${r.name}-tb .tsg-tb-button`).removeClass("over")}!d.metaKey&&!d.ctrlKey&&d.keyCode!=9&&d.preventDefault()})}if(r.type=="select"){let c=r.options.items,d="";c.forEach(u=>{d+=`<option value="${u.id}">${u.text}</option>`}),r.$el.html(d)}this.TsFIELD_TYPES.includes(r.type)&&(r.TsField=r.TsField??new fe(p.extend({},r.options,{type:r.type})),r.TsField.render(r.el)),["map","array"].includes(r.type)&&(function(c,d){d.el.mapAdd=function(u,h,f,m){let y=(u.disabled?" readOnly ":"")+(u.html.tabindex_str||""),x=`<input type="text" ${(u.html.value.attr??"")+y} class="tsg-input ${u.html.class??""} tsg-map value">${u.html.value.text||""}`;if(typeof u.html.render=="function"?(x=u.html.render.call(t,{empty:m===!0,ind:f,field:u,div:h}),u.el._errorDisplayed||(j.html(x).filter("input, textarea").each(b=>{let g=b,v=g.dataset.name??g.name;(v==null||v=="")&&console.log(`ERROR: All inputs of the field %c"${u.name}"%c must have name attribute defined. No name for %c${g.outerHTML}`,"color: blue","","color: red")}),u.el._errorDisplayed=!0)):u.type=="map"&&(x=`<input type="text" ${(u.html.key.attr??"")+y} class="tsg-input ${u.html.class??""} tsg-map key">
595
595
  ${u.html.key.text||""}
596
- `+x),h.append(`<div class="tsg-map-field" style="margin-bottom: 5px" data-index="${f}">${x}</div>`),typeof u.html.render=="function"){let b=h.find(`[data-index="${f}"]`);b.find("input, textarea").each(g=>{L(g).attr("tabindex")==null&&L(g).attr("tabindex",u.html.tabindex)}),typeof u.html.onRefresh=="function"&&u.html.onRefresh.call(t,{index:f,empty:m,box:b.get(0)})}},d.el.mapRefresh=function(u,h){let f=[],m,y;d.type=="map"&&(p.isPlainObject(u)||(u={}),u._order==null&&(u._order=Object.keys(u)),f=u._order),d.type=="array"&&(Array.isArray(u)||(u=[]),f=u.map((w,T)=>T)),h.find(".tsg-map-field").remove();for(let w=0;w<f.length;w++){let T=f[w],_=h.find(`div[data-index='${w}']`);if(_.length==0&&(d.el.mapAdd(d,h,w),_=h.find(`div[data-index='${w}']`)),_.attr("data-key",T),typeof d.html?.render=="function"){let C=u[T];_.find("input, textarea").each(D=>{let O=D,I=O.dataset.name??O.name;O.type=="checkbox"||O.type=="radio"?O.checked=C[I]??!1:O.value=C[I]??""})}else{m=_.find(".tsg-map.key"),y=_.find(".tsg-map.value");let C=u[T];if(d.type=="array"){let D=u.filter(O=>O?.key==T);D.length>0&&(C=D[0].value)}m.val(T),y.val(C),(d.disabled===!0||d.disabled===!1)&&(m.prop("readOnly",!!d.disabled),y.prop("readOnly",!!d.disabled))}typeof d.html.onRefresh=="function"&&d.html.onRefresh.call(t,{index:w,box:h.find(`[data-index="${w}"]`).get(0)})}typeof d.html.render=="function"&&(y=h.find(".tsg-map-field:last-child input:first-child"));let x=f.length,b=h.find(`div[data-index='${x}']`);b.length===0&&(!m||m.val()!=""||y.val()!="")&&!(m&&(m.prop("readOnly")===!0||m.prop("disabled")===!0))&&d.el.mapAdd(d,h,x,!0),(d.disabled===!0||d.disabled===!1)&&(b.find(".key").prop("readOnly",!!d.disabled),b.find(".value").prop("readOnly",!!d.disabled));let g=null,v=L(d.el).get(0)?.nextSibling;L(v).off(".mapChange").on("mouseup.mapChange",{delegate:"input, textarea"},function(w){document.activeElement!=w.target&&w.target.focus()}).on("keyup.mapChange",{delegate:"input, textarea"},function(w){let T=w,_=L(T.target).closest(".tsg-map-field"),C=_.get(0).nextElementSibling,D=_.get(0).previousElementSibling,O=L(T.target).hasClass("key")?"key":"value";if(T.keyCode==38&&D&&(L(D).find(`input.${O}, textarea.${O}, input[name="${T.target.name}"] textarea[name="${T.target.name}"]`).get(0)?.select(),T.preventDefault()),T.keyCode==40&&C){T.target.blur();let I=_.get(0).nextElementSibling;L(I).find(`input.${O}, textarea.${O}, input[name="${T.target.name}"] textarea[name="${T.target.name}"]`).get(0)?.select(),T.preventDefault()}}).on("keydown.mapChange",{delegate:"input, textarea"},function(w){let T=w;g=null,T.keyCode==9&&(g="tab"),T.keyCode==13&&(g="enter"),(T.keyCode==38||T.keyCode==40)&&(g=T.keyCode==38?"up":"down",T.preventDefault())}).on("input.mapChange",{delegate:"input, textarea"},function(w){let T=L(w.target).closest("div.tsg-map-field"),_=T.data("index"),C=T.get(0).nextElementSibling,D=!0;L(T).find("input, textarea").each(I=>{let R=I;!["checkbox","button"].includes(R.type)&&R.value!=""&&(D=!1)});let O=!0;L(C).find("input, textarea").each(I=>{let R=I;!["checkbox","button"].includes(R.type)&&R.value!=""&&(O=!1)}),!D&&!C?d.el.mapAdd(d,h,parseInt(_)+1,!0):D&&C&&O&&L(C).remove()}).on("change.mapChange",{delegate:"input, textarea"},function(w){let T=w;t.rememberOriginal();let _=t.getFieldValue(d.field);if(_==null)return;let{current:C,previous:D,original:O}=_,I=L(T.target).closest(".tsg-map-container");typeof d.html?.render=="function"?C=C.filter(Y=>{let ee=[...new Set(Object.values(Y).filter(Te=>typeof Te!="boolean"))];return!(ee.length==0||ee.length==1&&ee[0]==="")}):d.type=="map"?(C._order=[],I.find(".tsg-map.key").each(Y=>{C._order.push(Y.value)}),C._order=C._order.filter(Y=>Y!==""),delete C[""]):d.type=="array"&&(C=C.filter(Y=>Y!==""));let R=t.trigger("change",{target:d.field,field:d.field,originalEvent:T,value:{current:C,previous:D,original:O}});if(R.isCancelled===!0)return;let F,S="",$=L(T.target).closest(".tsg-map-container");d.type=="array"||g=="tab"?$.find("input, textarea").each((Y,ee)=>{Y==T.target&&(F=ee)}):(S=L(T.target).hasClass("key")?".key":".value",$.find("input"+S+", textarea"+S).each((Y,ee)=>{Y==T.target&&(F=ee)})),t.setValue(d.field,C);let H,Q=F??0;g=="tab"?H=$.find("input, textarea").get(Q+1):g=="enter"&&$.find("input.value, textarea.value").length>0?(S==".key"?H=$.find("input.key, textarea.key").get(Q+1):H=$.find("input.value, textarea.value").get(Q+1),H==null&&(H=$.find("input, textarea").get(Q+(T.shiftKey?-1:1)))):H=$.find("input"+S+", textarea"+S).eq(Q+(g=="up"?-1:1)).get(0),H&&(H.focus(),H.select()),R.finish()})}})(this,r),this.setFieldValue(r.field,this.getValue(r.name))}}return i.finish(),this.resize(),Date.now()-s}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=L(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.isGenerated&&!this.formHTML)||!this.box)return;let o='<div class="tsg-form-box">'+(this.header!==""?'<div class="tsg-form-header">'+p.lang(this.header)+"</div>":"")+' <div id="form_'+this.name+'_toolbar" class="tsg-form-toolbar" style="display: none"></div> <div id="form_'+this.name+'_tabs" class="tsg-form-tabs" style="display: none"></div>'+this.formHTML+"</div>";if(L(this.box).attr("name",this.name).addClass("tsg-reset tsg-form").html(o),L(this.box).length>0&&(L(this.box).get(0).style.cssText+=this.style),p.bindEvents(L(this.box).find(".tsg-eaction"),this),typeof this.toolbar.render!="function"&&(this.toolbar=new ye(p.extend({},this.toolbar,{name:this.name+"_toolbar",owner:this})),this.toolbar.on("click",function(a){let r=t.trigger("toolbar",{target:a.target,originalEvent:a});r.isCancelled!==!0&&r.finish()})),typeof this.toolbar=="object"&&typeof this.toolbar.render=="function"&&this.toolbar.render(L(this.box).find("#form_"+this.name+"_toolbar").get(0)),typeof this.tabs.render!="function"&&(this.tabs=new ke(p.extend({},this.tabs,{name:this.name+"_tabs",owner:this,active:this.tabs.active})),this.tabs.on("click",function(a){t.goto(this.get(a.target,!0))})),typeof this.tabs=="object"&&typeof this.tabs.render=="function"&&(this.tabs.render(L(this.box).find("#form_"+this.name+"_tabs").get(0)),this.tabs.active&&this.tabs.click(this.tabs.active)),i.finish(),this.resize(),(typeof this.url!="object"?this.url:this.url.get)&&this.recid!=null?this.request().catch(a=>this.refresh()):this.refresh(),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),this.focus!=-1){let a=0,r=()=>{L(t.box).find("input, select, textarea").length>0?t.setFocus():(a++,a<20&&setTimeout(r,50))};r()}return Date.now()-s}unmount(){super.unmount(),this.tabs?.unmount?.(),this.toolbar?.unmount?.(),this.last.observeResize?.disconnect()}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(this.tabs?.destroy?.(),this.toolbar?.destroy?.(),L(this.box).find("#form_"+this.name+"_tabs").length>0&&this.unmount(),this.last.observeResize?.disconnect(),delete se[this.name],e.finish())}setFocus(e){typeof e>"u"&&(e=this.focus);let s;if(p.isInt(e)){if(e<0)return;let t=L(this.box).find("div:not(.tsg-field-helper) > input, select, textarea, div > label:nth-child(1) > [type=radio]").filter(":not(.file-input)");for(;t.get(e)?.offsetParent==null&&t.length>e;)e++;t.get(e)&&(s=L(t.get(e)))}else typeof e=="string"&&(s=L(this.box).find(`[name='${e}']`));return s?.length>0&&s.get(0).focus(),s}};export{oe as Tooltip,Ti as TsAlert,ne as TsBase,De as TsColor,wi as TsConfirm,lt as TsDate,Ue as TsDialog,$e as TsEvent,fe as TsField,dt as TsForm,ut as TsGrid,rt as TsLayout,Ce as TsLocale,ie as TsMenu,ge as TsPopup,_i as TsPrompt,at as TsSidebar,ke as TsTabs,ye as TsToolbar,W as TsTooltip,se as TsUi,p as TsUtils,Se as query,vi as toSafeEvent};
596
+ `+x),h.append(`<div class="tsg-map-field" style="margin-bottom: 5px" data-index="${f}">${x}</div>`),typeof u.html.render=="function"){let b=h.find(`[data-index="${f}"]`);b.find("input, textarea").each(g=>{L(g).attr("tabindex")==null&&L(g).attr("tabindex",u.html.tabindex)}),typeof u.html.onRefresh=="function"&&u.html.onRefresh.call(t,{index:f,empty:m,box:b.get(0)})}},d.el.mapRefresh=function(u,h){let f=[],m,y;d.type=="map"&&(p.isPlainObject(u)||(u={}),u._order==null&&(u._order=Object.keys(u)),f=u._order),d.type=="array"&&(Array.isArray(u)||(u=[]),f=u.map((w,T)=>T)),h.find(".tsg-map-field").remove();for(let w=0;w<f.length;w++){let T=f[w],_=h.find(`div[data-index='${w}']`);if(_.length==0&&(d.el.mapAdd(d,h,w),_=h.find(`div[data-index='${w}']`)),_.attr("data-key",T),typeof d.html?.render=="function"){let C=u[T];_.find("input, textarea").each(D=>{let O=D,I=O.dataset.name??O.name;O.type=="checkbox"||O.type=="radio"?O.checked=C[I]??!1:O.value=C[I]??""})}else{m=_.find(".tsg-map.key"),y=_.find(".tsg-map.value");let C=u[T];if(d.type=="array"){let D=u.filter(O=>O?.key==T);D.length>0&&(C=D[0].value)}m.val(T),y.val(C),(d.disabled===!0||d.disabled===!1)&&(m.prop("readOnly",!!d.disabled),y.prop("readOnly",!!d.disabled))}typeof d.html.onRefresh=="function"&&d.html.onRefresh.call(t,{index:w,box:h.find(`[data-index="${w}"]`).get(0)})}typeof d.html.render=="function"&&(y=h.find(".tsg-map-field:last-child input:first-child"));let x=f.length,b=h.find(`div[data-index='${x}']`);b.length===0&&(!m||m.val()!=""||y.val()!="")&&!(m&&(m.prop("readOnly")===!0||m.prop("disabled")===!0))&&d.el.mapAdd(d,h,x,!0),(d.disabled===!0||d.disabled===!1)&&(b.find(".key").prop("readOnly",!!d.disabled),b.find(".value").prop("readOnly",!!d.disabled));let g=null,v=L(d.el).get(0)?.nextSibling;L(v).off(".mapChange").on("mouseup.mapChange",{delegate:"input, textarea"},function(w){document.activeElement!=w.target&&w.target.focus()}).on("keyup.mapChange",{delegate:"input, textarea"},function(w){let T=w,_=L(T.target).closest(".tsg-map-field"),C=_.get(0).nextElementSibling,D=_.get(0).previousElementSibling,O=L(T.target).hasClass("key")?"key":"value";if(T.keyCode==38&&D&&(L(D).find(`input.${O}, textarea.${O}, input[name="${T.target.name}"] textarea[name="${T.target.name}"]`).get(0)?.select(),T.preventDefault()),T.keyCode==40&&C){T.target.blur();let I=_.get(0).nextElementSibling;L(I).find(`input.${O}, textarea.${O}, input[name="${T.target.name}"] textarea[name="${T.target.name}"]`).get(0)?.select(),T.preventDefault()}}).on("keydown.mapChange",{delegate:"input, textarea"},function(w){let T=w;g=null,T.keyCode==9&&(g="tab"),T.keyCode==13&&(g="enter"),(T.keyCode==38||T.keyCode==40)&&(g=T.keyCode==38?"up":"down",T.preventDefault())}).on("input.mapChange",{delegate:"input, textarea"},function(w){let T=L(w.target).closest("div.tsg-map-field"),_=T.data("index"),C=T.get(0).nextElementSibling,D=!0;L(T).find("input, textarea").each(I=>{let R=I;!["checkbox","button"].includes(R.type)&&R.value!=""&&(D=!1)});let O=!0;L(C).find("input, textarea").each(I=>{let R=I;!["checkbox","button"].includes(R.type)&&R.value!=""&&(O=!1)}),!D&&!C?d.el.mapAdd(d,h,parseInt(_)+1,!0):D&&C&&O&&L(C).remove()}).on("change.mapChange",{delegate:"input, textarea"},function(w){let T=w;t.rememberOriginal();let _=t.getFieldValue(d.field);if(_==null)return;let{current:C,previous:D,original:O}=_,I=L(T.target).closest(".tsg-map-container");typeof d.html?.render=="function"?C=C.filter(Y=>{let ee=[...new Set(Object.values(Y).filter(Te=>typeof Te!="boolean"))];return!(ee.length==0||ee.length==1&&ee[0]==="")}):d.type=="map"?(C._order=[],I.find(".tsg-map.key").each(Y=>{C._order.push(Y.value)}),C._order=C._order.filter(Y=>Y!==""),delete C[""]):d.type=="array"&&(C=C.filter(Y=>Y!==""));let R=t.trigger("change",{target:d.field,field:d.field,originalEvent:T,value:{current:C,previous:D,original:O}});if(R.isCancelled===!0)return;let F,S="",$=L(T.target).closest(".tsg-map-container");d.type=="array"||g=="tab"?$.find("input, textarea").each((Y,ee)=>{Y==T.target&&(F=ee)}):(S=L(T.target).hasClass("key")?".key":".value",$.find("input"+S+", textarea"+S).each((Y,ee)=>{Y==T.target&&(F=ee)})),t.setValue(d.field,C);let H,V=F??0;g=="tab"?H=$.find("input, textarea").get(V+1):g=="enter"&&$.find("input.value, textarea.value").length>0?(S==".key"?H=$.find("input.key, textarea.key").get(V+1):H=$.find("input.value, textarea.value").get(V+1),H==null&&(H=$.find("input, textarea").get(V+(T.shiftKey?-1:1)))):H=$.find("input"+S+", textarea"+S).eq(V+(g=="up"?-1:1)).get(0),H&&(H.focus(),H.select()),R.finish()})}})(this,r),this.setFieldValue(r.field,this.getValue(r.name))}}return i.finish(),this.resize(),Date.now()-s}render(e){let s=Date.now(),t=this;typeof e=="string"&&(e=L(e).get(0));let i=this.trigger("render",{target:this.name,box:e??this.box});if(i.isCancelled===!0||(e!=null&&(this.unmount(),this.box=e),!this.isGenerated&&!this.formHTML)||!this.box)return;let o='<div class="tsg-form-box">'+(this.header!==""?'<div class="tsg-form-header">'+p.lang(this.header)+"</div>":"")+' <div id="form_'+this.name+'_toolbar" class="tsg-form-toolbar" style="display: none"></div> <div id="form_'+this.name+'_tabs" class="tsg-form-tabs" style="display: none"></div>'+this.formHTML+"</div>";if(L(this.box).attr("name",this.name).addClass("tsg-reset tsg-form").html(o),L(this.box).length>0&&(L(this.box).get(0).style.cssText+=this.style),p.bindEvents(L(this.box).find(".tsg-eaction"),this),typeof this.toolbar.render!="function"&&(this.toolbar=new ye(p.extend({},this.toolbar,{name:this.name+"_toolbar",owner:this})),this.toolbar.on("click",function(a){let r=t.trigger("toolbar",{target:a.target,originalEvent:a});r.isCancelled!==!0&&r.finish()})),typeof this.toolbar=="object"&&typeof this.toolbar.render=="function"&&this.toolbar.render(L(this.box).find("#form_"+this.name+"_toolbar").get(0)),typeof this.tabs.render!="function"&&(this.tabs=new ke(p.extend({},this.tabs,{name:this.name+"_tabs",owner:this,active:this.tabs.active})),this.tabs.on("click",function(a){t.goto(this.get(a.target,!0))})),typeof this.tabs=="object"&&typeof this.tabs.render=="function"&&(this.tabs.render(L(this.box).find("#form_"+this.name+"_tabs").get(0)),this.tabs.active&&this.tabs.click(this.tabs.active)),i.finish(),this.resize(),(typeof this.url!="object"?this.url:this.url.get)&&this.recid!=null?this.request().catch(a=>this.refresh()):this.refresh(),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),this.focus!=-1){let a=0,r=()=>{L(t.box).find("input, select, textarea").length>0?t.setFocus():(a++,a<20&&setTimeout(r,50))};r()}return Date.now()-s}unmount(){super.unmount(),this.tabs?.unmount?.(),this.toolbar?.unmount?.(),this.last.observeResize?.disconnect()}destroy(){let e=this.trigger("destroy",{target:this.name});e.isCancelled!==!0&&(this.tabs?.destroy?.(),this.toolbar?.destroy?.(),L(this.box).find("#form_"+this.name+"_tabs").length>0&&this.unmount(),this.last.observeResize?.disconnect(),delete se[this.name],e.finish())}setFocus(e){typeof e>"u"&&(e=this.focus);let s;if(p.isInt(e)){if(e<0)return;let t=L(this.box).find("div:not(.tsg-field-helper) > input, select, textarea, div > label:nth-child(1) > [type=radio]").filter(":not(.file-input)");for(;t.get(e)?.offsetParent==null&&t.length>e;)e++;t.get(e)&&(s=L(t.get(e)))}else typeof e=="string"&&(s=L(this.box).find(`[name='${e}']`));return s?.length>0&&s.get(0).focus(),s}};export{oe as Tooltip,Ti as TsAlert,ne as TsBase,De as TsColor,wi as TsConfirm,lt as TsDate,Ue as TsDialog,$e as TsEvent,fe as TsField,dt as TsForm,ut as TsGrid,rt as TsLayout,Ce as TsLocale,ie as TsMenu,ge as TsPopup,_i as TsPrompt,at as TsSidebar,ke as TsTabs,ye as TsToolbar,G as TsTooltip,se as TsUi,p as TsUtils,Se as query,vi as toSafeEvent};
597
597
  /*
598
598
  * @author Lauri Rooden (https://github.com/litejs/natural-compare-lite)
599
599
  * @license MIT License