@deephaven/code-studio 0.26.1-beta.4 → 0.26.1
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.
|
@@ -22,7 +22,7 @@ ${e}`):s.setValue(`${e}`);const o=s.getLineCount(),r=s.getLineLength(o)+1;this.e
|
|
|
22
22
|
`&&(t+=`
|
|
23
23
|
`)}this.bufferedMessages=[],this.appendLogText(t)}queue(t){this.bufferedMessages.push(t),this.bufferedMessages.length===1&&(this.flushTimer=setTimeout(this.handleFlushTimeout,Ht.bufferTimeout))}stopFlushTimer(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0)}updateDimensions(){this.editor&&this.editor.layout()}handleClearClick(){this.clearLogs()}clearLogs(){this.messages=[],this.refreshLogText()}handleFlushTimeout(){this.stopFlushTimer(),this.flush()}handleLogMessage(t){this.messages.push(t),this.editor&&this.isLogItemVisible(t)&&this.queue(t)}handleMenuItemClick(t){this.toggleLogLevel(t)}handleResetClick(){this.resetLogLevels()}handleResize(){this.updateDimensions()}handleToggleAllClick(){this.toggleAll()}render(){const t={placement:"bottom-end"},{shownLogLevels:e}=this.state,n=this.getMenuActions(e);return T("div",{className:"log-pane h-100 w-100",children:[T("div",{className:"log-pane-menu",children:[h(W,{kind:"ghost",className:"btn-clear-logs",onClick:this.handleClearClick,icon:mb,tooltip:"Clear log"}),h(W,{kind:"ghost",className:"btn-link-icon btn-overflow",icon:or,tooltip:"Log Settings",onClick:()=>{},children:h(Nn,{actions:n,popperClassName:"log-level-menu-popper",popperOptions:t})})]}),h("div",{className:"log-pane-editor h-100 w-100",ref:s=>{this.editorContainer=s}})]})}};let co=Ht;co.DefaultLogLevels=[vt.STDOUT,vt.ERROR,vt.FATAL,vt.STDERR,vt.WARN];co.AllLogLevels=[vt.INFO,vt.STDOUT,vt.ERROR,vt.FATAL,vt.STDERR,vt.WARN,vt.DEBUG,vt.TRACE];co.bufferTimeout=16;co.maxLogSize=131072;co.truncateSize=65536;class tt{static isValid(e){return!0}static isSameFormat(e,n){throw new Error("isSameFormat not implemented")}static makeFormat(e,n,s){return{label:e,formatString:n,type:s}}format(e,n){return""}}tt.TYPE_GLOBAL="type-global";tt.TYPE_CONTEXT_PRESET="type-context-preset";tt.TYPE_CONTEXT_CUSTOM="type-context-custom";class XS extends tt{format(e){switch(e){case 1:case!0:return"true";case 0:case!1:return"false";default:return""}}}class jS extends tt{format(e){return String.fromCharCode(e)}}const bh=X.module("DateTimeColumnFormatter"),si=class extends tt{constructor({timeZone:t="",showTimeZone:e=!0,showTSeparator:n=!1,defaultDateTimeFormatString:s=si.DEFAULT_DATETIME_FORMAT_STRING}={}){super();const i=t||si.DEFAULT_TIME_ZONE_ID;try{this.dhTimeZone=M.i18n.TimeZone.getTimeZone(i)}catch{bh.error("Unsupported time zone id",i),this.dhTimeZone=M.i18n.TimeZone.getTimeZone(si.DEFAULT_TIME_ZONE_ID)}this.defaultDateTimeFormatString=s,this.showTimeZone=e,this.showTSeparator=n,this.formatStringMap=si.makeFormatStringMap(e,n)}static isValid(t){try{return M.i18n.DateTimeFormat.format(t.formatString,new Date),!0}catch{return!1}}static makeFormat(t,e,n=tt.TYPE_CONTEXT_PRESET){return{label:t,formatString:e,type:n}}static isSameFormat(t,e){return t===e||t!==null&&e!==null&&t.type===e.type&&t.formatString===e.formatString}static makeGlobalFormatStringMap(t,e){const n=e?"'T'":" ",s=t?" z":"";return new Map([["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${n}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${n}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${n}HH:mm:ss.SSSSSSSSS${s}`]])}static getGlobalFormats(t,e){return[...si.makeGlobalFormatStringMap(t,e).keys()]}static makeFormatStringMap(t,e){const n=e!==void 0&&e?"'T'":" ",s=t!==void 0&&t?" z":"";return new Map([["yyyy-MM-dd",`yyyy-MM-dd${s}`],["MM-dd-yyyy",`MM-dd-yyyy${s}`],["HH:mm:ss",`HH:mm:ss${s}`],["HH:mm:ss.SSS",`HH:mm:ss.SSS${s}`],["HH:mm:ss.SSSSSSSSS",`HH:mm:ss.SSSSSSSSS${s}`],["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${n}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${n}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${n}HH:mm:ss.SSSSSSSSS${s}`]])}static getFormats(t,e){return[...si.makeFormatStringMap(t,e).keys()]}getEffectiveFormatString(t){var e;return(e=this.formatStringMap.get(t))!=null?e:t}format(t,e={}){const n=e.formatString!=null&&e.formatString!==""?e.formatString:this.defaultDateTimeFormatString,s=this.getEffectiveFormatString(n);try{return M.i18n.DateTimeFormat.format(s,t,this.dhTimeZone)}catch{bh.error("Invalid format arguments")}return""}};let nt=si;nt.DEFAULT_DATETIME_FORMAT_STRING="yyyy-MM-dd HH:mm:ss.SSS";nt.DEFAULT_TIME_ZONE_ID="America/New_York";const ZS=X.module("DecimalColumnFormatter"),xn=class extends tt{constructor({defaultFormatString:t=xn.DEFAULT_FORMAT_STRING}={}){super(),this.defaultFormatString=t}static isValid(t){try{return M.i18n.NumberFormat.format(t.formatString,0),!0}catch{return!1}}static makeFormat(t,e,n=tt.TYPE_CONTEXT_PRESET,s){return{label:t,type:n,formatString:e,multiplier:s}}static makePresetFormat(t,e="",n){return xn.makeFormat(t,e,tt.TYPE_CONTEXT_PRESET,n)}static makeCustomFormat(t="",e){return xn.makeFormat("Custom Format",t,tt.TYPE_CONTEXT_CUSTOM,e)}static isSameFormat(t,e){return t===e||t!=null&&e!=null&&t.type===e.type&&t.formatString===e.formatString&&t.multiplier===e.multiplier}format(t,e={}){const n=e.formatString!=null&&e.formatString!==""?e.formatString:this.defaultFormatString,s=e.multiplier!==void 0&&e.multiplier!==0?t*e.multiplier:t;try{return M.i18n.NumberFormat.format(n,s)}catch{ZS.error("Invalid format arguments")}return""}};let _e=xn;_e.DEFAULT_FORMAT_STRING="###,##0.0000";_e.FORMAT_PERCENT=xn.makePresetFormat("Percent","##0.00%");_e.FORMAT_BASIS_POINTS=xn.makePresetFormat("Basis Points","###,##0 bp",1e4);_e.FORMAT_MILLIONS=xn.makePresetFormat("Millions","###,##0.000 mm",1e-6);_e.FORMAT_SCIENTIFIC_NOTATION=xn.makePresetFormat("Scientific Notation","0.0000E0");_e.FORMAT_ROUND=xn.makePresetFormat("Round","###,##0");_e.FORMAT_ROUND_TWO_DECIMALS=xn.makePresetFormat("0.00","###,##0.00");_e.FORMAT_ROUND_FOUR_DECIMALS=xn.makePresetFormat("0.0000","###,##0.0000");class QS extends tt{format(e){return`${e}`}}const JS=X.module("IntegerColumnFormatter"),Yi=class extends tt{constructor({defaultFormatString:t=Yi.DEFAULT_FORMAT_STRING}={}){super(),this.defaultFormatString=t}static isValid(t){try{return M.i18n.NumberFormat.format(t.formatString,0),!0}catch{return!1}}static makeFormat(t,e,n=tt.TYPE_CONTEXT_PRESET,s){return{label:t,type:n,formatString:e,multiplier:s}}static makePresetFormat(t,e="",n){return Yi.makeFormat(t,e,tt.TYPE_CONTEXT_PRESET,n)}static makeCustomFormat(t="",e){return Yi.makeFormat("Custom Format",t,tt.TYPE_CONTEXT_CUSTOM,e)}static isSameFormat(t,e){return t===e||t!=null&&e!=null&&t.type===e.type&&t.formatString===e.formatString&&t.multiplier===e.multiplier}format(t,e={}){const n=e.formatString!=null&&e.formatString!==""?e.formatString:this.defaultFormatString,s=e.multiplier!==void 0&&e.multiplier!==0?t*e.multiplier:t;try{return M.i18n.NumberFormat.format(n,s)}catch{JS.error("Invalid format arguments")}return""}};let Ze=Yi;Ze.DEFAULT_FORMAT_STRING="###,##0";Ze.FORMAT_MILLIONS=Yi.makePresetFormat("Millions","###,##0.000 mm",1e-6);Ze.FORMAT_SCIENTIFIC_NOTATION=Yi.makePresetFormat("Scientific Notation","0.0000E0");class e0 extends tt{format(e){return e}}const Gt=class{static makeDateWrapper(t,e,n=0,s=1,i=0,o=0,r=0,l=0){if(!t)throw new Error("No timezone provided");const a=`${e}`.padStart(4,"0"),d=`${n+1}`.padStart(2,"0"),c=`${s}`.padStart(2,"0"),u=`${i}`.padStart(2,"0"),m=`${o}`.padStart(2,"0"),p=`${r}`.padStart(2,"0"),g=`${l}`.padStart(9,"0"),f=`${a}-${d}-${c} ${u}:${m}:${p}.${g}`;return M.i18n.DateTimeFormat.parse(Gt.FULL_DATE_FORMAT,f,M.i18n.TimeZone.getTimeZone(t))}static getNextNanos(t){const e=parseInt(t,10),n="0".repeat(9-t.length),s=`${e+1}${n}`;return parseInt(s,10)}static getNextDate(t,e,n){let{year:s,month:i,date:o,hours:r,minutes:l,seconds:a,nanos:d}=e;if(t.nanos!=null){if(t.nanos.length===9)return null;d=Gt.getNextNanos(t.nanos),d>999999999&&(a+=1,d=0)}else t.seconds!=null?a+=1:t.minutes!=null?l+=1:t.hours!=null?r+=1:t.date!=null?o+=1:t.month!=null?i+=1:s+=1;const c=new Date(s,i,o,r,l,a);return Gt.makeDateWrapper(n,c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),d)}static parseMonth(t){const e=parseInt(t,10);if(!Number.isNaN(e))return e>=1&&e<=12?e-1:NaN;const n=t.trim().toLowerCase();if(n.length>=3){for(let s=0;s<Gt.months.length;s+=1)if(Gt.months[s].startsWith(n))return s}return NaN}static parseDateValues(t,e,n,s,i,o,r){const l=parseInt(t,10),a=e!=null?this.parseMonth(e):0,d=n!=null?parseInt(n,10):1,c=s!=null?parseInt(s,10):0,u=i!=null?parseInt(i,10):0,m=o!=null?parseInt(o,10):0,p=r!=null?parseInt(r.padEnd(9,"0"),10):0;return Number.isNaN(l)||Number.isNaN(a)||Number.isNaN(d)||Number.isNaN(c)||Number.isNaN(u)||Number.isNaN(m)||Number.isNaN(p)?null:{year:l,month:a,date:d,hours:c,minutes:u,seconds:m,nanos:p}}static parseDateTimeString(t){const n=/\s*(\d{4})([-./]([\da-z]+))?([-./](\d{1,2}))?([tT\s](\d{2})([:](\d{2}))?([:](\d{2}))?([.](\d{1,9}))?)?(.*)/.exec(t);if(n==null)throw new Error(`Unexpected date string: ${t}`);const[,s,,i,,o,,r,,l,,a,,d,c]=n;if(c!=null&&c.length>0)throw new Error(`Unexpected characters after date string '${t}': ${c}`);return{year:s,month:i,date:o,hours:r,minutes:l,seconds:a,nanos:d}}static parseDateRange(t,e){const n=t.trim().toLowerCase();if(n.length===0)throw new Error("Cannot parse date range from empty string");if(n==="null")return[null,null];if(n==="today"){const l=new Date(Date.now()),a=Gt.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()),d=Gt.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()+1);return[a,d]}if(n==="yesterday"){const l=new Date(Date.now()),a=Gt.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()-1),d=Gt.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate());return[a,d]}if(n==="now"){const l=new Date(Date.now());return[M.DateWrapper.ofJsDate(l),null]}const s=Gt.parseDateTimeString(n);if(s.year==null&&s.month==null&&s.date==null)throw new Error(`Unable to extract year, month, or day ${n}`);const i=Gt.parseDateValues(s.year,s.month,s.date,s.hours,s.minutes,s.seconds,s.nanos);if(i==null)throw new Error(`Unable to extract date values from ${s}`);const o=Gt.makeDateWrapper(e,i.year,i.month,i.date,i.hours,i.minutes,i.seconds,i.nanos),r=Gt.getNextDate(s,i,e);return[o,r]}static getJsDate(t){return typeof t=="number"?new Date(t):t.asDate()}};let bs=Gt;bs.FULL_DATE_FORMAT="yyyy-MM-dd HH:mm:ss.SSSSSSSSS";bs.months=["january","february","march","april","may","june","july","august","september","october","november","december"];class Xt{}Xt.not="not";Xt.and="and";Xt.or="or";function t0(t){if(!(t==="not"||t==="and"||t==="or"))throw new Error("operator is not a valid FilterOperatorValue")}class K{}K.eq="eq";K.eqIgnoreCase="eqIgnoreCase";K.notEq="notEq";K.notEqIgnoreCase="notEqIgnoreCase";K.greaterThan="greaterThan";K.greaterThanOrEqualTo="greaterThanOrEqualTo";K.lessThan="lessThan";K.lessThanOrEqualTo="lessThanOrEqualTo";K.in="in";K.inIgnoreCase="inIgnoreCase";K.notIn="notIn";K.notInIgnoreCase="notInIgnoreCase";K.isTrue="isTrue";K.isFalse="isFalse";K.isNull="isNull";K.invoke="invoke";K.contains="contains";K.notContains="notContains";K.startsWith="startsWith";K.endsWith="endsWith";K.containsAny="containsAny";function Tm(t){switch(t){case K.eq:return"is exactly";case K.eqIgnoreCase:return"is exactly (ignore case)";case K.notEq:return"is not exactly";case K.notEqIgnoreCase:return"is not exactly (ignore case)";case K.contains:return"contains";case K.notContains:return"does not contain";case K.startsWith:return"starts with";case K.endsWith:return"ends with";default:throw new Error(`Unrecognized text filter type ${t}`)}}function Em(t){switch(t){case K.eq:return"is equal to";case K.notEq:return"is not equal to";case K.greaterThan:return"greater than";case K.greaterThanOrEqualTo:return"greater than or equal to";case K.lessThan:return"less than";case K.lessThanOrEqualTo:return"less than or equal to";default:throw new Error(`Unrecognized number filter type ${t}`)}}function ym(t){switch(t){case K.eq:return"date is";case K.notEq:return"date is not";case K.notEqIgnoreCase:case K.greaterThan:return"date is after";case K.greaterThanOrEqualTo:return"date is after or equal";case K.lessThan:return"date is before";case K.lessThanOrEqualTo:return"date is before or equal";default:throw new Error(`Unrecognized date filter type ${t}`)}}function n0(t){switch(t){case K.isTrue:return"Is True";case K.isFalse:return"Is False";case K.isNull:return"Is Null";default:throw new Error(`Unrecognized boolean filter type ${t}`)}}const os=X.module("TableUtils"),se=class{static getSortIndex(t,e){var n;for(let s=0;s<t.length;s+=1)if(((n=t[s].column)==null?void 0:n.index)===e)return s;return null}static getSortForColumn(t,e){const n=se.getSortIndex(t,e);return n!=null?t[n]:null}static getFilterText(t){return t?t.toString():null}static getFilterTypes(t){return se.isBooleanType(t)?[K.isTrue,K.isFalse,K.isNull]:se.isCharType(t)||se.isNumberType(t)||se.isDateType(t)?[K.eq,K.notEq,K.greaterThan,K.greaterThanOrEqualTo,K.lessThan,K.lessThanOrEqualTo]:se.isTextType(t)?[K.eq,K.eqIgnoreCase,K.notEq,K.notEqIgnoreCase,K.contains,K.notContains,K.startsWith,K.endsWith]:[]}static getNextSort(t,e,n){if(t==null||n<0||n>=t.length)return null;const s=se.getSortForColumn(e,n);return s===null?t[n].sort().asc():s.direction===se.sortDirection.ascending?s.desc():null}static makeColumnSort(t,e,n,s){if(t==null||e<0||e>=t.length||n===se.sortDirection.none)return null;let i=t[e].sort();switch(n){case se.sortDirection.ascending:i=i.asc();break;case se.sortDirection.descending:i=i.desc();break}return s&&(i=i.abs()),i}static toggleSortForColumn(t,e,n,s=!1){if(n<0||n>=e.length)return[];const i=se.getNextSort(e,t,n);return se.setSortForColumn(t,n,i,s)}static sortColumn(t,e,n,s,i,o){if(t==null||n<0||n>=e.length)return[];const r=se.makeColumnSort(e,n,s,i);return se.setSortForColumn(t,n,r,o)}static setSortForColumn(t,e,n,s=!1){const i=se.getSortIndex(t,e);let o=[];return s&&(o=o.concat(t.filter(({direction:r})=>r!==se.sortDirection.reverse)),i!==null&&o.splice(i,1)),n!==null&&o.push(n),o}static getNormalizedType(t){switch(t){case"boolean":case"java.lang.Boolean":case se.dataType.BOOLEAN:return se.dataType.BOOLEAN;case"char":case"java.lang.Character":case se.dataType.CHAR:return se.dataType.CHAR;case"java.lang.String":case se.dataType.STRING:return se.dataType.STRING;case"io.deephaven.db.tables.utils.DBDateTime":case"io.deephaven.time.DateTime":case"com.illumon.iris.db.tables.utils.DBDateTime":case se.dataType.DATETIME:return se.dataType.DATETIME;case"double":case"java.lang.Double":case"float":case"java.lang.Float":case"java.math.BigDecimal":case se.dataType.DECIMAL:return se.dataType.DECIMAL;case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"short":case"java.lang.Short":case"byte":case"java.lang.Byte":case"java.math.BigInteger":case se.dataType.INT:return se.dataType.INT;default:return se.dataType.UNKNOWN}}static isLongType(t){switch(t){case"long":case"java.lang.Long":return!0;default:return!1}}static isDateType(t){switch(t){case"io.deephaven.db.tables.utils.DBDateTime":case"io.deephaven.time.DateTime":case"com.illumon.iris.db.tables.utils.DBDateTime":return!0;default:return!1}}static isNumberType(t){return se.isIntegerType(t)||se.isDecimalType(t)}static isIntegerType(t){switch(t){case"int":case"java.lang.Integer":case"java.math.BigInteger":case"long":case"java.lang.Long":case"short":case"java.lang.Short":case"byte":case"java.lang.Byte":return!0;default:return!1}}static isDecimalType(t){switch(t){case"double":case"java.lang.Double":case"java.math.BigDecimal":case"float":case"java.lang.Float":return!0;default:return!1}}static isBooleanType(t){switch(t){case"boolean":case"java.lang.Boolean":return!0;default:return!1}}static isCharType(t){switch(t){case"char":case"java.lang.Character":return!0;default:return!1}}static isStringType(t){switch(t){case"java.lang.String":return!0;default:return!1}}static isTextType(t){return this.isStringType(t)||this.isCharType(t)}static getBaseType(t){return t.split("[]")[0]}static isCompatibleType(t,e){return se.getNormalizedType(t)===se.getNormalizedType(e)}static makeQuickFilter(t,e,n){const s=e.split("||");let i=null;for(let o=0;o<s.length;o+=1){const l=s[o].split("&&");let a=null;for(let d=0;d<l.length;d+=1){const c=l[d].trim();if(c.length>0){const u=se.makeQuickFilterFromComponent(t,c,n);if(u)a?a=a.and(u):a=u;else throw new Error(`Unable to parse quick filter from text ${e}`)}}i&&a?i=i.or(a):i=a}return i}static makeQuickFilterFromComponent(t,e,n){const{type:s}=t;return se.isNumberType(s)?this.makeQuickNumberFilter(t,e):se.isBooleanType(s)?this.makeQuickBooleanFilter(t,e):n!=null&&se.isDateType(s)?this.makeQuickDateFilter(t,e,n):se.isCharType(s)?this.makeQuickCharFilter(t,e):this.makeQuickTextFilter(t,e)}static makeQuickNumberFilter(t,e){if(e==null)return null;const n=t.filter();let s=null;const o=/\s*(>=|<=|=>|=<|>|<|!=|=|!)?(\s*-\s*)?(\s*\d*(?:,\d{3})*(?:\.\d*)?\s*)?(null|nan|infinity|inf|\u221E)?(.*)/i.exec(e);let r=null,l=null,a=null,d=null,c=null;if(o!==null&&o.length>3&&([,r,l,a,d,c]=o),c!=null&&c.trim().length>0)return null;if(r==null&&(r="="),d!=null){if(!(r==="="||r==="!"||r==="!="))return null;switch(d=d.trim().toLowerCase(),d){case"null":s=n.isNull();break;case"nan":s=M.FilterCondition.invoke("isNaN",n);break;case"infinity":case"inf":case"\u221E":l!=null?s=M.FilterCondition.invoke("isInf",n).and(n.lessThan(M.FilterValue.ofNumber(0))):s=M.FilterCondition.invoke("isInf",n).and(n.greaterThan(M.FilterValue.ofNumber(0)));break}return s!==null&&(r==="!"||r==="!=")&&(s=s.not()),s}if(a==null)return null;if(a=se.removeCommas(a),se.isLongType(t.type))try{a=M.FilterValue.ofNumber(M.LongWrapper.ofString(`${l!=null?"-":""}${a}`))}catch(u){return os.warn("Unable to create long filter",u),null}else{if(a=parseFloat(a),a==null||Number.isNaN(a))return null;a=M.FilterValue.ofNumber(l!=null?0-a:a)}return s=t.filter(),se.makeRangeFilterWithOperation(s,r,a)}static makeQuickTextFilter(t,e){if(e==null)return null;const n=`${e}`.trim(),i=/^(!~|!=|~|=|!)?(.*)/.exec(n);let o=null,r=null;if(i!==null&&i.length>2&&([,o,r]=i,r!=null&&(r=r.trim())),r==null||r.length===0)return null;o==null&&(o="=");const l=t.filter();if(r.toLowerCase()==="null")switch(o){case"=":return l.isNull();case"!=":case"!":return l.isNull().not();default:return null}let a=null,d=null;switch(r.startsWith("*")?(a="*",r=r.substring(1)):r.endsWith("*")&&!r.endsWith("\\*")&&(d="*",r=r.substring(0,r.length-1)),r=r.replace("\\",""),o){case"~":return l.isNull().not().and(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E.*`)));case"!~":return l.isNull().or(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E.*`)).not());case"!=":return a==="*"?l.isNull().or(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E$`)).not()):d==="*"?l.isNull().or(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i)^\\Q${r}\\E.*`)).not()):l.notEqIgnoreCase(M.FilterValue.ofString(r.toLowerCase()));case"=":return a==="*"?l.isNull().not().and(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E$`))):d==="*"?l.isNull().not().and(l.invoke("matches",M.FilterValue.ofString(`(?s)(?i)^\\Q${r}\\E.*`))):l.eqIgnoreCase(M.FilterValue.ofString(r.toLowerCase()))}return null}static makeQuickBooleanFilter(t,e){if(e==null)return null;const s=/^(!=|=|!)?(.*)/.exec(`${e}`.trim());if(s===null)return null;const[,i,o]=s,r=i==="!"||i==="!=",l=o.trim().toLowerCase();let a=t.filter();try{const d=se.makeBooleanValue(l);return d!=null&&d?a=a.isTrue():d===null?a=a.isNull():a=a.isFalse(),r?a.not():a}catch{return null}}static makeQuickDateFilter(t,e,n){const s=e.trim(),o=/\s*(>=|<=|=>|=<|>|<|!=|!|=)?(.*)/.exec(s);if(o==null||o.length<=2)throw new Error(`Unable to parse date filter: ${e}`);let r=null,l=null;[,r,l]=o;let a=K.eq;switch(r){case"<":a=K.lessThan;break;case"<=":case"=<":a=K.lessThanOrEqualTo;break;case">":a=K.greaterThan;break;case">=":case"=>":a=K.greaterThanOrEqualTo;break;case"!=":case"!":a=K.notEq;break;case"=":case"==":default:a=K.eq;break}return se.makeQuickDateFilterWithOperation(t,l,a,n)}static makeQuickDateFilterWithOperation(t,e,n,s){if(t==null)throw new Error("Column is null");const[i,o]=bs.parseDateRange(e,s),r=i!=null?M.FilterValue.ofNumber(i):null,l=o!=null?M.FilterValue.ofNumber(o):null,a=t.filter();if(r==null)return n===K.notEq?a.isNull().not():a.isNull();switch(n){case K.eq:{if(l!=null){const d=a.greaterThanOrEqualTo(r),c=a.lessThan(l);return d.and(c)}return a.eq(r)}case K.lessThan:return a.lessThan(r);case K.lessThanOrEqualTo:return l!=null?a.lessThan(l):a.lessThanOrEqualTo(r);case K.greaterThan:return l!=null?a.greaterThanOrEqualTo(l):a.greaterThan(r);case K.greaterThanOrEqualTo:return a.greaterThanOrEqualTo(r);case K.notEq:{if(l!=null){const d=a.lessThan(r),c=a.greaterThanOrEqualTo(l);return d.or(c)}return a.notEq(r)}default:throw new Error(`Invalid operator: ${n}`)}}static quoteValue(t){return t.length>=2&&(t.charAt(0)==='"'&&t.charAt(t.length-1)==='"'||t.charAt(0)==="'"&&t.charAt(t.length-1)==="'")?t:`"${t}"`}static isRangeOperation(t){switch(t){case"<":case"<=":case"=<":case">":case">=":case"=>":return!0;default:return!1}}static makeQuickCharFilter(t,e){if(e==null)return null;const n=`${e}`.trim(),i=/^(>=|<=|=>|=<|>|<|!=|=|!)?(null|"."|'.'|.)?(.*)/.exec(n);let o=null,r=null,l=null;if(i!==null&&i.length>3&&([,o,r,l]=i),l!=null&&l.trim().length>0||r==null||r.length===0)return null;o==null&&(o="=");const a=t.filter();if(r.toLowerCase()==="null")switch(o){case"=":return a.isNull();case"!=":case"!":return a.isNull().not();default:return null}const d=M.FilterValue.ofString(se.isRangeOperation(o)?se.quoteValue(r):r);return se.makeRangeFilterWithOperation(a,o,d)}static makeRangeFilterWithOperation(t,e,n){switch(e){case"=":return t.eq(n);case"<":return t.lessThan(n);case"<=":case"=<":return t.lessThanOrEqualTo(n);case">":return t.greaterThan(n);case">=":case"=>":return t.greaterThanOrEqualTo(n);case"!=":case"!":return t.notEq(n);default:return null}}static makeCancelableTablePromise(t){return ye.makeCancelable(t,e=>{e.close()})}static makeCancelableTableEventPromise(t,e,n=0,s=null){let i,o,r=!0;const l=new Promise((a,d)=>{o=setTimeout(()=>{i(),r=!1,d(new Pu(`Event "${e}" timed out.`))},n),i=t.addEventListener(e,c=>{if(s!=null&&!s(c)){os.debug2("Event triggered, but matcher returned false.");return}os.debug2("Event triggered, resolving."),i(),clearTimeout(o),r=!1,a(c)})});return l.cancel=()=>{if(r){os.debug2("Pending promise cleanup."),i(),clearTimeout(o),r=!1;return}os.debug2("Ignoring non-pending promise cancel.")},l}static makeAdvancedFilter(t,e,n){const{filterItems:s,filterOperators:i,invertSelection:o,selectedValues:r}=e;let l=null;for(let d=0;d<s.length;d+=1){const c=s[d],{selectedType:u,value:m}=c;if(u!=null&&u.length>0&&m!=null&&m.length>0)try{const p=se.makeAdvancedValueFilter(t,u,m,n);if(p!=null){if(d===0)l=p;else if(l!==null&&d-1<i.length){const g=i[d-1];if(g===Xt.and)l=l.and(p);else if(g===Xt.or)l=l.or(p);else{os.error("Unexpected filter operator",g,p),l=null;break}}}else os.debug2("Empty filter ignored for",u,m)}catch(p){os.error("Unable to create filter",p),l=null;break}}const a=se.makeSelectValueFilter(t,r,o);return a!=null&&(l!=null?l=l.and(a):l=a),l}static removeCommas(t){return t.replace(/[\s|,]/g,"")}static makeFilterValue(t,e){const n=se.getBaseType(t);return se.isTextType(n)?M.FilterValue.ofString(e):se.isLongType(n)?M.FilterValue.ofNumber(M.LongWrapper.ofString(se.removeCommas(e))):M.FilterValue.ofNumber(se.removeCommas(e))}static makeFilterRawValue(t,e){return se.isTextType(t)?M.FilterValue.ofString(e):se.isBooleanType(t)?M.FilterValue.ofBoolean(e):M.FilterValue.ofNumber(e)}static makeValue(t,e,n){if(e==null||e==="null")return null;if(se.isTextType(t))return e;if(se.isLongType(t))return M.LongWrapper.ofString(se.removeCommas(e));if(se.isBooleanType(t))return se.makeBooleanValue(e,!0);if(se.isDateType(t)){const[s]=bs.parseDateRange(e,n);return s}return se.isNumberType(t)?se.makeNumberValue(e):(os.error("Unexpected column type",t),null)}static makeBooleanValue(t,e=!1){if(t===""&&e)return null;switch(t==null?void 0:t.toLowerCase()){case"null":return null;case"0":case"f":case"fa":case"fal":case"fals":case"false":case"n":case"no":return!1;case"1":case"t":case"tr":case"tru":case"true":case"y":case"ye":case"yes":return!0;default:throw new Error(`Invalid boolean '${t}'`)}}static makeNumberValue(t){if(t==null||t==="null"||t==="")return null;const e=t.toLowerCase().trim();if(e==="\u221E"||e==="infinity"||e==="inf")return Number.POSITIVE_INFINITY;if(e==="-\u221E"||e==="-infinity"||e==="-inf")return Number.NEGATIVE_INFINITY;const n=se.removeCommas(e);if(se.NUMBER_REGEX.test(n))return parseFloat(n);throw new Error(`Invalid number '${t}'`)}static getFilterOperatorString(t){switch(t){case K.eq:return"=";case K.notEq:return"!=";case K.greaterThan:return">";case K.greaterThanOrEqualTo:return">=";case K.lessThan:return"<";case K.lessThanOrEqualTo:return"<=";case K.contains:return"~";case K.notContains:return"!~";default:throw new Error(`Unexpected filter type ${t}`)}}static makeAdvancedValueFilter(t,e,n,s){if(se.isDateType(t.type))return se.makeQuickDateFilterWithOperation(t,n,e,s);if(se.isNumberType(t.type)||se.isCharType(t.type))return se.makeQuickFilter(t,`${se.getFilterOperatorString(e)}${n}`);const i=se.makeFilterValue(t.type,n),o=t.filter();switch(e){case K.eq:return o.eq(i);case K.eqIgnoreCase:return o.eqIgnoreCase(i);case K.notEq:return o.notEq(i);case K.notEqIgnoreCase:return o.notEqIgnoreCase(i);case K.greaterThan:return o.greaterThan(i);case K.greaterThanOrEqualTo:return o.greaterThanOrEqualTo(i);case K.lessThan:return o.lessThan(i);case K.lessThanOrEqualTo:return o.lessThanOrEqualTo(i);case K.isTrue:return o.isTrue();case K.isFalse:return o.isFalse();case K.isNull:return o.isNull();case K.contains:return o.isNull().not().and(o.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)));case K.notContains:return o.isNull().or(o.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)).not());case K.startsWith:return o.isNull().not().and(o.invoke("matches",M.FilterValue.ofString(`(?s)(?i)^\\Q${n}\\E.*`)));case K.endsWith:return o.isNull().not().and(o.invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E$`)));case K.in:case K.inIgnoreCase:case K.notIn:case K.notInIgnoreCase:case K.invoke:default:throw new Error(`Unexpected filter operation: ${e}`)}}static makeSelectValueFilter(t,e,n){if(e.length===0){if(n)return null;let o=null;se.isTextType(t.type)?o=M.FilterValue.ofString("a"):se.isBooleanType(t.type)?o=M.FilterValue.ofBoolean(!0):se.isDateType(t.type)?o=M.FilterValue.ofNumber(M.DateWrapper.ofJsDate(new Date)):o=M.FilterValue.ofNumber(0);const r=t.filter().eq(o),l=t.filter().notEq(o);return r.and(l)}const s=[];let i=!1;for(let o=0;o<e.length;o+=1){const r=e[o];r==null?i=!0:se.isTextType(t.type)?s.push(M.FilterValue.ofString(typeof r=="number"?String.fromCharCode(r):r)):se.isBooleanType(t.type)?s.push(M.FilterValue.ofBoolean(Boolean(r))):s.push(M.FilterValue.ofNumber(r))}return i?s.length>0?n?t.filter().isNull().not().and(t.filter().notIn(s)):t.filter().isNull().or(t.filter().in(s)):n?t.filter().isNull().not():t.filter().isNull():n?t.filter().notIn(s):t.filter().in(s)}static isTreeTable(t){return t!=null&&t.expand!==void 0&&t.collapse!==void 0}static sortColumns(t,e=!0){return[...t].sort((n,s)=>{const i=n.name.toUpperCase(),o=s.name.toUpperCase();return nn.sort(i,o,e)})}};let L=se;L.dataType={BOOLEAN:"boolean",CHAR:"char",DATETIME:"datetime",DECIMAL:"decimal",INT:"int",STRING:"string",UNKNOWN:"unknown"};L.sortDirection={ascending:"ASC",descending:"DESC",reverse:"REVERSE",none:null};L.REVERSE_TYPE=Object.freeze({NONE:"none",PRE_SORT:"pre-sort",POST_SORT:"post-sort"});L.NUMBER_REGEX=/^-?\d+(\.\d+)?$/;class cn{static makeColumnFormatMap(e){return e==null?new Map:e.reduce((n,s)=>{const i=L.getNormalizedType(s.columnType);if(i===null)return n;n.has(i)||n.set(i,new Map);const o=n.get(i);return o==null||o.set(s.columnName,s.format),n},new Map)}static makeColumnFormattingRule(e,n,s){return{columnType:e,columnName:n,format:s}}constructor(e=[],n,s,i,o=!1){this.defaultColumnFormatter=new QS,this.typeFormatterMap=new Map([[L.dataType.BOOLEAN,new XS],[L.dataType.CHAR,new jS],[L.dataType.DATETIME,new nt(n)],[L.dataType.DECIMAL,new _e(s)],[L.dataType.INT,new Ze(i)],[L.dataType.STRING,new e0]]),this.columnFormatMap=cn.makeColumnFormatMap(e),this.truncateNumbersWithPound=o}getColumnFormatMapForType(e,n=!1){const s=L.getNormalizedType(e);if(s!==null)return n&&!this.columnFormatMap.has(s)&&this.columnFormatMap.set(s,new Map),this.columnFormatMap.get(s)}getColumnFormat(e,n){var i;const s=this.getColumnFormatMapForType(e);return(i=s==null?void 0:s.get(n))!=null?i:null}getColumnTypeFormatter(e){var i;const n=L.getNormalizedType(e);let s=this.defaultColumnFormatter;return n&&(s=(i=this.typeFormatterMap.get(n))!=null?i:s),s}getFormattedString(e,n,s="",i){if(e==null)return"";const o=this.getColumnTypeFormatter(n),r=i||this.getColumnFormat(n,s);return o.format(e,r!=null?r:void 0)}get timeZone(){var n;const e=this.typeFormatterMap.get(L.dataType.DATETIME);return(n=e==null?void 0:e.dhTimeZone)==null?void 0:n.id}}function s0(t){if(t&&t.formatter){const{formatter:e}=t;return e}}function i0(t){return{timeZone:t==null?void 0:t.timeZone,defaultDateTimeFormatString:t==null?void 0:t.defaultDateTimeFormat,showTimeZone:t==null?void 0:t.showTimeZone,showTSeparator:t==null?void 0:t.showTSeparator}}function o0(t,e,n){const s=t.getColumnFormat(n,e);return s!=null&&(s.type===tt.TYPE_CONTEXT_PRESET||s.type===tt.TYPE_CONTEXT_CUSTOM)}const fs={getColumnFormats:s0,getDateTimeFormatterOptions:i0,isCustomColumnFormatDefined:o0};dl.register([yf,If,Rf,Df,Mf,Nf]);const Im=typeof Sa=="function"?Sa(dl):Sa.default(dl),cs=class{constructor(){this.listeners=[],this.isDownsamplingDisabled=!1}getData(){return[]}getDefaultTitle(){return""}getLayout(){return{}}getFilterColumnMap(){return new Map}isFilterRequired(){return!1}setFilter(t){}close(){}setFormatter(t){this.formatter=t}setDownsamplingDisabled(t){this.isDownsamplingDisabled=t}setDimensions(t){this.rect=t}setTitle(t){this.title=t}subscribe(t){this.listeners.push(t)}unsubscribe(t){this.listeners=this.listeners.filter(e=>e!==t)}fireEvent(t){for(let e=0;e<this.listeners.length;e+=1)this.listeners[e](t)}fireUpdate(t){this.fireEvent(new CustomEvent(cs.EVENT_UPDATED,{detail:t}))}fireDisconnect(){this.fireEvent(new CustomEvent(cs.EVENT_DISCONNECT))}fireReconnect(){this.fireEvent(new CustomEvent(cs.EVENT_RECONNECT))}fireDownsampleStart(t){this.fireEvent(new CustomEvent(cs.EVENT_DOWNSAMPLESTARTED,{detail:t}))}fireDownsampleFinish(t){this.fireEvent(new CustomEvent(cs.EVENT_DOWNSAMPLEFINISHED,{detail:t}))}fireDownsampleFail(t){this.fireEvent(new CustomEvent(cs.EVENT_DOWNSAMPLEFAILED,{detail:t}))}fireDownsampleNeeded(t){this.fireEvent(new CustomEvent(cs.EVENT_DOWNSAMPLENEEDED,{detail:t}))}fireLoadFinished(){this.fireEvent(new CustomEvent(cs.EVENT_LOADFINISHED))}};let Tt=cs;Tt.EVENT_UPDATED="ChartModel.EVENT_UPDATED";Tt.EVENT_DISCONNECT="ChartModel.EVENT_DISCONNECT";Tt.EVENT_RECONNECT="ChartModel.EVENT_RECONNECT";Tt.EVENT_DOWNSAMPLESTARTED="ChartModel.EVENT_DOWNSAMPLESTARTED";Tt.EVENT_DOWNSAMPLEFINISHED="ChartModel.EVENT_DOWNSAMPLEFINISHED";Tt.EVENT_DOWNSAMPLEFAILED="ChartModel.EVENT_DOWNSAMPLEFAILED";Tt.EVENT_DOWNSAMPLENEEDED="ChartModel.EVENT_DOWNSAMPLENEEDED";Tt.EVENT_LOADFINISHED="ChartModel.EVENT_LOADFINISHED";const r0="#76d9e4 #9edc6f #fcd65b #aa9af4 #f37e3f #f95d84 #f0f0ee",l0="#403e41",a0="#5b5a5c",d0="#c0bfbf",c0="#4878ea",h0="rgba(91, 90, 92, 0.7)",Nt={"paper-bgcolor":"#2d2a2e","plot-bgcolor":"#322f33","title-color":"#f0f0ee",colorway:r0,gridcolor:l0,linecolor:a0,zerolinecolor:d0,activecolor:c0,rangebgcolor:h0,"area-color":"#76d9e4","trend-color":"#d5f0c1","line-color":"#9edc6f","error-band-line-color":"white","error-band-fill-color":"rgba(213, 240, 193, 0.1)","ohlc-increasing":"#9edc6f","ohlc-decreasing":"#f95d84"},qt=Object.freeze({paper_bgcolor:Nt["paper-bgcolor"],plot_bgcolor:Nt["plot-bgcolor"],title_color:Nt["title-color"],colorway:Nt.colorway,gridcolor:Nt.gridcolor,linecolor:Nt.linecolor,zerolinecolor:Nt.zerolinecolor,activecolor:Nt.activecolor,rangebgcolor:Nt.rangebgcolor,area_color:Nt["area-color"],trend_color:Nt["trend-color"],line_color:Nt["line-color"],error_band_line_color:Nt["error-band-line-color"],error_band_fill_color:Nt["error-band-fill-color"],ohlc_increasing:Nt["ohlc-increasing"],ohlc_decreasing:Nt["ohlc-decreasing"]}),Ar=X.module("ChartUtils"),Ns=Object.freeze(M.calendar.DayOfWeek.values()),Sh="io.deephaven.time.DateTime",u0=36e5,m0=1e6;function p0(t){return t.asDate!==void 0}function g0(t){return t.asNumber!==void 0}function wh(t){return t.dhTimeZone!==void 0}function f0(t){return t!=null&&t.range!=null&&(t.autorange===!1||t.autorange===void 0)}const ie=class{static getPlotlyChartType(t,e){switch(t){case M.plot.SeriesPlotStyle.SCATTER:return e?"scatter":"scattergl";case M.plot.SeriesPlotStyle.LINE:return"scatter";case M.plot.SeriesPlotStyle.BAR:case M.plot.SeriesPlotStyle.STACKED_BAR:return"bar";case M.plot.SeriesPlotStyle.PIE:return"pie";case M.plot.SeriesPlotStyle.TREEMAP:return"treemap";case M.plot.SeriesPlotStyle.HISTOGRAM:return"histogram";case M.plot.SeriesPlotStyle.OHLC:return"ohlc";default:return}}static getPlotlyChartMode(t){switch(t){case M.plot.SeriesPlotStyle.SCATTER:return"markers";case M.plot.SeriesPlotStyle.LINE:return"lines";default:return}}static getPlotlyProperty(t,e){switch(t){case M.plot.SeriesPlotStyle.PIE:switch(e){case M.plot.SourceType.X:return"labels";case M.plot.SourceType.Y:return"values"}break;case M.plot.SeriesPlotStyle.OHLC:switch(e){case M.plot.SourceType.TIME:return"x"}break;case M.plot.SeriesPlotStyle.TREEMAP:switch(e){case M.plot.SourceType.X:return"ids";case M.plot.SourceType.Y:return"values";case M.plot.SourceType.LABEL:return"labels";case M.plot.SourceType.PARENT:return"parents";case M.plot.SourceType.COLOR:return"marker.colors"}break}switch(e){case M.plot.SourceType.X:return"x";case M.plot.SourceType.Y:return"y";case M.plot.SourceType.Z:return"z";case M.plot.SourceType.X_LOW:return"xLow";case M.plot.SourceType.X_HIGH:return"xHigh";case M.plot.SourceType.Y_LOW:return"yLow";case M.plot.SourceType.Y_HIGH:return"yHigh";case M.plot.SourceType.TIME:return"time";case M.plot.SourceType.OPEN:return"open";case M.plot.SourceType.HIGH:return"high";case M.plot.SourceType.LOW:return"low";case M.plot.SourceType.CLOSE:return"close";case M.plot.SourceType.SHAPE:return"shape";case M.plot.SourceType.SIZE:return"size";case M.plot.SourceType.LABEL:return"label";case M.plot.SourceType.COLOR:return"color";case M.plot.SourceType.PARENT:return"parent";case M.plot.SourceType.HOVER_TEXT:return"hovertext";case M.plot.SourceType.TEXT:return"text";default:throw new Error(`Unrecognized source type: ${e}`)}}static getPlotlySeriesOrientation(t){var n,s;const{sources:e}=t;return e.length===2&&((s=(n=e[0])==null?void 0:n.axis)==null?void 0:s.type)===M.plot.AxisType.Y?ie.ORIENTATION.HORIZONTAL:ie.ORIENTATION.VERTICAL}static getPlotlyErrorBars(t,e,n){const s=n.map((o,r)=>o-t[r]),i=e.map((o,r)=>t[r]-o);return{type:"data",symmetric:!1,array:s,arrayminus:i}}static getPlotlyDateFormat(t,e,n){const s=n==null?void 0:n.replace("%","%%").replace(/S{9}/g,"%9f").replace(/S{8}/g,"%8f").replace(/S{7}/g,"%7f").replace(/S{6}/g,"%6f").replace(/S{5}/g,"%5f").replace(/S{4}/g,"%4f").replace(/S{3}/g,"%3f").replace(/S{2}/g,"%2f").replace(/S{1}/g,"%1f").replace(/y{4}/g,"%Y").replace(/y{2}/g,"%y").replace(/M{4}/g,"%B").replace(/M{3}/g,"%b").replace(/M{2}/g,"%m").replace(/M{1}/g,"%-m").replace(/E{4,}/g,"%A").replace(/E{1,}/g,"%a").replace(/d{2}/g,"%d").replace(/([^%]|^)d{1}/g,"$1%-d").replace(/H{2}/g,"%H").replace(/h{2}/g,"%I").replace(/h{1}/g,"%-I").replace(/m{2}/g,"%M").replace(/s{2}/g,"%S").replace("'T'","T").replace(" z","");let i;const o=t==null?void 0:t.getColumnTypeFormatter(e);return o!=null&&wh(o)&&o.dhTimeZone!=null&&o.showTimeZone&&(i=M.i18n.DateTimeFormat.format(" z",new Date,o.dhTimeZone)),{tickformat:s,ticksuffix:i,automargin:!0}}static convertNumberPrefix(t){return t.replace(/\u00A4\u00A4/g,"USD").replace(/\u00A4/g,"$")}static getPlotlyNumberFormat(t,e,n){if(!n)return null;const i=n.split(";")[0].match(/^([^#,0.]*)([#,]*)([0,]*)(\.?)(0*)(#*)(E?0*)(%?)(.*)/);P(i);const[,o,r,l,,a,d,c,u,m]=i,p=l.replace(",","").length,f=r.indexOf(",")>=0||l.indexOf(",")>=0?",":"",b=c!=null&&c!==""?"e":"f",C=u!==""?u:b,S=a.length+d.length,y=`0${p}${f}.${S}${C}`,E=ie.convertNumberPrefix(o),I=ie.convertNumberPrefix(m);return{tickformat:y,tickprefix:E,ticksuffix:I,automargin:!0}}static getPlotlyAxisFormat(t,e=null){const{axis:n,columnType:s}=t,{formatPattern:i}=n;let o=null;return L.isDateType(s)?(o=ie.getPlotlyDateFormat(e,s,i),o=ie.addTickSpacing(o,n,!0)):L.isNumberType(s)&&(o=ie.getPlotlyNumberFormat(e,s,i),o=ie.addTickSpacing(o,n,!1)),n.formatType===M.plot.AxisFormatType.CATEGORY&&(o?o.type="category":o={type:"category",tickformat:void 0,ticksuffix:void 0}),o}static addTickSpacing(t,e,n){const{gapBetweenMajorTicks:s}=e;if(s>0){const i=t||{};let o=s;return n&&(o=s/m0),e.log&&(o=Math.log(o)),i.tickmode="linear",i.dtick=o,i}return t}static getSourceForAxis(t,e){for(let n=0;n<t.series.length;n+=1){const s=t.series[n];for(let i=0;i<s.sources.length;i+=1){const o=s.sources[i];if(o.axis===e)return o}}return null}static getSeriesVisibility(t,e){return e!=null&&e.hiddenSeries!=null&&e.hiddenSeries.includes(t)?"legendonly":!0}static getHiddenLabels(t){return t!=null&&t.hiddenSeries?[...t.hiddenSeries]:[]}static makeSeriesData(t,e,n,s,i=ie.ORIENTATION.VERTICAL){return{type:t,mode:e,name:n,orientation:i,showlegend:s!=null?s:void 0}}static makeSeriesDataFromSeries(t,e,n,s=null,i=qt){const{name:o,plotStyle:r,lineColor:l,shapeColor:a,sources:d}=t,c=d.some(f=>{var b;return(b=f.axis)==null?void 0:b.businessCalendar}),u=ie.getChartType(r,c),m=ie.getPlotlyChartMode(r),p=ie.getPlotlySeriesOrientation(t),g=ie.makeSeriesData(u,m,o,s,p);return ie.addSourcesToSeriesData(g,r,d,e),ie.addStylingToSeriesData(g,r,i,l,a,n),g}static addSourcesToSeriesData(t,e,n,s){const i=t;for(let o=0;o<n.length;o+=1){const r=n[o],{axis:l,type:a}=r,d=ie.getPlotlyProperty(e,a);gu(i,d,[]);const c=l!=null?ie.getAxisPropertyName(l.type):null;if(c!=null){const u=s.get(l.type);if(u){const m=u.indexOf(l),p=m>0?`${m+1}`:"";i[`${c}axis`]=`${c}${p}`}}}}static addStylingToSeriesData(t,e,n=qt,s=null,i=null,o=null){const r=t;r.marker={line:{}},r.line={width:1},e===M.plot.SeriesPlotStyle.AREA?r.fill="tozeroy":e===M.plot.SeriesPlotStyle.STACKED_AREA?r.stackgroup="stack":e===M.plot.SeriesPlotStyle.STEP?r.line.shape="hv":e===M.plot.SeriesPlotStyle.HISTOGRAM?(r.width=[],r.marker.line!==void 0&&Object.assign(r.marker.line,{color:n.paper_bgcolor,width:1})):e===M.plot.SeriesPlotStyle.OHLC?(r.increasing={line:{color:n.ohlc_increasing}},r.decreasing={line:{color:n.ohlc_decreasing}}):e===M.plot.SeriesPlotStyle.PIE?(r.textinfo="label+percent",r.outsidetextfont={color:n.title_color}):e===M.plot.SeriesPlotStyle.TREEMAP&&(r.hoverinfo="text",r.textinfo="label+text",r.tiling={packing:"squarify",pad:0},r.textposition="middle center",r.outsidetextfont={color:n.title_color}),s!=null&&(e===M.plot.SeriesPlotStyle.BAR?r.marker.color=s:r.line.color=s),i!=null&&(r.marker.color=i),o!=null&&e!==M.plot.SeriesPlotStyle.PIE&&(r.visible=o)}static getAxisFormats(t,e){const n=new Map,s={tickformat:null,ticksuffix:null},i=ie.getAllAxes(t),o=ie.groupArray(i,"type"),{charts:r}=t;for(let l=0;l<r.length;l+=1){const a=r[l];for(let d=0;d<a.series.length;d+=1){const c=a.series[d],{sources:u}=c,m=u.filter(p=>p.axis);for(let p=0;p<m.length;p+=1){const g=m[p],{axis:f}=g,{type:b}=f,C=o.get(b);P(C);const S=C.indexOf(f),v=ie.getAxisPropertyName(b);if(v!=null){const y=ie.getAxisLayoutProperty(v,S);if(n.has(y))Ar.debug(`${y} already added.`);else{Ar.debug(`Adding ${y} to axisFormats.`);const E=ie.getPlotlyAxisFormat(g,e);if(E===null)n.set(y,s);else{n.set(y,E);const{businessCalendar:I}=f;if(I!=null){const R=[],{businessPeriods:N,businessDays:F,holidays:B,timeZone:U}=I,x=e==null?void 0:e.getColumnTypeFormatter(Sh);let H;wh(x)&&(H=x.dhTimeZone);const A=H?(U.standardOffset-H.standardOffset)/60:0;B.length>0&&R.push(...ie.createRangeBreakValuesFromHolidays(B,U,H)),N.forEach(O=>R.push({pattern:"hour",bounds:[ie.periodToDecimal(O.close)+A,ie.periodToDecimal(O.open)+A]})),F.length<Ns.length&&ie.createBoundsFromDays(F).forEach(O=>R.push({pattern:"day of week",bounds:O})),E.rangebreaks=R}if(n.size===a.axes.length)return n}}}}}}return n}static getChartType(t,e){switch(t){case M.plot.SeriesPlotStyle.HISTOGRAM:return"bar";default:return ie.getPlotlyChartType(t,e)}}static getAxisPropertyName(t){switch(t){case M.plot.AxisType.X:return"x";case M.plot.AxisType.Y:return"y";default:return null}}static getAxisSide(t){switch(t){case M.plot.AxisPosition.BOTTOM:return"bottom";case M.plot.AxisPosition.TOP:return"top";case M.plot.AxisPosition.LEFT:return"left";case M.plot.AxisPosition.RIGHT:return"right";default:return}}static getAllAxes(t){return t.charts.reduce((e,n)=>[...e,...n.axes],[])}static getChartForSeries(t,e){const{charts:n}=t;for(let s=0;s<n.length;s+=1){const i=n[s];for(let o=0;o<i.series.length;o+=1)if(e===i.series[o])return i}return null}static getLayoutRanges(t){const e={},n=Object.keys(t).filter(s=>s.indexOf("axis")>=0);for(let s=0;s<n.length;s+=1){const i=n[s],o=t[i];f0(o)&&(e[i]=[...o.range])}return e}static updateFigureAxes(t,e,n,s=0,i=0,o=qt){const r=t,l=ie.getAllAxes(e);for(let a=0;a<e.charts.length;a+=1){const d=e.charts[a],c=n==null?void 0:n(d),u=ie.getChartBounds(e,d,s,i);ie.updateLayoutAxes(r,d.axes,l,s,i,u,c,o)}ie.removeStaleAxes(r,l)}static getChartBounds(t,e,n=0,s=0){var v;const{cols:i,rows:o}=t,{column:r,colspan:l,row:a,rowspan:d}=e,c=r+l,u=a+d,m=1/i,p=1/o,g=ie.AXIS_SIZE_PX/n,f=ie.AXIS_SIZE_PX/s,b={left:r*m+(r>0?g/2:0),bottom:a*p+(a>0?f/2:0),top:u*p-(u<o?f/2:0),right:c*m-(c<i?g/2:0)};return((v=ie.groupArray(e.axes,"position").get(M.plot.AxisPosition.RIGHT))!=null?v:[]).length>0&&(n>0?b.right-=(b.right-b.left)*Math.max(0,Math.min(ie.LEGEND_WIDTH_PX/n,ie.MAX_LEGEND_SIZE)):b.right-=(b.right-b.left)*ie.DEFAULT_AXIS_SIZE),b}static updateLayoutAxes(t,e,n,s=0,i=0,o={left:0,top:0,right:1,bottom:1},r,l=qt){const a=s>0?Math.max(ie.MIN_AXIS_SIZE,Math.min(ie.AXIS_SIZE_PX/i,ie.MAX_AXIS_SIZE)):ie.DEFAULT_AXIS_SIZE,d=i>0?Math.max(ie.MIN_AXIS_SIZE,Math.min(ie.AXIS_SIZE_PX/s,ie.MAX_AXIS_SIZE)):ie.DEFAULT_AXIS_SIZE,c=t,u=ie.groupArray(e,"position"),m=ie.groupArray(e,"type"),p=[...m.keys()],g=ie.groupArray(n,"type");for(let f=0;f<p.length;f+=1){const b=p[f],C=ie.getAxisPropertyName(b);if(C!=null){const S=m.get(b),v=g.get(b),E=b===M.plot.AxisType.Y?i:s;P(S),P(v);for(let I=0;I<S.length;I+=1){const R=S[I],N=v.indexOf(R),F=ie.getAxisLayoutProperty(C,N);c[F]==null&&(c[F]=ie.makeLayoutAxis(b,l));const B=c[F];if(B!=null){ie.updateLayoutAxis(B,R,I,u,a,d,o);const{range:U,autorange:x}=B;if(r!=null&&U!==void 0&&(x===void 0||x===!1)){const H=r(R),[A,O]=H(U);Ar.debug("Setting downsample range",E,A,O),R.range(E,A,O)}else R.range(E)}}}}}static removeStaleAxes(t,e){const n=t,s=ie.groupArray(e,"type"),i=[...s.keys()];for(let o=0;o<i.length;o+=1){const r=i[o],l=s.get(r);P(l);let a=l.length;const d=ie.getAxisPropertyName(r);if(d!=null){let c=ie.getAxisLayoutProperty(d,a);for(;n[c]!=null;)delete n[c],a+=1,c=ie.getAxisLayoutProperty(d,a)}}}static getAxisLayoutProperty(t,e){const n=e>0?`${e+1}`:"";return`${t!=null?t:""}axis${n}`}static updateLayoutAxis(t,e,n,s,i,o,r){var u,m,p;const a=e.type===M.plot.AxisType.Y?o:i,d=t,c=(u=e.label)!=null?u:"";if(d.title!==void 0&&typeof d.title!="string"?d.title.text=c:d.title={text:c},e.log&&(d.type="log"),d.side=ie.getAxisSide(e.position),n>0){d.overlaying=(m=ie.getAxisPropertyName(e.type))!=null?m:void 0;const g=(p=s.get(e.position))!=null?p:[],f=g.indexOf(e);f>0&&(d.anchor="free",e.position===M.plot.AxisPosition.RIGHT?d.position=r.right+(f-g.length+1)*a:e.position===M.plot.AxisPosition.TOP?d.position=r.top+(f-g.length+1)*a:e.position===M.plot.AxisPosition.BOTTOM?d.position=r.bottom+(g.length-f+1)*a:e.position===M.plot.AxisPosition.LEFT&&(d.position=r.left+(g.length-f+1)*a))}else if(e.type===M.plot.AxisType.X){const g=s.get(M.plot.AxisPosition.LEFT)||[],f=s.get(M.plot.AxisPosition.RIGHT)||[],b=Math.max(r.left,r.left+(g.length-1)*o),C=Math.min(r.right-(f.length-1)*o,r.right);d.domain=[b,C]}else if(e.type===M.plot.AxisType.Y){const g=s.get(M.plot.AxisPosition.BOTTOM)||[],f=s.get(M.plot.AxisPosition.TOP)||[],b=Math.max(r.bottom,r.bottom+(g.length-1)*i),C=Math.min(r.top-(f.length-1)*i,r.top);d.domain=[b,C]}}static periodToDecimal(t){const e=t.split(":");return Number(e[0])+Number(e[1])/60}static createBoundsFromDays(t){const e=t.map(o=>Ns.indexOf(o)),n=Ns.filter(o=>!t.includes(o)).map(o=>Ns.indexOf(o)),s=new Set;n.forEach(o=>{for(let r=o+1;r<o+Ns.length;r+=1){const l=r%Ns.length;if(e.includes(l)){s.add(l);break}}});const i=[];return s.forEach(o=>{for(let r=o-1;r>o-Ns.length;r-=1){const l=r<0?r+Ns.length:r;if(e.includes(l)){const a=(l+1)%7;i.push([a,o]);break}}}),i}static createRangeBreakValuesFromHolidays(t,e,n){const s=[],i=[];return t.forEach(o=>{o.businessPeriods.length>0?i.push(...ie.createPartialHoliday(o,e,n)):s.push(ie.createFullHoliday(o,e,n))}),[{values:s},...i]}static createFullHoliday(t,e,n){return ie.adjustDateForTimeZone(`${t.date.toString()} 00:00:00.000000`,e,n)}static createPartialHoliday(t,e,n){const s=t.date.toString(),i=["00:00"];t.businessPeriods.forEach(r=>{i.push(r.open),i.push(r.close)}),i.push("24:00");const o=[];for(let r=0;r<i.length;r+=2){const l=i[r],a=i[r+1];if(l!==a){const d=[ie.adjustDateForTimeZone(`${s} ${l}:00.000000`,e,n)],c=u0*(ie.periodToDecimal(a)-ie.periodToDecimal(l));o.push({values:d,dvalue:c})}}return o}static adjustDateForTimeZone(t,e,n){return n&&n.standardOffset!==e.standardOffset?ie.unwrapValue(ie.wrapValue(t,Sh,e),n):t}static groupArray(t,e){return t.reduce((n,s)=>{var r;const i=s[e],o=(r=n.get(i))!=null?r:[];return o.push(s),n.set(i,o),n},new Map)}static unwrapValue(t,e){if(t!=null){if(p0(t))return M.i18n.DateTimeFormat.format(ie.DATE_FORMAT,t,e);if(g0(t))return t.asNumber()}return t}static wrapValue(t,e,n=null){if(L.isDateType(e)&&typeof t=="string"){const s=t,i=ie.DATE_FORMAT.substr(0,t.length),o=M.i18n.DateTimeFormat.parse(i,s);if(!n)return o;const r=`${i} Z`,l=M.i18n.DateTimeFormat.format("Z",o,n),a=M.i18n.DateTimeFormat.parse(r,`${s} ${l}`),d=M.i18n.DateTimeFormat.format("Z",a,n);return M.i18n.DateTimeFormat.parse(r,`${s} ${d}`)}return t}static makeLayoutAxis(t,e=qt){const n={automargin:!0,gridcolor:e.gridcolor,linecolor:e.linecolor,rangeslider:{visible:!1},showline:!0,ticklen:5,tickcolor:e.paper_bgcolor,tickfont:{color:e.zerolinecolor},title:{font:{color:e.title_color}}};return t===M.plot.AxisType.X?Object.assign(n,{showgrid:!0}):t===M.plot.AxisType.Y&&Object.assign(n,{zerolinecolor:e.zerolinecolor,zerolinewidth:2}),n}static getColorwayFromTheme(t=qt){let e=[];return t.colorway&&(Array.isArray(t.colorway)?e=t.colorway:typeof t.colorway=="string"?e=t.colorway.split(" "):Ar.warn(`Unable to handle colorway property: ${t.colorway}`)),e}static makeDefaultLayout(t=qt){const e={...t,autosize:!0,colorway:ie.getColorwayFromTheme(t),font:{family:"'Fira Sans', sans-serif"},title:{font:{color:t.title_color},yanchor:"top",pad:{...ie.DEFAULT_TITLE_PADDING},y:1},legend:{font:{color:t.title_color}},margin:{...ie.DEFAULT_MARGIN},xaxis:ie.makeLayoutAxis(M.plot.AxisType.X,t),yaxis:ie.makeLayoutAxis(M.plot.AxisType.Y,t)};return e.datarevision=0,e}static hydrateSettings(t){return{...t,type:M.plot.SeriesPlotStyle[t.type]}}static titleFromSettings(t){const{series:e,xAxis:n,title:s=`${e.join(", ")} by ${n}`}=t;return s}static makeFigureSettings(t,e){const{series:n,xAxis:s,type:i}=t,o=ie.titleFromSettings(t),r={formatType:`${M.plot.AxisFormatType.NUMBER}`,type:`${M.plot.AxisType.X}`,position:`${M.plot.AxisPosition.BOTTOM}`},l={formatType:`${M.plot.AxisFormatType.NUMBER}`,type:`${M.plot.AxisType.Y}`,position:`${M.plot.AxisPosition.LEFT}`};return{charts:[{chartType:`${M.plot.ChartType.XY}`,axes:[r,l],series:n.map(a=>({plotStyle:`${i}`,name:a,dataSources:[{type:`${M.plot.SourceType.X}`,columnName:s,axis:r,table:e},{type:`${M.plot.SourceType.Y}`,columnName:a,axis:l,table:e}]}))}],title:o}}};let xe=ie;xe.DEFAULT_AXIS_SIZE=.15;xe.MIN_AXIS_SIZE=.025;xe.MAX_AXIS_SIZE=.2;xe.AXIS_SIZE_PX=75;xe.LEGEND_WIDTH_PX=50;xe.MAX_LEGEND_SIZE=.25;xe.ORIENTATION=Object.freeze({HORIZONTAL:"h",VERTICAL:"v"});xe.DATE_FORMAT="yyyy-MM-dd HH:mm:ss.SSSSSS";xe.DEFAULT_MARGIN=Object.freeze({l:60,r:50,t:30,b:60,pad:0});xe.DEFAULT_TITLE_PADDING=Object.freeze({t:8});xe.SUBTITLE_LINE_HEIGHT=25;const Fs=X.module("Chart"),Vo=class extends w.exports.Component{constructor(t){super(t),this.getCachedConfig=Ce((e,n,s,i)=>{const o=[],r=Boolean(e);if(r&&o.push({name:`Downsampling failed: ${e}`,click:()=>{},icon:Vo.convertIcon(Lu),attr:"fill-warning"}),n||s||i||r){const l=Vo.downsampleButtonTitle(s,i),a=Vo.downsampleButtonAttr(s,i),d=s?Mu:nb;o.push({name:l,icon:Vo.convertIcon(d),click:this.handleDownsampleClick,attr:a})}return{displaylogo:!1,displayModeBar:s||r?!0:"hover",modeBarButtons:[o,["toImage"],["zoom2d","pan2d"],["zoomIn2d","zoomOut2d","autoScale2d","resetScale2d"]]}}),this.handleAfterPlot=this.handleAfterPlot.bind(this),this.handleDownsampleClick=this.handleDownsampleClick.bind(this),this.handleModelEvent=this.handleModelEvent.bind(this),this.handlePlotUpdate=this.handlePlotUpdate.bind(this),this.handleRelayout=this.handleRelayout.bind(this),this.handleRestyle=this.handleRestyle.bind(this),this.plot=Y.createRef(),this.plotWrapper=Y.createRef(),this.columnFormats=[],this.dateTimeFormatterOptions={},this.decimalFormatOptions={},this.integerFormatOptions={},this.isSubscribed=!1,this.isLoadedFired=!1,this.currentSeries=0,this.state={data:null,downsamplingError:null,isDownsampleFinished:!1,isDownsampleInProgress:!1,isDownsamplingDisabled:!1,layout:{datarevision:0},revision:0}}static convertIcon(t){const[e,,,,n]=t.icon,s=`${n}`;return{width:e,path:s,ascent:e,descent:0,transform:"matrix(1, 0, 0, 1, 0, 0)"}}static downsampleButtonTitle(t,e){return t?"Downsampling in progress...":e?"Downsampling disabled, click to enable":"Downsampling enabled, click to disable"}static downsampleButtonAttr(t,e){return t?"animation-spin":e?void 0:"fill-active"}componentDidMount(){this.updateDimensions(),this.updateModelDimensions(),this.initData(),this.initFormatter();const{isActive:t}=this.props;t&&this.subscribe()}componentDidUpdate(t){const{isActive:e,settings:n}=this.props;this.updateFormatterSettings(n),e!==t.isActive&&(e?this.subscribe():this.unsubscribe())}componentWillUnmount(){this.unsubscribe()}getPlotRect(){var t,e;return(e=(t=this.plotWrapper.current)==null?void 0:t.getBoundingClientRect())!=null?e:null}initData(){const{model:t}=this.props,{layout:e}=this.state;this.setState({data:t.getData(),layout:{...e,...t.getLayout()}})}subscribe(){if(this.isSubscribed)return;const{model:t}=this.props;if(!this.rect||this.rect.width===0||this.rect.height===0){Fs.debug2("Delaying subscription until model dimensions are set");return}t.subscribe(this.handleModelEvent),this.isSubscribed=!0}unsubscribe(){if(!this.isSubscribed)return;const{model:t}=this.props;t.unsubscribe(this.handleModelEvent),this.isSubscribed=!1}handleAfterPlot(){this.plot.current!=null}handleDownsampleClick(){this.setState(({isDownsamplingDisabled:t})=>({downsamplingError:null,isDownsampleInProgress:!1,isDownsampleFinished:!1,isDownsamplingDisabled:!t}),()=>{const{model:t}=this.props,{isDownsamplingDisabled:e}=this.state;t.setDownsamplingDisabled(e)})}handleModelEvent(t){var s;const{type:e,detail:n}=t;switch(Fs.debug2("Received data update",e,n),e){case Tt.EVENT_UPDATED:{this.currentSeries+=1,this.setState(o=>{const{layout:r,revision:l}=o;return typeof r.datarevision=="number"&&(r.datarevision+=1),{data:n,layout:r,revision:l+1}});const{onUpdate:i}=this.props;i({isLoading:!this.isLoadedFired});break}case Tt.EVENT_LOADFINISHED:{const{onUpdate:i}=this.props;this.isLoadedFired=!0,i({isLoading:!1});break}case Tt.EVENT_DISCONNECT:{const{onDisconnect:i}=this.props;i();break}case Tt.EVENT_RECONNECT:{const{onReconnect:i}=this.props;i();break}case Tt.EVENT_DOWNSAMPLESTARTED:{this.setState({isDownsampleFinished:!1,isDownsampleInProgress:!0,downsamplingError:null});break}case Tt.EVENT_DOWNSAMPLEFINISHED:{this.setState({isDownsampleFinished:!0,isDownsampleInProgress:!1,downsamplingError:null});break}case Tt.EVENT_DOWNSAMPLENEEDED:case Tt.EVENT_DOWNSAMPLEFAILED:{const i=(s=n.message)!=null?s:n;this.setState({isDownsampleFinished:!1,isDownsampleInProgress:!1,isDownsamplingDisabled:!1,downsamplingError:i});const{onError:o}=this.props;o(new Error(i));break}default:Fs.debug("Unknown event type",e,t)}}handlePlotUpdate(t){const{layout:e}=t,n=xe.getLayoutRanges(e);!ut(n,this.ranges)&&(this.ranges=n,this.updateModelDimensions(!0))}handleRelayout(t){if(Fs.debug("handleRelayout",t),t.hiddenlabels!=null){const{onSettingsChanged:e}=this.props,n=[...t.hiddenlabels];e({hiddenSeries:n})}this.updateModelDimensions()}handleRestyle([t,e]){if(Fs.debug("handleRestyle",t,e),Object.keys(t).includes("visible")){const{data:n}=this.state,{onSettingsChanged:s}=this.props;if(n!=null){const i=n.reduce((o,{name:r,visible:l})=>r!=null&&l==="legendonly"?[...o,r]:o,[]);s({hiddenSeries:i})}}}updateModelDimensions(t=!1){const e=this.getPlotRect();if(!e){Fs.warn("Unable to get plotting rect");return}if(!this.rect||this.rect.width!==e.width||this.rect.height!==e.height||t){this.rect=e;const{isActive:s,model:i}=this.props;i.setDimensions(e),s&&this.subscribe()}}initFormatter(){const{settings:t}=this.props;this.updateFormatterSettings(t)}updateFormatterSettings(t){const e=fs.getColumnFormats(t),n=fs.getDateTimeFormatterOptions(t),{decimalFormatOptions:s={},integerFormatOptions:i={}}=t;(!ut(this.columnFormats,e)||!ut(this.dateTimeFormatterOptions,n)||!ut(this.decimalFormatOptions,s)||!ut(this.integerFormatOptions,i))&&(this.columnFormats=fs.getColumnFormats(t),this.dateTimeFormatterOptions=n,this.decimalFormatOptions=s,this.integerFormatOptions=i,this.updateFormatter())}updateFormatter(){const t=new cn(this.columnFormats,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions),{model:e}=this.props;e.setFormatter(t)}updateDimensions(){const t=this.getPlotRect();this.plot.current!=null&&t!=null&&t.width>0&&t.height>0&&dl.relayout(this.plot.current.el,{autosize:!0}).catch(e=>{Fs.debug("Unable to resize, promise rejected",e)})}render(){const{data:t,downsamplingError:e,isDownsampleFinished:n,isDownsampleInProgress:s,isDownsamplingDisabled:i,layout:o,revision:r}=this.state,l=this.getCachedConfig(e,n,s,i),a=t!=null;return h("div",{className:"h-100 w-100 chart-wrapper",ref:this.plotWrapper,children:a&&h(Im,{ref:this.plot,data:t,layout:o,revision:r,config:l,onAfterPlot:this.handleAfterPlot,onError:Fs.error,onRelayout:this.handleRelayout,onUpdate:this.handlePlotUpdate,onRestyle:this.handleRestyle,useResizeHandler:!0,style:{height:"100%",width:"100%"}})})}};let Rm=Vo;Rm.defaultProps={isActive:!0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:bs.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,formatter:[]},onDisconnect:()=>{},onReconnect:()=>{},onUpdate:()=>{},onError:()=>{},onSettingsChanged:()=>{}};const Ot=X.module("FigureChartModel"),Dm=class extends Tt{constructor(t,e={},n=qt){super(),this.addPendingSeries=je(()=>{var r;const i=xe.getAllAxes(this.figure),{pendingSeries:o}=this;for(let l=0;l<o.length;l+=1){const a=o[l],d=this.figure.charts.find(c=>c.series.includes(a));this.addSeries(a,i,(r=d==null?void 0:d.showLegend)!=null?r:null),a.subscribe()}this.pendingSeries=[]},Dm.ADD_SERIES_DEBOUNCE),this.getTimeZone=fe((i,o)=>{if(o!=null){const r=o.getColumnTypeFormatter(i);if(r!=null)return r.dhTimeZone}}),this.getValueTranslator=fe((i,o)=>{const r=this.getTimeZone(i,o);return l=>xe.unwrapValue(l,r)}),this.getValueParser=fe((i,o)=>{const r=this.getTimeZone(i,o);return l=>xe.wrapValue(l,i,r)}),this.getRangeParser=fe((i,o)=>r=>{let[l,a]=r;const d=this.getValueParser(i,o);return l=d(l),a=d(a),[l,a]}),this.getAxisRangeParser=fe((i,o)=>r=>{const l=xe.getSourceForAxis(i,r);return l?this.getRangeParser(l.columnType,o):a=>a}),this.handleFigureUpdated=this.handleFigureUpdated.bind(this),this.handleFigureDisconnected=this.handleFigureDisconnected.bind(this),this.handleFigureReconnected=this.handleFigureReconnected.bind(this),this.handleFigureSeriesAdded=this.handleFigureSeriesAdded.bind(this),this.handleDownsampleStart=this.handleDownsampleStart.bind(this),this.handleDownsampleFinish=this.handleDownsampleFinish.bind(this),this.handleDownsampleFail=this.handleDownsampleFail.bind(this),this.handleDownsampleNeeded=this.handleDownsampleNeeded.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.figure=t,this.settings=e,this.theme=n,this.data=[];const s={data:{},layout:xe.makeDefaultLayout(n)};this.layout={grid:{rows:t.rows,columns:t.cols,pattern:"independent"},template:s},this.seriesDataMap=new Map,this.pendingSeries=[],this.oneClicks=[],this.filterColumnMap=new Map,this.lastFilter=new Map,this.isConnected=!0,this.seriesToProcess=new Set,this.setTitle(this.getDefaultTitle()),this.initAllSeries(),this.updateAxisPositions(),this.startListeningFigure()}close(){this.figure.close(),this.addPendingSeries.cancel(),this.stopListeningFigure()}getDefaultTitle(){return this.figure.charts.length>0?this.figure.charts[0].title:""}initAllSeries(){this.oneClicks=[],this.filterColumnMap.clear();const{charts:t}=this.figure,e=xe.getAllAxes(this.figure),n=[];for(let o=0;o<t.length;o+=1){const r=t[o];for(let l=0;l<r.series.length;l+=1){const a=r.series[l];n.push(a.name),this.addSeries(a,e,r.showLegend)}}const i=[...this.seriesDataMap.keys()].filter(o=>n.indexOf(o)<0);for(let o=0;o<i.length;o+=1){const r=i[o];this.seriesDataMap.delete(r)}this.seriesToProcess=new Set([...this.seriesDataMap.keys()])}addSeries(t,e,n){const s=xe.groupArray(e,"type"),i=xe.makeSeriesDataFromSeries(t,s,xe.getSeriesVisibility(t.name,this.settings),n,this.theme);if(this.seriesDataMap.set(t.name,i),this.data=[...this.seriesDataMap.values()],t.plotStyle===M.plot.SeriesPlotStyle.STACKED_BAR?this.layout.barmode="stack":t.plotStyle===M.plot.SeriesPlotStyle.PIE&&(this.layout.hiddenlabels=xe.getHiddenLabels(this.settings)),this.layout.showlegend=this.data.length>1||t.plotStyle===M.plot.SeriesPlotStyle.PIE?n!=null?n:void 0:!1,t.oneClick!=null){const{oneClick:o}=t,{columns:r}=o;for(let l=0;l<r.length;l+=1)this.filterColumnMap.set(r[l].name,r[l]);this.oneClicks.push(o)}this.updateLayoutFormats()}subscribe(t){super.subscribe(t),this.listeners.length===1&&(this.initAllSeries(),this.subscribeFigure())}unsubscribe(t){super.unsubscribe(t),this.listeners.length===0&&this.unsubscribeFigure()}subscribeFigure(){if(!this.isConnected){Ot.debug("Ignoring subscribe when figure in disconnected state");return}this.figure.subscribe(this.isDownsamplingDisabled?M.plot.DownsampleOptions.DISABLE:M.plot.DownsampleOptions.DEFAULT)}unsubscribeFigure(){this.figure.unsubscribe()}startListeningFigure(){this.figure.addEventListener(M.plot.Figure.EVENT_UPDATED,this.handleFigureUpdated),this.figure.addEventListener(M.plot.Figure.EVENT_SERIES_ADDED,this.handleFigureSeriesAdded),this.figure.addEventListener(M.plot.Figure.EVENT_DISCONNECT,this.handleFigureDisconnected),this.figure.addEventListener(M.plot.Figure.EVENT_RECONNECT,this.handleFigureReconnected),this.figure.addEventListener(M.plot.Figure.EVENT_DOWNSAMPLESTARTED,this.handleDownsampleStart),this.figure.addEventListener(M.plot.Figure.EVENT_DOWNSAMPLEFINISHED,this.handleDownsampleFinish),this.figure.addEventListener(M.plot.Figure.EVENT_DOWNSAMPLEFAILED,this.handleDownsampleFail),this.figure.addEventListener(M.plot.Figure.EVENT_DOWNSAMPLENEEDED,this.handleDownsampleNeeded),this.figure.addEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed)}stopListeningFigure(){this.figure.removeEventListener(M.plot.Figure.EVENT_UPDATED,this.handleFigureUpdated),this.figure.removeEventListener(M.plot.Figure.EVENT_SERIES_ADDED,this.handleFigureSeriesAdded),this.figure.removeEventListener(M.plot.Figure.EVENT_DISCONNECT,this.handleFigureDisconnected),this.figure.removeEventListener(M.plot.Figure.EVENT_RECONNECT,this.handleFigureReconnected),this.figure.removeEventListener(M.plot.Figure.EVENT_DOWNSAMPLESTARTED,this.handleDownsampleStart),this.figure.removeEventListener(M.plot.Figure.EVENT_DOWNSAMPLEFINISHED,this.handleDownsampleFinish),this.figure.removeEventListener(M.plot.Figure.EVENT_DOWNSAMPLEFAILED,this.handleDownsampleFail),this.figure.removeEventListener(M.plot.Figure.EVENT_DOWNSAMPLENEEDED,this.handleDownsampleNeeded),this.figure.removeEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed)}handleDownsampleStart(t){Ot.debug("Downsample started",t),this.fireDownsampleStart(t.detail)}handleDownsampleFinish(t){Ot.debug("Downsample finished",t),this.fireDownsampleFinish(t.detail)}handleDownsampleFail(t){Ot.error("Downsample failed",t),this.fireDownsampleFail(t.detail)}handleDownsampleNeeded(t){Ot.info("Downsample needed",t),this.fireDownsampleNeeded(t.detail)}handleFigureUpdated(t){const{detail:e}=t,{series:n}=e;Ot.debug2("handleFigureUpdated",n);for(let i=0;i<n.length;i+=1){const o=n[i];Ot.debug2("handleFigureUpdated updating series",o.name);const{sources:r}=o;for(let l=0;l<r.length;l+=1){const a=r[l],{columnType:d,type:c}=a,u=this.getValueTranslator(d,this.formatter),m=e.getArray(o,c,u);this.setDataArrayForSeries(o,c,m)}this.seriesToProcess.delete(o.name),this.seriesToProcess.size===0&&this.fireLoadFinished(),this.cleanSeries(o)}const{data:s}=this;this.fireUpdate(s)}handleRequestFailed(t){Ot.error("Request failed",t)}resubscribe(){this.listeners.length>0&&(this.unsubscribeFigure(),this.subscribeFigure())}setFormatter(t){super.setFormatter(t),this.updateLayoutFormats(),this.resubscribe()}setDownsamplingDisabled(t){super.setDownsamplingDisabled(t),this.resubscribe()}handleFigureDisconnected(t){Ot.debug("Figure disconnected",t),this.isConnected=!1,this.listeners.length>0&&this.unsubscribeFigure(),this.fireDisconnect()}handleFigureReconnected(t){Ot.debug("Figure reconnected",t),this.isConnected=!0,this.initAllSeries(),this.fireReconnect(),this.listeners.length>0&&this.subscribeFigure()}handleFigureSeriesAdded(t){const{detail:e}=t;Ot.debug("handleFigureSeriesAdded",e),this.pendingSeries.push(e),this.addPendingSeries()}setDimensions(t){super.setDimensions(t),this.updateAxisPositions()}setTitle(t){var s,i;super.setTitle(t);const e=(i=(s=(t!=null?t:"").match(/<br>/g))==null?void 0:s.length)!=null?i:0,n=xe.DEFAULT_MARGIN.t+e*xe.SUBTITLE_LINE_HEIGHT;this.layout.margin?this.layout.margin.t=n:this.layout.margin={t:n},typeof this.layout.title=="string"?this.layout.title=t:(this.layout.title={...this.layout.title},this.layout.title.text=t,this.layout.title.pad={...this.layout.title.pad},this.layout.title.pad.t=xe.DEFAULT_TITLE_PADDING.t+e*xe.SUBTITLE_LINE_HEIGHT*.5)}getPlotWidth(){var t,e,n,s;return!this.rect||!this.rect.width?0:Math.max(this.rect.width-((e=(t=this.layout.margin)==null?void 0:t.l)!=null?e:0)-((s=(n=this.layout.margin)==null?void 0:n.r)!=null?s:0),0)}getPlotHeight(){var t,e,n,s;return!this.rect||!this.rect.height?0:Math.max(this.rect.height-((e=(t=this.layout.margin)==null?void 0:t.t)!=null?e:0)-((s=(n=this.layout.margin)==null?void 0:n.b)!=null?s:0),0)}updateAxisPositions(){const t=this.getPlotWidth(),e=this.getPlotHeight();xe.updateFigureAxes(this.layout,this.figure,n=>this.getAxisRangeParser(n,this.formatter),t,e,this.theme)}updateLayoutFormats(){if(!this.formatter)return;xe.getAxisFormats(this.figure,this.formatter).forEach((e,n)=>{Ot.debug(`Assigning ${n}`,this.layout[n],e);const s=this.layout[n];s!=null?Object.assign(s,e):Ot.debug(`Ignoring null layout.${n}`)})}setDataArrayForSeries(t,e,n){const{name:s,plotStyle:i}=t,o=this.seriesDataMap.get(s),r=xe.getPlotlyProperty(i,e);o&&gu(o,r,n)}cleanSeries(t){const{name:e,plotStyle:n}=t,s=this.seriesDataMap.get(e);if(s!=null){if(n===M.plot.SeriesPlotStyle.HISTOGRAM){const{xLow:i,xHigh:o}=s;if(i&&o&&i.length===o.length){const r=[];for(let l=0;l<i.length;l+=1)r.push(o[l]-i[l]);s.width=r}}else if(n===M.plot.SeriesPlotStyle.LINE){const{x:i,xLow:o,xHigh:r,y:l,yLow:a,yHigh:d}=s;o&&r&&o!==i&&(s.error_x=xe.getPlotlyErrorBars(i,o,r)),a&&d&&a!==l&&(s.error_y=xe.getPlotlyErrorBars(l,a,d))}else if(n===M.plot.SeriesPlotStyle.TREEMAP){const{ids:i,labels:o}=s;i!==void 0&&o===void 0&&(s.labels=i)}}}getData(){return this.data}getLayout(){return this.layout}getFilterColumnMap(){return new Map(this.filterColumnMap)}isFilterRequired(){return this.oneClicks.find(t=>t.requireAllFiltersToDisplay)!=null}setFilter(t){if(this.oneClicks.length===0){Ot.warn("Trying to set a filter, but no one click!");return}Ot.debug("setFilter",t);for(let e=0;e<this.oneClicks.length;e+=1){const n=this.oneClicks[e],{columns:s}=n;new Set([...t.keys(),...this.lastFilter.keys()]).forEach(o=>{const r=t.get(o);this.lastFilter.get(o)!==r&&s.find(l=>l.name===o)!=null&&n.setValueForColumn(o,r)})}this.lastFilter=new Map(t)}setFigure(t){this.close(),this.figure=t,this.setTitle(this.getDefaultTitle()),this.initAllSeries(),this.updateAxisPositions(),this.startListeningFigure(),this.listeners.length>0&&this.subscribeFigure()}updateSettings(t){this.settings=t}};let Ya=Dm;Ya.ADD_SERIES_DEBOUNCE=50;class eo{static async makeModelFromSettings(e,n,s=qt){const i=await eo.makeFigureFromSettings(e,n);return new Ya(i,e,s)}static async makeFigureFromSettings(e,n){const s=await n.copy();return s.applyCustomColumns(n.customColumns),s.applyFilter(n.filter),s.applySort(n.sort),M.plot.Figure.create(xe.makeFigureSettings(e,s))}static async makeModel(e,n,s=qt){return new Ya(n,e,s)}}function vh(t){return t.setFigure!==void 0}function C0({connection:t,defaultUpdateInterval:e,hoverUpdateInterval:n,bgMonitoring:s=!0,monitorDuration:i}){var B;const[o,r]=w.exports.useState({freeMemory:0,maximumHeapSize:999,totalHeapSize:0}),[l,a]=w.exports.useState(!1),d=w.exports.useRef({timestamps:[],usages:[]});w.exports.useEffect(function(){const x=async()=>{const A=await t.getWorkerHeapInfo();if(r(A),s||l){const O=(A.totalHeapSize-A.freeMemory)/A.maximumHeapSize,_=Date.now(),{timestamps:k,usages:V}=d.current;for(;k.length!==0&&_-k[0]>i*1.5;)k.shift(),V.shift();k.push(_),V.push(O)}else d.current={timestamps:[],usages:[]}};x();const H=setInterval(x,l?n:e);return()=>{clearInterval(H)}},[l,n,t,e,i,s]);const c=(U,x)=>Math.round(U*10**x)/10**x,u=2,m=1024**3,{freeMemory:p,totalHeapSize:g,maximumHeapSize:f}=o,b=c(p/m,u),C=c(g/m,u),S=c(f/m,u),v=C-b,y=(U,x,H=!1)=>T("div",{className:z("heap-usage-info-row",{"heading-bottom-border":H}),children:[h("div",{className:"font-weight-bold",children:U}),h("div",{children:x})]}),{timestamps:E,usages:I}=d.current,R=(B=E[E.length-1])!=null?B:0,N=g/f,F=(g-p)/f;return T(we,{children:[T("div",{className:"max-memory",children:[h("div",{className:"total-memory",style:{width:`calc(${N*100}% - ${N*2}px`}}),h("div",{className:z("used-memory",{"heap-overflow":(g-p)/f>.95}),style:{width:`calc(${F*100}% - ${F*2}px`}}),T("div",{className:"memory-text",children:[S.toFixed(1)," GB"]})]}),h(ze,{onEntered:()=>a(!0),onExited:()=>a(!1),interactive:!0,children:T("div",{className:"heap-tooltip",children:[y("In use:",`${v.toFixed(u)} of ${S.toFixed(u)} GB`,!0),y("Free:",`${b.toFixed(u)} GB`),y("Total:",`${C.toFixed(u)} GB`),y("Max:",`${S.toFixed(u)} GB`),h("div",{className:"heap-plot",children:h(Im,{data:[{x:[...E],y:[...I],type:"scatter",mode:"lines"}],config:{staticPlot:!0,responsive:!0},style:{width:"196px",height:"100px"},layout:{legend:!1,margin:{l:2,t:2,r:2,b:2},plot_bgcolor:"transparent",paper_bgcolor:"transparent",colorway:["#4878ea"],xaxis:{dtick:Math.round(i/6),gridcolor:qt.linecolor,range:[R-i,R],linecolor:qt.linecolor,linewidth:2,mirror:!0},yaxis:{dtick:.2,gridcolor:qt.linecolor,range:[0,1],linecolor:qt.linecolor,linewidth:2,mirror:!0}}})}),T("div",{className:"heap-utilisation-text",children:["% utilization over ",Math.round(i/1e3/60)," min."]})]})})]})}const Hd=Object.freeze({}),b0=new Map,Mm=t=>t.user,Ud=t=>t.storage,Nm=t=>Ud(t).commandHistoryStorage,Fm=t=>Ud(t).fileStorage,S0=t=>Ud(t).workspaceStorage,Kl=t=>t.workspace,Rt=t=>Kl(t).data.settings,xm=t=>Rt(t).defaultDateTimeFormat,_m=t=>{var e;return(e=Rt(t).defaultDecimalFormatOptions)!=null?e:Hd},km=t=>{var e;return(e=Rt(t).defaultIntegerFormatOptions)!=null?e:Hd},Om=t=>Rt(t).formatter,lr=t=>Rt(t).timeZone,Lm=t=>Rt(t).showTimeZone,Am=t=>Rt(t).showTSeparator,Pm=t=>Rt(t).truncateNumbersWithPound,w0=t=>Rt(t).shortcutOverrides,v0=t=>{var e;return(e=Rt(t).defaultNotebookSettings)!=null?e:Hd},ql=t=>t.activeTool,T0=t=>{var e;return(e=t.plugins)!=null?e:b0},Hm="SET_ACTIVE_TOOL",Um="SET_COMMAND_HISTORY_STORAGE",Vm="SET_FILE_STORAGE",Bm="SET_PLUGINS",$m="SET_USER",Wm="SET_WORKSPACE",zm="SET_WORKSPACE_STORAGE",Gm="SET_SERVER_CONFIG_VALUES",E0=t=>({type:$m,payload:t}),Km=t=>({type:Wm,payload:t}),y0=t=>({type:zm,payload:t}),I0=t=>({type:Um,payload:t}),R0=t=>({type:Vm,payload:t}),D0=t=>(e,n)=>{e(Km(t));const{storage:s}=n(),{workspaceStorage:i}=s;return i.save(t)},qm=t=>(e,n)=>{const{workspace:s}=n(),{data:i}=s,o={...s,data:{...i,...t}};return e(D0(o))},Yl=t=>e=>e(qm({settings:t})),Xl=t=>({type:Hm,payload:t}),M0=t=>({type:Bm,payload:t}),N0=t=>({type:Gm,payload:t});function Ym(t,e){return(n=e,s)=>{switch(s.type){case t:{const i=s.payload;return i==null?null:n!=null?{...n,...i}:{...i}}default:return n}}}function F0(t,e={},n=!0){return(s=e,i)=>{switch(i.type){case t:{const{id:o,payload:r}=i;return n&&ut({payload:r},{payload:s[o]})?s:{...s,[o]:r}}default:return s}}}function Gs(t,e){return(n=e,s)=>{switch(s.type){case t:return s.payload;default:return n}}}const x0=Gs(Hm,null),_0=Gs(Bm,null),k0=Gs(Um,null),O0=Gs(Vm,null),L0=Gs(zm,null),A0=bd({commandHistoryStorage:k0,fileStorage:O0,workspaceStorage:L0}),P0=Ym($m,null),H0=Ym(Wm,null),U0=Gs(Gm,null),V0={activeTool:x0,plugins:_0,storage:A0,user:P0,workspace:H0,serverConfigValues:U0};class B0{constructor(){this.reducers={},this.listener=null}register(e,n){var s;this.reducers={...this.reducers,[e]:n},(s=this.listener)==null||s.call(this,this.reducers)}setListener(e){this.listener=e}}const ho=new B0,Th=X.module("redux-logger"),$0=t=>e=>n=>{Th.debug("dispatching",n);const s=e(n);return Th.debug("next state",t.getState()),s},W0=X.module("redux-crashReporter"),z0=t=>e=>n=>{try{return e(n)}catch(s){throw W0.error("Error executing",n," with state ",t.getState(),":",s),s}},G0=[$0,z0,Wg];Object.entries(V0).map(([t,e])=>ho.register(t,e));var pu;const K0=(pu=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__)!=null?pu:Kg,jl=zg(bd(ho.reducers),K0(Gg(...G0)));ho.setListener(t=>{jl.replaceReducer(bd(t))});const Xm=Object.freeze({openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:"onload",tabOverlapAllowance:0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:10,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:"Close",maximise:"Maximize",minimise:"Minimize",popout:"Open in new window",popin:"Pop in",tabDropdown:"Additional tabs",tabNextLabel:"Next",tabPreviousLabel:"Previous"},content:[]});function jm(t){return t.componentName!==void 0}function q0(t){return t.component!==void 0}const Zm=Object.freeze({type:"default",isClosable:!0,isFocusOnShow:!0,reorderEnabled:!0,title:""}),Y0=Object.freeze(Object.defineProperty({__proto__:null,defaultConfig:Xm,isGLComponentConfig:jm,isReactComponentConfig:q0,itemDefaultConfig:Zm},Symbol.toStringTag,{value:"Module"})),Xa=class{constructor(){this.off=this.unbind,this.trigger=this.emit,this._mSubscriptions={},this._mSubscriptions[Xa.ALL_EVENT]=[]}on(t,e,n){if(typeof e!="function")throw new Error("Tried to listen to event "+t+" with non-function callback "+e);this._mSubscriptions[t]||(this._mSubscriptions[t]=[]),this._mSubscriptions[t].push({fn:e,ctx:n})}emit(t,...e){const n=this._mSubscriptions[t];if(n)for(let i=0;i<n.length;i++){const o=n[i].ctx||{};n[i].fn.apply(o,e)}e.unshift(t);const s=this._mSubscriptions[Xa.ALL_EVENT];for(let i=0;i<s.length;i++){const o=s[i].ctx||{};s[i].fn.apply(o,e)}}unbind(t,e,n){if(!this._mSubscriptions[t])throw new Error("No subscribtions to unsubscribe for event "+t);let s=!1;for(let i=0;i<this._mSubscriptions[t].length;i++)(!e||this._mSubscriptions[t][i].fn===e)&&(!n||n===this._mSubscriptions[t][i].ctx)&&(this._mSubscriptions[t].splice(i,1),s=!0);if(s===!1)throw new Error("Nothing to unbind for "+t)}};let vn=Xa;vn.ALL_EVENT="__all";class ja extends vn{constructor(e,n,s){super(),this.isHidden=!1,this._element=ge(['<div class="lm_item_container">','<div class="lm_content" tabindex="-1"></div>',"</div>"].join("")),this.title=jm(e)?e.componentName:"",this.parent=n,this.layoutManager=s,this._config=e,this._contentElement=this._element.find(".lm_content")}getElement(){return this._contentElement}hide(){this.emit("hide"),this.isHidden=!0,this._element.hide()}show(){this.emit("show"),this.isHidden=!1,this._element.show(),(this.height!=0||this.width!=0)&&this.emit("shown")}setSize(e,n){var c,u,m,p;let s=this.parent,i=null;for(;s&&!s.isColumn&&!s.isRow;)if(i=s,s=s.parent,s!=null&&s.isRoot)return!1;if(!s||!i)return!1;const o=s.isColumn?"height":"width",r=o==="height"?n:e,l=((c=this[o])!=null?c:0)*(1/(((u=i.config[o])!=null?u:0)/100)),a=r/l*100,d=(((m=i.config[o])!=null?m:0)-a)/(s.contentItems.length-1);for(let g=0;g<s.contentItems.length;g++)s.contentItems[g]===i?s.contentItems[g].config[o]=a:s.contentItems[g].config[o]=((p=s.contentItems[g].config[o])!=null?p:0)+d;return s.callDownwards("setSize"),!0}close(){this._config.isClosable&&(this.emit("close"),this.parent.close())}getState(){return this._config.componentState}extendState(e){this.setState(ge.extend(!0,this.getState(),e))}setState(e){this._config.componentState=e,this.parent.emitBubblingEvent("stateChanged")}setTitle(e){this.parent.setTitle(e)}_$setSize(e=0,n=0){if(e!==this.width||n!==this.height){this.width=e,this.height=n;var s=this._contentElement[0],i=s.offsetWidth-s.clientWidth,o=s.offsetHeight-s.clientHeight;this._contentElement.width(this.width-i).height(this.height-o),this.emit("resize")}}}const X0=Object.freeze(Object.defineProperty({__proto__:null,ItemContainer:ja,Container:ja},Symbol.toStringTag,{value:"Module"}));function Qm(t){var e=location.hash.match(new RegExp(t+"=([^&]*)"));return e?e[1]:null}function Jm(t){if(window.location.hash)return Qm(t);if(!window.location.search)return null;var e=window.location.search.substr(1).split("&"),n={},s,i;for(i=0;i<e.length;i++)s=e[i].split("="),n[s[0]]=s[1];return n[t]||null}function Zl(t){return window.requestAnimationFrame(t)}function j0(t,e){var n=e.indexOf(t);if(n===-1)throw new Error("Can't remove item from array. Item is not in the array");e.splice(n,1)}function Vd(){return(Math.random()*1e15).toString(36).replace(".","")}function Z0(t,e){var n=t.replace(/javascript/gi,"javascript").replace(/expression/gi,"expression").replace(/onload/gi,"onload").replace(/script/gi,"script").replace(/onerror/gi,"onerror");return e===!0?n:n.replace(/>/g,">").replace(/</g,"<")}function Bd(t){return ge.trim(t.replace(/(<([^>]+)>)/gi,""))}class ar extends vn{constructor(e,n=!1){var s;super(),this._nDelay=400,this._nDistance=10,this._nX=0,this._nY=0,this._nOriginalX=0,this._nOriginalY=0,this._bDragging=!1,this._eElement=e,this._oDocument=ge(document),this._eBody=ge(document.body),this._destroyAfterMouseUp=n,this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onMouseDown=this.onMouseDown.bind(this),this._startDrag=this._startDrag.bind(this),(s=this._eElement)==null||s.on("mousedown",this.onMouseDown)}destroy(){var e,n;(e=this._eElement)==null||e.unbind("mousedown",this.onMouseDown),(n=this._oDocument)==null||n.unbind("mouseup",this.onMouseUp),this._eElement=void 0,this._oDocument=void 0,this._eBody=void 0,clearTimeout(this._timeout),this._timeout=void 0}onMouseDown(e){var s,i,o,r;if(e.preventDefault(),e.button===0){var n=this._getCoordinates(e);this._nOriginalX=(s=n.x)!=null?s:0,this._nOriginalY=(i=n.y)!=null?i:0,(o=this._oDocument)==null||o.on("mousemove",this.onMouseMove),(r=this._oDocument)==null||r.on("mouseup",this.onMouseUp),this._timeout=window.setTimeout(this._startDrag,this._nDelay)}}onMouseMove(e){var s,i;if(this._timeout!=null){e.preventDefault();var n=this._getCoordinates(e);this._nX=((s=n.x)!=null?s:0)-this._nOriginalX,this._nY=((i=n.y)!=null?i:0)-this._nOriginalY,this._bDragging===!1&&(Math.abs(this._nX)>this._nDistance||Math.abs(this._nY)>this._nDistance)&&this._startDrag(),this._bDragging&&this.emit("drag",this._nX,this._nY,e)}}onMouseUp(e){var n,s,i,o,r,l;this._timeout!=null&&(clearTimeout(this._timeout),(n=this._oDocument)==null||n.unbind("mousemove",this.onMouseMove),(s=this._oDocument)==null||s.unbind("mouseup",this.onMouseUp),(o=(i=this._oDocument)==null?void 0:i.find("iframe"))==null||o.css("pointer-events",""),this._bDragging===!0&&(this._bDragging=!1,this.emit("dragStop",e,this._nOriginalX+this._nX)),(r=this._eBody)==null||r.removeClass("lm_dragging"),this._eElement instanceof Window||(l=this._eElement)==null||l.removeClass("lm_dragging"),this._destroyAfterMouseUp&&this.destroy())}_startDrag(){var e,n,s,i;window.clearTimeout(this._timeout),this._bDragging=!0,(e=this._eBody)==null||e.addClass("lm_dragging"),(n=this._eElement)==null||n.addClass("lm_dragging"),(i=(s=this._oDocument)==null?void 0:s.find("iframe"))==null||i.css("pointer-events","none"),this.emit("dragStart",this._nOriginalX,this._nOriginalY)}_getCoordinates(e){var n,s;return{x:(n=e.pageX)!=null?n:0,y:(s=e.pageY)!=null?s:0}}}class ep{constructor(e,n){this._reactComponent=null,this._originalComponentWillUpdate=null,this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=e,this._initialState=n,this._reactClass=this._getReactClass(),this._container.on("open",this._render,this),this._container.on("destroy",this._destroy,this)}_render(){Ci.render(this._getReactComponent(),this._container.getElement()[0])}_gotReactComponent(e){if(!e)return;this._reactComponent=e,this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this);const n=this._container.getState();n&&this._reactComponent.setState(n)}_destroy(){Ci.unmountComponentAtNode(this._container.getElement()[0]),this._container.off("open",this._render,this),this._container.off("destroy",this._destroy,this)}_onUpdate(e,n){var s;this._container.setState(n),(s=this._originalComponentWillUpdate)==null||s.call(this._reactComponent,e,n)}_getReactClass(){var e=this._container._config.component;if(!e)throw new Error("No react component name. type: react-component needs a field `component`");const n=this._container.layoutManager.getComponent(e)||this._container.layoutManager.getFallbackComponent();if(!n)throw new Error('React component "'+e+'" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return n}_getReactComponent(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container,ref:this._gotReactComponent.bind(this)},n=ge.extend(e,this._container._config.props);return Y.createElement(this._reactClass,n)}}const Sl=["settings","hasHeaders","constrainDragToContainer","selectionEnabled","dimensions","borderWidth","minItemHeight","minItemWidth","headerHeight","dragProxyWidth","dragProxyHeight","labels","close","maximise","minimise","popout","content","componentName","componentState","id","width","type","height","isClosable","title","popoutWholeStack","openPopouts","parentId","activeItemIndex","reorderEnabled","borderGrabWidth"],Q0=[!0,!1,"row","column","stack","component","close","maximise","minimise","open in new window"];function $d(t){if(Sl.length>36)throw new Error("Too many keys in config minifier map");const e={};return Wd(t,e,"_min"),e}function Za(t){if(Sl.length>36)throw new Error("Too many keys in config minifier map");const e={};return Wd(t,e,"_max"),e}function Wd(t,e,n){const s=n==="_min"?J0:ew;for(let i in t){if(!t.hasOwnProperty(i))continue;const o=Array.isArray(t)?t[Number.parseInt(i,10)]:t[i];if(typeof o=="object"&&o!=null){const r=o instanceof Array?[]:{};if(Array.isArray(e))e[Number.parseInt(i,10)]=r;else{const l=s(i,Sl);e[l]=r}Wd(o,r,n)}else{const r=s(o,Q0);if(Array.isArray(e))e[Number.parseInt(i,10)]=r;else{const l=s(i,Sl);e[l]=r}}}}function J0(t,e){if(typeof t=="string"&&t.length===1)return"___"+t;var n=e.indexOf(t);return n===-1?t:n.toString(36)}function ew(t,e){return typeof t=="string"&&t.length===1?e[parseInt(t,36)]:typeof t=="string"&&t.substr(0,3)==="___"?t[3]:t}class Qa{constructor(e,n){this.name=e,this.origin=n,this.isPropagationStopped=!1}stopPropagation(){this.isPropagationStopped=!0}}class tp extends vn{constructor(e){super(),this._layoutManager=e,this._dontPropagateToParent=null,this._childEventSource=null,this.on(vn.ALL_EVENT,this._onEventFromThis.bind(this)),this._boundOnEventFromChild=this._onEventFromChild.bind(this),ge(window).on("gl_child_event",this._boundOnEventFromChild)}_onEventFromThis(...e){this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}_$onEventFromParent(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}_onEventFromChild(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}_propagateToParent(e){var i;const n="gl_child_event",s=(i=window.opener)==null?void 0:i.document.createEvent("HTMLEvents");s.initEvent(n,!0,!0),s.eventName=n,s.__glArgs=e,s.__gl=this._layoutManager,window.opener.dispatchEvent(s)}_propagateToChildren(e){for(let n=0;n<this._layoutManager.openPopouts.length;n++){const s=this._layoutManager.openPopouts[n].getGlInstance();s&&s!==this._childEventSource&&s.eventHub._$onEventFromParent(e)}}destroy(){ge(window).off("gl_child_event",this._boundOnEventFromChild)}}const tw=Object.freeze(Object.defineProperty({__proto__:null,EventEmitter:vn,DragListener:ar,ReactComponentHandler:ep,BubblingEvent:Qa,EventHub:tp,getHashValue:Qm,getQueryStringParam:Jm,animFrame:Zl,removeFromArray:j0,getUniqueId:Vd,filterXss:Z0,stripTags:Bd,minifyConfig:$d,unminifyConfig:Za},Symbol.toStringTag,{value:"Module"}));class np extends vn{constructor(e,n,s,i,o){super(),this.isInitialised=!1,this._popoutWindow=null,this._id=null,this._config=e,this._dimensions=n,this._parentId=s,this._indexInParent=i,this._layoutManager=o,this._createWindow()}toConfig(){var e,n,s,i,o,r,l,a,d,c,u;if(this.isInitialised===!1)throw new Error("Can't create config, layout not yet initialised");return{dimensions:{width:(e=this.getGlInstance())==null?void 0:e.width,height:(n=this.getGlInstance())==null?void 0:n.height,left:(r=(o=(s=this._popoutWindow)==null?void 0:s.screenX)!=null?o:(i=this._popoutWindow)==null?void 0:i.screenLeft)!=null?r:0,top:(c=(d=(l=this._popoutWindow)==null?void 0:l.screenY)!=null?d:(a=this._popoutWindow)==null?void 0:a.screenTop)!=null?c:0},content:(u=this.getGlInstance())==null?void 0:u.toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}getGlInstance(){var e;return(e=this._popoutWindow)==null?void 0:e.__glInstance}getWindow(){return this._popoutWindow}close(){var e,n;if(this.getGlInstance())(e=this.getGlInstance())==null||e._$closeWindow();else try{(n=this.getWindow())==null||n.close()}catch{}}popIn(){var s,i;this._indexInParent;let e=null,n=null;this._parentId&&(e=ge.extend(!0,{},(s=this.getGlInstance())==null?void 0:s.toConfig()).content[0],n=this._layoutManager.root.getItemsById(this._parentId)[0],n||(((i=this._layoutManager.root.contentItems.length)!=null?i:0)>0?n=this._layoutManager.root.contentItems[0]:n=this._layoutManager.root)),e&&(n==null||n.addChild(e,this._indexInParent),this.close())}_createWindow(){const e=this._createUrl(),n=Math.floor(Math.random()*1e6).toString(36),s=this._serializeWindowOptions({width:this._dimensions.width,height:this._dimensions.height,innerWidth:this._dimensions.width,innerHeight:this._dimensions.height,menubar:"no",toolbar:"no",location:"no",personalbar:"no",resizable:"yes",scrollbars:"no",status:"no"});if(this._popoutWindow=window.open(e,n,s),!this._popoutWindow)if(this._layoutManager.config.settings.blockedPopoutsThrowError===!0){const o=new Error("Popout blocked");throw o.type="popoutBlocked",o}else return;ge(this._popoutWindow).on("load",this._positionWindow.bind(this)).on("unload beforeunload",this._onClose.bind(this));let i=window.setInterval(()=>{var o;((o=this._popoutWindow)==null?void 0:o.__glInstance)&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),window.clearInterval(i))},10)}_serializeWindowOptions(e){var n=[],s;for(s in e)n.push(s+"="+e[s]);return n.join(",")}_createUrl(){var e={content:this._config};const n="gl-window-config-"+Vd();e=$d(e);try{localStorage.setItem(n,JSON.stringify(e))}catch(i){throw new Error("Error while writing to localStorage "+i.toString())}const s=document.location.href.split("?");return s.length===1?s[0]+"?gl-window="+n:document.location.href+"&gl-window="+n}_positionWindow(){var e,n;(e=this._popoutWindow)==null||e.moveTo(this._dimensions.left,this._dimensions.top),(n=this._popoutWindow)==null||n.focus()}_onInitialised(){var e;this.isInitialised=!0,(e=this.getGlInstance())==null||e.on("popIn",this.popIn,this),this.emit("initialised")}_onClose(){setTimeout(this.emit.bind(this,"closed"),50)}}const sp=class extends vn{constructor(t,e,n,s,i,o){var l,a,d,c,u,m,p,g,f,b,C,S;super(),this._area=null,this._lastValidArea=null,this._dragListener=n,this._layoutManager=s,this._contentItem=i,this._originalParent=o,this._dragListener.on("drag",this._onDrag,this),this._dragListener.on("dragStop",this._onDrop,this),this._contentItem.tab&&this._contentItem.tab.element&&(this._layoutManager.tabDropPlaceholder.width((l=this._contentItem.tab.element.outerWidth(!0))!=null?l:0),this._layoutManager.tabDropPlaceholder.height((a=this._contentItem.tab.element.outerHeight(!0))!=null?a:0)),this.element=ge(sp._template),o&&o._side&&(this._sided=o._sided,this.element.addClass("lm_"+o._side),["right","bottom"].indexOf(o._side.toString())>=0&&this.element.find(".lm_content").after(this.element.find(".lm_header"))),this.element.css({left:t,top:e}),this._proxyTab=this.element.find(".lm_tab"),this._proxyTab.attr("title",Bd((d=this._contentItem.config.title)!=null?d:"")),this.element.find(".lm_title").html((c=this._contentItem.config.title)!=null?c:""),this.childElementContainer=this.element.find(".lm_content"),this.childElementContainer.append(i.element),this._updateTree(),this._layoutManager._$calculateItemAreas(),this._setDimensions(),ge(document.body).append(this.element),!this._contentItem.tab&&this._proxyTab.length&&(this._layoutManager.tabDropPlaceholder.width((u=this._proxyTab.outerWidth(!0))!=null?u:0),this._layoutManager.tabDropPlaceholder.height((m=this._proxyTab.outerHeight(!0))!=null?m:0));var r=this._layoutManager.container.offset();this._minX=(p=r==null?void 0:r.left)!=null?p:0,this._minY=(g=r==null?void 0:r.top)!=null?g:0,this._maxX=((f=this._layoutManager.container.width())!=null?f:0)+this._minX,this._maxY=((b=this._layoutManager.container.height())!=null?b:0)+this._minY,this._width=(C=this.element.width())!=null?C:0,this._height=(S=this.element.height())!=null?S:0,this._setDropPosition(t,e),this._layoutManager.emit("itemPickedUp",this._contentItem)}_onDrag(t,e,n){var r,l;const s=(r=n.pageX)!=null?r:0,i=(l=n.pageY)!=null?l:0;!(s>this._minX&&s<this._maxX&&i>this._minY&&i<this._maxY)&&this._layoutManager.config.settings.constrainDragToContainer===!0||this._setDropPosition(s,i)}_setDropPosition(t,e){this.element.css({left:t,top:e}),this._area=this._layoutManager._$getArea(t,e),this._area!==null&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(t,e,this._area))}_onDrop(){var t;(t=this._layoutManager.dropTargetIndicator)==null||t.hide(),this._area!==null?this._area.contentItem._$onDrop(this._contentItem,this._area):this._lastValidArea!==null?this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy(),this._dragListener.off("drag",this._onDrag,this),this._dragListener.off("dragStop",this._onDrop,this),this.element.remove(),this._layoutManager.emit("itemDropped",this._contentItem)}_updateTree(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(null)}_setDimensions(){const t=this._layoutManager.config.dimensions;let e=t.dragProxyWidth,n=t.dragProxyHeight;this.element.width(e),this.element.height(n),e-=this._sided?t.headerHeight:0,n-=this._sided?0:t.headerHeight,this.childElementContainer.width(e),this.childElementContainer.height(n),this._contentItem.element.width(e),this._contentItem.element.height(n),this._contentItem.callDownwards("_$show"),this._contentItem.callDownwards("setSize")}};let dr=sp;dr._template='<div class="lm_dragProxy"><div class="lm_header"><ul class="lm_tabs"><li class="lm_tab lm_active"><i class="lm_left"></i><span class="lm_title"></span><i class="lm_right"></i></li></ul></div><div class="lm_content"></div></div>';class ip{constructor(e,n,s){this._element=e,this._itemConfig=n,this._layoutManager=s,this._dragListener=this._createDragListener()}_createDragListener(){return this._dragListener=new ar(this._element,!0),this._dragListener.on("dragStart",this._onDragStart,this),this._dragListener.on("dragStop",this._createDragListener,this),this._dragListener}_onDragStart(e,n){var r;let s=this._itemConfig;typeof s=="function"&&(s=s());const i=this._layoutManager._$normalizeContentItem(ge.extend(!0,{},s)),o=new dr(e,n,this._dragListener,this._layoutManager,i,null);(r=this._layoutManager.transitionIndicator)==null||r.transitionElements(this._element,o.element)}}class op{constructor(e,n,s){this._element=ge(window),this._itemConfig=e,this._layoutManager=n,this._createDragListener(s)}_createDragListener(e){this._dragListener&&this._dragListener.destroy(),this._element&&(this._dragListener=new ar(this._element,!0),this._dragListener.on("dragStart",this._onDragStart,this),this._dragListener.on("dragStop",this._destroy,this),this._dragListener.onMouseDown(e),this._dragListener._startDrag())}_destroy(){this._dragListener=void 0,this._element=void 0,this._itemConfig=void 0,this._layoutManager=void 0}_onDragStart(e,n){if(!(!this._dragListener||!this._layoutManager)){var s=this._itemConfig;typeof s=="function"&&(s=s());var i=this._layoutManager._$normalizeContentItem(ge.extend(!0,{},s));new dr(e,n,this._dragListener,this._layoutManager,i,null)}}}const rp=class{constructor(){this.element=ge(rp._template),ge(document.body).append(this.element)}destroy(){this.element.remove()}highlightArea(t){this.element.css({left:t.x1,top:t.y1,width:Math.floor(t.x2-t.x1),height:Math.floor(t.y2-t.y1)}).show()}hide(){this.element.hide()}};let zd=rp;zd._template='<div class="lm_dropTargetIndicator"><div class="lm_inner"></div></div>';class Bo{constructor(e,n,s,i){this._header=e,this.element=ge('<li class="'+s+'" title="'+n+'"></li>'),this._header.on("destroy",this._$destroy,this),this._action=i,this.element.on("click",this._action),this._header.controlsContainer.append(this.element)}_$destroy(){this.element.off(),this.element.remove()}}class hi extends Error{constructor(e,n){super(),this.name="Configuration Error",this.message=e,this.node=n}}const nw=Object.freeze(Object.defineProperty({__proto__:null,ConfigurationError:hi},Symbol.toStringTag,{value:"Module"}));function Jo(t){return t.isStack}function In(t){return t.isComponent}function lp(t){return t.isRoot}class yt extends vn{constructor(e,n,s,i){super(),this.isInitialised=!1,this.isMaximised=!1,this.isRoot=!1,this.isRow=!1,this.isColumn=!1,this.isStack=!1,this.isComponent=!1,this.element=i,this.config=this._extendItemNode(n),this.type=n.type,this.contentItems=[],this.parent=s,this.layoutManager=e,this._pendingEventPropagations={},this._throttledEvents=["stateChanged"],this.on(vn.ALL_EVENT,this._propagateEvent,this),n.content&&this._createContentItems(n)}callDownwards(e,n=[],s=!1,i=!1){s!==!0&&i!==!0&&this[e].apply(this,n);for(let o=0;o<this.contentItems.length;o++)this.contentItems[o].callDownwards(e,n,s);s===!0&&i!==!0&&this[e].apply(this,n)}removeChild(e,n=!1){var i,o;const s=this.contentItems.indexOf(e);if(s===-1)throw new Error("Can't remove child item. Unknown content item");n!==!0&&this.contentItems[s]._$destroy(),this.contentItems.splice(s,1),(i=this.config.content)==null||i.splice(s,1),this.contentItems.length>0?this.callDownwards("setSize"):this.type!=="root"&&this.config.isClosable&&((o=this.parent)==null||o.removeChild(this))}addChild(e,n){e=this.layoutManager._$normalizeContentItem(e,this),n===void 0&&(n=this.contentItems.length),this.contentItems.splice(n,0,e),this.config.content===void 0&&(this.config.content=[]),this.config.content.splice(n,0,e.config),e.parent=this,e.parent.isInitialised===!0&&e.isInitialised===!1&&e._$init()}replaceChild(e,n,s=!1){n=this.layoutManager._$normalizeContentItem(n);const i=this.contentItems.indexOf(e),o=e.element[0].parentNode;if(i===-1)throw new Error("Can't replace child. oldChild is not child of this");o==null||o.replaceChild(n.element[0],e.element[0]),s===!0&&(e.parent=null,e._$destroy()),this.contentItems[i]=n,n.parent=this,Jo(this)&&(this.header.tabs[i].contentItem=n),n.parent.isInitialised===!0&&n.isInitialised===!1&&n._$init(),this.callDownwards("setSize")}remove(){var e;(e=this.parent)==null||e.removeChild(this)}popout(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent("stateChanged"),e}toggleMaximise(e){e&&e.preventDefault(),this.isMaximised===!0?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent("stateChanged")}select(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass("lm_selected"))}deselect(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass("lm_selected"))}setTitle(e){this.config.title=e,this.emit("titleChanged",e),this.emitBubblingEvent("stateChanged")}hasId(e){if(this.config.id){if(typeof this.config.id=="string")return this.config.id===e;if(this.config.id instanceof Array)return this.config.id.indexOf(e)!==-1}else return!1}addId(e){this.hasId(e)||(this.config.id?typeof this.config.id=="string"?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}removeId(e){if(!this.hasId(e))throw new Error("Id not found");if(typeof this.config.id=="string")delete this.config.id;else if(this.config.id instanceof Array){var n=this.config.id.indexOf(e);this.config.id.splice(n,1)}}getItemsByFilter(e){const n=[],s=function(i){for(let o=0;o<i.contentItems.length;o++)e(i.contentItems[o])===!0&&n.push(i.contentItems[o]),s(i.contentItems[o])};return s(this),n}getItemsById(e){return this.getItemsByFilter(function(n){return n.config.id instanceof Array?n.config.id.indexOf(e)!==-1:n.config.id===e})}getItemsByType(e){return this._$getItemsByProperty("type",e)}getComponentsByName(e){const n=this._$getItemsByProperty("componentName",e),s=[];for(let i=0;i<n.length;i++)s.push(n[i].instance);return s}_$getItemsByProperty(e,n){return this.getItemsByFilter(function(s){return s[e]===n})}_$setParent(e){this.parent=e}_$highlightDropZone(e,n,s){var i;(i=this.layoutManager.dropTargetIndicator)==null||i.highlightArea(s)}_$onDrop(e,n){this.addChild(e)}_$hide(){this._callOnActiveComponents("hide"),this.element.hide(),this.layoutManager.updateSize()}_$show(){this._callOnActiveComponents("show"),this.element.show(),this.layoutManager.updateSize()}_callOnActiveComponents(e){const n=this.getItemsByType("stack");let s=null;for(let i=0;i<n.length;i++)s=n[i].getActiveContentItem(),s&&In(s)&&s.container[e]()}_$destroy(){this.emitBubblingEvent("beforeItemDestroyed"),this.callDownwards("_$destroy",[],!0,!0),this.element.remove(),this.emitBubblingEvent("itemDestroyed")}_$getArea(e){var o,r,l;e=e||this.element;const n=(o=e.offset())!=null?o:{left:0,top:0},s=(r=e.width())!=null?r:0,i=(l=e.height())!=null?l:0;return{x1:n.left,y1:n.top,x2:n.left+s,y2:n.top+i,surface:s*i,contentItem:this,side:""}}_$init(){var e;this.setSize();for(let n=0;n<this.contentItems.length;n++)(e=this.childElementContainer)==null||e.append(this.contentItems[n].element);this.isInitialised=!0,this.emitBubblingEvent("itemCreated"),this.emitBubblingEvent(this.type+"Created")}emitBubblingEvent(e){var n=new Qa(e,this);this.emit(e,n)}_createContentItems(e){var n;if(!(e.content instanceof Array))throw new hi("content must be an Array",e);for(let s=0;s<e.content.length;s++)n=this.layoutManager.createContentItem(e.content[s],this),this.contentItems.push(n)}_extendItemNode(e){for(let[n,s]of Object.entries(Zm)){const i=n;e[i]===void 0&&(e[i]=s)}return e}_propagateEvent(e,n){n instanceof Qa&&n.isPropagationStopped===!1&&this.isInitialised===!0&&(this.isRoot===!1&&this.parent?this.parent.emit.apply(this.parent,[e,n]):this._scheduleEventPropagationToLayoutManager(e,n))}_scheduleEventPropagationToLayoutManager(e,n){this._throttledEvents.indexOf(e)===-1?this.layoutManager.emit(e,n.origin):this._pendingEventPropagations[e]!==!0&&(this._pendingEventPropagations[e]=!0,Zl(this._propagateEventToLayoutManager.bind(this,e,n)))}_propagateEventToLayoutManager(e,n){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,n)}}class ap extends yt{constructor(e,n,s){super(e,n,s,ge()),this.config=n,this.parent=s;const i=e.getComponent(this.config.componentName)||e.getFallbackComponent(),o=ge.extend(!0,{},this.config.componentState||{});if(i==null)throw new hi('Unknown component "'+this.config.componentName+'"');o.componentName=this.config.componentName,this.componentName=this.config.componentName,this.config.title===""&&(this.config.title=this.config.componentName),this.isComponent=!0,this.container=new ja(this.config,this,e),this.instance=new i(this.container,o),this.element=this.container._element}close(){this.parent.removeChild(this)}setSize(){this.element.is(":visible")&&this.container._$setSize(this.element.width(),this.element.height())}_$init(){yt.prototype._$init.call(this),this.container.emit("open")}_$hide(){this.container.hide(),yt.prototype._$hide.call(this)}_$show(){this.container.show(),this.container._config.isFocusOnShow&&this.container._contentElement[0].focus({preventScroll:!0}),yt.prototype._$show.call(this)}_$destroy(){this.container.emit("destroy",this),yt.prototype._$destroy.call(this)}_$getArea(){return null}}class wl extends yt{constructor(e,n,s,i){super(n,s,i,ge('<div class="lm_item lm_'+(e?"column":"row")+'"></div>')),this._splitter=[],this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null,this.parent=i,this.isRow=!e,this.isColumn=e,this.childElementContainer=this.element,this._splitterSize=n.config.dimensions.borderWidth,this._splitterGrabSize=n.config.dimensions.borderGrabWidth,this._isColumn=e,this._dimension=e?"height":"width",this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null}addChild(e,n,s){var a;var i,o,r,l;if(e=this.layoutManager._$normalizeContentItem(e,this),n===void 0&&(n=this.contentItems.length),this.contentItems.length>0?(l=this._createSplitter(Math.max(0,n-1)).element,n>0?(this.contentItems[n-1].element.after(l),l.after(e.element)):(this.contentItems[0].element.before(l),l.before(e.element))):this.childElementContainer.append(e.element),yt.prototype.addChild.call(this,e,n),i=1/this.contentItems.length*100,s===!0){this.emitBubblingEvent("stateChanged");return}for(r=0;r<this.contentItems.length;r++)this.contentItems[r]===e?e.config[this._dimension]=i:(o=((a=this.contentItems[r].config[this._dimension])!=null?a:0)*(100-i)/100,this.contentItems[r].config[this._dimension]=o);this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}removeChild(e,n){var a,d;var s=(a=e.config[this._dimension])!=null?a:0,i=this.contentItems.indexOf(e),o=Math.max(i-1,0),r,l;if(i===-1)throw new Error("Can't remove child. ContentItem is not child of this Row or Column");for(this._splitter[o]&&(this._splitter[o]._$destroy(),this._splitter.splice(o,1)),r=0;r<this.contentItems.length;r++)this.contentItems[r]!==e&&(this.contentItems[r].config[this._dimension]=((d=this.contentItems[r].config[this._dimension])!=null?d:0)+s/(this.contentItems.length-1));yt.prototype.removeChild.call(this,e,n),this.contentItems.length===1&&this.config.isClosable===!0?(l=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,l,!0)):(this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"))}replaceChild(e,n){var s=e.config[this._dimension];super.replaceChild(e,n),n.config[this._dimension]=s,this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}setSize(){this.contentItems.length>0&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent("stateChanged"),this.emit("resize")}_$init(){if(this.isInitialised!==!0){var e;for(yt.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element)}}_setAbsoluteSizes(){var e,n=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)n.additionalPixel-e>0&&n.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(n.totalWidth),this.contentItems[e].element.height(n.itemSizes[e])):(this.contentItems[e].element.width(n.itemSizes[e]),this.contentItems[e].element.height(n.totalHeight))}_calculateAbsoluteSizes(){var l,a,d,c;const e=(this.contentItems.length-1)*this._splitterSize;let n=(l=this.element.width())!=null?l:0,s=(a=this.element.height())!=null?a:0,i=0;const o=[];this._isColumn?s-=e:n-=e;for(let u=0;u<this.contentItems.length;u++){const m=this._isColumn?Math.floor(s*(((d=this.contentItems[u].config.height)!=null?d:0)/100)):Math.floor(n*(((c=this.contentItems[u].config.width)!=null?c:0)/100));i+=m,o.push(m)}const r=Math.floor((this._isColumn?s:n)-i);return{itemSizes:o,additionalPixel:r,totalWidth:n,totalHeight:s}}_calculateRelativeSizes(){var i,o;let e=0;const n=[],s=this._isColumn?"height":"width";for(let r=0;r<this.contentItems.length;r++)this.contentItems[r].config[s]!==void 0?e+=(i=this.contentItems[r].config[s])!=null?i:0:n.push(this.contentItems[r]);if(Math.round(e)===100){this._respectMinItemWidth();return}if(Math.round(e)<100&&n.length>0){for(let r=0;r<n.length;r++)n[r].config[s]=(100-e)/n.length;this._respectMinItemWidth();return}if(Math.round(e)>100)for(let r=0;r<n.length;r++)n[r].config[s]=50,e+=50;for(let r=0;r<this.contentItems.length;r++)this.contentItems[r].config[s]=((o=this.contentItems[r].config[s])!=null?o:0)/e*100;this._respectMinItemWidth()}_respectMinItemWidth(){var c;const e=this.layoutManager.config.dimensions&&(c=this.layoutManager.config.dimensions.minItemWidth)!=null?c:0,n=[];let s=0,i=0,o=0;const r=[];let l;if(this._isColumn||!e||this.contentItems.length<=1)return;const a=this._calculateAbsoluteSizes();for(let u=0;u<this.contentItems.length;u++){this.contentItems[u];const m=a.itemSizes[u];m<e?(i+=e-m,l={width:e}):(s+=m-e,l={width:m},n.push(l)),r.push(l)}if(i===0||i>s)return;const d=i/s;o=i;for(let u=0;u<n.length;u++){l=n[u];const m=Math.round((l.width-e)*d);o-=m,l.width-=m}o!==0&&(r[r.length-1].width-=o);for(let u=0;u<this.contentItems.length;u++)this.contentItems[u].config.width=r[u].width/a.totalWidth*100}_createSplitter(e){var n;return n=new cp(this._isColumn,this._splitterSize,this._splitterGrabSize),n.on("drag",this._onSplitterDrag.bind(this,n),this),n.on("dragStop",this._onSplitterDragStop.bind(this,n),this),n.on("dragStart",this._onSplitterDragStart.bind(this,n),this),this._splitter.splice(e,0,n),n}_getItemsForSplitter(e){const n=this._splitter.indexOf(e);if(n<0)throw new Error("Splitter not found in RowOrColumn");return{before:this.contentItems[n],after:this.contentItems[n+1]}}_getMinimumDimensions(e){var o,r;for(var n=0,s=0,i=0;i<e.length;++i)n=Math.max((o=e[i].minWidth)!=null?o:0,n),s=Math.max((r=e[i].minHeight)!=null?r:0,s);return{horizontal:n,vertical:s}}_onSplitterDragStart(e){var a,d,c,u;const n=this._getItemsForSplitter(e),s=this.layoutManager.config.dimensions[this._isColumn?"minItemHeight":"minItemWidth"];var i=this._getMinimumDimensions((a=n.before.config.content)!=null?a:[]),o=this._isColumn?i.vertical:i.horizontal,r=this._getMinimumDimensions((d=n.after.config.content)!=null?d:[]),l=this._isColumn?r.vertical:r.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(((c=n.before.element[this._dimension]())!=null?c:0)-(o||s)),this._splitterMaxPosition=((u=n.after.element[this._dimension]())!=null?u:0)-(l||s)}_onSplitterDrag(e,n,s){const i=this._isColumn?s:n;this._splitterMaxPosition==null||this._splitterMinPosition==null||i>this._splitterMinPosition&&i<this._splitterMaxPosition&&(this._splitterPosition=i,e.element.css(this._isColumn?"top":"left",i))}_onSplitterDragStop(e){var l,a,d,c,u;const n=this._getItemsForSplitter(e),s=(l=n.before.element[this._dimension]())!=null?l:0,i=(a=n.after.element[this._dimension]())!=null?a:0,o=(((d=this._splitterPosition)!=null?d:0)+s)/(s+i),r=((c=n.before.config[this._dimension])!=null?c:0)+((u=n.after.config[this._dimension])!=null?u:0);n.before.config[this._dimension]=o*r,n.after.config[this._dimension]=(1-o)*r,e.element.css({top:0,left:0}),Zl(this.callDownwards.bind(this,"setSize",void 0,void 0,void 0))}}class Ja extends yt{constructor(e,n,s){super(e,{...n,type:"root"},null,ge('<div class="lm_goldenlayout lm_item lm_root"></div>')),this.isRoot=!0,this.type="root",this.childElementContainer=this.element,this._containerElement=s,this._containerElement.append(this.element)}addChild(e,n){if(this.contentItems.length>0)throw new Error("Root node can only have a single child");e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),super.addChild(e,n),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}setSize(e,n){var s,i;e=typeof e>"u"?(s=this._containerElement.width())!=null?s:0:e,n=typeof n>"u"?(i=this._containerElement.height())!=null?i:0:n,this.element.width(e),this.element.height(n),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(n))}_$getArea(){const e=super._$getArea();if(e==null)throw new Error("Unable to get root area");return e}_$highlightDropZone(e,n,s){this.layoutManager.tabDropPlaceholder.remove(),super._$highlightDropZone(e,n,s)}_$onDrop(e,n){var i;var s;if(In(e)&&(s=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this),s._$init(),s.addChild(e),e=s),!this.contentItems.length)this.addChild(e);else{const{side:o}=n,r=o==="left"||o==="right"?"row":"column",l=o==="left"||o==="right"?"width":"height",a=o==="left"||o==="top",d=this.contentItems[0];if(!(d instanceof wl)||d.type!=r){const c=this.layoutManager.createContentItem({type:r},this);this.replaceChild(d,c),c.addChild(e,a?0:void 0,!0),c.addChild(d,a?void 0:0,!0),d.config[l]=50,e.config[l]=50,c.callDownwards("setSize")}else{const c=d.contentItems[a?0:d.contentItems.length-1];d.addChild(e,a?0:void 0,!0),c.config[l]=((i=c.config[l])!=null?i:0)*.5,e.config[l]=c.config[l],d.callDownwards("setSize")}}}}class ed extends yt{constructor(e,n,s){var o,r,l,a,d,c,u,m,p;super(e,n,s,ge('<div class="lm_item lm_stack"></div>')),this._activeContentItem=null,this.childElementContainer=ge('<div class="lm_items"></div>'),this.isStack=!0,this._dropZones={},this._dropSegment=null,this._contentAreaDimensions=null,this._sided=!1,this.parent=s,this.config=n;const i=e.config;this._side=!1,this._header={show:((o=i.settings)==null?void 0:o.hasHeaders)&&n.hasHeaders!==!1,popout:(r=i.settings)!=null&&r.showPopoutIcon?(l=i.labels)==null?void 0:l.popout:void 0,maximise:(a=i.settings)!=null&&a.showMaximiseIcon?(d=i.labels)==null?void 0:d.maximise:void 0,close:(c=i.settings)!=null&&c.showCloseIcon?(u=i.labels)==null?void 0:u.close:void 0,minimise:(p=(m=i.labels)==null?void 0:m.minimise)!=null?p:void 0},i.header&&(this._header={...this._header,...i.header}),n.header&&(this._header={...this._header,...n.header}),n.content&&n.content[0]&&n.content[0].header&&(this._header={...this._header,...n.content[0].header}),this.header=new cr(e,this),this.element.append(this.header.element),this.element.append(this.childElementContainer),this._setupHeaderPosition(),this._$validateClosability()}setSize(){var o,r,l,a;var e,n=this._header.show&&(r=(o=this.layoutManager.config.dimensions)==null?void 0:o.headerHeight)!=null?r:0,s=((l=this.element.width())!=null?l:0)-(this._sided?n:0),i=((a=this.element.height())!=null?a:0)-(this._sided?0:n);for(this.childElementContainer.width(s),this.childElementContainer.height(i),e=0;e<this.contentItems.length;e++)this.contentItems[e].element.width(s).height(i);this.emit("resize"),this.emitBubblingEvent("stateChanged")}_$init(){if(this.isInitialised!==!0){this.header._attachWheelListener(),super._$init();for(let e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(this.contentItems.length>0){const e=this.contentItems[this.config.activeItemIndex||0];if(!e)throw new Error("Configured activeItemIndex out of bounds");this.setActiveContentItem(e)}}}setActiveContentItem(e){if(this.contentItems.indexOf(e)===-1)throw new Error("contentItem is not a child of this stack");this._activeContentItem!==null&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit("activeContentItemChanged",e),this.layoutManager.emit("activeContentItemChanged",e),this.emitBubblingEvent("stateChanged")}getActiveContentItem(){return this.header.activeContentItem}addChild(e,n){e=this.layoutManager._$normalizeContentItem(e,this),super.addChild(e,n),this.childElementContainer.append(e.element),this.header.createTab(e,n),this.setActiveContentItem(e),this.callDownwards("setSize"),this._$validateClosability(),this.emitBubblingEvent("stateChanged")}removeChild(e,n=!1){var s=this.contentItems.indexOf(e);super.removeChild(e,n),this.header.removeTab(e),this.header.activeContentItem===e&&(this.contentItems.length>0?this.setActiveContentItem(this.contentItems[Math.max(s-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.emitBubblingEvent("stateChanged")}_$validateClosability(){var n;let e=this.header._isClosable();for(let s=0,i=this.contentItems.length;s<i&&e;s++)e=(n=this.contentItems[s].config.isClosable)!=null?n:!1;this.header._$setClosable(e)}_$destroy(){yt.prototype._$destroy.call(this),this.header._$destroy()}_$onDrop(e){var a;if(this._dropSegment==="header"){this._resetHeaderDropZone(),this.addChild(e,this._dropIndex);return}if(this._dropSegment==="body"){this.addChild(e);return}const n=this._dropSegment==="top"||this._dropSegment==="bottom",s=this._dropSegment==="left"||this._dropSegment==="right",i=this._dropSegment==="top"||this._dropSegment==="left",o=n&&this.parent.isColumn||s&&this.parent.isRow,r=n?"column":"row",l=n?"height":"width";if(In(e)){const d=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this);d._$init(),d.addChild(e),e=d}if(o){const d=this.parent.contentItems.indexOf(this);this.parent.addChild(e,i?d:d+1,!0),this.config[l]=((a=this.config[l])!=null?a:0)*.5,e.config[l]=this.config[l],this.parent.callDownwards("setSize")}else{const d=this.layoutManager.createContentItem({type:r},this);this.parent.replaceChild(this,d),d.addChild(e,i?0:void 0,!0),d.addChild(this,i?void 0:0,!0),this.config[l]=50,e.config[l]=50,d.callDownwards("setSize")}}_$highlightDropZone(e,n){if(!!this._contentAreaDimensions)for(let[s,i]of Object.entries(this._contentAreaDimensions)){const o=i.hoverArea;if(o.x1<e&&o.x2>e&&o.y1<n&&o.y2>n){s==="header"?(this._dropSegment="header",this._highlightHeaderDropZone(e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(s));return}}}_$getArea(){if(this.element.is(":visible")===!1)return null;const e=super._$getArea(this.header.element),n=super._$getArea(this.childElementContainer);if(e==null||n==null)return null;const s=n.x2-n.x1,i=n.y2-n.y1;return this._contentAreaDimensions={header:{hoverArea:{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2},highlightArea:{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2}}},this._activeContentItem&&this._activeContentItem.isComponent===!1?e:this.contentItems.length===0?(this._contentAreaDimensions.body={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2}},super._$getArea(this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+s*.25,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+s*.5,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+s*.25,y1:n.y1,x2:n.x1+s*.75,y2:n.y1+i*.5},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+i*.5}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+s*.75,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+s*.5,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+s*.25,y1:n.y1+i*.5,x2:n.x1+s*.75,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+i*.5,x2:n.x2,y2:n.y2}},super._$getArea(this.element))}_highlightHeaderDropZone(e){var u,m,p,g,f,b,C,S,v,y,E,I,R,N,F,B,U,x,H,A,O,_,k,V,G,q;const n=this.header.tabs.length;if(n===0){const Q=this.header.element.offset();(S=this.layoutManager.dropTargetIndicator)==null||S.highlightArea({x1:(u=Q==null?void 0:Q.left)!=null?u:0,x2:((m=Q==null?void 0:Q.left)!=null?m:0)+100,y1:(g=(p=this.header.element.offset())==null?void 0:p.top)!=null?g:0,y2:((b=(f=this.header.element.offset())==null?void 0:f.top)!=null?b:0)+((C=this.header.element.innerHeight())!=null?C:0)});return}const i=(v=this.header.tabsContainer.get(0))==null?void 0:v.getBoundingClientRect(),o=(y=this.layoutManager.tabDropPlaceholder.get(0))==null?void 0:y.getBoundingClientRect();if(!i||!o)return;e<i.left?e=i.left+1:e>i.right&&(e=i.right-1);let r,l;if(!(o.left<e&&e<o.right)){for(var a=0;a<n;a++)if(r=this.header.tabs[a].element,l=(E=r.get(0))==null?void 0:E.getBoundingClientRect(),l&&l.left<e&&e<l.right){this._dropIndex=a;break}r&&l&&e<l.left+l.width*.5?r.before(this.layoutManager.tabDropPlaceholder):r&&(this._dropIndex=Math.min(((I=this._dropIndex)!=null?I:0)+1,n),r.after(this.layoutManager.tabDropPlaceholder))}let d=(N=(R=this.layoutManager.tabDropPlaceholder.offset())==null?void 0:R.left)!=null?N:0;d=Math.max(d,(B=(F=this.header.tabsContainer.offset())==null?void 0:F.left)!=null?B:0);var c=d+((U=this.layoutManager.tabDropPlaceholder.width())!=null?U:0);c=Math.min(c,((H=(x=this.header.tabsContainer.offset())==null?void 0:x.left)!=null?H:0)+((A=this.header.tabsContainer.innerWidth())!=null?A:0)),(q=this.layoutManager.dropTargetIndicator)==null||q.highlightArea({x1:d,x2:c,y1:(_=(O=this.header.element.offset())==null?void 0:O.top)!=null?_:0,y2:((V=(k=this.header.element.offset())==null?void 0:k.top)!=null?V:0)+((G=this.header.element.innerHeight())!=null?G:0)})}_resetHeaderDropZone(){this.layoutManager.tabDropPlaceholder.remove()}_setupHeaderPosition(){const e=["right","left","bottom"].some(n=>n===this._header.show)?this._header.show:void 0;if(!!e&&(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=["right","left"].indexOf(this._side.toString())>=0,this.element.removeClass("lm_left lm_right lm_bottom"),this._side&&this.element.addClass("lm_"+this._side),this.element.find(".lm_header").length&&this.childElementContainer)){const n=["right","bottom"].indexOf(this._side.toString())>=0?"before":"after";this.header.element[n](this.childElementContainer),this.callDownwards("setSize")}}_highlightBodyDropZone(e){var s,i,o;const n=(i=(s=this._contentAreaDimensions)==null?void 0:s[e])==null?void 0:i.highlightArea;n&&((o=this.layoutManager.dropTargetIndicator)==null||o.highlightArea(n)),this._dropSegment=e}}const sw=Object.freeze(Object.defineProperty({__proto__:null,AbstractContentItem:yt,ContentItem:yt,Component:ap,Root:Ja,RowOrColumn:wl,Stack:ed,isStack:Jo,isComponent:In,isRoot:lp},Symbol.toStringTag,{value:"Module"})),dp=class{constructor(t,e){var n;this.element=ge(dp._template),this.isActive=!1,this.header=t,this.contentItem=e,this.titleElement=this.element.find(".lm_title"),this.closeElement=this.element.find(".lm_close_tab"),this.closeElement[e.config.isClosable?"show":"hide"](),this.setTitle(e.config.title),this.contentItem.on("titleChanged",this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,((n=this._layoutManager.config.settings)==null?void 0:n.reorderEnabled)&&e.config.reorderEnabled&&(this._dragListener=new ar(this.element),this._dragListener.on("dragStart",this._onDragStart,this),this.contentItem.on("destroy",this._dragListener.destroy,this._dragListener)),this._onTabClick=this._onTabClick.bind(this),this._onCloseClick=this._onCloseClick.bind(this),this._onTabContentFocusIn=this._onTabContentFocusIn.bind(this),this._onTabContentFocusOut=this._onTabContentFocusOut.bind(this),this.element.on("click",this._onTabClick),this.element.on("auxclick",this._onTabClick),this.contentItem.config.isClosable?(this.closeElement.on("click",this._onCloseClick),this.closeElement.on("mousedown",this._onCloseMousedown)):this.closeElement.remove(),this.contentItem.tab=this,this.contentItem.emit("tab",this),this.contentItem.layoutManager.emit("tabCreated",this),In(this.contentItem)&&(this.contentItem.container._contentElement.on("focusin",this._onTabContentFocusIn).on("focusout",this._onTabContentFocusOut),this.contentItem.container._contentElement[0].addEventListener("click",this._onTabContentFocusIn,!0),this.contentItem.container.tab=this,this.contentItem.container.emit("tab",this))}setTitle(t=""){this.titleElement.html(t)}setActive(t){t!==this.isActive&&(this.isActive=t,t?this.element.addClass("lm_active"):this.element.removeClass("lm_active"))}_$destroy(){this.element.off("click",this._onTabClick),this.element.off("auxclick",this._onTabClick),this.closeElement.off("click",this._onCloseClick),In(this.contentItem)&&(this.contentItem.container._contentElement.off(),this.contentItem.container._contentElement[0].removeEventListener("click",this._onTabContentFocusIn,!0)),this._dragListener&&(this.contentItem.off("destroy",this._dragListener.destroy,this._dragListener),this._dragListener.off("dragStart",this._onDragStart),this._dragListener=void 0),this.element.remove()}_onDragStart(t,e){var n;(n=this.contentItem.parent)!=null&&n.isMaximised&&this.contentItem.parent.toggleMaximise(),this._dragListener&&new dr(t,e,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)}_onTabContentFocusIn(){In(this.contentItem)&&!this.contentItem.container._contentElement[0].contains(document.activeElement)&&this.contentItem.container._contentElement[0].focus(),this.element.addClass("lm_focusin")}_onTabContentFocusOut(){In(this.contentItem)&&!this.contentItem.container._contentElement[0].contains(document.activeElement)&&this.element.removeClass("lm_focusin")}_onTabClick(t){var n;if(!t||t.button===0){var e=this.header.parent.getActiveContentItem();this.contentItem!==e&&In(this.contentItem)?(this.header.parent.setActiveContentItem(this.contentItem),this.contentItem.container.emit("tabClicked")):In(this.contentItem)&&!this.contentItem.container._contentElement[0].contains(document.activeElement)&&(this.contentItem.container._contentElement.focus(),this.contentItem.container.emit("tabClicked")),this.header._hideAdditionalTabsDropdown(),(n=this.element.get(0))==null||n.scrollIntoView({inline:"nearest"})}else t.button===1&&this.contentItem.config.isClosable&&this._onCloseClick(t)}_onCloseClick(t){t.stopPropagation(),In(this.contentItem)?this.contentItem.container.close():this.header.parent.removeChild(this.contentItem)}_onCloseMousedown(t){t.stopPropagation()}};let Gd=dp;Gd._template=['<li class="lm_tab">','<span class="lm_title_before"></span>','<span class="lm_title"></span>','<div class="lm_close_tab"></div>',"</li>"].join("");const nl=class extends vn{constructor(t,e){var n,s;super(),this.element=ge(nl._template),this.tabDropdownList=null,this.tabs=[],this.activeContentItem=null,this.closeButton=null,this.tabDropdownButton=null,this.tabNextButton=ge(nl._nextButtonTemplate),this.tabPreviousButton=ge(nl._previousButtonTemplate),this.holdTimer=null,this.rAF=null,this.CLICK_TIMEOUT=500,this.START_SPEED=.01,this.ACCELERATION=5e-4,this.SCROLL_LEFT="left",this.SCROLL_RIGHT="right",this.isDraggingTab=!1,this.isOverflowing=!1,this.isDropdownShown=!1,this.dropdownKeyIndex=0,this._lastVisibleTabIndex=-1,this.layoutManager=t,(n=this.layoutManager.config.settings)!=null&&n.selectionEnabled&&(this.element.addClass("lm_selectable"),this.element.on("click",this._onHeaderClick.bind(this))),this.tabsContainer=this.element.find(".lm_tabs"),this.tabDropdownContainer=this.element.find(".lm_tabdropdown_list"),this.tabDropdownContainer.hide(),this.tabDropdownSearch=this.element.find(".lm_tabdropdown_search input"),this._handleFilterInput=this._handleFilterInput.bind(this),this._handleFilterKeydown=this._handleFilterKeydown.bind(this),this.tabDropdownSearch.on("input",this._handleFilterInput),this.tabDropdownSearch.on("keydown",this._handleFilterKeydown),this.controlsContainer=this.element.find(".lm_controls"),this.parent=e,this.parent.on("resize",this._updateTabSizes,this),this._handleItemPickedUp=this._handleItemPickedUp.bind(this),this._handleItemDropped=this._handleItemDropped.bind(this),this._handleNextMouseEnter=this._handleNextMouseEnter.bind(this),this._handleNextMouseLeave=this._handleNextMouseLeave.bind(this),this._handlePreviousMouseEnter=this._handlePreviousMouseEnter.bind(this),this._handlePreviousMouseLeave=this._handlePreviousMouseLeave.bind(this),this._handleScrollRepeat=this._handleScrollRepeat.bind(this),this._handleNextButtonMouseDown=this._handleNextButtonMouseDown.bind(this),this._handlePreviousButtonMouseDown=this._handlePreviousButtonMouseDown.bind(this),this._handleScrollButtonMouseDown=this._handleScrollButtonMouseDown.bind(this),this._handleScrollButtonMouseUp=this._handleScrollButtonMouseUp.bind(this),this._handleScrollEvent=this._handleScrollEvent.bind(this),this.tabNextButton.on("mousedown",this._handleNextButtonMouseDown),this.tabPreviousButton.on("mousedown",this._handlePreviousButtonMouseDown),this.tabsContainer.on("scroll",this._handleScrollEvent),this.layoutManager.on("itemPickedUp",this._handleItemPickedUp),this.layoutManager.on("itemDropped",this._handleItemDropped),this.tabsContainer.before(this.tabPreviousButton),this.tabPreviousButton=this.tabPreviousButton.find(">:first-child"),this.tabPreviousButton.hide(),this._showAdditionalTabsDropdown=this._showAdditionalTabsDropdown.bind(this),this._hideAdditionalTabsDropdown=this._hideAdditionalTabsDropdown.bind(this),this._tabControlOffset=(s=this.layoutManager.config.settings)==null?void 0:s.tabControlOffset,this._createControls()}createTab(t,e){for(let s=0;s<this.tabs.length;s++)if(this.tabs[s].contentItem===t)return;const n=new Gd(this,t);if(this.tabs.length===0){this.tabs.push(n),this.tabsContainer.append(n.element);return}e===void 0&&(e=this.tabs.length),e>0?this.tabs[e-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(e,0,n),this._updateTabSizes()}removeTab(t){for(var e=0;e<this.tabs.length;e++)if(this.tabs[e].contentItem===t){this.tabs[e]._$destroy(),this.tabs.splice(e,1);return}throw new Error("contentItem is not controlled by this header")}setActiveContentItem(t){var s,i;for(var e,n=0;n<this.tabs.length;n++)e=this.tabs[n].contentItem===t,this.tabs[n].setActive(e),e===!0&&(this.activeContentItem=t,this.parent.config.activeItemIndex=n);(i=this.tabs[(s=this.parent.config.activeItemIndex)!=null?s:0].element.get(0))==null||i.scrollIntoView({inline:"nearest"}),this._hideAdditionalTabsDropdown(),this._updateTabSizes(),this.parent.emitBubblingEvent("stateChanged")}position(t){let e=this.parent._header.show;return e&&!this.parent._side&&(e="top"),t!==void 0&&this.parent._header.show!==t&&(this.parent._header.show=t,this.parent._setupHeaderPosition()),e}_attachWheelListener(){var t;(t=this.tabsContainer.get(0))==null||t.addEventListener("wheel",this._handleWheelEvent,{passive:!0})}_detachWheelListener(){var t;(t=this.tabsContainer.get(0))==null||t.removeEventListener("wheel",this._handleWheelEvent)}_handleWheelEvent(t){var s;const e=t.currentTarget;if(!(e instanceof HTMLElement))return;let n=Math.abs(t.deltaY)>Math.abs(t.deltaX)?t.deltaY:t.deltaX;t.deltaMode===WheelEvent.DOM_DELTA_PAGE?n*=(s=this.tabsContainer.innerWidth())!=null?s:1:t.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=100/3),e.scrollLeft+=Math.round(n)}_handleScrollEvent(){this._checkScrollArrows()}_handleItemPickedUp(){this.isDraggingTab=!0,this.controlsContainer.on("mouseenter",this._handleNextMouseEnter),this.tabPreviousButton.on("mouseenter",this._handlePreviousMouseEnter)}_handleItemDropped(){var t;this.isDraggingTab=!1,window.cancelAnimationFrame((t=this.rAF)!=null?t:-1),this.rAF=null,this.controlsContainer.off("mouseenter",this._handleNextMouseEnter),this.controlsContainer.off("mouseleave",this._handleNextMouseLeave),this.tabPreviousButton.off("mouseenter",this._handlePreviousMouseEnter),this.tabPreviousButton.off("mouseleave",this._handlePreviousMouseLeave)}_handleNextMouseEnter(){var t;this.controlsContainer.on("mouseleave",this._handleNextMouseLeave),this._handleScrollRepeat(this.SCROLL_RIGHT,(t=this.tabsContainer.scrollLeft())!=null?t:0)}_handlePreviousMouseEnter(){var t;this.tabPreviousButton.on("mouseleave",this._handlePreviousMouseLeave),this._handleScrollRepeat(this.SCROLL_LEFT,(t=this.tabsContainer.scrollLeft())!=null?t:0)}_handleNextMouseLeave(){var t;window.cancelAnimationFrame((t=this.rAF)!=null?t:-1),this.rAF=null,this.controlsContainer.off("mouseleave",this._handleNextMouseLeave)}_handlePreviousMouseLeave(){var t;window.cancelAnimationFrame((t=this.rAF)!=null?t:-1),this.rAF=null,this.tabPreviousButton.off("mouseleave",this._handlePreviousMouseLeave)}_handleNextButtonMouseDown(){var e,n,s,i,o,r,l;var t;for(let a=0;a<this.tabs.length;a+=1)if(((n=(e=this.tabs[a].element.get(0))==null?void 0:e.offsetLeft)!=null?n:0)>((i=(s=this.tabsContainer.get(0))==null?void 0:s.offsetWidth)!=null?i:0)+((o=this.tabsContainer.scrollLeft())!=null?o:0)){t=this.tabs[a].element.get(0);break}if(t)t.scrollIntoView({behavior:"smooth",inline:"nearest"}),this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);else{const a=this.tabsContainer.get(0);a&&(a.scrollLeft=(l=(r=this.tabsContainer.get(0))==null?void 0:r.scrollWidth)!=null?l:0)}}_handlePreviousButtonMouseDown(){var n,s,i;for(var t,e=this.tabs.length-1;e>=0;e-=1)if(((s=(n=this.tabs[e].element.get(0))==null?void 0:n.offsetLeft)!=null?s:0)<((i=this.tabsContainer.scrollLeft())!=null?i:0)){t=this.tabs[e].element.get(0);break}if(t)t.scrollIntoView({behavior:"smooth",inline:"start"}),this._handleScrollButtonMouseDown(this.SCROLL_LEFT);else{const o=this.tabsContainer.get(0);o&&(o.scrollLeft=0)}}_handleScrollButtonMouseDown(t){this.holdTimer=window.setTimeout(()=>{var e;this._handleScrollRepeat(t,(e=this.tabsContainer.scrollLeft())!=null?e:0,100)},this.CLICK_TIMEOUT),window.addEventListener("mouseup",this._handleScrollButtonMouseUp)}_handleScrollButtonMouseUp(){var t,e;clearTimeout((t=this.holdTimer)!=null?t:-1),this.holdTimer=null,cancelAnimationFrame((e=this.rAF)!=null?e:-1),this.rAF=null,window.removeEventListener("mouseup",this._handleScrollButtonMouseUp)}_checkScrollArrows(){var t,e,n;this.tabsContainer.scrollLeft()===0?this.tabPreviousButton.first().prop("disabled",!0):((t=this.tabsContainer.scrollLeft())!=null?t:0)+((e=this.tabsContainer.innerWidth())!=null?e:0)===((n=this.tabsContainer.get(0))==null?void 0:n.scrollWidth)?this.tabNextButton.prop("disabled",!0):(this.tabNextButton.prop("disabled",!1),this.tabPreviousButton.first().prop("disabled",!1))}_handleScrollRepeat(t,e,n=0,s){var r,l,a;const i=this.tabsContainer.get(0);if(!i)return;const o=i.getBoundingClientRect();if(t===this.SCROLL_LEFT){if(this.tabsContainer.scrollLeft(e-n),this.isDraggingTab&&this.parent._highlightHeaderDropZone(o.left-1),this.tabsContainer.scrollLeft()===0){this._checkScrollArrows();return}}else if(t===this.SCROLL_RIGHT&&(this.tabsContainer.scrollLeft(e+n),this.isDraggingTab&&this.parent._highlightHeaderDropZone(o.right+1),((r=this.tabsContainer.scrollLeft())!=null?r:0)+((l=this.tabsContainer.innerWidth())!=null?l:0)===i.scrollWidth)){this._checkScrollArrows();return}window.cancelAnimationFrame((a=this.rAF)!=null?a:-1),this.rAF=window.requestAnimationFrame(d=>{var p,g;var c=s||d,u=d-c,m=this.START_SPEED*u+.5*this.ACCELERATION*(u*u);m=Math.min(m,(g=(p=this.tabsContainer.get(0))==null?void 0:p.scrollWidth)!=null?g:1/0),this._handleScrollRepeat(t,e,m,c)})}_$setClosable(t){return this.closeButton&&this._isClosable()?(this.closeButton.element[t?"show":"hide"](),!0):!1}_$destroy(){this.emit("destroy",this);for(var t=0;t<this.tabs.length;t++)this.tabs[t]._$destroy();this._detachWheelListener(),this._handleItemDropped(),ge(document).off("mouseup",this._hideAdditionalTabsDropdown),this.tabDropdownSearch.off("input",this._handleFilterInput),this.tabDropdownSearch.off("keydown",this._handleFilterKeydown),this.element.remove()}_getHeaderSetting(t){if(t in this.parent._header)return this.parent._header[t]}_createControls(){var t,e,n,s,i;if(i=this.layoutManager.config.labels.tabDropdown,this.layoutManager.config.labels.tabNextLabel,this.layoutManager.config.labels.tabPreviousLabel,this.tabDropdownButton=new Bo(this,i,"lm_tabdropdown",this._showAdditionalTabsDropdown),this.tabDropdownButton.element.hide(),this.controlsContainer.prepend(this.tabNextButton),this.tabNextButton.hide(),this._getHeaderSetting("popout")&&(e=this._onPopoutClick.bind(this),n=this._getHeaderSetting("popout"),new Bo(this,n,"lm_popout",e)),this._getHeaderSetting("maximise")){s=this.parent.toggleMaximise.bind(this.parent);const o=this._getHeaderSetting("maximise"),r=this._getHeaderSetting("minimise"),l=new Bo(this,o,"lm_maximise",s);this.parent.on("maximised",function(){l.element.attr("title",r!=null?r:"")}),this.parent.on("minimised",function(){l.element.attr("title",o!=null?o:"")})}this._isClosable()&&(t=this.parent.remove.bind(this.parent),n=this._getHeaderSetting("close"),this.closeButton=new Bo(this,n,"lm_close",t))}_showAdditionalTabsDropdown(){if(this.isDropdownShown){this._hideAdditionalTabsDropdown();return}this.tabDropdownList=this.tabsContainer.clone(!0).appendTo(this.tabDropdownContainer).children().removeClass("lm_active"),this.tabDropdownContainer.show(),this.isDropdownShown=!0,this.element.addClass("lm_dropdown_open"),this.tabDropdownSearch.val("").focus(),this.dropdownKeyIndex=0,this.tabDropdownList.eq(this.dropdownKeyIndex).addClass("lm_keyboard_active"),ge(document).on("mousedown",this._hideAdditionalTabsDropdown),this._updateAdditionalTabsDropdown()}_handleFilterKeydown(t){var n,s,i,o;if(this.dropdownKeyIndex===-1)return;if(t.key==="Escape"){this._hideAdditionalTabsDropdown();return}if(t.key==="Enter"||t.key===" "){this._hideAdditionalTabsDropdown(),this.tabs[this.dropdownKeyIndex]._onTabClick();return}function e(r,l,a){if(a==null||a.length<2)return-1;for(var d=(r+l+a.length)%a.length;d!==r;){if(a.eq(d).css("display")!=="none")return d;d=(d+l+a.length)%a.length}return r}t.key==="ArrowDown"||t.key==="Tab"&&t.shiftKey===!1?(t.preventDefault(),(n=this.tabDropdownList)==null||n.eq(this.dropdownKeyIndex).removeClass("lm_keyboard_active"),this.dropdownKeyIndex=e(this.dropdownKeyIndex,1,this.tabDropdownList),(s=this.tabDropdownList)==null||s.eq(this.dropdownKeyIndex).addClass("lm_keyboard_active")):(t.key==="ArrowUp"||t.key==="Tab")&&(t.preventDefault(),(i=this.tabDropdownList)==null||i.eq(this.dropdownKeyIndex).removeClass("lm_keyboard_active"),this.dropdownKeyIndex=e(this.dropdownKeyIndex,-1,this.tabDropdownList),(o=this.tabDropdownList)==null||o.eq(this.dropdownKeyIndex).addClass("lm_keyboard_active"))}_handleFilterInput(t){var n,s;if(this.tabDropdownList!=null){this.tabDropdownList.eq(this.dropdownKeyIndex).removeClass("lm_keyboard_active"),this.dropdownKeyIndex=-1;for(var e=0;e<this.tabDropdownList.length;e++)((s=(n=this.tabs[e].contentItem.config.title)==null?void 0:n.toLowerCase().indexOf(t.target.value.toLowerCase()))!=null?s:-1)!==-1?(this.tabDropdownList.eq(e).css("display",""),this.dropdownKeyIndex===-1&&(this.dropdownKeyIndex=e)):this.tabDropdownList.eq(e).css("display","none");this.dropdownKeyIndex!==-1&&this.tabDropdownList.eq(this.dropdownKeyIndex).addClass("lm_keyboard_active")}}_hideAdditionalTabsDropdown(t){var e,n;!this.isDropdownShown||t&&((e=this.tabDropdownContainer.get(0))==null?void 0:e.contains(t.target))||t&&((n=this.tabDropdownButton)==null?void 0:n.element.get(0))===t.target||(this.element.removeClass("lm_dropdown_open"),this.tabDropdownContainer.hide(),this.isDropdownShown=!1,this.tabDropdownContainer.find(".lm_tabs").remove(),ge(document).off("mousedown",this._hideAdditionalTabsDropdown))}_updateAdditionalTabsDropdown(){var n,s,i,o,r;this.tabDropdownContainer.css("max-height","");const t=this.tabDropdownContainer[0].scrollHeight;if(t===0)return;const e=((s=(n=this.tabDropdownContainer.offset())==null?void 0:n.top)!=null?s:0)-((i=ge(window).scrollTop())!=null?i:0);e+t>((o=ge(window).height())!=null?o:0)&&this.tabDropdownContainer.css("max-height",((r=ge(window).height())!=null?r:0)-e-10)}_isClosable(){return Boolean(this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon)}_onPopoutClick(){var t;this.layoutManager.config.settings.popoutWholeStack===!0?this.parent.popout():(t=this.activeContentItem)==null||t.popout()}_onHeaderClick(t){t.target===this.element[0]&&this.parent.select()}_updateTabSizes(){var e,n;if(this.tabs.length===0)return;const t=this.tabsContainer.get(0);!t||(!this.isOverflowing&&t.scrollWidth>t.clientWidth?((e=this.tabDropdownButton)==null||e.element.show(),this.tabNextButton.show(),this.tabPreviousButton.show(),this.isOverflowing=!0):this.isOverflowing&&t.scrollWidth<=t.clientWidth&&((n=this.tabDropdownButton)==null||n.element.hide(),this.tabNextButton.hide(),this.tabPreviousButton.hide(),this.isOverflowing=!1),this.isOverflowing&&this._checkScrollArrows())}};let cr=nl;cr._template=['<div class="lm_header">','<ul class="lm_tabs"></ul>','<ul class="lm_controls"></ul>','<ul class="lm_tabdropdown_list">','<li class="lm_tabdropdown_search"><input type="text" placeholder="Find tab..."></li>',"</ul>","</div>"].join("");cr._previousButtonTemplate=['<ul class="lm_controls">','<li class="lm_tabpreviousbutton"></li>',"</ul>"].join("");cr._nextButtonTemplate=['<li class="lm_tabnextbutton"></li>'].join("");class cp{constructor(e,n,s){this._isVertical=e,this._size=n,this._grabSize=s<n?n:s,this.element=this._createElement(),this._dragListener=new ar(this.element)}on(e,n,s){var i;(i=this._dragListener)==null||i.on(e,n,s)}_$destroy(){var e;(e=this._dragListener)==null||e.destroy(),this._dragListener=null,this.element.remove()}_createElement(){var e=ge('<div class="lm_drag_handle"></div>'),n=ge('<div class="lm_splitter"></div>');n.append(e);var s=this._grabSize-this._size,i=s/2;return this._isVertical?(e.css("top",-i),e.css("height",this._size+s),n.addClass("lm_vertical"),n.height(this._size)):(e.css("left",-i),e.css("width",this._size+s),n.addClass("lm_horizontal"),n.width(this._size)),n}}class hp{constructor(){this._element=ge('<div class="lm_transition_indicator"></div>'),this._toElement=null,this._fromDimensions={},this._totalAnimationDuration=200,this._animationStartTime=null,ge(document.body).append(this._element)}destroy(){this._element.remove()}transitionElements(e,n){}_nextAnimationFrame(){var o,r,l;if(!this._toElement||this._animationStartTime==null)return;const e=this._measure(this._toElement),n=(Date.now()-this._animationStartTime)/this._totalAnimationDuration,s={};if(n>=1){this._element.hide();return}e.opacity=0;const i=Object.keys(this._fromDimensions);for(let a of i)s[a]=((o=this._fromDimensions[a])!=null?o:0)+(((r=e[a])!=null?r:0)-((l=this._fromDimensions[a])!=null?l:0))*n;this._element.css(s),Zl(this._nextAnimationFrame.bind(this))}_measure(e){const n=e.offset();return{left:n==null?void 0:n.left,top:n==null?void 0:n.top,width:e.outerWidth(),height:e.outerHeight()}}}const iw=Object.freeze(Object.defineProperty({__proto__:null,BrowserPopout:np,DragProxy:dr,DragSource:ip,DragSourceFromEvent:op,DropTargetIndicator:zd,Header:cr,HeaderButton:Bo,Splitter:cp,Tab:Gd,TransitionIndicator:hp},Symbol.toStringTag,{value:"Module"})),ow={config:Y0,container:X0,controls:iw,errors:nw,items:sw,utils:tw};class Kd extends vn{constructor(e,n){super(),this.isInitialised=!1,this._isFullPage=!1,this._components={"lm-react-component":ep},this._itemAreas=[],this._maximisedItem=null,this._maximisePlaceholder=ge('<div class="lm_maximise_place"></div>'),this._creationTimeoutPassed=!1,this._subWindowsCreated=!1,this._dragSources=[],this._updatingColumnsResponsive=!1,this._firstLoad=!0,this.width=null,this.height=null,this.openPopouts=[],this.selectedItem=null,this.isSubWindow=!1,this.eventHub=new tp(this),this.dropTargetIndicator=null,this.transitionIndicator=null,this.tabDropPlaceholder=ge('<div class="lm_drop_tab_placeholder"></div>'),this._onResize=this._onResize.bind(this),this._onUnload=this._onUnload.bind(this),this._windowBlur=this._windowBlur.bind(this),this._windowFocus=this._windowFocus.bind(this),this.config=this._createConfig(e),this._originalContainer=n,this.container=this._getContainer(),this.isSubWindow&&ge("body").css("visibility","hidden"),this._typeToItem={column:wl.bind(this,!0),row:wl.bind(this,!1),stack:ed,component:ap}}static minifyConfig(e){return $d(e)}static unminifyConfig(e){return Za(e)}registerComponent(e,n){if(typeof n!="function"&&(n==null||n.render==null||typeof n.render!="function"))throw new Error("Please register a constructor function");if(this._components[e]!==void 0)throw new Error("Component "+e+" is already registered");return this._components[e]=n,()=>{if(this._components[e]===void 0)throw new Error("Component "+e+" is not registered");delete this._components[e]}}setFallbackComponent(e){this._fallbackComponent=e}toConfig(e){if(this.isInitialised===!1)throw new Error("Can't create config, layout not yet initialised");if(e&&!(e instanceof yt))throw new Error("Root must be a ContentItem");const n={settings:{...this.config.settings},dimensions:{...this.config.dimensions},labels:{...this.config.labels},content:[]},s=function(i,o){for(let r in o.config)r!=="content"&&(i[r]=o.config[r]);if(i.componentName==="lm-react-component"&&(i.type="react-component"),o.contentItems.length){i.content=[];for(let r=0;r<o.contentItems.length;r++)i.content[r]={},s(i.content[r],o.contentItems[r])}};e?s(n,{contentItems:[e]}):s(n,this.root),this._$reconcilePopoutWindows(),n.openPopouts=[];for(let i=0;i<this.openPopouts.length;i++)n.openPopouts.push(this.openPopouts[i].toConfig());return n.maximisedItemId=this._maximisedItem?"__glMaximised":void 0,n}getComponent(e){return this._components[e]}getFallbackComponent(){return this._fallbackComponent}init(){if(this._subWindowsCreated===!1&&(this._createSubWindows(),this._subWindowsCreated=!0),document.readyState==="loading"||document.body===null){ge(document).ready(this.init.bind(this));return}if(this.isSubWindow===!0&&this._creationTimeoutPassed===!1){setTimeout(this.init.bind(this),7),this._creationTimeoutPassed=!0;return}this.isSubWindow===!0&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new zd,this.transitionIndicator=new hp,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),this.emit("initialised")}updateSize(e,n){var s,i,o,r;this.width=(s=e!=null?e:this.container.width())!=null?s:0,this.height=(i=n!=null?n:this.container.height())!=null?i:0,this.isInitialised===!0&&(this.root.callDownwards("setSize",[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width((o=this.container.width())!=null?o:0),this._maximisedItem.element.height((r=this.container.height())!=null?r:0),this._maximisedItem.callDownwards("setSize")),this._adjustColumnsResponsive())}destroy(){var e,n;this.isInitialised===!1||!this.root||(this._onUnload(),ge(window).off("resize",this._onResize),ge(window).off("unload beforeunload",this._onUnload),ge(window).off("blur.lm").off("focus.lm"),this.root.callDownwards("_$destroy",[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),(e=this.dropTargetIndicator)==null||e.destroy(),(n=this.transitionIndicator)==null||n.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(s){s._dragListener.destroy()}),this._dragSources=[])}createContentItem(e,n){var s,i;if(typeof e.type!="string")throw new hi("Missing parameter 'type'",e);if(e.type==="react-component"&&(e.type="component",e.componentName="lm-react-component"),!this._typeToItem[e.type])throw s="Unknown type '"+e.type+"'. Valid types are "+Object.keys(this._typeToItem).join(","),new hi(s);return e.type==="component"&&!(n instanceof ed)&&!!n&&!(this.isSubWindow===!0&&n instanceof Ja)&&(e={type:"stack",width:e.width,height:e.height,content:[e]}),i=new this._typeToItem[e.type](this,e,n),i}createPopout(e,n,s,i){var d,c,u;let o=[];const r=e instanceof yt,l=this;if(r){o=this.toConfig(e).content,s=Vd();let m=e.parent,p=e;for(;(m==null?void 0:m.contentItems.length)===1&&!m.isRoot;)p=m,m=m.parent;m==null||m.addId(s),(i==null||Number.isNaN(i))&&(i=m==null?void 0:m.contentItems.indexOf(p))}else e instanceof Array?o=e:o=[e];if(!n&&r){const m=window.screenX||window.screenLeft,p=window.screenY||window.screenTop,g=(d=e.element.offset())!=null?d:{left:0,top:0};n={left:m+g.left,top:p+g.top,width:(c=e.element.width())!=null?c:0,height:(u=e.element.height())!=null?u:0}}if(!n&&!r&&(n={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),r&&e.remove(),!n||!s||i===void 0)return;const a=new np(o,n,s,i,this);return a.on("initialised",function(){l.emit("windowOpened",a)}),a.on("closed",function(){l._$reconcilePopoutWindows()}),this.openPopouts.push(a),a}createDragSource(e,n){this.config.settings.constrainDragToContainer=!1;var s=new ip(e,n,this);return this._dragSources.push(s),s}createDragSourceFromEvent(e,n){return this.config.settings.constrainDragToContainer=!1,new op(e,this,n)}selectItem(e,n){if(this.config.settings.selectionEnabled!==!0)throw new Error("Please set selectionEnabled to true to use this feature");e!==this.selectedItem&&(this.selectedItem!==null&&this.selectedItem.deselect(),e&&n!==!0&&e.select(),this.selectedItem=e,this.emit("selectionChanged",e))}_$maximiseItem(e){var n,s;this._maximisedItem!==null&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId("__glMaximised"),e.element.addClass("lm_maximised"),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width((n=this.container.width())!=null?n:0),e.element.height((s=this.container.height())!=null?s:0),e.callDownwards("setSize"),this._maximisedItem.emit("maximised"),this.emit("stateChanged")}_$minimiseItem(e){var n;e.element.removeClass("lm_maximised"),e.removeId("__glMaximised"),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),(n=e.parent)==null||n.callDownwards("setSize"),this._maximisedItem=null,e.emit("minimised"),this.emit("stateChanged")}_$closeWindow(){window.setTimeout(function(){window.close()},1)}_$getArea(e,n){let s=1/0,i=null;for(let o=0;o<this._itemAreas.length;o++){const r=this._itemAreas[o];e>r.x1&&e<r.x2&&n>r.y1&&n<r.y2&&s>r.surface&&(s=r.surface,i=r)}return i}_$createRootItemAreas(){const n={...this.root._$getArea()},s=[{...n,side:"left",x2:n.x1+50},{...n,side:"right",x1:n.x2-50},{...n,side:"top",y2:n.y1+50},{...n,side:"bottom",y1:n.y2-50}];s.forEach(i=>{i.surface=(i.x2-i.x1)*(i.y2-i.y1)}),this._itemAreas.push(...s)}_$calculateItemAreas(){var n;const e=this._getAllContentItems();if(this._itemAreas=[],e.length===1){this._itemAreas.push(this.root._$getArea());return}this._$createRootItemAreas();for(let s=0;s<e.length;s++){const i=e[s];if(!Jo(i))continue;const o=i._$getArea();if(o!==null)if(o instanceof Array)this._itemAreas=this._itemAreas.concat(o);else{this._itemAreas.push(o);let r={...o,...(n=o.contentItem._contentAreaDimensions)==null?void 0:n.header.highlightArea};r.surface=(r.x2-r.x1)*(r.y2-r.y1),this._itemAreas.push(r)}}}_$normalizeContentItem(e,n){if(!e)throw new Error("No content item defined");if(typeof e=="function"&&(e=e()),e instanceof yt)return e;if(ge.isPlainObject(e)&&e.type){var s=this.createContentItem(e,n);return s.callDownwards("_$init"),s}else throw new Error("Invalid contentItem")}_$reconcilePopoutWindows(){var n;const e=[];for(let s=0;s<this.openPopouts.length;s++)((n=this.openPopouts[s].getWindow())==null?void 0:n.closed)===!1?e.push(this.openPopouts[s]):this.emit("windowClosed",this.openPopouts[s]);this.openPopouts.length!==e.length&&(this.emit("stateChanged"),this.openPopouts=e)}_getAllContentItems(){const e=[],n=s=>{if(e.push(s),s.contentItems instanceof Array)for(let i=0;i<s.contentItems.length;i++)n(s.contentItems[i])};return n(this.root),e}_bindEvents(){this._isFullPage&&ge(window).resize(this._onResize),ge(window).on("unload beforeunload",this._onUnload).on("blur.lm",this._windowBlur).on("focus.lm",this._windowFocus)}_windowBlur(){this.root.element.addClass("lm_window_blur")}_windowFocus(){this.root.element.removeClass("lm_window_blur")}_onResize(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=window.setTimeout(this.updateSize.bind(this),100)}_createConfig(e){var i;var n=Jm("gl-window");n&&(this.isSubWindow=!0,e=JSON.parse(localStorage.getItem(n)||"{}"),e=Za(e),localStorage.removeItem(n)),e=ge.extend(!0,{},Xm,e);var s=function(o){for(var r in o){const l=o[r];r!=="props"&&typeof l=="object"&&l!=null?s(l):r==="type"&&l==="react-component"&&(o.type="component",o.componentName="lm-react-component")}};return s(e),((i=e.settings)==null?void 0:i.hasHeaders)===!1&&(e.dimensions.headerHeight=0),e}_adjustToWindowMode(){var n;var e=ge('<div class="lm_popin" title="'+this.config.labels.popin+'"><div class="lm_icon"></div><div class="lm_bg"></div></div>');e.click(()=>{this.emit("popIn")}),document.title=Bd((n=this.config.content[0].title)!=null?n:""),ge("head").append(ge("body link, body style, template, .gl_keep")),this.container=ge("body").html("").css("visibility","visible").append(e),document.body.offsetHeight,window.__glInstance=this}_createSubWindows(){if(!!this.config.openPopouts)for(let e=0;e<this.config.openPopouts.length;e++){const n=this.config.openPopouts[e];this.createPopout(n.content,n.dimensions,n.parentId,n.indexInParent)}}_getContainer(){const e=this._originalContainer?ge(this._originalContainer):ge("body");if(e.length===0)throw new Error("GoldenLayout container not found");if(e.length>1)throw new Error("GoldenLayout more than one container element specified");return e}_setContainer(){const e=this._getContainer();e[0]===document.body&&(this._isFullPage=!0,ge("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"})),this.container=e}_create(e){var n;if(!(e.content instanceof Array))throw e.content===void 0?n="Missing setting 'content' on top level of configuration":n="Configuration parameter 'content' must be an array",new hi(n,e);if(e.content.length>1)throw n="Top level content can't contain more then one element.",new hi(n,e);this.root=new Ja(this,{content:e.content},this.container),this.root.callDownwards("_$init"),e.maximisedItemId==="__glMaximised"&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}_onUnload(){if(this.config.settings.closePopoutsOnUnload===!0)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}_adjustColumnsResponsive(){if(!this._useResponsiveLayout()||this._updatingColumnsResponsive||!this.config.dimensions||!this.config.dimensions.minItemWidth||this.root.contentItems.length===0||!this.root.contentItems[0].isRow){this._firstLoad=!1;return}this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(e<=1)){var n=this.config.dimensions.minItemWidth,s=e*n;if(!(this.width==null||s<=this.width)){this._updatingColumnsResponsive=!0;for(var i=Math.max(Math.floor(this.width/n),1),o=e-i,r=this.root.contentItems[0],l=this._findAllStackContainers()[0],a=0;a<o;a++){var d=r.contentItems[r.contentItems.length-1];this._addChildContentItemsToContainer(l,d)}this._updatingColumnsResponsive=!1}}}_useResponsiveLayout(){return this.config.settings&&(this.config.settings.responsiveMode=="always"||this.config.settings.responsiveMode=="onload"&&this._firstLoad)}_addChildContentItemsToContainer(e,n){n.type==="stack"?n.contentItems.forEach(function(s){e.addChild(s),n.removeChild(s,!0)}):n.contentItems.forEach(s=>{this._addChildContentItemsToContainer(e,s)})}_findAllStackContainers(){const e=[];return this._findAllStackContainersRecursive(e,this.root),e}_findAllStackContainersRecursive(e,n){n.contentItems.forEach(s=>{Jo(s)?e.push(s):s.isComponent||this._findAllStackContainersRecursive(e,s)})}}Kd.__lm=ow;const rw="_lm_root_15d73_3",lw="_lm_row_15d73_7",aw="_lm_item_15d73_7",dw="_lm_content_15d73_11",cw="_lm_dragging_15d73_17",hw="_lm_maximised_15d73_23",uw="_lm_maximise_placeholder_15d73_30",mw="_lm_splitter_15d73_34",pw="_lm_vertical_15d73_41",gw="_lm_drag_handle_15d73_41",fw="_lm_horizontal_15d73_46",Cw="_lm_header_15d73_56",bw="_lm_dropdown_open_15d73_63",Sw="_lm_controls_15d73_69",ww="_lm_tabs_15d73_89",vw="_lm_tab_15d73_89",Tw="_lm_title_15d73_104",Ew="_lm_close_tab_15d73_111",yw="_lm_stack_15d73_120",Iw="_lm_left_15d73_120",Rw="_lm_right_15d73_121",Dw="_lm_dragProxy_15d73_125",Mw="_lm_items_15d73_148",Nw="_lm_tabdropdown_list_15d73_165",Fw="_lm_bottom_15d73_192",xw="_lm_drop_tab_placeholder_15d73_207",_w="_lm_tabdropdown_15d73_165",kw="_lm_dropTargetIndicator_15d73_258",Ow="_lm_inner_15d73_264",Lw="_lm_transition_indicator_15d73_272",Aw="_lm_popin_15d73_282",Pw="_lm_bg_15d73_297",Hw="_lm_icon_15d73_300",Uw="_lm_goldenlayout_15d73_304",Vw="_lm_selectable_15d73_340",Bw="_lm_active_15d73_370",$w="_lm_selected_15d73_388",Ww="_lm_keyboard_active_15d73_397",zw="_lm_popout_15d73_416",Gw="_lm_maximise_15d73_23",Kw="_lm_close_15d73_111",qw="_lm_tabnextbutton_15d73_425",Yw="_lm_tabpreviousbutton_15d73_428",Xw="_lm_title_before_15d73_544",jw="_lm_focusin_15d73_568",Zw="_lm_window_blur_15d73_573",Qw="_lm_tabdropdown_search_15d73_631",Jw="_march_15d73_1",ev="_app_15d73_712",tv="_plotly_15d73_721",Eh={"tab-height":"28px","drag-border-width":"5px",lm_root:rw,lm_row:lw,lm_item:aw,lm_content:dw,lm_dragging:cw,lm_maximised:hw,lm_maximise_placeholder:uw,lm_splitter:mw,lm_vertical:pw,lm_drag_handle:gw,lm_horizontal:fw,lm_header:Cw,lm_dropdown_open:bw,lm_controls:Sw,lm_tabs:ww,lm_tab:vw,lm_title:Tw,lm_close_tab:Ew,lm_stack:yw,lm_left:Iw,lm_right:Rw,lm_dragProxy:Dw,lm_items:Mw,lm_tabdropdown_list:Nw,lm_bottom:Fw,lm_drop_tab_placeholder:xw,lm_tabdropdown:_w,lm_dropTargetIndicator:kw,lm_inner:Ow,lm_transition_indicator:Lw,lm_popin:Aw,lm_bg:Pw,lm_icon:Hw,lm_goldenlayout:Uw,lm_selectable:Vw,lm_active:Bw,lm_selected:$w,lm_keyboard_active:Ww,lm_popout:zw,lm_maximise:Gw,lm_close:Kw,lm_tabnextbutton:qw,lm_tabpreviousbutton:Yw,lm_title_before:Xw,"editor-unsaved-indicator":"_editor-unsaved-indicator_15d73_548","is-unsaved":"_is-unsaved_15d73_556",lm_focusin:jw,lm_window_blur:Zw,lm_tabdropdown_search:Qw,march:Jw,app:ev,"js-plotly-plot":"_js-plotly-plot_15d73_721",plotly:tv},yh=Object.freeze({tabHeight:parseInt(Eh["tab-height"],10),dragBorderWidth:parseInt(Eh["drag-border-width"],10)}),xs=X.module("LayoutUtils");function up(t){return t.componentName!==void 0}function $i(t){const e=t;return(up(t)&&t.componentName==="lm-react-component"||t.type==="react-component")&&e.component!==void 0}function Pr(t){return t.focus!==void 0}function Ih(t){return t.type==="stack"}const Ve=class{static activateTab(t,e){const n=Ve.getStackForRoot(t,e,!1);if(!n){xs.error("Could not find stack for config",e);return}const s=Ve.getContentItemInStack(n,e);s&&n.setActiveContentItem(s)}static isActiveTab(t,e){const n=Ve.getStackForRoot(t,e,!1);if(!n)return xs.error("Could not find stack for config",e),!1;const s=Ve.getContentItemInStack(n,e);return n.getActiveContentItem()===s}static addStack(t,e=!0){const n=e?"column":"row";if(lp(t)){(t.contentItems==null||t.contentItems.length===0)&&t.addChild({type:n});const o=t.contentItems[0];if(!(e?o.isColumn:o.isRow)){t.removeChild(o,!0),t.addChild({type:n});const l=document.activeElement;t.contentItems[0].addChild(o),l&&l.focus!=null&&l.focus()}return this.addStack(t.contentItems[0],e)}if(t.contentItems.length<2)return t.addChild({type:"stack"}),t.contentItems[t.contentItems.length-1];let s=t.contentItems[t.contentItems.length-1];return(e?s.isRow:s.isColumn)||(t.addChild({type:e?"row":"column"}),t.removeChild(s,!0),t.contentItems[t.contentItems.length-1].addChild(s),s=t.contentItems[t.contentItems.length-1]),this.addStack(s,!e)}static getStackForConfig(t,e={},n=!1){if(n&&Jo(t)&&t.contentItems.length===0)return t;if(t.contentItems==null)return null;for(let s=0;s<t.contentItems.length;s+=1){const i=t.contentItems[s];if(i.isComponent&&i.config!=null&&kc(i.config,e))return t;const o=this.getStackForConfig(i,e,n);if(o)return o}return null}static getStackForRoot(t,e,n=!0,s=!0,i=!0){let o=this.getStackForConfig(t,e);return!o&&s&&(o=this.getStackForConfig(t,{component:e.component},i)),!o&&n&&(o=this.addStack(t)),o}static getStackForComponentTypes(t,e,n=!0,s=!0,i=!0){for(let o=0;o<e.length;o+=1){const r=e[o],l=o===e.length-1,a=Ve.getStackForRoot(t,{component:r},n&&l,s,i);if(a)return a}return null}static getContentItemInStack(t,e){if(!t)return null;for(let n=0;n<t.contentItems.length;n+=1){const s=t.contentItems[n];if(s.isComponent&&s.config!=null&&kc(s.config,e))return s}return null}static dehydrateLayoutConfig(t,e){if(t==null||!t.length)return[];const n=[];for(let s=0;s<t.length;s+=1){const i=t[s],{component:o,content:r}=i;if(o){const l=e(o,i);l!=null?n.push(l):xs.debug2(`dehydrateLayoutConfig: skipping unmapped component "${o}"`)}else if(r){const l={...i,content:Ve.dehydrateLayoutConfig(r,e)};n.push(l)}else n.push(i)}return n}static getTabPoint(t){const{tab:e}=t;if(e==null)throw new Error(`Cannot get tab for panel container ${t}`);const n=e.element[0].getBoundingClientRect();return[n.left+n.width*.5,n.bottom-8]}static dropLayoutMinorChange(t){for(let e=0;e<t.length;e+=1){const n=t[e],{content:s}=n;s!==void 0?(Ih(n)&&delete n.activeItemIndex,Ve.dropLayoutMinorChange(s)):$i(n)&&n.component==="IrisGridPanel"&&n.props.panelState!=null&&(delete n.id,n.props.panelState.irisGridState.sorts=[],n.props.panelState.irisGridState.quickFilters=[])}}static isEqual(t,e,n=!1){if(n){const s=Ve.cloneLayout(t),i=Ve.cloneLayout(e);return Ve.dropLayoutMinorChange(s),Ve.dropLayoutMinorChange(i),ut(s,i)}return ut(t,e)}static cloneLayout(t){return JSON.parse(JSON.stringify(t))}static hydrateLayoutConfig(t,e){var s;if(t==null||!t.length)return[];const n=[];for(let i=0;i<t.length;i+=1){const o=t[i];if($i(o)){const{component:r,props:l={}}=o;n.push({...o,id:(s=o==null?void 0:o.id)!=null?s:$e(),props:e(r,l)})}else if(o.content!==void 0){const r=Ve.hydrateLayoutConfig(o.content,e);Ih(o)&&o.activeItemIndex!=null&&o.activeItemIndex>=r.length&&(xs.warn("Fixing bad activeItemIndex!",o.activeItemIndex,o),o.activeItemIndex=0),n.push({...o,content:r})}else n.push(o)}return n}static openComponent({root:t,config:e,replaceExisting:n=!0,replaceConfig:s=void 0,createNewStack:i=!1,focusElement:o=void 0,dragEvent:r=void 0}={}){const l=document.activeElement,a={...e};if(a.id==null&&(a.id=$e.generate()),r){t==null||t.layoutManager.createDragSourceFromEvent(a,r);return}const d=s||{id:a.id,component:a.component};P(t);const c=i?Ve.addStack(t):Ve.getStackForRoot(t,d);P(c);const u=Ve.getContentItemInStack(c,d);if(o!=null){const m=p=>{xs.debug("Component created, focusing element",o),c.off("componentCreated",m);const{element:g}=p.origin;requestAnimationFrame(()=>{Ve.focusElement(g[0],o)})};c.on("componentCreated",m)}if(n&&u){const m=c.contentItems.indexOf(u);c.addChild(a,m+1),c.removeChild(u),c.setActiveContentItem(c.contentItems[m])}else c.addChild(a);o==null&&l&&Pr(l)&&l.focus()}static openComponentInStack(t,e,n=!0){const s=document.activeElement,i={id:e.id},o=Ve.getContentItemInStack(t,i);if(n&&o&&t){const r=t==null?void 0:t.contentItems.indexOf(o);t.addChild(e,r+1),t.removeChild(o),t.setActiveContentItem(t.contentItems[r])}else t==null||t.addChild(e);s&&Pr(s)&&s.focus()}static closeComponent(t,e){const n=Ve.getStackForRoot(t,e,!1,!1,!1);if(!n){xs.warn("Cannot find stack for component, ignoring close",e);return}const s=Ve.getContentItemInStack(n,e),i=document.activeElement;s&&(s.isComponent?s.container.close():n.removeChild(s)),i&&document.contains(i)&&Pr(i)&&i.focus()}static renameComponent(t,e,n){const s=Ve.getStackForRoot(t,e,!1);if(!s){xs.error("Could not find stack for config",e);return}const i=Ve.getContentItemInStack(s,e);i&&i.setTitle(n)}static cloneComponent(t,e){const n=Ve.getStackForRoot(t,e,!1);if(!n)return xs.error("Could not find stack for config",e),null;const{props:s={}}=e,i=Ve.getPanelComponentState(e),o={type:"react-component",component:e.component,props:{...s,panelState:i},title:`${e.title} Copy`,id:$e.generate()};return Ve.openComponentInStack(n,o),o}static getPanelComponentState(t){var e,n;return up(t)?(e=t.componentState)==null?void 0:e.panelState:$i(t)?(n=t.props)==null?void 0:n.panelState:null}static makeDefaultLayout(){return{dimensions:{headerHeight:yh.tabHeight,borderWidth:yh.dragBorderWidth,borderGrabWidth:10},settings:{showPopoutIcon:!1,showCloseIcon:!1,constrainDragToContainer:!1}}}static getRootFromContainer(t){return t.layoutManager.root}static getComponentConfigFromContainer(t){return t?t.tab!=null&&t.tab.contentItem!=null?t.tab.contentItem.config:t._config:null}static getTitleFromContainer(t){return t!=null&&t.tab!=null&&t.tab.contentItem!=null?t.tab.contentItem.config.title:null}static getTitleFromTab(t){return t!=null&&t.contentItem!=null?t.contentItem.config.title:null}static getIdFromContainer(t){const e=Ve.getComponentConfigFromContainer(t);return e?e.id:null}static getIdFromPanel(t){const{glContainer:e}=t.props;return Ve.getIdFromContainer(e)}static getComponentNameFromPanel(t){var s;const{glContainer:e}=t.props,n=Ve.getComponentConfigFromContainer(e);return n&&$i(n)&&(s=n.component)!=null?s:null}static getComponentName(t){var n,s;const e=(s=(n=t.WrappedComponent)==null?void 0:n.displayName)!=null?s:t.displayName;if(e==null)throw new Error(`Component displayName not defined ${t}`);return e}static focusElement(t,e=Ve.DEFAULT_FOCUS_SELECTOR){if(t==null)return null;const n=t.querySelector(e);return n==null?null:(Pr(n)&&n.focus(),n)}static onInitialized(t){return new Promise(e=>{if(t.isInitialised){e();return}const n=()=>{t.off("initialised",n),e()};t.on("initialised",n)})}};let ne=Ve;ne.DEFAULT_FOCUS_SELECTOR="input, select, textarea, button";const mp=Y.forwardRef((t,e)=>{const n=ne.getComponentNameFromPanel({props:t});return T("div",{ref:e,className:"panel-placeholder",children:['Component "',n,'" is not registered.']})});mp.displayName="PanelPlaceholder";const Re=Object.freeze({FOCUS:"PanelEvent.FOCUS",MOUNT:"PanelEvent.MOUNT",UNMOUNT:"PanelEvent.UNMOUNT",TITLE_CHANGED:"PanelEvent.TITLE_CHANGED",REOPEN:"PanelEvent.REOPEN",DELETE:"PanelEvent.DELETE",CLONED:"PanelEvent.CLONED",CLOSED:"PanelEvent.CLOSED",OPEN:"PanelEvent.OPEN",CLOSE:"PanelEvent.CLOSE",DRAGGING:"PanelEvent.DRAGGING",DROPPED:"PanelEvent.DROPPED"});function Rh(t){return(t==null?void 0:t.WrappedComponent)!==void 0}function nv(t){return typeof t.id=="string"&&t.layout instanceof Kd&&t.panelManager instanceof qd&&typeof t.registerComponent=="function"}function Ks(t){if(!nv(t))throw new Error(`Expected dashboard plugin props, but instead received ${t}`)}const gn=X.module("PanelManager");class qd{constructor(e,n=(l,a)=>a,s=(l,a)=>a,i=new Map,o=[],r=()=>{}){this.handleFocus=this.handleFocus.bind(this),this.handleMount=this.handleMount.bind(this),this.handleUnmount=this.handleUnmount.bind(this),this.handleReopen=this.handleReopen.bind(this),this.handleDeleted=this.handleDeleted.bind(this),this.handleClosed=this.handleClosed.bind(this),this.handleControlClose=this.handleControlClose.bind(this),this.layout=e,this.hydrateComponent=n,this.dehydrateComponent=s,this.onPanelsUpdated=r,this.openedMap=new Map(i),this.closed=[...o],this.startListening()}startListening(){const{eventHub:e}=this.layout;e.on(Re.FOCUS,this.handleFocus),e.on(Re.MOUNT,this.handleMount),e.on(Re.UNMOUNT,this.handleUnmount),e.on(Re.REOPEN,this.handleReopen),e.on(Re.DELETE,this.handleDeleted),e.on(Re.CLOSED,this.handleClosed),e.on(Re.CLOSE,this.handleControlClose)}stopListening(){const{eventHub:e}=this.layout;e.off(Re.FOCUS,this.handleFocus),e.off(Re.MOUNT,this.handleMount),e.off(Re.UNMOUNT,this.handleUnmount),e.off(Re.REOPEN,this.handleReopen),e.off(Re.DELETE,this.handleDeleted),e.off(Re.CLOSED,this.handleClosed),e.off(Re.CLOSE,this.handleControlClose)}getClosedPanelConfigsOfType(e){return this.closed.filter(n=>n.component===e)}getOpenedPanels(){return Array.from(this.openedMap.values())}getOpenedPanelConfigs(){return this.getOpenedPanels().map(e=>{const{glContainer:n}=e.props;return ne.getComponentConfigFromContainer(n)})}getOpenedPanelConfigsOfType(e){return this.getOpenedPanelConfigs().filter(n=>n!=null&&$i(n)&&n.component===e)}getOpenedPanelById(e){return this.openedMap.get(e)}getContainerByPanelId(e){var s;const n=ne.getStackForConfig(this.layout.root,{id:e});return(s=n&&ne.getContentItemInStack(n,{id:e}))!=null?s:null}getLastUsedPanel(e){const n=this.getOpenedPanels();for(let s=n.length-1;s>=0;s-=1){const i=n[s];if(e==null||e(i))return i}}getLastUsedPanelOfType(e){return this.getLastUsedPanelOfTypes([e])}getLastUsedPanelOfTypes(e){return this.getLastUsedPanel(n=>e.some(s=>Rh(s)&&n instanceof s.WrappedComponent||!Rh(s)&&n instanceof s))}updatePanel(e){const n=ne.getIdFromPanel(e);if(n==null){gn.error("updatePanel Panel did not have an ID",e);return}gn.debug2(`Updating panel ID ${n} in open panels map`),this.openedMap.delete(n),this.openedMap.set(n,e)}removePanel(e){const n=ne.getIdFromPanel(e);if(n==null){gn.error("removePanel Panel did not have an ID",e);return}if(!this.openedMap.has(n)){gn.error(`Missing panel ID ${n} in open panels map`);return}if(this.openedMap.get(n)!==e){gn.debug(`Panel argument doesn't match the open panels map entry for ${n}, removePanel ignored`);return}gn.debug2(`Removing panel ID ${n} from open panels map`),this.openedMap.delete(n)}removeClosedPanelConfig(e){const n=this.closed.findIndex(s=>s===e||s.id!=null&&e.id!=null&&s.id===e.id);n>=0&&this.closed.splice(n,1)}handleFocus(e){gn.debug2("Focus: ",e),this.updatePanel(e)}handleMount(e){gn.debug2("Mount: ",e),this.updatePanel(e),this.sendUpdate()}handleUnmount(e){gn.debug2("Unmount: ",e),this.removePanel(e),this.sendUpdate()}handleReopen(e,n){gn.debug2("Reopen:",e,n),this.removeClosedPanelConfig(e);const{component:s}=e;let{props:i}=e;i=this.hydrateComponent(s,i);const o={...e,props:i},{root:r}=this.layout;ne.openComponent({root:r,config:o,replaceConfig:n})}handleDeleted(e){gn.debug2("Deleted:",e),this.removeClosedPanelConfig(e),this.sendUpdate()}handleClosed(e,n){gn.debug2("Closed: ",e),this.addClosedPanel(n),this.sendUpdate()}handleControlClose(e){const n={id:e},{root:s}=this.layout;ne.closeComponent(s,n)}addClosedPanel(e){const n=ne.getComponentConfigFromContainer(e);if(n&&$i(n)){const s=this.dehydrateComponent(n.component,n);s!=null&&this.closed.push(s)}}sendUpdate(){const{closed:e,openedMap:n}=this;this.onPanelsUpdated({closed:[...e],openedMap:new Map(n)})}}qd.MAX_CLOSED_PANEL_COUNT=100;const sv=X.module("PanelErrorBoundary");class iv extends w.exports.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}componentWillUnmount(){const{glContainer:e,glEventHub:n}=this.props,s=ne.getIdFromContainer(e);sv.debug("componentWillUnmount",s),n.emit(Re.CLOSED,s,e)}render(){const{children:e}=this.props,{error:n}=this.state;return n!=null?h("div",{className:"panel-error-boundary",children:h(Ul,{errorMessage:`${n}`,isLoading:!1,isLoaded:!1})}):e}}function Yd(t){const{props:e,componentState:n}=t,{metadata:s}=e;let{panelState:i=null}=e;n&&({panelState:i}=n);const o={};return s!=null&&(o.metadata=s),i!=null&&(o.panelState=i),{...t,componentState:null,props:o,type:"react-component"}}function Xd(t,e=""){return{metadata:{},...t,localDashboardId:e}}const td={dehydrate:Yd,hydrate:Xd},ov=D.exports.shape({on:D.exports.func,off:D.exports.func,isHidden:D.exports.bool,tab:D.exports.shape({header:D.exports.shape({tabs:D.exports.arrayOf(D.exports.shape({contentItem:D.exports.shape({})}))})}),title:D.exports.string,setTitle:D.exports.func,close:D.exports.func}),pp=D.exports.shape({on:D.exports.func,off:D.exports.func,emit:D.exports.func}),rv=D.exports.shape({registerComponent:D.exports.func,root:D.exports.shape({addChild:D.exports.func}),on:D.exports.func,off:D.exports.func,eventHub:pp}),jd=Object.freeze({Container:ov,EventHub:pp,Layout:rv}),Ke=(t,e,n)=>w.exports.useEffect(function(){return t.on(e,n),()=>{t.off(e,n)}},[t,e,n]),gp="SET_DASHBOARD_DATA",lv=F0(gp,{},!1),av={dashboardData:lv},dv=new Map,cv=Object.freeze({}),hv=Object.freeze([]),uv=t=>t.dashboardData,Zt=(t,e)=>{var n;return(n=uv(t)[e])!=null?n:cv},mv=(t,e)=>{var n;return(n=Zt(t,e).closed)!=null?n:hv},fp=(t,e)=>{var n;return(n=Zt(t,e).openedMap)!=null?n:dv},Cp=(t,e)=>({type:gp,id:t,payload:e}),es=(t,e)=>(n,s)=>n(Cp(t,{...Zt(s(),t),...e}));Object.entries(av).map(([t,e])=>ho.register(t,e));const Hr=X.module("DashboardLayout"),pv=Object.freeze({}),gv=[],Dh=()=>{},Mh=t=>t;function bp({id:t,children:e,emptyDashboard:n=h("div",{children:"Dashboard is empty."}),layout:s,layoutConfig:i=gv,onLayoutChange:o=Dh,onLayoutInitialized:r=Dh,hydrate:l=Xd,dehydrate:a=Yd}){var _,k;const d=Sd(),c=(_=qg(V=>Zt(V,t)))!=null?_:pv,[u,m]=w.exports.useState(!1),[p,g]=w.exports.useState(!1),[f,b]=w.exports.useState(),[C]=w.exports.useState((k=c==null?void 0:c.closed)!=null?k:[]),[S,v]=w.exports.useState(!1),y=w.exports.useMemo(()=>new Map,[]),E=w.exports.useMemo(()=>new Map,[]),I=Yg(),R=w.exports.useCallback((V,G,q=l,Q=a)=>{Hr.debug2("registerComponent",V,G,q,Q);function ce(Ee,ee){const pe=G,{glContainer:ve,glEventHub:De}=Ee;return h(fu,{store:I,children:h(iv,{glContainer:ve,glEventHub:De,children:h(pe,{...Ee,ref:ee})})})}const ae=Y.forwardRef(ce),le=s.registerComponent(V,ae);return y.set(V,q),E.set(V,Q),le},[l,a,y,E,s,I]),N=w.exports.useCallback((V,G)=>{var q;return((q=y.get(V))!=null?q:Mh)(G,t)},[y,t]),F=w.exports.useCallback((V,G)=>{var q;return((q=E.get(V))!=null?q:Mh)(G,t)},[E,t]),B=w.exports.useMemo(()=>new qd(s,N,F,new Map,C,({closed:V,openedMap:G})=>{d(es(t,{closed:V,openedMap:G}))}),[F,d,N,t,C,s]),U=w.exports.useCallback(()=>{if(p)return;S||(r(),v(!0));const G=s.toConfig().content,q=ne.dehydrateLayoutConfig(G,F),Q=f==null||!ne.isEqual(f,q);Hr.debug("handleLayoutStateChanged",Q,G,q),Q&&(m(s.root.contentItems.length===0),b(q),o(q))},[F,S,p,f,s,o,r]),x=w.exports.useCallback(V=>{const G=ne.getIdFromContainer(V);s.eventHub.emit(Re.DRAGGING,G),g(!0)},[s.eventHub]),H=w.exports.useCallback(V=>{const G=ne.getIdFromContainer(V);s.eventHub.emit(Re.DROPPED,G),g(!1)},[s.eventHub]),A=w.exports.useCallback(V=>{if(Hr.debug2("handleComponentCreated",V),V==null||V.config==null||V.config.component==null||V.element==null)return;const q=`${V.config.component.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}-component`;V.element.addClass(q)},[]);Ke(s,"stateChanged",U),Ke(s,"itemPickedUp",x),Ke(s,"itemDropped",H),Ke(s,"componentCreated",A),Ke(s.eventHub,Re.TITLE_CHANGED,U);const O=Al(i);return w.exports.useEffect(function(){if(O!==i&&i!==f){Hr.debug("Setting new layout content...");const G=ne.hydrateLayoutConfig(i,N);for(;s.root.contentItems.length>0;)s.root.contentItems[0].remove();for(let q=0;q<G.length;q+=1)s.root.addChild(G[q]);m(s.root.contentItems.length===0)}},[N,s,i,f,B,O]),T(we,{children:[u&&n,Y.Children.map(e,V=>V!=null?Y.cloneElement(V,{id:t,layout:s,panelManager:B,registerComponent:R}):null)]})}bp.propTypes={id:D.exports.string.isRequired,children:D.exports.node,data:D.exports.shape({}),emptyDashboard:D.exports.node,layout:jd.Layout.isRequired,layoutConfig:D.exports.arrayOf(D.exports.shape({})),onLayoutChange:D.exports.func,onLayoutInitialized:D.exports.func};const fv=100,Ia=()=>{},Cv=Object.freeze({});function bv({id:t="default",children:e,emptyDashboard:n,layoutConfig:s,layoutSettings:i=Cv,onLayoutConfigChange:o=Ia,onGoldenLayoutChange:r=Ia,onLayoutInitialized:l=Ia,fallbackComponent:a=mp,hydrate:d,dehydrate:c}){const u=w.exports.useRef(null),[m,p]=w.exports.useState(!1),[g,f]=w.exports.useState();w.exports.useEffect(function(){if(!u.current){f(void 0);return}const S={...ne.makeDefaultLayout()};S.settings===void 0&&(S.settings={}),Object.assign(S.settings,i),S.content=[];const v=new Kd(S,u.current),y=()=>{v.off("initialised",y),p(!0)};return v.on("initialised",y),a!=null&&v.setFallbackComponent(a),v.init(),f(v),r(v),()=>{v.destroy()}},[i,a,r,p,f]);const b=w.exports.useMemo(()=>Zn(()=>{g!=null&&g.isInitialised&&(g==null||g.updateSize())},fv),[g]);return w.exports.useEffect(function(){return window.addEventListener("resize",b),()=>{window.removeEventListener("resize",b)}},[b]),T("div",{className:"dashboard-container w-100 h-100",children:[h("div",{className:"w-100 h-100",ref:u}),m&&g&&h(bp,{emptyDashboard:n,id:t,layout:g,layoutConfig:s,onLayoutChange:o,onLayoutInitialized:l,hydrate:d,dehydrate:c,children:e})]})}const Dn="default";class Sp extends Error{constructor(){super(...arguments),this.isAssertionFailed=!0}}function Nh(t){if(t==null)throw new Sp(`Expected 'val' to be defined, but received ${t}`)}class Ra extends Error{constructor(){super(...arguments),this.isPasteError=!0}}function et(t){return(t==null?void 0:t.isEditable)!==void 0}function Fh(t){if(!et(t))throw new Sp(`Expected 'model' to be editable, but received ${t}`)}function gt(t){return(t==null?void 0:t.hasExpandableRows)!==void 0}var Mn=(t=>(t.DOWN="DOWN",t.UP="UP",t.LEFT="LEFT",t.RIGHT="RIGHT",t))(Mn||{});const Ie=class{static normalize(t,e,n,s){let i=t,o=e,r=n,l=s;return i!=null&&r!=null&&r<i&&(i=r,r=t),o!=null&&l!=null&&l<o&&(o=l,l=e),[i,o,r,l]}static makeNormalized(t,e,n,s){return new Ie(...Ie.normalize(t,e,n,s))}static makeCell(t,e){return new Ie(t,e,t,e)}static makeColumn(t){return new Ie(t,null,t,null)}static makeRow(t){return new Ie(null,t,null,t)}static minOrNull(t,e){return t==null||e==null?null:Math.min(t,e)}static maxOrNull(t,e){return t==null||e==null?null:Math.max(t,e)}static consolidate(t){const e=t.slice();let n=!0;for(;n;){n=!1;for(let s=0;s<e.length&&!n;s+=1){const i=e[s];for(let o=e.length-1;o>s;o-=1){const r=e[o];if(i.contains(r))e.splice(o,1);else if(r.contains(i)){n=!0,e[s]=r,e.splice(o,1);break}else if(i.startRow===r.startRow&&i.endRow===r.endRow){if(i.touches(r)){const{startRow:l,endRow:a}=i,d=Ie.minOrNull(i.startColumn,r.startColumn),c=Ie.maxOrNull(i.endColumn,r.endColumn);n=!0,e[s]=new Ie(d,l,c,a),e.splice(o,1);break}}else if(i.startColumn===r.startColumn&&i.endColumn===r.endColumn&&i.touches(r)){const{startColumn:l,endColumn:a}=i,d=Ie.minOrNull(i.startRow,r.startRow),c=Ie.maxOrNull(i.endRow,r.endRow);n=!0,e[s]=new Ie(l,d,a,c),e.splice(o,1);break}}}}return e}static isAxisRangeTouching(t,e,n,s){return t==null?e==null||n==null?!0:n<=e+1:e==null?s==null?!0:s>=t-1:n==null?s==null?!0:t<=s+1:s==null?e>=n-1:n>=t-1?n<=e+1:s>=t-1}static rangeArraysEqual(t,e){if(t===e)return!0;if(t==null||e==null||t.length!==e.length)return!1;for(let n=0;n<t.length;n+=1)if(!t[n].equals(e[n]))return!1;return!0}static intersection(t,e){if(t.equals(e))return t;let{startColumn:n,startRow:s,endColumn:i,endRow:o}=t;return n=n!=null&&e.startColumn!=null?Math.max(n,e.startColumn):n!=null?n:e.startColumn,i=i!=null&&e.endColumn!=null?Math.min(i,e.endColumn):i!=null?i:e.endColumn,s=s!=null&&e.startRow!=null?Math.max(s,e.startRow):s!=null?s:e.startRow,o=o!=null&&e.endRow!=null?Math.min(o,e.endRow):o!=null?o:e.endRow,n!=null&&n>(i!=null?i:-1)||s!=null&&s>(o!=null?o:-1)?null:new Ie(n,s,i,o)}static subtractFromRange(t,e){const n=[],s=Ie.intersection(t,e);return s==null?[t]:(s.startRow!=null&&(t.startRow==null||t.startRow<s.startRow)&&n.push(new Ie(t.startColumn,t.startRow,t.endColumn,s.startRow-1)),s.startColumn!=null&&(t.startColumn==null||t.startColumn<s.startColumn)&&n.push(new Ie(t.startColumn,s.startRow,s.startColumn-1,s.endRow)),s.endColumn!=null&&(t.endColumn==null||t.endColumn>s.endColumn)&&n.push(new Ie(s.endColumn+1,s.startRow,t.endColumn,s.endRow)),s.endRow!=null&&(t.endRow==null||t.endRow>s.endRow)&&n.push(new Ie(t.startColumn,s.endRow+1,t.endColumn,t.endRow)),n)}static subtractFromRanges(t,e){const n=[];for(let s=0;s<t.length;s+=1)n.push(...Ie.subtractFromRange(t[s],e));return n}static subtractRangesFromRanges(t,e){if(e==null||e.length===0)return t;let n=[...t];for(let s=0;s<e.length;s+=1)n=Ie.subtractFromRanges(n,e[s]);return n}static isBounded(t){return t.startRow!=null&&t.startColumn!=null&&t.endRow!=null&&t.endColumn!=null}static boundedRange(t,e,n){var s,i,o,r;return Ie.isBounded(t)?t:new Ie((s=t.startColumn)!=null?s:0,(i=t.startRow)!=null?i:0,(o=t.endColumn)!=null?o:e-1,(r=t.endRow)!=null?r:n-1)}static boundedRanges(t,e,n){return t.map(s=>Ie.boundedRange(s,e,n))}static offset(t,e,n){return new Ie(t.startColumn!=null?t.startColumn+e:null,t.startRow!=null?t.startRow+n:null,t.endColumn!=null?t.endColumn+e:null,t.endRow!=null?t.endRow+n:null)}static nextCell(t,e=null,n=null,s=Ie.SELECTION_DIRECTION.DOWN){if(t.length===0)return null;let i=-1;if(e!=null&&n!=null&&(i=t.findIndex(o=>o.containsCell(e,n)),i>=0)){const r=t[i].nextCell(e,n,s);if(r!=null)return r}switch(s){case Ie.SELECTION_DIRECTION.DOWN:case Ie.SELECTION_DIRECTION.RIGHT:{const o=i<t.length-1?i+1:0;return t[o].startCell(s)}case Ie.SELECTION_DIRECTION.LEFT:case Ie.SELECTION_DIRECTION.UP:{const o=i>0?i-1:t.length-1;return t[o].startCell(s)}default:throw new Error(`Invalid direction: ${s}`)}}static cellCount(t){return t.reduce((e,n)=>{var s,i,o,r;return e+(((s=n.endRow)!=null?s:NaN)-((i=n.startRow)!=null?i:NaN)+1)*(((o=n.endColumn)!=null?o:NaN)-((r=n.startColumn)!=null?r:NaN)+1)},0)}static rowCount(t){return t.reduce((e,n)=>{var s,i;return e+((s=n.endRow)!=null?s:NaN)-((i=n.startRow)!=null?i:NaN)+1},0)}static columnCount(t){return t.reduce((e,n)=>{var s,i;return e+((s=n.endColumn)!=null?s:NaN)-((i=n.startColumn)!=null?i:NaN)+1},0)}static containsCell(t,e,n){for(let s=0;s<t.length;s+=1)if(t[s].containsCell(e,n))return!0;return!1}static forEachCell(t,e,n=Ie.SELECTION_DIRECTION.RIGHT){for(let s=0;s<t.length;s+=1)t[s].forEach(e,n)}constructor(t,e,n,s){this.startColumn=t,this.startRow=e,this.endColumn=n,this.endRow=s}equals(t){return this.startColumn===t.startColumn&&this.startRow===t.startRow&&this.endColumn===t.endColumn&&this.endRow===t.endRow}contains(t){return(this.startColumn==null||t.startColumn!=null&&this.startColumn<=t.startColumn)&&(this.startRow==null||t.startRow!=null&&this.startRow<=t.startRow)&&(this.endColumn==null||t.endColumn!=null&&this.endColumn>=t.endColumn)&&(this.endRow==null||t.endRow!=null&&this.endRow>=t.endRow)}containsCell(t,e){return t==null||e==null?!1:(this.startColumn==null||this.startColumn<=t)&&(this.endColumn==null||this.endColumn>=t)&&(this.startRow==null||this.startRow<=e)&&(this.endRow==null||this.endRow>=e)}touches(t){return Ie.isAxisRangeTouching(this.startRow,this.endRow,t.startRow,t.endRow)&&Ie.isAxisRangeTouching(this.startColumn,this.endColumn,t.startColumn,t.endColumn)}subtract(t){return Ie.subtractFromRange(this,t)}startCell(t=Ie.SELECTION_DIRECTION.DOWN){if(!Ie.isBounded(this))throw new Error("Cannot get the startCell of an unbounded range");switch(t){case Ie.SELECTION_DIRECTION.DOWN:case Ie.SELECTION_DIRECTION.RIGHT:return{column:this.startColumn,row:this.startRow};case Ie.SELECTION_DIRECTION.LEFT:case Ie.SELECTION_DIRECTION.UP:return{column:this.endColumn,row:this.endRow};default:throw new Error(`Invalid direction: ${t}`)}}nextCell(t,e,n){if(!Ie.isBounded(this))throw new Error("Bounded range required");if(t==null||e==null)throw new Error("Require a non-null cursor");const{startColumn:s,endColumn:i,startRow:o,endRow:r}=this;switch(n){case Ie.SELECTION_DIRECTION.DOWN:if(e<r)return{column:t,row:Math.max(e+1,o)};if(t<i)return{column:Math.max(t+1,s),row:o};break;case Ie.SELECTION_DIRECTION.UP:if(e>o)return{column:t,row:Math.min(e-1,r)};if(t>s)return{column:Math.min(t-1,i),row:r};break;case Ie.SELECTION_DIRECTION.RIGHT:if(t<i)return{column:Math.max(t+1,s),row:e};if(e<r)return{column:s,row:Math.max(e+1,o)};break;case Ie.SELECTION_DIRECTION.LEFT:if(t>s)return{column:Math.min(t-1,i),row:e};if(e>o)return{column:i,row:Math.min(e-1,r)};break;default:throw new Error(`Invalid direction: ${n}`)}return null}forEach(t,e=Ie.SELECTION_DIRECTION.RIGHT){var o;let n=0,{column:s,row:i}=this.startCell(e);for(;s!=null&&i!=null;)t(s,i,n),n+=1,{column:s,row:i}=(o=this.nextCell(s,i,e))!=null?o:{}}};let re=Ie;re.SELECTION_DIRECTION=Mn;function Sv(t){return Array.isArray(t)&&t.length===2&&(t[0]===null||typeof t[0]=="number")&&(t[1]===null||typeof t[1]=="number")}function Ur(t){return Sv(t)&&t[0]!=null&&t[1]!=null}const Ne=class{static getGridPointFromXY(t,e,n){const s=Ne.getColumnAtX(t,n),i=Ne.getRowAtY(e,n),o=Ne.getColumnHeaderDepthAtY(e,n);return{x:t,y:e,row:i,column:s,columnHeaderDepth:o}}static getCellInfoFromXY(t,e,n){const{row:s,column:i}=Ne.getGridPointFromXY(t,e,n),{allColumnWidths:o,allRowHeights:r,allColumnXs:l,allRowYs:a,modelColumns:d,modelRows:c}=n,u=s!==null?c.get(s):null,m=i!==null?d.get(i):null,p=i!==null?l.get(i):null,g=s!==null?a.get(s):null,f=i!==null?o.get(i):null,b=s!==null?r.get(s):null;return{row:s,column:i,modelRow:u!=null?u:null,modelColumn:m!=null?m:null,left:p!=null?p:null,top:g!=null?g:null,columnWidth:f!=null?f:null,rowHeight:b!=null?b:null}}static getColumnHeaderDepthAtY(t,e){const n=Ne.getRowAtY(t,e),{columnHeaderHeight:s,columnHeaderMaxDepth:i}=e;if(n===null&&t<=s*i)return Qe(i-Math.ceil(t/s),0,i-1)}static iterateFloatingStart(t,e,n){for(let s=0;s<t&&s<e;s+=1){const i=n(s);if(i!==void 0)return i}}static iterateFloatingEnd(t,e,n){for(let s=0;s<t&&e-(t-s)>=0;s+=1){const i=n(e-(t-s));if(i!==void 0)return i}}static iterateFloating(t,e,n,s){const i=Ne.iterateFloatingStart(t,n,s);return i!==void 0?i:Ne.iterateFloatingEnd(e,n,s)}static iterateAllItems(t,e,n,s,i,o){const r=Math.max(t,n),l=Math.min(e,i-s-1);let a=Ne.iterateFloating(n,s,i,o);if(a!==void 0)return a;for(let d=r;d<=l;d+=1)if(a=o(d),a!==void 0)return a}static isInItem(t,e,n,s){var r,l;const i=(r=e.get(t))!=null?r:0,o=(l=n.get(t))!=null?l:0;return i<=s&&s<=i+o}static getItemAtOffset(t,e,n,s,i,o,r,l=!1){const a=l?void 0:Ne.iterateFloating(n,s,e,d=>{if(Ne.isInItem(d,o,r,t))return d});if(!l&&a!==void 0)return a;for(let d=0;d<i.length;d+=1){const c=i[d];if(Ne.isInItem(c,o,r,t))return c}return null}static getColumnAtX(t,e,n=!1){const{columnCount:s,floatingLeftColumnCount:i,floatingRightColumnCount:o,visibleColumns:r,allColumnXs:l,allColumnWidths:a,gridX:d}=e;return t<d?null:this.getItemAtOffset(t-d,s,i,o,r,l,a,n)}static getRowAtY(t,e){const{floatingTopRowCount:n,floatingBottomRowCount:s,rowCount:i,visibleRows:o,allRowYs:r,allRowHeights:l,gridY:a}=e;return t<a?null:this.getItemAtOffset(t-a,i,n,s,o,r,l)}static getNextShownItem(t,e,n,s){let i=n.findIndex(o=>o===t)||0;for(i-=1;i!=null&&i>=0;){const o=n[i],r=e.get(o);if(r!=null&&s.get(r)!==0)return o;i-=1}return null}static getNextShownColumn(t,e){const{modelColumns:n,visibleColumns:s,userColumnWidths:i}=e;return Ne.getNextShownItem(t,n,s,i)}static getNextShownRow(t,e){const{modelRows:n,visibleRows:s,userRowHeights:i}=e;return Ne.getNextShownItem(t,n,s,i)}static getColumnSeparatorIndex(t,e,n,s){var C,S,v,y;const{rowHeaderWidth:i,columnHeaderHeight:o,floatingColumns:r,floatingLeftWidth:l,visibleColumns:a,allColumnXs:d,allColumnWidths:c,columnHeaderMaxDepth:u}=n,{allowColumnResize:m,headerSeparatorHandleSize:p}=s;if(u*o<e||!m||p<=0)return null;const g=t-i,f=p*.5;let b=!1;for(let E=r.length-1;E>=0;E-=1){const I=r[E],R=(C=d.get(I))!=null?C:0,N=(S=c.get(I))!=null?S:0,F=N===0;if(!b||!F){let B=R+N;F?B+=f:b&&(B-=f);const U=B-f,x=B+f;if(U<=g&&g<=x)return I;b=F}}b=!1;for(let E=a.length-1;E>=0;E-=1){const I=a[E],R=(v=d.get(I))!=null?v:0,N=(y=c.get(I))!=null?y:0,F=N===0;if(R<l-N)return null;if(!b||!F){let B=R+N;F?B+=f:b&&(B-=f);const U=B-f,x=B+f;if(U<=g&&g<=x)return I;b=F}}return null}static isItemHidden(t,e){return e.get(t)===0}static isColumnHidden(t,e){const{allColumnWidths:n}=e;return Ne.isItemHidden(t,n)}static isFloatingRow(t,e){if(t==null)return!1;const{floatingTopRowCount:n,floatingBottomRowCount:s,rowCount:i}=e;return t<n||t>=i-s}static isFloatingColumn(t,e){if(t==null)return!1;const{floatingLeftColumnCount:n,floatingRightColumnCount:s,columnCount:i}=e;return t<n||t>=i-s}static getHiddenItems(t,e,n){if(!Ne.isItemHidden(t,e))return[];const s=[t],i=n.findIndex(o=>o===t);for(let o=i-1;o>=0;o-=1){const r=n[o];if(!Ne.isItemHidden(r,e))break;s.push(r)}return s}static getHiddenColumns(t,e){const{visibleColumns:n,allColumnWidths:s}=e;return Ne.getHiddenItems(t,s,n)}static getRowSeparatorIndex(t,e,n,s){var g,f;const{rowHeaderWidth:i,columnHeaderHeight:o,visibleRows:r,allRowYs:l,allRowHeights:a}=n,{allowRowResize:d,headerSeparatorHandleSize:c}=s;if(i<t||!d||c<=0)return null;const u=e-o,m=c*.5;let p=!1;for(let b=r.length-1;b>=0;b-=1){const C=r[b],S=(g=l.get(C))!=null?g:0,v=(f=a.get(C))!=null?f:0,y=v===0;if(!p||!y){let E=S+v;y?E+=m:p&&(E-=m);const I=E-m,R=E+m;if(I<=u&&u<=R)return C;p=y}}return null}static isRowHidden(t,e){const{allRowHeights:n}=e;return Ne.isItemHidden(t,n)}static getHiddenRows(t,e){const{visibleRows:n,allRowHeights:s}=e;return Ne.getHiddenItems(t,s,n)}static moveItem(t,e,n){if(t===e)return n;const s=[...n],i=s[s.length-1];return i!=null&&!Ur(i.from)&&i.to===t?i.from===e?s.pop():s[s.length-1]={...i,to:e}:s.push({from:t,to:e}),s}static moveRange(t,e,n,s=!1){if(t[0]===t[1])return Ne.moveItem(t[0],e,n);let i=e;if(s&&t[0]<e&&(i-=t[1]-t[0]),t[0]===i)return n;const o=[...n],r=o[o.length-1];r!=null&&Ur(r.from)&&r.from[1]-r.from[0]===t[1]-t[0]&&r.to===t[0]?o[o.length-1]={...r,to:i}:o.push({from:t,to:i});const l=o[o.length-1];return Ur(l.from)&&l.from[0]===l.to&&o.pop(),o}static moveItemOrRange(t,e,n,s=!1){return Array.isArray(t)?Ne.moveRange(t,e,n,s):Ne.moveItem(t,e,n)}static applyItemMoves(t,e,n,s=!1){var o,r;let i=[[t,e]];for(let l=s?n.length-1:0;s?l>=0:l<n.length;s?l-=1:l+=1){const{from:a,to:d}=n[l];let c=1,u;Ur(a)?(c=a[1]-a[0]+1,[u]=a):u=a;const m=s?d:u,p=m+c-1,g=s?u:d,f=g-m,b=[];for(let C=0;C<i.length;C+=1){const S=(o=i[C][0])!=null?o:Number.NEGATIVE_INFINITY,v=(r=i[C][1])!=null?r:Number.POSITIVE_INFINITY;let y;const E=[[S,m-1],[m,p],[p+1,v]].map(([I,R])=>[Math.max(I,S),Math.min(R,v)]).filter(([I,R])=>I<=R).map(I=>{const[R,N]=I;return m<=R&&p>=N?(y=[R+f,N+f],y):p<R?[R-c,N-c]:I}).map(I=>{const[R,N]=I;return g>R&&g<=N?[[R,g-1],[g+c,N+c]]:I===y?[I]:g<=R?[[R+c,N+c]]:[I]}).flat();b.push(...E)}i=b.map(([C,S])=>[Number.isFinite(C)?C:null,Number.isFinite(S)?S:null])}return i}static translateRange(t,e,n,s){const i=Ne.applyItemMoves(t.startColumn,t.endColumn,e,s),o=Ne.applyItemMoves(t.startRow,t.endRow,n,s),r=[];for(let l=0;l<i.length;l+=1){const a=i[l];for(let d=0;d<o.length;d+=1){const c=o[d];r.push(new re(a[0],c[0],a[1],c[1]))}}return r}static getModelIndex(t,e){return Ne.applyItemMoves(t,t,e,!0)[0][0]}static getModelIndexes(t,e){return t.map(n=>Ne.getModelIndex(n,e))}static getModelRangeIndexes(t,e,n){return Ne.applyItemMoves(t,e,n,!0)}static getModelRange(t,e=[],n=[]){return Ne.translateRange(t,e,n,!0)}static getModelRanges(t,e=[],n=[]){const s=[];for(let i=0;i<t.length;i+=1)s.push(...Ne.getModelRange(t[i],e,n));return s}static getVisibleRangeIndexes(t,e,n){return Ne.applyItemMoves(t,e,n,!1)}static getVisibleRange(t,e=[],n=[]){return this.translateRange(t,e,n,!1)}static getVisibleRanges(t,e=[],n=[]){const s=[];for(let i=0;i<t.length;i+=1)s.push(...Ne.getVisibleRange(t[i],e,n));return s}static getVisibleIndex(t,e){return Ne.applyItemMoves(t,t,e)[0][0]}static getVisibleIndexes(t,e){return t.map(n=>Ne.getVisibleIndex(n,e))}static isMacPlatform(){const{platform:t}=window.navigator;return t.startsWith("Mac")}static getModifierKey(){return Ne.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(t){const e=Ne.getModifierKey();return t[e]}static checkColumnHidden(t,e){return e.get(t)===0}static checkAllColumnsHidden(t,e){return e.size===0?!1:t.every(n=>e.get(n)===0)}static getScrollDragBounds(t,e,n){const{gridX:s,gridY:i,width:o,height:r,floatingTopRowCount:l,floatingBottomRowCount:a,floatingLeftColumnCount:d,floatingRightColumnCount:c,floatingLeftWidth:u,floatingRightWidth:m,floatingTopHeight:p,floatingBottomHeight:g,columnCount:f,rowCount:b}=t;let C=s,S=i,v=o,y=r;return n!=null&&(n>d&&(C+=u),n<f-c&&(v-=m)),e!=null&&(e>l&&(S+=p),e<b-a&&(y-=g)),{x1:C,y1:S,x2:v,y2:y}}static getScrollDelta(t,e=1024,n=768,s=20,i=20){let{deltaX:o,deltaY:r}=t;return!Ne.isMacPlatform()&&t.shiftKey&&t.deltaX===0&&t.deltaY!==0&&(o=t.deltaY,r=t.deltaX),(t==null?void 0:t.deltaMode)===WheelEvent.DOM_DELTA_PAGE?(o*=e,r*=n):(t==null?void 0:t.deltaMode)===WheelEvent.DOM_DELTA_LINE&&(Ne.isMacPlatform()?(o=Math.round(o*s),r=Math.round(r*i)):(o=Math.round(o*this.PIXELS_PER_LINE),r=Math.round(r*this.PIXELS_PER_LINE))),{deltaX:o,deltaY:r}}static compareRanges(t,e){return t[0]==null||t[1]==null||e[0]==null||e[1]==null?0:t[0]!==e[0]?t[0]-e[0]:t[1]-e[1]}static mergeSortedRanges(t){const e=[];for(let n=0;n<t.length;n+=1){const s=t[n],i=s[0],o=s[1];n===0?e.push([i,o]):i-1<=e[e.length-1][1]?e[e.length-1][1]=Math.max(e[e.length-1][1],o):e.push([i,o])}return e}};let j=Ne;j.PIXELS_PER_LINE=100/3;function $(t,e,n=void 0){var i;const s=(i=t.get(e))!=null?i:n;if(s!==void 0)return s;throw new Error(`Missing value for key ${e}`)}function Vr(t,e=hr.CACHE_SIZE,n=Math.floor(e/2)){if(t.size>e){const s=t.keys();for(;t.size>n;)t.delete(s.next().value)}}function xh(t,e,n,s,i){const o=new Map;let r=0;for(let l=0;l<t&&l<n;l+=1)o.set(l,r),r+=$(i,l);r=s;for(let l=0;l<e&&n-l-1>=0;l+=1)r-=$(i,n-l-1),o.set(n-l-1,r);return o}const wp=class{constructor({userColumnWidths:t=new Map,userRowHeights:e=new Map,calculatedColumnWidths:n=new Map,calculatedRowHeights:s=new Map,fontWidths:i=new Map,modelRows:o=new Map,modelColumns:r=new Map,movedRows:l=[],movedColumns:a=[]}={}){this.userColumnWidths=t,this.userRowHeights=e,this.calculatedRowHeights=s,this.calculatedColumnWidths=n,this.fontWidths=i,this.modelRows=o,this.modelColumns=r,this.movedRows=l,this.movedColumns=a}getMetrics(t){const{left:e,top:n,leftOffset:s,topOffset:i,width:o,height:r,theme:l,model:a,movedRows:d,movedColumns:c,draggingColumn:u}=t,{rowHeight:m,rowHeaderWidth:p,rowFooterWidth:g,columnWidth:f,columnHeaderHeight:b,minScrollHandleSize:C,scrollBarSize:S}=l;d!==this.movedRows&&(this.movedRows=d,this.modelRows.clear()),c!==this.movedColumns&&(this.movedColumns=c,this.modelColumns.clear());const{columnCount:v,rowCount:y,floatingTopRowCount:E,floatingBottomRowCount:I,floatingLeftColumnCount:R,floatingRightColumnCount:N,columnHeaderMaxDepth:F}=a,B=this.getFirstRow(t),U=this.getFirstColumn(t),x=this.getGridX(t),H=this.getGridY(t),A=gt(a)&&a.hasExpandableRows?this.calculateTreePaddingX(t):0,O=0,_=this.getVisibleRowHeights(t),k=this.getVisibleColumnWidths(t,U,A),V=Array.from(_.keys()),G=Array.from(k.keys()),q=new Map([..._,...this.getFloatingRowHeights(t)]),Q=new Map([...k,...this.getFloatingColumnWidths(t)]),ce=this.getVisibleColumnXs(Q,G,s),ae=this.getVisibleRowYs(q,V,i),le=V.length>0?V[V.length-1]:n,Ee=G.length>0?G[G.length-1]:e,ee=this.getBottomViewport(t,V,ae,q),pe=this.getRightViewport(t,G,ce,Q),ve=this.getFloatingTopHeight(t,q),De=this.getFloatingBottomHeight(t,q),qe=this.getFloatingLeftWidth(t,Q),dt=this.getFloatingRightWidth(t,Q),st=Array.from(Q.values()),On=Array.from(q.values()),Bt=st.reduce((pt,Ii)=>pt+Ii,0)-s,Me=On.reduce((pt,Ii)=>pt+Ii,0)-i,ct=s+Bt+g,lt=i+Me,Mt=o-x,$t=r-H,Ln=this.getLastLeft(t,null,Mt-g),un=this.getLastLeft(t,null,Mt-g-S),vi=this.getLastTop(t,null,$t-De),mn=this.getLastTop(t,null,$t-De-S);let _t=un,Ts=mn;Ln===0&&vi===0&&(_t=0,Ts=0);const Ti=_t>0,So=Ti?S:0,Ei=Ts>0,yi=Ei?S:0,gr=x,fr=F*b,Es=o-gr-yi,qs=r-fr-So,ha=v===1?Es/ct:(v-_t)/v,Cr=y===1?qs/lt:(y-Ts)/y,wo=Ti?Qe(Es*ha,C,Es-1):0,br=Ei?Qe(qs*Cr,C,qs-1):0,Sr=$(Q,e,0),ys=$(q,n,0),ua=Sr>0?s/Sr:0,vo=ys>0?i/ys:0,ma=v===1?s/(ct-Mt):(e+ua)/_t,pa=y===1?i/(lt-$t):(n+vo)/Ts,ga=Ti?ma*(Es-wo):0,wr=Ei?pa*(qs-br):0,To=[...Array(E).keys(),...[...Array(I).keys()].map(pt=>y-pt-1)],Eo=new Map([...ae,...this.getFloatingRowYs(t,q,Math.floor(r-H-So))]),vr=[...Array(R).keys(),...[...Array(N).keys()].map(pt=>v-pt-1)],Is=new Map([...ce,...this.getFloatingColumnXs(t,Q,Math.floor(o-x-yi))]),Tr=[];if(u)for(let pt=u.range[0];pt<=u.range[1];pt+=1)Tr.push(pt),Q.has(pt)||Q.set(pt,this.getVisibleColumnWidth(pt,t)),Is.has(pt)||Is.set(pt,0);const yo=V.concat(To),Io=G.concat(vr).concat(Tr),Ro=this.getModelRows(yo,t),Er=this.getModelColumns(Io,t),yr=this.getVisibleRowTreeBoxes(q,Ro,t),fa=this.getTopVisible(t,Eo,q,V),Ca=this.getLeftVisible(t,Is,Q,G),Ir=Ts>0?this.getBottomVisible(t,Eo,q,V,H):le,Rr=_t>0?this.getRightVisible(t,Is,Q,G,x):Ee,{fontWidths:Dr,userColumnWidths:Mr,userRowHeights:Nr,calculatedRowHeights:Fr,calculatedColumnWidths:xr}=this;return{rowHeight:m,rowHeaderWidth:p,rowFooterWidth:g,rowCount:y,columnWidth:f,columnCount:v,columnHeaderHeight:b,floatingTopRowCount:E,floatingBottomRowCount:I,floatingLeftColumnCount:R,floatingRightColumnCount:N,gridX:x,gridY:H,firstRow:B,firstColumn:U,treePaddingX:A,treePaddingY:O,left:e,top:n,bottom:le,right:Ee,topOffset:i,leftOffset:s,topVisible:fa,leftVisible:Ca,bottomVisible:Ir,rightVisible:Rr,bottomViewport:ee,rightViewport:pe,width:o,height:r,maxX:Bt,maxY:Me,lastLeft:_t,lastTop:Ts,barHeight:qs,barTop:fr,barWidth:Es,barLeft:gr,handleHeight:br,handleWidth:wo,hasHorizontalBar:Ti,hasVerticalBar:Ei,verticalBarWidth:yi,horizontalBarHeight:So,scrollX:ga,scrollY:wr,scrollableContentWidth:ct,scrollableContentHeight:lt,scrollableViewportWidth:Mt,scrollableViewportHeight:$t,visibleRows:V,visibleColumns:G,visibleRowHeights:_,visibleColumnWidths:k,floatingRows:To,floatingColumns:vr,allRows:yo,allColumns:Io,allRowHeights:q,allColumnWidths:Q,floatingTopHeight:ve,floatingBottomHeight:De,floatingLeftWidth:qe,floatingRightWidth:dt,visibleRowYs:ae,visibleColumnXs:ce,allRowYs:Eo,allColumnXs:Is,visibleRowTreeBoxes:yr,modelRows:Ro,modelColumns:Er,movedRows:d,movedColumns:c,fontWidths:Dr,userColumnWidths:Mr,userRowHeights:Nr,calculatedRowHeights:Fr,calculatedColumnWidths:xr,columnHeaderMaxDepth:F}}getGridX(t){const{theme:e}=t,{rowHeaderWidth:n}=e;return n}getGridY(t){const{theme:e,model:n}=t,{columnHeaderHeight:s}=e,{columnHeaderMaxDepth:i}=n;return i*s}getVisibleHeight(t,e=this.getFloatingRowHeights(t)){const{height:n,theme:s}=t,{scrollBarSize:i}=s,o=this.getGridY(t),r=this.getFloatingBottomHeight(t,e),l=this.getFloatingTopHeight(t,e);return n-r-l-o-i}getVisibleWidth(t,e=this.getFloatingColumnWidths(t)){const{width:n,theme:s}=t,{scrollBarSize:i,rowFooterWidth:o}=s,r=this.getGridX(t),l=this.getFloatingRightWidth(t,e),a=this.getFloatingLeftWidth(t,e);return n-a-l-r-i-o}getFirstIndex(t,e,n){const s=t.size+1;for(let i=0;i<s;i+=1){const o=e(i,n);if(t.get(o)!==0)return i}return 0}getFirstColumn(t){return this.getFirstIndex(this.userColumnWidths,this.getModelColumn.bind(this),t)}getFirstRow(t){return this.getFirstIndex(this.userRowHeights,this.getModelRow.bind(this),t)}getLastLeft(t,e,n){const{model:s}=t,{columnCount:i,floatingRightColumnCount:o}=s;let r=Math.max(0,i-o-1);e!=null&&(r=e);let l=0;for(;r>=0;){if(l+=this.getVisibleColumnWidth(r,t),l>=n)return Qe(r+1,0,e!=null?e:i-1);r-=1}return 0}getLastTop(t,e,n){const{model:s}=t,{rowCount:i,floatingBottomRowCount:o}=s;let r=Math.max(0,i-o-1);e!=null&&(r=e);let l=0;for(;r>=0;){if(l+=this.getVisibleRowHeight(r,t),l>=n)return Qe(r+1,0,i-1);r-=1}return 0}getTopForTopVisible(t,e){const n=this.getFloatingTopHeight(t);let s=e,i=0;for(;s>0&&i<n;)s-=1,i+=this.getVisibleRowHeight(s,t);return s}getTopForBottomVisible(t,e){const{height:n}=t,s=this.getGridY(t),i=this.getFloatingBottomHeight(t),o=n-s-i;return this.getLastTop(t,e,o)}getLeftForLeftVisible(t,e){const n=this.getFloatingLeftWidth(t);let s=e,i=0;for(;s>0&&i<n;)s-=1,i+=this.getVisibleColumnWidth(s,t);return s}getLeftForRightVisible(t,e){const{width:n}=t,s=this.getGridX(t),i=this.getFloatingRightWidth(t),o=n-s-i;return this.getLastLeft(t,e,o)}getFloatingRowHeights(t){const{model:e}=t,{floatingTopRowCount:n,floatingBottomRowCount:s,rowCount:i}=e,o=new Map;for(let r=0;r<n&&r<i;r+=1)o.set(r,this.getVisibleRowHeight(r,t));for(let r=0;r<s&&i-r-1>=0;r+=1){const l=i-r-1;o.set(l,this.getVisibleRowHeight(l,t))}return o}getVisibleRowHeights(t){const{top:e,topOffset:n,height:s,model:i}=t;let o=0,r=e;const l=new Map,{rowCount:a}=i;for(;o<s+n&&r<a;){const d=this.getVisibleRowHeight(r,t);l.set(r,d),o+=d,r+=1}return l}getFloatingColumnWidths(t,e=this.getFirstColumn(t),n=this.calculateTreePaddingX(t)){const{model:s}=t,{columnCount:i,floatingLeftColumnCount:o,floatingRightColumnCount:r}=s,l=new Map;for(let a=0;a<o&&a<i;a+=1)l.set(a,this.getVisibleColumnWidth(a,t,e,n));for(let a=0;a<r&&i-a-1>=0;a+=1){const d=i-a-1;l.set(d,this.getVisibleColumnWidth(d,t,e,n))}return l}getVisibleColumnWidths(t,e=this.getFirstColumn(t),n=this.calculateTreePaddingX(t)){const{left:s,leftOffset:i,width:o,model:r}=t;let l=0,a=s;const d=new Map,{columnCount:c}=r;for(;l<o+i&&a<c;){const u=this.getVisibleColumnWidth(a,t,e,n);d.set(a,u),l+=u,a+=1}return d}getFloatingColumnXs(t,e,n){const{model:s}=t,{columnCount:i,floatingLeftColumnCount:o,floatingRightColumnCount:r}=s;return xh(o,r,i,n,e)}getVisibleColumnXs(t,e,n){const s=new Map;let i=-n;for(let o=0;o<e.length;o+=1){const r=e[o],l=$(t,r);s.set(r,i),i+=l}return s}getFloatingRowYs(t,e,n){const{model:s}=t,{floatingTopRowCount:i,floatingBottomRowCount:o,rowCount:r}=s;return xh(i,o,r,n,e)}getVisibleRowYs(t,e,n){const s=new Map;let i=-n;for(let o=0;o<e.length;o+=1){const r=e[o],l=$(t,r);s.set(r,i),i+=l}return s}getVisibleRowTreeBoxes(t,e,n){const s=new Map,{model:i,theme:o}=n,{treeDepthIndent:r,treeHorizontalPadding:l}=o;return gt(i)&&i.hasExpandableRows&&t.forEach((a,d)=>{const c=$(e,d);if(i.isRowExpandable(c)){const u=i.depthForRow(c),m=u*r+l,p=(u+1)*r+l,g=0,f=a;s.set(d,{x1:m,y1:g,x2:p,y2:f})}}),s}getFloatingLeftWidth(t,e=this.getFloatingColumnWidths(t)){const{model:n}=t,{floatingLeftColumnCount:s}=n;let i=0;for(let o=0;o<s;o+=1)i+=$(e,o);return i}getFloatingRightWidth(t,e=this.getFloatingColumnWidths(t)){const{model:n}=t,{floatingRightColumnCount:s,columnCount:i}=n;let o=0;for(let r=0;r<s;r+=1)o+=$(e,i-r-1);return o}getFloatingTopHeight(t,e=this.getFloatingRowHeights(t)){const{model:n}=t,{floatingTopRowCount:s}=n;let i=0;for(let o=0;o<s;o+=1)i+=$(e,o);return i}getFloatingBottomHeight(t,e=this.getFloatingRowHeights(t)){const{model:n}=t,{floatingBottomRowCount:s,rowCount:i}=n;let o=0;for(let r=0;r<s;r+=1)o+=$(e,i-r-1);return o}getTopVisible(t,e,n,s){const i=this.getFloatingTopHeight(t,n);for(let o=0;o<s.length;o+=1){const r=s[o];if($(e,r)>=i)return r}return 0}getLeftVisible(t,e,n,s){const i=this.getFloatingLeftWidth(t,n);for(let o=0;o<s.length;o+=1){const r=s[o];if($(e,r)>=i)return r}return 0}getBottomVisible(t,e,n,s,i){const{height:o,theme:r}=t,{scrollBarSize:l}=r,a=this.getFloatingBottomHeight(t,n),d=o-i-l-a;for(let c=s.length-1;c>=0;c-=1){const u=s[c],m=$(e,u),p=$(n,u);if(m+p<=d)return u}return 0}getRightVisible(t,e,n,s,i){const{width:o,theme:r}=t,{scrollBarSize:l}=r,a=this.getFloatingRightWidth(t,n),d=o-i-l-a;for(let c=s.length-1;c>=0;c-=1){const u=s[c],m=$(e,u),p=$(n,u);if(m+p<=d)return u}return 0}getBottomViewport(t,e,n,s){const{height:i,theme:o}=t,{rowHeight:r}=o;return this.getLastIndexViewport(e,n,s,i,r)}getRightViewport(t,e,n,s){const{width:i,theme:o}=t,{columnWidth:r}=o;return this.getLastIndexViewport(e,n,s,i,r)}getLastIndexViewport(t,e,n,s,i){let o=0,r=0;return t.length>0&&(o=t[t.length-1],r=$(e,o)+$(n,o)),r<s&&(o+=Math.ceil((s-r)/i)),o}getVisibleItemSize(t,e,n){var i;const s=n();return(i=e.get(t))!=null?i:s}getVisibleRowHeight(t,e){const n=this.getModelRow(t,e);return this.getVisibleItemSize(n,this.userRowHeights,()=>this.calculateRowHeight(t,n,e))}getVisibleColumnWidth(t,e,n=this.getFirstColumn(e),s=this.calculateTreePaddingX(e)){const i=this.getModelColumn(t,e);return this.getVisibleItemSize(i,this.userColumnWidths,()=>this.calculateColumnWidth(t,i,e,n,s))}getModelRows(t,e){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],o=this.getModelRow(i,e);n.set(i,o)}return n}getModelRow(t,e){if(this.modelRows.has(t))return $(this.modelRows,t);const{movedRows:n}=e,s=j.getModelIndex(t,n);return this.modelRows.set(t,s),s}getModelColumns(t,e){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],o=this.getModelColumn(i,e);n.set(i,o)}return n}getModelColumn(t,e){if(this.modelColumns.has(t))return $(this.modelColumns,t);const{movedColumns:s}=e,i=j.getModelIndex(t,s);return this.modelColumns.set(t,i),i}calculateRowHeight(t,e,n){const{theme:s}=n,{autoSizeRows:i,rowHeight:o}=s;if(!i)return o;const r=this.calculatedRowHeights.get(e);return r!=null?r:(this.calculatedRowHeights.set(e,Math.ceil(o)),Vr(this.calculatedRowHeights),o)}calculateColumnWidth(t,e,n,s=this.getFirstColumn(n),i=this.calculateTreePaddingX(n)){const{theme:o}=n,{autoSizeColumns:r,minColumnWidth:l}=o;if(!r){const{columnWidth:m}=o;return m}const a=this.calculateColumnHeaderWidth(e,n),d=this.calculateColumnDataWidth(e,n),c=this.calculatedColumnWidths.get(e);let u=Math.ceil(Math.max(a,d));return u=Math.max(l,u),c!=null&&c>u?u=c:(this.calculatedColumnWidths.set(e,u),Vr(this.calculatedColumnWidths)),t===s&&(u+=i),u}calculateColumnHeaderWidth(t,e){const{model:n,theme:s}=e,{headerFont:i,headerHorizontalPadding:o}=s,r=n.textForColumnHeader(t,0);if(r!==void 0&&r!==""){const l=this.getWidthForFont(i,e);return r.length*l+o*2}return o*2}calculateColumnDataWidth(t,e){const{top:n,height:s,width:i,model:o,theme:r}=e,{floatingTopRowCount:l,floatingBottomRowCount:a,rowCount:d}=o,{font:c,cellHorizontalPadding:u,rowHeight:m,rowHeaderWidth:p,rowFooterWidth:g,scrollBarSize:f}=r;let b=0;const C=this.getWidthForFont(c,e),S=s/m,v=Math.ceil(n+S);return j.iterateAllItems(n,v,l,a,d,y=>{const E=this.getModelRow(y,e),I=o.textForCell(t,E);if(I){const R=u*2;b=Math.max(b,I.length*C+R)}}),b=Math.max(Math.min(b,(i-p-f-g)*wp.MAX_COLUMN_WIDTH),u*2),b}calculateTreePaddingX(t){const{top:e,height:n,model:s,theme:i}=t,{rowHeight:o,treeDepthIndent:r}=i;if(!gt(s)||!s.hasExpandableRows)return 0;let l=0;const a=n/o,d=Math.ceil(e+a);for(let c=e;c<=d;c+=1){const u=this.getModelRow(c,t),m=s.depthForRow(u);l=Math.max(l,r*(m+1))}return l}getWidthForFont(t,e){if(this.fontWidths.has(t))return $(this.fontWidths,t);const{context:n}=e;n.font=t;const s=n.measureText("8"),{width:i}=s;return this.fontWidths.set(t,i),this.fontWidths.set(n.font,i),i}setColumnWidth(t,e){const n=new Map(this.userColumnWidths);n.set(t,Math.ceil(e)),Vr(n),this.userColumnWidths=n}resetColumnWidth(t){const e=new Map(this.userColumnWidths);e.delete(t),this.userColumnWidths=e}setRowHeight(t,e){const n=new Map(this.userRowHeights);n.set(t,Math.ceil(e)),Vr(n),this.userRowHeights=n}resetRowHeight(t){const e=new Map(this.userRowHeights);e.delete(t),this.userRowHeights=e,this.calculatedRowHeights.delete(t)}};let hr=wp;hr.CACHE_SIZE=1e4;hr.MAX_COLUMN_WIDTH=.8;const wv=Object.freeze({allowColumnResize:!0,allowRowResize:!0,autoSelectRow:!1,autoSelectColumn:!1,autoSizeColumns:!0,autoSizeRows:!0,backgroundColor:"#000000",black:"#000000",white:"#ffffff",cellHorizontalPadding:5,headerHorizontalPadding:5,font:"12px Arial, sans serif",gridColumnColor:"#8f8f8f66",gridRowColor:"#8f8f8f66",headerBackgroundColor:"#222222",headerSeparatorColor:"#000000",headerSeparatorHoverColor:"#888888",headerSeparatorHandleSize:5,headerHiddenSeparatorSize:5,headerHiddenSeparatorHoverColor:"#8888FF",headerColor:"#d5d5d5",headerFont:"10px Arial, sans serif",columnHoverBackgroundColor:"#444444",selectedColumnHoverBackgroundColor:"#494949",rowBackgroundColors:"#333333 #222222",rowHoverBackgroundColor:"#444444",selectedRowHoverBackgroundColor:"#494949",minScrollHandleSize:50,scrollBarBackgroundColor:"#111111",scrollBarHoverBackgroundColor:"#333333",scrollBarCasingColor:"#000000",scrollBarCornerColor:"#000000",scrollBarColor:"#555555",scrollBarHoverColor:"#888888",scrollBarActiveColor:"#AAAAAA",scrollBarSize:12,scrollBarHoverSize:16,scrollBarCasingWidth:1,scrollSnapToColumn:!1,scrollSnapToRow:!1,selectionColor:"#4286f433",selectionOutlineColor:"#4286f4",selectionOutlineCasingColor:"#222222",scrollBarSelectionTick:!0,scrollBarSelectionTickColor:"#4286f433",scrollBarActiveSelectionTickColor:"#4286f480",shadowBlur:8,shadowColor:"#000000",textColor:"#ffffff",maxDepth:6,treeDepthIndent:10,treeHorizontalPadding:5,treeLineColor:"#888888",treeMarkerColor:"#cccccc",treeMarkerHoverColor:"#ffffff",rowHeight:20,columnWidth:100,minRowHeight:20,minColumnWidth:55,columnHeaderHeight:20,rowHeaderWidth:30,rowFooterWidth:0,headerResizeSnapThreshold:10,headerResizeHiddenSnapThreshold:8,allowColumnReorder:!0,allowRowReorder:!0,reorderOffset:2,floatingGridColumnColor:"#8f8f8f66",floatingGridRowColor:"#8f8f8f66",floatingRowBackgroundColors:"#393939 #292929",floatingDividerOuterColor:"#000000",floatingDividerInnerColor:"#cccccc"}),ln=(t,e)=>{let n=!1;const s=fe(t,{...e,dispose:()=>{n||(n=!0,s.clear(),n=!1)}});return s};function vv(t,e,n=6){const s=Va.hex.lab.raw(t);return s[0]=Math.max(s[0]-s[0]/n*e,0),`#${Va.lab.hex(s)}`}function Tv(t,e){const[n,s,i]=Va.hex.rgb(t);return`rgba(${n}, ${s}, ${i}, ${e})`}const _h={colorWithAlpha:Tv,darkenForDepth:vv};class Dt{constructor(e=5e3){this.cursor=null,this.order=e}onDown(e,n,s){return!1}onMove(e,n,s){return!1}onDrag(e,n,s){return!1}onLeave(e,n,s){return!1}onClick(e,n,s){return!1}onContextMenu(e,n,s){return!1}onDoubleClick(e,n,s){return!1}onUp(e,n,s){return!1}onWheel(e,n,s){return!1}}class vp extends Dt{constructor(){super(...arguments),this.resizingItems=[],this.hiddenItems=[],this.targetSizes=new Map,this.dragOffset=0}onDown(e,n){const{metrics:s}=n,{model:i}=n.props,o=n.getTheme();if(!s)throw new Error("metrics not set");const r=this.getSeparator(e,s,i,o);if(r!=null){const l=r.index;return this.dragOffset=0,this.draggingIndex=l,this.resizingItems=[l],this.hiddenItems=this.getHiddenItems(l,s).reverse(),this.targetSizes.clear(),this.addTargetSize(s,l),this.updateCursor(s,l),this.updateSeparator(n,r),!0}return!1}onMove(e,n){const{metrics:s}=n,{model:i}=n.props,o=n.getTheme();if(!s)throw new Error("metrics not set");const r=this.getSeparator(e,s,i,o);return r!=null?(this.updateCursor(s,r.index),!0):!1}onDrag(e,n){var f;if(this.draggingIndex==null)return!1;const s=e[this.pointProperty],{metricCalculator:i,metrics:o}=n;if(!o)throw new Error("metrics not set");const r=n.getTheme(),l=o[this.visibleOffsetProperty],a=o[this.marginProperty],d=o[this.calculatedSizesProperty],c=o[this.modelIndexesProperty],u=o[this.firstIndexProperty],m=o[this.treePaddingProperty],p=new Map;let g=this.resizingItems[this.resizingItems.length-1];for(;g!=null;){const b=$(l,g),C=s-a-b-this.dragOffset,S=$(c,g),v=this.targetSizes.get(S),y=this.resizingItems.length>1,E=this.hiddenItems.indexOf(g);let I=$(d,S);g===u&&(I+=m);let R=C;Math.abs(C-I)<=r.headerResizeSnapThreshold?R=null:v!==void 0&&C>v&&(y&&E!==0||E>0)?R=v:C<=r.headerResizeHiddenSnapThreshold&&(R=0),R!==I?p.set(S,R):p.set(S,null),C<-r.headerResizeSnapThreshold&&R===0?E>=0&&y?(this.resizingItems.pop(),this.removeTargetSize(o,g),g=this.resizingItems[this.resizingItems.length-1],this.dragOffset-=(f=this.targetSizes.get($(c,g)))!=null?f:0):(g=this.getNextShownItem(g,o),g!==null&&(this.resizingItems.push(g),this.addTargetSize(o,g))):v!==void 0&&C>v+r.headerResizeSnapThreshold&&R===v?E>0?(this.dragOffset+=R,g=this.hiddenItems[E-1],this.resizingItems.push(g),this.addTargetSize(o,g)):y?(this.resizingItems.pop(),this.removeTargetSize(o,g),g=this.resizingItems[this.resizingItems.length-1]):g=null:g=null}return p.forEach((b,C)=>{b!==null?this.setSize(i,C,b):this.resetSize(i,C)}),this.updateCursor(o,this.draggingIndex),!0}onUp(e,n){return this.draggingIndex!=null&&(this.draggingIndex=void 0,this.resizingItems=[],this.hiddenItems=[],this.targetSizes.clear(),this.updateSeparator(n,null)),!1}onDoubleClick(e,n){const{metrics:s,metricCalculator:i}=n,{model:o}=n.props,r=n.getTheme();if(!s)throw new Error("metrics not set");const l=this.getSeparator(e,s,o,r);if(l!=null){const a=s[this.modelIndexesProperty],d=$(a,l.index);return this.resetSize(i,d),n.forceUpdate(),!0}return!1}updateCursor(e,n){const s=e[this.visibleSizesProperty];$(s,n)===0?this.cursor=this.hiddenCursor:this.cursor=this.defaultCursor}addTargetSize(e,n){const s=e[this.modelIndexesProperty],i=e[this.userSizesProperty],o=e[this.calculatedSizesProperty],r=n===0?e[this.treePaddingProperty]:0,l=$(s,n);let a=i.get(l);(a==null||a===0)&&(a=$(o,l)+r),this.targetSizes.set(l,a)}removeTargetSize(e,n){const s=e[this.modelIndexesProperty],i=$(s,n);this.targetSizes.delete(i)}}class Ql extends vp{constructor(){super(...arguments),this.hiddenCursor="e-resize",this.defaultCursor="col-resize",this.pointProperty="x",this.userSizesProperty="userColumnWidths",this.visibleOffsetProperty="visibleColumnXs",this.visibleSizesProperty="visibleColumnWidths",this.marginProperty="rowHeaderWidth",this.calculatedSizesProperty="calculatedColumnWidths",this.modelIndexesProperty="modelColumns",this.firstIndexProperty="firstColumn",this.treePaddingProperty="treePaddingX",this.getHiddenItems=j.getHiddenColumns,this.getNextShownItem=j.getNextShownColumn,this.getSeparator=Ql.getColumnSeparator}static getColumnSeparator(e,n,s,i){if(!i.allowColumnResize)return null;const{x:o,y:r,columnHeaderDepth:l}=e,{modelColumns:a}=n,d=j.getColumnSeparatorIndex(o,r,n,i);return d==null||l==null||l>0?null:a.get(d)!=null?{index:d,depth:0}:null}setSize(e,n,s){e.setColumnWidth(n,s)}resetSize(e,n){e.resetColumnWidth(n)}updateSeparator(e,n){e.setState({draggingColumnSeparator:n,isDragging:n!==null})}}const hs=class{constructor(){this.getCachedTruncatedString=ln((t,e,n,s,i)=>hs.truncateToWidth(t,e,n,s,i),{max:1e4}),this.getCachedBackgroundColors=ln((t,e)=>t.split(" ").map(n=>{const s=[];for(let i=0;i<e;i+=1)s.push(_h.darkenForDepth(n,i,e));return s}),{max:1e3}),this.getCachedColorWithAlpha=ln((t,e)=>_h.colorWithAlpha(t,e),{max:1e3}),this.getCachedColorIsDark=ln(t=>Ll.isDark(t),{max:1e3})}static truncate(t,e){return e<t.length?t.substr(0,e)+"\u2026":t}static binaryTruncateToWidth(t,e,n,s=0,i=e.length,o){if(i>=e.length&&t.measureText(e).width<=n)return e;if(o!==void 0){const d=t.measureText(o).width;return o.repeat(Math.max(1,Math.floor(n/d)))}let r=s,l=Math.min(e.length-1,i),a=e;for(;l>=r;){const d=Math.ceil((l+r)/2),c=hs.truncate(e,d);if(t.measureText(c).width<=n){if(a=c,r===d)break;r=d}else if(d===0){a=c;break}else l=d-1}return a}static truncateToWidth(t,e,n,s=hs.DEFAULT_FONT_WIDTH,i){if(n<=0||e.length<=0)return"";const o=Math.min(Math.max(0,Math.floor(n/s/2)-5),e.length),r=Math.min(Math.ceil(n/s*2),e.length);return hs.binaryTruncateToWidth(t,e,n,o,r,i)}drawCanvas(t){const{context:e}=t;e.save(),this.configureContext(e,t),this.drawBackground(e,t),this.drawGrid(e,t),this.drawHeaders(e,t),this.drawFooters(e,t),this.drawDraggingColumn(e,t),this.drawDraggingRow(e,t),this.drawScrollBars(e,t),e.restore()}configureContext(t,e){const{theme:n}=e;t.font=n.font,t.textBaseline="middle",t.lineCap="butt"}drawBackground(t,e){const{theme:n,metrics:s}=e,{width:i,height:o}=s;t.fillStyle=n.backgroundColor,t.fillRect(0,0,i,o)}drawGrid(t,e){const{metrics:n,draggingRow:s,draggingColumn:i}=e,{gridX:o,gridY:r}=n;t.translate(o,r),this.drawGridBackground(t,e,s==null&&i==null),this.drawCellContents(t,e),this.drawFloatingRows(t,e),this.drawFloatingColumns(t,e),t.translate(-o,-r)}drawFloatingRows(t,e){const{draggingRow:n,draggingColumn:s,metrics:i,theme:o}=e,{floatingTopRowCount:r,floatingBottomRowCount:l,floatingRows:a,rowCount:d,visibleColumns:c,allRowYs:u,allRowHeights:m}=i;if(a.length!==0){o.floatingRowBackgroundColors&&this.drawRowStripesForRows(t,e,a,o.floatingRowBackgroundColors),n==null&&s==null&&this.drawFloatingMouseRowHover(t,e),this.drawGridLinesForItems(t,e,c,a,o.floatingGridColumnColor,o.floatingGridRowColor),this.drawCellBackgroundsForItems(t,e,c,a),this.drawFloatingBorders(t,e),r>0&&this.drawSelectedRanges(t,e,{top:0,bottom:r-1,maxY:$(u,r-1)+$(m,r-1)-.5}),l>0&&this.drawSelectedRanges(t,e,{top:d-l-1,bottom:d-1,minY:$(u,d-l)+.5,maxY:$(u,d-1)+$(m,d-1)-.5});for(let p=0;p<c.length;p+=1){const g=c[p];for(let f=0;f<a.length;f+=1){const b=a[f];this.drawCellContent(t,e,g,b)}}}}drawFloatingColumns(t,e){const{draggingRow:n,draggingColumn:s,metrics:i,theme:o}=e,{floatingLeftColumnCount:r,floatingRightColumnCount:l,floatingLeftWidth:a,floatingRightWidth:d,floatingColumns:c,gridX:u,maxX:m,columnCount:p,visibleRows:g,allColumnXs:f,allColumnWidths:b,width:C,height:S}=i;if(c.length!==0){o.floatingRowBackgroundColors&&(this.drawRowStripesForRows(t,e,g,o.floatingRowBackgroundColors,0,a),this.drawRowStripesForRows(t,e,g,o.floatingRowBackgroundColors,C-u-d,m)),n==null&&s==null&&this.drawFloatingMouseRowHover(t,e),t.save(),t.beginPath(),t.rect(0,0,a,S),t.clip(),this.drawGridLinesForItems(t,e,c,g,o.floatingGridColumnColor,o.floatingGridRowColor),t.restore(),this.drawCellBackgroundsForItems(t,e,c,g),this.drawFloatingBorders(t,e),r>0&&this.drawSelectedRanges(t,e,{left:0,maxX:$(f,r-1)+$(b,r-1)}),l>0&&this.drawSelectedRanges(t,e,{left:p-l,right:p-1,minX:$(f,p-l)+.5,maxX:$(f,p-1)+$(b,p-1)});for(let v=0;v<c.length;v+=1){const y=c[v];for(let E=0;E<g.length;E+=1){const I=g[E];this.drawCellContent(t,e,y,I)}}}}drawFloatingBorders(t,e){const{metrics:n,theme:s}=e,{floatingTopRowCount:i,floatingBottomRowCount:o,floatingLeftColumnCount:r,floatingRightColumnCount:l,rowCount:a,columnCount:d,allRowYs:c,allColumnXs:u,allRowHeights:m,allColumnWidths:p,maxX:g,maxY:f}=n,{floatingDividerOuterColor:b,floatingDividerInnerColor:C}=s;if(t.lineWidth=3,t.beginPath(),t.strokeStyle=b,i>0){const S=$(c,i-1)+$(m,i-1)+.5;t.moveTo(0,S),t.lineTo(g,S)}if(o>0){const S=$(c,a-o)-.5;t.moveTo(0,S),t.lineTo(g,S)}if(r>0){const S=$(u,r-1)+$(p,r-1)+.5;t.moveTo(S,0),t.lineTo(S,f)}if(l>0){const S=$(u,d-l)-.5;t.moveTo(S,0),t.lineTo(S,f)}if(t.stroke(),t.beginPath(),t.lineWidth=1,t.strokeStyle=C,i>0){const S=$(c,i-1)+$(m,i-1)+.5;t.moveTo(0,S),t.lineTo(g,S)}if(o>0){const S=$(c,a-o)-.5;t.moveTo(0,S),t.lineTo(g,S)}if(r>0){const S=$(u,r-1)+$(p,r-1)+.5;t.moveTo(S,0),t.lineTo(S,f)}if(l>0){const S=$(u,d-l)-.5;t.moveTo(S,0),t.lineTo(S,f)}t.stroke()}drawGridBackground(t,e,n=!1){this.drawRowStripes(t,e),n&&(this.drawMouseColumnHover(t,e),this.drawMouseRowHover(t,e)),this.drawGridLines(t,e),this.drawCellBackgrounds(t,e);const{metrics:s}=e,{bottom:i,right:o,floatingBottomRowCount:r,floatingLeftColumnCount:l,floatingRightColumnCount:a,floatingTopRowCount:d,columnCount:c,rowCount:u,allRowHeights:m,allRowYs:p,allColumnXs:g,allColumnWidths:f,width:b,height:C}=s;this.drawSelectedRanges(t,e,{bottom:Math.min(i,u-r-1),right:Math.min(o,c-a-1),minX:l>0&&g.has(l+1)?$(g,l+1):-10,minY:d>0&&p.has(d+1)?$(p,d+1):-10,maxX:a>0&&g.has(c-a-1)?$(g,c-a-1)+$(f,c-a-1)-.5:b+10,maxY:r>0&&p.has(u-r-1)?$(p,u-r-1)+$(m,u-r-1)-.5:C+10})}drawRowStripes(t,e){const{metrics:n,theme:s}=e,{visibleRows:i}=n,{rowBackgroundColors:o}=s;!o||this.drawRowStripesForRows(t,e,i,o)}drawRowStripesForRows(t,e,n,s,i=0,o=e.metrics.maxX){const{theme:r,metrics:l,model:a}=e,{maxDepth:d,shadowBlur:c,shadowColor:u}=r,m=this.getCachedBackgroundColors(s,d),{allRowYs:p,allRowHeights:g}=l,f=new Map,b=[],C=[],S=(v,y)=>{const E=gt(a)?a.depthForRow(v):0,I=m[v%m.length],R=I[Math.min(E,I.length-1)];if(f.has(R)||f.set(R,[]),f.get(R).push(v),y!=null){const N=gt(a)?a.depthForRow(y):0;N<E?b.push(v):N>E&&C.push(y)}};for(let v=0;v<n.length;v+=1){const y=n[v],E=v>0?n[v-1]:void 0;S(y,E)}if(f.forEach((v,y)=>{t.fillStyle=y,t.beginPath();for(let E=0;E<v.length;E+=1){const I=v[E],R=$(p,I),N=$(g,I);t.rect(i,R,o,N)}t.fill()}),b.length>0){t.save();const v=this.getCachedColorWithAlpha(u,.15),y=this.getCachedColorWithAlpha(u,0),E=t.createLinearGradient(0,0,0,c);E.addColorStop(0,v),E.addColorStop(1,y),t.fillStyle=E;for(let I=0;I<b.length;I+=1){const R=b[I],N=$(p,R);t.translate(0,N),t.fillRect(i,0,o,c),t.translate(0,-N)}t.restore()}if(C.length>0){t.save();const v=this.getCachedColorWithAlpha(u,0),y=this.getCachedColorWithAlpha(u,.15),E=t.createLinearGradient(0,0,0,c);E.addColorStop(0,v),E.addColorStop(1,y),t.fillStyle=E;for(let I=0;I<C.length;I+=1){const R=C[I],N=$(p,R),F=$(g,R),B=N+F-c;t.translate(0,B),t.fillRect(i,0,o,c),t.translate(0,-B)}t.restore()}}drawMouseColumnHover(t,e){const{mouseX:n,mouseY:s,theme:i,metrics:o}=e;if(n==null||s==null)return;const r=j.getColumnAtX(n,o);if(r==null||i.columnHoverBackgroundColor==null)return;const{allColumnWidths:l,allColumnXs:a,maxY:d}=o;if(s>d)return;const c=$(a,r),u=$(l,r);t.fillStyle=i.columnHoverBackgroundColor,t.fillRect(c,0,u,d)}drawMouseRowHover(t,e){const{mouseX:n,mouseY:s,theme:i,metrics:o}=e;if(n==null||s==null)return;const{maxX:r}=o;if(n>r||i.rowHoverBackgroundColor==null)return;const l=j.getRowAtY(s,o);l!=null&&this.drawMouseRowHoverForRow(t,e,l)}drawFloatingMouseRowHover(t,e){const{mouseX:n,mouseY:s,theme:i,metrics:o}=e,{maxX:r,floatingTopRowCount:l,floatingBottomRowCount:a,rowCount:d,rowFooterWidth:c}=o;if(n==null||s==null||n>r+c||i.rowHoverBackgroundColor==null)return;const u=j.getRowAtY(s,o);u!=null&&(u<l||d-a<=u)&&this.drawMouseRowHoverForRow(t,e,u)}drawMouseRowHoverForRow(t,e,n){const{metrics:s,selectedRanges:i,theme:o}=e,{allRowHeights:r,allRowYs:l,maxX:a}=s,d=$(l,n),c=$(r,n);o.rowHoverBackgroundColor!=null&&(t.fillStyle=o.rowHoverBackgroundColor);for(let u=0;u<i.length;u+=1){const{startRow:m,endRow:p}=i[u];if(m!=null&&p!=null&&m<=n&&p>=n){o.selectedRowHoverBackgroundColor!=null&&(t.fillStyle=o.selectedRowHoverBackgroundColor);break}}t.fillRect(0,d,a,c)}drawGridLines(t,e){const{metrics:n,theme:s}=e,{visibleColumns:i,visibleRows:o}=n;this.drawGridLinesForItems(t,e,i,o,s.gridColumnColor,s.gridRowColor)}drawGridLinesForItems(t,e,n,s,i,o){i==null&&o==null||(t.lineWidth=1,t.beginPath(),i!=null&&(t.strokeStyle=i,this.drawGridLinesForColumns(t,e,n)),o!=null&&(t.strokeStyle=o,this.drawGridLinesForRows(t,e,s)),t.stroke())}drawGridLinesForColumns(t,e,n){const{metrics:s}=e,{allColumnXs:i,maxY:o}=s;for(let r=0;r<n.length;r+=1){const l=n[r],a=$(i,l)+.5;t.moveTo(a,0),t.lineTo(a,o)}}drawGridLinesForRows(t,e,n){const{metrics:s}=e,{allRowYs:i,maxX:o}=s,r=o;for(let l=0;l<n.length;l+=1){const a=n[l],d=$(i,a)+.5;t.moveTo(.5,d),t.lineTo(r-.5,d)}}drawCellBackgrounds(t,e){const{metrics:n}=e,{visibleColumns:s,visibleRows:i}=n;this.drawCellBackgroundsForItems(t,e,s,i)}drawCellBackgroundsForItems(t,e,n,s){t.save();for(let i=0;i<n.length;i+=1){const o=n[i];for(let r=0;r<s.length;r+=1){const l=s[r],a=r+1<s.length?s[r+1]:void 0;this.drawCellBackground(t,e,o,l,a)}}t.restore()}drawCellBackground(t,e,n,s,i){const{metrics:o,model:r,theme:l}=e,{firstColumn:a,modelColumns:d,modelRows:c,allColumnXs:u,allColumnWidths:m,allRowYs:p,allRowHeights:g}=o,f=$(c,s),b=$(d,n),C=r.backgroundColorForCell(b,f,l),S=n===a,v=gt(r)&&r.hasExpandableRows;if(C!=null){const y=$(u,n)+1,E=$(p,s)+1,I=$(m,n)-1,R=$(g,s)-1;t.fillStyle=C,t.fillRect(y,E,I,R)}S&&v&&this.drawCellRowTreeDepthLines(t,e,s,i)}drawCellContents(t,e){const{metrics:n}=e,{visibleColumns:s}=n;for(let i=0;i<s.length;i+=1){const o=s[i];this.drawColumnCellContents(t,e,o)}}drawColumnCellContents(t,e,n){const{metrics:s}=e,{allColumnXs:i,allColumnWidths:o,visibleRows:r,height:l}=s,a=$(i,n),d=$(o,n);t.save(),t.beginPath(),t.rect(a,0,d,l),t.clip();for(let c=0;c<r.length;c+=1){const u=r[c];this.drawCellContent(t,e,n,u)}t.restore()}getTextRenderMetrics(t,e,n,s){const{textAlign:i}=t,{metrics:o,model:r,theme:l}=e,{firstColumn:a,allColumnXs:d,allColumnWidths:c,allRowYs:u,allRowHeights:m}=o,{cellHorizontalPadding:p,treeDepthIndent:g,treeHorizontalPadding:f}=l,b=$(d,n),C=$(u,s),S=$(c,n),v=$(m,s),y=n===a;let E=0;gt(r)&&r.hasExpandableRows&&y&&(E=g*(r.depthForRow(s)+1)+f);const I=S-E;let R=b+p;const N=C+v*.5;return i==="right"?R=b+I-p:i==="center"&&(R=b+I*.5),R+=E,{width:I-p*2,x:R,y:N}}drawCellContent(t,e,n,s,i){var y;const{metrics:o,model:r,theme:l}=e,{firstColumn:a,fontWidths:d,modelColumns:c,modelRows:u,allRowHeights:m}=o,{textColor:p}=l,g=$(m,s),f=$(u,s),b=$(c,n),C=i!=null?i:r.textForCell(b,f),S=r.truncationCharForCell(b,f),v=n===a;if(C&&g>0){const E=r.textAlignForCell(b,f)||"left";t.textAlign=E;const I=r.colorForCell(b,f,l)||p;t.fillStyle=I;const{width:R,x:N,y:F}=this.getTextRenderMetrics(t,e,n,s),B=(y=d.get(t.font))!=null?y:hs.DEFAULT_FONT_WIDTH,U=this.getCachedTruncatedString(t,C,R,B,S);U&&t.fillText(U,N,F)}v&>(r)&&r.hasExpandableRows&&this.drawCellRowTreeMarker(t,e,s)}drawCellRowTreeMarker(t,e,n){const{metrics:s,model:i,mouseX:o,mouseY:r,theme:l}=e,{firstColumn:a,gridX:d,gridY:c,allColumnXs:u,allColumnWidths:m,allRowYs:p,allRowHeights:g,visibleRowTreeBoxes:f}=s,{treeMarkerColor:b,treeMarkerHoverColor:C}=l,S=$(u,a),v=$(m,a),y=$(p,n),E=$(g,n);if(!gt(i)||!i.isRowExpandable(n))return;const I=$(f,n),R=o!=null&&r!=null&&o>=d+S&&o<=d+S+v&&r>=c+y&&r<=c+y+E?C:b;this.drawTreeMarker(t,e,S,y,I,R,i.isRowExpanded(n))}drawTreeMarker(t,e,n,s,i,o,r){const{x1:l,y1:a,x2:d,y2:c}=i,u=r?"\u229F":"\u229E",m=n+(l+d)*.5+.5,p=s+(a+c)*.5+.5;t.fillStyle=o,t.textAlign="center",t.fillText(u,m,p)}drawCellRowTreeDepthLines(t,e,n,s){const{metrics:i,model:o,theme:r}=e;if(!gt(o))return;const l=o.depthForRow(n);if(l===0)return;const{firstColumn:a,allColumnXs:d,allRowYs:c,allRowHeights:u}=i,{treeDepthIndent:m,treeHorizontalPadding:p,treeLineColor:g}=r,f=$(d,a),b=$(c,n),C=$(u,n),S=s!==void 0?o.depthForRow(s):0,v=l>S?l-S:0;if(t.strokeStyle=g,t.lineWidth=1,l-v>0){t.beginPath();for(let y=0;y<l-v;y+=1){const E=f+y*m+m*.5+p+.5;t.moveTo(E,b),t.lineTo(E,b+C)}t.stroke()}if(v>0){t.beginPath();for(let y=l-v;y<l;y+=1){const E=f+y*m+m*.5+p+.5;t.moveTo(E,b),t.lineTo(E,b+Math.ceil(C/2)),t.moveTo(E-.5,b+Math.ceil(C/2)+.5),t.lineTo(E+m-.5,b+Math.ceil(C/2)+.5)}t.stroke()}}drawHeaders(t,e){const{theme:n}=e;t.font=n.headerFont,this.drawColumnHeaders(t,e),this.drawRowHeaders(t,e)}drawFooters(t,e){const{theme:n}=e;t.font=n.headerFont,this.drawRowFooters(t,e)}drawColumnHeaders(t,e){const{mouseX:n,mouseY:s,theme:i,metrics:o,draggingColumnSeparator:r,isDragging:l,model:a}=e,{columnHeaderHeight:d,floatingColumns:c,gridX:u,width:m,visibleColumns:p,allColumnWidths:g,allColumnXs:f,floatingLeftColumnCount:b,floatingLeftWidth:C,floatingRightWidth:S,modelColumns:v,columnHeaderMaxDepth:y}=o;if(d<=0)return;const{headerHiddenSeparatorSize:E,headerHiddenSeparatorHoverColor:I,headerSeparatorColor:R,headerSeparatorHoverColor:N}=i,F=d*.5,B=d*(y-1)+d*.5-F*.5,U=b>0;if(t.save(),this.drawColumnHeadersForRange(t,e,[p[0],p[p.length-1]],{minX:u+C,maxX:m-S}),U&&this.drawColumnHeadersForRange(t,e,[c[0],c[c.length-1]],{minX:u,maxX:u+C}),R){t.strokeStyle=R;const x=[...g.entries()].filter(([H,A])=>A===0).map(([H])=>H);t.beginPath(),t.fillStyle=R;for(let H=0;H<x.length;H+=1){const A=x[H],O=$(f,A),_=$(g,A),k=u+O+_+.5-E*.5;t.rect(k,B,E,F)}t.fill()}if(N){let{index:x,depth:H}=r!=null?r:{};if(x==null&&n!=null&&s!=null){const O=Ql.getColumnSeparator(j.getGridPointFromXY(n,s,o),o,a,i);x=O==null?void 0:O.index,H=O==null?void 0:O.depth}let A;if(x==null)A=!1;else{const O=v.get(x),_=v.get(x+1);O==null||_==null?A=!1:A=a.textForColumnHeader(O,H)!==a.textForColumnHeader(_,H)}if(A&&x!=null&&H!=null&&(!l||r!=null)){t.strokeStyle=N;const O=$(f,x),_=$(g,x),k=u+O+_+.5,V=p.indexOf(x),G=V<p.length-1?p[V+1]:null,q=G!=null?g.get(G):null,Q=_===0,ce=q!=null&&q===0;Q?(t.strokeStyle=I,t.fillStyle=I,t.fillRect(k,B,E*.5,F)):ce&&(t.fillStyle=N,t.fillRect(k-E*.5,B,E*.5,F)),t.beginPath(),t.moveTo(k,(y-H-1)*d),t.lineTo(k,(y-H)*d-1),t.stroke()}}t.restore()}drawColumnHeadersForRange(t,e,n,s){const{model:i}=e,{columnHeaderMaxDepth:o}=i;if(o!==0)for(let r=0;r<=o;r+=1)this.drawColumnHeadersAtDepth(t,e,n,s,r)}drawColumnHeadersAtDepth(t,e,n,s,i){var R,N,F,B,U,x;const{metrics:o,model:r,theme:l}=e,{modelColumns:a,allColumnXs:d,gridX:c,calculatedColumnWidths:u,userColumnWidths:m,allColumnWidths:p,movedColumns:g}=o,{columnHeaderHeight:f,columnWidth:b}=l,{columnHeaderMaxDepth:C}=r,{minX:S,maxX:v}=s,y=v-S;if(C===0)return;const E=n[0],I=n[1];if(t.save(),t.translate(0,(C-i-1)*f),i===0){this.drawColumnHeader(t,e,"",S,v);for(let H=E;H<=I;H+=1)this.drawColumnHeaderAtIndex(t,e,H,s)}if(i>0){let H=E;for(;H<=I;){const{columnCount:A}=o,O=$(a,H),_=r.textForColumnHeader(O,i),k=r.colorForColumnHeader(O,i);let V=$(d,H)+c,G=V+$(p,H);if(_!=null){let q=H-1;for(;q>=0&&(G-V<y||V>S);){const le=(R=a.get(q))!=null?R:j.getModelIndex(q,g);if(le==null||r.textForColumnHeader(le,i)!==_)break;V-=(F=(N=m.get(le))!=null?N:u.get(le))!=null?F:b,q-=1}let Q=H+1;for(;Q<A&&(G-V<y||G<v);){const le=(B=a.get(Q))!=null?B:j.getModelIndex(Q,g);if(r.textForColumnHeader(le,i)!==_)break;G+=(x=(U=m.get(le))!=null?U:u.get(le))!=null?x:b,Q+=1}H=Q-1;const ce=G-V>=y;let ae=V;ce&&(G<v?ae=G-y:V<S&&(ae=S)),this.drawColumnHeader(t,e,_,ae,Math.min(G-V,y),{backgroundColor:k!=null?k:void 0},s)}H+=1}}t.restore()}drawColumnHeaderAtIndex(t,e,n,s){var g;const{metrics:i,model:o}=e,{modelColumns:r,allColumnWidths:l,allColumnXs:a,gridX:d}=i,c=$(l,n),u=$(a,n)+d,m=$(r,n),p=o.textForColumnHeader(m);p!=null&&this.drawColumnHeader(t,e,p,u,c,{backgroundColor:(g=o.colorForColumnHeader(m))!=null?g:void 0},s)}drawColumnHeader(t,e,n,s,i,o,r){var Q;if(i<=0)return;const{metrics:l,theme:a}=e,{headerHorizontalPadding:d,columnHeaderHeight:c,headerBackgroundColor:u,headerColor:m,headerSeparatorColor:p,black:g,white:f}=a,{fontWidths:b,width:C}=l,S=(Q=b.get(t.font))!=null?Q:hs.DEFAULT_FONT_WIDTH,y=(i-d*2)/S,{backgroundColor:E=u,separatorColor:I=p}=o!=null?o:{};let{textColor:R=m}=o!=null?o:{};try{const ce=this.getCachedColorIsDark(E),ae=this.getCachedColorIsDark(R);ce&&ae?R=f:!ce&&!ae&&(R=g)}catch{}let{minX:N=0,maxX:F=C}=r!=null?r:{};t.save(),t.rect(N,0,F-N,c),t.clip(),E!=null&&(t.fillStyle=E,t.fillRect(s,0,i,c)),I!=null&&(t.strokeStyle=I,t.beginPath(),s>0&&(t.moveTo(s+.5,0),t.lineTo(s+.5,c)),t.moveTo(s+i+.5,0),t.lineTo(s+i+.5,c),t.moveTo(s,c-.5),t.lineTo(s+i,c-.5),t.stroke()),t.beginPath(),t.rect(s,0,i,c),t.clip(),t.fillStyle=R;let B=n;y<=0?B="":B.length>y&&(B=`${B.substring(0,y-1)}\u2026`);const U=B.length*S;let x=s+i*.5;const H=c*.5;N+=d,F-=d;const A=s+d,O=Qe(A,N,F),_=s+i-d,V=Qe(_,N,F)-O,G=x-U*.5<N,q=x+U*.5>F;G?U<V?x=N+U*.5:x=_-U*.5:q&&(U<V?x=F-U*.5:x=A+U*.5),t.textAlign="center",t.fillText(B,x,H),t.restore()}drawRowHeaders(t,e){const{mouseX:n,mouseY:s,metrics:i,theme:o,draggingRowSeparator:r}=e,{gridY:l,rowHeaderWidth:a,height:d,visibleRows:c,allRowHeights:u,allRowYs:m}=i;if(a<=0)return;const{headerBackgroundColor:p,headerColor:g,headerHiddenSeparatorSize:f,headerHiddenSeparatorHoverColor:b,headerSeparatorColor:C,headerSeparatorHoverColor:S}=o,v=a*.5,y=a*.5-v*.5;if(t.save(),t.beginPath(),t.fillStyle=p,t.fillRect(0,0,a,d),C){t.strokeStyle=C,t.beginPath(),t.moveTo(0,l+.5),t.lineTo(a,l+.5);const E=[];let I=!1;for(let R=0;R<c.length;R+=1){const N=c[R],F=$(m,N),B=$(u,N);if(B>0){const U=l+F+B+.5;t.moveTo(0,U),t.lineTo(a,U),I=!1}else I||(I=!0,E.push(N))}t.moveTo(a-.5,0),t.lineTo(a-.5,d),t.stroke(),t.beginPath(),t.fillStyle=C;for(let R=0;R<E.length;R+=1){const N=E[R],F=$(m,N),B=$(u,N),U=l+F+B+.5-f*.5;t.rect(y,U,v,f)}t.fill()}if(S){let{index:E=null}=r!=null?r:{};if(E==null&&n!=null&&s!=null&&(E=j.getRowSeparatorIndex(n,s,i,o)),E!=null){t.strokeStyle=S;const I=$(m,E),R=$(u,E),N=l+I+R+.5,F=c.indexOf(E),B=F<c.length-1?c[F+1]:null,U=B!=null?u.get(B):null,x=R===0,H=U!=null&&U===0;x?(t.strokeStyle=b,t.fillStyle=b,t.fillRect(y,N,v,f*.5)):H&&(t.fillStyle=S,t.fillRect(y,N-f*.5,v,f*.5)),t.beginPath(),t.moveTo(.5,N),t.lineTo(a+.5,N),t.stroke()}}t.beginPath(),t.rect(0,l,a,d),t.clip(),t.fillStyle=g,t.textAlign="right";for(let E=0;E<c.length;E+=1){const I=c[E],R=$(u,I),N=$(m,I)+l;this.drawRowHeader(t,e,I,N,R)}t.restore()}drawRowHeader(t,e,n,s,i){if(i<=0)return;const{metrics:o,model:r,theme:l}=e,{modelRows:a,rowHeaderWidth:d}=o,c=$(a,n),u=d-l.cellHorizontalPadding,m=s+i*.5;t.fillText(r.textForRowHeader(c),u,m)}drawRowFooters(t,e){const{mouseX:n,mouseY:s,metrics:i,model:o,theme:r,draggingRowSeparator:l}=e,{gridY:a,gridX:d,maxX:c,modelRows:u,rowFooterWidth:m,height:p,verticalBarWidth:g,visibleRows:f,allRowHeights:b,allRowYs:C,width:S}=i;if(m<=0)return;const{cellHorizontalPadding:v,headerBackgroundColor:y,headerColor:E,headerHiddenSeparatorSize:I,headerHiddenSeparatorHoverColor:R,headerSeparatorColor:N,headerSeparatorHoverColor:F}=r,B=m*.5,U=m*.5-B*.5,x=Math.min(d+c,S-m-g);if(t.save(),t.beginPath(),t.fillStyle=y,t.fillRect(x,a,m,p),N){t.strokeStyle=N,t.beginPath(),t.moveTo(x,a+.5),t.lineTo(m,a+.5);const A=[];let O=!1;for(let _=0;_<f.length;_+=1){const k=f[_],V=$(C,k),G=$(b,k);if(G>0){const q=a+V+G+.5;t.moveTo(x+.5,q),t.lineTo(x+m-.5,q),O=!1}else O||(O=!0,A.push(k))}t.moveTo(x+.5,a),t.lineTo(x+.5,p),t.stroke(),t.beginPath(),t.fillStyle=N;for(let _=0;_<A.length;_+=1){const k=A[_],V=$(C,k),G=$(b,k),q=a+V+G+.5-I*.5;t.rect(x+U,q,B,I)}t.fill()}if(F){let{index:A=null}=l!=null?l:{};if(A==null&&n!=null&&s!=null&&(A=j.getRowSeparatorIndex(n,s,i,r)),A!=null){t.strokeStyle=F;const O=$(C,A),_=$(b,A),k=a+O+_+.5,V=f.indexOf(A),G=V<f.length-1?f[V+1]:null,q=G!=null?b.get(G):null,Q=_===0,ce=q!=null&&q===0;Q?(t.strokeStyle=R,t.fillStyle=R,t.fillRect(U,k,B,I*.5)):ce&&(t.fillStyle=F,t.fillRect(U,k-I*.5,B,I*.5)),t.beginPath(),t.moveTo(x+.5,k),t.lineTo(x+m+.5,k),t.stroke()}}t.beginPath(),t.rect(x,a,m,p),t.clip(),t.fillStyle=E,t.textAlign="left";const H=x+v;for(let A=0;A<f.length;A+=1){const O=f[A],_=$(b,O);if(_>0){const k=$(C,O)+a,V=$(u,O),G=k+_*.5;t.fillText(o.textForRowFooter(V),H,G)}}t.restore()}drawSelectedRanges(t,e,n={}){const{cursorColumn:s,cursorRow:i,draggingRow:o,draggingColumn:r,editingCell:l,metrics:a,model:d,selectedRanges:c,theme:u}=e,{allColumnWidths:m,allColumnXs:p,allRowHeights:g,allRowYs:f,width:b,height:C}=a,{left:S=a.left,top:v=a.top,right:y=a.right,bottom:E=a.bottom,minY:I=-10,maxY:R=C+10,minX:N=-10,maxX:F=b+10}=n;if(c.length===0)return;const B=et(d)&&d.isEditable&&l==null&&o==null&&r==null&&s!=null&&i!=null&&p.has(s)&&f.has(i);if(B){const U=$(p,s),x=$(f,i),H=$(m,s),A=$(g,i);t.save(),t.beginPath(),t.rect(0,0,b,C),t.rect(U,x,H,A),t.clip("evenodd")}t.beginPath();for(let U=0;U<c.length;U+=1){const x=c[U],H=x.startColumn!==null?x.startColumn:S,A=x.startRow!==null?x.startRow:v,O=x.endColumn!==null?x.endColumn:y,_=x.endRow!==null?x.endRow:E;if(_>=v&&E>=A&&O>=S&&y>=H){const k=H>=S&&p.has(H)?Math.round($(p,H))+.5:N,V=A>=v&&f.has(A)?Math.max(Math.round($(f,A))+.5,.5):I,G=O<=y&&p.has(O)?Math.round($(p,O)+$(m,O))-.5:F,q=_<=E&&f.has(_)?Math.round($(f,_)+$(g,_))-.5:R;t.rect(k,V,G-k,q-V)}t.fillStyle=u.selectionColor,t.fill(),t.save(),t.clip(),t.strokeStyle=u.selectionOutlineCasingColor,t.lineWidth=3,t.stroke(),t.restore(),t.strokeStyle=u.selectionOutlineColor,t.lineWidth=1,t.stroke()}B&&s!=null&&i!=null&&(t.restore(),this.drawActiveCell(t,e,s,i))}drawActiveCell(t,e,n,s,i=hs.ACTIVE_CELL_BORDER_WIDTH){const{metrics:o,theme:r}=e,{allColumnWidths:l,allColumnXs:a,allRowHeights:d,allRowYs:c}=o,u=$(a,n),m=$(c,s),p=$(l,n),g=$(d,s);let f=u-i*.5,b=m-i*.5,C=p+i,S=g+i;f<=0&&(C+=f-1,f=1),b<=0&&(S+=b-1,b=1);const{lineWidth:v}=t;t.beginPath(),t.lineWidth=i,t.strokeStyle=r.selectionOutlineColor,this.drawRoundedRect(t,f,b,C,S),t.stroke(),t.lineWidth=v}drawRoundedRect(t,e,n,s,i,o=hs.DEFAULT_EDGE_RADIUS){t.beginPath(),t.moveTo(e+o,n),t.lineTo(e+s-o,n),t.quadraticCurveTo(e+s,n,e+s,n+o),t.lineTo(e+s,n+i-o),t.quadraticCurveTo(e+s,n+i,e+s-o,n+i),t.lineTo(e+o,n+i),t.quadraticCurveTo(e,n+i,e,n+i-o),t.lineTo(e,n+o),t.quadraticCurveTo(e,n,e+o,n),t.closePath()}drawDraggingColumn(t,e){var q;const{draggingColumn:n,metrics:s,mouseX:i,theme:o,model:r}=e;if(n==null||i==null)return;const{range:l,depth:a}=n,{gridX:d,gridY:c,allColumnXs:u,allColumnWidths:m,height:p,width:g,columnHeaderMaxDepth:f,columnHeaderHeight:b,movedColumns:C,modelColumns:S,floatingLeftWidth:v}=s,y=(q=S.get(l[0]))!=null?q:j.getModelIndex(l[0],C),E=r.getColumnHeaderGroup(y,a);if(a>0&&!E)return;const[I,R]=l,N=$(u,I),B=$(u,R)+$(m,R)-N,U=n.left,{backgroundColor:x,font:H,headerFont:A,reorderOffset:O,shadowBlur:_,shadowColor:k}=o,V=(f-a-1)*b;t.save(),t.translate(d,0),t.save(),t.beginPath(),t.rect(v,0,g,p),t.clip(),t.fillStyle=x,t.fillRect(N,V,B,p),t.restore(),t.translate(0,O),t.save(),t.shadowColor=k,t.shadowBlur=_,t.fillStyle=x,t.fillRect(n.left,V+O,n.width,p),t.restore(),t.beginPath(),t.rect(n.left,V,n.width+1,p),t.clip(),t.translate(U-N,0),t.font=A;const G=[];for(let Q=n.range[0];Q<=n.range[1];Q+=1)G.push(Q);this.drawColumnHeaders(t,e),this.drawColumnHeadersForRange(t,e,[G[0],G[G.length-1]],{minX:N,maxX:g}),t.translate(0,c),t.font=H,this.drawGridBackground(t,e);for(let Q=I;Q<=R;Q+=1)this.drawColumnCellContents(t,e,Q);t.restore()}drawDraggingRow(t,e){const{draggingRow:n,draggingRowOffset:s,metrics:i,mouseY:o,theme:r}=e;if(n==null||o==null)return;const{gridX:l,gridY:a,allRowYs:d,allRowHeights:c,width:u}=i,m=$(d,n),p=$(c,n)+1,{backgroundColor:g,font:f,headerFont:b,reorderOffset:C,shadowBlur:S,shadowColor:v}=r;t.save(),t.translate(0,a),t.fillStyle=g,t.fillRect(0,m,u,p),t.translate(l+C,o-m-a-(s!=null?s:0)),t.save(),t.shadowColor=v,t.shadowBlur=S,t.fillStyle=g,t.fillRect(-l,m,u,p),t.restore(),t.beginPath(),t.rect(-l,m,u,p),t.clip(),t.font=f,this.drawGridBackground(t,e),this.drawCellContents(t,e),t.translate(-l,-a),t.font=b,this.drawRowHeaders(t,e),t.restore()}drawScrollBars(t,e){const{isDraggingHorizontalScrollBar:n,isDraggingVerticalScrollBar:s,isDragging:i,metrics:o,mouseX:r,mouseY:l,theme:a}=e;if(a.scrollBarSize<=0)return;const{width:d,height:c,handleHeight:u,handleWidth:m,scrollX:p,scrollY:g,hasHorizontalBar:f,hasVerticalBar:b,barWidth:C,barHeight:S,barLeft:v,barTop:y}=o,{scrollBarBackgroundColor:E,scrollBarHoverBackgroundColor:I,scrollBarCasingColor:R,scrollBarCornerColor:N,scrollBarColor:F,scrollBarHoverColor:B,scrollBarActiveColor:U,scrollBarSize:x,scrollBarHoverSize:H,scrollBarCasingWidth:A,scrollBarSelectionTick:O,scrollBarSelectionTickColor:_,scrollBarActiveSelectionTickColor:k,autoSelectRow:V,autoSelectColumn:G}=a,q=r!=null&&l!=null&&r<=d&&l<=c,Q=s||b&&!n&&!i&&r!=null&&l!=null&&r>=d-H&&l>=y&&q,ce=n||f&&!s&&!i&&!Q&&r!=null&&l!=null&&l>=c-H&&r>=v&&q,ae=ce?H:x,le=Q?H:x;if(t.translate(v,y),f&&b&&(t.fillStyle=R,t.fillRect(d-v-x,c-y-x,x,x),t.fillStyle=N,t.fillRect(d-v-x+A,c-y-x+A,x-A,x-A)),f){const Ee=p,ee=c-y-ae;if(t.fillStyle=R,t.fillRect(0,ee,C,ae-A),t.fillStyle=ce?I:E,t.fillRect(0,ee+A,C,ae-A),n?t.fillStyle=U:ce?t.fillStyle=B:t.fillStyle=F,t.fillRect(Ee,ee+A,m,ae-A),!V&&O&&_!=null&&k!=null){t.fillStyle=_;const{selectedRanges:pe,cursorColumn:ve}=e,{lastLeft:De,columnCount:qe}=o,st=[...pe].filter(Me=>Me.startColumn!=null&&Me.endColumn!=null).map(Me=>[Me.startColumn,Me.endColumn]).sort(j.compareRanges),On=j.mergeSortedRanges(st),Bt=Me=>Me<=De?Me/De*(C-m):C-m+(Me-De)/(qe-De)*m;for(let Me=0;Me<On.length;Me+=1){const ct=On[Me],lt=ct[0],Mt=ct[1];if(lt!=null&&Mt!=null&&(lt!==ve||Mt!==ve)){const $t=Bt(lt),Ln=Math.max(1,Math.round(Bt(Mt+1)-$t)),un=ae-A;t.fillRect($t,ee+A+Math.round(un/3),Ln,Math.round(un/3))}}if(ve!=null){const Me=Bt(ve),ct=2,lt=ae-A;t.fillStyle=k,t.fillRect(Me,ee+A,ct,lt)}}}if(b){const Ee=d-v-le,ee=g;if(t.fillStyle=R,t.fillRect(Ee,0,le-A,S),t.fillStyle=Q?I:E,t.fillRect(Ee+A,0,le-A,S),s?t.fillStyle=U:Q?t.fillStyle=B:t.fillStyle=F,t.fillRect(Ee+A,ee,le-A,u),!G&&O&&_!=null&&k!=null){const{selectedRanges:pe,cursorRow:ve}=e,{lastTop:De,rowCount:qe}=o,dt=Me=>Me<=De?Me/De*(S-u):S-u+(Me-De)/(qe-De)*u;t.fillStyle=_;const On=[...pe].filter(Me=>Me.startRow!=null&&Me.endRow!=null).map(Me=>[Me.startRow,Me.endRow]).sort(j.compareRanges),Bt=j.mergeSortedRanges(On);for(let Me=0;Me<Bt.length;Me+=1){const ct=Bt[Me],lt=ct[0],Mt=ct[1];if(lt!=null&&Mt!=null&&(lt!==ve||Mt!==ve)){const $t=dt(lt),Ln=le-A,un=Math.max(1,Math.round(dt(Mt+1)-$t));t.fillRect(Ee+A+Math.round(Ln/3),$t,Math.round(Ln/3),un)}}if(ve!=null){const Me=Math.round(dt(ve)),ct=le-A,lt=2;t.fillStyle=k,t.fillRect(Ee+A,Me,ct,lt)}}}t.translate(-v,-y)}};let to=hs;to.DEFAULT_FONT_WIDTH=10;to.DEFAULT_EDGE_RADIUS=2;to.ACTIVE_CELL_BORDER_WIDTH=2;const kh=100;class Ev extends Dt{constructor(){super(...arguments),this.hasExtendedFloating=!1}onDown(e,n,s){const{x:i,y:o,column:r,row:l}=e,{metrics:a}=n;if(!a)throw new Error("metrics not set");const{gridX:d,gridY:c,maxX:u,maxY:m}=a,p=i-d,g=o-c;if(p<0||g<0||r==null&&p>u||l==null&&g>m)return!1;const f=j.isModifierKeyDown(s),b=s.shiftKey;f||(b?n.trimSelectedRanges():n.clearSelectedRanges());const C=n.getTheme(),{autoSelectRow:S,autoSelectColumn:v}=C;return(r!==null||!v)&&(l!==null||!S)&&(n.focus(),n.moveCursorToPosition(r,l,b,!1,b&&f)),this.startPoint=e,this.hasExtendedFloating=!1,this.dragBounds=j.getScrollDragBounds(a,l,r),!0}onDrag(e,n){if(this.startPoint===void 0)return!1;this.stopTimer();const{row:s,column:i}=this.startPoint,{x:o,y:r}=e;let{row:l,column:a}=e;const{metrics:d}=n;if(!d)throw new Error("metrics not set");const{left:c,lastLeft:u,top:m,lastTop:p,columnWidth:g,rowHeight:f}=d,b=j.getScrollDragBounds(d,s,i);let C=0,S=0;if(c<u&&(o<b.x1?C=o-b.x1:o>b.x2&&(C=o-b.x2)),m<p&&(r<b.y1?S=r-b.y1:r>b.y2&&(S=r-b.y2)),C!==0||S!==0)this.startTimer(n,e,C>0?Math.ceil(C/g):Math.floor(C/g),S>0?Math.ceil(S/f):Math.floor(S/f));else if(l!=null&&a!=null){const{floatingTopRowCount:v,floatingBottomRowCount:y,floatingLeftColumnCount:E,floatingRightColumnCount:I,columnCount:R,rowCount:N,bottom:F,right:B,topVisible:U,bottomVisible:x,leftVisible:H,rightVisible:A}=d;this.hasExtendedFloating||(s!==null&&s<v&&l>=v?(l=v,this.hasExtendedFloating=!0):s!==null&&s>=N-y&&l<N-y&&(l=N-y-1,this.hasExtendedFloating=!0),i!==null&&i<E&&a>=E?(a=E,this.hasExtendedFloating=!0):i!==null&&i>=R-I&&a<R-I&&(a=R-I-1,this.hasExtendedFloating=!0)),s!==null&&!j.isFloatingRow(s,d)&&j.isFloatingRow(l,d)&&(s>l&&l<m?l=U-1:s<l&&l>F&&(l=x+1)),i!==null&&!j.isFloatingColumn(i,d)&&j.isFloatingColumn(a,d)&&(i>a&&a<c?a=H-1:i<a&&a>B&&(a=A+1)),n.moveCursorToPosition(a,l,!0,!0)}return!0}onUp(e,n){return this.startPoint!==void 0&&(this.startPoint=void 0,this.dragBounds=void 0,this.stopTimer(),n.commitSelection()),!1}moveSelection(e,n,s,i){const{row:o,column:r}=n,{metrics:l}=e;if(!l)throw new Error("metrics not set");const{selectionEndRow:a,selectionEndColumn:d}=e.state;if(a==null||d==null)throw new Error("selection not set");const{rowCount:c,columnCount:u}=l,m=s<0&&r!=null?r:0,p=s>0&&r!=null?r:u-1,g=i<0&&o!=null?o:0,f=i>0&&o!=null?o:c-1;e.moveCursorToPosition(Math.min(Math.max(m,d+s),p),Math.min(Math.max(g,a+i),f),!0),this.lastTriggerTime=Date.now()}startTimer(e,n,s,i){this.stopTimer();const o=this.lastTriggerTime!=null?kh-Math.min(kh,Date.now()-this.lastTriggerTime):0;this.timer=setTimeout(()=>{this.moveSelection(e,n,s,i),this.startTimer(e,n,s,i)},o)}stopTimer(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const Oh=5,yv=1e3/60,Br=10;function _s(t,e,n,s){var v,y,E,I,R,N,F;const{modelColumns:i,movedColumns:o,allColumnXs:r,columnCount:l,allColumnWidths:a,userColumnWidths:d,calculatedColumnWidths:c,floatingLeftWidth:u,maxX:m}=n;if(e==null||t==null||t>l||t<0)return null;const p=(v=i.get(t))!=null?v:j.getModelIndex(t,o),g=s.getColumnHeaderGroup(p,e),f=g!=null;let b,C,S;if(g!=null){const[B,U]=g.getVisibleRange(o);b=(y=r.get(B))!=null?y:u,C=((E=r.get(U))!=null?E:m)+((I=a.get(U))!=null?I:0),S=[B,U]}else{const B=r.get(t);if(B==null)return null;b=B,C=b+((F=(N=(R=a.get(t))!=null?R:d.get(p))!=null?N:c.get(p))!=null?F:0),S=[t,t]}return{visibleIndex:t,modelIndex:p,left:b,right:C,width:C-b,isColumnGroup:f,range:S,depth:e}}class Iv extends Dt{constructor(){super(...arguments),this.cursor=null,this.draggingColumn=null}setScrollInterval(e,n){this.scrollingInterval!=null&&n===this.scrollingDirection||(this.scrollingDirection=n,this.scrollingInterval=window.setInterval(()=>{var f,b;const{metrics:s}=e;if(!s)return;const{left:i,lastLeft:o,leftOffset:r,userColumnWidths:l,calculatedColumnWidths:a,movedColumns:d,allColumnWidths:c}=s;let u=i,m=r;if(n==="left")for(m-=Br;m<0;){u-=1;const C=j.getModelIndex(i-1,d),S=(f=l.get(C))!=null?f:a.get(C);S===void 0?m=0:m+=S,u<0&&(m=0,u=0)}else{m+=Br;let C=c.get(i);for(;C!==void 0&&m>C;){u+=1,m-=C;const S=j.getModelIndex(i+1,d);C=(b=l.get(S))!=null?b:a.get(S),u>o&&(m=0,u=o)}}const{mouseX:p,mouseY:g}=e.state;s==null||p==null||g==null||(this.moveDraggingColumn(p,e,n==="left"?-Br:Br),e.setState({left:u,leftOffset:m}),(n==="left"&&u===0&&r===0||n==="right"&&u===o)&&this.clearScrollInterval())},yv))}clearScrollInterval(){this.scrollingDirection=void 0,window.clearInterval(this.scrollingInterval),this.scrollingInterval=void 0}onLeave(){return this.clearScrollInterval(),!1}onDown(e,n){const{model:s}=n.props,{x:i,column:o,columnHeaderDepth:r}=e,{metrics:l}=n;if(!l)throw new Error("Metrics not set");const a=_s(o,r,l,s);if(o==null||a==null||r==null||r>0&&!a.isColumnGroup)return!1;const{rowHeaderWidth:d}=l;return this.initialGridPoint=e,this.draggingColumn=null,this.cursor=null,a.modelIndex!=null&&r!=null&&s.isColumnMovable(a.modelIndex,r)&&(this.draggingOffset=i-a.left-d,this.initialOffset=this.draggingOffset),!1}onDrag(e,n,s){if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0)return!1;const{x:i,y:o}=e,{columnHeaderDepth:r}=this.initialGridPoint,{model:l}=n.props;let{draggingColumn:a}=this;const{metrics:d}=n;if(!d)throw new Error("Metrics not set");if(!a&&Math.abs(this.initialGridPoint.x-i)<Oh&&Math.abs(this.initialGridPoint.y-o)<Oh)return!1;if(a==null){const c=_s(this.initialGridPoint.column,r,d,l);if(!c||r==null||!l.isColumnMovable(c.modelIndex)||r>0&&!c.isColumnGroup||c.range[0]==null)return!1;a={range:c.range,depth:r,left:c.left,width:c.width};const u=_s(a.range[0],0,d,l),m=_s(a.range[1],0,d,l);if(!u||!m)return!1;this.draggingColumn=a,n.setState({draggingColumn:a,isDragging:!0})}return this.cursor="move",this.moveDraggingColumn(e.x,n,s.movementX),!0}moveDraggingColumn(e,n,s){var R,N,F,B,U;if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0||this.draggingColumn==null||s===0)return;if(this.initialOffset!==this.draggingOffset){this.draggingOffset<this.initialOffset&&this.initialOffset<this.draggingOffset+s||this.draggingOffset>this.initialOffset&&this.initialOffset>this.draggingOffset+s?this.draggingOffset=this.initialOffset:this.draggingOffset+=s,this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},n.setState({draggingColumn:this.draggingColumn});return}const{depth:i}=this.draggingColumn,{model:o}=n.props,{movedColumns:r}=n.state,{metrics:l}=n;if(!l)throw new Error("Metrics not set");const{floatingLeftWidth:a,width:d,columnHeaderMaxDepth:c,allColumnXs:u}=l,m=s<0,p=_s(this.draggingColumn.range[0],i,l,o);if(!p)return;const g=e-this.draggingOffset,f=g+p.width;this.draggingColumn={...this.draggingColumn,left:g},n.setState({draggingColumn:this.draggingColumn});const b=_s(j.getColumnAtX(Qe(m?g:f,a,d),l,!0),i,l,o),C=o.getColumnHeaderParentGroup(p.modelIndex,p.depth);if(!b)return;if(C!==void 0){const x=C.getVisibleRange(r);if(b.visibleIndex<x[0]){const H=this.moveColumn(p,x[0],r);this.draggingOffset=e-((R=u.get(x[0]))!=null?R:0),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),n.setState({draggingColumn:this.draggingColumn,movedColumns:H});return}if(b.visibleIndex>x[1]){const H=this.moveColumn(p,x[1]-(p.range[1]-p.range[0]),r),{right:A=0}=(N=_s(x[1],0,l,o))!=null?N:{};this.draggingOffset=e-(A-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),n.setState({draggingColumn:this.draggingColumn,movedColumns:H});return}}if(!o.isColumnMovable(b.modelIndex)){let x=b.visibleIndex;if(m)for(x+=1;x<p.visibleIndex&&!o.isColumnMovable(j.getModelIndex(x,r));)x+=1;else for(x-=1;x>p.visibleIndex&&!o.isColumnMovable(j.getModelIndex(x,r));)x-=1;if(x!==p.visibleIndex){m||(x-=p.range[1]-p.range[0]);const A=this.moveColumn(p,x,r);n.setState({movedColumns:A,draggingColumn:this.draggingColumn})}const H=_s(x,0,l,o);m?this.draggingOffset=e-((F=H==null?void 0:H.left)!=null?F:0):this.draggingOffset=e-(((B=H==null?void 0:H.right)!=null?B:0)-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},n.setState({draggingColumn:this.draggingColumn});return}if(g<=a?this.setScrollInterval(n,"left"):f>d?this.setScrollInterval(n,"right"):this.clearScrollInterval(),b.visibleIndex===p.visibleIndex||m&&p.visibleIndex<b.visibleIndex||!m&&p.visibleIndex>b.visibleIndex)return;const S=b.left+b.width*.5,v=o.getColumnHeaderParentGroup(p.modelIndex,p.depth);let y,E=((U=v==null?void 0:v.depth)!=null?U:c)-1;for(;E>=0&&y===void 0;)y=o.getColumnHeaderGroup(b.modelIndex,E),E-=1;let I;m&&g<S&&(!y||b.visibleIndex===y.getVisibleRange(r)[0])&&(I=this.moveColumn(p,b.range[0],r)),!m&&f>S&&(!y||b.visibleIndex===y.getVisibleRange(r)[1])&&(I=this.moveColumn(p,b.range[1]-(p.range[1]-p.range[0]),r)),I&&(this.draggingColumn={...this.draggingColumn,left:g},n.setState({movedColumns:I,draggingColumn:this.draggingColumn}))}moveColumn(e,n,s){const i=e.isColumnGroup?j.moveRange(e.range,n,s):j.moveItem(e.visibleIndex,n,s),o=n-e.range[0],r=[e.range[0]+o,e.range[1]+o];return this.draggingColumn&&(this.draggingColumn={...this.draggingColumn,range:r}),i}onUp(e,n){return this.cursor=null,this.clearScrollInterval(),this.draggingOffset!=null?(this.draggingOffset=void 0,n.setState({draggingColumn:null,isDragging:!1}),!0):!1}}class Zd extends Dt{constructor(){super(...arguments),this.cursor="default"}static getLeftWithOffsetFromRawLeft(e,n){const s=e.getTheme(),{metrics:i,metricCalculator:o}=e;if(!i)throw new Error("metrics not set");if(s.scrollSnapToColumn)return{left:Math.round(n),leftOffset:0};const r=Math.floor(n),l=n-r;let a=i.allColumnWidths.get(r);if(a==null){const c=e.getMetricState();a=o.getVisibleColumnWidth(r,c)}const d=a*l;return{left:r,leftOffset:d}}isInScrollBar(e,n){const s=n.getTheme(),{scrollBarSize:i,scrollBarHoverSize:o}=s,{metrics:r}=n;if(!r)throw new Error("metrics not set");const{x:l,y:a}=e,{barLeft:d,barWidth:c,height:u,hasHorizontalBar:m}=r;return m&&i>0&&a>=u-o&&a<u&&l>d&&l<d+c}getLeftWithOffset(e,n){var f;const{metrics:s}=n;if(!s)throw new Error("metrics not set");const{x:i}=e,{barWidth:o,handleWidth:r,lastLeft:l,barLeft:a,columnCount:d,scrollableContentWidth:c,scrollableViewportWidth:u}=s,m=i-a,p=Qe((m-((f=this.dragOffset)!=null?f:0))/(o-r),0,1);if(d===1)return{left:0,leftOffset:p*(c-u)};const g=p*l;return Zd.getLeftWithOffsetFromRawLeft(n,g)}onDown(e,n){const{metrics:s}=n;if(!s)throw new Error("metrics not set");const{x:i}=e,{handleWidth:o,barLeft:r,scrollX:l}=s;if(!this.isInScrollBar(e,n))return!1;const a=i-r;if(a>=l&&a<=l+o)this.dragOffset=a-l,n.setState({isDraggingHorizontalScrollBar:!0});else{this.dragOffset=0;const{left:d,leftOffset:c}=this.getLeftWithOffset(e,n);n.setViewState({left:d,leftOffset:c,isDraggingHorizontalScrollBar:!0,isDragging:!0})}return!0}onDrag(e,n){if(this.dragOffset!=null){const{left:s,leftOffset:i}=this.getLeftWithOffset(e,n);return n.setViewState({left:s,leftOffset:i,isDraggingHorizontalScrollBar:!0,isDragging:!0}),!0}return!1}onMove(e,n){return this.isInScrollBar(e,n)}onUp(e,n){return this.dragOffset!==void 0&&(this.dragOffset=void 0,n.setState({isDraggingHorizontalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,n)}onClick(e,n){return this.isInScrollBar(e,n)}}class Rv extends Dt{constructor(){super(...arguments),this.cursor="move"}onDown(e,n){const{model:s}=n.props,{x:i,y:o,row:r}=e,{metrics:l}=n;if(!l)throw new Error("metrics not set");const{columnHeaderHeight:a,rowHeaderWidth:d,allRowYs:c}=l;if(i<=d&&r!==null&&s.isRowMovable(r)){const u=$(c,r);this.draggingOffset=o-u-a,n.setState({draggingRowOffset:this.draggingOffset})}return!1}onDrag(e,n){if(this.draggingOffset==null)return!1;const{model:s}=n.props;let{draggingRow:i}=n.state;const{mouseX:o,mouseY:r}=n.state;if(o==null||r==null)return!1;if(i==null){const{row:I}=n.getGridPointFromXY(o,r);if(I!=null&&!s.isRowMovable(I)||(i=I,n.setState({draggingRow:i,isDragging:!0}),i==null))return!1}const{metrics:l}=n;if(!l)throw new Error("metrics not set");const{top:a,lastTop:d,bottom:c,bottomVisible:u,rowCount:m,columnHeaderHeight:p,allRowHeights:g,allRowYs:f,height:b}=l;let C=p;if(a<i){const I=i-1;C=$(f,I)+$(g,I)*.5+p}let S=b;if(i<c){const I=i+1;S=$(f,I)+$(g,I)*.5+p}let{movedRows:v}=n.state;r<C&&i>0&&s.isRowMovable(i-1)?(v=j.moveItem(i,i-1,v),i-=1):S<r&&i<m-1&&s.isRowMovable(i+1)&&(v=j.moveItem(i,i+1,v),i+=1),n.setState({movedRows:v,draggingRow:i});const y=p+$(g,a)*.5,E=p+$(f,u)+$(g,u)*.5;return r<y&&a>0?n.setState({top:a-1}):r>E&&a<d&&n.setState({top:a+1}),!0}onUp(e,n){return this.draggingOffset!==void 0?(this.draggingOffset=void 0,n.setState({draggingRowOffset:null,draggingRow:null,isDragging:!1}),!0):!1}}class Qd extends vp{constructor(){super(...arguments),this.hiddenCursor="s-resize",this.defaultCursor="row-resize",this.pointProperty="y",this.userSizesProperty="userRowHeights",this.visibleOffsetProperty="visibleRowYs",this.visibleSizesProperty="visibleRowHeights",this.marginProperty="columnHeaderHeight",this.calculatedSizesProperty="calculatedRowHeights",this.modelIndexesProperty="modelRows",this.firstIndexProperty="firstRow",this.treePaddingProperty="treePaddingY",this.getHiddenItems=j.getHiddenRows,this.getNextShownItem=j.getNextShownRow,this.getSeparator=Qd.getRowSeparator}static getRowSeparator(e,n,s,i){if(!i.allowRowResize)return null;const{x:o,y:r}=e,l=j.getRowSeparatorIndex(o,r,n,i);return l!=null?{index:l,depth:0}:null}setSize(e,n,s){e.setRowHeight(n,s)}resetSize(e,n){e.resetRowHeight(n)}updateSeparator(e,n){e.setState({draggingRowSeparator:n,isDragging:n!==null})}}class vl extends Dt{static isInTreeBox(e,n){const{column:s,row:i,x:o,y:r}=e,{metrics:l}=n;if(!l)throw new Error("metrics not set");const{gridX:a,gridY:d,firstColumn:c,allColumnXs:u,allColumnWidths:m,allRowHeights:p,allRowYs:g,visibleRowTreeBoxes:f}=l;if(s===c&&i!=null&&f.get(i)!=null&&o>a&&r>d){const b=$(u,s),C=$(m,s),S=$(g,i),v=$(p,i);if(o>=a+b&&o<=a+b+C&&r>=d+S&&r<=d+S+v)return!0}return!1}onDown(e,n){return vl.isInTreeBox(e,n)}onClick(e,n){if(vl.isInTreeBox(e,n)){const{row:s}=e;if(s!==null)return n.toggleRowExpanded(s),!0}return!1}}class Dv extends Dt{isInCorner(e,n){const s=n.getTheme(),{scrollBarSize:i}=s,{metrics:o}=n;if(!o)throw new Error("metrics not set");const{x:r,y:l}=e,{width:a,height:d,hasVerticalBar:c,hasHorizontalBar:u}=o;return i>0&&c&&u&&r>=a-i&&l>=d-i&&r<=a&&l<=d}onDown(e,n){return this.isInCorner(e,n)}onUp(e,n){return this.isInCorner(e,n)}onClick(e,n){return this.isInCorner(e,n)}}class Jd extends Dt{constructor(){super(...arguments),this.cursor="default"}static getTopWithOffsetFromRawTop(e,n){const s=e.getTheme(),{metrics:i,metricCalculator:o}=e;if(!i)throw new Error("metrics not set");if(s.scrollSnapToRow)return{top:Math.round(n),topOffset:0};const r=Math.floor(n),l=n-r;let a=i.allRowHeights.get(r);if(a==null){const c=e.getMetricState();a=o.getVisibleRowHeight(r,c)}const d=a*l;return{top:r,topOffset:d}}isInScrollBar(e,n){const s=n.getTheme(),{scrollBarSize:i,scrollBarHoverSize:o}=s,{metrics:r}=n;if(!r)throw new Error("metrics not set");const{x:l,y:a}=e,{barTop:d,barHeight:c,width:u,hasVerticalBar:m}=r;return m&&i>0&&l>=u-o&&l<u&&a>d&&a<d+c}getTopWithOffset(e,n){var f;const{metrics:s}=n;if(!s)throw new Error("metrics not set");const{y:i}=e,{barHeight:o,handleHeight:r,lastTop:l,barTop:a,rowCount:d,scrollableContentHeight:c,scrollableViewportHeight:u}=s,m=i-a,p=Qe((m-((f=this.dragOffset)!=null?f:0))/(o-r),0,1);if(d===1)return{top:0,topOffset:p*(c-u)};const g=p*l;return Jd.getTopWithOffsetFromRawTop(n,g)}onDown(e,n){const{metrics:s}=n;if(!s)throw new Error("metrics not set");const{y:i}=e,{handleHeight:o,barTop:r,scrollY:l}=s;if(!this.isInScrollBar(e,n))return!1;const a=i-r;if(a>=l&&a<=l+o)this.dragOffset=a-l,n.setState({isDraggingVerticalScrollBar:!0});else{this.dragOffset=0;const{top:d,topOffset:c}=this.getTopWithOffset(e,n);n.setViewState({top:d,topOffset:c,isDraggingVerticalScrollBar:!0,isDragging:!0})}return!0}onMove(e,n){return this.isInScrollBar(e,n)}onDrag(e,n){if(this.dragOffset!=null){const{top:s,topOffset:i}=this.getTopWithOffset(e,n);return n.setViewState({top:s,topOffset:i,isDraggingVerticalScrollBar:!0,isDragging:!0}),!0}return!1}onUp(e,n){return this.dragOffset!==void 0&&(this.dragOffset=void 0,n.setState({isDraggingVerticalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,n)}onClick(e,n){return this.isInScrollBar(e,n)}}class Mv extends Dt{onDoubleClick({column:e,row:n},s){const{model:i}=s.props;return et(i)&&e!=null&&n!=null&&i.isEditableRange(re.makeCell(e,n))?(s.startEditing(e,n),!0):!1}}class wi{constructor(e=5e3){this.order=e}onDown(e,n){return!1}}class Nv extends wi{onDown(e,n){switch(e.key){case"a":if(j.isModifierKeyDown(e))return n.selectAll(),!0;break;case"ArrowUp":return this.handleArrowMove(0,-1,e,n);case"ArrowDown":return this.handleArrowMove(0,1,e,n);case"ArrowRight":return this.handleArrowMove(1,0,e,n);case"ArrowLeft":return this.handleArrowMove(-1,0,e,n);case"k":case"K":return j.isModifierKeyDown(e)?!1:this.handlePageUp(e,n);case"j":case"J":return j.isModifierKeyDown(e)?!1:this.handlePageDown(e,n);case"h":case"H":return j.isModifierKeyDown(e)?!1:(e.shiftKey||n.clearSelectedRanges(),n.moveCursorToPosition(0,n.state.cursorRow,e.shiftKey),!0);case"l":case"L":{if(j.isModifierKeyDown(e))return!1;const{model:s}=n.props,{columnCount:i}=s;return e.shiftKey||n.clearSelectedRanges(),n.moveCursorToPosition(i-1,n.state.cursorRow,e.shiftKey),!0}case"PageDown":return this.handlePageDown(e,n);case"PageUp":return this.handlePageUp(e,n);case"Home":return e.shiftKey||n.clearSelectedRanges(),n.moveCursorToPosition(j.isModifierKeyDown(e)?n.state.cursorColumn:0,j.isModifierKeyDown(e)?0:n.state.cursorRow,e.shiftKey,!0,!0),!0;case"End":{const{model:s}=n.props,{columnCount:i,rowCount:o}=s;return e.shiftKey||n.clearSelectedRanges(),n.moveCursorToPosition(j.isModifierKeyDown(e)?n.state.cursorColumn:i-1,j.isModifierKeyDown(e)?o-1:n.state.cursorRow,e.shiftKey,!0,!0),!0}case"Escape":return n.clearSelectedRanges(),{preventDefault:!1,stopPropagation:!1};case"Enter":if(n.state.selectedRanges.length>0)return n.moveCursorInDirection(e.shiftKey?re.SELECTION_DIRECTION.UP:re.SELECTION_DIRECTION.DOWN),!0;break;case"Tab":if(n.state.selectedRanges.length>0)return n.moveCursorInDirection(e.shiftKey?re.SELECTION_DIRECTION.LEFT:re.SELECTION_DIRECTION.RIGHT),!0;break}return!1}handleArrowMove(e,n,s,i){const o=s.shiftKey,r=j.isModifierKeyDown(s);o?i.trimSelectedRanges():i.clearSelectedRanges();const{cursorRow:l,cursorColumn:a,selectionEndColumn:d,selectionEndRow:c}=i.state,u=o?d:a,m=o?c:l;if(r){const{model:p}=i.props,{columnCount:g,rowCount:f}=p,b=r&&o;let C=null,S=null;e<0?(C=0,S=m):e>0?(C=g-1,S=m):n<0?(C=u,S=0):n>0&&(C=u,S=f-1),C!=null&&S!=null&&i.moveCursorToPosition(C,S,o,!0,b)}else{if(!i.metrics)throw new Error("grid.metrics are not set");const{theme:p}=i.props,{autoSelectRow:g=!1,autoSelectColumn:f=!1}=p;if(g&&e!==0){const{lastLeft:b}=i.metrics;let{left:C}=i.state;C=Qe(C+e,0,b),i.moveCursorToPosition(C,l,o,!1),i.setViewState({left:C})}else if(f&&n!==0){const{lastTop:b}=i.metrics;let{top:C}=i.state;C=Qe(C+n,0,b),i.moveCursorToPosition(C,a,o,!1),i.setViewState({top:C})}else i.moveCursor(e,n,o)}return!0}handlePageUp(e,n){const s=e.shiftKey;s?n.trimSelectedRanges():n.clearSelectedRanges();const{cursorColumn:i,selectionEndRow:o}=n.state,r=o,l=i;if(r==null)return!1;const a=n.getMetricState(),{metricCalculator:d}=n,{bottomVisible:c,topVisible:u,hasHorizontalBar:m}=d.getMetrics(a);let p=r-(c-u);p-=m?0:1,p=Math.max(p,0);const g=Math.max(p-(r-u),0);return n.moveCursorToPosition(l,p,s,!1),n.setViewState({top:g}),!0}handlePageDown(e,n){const s=e.shiftKey;s?n.trimSelectedRanges():n.clearSelectedRanges();const{selectionEndRow:i,cursorColumn:o}=n.state,r=i,l=o;if(r===null)return!1;const a=n.getMetricState(),{metricCalculator:d}=n,{bottomVisible:c,topVisible:u,hasHorizontalBar:m,rowCount:p,lastTop:g}=d.getMetrics(a),f=p-1;let b=c-u+r;b+=m?0:1,b=Math.min(b,f);const C=Math.min(g,b-(r-u));return n.moveCursorToPosition(l,b,s,!1),n.setViewState({top:C}),!0}}class Fv extends wi{onDown(e,n){switch(e.key){case"Enter":case" ":return this.handleExpandKey(e,n)}return!1}handleExpandKey(e,n){const{selectedRanges:s}=n.state;if(s.length===1){const i=s[0];if(i.startRow===i.endRow&&i.startColumn===i.endColumn){if(!n.metrics)throw new Error("grid.metrics not set");const{model:o}=n.props,{startRow:r,startColumn:l}=i;if(r!=null){const a=n.getModelRow(r);if((l===0||l==null)&>(o)&&o.isRowExpandable(a))return n.toggleRowExpanded(r),!0}}}return!1}}class xv extends wi{onDown(e,n){if(j.isModifierKeyDown(e))return!1;const{model:s}=n.props,{cursorColumn:i,cursorRow:o}=n.state;if(i==null||o==null||!et(s)||!s.isEditableRange(re.makeCell(i,o)))return!1;const r=i,l=o;return r==null||l==null?!1:e.key.length===1?(n.startEditing(r,l,!0,[1,1],e.key),!0):e.key==="F2"?(n.startEditing(r,l),!0):e.key==="Backspace"?(n.startEditing(r,l,!0,void 0,""),!0):e.key==="Delete"?(n.setValueForCell(r,l,""),!0):!1}}function _v(t){var s,i;const e=[],n=t.querySelectorAll("tr");for(let o=0;o<n.length;o+=1){const l=n[o].querySelectorAll("td"),a=[];for(let d=0;d<l.length;d+=1){const c=l[d];a.push((i=(s=c.textContent)==null?void 0:s.trim())!=null?i:"")}e.push(a)}return e}function kv(t){const e=[];return t.forEach(n=>{var i;const s=(i=n.textContent)!=null?i:"";s.length>0&&e.push(s.split(/\t|\u00a0\u00a0 \u00a0/))}),e}function Ov(t){var s,i;const e=t.querySelector("table");if(e!=null)return _v(e);const n=(i=(s=t.textContent)==null?void 0:s.trim())!=null?i:"";if(n.length>0){const{childNodes:o}=t,r=n.includes(" "),l=n.includes("\xA0\xA0 \xA0");return r&&o.length!==0&&(o.length===1||o.length>1&&(o[0].textContent==null||!o[0].textContent.includes(" ")))?n.split(`
|
|
24
24
|
`).map(a=>a.split(" ")):o.length>1||l?kv(t.childNodes):n}return null}class Lv extends wi{onDown(e,n){switch(e.key){case"v":if(j.isModifierKeyDown(e)){const s=document.createElement("div");document.body.appendChild(s),s.setAttribute("contenteditable","true"),s.setAttribute("style",'clip-path: "inset(50%)"; height: 1px; width: 1px; margin: -1px; overflow: hidden; padding 0; position: absolute;');const i=()=>{s.removeEventListener("input",i),s.remove(),n.focus();const o=Ov(s);o!=null&&n.pasteValue(o)};return s.addEventListener("input",i),s.focus(),{preventDefault:!1,stopPropagation:!0}}break}return!1}}const Av=t=>{switch(t){case"ArrowDown":return Mn.DOWN;case"ArrowUp":return Mn.UP;case"ArrowLeft":return Mn.LEFT;case"ArrowRight":return Mn.RIGHT;default:return}};function ec({selectionRange:t=void 0,className:e="",disabled:n=!1,value:s="",isQuickEdit:i=!0,onChange:o=()=>{},onCancel:r=()=>{},onDone:l=()=>{},onContextMenu:a=()=>{},style:d={}}){const c=w.exports.useRef(null),u=w.exports.useRef(!1),[m]=w.exports.useState(s),[p,g]=w.exports.useState(!1),[f,b]=w.exports.useState(i),[C,S]=w.exports.useState(s);w.exports.useEffect(function(){const{current:x}=c;x!=null&&(x.focus(),t?x.setSelectionRange(t[0],t[1]):x.setSelectionRange(x.value.length,x.value.length))},[t]);const v=w.exports.useCallback(U=>{o(U)},[o]),y=w.exports.useCallback(U=>{const{value:x}=U.target;S(x),g(!0),v(x)},[v,S,g]),E=w.exports.useCallback(()=>{u.current=!0,p&&v(m),g(!1),r()},[m,p,r,v]),I=w.exports.useCallback(()=>{b(!1)},[b]),R=w.exports.useCallback((U,x=!1)=>{l(C,{direction:U,fillRange:x})},[l,C]),N=w.exports.useCallback(()=>{u.current||R(null)},[u,R]),F=w.exports.useCallback(U=>{switch(U.stopPropagation(),U.key){case"Escape":U.preventDefault(),E();break;case"Enter":if(U.preventDefault(),j.isModifierKeyDown(U))R(void 0,!0);else if(U.altKey){const x=`${C}
|
|
25
|
-
`;S(x),g(!0),v(x)}else R(U.shiftKey?Mn.UP:Mn.DOWN);break;case"Tab":U.preventDefault(),R(U.shiftKey?Mn.LEFT:Mn.RIGHT);break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":f&&(U.preventDefault(),R(Av(U.key)));break}},[E,R,f,S,g,v,C]),B=w.exports.useCallback(U=>{a(U)},[a]);return h("textarea",{ref:c,className:z("grid-cell-input-field",e),value:C,onBlur:N,onChange:y,onKeyDown:F,onContextMenu:B,onClick:I,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",disabled:n,style:d})}ec.propTypes={selectionRange:D.exports.arrayOf(D.exports.number),className:D.exports.string,disabled:D.exports.bool,isQuickEdit:D.exports.bool,value:D.exports.string,onChange:D.exports.func,onCancel:D.exports.func,onDone:D.exports.func,onContextMenu:D.exports.func,style:D.exports.shape({})};ec.defaultProps={selectionRange:null,className:"",disabled:!1,value:"",isQuickEdit:!0,onChange:()=>{},onCancel:()=>{},onDone:()=>{},onContextMenu:()=>{},style:{}};const Pv=Y.createContext({}),ii=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedKeyHandlers=Ce(l=>[...l,...this.keyHandlers].sort((a,d)=>a.order-d.order)),this.getCachedMouseHandlers=Ce(l=>[...l,...this.mouseHandlers].sort((a,d)=>a.order-d.order)),this.handleClick=this.handleClick.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleEditCellCancel=this.handleEditCellCancel.bind(this),this.handleEditCellChange=this.handleEditCellChange.bind(this),this.handleEditCellCommit=this.handleEditCellCommit.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseDrag=this.handleMouseDrag.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleResize=this.handleResize.bind(this),this.handleWheel=this.handleWheel.bind(this);const{isStuckToBottom:e,isStuckToRight:n,metricCalculator:s,movedColumns:i,movedRows:o,renderer:r}=t;this.renderer=r||new to,this.metricCalculator=s||new hr,this.canvas=null,this.canvasContext=null,this.animationFrame=null,this.prevMetrics=null,this.metrics=null,this.documentCursor=null,this.dragTimer=null,this.keyHandlers=[new xv(400),new Lv(450),new Nv(500),new Fv(900)],this.mouseHandlers=[new Qd(100),new Ql(200),new Rv(300),new Iv(400),new Mv(450),new Jd(500),new Zd(600),new Dv(700),new vl(800),new Ev(900)],this.state={top:0,left:0,topOffset:0,leftOffset:0,draggingColumn:null,draggingRow:null,draggingRowOffset:null,draggingColumnSeparator:null,draggingRowSeparator:null,isDraggingHorizontalScrollBar:!1,isDraggingVerticalScrollBar:!1,isDragging:!1,mouseX:null,mouseY:null,movedColumns:i,movedRows:o,cursorRow:null,cursorColumn:null,selectionStartRow:null,selectionStartColumn:null,selectionEndRow:null,selectionEndColumn:null,selectedRanges:[],lastSelectedRanges:[],cursor:null,editingCell:null,isStuckToBottom:e,isStuckToRight:n}}static getScale(t){var i,o,r,l,a;const e=window.devicePixelRatio||1,n=t,s=(a=(l=(r=(o=(i=n.webkitBackingStorePixelRatio)!=null?i:n.mozBackingStorePixelRatio)!=null?o:n.msBackingStorePixelRatio)!=null?r:n.oBackingStorePixelRatio)!=null?l:n.backingStorePixelRatio)!=null?a:1;return e/s}static getCursorClassName(t){return t!=null&&t!==""?`grid-cursor-${t}`:null}componentDidMount(){var n;this.initContext(),(n=this.canvas)==null||n.addEventListener("wheel",this.handleWheel,{passive:!1}),window.addEventListener("resize",this.handleResize),this.updateCanvasScale(),this.updateCanvas();const{isStuckToBottom:t,isStuckToRight:e}=this.props;t&&this.scrollToBottom(),e&&this.scrollToRight()}componentDidUpdate(t,e){const{isStickyBottom:n,isStickyRight:s,movedColumns:i,movedRows:o,onMovedColumnsChanged:r,onMoveColumnComplete:l,onMovedRowsChanged:a,onMoveRowComplete:d}=this.props,{isStickyBottom:c,isStickyRight:u,movedColumns:m,movedRows:p}=t,{movedColumns:g,movedRows:f}=e,{draggingColumn:b,draggingRow:C,movedColumns:S,movedRows:v}=this.state;if(m!==i&&this.setState({movedColumns:i}),p!==o&&this.setState({movedRows:o}),g!==S&&r(S),e.draggingColumn!=null&&b==null&&l(S),f!==v&&a(v),e.draggingRow!=null&&C==null&&d(v),n!==c&&this.setState({isStuckToBottom:!1}),s!==u&&this.setState({isStuckToRight:!1}),this.updateMetrics(),this.requestUpdateCanvas(),!this.metrics||!this.prevMetrics)return;const{rowCount:y,columnCount:E,height:I,width:R}=this.metrics,{rowCount:N,columnCount:F,height:B,width:U}=this.prevMetrics;if(N!==y||I!==B){const{isStuckToBottom:x}=this.state;x&&this.scrollToBottom()}if(F!==E||R!==U){const{isStuckToRight:x}=this.state;x&&this.scrollToRight()}this.validateSelection()&&this.checkSelectionChange(e)}componentWillUnmount(){var t;this.animationFrame!=null&&cancelAnimationFrame(this.animationFrame),(t=this.canvas)==null||t.removeEventListener("wheel",this.handleWheel),window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),window.removeEventListener("resize",this.handleResize),this.stopDragTimer()}getTheme(){const{theme:t}=this.props;return ii.getTheme(this.context,t)}getGridPointFromEvent(t){Nh(this.canvas);const e=this.canvas.getBoundingClientRect(),n=t.clientX-e.left,s=t.clientY-e.top;return this.getGridPointFromXY(n,s)}getGridPointFromXY(t,e){if(!this.metrics)throw new Error("metrics must be set");return j.getGridPointFromXY(t,e,this.metrics)}getMetricState(t=this.state){const e=this.getTheme(),{model:n,stateOverride:s}=this.props;if(!this.canvasContext||!this.canvas)throw new Error("Canvas and context must be defined to get metrics");const i=this.canvasContext,o=this.canvas.clientWidth,r=this.canvas.clientHeight,{left:l,top:a,leftOffset:d,topOffset:c,movedColumns:u,movedRows:m,isDraggingHorizontalScrollBar:p,isDraggingVerticalScrollBar:g,draggingColumn:f}=t;return{left:l,top:a,leftOffset:d,topOffset:c,width:o,height:r,context:i,theme:e,model:n,movedColumns:u,movedRows:m,isDraggingHorizontalScrollBar:p,isDraggingVerticalScrollBar:g,draggingColumn:f,...s}}getKeyHandlers(){const{keyHandlers:t}=this.props;return this.getCachedKeyHandlers(t)}getMouseHandlers(){const{mouseHandlers:t}=this.props;return this.getCachedMouseHandlers(t)}getModelColumn(t){var n,s;const e=(s=(n=this.metrics)==null?void 0:n.modelColumns)==null?void 0:s.get(t);if(e===void 0)throw new Error(`Unable to get ModelIndex for column ${t}`);return e}getModelRow(t){var n,s;const e=(s=(n=this.metrics)==null?void 0:n.modelRows)==null?void 0:s.get(t);if(e===void 0)throw new Error(`Unable to get ModelIndex for row ${t}`);return e}toggleRowExpanded(t){const e=this.getModelRow(t),{model:n}=this.props;gt(n)&&n.isRowExpandable(e)&&n.setRowExpanded(e,!n.isRowExpanded(e)),this.clearSelectedRanges(),this.commitSelection(),this.moveCursorToPosition(0,t),this.commitSelection(),this.setState({isStuckToBottom:!1})}scrollToBottom(){if(!this.metrics)return;const{bottomVisible:t,rowCount:e,top:n,lastTop:s}=this.metrics;(t<e-1&&t>0||n>s)&&this.setState({top:s})}scrollToRight(){if(!this.metrics)return;const{rightVisible:t,columnCount:e,left:n,lastLeft:s}=this.metrics;(t<e-1&&t>0||n>s)&&this.setState({left:s})}setSelectedRanges(t){const{model:e}=this.props,{columnCount:n,rowCount:s}=e,{cursorRow:i,cursorColumn:o,selectedRanges:r}=this.state;if(this.setState({selectedRanges:t,lastSelectedRanges:r}),t.length>0){const l=re.boundedRange(t[0],n,s);let a=i,d=o;l.containsCell(o,i)||({row:a,column:d}=l.startCell()),this.setState({selectionStartColumn:l.startColumn,selectionStartRow:l.startRow,selectionEndColumn:l.endColumn,selectionEndRow:l.endRow,cursorColumn:d,cursorRow:a})}}initContext(){const{canvas:t}=this,{canvasOptions:e}=this.props;if(!t)throw new Error("Canvas not set");this.canvasContext=t.getContext("2d",e)}requestUpdateCanvas(){this.animationFrame==null&&(this.animationFrame=requestAnimationFrame(()=>{if(this.animationFrame=null,!this.metrics)throw new Error("Metrics not set");this.updateCanvas(this.metrics)}))}updateCanvas(t=this.updateMetrics()){this.updateCanvasScale();const{onViewChanged:e}=this.props;e(t),this.drawCanvas(t)}updateCanvasScale(){const{canvas:t,canvasContext:e}=this;if(!t)throw new Error("canvas not set");if(!e)throw new Error("canvasContext not set");if(!t.parentElement)throw new Error("Canvas has no parent element");const n=ii.getScale(e),s=t.parentElement.getBoundingClientRect(),i=Math.floor(s.width),o=Math.floor(s.height);t.style.width=`${i}px`,t.style.height=`${o}px`,t.width=i*n,t.height=o*n,e.scale(n,n)}updateScrollBounds(){if(!this.metrics)throw new Error("metrics not set");const{left:t,top:e}=this.state,{lastLeft:n,lastTop:s}=this.metrics;t>n&&this.setState({left:n,leftOffset:0}),e>s&&this.setState({top:s,topOffset:0})}updateMetrics(t=this.state){this.prevMetrics=this.metrics;const{metricCalculator:e}=this,n=this.getMetricState(t);return this.metrics=e.getMetrics(n),this.updateScrollBounds(),this.metrics}checkSelectionChange(t){const{selectedRanges:e}=t,{selectedRanges:n}=this.state;if(n!==e){const{onSelectionChanged:s}=this.props;s(n)}}validateSelection(){const{model:t}=this.props,{selectedRanges:e}=this.state,{columnCount:n,rowCount:s}=t;for(let i=0;i<e.length;i+=1){const o=e[i];if(o.endColumn!=null&&o.endColumn>=n||o.endRow!=null&&o.endRow>=s)return this.setState({selectedRanges:[],lastSelectedRanges:[]}),!1}return!0}clearSelectedRanges(){const{selectedRanges:t}=this.state;this.setState({selectedRanges:[],lastSelectedRanges:t})}trimSelectedRanges(){const{selectedRanges:t}=this.state;t.length>0&&this.setState({selectedRanges:t.slice(t.length-1)})}beginSelection(t,e){this.setState({selectionStartColumn:t,selectionStartRow:e,selectionEndColumn:t,selectionEndRow:e,cursorColumn:t,cursorRow:e})}moveSelection(t,e,n=!1,s=!1){this.setState(i=>{var g,f,b,C;const{selectedRanges:o,selectionStartRow:r,selectionStartColumn:l}=i,{theme:a}=this.props,{autoSelectRow:d,autoSelectColumn:c}=a;if(n&&o.length>0){const S=o[o.length-1];let v=null,y=null,E=null,I=null;s?(v=d!==void 0&&d?null:Math.min(t!=null?t:0,(g=S.startColumn)!=null?g:0),y=c!==void 0&&c?null:Math.min(e!=null?e:0,(f=S.startRow)!=null?f:0),E=d!==void 0&&d?null:Math.max(t!=null?t:0,(b=S.endColumn)!=null?b:0),I=c!==void 0&&c?null:Math.max(e!=null?e:0,(C=S.endRow)!=null?C:0)):(v=S.startColumn,y=S.startRow,(l!=null||r!=null)&&((d===void 0||!d)&&(v=l),(c===void 0||!c)&&(y=r)),E=d!==void 0&&d?null:t,I=c!==void 0&&c?null:e);const R=re.makeNormalized(v,y,E,I);if(S.equals(R))return null;const N=[...o];return N[N.length-1]=R,{selectedRanges:N,selectionEndColumn:t,selectionEndRow:e}}const u=[...o],m=d!==void 0&&d?null:t,p=c!==void 0&&c?null:e;return u.push(re.makeNormalized(m,p,m,p)),{selectedRanges:u,selectionEndColumn:t,selectionEndRow:e}})}commitSelection(){this.setState(t=>{const{theme:e}=this.props,{autoSelectRow:n}=e,{selectedRanges:s,lastSelectedRanges:i,cursorRow:o,cursorColumn:r}=t;if(s.length===1&&(n!==void 0&&n?re.rowCount(s)===1:re.cellCount(s)===1)&&re.rangeArraysEqual(s,i))return{selectedRanges:[],lastSelectedRanges:[],cursorColumn:r,cursorRow:o};let l=s.slice();if(l.length>1){const c=l[l.length-1];for(let u=0;u<l.length-1;u+=1){const m=l[u];if(m.contains(c)){const p=m.subtract(c);l.pop(),l.splice(u,1),l=l.concat(p);break}}l=re.consolidate(l)}let a=r,d=o;if(!re.containsCell(l,r,o)){const{model:c}=this.props,{columnCount:u,rowCount:m}=c,p=re.nextCell(re.boundedRanges(s,u,m));p!=null?{column:a,row:d}=p:(a=null,d=null)}return{cursorRow:d,cursorColumn:a,selectedRanges:l,lastSelectedRanges:s}})}setFocusRow(t){var u;if(!this.metrics||!this.prevMetrics)return;const{gridY:e,height:n,lastTop:s,userRowHeights:i,rowHeight:o}=this.metrics,r=n-e,l=Math.round(r/2)+((u=i.get(t))!=null?u:o),a=this.getMetricState(),d=this.metricCalculator.getLastTop(a,t+1,l);this.setState({top:Math.min(s,d),selectedRanges:[new re(null,t,null,t)]});const{cursorColumn:c}=this.state;this.moveCursorToPosition(c,t,!1,!1)}selectAll(){const{model:t,theme:e}=this.props,{autoSelectRow:n,autoSelectColumn:s}=e,i=s!==void 0&&s?null:0,o=s!==void 0&&s?null:t.rowCount-1,r=n!==void 0&&n?null:0,l=n!==void 0&&n?null:t.columnCount-1;this.setSelectedRanges([new re(r,i,l,o)])}moveCursor(t,e,n){const{cursorRow:s,cursorColumn:i,selectionEndColumn:o,selectionEndRow:r}=this.state,l=n?o:i,a=n?r:s;if(a===null||l===null){const{left:d,top:c}=this.state;this.moveCursorToPosition(d,c,n)}else{const{model:d}=this.props,{columnCount:c,rowCount:u}=d,m=Qe(l+t,0,c-1),p=Qe(a+e,0,u-1);this.moveCursorToPosition(m,p,n)}}moveCursorInDirection(t=re.SELECTION_DIRECTION.DOWN){var d;const{model:e}=this.props,{columnCount:n,rowCount:s}=e,{cursorRow:i,cursorColumn:o,selectedRanges:r}=this.state,l=r.length>0?r:[re.makeCell(o,i)];let a=null;if(l.length===1&&re.cellCount(l)===1){const c=new re(0,0,n-1,s-1);a=(d=c.nextCell(o,i,t))!=null?d:c.startCell(t)}else a=re.nextCell(re.boundedRanges(l,n,s),o,i,t);if(a!=null){const{column:c,row:u}=a;this.setState({cursorColumn:c,cursorRow:u}),re.containsCell(r,c,u)||this.setState({selectedRanges:[re.makeCell(c,u)],selectionStartColumn:c,selectionStartRow:u,selectionEndColumn:c,selectionEndRow:u}),this.moveViewToCell(a.column,a.row)}}moveCursorToPosition(t,e,n=!1,s=!0,i=!1){n||this.beginSelection(t,e),this.moveSelection(t,e,n,i),s&&this.moveViewToCell(t,e)}moveViewToCell(t,e){if(!this.metrics)throw new Error("metrics not set");const{metricCalculator:n}=this,{bottomVisible:s,rightVisible:i,topVisible:o,leftVisible:r}=this.metrics,l=this.getMetricState(this.state);let{top:a,left:d,topOffset:c,leftOffset:u}=this.state;e!=null&&!j.isFloatingRow(e,this.metrics)&&(e<o?(a=n.getTopForTopVisible(l,e),c=0):e>s&&(a=n.getTopForBottomVisible(l,e),c=0)),t!=null&&!j.isFloatingColumn(t,this.metrics)&&(t<r?(d=n.getLeftForLeftVisible(l,t),u=0):t>i&&(d=n.getLeftForRightVisible(l,t),u=0)),this.setViewState({top:a,left:d,topOffset:c,leftOffset:u})}setViewState(t,e=!1){if(!this.metrics)throw new Error("metrics not set");const{isStickyBottom:n,isStickyRight:s}=this.props,{top:i,left:o}=t,{lastTop:r,lastLeft:l}=this.metrics;i!=null&&this.setState({isStuckToBottom:n&&i>=r}),o!=null&&this.setState({isStuckToRight:s&&o>=l}),this.setState(t),e&&this.forceUpdate()}startEditing(t,e,n=!1,s,i){const{model:o}=this.props;if(!et(o))throw new Error("model is not editable");const r=this.getModelColumn(t),l=this.getModelRow(e),a={column:t,row:e,selectionRange:s,value:i!==void 0?i:o.editValueForCell(r,l),isQuickEdit:n};this.setState({editingCell:a,cursorColumn:t,cursorRow:e}),this.moveViewToCell(t,e)}isValidForCell(t,e,n){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);return et(s)&&s.isValidForCell(i,o,n)}async pasteValue(t){const{model:e}=this.props,{movedColumns:n,movedRows:s,selectedRanges:i}=this.state;try{if(Fh(e),!e.isEditable||!i.every(u=>e.isEditableRange(u)))throw new Ra("Can't paste in to read-only area.");if(i.length<=0)throw new Ra("Select an area to paste to.");if(typeof t=="string"){const u=[],m=j.getModelRanges(i,n,s);re.forEachCell(m,(p,g)=>{u.push({column:p,row:g,text:t})}),await e.setValues(u);return}const o=t.length,r=t[0].length,{columnCount:l,rowCount:a}=e;let d=i;if(d.every(u=>{var m,p;return re.cellCount([u])===1&&((m=u.startColumn)!=null?m:0)+r<=l&&((p=u.startRow)!=null?p:0)+o<=a})&&(d=d.map(u=>{var m,p;return new re(u.startColumn,u.startRow,((m=u.startColumn)!=null?m:0)+r-1,((p=u.startRow)!=null?p:0)+o-1)}),this.setSelectedRanges(d)),!d.every(u=>re.rowCount([u])===o&&re.columnCount([u])===r))throw new Ra("Copy and paste area are not same size.");const c=[];d.forEach(u=>{var m,p;for(let g=0;g<r;g+=1)for(let f=0;f<o;f+=1)c.push({column:((m=u.startColumn)!=null?m:0)+g,row:((p=u.startRow)!=null?p:0)+f,text:t[f][g]})}),await e.setValues(c)}catch(o){const{onError:r}=this.props;r(o instanceof Error?o:new Error(`${o}`))}}setValueForCell(t,e,n){const{model:s}=this.props;Fh(s);const i=this.getModelColumn(t),o=this.getModelRow(e);return s.isValidForCell(i,o,n)?(s.setValueForCell(i,o,n),!0):!1}setValueForRanges(t,e){const{model:n}=this.props,{movedColumns:s,movedRows:i}=this.state,o=j.getModelRanges(t,s,i);et(n)&&n.setValueForRanges(o,e)}isSelected(t,e){var s,i;const{selectedRanges:n}=this.state;for(let o=0;o<n.length;o+=1){const r=n[o],l=r.startRow===null||r.startRow<=t&&t<=((s=r.endRow)!=null?s:0),a=r.startColumn===null||r.startColumn<=e&&e<=((i=r.endColumn)!=null?i:0);if(l&&a)return!0}return!1}addDocumentCursor(t=null){this.documentCursor!==ii.getCursorClassName(t)&&(this.documentCursor!=null&&document.documentElement.classList.remove(this.documentCursor),this.documentCursor=ii.getCursorClassName(t),this.documentCursor!=null&&document.documentElement.classList.add(this.documentCursor),document.documentElement.classList.add("grid-block-events"))}removeDocumentCursor(){this.documentCursor!=null&&(document.documentElement.classList.remove(this.documentCursor),document.documentElement.classList.remove("grid-block-events"),this.documentCursor=null)}startDragTimer(t){this.stopDragTimer();const e=new MouseEvent("custom",t.nativeEvent);this.dragTimer=setTimeout(()=>{this.handleMouseDrag(e)},ii.dragTimeout)}stopDragTimer(){this.dragTimer&&(clearTimeout(this.dragTimer),this.dragTimer=null)}drawCanvas(t=this.updateMetrics()){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{cursorColumn:e,cursorRow:n,draggingColumn:s,draggingColumnSeparator:i,draggingRow:o,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,mouseX:m,mouseY:p,selectedRanges:g}=this.state,{model:f,stateOverride:b}=this.props,{renderer:C}=this,S=this.canvasContext,v=this.getTheme(),y=this.canvas.clientWidth,E=this.canvas.clientHeight,I={width:y,height:E,context:S,theme:v,model:f,metrics:t,mouseX:m,mouseY:p,selectedRanges:g,draggingColumn:s,draggingColumnSeparator:i,draggingRow:o,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,cursorColumn:e,cursorRow:n,...b};S.save(),C.drawCanvas(I),S.restore()}focus(){var t;(t=this.canvas)==null||t.focus()}isFocused(){return document.activeElement===this.canvas}handleClick(t){var s;const e=this.getGridPointFromEvent(t),n=this.getMouseHandlers();for(let i=0;i<n.length;i+=1)if(n[i].onClick(e,this,t)!==!1){t.stopPropagation(),t.preventDefault();break}(s=this.canvas)==null||s.focus()}handleContextMenu(t){const e=this.getGridPointFromEvent(t),n=this.getMouseHandlers();for(let s=0;s<n.length;s+=1)if(n[s].onContextMenu(e,this,t)!==!1){t.stopPropagation(),t.preventDefault();break}}handleKeyDown(t){var n,s;const e=this.getKeyHandlers();for(let i=0;i<e.length;i+=1){const r=e[i].onDown(t,this);if(r!==!1){const l=r;((n=l==null?void 0:l.stopPropagation)==null||n)&&t.stopPropagation(),((s=l==null?void 0:l.preventDefault)==null||s)&&t.preventDefault();break}}}notifyMouseHandlers(t,e,n=!0,s=!1){var l,a;const i=this.getGridPointFromEvent(e),o=this.getMouseHandlers();let r=null;for(let d=0;d<o.length;d+=1){const c=o[d],u=c[t]!=null&&c[t](i,this,e);if(u!==!1){c.cursor!=null&&({cursor:r}=c,s&&this.addDocumentCursor(r));const m=u;((l=m==null?void 0:m.stopPropagation)==null||l)&&e.stopPropagation(),((a=m==null?void 0:m.preventDefault)==null||a)&&e.preventDefault();break}}if(this.setState({cursor:r}),n){const{x:d,y:c}=i;this.setState({mouseX:d,mouseY:c})}}handleMouseDown(t){window.addEventListener("mousemove",this.handleMouseDrag,!0),window.addEventListener("mouseup",this.handleMouseUp,!0),!(t.button!=null&&t.button!==0)&&(this.notifyMouseHandlers("onDown",t),this.startDragTimer(t))}handleDoubleClick(t){this.notifyMouseHandlers("onDoubleClick",t)}handleMouseMove(t){this.notifyMouseHandlers("onMove",t)}handleMouseLeave(t){this.notifyMouseHandlers("onLeave",t,!1),this.setState({mouseX:null,mouseY:null})}handleMouseDrag(t){this.setState({isDragging:!0}),this.notifyMouseHandlers("onDrag",t,!0,!0),this.stopDragTimer()}handleMouseUp(t){window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),!(t.button!=null&&t.button!==0)&&(this.notifyMouseHandlers("onUp",t,!1),this.stopDragTimer(),this.removeDocumentCursor())}handleResize(){if(this.updateCanvasScale(),this.updateCanvas(),!this.metrics)throw new Error("metrics not set");this.forceUpdate()}handleWheel(t){var E,I,R,N;if(this.notifyMouseHandlers("onWheel",t),t.defaultPrevented)return;const{metricCalculator:e,metrics:n}=this,s=this.getMetricState();if(!n)throw new Error("metrics not set");const{lastTop:i,lastLeft:o,columnCount:r,rowCount:l,scrollableContentWidth:a,scrollableViewportWidth:d,scrollableContentHeight:c,scrollableViewportHeight:u,hasHorizontalBar:m,hasVerticalBar:p}=n;let{top:g,left:f,topOffset:b,leftOffset:C}=n;const S=this.getTheme();let{deltaX:v,deltaY:y}=j.getScrollDelta(t,n.barWidth,n.barHeight,n.rowHeight,n.rowHeight);for(;m&&v!==0;){if(C+=v,v=0,r>1){if(C>0&&f>=o||C<0&&f<=0){C=0;break}}else{if(C<=0){C=0;break}const F=a-d;if(C>=F){C=F;break}}if(C>0){const F=(E=n.allColumnWidths.get(f))!=null?E:e.getVisibleColumnWidth(f,s);C>=F?(v=C-F,C=0,f+=1):S.scrollSnapToColumn&&r>1&&(C=0,f+=1)}else if(C<0){const F=(I=n.allColumnWidths.get(f-1))!=null?I:e.getVisibleColumnWidth(f-1,s);Math.abs(C)<=F&&S.scrollSnapToColumn&&r>1?(C=0,f-=1):(v=C+F,C=0,f-=1)}}for(;p&&y!==0;){if(b+=y,y=0,l>1){if(b>0&&g>=i||b<0&&g<=0){b=0;break}}else{if(b<=0){b=0;break}const F=c-u;if(b>=F){b=F;break}}if(b>0){const F=(R=n.allRowHeights.get(g))!=null?R:e.getVisibleRowHeight(g,s);b>=F?(y=b-F,b=0,g+=1):S.scrollSnapToRow&&l>1&&(b=0,g+=1)}else if(b<0){const F=(N=n.allRowHeights.get(g-1))!=null?N:e.getVisibleRowHeight(g-1,s);Math.abs(b)<=F&&S.scrollSnapToRow&&l>1?(b=0,g-=1):(y=b+F,b=0,g-=1)}}this.setViewState({top:g,left:f,leftOffset:C,topOffset:b}),t.stopPropagation(),t.preventDefault()}handleEditCellCancel(){this.setState({editingCell:null}),this.focus()}handleEditCellChange(t){this.setState(({editingCell:e})=>{try{return Nh(e),{editingCell:{...e,value:t}}}catch(n){const{onError:s}=this.props;return s(n instanceof Error?n:new Error(`${n}`)),null}})}handleEditCellCommit(t,{direction:e=Mn.DOWN,fillRange:n=!1}={}){const{editingCell:s,selectedRanges:i}=this.state;if(!s)throw new Error("editingCell not set");const{column:o,row:r}=s;if(!this.isValidForCell(o,r,t)){e===null&&this.setState({editingCell:null});return}n?this.setValueForRanges(i,t):this.setValueForCell(o,r,t),e!==null&&this.moveCursorInDirection(e),this.setState({editingCell:null}),this.focus()}renderInputField(){const{model:t}=this.props,{editingCell:e}=this.state,{metrics:n}=this;if(e==null||n==null||!et(t))return null;const{selectionRange:s,value:i,isQuickEdit:o}=e,{column:r,row:l}=e,{gridX:a,gridY:d,allColumnXs:c,allRowYs:u,allColumnWidths:m,allRowHeights:p}=n,g=c.get(r),f=u.get(l),b=m.get(r),C=p.get(l),S=g!=null&&f!=null&&b!=null&&C!=null?{position:"absolute",left:a+g,top:d+f,width:b,height:C}:{opacity:0},v=this.getModelColumn(r),y=this.getModelRow(l),E=v!=null&&y!=null?{textAlign:t.textAlignForCell(v,y)}:void 0,I=t.isValidForCell(v,y,i);return h("div",{style:S,children:h(ec,{selectionRange:s,className:z({error:!I}),onCancel:this.handleEditCellCancel,onChange:this.handleEditCellChange,onDone:this.handleEditCellCommit,isQuickEdit:o,style:E,value:i},`${r},${l}`)})}render(){const{cursor:t}=this.state;return T(we,{children:[h("canvas",{className:z("grid-canvas",ii.getCursorClassName(t)),ref:e=>{this.canvas=e},onClick:this.handleClick,onContextMenu:this.handleContextMenu,onDoubleClick:this.handleDoubleClick,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,tabIndex:0,children:"Your browser does not support HTML canvas. Update your browser?"}),this.renderInputField()]})}};let uo=ii;uo.contextType=Pv;uo.defaultProps={canvasOptions:{alpha:!1},isStickyBottom:!1,isStickyRight:!1,isStuckToBottom:!1,isStuckToRight:!1,keyHandlers:[],mouseHandlers:[],movedColumns:[],movedRows:[],onError:()=>{},onSelectionChanged:()=>{},onMovedColumnsChanged:t=>{},onMoveColumnComplete:()=>{},onMovedRowsChanged:()=>{},onMoveRowComplete:()=>{},onViewChanged:()=>{},stateOverride:{},theme:{autoSelectColumn:!1,autoSelectRow:!1}};uo.pixelsPerLine=100/3;uo.dragTimeout=1e3;uo.getTheme=Ce((t,e)=>({...wv,...t,...e}));class Tp extends Fl{get floatingTopRowCount(){return 0}get floatingBottomRowCount(){return 0}get floatingLeftColumnCount(){return 0}get floatingRightColumnCount(){return 0}get columnHeaderMaxDepth(){return 1}truncationCharForCell(e,n){}textAlignForCell(e,n){return"left"}colorForCell(e,n,s){return s.textColor}backgroundColorForCell(e,n,s){return null}colorForColumnHeader(e,n=0){return null}textForRowHeader(e){return""}textForRowFooter(e){return""}isColumnMovable(e,n=0){return!0}isRowMovable(e){return!0}getColumnHeaderGroup(e,n){}getColumnHeaderParentGroup(e,n){}}class Hv extends Tp{constructor({rowCount:e=1e9,columnCount:n=100,floatingTopRowCount:s=0,floatingBottomRowCount:i=0,floatingLeftColumnCount:o=0,floatingRightColumnCount:r=0,isEditable:l=!1,editedData:a=[]}={}){super(),this.numRows=e,this.numColumns=n,this.floatingTop=s,this.floatingBottom=i,this.floatingLeft=o,this.floatingRight=r,this.editable=l,this.editedData=a}get rowCount(){return this.numRows}get columnCount(){return this.numColumns}get floatingTopRowCount(){return this.floatingTop}get floatingBottomRowCount(){return this.floatingBottom}get floatingLeftColumnCount(){return this.floatingLeft}get floatingRightColumnCount(){return this.floatingRight}get isEditable(){return this.editable}textForCell(e,n){var s,i;return(i=(s=this.editedData[e])==null?void 0:s[n])!=null?i:`${e},${n}`}colorForCell(e,n,s){return s.textColor}textForColumnHeader(e,n=0){return`${e}`}textForRowHeader(e){return`${e}`}textForRowFooter(e){return`${e}`}async setValueForCell(e,n,s){this.editedData[e]==null&&(this.editedData[e]=[]),this.editedData[e][n]=`${s}`}async setValueForRanges(e,n){re.forEachCell(e,(s,i)=>{this.setValueForCell(s,i,n)})}async setValues(e){var n,s;for(let i=0;i<e.length;i+=1){const o=e[i];this.setValueForCell((n=o.column)!=null?n:o.x,(s=o.row)!=null?s:o.y,o.text)}}editValueForCell(e,n){return this.textForCell(e,n)}isValidForCell(e,n,s){return!0}isEditableRange(e){return this.isEditable}delete(e){throw new Error("Method not implemented.")}}const oi=class extends Hv{constructor({rowCount:t=oi.DEFAULT_ROW_COUNT,columnCount:e=oi.DEFAULT_COLUMN_COUNT,children:n=new Map,childRowCount:s=Math.ceil(Math.max(oi.MIN_CHILD_ROW_COUNT,t*oi.DEFAULT_CHILD_ROW_COUNT_FACTOR)),maxDepth:i=oi.MAX_DEPTH}={}){super({rowCount:t,columnCount:e}),this.getCachedModelRowOffset=ln((o,r)=>{let l=null,a=r;const d=[...o].sort((c,u)=>c[0]-u[0]);for(let c=0;c<d.length;c+=1){const[u,m]=d[c];if(a<=u)break;const p=m.rowCount;if(a<=u+p){l=u,a=a-u-1;break}a-=p}return{key:l,offsetRow:a}}),this.getCachedTextForRowHeader=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return`${l}.${d.textForRowHeader(a)}`}return`${a}`}),this.getCachedTextForCell=ln((o,r,l)=>{const{key:a,offsetRow:d}=this.getCachedModelRowOffset(o,l);if(a!=null){const c=o.get(a);if(c!==void 0)return`${a}.${c.textForCell(r,d)}`}return`${r},${d}`}),this.getCachedIsRowExpandable=ln((o,r,l)=>this.getCachedDepthForRow(o,r)<l),this.getCachedIsRowExpanded=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return d.isRowExpanded(a)}return o.has(a)}),this.getCachedDepthForRow=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return d.depthForRow(a)+1}return 0}),this.children=n,this.childRowCount=s,this.maxDepth=i}textForCell(t,e){return this.getCachedTextForCell(this.children,t,e)}textForRowHeader(t){return this.getCachedTextForRowHeader(this.children,t)}isRowMovable(t){return!1}get hasExpandableRows(){return!0}get floatingBottomRowCount(){return 0}isRowExpandable(t){return this.getCachedIsRowExpandable(this.children,t,this.maxDepth)}isRowExpanded(t){return this.getCachedIsRowExpanded(this.children,t)}setRowExpanded(t,e){const{key:n,offsetRow:s}=this.getCachedModelRowOffset(this.children,t),i=new Map(this.children);if(n!=null){const o=this.children.get(n);if(o!==void 0){const{rowCount:r}=o;o.setRowExpanded(s,e),this.numRows+=o.rowCount-r}}else if(e){const o=new oi({rowCount:this.childRowCount,columnCount:this.numColumns});i.set(s,o),this.numRows+=o.rowCount}else{const o=i.get(s);o!==void 0&&(this.numRows-=o.rowCount,i.delete(s))}this.children=i}depthForRow(t){return this.getCachedDepthForRow(this.children,t)}};let ur=oi;ur.DEFAULT_ROW_COUNT=1e9;ur.DEFAULT_COLUMN_COUNT=100;ur.DEFAULT_CHILD_ROW_COUNT_FACTOR=.01;ur.MIN_CHILD_ROW_COUNT=10;ur.MAX_DEPTH=10;function Uv(t,e){const n=$v(t);return n===void 0?void 0:`${Yv(t)} ? ${n} : ${e}`}function Vv(t){return dh.Column.formatRowColor(t)}function Bv(t,e){return t.formatColor(e)}const Da=X.module("ConditionalFormattingUtils");var Qn=(t=>(t.CONDITIONAL="conditional",t.ROWS="rows",t))(Qn||{}),Xe=(t=>(t.IS_EQUAL="is-equal",t.IS_NOT_EQUAL="is-not-equal",t.IS_BETWEEN="is-between",t.GREATER_THAN="greater-than",t.GREATER_THAN_OR_EQUAL="greater-than-or-equal",t.LESS_THAN="less-than",t.LESS_THAN_OR_EQUAL="less-than-or-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Xe||{}),on=(t=>(t.IS_EXACTLY="is-exactly",t.IS_NOT_EXACTLY="is-not-exactly",t.CONTAINS="contains",t.DOES_NOT_CONTAIN="does-not-contain",t.STARTS_WITH="starts-with",t.ENDS_WITH="ends-with",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(on||{}),Ut=(t=>(t.IS_EXACTLY="is-exactly",t.IS_NOT_EXACTLY="is-not-exactly",t.IS_BEFORE="is-before",t.IS_BEFORE_OR_EQUAL="is-before-or-equal",t.IS_AFTER="is-after",t.IS_AFTER_OR_EQUAL="is-after-or-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Ut||{}),$o=(t=>(t.IS_TRUE="is-true",t.IS_FALSE="is-false",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))($o||{}),ui=(t=>(t.IS_EQUAL="is-equal",t.IS_NOT_EQUAL="is-not-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(ui||{}),Bn=(t=>(t.NO_FORMATTING="no-formatting",t.POSITIVE="positive",t.NEGATIVE="negative",t.WARN="warn",t.NEUTRAL="neutral",t.ACCENT_1="accent-1",t.ACCENT_2="accent-2",t.CUSTOM="custom",t))(Bn||{});function Lh(t){switch(t){case"no-formatting":return"No formatting";case"positive":return"Positive";case"negative":return"Negative";case"warn":return"Warn";case"neutral":return"Neutral";case"accent-1":return"Accent 1";case"accent-2":return"Accent 2";case"custom":return"Custom..."}}function Tl(t){const{type:e,customConfig:n}=t;switch(e){case"no-formatting":return;case"positive":return"#9fde6f";case"negative":return"#ff6087";case"warn":return"#f67f40";case"neutral":return"#ffd95c";case"accent-1":return"#78dce8";case"accent-2":return"#ab9bf5";case"custom":return n==null?void 0:n.background;default:return}}function El(t){const{type:e,customConfig:n}=t;switch(e){case"no-formatting":return;case"positive":return"#526a3f";case"negative":return"#802f44";case"warn":return"#663318";case"neutral":return"#63562b";case"accent-1":return"#3f6469";case"accent-2":return"#554d72";case"custom":return n==null?void 0:n.color;default:return}}function $v(t){const e=El(t.style),n=Tl(t.style);if(!(e===void 0||n===void 0))return`bgfg(\`${n}\`, \`${e}\`)`}function Wv(t){const{column:e,value:n,start:s,end:i}=t;return rT(e.name,t.condition,n,s,i)}function zv(t){const{column:e,value:n}=t;return lT(e.name,t.condition,n)}function Gv(t){const{column:e,value:n}=t;return aT(e.name,t.condition,n)}function Kv(t){const{column:e}=t;return dT(e.name,t.condition)}function qv(t){const{column:e,value:n}=t;return cT(e.name,t.condition,n)}function Yv(t){const{column:e}=t;if(L.isNumberType(e.type))return Wv(t);if(L.isCharType(e.type))return qv(t);if(L.isStringType(e.type))return zv(t);if(L.isDateType(e.type))return Gv(t);if(L.isBooleanType(e.type))return Kv(t);throw new Error("Invalid column type")}function Xv(t){switch(t){case"is-equal":return"is equal to";case"is-not-equal":return"is not equal to";case"is-between":return"is between";case"greater-than":return"greater than";case"greater-than-or-equal":return"greater than or equal to";case"less-than":return"less than";case"less-than-or-equal":return"less than or equal to";case"is-null":return"is null";case"is-not-null":return"is not null"}}function jv(t){switch(t){case"is-exactly":return"is exactly";case"is-not-exactly":return"is not exactly";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Zv(t){switch(t){case"is-exactly":return"is";case"is-not-exactly":return"is not";case"is-before":return"is before";case"is-before-or-equal":return"is before or equal";case"is-after":return"is after";case"is-after-or-equal":return"is after or equal";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Qv(t){switch(t){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Jv(t){switch(t){case"is-equal":return"is";case"is-not-equal":return"is not";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Ep(t){if(L.isNumberType(t)||L.isCharType(t))return"is-equal";if(L.isStringType(t)||L.isDateType(t))return"is-exactly";if(L.isBooleanType(t))return"is-true";throw new Error("Invalid column type")}function eT(t){if(L.isCharType(t)||L.isStringType(t))return""}function yp(t){const{condition:e,value:n,start:s,end:i}=t;return{condition:e,value:n,start:s,end:i}}function Jl(t){return{condition:Ep(t),value:eT(t),start:void 0,end:void 0}}function Ip(){return{type:"no-formatting"}}function tT(t){switch(t){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function nT(t){switch(t){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"is-before":return"<";case"is-before-or-equal":return"<=";case"is-after":return">";case"is-after-or-equal":return">=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function sT(t){switch(t){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function iT(t){switch(t){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function oT(t){switch(t){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-between":return"==";case"greater-than":return">";case"greater-than-or-equal":return">=";case"less-than":return"<";case"less-than-or-equal":return"<=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function rT(t,e,n,s,i){switch(e){case"is-equal":return`${t} == ${n}`;case"is-not-equal":return`${t} != ${n}`;case"is-between":return`${t} > ${s} && ${t} < ${i}`;case"greater-than":return`${t} > ${n}`;case"greater-than-or-equal":return`${t} >= ${n}`;case"less-than":return`${t} < ${n}`;case"less-than-or-equal":return`${t} <= ${n}`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function lT(t,e,n){switch(e){case"is-exactly":return`${t} == "${n}"`;case"is-not-exactly":return`${t} != "${n}"`;case"contains":return`${t} != null && ${t}.contains("${n}")`;case"does-not-contain":return`${t} != null && !${t}.contains("${n}")`;case"starts-with":return`${t} != null && ${t}.startsWith("${n}")`;case"ends-with":return`${t} != null && ${t}.endsWith("${n}")`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function aT(t,e,n){switch(e){case"is-exactly":return`${t} == convertDateTime("${n}")`;case"is-not-exactly":return`${t} != convertDateTime(\`${n}\`)`;case"is-before":return`${t} < convertDateTime(\`${n}\`)`;case"is-before-or-equal":return`${t} <= convertDateTime("${n}")`;case"is-after":return`${t} > convertDateTime(\`${n}\`)`;case"is-after-or-equal":return`${t} >= convertDateTime(\`${n}\`)`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function dT(t,e){switch(e){case"is-true":return`${t} == true`;case"is-false":return`${t} == false`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function cT(t,e,n){switch(e){case"is-equal":return`${t} == '${n}'`;case"is-not-equal":return`${t} != '${n}'`;case"is-null":return`isNull(${t})`;case"is-not-null":return`!isNull(${t})`}}function hT(t,e){if(L.isNumberType(t))return oT(e);if(L.isCharType(t))return iT(e);if(L.isStringType(t))return tT(e);if(L.isDateType(t))return nT(e);if(L.isBooleanType(t))return sT(e);throw new Error("Invalid column type")}function uT(t,e){if(e===void 0)return Da.debug("no rules passed."),[];const n=[];let s;const i=new Map;return e.forEach(({config:o,type:r})=>{var g;const{column:l}=o,a=t.find(({name:f,type:b})=>f===l.name&&b===l.type);if(a===void 0){Da.debug(`Column ${l.name}:${l.type} not found. Ignoring format rule.`,o);return}const[d,c]=(g=r==="conditional"?i.get(a.name):s)!=null?g:["null",void 0],u=Uv(o,d);if(u===void 0){Da.debug("Ignoring format rule.",o);return}const m=c===void 0?-1:n.indexOf(c);m>-1&&n.splice(m,1);const p=r==="conditional"?Bv(a,u):Vv(u);n.push(p),r==="conditional"?i.set(a.name,[u,p]):s=[u,p]}),n}function mT({type:t}){return L.isNumberType(t)||L.isCharType(t)||L.isStringType(t)||L.isDateType(t)||L.isBooleanType(t)}function ea({animation:t="iris-grid-bottom-bar-slide-up",children:e,className:n,isShown:s,onClick:i,onEntering:o,onEntered:r,onExiting:l,onExited:a}){return h(mt,{in:s,timeout:Be.transitionMs,classNames:t,onEntering:o,onEntered:r,onExiting:l,onExited:a,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:z("iris-grid-bottom-bar",n),role:"presentation",onClick:i,onKeyPress:i,children:e})})}const pT=3e3,gT=5;function fT({isSaving:t=!1,onSave:e,onDiscard:n,discardTooltip:s,saveTooltip:i,error:o,pendingDataErrors:r,pendingDataMap:l,onEntering:a,onEntered:d,onExiting:c,onExited:u}){const[m,p]=w.exports.useState(!1),[g,f]=w.exports.useState(!1),b=w.exports.useRef(),C=Al(t),S=w.exports.useMemo(()=>r.size===0?o:r.size<=gT?`Key can't be empty (on pending row${r.size>1?"s":""} ${Array.from(r.keys()).join(", ").trim()})`:`Key can't be empty (on ${r.size} rows)`,[o,r]);w.exports.useEffect(function(){C!=null&&C&&!t&&S==null&&(p(!0),f(!0),b.current=setTimeout(()=>{p(!1)},pT))},[S,t,C]),w.exports.useEffect(function(){b.current&&l.size>0&&(clearTimeout(b.current),p(!1),f(!1))},[l]),w.exports.useEffect(function(){return()=>b.current?clearTimeout(b.current):void 0},[]);const v=l.size;let y;return t?y=h(kn,{}):g&&(y=Id),T(ea,{className:"pending-data-bottom-bar",isShown:v>0||m||S!=null,onEntering:a,onEntered:d,onExiting:c,onExited:()=>{f(!1),u&&u()},children:[S!=null&&S!==""&&T("div",{className:"error-message",children:[h(Z,{icon:gs}),h("span",{children:`${S}`})]}),(S==null||S==="")&&h("div",{className:"status-message",children:v>0&&h("span",{children:`${v} row${v>1?"s":""} pending`})}),T("div",{className:"buttons-container",children:[!t&&!g&&h(W,{kind:"secondary",onClick:n,tooltip:s,children:"Discard"}),T(W,{kind:g?"success":"primary",onClick:e,icon:y,disabled:t||g||S!=null,tooltip:i,children:[t&&"Committing...",!t&&g&&"Success",!t&&!g&&"Commit"]})]})]})}var Oe=(t=>(t.COUNT="Count",t.MIN="Min",t.MAX="Max",t.SUM="Sum",t.ABS_SUM="AbsSum",t.VAR="Var",t.AVG="Avg",t.STD="Std",t.FIRST="First",t.LAST="Last",t.SKIP="Skip",t.COUNT_DISTINCT="CountDistinct",t.DISTINCT="Distinct",t.UNIQUE="Unique",t))(Oe||{});const CT=t=>{switch(t){default:return!1}},bT=(t,e)=>{switch(t){case Oe.COUNT:case Oe.FIRST:case Oe.LAST:case Oe.COUNT_DISTINCT:case Oe.DISTINCT:case Oe.UNIQUE:return!0;case Oe.MIN:case Oe.MAX:return L.isNumberType(e)||L.isDateType(e)||L.isTextType(e);case Oe.SUM:case Oe.ABS_SUM:case Oe.VAR:case Oe.AVG:case Oe.STD:return L.isNumberType(e);case Oe.SKIP:return!1}},tc=(t,e)=>t.filter(n=>bT(e,n.type)),ST=(t,e,n,s)=>tc(t,e).map(({name:i})=>i).filter(i=>n.includes(i)?!s:s),$s={isRollupOperation:CT,filterValidColumns:tc,getOperationColumnNames:ST};var bi=(t=>(t.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS="filter-control-change-clears-all-filters",t.LINK_CHANGE_CLEARS_ALL_FILTERS="link-change-clears-all-filters",t))(bi||{});const wT=Object.freeze([[bi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS,!1],[bi.LINK_CHANGE_CLEARS_ALL_FILTERS,!1]]),Rp={DEFAULTS:wT},vT=X.module("ColumnHeaderGroup");function Ma(t){return t instanceof zn}const Dp=class{constructor({name:t,children:e,color:n,depth:s,childIndexes:i,parent:o}){this.getVisibleRange=Ce(r=>{const l=this.childIndexes.flat(),a=j.getVisibleIndexes(l,r),d=Math.min(...a),c=Math.max(...a);return c-d!==l.length-1&&vT.warn(`Column header group ${this.name} is not contiguous`),[d,c]}),this.name=t,this.children=e,this.color=n,this.depth=s,this.childIndexes=i,this.parent=o}setParent(t){this.parent=t}addChildren(t){const e=new Set(this.children.concat(t));this.children=[...e]}removeChildren(t){const e=new Set(this.children);t.forEach(n=>e.delete(n)),this.children=[...e]}get isNew(){return this.name.startsWith(Dp.NEW_GROUP_PREFIX)}};let zn=Dp;zn.NEW_GROUP_PREFIX=":newGroup";const No=X.module("IrisGridUtils");function ks(t,e){return t>=0&&t<e.length}class te{static dehydrateGridState(e,n){const{isStuckToBottom:s,isStuckToRight:i,movedColumns:o,movedRows:r}=n,{columns:l}=e;return{isStuckToBottom:s,isStuckToRight:i,movedColumns:[...o].filter(({to:a,from:d})=>ks(a,l)&&(typeof d=="number"&&ks(d,l)||Array.isArray(d)&&ks(d[0],l)&&ks(d[1],l))).map(({to:a,from:d})=>({to:l[a].name,from:Array.isArray(d)?[l[d[0]].name,l[d[1]].name]:l[d].name})),movedRows:[...r]}}static hydrateGridState(e,n,s=[]){const{isStuckToBottom:i,isStuckToRight:o,movedColumns:r,movedRows:l}=n,{columns:a}=e,d=te.parseCustomColumnNames(s),c=a.map(({name:u})=>u).concat(d);return{isStuckToBottom:i,isStuckToRight:o,movedColumns:[...r].map(({to:u,from:m})=>{const p=g=>typeof g=="string"?c.findIndex(f=>f===g):g;return{to:p(u),from:Array.isArray(m)?[p(m[0]),p(m[1])]:p(m)}}).filter(({to:u,from:m})=>ks(u,c)&&(typeof m=="number"&&ks(m,c)||Array.isArray(m)&&ks(m[0],c)&&ks(m[1],c))),movedRows:[...l]}}static dehydrateIrisGridState(e,n){const{aggregationSettings:s={aggregations:[],showOnTop:!1},advancedFilters:i,customColumnFormatMap:o,isFilterBarShown:r,metrics:l,quickFilters:a,customColumns:d,conditionalFormats:c=[],reverseType:u,rollupConfig:m=void 0,showSearchBar:p,searchValue:g,selectDistinctColumns:f=[],selectedSearchColumns:b,sorts:C,invertSearchColumns:S,pendingDataMap:v=new Map,frozenColumns:y,columnHeaderGroups:E}=n;P(l);const{userColumnWidths:I,userRowHeights:R}=l,{columns:N}=e;return{advancedFilters:te.dehydrateAdvancedFilters(N,i),aggregationSettings:s,customColumnFormatMap:[...o],isFilterBarShown:r,quickFilters:te.dehydrateQuickFilters(a),sorts:te.dehydrateSort(C),userColumnWidths:[...I].filter(([F])=>F!=null&&F>=0&&F<N.length).map(([F,B])=>[N[F].name,B]),userRowHeights:[...R],customColumns:[...d],conditionalFormats:[...c],reverseType:u,rollupConfig:m,showSearchBar:p,searchValue:g,selectDistinctColumns:[...f],selectedSearchColumns:b,invertSearchColumns:S,pendingDataMap:te.dehydratePendingDataMap(N,v),frozenColumns:y,columnHeaderGroups:E==null?void 0:E.map(F=>({name:F.name,children:F.children,color:F.color}))}}static hydrateIrisGridState(e,n){var F,B;const{advancedFilters:s,aggregationSettings:i={aggregations:[],showOnTop:!1},customColumnFormatMap:o,isFilterBarShown:r,quickFilters:l,sorts:a,customColumns:d,conditionalFormats:c,userColumnWidths:u,userRowHeights:m,reverseType:p,rollupConfig:g=void 0,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:S,invertSearchColumns:v=!0,pendingDataMap:y=[],frozenColumns:E,columnHeaderGroups:I}=n,{columns:R,formatter:N}=e;return{advancedFilters:te.hydrateAdvancedFilters(R,s,N.timeZone),aggregationSettings:i,customColumnFormatMap:new Map(o),isFilterBarShown:r,quickFilters:te.hydrateQuickFilters(R,l,N.timeZone),sorts:te.hydrateSort(R,a),userColumnWidths:new Map(u.map(([U,x])=>typeof U=="string"||U instanceof String?[R.findIndex(({name:H})=>H===U),x]:[U,x]).filter(([U])=>U!=null&&U>=0&&U<R.length)),customColumns:d,conditionalFormats:c,userRowHeights:new Map(m),reverseType:p,rollupConfig:g,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:S,invertSearchColumns:v,pendingDataMap:te.hydratePendingDataMap(R,y),frozenColumns:E,columnHeaderGroups:te.parseColumnHeaderGroups(e,(B=I!=null?I:(F=e.layoutHints)==null?void 0:F.columnGroups)!=null?B:[]).groups}}static dehydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?o.name:void 0,advancedSettings:[...r]}}static hydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n,{columns:l}=e;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?te.getColumnByName(l,o):void 0,advancedSettings:new Map([...Rp.DEFAULTS,...r])}}static dehydrateQuickFilters(e){return[...e].map(([n,s])=>{const{text:i}=s;return[n,{text:i}]})}static hydrateQuickFilters(e,n,s){const i=n.map(([o,r])=>{const{text:l}=r;let a=null;try{const d=te.getColumn(e,o);d!=null&&(a=L.makeQuickFilter(d,l,s))}catch(d){No.error("hydrateQuickFilters error with",l,d)}return[o,{text:l,filter:a}]});return new Map(i)}static dehydrateAdvancedFilters(e,n){return[...n].map(([s,i])=>{const o=te.getColumn(e,s);P(o);const r=te.dehydrateAdvancedFilterOptions(o,i.options);return[s,{options:r}]})}static hydrateAdvancedFilters(e,n,s){const i=n.map(([o,r])=>{const l=te.getColumn(e,o);P(l);const a=te.hydrateAdvancedFilterOptions(l,r.options);let d=null;try{te.getColumn(e,o)!=null&&(d=L.makeAdvancedFilter(l,a,s))}catch(c){No.error("hydrateAdvancedFilters error with",a,c)}return[o,{options:a,filter:d}]});return new Map(i)}static dehydrateAdvancedFilterOptions(e,n){const{selectedValues:s,...i}=n;return{selectedValues:s==null?void 0:s.map(o=>te.dehydrateValue(o,e==null?void 0:e.type)),...i}}static hydrateAdvancedFilterOptions(e,n){const{selectedValues:s,...i}=n;return{selectedValues:s==null?void 0:s.map(o=>te.hydrateValue(o,e==null?void 0:e.type)),...i}}static dehydratePendingDataMap(e,n){return[...n].map(([s,{data:i}])=>[s,{data:[...i].map(([o,r])=>[e[o].name,te.dehydrateValue(r,e[o].type)])}])}static hydratePendingDataMap(e,n){const s=new Map,i=o=>(s.has(o)||s.set(o,e.findIndex(({name:r})=>r===o)),s.get(o));return new Map(n.map(([o,{data:r}])=>[o,{data:new Map(r.map(([l,a])=>{var c;const d=i(l);return P(d),[(c=i(l))!=null?c:null,te.hydrateValue(a,e[d].type)]}))}]))}static dehydrateValue(e,n){return L.isDateType(n)?te.dehydrateDateTime(e):L.isLongType(n)?te.dehydrateLong(e):e}static hydrateValue(e,n){return L.isDateType(n)?te.hydrateDateTime(e):L.isLongType(n)?te.hydrateLong(e):e}static dehydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.format(bs.FULL_DATE_FORMAT,e):null}static hydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.parse(bs.FULL_DATE_FORMAT,e):null}static dehydrateLong(e){return e!=null?`${e}`:null}static hydrateLong(e){return e!=null?M.LongWrapper.ofString(e):null}static dehydrateSort(e){return e.map(n=>{const{column:s,isAbs:i,direction:o}=n;return{column:s.index,isAbs:i,direction:o}})}static hydrateSort(e,n){return n.map(s=>{const{column:i,isAbs:o,direction:r}=s;if(r===L.sortDirection.reverse)return M.Table.reverse();const l=te.getColumn(e,i);if(l!=null){let a=l.sort();return o&&(a=a.abs()),r===L.sortDirection.descending?a=a.desc():a=a.asc(),a}return null}).filter(s=>s!=null&&s.direction!==L.sortDirection.reverse)}static extractTableSettings(e,n=[]){const{irisGridPanelState:s,irisGridState:i}=e,{partitionColumn:o,partition:r}=s,{advancedFilters:l,quickFilters:a,sorts:d}=i;return{advancedFilters:l,inputFilters:n,partition:r,partitionColumn:o,quickFilters:a,sorts:d}}static applyTableSettings(e,n,s){const{columns:i}=e;let o=[];n.quickFilters&&(o=te.getFiltersFromFilterMap(te.hydrateQuickFilters(i,n.quickFilters,s)));let r=[];n.advancedFilters&&(r=te.getFiltersFromFilterMap(te.hydrateAdvancedFilters(i,n.advancedFilters,s)));const l=te.getFiltersFromInputFilters(i,n.inputFilters,s);let a=[];n.sorts&&(a=te.hydrateSort(i,n.sorts));let d=[...o,...r];const{partition:c,partitionColumn:u}=n;if(c!=null&&u!=null){const m=te.getColumnByName(i,u);m&&(d=[m.filter().eq(M.FilterValue.ofString(c)),...d])}d=[...l,...d],e.applyFilter(d),e.applySort(a)}static getInputFiltersForColumns(e,n=[]){return n.filter(({name:s,type:i})=>e.find(({name:o,type:r})=>o===s&&r===i))}static getFiltersFromInputFilters(e,n=[],s){return n.map(({name:i,type:o,value:r})=>{const l=e.find(({name:a,type:d})=>a===i&&d===o);if(l)try{return L.makeQuickFilter(l,r,s)}catch(a){No.debug("Unable to create input filter",a)}return null}).filter(i=>i!=null)}static getFiltersFromFilterMap(e){const n=[],s=Array.from(e.keys());for(let i=0;i<s.length;i+=1){const o=s[i],r=e.get(o);r&&r.filter!=null&&n.push(r.filter)}return n}static getHiddenColumns(e){return[...e.entries()].filter(([,n])=>n===0).map(([n])=>n)}static parseCustomColumnNames(e){return e.map(n=>n.split("=")[0])}static getRemovedCustomColumnNames(e,n){const s=te.parseCustomColumnNames(e),i=te.parseCustomColumnNames(n);return s.filter(o=>!i.includes(o))}static removeSortsInColumns(e,n){return e.filter(s=>!n.includes(s.column.name))}static removeFiltersInColumns(e,n,s){const i=e.map(({name:r})=>r),o=new Map(n);return s.forEach(r=>o.delete(i.indexOf(r))),o}static removeColumnFromMovedColumns(e,n,s){const i=e.map(({name:r})=>r);let o=[...n];for(let r=0;r<s.length;r+=1){const l=s[r];let a=i.findIndex(c=>c===l);const d=[];for(let c=0;c<o.length;c+=1){const u=o[c],m={...u};let[p,g]=Array.isArray(u.from)?u.from:[u.from,u.from];a<=u.to&&(m.to-=1),a<p&&(p-=1),a<=g&&(g-=1),p<=g&&p!==m.to&&(p===g?d.push({...m,from:p}):d.push({...m,from:[p,g]})),a=j.applyItemMoves(a,a,[u])[0][0]}o=d,i.splice(i.findIndex(c=>c===l),1)}return o}static removeColumnsFromSelectDistinctColumns(e,n){return e.filter(s=>!n.includes(s))}static getVisibleColumnsInRange(e,n,s,i,o){const r=[];for(let l=n;l<=s;l+=1){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.push(e[a])}return r}static getPrevVisibleColumns(e,n,s,i,o){const r=[];let l=n;for(;l>=0&&r.length<s;){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.unshift(e[a]),l-=1}return r}static getNextVisibleColumns(e,n,s,i,o){const r=[];let l=n;for(;l<e.length&&r.length<s;){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.push(e[a]),l+=1}return r}static getColumnsToFetch(e,n,s){const i=[...n];return s.forEach(o=>{const r=e.find(({name:l})=>l===o);r!=null&&!n.includes(r)&&i.push(r)}),i}static getModelViewportColumns(e,n,s,i,o=[],r=[],l=0){if(n==null||s==null)return null;const a=te.getVisibleColumnsInRange(e,n,s,i,o),d=a.length*l,c=te.getPrevVisibleColumns(e,n-1,d,i,o),u=te.getNextVisibleColumns(e,s+1,d,i,o),m=[...c,...a,...u];return te.getColumnsToFetch(e,m,r)}static rangeSetFromRanges(e){const n=e.slice().sort((s,i)=>(P(s.startRow),P(i.startRow),s.startRow-i.startRow)).map(s=>{const{startRow:i,endRow:o}=s;return P(i),P(o),M.RangeSet.ofRange(i,o)});return M.RangeSet.ofRanges(n)}static isValidSnapshotRanges(e){if(e==null||e.length===0)return!1;const n=new Map;for(let o=0;o<e.length;o+=1){const r=e[o],l=`${r.startRow}:${r.endRow}`,a=`${r.startColumn}:${r.endColumn}`;n.has(l)||n.set(l,[]),n.get(l).push(a)}const s=[...n.keys()],i=n.get(s[0]).sort().join(",");for(let o=1;o<s.length;o+=1)if(n.get(s[o]).sort().join(",")!==i)return!1;return!0}static isValidIndex(e){return!Number.isInteger(e)||typeof e!="number"?!1:e>=0}static columnsFromRanges(e,n){var i,o;if(e==null||e.length===0)return[];if(e[0].startColumn===null&&e[0].endColumn===null)return n;const s=new Set;for(let r=0;r<e.length;r+=1){const l=e[r];P(l.startColumn),P(l.endColumn);for(let a=(i=l.startColumn)!=null?i:0;a<=((o=l.endColumn)!=null?o:n.length-1);a+=1)s.add(a)}return[...s].map(r=>n[r])}static snapshotDataToMatrix(e){const{columns:n,rows:s}=e,i=[];for(let o=0;o<s.length;o+=1){const r=s[o],l=[];for(let a=0;a<n.length;a+=1){const d=n[a],c=r.get(d);l.push(c)}i.push(l)}return i}static getModelRollupConfig(e,n,s){var u,m,p;if(((m=(u=n==null?void 0:n.columns)==null?void 0:u.length)!=null?m:0)===0)return null;const{columns:i=[],showConstituents:o=!0,showNonAggregatedColumns:r=!0,includeDescriptions:l=!0}=n!=null?n:{},{aggregations:a=[]}=s!=null?s:{},d=a.map(({operation:g,selected:f,invert:b})=>$s.isRollupOperation(g)?[]:$s.getOperationColumnNames(e,g,f,b)),c={};for(let g=0;g<a.length;g+=1)c[a[g].operation]=d[g];if(r){const g=new Set(e.map(f=>f.name).filter(f=>!i.includes(f)));if(d.forEach(f=>{f.forEach(b=>g.delete(b))}),g.size>0){const f=(p=c[Oe.FIRST])!=null?p:[];c[Oe.FIRST]=[...f,...g]}}return{groupingColumns:i,includeConstituents:o,includeDescriptions:l,aggregations:c}}static getPendingErrors(e){e.forEach((n,s)=>{if(!te.isValidIndex(s))throw new Error(`Invalid rowIndex ${s}`);const{data:i}=n;i.forEach((o,r)=>{if(!te.isValidIndex(r))throw new Error(`Invalid columnIndex ${r}`)})})}static getColumn(e,n){return n<e.length?e[n]:(No.error("Unable to retrieve column",n,">=",e.length),null)}static getColumnByName(e,n){const s=e.find(({name:i})=>i===n);return s==null&&No.error("Unable to retrieve column by name",n,e.map(({name:i})=>i)),s}static changeFilterColumnNamesToIndexes(e,n){return n.map(({name:s,filter:i})=>{const o=e.findIndex(r=>r.name===s);return o<0?null:[o,i]}).filter(s=>s!=null)}static combineFiltersFromList(e,n){n.sort((i,o)=>i.operator==="eq"&&o.operator!=="eq"?1:i.operator!=="eq"&&o.operator==="eq"?-1:i.startColumnIndex-o.startColumnIndex);let s="";for(let i=0;i<n.length;i+=1){const{text:o,value:r,operator:l}=n[i];if(r!==void 0){let a="";l!==void 0&&(r==null&&l==="eq"?a="=":l!=="eq"&&(l==="startsWith"||l==="endsWith"?a="*":a=L.getFilterOperatorString(l)));let d=`${a}${o}`;l==="startsWith"&&(d=`${o}${a}`),e!=null&&r!==null&&L.isCharType(e)&&(d=`${a}${String.fromCharCode(parseInt(o,10))}`),i!==0&&(s+=l==="eq"?" || ":" && "),s+=d}}return s}static parseColumnHeaderGroups(e,n){let s=1;const i=new Map,o=new Map,r=n==null?void 0:n.filter(({children:u})=>u.length>0);if(r.length===0)return{groups:[],maxDepth:s,parentMap:i,groupMap:o};const l=new Map(r.map(u=>[u.name,u])),a=new Set,d=u=>{const{name:m}=u;if(e.getColumnIndexByName(m)!=null)throw new Error(`Column header group has same name as column: ${m}`);const p=o.get(m);if(p)return p;const g=[];let f=1;u.children.forEach(C=>{if(a.has(C))throw new Error(`Column group child ${C} specified in multiple groups`);a.add(C);const S=l.get(C),v=e.getColumnIndexByName(C);if(S){const y=d(S);g.push(...y.childIndexes),f=Math.max(f,y.depth+1)}else if(v!=null)g.push(v),f=Math.max(f,1);else throw new Error(`Unknown child ${C} in group ${m}`)});const b=new zn({...u,depth:f,childIndexes:g.flat()});return o.set(m,b),u.children.forEach(C=>i.set(C,b)),s=Math.max(s,b.depth+1),b},c=new Set;return r.forEach(u=>{const{name:m}=u;if(c.has(m))throw new Error(`Duplicate column group name: ${m}`);c.add(m),d(u)}),o.forEach(u=>{var m;u.setParent((m=i.get(u.name))==null?void 0:m.name)}),{groups:[...o.values()],maxDepth:s,groupMap:o,parentMap:i}}}const Jt=X.module("IrisGridCopyHandler"),He=class extends w.exports.Component{constructor(t){super(t),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleCopyClick=this.handleCopyClick.bind(this),this.handleHideTimeout=this.handleHideTimeout.bind(this),this.state={error:void 0,copyState:He.COPY_STATES.IDLE,buttonState:He.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(t,e){switch(t){case He.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${e.toLocaleString()} rows to your clipboard?`;case He.COPY_STATES.CLICK_REQUIRED:return`Fetched ${e.toLocaleString()} rows!`;case He.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case He.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${e.toLocaleString()} rows for clipboard...`;case He.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(t){switch(t){case He.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case He.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case He.BUTTON_STATES.RETRY:return"Retry";default:return"Copy"}}componentDidMount(){const{copyOperation:t}=this.props;t!=null&&this.startCopy()}componentDidUpdate(t){const{copyOperation:e}=this.props;t.copyOperation!==e&&this.startCopy()}componentWillUnmount(){this.stopCopy()}startCopy(){Jt.debug2("startCopy"),this.stopCopy();const{copyOperation:t}=this.props;if(t==null){Jt.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:e,error:n}=t;if(n!=null){Jt.debug("Showing copy error",n),this.setState({isShown:!0,copyState:He.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=re.rowCount(e);this.setState({rowCount:s,isShown:!0,error:void 0}),s>He.NO_PROMPT_THRESHOLD?this.setState({buttonState:He.BUTTON_STATES.COPY,copyState:He.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){Jt.debug2("handleBackgroundClick");const{copyState:t}=this.state;t===He.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){Jt.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){Jt.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){Jt.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(t){Jt.debug2("copyText",t),this.textData=t,ro(t).then(()=>{this.setState({copyState:He.COPY_STATES.DONE}),this.startHideTimer()},e=>{Jt.error("copyText error",e),this.setState({buttonState:He.BUTTON_STATES.CLICK_TO_COPY,copyState:He.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:He.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:He.COPY_STATES.FETCH_IN_PROGRESS});const{model:t,copyOperation:e}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:o,formatValues:r}=e;Jt.debug("startFetch",n);const l=te.getHiddenColumns(i);let a=j.getModelRanges(n,o);if(l.length>0){const c=l.map(re.makeColumn);a=re.subtractRangesFromRanges(a,c)}const d=r!=null&&r?(c,u)=>t.displayString(c,u.type,u.name):c=>`${c}`;this.fetchPromise=ye.makeCancelable(t.textSnapshot(a,s,d)),this.fetchPromise.then(c=>{this.fetchPromise=void 0,this.copyText(c)}).catch(c=>{c instanceof Qi?Jt.debug("User cancelled copy."):(Jt.error("Error fetching contents",c),this.fetchPromise=void 0,this.setState({buttonState:He.BUTTON_STATES.RETRY,copyState:He.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(Jt.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,He.HIDE_TIMEOUT)}stopHideTimer(){this.hideTimer!=null&&(clearTimeout(this.hideTimer),this.hideTimer=void 0)}render(){const{onEntering:t,onEntered:e,onExiting:n,onExited:s}=this.props,{buttonState:i,copyState:o,isShown:r,rowCount:l,error:a}=this.state,d=o===He.COPY_STATES.DONE?"fade":"copy-slide-up",c=He.getCopyButtonText(i),u=a!=null?a:He.getStatusMessageText(o,l),m=o!==He.COPY_STATES.DONE,p=i===He.BUTTON_STATES.FETCH_IN_PROGRESS,g=o===He.COPY_STATES.DONE;return T(ea,{animation:d,isShown:r,className:z("iris-grid-copy-handler",{"copy-done":g}),onClick:this.handleBackgroundClick,onEntering:t,onEntered:e,onExiting:n,onExited:s,children:[h("div",{className:"status-message",children:h("span",{children:u})}),h(mt,{in:m,timeout:Be.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:T("div",{className:"buttons-container",children:[h("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),T(W,{kind:p?"tertiary":"primary",className:z("btn-copy",{"btn-spinner":p}),onClick:this.handleCopyClick,disabled:p,children:[p&&h(kn,{}),c]})]})})]})}};let mo=He;mo.NO_PROMPT_THRESHOLD=1e4;mo.HIDE_TIMEOUT=3e3;mo.COPY_STATES={IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"};mo.BUTTON_STATES={COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"};mo.defaultProps={copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}};class Mp extends w.exports.PureComponent{constructor(e){super(e);const{debounceMs:n}=e;this.debouncedSendUpdate=je(this.sendUpdate.bind(this),n),this.handleCancel=this.handleCancel.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCommit=this.handleCommit.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.inputField=null;const{value:s}=e;this.initialValue=s,this.state={isChanged:!1,value:s}}componentDidMount(){var e;(e=this.inputField)==null||e.focus()}componentDidUpdate(e){const{debounceMs:n}=this.props;e.debounceMs!==n&&(this.debouncedSendUpdate.flush(),this.debouncedSendUpdate=je(this.sendUpdate.bind(this),n))}componentWillUnmount(){this.debouncedSendUpdate.cancel()}setValue(e){this.initialValue=e,this.setState({value:e})}focus(){var e;(e=this.inputField)==null||e.focus()}handleChange(e){const{value:n}=e.target;this.setState({value:n,isChanged:!0}),this.debouncedSendUpdate(n)}handleCancel(){this.debouncedSendUpdate.cancel();const{initialValue:e}=this,{isChanged:n}=this.state;n&&this.sendUpdate(e);const{onDone:s}=this.props;s()}handleCommit(e=!0,n=!0){this.debouncedSendUpdate.flush();const{onDone:s}=this.props;s(e,n)}handleFocus(){var e;(e=this.inputField)==null||e.select()}handleBlur(e){const{relatedTarget:n}=e;n!=null&&n.classList.contains("context-menu-container")?this.handleCommit(!1,!0):n!=null&&n.classList.contains("advanced-filter-button")?this.handleCommit(!1,!1):this.handleCommit(!0,!0)}handleTab(e=!1){this.debouncedSendUpdate.flush();const{onTab:n}=this.props;n(e)}handleKeyDown(e){switch(e.key){case"Escape":e.stopPropagation(),e.preventDefault(),this.handleCancel();break;case"Enter":e.stopPropagation(),e.preventDefault(),this.handleCommit();break;case"Tab":e.stopPropagation(),e.preventDefault(),this.handleTab(e.shiftKey);break}}handleContextMenu(e){const{onContextMenu:n}=this.props;n(e)}sendUpdate(e){const{onChange:n}=this.props;n(e)}render(){const{className:e,style:n,isAdvancedFilterSet:s,onAdvancedFiltersTriggered:i}=this.props,{value:o}=this.state;return T("div",{style:n,className:"iris-grid-input-autosized-wrapper","data-value":o,children:[h("input",{ref:r=>{this.inputField=r},className:z("iris-grid-input-field",e),type:"text",value:o,onBlur:this.handleBlur,onFocus:this.handleFocus,onChange:this.handleChange,onKeyDown:this.handleKeyDown,onContextMenu:this.handleContextMenu,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"}),h("div",{className:"advanced-filter-button-container",children:h(W,{kind:"ghost",className:z("btn-link-icon advanced-filter-button",{"filter-set":s}),onClick:i,onContextMenu:this.handleContextMenu,children:T("div",{className:"fa-layers ",children:[h(Z,{icon:Dd,className:"filter-solid"}),h(Z,{icon:hl,className:"filter-light"})]})})})]})}}Mp.defaultProps={style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150};class TT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){const{selectedRanges:n}=this.irisGrid.state;return e.key==="c"&&We.isModifierKeyDown(e)?(te.isValidSnapshotRanges(n)?this.irisGrid.copyRanges(n):this.irisGrid.copyRanges(n,!1,!1,"Invalid copy ranges"),!0):!1}}const ET={TOGGLE_QUICK_FILTER:Le.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[he.CTRL,me.F],macShortcut:[he.CMD,me.F]}),CLEAR_ALL_FILTERS:Le.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[he.CTRL,me.E],macShortcut:[he.CMD,me.E]}),CLEAR_FILTERS:Le.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[he.CTRL,he.SHIFT,me.E],macShortcut:[he.CMD,he.SHIFT,me.E]}),REVERSE:Le.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[he.CTRL,me.I],macShortcut:[he.CMD,me.I]}),TOGGLE_SEARCH:Le.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[he.CTRL,he.SHIFT,me.F],macShortcut:[he.CMD,he.SHIFT,me.F]}),GOTO_ROW:Le.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[he.CTRL,me.G],macShortcut:[he.CMD,me.G]})},yT={COMMIT:Le.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[he.CTRL,me.S],macShortcut:[he.CMD,me.S]}),DISCARD:Le.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[he.CTRL,he.ALT,me.S],macShortcut:[he.CMD,he.OPTION,me.S]})},an={TABLE:ET,INPUT_TABLE:yT};class IT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){if(an.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:n}=this.irisGrid.state;return n===L.REVERSE_TYPE.NONE?this.irisGrid.reverse(L.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(L.REVERSE_TYPE.NONE),!0}return!1}}class RT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){return an.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}class DT extends Dt{constructor(e){super(850),this.irisGrid=e}destroyColumnTooltip(){this.irisGrid.setState({overflowButtonTooltipProps:null})}setCursor(e){return this.isHoveringOverflowButton(e)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:n,column:s,row:i}){if(s==null||i==null)return null;const{renderer:o,grid:r,state:l,props:a}=this.irisGrid;if(!r)return null;const{metrics:d}=l,{model:c}=a,{canvasContext:u}=r,m=r.getTheme(),p={context:u,mouseX:e,mouseY:n,metrics:d,model:c,theme:m},{left:g,top:f,width:b,height:C}=o.getCellOverflowButtonPosition(p);return g==null||b==null||f==null||C==null?null:{left:g,top:f,width:b,height:C}}isHoveringOverflowButton(e){var C;const{x:n,y:s}=e,{left:i,top:o,width:r,height:l}=(C=this.getButtonPosition(e))!=null?C:{};if(i==null||r==null||o==null||l==null)return!1;const{renderer:a,grid:d,state:c,props:u}=this.irisGrid;if(!d)return!1;const{metrics:m}=c,{model:p}=u,{canvasContext:g}=d,f=d.getTheme(),b={context:g,mouseX:n,mouseY:s,metrics:m,model:p,theme:f};return a.shouldRenderOverflowButton(b)&&n>=i&&n<=i+r&&s>=o&&s<=o+l}onMove(e){if(this.isHoveringOverflowButton(e)){const{overflowButtonTooltipProps:n}=this.irisGrid.state,s=this.getButtonPosition(e);ut(n,s)||this.irisGrid.setState({overflowButtonTooltipProps:s})}else this.destroyColumnTooltip();return this.setCursor(e)}onWheel(e){return this.destroyColumnTooltip(),this.onMove(e)}onDown(e){this.destroyColumnTooltip();const{column:n,row:s}=e;return this.isHoveringOverflowButton(e)&&this.irisGrid.setState({showOverflowModal:!0,overflowText:this.irisGrid.getValueForCell(n,s)}),!1}onContextMenu(){return this.destroyColumnTooltip(),!1}onLeave(){return this.destroyColumnTooltip(),!1}}class MT extends Dt{constructor(e){super(),this.irisGrid=e,this.cursor=null}isActive(){const{isSelectingColumn:e}=this.irisGrid.props;return e}isValidColumn(e){if(e==null)return!1;const{columnSelectionValidator:n}=this.irisGrid.props;return n!=null?n(e):!0}updateColumnSelectionStatus(){const{columnSelectionValidator:e}=this.irisGrid.props;e!=null&&e(null)}getTableColumn(e){if(e==null)return null;const{model:n}=this.irisGrid.props,s=this.irisGrid.getModelColumn(e);return s==null?null:n.columns[s]}onMove(e){if(!this.isActive())return!1;const{columnAllowedCursor:n,columnNotAllowedCursor:s}=this.irisGrid.props,{column:i}=e,o=this.getTableColumn(i);return this.isValidColumn(o)?(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:i})):(this.cursor=s,this.irisGrid.setState({hoverSelectColumn:null})),!0}onWheel(e){if(!this.isActive())return!1;const{columnAllowedCursor:n,columnNotAllowedCursor:s}=this.irisGrid.props,{column:i}=e,o=this.getTableColumn(i);return this.isValidColumn(o)?this.cursor=n:this.cursor=s,{preventDefault:!1,stopPropagation:!1}}onLeave(){return this.isActive()&&this.irisGrid.setState({hoverSelectColumn:null}),this.updateColumnSelectionStatus(),!1}onDown(){return this.isActive()}onClick(e){if(!this.isActive())return!1;const{column:n}=e,s=this.getTableColumn(n);return s!=null&&this.isValidColumn(s)&&this.irisGrid.selectColumn(s),!0}}class NT extends Dt{constructor(e){super(),this.irisGrid=e}hideColumnTooltip(){const{tooltip:e}=this.irisGrid;e&&(e.stopTimer(),e.hide())}onDown(){return this.hideColumnTooltip(),!1}onContextMenu(){return this.hideColumnTooltip(),!1}onWheel(){return this.hideColumnTooltip(),!1}onLeave(e,n,s){const{relatedTarget:i}=s instanceof MouseEvent?s:s.nativeEvent,{tooltip:o}=this.irisGrid;if(!o)return!1;const r=o.popper.current;return r&&i instanceof Element&&r.element.contains(i)||this.hideColumnTooltip(),!1}onMove(e){const{column:n,row:s,columnHeaderDepth:i}=e,{shownColumnTooltip:o}=this.irisGrid.state;let r=null;return n!==null&&s===null&&i===0&&(r=n),r!==o&&this.irisGrid.setState({shownColumnTooltip:r}),!1}}const Np=class extends w.exports.Component{constructor(t=Np.defaultProps){super(t),this.handleInputChange=this.handleInputChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.inputRef=Y.createRef()}handleInputChange(){const{onChange:t}=this.props;this.inputRef.current&&t(this.inputRef.current.value)}closeContextMenu(){const{forwardedProps:t}=this.props,{closeMenu:e}=t;e(!0)}revertToDefault(){const{onChange:t}=this.props;t(null)}returnFocusToContextMenu(){const t=vb.getClosestByClassName(this.inputRef.current,"context-menu-container");t instanceof HTMLElement&&t.focus()}handleKeyDown(t){switch(t.key){case"Enter":t.stopPropagation(),this.closeContextMenu();break;case"Escape":t.stopPropagation(),this.revertToDefault(),this.closeContextMenu();break;case"ArrowRight":case"ArrowLeft":t.stopPropagation();break;case"ArrowUp":case"ArrowDown":this.returnFocusToContextMenu();break;default:t.stopPropagation()}}render(){const{formatString:t,forwardedProps:e,placeholder:n,title:s}=this.props,{menuItem:{description:i},iconElement:o}=e;return T("div",{className:"form-group flex-grow mb-0",children:[T("div",{className:"custom-format-title",children:[h("span",{className:"icon",children:o}),T("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h(ze,{children:i})]})]}),h("div",{className:"pl-2 pr-2 pb-2",children:h("input",{id:"custom-format-input",className:"form-control text-right mb-0",type:"text",defaultValue:t,ref:this.inputRef,placeholder:n,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"})})]})}};let Fp=Np;Fp.defaultProps={formatString:"",forwardedProps:{menuItem:{},closeMenu(t){},iconElement:null},placeholder:"",title:"",onChange(t){}};class dn{static isDefaultSelected(e){return!e||![tt.TYPE_CONTEXT_CUSTOM,tt.TYPE_CONTEXT_PRESET].includes(e.type)}static isCustomSelected(e){return e!=null&&e.type===tt.TYPE_CONTEXT_CUSTOM}static makeOption(e,n,s,i){return{title:e,description:e,group:s,format:n,isSelected:i}}static makeCustomFormatOption(e,n,s,i,o){return{title:e.label,description:e.label,format:e,group:n,isSelected:i,menuElement:h(Fp,{formatString:e.formatString,title:e.label,placeholder:s,onChange:o})}}}const $n=class{static getOptions(t,e){const n=new Date,i=[{group:$n.dateGroup,formatString:"yyyy-MM-dd"},{group:$n.dateGroup,formatString:"MM-dd-yyyy"},{group:$n.timeGroup,formatString:"HH:mm:ss"},{group:$n.timeGroup,formatString:"HH:mm:ss.SSS"},{group:$n.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(r=>{const l=nt.makeFormat("",r.formatString,nt.TYPE_CONTEXT_PRESET),a=t.getFormattedString(n,L.dataType.DATETIME,"",l);return dn.makeOption(a,l,r.group,nt.isSameFormat(l,e))});return[dn.makeOption("Default",null,$n.dateGroup,dn.isDefaultSelected(e)),...i]}};let ta=$n;ta.dateGroup=10;ta.timeGroup=20;ta.dateTimeGroup=30;const Wn=class{static getOptions(t,e){const n=[{format:_e.FORMAT_PERCENT,group:Wn.presetGroup},{format:_e.FORMAT_BASIS_POINTS,group:Wn.presetGroup},{format:_e.FORMAT_MILLIONS,group:Wn.presetGroup},{format:_e.FORMAT_SCIENTIFIC_NOTATION,group:Wn.presetGroup},{format:_e.FORMAT_ROUND,group:Wn.presetRoundGroup},{format:_e.FORMAT_ROUND_TWO_DECIMALS,group:Wn.presetRoundGroup},{format:_e.FORMAT_ROUND_FOUR_DECIMALS,group:Wn.presetRoundGroup}],s=dn.makeOption("Default",null,Wn.defaultGroup,dn.isDefaultSelected(t)),i=n.map(a=>dn.makeOption(a.format.label,a.format,a.group,_e.isSameFormat(a.format,t))),o=dn.isCustomSelected(t),r=o?t:_e.makeCustomFormat(),l=dn.makeCustomFormatOption(r,Wn.customGroup,_e.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=_e.makeCustomFormat(a);_e.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let mr=Wn;mr.defaultGroup=10;mr.presetGroup=20;mr.presetRoundGroup=30;mr.customGroup=40;const Wo=class{static getOptions(t,e){const n=[{format:Ze.FORMAT_MILLIONS,group:Wo.presetGroup},{format:Ze.FORMAT_SCIENTIFIC_NOTATION,group:Wo.presetGroup}],s=dn.makeOption("Default",null,Wo.defaultGroup,dn.isDefaultSelected(t)),i=n.map(a=>dn.makeOption(a.format.label,a.format,a.group,Ze.isSameFormat(a.format,t))),o=dn.isCustomSelected(t),r=o?t:Ze.makeCustomFormat(),l=dn.makeCustomFormatOption(r,Wo.customGroup,Ze.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=Ze.makeCustomFormat(a);Ze.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let na=Wo;na.defaultGroup=10;na.presetGroup=20;na.customGroup=30;const Ah=X.module("IrisGridContextMenuHandler"),FT=150,Ph="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",J=class extends Dt{constructor(t){super(),this.debouncedUpdateCustomFormat=je(t.handleFormatSelection,FT),this.irisGrid=t}static getQuickFilterCondition(t,e,n){return t&&n==="&&"?t.and(e):t&&n==="||"?t.or(e):e}static getQuickFilterText(t,e,n){return n&&t!=null?`${t} ${n} ${e}`:e}static getOperatorAsText(t){return t==="&&"?"And":"Or"}static getNumberValueEqualsFilter(t,e){const n=t.filter();if(e===Number.POSITIVE_INFINITY)return M.FilterCondition.invoke("isInf",n).and(n.greaterThan(M.FilterValue.ofNumber(0)));if(e===Number.NEGATIVE_INFINITY)return M.FilterCondition.invoke("isInf",n).and(n.lessThan(M.FilterValue.ofNumber(0)));if(Number.isNaN(e))return M.FilterCondition.invoke("isNaN",n);const s=J.getFilterValueForNumberOrChar(t.type,e);return n.eq(s)}static getFilterValueForNumberOrChar(t,e){return L.isCharType(t)?M.FilterValue.ofString(String.fromCharCode(e)):M.FilterValue.ofNumber(e)}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(t,e){var N;const{irisGrid:n}=this,{column:s}=e;P(s);const{model:i}=n.props,{columns:o}=i,r=o[t],l=[],{metrics:a,reverseType:d,quickFilters:c,advancedFilters:u,searchFilter:m}=n.state,p=n.getTheme();P(a);const{filterIconColor:g,filterBarActiveColor:f,contextMenuSortIconColor:b,contextMenuReverseIconColor:C}=p,S=i.sort,v=L.getSortForColumn(S,t),y=d!==L.REVERSE_TYPE.NONE,{userColumnWidths:E}=a,I=[...E.values()].some(F=>F===0),R=i.isColumnFrozen(s);return l.push({title:"Hide Column",group:J.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),l.push({title:R?"Unfreeze Column":"Freeze Column",group:J.GROUP_HIDE_COLUMNS,action:()=>{R?this.irisGrid.unFreezeColumnByColumnName(r.name):this.irisGrid.freezeColumnByColumnName(r.name)},order:10}),l.push({title:"Show All Columns",group:J.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!I}),l.push({title:"Quick Filters",icon:ss,iconColor:f,shortcut:an.TABLE.TOGGLE_QUICK_FILTER,group:J.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),l.push({title:"Advanced Filters",icon:u.get(t)?Dd:hl,iconColor:g,group:J.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),l.push({title:"Clear Table Filters",group:J.GROUP_FILTER,order:40,shortcut:an.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(c.size>0||u.size>0||m!=null)}),l.push({title:"Sort by",icon:ss,iconColor:b,group:J.GROUP_SORT,order:10,actions:this.sortByActions(r,t,v)}),l.push({title:"Add Additional Sort",disabled:v&&S.length===1||y&&S.length===1||v&&y&&S.length===2||S.length===0,group:J.GROUP_SORT,order:20,actions:this.additionalSortActions(r,t)}),l.push({title:"Clear Table Sorting",disabled:S.length===0||y&&S.length===1,group:J.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,J.COLUMN_SORT_DIRECTION.none)},order:30}),l.push({title:d===L.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:ss,iconColor:C,group:J.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:an.TABLE.REVERSE,action:()=>{d===L.REVERSE_TYPE.NONE?this.irisGrid.reverse(L.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(L.REVERSE_TYPE.NONE)}}),l.push({title:"Copy Column Name",group:J.GROUP_COPY,action:()=>{var F;ro((F=i.textForColumnHeader(t))!=null?F:"").catch(B=>Ah.error("Unable to copy header",B))}}),L.isDateType(r.type)?l.push({title:"Date/Time Format",group:J.GROUP_FORMAT,actions:this.dateFormatActions(r)}):L.isNumberType(r.type)&&l.push({title:"Number Format",group:J.GROUP_FORMAT,actions:(N=this.numberFormatActions(r))!=null?N:void 0}),l}getCellActions(t,e,n){P(t);const{irisGrid:s}=this,{column:i,row:o}=n,{model:r,canCopy:l}=s.props,{columns:a}=r,d=s.getModelRow(o);P(d);const c=r.valueForCell(t,d),u=r.textForCell(t,d),m=a[t],p=[],{quickFilters:g}=s.state,f=s.getTheme(),{filterIconColor:b}=f,{settings:C}=s.props,S=new nt({timeZone:C==null?void 0:C.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Ph}),v=new nt({timeZone:C==null?void 0:C.timeZone,showTimeZone:C==null?void 0:C.showTimeZone,showTSeparator:C==null?void 0:C.showTSeparator,defaultDateTimeFormatString:Ph});if(m==null||o==null)return p;if(r.isFilterable(t)){const E={title:"Filter By Value",icon:ss,iconColor:b,group:J.GROUP_FILTER,order:10,actions:[]};if(c==null)g.get(t)&&E.actions.push({title:"And",actions:this.nullFilterActions(m,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.nullFilterActions(m));else if(L.isBooleanType(m.type))g.get(t)&&E.actions.push({title:"Or",actions:this.booleanFilterActions(m,u,g.get(t),"||"),order:2,group:oe.groups.high}),E.actions.push(...this.booleanFilterActions(m,u));else if(L.isNumberType(m.type)||L.isCharType(m.type)){P(t);const I=L.isCharType(m.type)?String.fromCharCode(c):`${c}`;g.get(t)&&E.actions.push({title:"And",actions:this.numberFilterActions(m,I,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.numberFilterActions(m,I,c,g.get(t)))}else if(L.isDateType(m.type)){const I=S.format(c),R=v.format(c);g.get(t)&&E.actions.push({title:"And",actions:this.dateFilterActions(m,I,R,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.dateFilterActions(m,I,R,c,g.get(t)))}else g.get(t)&&E.actions.push({title:"And",actions:this.stringFilterActions(m,u,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.stringFilterActions(m,u,c));E.actions!=null&&E.actions.length>0&&p.push(E)}const y={title:"Go to",iconColor:b,shortcut:an.TABLE.GOTO_ROW,group:J.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${o+1}`)};return p.push(y),l&&(p.push({title:"Copy Cell",group:J.GROUP_COPY,order:10,action:()=>{s.copyCell(i,o)}}),p.push({title:"Copy Cell Unformatted",group:J.GROUP_COPY,order:20,action:()=>{s.copyCell(i,o,!0)}})),p}onContextMenu(t,e,n){const{irisGrid:s}=this,{y:i,column:o,row:r,columnHeaderDepth:l}=t,a=s.getModelColumn(o),d=s.getModelRow(r),{model:c,canCopy:u}=s.props,{columns:m}=c,{metrics:p,isFilterBarShown:g,quickFilters:f,advancedFilters:b,selectedRanges:C}=s.state;P(p);const{columnHeaderHeight:S,gridY:v,columnHeaderMaxDepth:y}=p,E=[];if(a!=null&&d!=null){const I=c.valueForCell(a,d),R=c.textForCell(a,d),N=m[a],{onContextMenu:F}=s.props;N!=null&&E.push(F({model:c,value:I,valueText:R,column:N,rowIndex:r,columnIndex:o,modelRow:d,modelColumn:a}))}return a!=null&&c.isFilterable(a)&&E.push({title:"Clear Column Filter",group:J.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(a)},disabled:!(f.has(a)||b.has(a))}),(g?i<=v:i<=S*y&&l===0)?a!=null&&E.push(...this.getHeaderActions(a,t)):(a!=null&&d!=null&&E.push(...this.getCellActions(a,e,t)),u&&C.length>0&&(E.push({title:"Copy Selection",shortcut:Cs.COPY,group:J.GROUP_COPY,order:30,action:()=>{s.copyRanges(C)}}),E.push({title:"Copy Selection w/ Headers",group:J.GROUP_COPY,order:40,action:()=>{s.copyRanges(C,!0)}})),et(c)&&c.isEditable&&C.length>0&&E.push({title:"Delete Selected Rows",group:J.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(C)}})),E.length===0?!1:(P(s.gridWrapper),oe.triggerMenu(s.gridWrapper,n.pageX,n.pageY,E),!0)}dateFormatActions(t){const{model:e}=this.irisGrid.props,{formatter:n}=e,s=n.getColumnFormat(t.type,t.name),i=ta.getOptions(n,s),o=[];for(let r=0;r<i.length;r+=1){const{description:l,format:a,group:d,isSelected:c,title:u}=i[r];o.push({title:u,description:l,icon:c?Xn:void 0,group:d,order:r,action:()=>{const m=e.getColumnIndexByName(t.name);P(m),this.irisGrid.handleFormatSelection(m,a)}})}return o}numberFormatActions(t){const{model:e}=this.irisGrid.props,{formatter:n}=e,s=n.getColumnFormat(t.type,t.name);let i;const o=e.getColumnIndexByName(t.name);if(L.isDecimalType(t.type))i=mr.getOptions(s,l=>{P(o),this.debouncedUpdateCustomFormat(o,l)});else if(L.isIntegerType(t.type))i=na.getOptions(s,l=>{P(o),this.debouncedUpdateCustomFormat(o,l)});else return Ah.error("Invalid column type in numberFormatActions"),null;const r=[];for(let l=0;l<i.length;l+=1){const{format:a,isSelected:d}=i[l];r.push({...i[l],icon:d?Xn:void 0,order:l,action:()=>{o===void 0&&a&&a.type===tt.TYPE_CONTEXT_CUSTOM||(P(o),this.irisGrid.handleFormatSelection(o,a))}})}return r}stringFilterActions(t,e,n,s,i){const o=M.FilterValue.ofString(n);let r=s;r||(r={filter:null,text:null});const{filter:l,text:a}=r,d=[],{model:c}=this.irisGrid.props,u=c.getColumnIndexByName(t.name);return P(u),d.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[i?J.getOperatorAsText(i):""," ",'"',e,'"']}),order:1,group:oe.groups.high}),d.push({title:"text is exactly",description:`Show only rows where ${t.name} is ${n} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().eq(o),i),J.getQuickFilterText(a,`=${e}`,i))},order:10,group:oe.groups.low}),d.push({title:"text is not exactly",description:`Show only rows where ${t.name} is not ${e} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().notEq(o),i),J.getQuickFilterText(a,`!=${e}`,i))},order:20,group:oe.groups.low}),d.push({title:"text contains",description:`Show only rows where ${t.name} contains ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().contains(o),i),J.getQuickFilterText(a,`~${e}`,i))},order:30,group:oe.groups.low}),d.push({title:"text does not contain",description:`Show only rows where ${t.name} does not contain ${n}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().contains(o).not(),i),J.getQuickFilterText(a,`!~${e}`,i))},order:40,group:oe.groups.low}),d.push({title:"text starts with",description:`Show only rows where ${t.name} starts with ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().invoke("startsWith",o),i),J.getQuickFilterText(a,`${e}*`,i))},order:50,group:oe.groups.low}),d.push({title:"text ends with",description:`Show only rows where ${t.name} ends with ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().invoke("endsWith",o),i),J.getQuickFilterText(a,`*${e}`,i))},order:60,group:oe.groups.low}),d}numberFilterActions(t,e,n,s,i){const o=J.getFilterValueForNumberOrChar(t.type,n);let r=null,l=null;s&&(r=s.filter,l=s.text);const a=[],d=n!==Number.POSITIVE_INFINITY&&n!==Number.NEGATIVE_INFINITY&&!Number.isNaN(n),{model:c}=this.irisGrid.props,u=c.getColumnIndexByName(t.name);return P(u),a.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[i?J.getOperatorAsText(i):""," ",'"',e,'"']}),order:1,group:oe.groups.high}),a.push({title:"is equal to",description:`Show only rows where ${t.name} is ${e}`,action:()=>{const m=J.getNumberValueEqualsFilter(t,n);this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,m,i),J.getQuickFilterText(l,`=${e}`,i))},order:10,group:oe.groups.low}),a.push({title:"is not equal to",description:`Show only rows where ${t.name} is not ${e}`,action:()=>{const m=J.getNumberValueEqualsFilter(t,n).not();this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,m,i),J.getQuickFilterText(l,`!=${e}`,i))},order:20,group:oe.groups.low}),d&&!L.isCharType(t.type)&&(a.push({title:"greater than",description:`Show only rows where ${t.name} is greater than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().greaterThan(o),i),J.getQuickFilterText(l,`>${e}`,i))},order:30,group:oe.groups.low}),a.push({title:"greater than or equal to",description:`Show only rows where ${t.name} is greater than or equal to ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().greaterThanOrEqualTo(o),i),J.getQuickFilterText(l,`>=${e}`,i))},order:40,group:oe.groups.low}),a.push({title:"less than",description:`Show only rows where ${t.name} is less than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().lessThan(o),i),J.getQuickFilterText(l,`<${e}`,i))},order:50,group:oe.groups.low}),a.push({title:"less than or equal to",description:`Show only rows where ${t.name} is less than or equal to ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().lessThanOrEqualTo(o),i),J.getQuickFilterText(l,`<=${e}`,i))},order:60,group:oe.groups.low})),a}booleanFilterActions(t,e,n,s){const i=[],{model:o}=this.irisGrid.props,{filter:r,text:l}=n||{},a=o.getColumnIndexByName(t.name);return P(a),i.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[s?J.getOperatorAsText(s):""," ",'"',e!=null?e:"null",'"']}),order:1,group:oe.groups.high}),i.push({title:"true",description:`Show only rows where ${t.name} is true`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isTrue(),s),J.getQuickFilterText(l,"true",s))},order:10,group:oe.groups.low}),i.push({title:"false",description:`Show only rows where ${t.name} is false`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isFalse(),s),J.getQuickFilterText(l,"false",s))},order:20,group:oe.groups.low}),i.push({title:"is null",description:`Show only rows where ${t.name} is null`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isNull(),s),J.getQuickFilterText(l,"null",s))},order:30,group:oe.groups.low}),i.push({title:"is not null",description:`Show only rows where ${t.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isNull().not(),s),J.getQuickFilterText(l,"!null",s))},order:40,group:oe.groups.low}),i}dateFilterActions(t,e,n,s,i,o){const r=M.FilterValue.ofNumber(s);let l=null,a=null;i&&(l=i.filter,a=i.text);const{model:d}=this.irisGrid.props,c=d.getColumnIndexByName(t.name);P(c);const u=[];return u.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[o?J.getOperatorAsText(o):""," ",'"',n,'"']}),order:1,group:oe.groups.high}),u.push({title:"date is",description:`Show only rows where ${t.name} is ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().eq(r),o),J.getQuickFilterText(a,`=${e}`,o))},order:10,group:oe.groups.low}),u.push({title:"date is not",description:`Show only rows where ${t.name} is not ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().notEq(r),o),J.getQuickFilterText(a,`!=${e}`,o))},order:20,group:oe.groups.low}),u.push({title:"date is before",description:`Show only rows where ${t.name} is before ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().lessThan(r),o),J.getQuickFilterText(a,`<${e}`,o))},order:30,group:oe.groups.low}),u.push({title:"date is before or equal",description:`Show only rows where ${t.name} is before or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().lessThanOrEqualTo(r),o),J.getQuickFilterText(a,`<=${e}`,o))},order:40,group:oe.groups.low}),u.push({title:"date is after",description:`Show only rows where ${t.name} is greater than ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().greaterThan(r),o),J.getQuickFilterText(a,`>${e}`,o))},order:50,group:oe.groups.low}),u.push({title:"date is after or equal",description:`Show only rows where ${t.name} is after or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().greaterThanOrEqualTo(r),o),J.getQuickFilterText(a,`>=${e}`,o))},order:60,group:oe.groups.low}),u}nullFilterActions(t,e,n){let s=null,i=null;e&&(s=e.filter,i=e.text);const o=[],{model:r}=this.irisGrid.props,l=r.getColumnIndexByName(t.name);return P(l),o.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[n?J.getOperatorAsText(n):""," ",'"null"']}),order:1,group:oe.groups.high}),o.push({title:"is null",description:`Show only rows where ${t.name} is null`,action:()=>{this.irisGrid.setQuickFilter(l,J.getQuickFilterCondition(s,t.filter().isNull(),n),J.getQuickFilterText(i,"null",n))},order:10,group:oe.groups.low}),o.push({title:"is not null",description:`Show only rows where ${t.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(l,J.getQuickFilterCondition(s,t.filter().isNull().not(),n),J.getQuickFilterText(i,"!null",n))},order:20,group:oe.groups.low}),o}sortByActions(t,e,n){const s=this.irisGrid.getTheme(),{contextMenuSortIconColor:i}=s,o=[{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.ascending)?ss:void 0,iconColor:i},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.descending)?ss:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return L.isNumberType(t.type)&&(o.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.ascending,!0)?ss:void 0,iconColor:i}),o.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.descending,!0)?ss:void 0,iconColor:i})),o}additionalSortActions(t,e){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:T("div",{className:"btn-context-menu menu-title",children:[h("span",{className:"icon",children:h(Z,{icon:ss,style:{color:s!=null?s:void 0}})}),h("span",{className:"title",children:"Add Additional Sort"}),h("span",{className:"shortcut",children:We.isMacPlatform()?"\u2318Click":"^Click"})]}),order:1},{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return L.isNumberType(t.type)&&(i.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(t,e=null,n=!1){return t?t.direction===e&&t.isAbs===n:!1}};let vs=J;vs.GROUP_EDIT=oe.groups.high+10;vs.GROUP_HIDE_COLUMNS=oe.groups.high+25;vs.GROUP_FILTER=oe.groups.high+50;vs.GROUP_GOTO=oe.groups.high+51;vs.GROUP_SORT=oe.groups.high+75;vs.GROUP_COPY=oe.groups.high+100;vs.GROUP_FORMAT=oe.groups.high+150;vs.COLUMN_SORT_DIRECTION={ascending:"ASC",descending:"DESC",none:null};class xT extends Dt{constructor(e){super(),this.irisGrid=e}onDoubleClick(e){const{column:n,row:s}=e;return s==null||n==null?!1:(this.irisGrid.selectData(n,s),!0)}}class _T extends Dt{constructor(e){super(),this.irisGrid=e}onDown(e){const{y:n,column:s,row:i}=e;if(s!==null&&i===null){const{isFilterBarShown:o,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();if(o&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&n>a.columnHeaderHeight*l&&n<=a.columnHeaderHeight*l+a.filterBarHeight)return this.irisGrid.focusFilterBar(s),!0}return!1}onMove(e){const{y:n,column:s}=e,{isFilterBarShown:i,hoverAdvancedFilter:o,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();let d=null;return i&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&s!==null&&n>=a.columnHeaderHeight*l&&n<=a.columnHeaderHeight*l+a.filterBarHeight&&(d=s),d!==o&&this.irisGrid.setState({hoverAdvancedFilter:d}),!1}onLeave(e){const{column:n}=e,{hoverAdvancedFilter:s}=this.irisGrid.state;return s!==null&&n!==s&&this.irisGrid.setState({hoverAdvancedFilter:null}),!1}}class kT extends Dt{constructor(e){super(),this.column=null,this.irisGrid=e}getColumnFromGridPoint(e){const{column:n,row:s,columnHeaderDepth:i}=e;return n!==null&&s===null&&i===0?n:null}onDown(e){return this.column=this.getColumnFromGridPoint(e),!1}onClick(e,n,s){const i=this.getColumnFromGridPoint(e);if(i!=null&&i===this.column){const o=We.isModifierKeyDown(s);return this.irisGrid.toggleSort(i,o),!0}return!1}}class OT extends Dt{constructor(e){super(),this.irisGrid=e}onWheel(e,n,s){const{irisGrid:i}=this,{model:o}=i.props,{metrics:r,pendingRowCount:l}=i.state;P(r);const{bottom:a,rowCount:d,rowHeight:c}=r,{deltaY:u}=j.getScrollDelta(s);return et(o)&&o.isEditable&&a>=d-1&&u>0&&i.setState({pendingRowCount:l+Math.ceil(u/c)}),!1}}const LT=3e3;function AT({children:t=null,onEntering:e,onEntered:n,onExiting:s,onExited:i}){const[o,r]=w.exports.useState(!1),l=w.exports.useRef(),a=Al(t),d=w.exports.useCallback(()=>{r(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{r(!1)},LT)},[r,l]);return w.exports.useEffect(()=>{a!==t&&t!=null&&d()},[t,a,r,d]),w.exports.useEffect(()=>()=>l.current?clearTimeout(l.current):void 0,[]),h(ea,{className:"toast-bottom-bar",isShown:o,onEntering:e,onEntered:n,onExiting:s,onExited:i,children:t})}class PT extends hr{getVisibleColumnWidth(e,n,s=this.getFirstColumn(n),i=this.calculateTreePaddingX(n)){var c,u,m;const{model:o}=n,r=(u=(c=o.layoutHints)==null?void 0:c.hiddenColumns)!=null?u:[],l=this.getModelColumn(e,n),a=super.getVisibleColumnWidth(e,n,s,i);return!this.userColumnWidths.has(l)&&r.includes((m=o.columns[l])==null?void 0:m.name)?0:a}getGridY(e){let n=super.getGridY(e);const{isFilterBarShown:s,theme:i,advancedFilters:o,quickFilters:r,sorts:l,reverseType:a}=e;return s?n+=i.filterBarHeight:(r!=null&&r.size>0||o!=null&&o.size>0)&&(n+=i.filterBarCollapsedHeight),a!==L.REVERSE_TYPE.NONE&&l!=null&&l.length>0&&(n+=i.reverseHeaderBarHeight),n}getUserColumnWidths(){return this.userColumnWidths}}const HT=1,xp=Y.memo(({model:t,modelColumns:e,top:n,bottom:s,left:i,right:o,filter:r,formatter:l,reverseType:a=L.REVERSE_TYPE.NONE,sorts:d,customColumns:c,movedColumns:u,hiddenColumns:m,alwaysFetchColumns:p,rollupConfig:g=null,totalsConfig:f=null,selectDistinctColumns:b=[],pendingRowCount:C=0,pendingDataMap:S=new Map,frozenColumns:v,formatColumns:y,columnHeaderGroups:E})=>{const I=w.exports.useMemo(()=>te.getModelViewportColumns(e,i,o,u,m,p,HT),[e,i,o,u,m,p]);return w.exports.useEffect(function(){t.filter=r},[t,r]),w.exports.useEffect(function(){const N=[...d];a!==L.REVERSE_TYPE.NONE&&N.push(M.Table.reverse()),t.sort=N},[t,d,a]),w.exports.useEffect(function(){t.formatter=l},[t,l]),w.exports.useEffect(function(){t.isCustomColumnsAvailable&&(t.customColumns=c)},[t,c]),w.exports.useEffect(function(){t.isFormatColumnsAvailable&&(t.formatColumns=y)},[t,y]),w.exports.useEffect(function(){t.setViewport(n,s,I)},[t,n,s,I]),w.exports.useEffect(function(){t.isRollupAvailable&&(t.rollupConfig=g)},[t,t.isRollupAvailable,g]),w.exports.useEffect(function(){t.isSelectDistinctAvailable&&(t.selectDistinctColumns=b)},[t,b]),w.exports.useEffect(function(){t.isTotalsAvailable&&(t.totalsConfig=f)},[t,t.isTotalsAvailable,f]),w.exports.useEffect(function(){t.pendingRowCount=C},[t,C]),w.exports.useEffect(function(){t.pendingDataMap=S},[t,S]),w.exports.useEffect(function(){v&&t.updateFrozenColumns(v)},[t,v]),w.exports.useEffect(function(){t.columnHeaderGroups=E},[t,E]),null});xp.displayName="IrisGridModelUpdater";const Un=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),Na=16;class Ko extends to{constructor(){super(),this.icons={},this.initIcons()}static isFilterValid(e,n){const s=e==null||e.filter!=null,i=n==null||n.filter!=null;return s&&i}initIcons(){this.setIcon(Un.SORT_UP,ub),this.setIcon(Un.SORT_DOWN,hb),this.setIcon(Un.CARET_DOWN,qn),this.setIcon(Un.CARET_RIGHT,_u),this.setIcon(Un.CELL_OVERFLOW,FC)}setIcon(e,n){const s=Array.isArray(n.icon[4])?n.icon[4][0]:n.icon[4],i=new Path2D(s),o=new Path2D,r={a:Na/n.icon[0],d:Na/n.icon[1]};o.addPath(i,r),this.icons[e]=o}getIcon(e){return this.icons[e]}getSortIcon(e){return e?e.direction===L.sortDirection.ascending?this.getIcon(Un.SORT_UP):e.direction===L.sortDirection.descending?this.getIcon(Un.SORT_DOWN):null:null}drawCanvas(e){super.drawCanvas(e),this.drawScrim(e)}drawGrid(e,n){super.drawGrid(e,n),this.drawCellOverflowButton(n)}drawGridLines(e,n){super.drawGridLines(e,n),this.drawGroupedColumnLine(e,n),this.drawPendingRowLine(e,n)}drawCellContent(e,n,s,i){var m;const{metrics:o,model:r}=n,{modelColumns:l,modelRows:a}=o,d=$(a,i),c=l.get(s);if(c===void 0)return;const u=r.valueForCell(c,d);if(L.isTextType((m=r.columns[c])==null?void 0:m.type)&&(u===null||u==="")){const p=e.font;e.font=`italic ${p}`;const g=u===null?"null":"empty";super.drawCellContent(e,n,s,i,g),e.font=p;return}super.drawCellContent(e,n,s,i)}drawGroupedColumnLine(e,n){const{metrics:s,model:i,theme:o}=n,{groupedColumns:r,columns:l}=i,{maxY:a,allColumnWidths:d,allColumnXs:c}=s;if(r.length===0||o.groupedColumnDividerColor==null)return;const u=r[r.length-1],m=l.findIndex(b=>b.name===u.name),p=c.get(m),g=d.get(m);if(p==null||g==null)return;const f=p+g+.5;e.strokeStyle=o.groupedColumnDividerColor,e.lineWidth=1,e.beginPath(),e.moveTo(f,0),e.lineTo(f,a),e.stroke()}drawPendingRowLine(e,n){const{metrics:s,model:i,theme:o}=n,{allRowYs:r,maxX:l}=s,{pendingRowCount:a}=i;if(a<=0)return;const d=i.rowCount-i.pendingRowCount-i.floatingBottomRowCount;let c=r.get(d);c!=null&&(c-=.5,e.save(),e.setLineDash([4,2]),e.strokeStyle=o.pendingTextColor,e.lineWidth=1,e.beginPath(),e.moveTo(0,c),e.lineTo(l,c),e.stroke(),e.restore())}drawMouseColumnHover(e,n){const{theme:s,metrics:i,hoverSelectColumn:o}=n;if(o==null||s.linkerColumnHoverBackgroundColor==null)return;const{allColumnWidths:r,allColumnXs:l,maxY:a}=i,d=l.get(o),c=r.get(o);P(d),P(c),e.fillStyle=s.linkerColumnHoverBackgroundColor,e.fillRect(d,0,c,a)}drawMouseRowHover(e,n){const{isSelectingColumn:s}=n;s||super.drawMouseRowHover(e,n)}drawScrim(e){const{context:n,loadingScrimProgress:s,metrics:i,theme:o}=e;if(s==null)return;const{width:r,height:l,gridY:a}=i,{scrimBlurSize:d,scrimColor:c}=o;n.save(),n.globalCompositeOperation="color",n.filter=`blur(${d}px)`,c!=null&&(n.fillStyle=c),n.beginPath(),n.rect(0,a,r,l-a),n.clip(),n.fillRect(-d,-d+a,d*2+r,(d*2+(l-a))*s),n.globalCompositeOperation="overlay",n.filter=`blur(${d}px) opacity(15%)`,n.fillRect(-d,-d+a,d*2+r,(d*2+(l-a))*s),n.restore()}drawColumnHeaders(e,n){super.drawColumnHeaders(e,n);const{theme:s,metrics:i,model:o,reverseType:r}=n,{columnHeaderHeight:l}=i;if(this.drawFilterHeaders(e,n),l<=0)return;const{sort:a}=o;if(a.length===1){const d=r!==L.REVERSE_TYPE.NONE;let c;d?c=s.headerReverseBarColor:c=s.headerSortBarColor,this.drawHeaderBar(e,n,c,d?s.reverseHeaderBarHeight:s.sortHeaderBarHeight)}else a.length>1&&(r!==L.REVERSE_TYPE.NONE&&this.drawHeaderBar(e,n,s.headerReverseBarColor,s.reverseHeaderBarHeight,!1),this.drawHeaderBar(e,n,s.headerSortBarColor,s.sortHeaderBarHeight))}drawHeaderBar(e,n,s,i,o=!0){const{theme:r,metrics:l,model:a}=n,{columnHeaderHeight:d,width:c}=l;let u=0;o||(u=i),e.fillStyle=r.headerBarCasingColor,e.fillRect(0,a.columnHeaderMaxDepth*d-i-2+u,c,i+2),e.fillStyle=s,e.fillRect(0,a.columnHeaderMaxDepth*d-i-1+u,c,i)}drawColumnHeadersAtDepth(e,n,s,i,o){const{metrics:r,model:l,isMenuShown:a}=n,{columnHeaderMaxDepth:d}=l,{width:c}=r,u={...i,maxX:o===d-1&&i.maxX===c?c-(a?0:30):i.maxX};super.drawColumnHeadersAtDepth(e,n,s,u,o)}drawColumnHeaderAtIndex(e,n,s,i){var H;super.drawColumnHeaderAtIndex(e,n,s,i);const{metrics:o,model:r,theme:l}=n,{modelColumns:a,allColumnWidths:d,allColumnXs:c,gridX:u,columnHeaderHeight:m,fontWidths:p}=o,{headerHorizontalPadding:g}=l,f=$(d,s,0),b=$(c,s)+u,C=a.get(s);if(C==null)return;const S=L.getSortForColumn(r.sort,C);if(!S)return;const v=this.getSortIcon(S);if(!v)return;const y=r.textForColumnHeader(C);if(y===void 0)return;const E=(H=p.get(e.font))!=null?H:to.DEFAULT_FONT_WIDTH;P(E);const I=y.length*E,R=u+b+I+g;let{maxX:N}=i;N-=g;const F=u+b+f-g-1,B=R>N?R+1:Math.min(N,F),U=S.direction===L.sortDirection.ascending?-6:-12,x=m*.5+U;e.save(),e.beginPath(),e.rect(b,0,f,m),e.clip(),e.fillStyle=l.headerSortBarColor,e.translate(B,x),e.fill(v),e.restore()}drawFilterHeaders(e,n){const{isFilterBarShown:s,quickFilters:i,advancedFilters:o}=n;s?this.drawExpandedFilterHeaders(e,n):(i!=null&&i.size>0||o!=null&&o.size>0)&&this.drawCollapsedFilterHeaders(e,n)}drawExpandedFilterHeaders(e,n){const{metrics:s,model:i,theme:o,quickFilters:r,advancedFilters:l}=n,{filterBarHeight:a}=o;if(a<=0)return;const{gridX:d,gridY:c,maxX:u,modelColumns:m,visibleColumns:p,allColumnWidths:g,allColumnXs:f}=s,b=c-a;e.save(),e.font=o.font,e.textAlign="left",r!=null&&r.size>0||l!=null&&l.size>0?e.fillStyle=o.filterBarExpandedActiveBackgroundColor:e.fillStyle=o.filterBarExpandedBackgroundColor,e.fillRect(d,b,u,a-1),e.fillStyle=o.headerBarCasingColor,e.fillRect(d,b+a-1,u,1);const C=b;e.strokeStyle=o.filterBarSeparatorColor,e.beginPath();for(let S=0;S<p.length;S+=1){const v=p[S],y=$(m,v),E=$(f,v),I=$(g,v);if(i.isFilterable(y)&&I>0){const R=d+(E!=null?E:0);e.rect(R+.5,C+.5,I,a-2)}}e.stroke();for(let S=0;S<p.length;S+=1){const v=p[S],y=$(g,v),I=$(f,v)+d;this.drawExpandedFilterHeader(e,n,v,I,y)}e.restore()}drawExpandedFilterHeader(e,n,s,i,o){if(o<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:d}=n,{modelColumns:c,gridY:u}=r,{filterBarHeight:m,filterBarExpandedActiveCellBackgroundColor:p,filterBarErrorColor:g,filterBarHorizontalPadding:f,headerColor:b}=l,C=u-m,S=c.get(s);if(S===void 0)return;const v=a.get(S),y=d.get(S);if(v==null&&y==null)return;let E=null;if(v!=null){const{text:R}=v;if(E=R,E||(E=L.getFilterText(v.filter)),E!=null){const{fontWidths:N}=r;let F=N.get(e.font);(F==null||F===0)&&(F=e.measureText("8").width,F||(F=10));const B=(o-f*2)/F;B<=0?E="":E.length>B&&(E=`${E.substring(0,B-1)}\u2026`)}}if(e.save(),Ko.isFilterValid(y,v)&&p!=null)e.fillStyle=p,e.fillRect(i+1,C+1,o-1,m-3);else if(g!=null){e.fillStyle=g,e.lineWidth=2,e.strokeStyle=g;const R=i+2,N=C+2,F=o-3,B=m-5;e.strokeRect(R,N,F,B)}if(E!=null&&E!==""){const R=i+f,N=C+m*.5+1;e.fillStyle=b,e.fillText(E,R,N)}e.restore()}drawCollapsedFilterHeaders(e,n){const{metrics:s,theme:i}=n,{headerSeparatorColor:o,filterBarCollapsedHeight:r}=i;if(r<=0)return;const{gridX:l,gridY:a,maxX:d,visibleColumns:c,allColumnWidths:u,allColumnXs:m}=s,p=a-r;e.save(),e.fillStyle=o,e.fillRect(l,p,d,r);for(let g=0;g<c.length;g+=1){const f=c[g],b=u.get(f),C=m.get(f);if(C!=null&&b!=null){const S=C+l;this.drawCollapsedFilterHeader(e,n,f,S,b)}}e.restore()}drawCollapsedFilterHeader(e,n,s,i,o){if(o<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:d}=n,{modelColumns:c,gridY:u}=r,m=c.get(s);if(m===void 0)return;const p=a.get(m),g=d.get(m),{filterBarCollapsedHeight:f,filterBarActiveColor:b,filterBarActiveBackgroundColor:C,filterBarErrorColor:S}=l;e.save();const v=Ko.isFilterValid(g,p);C!=null&&p==null&&g==null?e.fillStyle=C:b!=null&&v?e.fillStyle=b:S!=null&&(e.fillStyle=S);const y=i+1,E=u-f,I=o-1,R=f-1;e.fillRect(y,E,I,R),e.restore()}drawTreeMarker(e,n,s,i,o,r,l){e.save();const{x1:a,y1:d}=o,c=l?this.getIcon(Un.CARET_DOWN):this.getIcon(Un.CARET_RIGHT),u=s+a-2,m=i+d+2.5;e.fillStyle=r,e.textAlign="center",e.translate(u,m),e.fill(c),e.restore()}drawRowFooters(e,n){const{metrics:s,model:i,mouseX:o,mouseY:r,theme:l}=n,{gridY:a,gridX:d,maxX:c,modelRows:u,floatingTopHeight:m,floatingBottomHeight:p,floatingRows:g,rowFooterWidth:f,height:b,horizontalBarHeight:C,verticalBarWidth:S,allRowHeights:v,allRowYs:y,width:E}=s;if(f<=0||g.length===0)return;const{cellHorizontalPadding:I,floatingGridRowColor:R,floatingRowBackgroundColors:N,headerColor:F,rowHoverBackgroundColor:B}=l;e.translate(d,a),e.beginPath();const U=Math.min(c,E-f-S-d);e.fillStyle=N,m>0&&e.rect(U,0,f,m),p>0&&e.rect(U,b-a-C-p,f,p),e.fill();const x=o!=null&&r!=null&&o>=d&&o<=c+f?j.getRowAtY(r,s):null;if(B!=null&&x!==null&&g.includes(x)){e.fillStyle=B;const A=y.get(x),O=v.get(x);P(A),P(O),e.fillRect(U,A,f,O)}if(e.beginPath(),R!=null&&(e.strokeStyle=R),m>0&&(e.moveTo(U+.5,.5),e.lineTo(U+.5,m-.5)),p>0){const A=b-a-C-p;e.moveTo(U-.5,A+.5),e.lineTo(U-.5,A+p-.5)}e.stroke(),e.fillStyle=F,e.textAlign="left";const H=U+I;for(let A=0;A<g.length;A+=1){const O=g[A],_=v.get(O),k=y.get(O),V=u.get(O);if(k!=null&&_!=null&&V!=null){const G=k+_*.5;e.fillText(i.textForRowFooter(V),H,G)}}e.translate(-d,-a)}getTextRenderMetrics(e,n,s,i){const o=super.getTextRenderMetrics(e,n,s,i),{mouseX:r,mouseY:l,metrics:a}=n;if(r==null||l==null)return o;const{column:d,row:c}=j.getGridPointFromXY(r,l,a);if(s===d&&i===c){const{left:u}=this.getCellOverflowButtonPosition(n);this.shouldRenderOverflowButton(n)&&u!=null&&(o.width=u-a.gridX-o.x)}return o}shouldRenderOverflowButton(e){var b,C;const{context:n,mouseX:s,mouseY:i,metrics:o,model:r,theme:l}=e;if(s==null||i==null)return!1;const{row:a,column:d,modelRow:c,modelColumn:u}=j.getCellInfoFromXY(s,i,o);if(a==null||d==null||c==null||u==null||!L.isStringType(r.columns[u].type))return!1;const m=(b=r.textForCell(u,c))!=null?b:"",{width:p}=super.getTextRenderMetrics(n,e,d,a),g=(C=o.fontWidths.get(l.font))!=null?C:Ko.DEFAULT_FONT_WIDTH;n.save(),n.font=l.font;const f=this.getCachedTruncatedString(n,m,p,g,r.truncationCharForCell(u,c));return n.restore(),m!==""&&f!==m}getCellOverflowButtonPosition({mouseX:e,mouseY:n,metrics:s,theme:i}){const o={left:null,top:null,width:null,height:null};if(e==null||n==null||!s)return o;const{rowHeight:r,columnWidth:l,left:a,top:d}=j.getCellInfoFromXY(e,n,s);P(a),P(l),P(d);const{width:c,verticalBarWidth:u}=s,{cellHorizontalPadding:m}=i,p=Na+2*m,g=r,b=Math.min(s.gridX+a+l,c-u)-p,C=s.gridY+d;return{left:b,top:C,width:p,height:g}}drawCellOverflowButton(e){const{context:n,mouseX:s,mouseY:i,theme:o}=e;if(s==null||i==null||!this.shouldRenderOverflowButton(e))return;const{left:r,top:l,width:a,height:d}=this.getCellOverflowButtonPosition(e),{cellHorizontalPadding:c,overflowButtonColor:u,overflowButtonHoverColor:m}=o;n.save(),m!=null&&r!=null&&a!=null&&l!=null&&d!=null&&s>=r&&s<=r+a&&i>=l&&i<=l+d?n.fillStyle=m:u!=null&&(n.fillStyle=u);const p=this.getIcon(Un.CELL_OVERFLOW);r!=null&&l!=null&&n.translate(r+c,l+2),n.fill(p),n.restore()}}const UT="12px Fira Sans, sans-serif",VT="#f0f0ee",BT="#1a171a",de={"grid-bg":"#211f22",font:UT,white:VT,black:BT,"header-bg":"#2d2a2e","header-color":"#f0f0ee","header-height":"30px","header-separator-color":"#211f22","header-separator-hover-color":"#929192","header-hidden-separator-hover-color":"#4878ea","header-sort-bar-color":"#aa9af4","header-reverse-bar-color":"#548d29","header-bar-casing-color":"#211f22","header-font":"600 12px Fira Sans, sans-serif","row-height":"19px","row-background-colors":"#373438 #2d2a2e","selection-color":"rgba(118, 217, 228, 0.09)","selection-outline-color":"#76d9e4","selection-outline-casing-color":"#211f22","row-hover-bg":"#4b494c","selected-row-hover-bg":"rgba(118, 217, 228, 0.25)","scroll-bar-active-selection-tick-color":"rgba(118, 217, 228, 0.5)","scroll-bar-bg":"#322f33","scroll-bar-hover-bg":"#373438","scroll-bar-casing-color":"#555356","scroll-bar-corner-color":"#322f33","scroll-bar-color":"#5b5a5c","scroll-bar-hover-color":"#929192","scroll-bar-active-color":"#c0bfbf","text-color":"#f0f0ee","positive-number-color":"#9edc6f","negative-number-color":"#f95d84","zero-number-color":"#fcd65b","date-color":"#fcd65b","pending-text-color":"#fde38d","error-text-color":"#f95d84","null-string-color":"#929192","filter-bar-active-bg":"#425175","filter-bar-active-color":"#4878ea","filter-bar-expanded-bg":"#373438","filter-bar-expanded-active-bg":"#313849","filter-bar-expanded-active-cell-bg":"#374d80","filter-bar-separator-color":"#929192","filter-bar-error-color":"#f95d84","filter-icon-color":"#4878ea","scrim-color":"#211f22","context-menu-sort-icon-color":"#aa9af4","context-menu-reverse-icon-color":"#548d29","linker-column-hover-bg":"rgba(118, 217, 228, 0.09)","tree-line-color":"#5b5a5c","tree-marker-color":"#c0bfbf","tree-marker-hover-color":"#fcfcfa","grouped-column-divider-color":"#1a171a","floating-grid-row-color":"#555356","floating-row-background-colors":"#403e41","floating-divider-inner-color":"#403e41","floating-divider-outer-color":"#211f22","overflow-button-color":"#c0bfbf","overflow-button-hover-color":"#fcfcfa"},_p=Object.freeze({backgroundColor:de["grid-bg"],white:de.white,black:de.black,font:de.font,headerBackgroundColor:de["header-bg"],headerColor:de["header-color"],headerSeparatorColor:de["header-separator-color"],headerSeparatorHoverColor:de["header-separator-hover-color"],headerHiddenSeparatorHoverColor:de["header-hidden-separator-hover-color"],headerSortBarColor:de["header-sort-bar-color"],headerReverseBarColor:de["header-reverse-bar-color"],headerBarCasingColor:de["header-bar-casing-color"],headerFont:de["header-font"],rowBackgroundColors:de["row-background-colors"],rowHoverBackgroundColor:de["row-hover-bg"],selectionColor:de["selection-color"],selectionOutlineColor:de["selection-outline-color"],selectionOutlineCasingColor:de["selection-outline-casing-color"],selectedRowHoverBackgroundColor:de["selected-row-hover-bg"],scrollBarBackgroundColor:de["scroll-bar-bg"],scrollBarHoverBackgroundColor:de["scroll-bar-hover-bg"],scrollBarCasingColor:de["scroll-bar-casing-color"],scrollBarCornerColor:de["scroll-bar-corner-color"],scrollBarColor:de["scroll-bar-color"],scrollBarHoverColor:de["scroll-bar-hover-color"],scrollBarActiveColor:de["scroll-bar-active-color"],scrollBarSelectionTickColor:de["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:de["scroll-bar-active-selection-tick-color"],textColor:de["text-color"],positiveNumberColor:de["positive-number-color"],negativeNumberColor:de["negative-number-color"],zeroNumberColor:de["zero-number-color"],dateColor:de["date-color"],pendingTextColor:de["pending-text-color"],errorTextColor:de["error-text-color"],nullStringColor:de["null-string-color"],filterBarActiveBackgroundColor:de["filter-bar-active-bg"],filterBarExpandedBackgroundColor:de["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:de["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:de["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:de["filter-bar-separator-color"],filterBarActiveColor:de["filter-bar-active-color"],filterBarErrorColor:de["filter-bar-error-color"],filterIconColor:de["filter-icon-color"],scrimColor:de["scrim-color"],contextMenuSortIconColor:de["context-menu-sort-icon-color"],contextMenuReverseIconColor:de["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:de["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(de["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(de["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:de["linker-column-hover-bg"],treeLineColor:de["tree-line-color"],treeMarkerColor:de["tree-marker-color"],treeMarkerHoverColor:de["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:de["floating-grid-row-color"],floatingRowBackgroundColors:de["floating-row-background-colors"],floatingDividerInnerColor:de["floating-divider-inner-color"],floatingDividerOuterColor:de["floating-divider-outer-color"],overflowButtonColor:de["overflow-button-color"],overflowButtonHoverColor:de["overflow-button-hover-color"]});const Fa=X.module("ColumnStatistics"),$T={SIZE:"Number of Rows"},nd=class extends w.exports.Component{constructor(t){super(t),this.handleError=this.handleError.bind(this),this.handleGenerateStatistics=this.handleGenerateStatistics.bind(this),this.handleStatistics=this.handleStatistics.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0}}static getStatsLabel(t){var e;return(e=$T[t])!=null?e:t.split(" ").map(n=>n[0].toUpperCase()+n.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}maybeGenerateStatistics(){const{model:t}=this.props,e=t.rowCount-t.pendingRowCount;this.setState({numRows:e}),t.isColumnStatisticsAvailable?e<nd.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:t,model:e}=this.props;this.cancelablePromise=ye.makeCancelable(e.columnStatistics(t)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(t){Fa.debug("Received statistics",t);const{model:e,onStatistics:n}=this.props,s=[];t.statisticsMap.forEach((i,o)=>{s.push({operation:nd.getStatsLabel(o),value:i,type:t.getType(o)})}),t.uniqueValues.forEach((i,o)=>{s.push({operation:o,className:"column-statistics-unique-value",value:i,type:"long"})}),this.setState({loading:!1,statistics:s,numRows:e.rowCount-e.pendingRowCount}),n()}handleError(t){if(t!=null&&ye.isCanceled(t)){Fa.debug("Called handleError on a cancelled promise result");return}Fa.error("Error generating statistics",t),this.setState({error:t,loading:!1,statistics:null})}render(){const{column:t,model:e}=this.props,{error:n,loading:s,statistics:i,numRows:o}=this.state,r=!s&&n==null&&i==null&&e.isColumnStatisticsAvailable,l=[],a=t.type.substring(t.type.lastIndexOf(".")+1),d=t.description===null?null:t.description;if(i!=null)for(let p=0;p<i.length;p+=1){const{operation:g,className:f,value:b,type:C}=i[p],S=C?e.displayString(b,C):e.displayString(b,t.type,t.name),v=T(Y.Fragment,{children:[h("div",{className:z("column-statistic-operation",f),children:g}),h("div",{className:"column-statistic-value",children:S})]},g);l.push(v)}const c=gt(e)&&e.hasExpandableRows?"Expanded Rows":"Number of Rows",u=e.displayString(o,"long"),m=e.getColumnIndexByName(t.name);return T("div",{className:"column-statistics",children:[T("div",{className:"column-statistics-title",children:[t.name,T("span",{className:"column-statistics-type",children:["\xA0(",a,")"]}),h(Pl,{className:"column-statistics-copy",tooltip:"Copy column name",copy:t.name})]}),d!=null&&h("div",{className:"column-statistics-description",children:d}),m!=null&&!e.isColumnMovable(m)&&T("div",{className:"column-statistics-status",children:[h(Z,{icon:e.isColumnFrozen(m)?tb:_C,className:"mr-1"}),e.isColumnFrozen(m)?"Frozen":"Not movable"]}),T("div",{className:"column-statistics-grid",children:[i==null&&T(we,{children:[h("div",{className:"column-statistic-operation",children:c}),h("div",{className:"column-statistic-value",children:u})]}),l]}),r&&h(W,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h("div",{className:"error-message",children:`${n}`}),i&&!s&&h(W,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h(Z,{icon:Md,className:"mr-1"}),children:"Refresh"}),s&&T("div",{className:"column-statistics-loading",children:[h(kn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let kp=nd;kp.AUTO_GENERATE_LIMIT=1e5;const $r=X.module("AdvancedFilterCreatorFilterItem");class nc extends w.exports.PureComponent{constructor(e){super(e),this.getCachedIsValid=Ce((o,r,l,a)=>{try{return!l||L.makeAdvancedValueFilter(o,r,l,a)!=null}catch{return!1}}),this.handleDelete=this.handleDelete.bind(this),this.handleTypeChange=this.handleTypeChange.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.typeDropdown=null;const{value:n="",filterTypes:s,selectedType:i=s[0]}=e;this.state={selectedType:i,value:n}}static getLabelForFilter(e,n){try{if(L.isNumberType(e)||L.isCharType(e))return Em(n);if(L.isTextType(e))return Tm(n);if(L.isDateType(e))return ym(n);if(L.isBooleanType(e))return n0(n);throw new Error(`Unrecognized column type: ${e}`)}catch(s){return $r.warn(s),""}}componentDidMount(){var e;(e=this.typeDropdown)==null||e.focus()}componentDidUpdate(e){const{value:n,selectedType:s}=this.props;s!==void 0&&e.selectedType!==s&&this.setState({selectedType:s}),n!==void 0&&e.value!==n&&this.setState({value:n})}handleTypeChange(e){const n=e.target.value;$r.debug2("typeChange",n),this.setState({selectedType:n});const{onChange:s}=this.props,{value:i}=this.state;i!=null&&i.length>0&&s(n,i)}handleValueChange(e){$r.debug2("valueChange");const{value:n}=e.target;this.setState({value:n});const{onChange:s}=this.props,{selectedType:i}=this.state;i!=null&&s(i,n)}handleDelete(){$r.debug("delete");const{onDelete:e}=this.props;e()}render(){const{column:e,filterTypes:n,formatter:s}=this.props,{selectedType:i,value:o}=this.state,r=!L.isBooleanType(e.type),l=[],a=this.getCachedIsValid(e,i,o,s.timeZone);for(let d=0;d<n.length;d+=1){const c=n[d],u=nc.getLabelForFilter(e.type,c),m=h("option",{value:c,children:u},c);l.push(m)}return h("div",{className:"advanced-filter-creator-filter-item",children:T("div",{className:"form-row",children:[h("div",{className:"form-group col",children:h("select",{className:"form-control custom-select",value:i,onChange:this.handleTypeChange,ref:d=>{this.typeDropdown=d},children:l})}),r&&h("div",{className:"form-group col",children:h("div",{className:"input-group",children:h("input",{type:"text",className:z("form-control",{error:!a}),placeholder:"Enter value",value:o,onChange:this.handleValueChange})})}),h("div",{className:"form-group col-1 px-0",children:h(W,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:hn,tooltip:"Remove Filter"})})]})})}}const Hh=X.module("AdvancedFilterCreatorSelectValueList"),sd=class extends w.exports.PureComponent{constructor(t){super(t),this.handleSelect=this.handleSelect.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.list=null;const{selectedValues:e}=this.props;this.state={itemCount:0,items:[],offset:0,selectedValues:e,isLoading:!0}}static indexOf(t,e){for(let n=0;n<e.length;n+=1){const s=e[n];if(s===t||s!=null&&s.valueOf!=null&&t!=null&&t.valueOf!=null&&s.valueOf()===t.valueOf())return n}return-1}componentDidMount(){const{table:t}=this.props;t&&this.startListening(t)}componentDidUpdate(t){const{filters:e,invertSelection:n,selectedValues:s,table:i}=this.props;t.table!==i&&(t.table&&this.stopListening(t.table),i&&this.startListening(i),this.resetViewport()),t.invertSelection!==n&&this.setState({selectedValues:[]},this.handleSelectionUpdate),t.selectedValues!==s&&this.setState({selectedValues:s},this.handleSelectionUpdate),t.filters!==e&&(i==null||i.applyFilter(e),this.resetViewport())}componentWillUnmount(){const{table:t}=this.props;t&&this.stopListening(t)}handleSelect(t,e){const{invertSelection:n}=this.props;let{selectedValues:s}=this.state;s=[...s];const i=sd.indexOf(e,s);i>=0?s.splice(i,1):s.push(e);let o=i<0;n&&(o=!o);const{offset:r}=this.state;let{items:l}=this.state;l=[...l];const a=t-r;a>=0&&a<l.length&&(l[a].isSelected=o),this.setState({items:l,selectedValues:s});const{onChange:d}=this.props;d(s,n)}handleViewportChange(t,e){this.updateViewport(t,e)}handleSelectionUpdate(){this.updateItemSelection()}handleTableUpdate(t){const{table:e,formatter:n}=this.props;if(!e)return;const s=t.detail,{offset:i}=s,o=[],r=e.columns[0];for(let a=0;a<s.rows.length;a+=1){const c=s.rows[a].get(r),u=n.getFormattedString(c,r.type,r.name),m=this.isValueSelected(c);o.push({displayValue:u,value:c,isSelected:m})}Hh.debug2("Received table update:",i,o.length);const l=e.size;this.setState({itemCount:l,items:o,offset:i,isLoading:!1})}isValueSelected(t){const{invertSelection:e}=this.props,{selectedValues:n}=this.state,s=sd.indexOf(t,n);return e?s<0:s>=0}startListening(t){t.addEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate)}stopListening(t){t.removeEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate)}resetViewport(){this.list&&this.list.topRow!=null&&this.list.bottomRow!=null&&this.updateViewport(this.list.topRow,this.list.bottomRow,!0)}updateItemSelection(){let{items:t}=this.state;t=[...t];for(let e=0;e<t.length;e+=1){const n=t[e],{value:s}=n;n.isSelected=this.isValueSelected(s)}this.setState({items:t})}updateViewport(t,e,n=!1){const{table:s}=this.props;if(s==null)return;n&&this.setState({isLoading:!0});const i=e-t+1,o=Math.max(0,t-i*3),r=Math.max(o,e+i*3);Hh.debug2("Setting viewport",o,",",r),s.setViewport(o,r)}render(){const{offset:t,isLoading:e,items:n,itemCount:s}=this.state;return T("div",{className:"select-value-list-wrapper",children:[h(tm,{itemCount:s,items:n,offset:t,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h(mt,{in:e,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"loading-list",children:h(kn,{className:"loading-spinner-large"})})})]})}};let Op=sd;Op.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{}};const Lp=class extends w.exports.PureComponent{constructor(t){super(t),this.handleSelectAllClick=this.handleSelectAllClick.bind(this),this.handleClearAllClick=this.handleClearAllClick.bind(this),this.handleListChange=this.handleListChange.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUpdateFilterTimeout=this.handleUpdateFilterTimeout.bind(this);const{invertSelection:e,selectedValues:n}=t;this.state={filters:[],invertSelection:e,selectedValues:n,searchText:""}}componentDidMount(){this.initSearchTable()}componentDidUpdate(t,e){const{invertSelection:n,selectedValues:s,table:i}=this.props;t.table!==i&&this.initSearchTable(),t.invertSelection!==n&&this.setState({invertSelection:n}),t.selectedValues!==s&&this.setState({selectedValues:s});const{table:o,searchText:r}=this.state;o!==e.table&&(e.table!=null&&e.table.close(),o!=null&&this.startUpdateFilterTimer()),r!==e.searchText&&this.startUpdateFilterTimer()}componentWillUnmount(){const{table:t}=this.state;t!=null&&t.close(),this.searchTablePromise=void 0,this.stopUpdateFilterTimer()}getColumnName(){const{table:t}=this.props;return t!=null?t.columns[0].name:""}getDisplayedValuesCount(){const{invertSelection:t,selectedValues:e,table:n}=this.state;return n==null?null:t?n.totalSize-e.length:e.length}getDisplayedValueText(){const t=this.getDisplayedValuesCount(),{table:e}=this.state,{formatter:n}=this.props;if(t!=null&&e!=null){const s=n.getFormattedString(t,"long"),i=n.getFormattedString(e.totalSize,"long");let o="";return t<1e6&&(o="Displaying "),`${o}${s} of ${i}`}return null}initSearchTable(){const{table:t}=this.props;if(t==null)return;const e=t.copy();this.searchTablePromise=e,this.searchTablePromise.then(n=>{this.searchTablePromise===e?(this.setState({table:n}),this.searchTablePromise=void 0):n.close()})}handleListChange(t,e){this.setState({selectedValues:t,invertSelection:e});const{onChange:n}=this.props;n(t,e)}handleSearchChange(t){const e=t.target.value;this.setState({searchText:e})}handleSelectAllClick(){this.resetSelection(!0)}handleClearAllClick(){this.resetSelection(!1)}handleUpdateFilterTimeout(){this.updateFilterTimer=void 0,this.updateTableFilter()}resetSelection(t){const e=[];this.setState({invertSelection:t,selectedValues:e});const{onChange:n}=this.props;n(e,t)}startUpdateFilterTimer(){this.stopUpdateFilterTimer(),this.updateFilterTimer=setTimeout(this.handleUpdateFilterTimeout,Lp.searchDebounceTime)}stopUpdateFilterTimer(){this.updateFilterTimer!=null&&(clearTimeout(this.updateFilterTimer),this.updateFilterTimer=void 0)}updateTableFilter(){const{table:t,searchText:e}=this.state,{timeZone:n}=this.props,s=t==null?void 0:t.columns[0],i=[];if(s==null)return;let o;if(e.length>0){let r=null;L.isCharType(s.type)?r=L.makeQuickFilter(s,e):L.isTextType(s.type)?r=L.makeQuickFilter(s,`~${e}`,n):r=L.makeQuickFilter(s,`>=${e}`,n),r!=null?i.push(r):o="Invalid search text"}this.setState({filters:i,error:o})}render(){const{error:t,filters:e,invertSelection:n,selectedValues:s,searchText:i,table:o}=this.state,{formatter:r,showSearch:l}=this.props,a=this.getColumnName(),d=this.getDisplayedValueText(),c=a?`Find ${a}...`:"";return T("div",{className:"advanced-filter-creator-select-value",children:[T("div",{className:l?"form-group":"",children:[h("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),l&&h("input",{type:"text",className:z("form-control",{"is-invalid":t!=null}),id:"advanced-filter-creator-select-value-input",placeholder:c,value:i,onChange:this.handleSearchChange})]}),h(Op,{table:o,filters:e,invertSelection:n,selectedValues:s,formatter:r,onChange:this.handleListChange}),T("div",{className:"advanced-filter-creator-select-meta-row",children:[T("div",{children:[h(W,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h(W,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h(mt,{in:d!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"row-count-info",children:d})})]})]})}};let sc=Lp;sc.searchDebounceTime=250;sc.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0};const Fo=X.module("AdvancedFilterCreator"),ri=class extends w.exports.PureComponent{constructor(t){var r,l;super(t),this.getFilterTypes=Ce(a=>L.getFilterTypes(a)),this.handleAddAnd=this.handleAddAnd.bind(this),this.handleAddOr=this.handleAddOr.bind(this),this.handleChangeFilterOperator=this.handleChangeFilterOperator.bind(this),this.handleDone=this.handleDone.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterDelete=this.handleFilterDelete.bind(this),this.handleSelectValueChange=this.handleSelectValueChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSortDown=this.handleSortDown.bind(this),this.handleSortUp=this.handleSortUp.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleFocusTrapStart=this.handleFocusTrapStart.bind(this),this.handleFocusTrapEnd=this.handleFocusTrapEnd.bind(this),this.handleUpdateTimeout=this.handleUpdateTimeout.bind(this),this.focusTrapContainer=Y.createRef();const{options:e}=t;let{filterOperators:n,invertSelection:s,selectedValues:i}=e;const o=(l=(r=e.filterItems)==null?void 0:r.map(({selectedType:a,value:d})=>({selectedType:a,value:d,key:$e()})))!=null?l:[];o.length===0&&o.push(ri.makeFilterItem()),n==null&&(n=[]),s==null&&(s=!0),i==null&&(i=[]),this.state={filterItems:o,filterOperators:n,invertSelection:s,selectedValues:i,valuesTableError:null,valuesTable:void 0}}static makeFilterItem(){return{key:$e()}}componentDidMount(){this.initValuesTable()}componentWillUnmount(){this.debounceTimeout!=null&&(clearTimeout(this.debounceTimeout),this.sendUpdate()),this.valuesTablePromise!=null&&this.valuesTablePromise.cancel()}getFilterChangeHandler(t){return this.handleFilterChange.bind(this,t)}getFilterDeleteHandler(t){return this.handleFilterDelete.bind(this,t)}initValuesTable(){const{model:t,column:e}=this.props;if(!t.isValuesTableAvailable){Fo.debug("No values table for this model, just ignore");return}this.valuesTablePromise=L.makeCancelableTablePromise(t.valuesTable(e)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{ye.isCanceled(n)||(Fo.error("Unable to open values table",n),this.setState({valuesTableError:n}))})}handleFocusTrapEnd(){var t,e;((e=(t=this.focusTrapContainer)==null?void 0:t.current)==null?void 0:e.querySelector("button,select,input,textarea")).focus()}handleFocusTrapStart(){var e,n;const t=(n=(e=this.focusTrapContainer)==null?void 0:e.current)==null?void 0:n.querySelectorAll("button,select,input,textarea");t&&t.length>0&&t[t.length-1].focus()}handleAddAnd(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(ri.makeFilterItem()),e=e.concat(Xt.and),this.setState({filterItems:t,filterOperators:e})}handleAddOr(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(ri.makeFilterItem()),e=e.concat(Xt.or),this.setState({filterItems:t,filterOperators:e})}handleChangeFilterOperator(t,e){let{filterOperators:n}=this.state;n=[...n],t0(e),n[t]=e,this.setState({filterOperators:n}),this.startUpdateTimer()}handleFilterChange(t,e,n){let{filterItems:s}=this.state;s=[...s];const{key:i}=s[t];s[t]={key:i,selectedType:e,value:n},this.setState({filterItems:s}),this.startUpdateTimer()}handleFilterDelete(t){let{filterItems:e,filterOperators:n}=this.state;e=[...e],n=[...n],t<e.length&&e.splice(t,1),t<n.length?n.splice(t,1):t===n.length&&n.splice(n.length-1,1),e.length===0&&e.push(ri.makeFilterItem()),this.setState({filterItems:e,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(t,e){this.setState({selectedValues:t,invertSelection:e}),this.startUpdateTimer()}handleReset(){Fo.debug("Resetting Advanced Filter"),this.setState({filterItems:[ri.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(t){const e=We.isModifierKeyDown(t);this.sortTable(L.sortDirection.descending,e)}handleSortUp(t){const e=We.isModifierKeyDown(t);this.sortTable(L.sortDirection.ascending,e)}handleSubmit(t){Fo.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),t.preventDefault()}handleDone(t){Fo.debug("Submitting and Closing Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate();const{onDone:e}=this.props;e(),t.preventDefault()}handleUpdateTimeout(){this.debounceTimeout=void 0,this.sendUpdate()}shouldShowAddFilter(){const{filterItems:t}=this.state;if(t.length===0)return!1;const e=t[t.length-1],{selectedType:n,value:s}=e;return n!=null&&n.length>0&&s!=null&&s.length>0}sortTable(t,e=!1){const{column:n,onSortChange:s}=this.props;s(n,t,e)}startUpdateTimer(){this.stopUpdateTimer(),this.debounceTimeout=setTimeout(this.handleUpdateTimeout,ri.debounceFilterUpdate)}stopUpdateTimer(){this.debounceTimeout!==void 0&&(clearTimeout(this.debounceTimeout),this.debounceTimeout=void 0)}sendUpdate(){const{filterItems:t,filterOperators:e,invertSelection:n,selectedValues:s}=this.state,{column:i,onFilterChange:o,model:r}=this.props,{formatter:l}=r,a=t.filter(({selectedType:m,value:p})=>m!=null&&p!=null&&p!==""),d=e.filter((m,p)=>m!=null&&t[p].selectedType!=null&&t[p].value!=null&&t[p].value!=="").slice(0,a.length-1),c={filterItems:a,filterOperators:d,invertSelection:n,selectedValues:s},u=L.makeAdvancedFilter(i,c,l.timeZone);o(i,u,c)}render(){const{column:t,model:e,sortDirection:n,formatter:s}=this.props,{filterItems:i,filterOperators:o,invertSelection:r,selectedValues:l,valuesTable:a,valuesTableError:d}=this.state,{isValuesTableAvailable:c}=e,u=L.isBooleanType(t.type),m=L.isDateType(t.type),p=this.getFilterTypes(t.type),g=t.type.substring(t.type.lastIndexOf(".")+1),f=[];if(!u&&p.length)for(let S=0;S<i.length;S+=1){const v=i[S],{key:y,selectedType:E,value:I}=v,R=h(nc,{column:t,filterTypes:p,onChange:this.getFilterChangeHandler(S),onDelete:this.getFilterDeleteHandler(S),selectedType:E,value:I,formatter:s},y);if(f.push(R),S<o.length){const F=o[S]===Xt.and,B=T("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h(W,{kind:"ghost",className:z("filter-operator",{active:F}),onClick:()=>this.handleChangeFilterOperator(S,Xt.and),children:"AND"}),h(W,{kind:"ghost",className:z("filter-operator",{active:!F}),onClick:()=>this.handleChangeFilterOperator(S,Xt.or),children:"OR"})]},`filterOperator${y}`);f.push(B)}}const b=this.shouldShowAddFilter(),C=T("div",{className:z("form-row justify-content-end add-filter-item",{hidden:!b}),children:[h("span",{className:"text-muted",children:h(Z,{icon:zs})}),h(W,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!b,tooltip:"Add filter with AND",children:"AND"}),h(W,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!b,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return f.push(C),T("div",{className:"advanced-filter-creator",role:"presentation",children:[h("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),T("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[T("div",{className:"title-bar",children:[h("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),T("div",{className:"advanced-filter-menu-buttons",children:[h(W,{kind:"ghost",className:z("sort-operator",{active:n===L.sortDirection.descending}),onClick:this.handleSortDown,icon:Gc,tooltip:`Sort ${t.name} Descending`}),h(W,{kind:"ghost",className:z("sort-operator",{active:n===L.sortDirection.ascending}),onClick:this.handleSortUp,icon:h(Z,{icon:Gc,rotation:180}),tooltip:`Sort ${t.name} Ascending`})]})]}),h("hr",{}),T("div",{className:"advanced-filter-column-name",children:[t.name,"\xA0",T("span",{className:"column-type",children:["(",g,")"]})]}),f,c&&d==null&&T(we,{children:[!u&&h("hr",{}),h("div",{className:"form-group",children:h(sc,{table:a,onChange:this.handleSelectValueChange,invertSelection:r,selectedValues:l,formatter:s,showSearch:!m,timeZone:s.timeZone})})]}),T("div",{className:"form-row justify-content-end",children:[h(W,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h(W,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let ic=ri;ic.debounceFilterUpdate=250;ic.defaultProps={options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null};const Uh=X.module("Aggregations"),WT=[Oe.SUM,Oe.ABS_SUM,Oe.MIN,Oe.MAX,Oe.VAR,Oe.AVG,Oe.STD,Oe.FIRST,Oe.LAST,Oe.COUNT_DISTINCT,Oe.DISTINCT,Oe.COUNT,Oe.UNIQUE];function zT({isRollup:t,settings:e,onChange:n,onEdit:s}){const{aggregations:i,showOnTop:o}=e,r=w.exports.useMemo(()=>WT.filter(F=>!i.some(B=>B.operation===F)),[i]),[l,a]=w.exports.useState(r[0]),[d,c]=w.exports.useState([]),u=w.exports.useCallback(F=>{n({...e,...F})},[n,e]),m=w.exports.useCallback(F=>{u({aggregations:F})},[u]),p=w.exports.useCallback(F=>{u({showOnTop:F})},[u]),g=w.exports.useCallback(()=>{Uh.debug("handleDragStart"),jt.startDragging()},[]),f=w.exports.useCallback(({destination:F,source:B})=>{if(Uh.debug("handleDragEnd",F,B),jt.stopDragging(),F===null)return;let U=F.index;B.index<F.index&&(U+=1);const x=[...i],H=jt.reorder(x,d,x,U),A=jt.adjustDestinationIndex(U,d),O=[[A,A+H.length-1]];m(x),c(O)},[m,i,d,c]),b=w.exports.useCallback(F=>{a(F)},[a]),C=w.exports.useCallback(()=>{m([...i,{operation:l,selected:[],invert:!0}])},[i,l,m]),S=w.exports.useCallback(F=>{m(i.filter((B,U)=>U!==F))},[i,m]),v=w.exports.useCallback(F=>{c(F)},[c]),y=w.exports.useCallback(F=>{const B=i[F];$s.isRollupOperation(B.operation)||s(B)},[i,s]),E=w.exports.useCallback(F=>{p(F.target.value==="true")},[p]);w.exports.useEffect(function(){r.length>0&&!r.includes(l)&&a(r[0])},[r,l]);const I=w.exports.useCallback(({item:F,itemIndex:B,isClone:U=!1,selectedCount:x})=>{const H=F.operation,A=U?`${x}`:void 0,O=U?"item-list-item-clone":void 0,_=$s.isRollupOperation(F.operation),k=!U&&!_;return T(we,{children:[T("div",{className:z("item-list-item-content","draggable-item-list-item-content",O),children:[T("span",{className:"title",children:[H,!t&&_&&T("span",{className:"small text-warning",children:[h(Z,{icon:Lu})," Requires rollup"]})]}),sn.renderBadge({text:A}),sn.renderHandle()]}),!U&&T(we,{children:[h(W,{kind:"ghost",className:"btn-edit",icon:ir,tooltip:"Edit Columns",onClick:()=>s(F),disabled:!k}),h(W,{kind:"ghost",className:"btn-delete",icon:hn,tooltip:"Delete Aggregation",onClick:()=>S(B)})]})]})},[S,s,t]),R=r.length>0,N=i.length>0;return T("div",{className:"aggregations",children:[R&&T("div",{className:"form-inline",children:[h(zb,{onChange:b,value:l,children:r.map(F=>h(Wb,{value:F,children:F},F))}),T("button",{type:"button",className:"btn btn-link btn-add",onClick:C,children:[h(Z,{icon:zs}),"Add Aggregation"]})]}),R&&N&&h("hr",{}),N&&T(we,{children:[!t&&T("div",{className:"form-inline",children:[h("label",{children:"Placement:\xA0"}),T(Vl,{onChange:E,value:`${o}`,children:[h(Fn,{value:"true",children:"Top"}),h(Fn,{value:"false",children:"Bottom"})]})]}),h(_l,{onDragStart:g,onDragEnd:f,children:h(sn,{className:"selected-aggregations",itemCount:i.length,items:i,renderItem:I,offset:0,onSelectionChange:v,onSelect:y,selectedRanges:d,isMultiSelect:!0})})]})]})}const GT=30;function KT({aggregation:t,columns:e,onChange:n}){const[s,i]=w.exports.useState(-1),[o,r]=w.exports.useState(-1),[l,a]=w.exports.useState(0),{invert:d,selected:c}=t,u=w.exports.useRef(null),m=w.exports.useCallback(E=>c.includes(E)?!d:d,[d,c]),p=w.exports.useMemo(()=>{let E=tc(e,t.operation);return l!==0&&(E=L.sortColumns(E,l===1)),E},[e,t.operation,l]),g=w.exports.useMemo(()=>s>=0?p.slice(s,o+1).map(E=>({value:E.name,displayValue:E.name,isSelected:m(E.name)})):[],[p,m,o,s]),f=w.exports.useCallback(E=>{const{name:I}=p[E],R=c.indexOf(I);let N=[...c],F=d;R>=0?N.splice(R,1):(N.push(I),N.length===p.length&&(N=[],F=!d)),n({...t,selected:N,invert:F})},[t,d,p,c,n]),b=w.exports.useCallback(()=>{a(0),n({...t,selected:[],invert:!0})},[t,n]),C=w.exports.useCallback((E,I)=>{i(E),r(I)},[i,r]),S=w.exports.useCallback(()=>{c.length===0?n({...t,invert:!d}):n({...t,selected:[],invert:!0})},[t,d,n,c]),v=c.length===0?d:null,y=c.length!==0||!d||l!==0;return T("div",{role:"menu",className:"aggregation-edit",children:[h("div",{className:"top-menu",children:T("div",{className:"form-inline",children:[h(St,{checked:v,onChange:S,children:"Toggle All"}),h("div",{className:"spacer"}),h(mt,{in:y,timeout:Be.transitionSlowMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(W,{kind:"ghost",className:"btn-reset",onClick:b,children:"Reset"})}),h(W,{kind:"ghost",className:z({active:l===1}),icon:Nd,tooltip:"Sort ascending",onClick:()=>a(1)}),h(W,{kind:"ghost",className:z({active:l===2}),icon:Fd,tooltip:"Sort descending",onClick:()=>a(2)})]})}),h("div",{className:"aggregation-edit-item-list",children:h(wn,{itemCount:p.length,items:g,offset:s,renderItem:({item:E})=>h(St,{checked:m(E.value),children:E.displayValue}),onSelect:f,onViewportChange:C,rowHeight:GT,focusSelector:"input",ref:u})})]})}function qT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#7DA4FF",d:"M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z"})]})})}function YT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#7DA4FF",d:"M7 34h4v8H7zM12 31h4v11h-4zM17 27h4v15h-4zM22 22h4v20h-4zM27 27h4v15h-4zM32 29h4v13h-4zM37 31h4v11h-4z"})]})})}function XT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M4 4h1v40H4zM44 43v1H5v-1z"}),h("path",{stroke:"#7DA4FF",d:"M7.984 32.44l7.982-11.378 5.273 3.739 9.952-10.838 2.826 1.894 7.45-5.802"}),h("path",{stroke:"#BECDEF",d:"M8.244 37.926L17 33.496l5 .87 10.637-10.35 10.615-1.381"})]})})}function jT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{d:"M24 10c7.732 0 14 6.268 14 14s-6.268 14-14 14-14-6.268-14-14h14V10z",fill:"#80A6FF"}),h("path",{d:"M10 24c0-7.732 6.268-14 14-14v14H10z",fill:"#C1C0C0"})]})})}function ZT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#939293",d:"M44 34v1H4v-1zM44 25v1H4v-1zM44 16v1H4v-1z"}),h("circle",{fill:"#7DA4FF",cx:9.5,cy:37.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:16.5,cy:30.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:22.5,cy:36.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:28.5,cy:30.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:15.5,cy:38.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:23.5,cy:25.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:19.5,cy:19.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:29.5,cy:19.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:32.5,cy:26.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:36.5,cy:13.5,r:1.5})]})})}function QT(t){return T("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[h("rect",{width:"48",height:"48",fill:"none"}),h("rect",{x:"26",y:"10",width:"15",height:"4",fill:"#9FDE70"}),h("rect",{x:"26",y:"22",width:"15",height:"4",fill:"#9FDE70"}),h("rect",{x:"26",y:"28",width:"15",height:"4",fill:"#FFD95C"}),h("rect",{x:"26",y:"34",width:"15",height:"4",fill:"#9FDE70"})]})}function JT(t){return T("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[h("rect",{width:"48",height:"48",fill:"none"}),h("rect",{x:"4",y:"16",width:"40",height:"4",fill:"#FFD95C"}),h("rect",{x:"4",y:"10",width:"40",height:"4",fill:"#78DCE8"}),h("rect",{x:"4",y:"34",width:"40",height:"4",fill:"#78DCE8"})]})}const Vh=X.module("ChartBuilder"),Ct=class extends w.exports.PureComponent{static getTypeName(t){switch(t){case M.plot.SeriesPlotStyle.LINE:return"Line";case M.plot.SeriesPlotStyle.BAR:return"Bar";case M.plot.SeriesPlotStyle.SCATTER:return"Scatter";case M.plot.SeriesPlotStyle.PIE:return"Pie";case M.plot.SeriesPlotStyle.HISTOGRAM:return"Histogram";default:return t}}static getTypeIcon(t){switch(t){case M.plot.SeriesPlotStyle.LINE:return h(XT,{});case M.plot.SeriesPlotStyle.BAR:return h(qT,{});case M.plot.SeriesPlotStyle.SCATTER:return h(ZT,{});case M.plot.SeriesPlotStyle.PIE:return h(jT,{});case M.plot.SeriesPlotStyle.HISTOGRAM:return h(YT,{});default:return null}}static getMaxSeriesCount(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return 1;case M.plot.SeriesPlotStyle.HISTOGRAM:return 0;default:return 100}}static getXAxisLabel(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return"Labels";case M.plot.SeriesPlotStyle.HISTOGRAM:return"Data";default:return"X-Axis"}}static getSeriesLabel(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return"Values";default:return"Series"}}static makeSeriesItem(t){return{id:$e.generate(),value:t}}static makeDefaultSeriesItems(t,e){if(Ct.getMaxSeriesCount(t)===0||e==null||e.length===0)return[];const s=e.length>1?e[1].name:e[0].name;return[Ct.makeSeriesItem(s)]}static getDefaultXAxis(t,e){return e!=null&&e.length>0?e[0].name:null}constructor(t){super(t),this.handleAddSeries=this.handleAddSeries.bind(this),this.handleLinkStateChange=this.handleLinkStateChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSeriesChange=this.handleSeriesChange.bind(this),this.handleSeriesDeleteClick=this.handleSeriesDeleteClick.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleTypeClick=this.handleTypeClick.bind(this),this.handleXAxisChange=this.handleXAxisChange.bind(this),this.sendChange=this.sendChange.bind(this);const{model:e}=t,{columns:n}=e,s=Ct.types[0],i=Ct.getDefaultXAxis(s,n),o=Ct.makeDefaultSeriesItems(s,n);this.state={type:s,seriesItems:o,xAxis:i,isLinked:!0}}handleAddSeries(){this.setState(t=>{let{seriesItems:e}=t;e=[...e];const{model:n}=this.props,{columns:s}=n;return e.push({id:$e.generate(),value:s[0].name}),{seriesItems:e}},this.sendChange)}handleLinkStateChange(t){this.setState({isLinked:t.target.value==="true"},this.sendChange)}handleReset(){const{model:t}=this.props,{columns:e}=t,n=Ct.types[0],s=Ct.getDefaultXAxis(n,e),i=Ct.makeDefaultSeriesItems(n,e),o=!0;this.setState({type:n,seriesItems:i,xAxis:s,isLinked:o},this.sendChange)}handleSeriesChange(t){const{value:e}=t.target,n=t.target.getAttribute("data-index"),s=parseInt(n,10);this.setState(i=>{let{seriesItems:o}=i;return o=[...o],o[s].value=e,{seriesItems:o}},this.sendChange)}handleSeriesDeleteClick(t){const n=t.target.getAttribute("data-index"),s=parseInt(n,10);this.setState(i=>{let{seriesItems:o}=i;return o=[...o],o.splice(s,1),{seriesItems:o}},this.sendChange)}handleSubmit(t){t.preventDefault();const{onSubmit:e}=this.props,{type:n,seriesItems:s,xAxis:i,isLinked:o}=this.state,r=s.map(l=>l.value);e({type:`${n}`,series:r,xAxis:i,isLinked:o})}handleTypeClick(t){const n=t.target.getAttribute("data-index"),s=parseInt(n,10),i=Ct.types[s];Vh.debug2("handleTypeSelect",i),this.setState(o=>{const r=Ct.getMaxSeriesCount(i);let{seriesItems:l}=o;if(l=l.slice(0,r),l.length===0&&r>0){const{model:a}=this.props,{columns:d}=a;l=Ct.makeDefaultSeriesItems(i,d)}return{type:i,seriesItems:l}},this.sendChange)}handleXAxisChange(t){const e=t.target.value;Vh.debug2("x-axis change",e),this.setState({xAxis:e},this.sendChange)}sendChange(){const{onChange:t}=this.props,{isLinked:e,type:n,seriesItems:s,xAxis:i}=this.state,o=s.map(r=>r.value);t({type:n,series:o,xAxis:i,isLinked:e})}render(){const{model:t}=this.props,{columns:e}=t,{seriesItems:n,type:s,xAxis:i,isLinked:o}=this.state,r=Ct.getMaxSeriesCount(s),l=Ct.getXAxisLabel(s),a=Ct.getSeriesLabel(s),d=n.length>0,c=n.length<r;return h("div",{className:"chart-builder",children:T("form",{onSubmit:this.handleSubmit,children:[T("div",{className:"form-row",children:[h("label",{children:"Select Chart Type"}),h("div",{className:"form-row",children:Ct.types.map((u,m)=>{const p=u;return h("div",{className:"col col-chart-type",children:T("button",{type:"button",className:z("btn","btn-icon","btn-chart-type",{active:u===s}),"data-index":m,onClick:this.handleTypeClick,children:[Ct.getTypeIcon(u),Ct.getTypeName(u)]})},p)})})]}),h("hr",{}),T("div",{className:"form-row form-inline",children:[h("label",{className:"col-2 label-left",children:l}),h("select",{className:"form-control custom-select select-x-axis col",value:i,onChange:this.handleXAxisChange,children:e.map(u=>h("option",{value:u.name,children:u.name},u.name))})]}),d&&h("hr",{}),n.map((u,m)=>T("div",{className:"form-row form-inline form-series-item","data-testid":`form-series-item-${m}`,children:[h("label",{className:"col-2 label-left",children:m===0?a:""}),h("select",{className:"form-control custom-select select-series col",value:u.value,onChange:this.handleSeriesChange,"data-testid":`select-series-item-${m}`,"data-index":m,children:e.map(p=>h("option",{value:p.name,"data-index":m,children:p.name},p.name))}),n.length>1&&h(W,{kind:"ghost",className:"btn-delete-series ml-2 px-2","data-index":m,"data-testid":`delete-series-${m}`,onClick:this.handleSeriesDeleteClick,icon:hn,tooltip:"Delete"})]},u.id)),c&&T("div",{className:"form-row",children:[h("div",{className:"col-2"}),h(W,{kind:"ghost",className:"btn-add-series mt-1",onClick:this.handleAddSeries,icon:zs,children:"Add Series"})]}),T("div",{className:"form-row chart-builder-link",children:[h("label",{className:"col-2 label-right",children:T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:_d,icon:Zi,transform:"right-5 down-5"}),h(Z,{icon:o?yd:pb,transform:"grow-2 right-8 down-6"})]})}),T(Vl,{onChange:this.handleLinkStateChange,value:`${o}`,children:[h(Fn,{value:"true",children:"Sync State"}),h(Fn,{value:"false",children:"Freeze State"})]})]}),T("div",{className:"form-row",children:[h("div",{className:"col-2 label-right"}),h("div",{className:"col chart-builder-link-info",children:o?"Charts with synced state will update to match any filters or user modifications applied to the parent table.":"Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied."})]}),T("div",{className:z("form-row","justify-content-end","my-3"),children:[h(W,{kind:"secondary",className:"btn-reset",onClick:this.handleReset,children:"Reset"}),h(W,{kind:"primary",type:"submit",className:"btn-submit",children:"Create"})]})]})})}};let Ap=Ct;Ap.types=[M.plot.SeriesPlotStyle.LINE,M.plot.SeriesPlotStyle.BAR,M.plot.SeriesPlotStyle.SCATTER,M.plot.SeriesPlotStyle.PIE];class Pp extends w.exports.Component{constructor(e){super(e),this.handleContentChanged=this.handleContentChanged.bind(this),this.handleEditorFocus=this.handleEditorFocus.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleContainerClick=this.handleContainerClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.state={isEditorFocused:!1,isEditorEmpty:!0},this.editorContainer=null}componentDidMount(){this.initEditor()}componentWillUnmount(){this.destroyEditor()}initEditor(){var i;const{value:e,editorSettings:n}=this.props,s={copyWithSyntaxHighlighting:"false",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"groovyDB",lineDecorationsWidth:8,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,padding:{top:6,bottom:6},tabCompletion:"off",useTabStops:!0,value:e,wordWrap:"on",automaticLayout:!0,...n};if(!this.editorContainer)throw new Error("editorContainer is null");this.editor=ps.create(this.editorContainer,s),this.editor.layout(),(i=this.editor.getModel())==null||i.updateOptions({tabSize:0}),this.editor.onDidChangeModelContent(this.handleContentChanged),this.editor.onDidFocusEditorText(this.handleEditorFocus),this.editor.onDidBlurEditorText(this.handleEditorBlur)}destroyEditor(){var e;(e=this.editor)==null||e.dispose(),this.editor=void 0}handleContentChanged(){var s,i;const{onContentChanged:e}=this.props,n=(i=(s=this.editor)==null?void 0:s.getModel())==null?void 0:i.getValue();n!==""&&n!==void 0&&this.setState({isEditorEmpty:n.length===0}),e(n)}handleEditorFocus(){this.setState({isEditorFocused:!0})}handleEditorBlur(){var n,s;const e=(s=(n=this.editor)==null?void 0:n.getModel())==null?void 0:s.getValue();if(e===void 0||e==="")throw new Error("value is undefined");this.setState({isEditorEmpty:e.length===0,isEditorFocused:!1})}handleContainerClick(){var n;const{isEditorFocused:e}=this.state;e||(n=this.editor)==null||n.focus()}handleKeyDown(e){const{onTab:n,editorIndex:s}=this.props;e.key==="Tab"&&n(s,e.shiftKey)}render(){const{value:e,invalid:n}=this.props,{isEditorFocused:s,isEditorEmpty:i}=this.state;return T("div",{className:z("input-editor-wrapper",{focused:s,invalid:n}),onKeyDown:this.handleKeyDown,role:"presentation",onClick:this.handleContainerClick,children:[h("div",{className:"editor-container",ref:o=>{this.editorContainer=o}}),i&&!e&&h("div",{className:"editor-placeholder text-muted",children:"Column Formula"})]})}}Pp.defaultProps={value:"",onContentChanged:()=>{},editorSettings:{},editorIndex:0,onTab:()=>{},invalid:!1};const id=class extends w.exports.PureComponent{constructor(t){super(t),this.handleFormulaEditorContentChanged=this.handleFormulaEditorContentChanged.bind(this)}handleFormulaEditorContentChanged(t){const{onChange:e,eventKey:n}=this.props;t!==void 0&&t!==""&&(t.replace(/(\r\n|\n|\r)/gm,""),e(n,id.INPUT_TYPE.FORMULA,t))}render(){const{eventKey:t,name:e,formula:n,onChange:s,onDeleteColumn:i,inputIndex:o,onTabInEditor:r,invalid:l}=this.props;return h(Cd,{draggableId:t,index:o,disableInteractiveElementBlocking:!0,children:(a,d)=>T("div",{className:z("draggable-container",{dragging:d.isDragging}),ref:a.innerRef,...a.draggableProps,children:[T("div",{className:"custom-column-input-container",children:[T("div",{className:"d-flex flex-row pb-3 custom-column-name",children:[h("input",{className:z("form-control custom-column-input",{"is-invalid":l}),placeholder:"Column Name",value:e,onChange:c=>{s(t,id.INPUT_TYPE.NAME,c.target.value)}}),h(W,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{i(t)},icon:hn,tooltip:"Delete custom column"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",...a.dragHandleProps,children:[h(ze,{children:"Drag column to re-order"}),h(Z,{icon:rr})]})]}),h(Pp,{editorSettings:{language:"deephavenDb"},editorIndex:o,value:n,onContentChanged:this.handleFormulaEditorContentChanged,onTab:r,invalid:l})]}),h("hr",{})]})})}};let oc=id;oc.INPUT_TYPE={NAME:"name",FORMULA:"formula"};oc.defaultProps={name:"",inputIndex:0,formula:"",onChange:()=>{},onDeleteColumn:()=>{},onTabInEditor:()=>{},invalid:!1};class Se extends Tp{constructor(){super(),this.listenerCount=0}addEventListener(e,n,s){super.addEventListener(e,n,s),this.listenerCount+=1,this.listenerCount===1&&this.startListening()}removeEventListener(e,n,s){super.removeEventListener(e,n,s),this.listenerCount-=1,this.listenerCount===0&&this.stopListening()}startListening(){}stopListening(){}get originalColumns(){return this.columns}get layoutHints(){return null}get frontColumns(){return[]}get backColumns(){return[]}get frozenColumns(){return[]}isColumnFrozen(e){return!1}get isFilterRequired(){return!1}get isReversible(){return!0}get isColumnStatisticsAvailable(){return!1}get description(){return""}get isCustomColumnsAvailable(){return!1}get isFormatColumnsAvailable(){return!1}get isExportAvailable(){return!1}get isValuesTableAvailable(){return!1}get isChartBuilderAvailable(){return!1}get isRollupAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isTotalsAvailable(){return!1}isFilterable(e){return!1}close(){}isRowMovable(){return!1}}Se.EVENT=Object.freeze({UPDATED:"UPDATED",FORMATTER_UPDATED:"FORMATTER_UPDATED",REQUEST_FAILED:"REQUEST_FAILED",COLUMNS_CHANGED:"COLUMNS_CHANGED",TABLE_CHANGED:"TABLE_CHANGED",FILTERS_CHANGED:"FILTERS_CHANGED",SORTS_CHANGED:"SORTS_CHANGED",DISCONNECT:"DISCONNECT",RECONNECT:"RECONNECT",TOTALS_UPDATED:"TOTALS_UPDATED",PENDING_DATA_UPDATED:"PENDING_DATA_UPDATED"});const Vi=class extends w.exports.Component{constructor(t){super(t),this.getInput=Ce((e,n)=>e.find(s=>s.eventKey===n)),this.getInputIndex=Ce((e,n)=>e.findIndex(s=>s.eventKey===n)),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleSaveClick=this.handleSaveClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleCustomColumnUpdated=this.handleCustomColumnUpdated.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.resetRequestFailed=this.resetRequestFailed.bind(this),this.handleEditorTabNavigation=this.handleEditorTabNavigation.bind(this),this.state={inputs:[],isCustomColumnApplying:!1,errorMessage:null,hasRequestFailed:!1,isSuccessShowing:!1},this.container=null,this.successButtonTimer=null}static makeCustomColumnInputEventKey(){return $e.generate()}static createCustomColumnInput(){return{eventKey:$e.generate(),name:"",formula:""}}componentDidMount(){const{customColumns:t}=this.props;this.parseCustomColumns(t),this.startListening()}componentWillUnmount(){this.stopListening(),this.successButtonTimer&&clearTimeout(this.successButtonTimer)}resetErrorMessage(){this.setState({errorMessage:null})}startListening(){const{model:t}=this.props;t.addEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),t.addEventListener(Se.EVENT.UPDATED,this.handleCustomColumnUpdated),t.addEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed)}stopListening(){const{model:t}=this.props;t.removeEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),t.removeEventListener(Se.EVENT.UPDATED,this.handleCustomColumnUpdated),t.removeEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed)}parseCustomColumns(t){if(t.length>0){const e=t.map(n=>{const s=n.split(/=(.+)/,2);return{eventKey:Vi.makeCustomColumnInputEventKey(),name:s[0],formula:s[1]}});this.setState({inputs:e})}else this.setState({inputs:[Vi.createCustomColumnInput()]})}handleAddColumnClick(){const{inputs:t}=this.state,e=[...t];e.push(Vi.createCustomColumnInput()),this.setState({inputs:e})}handleDeleteColumn(t){const{inputs:e}=this.state,n=this.getInputIndex(e,t),s=[...e];s.splice(n,1),s.length===0&&s.push(Vi.createCustomColumnInput()),this.setState({inputs:s})}handleInputChange(t,e,n){const{inputs:s}=this.state,i=this.getInputIndex(s,t),r={...this.getInput(s,t)};r[e]=n;const l=[...s];l.splice(i,1,r),this.setState({inputs:l})}handleCustomColumnUpdated(){const{isCustomColumnApplying:t}=this.state;!t||this.setState({isCustomColumnApplying:!1,isSuccessShowing:!0},()=>{this.successButtonTimer=setTimeout(()=>this.setState({isSuccessShowing:!1}),Vi.SUCCESS_SHOW_DURATION)})}handleRequestFailed(t){const e=t,{isCustomColumnApplying:n}=this.state;!n||this.setState({isCustomColumnApplying:!1,errorMessage:T(we,{children:[T("p",{children:[h(Z,{icon:gs})," Failed to apply custom columns."]}),T("div",{className:"error-box",children:[e.detail.errorMessage,h("br",{}),"Table configuration:"," ",JSON.stringify(e.detail.configuration)]})]}),hasRequestFailed:!0})}handleDragEnd(t){if(jt.stopDragging(),!t.destination)return;const{inputs:e}=this.state,n=t.source.index,s=t.destination.index,i=[...e],o=e[n];i.splice(n,1),i.splice(s,0,o),this.setState({inputs:i})}handleEditorTabNavigation(t,e){var s,i,o;const{inputs:n}=this.state;if(e){((s=this.container)==null?void 0:s.querySelectorAll(".btn-drag-handle")[t]).focus();return}if(t===n.length-1)((i=this.container)==null?void 0:i.querySelectorAll(".btn-add-column")[t]).focus();else{const r=t+1;((o=this.container)==null?void 0:o.querySelectorAll(".custom-column-input")[r]).focus()}}handleSaveClick(){const{onSave:t}=this.props,{inputs:e,isCustomColumnApplying:n}=this.state;if(n)return;const s=[];e.forEach(i=>{const{name:o,formula:r}=i;o&&r&&s.push(`${o}=${r}`)}),this.resetErrorMessage(),this.setState({isCustomColumnApplying:!0}),t(s)}resetRequestFailed(){this.setState(({hasRequestFailed:t})=>t?{hasRequestFailed:!1}:null)}renderInputs(){const{inputs:t,hasRequestFailed:e}=this.state;return t.map((n,s)=>{const{eventKey:i,name:o,formula:r}=n;return h(oc,{inputIndex:s,eventKey:i,name:o,formula:r,onChange:this.handleInputChange,onDeleteColumn:this.handleDeleteColumn,onTabInEditor:this.handleEditorTabNavigation,invalid:e},i)})}renderSaveButton(){const{inputs:t,isCustomColumnApplying:e,isSuccessShowing:n}=this.state,s=t.length>1?"Save Columns":"Save Column";return T(W,{kind:n?"success":"primary",className:z("btn-apply",{"btn-spinner":e}),disabled:n||e,onClick:this.handleSaveClick,children:[e&&T("span",{children:[h(kn,{}),h("span",{className:"btn-normal-content",children:"Applying"}),h("span",{className:"btn-hover-content",children:"Applying"})]}),!n&&!e&&s,n&&T(we,{children:[h(Z,{icon:Id})," Success"]})]})}render(){const{onCancel:t}=this.props,{errorMessage:e}=this.state;return T("div",{role:"presentation",className:"custom-column-builder-container",ref:n=>{this.container=n},onClick:this.resetRequestFailed,onFocus:this.resetRequestFailed,children:[h("hr",{}),h(_l,{onDragStart:jt.startDragging,onDragEnd:this.handleDragEnd,children:h(xl,{droppableId:"droppable-custom-columns",children:(n,s)=>T("div",{ref:n.innerRef,...n.droppableProps,className:z("droppable-container",{dragging:s.draggingFromThisWith}),children:[this.renderInputs(),n.placeholder]})})}),h("div",{className:"pt-1 px-3",children:h(W,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,icon:zs,children:"Add Another Column"})}),T("div",{className:"custom-column-builder-footer",children:[e&&h("div",{className:"error-message",children:e}),T("div",{className:"d-flex justify-content-end",children:[h(W,{kind:"secondary",className:"mr-2",onClick:t,children:"Cancel"}),this.renderSaveButton()]})]})]})}};let rc=Vi;rc.SUCCESS_SHOW_DURATION=750;rc.defaultProps={customColumns:[],onSave:()=>{},onCancel:()=>{}};var ke=(t=>(t.ADVANCED_SETTINGS="ADVANCED_SETTINGS",t.AGGREGATIONS="AGGREGATIONS",t.AGGREGATION_EDIT="AGGREGATIONS_EDIT",t.CHART_BUILDER="CHART_BUILDER",t.CUSTOM_COLUMN_BUILDER="CUSTOM_COLUMN_BUILDER",t.QUICK_FILTERS="QUICK_FILTERS",t.ROLLUP_ROWS="ROLLUP_ROWS",t.SEARCH_BAR="SEARCH_BAR",t.SELECT_DISTINCT="SELECT_DISTINCT",t.TABLE_EXPORTER="TABLE_EXPORTER",t.VISIBILITY_ORDERING_BUILDER="VISIBILITY_ORDERING_BUILDER",t.CONDITIONAL_FORMATTING="CONDITIONAL_FORMATTING",t.CONDITIONAL_FORMATTING_EDIT="CONDITIONAL_FORMATTING_EDIT",t.GOTO="GOTO",t))(ke||{});const xo=X.module("RollupRows"),eE=150,Wr="grouped-rollup-rows",zr="ungrouped-rollup-rows",yn=class extends w.exports.Component{constructor(t){super(t),this.search=je(o=>{const r=this.getSortedUngroupedColumns(),l=[];let a=null;for(let d=0;d<r.length;d+=1)r[d].name.toLowerCase().includes(o.toLowerCase())&&(a==null&&(a=d),l.push([d,d]));P(a),this.setState({ungroupedSelectedRanges:l}),l.length>0&&this.ungroupedList.current&&this.ungroupedList.current.scrollToItem(a)},eE),this.getCachedUngroupedColumns=fe((o,r)=>o.filter(l=>yn.isGroupable(l)&&r.find(a=>a===l.name)==null)),this.getCachedSortedColumns=fe((o,r)=>r==null?[...o]:L.sortColumns(o,r===yn.SORT.ASCENDING)),this.handleDeleteClicked=this.handleDeleteClicked.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUngroupedSelect=this.handleUngroupedSelect.bind(this),this.handleUngroupedSelectionChange=this.handleUngroupedSelectionChange.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupedSelectionChange=this.handleGroupedSelectionChange.bind(this),this.handleShowConstituentsChange=this.handleShowConstituentsChange.bind(this),this.handleShowNonAggregatedColumnsChange=this.handleShowNonAggregatedColumnsChange.bind(this),this.handleSortAscending=this.handleSortAscending.bind(this),this.handleSortDescending=this.handleSortDescending.bind(this),this.renderGroupedItem=this.renderGroupedItem.bind(this),this.ungroupedList=Y.createRef(),this.groupedList=Y.createRef();const{config:e}=t,{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0}=e!=null?e:{};this.state={ungroupedSelectedRanges:[],columns:n,groupedSelectedRanges:[],searchFilter:"",showConstituents:s,showNonAggregatedColumns:i,dragSource:null,sort:null}}static renderColumn({item:t,isClone:e,selectedCount:n}){const s=t==null?void 0:t.name,i=e!==void 0&&e?`${n}`:void 0,o=e!==void 0&&e?"item-list-item-clone":"";return sn.renderTextItem({text:s,badgeText:i,className:o})}static addGroupings(t,e,n=t.length){if(e==null||e.length===0)return t;let s=n;const i=t.filter((o,r)=>e.includes(o)?(r<s&&(s-=1),!1):!0);return i.splice(s,0,...e),i}static isGroupable(t){return!L.isDecimalType(t.type)}componentDidUpdate(t,e){const{config:n}=this.props,{columns:s,showConstituents:i,showNonAggregatedColumns:o}=this.state;n!==t.config?this.updateFromConfig():(s!==e.columns||i!==e.showConstituents||o!==e.showNonAggregatedColumns)&&(n==null||s!==n.columns||i!==n.showConstituents||o!==n.showNonAggregatedColumns)&&this.sendChange()}componentWillUnmount(){this.search.cancel()}handleSearchChange(t){const e=t.target.value;if(this.setState({searchFilter:e}),!e){this.search.cancel(),this.resetSelection();return}this.search(e)}handleSortAscending(){this.setState(({sort:t})=>({sort:t===yn.SORT.ASCENDING?null:yn.SORT.ASCENDING}))}handleSortDescending(){this.setState(({sort:t})=>({sort:t===yn.SORT.DESCENDING?null:yn.SORT.DESCENDING}))}resetSelection(){this.setState({ungroupedSelectedRanges:[],groupedSelectedRanges:[]})}handleDragStart(t){xo.debug("handleDragStart",t),document.documentElement.classList.add("drag-pointer-events-none"),this.setState({dragSource:t.source})}handleDragEnd(t){xo.debug("handleDragEnd",t),document.documentElement.classList.remove("drag-pointer-events-none"),this.setState({dragSource:null});const{destination:e,source:n}=t;if(e==null||n==null)return;if(e.droppableId===zr){this.setState(({groupedSelectedRanges:o,columns:r})=>{const l=[...r];return jt.reorder(l,o,[],0),{columns:l,ungroupedSelectedRanges:[],groupedSelectedRanges:[]}});return}const s=n.droppableId===Wr;let i=e.index;s&&n.index<e.index&&(i+=1),this.setState(({columns:o,ungroupedSelectedRanges:r,groupedSelectedRanges:l})=>{const a=[...o],d=s?a:this.getSortedUngroupedColumns().map(g=>g.name),c=s?l:r,u=jt.reorder(d,c,a,i),m=s?jt.adjustDestinationIndex(i,l):i,p=[[m,m+u.length-1]];return{columns:a,ungroupedSelectedRanges:[],groupedSelectedRanges:p}}),this.resetSelection()}handleUngroupedSelect(t){xo.debug("handleUngroupedSelect"),this.setState(({columns:e})=>({columns:yn.addGroupings(e,[this.getSortedUngroupedColumns()[t].name]),ungroupedSelectedRanges:[],groupedSelectedRanges:[]}))}handleUngroupedSelectionChange(t){xo.debug2("handleUngroupedSelectionChange",t),this.setState(({ungroupedSelectedRanges:e})=>t===e?null:{ungroupedSelectedRanges:t,groupedSelectedRanges:[]})}handleGroupedSelectionChange(t){xo.debug2("handleGroupedSelectedRanges",t),this.setState(({groupedSelectedRanges:e})=>t===e?null:{groupedSelectedRanges:t,ungroupedSelectedRanges:[]})}handleDeleteClicked(t){this.setState(({columns:e})=>{const n=e.slice();return n.splice(t,1),{columns:n}})}handleShowConstituentsChange(){this.setState(({showConstituents:t})=>({showConstituents:!t}))}handleShowNonAggregatedColumnsChange(){this.setState(({showNonAggregatedColumns:t})=>({showNonAggregatedColumns:!t}))}updateFromConfig(){const{config:t}=this.props,{columns:e=[],showConstituents:n=!0,showNonAggregatedColumns:s=!0}=t!=null?t:{};this.setState({columns:e,showConstituents:n,showNonAggregatedColumns:s})}sendChange(){const{onChange:t}=this.props,{columns:e,showConstituents:n,showNonAggregatedColumns:s}=this.state;t({columns:e,showConstituents:n,showNonAggregatedColumns:s})}getUngroupedColumns(){const{model:t}=this.props,{columns:e}=this.state,{originalColumns:n}=t;return this.getCachedUngroupedColumns(n,e)}getSortedUngroupedColumns(){const{sort:t}=this.state,e=this.getUngroupedColumns();return this.getCachedSortedColumns(e,t)}renderGroupedItem({item:t,itemIndex:e,isClone:n,selectedCount:s}){const o=`${n!==void 0&&n?"":"\xA0\xA0".repeat(e)}${t}`,r=n!==void 0&&n?`${s}`:void 0,l=n!==void 0&&n?"item-list-item-clone":"";return T(we,{children:[sn.renderTextItem({text:o,badgeText:r,className:l}),(n===void 0||!n)&&h(W,{kind:"ghost",className:"btn btn-link btn-link-icon btn-delete-grouping float-right",onClick:()=>this.handleDeleteClicked(e),children:h(Z,{icon:hn})})]})}render(){const{columns:t,dragSource:e,searchFilter:n,groupedSelectedRanges:s,ungroupedSelectedRanges:i,showConstituents:o,showNonAggregatedColumns:r,sort:l}=this.state,a=this.getSortedUngroupedColumns();let d=t.length*sn.DEFAULT_ROW_HEIGHT;(e==null?void 0:e.droppableId)===zr&&(d+=sn.DEFAULT_ROW_HEIGHT);const c=a.length*sn.DEFAULT_ROW_HEIGHT+10,u=Math.min(3*sn.DEFAULT_ROW_HEIGHT,c);return h("div",{role:"menu",className:z("rollup-rows",{"is-dragging":e!=null}),tabIndex:0,children:T(_l,{onDragEnd:this.handleDragEnd,onDragStart:this.handleDragStart,children:[T("div",{className:"rollup-rows-group-by",children:[h("div",{className:"section-title",children:"Group By"}),t.length===0&&h(xl,{droppableId:"placeholder",children:(m,p)=>h("div",{className:z("placeholder","text-muted",{"is-dragging-from-this":p.draggingFromThisWith,"is-dragging-over":p.isDraggingOver,"is-dropping":p.draggingOverWith}),ref:m.innerRef,...m.droppableProps,children:"Create rollup by dragging columns here, from the available columns list below."})}),t.length>0&&h(sn,{draggingItemClassName:"rollup-rows-dragging-grouped-item",draggablePrefix:Wr,droppableId:Wr,itemCount:t.length,items:t,offset:0,onSelectionChange:this.handleGroupedSelectionChange,ref:this.groupedList,renderItem:this.renderGroupedItem,selectedRanges:s,style:{height:d},isMultiSelect:!0})]}),T("div",{className:"rollup-rows-available-columns",children:[h("div",{className:"section-title",children:"Available Grouping Columns"}),T("div",{className:"top-menu",children:[h(ws,{className:"w-100",value:n,matchCount:n?i.length:void 0,placeholder:"Find column...",onChange:this.handleSearchChange}),T(W,{kind:"ghost",className:z("btn-link btn-link-icon",{active:l===yn.SORT.ASCENDING}),onClick:this.handleSortAscending,children:[h(Z,{icon:Nd}),h(ze,{children:"Sort ascending"})]}),T(W,{kind:"ghost",className:z("btn-link btn-link-icon",{active:l===yn.SORT.DESCENDING}),onClick:this.handleSortDescending,children:[h(Z,{icon:Fd}),h(ze,{children:"Sort descending"})]})]}),h(sn,{className:"rollup-available-grouping-columns",draggablePrefix:zr,droppableId:zr,itemCount:a.length,items:a,renderItem:yn.renderColumn,offset:0,onSelect:this.handleUngroupedSelect,onSelectionChange:this.handleUngroupedSelectionChange,ref:this.ungroupedList,selectedRanges:i,style:{maxHeight:c,minHeight:u},isDropDisabled:(e==null?void 0:e.droppableId)!==Wr,isMultiSelect:!0}),T("div",{className:"bottom-menu",children:[h("div",{className:"label",children:"Show:"}),h(St,{checked:o,onChange:this.handleShowConstituentsChange,children:"Constituents"}),h(St,{checked:r,onChange:this.handleShowNonAggregatedColumnsChange,children:"Non-Aggregated Columns"})]})]})]})})}};let lc=yn;lc.SORT=Object.freeze({ASCENDING:"ASC",DESCENDING:"DESC"});lc.defaultProps={config:null,onChange:()=>{}};const tE=X.module("TableCsvExporter"),Ye=class extends w.exports.Component{static getDateString(){return M.i18n.DateTimeFormat.format(Ye.FILENAME_DATE_FORMAT,new Date)}constructor(t){super(t),this.handleDownloadClick=this.handleDownloadClick.bind(this),this.handleDownloadRowOptionChanged=this.handleDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowOptionChanged=this.handleCustomizedDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowsChanged=this.handleCustomizedDownloadRowsChanged.bind(this),this.handleIncludeColumnHeadersChanged=this.handleIncludeColumnHeadersChanged.bind(this),this.handleIncludeHiddenColumnsChanged=this.handleIncludeHiddenColumnsChanged.bind(this),this.handleUseUnformattedValuesChanged=this.handleUseUnformattedValuesChanged.bind(this);const{name:e}=t;this.state={fileName:`${e}-${Ye.getDateString()}.csv`,downloadRowOption:Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,customizedDownloadRowOption:Ye.CUSTOMIZED_ROWS_OPTIONS.FIRST,customizedDownloadRows:Ye.DEFAULT_DOWNLOAD_ROWS,includeColumnHeaders:!0,includeHiddenColumns:!1,useUnformattedValues:!1,errorMessage:null,id:$e.generate()}}getSnapshotRanges(){const{model:t,selectedRanges:e}=this.props,{downloadRowOption:n,customizedDownloadRowOption:s,customizedDownloadRows:i}=this.state,{rowCount:o,columnCount:r}=t;let l=[];switch(n){case Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:l.push(new re(0,0,r-1,o-1));break;case Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:l=e.map(a=>({...a,startColumn:0,endColumn:r-1})).sort((a,d)=>a.startRow!=null&&d.startRow!=null?a.startRow-d.startRow:0);break;case Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:switch(s){case Ye.CUSTOMIZED_ROWS_OPTIONS.FIRST:l.push(new re(0,0,r-1,Math.min(i-1,o-1)));break;case Ye.CUSTOMIZED_ROWS_OPTIONS.LAST:l.push(new re(0,Math.max(0,o-i),r-1,o-1));break}break}return l}getModelRanges(t){const{userColumnWidths:e,movedColumns:n}=this.props,{includeHiddenColumns:s}=this.state,i=te.getHiddenColumns(e);let o=j.getModelRanges(t,n);if(!s&&i.length>0){const r=i.map(re.makeColumn);o=re.subtractRangesFromRanges(o,r)}return o}resetDownloadState(){this.setState({errorMessage:null})}async handleDownloadClick(){const{model:t,isDownloading:e,onDownloadStart:n,onDownload:s,onCancel:i}=this.props,{fileName:o,includeColumnHeaders:r,useUnformattedValues:l}=this.state;if(e){i();return}this.resetDownloadState();const a=this.getSnapshotRanges(),d=this.getModelRanges(a);if(this.validateOptionInput()){n();try{const c=await t.export(),u=c.setViewport(0,0);await u.getViewportData(),s(o,c,u,a,d,r,l)}catch(c){tE.error("CSV download failed",c),this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," ",`${c}`]})}),i()}}}handleDownloadRowOptionChanged(t){this.setState({downloadRowOption:t.target.value})}handleCustomizedDownloadRowOptionChanged(t){this.setState({customizedDownloadRowOption:t.target.value})}handleCustomizedDownloadRowsChanged(t){this.setState({customizedDownloadRows:parseInt(t.target.value,10)})}handleIncludeColumnHeadersChanged(){this.setState(({includeColumnHeaders:t})=>({includeColumnHeaders:!t}))}handleIncludeHiddenColumnsChanged(){this.setState(({includeHiddenColumns:t})=>({includeHiddenColumns:!t}))}handleUseUnformattedValuesChanged(){this.setState(({useUnformattedValues:t})=>({useUnformattedValues:!t}))}validateOptionInput(){const{selectedRanges:t}=this.props,{downloadRowOption:e,customizedDownloadRows:n}=this.state;return e===Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS&&t.length===0?(this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," No rows selected. Please select some rows in the table."]})}),!1):e===Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS&&n<=0?(this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," Number of rows to output must be greater than 0"]})}),!1):!0}render(){const{model:t,isDownloading:e,tableDownloadProgress:n,tableDownloadEstimatedTime:s,selectedRanges:i,tableDownloadStatus:o}=this.props,{fileName:r,downloadRowOption:l,customizedDownloadRowOption:a,customizedDownloadRows:d,includeColumnHeaders:c,includeHiddenColumns:u,useUnformattedValues:m,errorMessage:p,id:g}=this.state,{rowCount:f}=t;return T("div",{className:"table-csv-exporter",children:[h("div",{className:"section-title",children:"Download Rows"}),h("div",{className:"form-group",children:T(Vl,{onChange:this.handleDownloadRowOptionChanged,value:l,disabled:e,children:[T(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,"data-testid":"radio-csv-exporter-download-all",children:["All Rows",h("span",{className:"text-muted ml-2",children:`(${f.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`})]}),T(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS,"data-testid":"radio-csv-exporter-only-selected",children:["Only Selected Rows",h("span",{className:"text-muted ml-2",children:i.length>0?`(${re.rowCount(i).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`:null})]}),h(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,"data-testid":"radio-csv-exporter-customized-rows",children:T("div",{className:"radio-input-row",role:"presentation",onClick:()=>{this.setState({downloadRowOption:Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS})},children:[T("select",{value:a,"data-testid":"select-csv-exporter-customized-rows",className:"custom-select",disabled:e,onChange:this.handleCustomizedDownloadRowOptionChanged,children:[h("option",{value:"FIRST",children:"First"}),h("option",{value:"LAST",children:"Last"})]}),h("input",{type:"number",className:"form-control",id:`customizedRows-${g}`,"data-testid":"input-csv-exporter-customized-rows",name:`customizedRows-${g}`,placeholder:"100",value:d,disabled:e,onChange:this.handleCustomizedDownloadRowsChanged}),h("div",{children:"Rows"})]})})]})}),T("div",{className:"form-group",children:[h("label",{htmlFor:`customizedRows-${g}`,children:"File Name"}),h("input",{type:"text",className:"form-control",id:`filename-${g}`,"data-testid":"input-csv-exporter-file-name",name:`filename-${g}`,value:r,onChange:b=>{this.setState({fileName:b.target.value})},disabled:e})]}),T("div",{className:"checkbox-options",children:[h(St,{checked:c,onChange:this.handleIncludeColumnHeadersChanged,children:"Include column headers"}),h(St,{checked:u,onChange:this.handleIncludeHiddenColumnsChanged,children:"Include hidden columns"}),h(St,{checked:m,onChange:this.handleUseUnformattedValuesChanged,children:"Use unformatted values"})]}),T("div",{className:"section-footer flex-column",children:[p!=null&&h("div",{className:"error-message",children:p}),o&&T("div",{className:"download-status",children:[(o===Ye.DOWNLOAD_STATUS.DOWNLOADING||o===Ye.DOWNLOAD_STATUS.INITIATING)&&T(we,{children:[o===Ye.DOWNLOAD_STATUS.INITIATING&&h("div",{className:"text-muted",children:"Starting Download..."}),o===Ye.DOWNLOAD_STATUS.DOWNLOADING&&T("div",{className:"text-muted d-flex justify-content-between",children:[h("span",{children:s||s===0?`Estimated time: ${Rn.formatElapsedTime(s)}`:null}),h("span",{children:`${n}%`})]})]}),o===Ye.DOWNLOAD_STATUS.FINISHED&&h("div",{className:"text-muted text-right",children:"Download Completed"}),o===Ye.DOWNLOAD_STATUS.CANCELED&&h("div",{className:"text-muted",children:"Download Canceled"}),(o===Ye.DOWNLOAD_STATUS.DOWNLOADING||o===Ye.DOWNLOAD_STATUS.INITIATING)&&h("div",{className:"progress",children:h("div",{className:"progress-bar progress-bar-striped progress-bar-animated",style:{width:`${n}%`}})}),o===Ye.DOWNLOAD_STATUS.FINISHED&&h("div",{className:"progress",children:h("div",{className:"progress-bar bg-success",style:{width:`${n}%`}})})]}),T(W,{kind:"primary","data-testid":"btn-csv-exporter-download",className:z("btn-downloading",{"btn-spinner btn-cancelable":e}),onClick:this.handleDownloadClick,children:[e&&T("span",{children:[h(kn,{}),h("span",{className:"btn-normal-content",children:"Downloading"}),h("span",{className:"btn-hover-content",children:"Cancel"})]}),!e&&"Download"]})]})]})}};let rn=Ye;rn.FILENAME_DATE_FORMAT="yyyy-MM-dd-HHmmss";rn.DOWNLOAD_STATUS={INITIATING:"INITIATING",DOWNLOADING:"DOWNLOADING",FINISHED:"FINISHED",CANCELED:"CANCELED"};rn.DOWNLOAD_ROW_OPTIONS={ALL_ROWS:"ALL_ROWS",SELECTED_ROWS:"SELECTED_ROWS",CUSTOMIZED_ROWS:"CUSTOMIZED_ROWS"};rn.CUSTOMIZED_ROWS_OPTIONS={FIRST:"FIRST",LAST:"LAST"};rn.DEFAULT_DOWNLOAD_ROWS=100;rn.defaultProps={onDownloadStart:()=>{},isDownloading:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:null,selectedRanges:[]};const rs=X.module("TableSaver"),nE="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function sE(t){return t.added!==void 0}function iE(t){if(!sE(t))throw new Error("event is not UpdateEventData")}const Hs=class extends w.exports.PureComponent{constructor(t){var e,n;super(t),this.WritableStream=(e=window.WritableStream)!=null?e:Oc,this.getCachedCustomColumnFormatFlag=ln(fs.isCustomColumnFormatDefined,{max:1e4}),this.handlePortMessage=this.handlePortMessage.bind(this),this.handleSnapshotResolved=this.handleSnapshotResolved.bind(this),this.handleDownloadTimeout=this.handleDownloadTimeout.bind(this),this.state={},this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.WritableStream=(n=window.WritableStream)!=null?n:Oc,this.iframes=[],this.useBlobFallback=!1}static csvEscapeString(t){return`"${t.replace(/"/g,'""')}"`}componentDidMount(){const{getDownloadWorker:t}=this.props;t().then(e=>{rs.info("found active service worker"),this.sw=e,this.sw.postMessage("ping")}).catch(e=>{rs.warn("Download csv is not optimized.",e),this.useBlobFallback=!0})}componentWillUnmount(){this.iframes.length>0&&this.iframes.forEach(t=>{t.remove()}),this.streamTimeout&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout&&clearTimeout(this.snapshotHandlerTimeout)}createWriterStream(t){const e=this.useBlobFallback,n=[];let s=null;e&&(s=TextEncoder.prototype.encode.bind(new TextEncoder));const{fileName:i}=this,o={};return e?(o.write=r=>{P(s),r.header!==void 0&&n.push(s(r.header)),r.rows!==void 0&&n.push(s(r.rows))},o.close=()=>{P(i);const r=new Blob(n,{type:"application/octet-stream; charset=utf-8"}),l=document.createElement("a");l.href=URL.createObjectURL(r),l.download=i,l.click()},o.abort=()=>{t.postMessage({cancel:!0}),t.close()}):(o.write=r=>{t.postMessage(r)},o.close=()=>{t.postMessage({end:!0}),t.close()},o.abort=()=>{t.postMessage({cancel:!0}),t.close()}),new this.WritableStream(o)}startDownload(t,e,n,s,i,o,r){const{isDownloading:l}=this.props;if(l)return;this.downloadStartTime=Date.now(),rs.info(`start downloading ${t}`),this.table=e,this.columns=te.columnsFromRanges(i,e.columns),this.tableSubscription=n,this.gridRanges=s,this.includeColumnHeaders=o,this.useUnformattedValues=r;const a=encodeURIComponent(t.replace(/\//g,":")).replace(/['()]/g,escape).replace(/\*/g,"%2A"),d=new MessageChannel;if(this.port=d.port1,this.fileName=t,this.fileWriter=this.createWriterStream(this.port).getWriter(),this.useBlobFallback){this.writeCsvTable(o);return}this.sw&&this.sw.postMessage({encodedFileName:a},[d.port2]),this.port.onmessage=this.handlePortMessage}finishDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.close();const{onDownloadCompleted:t}=this.props;t(),this.resetTableSaver(),this.downloadStartTime!==void 0&&rs.info(`download finished, total elapsed time ${(Date.now()-this.downloadStartTime)/1e3} seconds`)}cancelDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.abort(),this.cancelableSnapshots.forEach(e=>{e&&(e.catch(()=>null),e.cancel())});const{onDownloadCanceled:t}=this.props;t(),this.resetTableSaver()}resetTableSaver(){this.table=void 0,this.tableSubscription=void 0,this.columns=void 0,this.chunkRows=void 0,this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout!=null&&clearTimeout(this.snapshotHandlerTimeout),this.streamTimeout=void 0,this.snapshotHandlerTimeout=void 0}handleDownloadTimeout(){rs.info("download canceled"),this.cancelDownload()}writeTableHeader(){var e;let t="";if(this.columns)for(let n=0;n<this.columns.length;n+=1)t+=this.columns[n].name,t+=n===this.columns.length-1?`
|
|
25
|
+
`;S(x),g(!0),v(x)}else R(U.shiftKey?Mn.UP:Mn.DOWN);break;case"Tab":U.preventDefault(),R(U.shiftKey?Mn.LEFT:Mn.RIGHT);break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":f&&(U.preventDefault(),R(Av(U.key)));break}},[E,R,f,S,g,v,C]),B=w.exports.useCallback(U=>{a(U)},[a]);return h("textarea",{ref:c,className:z("grid-cell-input-field",e),value:C,onBlur:N,onChange:y,onKeyDown:F,onContextMenu:B,onClick:I,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",disabled:n,style:d})}ec.propTypes={selectionRange:D.exports.arrayOf(D.exports.number),className:D.exports.string,disabled:D.exports.bool,isQuickEdit:D.exports.bool,value:D.exports.string,onChange:D.exports.func,onCancel:D.exports.func,onDone:D.exports.func,onContextMenu:D.exports.func,style:D.exports.shape({})};ec.defaultProps={selectionRange:null,className:"",disabled:!1,value:"",isQuickEdit:!0,onChange:()=>{},onCancel:()=>{},onDone:()=>{},onContextMenu:()=>{},style:{}};const Pv=Y.createContext({}),ii=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedKeyHandlers=Ce(l=>[...l,...this.keyHandlers].sort((a,d)=>a.order-d.order)),this.getCachedMouseHandlers=Ce(l=>[...l,...this.mouseHandlers].sort((a,d)=>a.order-d.order)),this.handleClick=this.handleClick.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleEditCellCancel=this.handleEditCellCancel.bind(this),this.handleEditCellChange=this.handleEditCellChange.bind(this),this.handleEditCellCommit=this.handleEditCellCommit.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseDrag=this.handleMouseDrag.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleResize=this.handleResize.bind(this),this.handleWheel=this.handleWheel.bind(this);const{isStuckToBottom:e,isStuckToRight:n,metricCalculator:s,movedColumns:i,movedRows:o,renderer:r}=t;this.renderer=r||new to,this.metricCalculator=s||new hr,this.canvas=null,this.canvasContext=null,this.animationFrame=null,this.prevMetrics=null,this.metrics=null,this.documentCursor=null,this.dragTimer=null,this.keyHandlers=[new xv(400),new Lv(450),new Nv(500),new Fv(900)],this.mouseHandlers=[new Qd(100),new Ql(200),new Rv(300),new Iv(400),new Mv(450),new Jd(500),new Zd(600),new Dv(700),new vl(800),new Ev(900)],this.state={top:0,left:0,topOffset:0,leftOffset:0,draggingColumn:null,draggingRow:null,draggingRowOffset:null,draggingColumnSeparator:null,draggingRowSeparator:null,isDraggingHorizontalScrollBar:!1,isDraggingVerticalScrollBar:!1,isDragging:!1,mouseX:null,mouseY:null,movedColumns:i,movedRows:o,cursorRow:null,cursorColumn:null,selectionStartRow:null,selectionStartColumn:null,selectionEndRow:null,selectionEndColumn:null,selectedRanges:[],lastSelectedRanges:[],cursor:null,editingCell:null,isStuckToBottom:e,isStuckToRight:n}}static getScale(t){var i,o,r,l,a;const e=window.devicePixelRatio||1,n=t,s=(a=(l=(r=(o=(i=n.webkitBackingStorePixelRatio)!=null?i:n.mozBackingStorePixelRatio)!=null?o:n.msBackingStorePixelRatio)!=null?r:n.oBackingStorePixelRatio)!=null?l:n.backingStorePixelRatio)!=null?a:1;return e/s}static getCursorClassName(t){return t!=null&&t!==""?`grid-cursor-${t}`:null}componentDidMount(){var n;this.initContext(),(n=this.canvas)==null||n.addEventListener("wheel",this.handleWheel,{passive:!1}),window.addEventListener("resize",this.handleResize),this.updateCanvasScale(),this.updateCanvas();const{isStuckToBottom:t,isStuckToRight:e}=this.props;t&&this.scrollToBottom(),e&&this.scrollToRight()}componentDidUpdate(t,e){const{isStickyBottom:n,isStickyRight:s,movedColumns:i,movedRows:o,onMovedColumnsChanged:r,onMoveColumnComplete:l,onMovedRowsChanged:a,onMoveRowComplete:d}=this.props,{isStickyBottom:c,isStickyRight:u,movedColumns:m,movedRows:p}=t,{movedColumns:g,movedRows:f}=e,{draggingColumn:b,draggingRow:C,movedColumns:S,movedRows:v}=this.state;if(m!==i&&this.setState({movedColumns:i}),p!==o&&this.setState({movedRows:o}),g!==S&&r(S),e.draggingColumn!=null&&b==null&&l(S),f!==v&&a(v),e.draggingRow!=null&&C==null&&d(v),n!==c&&this.setState({isStuckToBottom:!1}),s!==u&&this.setState({isStuckToRight:!1}),this.updateMetrics(),this.requestUpdateCanvas(),!this.metrics||!this.prevMetrics)return;const{rowCount:y,columnCount:E,height:I,width:R}=this.metrics,{rowCount:N,columnCount:F,height:B,width:U}=this.prevMetrics;if(N!==y||I!==B){const{isStuckToBottom:x}=this.state;x&&this.scrollToBottom()}if(F!==E||R!==U){const{isStuckToRight:x}=this.state;x&&this.scrollToRight()}this.validateSelection()&&this.checkSelectionChange(e)}componentWillUnmount(){var t;this.animationFrame!=null&&cancelAnimationFrame(this.animationFrame),(t=this.canvas)==null||t.removeEventListener("wheel",this.handleWheel),window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),window.removeEventListener("resize",this.handleResize),this.stopDragTimer()}getTheme(){const{theme:t}=this.props;return ii.getTheme(this.context,t)}getGridPointFromEvent(t){Nh(this.canvas);const e=this.canvas.getBoundingClientRect(),n=t.clientX-e.left,s=t.clientY-e.top;return this.getGridPointFromXY(n,s)}getGridPointFromXY(t,e){if(!this.metrics)throw new Error("metrics must be set");return j.getGridPointFromXY(t,e,this.metrics)}getMetricState(t=this.state){const e=this.getTheme(),{model:n,stateOverride:s}=this.props;if(!this.canvasContext||!this.canvas)throw new Error("Canvas and context must be defined to get metrics");const i=this.canvasContext,o=this.canvas.clientWidth,r=this.canvas.clientHeight,{left:l,top:a,leftOffset:d,topOffset:c,movedColumns:u,movedRows:m,isDraggingHorizontalScrollBar:p,isDraggingVerticalScrollBar:g,draggingColumn:f}=t;return{left:l,top:a,leftOffset:d,topOffset:c,width:o,height:r,context:i,theme:e,model:n,movedColumns:u,movedRows:m,isDraggingHorizontalScrollBar:p,isDraggingVerticalScrollBar:g,draggingColumn:f,...s}}getKeyHandlers(){const{keyHandlers:t}=this.props;return this.getCachedKeyHandlers(t)}getMouseHandlers(){const{mouseHandlers:t}=this.props;return this.getCachedMouseHandlers(t)}getModelColumn(t){var n,s;const e=(s=(n=this.metrics)==null?void 0:n.modelColumns)==null?void 0:s.get(t);if(e===void 0)throw new Error(`Unable to get ModelIndex for column ${t}`);return e}getModelRow(t){var n,s;const e=(s=(n=this.metrics)==null?void 0:n.modelRows)==null?void 0:s.get(t);if(e===void 0)throw new Error(`Unable to get ModelIndex for row ${t}`);return e}toggleRowExpanded(t){const e=this.getModelRow(t),{model:n}=this.props;gt(n)&&n.isRowExpandable(e)&&n.setRowExpanded(e,!n.isRowExpanded(e)),this.clearSelectedRanges(),this.commitSelection(),this.moveCursorToPosition(0,t),this.commitSelection(),this.setState({isStuckToBottom:!1})}scrollToBottom(){if(!this.metrics)return;const{bottomVisible:t,rowCount:e,top:n,lastTop:s}=this.metrics;(t<e-1&&t>0||n>s)&&this.setState({top:s})}scrollToRight(){if(!this.metrics)return;const{rightVisible:t,columnCount:e,left:n,lastLeft:s}=this.metrics;(t<e-1&&t>0||n>s)&&this.setState({left:s})}setSelectedRanges(t){const{model:e}=this.props,{columnCount:n,rowCount:s}=e,{cursorRow:i,cursorColumn:o,selectedRanges:r}=this.state;if(this.setState({selectedRanges:t,lastSelectedRanges:r}),t.length>0){const l=re.boundedRange(t[0],n,s);let a=i,d=o;l.containsCell(o,i)||({row:a,column:d}=l.startCell()),this.setState({selectionStartColumn:l.startColumn,selectionStartRow:l.startRow,selectionEndColumn:l.endColumn,selectionEndRow:l.endRow,cursorColumn:d,cursorRow:a})}}initContext(){const{canvas:t}=this,{canvasOptions:e}=this.props;if(!t)throw new Error("Canvas not set");this.canvasContext=t.getContext("2d",e)}requestUpdateCanvas(){this.animationFrame==null&&(this.animationFrame=requestAnimationFrame(()=>{if(this.animationFrame=null,!this.metrics)throw new Error("Metrics not set");this.updateCanvas(this.metrics)}))}updateCanvas(t=this.updateMetrics()){this.updateCanvasScale();const{onViewChanged:e}=this.props;e(t),this.drawCanvas(t)}updateCanvasScale(){const{canvas:t,canvasContext:e}=this;if(!t)throw new Error("canvas not set");if(!e)throw new Error("canvasContext not set");if(!t.parentElement)throw new Error("Canvas has no parent element");const n=ii.getScale(e),s=t.parentElement.getBoundingClientRect(),i=Math.floor(s.width),o=Math.floor(s.height);t.style.width=`${i}px`,t.style.height=`${o}px`,t.width=i*n,t.height=o*n,e.scale(n,n)}updateScrollBounds(){if(!this.metrics)throw new Error("metrics not set");const{left:t,top:e}=this.state,{lastLeft:n,lastTop:s}=this.metrics;t>n&&this.setState({left:n,leftOffset:0}),e>s&&this.setState({top:s,topOffset:0})}updateMetrics(t=this.state){this.prevMetrics=this.metrics;const{metricCalculator:e}=this,n=this.getMetricState(t);return this.metrics=e.getMetrics(n),this.updateScrollBounds(),this.metrics}checkSelectionChange(t){const{selectedRanges:e}=t,{selectedRanges:n}=this.state;if(n!==e){const{onSelectionChanged:s}=this.props;s(n)}}validateSelection(){const{model:t}=this.props,{selectedRanges:e}=this.state,{columnCount:n,rowCount:s}=t;for(let i=0;i<e.length;i+=1){const o=e[i];if(o.endColumn!=null&&o.endColumn>=n||o.endRow!=null&&o.endRow>=s)return this.setState({selectedRanges:[],lastSelectedRanges:[]}),!1}return!0}clearSelectedRanges(){const{selectedRanges:t}=this.state;this.setState({selectedRanges:[],lastSelectedRanges:t})}trimSelectedRanges(){const{selectedRanges:t}=this.state;t.length>0&&this.setState({selectedRanges:t.slice(t.length-1)})}beginSelection(t,e){this.setState({selectionStartColumn:t,selectionStartRow:e,selectionEndColumn:t,selectionEndRow:e,cursorColumn:t,cursorRow:e})}moveSelection(t,e,n=!1,s=!1){this.setState(i=>{var g,f,b,C;const{selectedRanges:o,selectionStartRow:r,selectionStartColumn:l}=i,{theme:a}=this.props,{autoSelectRow:d,autoSelectColumn:c}=a;if(n&&o.length>0){const S=o[o.length-1];let v=null,y=null,E=null,I=null;s?(v=d!==void 0&&d?null:Math.min(t!=null?t:0,(g=S.startColumn)!=null?g:0),y=c!==void 0&&c?null:Math.min(e!=null?e:0,(f=S.startRow)!=null?f:0),E=d!==void 0&&d?null:Math.max(t!=null?t:0,(b=S.endColumn)!=null?b:0),I=c!==void 0&&c?null:Math.max(e!=null?e:0,(C=S.endRow)!=null?C:0)):(v=S.startColumn,y=S.startRow,(l!=null||r!=null)&&((d===void 0||!d)&&(v=l),(c===void 0||!c)&&(y=r)),E=d!==void 0&&d?null:t,I=c!==void 0&&c?null:e);const R=re.makeNormalized(v,y,E,I);if(S.equals(R))return null;const N=[...o];return N[N.length-1]=R,{selectedRanges:N,selectionEndColumn:t,selectionEndRow:e}}const u=[...o],m=d!==void 0&&d?null:t,p=c!==void 0&&c?null:e;return u.push(re.makeNormalized(m,p,m,p)),{selectedRanges:u,selectionEndColumn:t,selectionEndRow:e}})}commitSelection(){this.setState(t=>{const{theme:e}=this.props,{autoSelectRow:n}=e,{selectedRanges:s,lastSelectedRanges:i,cursorRow:o,cursorColumn:r}=t;if(s.length===1&&(n!==void 0&&n?re.rowCount(s)===1:re.cellCount(s)===1)&&re.rangeArraysEqual(s,i))return{selectedRanges:[],lastSelectedRanges:[],cursorColumn:null,cursorRow:null};let l=s.slice();if(l.length>1){const c=l[l.length-1];for(let u=0;u<l.length-1;u+=1){const m=l[u];if(m.contains(c)){const p=m.subtract(c);l.pop(),l.splice(u,1),l=l.concat(p);break}}l=re.consolidate(l)}let a=r,d=o;if(!re.containsCell(l,r,o)){const{model:c}=this.props,{columnCount:u,rowCount:m}=c,p=re.nextCell(re.boundedRanges(s,u,m));p!=null?{column:a,row:d}=p:(a=null,d=null)}return l.length===0&&(a=null,d=null),{cursorRow:d,cursorColumn:a,selectedRanges:l,lastSelectedRanges:s}})}setFocusRow(t){var u;if(!this.metrics||!this.prevMetrics)return;const{gridY:e,height:n,lastTop:s,userRowHeights:i,rowHeight:o}=this.metrics,r=n-e,l=Math.round(r/2)+((u=i.get(t))!=null?u:o),a=this.getMetricState(),d=this.metricCalculator.getLastTop(a,t+1,l);this.setState({top:Math.min(s,d),selectedRanges:[new re(null,t,null,t)]});const{cursorColumn:c}=this.state;this.moveCursorToPosition(c,t,!1,!1)}selectAll(){const{model:t,theme:e}=this.props,{autoSelectRow:n,autoSelectColumn:s}=e,i=s!==void 0&&s?null:0,o=s!==void 0&&s?null:t.rowCount-1,r=n!==void 0&&n?null:0,l=n!==void 0&&n?null:t.columnCount-1;this.setSelectedRanges([new re(r,i,l,o)])}moveCursor(t,e,n){const{cursorRow:s,cursorColumn:i,selectionEndColumn:o,selectionEndRow:r}=this.state,l=n?o:i,a=n?r:s;if(a===null||l===null){const{left:d,top:c}=this.state;this.moveCursorToPosition(d,c,n)}else{const{model:d}=this.props,{columnCount:c,rowCount:u}=d,m=Qe(l+t,0,c-1),p=Qe(a+e,0,u-1);this.moveCursorToPosition(m,p,n)}}moveCursorInDirection(t=re.SELECTION_DIRECTION.DOWN){var d;const{model:e}=this.props,{columnCount:n,rowCount:s}=e,{cursorRow:i,cursorColumn:o,selectedRanges:r}=this.state,l=r.length>0?r:[re.makeCell(o,i)];let a=null;if(l.length===1&&re.cellCount(l)===1){const c=new re(0,0,n-1,s-1);a=(d=c.nextCell(o,i,t))!=null?d:c.startCell(t)}else a=re.nextCell(re.boundedRanges(l,n,s),o,i,t);if(a!=null){const{column:c,row:u}=a;this.setState({cursorColumn:c,cursorRow:u}),re.containsCell(r,c,u)||this.setState({selectedRanges:[re.makeCell(c,u)],selectionStartColumn:c,selectionStartRow:u,selectionEndColumn:c,selectionEndRow:u}),this.moveViewToCell(a.column,a.row)}}moveCursorToPosition(t,e,n=!1,s=!0,i=!1){n||this.beginSelection(t,e),this.moveSelection(t,e,n,i),s&&this.moveViewToCell(t,e)}moveViewToCell(t,e){if(!this.metrics)throw new Error("metrics not set");const{metricCalculator:n}=this,{bottomVisible:s,rightVisible:i,topVisible:o,leftVisible:r}=this.metrics,l=this.getMetricState(this.state);let{top:a,left:d,topOffset:c,leftOffset:u}=this.state;e!=null&&!j.isFloatingRow(e,this.metrics)&&(e<o?(a=n.getTopForTopVisible(l,e),c=0):e>s&&(a=n.getTopForBottomVisible(l,e),c=0)),t!=null&&!j.isFloatingColumn(t,this.metrics)&&(t<r?(d=n.getLeftForLeftVisible(l,t),u=0):t>i&&(d=n.getLeftForRightVisible(l,t),u=0)),this.setViewState({top:a,left:d,topOffset:c,leftOffset:u})}setViewState(t,e=!1){if(!this.metrics)throw new Error("metrics not set");const{isStickyBottom:n,isStickyRight:s}=this.props,{top:i,left:o}=t,{lastTop:r,lastLeft:l}=this.metrics;i!=null&&this.setState({isStuckToBottom:n&&i>=r}),o!=null&&this.setState({isStuckToRight:s&&o>=l}),this.setState(t),e&&this.forceUpdate()}startEditing(t,e,n=!1,s,i){const{model:o}=this.props;if(!et(o))throw new Error("model is not editable");const r=this.getModelColumn(t),l=this.getModelRow(e),a={column:t,row:e,selectionRange:s,value:i!==void 0?i:o.editValueForCell(r,l),isQuickEdit:n};this.setState({editingCell:a,cursorColumn:t,cursorRow:e}),this.moveViewToCell(t,e)}isValidForCell(t,e,n){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);return et(s)&&s.isValidForCell(i,o,n)}async pasteValue(t){const{model:e}=this.props,{movedColumns:n,movedRows:s,selectedRanges:i}=this.state;try{if(Fh(e),!e.isEditable||!i.every(u=>e.isEditableRange(u)))throw new Ra("Can't paste in to read-only area.");if(i.length<=0)throw new Ra("Select an area to paste to.");if(typeof t=="string"){const u=[],m=j.getModelRanges(i,n,s);re.forEachCell(m,(p,g)=>{u.push({column:p,row:g,text:t})}),await e.setValues(u);return}const o=t.length,r=t[0].length,{columnCount:l,rowCount:a}=e;let d=i;if(d.every(u=>{var m,p;return re.cellCount([u])===1&&((m=u.startColumn)!=null?m:0)+r<=l&&((p=u.startRow)!=null?p:0)+o<=a})&&(d=d.map(u=>{var m,p;return new re(u.startColumn,u.startRow,((m=u.startColumn)!=null?m:0)+r-1,((p=u.startRow)!=null?p:0)+o-1)}),this.setSelectedRanges(d)),!d.every(u=>re.rowCount([u])===o&&re.columnCount([u])===r))throw new Ra("Copy and paste area are not same size.");const c=[];d.forEach(u=>{var m,p;for(let g=0;g<r;g+=1)for(let f=0;f<o;f+=1)c.push({column:((m=u.startColumn)!=null?m:0)+g,row:((p=u.startRow)!=null?p:0)+f,text:t[f][g]})}),await e.setValues(c)}catch(o){const{onError:r}=this.props;r(o instanceof Error?o:new Error(`${o}`))}}setValueForCell(t,e,n){const{model:s}=this.props;Fh(s);const i=this.getModelColumn(t),o=this.getModelRow(e);return s.isValidForCell(i,o,n)?(s.setValueForCell(i,o,n),!0):!1}setValueForRanges(t,e){const{model:n}=this.props,{movedColumns:s,movedRows:i}=this.state,o=j.getModelRanges(t,s,i);et(n)&&n.setValueForRanges(o,e)}isSelected(t,e){var s,i;const{selectedRanges:n}=this.state;for(let o=0;o<n.length;o+=1){const r=n[o],l=r.startRow===null||r.startRow<=t&&t<=((s=r.endRow)!=null?s:0),a=r.startColumn===null||r.startColumn<=e&&e<=((i=r.endColumn)!=null?i:0);if(l&&a)return!0}return!1}addDocumentCursor(t=null){this.documentCursor!==ii.getCursorClassName(t)&&(this.documentCursor!=null&&document.documentElement.classList.remove(this.documentCursor),this.documentCursor=ii.getCursorClassName(t),this.documentCursor!=null&&document.documentElement.classList.add(this.documentCursor),document.documentElement.classList.add("grid-block-events"))}removeDocumentCursor(){this.documentCursor!=null&&(document.documentElement.classList.remove(this.documentCursor),document.documentElement.classList.remove("grid-block-events"),this.documentCursor=null)}startDragTimer(t){this.stopDragTimer();const e=new MouseEvent("custom",t.nativeEvent);this.dragTimer=setTimeout(()=>{this.handleMouseDrag(e)},ii.dragTimeout)}stopDragTimer(){this.dragTimer&&(clearTimeout(this.dragTimer),this.dragTimer=null)}drawCanvas(t=this.updateMetrics()){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{cursorColumn:e,cursorRow:n,draggingColumn:s,draggingColumnSeparator:i,draggingRow:o,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,mouseX:m,mouseY:p,selectedRanges:g}=this.state,{model:f,stateOverride:b}=this.props,{renderer:C}=this,S=this.canvasContext,v=this.getTheme(),y=this.canvas.clientWidth,E=this.canvas.clientHeight,I={width:y,height:E,context:S,theme:v,model:f,metrics:t,mouseX:m,mouseY:p,selectedRanges:g,draggingColumn:s,draggingColumnSeparator:i,draggingRow:o,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,cursorColumn:e,cursorRow:n,...b};S.save(),C.drawCanvas(I),S.restore()}focus(){var t;(t=this.canvas)==null||t.focus()}isFocused(){return document.activeElement===this.canvas}handleClick(t){var s;const e=this.getGridPointFromEvent(t),n=this.getMouseHandlers();for(let i=0;i<n.length;i+=1)if(n[i].onClick(e,this,t)!==!1){t.stopPropagation(),t.preventDefault();break}(s=this.canvas)==null||s.focus()}handleContextMenu(t){const e=this.getGridPointFromEvent(t),n=this.getMouseHandlers();for(let s=0;s<n.length;s+=1)if(n[s].onContextMenu(e,this,t)!==!1){t.stopPropagation(),t.preventDefault();break}}handleKeyDown(t){var n,s;const e=this.getKeyHandlers();for(let i=0;i<e.length;i+=1){const r=e[i].onDown(t,this);if(r!==!1){const l=r;((n=l==null?void 0:l.stopPropagation)==null||n)&&t.stopPropagation(),((s=l==null?void 0:l.preventDefault)==null||s)&&t.preventDefault();break}}}notifyMouseHandlers(t,e,n=!0,s=!1){var l,a;const i=this.getGridPointFromEvent(e),o=this.getMouseHandlers();let r=null;for(let d=0;d<o.length;d+=1){const c=o[d],u=c[t]!=null&&c[t](i,this,e);if(u!==!1){c.cursor!=null&&({cursor:r}=c,s&&this.addDocumentCursor(r));const m=u;((l=m==null?void 0:m.stopPropagation)==null||l)&&e.stopPropagation(),((a=m==null?void 0:m.preventDefault)==null||a)&&e.preventDefault();break}}if(this.setState({cursor:r}),n){const{x:d,y:c}=i;this.setState({mouseX:d,mouseY:c})}}handleMouseDown(t){window.addEventListener("mousemove",this.handleMouseDrag,!0),window.addEventListener("mouseup",this.handleMouseUp,!0),!(t.button!=null&&t.button!==0)&&(this.notifyMouseHandlers("onDown",t),this.startDragTimer(t))}handleDoubleClick(t){this.notifyMouseHandlers("onDoubleClick",t)}handleMouseMove(t){this.notifyMouseHandlers("onMove",t)}handleMouseLeave(t){this.notifyMouseHandlers("onLeave",t,!1),this.setState({mouseX:null,mouseY:null})}handleMouseDrag(t){this.setState({isDragging:!0}),this.notifyMouseHandlers("onDrag",t,!0,!0),this.stopDragTimer()}handleMouseUp(t){window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),!(t.button!=null&&t.button!==0)&&(this.notifyMouseHandlers("onUp",t,!1),this.stopDragTimer(),this.removeDocumentCursor())}handleResize(){if(this.updateCanvasScale(),this.updateCanvas(),!this.metrics)throw new Error("metrics not set");this.forceUpdate()}handleWheel(t){var E,I,R,N;if(this.notifyMouseHandlers("onWheel",t),t.defaultPrevented)return;const{metricCalculator:e,metrics:n}=this,s=this.getMetricState();if(!n)throw new Error("metrics not set");const{lastTop:i,lastLeft:o,columnCount:r,rowCount:l,scrollableContentWidth:a,scrollableViewportWidth:d,scrollableContentHeight:c,scrollableViewportHeight:u,hasHorizontalBar:m,hasVerticalBar:p}=n;let{top:g,left:f,topOffset:b,leftOffset:C}=n;const S=this.getTheme();let{deltaX:v,deltaY:y}=j.getScrollDelta(t,n.barWidth,n.barHeight,n.rowHeight,n.rowHeight);for(;m&&v!==0;){if(C+=v,v=0,r>1){if(C>0&&f>=o||C<0&&f<=0){C=0;break}}else{if(C<=0){C=0;break}const F=a-d;if(C>=F){C=F;break}}if(C>0){const F=(E=n.allColumnWidths.get(f))!=null?E:e.getVisibleColumnWidth(f,s);C>=F?(v=C-F,C=0,f+=1):S.scrollSnapToColumn&&r>1&&(C=0,f+=1)}else if(C<0){const F=(I=n.allColumnWidths.get(f-1))!=null?I:e.getVisibleColumnWidth(f-1,s);Math.abs(C)<=F&&S.scrollSnapToColumn&&r>1?(C=0,f-=1):(v=C+F,C=0,f-=1)}}for(;p&&y!==0;){if(b+=y,y=0,l>1){if(b>0&&g>=i||b<0&&g<=0){b=0;break}}else{if(b<=0){b=0;break}const F=c-u;if(b>=F){b=F;break}}if(b>0){const F=(R=n.allRowHeights.get(g))!=null?R:e.getVisibleRowHeight(g,s);b>=F?(y=b-F,b=0,g+=1):S.scrollSnapToRow&&l>1&&(b=0,g+=1)}else if(b<0){const F=(N=n.allRowHeights.get(g-1))!=null?N:e.getVisibleRowHeight(g-1,s);Math.abs(b)<=F&&S.scrollSnapToRow&&l>1?(b=0,g-=1):(y=b+F,b=0,g-=1)}}this.setViewState({top:g,left:f,leftOffset:C,topOffset:b}),t.stopPropagation(),t.preventDefault()}handleEditCellCancel(){this.setState({editingCell:null}),this.focus()}handleEditCellChange(t){this.setState(({editingCell:e})=>{try{return Nh(e),{editingCell:{...e,value:t}}}catch(n){const{onError:s}=this.props;return s(n instanceof Error?n:new Error(`${n}`)),null}})}handleEditCellCommit(t,{direction:e=Mn.DOWN,fillRange:n=!1}={}){const{editingCell:s,selectedRanges:i}=this.state;if(!s)throw new Error("editingCell not set");const{column:o,row:r}=s;if(!this.isValidForCell(o,r,t)){e===null&&this.setState({editingCell:null});return}n?this.setValueForRanges(i,t):this.setValueForCell(o,r,t),e!==null&&this.moveCursorInDirection(e),this.setState({editingCell:null}),this.focus()}renderInputField(){const{model:t}=this.props,{editingCell:e}=this.state,{metrics:n}=this;if(e==null||n==null||!et(t))return null;const{selectionRange:s,value:i,isQuickEdit:o}=e,{column:r,row:l}=e,{gridX:a,gridY:d,allColumnXs:c,allRowYs:u,allColumnWidths:m,allRowHeights:p}=n,g=c.get(r),f=u.get(l),b=m.get(r),C=p.get(l),S=g!=null&&f!=null&&b!=null&&C!=null?{position:"absolute",left:a+g,top:d+f,width:b,height:C}:{opacity:0},v=this.getModelColumn(r),y=this.getModelRow(l),E=v!=null&&y!=null?{textAlign:t.textAlignForCell(v,y)}:void 0,I=t.isValidForCell(v,y,i);return h("div",{style:S,children:h(ec,{selectionRange:s,className:z({error:!I}),onCancel:this.handleEditCellCancel,onChange:this.handleEditCellChange,onDone:this.handleEditCellCommit,isQuickEdit:o,style:E,value:i},`${r},${l}`)})}render(){const{cursor:t}=this.state;return T(we,{children:[h("canvas",{className:z("grid-canvas",ii.getCursorClassName(t)),ref:e=>{this.canvas=e},onClick:this.handleClick,onContextMenu:this.handleContextMenu,onDoubleClick:this.handleDoubleClick,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,tabIndex:0,children:"Your browser does not support HTML canvas. Update your browser?"}),this.renderInputField()]})}};let uo=ii;uo.contextType=Pv;uo.defaultProps={canvasOptions:{alpha:!1},isStickyBottom:!1,isStickyRight:!1,isStuckToBottom:!1,isStuckToRight:!1,keyHandlers:[],mouseHandlers:[],movedColumns:[],movedRows:[],onError:()=>{},onSelectionChanged:()=>{},onMovedColumnsChanged:t=>{},onMoveColumnComplete:()=>{},onMovedRowsChanged:()=>{},onMoveRowComplete:()=>{},onViewChanged:()=>{},stateOverride:{},theme:{autoSelectColumn:!1,autoSelectRow:!1}};uo.pixelsPerLine=100/3;uo.dragTimeout=1e3;uo.getTheme=Ce((t,e)=>({...wv,...t,...e}));class Tp extends Fl{get floatingTopRowCount(){return 0}get floatingBottomRowCount(){return 0}get floatingLeftColumnCount(){return 0}get floatingRightColumnCount(){return 0}get columnHeaderMaxDepth(){return 1}truncationCharForCell(e,n){}textAlignForCell(e,n){return"left"}colorForCell(e,n,s){return s.textColor}backgroundColorForCell(e,n,s){return null}colorForColumnHeader(e,n=0){return null}textForRowHeader(e){return""}textForRowFooter(e){return""}isColumnMovable(e,n=0){return!0}isRowMovable(e){return!0}getColumnHeaderGroup(e,n){}getColumnHeaderParentGroup(e,n){}}class Hv extends Tp{constructor({rowCount:e=1e9,columnCount:n=100,floatingTopRowCount:s=0,floatingBottomRowCount:i=0,floatingLeftColumnCount:o=0,floatingRightColumnCount:r=0,isEditable:l=!1,editedData:a=[]}={}){super(),this.numRows=e,this.numColumns=n,this.floatingTop=s,this.floatingBottom=i,this.floatingLeft=o,this.floatingRight=r,this.editable=l,this.editedData=a}get rowCount(){return this.numRows}get columnCount(){return this.numColumns}get floatingTopRowCount(){return this.floatingTop}get floatingBottomRowCount(){return this.floatingBottom}get floatingLeftColumnCount(){return this.floatingLeft}get floatingRightColumnCount(){return this.floatingRight}get isEditable(){return this.editable}textForCell(e,n){var s,i;return(i=(s=this.editedData[e])==null?void 0:s[n])!=null?i:`${e},${n}`}colorForCell(e,n,s){return s.textColor}textForColumnHeader(e,n=0){return`${e}`}textForRowHeader(e){return`${e}`}textForRowFooter(e){return`${e}`}async setValueForCell(e,n,s){this.editedData[e]==null&&(this.editedData[e]=[]),this.editedData[e][n]=`${s}`}async setValueForRanges(e,n){re.forEachCell(e,(s,i)=>{this.setValueForCell(s,i,n)})}async setValues(e){var n,s;for(let i=0;i<e.length;i+=1){const o=e[i];this.setValueForCell((n=o.column)!=null?n:o.x,(s=o.row)!=null?s:o.y,o.text)}}editValueForCell(e,n){return this.textForCell(e,n)}isValidForCell(e,n,s){return!0}isEditableRange(e){return this.isEditable}delete(e){throw new Error("Method not implemented.")}}const oi=class extends Hv{constructor({rowCount:t=oi.DEFAULT_ROW_COUNT,columnCount:e=oi.DEFAULT_COLUMN_COUNT,children:n=new Map,childRowCount:s=Math.ceil(Math.max(oi.MIN_CHILD_ROW_COUNT,t*oi.DEFAULT_CHILD_ROW_COUNT_FACTOR)),maxDepth:i=oi.MAX_DEPTH}={}){super({rowCount:t,columnCount:e}),this.getCachedModelRowOffset=ln((o,r)=>{let l=null,a=r;const d=[...o].sort((c,u)=>c[0]-u[0]);for(let c=0;c<d.length;c+=1){const[u,m]=d[c];if(a<=u)break;const p=m.rowCount;if(a<=u+p){l=u,a=a-u-1;break}a-=p}return{key:l,offsetRow:a}}),this.getCachedTextForRowHeader=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return`${l}.${d.textForRowHeader(a)}`}return`${a}`}),this.getCachedTextForCell=ln((o,r,l)=>{const{key:a,offsetRow:d}=this.getCachedModelRowOffset(o,l);if(a!=null){const c=o.get(a);if(c!==void 0)return`${a}.${c.textForCell(r,d)}`}return`${r},${d}`}),this.getCachedIsRowExpandable=ln((o,r,l)=>this.getCachedDepthForRow(o,r)<l),this.getCachedIsRowExpanded=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return d.isRowExpanded(a)}return o.has(a)}),this.getCachedDepthForRow=ln((o,r)=>{const{key:l,offsetRow:a}=this.getCachedModelRowOffset(o,r);if(l!=null){const d=o.get(l);if(d!==void 0)return d.depthForRow(a)+1}return 0}),this.children=n,this.childRowCount=s,this.maxDepth=i}textForCell(t,e){return this.getCachedTextForCell(this.children,t,e)}textForRowHeader(t){return this.getCachedTextForRowHeader(this.children,t)}isRowMovable(t){return!1}get hasExpandableRows(){return!0}get floatingBottomRowCount(){return 0}isRowExpandable(t){return this.getCachedIsRowExpandable(this.children,t,this.maxDepth)}isRowExpanded(t){return this.getCachedIsRowExpanded(this.children,t)}setRowExpanded(t,e){const{key:n,offsetRow:s}=this.getCachedModelRowOffset(this.children,t),i=new Map(this.children);if(n!=null){const o=this.children.get(n);if(o!==void 0){const{rowCount:r}=o;o.setRowExpanded(s,e),this.numRows+=o.rowCount-r}}else if(e){const o=new oi({rowCount:this.childRowCount,columnCount:this.numColumns});i.set(s,o),this.numRows+=o.rowCount}else{const o=i.get(s);o!==void 0&&(this.numRows-=o.rowCount,i.delete(s))}this.children=i}depthForRow(t){return this.getCachedDepthForRow(this.children,t)}};let ur=oi;ur.DEFAULT_ROW_COUNT=1e9;ur.DEFAULT_COLUMN_COUNT=100;ur.DEFAULT_CHILD_ROW_COUNT_FACTOR=.01;ur.MIN_CHILD_ROW_COUNT=10;ur.MAX_DEPTH=10;function Uv(t,e){const n=$v(t);return n===void 0?void 0:`${Yv(t)} ? ${n} : ${e}`}function Vv(t){return dh.Column.formatRowColor(t)}function Bv(t,e){return t.formatColor(e)}const Da=X.module("ConditionalFormattingUtils");var Qn=(t=>(t.CONDITIONAL="conditional",t.ROWS="rows",t))(Qn||{}),Xe=(t=>(t.IS_EQUAL="is-equal",t.IS_NOT_EQUAL="is-not-equal",t.IS_BETWEEN="is-between",t.GREATER_THAN="greater-than",t.GREATER_THAN_OR_EQUAL="greater-than-or-equal",t.LESS_THAN="less-than",t.LESS_THAN_OR_EQUAL="less-than-or-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Xe||{}),on=(t=>(t.IS_EXACTLY="is-exactly",t.IS_NOT_EXACTLY="is-not-exactly",t.CONTAINS="contains",t.DOES_NOT_CONTAIN="does-not-contain",t.STARTS_WITH="starts-with",t.ENDS_WITH="ends-with",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(on||{}),Ut=(t=>(t.IS_EXACTLY="is-exactly",t.IS_NOT_EXACTLY="is-not-exactly",t.IS_BEFORE="is-before",t.IS_BEFORE_OR_EQUAL="is-before-or-equal",t.IS_AFTER="is-after",t.IS_AFTER_OR_EQUAL="is-after-or-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Ut||{}),$o=(t=>(t.IS_TRUE="is-true",t.IS_FALSE="is-false",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))($o||{}),ui=(t=>(t.IS_EQUAL="is-equal",t.IS_NOT_EQUAL="is-not-equal",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(ui||{}),Bn=(t=>(t.NO_FORMATTING="no-formatting",t.POSITIVE="positive",t.NEGATIVE="negative",t.WARN="warn",t.NEUTRAL="neutral",t.ACCENT_1="accent-1",t.ACCENT_2="accent-2",t.CUSTOM="custom",t))(Bn||{});function Lh(t){switch(t){case"no-formatting":return"No formatting";case"positive":return"Positive";case"negative":return"Negative";case"warn":return"Warn";case"neutral":return"Neutral";case"accent-1":return"Accent 1";case"accent-2":return"Accent 2";case"custom":return"Custom..."}}function Tl(t){const{type:e,customConfig:n}=t;switch(e){case"no-formatting":return;case"positive":return"#9fde6f";case"negative":return"#ff6087";case"warn":return"#f67f40";case"neutral":return"#ffd95c";case"accent-1":return"#78dce8";case"accent-2":return"#ab9bf5";case"custom":return n==null?void 0:n.background;default:return}}function El(t){const{type:e,customConfig:n}=t;switch(e){case"no-formatting":return;case"positive":return"#526a3f";case"negative":return"#802f44";case"warn":return"#663318";case"neutral":return"#63562b";case"accent-1":return"#3f6469";case"accent-2":return"#554d72";case"custom":return n==null?void 0:n.color;default:return}}function $v(t){const e=El(t.style),n=Tl(t.style);if(!(e===void 0||n===void 0))return`bgfg(\`${n}\`, \`${e}\`)`}function Wv(t){const{column:e,value:n,start:s,end:i}=t;return rT(e.name,t.condition,n,s,i)}function zv(t){const{column:e,value:n}=t;return lT(e.name,t.condition,n)}function Gv(t){const{column:e,value:n}=t;return aT(e.name,t.condition,n)}function Kv(t){const{column:e}=t;return dT(e.name,t.condition)}function qv(t){const{column:e,value:n}=t;return cT(e.name,t.condition,n)}function Yv(t){const{column:e}=t;if(L.isNumberType(e.type))return Wv(t);if(L.isCharType(e.type))return qv(t);if(L.isStringType(e.type))return zv(t);if(L.isDateType(e.type))return Gv(t);if(L.isBooleanType(e.type))return Kv(t);throw new Error("Invalid column type")}function Xv(t){switch(t){case"is-equal":return"is equal to";case"is-not-equal":return"is not equal to";case"is-between":return"is between";case"greater-than":return"greater than";case"greater-than-or-equal":return"greater than or equal to";case"less-than":return"less than";case"less-than-or-equal":return"less than or equal to";case"is-null":return"is null";case"is-not-null":return"is not null"}}function jv(t){switch(t){case"is-exactly":return"is exactly";case"is-not-exactly":return"is not exactly";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Zv(t){switch(t){case"is-exactly":return"is";case"is-not-exactly":return"is not";case"is-before":return"is before";case"is-before-or-equal":return"is before or equal";case"is-after":return"is after";case"is-after-or-equal":return"is after or equal";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Qv(t){switch(t){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Jv(t){switch(t){case"is-equal":return"is";case"is-not-equal":return"is not";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Ep(t){if(L.isNumberType(t)||L.isCharType(t))return"is-equal";if(L.isStringType(t)||L.isDateType(t))return"is-exactly";if(L.isBooleanType(t))return"is-true";throw new Error("Invalid column type")}function eT(t){if(L.isCharType(t)||L.isStringType(t))return""}function yp(t){const{condition:e,value:n,start:s,end:i}=t;return{condition:e,value:n,start:s,end:i}}function Jl(t){return{condition:Ep(t),value:eT(t),start:void 0,end:void 0}}function Ip(){return{type:"no-formatting"}}function tT(t){switch(t){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function nT(t){switch(t){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"is-before":return"<";case"is-before-or-equal":return"<=";case"is-after":return">";case"is-after-or-equal":return">=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function sT(t){switch(t){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function iT(t){switch(t){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function oT(t){switch(t){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-between":return"==";case"greater-than":return">";case"greater-than-or-equal":return">=";case"less-than":return"<";case"less-than-or-equal":return"<=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function rT(t,e,n,s,i){switch(e){case"is-equal":return`${t} == ${n}`;case"is-not-equal":return`${t} != ${n}`;case"is-between":return`${t} > ${s} && ${t} < ${i}`;case"greater-than":return`${t} > ${n}`;case"greater-than-or-equal":return`${t} >= ${n}`;case"less-than":return`${t} < ${n}`;case"less-than-or-equal":return`${t} <= ${n}`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function lT(t,e,n){switch(e){case"is-exactly":return`${t} == "${n}"`;case"is-not-exactly":return`${t} != "${n}"`;case"contains":return`${t} != null && ${t}.contains("${n}")`;case"does-not-contain":return`${t} != null && !${t}.contains("${n}")`;case"starts-with":return`${t} != null && ${t}.startsWith("${n}")`;case"ends-with":return`${t} != null && ${t}.endsWith("${n}")`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function aT(t,e,n){switch(e){case"is-exactly":return`${t} == convertDateTime("${n}")`;case"is-not-exactly":return`${t} != convertDateTime(\`${n}\`)`;case"is-before":return`${t} < convertDateTime(\`${n}\`)`;case"is-before-or-equal":return`${t} <= convertDateTime("${n}")`;case"is-after":return`${t} > convertDateTime(\`${n}\`)`;case"is-after-or-equal":return`${t} >= convertDateTime(\`${n}\`)`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function dT(t,e){switch(e){case"is-true":return`${t} == true`;case"is-false":return`${t} == false`;case"is-null":return`${t} == null`;case"is-not-null":return`${t} != null`}}function cT(t,e,n){switch(e){case"is-equal":return`${t} == '${n}'`;case"is-not-equal":return`${t} != '${n}'`;case"is-null":return`isNull(${t})`;case"is-not-null":return`!isNull(${t})`}}function hT(t,e){if(L.isNumberType(t))return oT(e);if(L.isCharType(t))return iT(e);if(L.isStringType(t))return tT(e);if(L.isDateType(t))return nT(e);if(L.isBooleanType(t))return sT(e);throw new Error("Invalid column type")}function uT(t,e){if(e===void 0)return Da.debug("no rules passed."),[];const n=[];let s;const i=new Map;return e.forEach(({config:o,type:r})=>{var g;const{column:l}=o,a=t.find(({name:f,type:b})=>f===l.name&&b===l.type);if(a===void 0){Da.debug(`Column ${l.name}:${l.type} not found. Ignoring format rule.`,o);return}const[d,c]=(g=r==="conditional"?i.get(a.name):s)!=null?g:["null",void 0],u=Uv(o,d);if(u===void 0){Da.debug("Ignoring format rule.",o);return}const m=c===void 0?-1:n.indexOf(c);m>-1&&n.splice(m,1);const p=r==="conditional"?Bv(a,u):Vv(u);n.push(p),r==="conditional"?i.set(a.name,[u,p]):s=[u,p]}),n}function mT({type:t}){return L.isNumberType(t)||L.isCharType(t)||L.isStringType(t)||L.isDateType(t)||L.isBooleanType(t)}function ea({animation:t="iris-grid-bottom-bar-slide-up",children:e,className:n,isShown:s,onClick:i,onEntering:o,onEntered:r,onExiting:l,onExited:a}){return h(mt,{in:s,timeout:Be.transitionMs,classNames:t,onEntering:o,onEntered:r,onExiting:l,onExited:a,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:z("iris-grid-bottom-bar",n),role:"presentation",onClick:i,onKeyPress:i,children:e})})}const pT=3e3,gT=5;function fT({isSaving:t=!1,onSave:e,onDiscard:n,discardTooltip:s,saveTooltip:i,error:o,pendingDataErrors:r,pendingDataMap:l,onEntering:a,onEntered:d,onExiting:c,onExited:u}){const[m,p]=w.exports.useState(!1),[g,f]=w.exports.useState(!1),b=w.exports.useRef(),C=Al(t),S=w.exports.useMemo(()=>r.size===0?o:r.size<=gT?`Key can't be empty (on pending row${r.size>1?"s":""} ${Array.from(r.keys()).join(", ").trim()})`:`Key can't be empty (on ${r.size} rows)`,[o,r]);w.exports.useEffect(function(){C!=null&&C&&!t&&S==null&&(p(!0),f(!0),b.current=setTimeout(()=>{p(!1)},pT))},[S,t,C]),w.exports.useEffect(function(){b.current&&l.size>0&&(clearTimeout(b.current),p(!1),f(!1))},[l]),w.exports.useEffect(function(){return()=>b.current?clearTimeout(b.current):void 0},[]);const v=l.size;let y;return t?y=h(kn,{}):g&&(y=Id),T(ea,{className:"pending-data-bottom-bar",isShown:v>0||m||S!=null,onEntering:a,onEntered:d,onExiting:c,onExited:()=>{f(!1),u&&u()},children:[S!=null&&S!==""&&T("div",{className:"error-message",children:[h(Z,{icon:gs}),h("span",{children:`${S}`})]}),(S==null||S==="")&&h("div",{className:"status-message",children:v>0&&h("span",{children:`${v} row${v>1?"s":""} pending`})}),T("div",{className:"buttons-container",children:[!t&&!g&&h(W,{kind:"secondary",onClick:n,tooltip:s,children:"Discard"}),T(W,{kind:g?"success":"primary",onClick:e,icon:y,disabled:t||g||S!=null,tooltip:i,children:[t&&"Committing...",!t&&g&&"Success",!t&&!g&&"Commit"]})]})]})}var Oe=(t=>(t.COUNT="Count",t.MIN="Min",t.MAX="Max",t.SUM="Sum",t.ABS_SUM="AbsSum",t.VAR="Var",t.AVG="Avg",t.STD="Std",t.FIRST="First",t.LAST="Last",t.SKIP="Skip",t.COUNT_DISTINCT="CountDistinct",t.DISTINCT="Distinct",t.UNIQUE="Unique",t))(Oe||{});const CT=t=>{switch(t){default:return!1}},bT=(t,e)=>{switch(t){case Oe.COUNT:case Oe.FIRST:case Oe.LAST:case Oe.COUNT_DISTINCT:case Oe.DISTINCT:case Oe.UNIQUE:return!0;case Oe.MIN:case Oe.MAX:return L.isNumberType(e)||L.isDateType(e)||L.isTextType(e);case Oe.SUM:case Oe.ABS_SUM:case Oe.VAR:case Oe.AVG:case Oe.STD:return L.isNumberType(e);case Oe.SKIP:return!1}},tc=(t,e)=>t.filter(n=>bT(e,n.type)),ST=(t,e,n,s)=>tc(t,e).map(({name:i})=>i).filter(i=>n.includes(i)?!s:s),$s={isRollupOperation:CT,filterValidColumns:tc,getOperationColumnNames:ST};var bi=(t=>(t.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS="filter-control-change-clears-all-filters",t.LINK_CHANGE_CLEARS_ALL_FILTERS="link-change-clears-all-filters",t))(bi||{});const wT=Object.freeze([[bi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS,!1],[bi.LINK_CHANGE_CLEARS_ALL_FILTERS,!1]]),Rp={DEFAULTS:wT},vT=X.module("ColumnHeaderGroup");function Ma(t){return t instanceof zn}const Dp=class{constructor({name:t,children:e,color:n,depth:s,childIndexes:i,parent:o}){this.getVisibleRange=Ce(r=>{const l=this.childIndexes.flat(),a=j.getVisibleIndexes(l,r),d=Math.min(...a),c=Math.max(...a);return c-d!==l.length-1&&vT.warn(`Column header group ${this.name} is not contiguous`),[d,c]}),this.name=t,this.children=e,this.color=n,this.depth=s,this.childIndexes=i,this.parent=o}setParent(t){this.parent=t}addChildren(t){const e=new Set(this.children.concat(t));this.children=[...e]}removeChildren(t){const e=new Set(this.children);t.forEach(n=>e.delete(n)),this.children=[...e]}get isNew(){return this.name.startsWith(Dp.NEW_GROUP_PREFIX)}};let zn=Dp;zn.NEW_GROUP_PREFIX=":newGroup";const No=X.module("IrisGridUtils");function ks(t,e){return t>=0&&t<e.length}class te{static dehydrateGridState(e,n){const{isStuckToBottom:s,isStuckToRight:i,movedColumns:o,movedRows:r}=n,{columns:l}=e;return{isStuckToBottom:s,isStuckToRight:i,movedColumns:[...o].filter(({to:a,from:d})=>ks(a,l)&&(typeof d=="number"&&ks(d,l)||Array.isArray(d)&&ks(d[0],l)&&ks(d[1],l))).map(({to:a,from:d})=>({to:l[a].name,from:Array.isArray(d)?[l[d[0]].name,l[d[1]].name]:l[d].name})),movedRows:[...r]}}static hydrateGridState(e,n,s=[]){const{isStuckToBottom:i,isStuckToRight:o,movedColumns:r,movedRows:l}=n,{columns:a}=e,d=te.parseCustomColumnNames(s),c=a.map(({name:u})=>u).concat(d);return{isStuckToBottom:i,isStuckToRight:o,movedColumns:[...r].map(({to:u,from:m})=>{const p=g=>typeof g=="string"?c.findIndex(f=>f===g):g;return{to:p(u),from:Array.isArray(m)?[p(m[0]),p(m[1])]:p(m)}}).filter(({to:u,from:m})=>ks(u,c)&&(typeof m=="number"&&ks(m,c)||Array.isArray(m)&&ks(m[0],c)&&ks(m[1],c))),movedRows:[...l]}}static dehydrateIrisGridState(e,n){const{aggregationSettings:s={aggregations:[],showOnTop:!1},advancedFilters:i,customColumnFormatMap:o,isFilterBarShown:r,metrics:l,quickFilters:a,customColumns:d,conditionalFormats:c=[],reverseType:u,rollupConfig:m=void 0,showSearchBar:p,searchValue:g,selectDistinctColumns:f=[],selectedSearchColumns:b,sorts:C,invertSearchColumns:S,pendingDataMap:v=new Map,frozenColumns:y,columnHeaderGroups:E}=n;P(l);const{userColumnWidths:I,userRowHeights:R}=l,{columns:N}=e;return{advancedFilters:te.dehydrateAdvancedFilters(N,i),aggregationSettings:s,customColumnFormatMap:[...o],isFilterBarShown:r,quickFilters:te.dehydrateQuickFilters(a),sorts:te.dehydrateSort(C),userColumnWidths:[...I].filter(([F])=>F!=null&&F>=0&&F<N.length).map(([F,B])=>[N[F].name,B]),userRowHeights:[...R],customColumns:[...d],conditionalFormats:[...c],reverseType:u,rollupConfig:m,showSearchBar:p,searchValue:g,selectDistinctColumns:[...f],selectedSearchColumns:b,invertSearchColumns:S,pendingDataMap:te.dehydratePendingDataMap(N,v),frozenColumns:y,columnHeaderGroups:E==null?void 0:E.map(F=>({name:F.name,children:F.children,color:F.color}))}}static hydrateIrisGridState(e,n){var F,B;const{advancedFilters:s,aggregationSettings:i={aggregations:[],showOnTop:!1},customColumnFormatMap:o,isFilterBarShown:r,quickFilters:l,sorts:a,customColumns:d,conditionalFormats:c,userColumnWidths:u,userRowHeights:m,reverseType:p,rollupConfig:g=void 0,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:S,invertSearchColumns:v=!0,pendingDataMap:y=[],frozenColumns:E,columnHeaderGroups:I}=n,{columns:R,formatter:N}=e;return{advancedFilters:te.hydrateAdvancedFilters(R,s,N.timeZone),aggregationSettings:i,customColumnFormatMap:new Map(o),isFilterBarShown:r,quickFilters:te.hydrateQuickFilters(R,l,N.timeZone),sorts:te.hydrateSort(R,a),userColumnWidths:new Map(u.map(([U,x])=>typeof U=="string"||U instanceof String?[R.findIndex(({name:H})=>H===U),x]:[U,x]).filter(([U])=>U!=null&&U>=0&&U<R.length)),customColumns:d,conditionalFormats:c,userRowHeights:new Map(m),reverseType:p,rollupConfig:g,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:S,invertSearchColumns:v,pendingDataMap:te.hydratePendingDataMap(R,y),frozenColumns:E,columnHeaderGroups:te.parseColumnHeaderGroups(e,(B=I!=null?I:(F=e.layoutHints)==null?void 0:F.columnGroups)!=null?B:[]).groups}}static dehydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?o.name:void 0,advancedSettings:[...r]}}static hydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n,{columns:l}=e;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?te.getColumnByName(l,o):void 0,advancedSettings:new Map([...Rp.DEFAULTS,...r])}}static dehydrateQuickFilters(e){return[...e].map(([n,s])=>{const{text:i}=s;return[n,{text:i}]})}static hydrateQuickFilters(e,n,s){const i=n.map(([o,r])=>{const{text:l}=r;let a=null;try{const d=te.getColumn(e,o);d!=null&&(a=L.makeQuickFilter(d,l,s))}catch(d){No.error("hydrateQuickFilters error with",l,d)}return[o,{text:l,filter:a}]});return new Map(i)}static dehydrateAdvancedFilters(e,n){return[...n].map(([s,i])=>{const o=te.getColumn(e,s);P(o);const r=te.dehydrateAdvancedFilterOptions(o,i.options);return[s,{options:r}]})}static hydrateAdvancedFilters(e,n,s){const i=n.map(([o,r])=>{const l=te.getColumn(e,o);P(l);const a=te.hydrateAdvancedFilterOptions(l,r.options);let d=null;try{te.getColumn(e,o)!=null&&(d=L.makeAdvancedFilter(l,a,s))}catch(c){No.error("hydrateAdvancedFilters error with",a,c)}return[o,{options:a,filter:d}]});return new Map(i)}static dehydrateAdvancedFilterOptions(e,n){const{selectedValues:s,...i}=n;return{selectedValues:s==null?void 0:s.map(o=>te.dehydrateValue(o,e==null?void 0:e.type)),...i}}static hydrateAdvancedFilterOptions(e,n){const{selectedValues:s,...i}=n;return{selectedValues:s==null?void 0:s.map(o=>te.hydrateValue(o,e==null?void 0:e.type)),...i}}static dehydratePendingDataMap(e,n){return[...n].map(([s,{data:i}])=>[s,{data:[...i].map(([o,r])=>[e[o].name,te.dehydrateValue(r,e[o].type)])}])}static hydratePendingDataMap(e,n){const s=new Map,i=o=>(s.has(o)||s.set(o,e.findIndex(({name:r})=>r===o)),s.get(o));return new Map(n.map(([o,{data:r}])=>[o,{data:new Map(r.map(([l,a])=>{var c;const d=i(l);return P(d),[(c=i(l))!=null?c:null,te.hydrateValue(a,e[d].type)]}))}]))}static dehydrateValue(e,n){return L.isDateType(n)?te.dehydrateDateTime(e):L.isLongType(n)?te.dehydrateLong(e):e}static hydrateValue(e,n){return L.isDateType(n)?te.hydrateDateTime(e):L.isLongType(n)?te.hydrateLong(e):e}static dehydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.format(bs.FULL_DATE_FORMAT,e):null}static hydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.parse(bs.FULL_DATE_FORMAT,e):null}static dehydrateLong(e){return e!=null?`${e}`:null}static hydrateLong(e){return e!=null?M.LongWrapper.ofString(e):null}static dehydrateSort(e){return e.map(n=>{const{column:s,isAbs:i,direction:o}=n;return{column:s.index,isAbs:i,direction:o}})}static hydrateSort(e,n){return n.map(s=>{const{column:i,isAbs:o,direction:r}=s;if(r===L.sortDirection.reverse)return M.Table.reverse();const l=te.getColumn(e,i);if(l!=null){let a=l.sort();return o&&(a=a.abs()),r===L.sortDirection.descending?a=a.desc():a=a.asc(),a}return null}).filter(s=>s!=null&&s.direction!==L.sortDirection.reverse)}static extractTableSettings(e,n=[]){const{irisGridPanelState:s,irisGridState:i}=e,{partitionColumn:o,partition:r}=s,{advancedFilters:l,quickFilters:a,sorts:d}=i;return{advancedFilters:l,inputFilters:n,partition:r,partitionColumn:o,quickFilters:a,sorts:d}}static applyTableSettings(e,n,s){const{columns:i}=e;let o=[];n.quickFilters&&(o=te.getFiltersFromFilterMap(te.hydrateQuickFilters(i,n.quickFilters,s)));let r=[];n.advancedFilters&&(r=te.getFiltersFromFilterMap(te.hydrateAdvancedFilters(i,n.advancedFilters,s)));const l=te.getFiltersFromInputFilters(i,n.inputFilters,s);let a=[];n.sorts&&(a=te.hydrateSort(i,n.sorts));let d=[...o,...r];const{partition:c,partitionColumn:u}=n;if(c!=null&&u!=null){const m=te.getColumnByName(i,u);m&&(d=[m.filter().eq(M.FilterValue.ofString(c)),...d])}d=[...l,...d],e.applyFilter(d),e.applySort(a)}static getInputFiltersForColumns(e,n=[]){return n.filter(({name:s,type:i})=>e.find(({name:o,type:r})=>o===s&&r===i))}static getFiltersFromInputFilters(e,n=[],s){return n.map(({name:i,type:o,value:r})=>{const l=e.find(({name:a,type:d})=>a===i&&d===o);if(l)try{return L.makeQuickFilter(l,r,s)}catch(a){No.debug("Unable to create input filter",a)}return null}).filter(i=>i!=null)}static getFiltersFromFilterMap(e){const n=[],s=Array.from(e.keys());for(let i=0;i<s.length;i+=1){const o=s[i],r=e.get(o);r&&r.filter!=null&&n.push(r.filter)}return n}static getHiddenColumns(e){return[...e.entries()].filter(([,n])=>n===0).map(([n])=>n)}static parseCustomColumnNames(e){return e.map(n=>n.split("=")[0])}static getRemovedCustomColumnNames(e,n){const s=te.parseCustomColumnNames(e),i=te.parseCustomColumnNames(n);return s.filter(o=>!i.includes(o))}static removeSortsInColumns(e,n){return e.filter(s=>!n.includes(s.column.name))}static removeFiltersInColumns(e,n,s){const i=e.map(({name:r})=>r),o=new Map(n);return s.forEach(r=>o.delete(i.indexOf(r))),o}static removeColumnFromMovedColumns(e,n,s){const i=e.map(({name:r})=>r);let o=[...n];for(let r=0;r<s.length;r+=1){const l=s[r];let a=i.findIndex(c=>c===l);const d=[];for(let c=0;c<o.length;c+=1){const u=o[c],m={...u};let[p,g]=Array.isArray(u.from)?u.from:[u.from,u.from];a<=u.to&&(m.to-=1),a<p&&(p-=1),a<=g&&(g-=1),p<=g&&p!==m.to&&(p===g?d.push({...m,from:p}):d.push({...m,from:[p,g]})),a=j.applyItemMoves(a,a,[u])[0][0]}o=d,i.splice(i.findIndex(c=>c===l),1)}return o}static removeColumnsFromSelectDistinctColumns(e,n){return e.filter(s=>!n.includes(s))}static getVisibleColumnsInRange(e,n,s,i,o){const r=[];for(let l=n;l<=s;l+=1){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.push(e[a])}return r}static getPrevVisibleColumns(e,n,s,i,o){const r=[];let l=n;for(;l>=0&&r.length<s;){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.unshift(e[a]),l-=1}return r}static getNextVisibleColumns(e,n,s,i,o){const r=[];let l=n;for(;l<e.length&&r.length<s;){const a=j.getModelIndex(l,i);a>=0&&a<e.length&&!o.includes(a)&&r.push(e[a]),l+=1}return r}static getColumnsToFetch(e,n,s){const i=[...n];return s.forEach(o=>{const r=e.find(({name:l})=>l===o);r!=null&&!n.includes(r)&&i.push(r)}),i}static getModelViewportColumns(e,n,s,i,o=[],r=[],l=0){if(n==null||s==null)return null;const a=te.getVisibleColumnsInRange(e,n,s,i,o),d=a.length*l,c=te.getPrevVisibleColumns(e,n-1,d,i,o),u=te.getNextVisibleColumns(e,s+1,d,i,o),m=[...c,...a,...u];return te.getColumnsToFetch(e,m,r)}static rangeSetFromRanges(e){const n=e.slice().sort((s,i)=>(P(s.startRow),P(i.startRow),s.startRow-i.startRow)).map(s=>{const{startRow:i,endRow:o}=s;return P(i),P(o),M.RangeSet.ofRange(i,o)});return M.RangeSet.ofRanges(n)}static isValidSnapshotRanges(e){if(e==null||e.length===0)return!1;const n=new Map;for(let o=0;o<e.length;o+=1){const r=e[o],l=`${r.startRow}:${r.endRow}`,a=`${r.startColumn}:${r.endColumn}`;n.has(l)||n.set(l,[]),n.get(l).push(a)}const s=[...n.keys()],i=n.get(s[0]).sort().join(",");for(let o=1;o<s.length;o+=1)if(n.get(s[o]).sort().join(",")!==i)return!1;return!0}static isValidIndex(e){return!Number.isInteger(e)||typeof e!="number"?!1:e>=0}static columnsFromRanges(e,n){var i,o;if(e==null||e.length===0)return[];if(e[0].startColumn===null&&e[0].endColumn===null)return n;const s=new Set;for(let r=0;r<e.length;r+=1){const l=e[r];P(l.startColumn),P(l.endColumn);for(let a=(i=l.startColumn)!=null?i:0;a<=((o=l.endColumn)!=null?o:n.length-1);a+=1)s.add(a)}return[...s].map(r=>n[r])}static snapshotDataToMatrix(e){const{columns:n,rows:s}=e,i=[];for(let o=0;o<s.length;o+=1){const r=s[o],l=[];for(let a=0;a<n.length;a+=1){const d=n[a],c=r.get(d);l.push(c)}i.push(l)}return i}static getModelRollupConfig(e,n,s){var u,m,p;if(((m=(u=n==null?void 0:n.columns)==null?void 0:u.length)!=null?m:0)===0)return null;const{columns:i=[],showConstituents:o=!0,showNonAggregatedColumns:r=!0,includeDescriptions:l=!0}=n!=null?n:{},{aggregations:a=[]}=s!=null?s:{},d=a.map(({operation:g,selected:f,invert:b})=>$s.isRollupOperation(g)?[]:$s.getOperationColumnNames(e,g,f,b)),c={};for(let g=0;g<a.length;g+=1)c[a[g].operation]=d[g];if(r){const g=new Set(e.map(f=>f.name).filter(f=>!i.includes(f)));if(d.forEach(f=>{f.forEach(b=>g.delete(b))}),g.size>0){const f=(p=c[Oe.FIRST])!=null?p:[];c[Oe.FIRST]=[...f,...g]}}return{groupingColumns:i,includeConstituents:o,includeDescriptions:l,aggregations:c}}static getPendingErrors(e){e.forEach((n,s)=>{if(!te.isValidIndex(s))throw new Error(`Invalid rowIndex ${s}`);const{data:i}=n;i.forEach((o,r)=>{if(!te.isValidIndex(r))throw new Error(`Invalid columnIndex ${r}`)})})}static getColumn(e,n){return n<e.length?e[n]:(No.error("Unable to retrieve column",n,">=",e.length),null)}static getColumnByName(e,n){const s=e.find(({name:i})=>i===n);return s==null&&No.error("Unable to retrieve column by name",n,e.map(({name:i})=>i)),s}static changeFilterColumnNamesToIndexes(e,n){return n.map(({name:s,filter:i})=>{const o=e.findIndex(r=>r.name===s);return o<0?null:[o,i]}).filter(s=>s!=null)}static combineFiltersFromList(e,n){n.sort((i,o)=>i.operator==="eq"&&o.operator!=="eq"?1:i.operator!=="eq"&&o.operator==="eq"?-1:i.startColumnIndex-o.startColumnIndex);let s="";for(let i=0;i<n.length;i+=1){const{text:o,value:r,operator:l}=n[i];if(r!==void 0){let a="";l!==void 0&&(r==null&&l==="eq"?a="=":l!=="eq"&&(l==="startsWith"||l==="endsWith"?a="*":a=L.getFilterOperatorString(l)));let d=`${a}${o}`;l==="startsWith"&&(d=`${o}${a}`),e!=null&&r!==null&&L.isCharType(e)&&(d=`${a}${String.fromCharCode(parseInt(o,10))}`),i!==0&&(s+=l==="eq"?" || ":" && "),s+=d}}return s}static parseColumnHeaderGroups(e,n){let s=1;const i=new Map,o=new Map,r=n==null?void 0:n.filter(({children:u})=>u.length>0);if(r.length===0)return{groups:[],maxDepth:s,parentMap:i,groupMap:o};const l=new Map(r.map(u=>[u.name,u])),a=new Set,d=u=>{const{name:m}=u;if(e.getColumnIndexByName(m)!=null)throw new Error(`Column header group has same name as column: ${m}`);const p=o.get(m);if(p)return p;const g=[];let f=1;u.children.forEach(C=>{if(a.has(C))throw new Error(`Column group child ${C} specified in multiple groups`);a.add(C);const S=l.get(C),v=e.getColumnIndexByName(C);if(S){const y=d(S);g.push(...y.childIndexes),f=Math.max(f,y.depth+1)}else if(v!=null)g.push(v),f=Math.max(f,1);else throw new Error(`Unknown child ${C} in group ${m}`)});const b=new zn({...u,depth:f,childIndexes:g.flat()});return o.set(m,b),u.children.forEach(C=>i.set(C,b)),s=Math.max(s,b.depth+1),b},c=new Set;return r.forEach(u=>{const{name:m}=u;if(c.has(m))throw new Error(`Duplicate column group name: ${m}`);c.add(m),d(u)}),o.forEach(u=>{var m;u.setParent((m=i.get(u.name))==null?void 0:m.name)}),{groups:[...o.values()],maxDepth:s,groupMap:o,parentMap:i}}}const Jt=X.module("IrisGridCopyHandler"),He=class extends w.exports.Component{constructor(t){super(t),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleCopyClick=this.handleCopyClick.bind(this),this.handleHideTimeout=this.handleHideTimeout.bind(this),this.state={error:void 0,copyState:He.COPY_STATES.IDLE,buttonState:He.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(t,e){switch(t){case He.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${e.toLocaleString()} rows to your clipboard?`;case He.COPY_STATES.CLICK_REQUIRED:return`Fetched ${e.toLocaleString()} rows!`;case He.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case He.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${e.toLocaleString()} rows for clipboard...`;case He.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(t){switch(t){case He.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case He.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case He.BUTTON_STATES.RETRY:return"Retry";default:return"Copy"}}componentDidMount(){const{copyOperation:t}=this.props;t!=null&&this.startCopy()}componentDidUpdate(t){const{copyOperation:e}=this.props;t.copyOperation!==e&&this.startCopy()}componentWillUnmount(){this.stopCopy()}startCopy(){Jt.debug2("startCopy"),this.stopCopy();const{copyOperation:t}=this.props;if(t==null){Jt.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:e,error:n}=t;if(n!=null){Jt.debug("Showing copy error",n),this.setState({isShown:!0,copyState:He.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=re.rowCount(e);this.setState({rowCount:s,isShown:!0,error:void 0}),s>He.NO_PROMPT_THRESHOLD?this.setState({buttonState:He.BUTTON_STATES.COPY,copyState:He.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){Jt.debug2("handleBackgroundClick");const{copyState:t}=this.state;t===He.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){Jt.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){Jt.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){Jt.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(t){Jt.debug2("copyText",t),this.textData=t,ro(t).then(()=>{this.setState({copyState:He.COPY_STATES.DONE}),this.startHideTimer()},e=>{Jt.error("copyText error",e),this.setState({buttonState:He.BUTTON_STATES.CLICK_TO_COPY,copyState:He.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:He.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:He.COPY_STATES.FETCH_IN_PROGRESS});const{model:t,copyOperation:e}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:o,formatValues:r}=e;Jt.debug("startFetch",n);const l=te.getHiddenColumns(i);let a=j.getModelRanges(n,o);if(l.length>0){const c=l.map(re.makeColumn);a=re.subtractRangesFromRanges(a,c)}const d=r!=null&&r?(c,u)=>t.displayString(c,u.type,u.name):c=>`${c}`;this.fetchPromise=ye.makeCancelable(t.textSnapshot(a,s,d)),this.fetchPromise.then(c=>{this.fetchPromise=void 0,this.copyText(c)}).catch(c=>{c instanceof Qi?Jt.debug("User cancelled copy."):(Jt.error("Error fetching contents",c),this.fetchPromise=void 0,this.setState({buttonState:He.BUTTON_STATES.RETRY,copyState:He.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(Jt.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,He.HIDE_TIMEOUT)}stopHideTimer(){this.hideTimer!=null&&(clearTimeout(this.hideTimer),this.hideTimer=void 0)}render(){const{onEntering:t,onEntered:e,onExiting:n,onExited:s}=this.props,{buttonState:i,copyState:o,isShown:r,rowCount:l,error:a}=this.state,d=o===He.COPY_STATES.DONE?"fade":"copy-slide-up",c=He.getCopyButtonText(i),u=a!=null?a:He.getStatusMessageText(o,l),m=o!==He.COPY_STATES.DONE,p=i===He.BUTTON_STATES.FETCH_IN_PROGRESS,g=o===He.COPY_STATES.DONE;return T(ea,{animation:d,isShown:r,className:z("iris-grid-copy-handler",{"copy-done":g}),onClick:this.handleBackgroundClick,onEntering:t,onEntered:e,onExiting:n,onExited:s,children:[h("div",{className:"status-message",children:h("span",{children:u})}),h(mt,{in:m,timeout:Be.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:T("div",{className:"buttons-container",children:[h("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),T(W,{kind:p?"tertiary":"primary",className:z("btn-copy",{"btn-spinner":p}),onClick:this.handleCopyClick,disabled:p,children:[p&&h(kn,{}),c]})]})})]})}};let mo=He;mo.NO_PROMPT_THRESHOLD=1e4;mo.HIDE_TIMEOUT=3e3;mo.COPY_STATES={IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"};mo.BUTTON_STATES={COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"};mo.defaultProps={copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}};class Mp extends w.exports.PureComponent{constructor(e){super(e);const{debounceMs:n}=e;this.debouncedSendUpdate=je(this.sendUpdate.bind(this),n),this.handleCancel=this.handleCancel.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCommit=this.handleCommit.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.inputField=null;const{value:s}=e;this.initialValue=s,this.state={isChanged:!1,value:s}}componentDidMount(){var e;(e=this.inputField)==null||e.focus()}componentDidUpdate(e){const{debounceMs:n}=this.props;e.debounceMs!==n&&(this.debouncedSendUpdate.flush(),this.debouncedSendUpdate=je(this.sendUpdate.bind(this),n))}componentWillUnmount(){this.debouncedSendUpdate.cancel()}setValue(e){this.initialValue=e,this.setState({value:e})}focus(){var e;(e=this.inputField)==null||e.focus()}handleChange(e){const{value:n}=e.target;this.setState({value:n,isChanged:!0}),this.debouncedSendUpdate(n)}handleCancel(){this.debouncedSendUpdate.cancel();const{initialValue:e}=this,{isChanged:n}=this.state;n&&this.sendUpdate(e);const{onDone:s}=this.props;s()}handleCommit(e=!0,n=!0){this.debouncedSendUpdate.flush();const{onDone:s}=this.props;s(e,n)}handleFocus(){var e;(e=this.inputField)==null||e.select()}handleBlur(e){const{relatedTarget:n}=e;n!=null&&n.classList.contains("context-menu-container")?this.handleCommit(!1,!0):n!=null&&n.classList.contains("advanced-filter-button")?this.handleCommit(!1,!1):this.handleCommit(!0,!0)}handleTab(e=!1){this.debouncedSendUpdate.flush();const{onTab:n}=this.props;n(e)}handleKeyDown(e){switch(e.key){case"Escape":e.stopPropagation(),e.preventDefault(),this.handleCancel();break;case"Enter":e.stopPropagation(),e.preventDefault(),this.handleCommit();break;case"Tab":e.stopPropagation(),e.preventDefault(),this.handleTab(e.shiftKey);break}}handleContextMenu(e){const{onContextMenu:n}=this.props;n(e)}sendUpdate(e){const{onChange:n}=this.props;n(e)}render(){const{className:e,style:n,isAdvancedFilterSet:s,onAdvancedFiltersTriggered:i}=this.props,{value:o}=this.state;return T("div",{style:n,className:"iris-grid-input-autosized-wrapper","data-value":o,children:[h("input",{ref:r=>{this.inputField=r},className:z("iris-grid-input-field",e),type:"text",value:o,onBlur:this.handleBlur,onFocus:this.handleFocus,onChange:this.handleChange,onKeyDown:this.handleKeyDown,onContextMenu:this.handleContextMenu,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"}),h("div",{className:"advanced-filter-button-container",children:h(W,{kind:"ghost",className:z("btn-link-icon advanced-filter-button",{"filter-set":s}),onClick:i,onContextMenu:this.handleContextMenu,children:T("div",{className:"fa-layers ",children:[h(Z,{icon:Dd,className:"filter-solid"}),h(Z,{icon:hl,className:"filter-light"})]})})})]})}}Mp.defaultProps={style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150};class TT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){const{selectedRanges:n}=this.irisGrid.state;return e.key==="c"&&We.isModifierKeyDown(e)?(te.isValidSnapshotRanges(n)?this.irisGrid.copyRanges(n):this.irisGrid.copyRanges(n,!1,!1,"Invalid copy ranges"),!0):!1}}const ET={TOGGLE_QUICK_FILTER:Le.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[he.CTRL,me.F],macShortcut:[he.CMD,me.F]}),CLEAR_ALL_FILTERS:Le.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[he.CTRL,me.E],macShortcut:[he.CMD,me.E]}),CLEAR_FILTERS:Le.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[he.CTRL,he.SHIFT,me.E],macShortcut:[he.CMD,he.SHIFT,me.E]}),REVERSE:Le.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[he.CTRL,me.I],macShortcut:[he.CMD,me.I]}),TOGGLE_SEARCH:Le.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[he.CTRL,he.SHIFT,me.F],macShortcut:[he.CMD,he.SHIFT,me.F]}),GOTO_ROW:Le.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[he.CTRL,me.G],macShortcut:[he.CMD,me.G]})},yT={COMMIT:Le.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[he.CTRL,me.S],macShortcut:[he.CMD,me.S]}),DISCARD:Le.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[he.CTRL,he.ALT,me.S],macShortcut:[he.CMD,he.OPTION,me.S]})},an={TABLE:ET,INPUT_TABLE:yT};class IT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){if(an.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:n}=this.irisGrid.state;return n===L.REVERSE_TYPE.NONE?this.irisGrid.reverse(L.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(L.REVERSE_TYPE.NONE),!0}return!1}}class RT extends wi{constructor(e){super(),this.irisGrid=e}onDown(e){return an.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}class DT extends Dt{constructor(e){super(850),this.irisGrid=e}destroyColumnTooltip(){this.irisGrid.setState({overflowButtonTooltipProps:null})}setCursor(e){return this.isHoveringOverflowButton(e)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:n,column:s,row:i}){if(s==null||i==null)return null;const{renderer:o,grid:r,state:l,props:a}=this.irisGrid;if(!r)return null;const{metrics:d}=l,{model:c}=a,{canvasContext:u}=r,m=r.getTheme(),p={context:u,mouseX:e,mouseY:n,metrics:d,model:c,theme:m},{left:g,top:f,width:b,height:C}=o.getCellOverflowButtonPosition(p);return g==null||b==null||f==null||C==null?null:{left:g,top:f,width:b,height:C}}isHoveringOverflowButton(e){var C;const{x:n,y:s}=e,{left:i,top:o,width:r,height:l}=(C=this.getButtonPosition(e))!=null?C:{};if(i==null||r==null||o==null||l==null)return!1;const{renderer:a,grid:d,state:c,props:u}=this.irisGrid;if(!d)return!1;const{metrics:m}=c,{model:p}=u,{canvasContext:g}=d,f=d.getTheme(),b={context:g,mouseX:n,mouseY:s,metrics:m,model:p,theme:f};return a.shouldRenderOverflowButton(b)&&n>=i&&n<=i+r&&s>=o&&s<=o+l}onMove(e){if(this.isHoveringOverflowButton(e)){const{overflowButtonTooltipProps:n}=this.irisGrid.state,s=this.getButtonPosition(e);ut(n,s)||this.irisGrid.setState({overflowButtonTooltipProps:s})}else this.destroyColumnTooltip();return this.setCursor(e)}onWheel(e){return this.destroyColumnTooltip(),this.onMove(e)}onDown(e){this.destroyColumnTooltip();const{column:n,row:s}=e;return this.isHoveringOverflowButton(e)&&this.irisGrid.setState({showOverflowModal:!0,overflowText:this.irisGrid.getValueForCell(n,s)}),!1}onContextMenu(){return this.destroyColumnTooltip(),!1}onLeave(){return this.destroyColumnTooltip(),!1}}class MT extends Dt{constructor(e){super(),this.irisGrid=e,this.cursor=null}isActive(){const{isSelectingColumn:e}=this.irisGrid.props;return e}isValidColumn(e){if(e==null)return!1;const{columnSelectionValidator:n}=this.irisGrid.props;return n!=null?n(e):!0}updateColumnSelectionStatus(){const{columnSelectionValidator:e}=this.irisGrid.props;e!=null&&e(null)}getTableColumn(e){if(e==null)return null;const{model:n}=this.irisGrid.props,s=this.irisGrid.getModelColumn(e);return s==null?null:n.columns[s]}onMove(e){if(!this.isActive())return!1;const{columnAllowedCursor:n,columnNotAllowedCursor:s}=this.irisGrid.props,{column:i}=e,o=this.getTableColumn(i);return this.isValidColumn(o)?(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:i})):(this.cursor=s,this.irisGrid.setState({hoverSelectColumn:null})),!0}onWheel(e){if(!this.isActive())return!1;const{columnAllowedCursor:n,columnNotAllowedCursor:s}=this.irisGrid.props,{column:i}=e,o=this.getTableColumn(i);return this.isValidColumn(o)?this.cursor=n:this.cursor=s,{preventDefault:!1,stopPropagation:!1}}onLeave(){return this.isActive()&&this.irisGrid.setState({hoverSelectColumn:null}),this.updateColumnSelectionStatus(),!1}onDown(){return this.isActive()}onClick(e){if(!this.isActive())return!1;const{column:n}=e,s=this.getTableColumn(n);return s!=null&&this.isValidColumn(s)&&this.irisGrid.selectColumn(s),!0}}class NT extends Dt{constructor(e){super(),this.irisGrid=e}hideColumnTooltip(){const{tooltip:e}=this.irisGrid;e&&(e.stopTimer(),e.hide())}onDown(){return this.hideColumnTooltip(),!1}onContextMenu(){return this.hideColumnTooltip(),!1}onWheel(){return this.hideColumnTooltip(),!1}onLeave(e,n,s){const{relatedTarget:i}=s instanceof MouseEvent?s:s.nativeEvent,{tooltip:o}=this.irisGrid;if(!o)return!1;const r=o.popper.current;return r&&i instanceof Element&&r.element.contains(i)||this.hideColumnTooltip(),!1}onMove(e){const{column:n,row:s,columnHeaderDepth:i}=e,{shownColumnTooltip:o}=this.irisGrid.state;let r=null;return n!==null&&s===null&&i===0&&(r=n),r!==o&&this.irisGrid.setState({shownColumnTooltip:r}),!1}}const Np=class extends w.exports.Component{constructor(t=Np.defaultProps){super(t),this.handleInputChange=this.handleInputChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.inputRef=Y.createRef()}handleInputChange(){const{onChange:t}=this.props;this.inputRef.current&&t(this.inputRef.current.value)}closeContextMenu(){const{forwardedProps:t}=this.props,{closeMenu:e}=t;e(!0)}revertToDefault(){const{onChange:t}=this.props;t(null)}returnFocusToContextMenu(){const t=vb.getClosestByClassName(this.inputRef.current,"context-menu-container");t instanceof HTMLElement&&t.focus()}handleKeyDown(t){switch(t.key){case"Enter":t.stopPropagation(),this.closeContextMenu();break;case"Escape":t.stopPropagation(),this.revertToDefault(),this.closeContextMenu();break;case"ArrowRight":case"ArrowLeft":t.stopPropagation();break;case"ArrowUp":case"ArrowDown":this.returnFocusToContextMenu();break;default:t.stopPropagation()}}render(){const{formatString:t,forwardedProps:e,placeholder:n,title:s}=this.props,{menuItem:{description:i},iconElement:o}=e;return T("div",{className:"form-group flex-grow mb-0",children:[T("div",{className:"custom-format-title",children:[h("span",{className:"icon",children:o}),T("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h(ze,{children:i})]})]}),h("div",{className:"pl-2 pr-2 pb-2",children:h("input",{id:"custom-format-input",className:"form-control text-right mb-0",type:"text",defaultValue:t,ref:this.inputRef,placeholder:n,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"})})]})}};let Fp=Np;Fp.defaultProps={formatString:"",forwardedProps:{menuItem:{},closeMenu(t){},iconElement:null},placeholder:"",title:"",onChange(t){}};class dn{static isDefaultSelected(e){return!e||![tt.TYPE_CONTEXT_CUSTOM,tt.TYPE_CONTEXT_PRESET].includes(e.type)}static isCustomSelected(e){return e!=null&&e.type===tt.TYPE_CONTEXT_CUSTOM}static makeOption(e,n,s,i){return{title:e,description:e,group:s,format:n,isSelected:i}}static makeCustomFormatOption(e,n,s,i,o){return{title:e.label,description:e.label,format:e,group:n,isSelected:i,menuElement:h(Fp,{formatString:e.formatString,title:e.label,placeholder:s,onChange:o})}}}const $n=class{static getOptions(t,e){const n=new Date,i=[{group:$n.dateGroup,formatString:"yyyy-MM-dd"},{group:$n.dateGroup,formatString:"MM-dd-yyyy"},{group:$n.timeGroup,formatString:"HH:mm:ss"},{group:$n.timeGroup,formatString:"HH:mm:ss.SSS"},{group:$n.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:$n.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(r=>{const l=nt.makeFormat("",r.formatString,nt.TYPE_CONTEXT_PRESET),a=t.getFormattedString(n,L.dataType.DATETIME,"",l);return dn.makeOption(a,l,r.group,nt.isSameFormat(l,e))});return[dn.makeOption("Default",null,$n.dateGroup,dn.isDefaultSelected(e)),...i]}};let ta=$n;ta.dateGroup=10;ta.timeGroup=20;ta.dateTimeGroup=30;const Wn=class{static getOptions(t,e){const n=[{format:_e.FORMAT_PERCENT,group:Wn.presetGroup},{format:_e.FORMAT_BASIS_POINTS,group:Wn.presetGroup},{format:_e.FORMAT_MILLIONS,group:Wn.presetGroup},{format:_e.FORMAT_SCIENTIFIC_NOTATION,group:Wn.presetGroup},{format:_e.FORMAT_ROUND,group:Wn.presetRoundGroup},{format:_e.FORMAT_ROUND_TWO_DECIMALS,group:Wn.presetRoundGroup},{format:_e.FORMAT_ROUND_FOUR_DECIMALS,group:Wn.presetRoundGroup}],s=dn.makeOption("Default",null,Wn.defaultGroup,dn.isDefaultSelected(t)),i=n.map(a=>dn.makeOption(a.format.label,a.format,a.group,_e.isSameFormat(a.format,t))),o=dn.isCustomSelected(t),r=o?t:_e.makeCustomFormat(),l=dn.makeCustomFormatOption(r,Wn.customGroup,_e.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=_e.makeCustomFormat(a);_e.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let mr=Wn;mr.defaultGroup=10;mr.presetGroup=20;mr.presetRoundGroup=30;mr.customGroup=40;const Wo=class{static getOptions(t,e){const n=[{format:Ze.FORMAT_MILLIONS,group:Wo.presetGroup},{format:Ze.FORMAT_SCIENTIFIC_NOTATION,group:Wo.presetGroup}],s=dn.makeOption("Default",null,Wo.defaultGroup,dn.isDefaultSelected(t)),i=n.map(a=>dn.makeOption(a.format.label,a.format,a.group,Ze.isSameFormat(a.format,t))),o=dn.isCustomSelected(t),r=o?t:Ze.makeCustomFormat(),l=dn.makeCustomFormatOption(r,Wo.customGroup,Ze.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=Ze.makeCustomFormat(a);Ze.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let na=Wo;na.defaultGroup=10;na.presetGroup=20;na.customGroup=30;const Ah=X.module("IrisGridContextMenuHandler"),FT=150,Ph="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",J=class extends Dt{constructor(t){super(),this.debouncedUpdateCustomFormat=je(t.handleFormatSelection,FT),this.irisGrid=t}static getQuickFilterCondition(t,e,n){return t&&n==="&&"?t.and(e):t&&n==="||"?t.or(e):e}static getQuickFilterText(t,e,n){return n&&t!=null?`${t} ${n} ${e}`:e}static getOperatorAsText(t){return t==="&&"?"And":"Or"}static getNumberValueEqualsFilter(t,e){const n=t.filter();if(e===Number.POSITIVE_INFINITY)return M.FilterCondition.invoke("isInf",n).and(n.greaterThan(M.FilterValue.ofNumber(0)));if(e===Number.NEGATIVE_INFINITY)return M.FilterCondition.invoke("isInf",n).and(n.lessThan(M.FilterValue.ofNumber(0)));if(Number.isNaN(e))return M.FilterCondition.invoke("isNaN",n);const s=J.getFilterValueForNumberOrChar(t.type,e);return n.eq(s)}static getFilterValueForNumberOrChar(t,e){return L.isCharType(t)?M.FilterValue.ofString(String.fromCharCode(e)):M.FilterValue.ofNumber(e)}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(t,e){var N;const{irisGrid:n}=this,{column:s}=e;P(s);const{model:i}=n.props,{columns:o}=i,r=o[t],l=[],{metrics:a,reverseType:d,quickFilters:c,advancedFilters:u,searchFilter:m}=n.state,p=n.getTheme();P(a);const{filterIconColor:g,filterBarActiveColor:f,contextMenuSortIconColor:b,contextMenuReverseIconColor:C}=p,S=i.sort,v=L.getSortForColumn(S,t),y=d!==L.REVERSE_TYPE.NONE,{userColumnWidths:E}=a,I=[...E.values()].some(F=>F===0),R=i.isColumnFrozen(s);return l.push({title:"Hide Column",group:J.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),l.push({title:R?"Unfreeze Column":"Freeze Column",group:J.GROUP_HIDE_COLUMNS,action:()=>{R?this.irisGrid.unFreezeColumnByColumnName(r.name):this.irisGrid.freezeColumnByColumnName(r.name)},order:10}),l.push({title:"Show All Columns",group:J.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!I}),l.push({title:"Quick Filters",icon:ss,iconColor:f,shortcut:an.TABLE.TOGGLE_QUICK_FILTER,group:J.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),l.push({title:"Advanced Filters",icon:u.get(t)?Dd:hl,iconColor:g,group:J.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),l.push({title:"Clear Table Filters",group:J.GROUP_FILTER,order:40,shortcut:an.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(c.size>0||u.size>0||m!=null)}),l.push({title:"Sort by",icon:ss,iconColor:b,group:J.GROUP_SORT,order:10,actions:this.sortByActions(r,t,v)}),l.push({title:"Add Additional Sort",disabled:v&&S.length===1||y&&S.length===1||v&&y&&S.length===2||S.length===0,group:J.GROUP_SORT,order:20,actions:this.additionalSortActions(r,t)}),l.push({title:"Clear Table Sorting",disabled:S.length===0||y&&S.length===1,group:J.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,J.COLUMN_SORT_DIRECTION.none)},order:30}),l.push({title:d===L.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:ss,iconColor:C,group:J.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:an.TABLE.REVERSE,action:()=>{d===L.REVERSE_TYPE.NONE?this.irisGrid.reverse(L.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(L.REVERSE_TYPE.NONE)}}),l.push({title:"Copy Column Name",group:J.GROUP_COPY,action:()=>{var F;ro((F=i.textForColumnHeader(t))!=null?F:"").catch(B=>Ah.error("Unable to copy header",B))}}),L.isDateType(r.type)?l.push({title:"Date/Time Format",group:J.GROUP_FORMAT,actions:this.dateFormatActions(r)}):L.isNumberType(r.type)&&l.push({title:"Number Format",group:J.GROUP_FORMAT,actions:(N=this.numberFormatActions(r))!=null?N:void 0}),l}getCellActions(t,e,n){P(t);const{irisGrid:s}=this,{column:i,row:o}=n,{model:r,canCopy:l}=s.props,{columns:a}=r,d=s.getModelRow(o);P(d);const c=r.valueForCell(t,d),u=r.textForCell(t,d),m=a[t],p=[],{quickFilters:g}=s.state,f=s.getTheme(),{filterIconColor:b}=f,{settings:C}=s.props,S=new nt({timeZone:C==null?void 0:C.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Ph}),v=new nt({timeZone:C==null?void 0:C.timeZone,showTimeZone:C==null?void 0:C.showTimeZone,showTSeparator:C==null?void 0:C.showTSeparator,defaultDateTimeFormatString:Ph});if(m==null||o==null)return p;if(r.isFilterable(t)){const E={title:"Filter By Value",icon:ss,iconColor:b,group:J.GROUP_FILTER,order:10,actions:[]};if(c==null)g.get(t)&&E.actions.push({title:"And",actions:this.nullFilterActions(m,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.nullFilterActions(m));else if(L.isBooleanType(m.type))g.get(t)&&E.actions.push({title:"Or",actions:this.booleanFilterActions(m,u,g.get(t),"||"),order:2,group:oe.groups.high}),E.actions.push(...this.booleanFilterActions(m,u));else if(L.isNumberType(m.type)||L.isCharType(m.type)){P(t);const I=L.isCharType(m.type)?String.fromCharCode(c):`${c}`;g.get(t)&&E.actions.push({title:"And",actions:this.numberFilterActions(m,I,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.numberFilterActions(m,I,c,g.get(t)))}else if(L.isDateType(m.type)){const I=S.format(c),R=v.format(c);g.get(t)&&E.actions.push({title:"And",actions:this.dateFilterActions(m,I,R,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.dateFilterActions(m,I,R,c,g.get(t)))}else g.get(t)&&E.actions.push({title:"And",actions:this.stringFilterActions(m,u,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.stringFilterActions(m,u,c));E.actions!=null&&E.actions.length>0&&p.push(E)}const y={title:"Go to",iconColor:b,shortcut:an.TABLE.GOTO_ROW,group:J.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${o+1}`)};return p.push(y),l&&(p.push({title:"Copy Cell",group:J.GROUP_COPY,order:10,action:()=>{s.copyCell(i,o)}}),p.push({title:"Copy Cell Unformatted",group:J.GROUP_COPY,order:20,action:()=>{s.copyCell(i,o,!0)}})),p}onContextMenu(t,e,n){const{irisGrid:s}=this,{y:i,column:o,row:r,columnHeaderDepth:l}=t,a=s.getModelColumn(o),d=s.getModelRow(r),{model:c,canCopy:u}=s.props,{columns:m}=c,{metrics:p,isFilterBarShown:g,quickFilters:f,advancedFilters:b,selectedRanges:C}=s.state;P(p);const{columnHeaderHeight:S,gridY:v,columnHeaderMaxDepth:y}=p,E=[];if(a!=null&&d!=null){const I=c.valueForCell(a,d),R=c.textForCell(a,d),N=m[a],{onContextMenu:F}=s.props;N!=null&&E.push(F({model:c,value:I,valueText:R,column:N,rowIndex:r,columnIndex:o,modelRow:d,modelColumn:a}))}return a!=null&&c.isFilterable(a)&&E.push({title:"Clear Column Filter",group:J.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(a)},disabled:!(f.has(a)||b.has(a))}),(g?i<=v:i<=S*y&&l===0)?a!=null&&E.push(...this.getHeaderActions(a,t)):(a!=null&&d!=null&&E.push(...this.getCellActions(a,e,t)),u&&C.length>0&&(E.push({title:"Copy Selection",shortcut:Cs.COPY,group:J.GROUP_COPY,order:30,action:()=>{s.copyRanges(C)}}),E.push({title:"Copy Selection w/ Headers",group:J.GROUP_COPY,order:40,action:()=>{s.copyRanges(C,!0)}})),et(c)&&c.isEditable&&C.length>0&&E.push({title:"Delete Selected Rows",group:J.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(C)}})),E.length===0?!1:(P(s.gridWrapper),oe.triggerMenu(s.gridWrapper,n.pageX,n.pageY,E),!0)}dateFormatActions(t){const{model:e}=this.irisGrid.props,{formatter:n}=e,s=n.getColumnFormat(t.type,t.name),i=ta.getOptions(n,s),o=[];for(let r=0;r<i.length;r+=1){const{description:l,format:a,group:d,isSelected:c,title:u}=i[r];o.push({title:u,description:l,icon:c?Xn:void 0,group:d,order:r,action:()=>{const m=e.getColumnIndexByName(t.name);P(m),this.irisGrid.handleFormatSelection(m,a)}})}return o}numberFormatActions(t){const{model:e}=this.irisGrid.props,{formatter:n}=e,s=n.getColumnFormat(t.type,t.name);let i;const o=e.getColumnIndexByName(t.name);if(L.isDecimalType(t.type))i=mr.getOptions(s,l=>{P(o),this.debouncedUpdateCustomFormat(o,l)});else if(L.isIntegerType(t.type))i=na.getOptions(s,l=>{P(o),this.debouncedUpdateCustomFormat(o,l)});else return Ah.error("Invalid column type in numberFormatActions"),null;const r=[];for(let l=0;l<i.length;l+=1){const{format:a,isSelected:d}=i[l];r.push({...i[l],icon:d?Xn:void 0,order:l,action:()=>{o===void 0&&a&&a.type===tt.TYPE_CONTEXT_CUSTOM||(P(o),this.irisGrid.handleFormatSelection(o,a))}})}return r}stringFilterActions(t,e,n,s,i){const o=M.FilterValue.ofString(n);let r=s;r||(r={filter:null,text:null});const{filter:l,text:a}=r,d=[],{model:c}=this.irisGrid.props,u=c.getColumnIndexByName(t.name);return P(u),d.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[i?J.getOperatorAsText(i):""," ",'"',e,'"']}),order:1,group:oe.groups.high}),d.push({title:"text is exactly",description:`Show only rows where ${t.name} is ${n} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().eq(o),i),J.getQuickFilterText(a,`=${e}`,i))},order:10,group:oe.groups.low}),d.push({title:"text is not exactly",description:`Show only rows where ${t.name} is not ${e} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().notEq(o),i),J.getQuickFilterText(a,`!=${e}`,i))},order:20,group:oe.groups.low}),d.push({title:"text contains",description:`Show only rows where ${t.name} contains ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().contains(o),i),J.getQuickFilterText(a,`~${e}`,i))},order:30,group:oe.groups.low}),d.push({title:"text does not contain",description:`Show only rows where ${t.name} does not contain ${n}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().contains(o).not(),i),J.getQuickFilterText(a,`!~${e}`,i))},order:40,group:oe.groups.low}),d.push({title:"text starts with",description:`Show only rows where ${t.name} starts with ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().invoke("startsWith",o),i),J.getQuickFilterText(a,`${e}*`,i))},order:50,group:oe.groups.low}),d.push({title:"text ends with",description:`Show only rows where ${t.name} ends with ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(l,t.filter().invoke("endsWith",o),i),J.getQuickFilterText(a,`*${e}`,i))},order:60,group:oe.groups.low}),d}numberFilterActions(t,e,n,s,i){const o=J.getFilterValueForNumberOrChar(t.type,n);let r=null,l=null;s&&(r=s.filter,l=s.text);const a=[],d=n!==Number.POSITIVE_INFINITY&&n!==Number.NEGATIVE_INFINITY&&!Number.isNaN(n),{model:c}=this.irisGrid.props,u=c.getColumnIndexByName(t.name);return P(u),a.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[i?J.getOperatorAsText(i):""," ",'"',e,'"']}),order:1,group:oe.groups.high}),a.push({title:"is equal to",description:`Show only rows where ${t.name} is ${e}`,action:()=>{const m=J.getNumberValueEqualsFilter(t,n);this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,m,i),J.getQuickFilterText(l,`=${e}`,i))},order:10,group:oe.groups.low}),a.push({title:"is not equal to",description:`Show only rows where ${t.name} is not ${e}`,action:()=>{const m=J.getNumberValueEqualsFilter(t,n).not();this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,m,i),J.getQuickFilterText(l,`!=${e}`,i))},order:20,group:oe.groups.low}),d&&!L.isCharType(t.type)&&(a.push({title:"greater than",description:`Show only rows where ${t.name} is greater than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().greaterThan(o),i),J.getQuickFilterText(l,`>${e}`,i))},order:30,group:oe.groups.low}),a.push({title:"greater than or equal to",description:`Show only rows where ${t.name} is greater than or equal to ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().greaterThanOrEqualTo(o),i),J.getQuickFilterText(l,`>=${e}`,i))},order:40,group:oe.groups.low}),a.push({title:"less than",description:`Show only rows where ${t.name} is less than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().lessThan(o),i),J.getQuickFilterText(l,`<${e}`,i))},order:50,group:oe.groups.low}),a.push({title:"less than or equal to",description:`Show only rows where ${t.name} is less than or equal to ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,J.getQuickFilterCondition(r,t.filter().lessThanOrEqualTo(o),i),J.getQuickFilterText(l,`<=${e}`,i))},order:60,group:oe.groups.low})),a}booleanFilterActions(t,e,n,s){const i=[],{model:o}=this.irisGrid.props,{filter:r,text:l}=n||{},a=o.getColumnIndexByName(t.name);return P(a),i.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[s?J.getOperatorAsText(s):""," ",'"',e!=null?e:"null",'"']}),order:1,group:oe.groups.high}),i.push({title:"true",description:`Show only rows where ${t.name} is true`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isTrue(),s),J.getQuickFilterText(l,"true",s))},order:10,group:oe.groups.low}),i.push({title:"false",description:`Show only rows where ${t.name} is false`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isFalse(),s),J.getQuickFilterText(l,"false",s))},order:20,group:oe.groups.low}),i.push({title:"is null",description:`Show only rows where ${t.name} is null`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isNull(),s),J.getQuickFilterText(l,"null",s))},order:30,group:oe.groups.low}),i.push({title:"is not null",description:`Show only rows where ${t.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(a,J.getQuickFilterCondition(r,t.filter().isNull().not(),s),J.getQuickFilterText(l,"!null",s))},order:40,group:oe.groups.low}),i}dateFilterActions(t,e,n,s,i,o){const r=M.FilterValue.ofNumber(s);let l=null,a=null;i&&(l=i.filter,a=i.text);const{model:d}=this.irisGrid.props,c=d.getColumnIndexByName(t.name);P(c);const u=[];return u.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[o?J.getOperatorAsText(o):""," ",'"',n,'"']}),order:1,group:oe.groups.high}),u.push({title:"date is",description:`Show only rows where ${t.name} is ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().eq(r),o),J.getQuickFilterText(a,`=${e}`,o))},order:10,group:oe.groups.low}),u.push({title:"date is not",description:`Show only rows where ${t.name} is not ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().notEq(r),o),J.getQuickFilterText(a,`!=${e}`,o))},order:20,group:oe.groups.low}),u.push({title:"date is before",description:`Show only rows where ${t.name} is before ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().lessThan(r),o),J.getQuickFilterText(a,`<${e}`,o))},order:30,group:oe.groups.low}),u.push({title:"date is before or equal",description:`Show only rows where ${t.name} is before or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().lessThanOrEqualTo(r),o),J.getQuickFilterText(a,`<=${e}`,o))},order:40,group:oe.groups.low}),u.push({title:"date is after",description:`Show only rows where ${t.name} is greater than ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().greaterThan(r),o),J.getQuickFilterText(a,`>${e}`,o))},order:50,group:oe.groups.low}),u.push({title:"date is after or equal",description:`Show only rows where ${t.name} is after or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(c,J.getQuickFilterCondition(l,t.filter().greaterThanOrEqualTo(r),o),J.getQuickFilterText(a,`>=${e}`,o))},order:60,group:oe.groups.low}),u}nullFilterActions(t,e,n){let s=null,i=null;e&&(s=e.filter,i=e.text);const o=[],{model:r}=this.irisGrid.props,l=r.getColumnIndexByName(t.name);return P(l),o.push({menuElement:T("div",{className:"iris-grid-filter-menu-item-value",children:[n?J.getOperatorAsText(n):""," ",'"null"']}),order:1,group:oe.groups.high}),o.push({title:"is null",description:`Show only rows where ${t.name} is null`,action:()=>{this.irisGrid.setQuickFilter(l,J.getQuickFilterCondition(s,t.filter().isNull(),n),J.getQuickFilterText(i,"null",n))},order:10,group:oe.groups.low}),o.push({title:"is not null",description:`Show only rows where ${t.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(l,J.getQuickFilterCondition(s,t.filter().isNull().not(),n),J.getQuickFilterText(i,"!null",n))},order:20,group:oe.groups.low}),o}sortByActions(t,e,n){const s=this.irisGrid.getTheme(),{contextMenuSortIconColor:i}=s,o=[{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.ascending)?ss:void 0,iconColor:i},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.descending)?ss:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return L.isNumberType(t.type)&&(o.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.ascending,!0)?ss:void 0,iconColor:i}),o.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,J.COLUMN_SORT_DIRECTION.descending,!0)?ss:void 0,iconColor:i})),o}additionalSortActions(t,e){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:T("div",{className:"btn-context-menu menu-title",children:[h("span",{className:"icon",children:h(Z,{icon:ss,style:{color:s!=null?s:void 0}})}),h("span",{className:"title",children:"Add Additional Sort"}),h("span",{className:"shortcut",children:We.isMacPlatform()?"\u2318Click":"^Click"})]}),order:1},{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return L.isNumberType(t.type)&&(i.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,J.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(t,e=null,n=!1){return t?t.direction===e&&t.isAbs===n:!1}};let vs=J;vs.GROUP_EDIT=oe.groups.high+10;vs.GROUP_HIDE_COLUMNS=oe.groups.high+25;vs.GROUP_FILTER=oe.groups.high+50;vs.GROUP_GOTO=oe.groups.high+51;vs.GROUP_SORT=oe.groups.high+75;vs.GROUP_COPY=oe.groups.high+100;vs.GROUP_FORMAT=oe.groups.high+150;vs.COLUMN_SORT_DIRECTION={ascending:"ASC",descending:"DESC",none:null};class xT extends Dt{constructor(e){super(),this.irisGrid=e}onDoubleClick(e){const{column:n,row:s}=e;return s==null||n==null?!1:(this.irisGrid.selectData(n,s),!0)}}class _T extends Dt{constructor(e){super(),this.irisGrid=e}onDown(e){const{y:n,column:s,row:i}=e;if(s!==null&&i===null){const{isFilterBarShown:o,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();if(o&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&n>a.columnHeaderHeight*l&&n<=a.columnHeaderHeight*l+a.filterBarHeight)return this.irisGrid.focusFilterBar(s),!0}return!1}onMove(e){const{y:n,column:s}=e,{isFilterBarShown:i,hoverAdvancedFilter:o,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();let d=null;return i&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&s!==null&&n>=a.columnHeaderHeight*l&&n<=a.columnHeaderHeight*l+a.filterBarHeight&&(d=s),d!==o&&this.irisGrid.setState({hoverAdvancedFilter:d}),!1}onLeave(e){const{column:n}=e,{hoverAdvancedFilter:s}=this.irisGrid.state;return s!==null&&n!==s&&this.irisGrid.setState({hoverAdvancedFilter:null}),!1}}class kT extends Dt{constructor(e){super(),this.column=null,this.irisGrid=e}getColumnFromGridPoint(e){const{column:n,row:s,columnHeaderDepth:i}=e;return n!==null&&s===null&&i===0?n:null}onDown(e){return this.column=this.getColumnFromGridPoint(e),!1}onClick(e,n,s){const i=this.getColumnFromGridPoint(e);if(i!=null&&i===this.column){const o=We.isModifierKeyDown(s);return this.irisGrid.toggleSort(i,o),!0}return!1}}class OT extends Dt{constructor(e){super(),this.irisGrid=e}onWheel(e,n,s){const{irisGrid:i}=this,{model:o}=i.props,{metrics:r,pendingRowCount:l}=i.state;P(r);const{bottom:a,rowCount:d,rowHeight:c}=r,{deltaY:u}=j.getScrollDelta(s);return et(o)&&o.isEditable&&a>=d-1&&u>0&&i.setState({pendingRowCount:l+Math.ceil(u/c)}),!1}}const LT=3e3;function AT({children:t=null,onEntering:e,onEntered:n,onExiting:s,onExited:i}){const[o,r]=w.exports.useState(!1),l=w.exports.useRef(),a=Al(t),d=w.exports.useCallback(()=>{r(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{r(!1)},LT)},[r,l]);return w.exports.useEffect(()=>{a!==t&&t!=null&&d()},[t,a,r,d]),w.exports.useEffect(()=>()=>l.current?clearTimeout(l.current):void 0,[]),h(ea,{className:"toast-bottom-bar",isShown:o,onEntering:e,onEntered:n,onExiting:s,onExited:i,children:t})}class PT extends hr{getVisibleColumnWidth(e,n,s=this.getFirstColumn(n),i=this.calculateTreePaddingX(n)){var c,u,m;const{model:o}=n,r=(u=(c=o.layoutHints)==null?void 0:c.hiddenColumns)!=null?u:[],l=this.getModelColumn(e,n),a=super.getVisibleColumnWidth(e,n,s,i);return!this.userColumnWidths.has(l)&&r.includes((m=o.columns[l])==null?void 0:m.name)?0:a}getGridY(e){let n=super.getGridY(e);const{isFilterBarShown:s,theme:i,advancedFilters:o,quickFilters:r,sorts:l,reverseType:a}=e;return s?n+=i.filterBarHeight:(r!=null&&r.size>0||o!=null&&o.size>0)&&(n+=i.filterBarCollapsedHeight),a!==L.REVERSE_TYPE.NONE&&l!=null&&l.length>0&&(n+=i.reverseHeaderBarHeight),n}getUserColumnWidths(){return this.userColumnWidths}}const HT=1,xp=Y.memo(({model:t,modelColumns:e,top:n,bottom:s,left:i,right:o,filter:r,formatter:l,reverseType:a=L.REVERSE_TYPE.NONE,sorts:d,customColumns:c,movedColumns:u,hiddenColumns:m,alwaysFetchColumns:p,rollupConfig:g=null,totalsConfig:f=null,selectDistinctColumns:b=[],pendingRowCount:C=0,pendingDataMap:S=new Map,frozenColumns:v,formatColumns:y,columnHeaderGroups:E})=>{const I=w.exports.useMemo(()=>te.getModelViewportColumns(e,i,o,u,m,p,HT),[e,i,o,u,m,p]);return w.exports.useEffect(function(){t.filter=r},[t,r]),w.exports.useEffect(function(){const N=[...d];a!==L.REVERSE_TYPE.NONE&&N.push(M.Table.reverse()),t.sort=N},[t,d,a]),w.exports.useEffect(function(){t.formatter=l},[t,l]),w.exports.useEffect(function(){t.isCustomColumnsAvailable&&(t.customColumns=c)},[t,c]),w.exports.useEffect(function(){t.isFormatColumnsAvailable&&(t.formatColumns=y)},[t,y]),w.exports.useEffect(function(){t.setViewport(n,s,I)},[t,n,s,I]),w.exports.useEffect(function(){t.isRollupAvailable&&(t.rollupConfig=g)},[t,t.isRollupAvailable,g]),w.exports.useEffect(function(){t.isSelectDistinctAvailable&&(t.selectDistinctColumns=b)},[t,b]),w.exports.useEffect(function(){t.isTotalsAvailable&&(t.totalsConfig=f)},[t,t.isTotalsAvailable,f]),w.exports.useEffect(function(){t.pendingRowCount=C},[t,C]),w.exports.useEffect(function(){t.pendingDataMap=S},[t,S]),w.exports.useEffect(function(){v&&t.updateFrozenColumns(v)},[t,v]),w.exports.useEffect(function(){t.columnHeaderGroups=E},[t,E]),null});xp.displayName="IrisGridModelUpdater";const Un=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),Na=16;class Ko extends to{constructor(){super(),this.icons={},this.initIcons()}static isFilterValid(e,n){const s=e==null||e.filter!=null,i=n==null||n.filter!=null;return s&&i}initIcons(){this.setIcon(Un.SORT_UP,ub),this.setIcon(Un.SORT_DOWN,hb),this.setIcon(Un.CARET_DOWN,qn),this.setIcon(Un.CARET_RIGHT,_u),this.setIcon(Un.CELL_OVERFLOW,FC)}setIcon(e,n){const s=Array.isArray(n.icon[4])?n.icon[4][0]:n.icon[4],i=new Path2D(s),o=new Path2D,r={a:Na/n.icon[0],d:Na/n.icon[1]};o.addPath(i,r),this.icons[e]=o}getIcon(e){return this.icons[e]}getSortIcon(e){return e?e.direction===L.sortDirection.ascending?this.getIcon(Un.SORT_UP):e.direction===L.sortDirection.descending?this.getIcon(Un.SORT_DOWN):null:null}drawCanvas(e){super.drawCanvas(e),this.drawScrim(e)}drawGrid(e,n){super.drawGrid(e,n),this.drawCellOverflowButton(n)}drawGridLines(e,n){super.drawGridLines(e,n),this.drawGroupedColumnLine(e,n),this.drawPendingRowLine(e,n)}drawCellContent(e,n,s,i){var m;const{metrics:o,model:r}=n,{modelColumns:l,modelRows:a}=o,d=$(a,i),c=l.get(s);if(c===void 0)return;const u=r.valueForCell(c,d);if(L.isTextType((m=r.columns[c])==null?void 0:m.type)&&(u===null||u==="")){const p=e.font;e.font=`italic ${p}`;const g=u===null?"null":"empty";super.drawCellContent(e,n,s,i,g),e.font=p;return}super.drawCellContent(e,n,s,i)}drawGroupedColumnLine(e,n){const{metrics:s,model:i,theme:o}=n,{groupedColumns:r,columns:l}=i,{maxY:a,allColumnWidths:d,allColumnXs:c}=s;if(r.length===0||o.groupedColumnDividerColor==null)return;const u=r[r.length-1],m=l.findIndex(b=>b.name===u.name),p=c.get(m),g=d.get(m);if(p==null||g==null)return;const f=p+g+.5;e.strokeStyle=o.groupedColumnDividerColor,e.lineWidth=1,e.beginPath(),e.moveTo(f,0),e.lineTo(f,a),e.stroke()}drawPendingRowLine(e,n){const{metrics:s,model:i,theme:o}=n,{allRowYs:r,maxX:l}=s,{pendingRowCount:a}=i;if(a<=0)return;const d=i.rowCount-i.pendingRowCount-i.floatingBottomRowCount;let c=r.get(d);c!=null&&(c-=.5,e.save(),e.setLineDash([4,2]),e.strokeStyle=o.pendingTextColor,e.lineWidth=1,e.beginPath(),e.moveTo(0,c),e.lineTo(l,c),e.stroke(),e.restore())}drawMouseColumnHover(e,n){const{theme:s,metrics:i,hoverSelectColumn:o}=n;if(o==null||s.linkerColumnHoverBackgroundColor==null)return;const{allColumnWidths:r,allColumnXs:l,maxY:a}=i,d=l.get(o),c=r.get(o);P(d),P(c),e.fillStyle=s.linkerColumnHoverBackgroundColor,e.fillRect(d,0,c,a)}drawMouseRowHover(e,n){const{isSelectingColumn:s}=n;s||super.drawMouseRowHover(e,n)}drawScrim(e){const{context:n,loadingScrimProgress:s,metrics:i,theme:o}=e;if(s==null)return;const{width:r,height:l,gridY:a}=i,{scrimBlurSize:d,scrimColor:c}=o;n.save(),n.globalCompositeOperation="color",n.filter=`blur(${d}px)`,c!=null&&(n.fillStyle=c),n.beginPath(),n.rect(0,a,r,l-a),n.clip(),n.fillRect(-d,-d+a,d*2+r,(d*2+(l-a))*s),n.globalCompositeOperation="overlay",n.filter=`blur(${d}px) opacity(15%)`,n.fillRect(-d,-d+a,d*2+r,(d*2+(l-a))*s),n.restore()}drawColumnHeaders(e,n){super.drawColumnHeaders(e,n);const{theme:s,metrics:i,model:o,reverseType:r}=n,{columnHeaderHeight:l}=i;if(this.drawFilterHeaders(e,n),l<=0)return;const{sort:a}=o;if(a.length===1){const d=r!==L.REVERSE_TYPE.NONE;let c;d?c=s.headerReverseBarColor:c=s.headerSortBarColor,this.drawHeaderBar(e,n,c,d?s.reverseHeaderBarHeight:s.sortHeaderBarHeight)}else a.length>1&&(r!==L.REVERSE_TYPE.NONE&&this.drawHeaderBar(e,n,s.headerReverseBarColor,s.reverseHeaderBarHeight,!1),this.drawHeaderBar(e,n,s.headerSortBarColor,s.sortHeaderBarHeight))}drawHeaderBar(e,n,s,i,o=!0){const{theme:r,metrics:l,model:a}=n,{columnHeaderHeight:d,width:c}=l;let u=0;o||(u=i),e.fillStyle=r.headerBarCasingColor,e.fillRect(0,a.columnHeaderMaxDepth*d-i-2+u,c,i+2),e.fillStyle=s,e.fillRect(0,a.columnHeaderMaxDepth*d-i-1+u,c,i)}drawColumnHeadersAtDepth(e,n,s,i,o){const{metrics:r,model:l,isMenuShown:a}=n,{columnHeaderMaxDepth:d}=l,{width:c}=r,u={...i,maxX:o===d-1&&i.maxX===c?c-(a?0:30):i.maxX};super.drawColumnHeadersAtDepth(e,n,s,u,o)}drawColumnHeaderAtIndex(e,n,s,i){var H;super.drawColumnHeaderAtIndex(e,n,s,i);const{metrics:o,model:r,theme:l}=n,{modelColumns:a,allColumnWidths:d,allColumnXs:c,gridX:u,columnHeaderHeight:m,fontWidths:p}=o,{headerHorizontalPadding:g}=l,f=$(d,s,0),b=$(c,s)+u,C=a.get(s);if(C==null)return;const S=L.getSortForColumn(r.sort,C);if(!S)return;const v=this.getSortIcon(S);if(!v)return;const y=r.textForColumnHeader(C);if(y===void 0)return;const E=(H=p.get(e.font))!=null?H:to.DEFAULT_FONT_WIDTH;P(E);const I=y.length*E,R=u+b+I+g;let{maxX:N}=i;N-=g;const F=u+b+f-g-1,B=R>N?R+1:Math.min(N,F),U=S.direction===L.sortDirection.ascending?-6:-12,x=m*.5+U;e.save(),e.beginPath(),e.rect(b,0,f,m),e.clip(),e.fillStyle=l.headerSortBarColor,e.translate(B,x),e.fill(v),e.restore()}drawFilterHeaders(e,n){const{isFilterBarShown:s,quickFilters:i,advancedFilters:o}=n;s?this.drawExpandedFilterHeaders(e,n):(i!=null&&i.size>0||o!=null&&o.size>0)&&this.drawCollapsedFilterHeaders(e,n)}drawExpandedFilterHeaders(e,n){const{metrics:s,model:i,theme:o,quickFilters:r,advancedFilters:l}=n,{filterBarHeight:a}=o;if(a<=0)return;const{gridX:d,gridY:c,maxX:u,modelColumns:m,visibleColumns:p,allColumnWidths:g,allColumnXs:f}=s,b=c-a;e.save(),e.font=o.font,e.textAlign="left",r!=null&&r.size>0||l!=null&&l.size>0?e.fillStyle=o.filterBarExpandedActiveBackgroundColor:e.fillStyle=o.filterBarExpandedBackgroundColor,e.fillRect(d,b,u,a-1),e.fillStyle=o.headerBarCasingColor,e.fillRect(d,b+a-1,u,1);const C=b;e.strokeStyle=o.filterBarSeparatorColor,e.beginPath();for(let S=0;S<p.length;S+=1){const v=p[S],y=$(m,v),E=$(f,v),I=$(g,v);if(i.isFilterable(y)&&I>0){const R=d+(E!=null?E:0);e.rect(R+.5,C+.5,I,a-2)}}e.stroke();for(let S=0;S<p.length;S+=1){const v=p[S],y=$(g,v),I=$(f,v)+d;this.drawExpandedFilterHeader(e,n,v,I,y)}e.restore()}drawExpandedFilterHeader(e,n,s,i,o){if(o<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:d}=n,{modelColumns:c,gridY:u}=r,{filterBarHeight:m,filterBarExpandedActiveCellBackgroundColor:p,filterBarErrorColor:g,filterBarHorizontalPadding:f,headerColor:b}=l,C=u-m,S=c.get(s);if(S===void 0)return;const v=a.get(S),y=d.get(S);if(v==null&&y==null)return;let E=null;if(v!=null){const{text:R}=v;if(E=R,E||(E=L.getFilterText(v.filter)),E!=null){const{fontWidths:N}=r;let F=N.get(e.font);(F==null||F===0)&&(F=e.measureText("8").width,F||(F=10));const B=(o-f*2)/F;B<=0?E="":E.length>B&&(E=`${E.substring(0,B-1)}\u2026`)}}if(e.save(),Ko.isFilterValid(y,v)&&p!=null)e.fillStyle=p,e.fillRect(i+1,C+1,o-1,m-3);else if(g!=null){e.fillStyle=g,e.lineWidth=2,e.strokeStyle=g;const R=i+2,N=C+2,F=o-3,B=m-5;e.strokeRect(R,N,F,B)}if(E!=null&&E!==""){const R=i+f,N=C+m*.5+1;e.fillStyle=b,e.fillText(E,R,N)}e.restore()}drawCollapsedFilterHeaders(e,n){const{metrics:s,theme:i}=n,{headerSeparatorColor:o,filterBarCollapsedHeight:r}=i;if(r<=0)return;const{gridX:l,gridY:a,maxX:d,visibleColumns:c,allColumnWidths:u,allColumnXs:m}=s,p=a-r;e.save(),e.fillStyle=o,e.fillRect(l,p,d,r);for(let g=0;g<c.length;g+=1){const f=c[g],b=u.get(f),C=m.get(f);if(C!=null&&b!=null){const S=C+l;this.drawCollapsedFilterHeader(e,n,f,S,b)}}e.restore()}drawCollapsedFilterHeader(e,n,s,i,o){if(o<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:d}=n,{modelColumns:c,gridY:u}=r,m=c.get(s);if(m===void 0)return;const p=a.get(m),g=d.get(m),{filterBarCollapsedHeight:f,filterBarActiveColor:b,filterBarActiveBackgroundColor:C,filterBarErrorColor:S}=l;e.save();const v=Ko.isFilterValid(g,p);C!=null&&p==null&&g==null?e.fillStyle=C:b!=null&&v?e.fillStyle=b:S!=null&&(e.fillStyle=S);const y=i+1,E=u-f,I=o-1,R=f-1;e.fillRect(y,E,I,R),e.restore()}drawTreeMarker(e,n,s,i,o,r,l){e.save();const{x1:a,y1:d}=o,c=l?this.getIcon(Un.CARET_DOWN):this.getIcon(Un.CARET_RIGHT),u=s+a-2,m=i+d+2.5;e.fillStyle=r,e.textAlign="center",e.translate(u,m),e.fill(c),e.restore()}drawRowFooters(e,n){const{metrics:s,model:i,mouseX:o,mouseY:r,theme:l}=n,{gridY:a,gridX:d,maxX:c,modelRows:u,floatingTopHeight:m,floatingBottomHeight:p,floatingRows:g,rowFooterWidth:f,height:b,horizontalBarHeight:C,verticalBarWidth:S,allRowHeights:v,allRowYs:y,width:E}=s;if(f<=0||g.length===0)return;const{cellHorizontalPadding:I,floatingGridRowColor:R,floatingRowBackgroundColors:N,headerColor:F,rowHoverBackgroundColor:B}=l;e.translate(d,a),e.beginPath();const U=Math.min(c,E-f-S-d);e.fillStyle=N,m>0&&e.rect(U,0,f,m),p>0&&e.rect(U,b-a-C-p,f,p),e.fill();const x=o!=null&&r!=null&&o>=d&&o<=c+f?j.getRowAtY(r,s):null;if(B!=null&&x!==null&&g.includes(x)){e.fillStyle=B;const A=y.get(x),O=v.get(x);P(A),P(O),e.fillRect(U,A,f,O)}if(e.beginPath(),R!=null&&(e.strokeStyle=R),m>0&&(e.moveTo(U+.5,.5),e.lineTo(U+.5,m-.5)),p>0){const A=b-a-C-p;e.moveTo(U-.5,A+.5),e.lineTo(U-.5,A+p-.5)}e.stroke(),e.fillStyle=F,e.textAlign="left";const H=U+I;for(let A=0;A<g.length;A+=1){const O=g[A],_=v.get(O),k=y.get(O),V=u.get(O);if(k!=null&&_!=null&&V!=null){const G=k+_*.5;e.fillText(i.textForRowFooter(V),H,G)}}e.translate(-d,-a)}getTextRenderMetrics(e,n,s,i){const o=super.getTextRenderMetrics(e,n,s,i),{mouseX:r,mouseY:l,metrics:a}=n;if(r==null||l==null)return o;const{column:d,row:c}=j.getGridPointFromXY(r,l,a);if(s===d&&i===c){const{left:u}=this.getCellOverflowButtonPosition(n);this.shouldRenderOverflowButton(n)&&u!=null&&(o.width=u-a.gridX-o.x)}return o}shouldRenderOverflowButton(e){var b,C;const{context:n,mouseX:s,mouseY:i,metrics:o,model:r,theme:l}=e;if(s==null||i==null)return!1;const{row:a,column:d,modelRow:c,modelColumn:u}=j.getCellInfoFromXY(s,i,o);if(a==null||d==null||c==null||u==null||!L.isStringType(r.columns[u].type))return!1;const m=(b=r.textForCell(u,c))!=null?b:"",{width:p}=super.getTextRenderMetrics(n,e,d,a),g=(C=o.fontWidths.get(l.font))!=null?C:Ko.DEFAULT_FONT_WIDTH;n.save(),n.font=l.font;const f=this.getCachedTruncatedString(n,m,p,g,r.truncationCharForCell(u,c));return n.restore(),m!==""&&f!==m}getCellOverflowButtonPosition({mouseX:e,mouseY:n,metrics:s,theme:i}){const o={left:null,top:null,width:null,height:null};if(e==null||n==null||!s)return o;const{rowHeight:r,columnWidth:l,left:a,top:d}=j.getCellInfoFromXY(e,n,s);P(a),P(l),P(d);const{width:c,verticalBarWidth:u}=s,{cellHorizontalPadding:m}=i,p=Na+2*m,g=r,b=Math.min(s.gridX+a+l,c-u)-p,C=s.gridY+d;return{left:b,top:C,width:p,height:g}}drawCellOverflowButton(e){const{context:n,mouseX:s,mouseY:i,theme:o}=e;if(s==null||i==null||!this.shouldRenderOverflowButton(e))return;const{left:r,top:l,width:a,height:d}=this.getCellOverflowButtonPosition(e),{cellHorizontalPadding:c,overflowButtonColor:u,overflowButtonHoverColor:m}=o;n.save(),m!=null&&r!=null&&a!=null&&l!=null&&d!=null&&s>=r&&s<=r+a&&i>=l&&i<=l+d?n.fillStyle=m:u!=null&&(n.fillStyle=u);const p=this.getIcon(Un.CELL_OVERFLOW);r!=null&&l!=null&&n.translate(r+c,l+2),n.fill(p),n.restore()}}const UT="12px Fira Sans, sans-serif",VT="#f0f0ee",BT="#1a171a",de={"grid-bg":"#211f22",font:UT,white:VT,black:BT,"header-bg":"#2d2a2e","header-color":"#f0f0ee","header-height":"30px","header-separator-color":"#211f22","header-separator-hover-color":"#929192","header-hidden-separator-hover-color":"#4878ea","header-sort-bar-color":"#aa9af4","header-reverse-bar-color":"#548d29","header-bar-casing-color":"#211f22","header-font":"600 12px Fira Sans, sans-serif","row-height":"19px","row-background-colors":"#373438 #2d2a2e","selection-color":"rgba(118, 217, 228, 0.09)","selection-outline-color":"#76d9e4","selection-outline-casing-color":"#211f22","row-hover-bg":"#4b494c","selected-row-hover-bg":"rgba(118, 217, 228, 0.25)","scroll-bar-active-selection-tick-color":"rgba(118, 217, 228, 0.5)","scroll-bar-bg":"#322f33","scroll-bar-hover-bg":"#373438","scroll-bar-casing-color":"#555356","scroll-bar-corner-color":"#322f33","scroll-bar-color":"#5b5a5c","scroll-bar-hover-color":"#929192","scroll-bar-active-color":"#c0bfbf","text-color":"#f0f0ee","positive-number-color":"#9edc6f","negative-number-color":"#f95d84","zero-number-color":"#fcd65b","date-color":"#fcd65b","pending-text-color":"#fde38d","error-text-color":"#f95d84","null-string-color":"#929192","filter-bar-active-bg":"#425175","filter-bar-active-color":"#4878ea","filter-bar-expanded-bg":"#373438","filter-bar-expanded-active-bg":"#313849","filter-bar-expanded-active-cell-bg":"#374d80","filter-bar-separator-color":"#929192","filter-bar-error-color":"#f95d84","filter-icon-color":"#4878ea","scrim-color":"#211f22","context-menu-sort-icon-color":"#aa9af4","context-menu-reverse-icon-color":"#548d29","linker-column-hover-bg":"rgba(118, 217, 228, 0.09)","tree-line-color":"#5b5a5c","tree-marker-color":"#c0bfbf","tree-marker-hover-color":"#fcfcfa","grouped-column-divider-color":"#1a171a","floating-grid-row-color":"#555356","floating-row-background-colors":"#403e41","floating-divider-inner-color":"#403e41","floating-divider-outer-color":"#211f22","overflow-button-color":"#c0bfbf","overflow-button-hover-color":"#fcfcfa"},_p=Object.freeze({backgroundColor:de["grid-bg"],white:de.white,black:de.black,font:de.font,headerBackgroundColor:de["header-bg"],headerColor:de["header-color"],headerSeparatorColor:de["header-separator-color"],headerSeparatorHoverColor:de["header-separator-hover-color"],headerHiddenSeparatorHoverColor:de["header-hidden-separator-hover-color"],headerSortBarColor:de["header-sort-bar-color"],headerReverseBarColor:de["header-reverse-bar-color"],headerBarCasingColor:de["header-bar-casing-color"],headerFont:de["header-font"],rowBackgroundColors:de["row-background-colors"],rowHoverBackgroundColor:de["row-hover-bg"],selectionColor:de["selection-color"],selectionOutlineColor:de["selection-outline-color"],selectionOutlineCasingColor:de["selection-outline-casing-color"],selectedRowHoverBackgroundColor:de["selected-row-hover-bg"],scrollBarBackgroundColor:de["scroll-bar-bg"],scrollBarHoverBackgroundColor:de["scroll-bar-hover-bg"],scrollBarCasingColor:de["scroll-bar-casing-color"],scrollBarCornerColor:de["scroll-bar-corner-color"],scrollBarColor:de["scroll-bar-color"],scrollBarHoverColor:de["scroll-bar-hover-color"],scrollBarActiveColor:de["scroll-bar-active-color"],scrollBarSelectionTickColor:de["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:de["scroll-bar-active-selection-tick-color"],textColor:de["text-color"],positiveNumberColor:de["positive-number-color"],negativeNumberColor:de["negative-number-color"],zeroNumberColor:de["zero-number-color"],dateColor:de["date-color"],pendingTextColor:de["pending-text-color"],errorTextColor:de["error-text-color"],nullStringColor:de["null-string-color"],filterBarActiveBackgroundColor:de["filter-bar-active-bg"],filterBarExpandedBackgroundColor:de["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:de["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:de["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:de["filter-bar-separator-color"],filterBarActiveColor:de["filter-bar-active-color"],filterBarErrorColor:de["filter-bar-error-color"],filterIconColor:de["filter-icon-color"],scrimColor:de["scrim-color"],contextMenuSortIconColor:de["context-menu-sort-icon-color"],contextMenuReverseIconColor:de["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:de["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(de["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(de["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:de["linker-column-hover-bg"],treeLineColor:de["tree-line-color"],treeMarkerColor:de["tree-marker-color"],treeMarkerHoverColor:de["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:de["floating-grid-row-color"],floatingRowBackgroundColors:de["floating-row-background-colors"],floatingDividerInnerColor:de["floating-divider-inner-color"],floatingDividerOuterColor:de["floating-divider-outer-color"],overflowButtonColor:de["overflow-button-color"],overflowButtonHoverColor:de["overflow-button-hover-color"]});const Fa=X.module("ColumnStatistics"),$T={SIZE:"Number of Rows"},nd=class extends w.exports.Component{constructor(t){super(t),this.handleError=this.handleError.bind(this),this.handleGenerateStatistics=this.handleGenerateStatistics.bind(this),this.handleStatistics=this.handleStatistics.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0}}static getStatsLabel(t){var e;return(e=$T[t])!=null?e:t.split(" ").map(n=>n[0].toUpperCase()+n.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}maybeGenerateStatistics(){const{model:t}=this.props,e=t.rowCount-t.pendingRowCount;this.setState({numRows:e}),t.isColumnStatisticsAvailable?e<nd.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:t,model:e}=this.props;this.cancelablePromise=ye.makeCancelable(e.columnStatistics(t)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(t){Fa.debug("Received statistics",t);const{model:e,onStatistics:n}=this.props,s=[];t.statisticsMap.forEach((i,o)=>{s.push({operation:nd.getStatsLabel(o),value:i,type:t.getType(o)})}),t.uniqueValues.forEach((i,o)=>{s.push({operation:o,className:"column-statistics-unique-value",value:i,type:"long"})}),this.setState({loading:!1,statistics:s,numRows:e.rowCount-e.pendingRowCount}),n()}handleError(t){if(t!=null&&ye.isCanceled(t)){Fa.debug("Called handleError on a cancelled promise result");return}Fa.error("Error generating statistics",t),this.setState({error:t,loading:!1,statistics:null})}render(){const{column:t,model:e}=this.props,{error:n,loading:s,statistics:i,numRows:o}=this.state,r=!s&&n==null&&i==null&&e.isColumnStatisticsAvailable,l=[],a=t.type.substring(t.type.lastIndexOf(".")+1),d=t.description===null?null:t.description;if(i!=null)for(let p=0;p<i.length;p+=1){const{operation:g,className:f,value:b,type:C}=i[p],S=C?e.displayString(b,C):e.displayString(b,t.type,t.name),v=T(Y.Fragment,{children:[h("div",{className:z("column-statistic-operation",f),children:g}),h("div",{className:"column-statistic-value",children:S})]},g);l.push(v)}const c=gt(e)&&e.hasExpandableRows?"Expanded Rows":"Number of Rows",u=e.displayString(o,"long"),m=e.getColumnIndexByName(t.name);return T("div",{className:"column-statistics",children:[T("div",{className:"column-statistics-title",children:[t.name,T("span",{className:"column-statistics-type",children:["\xA0(",a,")"]}),h(Pl,{className:"column-statistics-copy",tooltip:"Copy column name",copy:t.name})]}),d!=null&&h("div",{className:"column-statistics-description",children:d}),m!=null&&!e.isColumnMovable(m)&&T("div",{className:"column-statistics-status",children:[h(Z,{icon:e.isColumnFrozen(m)?tb:_C,className:"mr-1"}),e.isColumnFrozen(m)?"Frozen":"Not movable"]}),T("div",{className:"column-statistics-grid",children:[i==null&&T(we,{children:[h("div",{className:"column-statistic-operation",children:c}),h("div",{className:"column-statistic-value",children:u})]}),l]}),r&&h(W,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h("div",{className:"error-message",children:`${n}`}),i&&!s&&h(W,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h(Z,{icon:Md,className:"mr-1"}),children:"Refresh"}),s&&T("div",{className:"column-statistics-loading",children:[h(kn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let kp=nd;kp.AUTO_GENERATE_LIMIT=1e5;const $r=X.module("AdvancedFilterCreatorFilterItem");class nc extends w.exports.PureComponent{constructor(e){super(e),this.getCachedIsValid=Ce((o,r,l,a)=>{try{return!l||L.makeAdvancedValueFilter(o,r,l,a)!=null}catch{return!1}}),this.handleDelete=this.handleDelete.bind(this),this.handleTypeChange=this.handleTypeChange.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.typeDropdown=null;const{value:n="",filterTypes:s,selectedType:i=s[0]}=e;this.state={selectedType:i,value:n}}static getLabelForFilter(e,n){try{if(L.isNumberType(e)||L.isCharType(e))return Em(n);if(L.isTextType(e))return Tm(n);if(L.isDateType(e))return ym(n);if(L.isBooleanType(e))return n0(n);throw new Error(`Unrecognized column type: ${e}`)}catch(s){return $r.warn(s),""}}componentDidMount(){var e;(e=this.typeDropdown)==null||e.focus()}componentDidUpdate(e){const{value:n,selectedType:s}=this.props;s!==void 0&&e.selectedType!==s&&this.setState({selectedType:s}),n!==void 0&&e.value!==n&&this.setState({value:n})}handleTypeChange(e){const n=e.target.value;$r.debug2("typeChange",n),this.setState({selectedType:n});const{onChange:s}=this.props,{value:i}=this.state;i!=null&&i.length>0&&s(n,i)}handleValueChange(e){$r.debug2("valueChange");const{value:n}=e.target;this.setState({value:n});const{onChange:s}=this.props,{selectedType:i}=this.state;i!=null&&s(i,n)}handleDelete(){$r.debug("delete");const{onDelete:e}=this.props;e()}render(){const{column:e,filterTypes:n,formatter:s}=this.props,{selectedType:i,value:o}=this.state,r=!L.isBooleanType(e.type),l=[],a=this.getCachedIsValid(e,i,o,s.timeZone);for(let d=0;d<n.length;d+=1){const c=n[d],u=nc.getLabelForFilter(e.type,c),m=h("option",{value:c,children:u},c);l.push(m)}return h("div",{className:"advanced-filter-creator-filter-item",children:T("div",{className:"form-row",children:[h("div",{className:"form-group col",children:h("select",{className:"form-control custom-select",value:i,onChange:this.handleTypeChange,ref:d=>{this.typeDropdown=d},children:l})}),r&&h("div",{className:"form-group col",children:h("div",{className:"input-group",children:h("input",{type:"text",className:z("form-control",{error:!a}),placeholder:"Enter value",value:o,onChange:this.handleValueChange})})}),h("div",{className:"form-group col-1 px-0",children:h(W,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:hn,tooltip:"Remove Filter"})})]})})}}const Hh=X.module("AdvancedFilterCreatorSelectValueList"),sd=class extends w.exports.PureComponent{constructor(t){super(t),this.handleSelect=this.handleSelect.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.list=null;const{selectedValues:e}=this.props;this.state={itemCount:0,items:[],offset:0,selectedValues:e,isLoading:!0}}static indexOf(t,e){for(let n=0;n<e.length;n+=1){const s=e[n];if(s===t||s!=null&&s.valueOf!=null&&t!=null&&t.valueOf!=null&&s.valueOf()===t.valueOf())return n}return-1}componentDidMount(){const{table:t}=this.props;t&&this.startListening(t)}componentDidUpdate(t){const{filters:e,invertSelection:n,selectedValues:s,table:i}=this.props;t.table!==i&&(t.table&&this.stopListening(t.table),i&&this.startListening(i),this.resetViewport()),t.invertSelection!==n&&this.setState({selectedValues:[]},this.handleSelectionUpdate),t.selectedValues!==s&&this.setState({selectedValues:s},this.handleSelectionUpdate),t.filters!==e&&(i==null||i.applyFilter(e),this.resetViewport())}componentWillUnmount(){const{table:t}=this.props;t&&this.stopListening(t)}handleSelect(t,e){const{invertSelection:n}=this.props;let{selectedValues:s}=this.state;s=[...s];const i=sd.indexOf(e,s);i>=0?s.splice(i,1):s.push(e);let o=i<0;n&&(o=!o);const{offset:r}=this.state;let{items:l}=this.state;l=[...l];const a=t-r;a>=0&&a<l.length&&(l[a].isSelected=o),this.setState({items:l,selectedValues:s});const{onChange:d}=this.props;d(s,n)}handleViewportChange(t,e){this.updateViewport(t,e)}handleSelectionUpdate(){this.updateItemSelection()}handleTableUpdate(t){const{table:e,formatter:n}=this.props;if(!e)return;const s=t.detail,{offset:i}=s,o=[],r=e.columns[0];for(let a=0;a<s.rows.length;a+=1){const c=s.rows[a].get(r),u=n.getFormattedString(c,r.type,r.name),m=this.isValueSelected(c);o.push({displayValue:u,value:c,isSelected:m})}Hh.debug2("Received table update:",i,o.length);const l=e.size;this.setState({itemCount:l,items:o,offset:i,isLoading:!1})}isValueSelected(t){const{invertSelection:e}=this.props,{selectedValues:n}=this.state,s=sd.indexOf(t,n);return e?s<0:s>=0}startListening(t){t.addEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate)}stopListening(t){t.removeEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate)}resetViewport(){this.list&&this.list.topRow!=null&&this.list.bottomRow!=null&&this.updateViewport(this.list.topRow,this.list.bottomRow,!0)}updateItemSelection(){let{items:t}=this.state;t=[...t];for(let e=0;e<t.length;e+=1){const n=t[e],{value:s}=n;n.isSelected=this.isValueSelected(s)}this.setState({items:t})}updateViewport(t,e,n=!1){const{table:s}=this.props;if(s==null)return;n&&this.setState({isLoading:!0});const i=e-t+1,o=Math.max(0,t-i*3),r=Math.max(o,e+i*3);Hh.debug2("Setting viewport",o,",",r),s.setViewport(o,r)}render(){const{offset:t,isLoading:e,items:n,itemCount:s}=this.state;return T("div",{className:"select-value-list-wrapper",children:[h(tm,{itemCount:s,items:n,offset:t,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h(mt,{in:e,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"loading-list",children:h(kn,{className:"loading-spinner-large"})})})]})}};let Op=sd;Op.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{}};const Lp=class extends w.exports.PureComponent{constructor(t){super(t),this.handleSelectAllClick=this.handleSelectAllClick.bind(this),this.handleClearAllClick=this.handleClearAllClick.bind(this),this.handleListChange=this.handleListChange.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUpdateFilterTimeout=this.handleUpdateFilterTimeout.bind(this);const{invertSelection:e,selectedValues:n}=t;this.state={filters:[],invertSelection:e,selectedValues:n,searchText:""}}componentDidMount(){this.initSearchTable()}componentDidUpdate(t,e){const{invertSelection:n,selectedValues:s,table:i}=this.props;t.table!==i&&this.initSearchTable(),t.invertSelection!==n&&this.setState({invertSelection:n}),t.selectedValues!==s&&this.setState({selectedValues:s});const{table:o,searchText:r}=this.state;o!==e.table&&(e.table!=null&&e.table.close(),o!=null&&this.startUpdateFilterTimer()),r!==e.searchText&&this.startUpdateFilterTimer()}componentWillUnmount(){const{table:t}=this.state;t!=null&&t.close(),this.searchTablePromise=void 0,this.stopUpdateFilterTimer()}getColumnName(){const{table:t}=this.props;return t!=null?t.columns[0].name:""}getDisplayedValuesCount(){const{invertSelection:t,selectedValues:e,table:n}=this.state;return n==null?null:t?n.totalSize-e.length:e.length}getDisplayedValueText(){const t=this.getDisplayedValuesCount(),{table:e}=this.state,{formatter:n}=this.props;if(t!=null&&e!=null){const s=n.getFormattedString(t,"long"),i=n.getFormattedString(e.totalSize,"long");let o="";return t<1e6&&(o="Displaying "),`${o}${s} of ${i}`}return null}initSearchTable(){const{table:t}=this.props;if(t==null)return;const e=t.copy();this.searchTablePromise=e,this.searchTablePromise.then(n=>{this.searchTablePromise===e?(this.setState({table:n}),this.searchTablePromise=void 0):n.close()})}handleListChange(t,e){this.setState({selectedValues:t,invertSelection:e});const{onChange:n}=this.props;n(t,e)}handleSearchChange(t){const e=t.target.value;this.setState({searchText:e})}handleSelectAllClick(){this.resetSelection(!0)}handleClearAllClick(){this.resetSelection(!1)}handleUpdateFilterTimeout(){this.updateFilterTimer=void 0,this.updateTableFilter()}resetSelection(t){const e=[];this.setState({invertSelection:t,selectedValues:e});const{onChange:n}=this.props;n(e,t)}startUpdateFilterTimer(){this.stopUpdateFilterTimer(),this.updateFilterTimer=setTimeout(this.handleUpdateFilterTimeout,Lp.searchDebounceTime)}stopUpdateFilterTimer(){this.updateFilterTimer!=null&&(clearTimeout(this.updateFilterTimer),this.updateFilterTimer=void 0)}updateTableFilter(){const{table:t,searchText:e}=this.state,{timeZone:n}=this.props,s=t==null?void 0:t.columns[0],i=[];if(s==null)return;let o;if(e.length>0){let r=null;L.isCharType(s.type)?r=L.makeQuickFilter(s,e):L.isTextType(s.type)?r=L.makeQuickFilter(s,`~${e}`,n):r=L.makeQuickFilter(s,`>=${e}`,n),r!=null?i.push(r):o="Invalid search text"}this.setState({filters:i,error:o})}render(){const{error:t,filters:e,invertSelection:n,selectedValues:s,searchText:i,table:o}=this.state,{formatter:r,showSearch:l}=this.props,a=this.getColumnName(),d=this.getDisplayedValueText(),c=a?`Find ${a}...`:"";return T("div",{className:"advanced-filter-creator-select-value",children:[T("div",{className:l?"form-group":"",children:[h("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),l&&h("input",{type:"text",className:z("form-control",{"is-invalid":t!=null}),id:"advanced-filter-creator-select-value-input",placeholder:c,value:i,onChange:this.handleSearchChange})]}),h(Op,{table:o,filters:e,invertSelection:n,selectedValues:s,formatter:r,onChange:this.handleListChange}),T("div",{className:"advanced-filter-creator-select-meta-row",children:[T("div",{children:[h(W,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h(W,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h(mt,{in:d!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"row-count-info",children:d})})]})]})}};let sc=Lp;sc.searchDebounceTime=250;sc.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0};const Fo=X.module("AdvancedFilterCreator"),ri=class extends w.exports.PureComponent{constructor(t){var r,l;super(t),this.getFilterTypes=Ce(a=>L.getFilterTypes(a)),this.handleAddAnd=this.handleAddAnd.bind(this),this.handleAddOr=this.handleAddOr.bind(this),this.handleChangeFilterOperator=this.handleChangeFilterOperator.bind(this),this.handleDone=this.handleDone.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterDelete=this.handleFilterDelete.bind(this),this.handleSelectValueChange=this.handleSelectValueChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSortDown=this.handleSortDown.bind(this),this.handleSortUp=this.handleSortUp.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleFocusTrapStart=this.handleFocusTrapStart.bind(this),this.handleFocusTrapEnd=this.handleFocusTrapEnd.bind(this),this.handleUpdateTimeout=this.handleUpdateTimeout.bind(this),this.focusTrapContainer=Y.createRef();const{options:e}=t;let{filterOperators:n,invertSelection:s,selectedValues:i}=e;const o=(l=(r=e.filterItems)==null?void 0:r.map(({selectedType:a,value:d})=>({selectedType:a,value:d,key:$e()})))!=null?l:[];o.length===0&&o.push(ri.makeFilterItem()),n==null&&(n=[]),s==null&&(s=!0),i==null&&(i=[]),this.state={filterItems:o,filterOperators:n,invertSelection:s,selectedValues:i,valuesTableError:null,valuesTable:void 0}}static makeFilterItem(){return{key:$e()}}componentDidMount(){this.initValuesTable()}componentWillUnmount(){this.debounceTimeout!=null&&(clearTimeout(this.debounceTimeout),this.sendUpdate()),this.valuesTablePromise!=null&&this.valuesTablePromise.cancel()}getFilterChangeHandler(t){return this.handleFilterChange.bind(this,t)}getFilterDeleteHandler(t){return this.handleFilterDelete.bind(this,t)}initValuesTable(){const{model:t,column:e}=this.props;if(!t.isValuesTableAvailable){Fo.debug("No values table for this model, just ignore");return}this.valuesTablePromise=L.makeCancelableTablePromise(t.valuesTable(e)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{ye.isCanceled(n)||(Fo.error("Unable to open values table",n),this.setState({valuesTableError:n}))})}handleFocusTrapEnd(){var t,e;((e=(t=this.focusTrapContainer)==null?void 0:t.current)==null?void 0:e.querySelector("button,select,input,textarea")).focus()}handleFocusTrapStart(){var e,n;const t=(n=(e=this.focusTrapContainer)==null?void 0:e.current)==null?void 0:n.querySelectorAll("button,select,input,textarea");t&&t.length>0&&t[t.length-1].focus()}handleAddAnd(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(ri.makeFilterItem()),e=e.concat(Xt.and),this.setState({filterItems:t,filterOperators:e})}handleAddOr(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(ri.makeFilterItem()),e=e.concat(Xt.or),this.setState({filterItems:t,filterOperators:e})}handleChangeFilterOperator(t,e){let{filterOperators:n}=this.state;n=[...n],t0(e),n[t]=e,this.setState({filterOperators:n}),this.startUpdateTimer()}handleFilterChange(t,e,n){let{filterItems:s}=this.state;s=[...s];const{key:i}=s[t];s[t]={key:i,selectedType:e,value:n},this.setState({filterItems:s}),this.startUpdateTimer()}handleFilterDelete(t){let{filterItems:e,filterOperators:n}=this.state;e=[...e],n=[...n],t<e.length&&e.splice(t,1),t<n.length?n.splice(t,1):t===n.length&&n.splice(n.length-1,1),e.length===0&&e.push(ri.makeFilterItem()),this.setState({filterItems:e,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(t,e){this.setState({selectedValues:t,invertSelection:e}),this.startUpdateTimer()}handleReset(){Fo.debug("Resetting Advanced Filter"),this.setState({filterItems:[ri.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(t){const e=We.isModifierKeyDown(t);this.sortTable(L.sortDirection.descending,e)}handleSortUp(t){const e=We.isModifierKeyDown(t);this.sortTable(L.sortDirection.ascending,e)}handleSubmit(t){Fo.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),t.preventDefault()}handleDone(t){Fo.debug("Submitting and Closing Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate();const{onDone:e}=this.props;e(),t.preventDefault()}handleUpdateTimeout(){this.debounceTimeout=void 0,this.sendUpdate()}shouldShowAddFilter(){const{filterItems:t}=this.state;if(t.length===0)return!1;const e=t[t.length-1],{selectedType:n,value:s}=e;return n!=null&&n.length>0&&s!=null&&s.length>0}sortTable(t,e=!1){const{column:n,onSortChange:s}=this.props;s(n,t,e)}startUpdateTimer(){this.stopUpdateTimer(),this.debounceTimeout=setTimeout(this.handleUpdateTimeout,ri.debounceFilterUpdate)}stopUpdateTimer(){this.debounceTimeout!==void 0&&(clearTimeout(this.debounceTimeout),this.debounceTimeout=void 0)}sendUpdate(){const{filterItems:t,filterOperators:e,invertSelection:n,selectedValues:s}=this.state,{column:i,onFilterChange:o,model:r}=this.props,{formatter:l}=r,a=t.filter(({selectedType:m,value:p})=>m!=null&&p!=null&&p!==""),d=e.filter((m,p)=>m!=null&&t[p].selectedType!=null&&t[p].value!=null&&t[p].value!=="").slice(0,a.length-1),c={filterItems:a,filterOperators:d,invertSelection:n,selectedValues:s},u=L.makeAdvancedFilter(i,c,l.timeZone);o(i,u,c)}render(){const{column:t,model:e,sortDirection:n,formatter:s}=this.props,{filterItems:i,filterOperators:o,invertSelection:r,selectedValues:l,valuesTable:a,valuesTableError:d}=this.state,{isValuesTableAvailable:c}=e,u=L.isBooleanType(t.type),m=L.isDateType(t.type),p=this.getFilterTypes(t.type),g=t.type.substring(t.type.lastIndexOf(".")+1),f=[];if(!u&&p.length)for(let S=0;S<i.length;S+=1){const v=i[S],{key:y,selectedType:E,value:I}=v,R=h(nc,{column:t,filterTypes:p,onChange:this.getFilterChangeHandler(S),onDelete:this.getFilterDeleteHandler(S),selectedType:E,value:I,formatter:s},y);if(f.push(R),S<o.length){const F=o[S]===Xt.and,B=T("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h(W,{kind:"ghost",className:z("filter-operator",{active:F}),onClick:()=>this.handleChangeFilterOperator(S,Xt.and),children:"AND"}),h(W,{kind:"ghost",className:z("filter-operator",{active:!F}),onClick:()=>this.handleChangeFilterOperator(S,Xt.or),children:"OR"})]},`filterOperator${y}`);f.push(B)}}const b=this.shouldShowAddFilter(),C=T("div",{className:z("form-row justify-content-end add-filter-item",{hidden:!b}),children:[h("span",{className:"text-muted",children:h(Z,{icon:zs})}),h(W,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!b,tooltip:"Add filter with AND",children:"AND"}),h(W,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!b,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return f.push(C),T("div",{className:"advanced-filter-creator",role:"presentation",children:[h("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),T("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[T("div",{className:"title-bar",children:[h("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),T("div",{className:"advanced-filter-menu-buttons",children:[h(W,{kind:"ghost",className:z("sort-operator",{active:n===L.sortDirection.descending}),onClick:this.handleSortDown,icon:Gc,tooltip:`Sort ${t.name} Descending`}),h(W,{kind:"ghost",className:z("sort-operator",{active:n===L.sortDirection.ascending}),onClick:this.handleSortUp,icon:h(Z,{icon:Gc,rotation:180}),tooltip:`Sort ${t.name} Ascending`})]})]}),h("hr",{}),T("div",{className:"advanced-filter-column-name",children:[t.name,"\xA0",T("span",{className:"column-type",children:["(",g,")"]})]}),f,c&&d==null&&T(we,{children:[!u&&h("hr",{}),h("div",{className:"form-group",children:h(sc,{table:a,onChange:this.handleSelectValueChange,invertSelection:r,selectedValues:l,formatter:s,showSearch:!m,timeZone:s.timeZone})})]}),T("div",{className:"form-row justify-content-end",children:[h(W,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h(W,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let ic=ri;ic.debounceFilterUpdate=250;ic.defaultProps={options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null};const Uh=X.module("Aggregations"),WT=[Oe.SUM,Oe.ABS_SUM,Oe.MIN,Oe.MAX,Oe.VAR,Oe.AVG,Oe.STD,Oe.FIRST,Oe.LAST,Oe.COUNT_DISTINCT,Oe.DISTINCT,Oe.COUNT,Oe.UNIQUE];function zT({isRollup:t,settings:e,onChange:n,onEdit:s}){const{aggregations:i,showOnTop:o}=e,r=w.exports.useMemo(()=>WT.filter(F=>!i.some(B=>B.operation===F)),[i]),[l,a]=w.exports.useState(r[0]),[d,c]=w.exports.useState([]),u=w.exports.useCallback(F=>{n({...e,...F})},[n,e]),m=w.exports.useCallback(F=>{u({aggregations:F})},[u]),p=w.exports.useCallback(F=>{u({showOnTop:F})},[u]),g=w.exports.useCallback(()=>{Uh.debug("handleDragStart"),jt.startDragging()},[]),f=w.exports.useCallback(({destination:F,source:B})=>{if(Uh.debug("handleDragEnd",F,B),jt.stopDragging(),F===null)return;let U=F.index;B.index<F.index&&(U+=1);const x=[...i],H=jt.reorder(x,d,x,U),A=jt.adjustDestinationIndex(U,d),O=[[A,A+H.length-1]];m(x),c(O)},[m,i,d,c]),b=w.exports.useCallback(F=>{a(F)},[a]),C=w.exports.useCallback(()=>{m([...i,{operation:l,selected:[],invert:!0}])},[i,l,m]),S=w.exports.useCallback(F=>{m(i.filter((B,U)=>U!==F))},[i,m]),v=w.exports.useCallback(F=>{c(F)},[c]),y=w.exports.useCallback(F=>{const B=i[F];$s.isRollupOperation(B.operation)||s(B)},[i,s]),E=w.exports.useCallback(F=>{p(F.target.value==="true")},[p]);w.exports.useEffect(function(){r.length>0&&!r.includes(l)&&a(r[0])},[r,l]);const I=w.exports.useCallback(({item:F,itemIndex:B,isClone:U=!1,selectedCount:x})=>{const H=F.operation,A=U?`${x}`:void 0,O=U?"item-list-item-clone":void 0,_=$s.isRollupOperation(F.operation),k=!U&&!_;return T(we,{children:[T("div",{className:z("item-list-item-content","draggable-item-list-item-content",O),children:[T("span",{className:"title",children:[H,!t&&_&&T("span",{className:"small text-warning",children:[h(Z,{icon:Lu})," Requires rollup"]})]}),sn.renderBadge({text:A}),sn.renderHandle()]}),!U&&T(we,{children:[h(W,{kind:"ghost",className:"btn-edit",icon:ir,tooltip:"Edit Columns",onClick:()=>s(F),disabled:!k}),h(W,{kind:"ghost",className:"btn-delete",icon:hn,tooltip:"Delete Aggregation",onClick:()=>S(B)})]})]})},[S,s,t]),R=r.length>0,N=i.length>0;return T("div",{className:"aggregations",children:[R&&T("div",{className:"form-inline",children:[h(zb,{onChange:b,value:l,children:r.map(F=>h(Wb,{value:F,children:F},F))}),T("button",{type:"button",className:"btn btn-link btn-add",onClick:C,children:[h(Z,{icon:zs}),"Add Aggregation"]})]}),R&&N&&h("hr",{}),N&&T(we,{children:[!t&&T("div",{className:"form-inline",children:[h("label",{children:"Placement:\xA0"}),T(Vl,{onChange:E,value:`${o}`,children:[h(Fn,{value:"true",children:"Top"}),h(Fn,{value:"false",children:"Bottom"})]})]}),h(_l,{onDragStart:g,onDragEnd:f,children:h(sn,{className:"selected-aggregations",itemCount:i.length,items:i,renderItem:I,offset:0,onSelectionChange:v,onSelect:y,selectedRanges:d,isMultiSelect:!0})})]})]})}const GT=30;function KT({aggregation:t,columns:e,onChange:n}){const[s,i]=w.exports.useState(-1),[o,r]=w.exports.useState(-1),[l,a]=w.exports.useState(0),{invert:d,selected:c}=t,u=w.exports.useRef(null),m=w.exports.useCallback(E=>c.includes(E)?!d:d,[d,c]),p=w.exports.useMemo(()=>{let E=tc(e,t.operation);return l!==0&&(E=L.sortColumns(E,l===1)),E},[e,t.operation,l]),g=w.exports.useMemo(()=>s>=0?p.slice(s,o+1).map(E=>({value:E.name,displayValue:E.name,isSelected:m(E.name)})):[],[p,m,o,s]),f=w.exports.useCallback(E=>{const{name:I}=p[E],R=c.indexOf(I);let N=[...c],F=d;R>=0?N.splice(R,1):(N.push(I),N.length===p.length&&(N=[],F=!d)),n({...t,selected:N,invert:F})},[t,d,p,c,n]),b=w.exports.useCallback(()=>{a(0),n({...t,selected:[],invert:!0})},[t,n]),C=w.exports.useCallback((E,I)=>{i(E),r(I)},[i,r]),S=w.exports.useCallback(()=>{c.length===0?n({...t,invert:!d}):n({...t,selected:[],invert:!0})},[t,d,n,c]),v=c.length===0?d:null,y=c.length!==0||!d||l!==0;return T("div",{role:"menu",className:"aggregation-edit",children:[h("div",{className:"top-menu",children:T("div",{className:"form-inline",children:[h(St,{checked:v,onChange:S,children:"Toggle All"}),h("div",{className:"spacer"}),h(mt,{in:y,timeout:Be.transitionSlowMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(W,{kind:"ghost",className:"btn-reset",onClick:b,children:"Reset"})}),h(W,{kind:"ghost",className:z({active:l===1}),icon:Nd,tooltip:"Sort ascending",onClick:()=>a(1)}),h(W,{kind:"ghost",className:z({active:l===2}),icon:Fd,tooltip:"Sort descending",onClick:()=>a(2)})]})}),h("div",{className:"aggregation-edit-item-list",children:h(wn,{itemCount:p.length,items:g,offset:s,renderItem:({item:E})=>h(St,{checked:m(E.value),children:E.displayValue}),onSelect:f,onViewportChange:C,rowHeight:GT,focusSelector:"input",ref:u})})]})}function qT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#7DA4FF",d:"M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z"})]})})}function YT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#7DA4FF",d:"M7 34h4v8H7zM12 31h4v11h-4zM17 27h4v15h-4zM22 22h4v20h-4zM27 27h4v15h-4zM32 29h4v13h-4zM37 31h4v11h-4z"})]})})}function XT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M4 4h1v40H4zM44 43v1H5v-1z"}),h("path",{stroke:"#7DA4FF",d:"M7.984 32.44l7.982-11.378 5.273 3.739 9.952-10.838 2.826 1.894 7.45-5.802"}),h("path",{stroke:"#BECDEF",d:"M8.244 37.926L17 33.496l5 .87 10.637-10.35 10.615-1.381"})]})})}function jT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{d:"M24 10c7.732 0 14 6.268 14 14s-6.268 14-14 14-14-6.268-14-14h14V10z",fill:"#80A6FF"}),h("path",{d:"M10 24c0-7.732 6.268-14 14-14v14H10z",fill:"#C1C0C0"})]})})}function ZT(t){return h("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...t,children:T("g",{fill:"none",fillRule:"evenodd",children:[h("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h("path",{fill:"#939293",d:"M44 34v1H4v-1zM44 25v1H4v-1zM44 16v1H4v-1z"}),h("circle",{fill:"#7DA4FF",cx:9.5,cy:37.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:16.5,cy:30.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:22.5,cy:36.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:28.5,cy:30.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:15.5,cy:38.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:23.5,cy:25.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:19.5,cy:19.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:29.5,cy:19.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:32.5,cy:26.5,r:1.5}),h("circle",{fill:"#7DA4FF",cx:36.5,cy:13.5,r:1.5})]})})}function QT(t){return T("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[h("rect",{width:"48",height:"48",fill:"none"}),h("rect",{x:"26",y:"10",width:"15",height:"4",fill:"#9FDE70"}),h("rect",{x:"26",y:"22",width:"15",height:"4",fill:"#9FDE70"}),h("rect",{x:"26",y:"28",width:"15",height:"4",fill:"#FFD95C"}),h("rect",{x:"26",y:"34",width:"15",height:"4",fill:"#9FDE70"})]})}function JT(t){return T("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[h("rect",{width:"48",height:"48",fill:"none"}),h("rect",{x:"4",y:"16",width:"40",height:"4",fill:"#FFD95C"}),h("rect",{x:"4",y:"10",width:"40",height:"4",fill:"#78DCE8"}),h("rect",{x:"4",y:"34",width:"40",height:"4",fill:"#78DCE8"})]})}const Vh=X.module("ChartBuilder"),Ct=class extends w.exports.PureComponent{static getTypeName(t){switch(t){case M.plot.SeriesPlotStyle.LINE:return"Line";case M.plot.SeriesPlotStyle.BAR:return"Bar";case M.plot.SeriesPlotStyle.SCATTER:return"Scatter";case M.plot.SeriesPlotStyle.PIE:return"Pie";case M.plot.SeriesPlotStyle.HISTOGRAM:return"Histogram";default:return t}}static getTypeIcon(t){switch(t){case M.plot.SeriesPlotStyle.LINE:return h(XT,{});case M.plot.SeriesPlotStyle.BAR:return h(qT,{});case M.plot.SeriesPlotStyle.SCATTER:return h(ZT,{});case M.plot.SeriesPlotStyle.PIE:return h(jT,{});case M.plot.SeriesPlotStyle.HISTOGRAM:return h(YT,{});default:return null}}static getMaxSeriesCount(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return 1;case M.plot.SeriesPlotStyle.HISTOGRAM:return 0;default:return 100}}static getXAxisLabel(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return"Labels";case M.plot.SeriesPlotStyle.HISTOGRAM:return"Data";default:return"X-Axis"}}static getSeriesLabel(t){switch(t){case M.plot.SeriesPlotStyle.PIE:return"Values";default:return"Series"}}static makeSeriesItem(t){return{id:$e.generate(),value:t}}static makeDefaultSeriesItems(t,e){if(Ct.getMaxSeriesCount(t)===0||e==null||e.length===0)return[];const s=e.length>1?e[1].name:e[0].name;return[Ct.makeSeriesItem(s)]}static getDefaultXAxis(t,e){return e!=null&&e.length>0?e[0].name:null}constructor(t){super(t),this.handleAddSeries=this.handleAddSeries.bind(this),this.handleLinkStateChange=this.handleLinkStateChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSeriesChange=this.handleSeriesChange.bind(this),this.handleSeriesDeleteClick=this.handleSeriesDeleteClick.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleTypeClick=this.handleTypeClick.bind(this),this.handleXAxisChange=this.handleXAxisChange.bind(this),this.sendChange=this.sendChange.bind(this);const{model:e}=t,{columns:n}=e,s=Ct.types[0],i=Ct.getDefaultXAxis(s,n),o=Ct.makeDefaultSeriesItems(s,n);this.state={type:s,seriesItems:o,xAxis:i,isLinked:!0}}handleAddSeries(){this.setState(t=>{let{seriesItems:e}=t;e=[...e];const{model:n}=this.props,{columns:s}=n;return e.push({id:$e.generate(),value:s[0].name}),{seriesItems:e}},this.sendChange)}handleLinkStateChange(t){this.setState({isLinked:t.target.value==="true"},this.sendChange)}handleReset(){const{model:t}=this.props,{columns:e}=t,n=Ct.types[0],s=Ct.getDefaultXAxis(n,e),i=Ct.makeDefaultSeriesItems(n,e),o=!0;this.setState({type:n,seriesItems:i,xAxis:s,isLinked:o},this.sendChange)}handleSeriesChange(t){const{value:e}=t.target,n=t.target.getAttribute("data-index"),s=parseInt(n,10);this.setState(i=>{let{seriesItems:o}=i;return o=[...o],o[s].value=e,{seriesItems:o}},this.sendChange)}handleSeriesDeleteClick(t){const n=t.target.getAttribute("data-index"),s=parseInt(n,10);this.setState(i=>{let{seriesItems:o}=i;return o=[...o],o.splice(s,1),{seriesItems:o}},this.sendChange)}handleSubmit(t){t.preventDefault();const{onSubmit:e}=this.props,{type:n,seriesItems:s,xAxis:i,isLinked:o}=this.state,r=s.map(l=>l.value);e({type:`${n}`,series:r,xAxis:i,isLinked:o})}handleTypeClick(t){const n=t.target.getAttribute("data-index"),s=parseInt(n,10),i=Ct.types[s];Vh.debug2("handleTypeSelect",i),this.setState(o=>{const r=Ct.getMaxSeriesCount(i);let{seriesItems:l}=o;if(l=l.slice(0,r),l.length===0&&r>0){const{model:a}=this.props,{columns:d}=a;l=Ct.makeDefaultSeriesItems(i,d)}return{type:i,seriesItems:l}},this.sendChange)}handleXAxisChange(t){const e=t.target.value;Vh.debug2("x-axis change",e),this.setState({xAxis:e},this.sendChange)}sendChange(){const{onChange:t}=this.props,{isLinked:e,type:n,seriesItems:s,xAxis:i}=this.state,o=s.map(r=>r.value);t({type:n,series:o,xAxis:i,isLinked:e})}render(){const{model:t}=this.props,{columns:e}=t,{seriesItems:n,type:s,xAxis:i,isLinked:o}=this.state,r=Ct.getMaxSeriesCount(s),l=Ct.getXAxisLabel(s),a=Ct.getSeriesLabel(s),d=n.length>0,c=n.length<r;return h("div",{className:"chart-builder",children:T("form",{onSubmit:this.handleSubmit,children:[T("div",{className:"form-row",children:[h("label",{children:"Select Chart Type"}),h("div",{className:"form-row",children:Ct.types.map((u,m)=>{const p=u;return h("div",{className:"col col-chart-type",children:T("button",{type:"button",className:z("btn","btn-icon","btn-chart-type",{active:u===s}),"data-index":m,onClick:this.handleTypeClick,children:[Ct.getTypeIcon(u),Ct.getTypeName(u)]})},p)})})]}),h("hr",{}),T("div",{className:"form-row form-inline",children:[h("label",{className:"col-2 label-left",children:l}),h("select",{className:"form-control custom-select select-x-axis col",value:i,onChange:this.handleXAxisChange,children:e.map(u=>h("option",{value:u.name,children:u.name},u.name))})]}),d&&h("hr",{}),n.map((u,m)=>T("div",{className:"form-row form-inline form-series-item","data-testid":`form-series-item-${m}`,children:[h("label",{className:"col-2 label-left",children:m===0?a:""}),h("select",{className:"form-control custom-select select-series col",value:u.value,onChange:this.handleSeriesChange,"data-testid":`select-series-item-${m}`,"data-index":m,children:e.map(p=>h("option",{value:p.name,"data-index":m,children:p.name},p.name))}),n.length>1&&h(W,{kind:"ghost",className:"btn-delete-series ml-2 px-2","data-index":m,"data-testid":`delete-series-${m}`,onClick:this.handleSeriesDeleteClick,icon:hn,tooltip:"Delete"})]},u.id)),c&&T("div",{className:"form-row",children:[h("div",{className:"col-2"}),h(W,{kind:"ghost",className:"btn-add-series mt-1",onClick:this.handleAddSeries,icon:zs,children:"Add Series"})]}),T("div",{className:"form-row chart-builder-link",children:[h("label",{className:"col-2 label-right",children:T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:_d,icon:Zi,transform:"right-5 down-5"}),h(Z,{icon:o?yd:pb,transform:"grow-2 right-8 down-6"})]})}),T(Vl,{onChange:this.handleLinkStateChange,value:`${o}`,children:[h(Fn,{value:"true",children:"Sync State"}),h(Fn,{value:"false",children:"Freeze State"})]})]}),T("div",{className:"form-row",children:[h("div",{className:"col-2 label-right"}),h("div",{className:"col chart-builder-link-info",children:o?"Charts with synced state will update to match any filters or user modifications applied to the parent table.":"Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied."})]}),T("div",{className:z("form-row","justify-content-end","my-3"),children:[h(W,{kind:"secondary",className:"btn-reset",onClick:this.handleReset,children:"Reset"}),h(W,{kind:"primary",type:"submit",className:"btn-submit",children:"Create"})]})]})})}};let Ap=Ct;Ap.types=[M.plot.SeriesPlotStyle.LINE,M.plot.SeriesPlotStyle.BAR,M.plot.SeriesPlotStyle.SCATTER,M.plot.SeriesPlotStyle.PIE];class Pp extends w.exports.Component{constructor(e){super(e),this.handleContentChanged=this.handleContentChanged.bind(this),this.handleEditorFocus=this.handleEditorFocus.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleContainerClick=this.handleContainerClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.state={isEditorFocused:!1,isEditorEmpty:!0},this.editorContainer=null}componentDidMount(){this.initEditor()}componentWillUnmount(){this.destroyEditor()}initEditor(){var i;const{value:e,editorSettings:n}=this.props,s={copyWithSyntaxHighlighting:"false",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"groovyDB",lineDecorationsWidth:8,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,padding:{top:6,bottom:6},tabCompletion:"off",useTabStops:!0,value:e,wordWrap:"on",automaticLayout:!0,...n};if(!this.editorContainer)throw new Error("editorContainer is null");this.editor=ps.create(this.editorContainer,s),this.editor.layout(),(i=this.editor.getModel())==null||i.updateOptions({tabSize:0}),this.editor.onDidChangeModelContent(this.handleContentChanged),this.editor.onDidFocusEditorText(this.handleEditorFocus),this.editor.onDidBlurEditorText(this.handleEditorBlur)}destroyEditor(){var e;(e=this.editor)==null||e.dispose(),this.editor=void 0}handleContentChanged(){var s,i;const{onContentChanged:e}=this.props,n=(i=(s=this.editor)==null?void 0:s.getModel())==null?void 0:i.getValue();n!==""&&n!==void 0&&this.setState({isEditorEmpty:n.length===0}),e(n)}handleEditorFocus(){this.setState({isEditorFocused:!0})}handleEditorBlur(){var n,s;const e=(s=(n=this.editor)==null?void 0:n.getModel())==null?void 0:s.getValue();if(e===void 0||e==="")throw new Error("value is undefined");this.setState({isEditorEmpty:e.length===0,isEditorFocused:!1})}handleContainerClick(){var n;const{isEditorFocused:e}=this.state;e||(n=this.editor)==null||n.focus()}handleKeyDown(e){const{onTab:n,editorIndex:s}=this.props;e.key==="Tab"&&n(s,e.shiftKey)}render(){const{value:e,invalid:n}=this.props,{isEditorFocused:s,isEditorEmpty:i}=this.state;return T("div",{className:z("input-editor-wrapper",{focused:s,invalid:n}),onKeyDown:this.handleKeyDown,role:"presentation",onClick:this.handleContainerClick,children:[h("div",{className:"editor-container",ref:o=>{this.editorContainer=o}}),i&&!e&&h("div",{className:"editor-placeholder text-muted",children:"Column Formula"})]})}}Pp.defaultProps={value:"",onContentChanged:()=>{},editorSettings:{},editorIndex:0,onTab:()=>{},invalid:!1};const id=class extends w.exports.PureComponent{constructor(t){super(t),this.handleFormulaEditorContentChanged=this.handleFormulaEditorContentChanged.bind(this)}handleFormulaEditorContentChanged(t){const{onChange:e,eventKey:n}=this.props;t!==void 0&&t!==""&&(t.replace(/(\r\n|\n|\r)/gm,""),e(n,id.INPUT_TYPE.FORMULA,t))}render(){const{eventKey:t,name:e,formula:n,onChange:s,onDeleteColumn:i,inputIndex:o,onTabInEditor:r,invalid:l}=this.props;return h(Cd,{draggableId:t,index:o,disableInteractiveElementBlocking:!0,children:(a,d)=>T("div",{className:z("draggable-container",{dragging:d.isDragging}),ref:a.innerRef,...a.draggableProps,children:[T("div",{className:"custom-column-input-container",children:[T("div",{className:"d-flex flex-row pb-3 custom-column-name",children:[h("input",{className:z("form-control custom-column-input",{"is-invalid":l}),placeholder:"Column Name",value:e,onChange:c=>{s(t,id.INPUT_TYPE.NAME,c.target.value)}}),h(W,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{i(t)},icon:hn,tooltip:"Delete custom column"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",...a.dragHandleProps,children:[h(ze,{children:"Drag column to re-order"}),h(Z,{icon:rr})]})]}),h(Pp,{editorSettings:{language:"deephavenDb"},editorIndex:o,value:n,onContentChanged:this.handleFormulaEditorContentChanged,onTab:r,invalid:l})]}),h("hr",{})]})})}};let oc=id;oc.INPUT_TYPE={NAME:"name",FORMULA:"formula"};oc.defaultProps={name:"",inputIndex:0,formula:"",onChange:()=>{},onDeleteColumn:()=>{},onTabInEditor:()=>{},invalid:!1};class Se extends Tp{constructor(){super(),this.listenerCount=0}addEventListener(e,n,s){super.addEventListener(e,n,s),this.listenerCount+=1,this.listenerCount===1&&this.startListening()}removeEventListener(e,n,s){super.removeEventListener(e,n,s),this.listenerCount-=1,this.listenerCount===0&&this.stopListening()}startListening(){}stopListening(){}get originalColumns(){return this.columns}get layoutHints(){return null}get frontColumns(){return[]}get backColumns(){return[]}get frozenColumns(){return[]}isColumnFrozen(e){return!1}get isFilterRequired(){return!1}get isReversible(){return!0}get isColumnStatisticsAvailable(){return!1}get description(){return""}get isCustomColumnsAvailable(){return!1}get isFormatColumnsAvailable(){return!1}get isExportAvailable(){return!1}get isValuesTableAvailable(){return!1}get isChartBuilderAvailable(){return!1}get isRollupAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isTotalsAvailable(){return!1}isFilterable(e){return!1}close(){}isRowMovable(){return!1}}Se.EVENT=Object.freeze({UPDATED:"UPDATED",FORMATTER_UPDATED:"FORMATTER_UPDATED",REQUEST_FAILED:"REQUEST_FAILED",COLUMNS_CHANGED:"COLUMNS_CHANGED",TABLE_CHANGED:"TABLE_CHANGED",FILTERS_CHANGED:"FILTERS_CHANGED",SORTS_CHANGED:"SORTS_CHANGED",DISCONNECT:"DISCONNECT",RECONNECT:"RECONNECT",TOTALS_UPDATED:"TOTALS_UPDATED",PENDING_DATA_UPDATED:"PENDING_DATA_UPDATED"});const Vi=class extends w.exports.Component{constructor(t){super(t),this.getInput=Ce((e,n)=>e.find(s=>s.eventKey===n)),this.getInputIndex=Ce((e,n)=>e.findIndex(s=>s.eventKey===n)),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleSaveClick=this.handleSaveClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleCustomColumnUpdated=this.handleCustomColumnUpdated.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.resetRequestFailed=this.resetRequestFailed.bind(this),this.handleEditorTabNavigation=this.handleEditorTabNavigation.bind(this),this.state={inputs:[],isCustomColumnApplying:!1,errorMessage:null,hasRequestFailed:!1,isSuccessShowing:!1},this.container=null,this.successButtonTimer=null}static makeCustomColumnInputEventKey(){return $e.generate()}static createCustomColumnInput(){return{eventKey:$e.generate(),name:"",formula:""}}componentDidMount(){const{customColumns:t}=this.props;this.parseCustomColumns(t),this.startListening()}componentWillUnmount(){this.stopListening(),this.successButtonTimer&&clearTimeout(this.successButtonTimer)}resetErrorMessage(){this.setState({errorMessage:null})}startListening(){const{model:t}=this.props;t.addEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),t.addEventListener(Se.EVENT.UPDATED,this.handleCustomColumnUpdated),t.addEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed)}stopListening(){const{model:t}=this.props;t.removeEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),t.removeEventListener(Se.EVENT.UPDATED,this.handleCustomColumnUpdated),t.removeEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed)}parseCustomColumns(t){if(t.length>0){const e=t.map(n=>{const s=n.split(/=(.+)/,2);return{eventKey:Vi.makeCustomColumnInputEventKey(),name:s[0],formula:s[1]}});this.setState({inputs:e})}else this.setState({inputs:[Vi.createCustomColumnInput()]})}handleAddColumnClick(){const{inputs:t}=this.state,e=[...t];e.push(Vi.createCustomColumnInput()),this.setState({inputs:e})}handleDeleteColumn(t){const{inputs:e}=this.state,n=this.getInputIndex(e,t),s=[...e];s.splice(n,1),s.length===0&&s.push(Vi.createCustomColumnInput()),this.setState({inputs:s})}handleInputChange(t,e,n){const{inputs:s}=this.state,i=this.getInputIndex(s,t),r={...this.getInput(s,t)};r[e]=n;const l=[...s];l.splice(i,1,r),this.setState({inputs:l})}handleCustomColumnUpdated(){const{isCustomColumnApplying:t}=this.state;!t||this.setState({isCustomColumnApplying:!1,isSuccessShowing:!0},()=>{this.successButtonTimer=setTimeout(()=>this.setState({isSuccessShowing:!1}),Vi.SUCCESS_SHOW_DURATION)})}handleRequestFailed(t){const e=t,{isCustomColumnApplying:n}=this.state;!n||this.setState({isCustomColumnApplying:!1,errorMessage:T(we,{children:[T("p",{children:[h(Z,{icon:gs})," Failed to apply custom columns."]}),T("div",{className:"error-box",children:[e.detail.errorMessage,h("br",{}),"Table configuration:"," ",JSON.stringify(e.detail.configuration)]})]}),hasRequestFailed:!0})}handleDragEnd(t){if(jt.stopDragging(),!t.destination)return;const{inputs:e}=this.state,n=t.source.index,s=t.destination.index,i=[...e],o=e[n];i.splice(n,1),i.splice(s,0,o),this.setState({inputs:i})}handleEditorTabNavigation(t,e){var s,i,o;const{inputs:n}=this.state;if(e){((s=this.container)==null?void 0:s.querySelectorAll(".btn-drag-handle")[t]).focus();return}if(t===n.length-1)((i=this.container)==null?void 0:i.querySelectorAll(".btn-add-column")[t]).focus();else{const r=t+1;((o=this.container)==null?void 0:o.querySelectorAll(".custom-column-input")[r]).focus()}}handleSaveClick(){const{onSave:t}=this.props,{inputs:e,isCustomColumnApplying:n}=this.state;if(n)return;const s=[];e.forEach(i=>{const{name:o,formula:r}=i;o&&r&&s.push(`${o}=${r}`)}),this.resetErrorMessage(),this.setState({isCustomColumnApplying:!0}),t(s)}resetRequestFailed(){this.setState(({hasRequestFailed:t})=>t?{hasRequestFailed:!1}:null)}renderInputs(){const{inputs:t,hasRequestFailed:e}=this.state;return t.map((n,s)=>{const{eventKey:i,name:o,formula:r}=n;return h(oc,{inputIndex:s,eventKey:i,name:o,formula:r,onChange:this.handleInputChange,onDeleteColumn:this.handleDeleteColumn,onTabInEditor:this.handleEditorTabNavigation,invalid:e},i)})}renderSaveButton(){const{inputs:t,isCustomColumnApplying:e,isSuccessShowing:n}=this.state,s=t.length>1?"Save Columns":"Save Column";return T(W,{kind:n?"success":"primary",className:z("btn-apply",{"btn-spinner":e}),disabled:n||e,onClick:this.handleSaveClick,children:[e&&T("span",{children:[h(kn,{}),h("span",{className:"btn-normal-content",children:"Applying"}),h("span",{className:"btn-hover-content",children:"Applying"})]}),!n&&!e&&s,n&&T(we,{children:[h(Z,{icon:Id})," Success"]})]})}render(){const{onCancel:t}=this.props,{errorMessage:e}=this.state;return T("div",{role:"presentation",className:"custom-column-builder-container",ref:n=>{this.container=n},onClick:this.resetRequestFailed,onFocus:this.resetRequestFailed,children:[h("hr",{}),h(_l,{onDragStart:jt.startDragging,onDragEnd:this.handleDragEnd,children:h(xl,{droppableId:"droppable-custom-columns",children:(n,s)=>T("div",{ref:n.innerRef,...n.droppableProps,className:z("droppable-container",{dragging:s.draggingFromThisWith}),children:[this.renderInputs(),n.placeholder]})})}),h("div",{className:"pt-1 px-3",children:h(W,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,icon:zs,children:"Add Another Column"})}),T("div",{className:"custom-column-builder-footer",children:[e&&h("div",{className:"error-message",children:e}),T("div",{className:"d-flex justify-content-end",children:[h(W,{kind:"secondary",className:"mr-2",onClick:t,children:"Cancel"}),this.renderSaveButton()]})]})]})}};let rc=Vi;rc.SUCCESS_SHOW_DURATION=750;rc.defaultProps={customColumns:[],onSave:()=>{},onCancel:()=>{}};var ke=(t=>(t.ADVANCED_SETTINGS="ADVANCED_SETTINGS",t.AGGREGATIONS="AGGREGATIONS",t.AGGREGATION_EDIT="AGGREGATIONS_EDIT",t.CHART_BUILDER="CHART_BUILDER",t.CUSTOM_COLUMN_BUILDER="CUSTOM_COLUMN_BUILDER",t.QUICK_FILTERS="QUICK_FILTERS",t.ROLLUP_ROWS="ROLLUP_ROWS",t.SEARCH_BAR="SEARCH_BAR",t.SELECT_DISTINCT="SELECT_DISTINCT",t.TABLE_EXPORTER="TABLE_EXPORTER",t.VISIBILITY_ORDERING_BUILDER="VISIBILITY_ORDERING_BUILDER",t.CONDITIONAL_FORMATTING="CONDITIONAL_FORMATTING",t.CONDITIONAL_FORMATTING_EDIT="CONDITIONAL_FORMATTING_EDIT",t.GOTO="GOTO",t))(ke||{});const xo=X.module("RollupRows"),eE=150,Wr="grouped-rollup-rows",zr="ungrouped-rollup-rows",yn=class extends w.exports.Component{constructor(t){super(t),this.search=je(o=>{const r=this.getSortedUngroupedColumns(),l=[];let a=null;for(let d=0;d<r.length;d+=1)r[d].name.toLowerCase().includes(o.toLowerCase())&&(a==null&&(a=d),l.push([d,d]));P(a),this.setState({ungroupedSelectedRanges:l}),l.length>0&&this.ungroupedList.current&&this.ungroupedList.current.scrollToItem(a)},eE),this.getCachedUngroupedColumns=fe((o,r)=>o.filter(l=>yn.isGroupable(l)&&r.find(a=>a===l.name)==null)),this.getCachedSortedColumns=fe((o,r)=>r==null?[...o]:L.sortColumns(o,r===yn.SORT.ASCENDING)),this.handleDeleteClicked=this.handleDeleteClicked.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUngroupedSelect=this.handleUngroupedSelect.bind(this),this.handleUngroupedSelectionChange=this.handleUngroupedSelectionChange.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupedSelectionChange=this.handleGroupedSelectionChange.bind(this),this.handleShowConstituentsChange=this.handleShowConstituentsChange.bind(this),this.handleShowNonAggregatedColumnsChange=this.handleShowNonAggregatedColumnsChange.bind(this),this.handleSortAscending=this.handleSortAscending.bind(this),this.handleSortDescending=this.handleSortDescending.bind(this),this.renderGroupedItem=this.renderGroupedItem.bind(this),this.ungroupedList=Y.createRef(),this.groupedList=Y.createRef();const{config:e}=t,{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0}=e!=null?e:{};this.state={ungroupedSelectedRanges:[],columns:n,groupedSelectedRanges:[],searchFilter:"",showConstituents:s,showNonAggregatedColumns:i,dragSource:null,sort:null}}static renderColumn({item:t,isClone:e,selectedCount:n}){const s=t==null?void 0:t.name,i=e!==void 0&&e?`${n}`:void 0,o=e!==void 0&&e?"item-list-item-clone":"";return sn.renderTextItem({text:s,badgeText:i,className:o})}static addGroupings(t,e,n=t.length){if(e==null||e.length===0)return t;let s=n;const i=t.filter((o,r)=>e.includes(o)?(r<s&&(s-=1),!1):!0);return i.splice(s,0,...e),i}static isGroupable(t){return!L.isDecimalType(t.type)}componentDidUpdate(t,e){const{config:n}=this.props,{columns:s,showConstituents:i,showNonAggregatedColumns:o}=this.state;n!==t.config?this.updateFromConfig():(s!==e.columns||i!==e.showConstituents||o!==e.showNonAggregatedColumns)&&(n==null||s!==n.columns||i!==n.showConstituents||o!==n.showNonAggregatedColumns)&&this.sendChange()}componentWillUnmount(){this.search.cancel()}handleSearchChange(t){const e=t.target.value;if(this.setState({searchFilter:e}),!e){this.search.cancel(),this.resetSelection();return}this.search(e)}handleSortAscending(){this.setState(({sort:t})=>({sort:t===yn.SORT.ASCENDING?null:yn.SORT.ASCENDING}))}handleSortDescending(){this.setState(({sort:t})=>({sort:t===yn.SORT.DESCENDING?null:yn.SORT.DESCENDING}))}resetSelection(){this.setState({ungroupedSelectedRanges:[],groupedSelectedRanges:[]})}handleDragStart(t){xo.debug("handleDragStart",t),document.documentElement.classList.add("drag-pointer-events-none"),this.setState({dragSource:t.source})}handleDragEnd(t){xo.debug("handleDragEnd",t),document.documentElement.classList.remove("drag-pointer-events-none"),this.setState({dragSource:null});const{destination:e,source:n}=t;if(e==null||n==null)return;if(e.droppableId===zr){this.setState(({groupedSelectedRanges:o,columns:r})=>{const l=[...r];return jt.reorder(l,o,[],0),{columns:l,ungroupedSelectedRanges:[],groupedSelectedRanges:[]}});return}const s=n.droppableId===Wr;let i=e.index;s&&n.index<e.index&&(i+=1),this.setState(({columns:o,ungroupedSelectedRanges:r,groupedSelectedRanges:l})=>{const a=[...o],d=s?a:this.getSortedUngroupedColumns().map(g=>g.name),c=s?l:r,u=jt.reorder(d,c,a,i),m=s?jt.adjustDestinationIndex(i,l):i,p=[[m,m+u.length-1]];return{columns:a,ungroupedSelectedRanges:[],groupedSelectedRanges:p}}),this.resetSelection()}handleUngroupedSelect(t){xo.debug("handleUngroupedSelect"),this.setState(({columns:e})=>({columns:yn.addGroupings(e,[this.getSortedUngroupedColumns()[t].name]),ungroupedSelectedRanges:[],groupedSelectedRanges:[]}))}handleUngroupedSelectionChange(t){xo.debug2("handleUngroupedSelectionChange",t),this.setState(({ungroupedSelectedRanges:e})=>t===e?null:{ungroupedSelectedRanges:t,groupedSelectedRanges:[]})}handleGroupedSelectionChange(t){xo.debug2("handleGroupedSelectedRanges",t),this.setState(({groupedSelectedRanges:e})=>t===e?null:{groupedSelectedRanges:t,ungroupedSelectedRanges:[]})}handleDeleteClicked(t){this.setState(({columns:e})=>{const n=e.slice();return n.splice(t,1),{columns:n}})}handleShowConstituentsChange(){this.setState(({showConstituents:t})=>({showConstituents:!t}))}handleShowNonAggregatedColumnsChange(){this.setState(({showNonAggregatedColumns:t})=>({showNonAggregatedColumns:!t}))}updateFromConfig(){const{config:t}=this.props,{columns:e=[],showConstituents:n=!0,showNonAggregatedColumns:s=!0}=t!=null?t:{};this.setState({columns:e,showConstituents:n,showNonAggregatedColumns:s})}sendChange(){const{onChange:t}=this.props,{columns:e,showConstituents:n,showNonAggregatedColumns:s}=this.state;t({columns:e,showConstituents:n,showNonAggregatedColumns:s})}getUngroupedColumns(){const{model:t}=this.props,{columns:e}=this.state,{originalColumns:n}=t;return this.getCachedUngroupedColumns(n,e)}getSortedUngroupedColumns(){const{sort:t}=this.state,e=this.getUngroupedColumns();return this.getCachedSortedColumns(e,t)}renderGroupedItem({item:t,itemIndex:e,isClone:n,selectedCount:s}){const o=`${n!==void 0&&n?"":"\xA0\xA0".repeat(e)}${t}`,r=n!==void 0&&n?`${s}`:void 0,l=n!==void 0&&n?"item-list-item-clone":"";return T(we,{children:[sn.renderTextItem({text:o,badgeText:r,className:l}),(n===void 0||!n)&&h(W,{kind:"ghost",className:"btn btn-link btn-link-icon btn-delete-grouping float-right",onClick:()=>this.handleDeleteClicked(e),children:h(Z,{icon:hn})})]})}render(){const{columns:t,dragSource:e,searchFilter:n,groupedSelectedRanges:s,ungroupedSelectedRanges:i,showConstituents:o,showNonAggregatedColumns:r,sort:l}=this.state,a=this.getSortedUngroupedColumns();let d=t.length*sn.DEFAULT_ROW_HEIGHT;(e==null?void 0:e.droppableId)===zr&&(d+=sn.DEFAULT_ROW_HEIGHT);const c=a.length*sn.DEFAULT_ROW_HEIGHT+10,u=Math.min(3*sn.DEFAULT_ROW_HEIGHT,c);return h("div",{role:"menu",className:z("rollup-rows",{"is-dragging":e!=null}),tabIndex:0,children:T(_l,{onDragEnd:this.handleDragEnd,onDragStart:this.handleDragStart,children:[T("div",{className:"rollup-rows-group-by",children:[h("div",{className:"section-title",children:"Group By"}),t.length===0&&h(xl,{droppableId:"placeholder",children:(m,p)=>h("div",{className:z("placeholder","text-muted",{"is-dragging-from-this":p.draggingFromThisWith,"is-dragging-over":p.isDraggingOver,"is-dropping":p.draggingOverWith}),ref:m.innerRef,...m.droppableProps,children:"Create rollup by dragging columns here, from the available columns list below."})}),t.length>0&&h(sn,{draggingItemClassName:"rollup-rows-dragging-grouped-item",draggablePrefix:Wr,droppableId:Wr,itemCount:t.length,items:t,offset:0,onSelectionChange:this.handleGroupedSelectionChange,ref:this.groupedList,renderItem:this.renderGroupedItem,selectedRanges:s,style:{height:d},isMultiSelect:!0})]}),T("div",{className:"rollup-rows-available-columns",children:[h("div",{className:"section-title",children:"Available Grouping Columns"}),T("div",{className:"top-menu",children:[h(ws,{className:"w-100",value:n,matchCount:n?i.length:void 0,placeholder:"Find column...",onChange:this.handleSearchChange}),T(W,{kind:"ghost",className:z("btn-link btn-link-icon",{active:l===yn.SORT.ASCENDING}),onClick:this.handleSortAscending,children:[h(Z,{icon:Nd}),h(ze,{children:"Sort ascending"})]}),T(W,{kind:"ghost",className:z("btn-link btn-link-icon",{active:l===yn.SORT.DESCENDING}),onClick:this.handleSortDescending,children:[h(Z,{icon:Fd}),h(ze,{children:"Sort descending"})]})]}),h(sn,{className:"rollup-available-grouping-columns",draggablePrefix:zr,droppableId:zr,itemCount:a.length,items:a,renderItem:yn.renderColumn,offset:0,onSelect:this.handleUngroupedSelect,onSelectionChange:this.handleUngroupedSelectionChange,ref:this.ungroupedList,selectedRanges:i,style:{maxHeight:c,minHeight:u},isDropDisabled:(e==null?void 0:e.droppableId)!==Wr,isMultiSelect:!0}),T("div",{className:"bottom-menu",children:[h("div",{className:"label",children:"Show:"}),h(St,{checked:o,onChange:this.handleShowConstituentsChange,children:"Constituents"}),h(St,{checked:r,onChange:this.handleShowNonAggregatedColumnsChange,children:"Non-Aggregated Columns"})]})]})]})})}};let lc=yn;lc.SORT=Object.freeze({ASCENDING:"ASC",DESCENDING:"DESC"});lc.defaultProps={config:null,onChange:()=>{}};const tE=X.module("TableCsvExporter"),Ye=class extends w.exports.Component{static getDateString(){return M.i18n.DateTimeFormat.format(Ye.FILENAME_DATE_FORMAT,new Date)}constructor(t){super(t),this.handleDownloadClick=this.handleDownloadClick.bind(this),this.handleDownloadRowOptionChanged=this.handleDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowOptionChanged=this.handleCustomizedDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowsChanged=this.handleCustomizedDownloadRowsChanged.bind(this),this.handleIncludeColumnHeadersChanged=this.handleIncludeColumnHeadersChanged.bind(this),this.handleIncludeHiddenColumnsChanged=this.handleIncludeHiddenColumnsChanged.bind(this),this.handleUseUnformattedValuesChanged=this.handleUseUnformattedValuesChanged.bind(this);const{name:e}=t;this.state={fileName:`${e}-${Ye.getDateString()}.csv`,downloadRowOption:Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,customizedDownloadRowOption:Ye.CUSTOMIZED_ROWS_OPTIONS.FIRST,customizedDownloadRows:Ye.DEFAULT_DOWNLOAD_ROWS,includeColumnHeaders:!0,includeHiddenColumns:!1,useUnformattedValues:!1,errorMessage:null,id:$e.generate()}}getSnapshotRanges(){const{model:t,selectedRanges:e}=this.props,{downloadRowOption:n,customizedDownloadRowOption:s,customizedDownloadRows:i}=this.state,{rowCount:o,columnCount:r}=t;let l=[];switch(n){case Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:l.push(new re(0,0,r-1,o-1));break;case Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:l=e.map(a=>({...a,startColumn:0,endColumn:r-1})).sort((a,d)=>a.startRow!=null&&d.startRow!=null?a.startRow-d.startRow:0);break;case Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:switch(s){case Ye.CUSTOMIZED_ROWS_OPTIONS.FIRST:l.push(new re(0,0,r-1,Math.min(i-1,o-1)));break;case Ye.CUSTOMIZED_ROWS_OPTIONS.LAST:l.push(new re(0,Math.max(0,o-i),r-1,o-1));break}break}return l}getModelRanges(t){const{userColumnWidths:e,movedColumns:n}=this.props,{includeHiddenColumns:s}=this.state,i=te.getHiddenColumns(e);let o=j.getModelRanges(t,n);if(!s&&i.length>0){const r=i.map(re.makeColumn);o=re.subtractRangesFromRanges(o,r)}return o}resetDownloadState(){this.setState({errorMessage:null})}async handleDownloadClick(){const{model:t,isDownloading:e,onDownloadStart:n,onDownload:s,onCancel:i}=this.props,{fileName:o,includeColumnHeaders:r,useUnformattedValues:l}=this.state;if(e){i();return}this.resetDownloadState();const a=this.getSnapshotRanges(),d=this.getModelRanges(a);if(this.validateOptionInput()){n();try{const c=await t.export(),u=c.setViewport(0,0);await u.getViewportData(),s(o,c,u,a,d,r,l)}catch(c){tE.error("CSV download failed",c),this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," ",`${c}`]})}),i()}}}handleDownloadRowOptionChanged(t){this.setState({downloadRowOption:t.target.value})}handleCustomizedDownloadRowOptionChanged(t){this.setState({customizedDownloadRowOption:t.target.value})}handleCustomizedDownloadRowsChanged(t){this.setState({customizedDownloadRows:parseInt(t.target.value,10)})}handleIncludeColumnHeadersChanged(){this.setState(({includeColumnHeaders:t})=>({includeColumnHeaders:!t}))}handleIncludeHiddenColumnsChanged(){this.setState(({includeHiddenColumns:t})=>({includeHiddenColumns:!t}))}handleUseUnformattedValuesChanged(){this.setState(({useUnformattedValues:t})=>({useUnformattedValues:!t}))}validateOptionInput(){const{selectedRanges:t}=this.props,{downloadRowOption:e,customizedDownloadRows:n}=this.state;return e===Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS&&t.length===0?(this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," No rows selected. Please select some rows in the table."]})}),!1):e===Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS&&n<=0?(this.setState({errorMessage:T("p",{children:[h(Z,{icon:gs})," Number of rows to output must be greater than 0"]})}),!1):!0}render(){const{model:t,isDownloading:e,tableDownloadProgress:n,tableDownloadEstimatedTime:s,selectedRanges:i,tableDownloadStatus:o}=this.props,{fileName:r,downloadRowOption:l,customizedDownloadRowOption:a,customizedDownloadRows:d,includeColumnHeaders:c,includeHiddenColumns:u,useUnformattedValues:m,errorMessage:p,id:g}=this.state,{rowCount:f}=t;return T("div",{className:"table-csv-exporter",children:[h("div",{className:"section-title",children:"Download Rows"}),h("div",{className:"form-group",children:T(Vl,{onChange:this.handleDownloadRowOptionChanged,value:l,disabled:e,children:[T(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,"data-testid":"radio-csv-exporter-download-all",children:["All Rows",h("span",{className:"text-muted ml-2",children:`(${f.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`})]}),T(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS,"data-testid":"radio-csv-exporter-only-selected",children:["Only Selected Rows",h("span",{className:"text-muted ml-2",children:i.length>0?`(${re.rowCount(i).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`:null})]}),h(Fn,{value:Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,"data-testid":"radio-csv-exporter-customized-rows",children:T("div",{className:"radio-input-row",role:"presentation",onClick:()=>{this.setState({downloadRowOption:Ye.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS})},children:[T("select",{value:a,"data-testid":"select-csv-exporter-customized-rows",className:"custom-select",disabled:e,onChange:this.handleCustomizedDownloadRowOptionChanged,children:[h("option",{value:"FIRST",children:"First"}),h("option",{value:"LAST",children:"Last"})]}),h("input",{type:"number",className:"form-control",id:`customizedRows-${g}`,"data-testid":"input-csv-exporter-customized-rows",name:`customizedRows-${g}`,placeholder:"100",value:d,disabled:e,onChange:this.handleCustomizedDownloadRowsChanged}),h("div",{children:"Rows"})]})})]})}),T("div",{className:"form-group",children:[h("label",{htmlFor:`customizedRows-${g}`,children:"File Name"}),h("input",{type:"text",className:"form-control",id:`filename-${g}`,"data-testid":"input-csv-exporter-file-name",name:`filename-${g}`,value:r,onChange:b=>{this.setState({fileName:b.target.value})},disabled:e})]}),T("div",{className:"checkbox-options",children:[h(St,{checked:c,onChange:this.handleIncludeColumnHeadersChanged,children:"Include column headers"}),h(St,{checked:u,onChange:this.handleIncludeHiddenColumnsChanged,children:"Include hidden columns"}),h(St,{checked:m,onChange:this.handleUseUnformattedValuesChanged,children:"Use unformatted values"})]}),T("div",{className:"section-footer flex-column",children:[p!=null&&h("div",{className:"error-message",children:p}),o&&T("div",{className:"download-status",children:[(o===Ye.DOWNLOAD_STATUS.DOWNLOADING||o===Ye.DOWNLOAD_STATUS.INITIATING)&&T(we,{children:[o===Ye.DOWNLOAD_STATUS.INITIATING&&h("div",{className:"text-muted",children:"Starting Download..."}),o===Ye.DOWNLOAD_STATUS.DOWNLOADING&&T("div",{className:"text-muted d-flex justify-content-between",children:[h("span",{children:s||s===0?`Estimated time: ${Rn.formatElapsedTime(s)}`:null}),h("span",{children:`${n}%`})]})]}),o===Ye.DOWNLOAD_STATUS.FINISHED&&h("div",{className:"text-muted text-right",children:"Download Completed"}),o===Ye.DOWNLOAD_STATUS.CANCELED&&h("div",{className:"text-muted",children:"Download Canceled"}),(o===Ye.DOWNLOAD_STATUS.DOWNLOADING||o===Ye.DOWNLOAD_STATUS.INITIATING)&&h("div",{className:"progress",children:h("div",{className:"progress-bar progress-bar-striped progress-bar-animated",style:{width:`${n}%`}})}),o===Ye.DOWNLOAD_STATUS.FINISHED&&h("div",{className:"progress",children:h("div",{className:"progress-bar bg-success",style:{width:`${n}%`}})})]}),T(W,{kind:"primary","data-testid":"btn-csv-exporter-download",className:z("btn-downloading",{"btn-spinner btn-cancelable":e}),onClick:this.handleDownloadClick,children:[e&&T("span",{children:[h(kn,{}),h("span",{className:"btn-normal-content",children:"Downloading"}),h("span",{className:"btn-hover-content",children:"Cancel"})]}),!e&&"Download"]})]})]})}};let rn=Ye;rn.FILENAME_DATE_FORMAT="yyyy-MM-dd-HHmmss";rn.DOWNLOAD_STATUS={INITIATING:"INITIATING",DOWNLOADING:"DOWNLOADING",FINISHED:"FINISHED",CANCELED:"CANCELED"};rn.DOWNLOAD_ROW_OPTIONS={ALL_ROWS:"ALL_ROWS",SELECTED_ROWS:"SELECTED_ROWS",CUSTOMIZED_ROWS:"CUSTOMIZED_ROWS"};rn.CUSTOMIZED_ROWS_OPTIONS={FIRST:"FIRST",LAST:"LAST"};rn.DEFAULT_DOWNLOAD_ROWS=100;rn.defaultProps={onDownloadStart:()=>{},isDownloading:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:null,selectedRanges:[]};const rs=X.module("TableSaver"),nE="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function sE(t){return t.added!==void 0}function iE(t){if(!sE(t))throw new Error("event is not UpdateEventData")}const Hs=class extends w.exports.PureComponent{constructor(t){var e,n;super(t),this.WritableStream=(e=window.WritableStream)!=null?e:Oc,this.getCachedCustomColumnFormatFlag=ln(fs.isCustomColumnFormatDefined,{max:1e4}),this.handlePortMessage=this.handlePortMessage.bind(this),this.handleSnapshotResolved=this.handleSnapshotResolved.bind(this),this.handleDownloadTimeout=this.handleDownloadTimeout.bind(this),this.state={},this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.WritableStream=(n=window.WritableStream)!=null?n:Oc,this.iframes=[],this.useBlobFallback=!1}static csvEscapeString(t){return`"${t.replace(/"/g,'""')}"`}componentDidMount(){const{getDownloadWorker:t}=this.props;t().then(e=>{rs.info("found active service worker"),this.sw=e,this.sw.postMessage("ping")}).catch(e=>{rs.warn("Download csv is not optimized.",e),this.useBlobFallback=!0})}componentWillUnmount(){this.iframes.length>0&&this.iframes.forEach(t=>{t.remove()}),this.streamTimeout&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout&&clearTimeout(this.snapshotHandlerTimeout)}createWriterStream(t){const e=this.useBlobFallback,n=[];let s=null;e&&(s=TextEncoder.prototype.encode.bind(new TextEncoder));const{fileName:i}=this,o={};return e?(o.write=r=>{P(s),r.header!==void 0&&n.push(s(r.header)),r.rows!==void 0&&n.push(s(r.rows))},o.close=()=>{P(i);const r=new Blob(n,{type:"application/octet-stream; charset=utf-8"}),l=document.createElement("a");l.href=URL.createObjectURL(r),l.download=i,l.click()},o.abort=()=>{t.postMessage({cancel:!0}),t.close()}):(o.write=r=>{t.postMessage(r)},o.close=()=>{t.postMessage({end:!0}),t.close()},o.abort=()=>{t.postMessage({cancel:!0}),t.close()}),new this.WritableStream(o)}startDownload(t,e,n,s,i,o,r){const{isDownloading:l}=this.props;if(l)return;this.downloadStartTime=Date.now(),rs.info(`start downloading ${t}`),this.table=e,this.columns=te.columnsFromRanges(i,e.columns),this.tableSubscription=n,this.gridRanges=s,this.includeColumnHeaders=o,this.useUnformattedValues=r;const a=encodeURIComponent(t.replace(/\//g,":")).replace(/['()]/g,escape).replace(/\*/g,"%2A"),d=new MessageChannel;if(this.port=d.port1,this.fileName=t,this.fileWriter=this.createWriterStream(this.port).getWriter(),this.useBlobFallback){this.writeCsvTable(o);return}this.sw&&this.sw.postMessage({encodedFileName:a},[d.port2]),this.port.onmessage=this.handlePortMessage}finishDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.close();const{onDownloadCompleted:t}=this.props;t(),this.resetTableSaver(),this.downloadStartTime!==void 0&&rs.info(`download finished, total elapsed time ${(Date.now()-this.downloadStartTime)/1e3} seconds`)}cancelDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.abort(),this.cancelableSnapshots.forEach(e=>{e&&(e.catch(()=>null),e.cancel())});const{onDownloadCanceled:t}=this.props;t(),this.resetTableSaver()}resetTableSaver(){this.table=void 0,this.tableSubscription=void 0,this.columns=void 0,this.chunkRows=void 0,this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout!=null&&clearTimeout(this.snapshotHandlerTimeout),this.streamTimeout=void 0,this.snapshotHandlerTimeout=void 0}handleDownloadTimeout(){rs.info("download canceled"),this.cancelDownload()}writeTableHeader(){var e;let t="";if(this.columns)for(let n=0;n<this.columns.length;n+=1)t+=this.columns[n].name,t+=n===this.columns.length-1?`
|
|
26
26
|
`:",";(e=this.fileWriter)==null||e.write({header:t}).then(()=>null)}startWriteTableBody(){this.columns&&this.gridRanges!=null&&(this.chunkRows=Math.floor(Hs.DOWNLOAD_CELL_CHUNK/this.columns.length),this.rangedSnapshotsTotal=this.gridRanges.map(t=>(P(t.endRow),P(t.startRow),P(this.chunkRows),Math.ceil((t.endRow-t.startRow+1)/this.chunkRows))),this.snapshotsTotal=this.rangedSnapshotsTotal.reduce((t,e)=>t+e),rs.info("start writing table, total snapshots: ",this.snapshotsTotal),this.makeSnapshot(Math.min(Hs.SNAPSHOT_BUFFER_SIZE,this.snapshotsTotal)))}writeCsvTable(t){t&&this.writeTableHeader(),this.startWriteTableBody()}writeSnapshot(t,e,n){if(this.currentSnapshotIndex===t&&this.fileWriter){for(;this.snapshotsBuffer.has(this.currentSnapshotIndex);){const s=this.snapshotsBuffer.get(this.currentSnapshotIndex);P(s),this.fileWriter.write({rows:this.convertSnapshotIntoCsv(s)}),this.snapshotsBuffer.delete(this.currentSnapshotIndex),this.currentSnapshotIndex+=1,this.updateDownloadProgress(t)}if(this.snapshotsTotal&&this.currentSnapshotIndex>=this.snapshotsTotal){this.finishDownload();return}}this.snapshotCounter&&this.snapshotsTotal&&this.snapshotCounter<this.snapshotsTotal&&(rs.debug2(`
|
|
27
27
|
current range index: ${this.gridRangeCounter},
|
|
28
28
|
snapshotIndexCounter: ${this.snapshotCounter},
|
|
@@ -32,16 +32,16 @@ ${e}`):s.setValue(`${e}`);const o=s.getLineCount(),r=s.getLineLength(o)+1;this.e
|
|
|
32
32
|
making ${Math.min(Hs.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)} more snapshots
|
|
33
33
|
`),this.makeSnapshot(Math.min(Hs.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)))}updateDownloadProgress(t){if(t!=null&&this.snapshotsTotal!=null&&this.downloadStartTime!=null){const{onDownloadProgressUpdate:e}=this.props,n=Math.floor(t*100/this.snapshotsTotal),s=t>1?Math.floor((Date.now()-this.downloadStartTime)*(this.snapshotsTotal-t)/t/1e3):null;e(n,s)}}convertSnapshotIntoCsv(t){var r;let e="";const n=t.added.iterator(),{formatter:s}=this.props,i=[];for(;n.hasNext();)i.push(n.next().value);P(this.columns);const{useUnformattedValues:o}=this;for(let l=0;l<i.length;l+=1){const a=i[l];for(let d=0;d<this.columns.length;d+=1){const{type:c,name:u}=this.columns[d];let m=null;if(o){let p=(r=t.getData(a,this.columns[d]))!=null?r:"";p!==""&&L.isDateType(c)&&(p=M.i18n.DateTimeFormat.format(nE,p,M.i18n.TimeZone.getTimeZone(s.timeZone))),m=p.toString()}else{const p=this.getCachedCustomColumnFormatFlag(s,u,c);let g=null;if(!p){const f=t.getFormat(a,this.columns[d]);g=(f==null?void 0:f.formatString)!=null?f:null}g?m=s.getFormattedString(t.getData(a,this.columns[d]),c,u,g):m=s.getFormattedString(t.getData(a,this.columns[d]),c,u)}e+=Hs.csvEscapeString(m),e+=d===this.columns.length-1?`
|
|
34
34
|
`:","}}return e}makeSnapshot(t){if(t<=0)return;P(this.gridRangeCounter);let e=0,n=this.gridRanges[this.gridRangeCounter];for(P(this.tableSubscription),P(this.columns);e<t;){P(n),P(n.startRow),P(n.endRow),P(this.rangedSnapshotCounter),P(this.chunkRows);const s=n.startRow+this.rangedSnapshotCounter*this.chunkRows,i=Math.min(s+this.chunkRows-1,n.endRow),o=this.snapshotCounter;this.cancelableSnapshots.push(ye.makeCancelable(this.tableSubscription.snapshot(M.RangeSet.ofRange(s,i),this.columns).then(r=>(iE(r),this.handleSnapshotResolved(r,o,s,i),o)).catch(r=>{rs.error(r)}),r=>{rs.info(`snapshot ${r} has been canceled`)})),this.rangedSnapshotCounter+=1,this.snapshotCounter+=1,this.snapshotPending+=1,this.rangedSnapshotCounter>=this.rangedSnapshotsTotal[this.gridRangeCounter]&&(this.gridRangeCounter+=1,this.rangedSnapshotCounter=0,n=this.gridRanges[this.gridRangeCounter]),e+=1}}handlePortMessage({data:t}){const{download:e,readableStreamPulling:n}=t;if(!this.useBlobFallback){if(e!=null){const{includeColumnHeaders:s}=this;this.makeIframe(`${e}`),this.writeCsvTable(s)}n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,Hs.STREAM_TIMEOUT)))}}handleSnapshotResolved(t,e,n,s){this.snapshotHandlerTimeout=setTimeout(()=>{this.snapshotsBuffer.set(e,t),this.snapshotPending-=1,this.writeSnapshot(e,n,s),this.cancelableSnapshots[e]=null},Hs.SNAPSHOT_HANDLER_TIMEOUT)}makeIframe(t){const e=document.createElement("iframe");e.hidden=!0,e.src=`download/${t}`,e.name="iframe",document.body.appendChild(e),this.iframes.push(e)}render(){return null}};let po=Hs;po.DOWNLOAD_CELL_CHUNK=6e3;po.SNAPSHOT_BUFFER_SIZE=5;po.STREAM_TIMEOUT=8e3;po.SNAPSHOT_HANDLER_TIMEOUT=5;po.defaultProps={getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}};function oE(t){var E;const{group:e,onDelete:n,onColorChange:s,onNameChange:i,validateName:o}=t,{isNew:r}=e,l=w.exports.useRef(e),a=w.exports.useRef(null),d=w.exports.useRef(null),[c,u]=w.exports.useState(r?"":e.name),[m,p]=w.exports.useState(r),[g,f]=w.exports.useState(!1),b=c!==e.name?o(c):"",C=r&&!g||b==="";w.exports.useEffect(function(){m&&a.current&&(a.current.focus(),a.current.select())},[m]),w.exports.useEffect(function(){return()=>{l.current.isNew&&n(l.current)}},[n]);const S=()=>{C&&(i(e,c),p(!1))},v=()=>{if(r){n(e);return}u(e.name),p(!1)},y=I=>{f(!0),I.key==="Enter"&&(I.stopPropagation(),S()),I.key===" "&&I.stopPropagation(),I.key==="Escape"&&v()};return m?T(we,{children:[T("div",{className:"editing-container",children:[h("input",{ref:a,className:z("form-control",{"is-invalid":!C}),value:c,placeholder:"Group Name",onChange:I=>u(I.target.value),onKeyDown:y}),h(W,{kind:"ghost",icon:Xn,tooltip:"Confirm",onClick:S}),h(W,{kind:"ghost",icon:gC,tooltip:"Cancel",onClick:v})]}),!C&&h("p",{className:"mb-0 validate-label-error text-danger",children:b})]}):T("div",{className:"group-name-wrapper",children:[h("span",{className:"column-name",children:c}),h(W,{className:"p-1 mx-1",kind:"ghost",icon:ir,tooltip:"Edit",onClick:()=>{p(!0)}}),T("span",{className:"right-buttons",children:[h(W,{kind:"ghost",icon:hn,tooltip:"Delete group",onClick:()=>n(e)}),h(W,{kind:"ghost",className:"color-swatch mr-1",icon:e.color!==void 0?T("span",{className:"fa-layers",children:[h(Z,{className:"color-swatch",icon:ml,color:Be.white,transform:"down-1"}),h(Z,{className:"color-swatch",icon:ml,color:e.color,transform:"shrink-2 down-1"})]}):AC,tooltip:"Set color",onClick:()=>{var I,R;(I=d.current)==null||I.click(),(R=d.current)==null||R.focus()}}),h("input",{"aria-label":"Color input",ref:d,type:"color",list:"presetColors",value:(E=e.color)!=null?E:Be["content-bg"],style:{visibility:"hidden",width:0,height:0,padding:0,border:0},onChange:I=>{e.color=I.target.value,s(e,I.target.value)}}),T("datalist",{id:"presetColors",children:[h("option",{children:Be["content-bg"]}),h("option",{children:Be.primary}),h("option",{children:Be.foreground}),h("option",{children:Be.green}),h("option",{children:Be.yellow}),h("option",{children:Be.orange}),h("option",{children:Be.red}),h("option",{children:Be.purple}),h("option",{children:Be.blue}),h("option",{children:Be["gray-400"]})]})]})]})}function rE(){}const lE=w.exports.forwardRef(function(e,n){const{value:s,clone:i,childCount:o,item:r,onVisibilityChange:l,onClick:a,onGroupDelete:d,onGroupColorChange:c,onGroupNameChange:u,validateGroupName:m,handleProps:p}=e,{group:g,modelIndex:f,isVisible:b}=r.data,C=w.exports.useRef(null),S=w.exports.useCallback(y=>{var E;y.buttons===1&&(l([f].flat(),!b),(E=C.current)==null||E.focus())},[l,f,b]),v=w.exports.useCallback(y=>{a(s,y)},[a,s]);return T("div",{ref:n,className:z("tree-item",{isSelected:r.selected,"two-dragged":o===2,"multiple-dragged":o>2}),onClick:v,...p,children:[h(W,{ref:C,kind:"ghost",className:"px-1",onClick:rE,onMouseDown:S,onMouseEnter:S,icon:b?Rd:ku,tooltip:"Toggle visibility"}),h("span",{className:z("column-name",g&&"column-group"),children:g&&!i?h(oE,{group:g,onDelete:d,onColorChange:c,onNameChange:u,validateName:m}):s}),T("div",{children:[i&&o>1&&h("span",{className:"item-count",children:o}),h(ze,{children:"Drag to re-order"}),h(Z,{icon:rr})]})]})});function aE(t){return t.parentId!==void 0}function dE(t,e){return Math.round(t/e)}function Hp(t,e,n,s,i,o){var l;const r=t.findIndex(a=>a.name===s);if(r===-1){const a=n.get(s);if(a==null)throw new Error(`Column or header group not found: ${s}`);const d=a.childIndexes.flat();return{id:s,selected:o.has(s),children:a.children.map(c=>Hp(t,e,n,c,i,o)).sort((c,u)=>{const m=Array.isArray(c.data.visibleIndex)?c.data.visibleIndex[0]:c.data.visibleIndex,p=Array.isArray(u.data.visibleIndex)?u.data.visibleIndex[0]:u.data.visibleIndex;return m-p}),data:{modelIndex:d,visibleIndex:a.getVisibleRange(e),group:a,isVisible:d.some(c=>{var u;return((u=i.get(c))!=null?u:1)>0})}}}return{id:s,children:[],selected:o.has(s),data:{modelIndex:r,visibleIndex:j.getVisibleIndex(r,e),isVisible:((l=i.get(r))!=null?l:1)>0}}}function cE(t,e,n,s,i){const o=[],r=new Set(i),l=new Map(n.map(d=>[d.name,d]));let a=0;for(;a<t.length;){const d=j.getModelIndex(a,e),c=t[d].name;let u=n.find(({children:p})=>p.includes(c));for(;u!==void 0&&u.parent!==void 0;)u=l.get(u.parent);const m=Hp(t,e,l,u?u.name:c,s,r);o.push(m),Array.isArray(m.data.visibleIndex)?a+=m.data.visibleIndex[1]-m.data.visibleIndex[0]+1:a+=1}return o}function yl(t,e,n,s,i){const o=t.findIndex(({id:C})=>C===n),r=t.findIndex(({id:C})=>C===e),l=t[r],a=Xg(t,r,o),d=a[o-1],c=a[o+1],u=dE(s,i),m=l.depth+u,p=hE({previousItem:d,nextItem:c}),g=uE({nextItem:c});let f=m;return m>=p?f=p:m<g&&(f=g),{depth:f,maxDepth:p,minDepth:g,parentId:b()};function b(){var S;if(f===0||!d)return null;if(f===d.depth)return d.parentId;if(f>d.depth)return d.id;const C=(S=a.slice(0,o).reverse().find(v=>v.depth===f))==null?void 0:S.parentId;return C!=null?C:null}}function hE({previousItem:t,nextItem:e}){var n,s;return Math.max((n=t==null?void 0:t.depth)!=null?n:0,(s=e==null?void 0:e.depth)!=null?s:0)}function uE({nextItem:t}){return t?t.depth:0}function Up(t,e=null,n=0){return t.reduce((s,i,o)=>[...s,{...i,parentId:e,depth:n,index:o},...Up(i.children,i.id,n+1)],[])}function fn(t){return t.every(aE)?t:Up(t)}function Vp(t,e){for(let n=0;n<t.length;n+=1){const s=t[n],{id:i,children:o}=s;if(i===e)return s;if(o.length){const r=Vp(o,e);if(r)return r}}}function Bp(t,e=0){return t.reduce((n,{children:s})=>s.length?Bp(s,n+1):n+1,e)}function mE(t,e){const n=Vp(t,e);return n?Bp(n.children):0}const pE=[Kn.Down,Kn.Right,Kn.Up,Kn.Left],gE=[Kn.Left,Kn.Right];function fE(t,e,n){return(s,{currentCoordinates:i,context:{active:o,over:r,collisionRect:l,droppableRects:a,droppableContainers:d}})=>{if(pE.includes(s.code)){if(!o||!l)return;s.preventDefault();const{current:{items:c,offset:u}}=t;if(gE.includes(s.code)&&(r==null?void 0:r.id)!=null){const{depth:f,maxDepth:b,minDepth:C}=yl(c,o.id,r.id,u,n);switch(s.code){case Kn.Left:if(f>C)return{...i,x:i.x-n};break;case Kn.Right:if(f<b)return{...i,x:i.x+n};break}return}const m=[];d.forEach(f=>{if((f==null?void 0:f.disabled)||f.id===(r==null?void 0:r.id))return;const b=a.get(f.id);if(!!b)switch(s.code){case Kn.Down:l.top<b.top&&m.push(f);break;case Kn.Up:l.top>b.top&&m.push(f);break}});const p=jg({active:o,collisionRect:l,pointerCoordinates:null,droppableRects:a,droppableContainers:m});let g=Zg(p,"id");if(g===(r==null?void 0:r.id)&&p.length>1&&(g=p[1].id),g!=null&&(r==null?void 0:r.id)!=null){const f=a.get(o.id),b=a.get(g),C=d.get(g);if(f&&b&&C){const S=c.findIndex(({id:I})=>I===g),v=c[S],y=c.findIndex(({id:I})=>I===o.id),E=c[y];if(v!=null&&E!=null){const{depth:I}=yl(c,o.id,g,(v.depth-E.depth)*n,n),N=S>y?1:-1,F=e?(l.height-f.height)/2:0;return{x:b.left+I*n,y:b.top+N*F}}}}}}}class $p extends Qg{}$p.activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!(!t.isPrimary||t.button!==0||bE(t.target))}];const CE=["button","input","textarea","select","option"];function bE(t){return!!((t==null?void 0:t.tagName)!=null&&CE.includes(t.tagName.toLowerCase()))}function Wp(t){const{clone:e=!1,depth:n,disableInteraction:s=!1,ghost:i=!1,handleProps:o,value:r,dragRef:l=null,wrapperRef:a=null,renderItem:d,item:c,childCount:u}=t,m=w.exports.useMemo(()=>Array(n).fill(0).map((g,f)=>h("span",{className:"depth-line"},`depth-line-${f}`)),[n]),p=w.exports.useMemo(()=>({ref:l,clone:e,value:r,item:c,childCount:u,handleProps:o}),[l,e,r,c,u,o]);return T("li",{className:z("item-wrapper",{clone:e,ghost:i,disableInteraction:s}),ref:a,children:[!e&&m,d(p)]},r)}Wp.displayName="TreeItem";const SE=({isSorting:t,wasDragging:e})=>!(t||e);function Bh({id:t,depth:e,...n}){const{attributes:s,isDragging:i,isSorting:o,listeners:r,setDraggableNodeRef:l,setDroppableNodeRef:a,transform:d,transition:c}=Jg({id:t,animateLayoutChanges:SE}),u=Ba.Translate.toString(d),m=w.exports.useMemo(()=>({transform:u,transition:c}),[u,c]),p=w.exports.useMemo(()=>({...s,...r,style:m}),[s,r,m]);return h(Wp,{dragRef:l,wrapperRef:a,depth:e,ghost:i,disableInteraction:o,handleProps:p,...n})}const wE={keyframes({transform:t}){return[{opacity:1,transform:Ba.Transform.toString(t.initial)},{opacity:0,transform:Ba.Transform.toString({...t.final,x:t.final.x+5,y:t.final.y+5})}]},easing:"ease-out",sideEffects({active:t}){t.node.animate([{opacity:0},{opacity:1}],{duration:Lc.duration,easing:Lc.easing})}};let _i=null;function vE(t){return _i==null&&t.activeNodeRect&&t.activatorEvent instanceof PointerEvent&&(_i=Math.floor((t.activatorEvent.clientY-t.activeNodeRect.top)/t.activeNodeRect.height)*t.activeNodeRect.height),t.activeNodeRect||(_i=null),{...t.transform,y:t.transform.y+(_i!=null?_i:0)}}function TE({items:t,renderItem:e,indentationWidth:n=30,indicator:s=!1,activeId:i,overId:o,offsetLeft:r}){const l=ef(),a=w.exports.useRef(l);w.exports.useEffect(function(){a.current=l},[l]),w.exports.useEffect(function(){a.current.measureDroppableContainers(t.map(({id:p})=>p))},[t]);const d=i!=null&&o!=null?yl(t,i,o,r,n):null,c=w.exports.useRef({items:t,offset:r}),u=i!=null?t.find(({id:m})=>m===i):null;return w.exports.useEffect(()=>{c.current={items:t,offset:r}},[t,r]),T(we,{children:[h("div",{className:z("tree-container",i!=null&&"marching-ants"),children:t.map(m=>{const{id:p,depth:g}=m;return h(Bh,{id:p,value:p,depth:p===i&&d?d.depth:g,item:m,renderItem:e},p)})}),tf.exports.createPortal(h(nf,{dropAnimation:wE,modifiers:[vE],className:"visibility-ordering-list",children:i!=null&&u?h(Bh,{id:i,depth:u.depth,clone:!0,childCount:mE(t,i)+1,value:i.toString(),renderItem:e,item:u}):null}),document.body)]})}const EE={droppable:{strategy:sf.Always}},yE={activationConstraint:{distance:5}};function IE({items:t,indicator:e=!1,indentationWidth:n=30,onDragStart:s,onDragEnd:i,renderItem:o}){const[r,l]=w.exports.useState(null),[a,d]=w.exports.useState(null),[c,u]=w.exports.useState(0),m=w.exports.useMemo(()=>{const N=fn(t);return r!=null?N.filter(({id:F,selected:B})=>F===r||!B):N},[r,t]),p=r!=null&&a!=null?yl(m,r,a,c,n):null,g=w.exports.useRef({items:m,offset:c}),f=w.exports.useMemo(()=>({coordinateGetter:fE(g,e,n)}),[n,e]),b=of(Ac($p,yE),Ac(cf,f)),C=w.exports.useMemo(()=>m.map(({id:N})=>N),[m]);w.exports.useEffect(()=>{g.current={items:m,offset:c}},[m,c]);const S=w.exports.useCallback(({active:{id:N}})=>{l(N),d(N),s==null||s(N),document.body.style.setProperty("cursor","grabbing")},[s]),v=w.exports.useCallback(({delta:N})=>{u(N.x)},[]),y=w.exports.useCallback(({over:N})=>{var F;d((F=N==null?void 0:N.id)!=null?F:null)},[]),E=w.exports.useCallback(()=>{d(null),l(null),u(0),document.body.style.setProperty("cursor","")},[]),I=w.exports.useCallback(({active:N,over:F})=>{if(E(),p&&F){const{depth:B,parentId:U}=p,x=JSON.parse(JSON.stringify(fn(t))),H=x.findIndex(({id:_})=>_===F.id),A=x.findIndex(({id:_})=>_===N.id),O=x[A];x[A]={...O,depth:B,parentId:U},i==null||i(O,{...x[H],parentId:p.parentId})}},[t,i,p,E]),R=w.exports.useCallback(()=>{E()},[E]);return h(rf,{sensors:b,collisionDetection:lf,measuring:EE,onDragStart:S,onDragMove:v,onDragOver:y,onDragEnd:I,onDragCancel:R,children:h(af,{items:C,strategy:df,children:h(TE,{items:m,renderItem:o,indicator:e,indentationWidth:n,activeId:r,overId:a,offsetLeft:c})})})}function RE(t,e,n,s,i,o,r,l){const a=i.map((S,v)=>({...S,index:v}));let d=[],c=s;const u=o[0].data.visibleIndex,m=a.findIndex(({id:S})=>S===t.id),p=a.findIndex(({id:S})=>S===e.id);let g=Array.isArray(u)?u[1]+1:u+1;c=Vs(o[0],e.parentId,c);for(let S=1;S<o.length;S+=1){const{data:{visibleIndex:v}}=o[S];d=j.moveItemOrRange(v,g,d,!0),g+=Array.isArray(v)?v[1]-v[0]+1:1,c=Vs(o[S],e.parentId,c)}const f=[Array.isArray(u)?u[0]:u,g-1],b=Array.isArray(e.data.visibleIndex)?e.data.visibleIndex[0]:e.data.visibleIndex;let C=j.getVisibleIndex(b,d);return m>p&&C>b&&(C-=1),e.children.length>0&&(Array.isArray(u)?u[0]:u)<C&&(C-=1),f[0]<C&&(C-=f[1]-f[0]),d=j.moveItemOrRange(f,Qe(C,r,l),d),{groups:c,movedColumns:n.concat(d)}}function Vs(t,e,n){var a;if(t.parentId===e)return n;let s=n.map(d=>new zn(d));const i=new Map(s.map(d=>[d.name,d])),o=s.find(d=>d.name===t.parentId),r=s.find(d=>d.name===e),l=s.find(d=>d.name===t.id);if(o!=null&&(o.children=o.children.filter(d=>d!==t.id),o.children.length===0)){const d=new Set([o.name]),{parent:c=""}=o;let u=i.get(c);for(u==null||u.removeChildren([o.name]);u&&u.children.length===0;){d.add(u.name);const m=(a=u==null?void 0:u.parent)!=null?a:"",p=i.get(m);p==null||p.removeChildren([u.name]),u=p}s=s.filter(({name:m})=>!d.has(m))}return r!=null&&r.addChildren([t.id]),l==null||l.setParent(e!=null?e:void 0),s}const DE=150,wt=class extends w.exports.Component{constructor(t){super(t),this.debouncedSearchColumns=je(this.searchColumns,DE),this.handleGroupColorChange=Zn((e,n)=>{const{columnHeaderGroups:s,onColumnHeaderGroupChanged:i}=this.props,o=[...s],r=new zn({...e,color:n});o.splice(o.findIndex(({name:l})=>l===e.name),1,r),i(o)},250),this.renderItem=fe(({value:e,clone:n,item:s,ref:i,handleProps:o})=>{const{onColumnVisibilityChanged:r}=this.props,{selectedColumns:l}=this.state;let a=e;return n&&(a=this.getSelectedParentItems().map(({id:c})=>c).join(", ")),h(lE,{ref:i,value:a,clone:n,item:s,childCount:l.size,onVisibilityChange:r,onClick:this.handleItemClick,onGroupDelete:this.handleGroupDelete,onGroupColorChange:this.handleGroupColorChange,onGroupNameChange:this.handleGroupNameChange,validateGroupName:this.validateGroupName,handleProps:o})}),this.getMemoizedFirstMovableIndex=fe((e,n,s)=>{for(let i=0;i<n.length;i+=1){const o=j.getModelIndex(i,s);if(e.isColumnMovable(o))return i}return null}),this.getMemoizedLastMovableIndex=fe((e,n,s)=>{for(let i=n.length-1;i>=0;i-=1){const o=j.getModelIndex(i,s);if(e.isColumnMovable(o))return i}return null}),this.memoizedGetTreeItems=fe((e,n,s,i,o)=>cE(e,n,s,i,[...o.values()])),this.makeVisibilityOrderingList=fe((e,n)=>{const{movedColumns:s}=this.props,i=[],o=this.getFirstMovableIndex(),r=this.getLastMovableIndex(),l=n.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[0]===o:c.visibleIndex===o),a=n.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[1]===r:c.visibleIndex===r),d=n.slice(l,a+1);if(o==null||r===null){for(let c=0;c<e.length;c+=1){const u=j.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}return i}for(let c=0;c<o;c+=1){const u=j.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}o!==null&&o>0&&i.push(h("hr",{},"top-horizontal-divider")),i.push(h(IE,{items:d,renderItem:this.renderItem,onDragStart:this.handleDragStart,onDragEnd:this.handleDragEnd},"movable-items")),r!=null&&r<e.length-1&&i.push(h("hr",{},"bottom-horizontal-divider"));for(let c=r+1;c<e.length;c+=1){const u=j.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}return i}),this.renderImmovableItem=fe(e=>h("div",{className:"visibility-ordering-list-item immovable",children:h("div",{className:"column-item",children:h("span",{className:"column-name",children:e})})},e)),this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupDelete=this.handleGroupDelete.bind(this),this.handleGroupNameChange=this.handleGroupNameChange.bind(this),this.handleGroupCreate=this.handleGroupCreate.bind(this),this.validateGroupName=this.validateGroupName.bind(this),this.addColumnToSelected=this.addColumnToSelected.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.state={selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:t,onColumnVisibilityChanged:e,onMovedColumnsChanged:n,onColumnHeaderGroupChanged:s}=this.props,{columns:i}=t;e(i.map((o,r)=>r),!0),this.setState({selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""}),s(t.initialColumnHeaderGroups),n(t.initialMovedColumns)}resetSelection(){this.setState({selectedColumns:new Set,lastSelectedColumn:""})}handleSearchInputChange(t){const e=t.target.value;if(this.setState({searchFilter:e}),!e){this.debouncedSearchColumns.cancel(),this.resetSelection();return}this.debouncedSearchColumns(e)}searchColumns(t){var o;const e=fn(this.getTreeItems()),s=e.filter(({id:r})=>r.toLowerCase().includes(t.toLowerCase())).map(({id:r})=>r),i=e.findIndex(({id:r})=>r.toLowerCase().includes(t.toLowerCase()));if(this.addColumnToSelected(s,!1),s.length>0){const r=(o=this.list)==null?void 0:o.querySelectorAll(".item-wrapper")[i];r==null||r.scrollIntoView({block:"center"})}}moveSelectedColumns(t){var c;const{columnHeaderGroups:e}=this.props,{selectedColumns:n}=this.state,s=fn(this.getTreeItems());let i=this.getFirstMovableIndex(),o=this.getLastMovableIndex();P(i),P(o);const r=this.getSelectedParentItems();t===wt.MOVE_OPTIONS.UP||t===wt.MOVE_OPTIONS.TOP||r.reverse();let a=[],d=e;for(let u=0;u<r.length;u+=1){const{id:m,parentId:p,depth:g,data:{visibleIndex:f}}=r[u];switch(t){case wt.MOVE_OPTIONS.TOP:{a=j.moveItemOrRange(f,i,a,!0),i+=Array.isArray(f)?f[1]-f[0]+1:1,d=Vs(r[u],null,d);break}case wt.MOVE_OPTIONS.BOTTOM:{a=j.moveItemOrRange(f,o,a,!0),o-=Array.isArray(f)?f[1]-f[0]+1:1,d=Vs(r[u],null,d);break}case wt.MOVE_OPTIONS.UP:{const b=s.findIndex(v=>v.id===m),C=s.map((v,y)=>y<b&&!n.has(v.id)).lastIndexOf(!0),S=s[C];if(S!=null&&S.parentId!==p)if(Math.abs(S.depth-g)>1){const v=s.map((E,I)=>I<C&&E.depth===g).lastIndexOf(!0),y=s[v];d=Vs(r[u],y.id,d)}else d=Vs(r[u],S.parentId,d);else{const v=Qe(Array.isArray(f)?f[0]-1:f-1,i,o);a=j.moveItemOrRange(f,v,a,!1),i+=Array.isArray(f)?f[1]-f[0]+1:1}break}case wt.MOVE_OPTIONS.DOWN:{const b=s.findIndex(y=>y.id===m),C=s.find((y,E)=>E>b&&!n.has(y.id));if((C==null?void 0:C.parentId)!==p){const y=s.find(E=>E.id===p);d=Vs(r[u],(c=y==null?void 0:y.parentId)!=null?c:null,d);break}else if((C==null?void 0:C.children.length)>0){d=Vs(r[u],C.id,d);break}const S=Qe(Array.isArray(f)?f[0]+1:f+1,i,o);a=j.moveItemOrRange(f,S,a,!1),o-=Array.isArray(f)?f[1]-f[0]+1:1;break}}}return{newMoves:a,groups:d}}handleMoveColumns(t){const{onMovedColumnsChanged:e,movedColumns:n,onColumnHeaderGroupChanged:s}=this.props,{newMoves:i,groups:o}=this.moveSelectedColumns(t);let r;t===wt.MOVE_OPTIONS.TOP&&(r=()=>{var l,a;(a=(l=this.list)==null?void 0:l.parentElement)==null||a.scroll({top:0})}),t===wt.MOVE_OPTIONS.BOTTOM&&(r=()=>{var l,a;(a=(l=this.list)==null?void 0:l.parentElement)==null||a.scroll({top:this.list.parentElement.scrollHeight})}),s(o),i.length>0&&e(n.concat(i),r)}getSortMoves(t,e,n){const s=[...t],i=e===wt.SORTING_OPTIONS.ASC;s.sort((l,a)=>{const d=l.id.toUpperCase(),c=a.id.toUpperCase();return nn.sort(d,c,i)});let o=[...n],r=Math.min(...s.flatMap(l=>{const{modelIndex:a}=l.data;return Array.isArray(a)?j.getVisibleIndexes(a,o):j.getVisibleIndex(a,o)}));for(let l=0;l<s.length;l+=1){const a=s[l],{modelIndex:d}=a.data,c=Array.isArray(d)?j.getVisibleIndexes(d,o):j.getVisibleIndex(d,o);o=Array.isArray(c)?j.moveRange([Math.min(...c),Math.max(...c)],r,o,!0):j.moveItem(c,r,o),Array.isArray(c)&&(o=this.getSortMoves(a.children,e,o)),r+=Array.isArray(d)?d.length:1}return o}handleSortColumns(t){const{model:e,onMovedColumnsChanged:n}=this.props,s=this.getSortMoves(this.getTreeItems(),t,e.initialMovedColumns);n(s)}handleItemClick(t,e){if(e.stopPropagation(),e.target instanceof HTMLElement&&(e.target.tagName==="BUTTON"||e.target.tagName==="INPUT"))return;e.currentTarget.focus();const{selectedColumns:n,lastSelectedColumn:s}=this.state,i=j.isModifierKeyDown(e),o=e.shiftKey,r=n.has(t),l=[t];if(r&&i){this.removeColumnFromSelected(t);return}const a=fn(this.getTreeItems());if(r&&!o&&s===t){const d=a.find(({id:u})=>u===t);if(P(d),fn(d.children).length+1===n.size){this.resetSelection();return}}if(o){const d=a.findIndex(u=>u.id===t),c=a.findIndex(u=>u.id===s);l.push(...a.slice(Math.min(c,d),Math.max(c,d)+1).map(u=>u.id))}this.addColumnToSelected(l,i||o),this.setState({lastSelectedColumn:t})}addColumnToSelected(t,e){const{selectedColumns:n}=this.state,s=new Set(e?[...n.values()].concat(t):t);fn(this.getTreeItems()).forEach(({id:o,children:r})=>{s.has(o)&&r.forEach(l=>s.add(l.id))}),this.setState({selectedColumns:s})}removeColumnFromSelected(t){const{selectedColumns:e}=this.state,n=fn(this.getTreeItems()),s=n.find(({id:o})=>o===t);P(s);let i=n.find(({id:o})=>o===s.parentId);for(fn(s==null?void 0:s.children).forEach(o=>e.delete(o.id));i!=null;){e.delete(i.id);const o=i.parentId;i=n.find(({id:r})=>r===o)}e.delete(t),this.setState({selectedColumns:new Set(e)})}handleDragStart(t){const{selectedColumns:e}=this.state;e.has(t)||this.addColumnToSelected([t],!1)}handleDragEnd(t,e){const{movedColumns:n,onMovedColumnsChanged:s,columnHeaderGroups:i,onColumnHeaderGroupChanged:o}=this.props,r=this.getSelectedParentItems(),l=fn(this.getTreeItems()).map((m,p)=>({...m,index:p})),a=this.getFirstMovableIndex(),d=this.getLastMovableIndex();P(a),P(d);const{groups:c,movedColumns:u}=RE(t,e,n,i,l,r,a,d);o(c),s(u)}handleGroupNameChange(t,e){const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],o=t.name,r=i.findIndex(({name:c})=>c===o),l=i[r];P(l);const a=new zn(l);a.name=e,i.splice(r,1,a);const d=i.findIndex(({name:c})=>c===a.parent);if(d>=0){const c=new zn(i[d]);c.removeChildren([o]),c.addChildren([e]),i.splice(d,1,c)}s(i)}handleGroupDelete(t){const{columnHeaderGroups:e,onColumnHeaderGroupChanged:n}=this.props,s=e.filter(o=>o.name!==t.name),i=s.findIndex(o=>o.name===t.parent);if(i>=0){const o=new zn(s[i]);o.addChildren(t.children),o.removeChildren([t.name]),s.splice(i,1,o)}n(s)}handleGroupCreate(){const{movedColumns:t,onMovedColumnsChanged:e,onColumnHeaderGroupChanged:n}=this.props,{newMoves:s,groups:i}=this.moveSelectedColumns(wt.MOVE_OPTIONS.TOP),o=i.filter(c=>!c.isNew),r=this.getSelectedParentItems(),l=r.map(c=>c.data.modelIndex).flat().filter(c=>c>=0),a=`${zn.NEW_GROUP_PREFIX}-${Date.now()}`,d=new zn({name:a,children:r.map(({id:c})=>c),depth:0,childIndexes:[...new Set(l)]});e(t.concat(s),()=>{var c,u;(u=(c=this.list)==null?void 0:c.parentElement)==null||u.scroll({top:0})}),n(o.concat([d])),this.resetSelection()}validateGroupName(t){const{model:e,columnHeaderGroups:n}=this.props,{columns:s}=e;return Jn.isValidColumnName(t)?s.some(({name:i})=>i===t)||n.some(({name:i})=>i===t)?"Duplicate name":"":"Invalid name"}getFirstMovableIndex(){const{model:t,movedColumns:e}=this.props;return this.getMemoizedFirstMovableIndex(t,t.columns,e)}getLastMovableIndex(){const{model:t,movedColumns:e}=this.props;return this.getMemoizedLastMovableIndex(t,t.columns,e)}getTreeItems(){const{model:t,movedColumns:e,userColumnWidths:n,columnHeaderGroups:s}=this.props,{selectedColumns:i}=this.state;return this.memoizedGetTreeItems(t.columns,e,s,n,i)}getSelectedParentItems(){const{selectedColumns:t}=this.state;return fn(this.getTreeItems()).filter(({id:n,parentId:s})=>t.has(n)&&!t.has(s!=null?s:""))}render(){const{model:t,userColumnWidths:e,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,o=s.size>0,r=this.getTreeItems(),l=new Map(fn(r).map(p=>[p.id,p.data.modelIndex])),a=[...new Set(o?[...s.values()].map(p=>l.get(p)).filter(p=>p!=null).flat():r.map(p=>p.data.modelIndex).flat())],d=!j.checkAllColumnsHidden(a,e),c=d?"Hide All":"Show All",u=d?"Hide Selected":"Show Selected",m=this.makeVisibilityOrderingList(t.columns,r);return T("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,children:[T("div",{className:"top-menu",children:[h(W,{kind:"ghost",className:"toggle-visibility-btn",onClick:()=>{n(a,!d)},icon:d?Rd:ku,tooltip:"Toggle column visibility",children:o?u:c}),h(ws,{className:"visibility-search",value:i,matchCount:i?s.size:void 0,onChange:this.handleSearchInputChange})]}),T("div",{className:"top-menu",children:[h(W,{kind:"ghost",icon:di,tooltip:"Reset to default",onClick:()=>{this.resetVisibilityOrdering()},children:"Reset"}),h("span",{className:"vertical-divider"}),h(W,{kind:"ghost",icon:Nd,tooltip:"Sort ascending",onClick:()=>{this.handleSortColumns(wt.SORTING_OPTIONS.ASC)}}),h(W,{kind:"ghost",icon:Fd,tooltip:"Sort descending",onClick:()=>{this.handleSortColumns(wt.SORTING_OPTIONS.DSC)}}),h("span",{className:"vertical-divider"}),T(W,{kind:"ghost",tooltip:"Create group from selection",disabled:!o,onClick:this.handleGroupCreate,children:[T("span",{className:"fa-layers",style:{marginRight:"0.75rem"},children:[h(Z,{mask:WC,icon:Zi,transform:"right-7 down-5 shrink-6"}),h(Z,{icon:dC,transform:"right-8 down-6 shrink-8"})]}),"Group"]}),h("span",{className:"vertical-divider"}),h(W,{kind:"ghost",icon:pC,tooltip:"Move selection up",onClick:()=>{this.handleMoveColumns(wt.MOVE_OPTIONS.UP)},disabled:!o}),h(W,{kind:"ghost",icon:uC,tooltip:"Move selection down",onClick:()=>{this.handleMoveColumns(wt.MOVE_OPTIONS.DOWN)},disabled:!o}),h(W,{kind:"ghost",icon:qC,tooltip:"Move selection to top",onClick:()=>{this.handleMoveColumns(wt.MOVE_OPTIONS.TOP)},disabled:!o}),h(W,{kind:"ghost",icon:KC,tooltip:"Move selection to bottom",onClick:()=>{this.handleMoveColumns(wt.MOVE_OPTIONS.BOTTOM)},disabled:!o})]}),h("div",{role:"menu",className:z("visibility-ordering-list"),children:h("div",{className:"column-list",ref:p=>{this.list=p},children:m})})]})}};let ac=wt;ac.SORTING_OPTIONS={DSC:"DSC",ASC:"ASC"};ac.MOVE_OPTIONS={TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"};class Gr extends w.exports.PureComponent{constructor(e){super(e),this.handleSearchValueChange=this.handleSearchValueChange.bind(this),this.toggleColumn=this.toggleColumn.bind(this),this.selectAll=this.selectAll.bind(this),this.clear=this.clear.bind(this),this.selectNumbers=this.selectNumbers.bind(this),this.searchField=Y.createRef(),this.state={isConfigureColumnsShown:!1}}static createSearchFilter(e,n,s,i){const o=i?s.filter(r=>!n.includes(r.name)).map(r=>r.name):n;if(e&&o.length>0){const r=M.FilterValue.ofString(e);return o.length===s.length?M.FilterCondition.search(r):M.FilterCondition.search(r,s.filter(a=>o.includes(a.name)).map(a=>a.filter()))}}focus(){var e;(e=this.searchField.current)==null||e.focus()}handleSearchValueChange(e){const{onChange:n,selectedColumns:s,invertSelection:i}=this.props;n(e.target.value,s,i)}sendColumnChange(e,n){const{onChange:s,value:i}=this.props;s(i,e,n)}setInvertSelection(e){const{onChange:n,value:s}=this.props;n(s,[],e)}toggleColumn(e){const{selectedColumns:n,invertSelection:s}=this.props;if(n.includes(e))this.sendColumnChange(n.filter(i=>i!==e),s);else{const i=n.slice();i.push(e),this.sendColumnChange(i,s)}}selectAll(){this.setInvertSelection(!0)}clear(){this.setInvertSelection(!1)}selectNumbers(){const{columns:e}=this.props;this.sendColumnChange(e.filter(n=>L.isNumberType(n.type)).map(n=>n.name),!1)}render(){const{value:e,selectedColumns:n,invertSelection:s,columns:i}=this.props,{isConfigureColumnsShown:o}=this.state,r=n.length===0&&s===!0||n.length===i.length&&s===!1,l=n.length===0&&s===!1||n.length===i.length&&s===!0;let a;return r?a=T(we,{children:[h(Z,{icon:ml,mask:va,transform:"shrink-2 down-5 right-7"}),h(Z,{icon:YC,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?a=T(we,{children:[h(Z,{icon:Zi,mask:va,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:Kc,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):a=T(we,{children:[h(Z,{icon:ml,mask:va,transform:"shrink-2 down-5 right-7"}),h(Z,{icon:ab,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),T("div",{className:"cross-column-container",children:[h(ws,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2",onClick:()=>{o?this.setState({isConfigureColumnsShown:!1}):this.setState({isConfigureColumnsShown:!0})},children:[h("div",{className:"fa-layers",children:a}),h(ze,{children:"Configure Columns"}),h(_n,{isShown:o,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:T("div",{className:"cross-column-popup",children:["Searched Columns",h("div",{className:"cross-column-scroll",children:i.map(d=>T(Y.Fragment,{children:[h(St,{className:"cross-column-checkbox",checked:s?!n.includes(d.name):n.includes(d.name),onChange:()=>this.toggleColumn(d.name),children:d.name}),d.type.substring(d.type.lastIndexOf(".")+1)]},d.name))}),T("div",{className:"cross-column-button-bar",children:[h("button",{type:"button",className:"btn btn-link",onClick:this.selectAll,children:"Select All"}),h("button",{type:"button",className:"btn btn-link",onClick:this.clear,children:"Clear"}),h("button",{type:"button",className:"btn btn-link",onClick:this.selectNumbers,children:"Numbers Only"})]}),l&&T("p",{className:"text-danger",children:[h(Z,{icon:Kc})," Select at least one column to search."]})]})})]})]})}}const Os=X.module("PartitionSelectorSearch"),ME=150,zp=class extends w.exports.Component{constructor(t){super(t),this.debounceUpdateFilter=je(()=>{this.updateFilter()},ME),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleInputFocus=this.handleInputFocus.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleListKeydown=this.handleListKeydown.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTextChange=this.handleTextChange.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.itemList=null,this.searchInput=null,this.timer=null,this.state={offset:0,itemCount:0,items:[],text:"",isLoading:!0}}static handleError(t){t instanceof Qi||Os.error(t)}componentDidMount(){this.startListening()}componentDidUpdate(t,e){const{isLoading:n,itemCount:s}=this.state,{onListResized:i}=this.props;(s!==e.itemCount||n!==e.isLoading)&&i()}componentWillUnmount(){this.debounceUpdateFilter.cancel(),this.stopListening()}handleKeyDown(t){if(this.itemList==null)return!1;const{items:e,itemCount:n}=this.state;switch(t.key){case"Enter":{let s=null;if(e.length>0)s=e[0].value;else{const{text:i}=this.state;s=i.trim()}if(s.length>0){const{onSelect:i}=this.props;i(s)}return t.stopPropagation(),t.preventDefault(),!0}case"ArrowDown":return n>0&&this.itemList.focusItem(1),t.stopPropagation(),t.preventDefault(),!0;default:return!1}}handleListKeydown(t){switch(t.key){case"Escape":break;default:this.focus();break}}handleFilterChange(){Os.debug2("handleFilterChange");const{table:t}=this.props,e=t.size;this.setState({itemCount:e,isLoading:!0})}handleInputFocus(){this.itemList&&this.itemList.focusItem(0)}handleSelect(t){Os.debug2("handleSelect",t);const{onSelect:e}=this.props,{offset:n,items:s}=this.state,i=t-n;if(i<0||s.length<=i){Os.error("No data for item",t);return}const{value:o}=s[i];e(o)}handleTableUpdate(t){const e=t.detail,{offset:n}=e,s=[],{getFormattedString:i,table:o}=this.props,r=o.columns[0];for(let a=0;a<e.rows.length;a+=1){const c=e.rows[a].get(r),u=i(c,r.type,r.name);s.push({displayValue:u,value:c})}const l=o.size;Os.debug2("handleTableUpdate",l,n,s.length),this.setState({itemCount:l,items:s,offset:n,isLoading:!1})}handleTextChange(t){Os.debug2("handleTextChange");const{value:e}=t.target;this.setState({text:e}),this.debounceUpdateFilter()}handleViewportChange(t,e){Os.debug2("handleViewportChange",t,e);const n=Math.max(1,e-t),s=Math.max(0,t-n),i=e+n,{table:o}=this.props;o.setViewport(s,i)}focus(){this.searchInput&&this.searchInput.focus()}startListening(){const{initialPageSize:t,table:e}=this.props;e.addEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),e.addEventListener(M.Table.EVENT_FILTERCHANGED,this.handleFilterChange),e.setViewport(0,t)}stopListening(){const{table:t}=this.props;t.removeEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),t.removeEventListener(M.Table.EVENT_FILTERCHANGED,this.handleFilterChange)}updateFilter(){const{initialPageSize:t,table:e}=this.props,{text:n}=this.state,s=n.trim(),i=[];if(s.length>0){const r=e.columns[0].filter().invoke("matches",M.FilterValue.ofString(`(?s)(?i).*\\Q${s}\\E.*`));i.push(r)}Os.debug2("updateFilter",i),e.applyFilter(i),e.setViewport(0,t)}render(){const{isLoading:t,itemCount:e,items:n,offset:s,text:i}=this.state,o=Math.min(e,zp.MAX_VISIBLE_ITEMS)*wn.DEFAULT_ROW_HEIGHT+11;return T("div",{className:"iris-grid-partition-selector-search",children:[h("div",{className:"search-container",children:h("input",{type:"text",ref:r=>{this.searchInput=r},value:i,placeholder:"Available Partitions",onChange:this.handleTextChange,onFocus:this.handleInputFocus,onKeyDown:this.handleKeyDown,className:"form-control input-partition"})}),!t&&e>0&&h("div",{className:"iris-grid-partition-selector-search-list",onKeyDown:this.handleListKeydown,role:"presentation",style:{height:o},children:h(wn,{ref:r=>{this.itemList=r},itemCount:e,items:n,offset:s,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange})}),!t&&e===0&&h("div",{className:"iris-grid-partition-selector-search-empty",children:"No results"}),t&&T("div",{className:"iris-grid-partition-selector-loading",children:[h(kn,{}),"\xA0Loading..."]})]})}};let sa=zp;sa.MAX_VISIBLE_ITEMS=12;sa.defaultProps={initialPageSize:100,onSelect:()=>{},onListResized:()=>{}};sa.propTypes={getFormattedString:D.exports.func.isRequired,table:D.exports.shape({addEventListener:D.exports.func.isRequired,removeEventListener:D.exports.func.isRequired,columns:D.exports.arrayOf(D.exports.shape({name:D.exports.string.isRequired,type:D.exports.string.isRequired,filter:D.exports.func.isRequired})),size:D.exports.number.isRequired,applyFilter:D.exports.func.isRequired,setViewport:D.exports.func.isRequired}).isRequired,initialPageSize:D.exports.number,onSelect:D.exports.func,onListResized:D.exports.func};const ki=X.module("IrisGridPartitionSelector"),NE=250;class Gp extends w.exports.Component{constructor(e){super(e),this.debounceUpdate=je(()=>{this.sendUpdate()},NE),this.handleAppendClick=this.handleAppendClick.bind(this),this.handleCloseClick=this.handleCloseClick.bind(this),this.handleIgnoreClick=this.handleIgnoreClick.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionSelect=this.handlePartitionSelect.bind(this),this.handlePartitionListResized=this.handlePartitionListResized.bind(this),this.handleSearchOpened=this.handleSearchOpened.bind(this),this.handleSearchClosed=this.handleSearchClosed.bind(this),this.searchMenu=null,this.selectorSearch=null;const{partition:n}=e;this.state={partition:n}}componentWillUnmount(){this.debounceUpdate.cancel()}handleAppendClick(){ki.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:n}=this.state;e(n)}handleCloseClick(){ki.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){ki.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){ki.debug2("handlePartitionChange");const{value:n}=e.target;this.setState({partition:n}),this.debounceUpdate()}handlePartitionSelect(e){this.searchMenu&&this.searchMenu.closeMenu(),this.setState({partition:e},()=>{this.sendUpdate()})}handlePartitionListResized(){this.searchMenu&&this.searchMenu.scheduleUpdate()}handleSearchClosed(){const{table:e}=this.props;e.applyFilter([])}handleSearchOpened(){this.selectorSearch&&this.selectorSearch.focus()}sendDone(){this.debounceUpdate.flush();const{onDone:e}=this.props;e()}sendUpdate(){ki.debug2("sendUpdate");const{onChange:e}=this.props,{partition:n}=this.state;e(n)}sendFetchAll(){ki.debug2("sendFetchAll"),this.debounceUpdate.cancel();const{onFetchAll:e}=this.props;e()}render(){const{columnName:e,getFormattedString:n,onDone:s,table:i}=this.props,{partition:o}=this.state,r=h(sa,{getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:l=>{this.selectorSearch=l}},"search");return T("div",{className:"iris-grid-partition-selector",children:[h("div",{className:"status-message",children:T("span",{children:['Filtering "',e,'" partition to']})}),T("div",{className:"input-group",children:[h("input",{type:"text",value:o,onChange:this.handlePartitionChange,className:"form-control input-partition"}),h("div",{className:"input-group-append",children:T("button",{type:"button",className:"btn btn-outline-primary",children:[h(Z,{icon:qn}),h(ze,{children:"Partitions"}),h(Nn,{ref:l=>{this.searchMenu=l},actions:[{menuElement:r}],onMenuOpened:this.handleSearchOpened,onMenuClosed:this.handleSearchClosed})]})})]}),h("div",{className:"iris-grid-partition-selector-spacer"}),h("button",{type:"button",className:"btn btn-outline-primary btn-ignore",onClick:this.handleIgnoreClick,children:"Ignore & Fetch All"}),h("button",{type:"button",className:"btn btn-outline-primary btn-append",onClick:this.handleAppendClick,children:"Append Command"}),h("button",{type:"button",className:"btn btn-link btn-link-icon btn-close",onClick:s,children:h(Z,{icon:oo})})]})}}Gp.defaultProps={onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""};const FE=X.module("SelectDistinctBuilder");class Kp extends w.exports.Component{constructor(e){super(e),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleDropdownChanged=this.handleDropdownChanged.bind(this);const{model:n,selectDistinctColumns:s}=this.props;this.state={inputs:s.length>0?[...s]:[""],columns:n.originalColumns}}componentDidUpdate(e,n){const{inputs:s}=this.state,{onChange:i}=this.props;if(n.inputs!==s){const o=s.filter(r=>r!=="");ut(n.inputs.filter(r=>r!==""),o)||i(o)}}handleAddColumnClick(){this.setState(({inputs:e})=>({inputs:[...e,""]}))}handleDeleteColumn(e){this.setState(({inputs:n})=>({inputs:n.length===1&&e===0?[""]:n.filter((s,i)=>e!==i)}))}handleDropdownChanged(e,n){FE.debug("handleDropdownChanged",e,n);const{value:s}=n.target;this.setState(({inputs:i})=>{const o=[...i];return o[e]=s,{inputs:o}})}renderInputs(){const{columns:e,inputs:n}=this.state;return n.map((s,i)=>{const o=e.filter(({name:r})=>r===s||!n.includes(r)).map(({name:r})=>h("option",{value:r,children:r},r));return T("div",{className:"form-inline px-3 pb-3",children:[T("select",{className:"form-control custom-select col",value:s,onChange:r=>this.handleDropdownChanged(i,r),children:[h("option",{value:"",children:"Select a column"}),o]}),(n.length>1||s!=="")&&h(W,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(i)},icon:h(Z,{icon:hn,transform:"grow-3"}),tooltip:"Delete column"})]},i)})}render(){const{columns:e,inputs:n}=this.state,s=n.length>=e.length;return T("div",{role:"presentation",className:"select-distinct-builder-container h-100",children:[h("div",{className:"select-distinct-title",children:"Display Unique Values From"}),this.renderInputs(),h("hr",{}),h("div",{className:"pt-1 px-3",children:h(W,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:s,icon:zs,children:"Add Additional Column"})}),h("div",{className:"select-distinct-builder-footer",children:T("div",{className:"select-distinct-builder-hint",children:["Modifies a table to show unique value from a column, same as"," ",h("span",{className:"inline-code-snippet",children:'selectDistinct("Column")'}),". Filters will be reset and the resulting table will contain only the selected columns above."]})})]})}}Kp.defaultProps={selectDistinctColumns:[],onChange:()=>{}};function dc({items:t,onChange:e=()=>{}}){return h(em,{items:Array.from(t.entries()).map(([n,s])=>({title:dc.getAdvancedSettingsTitleForKey(n),isOn:s,onChange:i=>e(n,i)}))})}dc.getAdvancedSettingsTitleForKey=t=>{switch(t){case bi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Control filters clear existing table filters";case bi.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Inbound links clear existing table filters"}};const $h=X.module("ConditionalFormattingMenu"),xa=()=>{};function xE(t){const{column:{type:e}}=t;if(L.isNumberType(e))return t.condition===Xe.IS_NULL||t.condition===Xe.IS_NOT_NULL?"":`${t.value}`;if(L.isCharType(e))return t.condition===Ut.IS_NULL||t.condition===Ut.IS_NOT_NULL?"":`${t.value}`;if(L.isStringType(e))return t.condition===on.IS_NULL||t.condition===on.IS_NOT_NULL?"":`"${t.value}"`;if(L.isDateType(e))return t.condition===Ut.IS_NULL||t.condition===Ut.IS_NOT_NULL?"":`${t.value}`;if(L.isBooleanType(e))return"";throw new Error(`Invalid column type ${e} in getRuleValue`)}function _E(t){return L.isNumberType(t.column.type)&&t.condition===Xe.IS_BETWEEN?`${t.start} < ${t.column.name} < ${t.end}`:`${t.column.name} ${hT(t.column.type,t.condition)}
|
|
35
|
-
${xE(t)}`}function kE(t){const{rules:e=[],onChange:n=xa,onCreate:s=xa,onSelect:i=xa}=t,o=w.exports.useCallback((d,c,u)=>{d.stopPropagation(),$h.debug("Rule clicked",c,u),i(u)},[i]),r=w.exports.useCallback((d,c,u)=>{d.stopPropagation(),$h.debug("Delete button clicked",c,u);const m=[...e];m.splice(u,1),n(m)},[n,e]),l=w.exports.useCallback(d=>{d.stopPropagation()},[]),a=w.exports.useCallback(d=>{if(jt.stopDragging(),d.destination==null)return;const c=d.source.index,u=d.destination.index,m=[...e],p=e[c];m.splice(c,1),m.splice(u,0,p),n(m)},[n,e]);return T("div",{className:"conditional-formatting-rules",children:[h(_l,{onDragStart:jt.startDragging,onDragEnd:a,children:h(xl,{droppableId:"droppable-custom-columns",children:(d,c)=>T("div",{ref:d.innerRef,...d.droppableProps,className:z("droppable-container",{dragging:c.draggingFromThisWith}),children:[e.length===0&&h("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>h(Cd,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(p,g)=>h("div",{role:"menuitem",tabIndex:0,onClick:f=>o(f,u,m),className:z("draggable-container",{dragging:g.isDragging}),ref:p.innerRef,...p.draggableProps,children:h("div",{className:"conditional-formatting-list-item",children:T("div",{className:"formatting-item",children:[h("div",{className:"rule-icon",children:h("span",{className:"rule-icon-bg",style:{backgroundColor:Tl(u.config.style),color:El(u.config.style)},children:u.type===Qn.ROWS?"row":"col"})}),h("div",{className:"rule-title",children:_E(u.config)}),h(W,{kind:"ghost",className:"ml-1 px-2",onClick:f=>r(f,u,m),icon:hn,tooltip:"Delete rule"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...p.dragHandleProps,children:[h(ze,{children:"Drag to re-order"}),h(Z,{icon:rr})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),h("hr",{}),h(W,{kind:"ghost",onClick:s,icon:zs,children:"Add New Rule"})]})}const Oi=X.module("ConditionEditor"),OE=()=>{},LE=[Xe.IS_EQUAL,Xe.IS_NOT_EQUAL,Xe.IS_BETWEEN,Xe.GREATER_THAN,Xe.GREATER_THAN_OR_EQUAL,Xe.LESS_THAN,Xe.LESS_THAN_OR_EQUAL,Xe.IS_NULL,Xe.IS_NOT_NULL].map(t=>h("option",{value:t,children:Xv(t)},t)),AE=[on.IS_EXACTLY,on.IS_NOT_EXACTLY,on.CONTAINS,on.DOES_NOT_CONTAIN,on.STARTS_WITH,on.ENDS_WITH,on.IS_NULL,on.IS_NOT_NULL].map(t=>h("option",{value:t,children:jv(t)},t)),PE=[Ut.IS_EXACTLY,Ut.IS_NOT_EXACTLY,Ut.IS_BEFORE,Ut.IS_BEFORE_OR_EQUAL,Ut.IS_AFTER,Ut.IS_AFTER_OR_EQUAL,Ut.IS_NULL,Ut.IS_NOT_NULL].map(t=>h("option",{value:t,children:Zv(t)},t)),HE=[$o.IS_TRUE,$o.IS_FALSE,$o.IS_NULL,$o.IS_NOT_NULL].map(t=>h("option",{value:t,children:Qv(t)},t)),UE=[ui.IS_EQUAL,ui.IS_NOT_EQUAL,ui.IS_NULL,ui.IS_NOT_NULL].map(t=>h("option",{value:t,children:Jv(t)},t));function VE(t,e,n,s){return t===Xe.IS_NULL||t===Xe.IS_NOT_NULL||t===Xe.IS_BETWEEN&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))&&s!=null&&s!==""&&!Number.isNaN(Number.parseFloat(s))||t!==Xe.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function BE(t,e,n,s,i,o,r){switch(t){case Xe.IS_EQUAL:case Xe.IS_NOT_EQUAL:case Xe.GREATER_THAN:case Xe.GREATER_THAN_OR_EQUAL:case Xe.LESS_THAN:case Xe.LESS_THAN_OR_EQUAL:return h("input",{type:"number",className:"form-control",placeholder:"Enter value",value:i!=null?i:"",onChange:e});case Xe.IS_BETWEEN:return T("div",{className:"d-flex flex-row",children:[h("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:o!=null?o:"",onChange:n}),h("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:r!=null?r:"",onChange:s})]});case Xe.IS_NULL:case Xe.IS_NOT_NULL:return null}}function $E(t,e,n){switch(t){case on.IS_NULL:case on.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function WE(t,e,n){switch(t){case Ut.IS_NULL:case Ut.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function zE(){return null}function GE(t,e,n){switch(t){case ui.IS_NULL:case ui.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function qp(t){const{column:e,config:n,onChange:s=OE}=t,i=e.type,[o,r]=w.exports.useState(i),[l,a]=w.exports.useState(n.condition),[d,c]=w.exports.useState(n.value),[u,m]=w.exports.useState(n.start),[p,g]=w.exports.useState(n.end);i!==o&&(a(Ep(i)),c(void 0),m(void 0),g(void 0),r(i));const f=w.exports.useMemo(()=>{if(i===void 0)return[];if(L.isNumberType(i))return LE;if(L.isCharType(i))return UE;if(L.isStringType(i))return AE;if(L.isDateType(i))return PE;if(L.isBooleanType(i))return HE},[i]),b=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleConditionChange",I),a(I)},[]),C=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleValueChange",I),c(I)},[]),S=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleStartValueChange",I),m(I)},[]),v=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleEndValueChange",I),g(I)},[]);w.exports.useEffect(function(){let I=!0;l===void 0&&(Oi.debug("Unable to create formatting rule. Condition is not selected."),I=!1),L.isNumberType(e.type)&&!VE(l,d,u,p)&&(Oi.debug("Unable to create formatting rule. Invalid value",d),I=!1),s({condition:l,value:d,start:u,end:p},I)},[s,e.type,l,d,u,p]);const y=w.exports.useMemo(()=>{if(i===void 0)return null;if(L.isNumberType(i))return BE(l,C,S,v,d,u,p);if(L.isCharType(i))return GE(l,C,d);if(L.isStringType(i))return $E(l,C,d);if(L.isDateType(i))return WE(l,C,d);if(L.isBooleanType(i))return zE()},[i,l,d,u,p,C,S,v]);return T("div",{className:"condition-editor mb-2",children:[h("select",{value:l,id:"condition-select",className:"custom-select mb-2",onChange:b,children:f}),y]})}const KE=X.module("StyleEditor"),qE="#fcfcfa",YE="#f0f0ee",XE="#1a171a",jE=200,ZE=()=>{};function Yp(t){var v,y;const{config:e,onChange:n=ZE}=t,[s,i]=w.exports.useState(e.type),[o,r]=w.exports.useState((y=(v=e.customConfig)==null?void 0:v.background)!=null?y:qE),[l,a]=w.exports.useState(!1),[d,c]=w.exports.useState(jE),u=w.exports.useRef(null),m=w.exports.useCallback(E=>{const{value:I}=E.target;KE.debug("handleBackgroundChange",I),r(I)},[]),p=w.exports.useCallback(()=>{l&&a(!1)},[l]),g=w.exports.useCallback(()=>{l||b(),a(!l)},[l]),f=w.exports.useMemo(()=>[Bn.NO_FORMATTING,Bn.POSITIVE,Bn.NEGATIVE,Bn.WARN,Bn.NEUTRAL,Bn.ACCENT_1,Bn.ACCENT_2,Bn.CUSTOM],[]);function b(){u.current&&c(u.current.getBoundingClientRect().width)}w.exports.useEffect(function(){n({type:s,customConfig:{color:Ll.isDark(o)?YE:XE,background:o}})},[n,s,o]);const C=w.exports.useCallback(()=>{const E=[];for(let I=0;I<f.length;I+=1){const R=f[I],N=`option-${I}-${R}`;E.push(T(W,{kind:"inline",className:"style-option-btn",onClick:()=>{i(R),a(!1)},style:{color:El({type:R}),background:Tl({type:R})},children:[R===s&&h(Z,{icon:Xn,className:"mr-2"}),R!==s&&h("span",{className:"mr-4"}),Lh(R)]},N))}return E},[f,s]),S=w.exports.useCallback(()=>h("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:h("div",{className:"style-options",children:C()})}),[d,C]);return T("div",{className:"style-editor",children:[T("div",{className:"mb-2",ref:u,children:[h("label",{className:"mb-0",children:"Style"}),T(W,{kind:"inline",className:"cs-dropdown",style:{color:El({type:s}),background:Tl({type:s})},onClick:g,children:[Lh(s),h("span",{children:h(Z,{icon:xd,className:"cs-caret"})}),h(Nn,{isShown:l,actions:{menuElement:S()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:p,menuStyle:{maxWidth:"100rem"}})]})]}),s===Bn.CUSTOM&&T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Background"}),h("input",{type:"color",value:o,className:"custom-select color-select",onChange:m})]})]})}const _o=X.module("ColumnFormatEditor"),QE=()=>{};function JE(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:Ip(),...Jl(e)}}function e1(t){var b;const{columns:e,config:n=JE(e),onChange:s=QE}=t,[i,o]=w.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=w.exports.useState(yp(n)),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState(n.style),m=w.exports.useCallback(C=>{const S=e.find(({name:v})=>v===C);S!==void 0?(o(S),i.type!==S.type&&(l(Jl(S.type)),d(!1))):_o.error(`Column ${C} not found.`)},[e,i]),p=w.exports.useCallback((C,S)=>{_o.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=w.exports.useCallback(C=>{_o.debug("handleStyleChange",C),u(C)},[]);w.exports.useEffect(function(){if(i===void 0){_o.debug("Column is not selected, skip update.");return}if(c===void 0){_o.debug("Style is not selected, skip update.");return}const{type:S,name:v}=i;s({column:{type:S,name:v},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Cell If"}),h(ao,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(we,{children:[h(qp,{column:i,config:r,onChange:p}),h(Yp,{config:c,onChange:g})]})]})}const ko=X.module("RowFormatEditor"),t1=()=>{};function n1(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:Ip(),...Jl(e)}}function s1(t){var b;const{columns:e,config:n=n1(e),onChange:s=t1}=t,[i,o]=w.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=w.exports.useState(yp(n)),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState(n.style),m=w.exports.useCallback(C=>{const S=e.find(({name:v})=>v===C);S!==void 0?(o(S),i.type!==S.type&&(l(Jl(S.type)),d(!1))):ko.error(`Column ${C} not found.`)},[e,i]),p=w.exports.useCallback((C,S)=>{ko.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=w.exports.useCallback(C=>{ko.debug("handleStyleChange",C),u(C)},[]);w.exports.useEffect(function(){if(i===void 0){ko.debug("Column is not selected, skip update.");return}if(c===void 0){ko.debug("Style is not selected, skip update.");return}const{type:S,name:v}=i;s({column:{type:S,name:v},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Row If"}),h(ao,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(we,{children:[h(qp,{column:i,config:r,onChange:p}),h(Yp,{config:c,onChange:g})]})]})}const _a=X.module("ConditionalFormatEditor"),ka=()=>{};function i1(t){switch(t){case Qn.CONDITIONAL:return h(QT,{});case Qn.ROWS:return h(JT,{})}}function o1(t){switch(t){case Qn.CONDITIONAL:return"Conditional";case Qn.ROWS:return"Rows"}}const Wh=[Qn.CONDITIONAL,Qn.ROWS];function r1(t){var C;const{columns:e,onSave:n=ka,onUpdate:s=ka,onCancel:i=ka,rule:o}=t,r=e.filter(mT),[l,a]=w.exports.useState((C=o==null?void 0:o.type)!=null?C:Wh[0]),[d,c]=w.exports.useState(o),[u,m]=w.exports.useState(!1),p=w.exports.useCallback(()=>{i()},[i]),g=w.exports.useCallback(()=>{if(d===void 0){_a.error("Rule is not defined.");return}n(d)},[n,d]),f=w.exports.useCallback(S=>{_a.debug("handleFormatterChange",S),a(S)},[]),b=w.exports.useCallback((S,v)=>{_a.debug("handleRuleChange",S,v,l);const y={type:l,config:S};c(y),m(v),s(v?y:void 0)},[s,l]);return T("div",{className:"conditional-format-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h("div",{className:"formatter-list",children:Wh.map((S,v)=>h("div",{className:"formatter-type",children:T("button",{type:"button",className:z("btn","btn-icon","btn-formatter-type",{active:S===l}),"data-index":v,onClick:()=>f(S),children:[i1(S),o1(S)]})},S))})]}),l===Qn.CONDITIONAL&&h(e1,{columns:r,config:d==null?void 0:d.config,onChange:b}),l===Qn.ROWS&&h(s1,{columns:r,config:d==null?void 0:d.config,onChange:b}),h("hr",{}),T("div",{className:"d-flex justify-content-end my-3",children:[h(W,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),h(W,{kind:"primary",onClick:g,disabled:d===void 0||!u,children:"Done"})]})]})}function l1({text:t,isOpen:e,onClose:n}){var v,y;const[s,i]=w.exports.useState(!1),[o,r]=w.exports.useState(0),[l,a]=w.exports.useState(!1),[d,c]=w.exports.useState(!1),[u,m]=w.exports.useState(!1),p=w.exports.useRef();w.exports.useEffect(function(){if(!!e){try{JSON.parse(t),m(!0)}catch{m(!1)}c(!1)}},[e,t]),w.exports.useEffect(function(){p.current&&p.current.layout()},[o]),w.exports.useEffect(function(){p.current&&p.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function g(){a(!l)}function f(){var I;const E=(I=p.current)==null?void 0:I.getModel();!u||!E||(d?(E.setValue(t),c(!1)):(E.setValue(JSON.stringify(JSON.parse(t),void 0,2)),c(!0)),b())}function b(){var I,R;const E=p.current;!E||a(((R=(I=E.getModel())==null?void 0:I.getLineCount())!=null?R:0)>1)}function C(){s&&(p.current=void 0,n())}function S(E){p.current=E,E.onDidContentSizeChange(({contentHeight:I})=>r(I)),b()}return!e&&!s?null:T(tr,{isOpen:e,centered:!0,keyboard:!0,toggle:C,onOpened:()=>i(!0),onClosed:()=>{i(!1),r(0)},className:"theme-bg-dark cell-overflow-modal",children:[T(sr,{toggle:n,children:[h("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h(Pl,{kind:"inline",tooltip:"Copy cell contents",copy:(y=(v=p.current)==null?void 0:v.getValue())!=null?y:t}),h(W,{kind:"inline",active:l,icon:xC,tooltip:"Toggle line numbers",onClick:g}),u&&h(W,{kind:"inline",icon:DC,active:d,tooltip:"Format as JSON",onClick:f})]}),h(nr,{style:{height:o},children:h(zl,{onEditorInitialized:S,settings:{value:t,readOnly:!0,wordWrap:"on",language:u?"typescript":"plaintext",folding:u,padding:{bottom:16},lineNumbers:l?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}const a1="###,##0";function d1({gotoRow:t,gotoRowError:e,onSubmit:n,isShown:s,onEntering:i,onEntered:o,onExiting:r,onExited:l,model:a,onGotoRowNumberChanged:d,onClose:c}){const u=w.exports.useRef(null),m="Row number",{rowCount:p}=a;return w.exports.useEffect(()=>{var g;document.activeElement!==u.current&&((g=u.current)==null||g.select())},[t]),h(ea,{isShown:s,className:z("goto-row"),onEntering:i,onEntered:()=>{var g;o(),(g=u.current)==null||g.select()},onExiting:r,onExited:l,children:T(we,{children:[T("div",{className:"goto-row-wrapper",children:[h("div",{className:"goto-row-text",children:"Go to row"}),h("div",{className:"goto-row-input",children:h("input",{ref:u,type:"number",onKeyDown:g=>{g.key==="Enter"&&(g.stopPropagation(),g.preventDefault(),n())},className:z("form-control",{"is-invalid":e!==""}),placeholder:m,onChange:g=>{d(g)},value:t})}),T("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(a1,p)]}),e&&h("div",{className:"goto-row-error text-danger",children:e})]}),h("div",{className:"goto-row-close",children:h(W,{kind:"ghost",onClick:c,children:h(Z,{icon:oo,style:{marginRight:"0"}})})})]})})}const be=X.module("IrisGrid"),c1=500,h1=250,u1=250,Xp=Object.freeze({aggregations:[],showOnTop:!1}),m1="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function zh({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}){return t.size===0&&e.aggregations.length===0&&n.length===0&&s.size===0&&i===L.REVERSE_TYPE.NONE&&o==null&&r==null&&l.length===0&&a.length===0}const Us=class extends w.exports.Component{constructor(t){super(t),this.getAdvancedMenuOpenedHandler=fe(_=>this.handleAdvancedMenuOpened.bind(this,_),{max:100}),this.getCachedAdvancedFilterMenuActions=fe((_,k,V,G,q)=>h(ic,{model:_,column:k,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:V,sortDirection:G,formatter:q}),{max:50}),this.getCachedOptionItems=fe((_,k,V,G,q,Q,ce,ae,le,Ee,ee,pe,ve,De,qe,dt)=>{const st=[];return _&&st.push({type:ke.CHART_BUILDER,title:"Chart Builder",icon:sb}),st.push({type:ke.VISIBILITY_ORDERING_BUILDER,title:"Hide, Group, and Order Columns",icon:Rd}),V&&st.push({type:ke.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:ir}),k&&st.push({type:ke.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:BC}),G&&st.push({type:ke.ROLLUP_ROWS,title:"Rollup Rows",icon:Ou}),q&&st.push({type:ke.AGGREGATIONS,title:"Aggregate Columns",icon:$C}),Q&&st.push({type:ke.SELECT_DISTINCT,title:"Select Distinct Values",icon:VC}),ce&&ve&&st.push({type:ke.TABLE_EXPORTER,title:"Download CSV",icon:bC}),dt&&st.push({type:ke.ADVANCED_SETTINGS,title:"Advanced Settings",icon:zC}),st.push({type:ke.QUICK_FILTERS,title:"Quick Filters",subtitle:ae.shortcut.getDisplayText(),icon:hl,isOn:ee,onChange:ae.action}),De&&st.push({type:ke.SEARCH_BAR,title:"Search Bar",subtitle:le.shortcut.getDisplayText(),icon:xu,isOn:pe,onChange:le.action}),st.push({type:ke.GOTO,title:"Go to",subtitle:Ee.shortcut.getDisplayText(),icon:UC,isOn:qe,onChange:Ee.action}),st},{max:1}),this.getCachedHiddenColumns=fe(_=>_,{max:1,normalizer:([_])=>_.join()}),this.getAggregationMap=fe((_,k)=>{const V={};return k.forEach(({operation:G,selected:q,invert:Q})=>{V[G]=$s.getOperationColumnNames(_,G,q,Q)}),V}),this.getOperationMap=fe((_,k)=>{const V={};return k.filter(G=>!$s.isRollupOperation(G.operation)).forEach(({operation:G,selected:q,invert:Q})=>{$s.getOperationColumnNames(_,G,q,Q).forEach(ce=>{var le;const ae=[...(le=V[ce])!=null?le:[],G];V[ce]=ae})}),V}),this.getOperationOrder=fe(_=>_.map(k=>k.operation).filter(k=>!$s.isRollupOperation(k))),this.getCachedFormatColumns=fe((_,k)=>uT(_,k)),this.getCachedModelColumns=fe((_,k)=>_.columns),this.getCachedPreviewFormatColumns=fe((_,k,V,G)=>{if(be.debug("getCachedPreviewFormatColumns",k,V,G),V!==void 0&&G!==void 0){const q=[...k];return q[G]=V,this.getCachedFormatColumns(_,q)}return this.getCachedFormatColumns(_,k)}),this.getModelRollupConfig=fe((_,k,V)=>te.getModelRollupConfig(_,k,V)),this.getModelTotalsConfig=fe((_,k,V)=>{var ae,le,Ee;const{aggregations:G,showOnTop:q}=V;if(((le=(ae=k==null?void 0:k.columns)==null?void 0:ae.length)!=null?le:0)>0||((Ee=G==null?void 0:G.length)!=null?Ee:0)===0)return null;const Q=this.getOperationMap(_,G),ce=this.getOperationOrder(G);return{operationMap:Q,operationOrder:ce,showOnTop:q}}),this.getCachedStateOverride=fe((_,k,V,G,q,Q,ce,ae,le,Ee)=>({hoverSelectColumn:_,isFilterBarShown:k,isSelectingColumn:V,loadingScrimProgress:G,quickFilters:q,advancedFilters:Q,sorts:ce,reverseType:ae,rollupConfig:le,isMenuShown:Ee}),{max:1}),this.getCachedFilter=fe((_,k,V,G,q)=>[..._!=null?_:[],...G!=null?G:[],...te.getFiltersFromFilterMap(k),...te.getFiltersFromFilterMap(V),...q!==void 0?[q]:[]],{max:1}),this.getCachedTheme=fe((_,k,V)=>({..._p,..._,autoSelectRow:!k,rowFooterWidth:V>0?_.rowFooterWidth:0}),{max:1}),this.getAlwaysFetchColumns=fe((_,k,V,G,q,Q)=>{const ce=[];for(let le=0;le<G;le+=1)ce.push(k[j.getModelIndex(le,V)].name);for(let le=0;le<q;le+=1)ce.push(k[j.getModelIndex(k.length-1-le,V)].name);if(Q)for(let le=Q[0];le<=Q[1];le+=1)ce.push(k[j.getModelIndex(le,V)].name);return[...new Set([..._,...ce])]}),this.updateSearchFilter=je((_,k,V,G)=>{const q=Gr.createSearchFilter(_,k,V,G);this.setState({searchFilter:q})},h1),this.handleConditionalFormatEditorUpdate=je(_=>{this.setState({conditionalFormatPreview:_})},u1),this.handleDownloadProgressUpdate=Zn((_,k)=>{const{tableDownloadStatus:V}=this.state;V===rn.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:_,tableDownloadEstimatedTime:k})},c1),this.getOverflowButtonTooltip=fe(_=>{if(_==null)return null;const k={position:"absolute",..._,pointerEvents:"none"};return h("div",{style:k,children:h(ze,{options:{placement:"left",modifiers:{flip:{behavior:["left","right"]}}},ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}),this.handleAdvancedFilterChange=this.handleAdvancedFilterChange.bind(this),this.handleAdvancedFilterSortChange=this.handleAdvancedFilterSortChange.bind(this),this.handleAdvancedFilterDone=this.handleAdvancedFilterDone.bind(this),this.handleAdvancedMenuOpened=this.handleAdvancedMenuOpened.bind(this),this.handleGotoRowOpened=this.handleGotoRowOpened.bind(this),this.handleGotoRowClosed=this.handleGotoRowClosed.bind(this),this.handleAdvancedMenuClosed=this.handleAdvancedMenuClosed.bind(this),this.handleAggregationChange=this.handleAggregationChange.bind(this),this.handleAggregationsChange=this.handleAggregationsChange.bind(this),this.handleAggregationEdit=this.handleAggregationEdit.bind(this),this.handleAnimationLoop=this.handleAnimationLoop.bind(this),this.handleAnimationStart=this.handleAnimationStart.bind(this),this.handleAnimationEnd=this.handleAnimationEnd.bind(this),this.handleChartChange=this.handleChartChange.bind(this),this.handleChartCreate=this.handleChartCreate.bind(this),this.handleGridError=this.handleGridError.bind(this),this.handleFilterBarChange=this.handleFilterBarChange.bind(this),this.handleFilterBarDone=this.handleFilterBarDone.bind(this),this.handleFilterBarTab=this.handleFilterBarTab.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleMenu=this.handleMenu.bind(this),this.handleMenuClose=this.handleMenuClose.bind(this),this.handleMenuSelect=this.handleMenuSelect.bind(this),this.handleMenuBack=this.handleMenuBack.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleSelectionChanged=this.handleSelectionChanged.bind(this),this.handleMovedColumnsChanged=this.handleMovedColumnsChanged.bind(this),this.handleHeaderGroupsChanged=this.handleHeaderGroupsChanged.bind(this),this.handleUpdate=this.handleUpdate.bind(this),this.handleTooltipRef=this.handleTooltipRef.bind(this),this.handleViewChanged=this.handleViewChanged.bind(this),this.handleFormatSelection=this.handleFormatSelection.bind(this),this.handleConditionalFormatCreate=this.handleConditionalFormatCreate.bind(this),this.handleConditionalFormatEdit=this.handleConditionalFormatEdit.bind(this),this.handleConditionalFormatsChange=this.handleConditionalFormatsChange.bind(this),this.handleConditionalFormatEditorSave=this.handleConditionalFormatEditorSave.bind(this),this.handleConditionalFormatEditorCancel=this.handleConditionalFormatEditorCancel.bind(this),this.handleUpdateCustomColumns=this.handleUpdateCustomColumns.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.handleSelectDistinctChanged=this.handleSelectDistinctChanged.bind(this),this.handlePendingDataUpdated=this.handlePendingDataUpdated.bind(this),this.handlePendingCommitClicked=this.handlePendingCommitClicked.bind(this),this.handlePendingDiscardClicked=this.handlePendingDiscardClicked.bind(this),this.handleGotoRowSelectedRowNumberSubmit=this.handleGotoRowSelectedRowNumberSubmit.bind(this),this.focusRowInGrid=this.focusRowInGrid.bind(this),this.handleDownloadTable=this.handleDownloadTable.bind(this),this.handleDownloadTableStart=this.handleDownloadTableStart.bind(this),this.handleCancelDownloadTable=this.handleCancelDownloadTable.bind(this),this.handleDownloadCanceled=this.handleDownloadCanceled.bind(this),this.handleDownloadCompleted=this.handleDownloadCompleted.bind(this),this.handlePartitionAppend=this.handlePartitionAppend.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionFetchAll=this.handlePartitionFetchAll.bind(this),this.handlePartitionDone=this.handlePartitionDone.bind(this),this.handleColumnVisibilityChanged=this.handleColumnVisibilityChanged.bind(this),this.handleCrossColumnSearch=this.handleCrossColumnSearch.bind(this),this.handleRollupChange=this.handleRollupChange.bind(this),this.handleOverflowClose=this.handleOverflowClose.bind(this),this.getColumnBoundingRect=this.getColumnBoundingRect.bind(this),this.handleGotoRowSelectedRowNumberChanged=this.handleGotoRowSelectedRowNumberChanged.bind(this),this.grid=null,this.gridWrapper=null,this.lastLoadedConfig=null,this.pending=new Ss,this.globalColumnFormats=[],this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new Ko,this.tableSaver=null,this.crossColumnRef=Y.createRef(),this.isAnimating=!1,this.filterInputRef=Y.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:an.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:an.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:an.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:_}=this.props;et(_)&&_.isEditable&&_.pendingDataMap.size>0&&this.discardPending().catch(be.error)},shortcut:an.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:_}=this.props;et(_)&&_.isEditable&&_.pendingDataMap.size>0&&_.pendingDataErrors.size===0&&this.commitPending().catch(be.error)},shortcut:an.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{aggregationSettings:e,conditionalFormats:n,customColumnFormatMap:s,isFilterBarShown:i,isSelectingPartition:o,model:r,movedColumns:l,movedRows:a,partition:d,partitionColumn:c,rollupConfig:u,userColumnWidths:m,userRowHeights:p,showSearchBar:g,searchValue:f,selectedSearchColumns:b,invertSearchColumns:C,advancedFilters:S,quickFilters:v,selectDistinctColumns:y,pendingDataMap:E,canCopy:I,frozenColumns:R,columnHeaderGroups:N}=t,F=[new IT(this),new RT(this)];I&&F.push(new TT(this));const B=[new DT(this),new MT(this),new NT(this),new kT(this),new _T(this),new vs(this),new xT(this),new OT(this)],U=l.length>0?l:r.initialMovedColumns,x=a.length>0?a:r.initialMovedRows,H=new PT({userColumnWidths:new Map(m),userRowHeights:new Map(p),movedColumns:U}),A=b!=null?b:[],O=Gr.createSearchFilter(f,A,r.columns,C);this.state={isFilterBarShown:i,isSelectingPartition:o,focusedFilterBarColumn:null,metricCalculator:H,metrics:void 0,keyHandlers:F,mouseHandlers:B,partition:d,partitionColumn:c,partitionTable:null,partitionFilters:[],quickFilters:v?new Map(v):new Map,advancedFilters:new Map(S),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:L.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:U,movedRows:x,shownColumnTooltip:null,formatter:new cn,isMenuShown:!1,customColumnFormatMap:new Map(s),conditionalFormats:n,conditionalFormatEditIndex:null,conditionalFormatPreview:void 0,hoverSelectColumn:null,isTableDownloading:!1,isReady:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:0,showSearchBar:g,searchFilter:O,searchValue:f,selectedSearchColumns:A,invertSearchColumns:C,rollupConfig:u,rollupSelectedColumns:[],aggregationSettings:e,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:E!=null?E:new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:R,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,isGotoRowShown:!1,gotoRow:"",gotoRowError:"",columnHeaderGroups:N!=null?N:r.initialColumnHeaderGroups}}static makeQuickFilter(t,e,n){try{return L.makeQuickFilter(t,e,n)}catch(s){be.error("Error creating quick filter",s)}return null}componentDidMount(){const{partitionColumn:t,model:e}=this.props,n=t!=null?t:e.columns.find(s=>s.isPartitionColumn);e.isFilterRequired&&e.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(e)}componentDidUpdate(t){var c;const{inputFilters:e,isSelectingColumn:n,settings:s,model:i,customFilters:o,sorts:r}=this.props;i!==t.model&&(this.stopListening(t.model),this.startListening(i));const l=e!==t.inputFilters?e.filter(u=>!t.inputFilters.includes(u)):[];if(l.length>0){const{advancedSettings:u}=this.props,m=(c=u.get(bi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS))!=null?c:!1;m&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(l,m)}n!==t.isSelectingColumn&&this.resetColumnSelection(),s!==t.settings&&this.updateFormatterSettings(s),o!==t.customFilters&&this.startLoading("Filtering...",!0),r!==t.sorts&&this.updateSorts(r);const{loadingScrimStartTime:a,loadingScrimFinishTime:d}=this;a!=null&&d!=null&&window.requestAnimationFrame(()=>{const u=Date.now(),m=u-a,p=d-a,g=Math.min(m/p,1);d<u&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(f=>f.loadingScrimProgress==null?(be.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:g})}),this.sendStateChange()}componentWillUnmount(){const{model:t}=this.props;this.stopListening(t),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(t,e,n=!1){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);if(n&&i!=null&&o!=null){const r=s.valueForCell(i,o);if(L.isDateType(s.columns[i].type)){const{formatter:l}=s;return M.i18n.DateTimeFormat.format(m1,r,M.i18n.TimeZone.getTimeZone(l.timeZone))}return r}return n?null:i!=null&&o!=null?s.textForCell(i,o):""}getModelColumn(t){const{metrics:e}=this.state;P(e);const{modelColumns:n}=e;return n==null?null:t!=null?n.get(t):null}getModelRow(t){const{metrics:e}=this.state;P(e);const{modelRows:n}=e;return n==null?null:t!=null?n.get(t):null}getTheme(){var n;const{model:t,theme:e}=this.props;return this.getCachedTheme(e,(n=et(t)&&t.isEditable)!=null?n:!1,t.floatingTopRowCount+t.floatingBottomRowCount)}getVisibleColumn(t){const{movedColumns:e}=this.state;return j.getVisibleIndex(t,e)}applyInputFilters(t,e=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=e?new Map:new Map(s),r=e?new Map:new Map(i);let l=e&&s.size>0;t.forEach(({name:a,type:d,value:c})=>{const u=n.columns.findIndex(({name:m,type:p})=>m===a&&p===d);u>=0?(l=o.delete(u)||l,l=this.applyQuickFilter(u,c,r)||l):be.error("Unable to find column for inputFilter",a,d,c)}),l&&this.setState({quickFilters:r,advancedFilters:o})}applyQuickFilter(t,e,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[t];if(e!=null&&`${e}`.trim().length>0){const r=n.get(t);if(r!=null){const{text:l}=r;if(l===e)return be.debug2("Ignoring change to existing filter"),!1}return n.set(t,{text:e,filter:Us.makeQuickFilter(o,e,i.timeZone)}),!0}return n.delete(t)}setAdvancedFilterMap(t){this.setState({advancedFilters:t})}setAdvancedFilter(t,e,n){be.debug("Setting advanced filter",t,e),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return e==null?i.delete(t):i.set(t,{filter:e,options:n}),{advancedFilters:i}})}setQuickFilter(t,e,n){be.debug("Setting quick filter",t,e,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(t,{filter:e,text:n}),{quickFilters:i}})}setFilterMap(t){var i;be.debug("setFilterMap",t);const{advancedSettings:e}=this.props;((i=e.get(bi.LINK_CHANGE_CLEARS_ALL_FILTERS))!=null?i:!1)&&this.clearAllFilters();const{model:s}=this.props;t.forEach(({columnType:o,filterList:r},l)=>{const a=s.columns.find(u=>u.name===l&&u.type===o);if(a==null)return;const d=s.getColumnIndexByName(a.name);P(d);const c=te.combineFiltersFromList(o,r);if(c.length===0)this.removeQuickFilter(d);else{const{formatter:u}=s;this.setQuickFilter(d,Us.makeQuickFilter(a,c,u.timeZone),`${c}`)}})}removeColumnFilter(t){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:e,quickFilters:n})=>{const s=e?new Map(e):new Map,i=n?new Map(n):new Map;return i.delete(t),s.delete(t),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(t){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:e})=>{const n=new Map(e);return n.delete(t),{quickFilters:n}})}clearAllFilters(){be.debug("Clearing all filters");const{advancedFilters:t,quickFilters:e,searchFilter:n}=this.state;e.size===0&&t.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){be.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){be.debug("Rebuilding filters");const{model:t}=this.props,{advancedFilters:e,quickFilters:n}=this.state,{columns:s,formatter:i}=t,o=new Map,r=new Map;e.forEach((l,a)=>{const{options:d}=l,c=s[a],u=L.makeAdvancedFilter(c,d,i.timeZone);o.set(a,{options:d,filter:u})}),n.forEach((l,a)=>{const{text:d}=l,c=s[a];r.set(a,{text:d,filter:Us.makeQuickFilter(c,d,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:r,advancedFilters:o})}setFilters({quickFilters:t,advancedFilters:e}){this.setState({quickFilters:t,advancedFilters:e})}updateFormatterSettings(t,e=!0){var m,p,g;const n=fs.getColumnFormats(t),s=fs.getDateTimeFormatterOptions(t),i=(m=t==null?void 0:t.defaultDecimalFormatOptions)!=null?m:{},o=(p=t==null?void 0:t.defaultIntegerFormatOptions)!=null?p:{},r=(g=t==null?void 0:t.truncateNumbersWithPound)!=null?g:!1,l=!ut(this.globalColumnFormats,n),a=!ut(this.dateTimeFormatterOptions,s),d=!ut(this.decimalFormatOptions,t==null?void 0:t.defaultDecimalFormatOptions),c=!ut(this.integerFormatOptions,o),u=this.truncateNumbersWithPound!==r;(l||a||d||c||u)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=r,this.updateFormatter({},e),a&&e&&this.rebuildFilters())}updateFormatter(t,e=!0){var r;const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...t},i=[...(r=this.globalColumnFormats)!=null?r:[],...s.customColumnFormatMap.values()],o=new cn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);be.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:o},()=>{e&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:t}=this.props;this.updateFormatterSettings(t)}initState(){const{applyInputFiltersOnInit:t,inputFilters:e,sorts:n,model:s,reverseType:i,customColumns:o,searchValue:r,selectedSearchColumns:l,invertSearchColumns:a}=this.props,d=l!=null?l:[],c=Gr.createSearchFilter(r,d,s.columns,a);if(t){const u=e.filter(m=>m.value!=null);this.applyInputFilters(u)}this.setState({sorts:n,reverseType:i,customColumns:o,isReady:!0,searchFilter:c}),this.initFormatter()}async loadPartitionsTable(t){const{model:e}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(e.valuesTable(t),r=>r.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const o=await this.pending.add(n.getViewportData());if(o.rows.length>0){const l=o.rows[0].get(s);this.updatePartition(l,t),this.setState({isSelectingPartition:!0})}else be.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:t},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(t,e){const s=[e.filter().eq(M.FilterValue.ofString(t))];this.setState({partition:t,partitionFilters:s})}copyCell(t,e,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(t,e,n));ro(i).catch(o=>be.error("Unable to copy cell",o))}else be.error("Attempted to copyCell for user without copy permission.")}copyRanges(t,e=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:r,movedColumns:l}=this.state,a=r.getUserColumnWidths();if(o){const d={ranges:re.boundedRanges(t,i.columnCount,i.rowCount),includeHeaders:e,formatValues:n,movedColumns:l,userColumnWidths:a,error:s};this.setState({copyOperation:d})}else be.error("Attempted copyRanges for user without copy permission.")}startLoading(t,e=!1){var s,i;this.setState({loadingText:t});const n=this.getTheme();if(e&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:o,maxScrimTransitionTime:r}=n;P(o),P(r);const l=(i=(s=this.gridWrapper)==null?void 0:s.getBoundingClientRect().height)!=null?i:0,a=Math.max(o,Math.min(l/2,r));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+a,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Us.loadingSpinnerDelay)}}stopLoading(){this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0,this.setState({loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1}),this.loadingTimer!=null&&(clearTimeout(this.loadingTimer),this.loadingTimer=void 0)}rollback(){if(this.lastLoadedConfig){be.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a})}else be.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Xp,customColumns:[],quickFilters:new Map,reverseType:L.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!zh(this.state)}startListening(t){t.addEventListener(Se.EVENT.UPDATED,this.handleUpdate),t.addEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.addEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.addEventListener(Se.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(t){t.removeEventListener(Se.EVENT.UPDATED,this.handleUpdate),t.removeEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.removeEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.removeEventListener(Se.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){var t;(t=this.grid)==null||t.focus()}focusFilterBar(t){var c,u,m;const{movedColumns:e}=this.state,{model:n}=this.props,{columnCount:s}=n,i=j.getModelIndex(t,e);if(t==null||t<0||s<=t||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:r}=this.state;P(r);const{left:l,rightVisible:a,lastLeft:d}=r;if(t<l)(c=this.grid)==null||c.setViewState({left:t},!0);else if(a<t){const p=(u=this.grid)==null?void 0:u.getMetricState();P(p);const g=o.getLastLeft(p,t,o.getVisibleWidth(p));(m=this.grid)==null||m.setViewState({left:Math.min(g,d),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=t,this.setState({focusedFilterBarColumn:t,isFilterBarShown:!0})}hideColumnByVisibleIndex(t){var s;const{metricCalculator:e,movedColumns:n}=this.state;e.setColumnWidth(j.getModelIndex(t,n),0),(s=this.grid)==null||s.forceUpdate()}freezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;be.debug2("freezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.add(t);const o=s.getColumnIndexByName(t);P(o);const r=j.getVisibleIndex(o,n),l=j.moveItem(r,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:l})}unFreezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;be.debug2("unfreezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.delete(t);const o=s.getColumnIndexByName(t);P(o);const r=j.getVisibleIndex(o,n),l=j.moveItem(r,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:l})}handleColumnVisibilityChanged(t,e){var s;const{metricCalculator:n}=this.state;e?t.forEach(i=>{n.resetColumnWidth(i)}):t.forEach(i=>{n.setColumnWidth(i,0)}),(s=this.grid)==null||s.forceUpdate()}handleCrossColumnSearch(t,e,n){const{model:s}=this.props;this.updateSearchFilter(t,e,s.columns,n),this.setState({searchValue:t,selectedSearchColumns:e,invertSearchColumns:n})}handleAnimationLoop(){var t,e;(t=this.grid)==null||t.updateCanvasScale(),(e=this.grid)==null||e.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){be.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){be.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(t){const{onPartitionAppend:e}=this.props,{partitionColumn:n}=this.state;!n||e(n,t)}handlePartitionChange(t){const{partitionColumn:e}=this.state;!e||this.updatePartition(t,e)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(t){if(ye.isCanceled(t))return;be.error(t);const{onError:e}=this.props;e(t)}showAllColumns(){var s;const{metricCalculator:t}=this.state,n=[...t.getUserColumnWidths().entries()];for(let i=0;i<n.length;i+=1){const[o,r]=n[i];r===0&&t.resetColumnWidth(o)}(s=this.grid)==null||s.forceUpdate()}toggleSort(t,e){be.info("Toggling sort for column",t);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(t);P(i);const o=L.toggleSortForColumn(s,n.columns,i,e);this.updateSorts(o)}updateSorts(t){var e;this.startLoading("Sorting..."),this.setState({sorts:t}),(e=this.grid)==null||e.forceUpdate()}sortColumn(t,e=L.sortDirection.none,n=!1,s=!1){var r;P(t);const{model:i}=this.props,o=L.sortColumn(i.sort,i.columns,t,e,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),(r=this.grid)==null||r.forceUpdate()}reverse(t){var e;this.startLoading("Reversing..."),this.setState({reverseType:t}),(e=this.grid)==null||e.forceUpdate()}isReversible(){const{model:t}=this.props;return t.isReversible}toggleFilterBar(t=this.lastFocusedFilterBarColumn){var n;let{isFilterBarShown:e}=this.state;if(e=!e,this.setState({isFilterBarShown:e}),e)if(t!=null)this.focusFilterBar(t);else{let s=0;const{model:i}=this.props,{columnCount:o}=i;for(let r=0;r<o;r+=1){const l=this.getModelColumn(r);if(l!=null){const a=i.columns[l];if(a!=null&&L.isTextType(a.type)){s=r;break}}}this.focusFilterBar(s)}else(n=this.grid)==null||n.focus()}isTableSearchAvailable(){var s,i,o;const{model:t,canToggleSearch:e}=this.props,n=(s=t==null?void 0:t.layoutHints)==null?void 0:s.searchDisplayMode;return n===((i=M.SearchDisplayMode)==null?void 0:i.SEARCH_DISPLAY_HIDE)?!1:n===((o=M.SearchDisplayMode)==null?void 0:o.SEARCH_DISPLAY_SHOW)?!0:e}toggleSearchBar(){const{showSearchBar:t}=this.state;if(!this.isTableSearchAvailable())return;const e=!t;this.setState({showSearchBar:e},()=>{var n,s,i;e&&((n=this.crossColumnRef)==null?void 0:n.current)?(s=this.crossColumnRef)==null||s.current.focus():(i=this.grid)==null||i.focus()})}toggleGotoRow(t=""){const{isGotoRowShown:e}=this.state;if(t){this.setState({isGotoRowShown:!0,gotoRow:t,gotoRowError:""});return}this.setState({isGotoRowShown:!e,gotoRow:"",gotoRowError:""})}async commitPending(){var i,o;const{model:t}=this.props;if(!et(t)||!t.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:e}=this.state;if(e!=null)throw new Error("Save already in progress");const n=(i=document==null?void 0:document.activeElement)==null?void 0:i.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new Ki("Current input is invalid");(o=this.grid)==null||o.focus()}const s=this.pending.add(t.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(r=>{ye.isCanceled(r)||this.setState({pendingSaveError:r,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(t){const{onColumnSelected:e}=this.props;e(t)}selectData(t,e){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,o={};for(let l=0;l<s.length;l+=1){const a=s[l],{name:d,type:c}=a,u=n.valueForCell(l,e),m=n.textForCell(l,e),p=this.getVisibleColumn(l),g=gt(n)&&n.isRowExpandable(e),f=i.find(b=>b.name===d)!=null;o[d]={value:u,text:m,type:c,isGrouped:f,isExpandable:g,visibleIndex:p}}const{onDataSelected:r}=this.props;r(e,o)}handleAdvancedFilterChange(t,e,n){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);P(i),this.setAdvancedFilter(i,e,n)}handleAdvancedFilterSortChange(t,e,n=!1){var a;const{model:s}=this.props,i=s.getColumnIndexByName(t.name);P(i);const o=L.getSortForColumn(s.sort,i);let r=null;(o==null||o.direction!==e)&&(e===L.sortDirection.descending?r=t.sort().desc():r=t.sort().asc());const l=L.setSortForColumn(s.sort,i,r,n);be.info("Setting table sorts",l),this.startLoading("Sorting..."),this.setState({sorts:l}),(a=this.grid)==null||a.forceUpdate()}handleAdvancedFilterDone(){var t;(t=this.grid)==null||t.focus()}handleAdvancedMenuOpened(t){this.setState({shownAdvancedFilter:t})}handleGotoRowOpened(){this.setState({isGotoRowShown:!0})}handleGotoRowClosed(){this.setState({isGotoRowShown:!1})}handleAdvancedMenuClosed(t){var s,i;const{focusedFilterBarColumn:e,isFilterBarShown:n}=this.state;n&&e===t&&((s=this.filterInputRef)==null?void 0:s.current)!==null?((i=this.filterInputRef)==null||i.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(t){const{model:e,onCreateChart:n}=this.props;n(t,e)}handleGridError(t){be.warn("Grid Error",t),this.setState({toastMessage:h("div",{className:"error-message",children:`${t}`})})}handleFilterBarChange(t){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:e,quickFilters:n})=>{const s=new Map(n);if(e!=null){const i=this.getModelColumn(e);P(i),this.applyQuickFilter(i,t,s)}return{quickFilters:s}})}handleFilterBarDone(t=!0,e=!0){var n;t&&((n=this.grid)==null||n.focus()),e&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(t){const{focusedFilterBarColumn:e}=this.state;P(e),t?this.focusFilterBar(e-1):this.focusFilterBar(e+1)}handleFormatSelection(t,e){const{model:n}=this.props,s=n.columns[t],{customColumnFormatMap:i}=this.state,o=new Map(i);if(e!=null){const r=L.getNormalizedType(s.type);P(r);const l=cn.makeColumnFormattingRule(r,s.name,e);o.set(s.name,l)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}handleMenu(t){t.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:t})=>{const e=[...t];return e.pop(),{openOptions:e}})}handleMenuSelect(t){this.setState(({openOptions:e})=>({openOptions:[...e,t]}))}handleRequestFailed(t){const e=t;if(be.error("request failed:",e.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{be.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${e.detail}`))}}handleUpdate(){var c;this.stopLoading(),be.debug2("Received model update");const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.state,d={advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a};zh(d)?this.lastLoadedConfig=null:this.lastLoadedConfig=d,(c=this.grid)==null||c.forceUpdate()}handleViewChanged(t){var i,o;const{model:e}=this.props,{selectionEndRow:n=0}=(o=(i=this.grid)==null?void 0:i.state)!=null?o:{};let s=0;if(et(e)&&e.isEditable){P(t);const{bottomViewport:r}=t,l=e.rowCount-e.floatingBottomRowCount;n===l-1?s=e.pendingRowCount+1:n===l-2?s=e.pendingRowCount:s=Math.max(0,r-(e.rowCount-e.pendingRowCount)-e.floatingTopRowCount-e.floatingBottomRowCount-1)}this.setState({metrics:t,pendingRowCount:s})}handleSelectionChanged(t){P(t);const{onSelectionChanged:e}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:t}),n!=null&&this.setState({copyOperation:null}),e(t)}handleMovedColumnsChanged(t,e){this.setState({movedColumns:t},e)}handleHeaderGroupsChanged(t){const{model:e}=this.props;this.setState({columnHeaderGroups:te.parseColumnHeaderGroups(e,t).groups},()=>{var n;return(n=this.grid)==null?void 0:n.forceUpdate()})}handleTooltipRef(t){t!=null&&t.startTimer(),this.tooltip=t}handleConditionalFormatsChange(t){be.debug("Updated conditional formats",t),this.setState({conditionalFormats:t})}handleConditionalFormatCreate(){be.debug("Create new conditional format");const{openOptions:t,conditionalFormats:e}=this.state;this.setState({openOptions:[...t,{type:ke.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:e.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(t){be.debug("Edit conditional format",t);const{openOptions:e,conditionalFormats:n}=this.state;this.setState({openOptions:[...e,{type:ke.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:t,conditionalFormatPreview:{...n[t]}})}handleConditionalFormatEditorSave(t){be.debug("Save conditional format changes",t),this.setState(e=>{if(e.conditionalFormatEditIndex===null)return be.debug("Invalid format index"),null;const n=[...e.conditionalFormats];return n[e.conditionalFormatEditIndex]=t,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(t){be.info("handleUpdateCustomColumns:",t);const{model:e}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:r}=this.state,{columns:l}=e,a=e.customColumns.map(c=>`${c}`),d=te.getRemovedCustomColumnNames(a,t);if(d.length>0){const c=te.removeSortsInColumns(s,d),u=te.removeFiltersInColumns(l,i,d),m=te.removeFiltersInColumns(l,o,d),p=te.removeColumnFromMovedColumns(l,n,d),g=te.removeColumnsFromSelectDistinctColumns(r,d);c.length!==s.length&&(be.debug("removing sorts from removed custom columns..."),this.setState({sorts:c})),(u.size!==i.size||m.size!==o.size)&&(be.debug("removing filters from removed custom columns..."),this.setState({quickFilters:u,advancedFilters:m})),ut(n,p)||(be.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),ut(r,g)||(be.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:g}))}this.setState({customColumns:t}),this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){var e;be.debug("custom columns changed");const{isReady:t}=this.state;t?(this.stopLoading(),(e=this.grid)==null||e.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){var s;be.debug("pending data updated");const{model:t}=this.props,{pendingDataMap:e,pendingDataErrors:n}=t;this.setState({pendingDataMap:e,pendingDataErrors:n,pendingSaveError:null}),(s=this.grid)==null||s.forceUpdate()}handleAggregationsChange(t){be.debug("handleAggregationsChange",t),this.startLoading(`Aggregating ${t.aggregations.map(e=>e.operation).join(", ")}...`),this.setState({aggregationSettings:t})}handleAggregationChange(t){be.debug("handleAggregationChange",t),this.startLoading(`Aggregating ${t.operation}...`),this.setState(({aggregationSettings:e})=>({selectedAggregation:t,aggregationSettings:{...e,aggregations:e.aggregations.map(n=>n.operation===t.operation?t:n)}}))}handleAggregationEdit(t){be.debug("handleAggregationEdit",t);const{openOptions:e}=this.state;this.setState({openOptions:[...e,{type:ke.AGGREGATION_EDIT,title:`Edit Columns to ${t.operation}`}],selectedAggregation:t})}handleRollupChange(t){var e,n;be.info("Rollup change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${(n=(e=t==null?void 0:t.columns)==null?void 0:e.join(", "))!=null?n:""}...`),this.setState({rollupConfig:t,movedColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(t){be.debug("SelectDistinct change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${t.length>0?t.join(", "):""}...`),this.setState({selectDistinctColumns:t,movedColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:t}=this.props;t?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:rn.DOWNLOAD_STATUS.INITIATING}):be.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(t,e,n,s,i,o,r){const{canDownloadCsv:l}=this.props;l?(be.info("start table downloading",t,e,n,s,i,o,r),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(t,e,n,s,i,o,r),{tableDownloadStatus:rn.DOWNLOAD_STATUS.DOWNLOADING}))):be.error("Attempted to handleDownloadTable for user without download CSV permission.")}handleCancelDownloadTable(){var t;(t=this.tableSaver)==null||t.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:rn.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:rn.DOWNLOAD_STATUS.CANCELED})}deleteRanges(t){const{model:e}=this.props;this.pending.add(e.delete(t)).catch(n=>{ye.isCanceled(n)||be.error("Unable to delete ranges",t,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:t}=this.props;if(t){const{columnAllowedCursor:e}=this.props;this.grid.setState({cursor:e})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(t=!0){!this.grid||(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},t))}sendStateChange(){if(!this.grid)return;const{state:t}=this,{state:e}=this.grid,{onStateChange:n}=this.props;n(t,e)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){var m;const{metrics:t,shownColumnTooltip:e}=this.state;P(t),P(e);const n=(m=this.gridWrapper)==null?void 0:m.getBoundingClientRect(),s=20;P(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:r,width:l,columnHeaderMaxDepth:a}=t,d=o.get(e),c=r.get(e);P(d),P(c);const u=n.left+Qe(d+c/2,s,l-s);return{top:n.top+(a-1)*i,left:n.left+Qe(d+c/2,s,l-s),bottom:n.top+a*i,right:n.left+Qe(d+c/2,s,l-s)+1,width:1,height:i,x:u,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:t}=this.state;this.focusRowInGrid(t)}focusRowInGrid(t){var i,o,r;const{model:e}=this.props,{rowCount:n}=e;if(this.setState({gotoRow:t}),t===""){this.setState({gotoRowError:""});return}const s=parseInt(t,10);s>n||s<-n?this.setState({gotoRowError:"Invalid row index"}):s===0?(this.setState({gotoRowError:""}),(i=this.grid)==null||i.setFocusRow(0)):s<0?(this.setState({gotoRowError:""}),(o=this.grid)==null||o.setFocusRow(s+n)):((r=this.grid)==null||r.setFocusRow(s-1),this.setState({gotoRowError:""}))}handleGotoRowSelectedRowNumberChanged(t){const e=t.target.value;this.focusRowInGrid(e)}getColumnTooltip(t,e,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:o,allColumnWidths:r,width:l}=e,a=o.get(t),d=r.get(t);if(a==null||d==null)return null;const c=Math.max(0,a);let u=d;a+d>l?u=l-a:a<0&&(u=d-Math.abs(a));const m={position:"absolute",top:(i-1)*s,left:c,width:u,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},g={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},f=this.getModelColumn(t);if(f==null)return null;const b=n.columns[f];return b==null?null:h("div",{style:m,children:h(ze,{timeout:400,interactive:!0,options:g,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h(kp,{model:n,column:b,onStatistics:()=>{var C;(C=this.tooltip)==null||C.update()}})},b.name)})}render(){var Ir,Rr,Dr,Mr,Nr,Fr,xr,pt,Ii;const{children:t,customFilters:e,getDownloadWorker:n,isSelectingColumn:s,isStuckToBottom:i,isStuckToRight:o,model:r,name:l,onlyFetchVisibleColumns:a,alwaysFetchColumns:d,advancedSettings:c,onAdvancedSettingsChange:u,canDownloadCsv:m,onCreateChart:p}=this.props,{metricCalculator:g,metrics:f,isFilterBarShown:b,isSelectingPartition:C,isMenuShown:S,isReady:v,copyOperation:y,focusedFilterBarColumn:E,loadingText:I,loadingScrimProgress:R,loadingSpinnerShown:N,keyHandlers:F,mouseHandlers:B,shownColumnTooltip:U,hoverAdvancedFilter:x,shownAdvancedFilter:H,hoverSelectColumn:A,quickFilters:O,advancedFilters:_,partition:k,partitionFilters:V,partitionTable:G,partitionColumn:q,searchFilter:Q,selectDistinctColumns:ce,movedColumns:ae,movedRows:le,formatter:Ee,conditionalFormats:ee,conditionalFormatPreview:pe,conditionalFormatEditIndex:ve,sorts:De,reverseType:qe,customColumns:dt,selectedRanges:st,isTableDownloading:On,tableDownloadStatus:Bt,tableDownloadProgress:Me,tableDownloadEstimatedTime:ct,showSearchBar:lt,searchValue:Mt,selectedSearchColumns:$t,invertSearchColumns:Ln,aggregationSettings:un,selectedAggregation:vi,rollupConfig:mn,openOptions:_t,pendingSavePromise:Ts,pendingSaveError:Ti,pendingRowCount:So,pendingDataErrors:Ei,pendingDataMap:yi,toastMessage:gr,frozenColumns:fr,columnHeaderGroups:Es,showOverflowModal:qs,overflowText:ha,overflowButtonTooltipProps:Cr,isGotoRowShown:wo,gotoRow:br,gotoRowError:Sr}=this.state;if(!v)return null;const ys=this.getTheme(),ua=this.getCachedFilter(e,O,_,V,Q),vo=g.getUserColumnWidths(),ma=this.getCachedStateOverride(A,b,s,R,O,_,De,qe,mn,S),pa=f?f.top:0,ga=f?f.bottomViewport:0;let wr=null,To=null;a&&(wr=f?f.left:0,To=f?f.right:0);const Eo=f!=null&&f.width>0&&f.height>0,vr=((Rr=(Ir=mn==null?void 0:mn.columns)==null?void 0:Ir.length)!=null?Rr:0)>0;let Is=null;const Tr=f?Math.min(Math.max(Us.minDebounce,Math.round(f.rowCount/200)),Us.maxDebounce):Us.maxDebounce;if(b&&E!=null&&f!=null){const{gridX:Je,gridY:Qt,allColumnXs:Rs,allColumnWidths:Do,width:Ri}=f,An=Rs.get(E),Wt=Do.get(E);if(An!=null&&Wt!=null){const kt=Je+An,ns=Qt-((Dr=ys.filterBarHeight)!=null?Dr:0),Ys=Wt+1,Xs=((Mr=ys.filterBarHeight)!=null?Mr:0)-1,_r={top:ns,left:kt,minWidth:Math.min(Ys,Ri-kt),height:Xs};let Pn="",Di=!0;const js=this.getModelColumn(E);P(js);const Mi=O.get(js),Ds=_.get(js);Mi!=null&&(Pn=Mi.text,Di=Mi.filter!=null);const Ni=O.size!==0||_.size!==0;Is=h(Mp,{ref:this.filterInputRef,style:_r,className:z({error:!Di,active:Pn!==""||Ds!=null,"iris-grid-has-filter":Ni}),isAdvancedFilterSet:Ds!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:(Nr=this.grid)==null?void 0:Nr.handleContextMenu,debounceMs:Tr,value:Pn},E)}}let yo=null;if(I!=null){const Je=T("div",{className:"iris-grid-loading-status",children:[h("div",{className:z("iris-grid-loading-status-bar",{show:N}),children:I}),T("button",{type:"button",onClick:this.handleCancel,className:z("iris-grid-btn-cancel",{show:N}),children:[h(Z,{icon:oo,transform:"down-1"}),"Cancel"]})]}),Qt=f?f.gridY:0;yo=h("div",{className:"iris-grid-loading",style:{top:Qt},children:Je})}let Io=null;U!=null&&f&&(Io=this.getColumnTooltip(U,f,r),(Fr=this.tooltip)==null||Fr.update());const Ro=[];if(f&&b){const{gridX:Je,gridY:Qt,visibleColumns:Rs,allColumnXs:Do,allColumnWidths:Ri}=f,{filterBarHeight:An}=ys;for(let Wt=0;Wt<Rs.length;Wt+=1){const kt=Rs[Wt],ns=Do.get(kt),Ys=Ri.get(kt),Xs=this.getModelColumn(kt);if(Xs!=null&&r.isFilterable(Xs)&&ns!=null&&Ys!=null&&Ys>0){const Pn=Je+ns+Ys-24,Di=Qt-(An!=null?An:0)+2,js={position:"absolute",top:Di,left:Pn},Ds=_.get(Xs)!=null,Ni=kt===x||kt===E||Ds,ba=h("div",{className:z("advanced-filter-button-container",{hidden:!Ni}),style:js,children:Ni&&h(W,{kind:"ghost",className:z("btn-link-icon advanced-filter-button",{"filter-set":Ds}),onClick:()=>{this.setState({shownAdvancedFilter:kt})},onContextMenu:Pg=>{var _c;(_c=this.grid)==null||_c.handleContextMenu(Pg)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:kt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:T("div",{className:"fa-layers",children:[h(Z,{icon:Dd,className:"filter-solid"}),h(Z,{icon:hl,className:"filter-light"})]})})},kt);Ro.push(ba)}}}const Er=[];if(f){const{gridX:Je,visibleColumns:Qt,allColumnXs:Rs,allColumnWidths:Do,columnHeaderHeight:Ri}=f;for(let An=0;An<Qt.length;An+=1){const Wt=Qt[An],kt=Rs.get(Wt),ns=Do.get(Wt);if(kt!=null&&ns!=null&&ns>0){const Ys=Je+kt,Xs=Je+kt+ns-20,_r=b?{position:"absolute",top:Ri,left:Xs,width:20,height:ys.filterBarHeight}:{position:"absolute",top:0,left:Ys,width:ns,height:Ri},Pn=this.getModelColumn(Wt);if(Pn!=null){const Di=r.columns[Pn],js=_.get(Pn),{options:Mi}=js||{},Ds=L.getSortForColumn(r.sort,Pn),Ni=Ds?Ds.direction:null,ba=h("div",{className:"advanced-filter-menu-container",style:_r,children:h(_n,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Wt),onExited:()=>{this.handleAdvancedMenuClosed(Wt)},isShown:H===Wt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,Di,Mi,Ni,Ee)})},Wt);Er.push(ba)}}}}const yr=this.getCachedOptionItems(p!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,b,lt,m,this.isTableSearchAvailable(),wo,c.size>0),fa=_t.map(Je=>{switch(Je.type){case ke.CHART_BUILDER:return h(Ap,{model:r,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},ke.CHART_BUILDER);case ke.VISIBILITY_ORDERING_BUILDER:return h(ac,{model:r,movedColumns:ae,userColumnWidths:vo,columnHeaderGroups:Es,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},ke.VISIBILITY_ORDERING_BUILDER);case ke.CONDITIONAL_FORMATTING:return h(kE,{rules:ee,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case ke.CONDITIONAL_FORMATTING_EDIT:return P(r.columns),P(this.handleConditionalFormatEditorUpdate),h(r1,{columns:r.columns,rule:pe,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case ke.CUSTOM_COLUMN_BUILDER:return h(rc,{model:r,customColumns:dt,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},ke.CUSTOM_COLUMN_BUILDER);case ke.ROLLUP_ROWS:return h(lc,{model:r,onChange:this.handleRollupChange,config:mn},ke.ROLLUP_ROWS);case ke.AGGREGATIONS:return h(zT,{settings:un,isRollup:vr,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case ke.AGGREGATION_EDIT:return vi&&h(KT,{aggregation:vi,columns:r.originalColumns,onChange:this.handleAggregationChange});case ke.TABLE_EXPORTER:return h(rn,{model:r,name:l,userColumnWidths:vo,movedColumns:ae,isDownloading:On,tableDownloadStatus:Bt,tableDownloadProgress:Me,tableDownloadEstimatedTime:ct!=null?ct:void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:st},ke.TABLE_EXPORTER);case ke.SELECT_DISTINCT:return h(Kp,{model:r,selectDistinctColumns:ce,onChange:this.handleSelectDistinctChanged});case ke.ADVANCED_SETTINGS:return h(dc,{items:c,onChange:u});default:throw Error(`Unexpected option type ${Je.type}`)}}),Ca=this.getCachedHiddenColumns(te.getHiddenColumns(vo));return T("div",{className:"iris-grid",role:"presentation",children:[T("div",{className:"iris-grid-column",children:[t!=null&&h("div",{className:"iris-grid-bar",children:t}),h(mt,{in:C,timeout:Be.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:G&&q&&k!=null&&h(Gp,{table:G,getFormattedString:(Je,Qt,Rs)=>r.displayString(Je,Qt,Rs),columnName:q.name,partition:k,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h(mt,{in:lt,timeout:Be.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"iris-grid-bar",children:h(Gr,{value:Mt,selectedColumns:$t,invertSelection:Ln,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),T("div",{className:"grid-wrapper",ref:Je=>{this.gridWrapper=Je},children:[h(uo,{ref:Je=>{this.grid=Je},isStickyBottom:!et(r)||!r.isEditable,isStuckToBottom:i,isStuckToRight:o,metricCalculator:g,model:r,keyHandlers:F,mouseHandlers:B,movedColumns:ae,movedRows:le,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:ma,theme:ys}),h(l1,{isOpen:qs,text:ha,onClose:this.handleOverflowClose}),Eo&&h(xp,{model:r,modelColumns:r.columns,top:pa,bottom:ga,left:wr,right:To,filter:ua,formatter:Ee,sorts:De,reverseType:qe,movedColumns:ae,customColumns:dt,hiddenColumns:Ca,alwaysFetchColumns:this.getAlwaysFetchColumns(d,r.columns,ae,r.floatingLeftColumnCount,r.floatingRightColumnCount,(pt=(xr=this.grid)==null?void 0:xr.state.draggingColumn)==null?void 0:pt.range),formatColumns:this.getCachedPreviewFormatColumns(this.getCachedModelColumns(r,dt),ee,pe,((Ii=_t[_t.length-1])==null?void 0:Ii.type)===ke.CONDITIONAL_FORMATTING_EDIT&&ve!=null?ve:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,mn,un),totalsConfig:this.getModelTotalsConfig(r.columns,mn,un),selectDistinctColumns:ce,pendingRowCount:So,pendingDataMap:yi,frozenColumns:fr,columnHeaderGroups:Es}),!S&&h("div",{className:"grid-settings-button",children:h(W,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${l}`,onClick:this.handleMenu,icon:h(Z,{icon:OC,transform:"up-1"}),tooltip:"Table Options"})}),Is,yo,Ro,Io,Er,Cr&&this.getOverflowButtonTooltip(Cr)]}),h(d1,{model:r,isShown:wo,gotoRow:br,gotoRowError:Sr,onSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd}),h(fT,{error:Ti,isSaving:Ts!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:Ei,pendingDataMap:yi,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h(AT,{children:gr}),h(mo,{model:r,copyOperation:y!=null?y:void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h(po,{ref:Je=>{this.tableSaver=Je},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:Bt===rn.DOWNLOAD_STATUS.DOWNLOADING,formatter:Ee})]}),h(mt,{in:S,timeout:Be.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"table-sidebar",children:T($b,{children:[h(th,{title:"Table Options",onClose:this.handleMenuClose,children:h(em,{onSelect:Je=>this.handleMenuSelect(yr[Je]),items:yr})}),fa.map((Je,Qt)=>h(th,{title:_t[Qt].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Je},_t[Qt].type))]})})}),h(oe,{actions:this.contextActions})]})}};let go=Us;go.minDebounce=150;go.maxDebounce=500;go.loadingSpinnerDelay=800;go.defaultProps={children:null,advancedFilters:new Map,advancedSettings:new Map,alwaysFetchColumns:[],conditionalFormats:[],customColumnFormatMap:new Map,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:[],movedRows:[],inputFilters:[],customFilters:[],onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:new Map,selectDistinctColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE,customColumns:[],aggregationSettings:Xp,rollupConfig:void 0,userColumnWidths:new Map,userRowHeights:new Map,onSelectionChanged:()=>{},isSelectingColumn:!1,isSelectingPartition:!1,isStuckToBottom:!1,isStuckToRight:!1,columnSelectionValidator:null,columnAllowedCursor:null,columnNotAllowedCursor:null,name:"table",onlyFetchVisibleColumns:!0,showSearchBar:!1,searchValue:"",selectedSearchColumns:null,invertSearchColumns:!0,onContextMenu:()=>{},pendingDataMap:new Map,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:bs.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:[],decimalFormatOptions:D.exports.shape({defaultFormatString:D.exports.string}),integerFormatOptions:D.exports.shape({defaultFormatString:D.exports.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:_p,canToggleSearch:!0};class p1 extends Error{constructor(e,n){super(`${n} can't be empty (on pending row ${e+1})`),this.isMissingKey=!0,this.rowIndex=e,this.columnName=n}}const it=X.module("IrisGridTableModel"),g1=150,f1=0,C1=[];function mi(t){return t.table!==void 0}const od=class extends Se{constructor(t,e=new cn,n=null){var s,i;super(),this.pendingNewRowCount=0,this._columnHeaderGroupMap=new Map,this.columnHeaderParentMap=new Map,this._columnHeaderMaxDepth=null,this._columnHeaderGroups=[],this._movedColumns=null,this.getMemoizedInitialMovedColumns=Ce(o=>{var u;if(!o)return[];let r=[];const{groupMap:l}=te.parseColumnHeaderGroups(this,(u=o==null?void 0:o.columnGroups)!=null?u:[]),a=(m,p)=>{const g=this.getColumnIndexByName(m);if(g==null)throw new Error(`Unknown layout hint column: ${m}`);const f=j.getVisibleIndex(g,r);r=j.moveItem(f,p,r)},d=(m,p)=>{const g=l.get(m);if(g==null)throw new Error(`Unknown layout hint group: ${m}`);const f=g.getVisibleRange(r);r=j.moveRange(f,p,r)};if(this.frontColumns.length||this.backColumns.length||this.frozenColumns.length){const m=new Set;let p=0;this.frozenColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,p),p+=1}),this.frontColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,p),p+=1});let g=this.columnMap.size-1;this.backColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,g),g-=1})}if(o==null?void 0:o.columnGroups){const m=[...l.values()];m.sort((p,g)=>p.depth-g.depth),m.forEach(p=>{const g=p.children[0],f=this.getColumnIndexByName(g);let b;if(f!=null)b=j.getVisibleIndex(f,r);else{const C=l.get(g);if(!C)throw new Error(`Unknown column ${g} in group ${p.name}`);[,b]=C.getVisibleRange(r)}for(let C=1;C<p.children.length;C+=1){const S=p.children[C],v=l.get(S),y=this.getColumnIndexByName(S);if(v){const I=v.getVisibleRange(r)[0]<b?b-v.childIndexes.length+1:b+1;d(S,I),b=I+v.childIndexes.length-1}else if(y!=null){const I=j.getVisibleIndex(y,r)<b?b:b+1;a(S,I),b=I}}})}return this._movedColumns=r,r}),this.getMemoizedInitialColumnHeaderGroups=Ce(o=>{var r;return te.parseColumnHeaderGroups(this,(r=o==null?void 0:o.columnGroups)!=null?r:[]).groups}),this.getMemoizedColumnMap=Ce(o=>{const r=new Map;return o.forEach(l=>r.set(l.name,l)),r}),this.getColumnIndicesByNameMap=Ce(o=>{const r=new Map;return o.forEach(({name:l},a)=>r.set(l,a)),r}),this.setViewport=Zn((o,r,l)=>{if(r<o){it.error("Invalid viewport",o,r);return}const{viewport:a}=this;if(a!=null&&a.top===o&&a.bottom===r&&a.columns===l){it.debug2("Ignoring duplicate viewport",a);return}this.viewport={top:o,bottom:r,columns:l},it.debug2("setViewport",this.viewport),this.applyViewport()},g1),this.applyViewport=Zn(()=>{if(!this.viewport)return;it.debug2("applyViewport",this.viewport);const{top:o,bottom:r,columns:l}=this.viewport,[a,d]=this.getCachedViewportRowRange(o,r);this.applyBufferedViewport(a,d,l)},f1,{leading:!1}),this.getCachedFormattedString=ln((o,r,l,a,d)=>o.getFormattedString(r,l,a,d),{max:1e4}),this.getCachedCustomColumnFormatFlag=ln(fs.isCustomColumnFormatDefined,{max:1e4}),this.getCachedViewportRowRange=Ce((o,r)=>{const l=r-o,a=Math.max(0,o-l*od.ROW_BUFFER_PAGES),d=r+l*od.ROW_BUFFER_PAGES;return[a,d]}),this.getCachedPendingErrors=Ce((o,r,l)=>{const a=new Map;return o.forEach((d,c)=>{var m;const{data:u}=d;for(let p=0;p<l;p+=1)u.has(p)||(a.has(c)||a.set(c,[]),(m=a.get(c))==null||m.push(new p1(c,r[p].name)))}),a}),this.handleTableDisconnect=this.handleTableDisconnect.bind(this),this.handleTableReconnect=this.handleTableReconnect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTotalsUpdate=this.handleTotalsUpdate.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.irisFormatter=e,this.inputTable=n,this.subscription=null,this.table=t,this.viewport=null,this.viewportData=null,this.formattedStringData=[],this.pendingStringData=[],this.isSaveInProgress=!1,this.totalsTable=null,this.totalsTablePromise=null,this.totals=null,this.totalsDataMap=null,this.pendingNewDataMap=new Map,this.pendingNewRowCount=0,this.columnHeaderGroups=te.parseColumnHeaderGroups(this,(i=(s=this.layoutHints)==null?void 0:s.columnGroups)!=null?i:[]).groups}export(){throw new Error("Method not implemented.")}columnStatistics(t){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(t){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(t){throw new Error("Method not implemented.")}updateFrozenColumns(t){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(t){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(t){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening(),this.table.addEventListener(M.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(M.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening(),this.table.removeEventListener(M.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(M.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(t){t.addEventListener(M.Table.EVENT_UPDATED,this.handleTotalsUpdate),t.setViewport(0,0)}removeTotalsListeners(t){t.removeEventListener(M.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new Ge(Se.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ge(Se.EVENT.RECONNECT))}handleTableUpdate(t){this.copyViewportData(t.detail),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}handleTotalsUpdate(t){this.copyTotalsData(t.detail),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}handleRequestFailed(t){this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,t))}handleCustomColumnsChanged(){this.dispatchEvent(new Ge(Se.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){var t,e,n;return this.table.size+this.pendingNewRowCount+((n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0)}get pendingDataErrors(){var t,e;return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,(e=(t=this.inputTable)==null?void 0:t.keyColumns.length)!=null?e:0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(t){t!==this.pendingNewDataMap&&(t.forEach((e,n)=>{if(!te.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=e;s.forEach((i,o)=>{if(!te.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=t,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(t){t!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,t,this.maxPendingDataRow),this.dispatchEvent(new Ge(Se.EVENT.UPDATED)))}get maxPendingDataRow(){return this.pendingNewDataMap.size>0?Math.max(...this.pendingNewDataMap.keys())+1:0}get columnCount(){return this.columns.length}get floatingBottomRowCount(){var t,e,n;return this.totals!=null&&this.totals.showOnTop?0:(n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0}get floatingTopRowCount(){var t,e,n;return this.totals!=null&&this.totals.showOnTop&&(n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0}get isChartBuilderAvailable(){return!0}get isTotalsAvailable(){return this.table.getTotalsTable!=null}get isEditable(){return!this.isSaveInProgress&&this.inputTable!=null}cacheFormattedValue(t,e,n){this.formattedStringData[t]==null&&(this.formattedStringData[t]=[]),this.formattedStringData[t][e]=n}cachePendingValue(t,e,n){this.pendingStringData[t]==null&&(this.pendingStringData[t]=[]),this.pendingStringData[t][e]=n}clearPendingValue(t,e){const n=this.pendingStringData[t];n!=null&&delete n[e]}textValueForCell(t,e){var n,s,i;if(((n=this.pendingStringData[t])==null?void 0:n[e])!==void 0)return this.pendingStringData[t][e];if(((s=this.formattedStringData[t])==null?void 0:s[e])===void 0){const o=this.valueForCell(t,e);if(o==null)return null;const r=(i=this.totalsColumn(t,e))!=null?i:this.columns[t],l=this.getCachedCustomColumnFormatFlag(this.formatter,r.name,r.type);let a;if(!l){const c=this.formatForCell(t,e);(c==null?void 0:c.formatString)!=null&&(a=c)}const d=this.displayString(o,r.type,r.name,a);this.cacheFormattedValue(t,e,d)}return this.formattedStringData[t][e]}textForCell(t,e){const n=this.textValueForCell(t,e);if(n==null&&this.isKeyColumn(t)){const s=this.pendingRow(e);if(s!=null&&this.pendingDataMap.has(s))return"*"}return n!=null?n:""}truncationCharForCell(t){const e=this.columns[t],{type:n}=e;if(L.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(t,e,n){var i;const s=this.dataForCell(t,e);if(s){const{format:o,value:r}=s;if(r==null||r==="")return P(n.nullStringColor),n.nullStringColor;if(o&&o.color)return o.color;if(this.isPendingRow(e))return P(n.pendingTextColor),n.pendingTextColor;if(r!=null){const l=(i=this.totalsColumn(t,e))!=null?i:this.columns[t];if(L.isDateType(l.type)||l.name==="Date")return P(n.dateColor),n.dateColor;if(L.isNumberType(l.type))return r>0?(P(n.positiveNumberColor),n.positiveNumberColor):r<0?(P(n.negativeNumberColor),n.negativeNumberColor):(P(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(e)&&this.isKeyColumn(t))return P(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(t,e){var n,s;return(s=(n=this.formatForCell(t,e))==null?void 0:n.backgroundColor)!=null?s:null}textAlignForCell(t){const e=this.columns[t],{type:n}=e;return L.isNumberType(n)?"right":L.isDateType(n)||e.name==="Date"?"center":"left"}textForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Ma(n)?n.isNew?"":n.name:n==null?void 0:n.name}colorForColumnHeader(t,e=0){var s;const n=this.columnAtDepth(t,e);return Ma(n)&&(s=n.color)!=null?s:null}getColumnHeaderGroup(t,e){const n=this.columnAtDepth(t,e);if(Ma(n))return n}getColumnHeaderParentGroup(t,e){var n,s;return this.columnHeaderParentMap.get((s=(n=this.columnAtDepth(t,e))==null?void 0:n.name)!=null?s:"")}columnAtDepth(t,e=0){var o;if(e===0)return this.columns[t];const n=(o=this.columns[t])==null?void 0:o.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<e;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===e)return s}textForRowFooter(t){const e=this.totalsRow(t);return e!=null&&this.totals?this.totals.operationOrder[e]:""}get initialMovedColumns(){var t;return this.getMemoizedInitialMovedColumns((t=this.layoutHints)!=null?t:void 0)}get initialMovedRows(){return C1}get initialColumnHeaderGroups(){var t;return this.getMemoizedInitialColumnHeaderGroups((t=this.layoutHints)!=null?t:void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){var t;return(t=this._columnHeaderMaxDepth)!=null?t:1}set columnHeaderMaxDepth(t){this._columnHeaderMaxDepth=t}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(t){if(t===this._columnHeaderGroups)return;const{groups:e,maxDepth:n,parentMap:s,groupMap:i}=te.parseColumnHeaderGroups(this,t!=null?t:this.initialColumnHeaderGroups);this._columnHeaderGroups=e,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(t){var l,a,d,c,u,m,p,g,f,b,C,S,v,y;const e=(d=(a=(l=this.totals)==null?void 0:l.operationOrder)==null?void 0:a.length)!=null?d:0,n=(u=(c=this.totals)==null?void 0:c.showOnTop)!=null?u:!1,s=this.totalsRow(t);if(s!=null){const E=(m=this.totals)==null?void 0:m.operationOrder[s];return P(E),(g=(p=this.totalsDataMap)==null?void 0:p.get(E))!=null?g:null}const i=this.pendingRow(t);if(i!=null)return(f=this.pendingNewDataMap.get(i))!=null?f:null;const o=(C=(b=this.viewportData)==null?void 0:b.offset)!=null?C:0,r=(n?t-e:t)-o;return(y=(v=(S=this.viewportData)==null?void 0:S.rows)==null?void 0:v[r])!=null?y:null}totalsColumn(t,e){var r,l,a,d;const n=this.totalsRow(e);if(n==null)return null;const s=(r=this.totals)==null?void 0:r.operationOrder[n],i=(a=(l=this.totals)==null?void 0:l.defaultOperation)!=null?a:Oe.SUM,o=this.columns[t];return(d=this.totalsTable)==null?void 0:d.columns.find(c=>{var u;return c.name===`${o.name}__${s}`||(s===i||((u=this.totals)==null?void 0:u.operationOrder.length)===1)&&c.name===o.name})}totalsRow(t){var i,o,r,l,a;const e=(r=(o=(i=this.totals)==null?void 0:i.operationOrder)==null?void 0:o.length)!=null?r:0,s=((a=(l=this.totals)==null?void 0:l.showOnTop)!=null?a:!1)?t:t-this.table.size;return s>=0&&s<e?s:null}pendingRow(t){const e=t-this.floatingTopRowCount-this.table.size;return e>=0&&e<this.pendingNewRowCount?e:null}isTotalsRow(t){return this.totalsRow(t)!=null}isPendingRow(t){return this.pendingRow(t)!=null}dataForCell(t,e){var n;return(n=this.row(e))==null?void 0:n.data.get(t)}formatForCell(t,e){var n;return(n=this.dataForCell(t,e))==null?void 0:n.format}valueForCell(t,e){var s;const n=this.dataForCell(t,e);if(n)return(s=n.value)!=null?s:null}copyViewportData(t){if(t==null){it.warn("invalid data!");return}this.viewportData=this.extractViewportData(t),this.formattedStringData=[]}copyTotalsData(t){var l,a,d,c,u;if(t==null){it.warn("invalid data!");return}const{columns:e,rows:n}=t;if(n.length!==1){it.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=(a=(l=this.totals)==null?void 0:l.defaultOperation)!=null?a:Oe.SUM,r=(d=this.totals)==null?void 0:d.operationMap;for(let m=0;m<e.length;m+=1){const p=e[m],[g,f=(u=(c=r==null?void 0:r[g])==null?void 0:c[0])!=null?u:o]=p.name.split("__");s.has(f)||s.set(f,{data:new Map});const{data:b}=s.get(f),C=this.columns.findIndex(S=>S.name===g);b.set(C,{value:i.get(p),format:i.getFormat(p)})}it.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(t){return this.getColumnIndicesByNameMap(this.columns).get(t)}extractViewportData(t){const e={offset:t.offset,rows:[]},{columns:n}=t;for(let s=0;s<t.rows.length;s+=1){const i=t.rows[s],o=this.extractViewportRow(i,n);e.rows.push(o)}return e}extractViewportRow(t,e){const n=new Map;for(let s=0;s<e.length;s+=1){const i=e[s],o=this.getColumnIndexByName(i.name);P(o),n.set(o,{value:t.get(i),format:t.getFormat(i)})}return{data:n}}closeSubscription(){it.debug2("closeSubscription",this.subscription),this.subscription&&(this.subscription.close(),this.subscription=null),this.setViewport.cancel(),this.applyViewport.cancel()}get filter(){return this.table.filter}set filter(t){this.closeSubscription(),this.table.applyFilter(t),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(t){this.irisFormatter=t,this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.FORMATTER_UPDATED))}displayString(t,e,n="",s){return this.getCachedFormattedString(this.formatter,t,e,n,s)}get sort(){return this.table.sort}set sort(t){this.closeSubscription(),this.table.applySort(t),this.applyViewport()}set totalsConfig(t){if(it.debug("set totalsConfig",t),t!==this.totals){if(this.totals=t,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),t==null){this.dispatchEvent(new Ge(Se.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(t),e=>e.close()),this.totalsTablePromise.then(e=>{this.totalsTablePromise=null,this.setTotalsTable(e)}).catch(e=>{ye.isCanceled(e)||(it.error("Unable to set next totalsTable",e),this.totalsTablePromise=null,this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,{detail:e})))})}}setTotalsTable(t){it.debug("setTotalsTable",t),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=t,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(t,e,n){it.debug2("applyBufferedViewport",t,e,n),this.subscription==null?(it.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(t,e,n)):(it.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(t,e,n))}async snapshot(t,e=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?re.consolidate(t):t;if(!te.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${t}`);const o=new Set,r=[],l=new Set;for(let m=0;m<i.length;m+=1){const p=i[m];P(p.endRow),P(p.startRow);for(let g=p.startRow;g<=p.endRow&&g<this.floatingTopRowCount;g+=1)o.add(g);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&r.push(new re(p.startColumn,Math.min(Math.max(0,p.startRow-this.floatingTopRowCount)),p.endColumn,Math.min(Math.max(0,p.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let g=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);g<=p.endRow&&g<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;g+=1)l.add(g)}const a=te.columnsFromRanges(i,this.columns),d=[];e&&d.push(a.map(m=>m.name));const c=[...o].sort();for(let m=0;m<c.length;m+=1){const p=c[m],g=a.map(f=>{const b=this.getColumnIndexByName(f.name);return P(b),n(this.valueForCell(b,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}if(r.length>0){const m=te.rangeSetFromRanges(r),p=await this.subscription.snapshot(m,a);d.push(...p.rows.map(g=>a.map(f=>n(g.get(f),f))))}const u=[...l].sort();for(let m=0;m<u.length;m+=1){const p=u[m],g=a.map(f=>{const b=this.getColumnIndexByName(f.name);return P(b),n(this.valueForCell(b,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}return d}async textSnapshot(t,e=!1,n=s=>`${s}`){return it.debug2("textSnapshot",t,e),(await this.snapshot(t,e,n,!1)).map(i=>i.join(" ")).join(`
|
|
35
|
+
${xE(t)}`}function kE(t){const{rules:e=[],onChange:n=xa,onCreate:s=xa,onSelect:i=xa}=t,o=w.exports.useCallback((d,c,u)=>{d.stopPropagation(),$h.debug("Rule clicked",c,u),i(u)},[i]),r=w.exports.useCallback((d,c,u)=>{d.stopPropagation(),$h.debug("Delete button clicked",c,u);const m=[...e];m.splice(u,1),n(m)},[n,e]),l=w.exports.useCallback(d=>{d.stopPropagation()},[]),a=w.exports.useCallback(d=>{if(jt.stopDragging(),d.destination==null)return;const c=d.source.index,u=d.destination.index,m=[...e],p=e[c];m.splice(c,1),m.splice(u,0,p),n(m)},[n,e]);return T("div",{className:"conditional-formatting-rules",children:[h(_l,{onDragStart:jt.startDragging,onDragEnd:a,children:h(xl,{droppableId:"droppable-custom-columns",children:(d,c)=>T("div",{ref:d.innerRef,...d.droppableProps,className:z("droppable-container",{dragging:c.draggingFromThisWith}),children:[e.length===0&&h("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>h(Cd,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(p,g)=>h("div",{role:"menuitem",tabIndex:0,onClick:f=>o(f,u,m),className:z("draggable-container",{dragging:g.isDragging}),ref:p.innerRef,...p.draggableProps,children:h("div",{className:"conditional-formatting-list-item",children:T("div",{className:"formatting-item",children:[h("div",{className:"rule-icon",children:h("span",{className:"rule-icon-bg",style:{backgroundColor:Tl(u.config.style),color:El(u.config.style)},children:u.type===Qn.ROWS?"row":"col"})}),h("div",{className:"rule-title",children:_E(u.config)}),h(W,{kind:"ghost",className:"ml-1 px-2",onClick:f=>r(f,u,m),icon:hn,tooltip:"Delete rule"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...p.dragHandleProps,children:[h(ze,{children:"Drag to re-order"}),h(Z,{icon:rr})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),h("hr",{}),h(W,{kind:"ghost",onClick:s,icon:zs,children:"Add New Rule"})]})}const Oi=X.module("ConditionEditor"),OE=()=>{},LE=[Xe.IS_EQUAL,Xe.IS_NOT_EQUAL,Xe.IS_BETWEEN,Xe.GREATER_THAN,Xe.GREATER_THAN_OR_EQUAL,Xe.LESS_THAN,Xe.LESS_THAN_OR_EQUAL,Xe.IS_NULL,Xe.IS_NOT_NULL].map(t=>h("option",{value:t,children:Xv(t)},t)),AE=[on.IS_EXACTLY,on.IS_NOT_EXACTLY,on.CONTAINS,on.DOES_NOT_CONTAIN,on.STARTS_WITH,on.ENDS_WITH,on.IS_NULL,on.IS_NOT_NULL].map(t=>h("option",{value:t,children:jv(t)},t)),PE=[Ut.IS_EXACTLY,Ut.IS_NOT_EXACTLY,Ut.IS_BEFORE,Ut.IS_BEFORE_OR_EQUAL,Ut.IS_AFTER,Ut.IS_AFTER_OR_EQUAL,Ut.IS_NULL,Ut.IS_NOT_NULL].map(t=>h("option",{value:t,children:Zv(t)},t)),HE=[$o.IS_TRUE,$o.IS_FALSE,$o.IS_NULL,$o.IS_NOT_NULL].map(t=>h("option",{value:t,children:Qv(t)},t)),UE=[ui.IS_EQUAL,ui.IS_NOT_EQUAL,ui.IS_NULL,ui.IS_NOT_NULL].map(t=>h("option",{value:t,children:Jv(t)},t));function VE(t,e,n,s){return t===Xe.IS_NULL||t===Xe.IS_NOT_NULL||t===Xe.IS_BETWEEN&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))&&s!=null&&s!==""&&!Number.isNaN(Number.parseFloat(s))||t!==Xe.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function BE(t,e,n,s,i,o,r){switch(t){case Xe.IS_EQUAL:case Xe.IS_NOT_EQUAL:case Xe.GREATER_THAN:case Xe.GREATER_THAN_OR_EQUAL:case Xe.LESS_THAN:case Xe.LESS_THAN_OR_EQUAL:return h("input",{type:"number",className:"form-control",placeholder:"Enter value",value:i!=null?i:"",onChange:e});case Xe.IS_BETWEEN:return T("div",{className:"d-flex flex-row",children:[h("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:o!=null?o:"",onChange:n}),h("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:r!=null?r:"",onChange:s})]});case Xe.IS_NULL:case Xe.IS_NOT_NULL:return null}}function $E(t,e,n){switch(t){case on.IS_NULL:case on.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function WE(t,e,n){switch(t){case Ut.IS_NULL:case Ut.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function zE(){return null}function GE(t,e,n){switch(t){case ui.IS_NULL:case ui.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function qp(t){const{column:e,config:n,onChange:s=OE}=t,i=e.type,[o,r]=w.exports.useState(i),[l,a]=w.exports.useState(n.condition),[d,c]=w.exports.useState(n.value),[u,m]=w.exports.useState(n.start),[p,g]=w.exports.useState(n.end);i!==o&&(a(Ep(i)),c(void 0),m(void 0),g(void 0),r(i));const f=w.exports.useMemo(()=>{if(i===void 0)return[];if(L.isNumberType(i))return LE;if(L.isCharType(i))return UE;if(L.isStringType(i))return AE;if(L.isDateType(i))return PE;if(L.isBooleanType(i))return HE},[i]),b=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleConditionChange",I),a(I)},[]),C=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleValueChange",I),c(I)},[]),S=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleStartValueChange",I),m(I)},[]),v=w.exports.useCallback(E=>{const{value:I}=E.target;Oi.debug("handleEndValueChange",I),g(I)},[]);w.exports.useEffect(function(){let I=!0;l===void 0&&(Oi.debug("Unable to create formatting rule. Condition is not selected."),I=!1),L.isNumberType(e.type)&&!VE(l,d,u,p)&&(Oi.debug("Unable to create formatting rule. Invalid value",d),I=!1),s({condition:l,value:d,start:u,end:p},I)},[s,e.type,l,d,u,p]);const y=w.exports.useMemo(()=>{if(i===void 0)return null;if(L.isNumberType(i))return BE(l,C,S,v,d,u,p);if(L.isCharType(i))return GE(l,C,d);if(L.isStringType(i))return $E(l,C,d);if(L.isDateType(i))return WE(l,C,d);if(L.isBooleanType(i))return zE()},[i,l,d,u,p,C,S,v]);return T("div",{className:"condition-editor mb-2",children:[h("select",{value:l,id:"condition-select",className:"custom-select mb-2",onChange:b,children:f}),y]})}const KE=X.module("StyleEditor"),qE="#fcfcfa",YE="#f0f0ee",XE="#1a171a",jE=200,ZE=()=>{};function Yp(t){var v,y;const{config:e,onChange:n=ZE}=t,[s,i]=w.exports.useState(e.type),[o,r]=w.exports.useState((y=(v=e.customConfig)==null?void 0:v.background)!=null?y:qE),[l,a]=w.exports.useState(!1),[d,c]=w.exports.useState(jE),u=w.exports.useRef(null),m=w.exports.useCallback(E=>{const{value:I}=E.target;KE.debug("handleBackgroundChange",I),r(I)},[]),p=w.exports.useCallback(()=>{l&&a(!1)},[l]),g=w.exports.useCallback(()=>{l||b(),a(!l)},[l]),f=w.exports.useMemo(()=>[Bn.NO_FORMATTING,Bn.POSITIVE,Bn.NEGATIVE,Bn.WARN,Bn.NEUTRAL,Bn.ACCENT_1,Bn.ACCENT_2,Bn.CUSTOM],[]);function b(){u.current&&c(u.current.getBoundingClientRect().width)}w.exports.useEffect(function(){n({type:s,customConfig:{color:Ll.isDark(o)?YE:XE,background:o}})},[n,s,o]);const C=w.exports.useCallback(()=>{const E=[];for(let I=0;I<f.length;I+=1){const R=f[I],N=`option-${I}-${R}`;E.push(T(W,{kind:"inline",className:"style-option-btn",onClick:()=>{i(R),a(!1)},style:{color:El({type:R}),background:Tl({type:R})},children:[R===s&&h(Z,{icon:Xn,className:"mr-2"}),R!==s&&h("span",{className:"mr-4"}),Lh(R)]},N))}return E},[f,s]),S=w.exports.useCallback(()=>h("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:h("div",{className:"style-options",children:C()})}),[d,C]);return T("div",{className:"style-editor",children:[T("div",{className:"mb-2",ref:u,children:[h("label",{className:"mb-0",children:"Style"}),T(W,{kind:"inline",className:"cs-dropdown",style:{color:El({type:s}),background:Tl({type:s})},onClick:g,children:[Lh(s),h("span",{children:h(Z,{icon:xd,className:"cs-caret"})}),h(Nn,{isShown:l,actions:{menuElement:S()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:p,menuStyle:{maxWidth:"100rem"}})]})]}),s===Bn.CUSTOM&&T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Background"}),h("input",{type:"color",value:o,className:"custom-select color-select",onChange:m})]})]})}const _o=X.module("ColumnFormatEditor"),QE=()=>{};function JE(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:Ip(),...Jl(e)}}function e1(t){var b;const{columns:e,config:n=JE(e),onChange:s=QE}=t,[i,o]=w.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=w.exports.useState(yp(n)),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState(n.style),m=w.exports.useCallback(C=>{const S=e.find(({name:v})=>v===C);S!==void 0?(o(S),i.type!==S.type&&(l(Jl(S.type)),d(!1))):_o.error(`Column ${C} not found.`)},[e,i]),p=w.exports.useCallback((C,S)=>{_o.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=w.exports.useCallback(C=>{_o.debug("handleStyleChange",C),u(C)},[]);w.exports.useEffect(function(){if(i===void 0){_o.debug("Column is not selected, skip update.");return}if(c===void 0){_o.debug("Style is not selected, skip update.");return}const{type:S,name:v}=i;s({column:{type:S,name:v},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Cell If"}),h(ao,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(we,{children:[h(qp,{column:i,config:r,onChange:p}),h(Yp,{config:c,onChange:g})]})]})}const ko=X.module("RowFormatEditor"),t1=()=>{};function n1(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:Ip(),...Jl(e)}}function s1(t){var b;const{columns:e,config:n=n1(e),onChange:s=t1}=t,[i,o]=w.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=w.exports.useState(yp(n)),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState(n.style),m=w.exports.useCallback(C=>{const S=e.find(({name:v})=>v===C);S!==void 0?(o(S),i.type!==S.type&&(l(Jl(S.type)),d(!1))):ko.error(`Column ${C} not found.`)},[e,i]),p=w.exports.useCallback((C,S)=>{ko.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=w.exports.useCallback(C=>{ko.debug("handleStyleChange",C),u(C)},[]);w.exports.useEffect(function(){if(i===void 0){ko.debug("Column is not selected, skip update.");return}if(c===void 0){ko.debug("Style is not selected, skip update.");return}const{type:S,name:v}=i;s({column:{type:S,name:v},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Row If"}),h(ao,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(we,{children:[h(qp,{column:i,config:r,onChange:p}),h(Yp,{config:c,onChange:g})]})]})}const _a=X.module("ConditionalFormatEditor"),ka=()=>{};function i1(t){switch(t){case Qn.CONDITIONAL:return h(QT,{});case Qn.ROWS:return h(JT,{})}}function o1(t){switch(t){case Qn.CONDITIONAL:return"Conditional";case Qn.ROWS:return"Rows"}}const Wh=[Qn.CONDITIONAL,Qn.ROWS];function r1(t){var C;const{columns:e,onSave:n=ka,onUpdate:s=ka,onCancel:i=ka,rule:o}=t,r=e.filter(mT),[l,a]=w.exports.useState((C=o==null?void 0:o.type)!=null?C:Wh[0]),[d,c]=w.exports.useState(o),[u,m]=w.exports.useState(!1),p=w.exports.useCallback(()=>{i()},[i]),g=w.exports.useCallback(()=>{if(d===void 0){_a.error("Rule is not defined.");return}n(d)},[n,d]),f=w.exports.useCallback(S=>{_a.debug("handleFormatterChange",S),a(S)},[]),b=w.exports.useCallback((S,v)=>{_a.debug("handleRuleChange",S,v,l);const y={type:l,config:S};c(y),m(v),s(v?y:void 0)},[s,l]);return T("div",{className:"conditional-format-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h("div",{className:"formatter-list",children:Wh.map((S,v)=>h("div",{className:"formatter-type",children:T("button",{type:"button",className:z("btn","btn-icon","btn-formatter-type",{active:S===l}),"data-index":v,onClick:()=>f(S),children:[i1(S),o1(S)]})},S))})]}),l===Qn.CONDITIONAL&&h(e1,{columns:r,config:d==null?void 0:d.config,onChange:b}),l===Qn.ROWS&&h(s1,{columns:r,config:d==null?void 0:d.config,onChange:b}),h("hr",{}),T("div",{className:"d-flex justify-content-end my-3",children:[h(W,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),h(W,{kind:"primary",onClick:g,disabled:d===void 0||!u,children:"Done"})]})]})}function l1({text:t,isOpen:e,onClose:n}){var v,y;const[s,i]=w.exports.useState(!1),[o,r]=w.exports.useState(0),[l,a]=w.exports.useState(!1),[d,c]=w.exports.useState(!1),[u,m]=w.exports.useState(!1),p=w.exports.useRef();w.exports.useEffect(function(){if(!!e){try{JSON.parse(t),m(!0)}catch{m(!1)}c(!1)}},[e,t]),w.exports.useEffect(function(){p.current&&p.current.layout()},[o]),w.exports.useEffect(function(){p.current&&p.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function g(){a(!l)}function f(){var I;const E=(I=p.current)==null?void 0:I.getModel();!u||!E||(d?(E.setValue(t),c(!1)):(E.setValue(JSON.stringify(JSON.parse(t),void 0,2)),c(!0)),b())}function b(){var I,R;const E=p.current;!E||a(((R=(I=E.getModel())==null?void 0:I.getLineCount())!=null?R:0)>1)}function C(){s&&(p.current=void 0,n())}function S(E){p.current=E,r(E.getContentHeight()),E.onDidContentSizeChange(({contentHeight:I})=>r(I)),b()}return!e&&!s?null:T(tr,{isOpen:e,centered:!0,keyboard:!0,toggle:C,onOpened:()=>i(!0),onClosed:()=>{i(!1),r(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[T(sr,{toggle:n,children:[h("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h(Pl,{kind:"inline",tooltip:"Copy cell contents",copy:(y=(v=p.current)==null?void 0:v.getValue())!=null?y:t}),h(W,{kind:"inline",active:l,icon:xC,tooltip:"Toggle line numbers",onClick:g}),u&&h(W,{kind:"inline",icon:DC,active:d,tooltip:"Format as JSON",onClick:f})]}),h(nr,{style:{height:o},children:h(zl,{onEditorInitialized:S,settings:{value:t,readOnly:!0,wordWrap:"on",language:u?"typescript":"plaintext",folding:u,padding:{bottom:16},lineNumbers:l?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}const a1="###,##0";function d1({gotoRow:t,gotoRowError:e,onSubmit:n,isShown:s,onEntering:i,onEntered:o,onExiting:r,onExited:l,model:a,onGotoRowNumberChanged:d,onClose:c}){const u=w.exports.useRef(null),m="Row number",{rowCount:p}=a;return w.exports.useEffect(()=>{var g;document.activeElement!==u.current&&((g=u.current)==null||g.select())},[t]),h(ea,{isShown:s,className:z("goto-row"),onEntering:i,onEntered:()=>{var g;o(),(g=u.current)==null||g.select()},onExiting:r,onExited:l,children:T(we,{children:[T("div",{className:"goto-row-wrapper",children:[h("div",{className:"goto-row-text",children:"Go to row"}),h("div",{className:"goto-row-input",children:h("input",{ref:u,type:"number",onKeyDown:g=>{g.key==="Enter"&&(g.stopPropagation(),g.preventDefault(),n())},className:z("form-control",{"is-invalid":e!==""}),placeholder:m,onChange:g=>{d(g)},value:t})}),T("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(a1,p)]}),e&&h("div",{className:"goto-row-error text-danger",children:e})]}),h("div",{className:"goto-row-close",children:h(W,{kind:"ghost",onClick:c,children:h(Z,{icon:oo,style:{marginRight:"0"}})})})]})})}const be=X.module("IrisGrid"),c1=500,h1=250,u1=250,Xp=Object.freeze({aggregations:[],showOnTop:!1}),m1="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function zh({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}){return t.size===0&&e.aggregations.length===0&&n.length===0&&s.size===0&&i===L.REVERSE_TYPE.NONE&&o==null&&r==null&&l.length===0&&a.length===0}const Us=class extends w.exports.Component{constructor(t){super(t),this.getAdvancedMenuOpenedHandler=fe(_=>this.handleAdvancedMenuOpened.bind(this,_),{max:100}),this.getCachedAdvancedFilterMenuActions=fe((_,k,V,G,q)=>h(ic,{model:_,column:k,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:V,sortDirection:G,formatter:q}),{max:50}),this.getCachedOptionItems=fe((_,k,V,G,q,Q,ce,ae,le,Ee,ee,pe,ve,De,qe,dt)=>{const st=[];return _&&st.push({type:ke.CHART_BUILDER,title:"Chart Builder",icon:sb}),st.push({type:ke.VISIBILITY_ORDERING_BUILDER,title:"Hide, Group, and Order Columns",icon:Rd}),V&&st.push({type:ke.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:ir}),k&&st.push({type:ke.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:BC}),G&&st.push({type:ke.ROLLUP_ROWS,title:"Rollup Rows",icon:Ou}),q&&st.push({type:ke.AGGREGATIONS,title:"Aggregate Columns",icon:$C}),Q&&st.push({type:ke.SELECT_DISTINCT,title:"Select Distinct Values",icon:VC}),ce&&ve&&st.push({type:ke.TABLE_EXPORTER,title:"Download CSV",icon:bC}),dt&&st.push({type:ke.ADVANCED_SETTINGS,title:"Advanced Settings",icon:zC}),st.push({type:ke.QUICK_FILTERS,title:"Quick Filters",subtitle:ae.shortcut.getDisplayText(),icon:hl,isOn:ee,onChange:ae.action}),De&&st.push({type:ke.SEARCH_BAR,title:"Search Bar",subtitle:le.shortcut.getDisplayText(),icon:xu,isOn:pe,onChange:le.action}),st.push({type:ke.GOTO,title:"Go to",subtitle:Ee.shortcut.getDisplayText(),icon:UC,isOn:qe,onChange:Ee.action}),st},{max:1}),this.getCachedHiddenColumns=fe(_=>_,{max:1,normalizer:([_])=>_.join()}),this.getAggregationMap=fe((_,k)=>{const V={};return k.forEach(({operation:G,selected:q,invert:Q})=>{V[G]=$s.getOperationColumnNames(_,G,q,Q)}),V}),this.getOperationMap=fe((_,k)=>{const V={};return k.filter(G=>!$s.isRollupOperation(G.operation)).forEach(({operation:G,selected:q,invert:Q})=>{$s.getOperationColumnNames(_,G,q,Q).forEach(ce=>{var le;const ae=[...(le=V[ce])!=null?le:[],G];V[ce]=ae})}),V}),this.getOperationOrder=fe(_=>_.map(k=>k.operation).filter(k=>!$s.isRollupOperation(k))),this.getCachedFormatColumns=fe((_,k)=>uT(_,k)),this.getCachedModelColumns=fe((_,k)=>_.columns),this.getCachedPreviewFormatColumns=fe((_,k,V,G)=>{if(be.debug("getCachedPreviewFormatColumns",k,V,G),V!==void 0&&G!==void 0){const q=[...k];return q[G]=V,this.getCachedFormatColumns(_,q)}return this.getCachedFormatColumns(_,k)}),this.getModelRollupConfig=fe((_,k,V)=>te.getModelRollupConfig(_,k,V)),this.getModelTotalsConfig=fe((_,k,V)=>{var ae,le,Ee;const{aggregations:G,showOnTop:q}=V;if(((le=(ae=k==null?void 0:k.columns)==null?void 0:ae.length)!=null?le:0)>0||((Ee=G==null?void 0:G.length)!=null?Ee:0)===0)return null;const Q=this.getOperationMap(_,G),ce=this.getOperationOrder(G);return{operationMap:Q,operationOrder:ce,showOnTop:q}}),this.getCachedStateOverride=fe((_,k,V,G,q,Q,ce,ae,le,Ee)=>({hoverSelectColumn:_,isFilterBarShown:k,isSelectingColumn:V,loadingScrimProgress:G,quickFilters:q,advancedFilters:Q,sorts:ce,reverseType:ae,rollupConfig:le,isMenuShown:Ee}),{max:1}),this.getCachedFilter=fe((_,k,V,G,q)=>[..._!=null?_:[],...G!=null?G:[],...te.getFiltersFromFilterMap(k),...te.getFiltersFromFilterMap(V),...q!==void 0?[q]:[]],{max:1}),this.getCachedTheme=fe((_,k,V)=>({..._p,..._,autoSelectRow:!k,rowFooterWidth:V>0?_.rowFooterWidth:0}),{max:1}),this.getAlwaysFetchColumns=fe((_,k,V,G,q,Q)=>{const ce=[];for(let le=0;le<G;le+=1)ce.push(k[j.getModelIndex(le,V)].name);for(let le=0;le<q;le+=1)ce.push(k[j.getModelIndex(k.length-1-le,V)].name);if(Q)for(let le=Q[0];le<=Q[1];le+=1)ce.push(k[j.getModelIndex(le,V)].name);return[...new Set([..._,...ce])]}),this.updateSearchFilter=je((_,k,V,G)=>{const q=Gr.createSearchFilter(_,k,V,G);this.setState({searchFilter:q})},h1),this.handleConditionalFormatEditorUpdate=je(_=>{this.setState({conditionalFormatPreview:_})},u1),this.handleDownloadProgressUpdate=Zn((_,k)=>{const{tableDownloadStatus:V}=this.state;V===rn.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:_,tableDownloadEstimatedTime:k})},c1),this.getOverflowButtonTooltip=fe(_=>{if(_==null)return null;const k={position:"absolute",..._,pointerEvents:"none"};return h("div",{style:k,children:h(ze,{options:{placement:"left",modifiers:{flip:{behavior:["left","right"]}}},ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}),this.handleAdvancedFilterChange=this.handleAdvancedFilterChange.bind(this),this.handleAdvancedFilterSortChange=this.handleAdvancedFilterSortChange.bind(this),this.handleAdvancedFilterDone=this.handleAdvancedFilterDone.bind(this),this.handleAdvancedMenuOpened=this.handleAdvancedMenuOpened.bind(this),this.handleGotoRowOpened=this.handleGotoRowOpened.bind(this),this.handleGotoRowClosed=this.handleGotoRowClosed.bind(this),this.handleAdvancedMenuClosed=this.handleAdvancedMenuClosed.bind(this),this.handleAggregationChange=this.handleAggregationChange.bind(this),this.handleAggregationsChange=this.handleAggregationsChange.bind(this),this.handleAggregationEdit=this.handleAggregationEdit.bind(this),this.handleAnimationLoop=this.handleAnimationLoop.bind(this),this.handleAnimationStart=this.handleAnimationStart.bind(this),this.handleAnimationEnd=this.handleAnimationEnd.bind(this),this.handleChartChange=this.handleChartChange.bind(this),this.handleChartCreate=this.handleChartCreate.bind(this),this.handleGridError=this.handleGridError.bind(this),this.handleFilterBarChange=this.handleFilterBarChange.bind(this),this.handleFilterBarDone=this.handleFilterBarDone.bind(this),this.handleFilterBarTab=this.handleFilterBarTab.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleMenu=this.handleMenu.bind(this),this.handleMenuClose=this.handleMenuClose.bind(this),this.handleMenuSelect=this.handleMenuSelect.bind(this),this.handleMenuBack=this.handleMenuBack.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleSelectionChanged=this.handleSelectionChanged.bind(this),this.handleMovedColumnsChanged=this.handleMovedColumnsChanged.bind(this),this.handleHeaderGroupsChanged=this.handleHeaderGroupsChanged.bind(this),this.handleUpdate=this.handleUpdate.bind(this),this.handleTooltipRef=this.handleTooltipRef.bind(this),this.handleViewChanged=this.handleViewChanged.bind(this),this.handleFormatSelection=this.handleFormatSelection.bind(this),this.handleConditionalFormatCreate=this.handleConditionalFormatCreate.bind(this),this.handleConditionalFormatEdit=this.handleConditionalFormatEdit.bind(this),this.handleConditionalFormatsChange=this.handleConditionalFormatsChange.bind(this),this.handleConditionalFormatEditorSave=this.handleConditionalFormatEditorSave.bind(this),this.handleConditionalFormatEditorCancel=this.handleConditionalFormatEditorCancel.bind(this),this.handleUpdateCustomColumns=this.handleUpdateCustomColumns.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.handleSelectDistinctChanged=this.handleSelectDistinctChanged.bind(this),this.handlePendingDataUpdated=this.handlePendingDataUpdated.bind(this),this.handlePendingCommitClicked=this.handlePendingCommitClicked.bind(this),this.handlePendingDiscardClicked=this.handlePendingDiscardClicked.bind(this),this.handleGotoRowSelectedRowNumberSubmit=this.handleGotoRowSelectedRowNumberSubmit.bind(this),this.focusRowInGrid=this.focusRowInGrid.bind(this),this.handleDownloadTable=this.handleDownloadTable.bind(this),this.handleDownloadTableStart=this.handleDownloadTableStart.bind(this),this.handleCancelDownloadTable=this.handleCancelDownloadTable.bind(this),this.handleDownloadCanceled=this.handleDownloadCanceled.bind(this),this.handleDownloadCompleted=this.handleDownloadCompleted.bind(this),this.handlePartitionAppend=this.handlePartitionAppend.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionFetchAll=this.handlePartitionFetchAll.bind(this),this.handlePartitionDone=this.handlePartitionDone.bind(this),this.handleColumnVisibilityChanged=this.handleColumnVisibilityChanged.bind(this),this.handleCrossColumnSearch=this.handleCrossColumnSearch.bind(this),this.handleRollupChange=this.handleRollupChange.bind(this),this.handleOverflowClose=this.handleOverflowClose.bind(this),this.getColumnBoundingRect=this.getColumnBoundingRect.bind(this),this.handleGotoRowSelectedRowNumberChanged=this.handleGotoRowSelectedRowNumberChanged.bind(this),this.grid=null,this.gridWrapper=null,this.lastLoadedConfig=null,this.pending=new Ss,this.globalColumnFormats=[],this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new Ko,this.tableSaver=null,this.crossColumnRef=Y.createRef(),this.isAnimating=!1,this.filterInputRef=Y.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:an.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:an.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:an.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:_}=this.props;et(_)&&_.isEditable&&_.pendingDataMap.size>0&&this.discardPending().catch(be.error)},shortcut:an.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:_}=this.props;et(_)&&_.isEditable&&_.pendingDataMap.size>0&&_.pendingDataErrors.size===0&&this.commitPending().catch(be.error)},shortcut:an.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{aggregationSettings:e,conditionalFormats:n,customColumnFormatMap:s,isFilterBarShown:i,isSelectingPartition:o,model:r,movedColumns:l,movedRows:a,partition:d,partitionColumn:c,rollupConfig:u,userColumnWidths:m,userRowHeights:p,showSearchBar:g,searchValue:f,selectedSearchColumns:b,invertSearchColumns:C,advancedFilters:S,quickFilters:v,selectDistinctColumns:y,pendingDataMap:E,canCopy:I,frozenColumns:R,columnHeaderGroups:N}=t,F=[new IT(this),new RT(this)];I&&F.push(new TT(this));const B=[new DT(this),new MT(this),new NT(this),new kT(this),new _T(this),new vs(this),new xT(this),new OT(this)],U=l.length>0?l:r.initialMovedColumns,x=a.length>0?a:r.initialMovedRows,H=new PT({userColumnWidths:new Map(m),userRowHeights:new Map(p),movedColumns:U}),A=b!=null?b:[],O=Gr.createSearchFilter(f,A,r.columns,C);this.state={isFilterBarShown:i,isSelectingPartition:o,focusedFilterBarColumn:null,metricCalculator:H,metrics:void 0,keyHandlers:F,mouseHandlers:B,partition:d,partitionColumn:c,partitionTable:null,partitionFilters:[],quickFilters:v?new Map(v):new Map,advancedFilters:new Map(S),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:L.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:U,movedRows:x,shownColumnTooltip:null,formatter:new cn,isMenuShown:!1,customColumnFormatMap:new Map(s),conditionalFormats:n,conditionalFormatEditIndex:null,conditionalFormatPreview:void 0,hoverSelectColumn:null,isTableDownloading:!1,isReady:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:0,showSearchBar:g,searchFilter:O,searchValue:f,selectedSearchColumns:A,invertSearchColumns:C,rollupConfig:u,rollupSelectedColumns:[],aggregationSettings:e,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:E!=null?E:new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:R,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,isGotoRowShown:!1,gotoRow:"",gotoRowError:"",columnHeaderGroups:N!=null?N:r.initialColumnHeaderGroups}}static makeQuickFilter(t,e,n){try{return L.makeQuickFilter(t,e,n)}catch(s){be.error("Error creating quick filter",s)}return null}componentDidMount(){const{partitionColumn:t,model:e}=this.props,n=t!=null?t:e.columns.find(s=>s.isPartitionColumn);e.isFilterRequired&&e.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(e)}componentDidUpdate(t){var c;const{inputFilters:e,isSelectingColumn:n,settings:s,model:i,customFilters:o,sorts:r}=this.props;i!==t.model&&(this.stopListening(t.model),this.startListening(i));const l=e!==t.inputFilters?e.filter(u=>!t.inputFilters.includes(u)):[];if(l.length>0){const{advancedSettings:u}=this.props,m=(c=u.get(bi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS))!=null?c:!1;m&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(l,m)}n!==t.isSelectingColumn&&this.resetColumnSelection(),s!==t.settings&&this.updateFormatterSettings(s),o!==t.customFilters&&this.startLoading("Filtering...",!0),r!==t.sorts&&this.updateSorts(r);const{loadingScrimStartTime:a,loadingScrimFinishTime:d}=this;a!=null&&d!=null&&window.requestAnimationFrame(()=>{const u=Date.now(),m=u-a,p=d-a,g=Math.min(m/p,1);d<u&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(f=>f.loadingScrimProgress==null?(be.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:g})}),this.sendStateChange()}componentWillUnmount(){const{model:t}=this.props;this.stopListening(t),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(t,e,n=!1){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);if(n&&i!=null&&o!=null){const r=s.valueForCell(i,o);if(L.isDateType(s.columns[i].type)){const{formatter:l}=s;return M.i18n.DateTimeFormat.format(m1,r,M.i18n.TimeZone.getTimeZone(l.timeZone))}return r}return n?null:i!=null&&o!=null?s.textForCell(i,o):""}getModelColumn(t){const{metrics:e}=this.state;P(e);const{modelColumns:n}=e;return n==null?null:t!=null?n.get(t):null}getModelRow(t){const{metrics:e}=this.state;P(e);const{modelRows:n}=e;return n==null?null:t!=null?n.get(t):null}getTheme(){var n;const{model:t,theme:e}=this.props;return this.getCachedTheme(e,(n=et(t)&&t.isEditable)!=null?n:!1,t.floatingTopRowCount+t.floatingBottomRowCount)}getVisibleColumn(t){const{movedColumns:e}=this.state;return j.getVisibleIndex(t,e)}applyInputFilters(t,e=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=e?new Map:new Map(s),r=e?new Map:new Map(i);let l=e&&s.size>0;t.forEach(({name:a,type:d,value:c})=>{const u=n.columns.findIndex(({name:m,type:p})=>m===a&&p===d);u>=0?(l=o.delete(u)||l,l=this.applyQuickFilter(u,c,r)||l):be.error("Unable to find column for inputFilter",a,d,c)}),l&&this.setState({quickFilters:r,advancedFilters:o})}applyQuickFilter(t,e,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[t];if(e!=null&&`${e}`.trim().length>0){const r=n.get(t);if(r!=null){const{text:l}=r;if(l===e)return be.debug2("Ignoring change to existing filter"),!1}return n.set(t,{text:e,filter:Us.makeQuickFilter(o,e,i.timeZone)}),!0}return n.delete(t)}setAdvancedFilterMap(t){this.setState({advancedFilters:t})}setAdvancedFilter(t,e,n){be.debug("Setting advanced filter",t,e),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return e==null?i.delete(t):i.set(t,{filter:e,options:n}),{advancedFilters:i}})}setQuickFilter(t,e,n){be.debug("Setting quick filter",t,e,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(t,{filter:e,text:n}),{quickFilters:i}})}setFilterMap(t){var i;be.debug("setFilterMap",t);const{advancedSettings:e}=this.props;((i=e.get(bi.LINK_CHANGE_CLEARS_ALL_FILTERS))!=null?i:!1)&&this.clearAllFilters();const{model:s}=this.props;t.forEach(({columnType:o,filterList:r},l)=>{const a=s.columns.find(u=>u.name===l&&u.type===o);if(a==null)return;const d=s.getColumnIndexByName(a.name);P(d);const c=te.combineFiltersFromList(o,r);if(c.length===0)this.removeQuickFilter(d);else{const{formatter:u}=s;this.setQuickFilter(d,Us.makeQuickFilter(a,c,u.timeZone),`${c}`)}})}removeColumnFilter(t){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:e,quickFilters:n})=>{const s=e?new Map(e):new Map,i=n?new Map(n):new Map;return i.delete(t),s.delete(t),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(t){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:e})=>{const n=new Map(e);return n.delete(t),{quickFilters:n}})}clearAllFilters(){be.debug("Clearing all filters");const{advancedFilters:t,quickFilters:e,searchFilter:n}=this.state;e.size===0&&t.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){be.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){be.debug("Rebuilding filters");const{model:t}=this.props,{advancedFilters:e,quickFilters:n}=this.state,{columns:s,formatter:i}=t,o=new Map,r=new Map;e.forEach((l,a)=>{const{options:d}=l,c=s[a],u=L.makeAdvancedFilter(c,d,i.timeZone);o.set(a,{options:d,filter:u})}),n.forEach((l,a)=>{const{text:d}=l,c=s[a];r.set(a,{text:d,filter:Us.makeQuickFilter(c,d,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:r,advancedFilters:o})}setFilters({quickFilters:t,advancedFilters:e}){this.setState({quickFilters:t,advancedFilters:e})}updateFormatterSettings(t,e=!0){var m,p,g;const n=fs.getColumnFormats(t),s=fs.getDateTimeFormatterOptions(t),i=(m=t==null?void 0:t.defaultDecimalFormatOptions)!=null?m:{},o=(p=t==null?void 0:t.defaultIntegerFormatOptions)!=null?p:{},r=(g=t==null?void 0:t.truncateNumbersWithPound)!=null?g:!1,l=!ut(this.globalColumnFormats,n),a=!ut(this.dateTimeFormatterOptions,s),d=!ut(this.decimalFormatOptions,t==null?void 0:t.defaultDecimalFormatOptions),c=!ut(this.integerFormatOptions,o),u=this.truncateNumbersWithPound!==r;(l||a||d||c||u)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=r,this.updateFormatter({},e),a&&e&&this.rebuildFilters())}updateFormatter(t,e=!0){var r;const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...t},i=[...(r=this.globalColumnFormats)!=null?r:[],...s.customColumnFormatMap.values()],o=new cn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);be.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:o},()=>{e&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:t}=this.props;this.updateFormatterSettings(t)}initState(){const{applyInputFiltersOnInit:t,inputFilters:e,sorts:n,model:s,reverseType:i,customColumns:o,searchValue:r,selectedSearchColumns:l,invertSearchColumns:a}=this.props,d=l!=null?l:[],c=Gr.createSearchFilter(r,d,s.columns,a);if(t){const u=e.filter(m=>m.value!=null);this.applyInputFilters(u)}this.setState({sorts:n,reverseType:i,customColumns:o,isReady:!0,searchFilter:c}),this.initFormatter()}async loadPartitionsTable(t){const{model:e}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(e.valuesTable(t),r=>r.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const o=await this.pending.add(n.getViewportData());if(o.rows.length>0){const l=o.rows[0].get(s);this.updatePartition(l,t),this.setState({isSelectingPartition:!0})}else be.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:t},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(t,e){const s=[e.filter().eq(M.FilterValue.ofString(t))];this.setState({partition:t,partitionFilters:s})}copyCell(t,e,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(t,e,n));ro(i).catch(o=>be.error("Unable to copy cell",o))}else be.error("Attempted to copyCell for user without copy permission.")}copyRanges(t,e=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:r,movedColumns:l}=this.state,a=r.getUserColumnWidths();if(o){const d={ranges:re.boundedRanges(t,i.columnCount,i.rowCount),includeHeaders:e,formatValues:n,movedColumns:l,userColumnWidths:a,error:s};this.setState({copyOperation:d})}else be.error("Attempted copyRanges for user without copy permission.")}startLoading(t,e=!1){var s,i;this.setState({loadingText:t});const n=this.getTheme();if(e&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:o,maxScrimTransitionTime:r}=n;P(o),P(r);const l=(i=(s=this.gridWrapper)==null?void 0:s.getBoundingClientRect().height)!=null?i:0,a=Math.max(o,Math.min(l/2,r));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+a,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Us.loadingSpinnerDelay)}}stopLoading(){this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0,this.setState({loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1}),this.loadingTimer!=null&&(clearTimeout(this.loadingTimer),this.loadingTimer=void 0)}rollback(){if(this.lastLoadedConfig){be.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a})}else be.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Xp,customColumns:[],quickFilters:new Map,reverseType:L.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!zh(this.state)}startListening(t){t.addEventListener(Se.EVENT.UPDATED,this.handleUpdate),t.addEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.addEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.addEventListener(Se.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(t){t.removeEventListener(Se.EVENT.UPDATED,this.handleUpdate),t.removeEventListener(Se.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.removeEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.removeEventListener(Se.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){var t;(t=this.grid)==null||t.focus()}focusFilterBar(t){var c,u,m;const{movedColumns:e}=this.state,{model:n}=this.props,{columnCount:s}=n,i=j.getModelIndex(t,e);if(t==null||t<0||s<=t||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:r}=this.state;P(r);const{left:l,rightVisible:a,lastLeft:d}=r;if(t<l)(c=this.grid)==null||c.setViewState({left:t},!0);else if(a<t){const p=(u=this.grid)==null?void 0:u.getMetricState();P(p);const g=o.getLastLeft(p,t,o.getVisibleWidth(p));(m=this.grid)==null||m.setViewState({left:Math.min(g,d),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=t,this.setState({focusedFilterBarColumn:t,isFilterBarShown:!0})}hideColumnByVisibleIndex(t){var s;const{metricCalculator:e,movedColumns:n}=this.state;e.setColumnWidth(j.getModelIndex(t,n),0),(s=this.grid)==null||s.forceUpdate()}freezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;be.debug2("freezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.add(t);const o=s.getColumnIndexByName(t);P(o);const r=j.getVisibleIndex(o,n),l=j.moveItem(r,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:l})}unFreezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;be.debug2("unfreezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.delete(t);const o=s.getColumnIndexByName(t);P(o);const r=j.getVisibleIndex(o,n),l=j.moveItem(r,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:l})}handleColumnVisibilityChanged(t,e){var s;const{metricCalculator:n}=this.state;e?t.forEach(i=>{n.resetColumnWidth(i)}):t.forEach(i=>{n.setColumnWidth(i,0)}),(s=this.grid)==null||s.forceUpdate()}handleCrossColumnSearch(t,e,n){const{model:s}=this.props;this.updateSearchFilter(t,e,s.columns,n),this.setState({searchValue:t,selectedSearchColumns:e,invertSearchColumns:n})}handleAnimationLoop(){var t,e;(t=this.grid)==null||t.updateCanvasScale(),(e=this.grid)==null||e.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){be.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){be.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(t){const{onPartitionAppend:e}=this.props,{partitionColumn:n}=this.state;!n||e(n,t)}handlePartitionChange(t){const{partitionColumn:e}=this.state;!e||this.updatePartition(t,e)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(t){if(ye.isCanceled(t))return;be.error(t);const{onError:e}=this.props;e(t)}showAllColumns(){var s;const{metricCalculator:t}=this.state,n=[...t.getUserColumnWidths().entries()];for(let i=0;i<n.length;i+=1){const[o,r]=n[i];r===0&&t.resetColumnWidth(o)}(s=this.grid)==null||s.forceUpdate()}toggleSort(t,e){be.info("Toggling sort for column",t);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(t);P(i);const o=L.toggleSortForColumn(s,n.columns,i,e);this.updateSorts(o)}updateSorts(t){var e;this.startLoading("Sorting..."),this.setState({sorts:t}),(e=this.grid)==null||e.forceUpdate()}sortColumn(t,e=L.sortDirection.none,n=!1,s=!1){var r;P(t);const{model:i}=this.props,o=L.sortColumn(i.sort,i.columns,t,e,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),(r=this.grid)==null||r.forceUpdate()}reverse(t){var e;this.startLoading("Reversing..."),this.setState({reverseType:t}),(e=this.grid)==null||e.forceUpdate()}isReversible(){const{model:t}=this.props;return t.isReversible}toggleFilterBar(t=this.lastFocusedFilterBarColumn){var n;let{isFilterBarShown:e}=this.state;if(e=!e,this.setState({isFilterBarShown:e}),e)if(t!=null)this.focusFilterBar(t);else{let s=0;const{model:i}=this.props,{columnCount:o}=i;for(let r=0;r<o;r+=1){const l=this.getModelColumn(r);if(l!=null){const a=i.columns[l];if(a!=null&&L.isTextType(a.type)){s=r;break}}}this.focusFilterBar(s)}else(n=this.grid)==null||n.focus()}isTableSearchAvailable(){var s,i,o;const{model:t,canToggleSearch:e}=this.props,n=(s=t==null?void 0:t.layoutHints)==null?void 0:s.searchDisplayMode;return n===((i=M.SearchDisplayMode)==null?void 0:i.SEARCH_DISPLAY_HIDE)?!1:n===((o=M.SearchDisplayMode)==null?void 0:o.SEARCH_DISPLAY_SHOW)?!0:e}toggleSearchBar(){const{showSearchBar:t}=this.state;if(!this.isTableSearchAvailable())return;const e=!t;this.setState({showSearchBar:e},()=>{var n,s,i;e&&((n=this.crossColumnRef)==null?void 0:n.current)?(s=this.crossColumnRef)==null||s.current.focus():(i=this.grid)==null||i.focus()})}toggleGotoRow(t=""){const{isGotoRowShown:e}=this.state;if(t){this.setState({isGotoRowShown:!0,gotoRow:t,gotoRowError:""});return}this.setState({isGotoRowShown:!e,gotoRow:"",gotoRowError:""})}async commitPending(){var i,o;const{model:t}=this.props;if(!et(t)||!t.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:e}=this.state;if(e!=null)throw new Error("Save already in progress");const n=(i=document==null?void 0:document.activeElement)==null?void 0:i.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new Ki("Current input is invalid");(o=this.grid)==null||o.focus()}const s=this.pending.add(t.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(r=>{ye.isCanceled(r)||this.setState({pendingSaveError:r,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(t){const{onColumnSelected:e}=this.props;e(t)}selectData(t,e){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,o={};for(let l=0;l<s.length;l+=1){const a=s[l],{name:d,type:c}=a,u=n.valueForCell(l,e),m=n.textForCell(l,e),p=this.getVisibleColumn(l),g=gt(n)&&n.isRowExpandable(e),f=i.find(b=>b.name===d)!=null;o[d]={value:u,text:m,type:c,isGrouped:f,isExpandable:g,visibleIndex:p}}const{onDataSelected:r}=this.props;r(e,o)}handleAdvancedFilterChange(t,e,n){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);P(i),this.setAdvancedFilter(i,e,n)}handleAdvancedFilterSortChange(t,e,n=!1){var a;const{model:s}=this.props,i=s.getColumnIndexByName(t.name);P(i);const o=L.getSortForColumn(s.sort,i);let r=null;(o==null||o.direction!==e)&&(e===L.sortDirection.descending?r=t.sort().desc():r=t.sort().asc());const l=L.setSortForColumn(s.sort,i,r,n);be.info("Setting table sorts",l),this.startLoading("Sorting..."),this.setState({sorts:l}),(a=this.grid)==null||a.forceUpdate()}handleAdvancedFilterDone(){var t;(t=this.grid)==null||t.focus()}handleAdvancedMenuOpened(t){this.setState({shownAdvancedFilter:t})}handleGotoRowOpened(){this.setState({isGotoRowShown:!0})}handleGotoRowClosed(){this.setState({isGotoRowShown:!1})}handleAdvancedMenuClosed(t){var s,i;const{focusedFilterBarColumn:e,isFilterBarShown:n}=this.state;n&&e===t&&((s=this.filterInputRef)==null?void 0:s.current)!==null?((i=this.filterInputRef)==null||i.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(t){const{model:e,onCreateChart:n}=this.props;n(t,e)}handleGridError(t){be.warn("Grid Error",t),this.setState({toastMessage:h("div",{className:"error-message",children:`${t}`})})}handleFilterBarChange(t){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:e,quickFilters:n})=>{const s=new Map(n);if(e!=null){const i=this.getModelColumn(e);P(i),this.applyQuickFilter(i,t,s)}return{quickFilters:s}})}handleFilterBarDone(t=!0,e=!0){var n;t&&((n=this.grid)==null||n.focus()),e&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(t){const{focusedFilterBarColumn:e}=this.state;P(e),t?this.focusFilterBar(e-1):this.focusFilterBar(e+1)}handleFormatSelection(t,e){const{model:n}=this.props,s=n.columns[t],{customColumnFormatMap:i}=this.state,o=new Map(i);if(e!=null){const r=L.getNormalizedType(s.type);P(r);const l=cn.makeColumnFormattingRule(r,s.name,e);o.set(s.name,l)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}handleMenu(t){t.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:t})=>{const e=[...t];return e.pop(),{openOptions:e}})}handleMenuSelect(t){this.setState(({openOptions:e})=>({openOptions:[...e,t]}))}handleRequestFailed(t){const e=t;if(be.error("request failed:",e.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{be.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${e.detail}`))}}handleUpdate(){var c;this.stopLoading(),be.debug2("Received model update");const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.state,d={advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a};zh(d)?this.lastLoadedConfig=null:this.lastLoadedConfig=d,(c=this.grid)==null||c.forceUpdate()}handleViewChanged(t){var i,o;const{model:e}=this.props,{selectionEndRow:n=0}=(o=(i=this.grid)==null?void 0:i.state)!=null?o:{};let s=0;if(et(e)&&e.isEditable){P(t);const{bottomViewport:r}=t,l=e.rowCount-e.floatingBottomRowCount;n===l-1?s=e.pendingRowCount+1:n===l-2?s=e.pendingRowCount:s=Math.max(0,r-(e.rowCount-e.pendingRowCount)-e.floatingTopRowCount-e.floatingBottomRowCount-1)}this.setState({metrics:t,pendingRowCount:s})}handleSelectionChanged(t){P(t);const{onSelectionChanged:e}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:t}),n!=null&&this.setState({copyOperation:null}),e(t)}handleMovedColumnsChanged(t,e){this.setState({movedColumns:t},e)}handleHeaderGroupsChanged(t){const{model:e}=this.props;this.setState({columnHeaderGroups:te.parseColumnHeaderGroups(e,t).groups},()=>{var n;return(n=this.grid)==null?void 0:n.forceUpdate()})}handleTooltipRef(t){t!=null&&t.startTimer(),this.tooltip=t}handleConditionalFormatsChange(t){be.debug("Updated conditional formats",t),this.setState({conditionalFormats:t})}handleConditionalFormatCreate(){be.debug("Create new conditional format");const{openOptions:t,conditionalFormats:e}=this.state;this.setState({openOptions:[...t,{type:ke.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:e.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(t){be.debug("Edit conditional format",t);const{openOptions:e,conditionalFormats:n}=this.state;this.setState({openOptions:[...e,{type:ke.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:t,conditionalFormatPreview:{...n[t]}})}handleConditionalFormatEditorSave(t){be.debug("Save conditional format changes",t),this.setState(e=>{if(e.conditionalFormatEditIndex===null)return be.debug("Invalid format index"),null;const n=[...e.conditionalFormats];return n[e.conditionalFormatEditIndex]=t,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(t){be.info("handleUpdateCustomColumns:",t);const{model:e}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:r}=this.state,{columns:l}=e,a=e.customColumns.map(c=>`${c}`),d=te.getRemovedCustomColumnNames(a,t);if(d.length>0){const c=te.removeSortsInColumns(s,d),u=te.removeFiltersInColumns(l,i,d),m=te.removeFiltersInColumns(l,o,d),p=te.removeColumnFromMovedColumns(l,n,d),g=te.removeColumnsFromSelectDistinctColumns(r,d);c.length!==s.length&&(be.debug("removing sorts from removed custom columns..."),this.setState({sorts:c})),(u.size!==i.size||m.size!==o.size)&&(be.debug("removing filters from removed custom columns..."),this.setState({quickFilters:u,advancedFilters:m})),ut(n,p)||(be.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),ut(r,g)||(be.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:g}))}this.setState({customColumns:t}),this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){var e;be.debug("custom columns changed");const{isReady:t}=this.state;t?(this.stopLoading(),(e=this.grid)==null||e.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){var s;be.debug("pending data updated");const{model:t}=this.props,{pendingDataMap:e,pendingDataErrors:n}=t;this.setState({pendingDataMap:e,pendingDataErrors:n,pendingSaveError:null}),(s=this.grid)==null||s.forceUpdate()}handleAggregationsChange(t){be.debug("handleAggregationsChange",t),this.startLoading(`Aggregating ${t.aggregations.map(e=>e.operation).join(", ")}...`),this.setState({aggregationSettings:t})}handleAggregationChange(t){be.debug("handleAggregationChange",t),this.startLoading(`Aggregating ${t.operation}...`),this.setState(({aggregationSettings:e})=>({selectedAggregation:t,aggregationSettings:{...e,aggregations:e.aggregations.map(n=>n.operation===t.operation?t:n)}}))}handleAggregationEdit(t){be.debug("handleAggregationEdit",t);const{openOptions:e}=this.state;this.setState({openOptions:[...e,{type:ke.AGGREGATION_EDIT,title:`Edit Columns to ${t.operation}`}],selectedAggregation:t})}handleRollupChange(t){var e,n;be.info("Rollup change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${(n=(e=t==null?void 0:t.columns)==null?void 0:e.join(", "))!=null?n:""}...`),this.setState({rollupConfig:t,movedColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(t){be.debug("SelectDistinct change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${t.length>0?t.join(", "):""}...`),this.setState({selectDistinctColumns:t,movedColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:t}=this.props;t?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:rn.DOWNLOAD_STATUS.INITIATING}):be.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(t,e,n,s,i,o,r){const{canDownloadCsv:l}=this.props;l?(be.info("start table downloading",t,e,n,s,i,o,r),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(t,e,n,s,i,o,r),{tableDownloadStatus:rn.DOWNLOAD_STATUS.DOWNLOADING}))):be.error("Attempted to handleDownloadTable for user without download CSV permission.")}handleCancelDownloadTable(){var t;(t=this.tableSaver)==null||t.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:rn.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:rn.DOWNLOAD_STATUS.CANCELED})}deleteRanges(t){const{model:e}=this.props;this.pending.add(e.delete(t)).catch(n=>{ye.isCanceled(n)||be.error("Unable to delete ranges",t,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:t}=this.props;if(t){const{columnAllowedCursor:e}=this.props;this.grid.setState({cursor:e})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(t=!0){!this.grid||(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},t))}sendStateChange(){if(!this.grid)return;const{state:t}=this,{state:e}=this.grid,{onStateChange:n}=this.props;n(t,e)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){var m;const{metrics:t,shownColumnTooltip:e}=this.state;P(t),P(e);const n=(m=this.gridWrapper)==null?void 0:m.getBoundingClientRect(),s=20;P(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:r,width:l,columnHeaderMaxDepth:a}=t,d=o.get(e),c=r.get(e);P(d),P(c);const u=n.left+Qe(d+c/2,s,l-s);return{top:n.top+(a-1)*i,left:n.left+Qe(d+c/2,s,l-s),bottom:n.top+a*i,right:n.left+Qe(d+c/2,s,l-s)+1,width:1,height:i,x:u,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:t}=this.state;this.focusRowInGrid(t)}focusRowInGrid(t){var i,o,r;const{model:e}=this.props,{rowCount:n}=e;if(this.setState({gotoRow:t}),t===""){this.setState({gotoRowError:""});return}const s=parseInt(t,10);s>n||s<-n?this.setState({gotoRowError:"Invalid row index"}):s===0?(this.setState({gotoRowError:""}),(i=this.grid)==null||i.setFocusRow(0)):s<0?(this.setState({gotoRowError:""}),(o=this.grid)==null||o.setFocusRow(s+n)):((r=this.grid)==null||r.setFocusRow(s-1),this.setState({gotoRowError:""}))}handleGotoRowSelectedRowNumberChanged(t){const e=t.target.value;this.focusRowInGrid(e)}getColumnTooltip(t,e,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:o,allColumnWidths:r,width:l}=e,a=o.get(t),d=r.get(t);if(a==null||d==null)return null;const c=Math.max(0,a);let u=d;a+d>l?u=l-a:a<0&&(u=d-Math.abs(a));const m={position:"absolute",top:(i-1)*s,left:c,width:u,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},g={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},f=this.getModelColumn(t);if(f==null)return null;const b=n.columns[f];return b==null?null:h("div",{style:m,children:h(ze,{timeout:400,interactive:!0,options:g,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h(kp,{model:n,column:b,onStatistics:()=>{var C;(C=this.tooltip)==null||C.update()}})},b.name)})}render(){var Ir,Rr,Dr,Mr,Nr,Fr,xr,pt,Ii;const{children:t,customFilters:e,getDownloadWorker:n,isSelectingColumn:s,isStuckToBottom:i,isStuckToRight:o,model:r,name:l,onlyFetchVisibleColumns:a,alwaysFetchColumns:d,advancedSettings:c,onAdvancedSettingsChange:u,canDownloadCsv:m,onCreateChart:p}=this.props,{metricCalculator:g,metrics:f,isFilterBarShown:b,isSelectingPartition:C,isMenuShown:S,isReady:v,copyOperation:y,focusedFilterBarColumn:E,loadingText:I,loadingScrimProgress:R,loadingSpinnerShown:N,keyHandlers:F,mouseHandlers:B,shownColumnTooltip:U,hoverAdvancedFilter:x,shownAdvancedFilter:H,hoverSelectColumn:A,quickFilters:O,advancedFilters:_,partition:k,partitionFilters:V,partitionTable:G,partitionColumn:q,searchFilter:Q,selectDistinctColumns:ce,movedColumns:ae,movedRows:le,formatter:Ee,conditionalFormats:ee,conditionalFormatPreview:pe,conditionalFormatEditIndex:ve,sorts:De,reverseType:qe,customColumns:dt,selectedRanges:st,isTableDownloading:On,tableDownloadStatus:Bt,tableDownloadProgress:Me,tableDownloadEstimatedTime:ct,showSearchBar:lt,searchValue:Mt,selectedSearchColumns:$t,invertSearchColumns:Ln,aggregationSettings:un,selectedAggregation:vi,rollupConfig:mn,openOptions:_t,pendingSavePromise:Ts,pendingSaveError:Ti,pendingRowCount:So,pendingDataErrors:Ei,pendingDataMap:yi,toastMessage:gr,frozenColumns:fr,columnHeaderGroups:Es,showOverflowModal:qs,overflowText:ha,overflowButtonTooltipProps:Cr,isGotoRowShown:wo,gotoRow:br,gotoRowError:Sr}=this.state;if(!v)return null;const ys=this.getTheme(),ua=this.getCachedFilter(e,O,_,V,Q),vo=g.getUserColumnWidths(),ma=this.getCachedStateOverride(A,b,s,R,O,_,De,qe,mn,S),pa=f?f.top:0,ga=f?f.bottomViewport:0;let wr=null,To=null;a&&(wr=f?f.left:0,To=f?f.right:0);const Eo=f!=null&&f.width>0&&f.height>0,vr=((Rr=(Ir=mn==null?void 0:mn.columns)==null?void 0:Ir.length)!=null?Rr:0)>0;let Is=null;const Tr=f?Math.min(Math.max(Us.minDebounce,Math.round(f.rowCount/200)),Us.maxDebounce):Us.maxDebounce;if(b&&E!=null&&f!=null){const{gridX:Je,gridY:Qt,allColumnXs:Rs,allColumnWidths:Do,width:Ri}=f,An=Rs.get(E),Wt=Do.get(E);if(An!=null&&Wt!=null){const kt=Je+An,ns=Qt-((Dr=ys.filterBarHeight)!=null?Dr:0),Ys=Wt+1,Xs=((Mr=ys.filterBarHeight)!=null?Mr:0)-1,_r={top:ns,left:kt,minWidth:Math.min(Ys,Ri-kt),height:Xs};let Pn="",Di=!0;const js=this.getModelColumn(E);P(js);const Mi=O.get(js),Ds=_.get(js);Mi!=null&&(Pn=Mi.text,Di=Mi.filter!=null);const Ni=O.size!==0||_.size!==0;Is=h(Mp,{ref:this.filterInputRef,style:_r,className:z({error:!Di,active:Pn!==""||Ds!=null,"iris-grid-has-filter":Ni}),isAdvancedFilterSet:Ds!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:(Nr=this.grid)==null?void 0:Nr.handleContextMenu,debounceMs:Tr,value:Pn},E)}}let yo=null;if(I!=null){const Je=T("div",{className:"iris-grid-loading-status",children:[h("div",{className:z("iris-grid-loading-status-bar",{show:N}),children:I}),T("button",{type:"button",onClick:this.handleCancel,className:z("iris-grid-btn-cancel",{show:N}),children:[h(Z,{icon:oo,transform:"down-1"}),"Cancel"]})]}),Qt=f?f.gridY:0;yo=h("div",{className:"iris-grid-loading",style:{top:Qt},children:Je})}let Io=null;U!=null&&f&&(Io=this.getColumnTooltip(U,f,r),(Fr=this.tooltip)==null||Fr.update());const Ro=[];if(f&&b){const{gridX:Je,gridY:Qt,visibleColumns:Rs,allColumnXs:Do,allColumnWidths:Ri}=f,{filterBarHeight:An}=ys;for(let Wt=0;Wt<Rs.length;Wt+=1){const kt=Rs[Wt],ns=Do.get(kt),Ys=Ri.get(kt),Xs=this.getModelColumn(kt);if(Xs!=null&&r.isFilterable(Xs)&&ns!=null&&Ys!=null&&Ys>0){const Pn=Je+ns+Ys-24,Di=Qt-(An!=null?An:0)+2,js={position:"absolute",top:Di,left:Pn},Ds=_.get(Xs)!=null,Ni=kt===x||kt===E||Ds,ba=h("div",{className:z("advanced-filter-button-container",{hidden:!Ni}),style:js,children:Ni&&h(W,{kind:"ghost",className:z("btn-link-icon advanced-filter-button",{"filter-set":Ds}),onClick:()=>{this.setState({shownAdvancedFilter:kt})},onContextMenu:Pg=>{var _c;(_c=this.grid)==null||_c.handleContextMenu(Pg)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:kt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:T("div",{className:"fa-layers",children:[h(Z,{icon:Dd,className:"filter-solid"}),h(Z,{icon:hl,className:"filter-light"})]})})},kt);Ro.push(ba)}}}const Er=[];if(f){const{gridX:Je,visibleColumns:Qt,allColumnXs:Rs,allColumnWidths:Do,columnHeaderHeight:Ri}=f;for(let An=0;An<Qt.length;An+=1){const Wt=Qt[An],kt=Rs.get(Wt),ns=Do.get(Wt);if(kt!=null&&ns!=null&&ns>0){const Ys=Je+kt,Xs=Je+kt+ns-20,_r=b?{position:"absolute",top:Ri,left:Xs,width:20,height:ys.filterBarHeight}:{position:"absolute",top:0,left:Ys,width:ns,height:Ri},Pn=this.getModelColumn(Wt);if(Pn!=null){const Di=r.columns[Pn],js=_.get(Pn),{options:Mi}=js||{},Ds=L.getSortForColumn(r.sort,Pn),Ni=Ds?Ds.direction:null,ba=h("div",{className:"advanced-filter-menu-container",style:_r,children:h(_n,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Wt),onExited:()=>{this.handleAdvancedMenuClosed(Wt)},isShown:H===Wt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,Di,Mi,Ni,Ee)})},Wt);Er.push(ba)}}}}const yr=this.getCachedOptionItems(p!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,b,lt,m,this.isTableSearchAvailable(),wo,c.size>0),fa=_t.map(Je=>{switch(Je.type){case ke.CHART_BUILDER:return h(Ap,{model:r,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},ke.CHART_BUILDER);case ke.VISIBILITY_ORDERING_BUILDER:return h(ac,{model:r,movedColumns:ae,userColumnWidths:vo,columnHeaderGroups:Es,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},ke.VISIBILITY_ORDERING_BUILDER);case ke.CONDITIONAL_FORMATTING:return h(kE,{rules:ee,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case ke.CONDITIONAL_FORMATTING_EDIT:return P(r.columns),P(this.handleConditionalFormatEditorUpdate),h(r1,{columns:r.columns,rule:pe,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case ke.CUSTOM_COLUMN_BUILDER:return h(rc,{model:r,customColumns:dt,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},ke.CUSTOM_COLUMN_BUILDER);case ke.ROLLUP_ROWS:return h(lc,{model:r,onChange:this.handleRollupChange,config:mn},ke.ROLLUP_ROWS);case ke.AGGREGATIONS:return h(zT,{settings:un,isRollup:vr,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case ke.AGGREGATION_EDIT:return vi&&h(KT,{aggregation:vi,columns:r.originalColumns,onChange:this.handleAggregationChange});case ke.TABLE_EXPORTER:return h(rn,{model:r,name:l,userColumnWidths:vo,movedColumns:ae,isDownloading:On,tableDownloadStatus:Bt,tableDownloadProgress:Me,tableDownloadEstimatedTime:ct!=null?ct:void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:st},ke.TABLE_EXPORTER);case ke.SELECT_DISTINCT:return h(Kp,{model:r,selectDistinctColumns:ce,onChange:this.handleSelectDistinctChanged});case ke.ADVANCED_SETTINGS:return h(dc,{items:c,onChange:u});default:throw Error(`Unexpected option type ${Je.type}`)}}),Ca=this.getCachedHiddenColumns(te.getHiddenColumns(vo));return T("div",{className:"iris-grid",role:"presentation",children:[T("div",{className:"iris-grid-column",children:[t!=null&&h("div",{className:"iris-grid-bar",children:t}),h(mt,{in:C,timeout:Be.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:G&&q&&k!=null&&h(Gp,{table:G,getFormattedString:(Je,Qt,Rs)=>r.displayString(Je,Qt,Rs),columnName:q.name,partition:k,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h(mt,{in:lt,timeout:Be.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"iris-grid-bar",children:h(Gr,{value:Mt,selectedColumns:$t,invertSelection:Ln,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),T("div",{className:"grid-wrapper",ref:Je=>{this.gridWrapper=Je},children:[h(uo,{ref:Je=>{this.grid=Je},isStickyBottom:!et(r)||!r.isEditable,isStuckToBottom:i,isStuckToRight:o,metricCalculator:g,model:r,keyHandlers:F,mouseHandlers:B,movedColumns:ae,movedRows:le,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:ma,theme:ys}),h(l1,{isOpen:qs,text:ha,onClose:this.handleOverflowClose}),Eo&&h(xp,{model:r,modelColumns:r.columns,top:pa,bottom:ga,left:wr,right:To,filter:ua,formatter:Ee,sorts:De,reverseType:qe,movedColumns:ae,customColumns:dt,hiddenColumns:Ca,alwaysFetchColumns:this.getAlwaysFetchColumns(d,r.columns,ae,r.floatingLeftColumnCount,r.floatingRightColumnCount,(pt=(xr=this.grid)==null?void 0:xr.state.draggingColumn)==null?void 0:pt.range),formatColumns:this.getCachedPreviewFormatColumns(this.getCachedModelColumns(r,dt),ee,pe,((Ii=_t[_t.length-1])==null?void 0:Ii.type)===ke.CONDITIONAL_FORMATTING_EDIT&&ve!=null?ve:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,mn,un),totalsConfig:this.getModelTotalsConfig(r.columns,mn,un),selectDistinctColumns:ce,pendingRowCount:So,pendingDataMap:yi,frozenColumns:fr,columnHeaderGroups:Es}),!S&&h("div",{className:"grid-settings-button",children:h(W,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${l}`,onClick:this.handleMenu,icon:h(Z,{icon:OC,transform:"up-1"}),tooltip:"Table Options"})}),Is,yo,Ro,Io,Er,Cr&&this.getOverflowButtonTooltip(Cr)]}),h(d1,{model:r,isShown:wo,gotoRow:br,gotoRowError:Sr,onSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd}),h(fT,{error:Ti,isSaving:Ts!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:Ei,pendingDataMap:yi,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h(AT,{children:gr}),h(mo,{model:r,copyOperation:y!=null?y:void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h(po,{ref:Je=>{this.tableSaver=Je},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:Bt===rn.DOWNLOAD_STATUS.DOWNLOADING,formatter:Ee})]}),h(mt,{in:S,timeout:Be.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"table-sidebar",children:T($b,{children:[h(th,{title:"Table Options",onClose:this.handleMenuClose,children:h(em,{onSelect:Je=>this.handleMenuSelect(yr[Je]),items:yr})}),fa.map((Je,Qt)=>h(th,{title:_t[Qt].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Je},_t[Qt].type))]})})}),h(oe,{actions:this.contextActions})]})}};let go=Us;go.minDebounce=150;go.maxDebounce=500;go.loadingSpinnerDelay=800;go.defaultProps={children:null,advancedFilters:new Map,advancedSettings:new Map,alwaysFetchColumns:[],conditionalFormats:[],customColumnFormatMap:new Map,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:[],movedRows:[],inputFilters:[],customFilters:[],onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:new Map,selectDistinctColumns:[],sorts:[],reverseType:L.REVERSE_TYPE.NONE,customColumns:[],aggregationSettings:Xp,rollupConfig:void 0,userColumnWidths:new Map,userRowHeights:new Map,onSelectionChanged:()=>{},isSelectingColumn:!1,isSelectingPartition:!1,isStuckToBottom:!1,isStuckToRight:!1,columnSelectionValidator:null,columnAllowedCursor:null,columnNotAllowedCursor:null,name:"table",onlyFetchVisibleColumns:!0,showSearchBar:!1,searchValue:"",selectedSearchColumns:null,invertSearchColumns:!0,onContextMenu:()=>{},pendingDataMap:new Map,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:bs.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:[],decimalFormatOptions:D.exports.shape({defaultFormatString:D.exports.string}),integerFormatOptions:D.exports.shape({defaultFormatString:D.exports.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:_p,canToggleSearch:!0};class p1 extends Error{constructor(e,n){super(`${n} can't be empty (on pending row ${e+1})`),this.isMissingKey=!0,this.rowIndex=e,this.columnName=n}}const it=X.module("IrisGridTableModel"),g1=150,f1=0,C1=[];function mi(t){return t.table!==void 0}const od=class extends Se{constructor(t,e=new cn,n=null){var s,i;super(),this.pendingNewRowCount=0,this._columnHeaderGroupMap=new Map,this.columnHeaderParentMap=new Map,this._columnHeaderMaxDepth=null,this._columnHeaderGroups=[],this._movedColumns=null,this.getMemoizedInitialMovedColumns=Ce(o=>{var u;if(!o)return[];let r=[];const{groupMap:l}=te.parseColumnHeaderGroups(this,(u=o==null?void 0:o.columnGroups)!=null?u:[]),a=(m,p)=>{const g=this.getColumnIndexByName(m);if(g==null)throw new Error(`Unknown layout hint column: ${m}`);const f=j.getVisibleIndex(g,r);r=j.moveItem(f,p,r)},d=(m,p)=>{const g=l.get(m);if(g==null)throw new Error(`Unknown layout hint group: ${m}`);const f=g.getVisibleRange(r);r=j.moveRange(f,p,r)};if(this.frontColumns.length||this.backColumns.length||this.frozenColumns.length){const m=new Set;let p=0;this.frozenColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,p),p+=1}),this.frontColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,p),p+=1});let g=this.columnMap.size-1;this.backColumns.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);a(f,g),g-=1})}if(o==null?void 0:o.columnGroups){const m=[...l.values()];m.sort((p,g)=>p.depth-g.depth),m.forEach(p=>{const g=p.children[0],f=this.getColumnIndexByName(g);let b;if(f!=null)b=j.getVisibleIndex(f,r);else{const C=l.get(g);if(!C)throw new Error(`Unknown column ${g} in group ${p.name}`);[,b]=C.getVisibleRange(r)}for(let C=1;C<p.children.length;C+=1){const S=p.children[C],v=l.get(S),y=this.getColumnIndexByName(S);if(v){const I=v.getVisibleRange(r)[0]<b?b-v.childIndexes.length+1:b+1;d(S,I),b=I+v.childIndexes.length-1}else if(y!=null){const I=j.getVisibleIndex(y,r)<b?b:b+1;a(S,I),b=I}}})}return this._movedColumns=r,r}),this.getMemoizedInitialColumnHeaderGroups=Ce(o=>{var r;return te.parseColumnHeaderGroups(this,(r=o==null?void 0:o.columnGroups)!=null?r:[]).groups}),this.getMemoizedColumnMap=Ce(o=>{const r=new Map;return o.forEach(l=>r.set(l.name,l)),r}),this.getColumnIndicesByNameMap=Ce(o=>{const r=new Map;return o.forEach(({name:l},a)=>r.set(l,a)),r}),this.setViewport=Zn((o,r,l)=>{if(r<o){it.error("Invalid viewport",o,r);return}const{viewport:a}=this;if(a!=null&&a.top===o&&a.bottom===r&&a.columns===l){it.debug2("Ignoring duplicate viewport",a);return}this.viewport={top:o,bottom:r,columns:l},it.debug2("setViewport",this.viewport),this.applyViewport()},g1),this.applyViewport=Zn(()=>{if(!this.viewport)return;it.debug2("applyViewport",this.viewport);const{top:o,bottom:r,columns:l}=this.viewport,[a,d]=this.getCachedViewportRowRange(o,r);this.applyBufferedViewport(a,d,l)},f1,{leading:!1}),this.getCachedFormattedString=ln((o,r,l,a,d)=>o.getFormattedString(r,l,a,d),{max:1e4}),this.getCachedCustomColumnFormatFlag=ln(fs.isCustomColumnFormatDefined,{max:1e4}),this.getCachedViewportRowRange=Ce((o,r)=>{const l=r-o,a=Math.max(0,o-l*od.ROW_BUFFER_PAGES),d=r+l*od.ROW_BUFFER_PAGES;return[a,d]}),this.getCachedPendingErrors=Ce((o,r,l)=>{const a=new Map;return o.forEach((d,c)=>{var m;const{data:u}=d;for(let p=0;p<l;p+=1)u.has(p)||(a.has(c)||a.set(c,[]),(m=a.get(c))==null||m.push(new p1(c,r[p].name)))}),a}),this.handleTableDisconnect=this.handleTableDisconnect.bind(this),this.handleTableReconnect=this.handleTableReconnect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTotalsUpdate=this.handleTotalsUpdate.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.irisFormatter=e,this.inputTable=n,this.subscription=null,this.table=t,this.viewport=null,this.viewportData=null,this.formattedStringData=[],this.pendingStringData=[],this.isSaveInProgress=!1,this.totalsTable=null,this.totalsTablePromise=null,this.totals=null,this.totalsDataMap=null,this.pendingNewDataMap=new Map,this.pendingNewRowCount=0,this.columnHeaderGroups=te.parseColumnHeaderGroups(this,(i=(s=this.layoutHints)==null?void 0:s.columnGroups)!=null?i:[]).groups}export(){throw new Error("Method not implemented.")}columnStatistics(t){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(t){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(t){throw new Error("Method not implemented.")}updateFrozenColumns(t){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(t){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(t){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening(),this.table.addEventListener(M.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(M.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening(),this.table.removeEventListener(M.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(M.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(M.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(M.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(t){t.addEventListener(M.Table.EVENT_UPDATED,this.handleTotalsUpdate),t.setViewport(0,0)}removeTotalsListeners(t){t.removeEventListener(M.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new Ge(Se.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ge(Se.EVENT.RECONNECT))}handleTableUpdate(t){this.copyViewportData(t.detail),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}handleTotalsUpdate(t){this.copyTotalsData(t.detail),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}handleRequestFailed(t){this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,t))}handleCustomColumnsChanged(){this.dispatchEvent(new Ge(Se.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){var t,e,n;return this.table.size+this.pendingNewRowCount+((n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0)}get pendingDataErrors(){var t,e;return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,(e=(t=this.inputTable)==null?void 0:t.keyColumns.length)!=null?e:0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(t){t!==this.pendingNewDataMap&&(t.forEach((e,n)=>{if(!te.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=e;s.forEach((i,o)=>{if(!te.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=t,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(t){t!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,t,this.maxPendingDataRow),this.dispatchEvent(new Ge(Se.EVENT.UPDATED)))}get maxPendingDataRow(){return this.pendingNewDataMap.size>0?Math.max(...this.pendingNewDataMap.keys())+1:0}get columnCount(){return this.columns.length}get floatingBottomRowCount(){var t,e,n;return this.totals!=null&&this.totals.showOnTop?0:(n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0}get floatingTopRowCount(){var t,e,n;return this.totals!=null&&this.totals.showOnTop&&(n=(e=(t=this.totals)==null?void 0:t.operationOrder)==null?void 0:e.length)!=null?n:0}get isChartBuilderAvailable(){return!0}get isTotalsAvailable(){return this.table.getTotalsTable!=null}get isEditable(){return!this.isSaveInProgress&&this.inputTable!=null}cacheFormattedValue(t,e,n){this.formattedStringData[t]==null&&(this.formattedStringData[t]=[]),this.formattedStringData[t][e]=n}cachePendingValue(t,e,n){this.pendingStringData[t]==null&&(this.pendingStringData[t]=[]),this.pendingStringData[t][e]=n}clearPendingValue(t,e){const n=this.pendingStringData[t];n!=null&&delete n[e]}textValueForCell(t,e){var n,s,i;if(((n=this.pendingStringData[t])==null?void 0:n[e])!==void 0)return this.pendingStringData[t][e];if(((s=this.formattedStringData[t])==null?void 0:s[e])===void 0){const o=this.valueForCell(t,e);if(o==null)return null;const r=(i=this.totalsColumn(t,e))!=null?i:this.columns[t],l=this.getCachedCustomColumnFormatFlag(this.formatter,r.name,r.type);let a;if(!l){const c=this.formatForCell(t,e);(c==null?void 0:c.formatString)!=null&&(a=c)}const d=this.displayString(o,r.type,r.name,a);this.cacheFormattedValue(t,e,d)}return this.formattedStringData[t][e]}textForCell(t,e){const n=this.textValueForCell(t,e);if(n==null&&this.isKeyColumn(t)){const s=this.pendingRow(e);if(s!=null&&this.pendingDataMap.has(s))return"*"}return n!=null?n:""}truncationCharForCell(t){const e=this.columns[t],{type:n}=e;if(L.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(t,e,n){var i;const s=this.dataForCell(t,e);if(s){const{format:o,value:r}=s;if(r==null||r==="")return P(n.nullStringColor),n.nullStringColor;if(o&&o.color)return o.color;if(this.isPendingRow(e))return P(n.pendingTextColor),n.pendingTextColor;if(r!=null){const l=(i=this.totalsColumn(t,e))!=null?i:this.columns[t];if(L.isDateType(l.type)||l.name==="Date")return P(n.dateColor),n.dateColor;if(L.isNumberType(l.type))return r>0?(P(n.positiveNumberColor),n.positiveNumberColor):r<0?(P(n.negativeNumberColor),n.negativeNumberColor):(P(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(e)&&this.isKeyColumn(t))return P(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(t,e){var n,s;return(s=(n=this.formatForCell(t,e))==null?void 0:n.backgroundColor)!=null?s:null}textAlignForCell(t){const e=this.columns[t],{type:n}=e;return L.isNumberType(n)?"right":L.isDateType(n)||e.name==="Date"?"center":"left"}textForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Ma(n)?n.isNew?"":n.name:n==null?void 0:n.name}colorForColumnHeader(t,e=0){var s;const n=this.columnAtDepth(t,e);return Ma(n)&&(s=n.color)!=null?s:null}getColumnHeaderGroup(t,e){const n=this.columnAtDepth(t,e);if(Ma(n))return n}getColumnHeaderParentGroup(t,e){var n,s;return this.columnHeaderParentMap.get((s=(n=this.columnAtDepth(t,e))==null?void 0:n.name)!=null?s:"")}columnAtDepth(t,e=0){var o;if(e===0)return this.columns[t];const n=(o=this.columns[t])==null?void 0:o.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<e;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===e)return s}textForRowFooter(t){const e=this.totalsRow(t);return e!=null&&this.totals?this.totals.operationOrder[e]:""}get initialMovedColumns(){var t;return this.getMemoizedInitialMovedColumns((t=this.layoutHints)!=null?t:void 0)}get initialMovedRows(){return C1}get initialColumnHeaderGroups(){var t;return this.getMemoizedInitialColumnHeaderGroups((t=this.layoutHints)!=null?t:void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){var t;return(t=this._columnHeaderMaxDepth)!=null?t:1}set columnHeaderMaxDepth(t){this._columnHeaderMaxDepth=t}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(t){if(t===this._columnHeaderGroups)return;const{groups:e,maxDepth:n,parentMap:s,groupMap:i}=te.parseColumnHeaderGroups(this,t!=null?t:this.initialColumnHeaderGroups);this._columnHeaderGroups=e,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(t){var l,a,d,c,u,m,p,g,f,b,C,S,v,y;const e=(d=(a=(l=this.totals)==null?void 0:l.operationOrder)==null?void 0:a.length)!=null?d:0,n=(u=(c=this.totals)==null?void 0:c.showOnTop)!=null?u:!1,s=this.totalsRow(t);if(s!=null){const E=(m=this.totals)==null?void 0:m.operationOrder[s];return P(E),(g=(p=this.totalsDataMap)==null?void 0:p.get(E))!=null?g:null}const i=this.pendingRow(t);if(i!=null)return(f=this.pendingNewDataMap.get(i))!=null?f:null;const o=(C=(b=this.viewportData)==null?void 0:b.offset)!=null?C:0,r=(n?t-e:t)-o;return(y=(v=(S=this.viewportData)==null?void 0:S.rows)==null?void 0:v[r])!=null?y:null}totalsColumn(t,e){var r,l,a,d;const n=this.totalsRow(e);if(n==null)return null;const s=(r=this.totals)==null?void 0:r.operationOrder[n],i=(a=(l=this.totals)==null?void 0:l.defaultOperation)!=null?a:Oe.SUM,o=this.columns[t];return(d=this.totalsTable)==null?void 0:d.columns.find(c=>{var u;return c.name===`${o.name}__${s}`||(s===i||((u=this.totals)==null?void 0:u.operationOrder.length)===1)&&c.name===o.name})}totalsRow(t){var i,o,r,l,a;const e=(r=(o=(i=this.totals)==null?void 0:i.operationOrder)==null?void 0:o.length)!=null?r:0,s=((a=(l=this.totals)==null?void 0:l.showOnTop)!=null?a:!1)?t:t-this.table.size;return s>=0&&s<e?s:null}pendingRow(t){const e=t-this.floatingTopRowCount-this.table.size;return e>=0&&e<this.pendingNewRowCount?e:null}isTotalsRow(t){return this.totalsRow(t)!=null}isPendingRow(t){return this.pendingRow(t)!=null}dataForCell(t,e){var n;return(n=this.row(e))==null?void 0:n.data.get(t)}formatForCell(t,e){var n;return(n=this.dataForCell(t,e))==null?void 0:n.format}valueForCell(t,e){var s;const n=this.dataForCell(t,e);if(n)return(s=n.value)!=null?s:null}copyViewportData(t){if(t==null){it.warn("invalid data!");return}this.viewportData=this.extractViewportData(t),this.formattedStringData=[]}copyTotalsData(t){var l,a,d,c,u;if(t==null){it.warn("invalid data!");return}const{columns:e,rows:n}=t;if(n.length!==1){it.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=(a=(l=this.totals)==null?void 0:l.defaultOperation)!=null?a:Oe.SUM,r=(d=this.totals)==null?void 0:d.operationMap;for(let m=0;m<e.length;m+=1){const p=e[m],[g,f=(u=(c=r==null?void 0:r[g])==null?void 0:c[0])!=null?u:o]=p.name.split("__");s.has(f)||s.set(f,{data:new Map});const{data:b}=s.get(f),C=this.columns.findIndex(S=>S.name===g);b.set(C,{value:i.get(p),format:i.getFormat(p)})}it.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(t){return this.getColumnIndicesByNameMap(this.columns).get(t)}extractViewportData(t){const e={offset:t.offset,rows:[]},{columns:n}=t;for(let s=0;s<t.rows.length;s+=1){const i=t.rows[s],o=this.extractViewportRow(i,n);e.rows.push(o)}return e}extractViewportRow(t,e){const n=new Map;for(let s=0;s<e.length;s+=1){const i=e[s],o=this.getColumnIndexByName(i.name);P(o),n.set(o,{value:t.get(i),format:t.getFormat(i)})}return{data:n}}closeSubscription(){it.debug2("closeSubscription",this.subscription),this.subscription&&(this.subscription.close(),this.subscription=null),this.setViewport.cancel(),this.applyViewport.cancel()}get filter(){return this.table.filter}set filter(t){this.closeSubscription(),this.table.applyFilter(t),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(t){this.irisFormatter=t,this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.FORMATTER_UPDATED))}displayString(t,e,n="",s){return this.getCachedFormattedString(this.formatter,t,e,n,s)}get sort(){return this.table.sort}set sort(t){this.closeSubscription(),this.table.applySort(t),this.applyViewport()}set totalsConfig(t){if(it.debug("set totalsConfig",t),t!==this.totals){if(this.totals=t,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),t==null){this.dispatchEvent(new Ge(Se.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(t),e=>e.close()),this.totalsTablePromise.then(e=>{this.totalsTablePromise=null,this.setTotalsTable(e)}).catch(e=>{ye.isCanceled(e)||(it.error("Unable to set next totalsTable",e),this.totalsTablePromise=null,this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,{detail:e})))})}}setTotalsTable(t){it.debug("setTotalsTable",t),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=t,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(t,e,n){it.debug2("applyBufferedViewport",t,e,n),this.subscription==null?(it.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(t,e,n)):(it.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(t,e,n))}async snapshot(t,e=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?re.consolidate(t):t;if(!te.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${t}`);const o=new Set,r=[],l=new Set;for(let m=0;m<i.length;m+=1){const p=i[m];P(p.endRow),P(p.startRow);for(let g=p.startRow;g<=p.endRow&&g<this.floatingTopRowCount;g+=1)o.add(g);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&r.push(new re(p.startColumn,Math.min(Math.max(0,p.startRow-this.floatingTopRowCount)),p.endColumn,Math.min(Math.max(0,p.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let g=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);g<=p.endRow&&g<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;g+=1)l.add(g)}const a=te.columnsFromRanges(i,this.columns),d=[];e&&d.push(a.map(m=>m.name));const c=[...o].sort();for(let m=0;m<c.length;m+=1){const p=c[m],g=a.map(f=>{const b=this.getColumnIndexByName(f.name);return P(b),n(this.valueForCell(b,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}if(r.length>0){const m=te.rangeSetFromRanges(r),p=await this.subscription.snapshot(m,a);d.push(...p.rows.map(g=>a.map(f=>n(g.get(f),f))))}const u=[...l].sort();for(let m=0;m<u.length;m+=1){const p=u[m],g=a.map(f=>{const b=this.getColumnIndexByName(f.name);return P(b),n(this.valueForCell(b,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}return d}async textSnapshot(t,e=!1,n=s=>`${s}`){return it.debug2("textSnapshot",t,e),(await this.snapshot(t,e,n,!1)).map(i=>i.join(" ")).join(`
|
|
36
36
|
`)}async valuesTable(t){let e=null;try{return e=await this.table.copy(),e.applyFilter([]),e.applySort([]),e.selectDistinct([t])}finally{e!=null&&e.close()}}isColumnMovable(t,e){if(t<0||t>=this.columnCount)return!1;if(e>0)return!0;const n=this.columns[t].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)||!n?!1:!this.isKeyColumn(t)}isKeyColumn(t){var e,n;return t<((n=(e=this.inputTable)==null?void 0:e.keyColumns.length)!=null?n:0)}isRowMovable(){return!1}isEditableRange(t){return!(this.inputTable==null||!re.isBounded(t)||!(this.isPendingRow(t.startRow)&&this.isPendingRow(t.endRow)||this.inputTable.keyColumns.length!==0&&t.startColumn>=this.inputTable.keyColumns.length&&t.endColumn>=this.inputTable.keyColumns.length)||t.startRow<this.floatingTopRowCount||t.startRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount||t.endRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount)}isDeletableRange(t){return this.inputTable!=null&&t.startRow!=null&&t.endRow!=null&&t.startRow>=this.floatingTopRowCount&&t.startRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount&&t.endRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount}isEditableRanges(t){return t.every(e=>this.isEditableRange(e))}isDeletableRanges(t){return t.every(e=>this.isDeletableRange(e))}getTableAreaRange(){return new re(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new re(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(t,e,n){return this.setValueForRanges([new re(t,e,t,e)],n)}async setValueForRanges(t,e){var n;if(!this.isEditableRanges(t))throw new Error(`Uneditable ranges ${t}`);try{const s=new Set,i=[];re.forEachCell(t,(d,c)=>{const u=this.columns[d];if(s.add(u),i[d]===void 0){const m=L.makeValue(u.type,e,this.formatter.timeZone);i[d]=m!=null?this.displayString(m,u.type,u.name):null}this.cachePendingValue(d,c,i[d])});const o=this.getPendingAreaRange(),r=t.map(d=>re.intersection(o,d)).filter(d=>d!=null).map(d=>(P(d),re.offset(d,0,-(this.floatingTopRowCount+this.table.size))));if(r.length>0){const d=new Map(this.pendingNewDataMap);re.forEachCell(r,(c,u)=>{d.has(u)||d.set(u,{data:new Map});const m=this.columns[c],p=d.get(u);P(p);const{data:g}=p,f=new Map(g),b=L.makeValue(m.type,e,this.formatter.timeZone);b!=null?f.set(c,{value:b}):f.delete(c),f.size>0?d.set(u,{...p,data:f}):d.delete(u)}),this.pendingDataMap=d}this.dispatchEvent(new Ge(Se.EVENT.UPDATED));const l=this.getTableAreaRange(),a=t.map(d=>re.intersection(l,d)).filter(d=>d!=null);if(a.length>0){const c=(await this.snapshot(a.map(m=>{var p,g;return new re(null,(p=m==null?void 0:m.startRow)!=null?p:null,null,(g=m==null?void 0:m.endRow)!=null?g:null)}))).map(m=>{const p={};for(let g=0;g<this.columns.length;g+=1)p[this.columns[g].name]=m[g];return s.forEach(g=>{p[g.name]=L.makeValue(g.type,e,this.formatter.timeZone)}),p}),u=await((n=this.inputTable)==null?void 0:n.addRows(c));it.debug("setValueForRanges(",t,",",e,") set tableRanges",a,"result",u)}re.forEachCell(t,(d,c)=>{const u=i[d];P(u),this.cacheFormattedValue(d,c,u)})}catch(s){it.error("Unable to set ranges",t,e,s)}finally{re.forEachCell(t,(s,i)=>{this.clearPendingValue(s,i)})}}async setValues(t=[]){var e;if(it.debug("setValues(",t,")"),!t.every(n=>{var s,i;return this.isEditableRange(re.makeCell((s=n.column)!=null?s:n.x,(i=n.row)!=null?i:n.y))}))throw new Error(`Uneditable ranges ${t}`);try{const n=new Map(this.pendingNewDataMap);t.forEach(l=>{var f,b;const{text:a}=l,d=(f=l.column)!=null?f:l.x,c=(b=l.row)!=null?b:l.y,u=this.columns[d],m=L.makeValue(u.type,a,this.formatter.timeZone),p=m!=null?this.displayString(m,u.type,u.name):null;this.cachePendingValue(d,c,p);const g=this.pendingRow(c);if(g!=null){n.has(g)||n.set(g,{data:new Map});const C=n.get(g);P(C);const{data:S}=C,v=new Map(S);m!=null?v.set(d,{value:m}):v.delete(d),v.size>0?n.set(g,{...C,data:v}):n.delete(g)}}),this.pendingDataMap=n,this.dispatchEvent(new Ge(Se.EVENT.UPDATED));const s=t.reduce((l,a)=>{var c,u;const d=(c=a.row)!=null?c:a.y;return l.has(d)||l.set(d,[]),(u=l.get(d))==null||u.push(a),l},new Map),i=re.consolidate(t.map(l=>{var a,d;return re.makeCell((a=l.column)!=null?a:l.x,(d=l.row)!=null?d:l.y)})),o=this.getTableAreaRange(),r=i.map(l=>re.intersection(o,l)).filter(l=>l!=null);if(r.length>0){const a=(await this.snapshot(r.map(c=>(P(c),new re(null,c.startRow,null,c.endRow))))).map((c,u)=>{let m=null,p=u;for(let b=0;b<r.length;b+=1){const C=r[b];P(C);const S=re.rowCount([C]);if(p<S){P(C.startRow),m=C.startRow+p;break}p-=S}const g={};for(let b=0;b<this.columns.length;b+=1)g[this.columns[b].name]=c[b];P(m);const f=s.get(m);return f!=null&&f.forEach(b=>{var S;const C=this.columns[(S=b.column)!=null?S:b.x];g[C.name]=L.makeValue(C.type,b.text,this.formatter.timeZone)}),g});it.info("setValues setting tableRanges",r);const d=await((e=this.inputTable)==null?void 0:e.addRows(a));it.info("setValues set tableRanges",r,"SUCCESS",d)}t.forEach(l=>{var g,f;const{text:a}=l,d=(g=l.column)!=null?g:l.x,c=(f=l.row)!=null?f:l.y,u=this.columns[d],m=L.makeValue(u.type,a,this.formatter.timeZone),p=m!=null?this.displayString(m,u.type,u.name):null;this.cacheFormattedValue(d,c,p)})}finally{t.forEach(n=>{this.clearPendingValue(n.column,n.row)})}}async commitPending(){var t,e,n;if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const s=[];this.pendingNewDataMap.forEach(o=>{const r={};o.data.forEach(({value:l},a)=>{const d=this.columns[a];r[d.name]=l}),s.push(r)});const i=await((t=this.inputTable)==null?void 0:t.addRows(s));it.debug("commitPending()",this.pendingNewDataMap,"result",i),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,((n=(e=this.viewport)==null?void 0:e.bottom)!=null?n:0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.PENDING_DATA_UPDATED))}finally{this.isSaveInProgress=!1}}editValueForCell(t,e){return this.textValueForCell(t,e)}async delete(t){if(!this.isDeletableRanges(t))throw new Error(`Undeletable ranges ${t}`);P(this.inputTable);const{keyColumns:e}=this.inputTable;if(e.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=t.map(c=>re.intersection(n,c)).filter(c=>c!=null).map(c=>(P(c),re.offset(c,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const c=new Map(this.pendingNewDataMap);for(let u=0;u<s.length;u+=1){const m=s[u];P(m.startRow),P(m.endRow);for(let p=m.startRow;p<=m.endRow;p+=1)c.delete(p)}this.pendingNewDataMap=c,this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=t.map(c=>re.intersection(i,c)).filter(c=>c!=null);if(o.length<=0)return;const[r,l]=await Promise.all([this.snapshot(o.map(c=>(P(c),new re(0,c.startRow,e.length-1,c.endRow)))),this.table.copy()]),d=r.map(c=>{const u=[];for(let m=0;m<e.length;m+=1){const p=e[m],g=c[m],f=L.makeFilterRawValue(p.type,g),b=p.filter().eq(f);u.push(b)}return u.reduce((m,p)=>{var g;return(g=m==null?void 0:m.and(p))!=null?g:p})}).reduce((c,u)=>{var m;return(m=c==null?void 0:c.or(u))!=null?m:u});l.applyFilter([d]),l.close()}isValidForCell(t,e,n){try{const s=this.columns[t];return L.makeValue(s.type,n,this.formatter.timeZone),!0}catch{return!1}}};let cc=od;cc.ROW_BUFFER_PAGES=1;const Ls=X.module("IrisGridTableModel");class jp extends cc{constructor(e,n=new cn,s=null){super(e,n,s),this.getMemoizedFrontColumns=Ce(i=>i!=null?i:[]),this.getMemoizedBackColumns=Ce(i=>i!=null?i:[]),this.getMemoizedFrozenColumns=Ce((i,o)=>{var r;return(r=o!=null?o:i)!=null?r:[]}),this.getCachedFilterableColumnSet=Ce(i=>new Set(i.map((o,r)=>r))),this.customColumnList=[],this.formatColumnList=[]}get isExportAvailable(){return this.table.freeze!=null}get isColumnStatisticsAvailable(){return this.table.getColumnStatistics!=null}get isValuesTableAvailable(){return this.table.selectDistinct!=null&&this.table.copy!=null}get isRollupAvailable(){return this.table.rollup!=null}get isSelectDistinctAvailable(){return this.table.selectDistinct!=null}get isCustomColumnsAvailable(){return this.table.applyCustomColumns!=null}get isFormatColumnsAvailable(){return this.table.applyCustomColumns!=null}get frontColumns(){var e;return this.getMemoizedFrontColumns((e=this.layoutHints)==null?void 0:e.frontColumns)}get backColumns(){var e;return this.getMemoizedBackColumns((e=this.layoutHints)==null?void 0:e.backColumns)}get frozenColumns(){var e;return this.getMemoizedFrozenColumns((e=this.layoutHints)==null?void 0:e.frozenColumns,this.userFrozenColumns)}get layoutHints(){return this.table.layoutHints}get floatingLeftColumnCount(){return this.frozenColumns.length}get description(){return this.table.description}get customColumns(){return this.customColumnList}set customColumns(e){if(Ls.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){Ls.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){Ls.debug("Ignore same customColumns");return}this.closeSubscription(),this.customColumnList=e,this.table.applyCustomColumns([...e,...this.formatColumns]),this.applyViewport()}get formatColumns(){return this.formatColumnList}set formatColumns(e){if(Ls.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){Ls.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){Ls.debug("Ignore same formatColumns");return}this.closeSubscription(),this.formatColumnList=e,this.table.applyCustomColumns([...this.customColumns,...e]),this.applyViewport()}updateFrozenColumns(e){this.userFrozenColumns=e,this.dispatchEvent(new Ge(Se.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(Ls.debug("set totalsConfig",e),e!==this.totals){if(this.totals=e,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),e==null){this.dispatchEvent(new Ge(Se.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(e),n=>n.close()),this.totalsTablePromise.then(n=>{this.totalsTablePromise=null,this.setTotalsTable(n)}).catch(n=>{ye.isCanceled(n)||(Ls.error("Unable to set next totalsTable",n),this.totalsTablePromise=null,this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,{detail:n})))})}}get isFilterRequired(){return this.table.isUncoalesced}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns).has(e)}async export(){return this.table.freeze()}columnStatistics(e){return this.table.getColumnStatistics(e)}isColumnMovable(e){const n=this.columns[e].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)?!1:!this.isKeyColumn(e)}isColumnFrozen(e){return this.frozenColumns.includes(this.columns[e].name)}async delete(e){var u;if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);P(this.inputTable);const{keyColumns:n}=this.inputTable;if(n.length===0)throw new Error("No key columns to allow deletion");const s=this.getPendingAreaRange(),i=e.map(m=>re.intersection(s,m)).filter(m=>m!=null).map(m=>(P(m),re.offset(m,0,-(this.floatingTopRowCount+this.table.size))));if(i.length>0){const m=new Map(super.pendingDataMap);for(let p=0;p<i.length;p+=1){const g=i[p];P(g.startRow),P(g.endRow);for(let f=g.startRow;f<=g.endRow;f+=1)m.delete(f)}super.pendingDataMap=m,this.formattedStringData=[],this.dispatchEvent(new Ge(Se.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ge(Se.EVENT.UPDATED))}const o=this.getTableAreaRange(),r=e.map(m=>re.intersection(o,m)).filter(m=>m!=null);if(r.length<=0)return;const[l,a]=await Promise.all([this.snapshot(r.map(m=>(P(m),new re(0,m.startRow,n.length-1,m.endRow)))),this.table.copy()]),c=l.map(m=>{const p=[];for(let g=0;g<n.length;g+=1){const f=n[g],b=m[g],C=L.makeFilterRawValue(f.type,b),S=f.filter().eq(C);p.push(S)}return p.reduce((g,f)=>{var b;return(b=g==null?void 0:g.and(f))!=null?b:f})}).reduce((m,p)=>{var g;return(g=m==null?void 0:m.or(p))!=null?g:p});a.applyFilter([c]),await((u=this.inputTable)==null?void 0:u.deleteTable(a)),a.close()}}class b1 extends cc{constructor(){super(...arguments),this.getCachedFilterableColumnSet=Ce((e,n)=>new Set(((n==null?void 0:n.length)>0?n:e).map(s=>e.findIndex(i=>s.name===i.name))))}applyBufferedViewport(e,n,s){this.table.setViewport(e,n,s)}textForCell(e,n){const s=this.columns[e],i=this.row(n);if(i!=null&&s!=null&&!i.hasChildren&&s.constituentType!=null){const o=this.valueForCell(e,n);return this.displayString(o,s.constituentType,s.name)}return super.textForCell(e,n)}extractViewportRow(e,n){const{isExpanded:s,hasChildren:i,depth:o}=e;return{...super.extractViewportRow(e,n),isExpanded:s,hasChildren:i,depth:o}}async snapshot(e,n,s){var l,a;P(this.viewport),P(this.viewportData);const{columns:i}=this.viewport,o=[];n!=null&&n&&o.push(i.map(d=>d.name));const r=new re(0,(l=this.viewportData)==null?void 0:l.offset,i.length,this.viewportData.offset+this.viewportData.rows.length);for(let d=0;d<e.length;d+=1){const c=re.intersection(r,e[d]);P(c),P(c.startRow),P(c.endRow);for(let u=c.startRow;u<=c.endRow;u+=1){const m=[],p=this.viewportData.rows[u-this.viewportData.offset];P(c.startColumn),P(c.endColumn);for(let g=c.startColumn;g<=c.endColumn;g+=1)P(s),m.push(s((a=p.data.get(g))==null?void 0:a.value,this.columns[g]));o.push(m)}}return o}get groupedColumns(){return this.table.groupedColumns}get hasExpandableRows(){return!0}get isChartBuilderAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isReversible(){return!1}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns,this.groupedColumns).has(e)}isColumnMovable(e){return e>=this.groupedColumns.length}isRowExpandable(e){var s;const n=this.row(e);return(s=n==null?void 0:n.hasChildren)!=null?s:!1}isRowExpanded(e){var s;const n=this.row(e);return(s=n==null?void 0:n.isExpanded)!=null?s:!1}setRowExpanded(e,n){this.table.setExpanded(e,n)}depthForRow(e){var s;const n=this.row(e);return((s=n==null?void 0:n.depth)!=null?s:1)-1}}const As=X.module("IrisGridProxyModel");function Oa(t,e,n){return L.isTreeTable(t)?new b1(t,e):new jp(t,e,n)}class S1 extends Se{constructor(e,n=new cn,s=null){super(),this.textForCell=(...o)=>this.model.textForCell(...o),this.truncationCharForCell=(...o)=>this.model.truncationCharForCell(...o),this.textAlignForCell=(...o)=>this.model.textAlignForCell(...o),this.colorForCell=(...o)=>this.model.colorForCell(...o),this.backgroundColorForCell=(...o)=>this.model.backgroundColorForCell(...o),this.textForColumnHeader=(...o)=>this.model.textForColumnHeader(...o),this.colorForColumnHeader=(...o)=>this.model.colorForColumnHeader(...o),this.textForRowHeader=(...o)=>this.model.textForRowHeader(...o),this.textForRowFooter=(...o)=>this.model.textForRowFooter(...o),this.isRowMovable=(...o)=>this.model.isRowMovable(...o),this.isColumnMovable=(...o)=>this.model.isColumnMovable(...o),this.isRowExpandable=(...o)=>gt(this.model)?this.model.isRowExpandable(...o):!1,this.isRowExpanded=(...o)=>gt(this.model)?this.model.isRowExpanded(...o):!1,this.setRowExpanded=(...o)=>{if(gt(this.model))return this.model.setRowExpanded(...o);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")},this.depthForRow=(...o)=>gt(this.model)?this.model.depthForRow(...o):0,this.getColumnHeaderGroup=(...o)=>this.model.getColumnHeaderGroup(...o),this.getColumnHeaderParentGroup=(...o)=>this.model.getColumnHeaderParentGroup(...o),this.formatForCell=(...o)=>this.model.formatForCell(...o),this.valueForCell=(...o)=>this.model.valueForCell(...o),this.displayString=(...o)=>this.model.displayString(...o),this.isEditableRange=(...o)=>et(this.model)?this.model.isEditableRange(...o):!1,this.isFilterable=(...o)=>this.model.isFilterable(...o),this.setViewport=(o,r,l)=>this.model.setViewport(o,r,l),this.snapshot=(...o)=>this.model.snapshot(...o),this.textSnapshot=(...o)=>this.model.textSnapshot(...o),this.valuesTable=(...o)=>this.model.valuesTable(...o),this.editValueForCell=(...o)=>(et(this.model)&&this.model.editValueForCell(...o),""),this.setValueForCell=(...o)=>et(this.model)?this.model.setValueForCell(...o):Promise.reject(new Error("Model is not editable")),this.setValueForRanges=(...o)=>et(this.model)?this.model.setValueForRanges(...o):Promise.reject(new Error("Model is not editable")),this.setValues=(...o)=>et(this.model)?this.model.setValues(...o):Promise.resolve(),this.isValidForCell=(...o)=>et(this.model)?this.model.isValidForCell(...o):!1,this.delete=(...o)=>this.model.delete(...o),this.commitPending=(...o)=>this.model.commitPending(...o),this.handleModelEvent=this.handleModelEvent.bind(this);const i=Oa(e,n,s);this.originalModel=i,this.model=i,this.modelPromise=null,this.rollup=null,this.selectDistinct=[]}close(){this.originalModel.close(),this.model!==this.originalModel&&this.model.close(),this.modelPromise!=null&&this.modelPromise.cancel()}handleModelEvent(e){As.debug2("handleModelEvent",e);const{detail:n,type:s}=e;this.dispatchEvent(new Ge(s,{detail:n}))}setModel(e){As.debug("setModel",e);const n=this.model;n!==this.originalModel&&n.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new Ge(Se.EVENT.COLUMNS_CHANGED,{detail:e.columns})),mi(e)&&this.dispatchEvent(new Ge(Se.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){As.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=ye.makeCancelable(e,n=>n.close()),this.modelPromise.then(n=>{this.modelPromise=null,this.setModel(n)}).catch(n=>{if(ye.isCanceled(n)){As.debug2("setNextModel cancelled");return}As.error("Unable to set next model",n),this.modelPromise=null,this.dispatchEvent(new Ge(Se.EVENT.REQUEST_FAILED,{detail:n}))})}startListening(){super.startListening(),this.addListeners(this.model)}stopListening(){super.stopListening(),this.removeListeners(this.model)}addListeners(e){const n=Object.keys(Se.EVENT);for(let s=0;s<n.length;s+=1)e.addEventListener(n[s],this.handleModelEvent)}removeListeners(e){const n=Object.keys(Se.EVENT);for(let s=0;s<n.length;s+=1)e.removeEventListener(n[s],this.handleModelEvent)}get rowCount(){return this.model.rowCount}get columnCount(){return this.model.columnCount}get floatingTopRowCount(){return this.model.floatingTopRowCount}get floatingBottomRowCount(){return this.model.floatingBottomRowCount}get floatingLeftColumnCount(){return this.model.floatingLeftColumnCount}get floatingRightColumnCount(){return this.model.floatingRightColumnCount}isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return gt(this.model)?this.model.hasExpandableRows:!1}get isExportAvailable(){return this.model.isExportAvailable}get isColumnStatisticsAvailable(){return this.model.isColumnStatisticsAvailable}get isValuesTableAvailable(){return this.model.isValuesTableAvailable}get isCustomColumnsAvailable(){return this.model.isCustomColumnsAvailable&&!(this.isSelectDistinctAvailable&&this.selectDistinctColumns.length>0)}get isFormatColumnsAvailable(){return this.model.isFormatColumnsAvailable}get isChartBuilderAvailable(){return this.model.isChartBuilderAvailable}get isRollupAvailable(){return(this.originalModel.isRollupAvailable||this.rollup!=null)&&this.selectDistinct.length===0}get isSelectDistinctAvailable(){return(this.originalModel.isSelectDistinctAvailable||this.selectDistinct.length>0)&&this.rollup==null}get isTotalsAvailable(){return this.model.isTotalsAvailable}get isReversible(){return this.model.isReversible}get columns(){return this.model.columns}get initialMovedColumns(){return this.model.initialMovedColumns}get initialMovedRows(){return this.model.initialMovedRows}get layoutHints(){return this.model.layoutHints}get frontColumns(){return this.model.frontColumns}get backColumns(){return this.model.backColumns}get frozenColumns(){return this.model.frozenColumns}get columnHeaderGroups(){return this.model.columnHeaderGroups}set columnHeaderGroups(e){this.model.columnHeaderGroups=e}get initialColumnHeaderGroups(){return this.model.initialColumnHeaderGroups}get columnHeaderGroupMap(){return this.model.columnHeaderGroupMap}get columnHeaderMaxDepth(){return this.model.columnHeaderMaxDepth}updateFrozenColumns(e){return this.model.updateFrozenColumns(e)}get originalColumns(){return this.originalModel.columns}get groupedColumns(){return this.model.groupedColumns}get description(){return this.model.description}get filter(){return this.model.filter}set filter(e){this.model.filter=e}get formatter(){return this.model.formatter}set formatter(e){this.model.formatter=e}get sort(){return this.model.sort}set sort(e){this.model.sort=e}get customColumns(){return this.model.customColumns}set customColumns(e){this.model.customColumns=e}get formatColumns(){return this.model.formatColumns}set formatColumns(e){this.model.formatColumns=e}get rollupConfig(){return this.rollup}set rollupConfig(e){if(As.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(ut(e,this.rollup))return;this.rollup=e;let n=Promise.resolve(this.originalModel);mi(this.originalModel)&&e!=null&&(n=this.originalModel.table.rollup(e).then(s=>Oa(s,this.formatter))),this.setNextModel(n)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(As.debug("set selectDistinctColumns",e),!this.isSelectDistinctAvailable)throw new Error("Select distinct is not available");if(e===this.selectDistinctColumns||e.length===0&&this.selectDistinctColumns.length===0){As.debug("Ignore same selectDistinctColumns",e);return}this.selectDistinct=e;const n=e.map(i=>this.originalColumns.find(o=>o.name===i)).filter(i=>i!=null);let s=Promise.resolve(this.originalModel);mi(this.originalModel)&&n.length>0&&(s=this.originalModel.table.selectDistinct(n).then(i=>Oa(i,this.formatter))),this.setNextModel(s)}get table(){if(mi(this.model))return this.model.table}get totalsConfig(){return this.model.totalsConfig}set totalsConfig(e){this.model.totalsConfig=e}get isFilterRequired(){return this.model.isFilterRequired}get isEditable(){return et(this.model)&&this.model.isEditable}export(){if(L.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}columnStatistics(e){if(L.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}get pendingDataMap(){return this.model.pendingDataMap}set pendingDataMap(e){this.model.pendingDataMap=e}get pendingRowCount(){return this.model.pendingRowCount}set pendingRowCount(e){this.model.pendingRowCount=e}get pendingDataErrors(){return this.model.pendingDataErrors}getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}}class hc{static async makeModel(e,n=new cn){let s=null;return!L.isTreeTable(e)&&e.hasInputTable&&(s=await e.inputTable()),new S1(e,n,s)}}const ls=X.module("TableViewportUpdater"),w1=150,zo=class extends w.exports.PureComponent{constructor(){super(...arguments),this.getViewportRowRange=Ce((t,e,n)=>{const s=n-e,i=Math.max(0,e-s*zo.ROW_BUFFER_PAGES),o=n+s*zo.ROW_BUFFER_PAGES;return[i,o]}),this.getViewportColumns=Ce((t,e,n,s)=>{if(e==null||n==null)return null;const i=n-e,o=Math.max(0,e-i*zo.COLUMN_BUFFER_PAGES),r=Math.min(n+i*zo.COLUMN_BUFFER_PAGES,t.columns.length-1),l=[];for(let a=o;a<=r;a+=1){const d=j.getModelIndex(a,s);l.push(t.columns[d])}return l}),this.updateViewport=Zn((t,e,n,s,i)=>{if(e<t){ls.error("Invalid viewport",t,e);return}if(t===0&&e===0){ls.debug2("Ignoring 0-0 viewport");return}const{movedColumns:o,table:r}=this.props,[l,a]=this.getViewportRowRange(r,t,e),d=i!=null?i:this.getViewportColumns(r,n,s,o);if(ls.debug2("Setting Viewport Top:",l,"Bottom:",a,"Columns:",d),this.subscription==null){ls.debug2("updateViewport creating new subscription"),this.subscription=r.setViewport(l,a,d);const{onSubscription:c}=this.props;c(this.subscription)}else ls.debug2("updateViewport using existing subscription"),this.subscription.setViewport(l,a,d)},w1)}componentDidMount(){const{top:t,bottom:e,left:n,right:s,table:i,filters:o,sorts:r,columns:l,customColumns:a}=this.props;i.applyFilter(o),i.applySort(r),i.applyCustomColumns(a),this.updateViewport(t,e,n,s,l)}componentDidUpdate(t){const{top:e,bottom:n,left:s,right:i,table:o,filters:r,sorts:l,customColumns:a,columns:d}=this.props,c=r!==t.filters,u=l!==t.sorts,m=a!==t.customColumns,p=o!==t.table;(c||u||m||p)&&this.closeSubscription(),(c||p)&&(ls.debug("update table filter",r),o.applyFilter(r)),(u||p)&&(ls.debug("update table sort",l),o.applySort(l)),(m||p)&&(ls.debug("update table custom columns",a),o.applyCustomColumns(a)),this.updateViewport(e,n,s,i,d)}componentWillUnmount(){this.closeSubscription()}closeSubscription(){if(ls.debug2("closeSubscription",this.subscription),this.subscription){this.subscription.close(),this.subscription=void 0;const{onSubscription:t}=this.props;t()}this.updateViewport.cancel()}render(){return null}};let uc=zo;uc.ROW_BUFFER_PAGES=3;uc.COLUMN_BUFFER_PAGES=1;uc.defaultProps={top:0,bottom:0,left:null,right:null,columns:null,onSubscription:()=>{},filters:[],sorts:[],customColumns:[],movedColumns:[]};const Li=X.module("TreeTableViewportUpdater"),v1=150,Zp=class extends w.exports.PureComponent{constructor(t){super(t),this.updateViewport=Zn((e,n)=>{if(n<e){Li.error("Invalid viewport",e,n);return}if(e===0&&n===0){Li.debug2("Ignoring 0-0 viewport");return}const{table:s,updateInterval:i}=this.props,o=n-e,r=Math.max(0,e-o*3),l=n+o*3+1;if(Li.debug2("Setting Viewport Top:",r,"Bottom:",l,s),!this.listenerCleanup){const{onViewportUpdate:a}=this.props;this.listenerCleanup=s.addEventListener(M.TreeTable.EVENT_UPDATED,a)}s.setViewport(r,l,void 0,i)},v1),this.listenerCleanup=null}componentDidMount(){const{top:t,bottom:e,table:n,filters:s,sorts:i}=this.props;Li.debug("componentDidMount",this.props),n.applyFilter(s),n.applySort(i),this.updateViewport(t,e)}componentDidUpdate(t){const{top:e,bottom:n,table:s,filters:i,sorts:o}=this.props;i!==t.filters&&(Li.debug("update table filter",i),s.applyFilter(i)),o!==t.sorts&&(Li.debug("update table sort",o),s.applySort(o)),this.updateViewport(e,n)}componentWillUnmount(){this.updateViewport.cancel(),this.listenerCleanup&&this.listenerCleanup()}render(){return null}};let Qp=Zp;Qp.UPDATE_INTERVAL=1e3;Qp.defaultProps={top:0,bottom:0,onViewportUpdate:()=>{},filters:[],sorts:[],updateInterval:Zp.UPDATE_INTERVAL};class no{}no.OPEN="ChartEvent.OPEN";no.CLOSE="ChartEvent.CLOSE";no.COLUMN_SELECTED="ChartEvent.COLUMN_SELECTED";class bt{}bt.SESSION_OPENED="ConsoleEvent.SESSION_OPENED";bt.SESSION_CLOSED="ConsoleEvent.SESSION_CLOSED";bt.FOCUS_HISTORY="ConsoleEvent.FOCUS_HISTORY";bt.SEND_COMMAND="ConsoleEvent.SEND_COMMAND";bt.SETTINGS_CHANGED="ConsoleEvent.SETTINGS_CHANGED";class Ae{}Ae.TABLE_CHANGED="InputFilterEvent.TABLE_CHANGED";Ae.COLUMNS_CHANGED="InputFilterEvent.COLUMNS_CHANGED";Ae.FILTERS_CHANGED="InputFilterEvent.FILTERS_CHANGED";Ae.CLEAR_ALL_FILTERS="InputFilterEvent.CLEAR_ALL_FILTERS";Ae.COLUMN_SELECTED="InputFilterEvent.COLUMN_SELECTED";Ae.OPEN_DROPDOWN="InputFilterEvent.OPEN_DROPDOWN";Ae.OPEN_INPUT="InputFilterEvent.OPEN_INPUT";Ae.OPEN_FILTER_SET_MANAGER="InputFilterEvent.OPEN_FILTER_SET_MANAGER";class Et{}Et.OPEN_GRID="IrisGridEvent.OPEN_GRID";Et.CLOSE_GRID="IrisGridEvent.CLOSE_GRID";Et.DATA_SELECTED="IrisGridEvent.DATA_SELECTED";Et.COLUMN_SELECTED="IrisGridEvent.COLUMN_SELECTED";Et.STATE_CHANGED="IrisGridEvent.STATE_CHANGED";Et.CREATE_CHART="IrisGridevent.CREATE_CHART";const Jp=Object.freeze({OPEN:"MarkdownEvent.OPEN"});class Pe{}Pe.CREATE_NOTEBOOK="NotebookEvent.createNotebook";Pe.SELECT_NOTEBOOK="NotebookEvent.selectNotebook";Pe.CLOSE_FILE="NotebookEvent.closeFile";Pe.RENAME="NotebookEvent.rename";Pe.RENAME_FILE="NotebookEvent.renameFile";Pe.REGISTER_FILE="NotebookEvent.registerFile";Pe.SEND_TO_NOTEBOOK="NotebookEvent.sendToNotebook";Pe.UNREGISTER_FILE="NotebookEvent.unregisterFile";class Yn{}Yn.focus="TabEvent.focus";Yn.blur="TabEvent.blur";Yn.openPQObject="TabEvent.openPQObject";Yn.openControl="TabEvent.openControl";Yn.reload="TabEvent.reload";Yn.clearAllFilters="TabEvent.clearAllFilters";class eg extends w.exports.PureComponent{constructor(e){super(e),this.handleCloseTab=this.handleCloseTab.bind(this),this.handleCloseTabsRight=this.handleCloseTabsRight.bind(this),this.handleCloseTabsAll=this.handleCloseTabsAll.bind(this)}getAllTabs(){var n,s,i;const{glContainer:e}=this.props;return[...(i=(s=(n=e==null?void 0:e.tab)==null?void 0:n.header)==null?void 0:s.tabs)!=null?i:[]]}handleCloseTab(){const{glContainer:e}=this.props;e.close()}handleCloseTabsAll(){this.getAllTabs().forEach(n=>{var s;return(s=(n==null?void 0:n.contentItem).container)==null?void 0:s.close()})}handleCloseTabsRight(){var s,i,o,r,l,a,d;const{glContainer:e}=this.props,n=this.getAllTabs();for(let c=n.length-1;c>0&&((i=(s=n[c].contentItem)==null?void 0:s.config)==null?void 0:i.id)!==((l=(r=(o=e.tab)==null?void 0:o.contentItem)==null?void 0:r.config)==null?void 0:l.id);c-=1)(d=((a=n[c])==null?void 0:a.contentItem).container)==null||d.close()}canCloseTabsRight(){var i,o,r,l,a,d,c,u;const{glContainer:e}=this.props,n=this.getAllTabs();let s=!0;for(let m=n.length-1;m>0&&((o=(i=n[m].contentItem)==null?void 0:i.config)==null?void 0:o.id)!==((a=(l=(r=e.tab)==null?void 0:r.contentItem)==null?void 0:l.config)==null?void 0:a.id);m-=1)if(Boolean((u=(c=(d=n[m])==null?void 0:d.contentItem)==null?void 0:c.config)==null?void 0:u.isClosable)){s=!1;break}return s}canCloseAny(){var s,i,o;const e=this.getAllTabs();let n=!0;for(let r=e.length-1;r>0;r-=1)if(Boolean((o=(i=(s=e[r])==null?void 0:s.contentItem)==null?void 0:i.config)==null?void 0:o.isClosable)){n=!1;break}return n}render(){var o,r,l;const{additionalActions:e,glContainer:n}=this.props,s=[...e],i=(l=(r=(o=n.tab)==null?void 0:o.contentItem)==null?void 0:r.config)==null?void 0:l.isClosable;return s.push({title:"Close",order:10,group:oe.groups.low,action:this.handleCloseTab,disabled:i===void 0||!i}),s.push(()=>({title:"Close Tabs to Right",order:20,group:oe.groups.low,action:this.handleCloseTabsRight,disabled:this.canCloseTabsRight()})),s.push(()=>({title:"Close All",order:30,group:oe.groups.low,action:this.handleCloseTabsAll,disabled:this.canCloseAny()})),h(oe,{actions:s})}}eg.defaultProps={additionalActions:[]};class tg extends w.exports.PureComponent{constructor(e){super(e),this.handleRenameDialogOpened=this.handleRenameDialogOpened.bind(this),this.handleRenameInputChange=this.handleRenameInputChange.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.renameInputRef=Y.createRef();const{value:n}=e;this.state={value:n,valueWasValidated:!1}}componentDidUpdate(e){const{isShown:n}=e,{isShown:s}=this.props;s&&!n&&this.resetState()}resetState(){const{value:e}=this.props;this.setState({value:e,valueWasValidated:!1})}handleRenameDialogOpened(){var e,n;(n=(e=this.renameInputRef)==null?void 0:e.current)==null||n.focus()}handleRenameInputChange(e){this.setState({value:e.target.value})}handleRenameCancel(){const{onCancel:e}=this.props;e()}handleRenameSubmit(e){e.stopPropagation(),e.preventDefault();const{value:n}=this.state,s=n==null?void 0:n.trim();if(s!==void 0&&s!==""){const{onSubmit:i}=this.props;i(s)}else this.setState({value:s,valueWasValidated:!0})}renderRenameDialog(){const{isShared:e,isOwner:n,itemType:s}=this.props,{value:i,valueWasValidated:o}=this.state;return T("form",{className:z("p-3",{"was-validated":o}),onSubmit:this.handleRenameSubmit,noValidate:!0,role:"presentation",onMouseDown:r=>{r.stopPropagation()},onMouseUp:r=>{r.stopPropagation()},children:[T("div",{className:"form-group",children:[T("label",{htmlFor:`rename-dialog-${s}-input`,children:["Rename ",s]}),h("input",{type:"text",className:"form-control",id:`rename-dialog-${s}-input`,value:i!=null?i:void 0,ref:this.renameInputRef,onChange:this.handleRenameInputChange,required:!0}),T("div",{className:"invalid-feedback",children:[s," name cannot be empty"]}),(e||!n)&&T("div",{className:"pt-2",children:["Renaming this ",s," will rename for all users."]})]}),T("div",{className:"text-right",children:[h(W,{kind:"secondary",className:"mr-2",onClick:this.handleRenameCancel,children:"Cancel"}),h(W,{kind:"primary",type:"submit",children:"Rename"})]})]})}render(){const{isShown:e,onCancel:n}=this.props;return h(_n,{isShown:e,onEntered:this.handleRenameDialogOpened,onExited:n,options:{placement:"bottom"},interactive:!0,closeOnBlur:!0,children:this.renderRenameDialog()})}}tg.defaultProps={isShared:!1,isOwner:!0,itemType:"Item",value:""};const T1=X.module("Panel");class ts extends w.exports.PureComponent{constructor(e){super(e),this.getAdditionActions=Ce((s,i,o)=>{const r=[];return i&&r.push(this.getCloneAction()),o&&r.push(this.getRenameAction()),[...r,...s]}),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.handleCopyPanel=this.handleCopyPanel.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleHide=this.handleHide.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleBeforeShow=this.handleBeforeShow.bind(this),this.handleShow=this.handleShow.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.handleShowRenameDialog=this.handleShowRenameDialog.bind(this),this.handleTabClicked=this.handleTabClicked.bind(this),this.handleTab=this.handleTab.bind(this);const{glContainer:n}=this.props;this.state={title:ne.getTitleFromContainer(n),showRenameDialog:!1}}componentDidMount(){const{componentPanel:e,glContainer:n,glEventHub:s}=this.props;n.on("resize",this.handleResize),n.on("show",this.handleBeforeShow),n.on("shown",this.handleShow),n.on("hide",this.handleHide),n.on("tab",this.handleTab),n.on("tabClicked",this.handleTabClicked),s.on(bt.SESSION_CLOSED,this.handleSessionClosed),s.on(bt.SESSION_OPENED,this.handleSessionOpened),s.on(Yn.focus,this.handleTabFocus),s.on(Yn.blur,this.handleTabBlur),s.on(Ae.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Re.MOUNT,e)}componentWillUnmount(){const{componentPanel:e,glContainer:n,glEventHub:s}=this.props;n.off("resize",this.handleResize),n.off("show",this.handleBeforeShow),n.off("shown",this.handleShow),n.off("hide",this.handleHide),n.off("tab",this.handleTab),n.off("tabClicked",this.handleTabClicked),s.off(bt.SESSION_CLOSED,this.handleSessionClosed),s.off(bt.SESSION_OPENED,this.handleSessionOpened),s.off(Yn.focus,this.handleTabFocus),s.off(Yn.blur,this.handleTabBlur),s.off(Ae.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Re.UNMOUNT,e)}handleTab(e){e!=null&&this.setState({title:ne.getTitleFromTab(e)}),this.forceUpdate();const{onTab:n}=this.props;n(e)}handleTabClicked(...e){const{onTabClicked:n}=this.props;n(...e)}handleClearAllFilters(...e){const{onClearAllFilters:n}=this.props;n(...e)}handleFocus(e){const{componentPanel:n,glEventHub:s}=this.props;s.emit(Re.FOCUS,n);const{onFocus:i}=this.props;i(e)}handleBlur(e){const{onBlur:n}=this.props;n(e)}handleHide(...e){const{onHide:n}=this.props;n(...e)}handleResize(...e){const{onResize:n}=this.props;n(...e)}handleSessionClosed(e){const{onSessionClose:n}=this.props;n(e)}handleSessionOpened(e,n){const{onSessionOpen:s}=this.props;s(e,n)}handleBeforeShow(...e){const{onBeforeShow:n}=this.props;n(...e)}handleShow(...e){const{onShow:n}=this.props;n(...e)}handleTabBlur(...e){const{onTabBlur:n}=this.props;n(...e)}handleTabFocus(...e){const{onTabFocus:n}=this.props;n(...e)}handleRenameCancel(){this.setState({showRenameDialog:!1})}handleShowRenameDialog(){this.setState({showRenameDialog:!0})}handleRenameSubmit(e){const{glContainer:n}=this.props;this.setState({showRenameDialog:!1,title:e});const s=ne.getRootFromContainer(n),i=ne.getComponentConfigFromContainer(n);P(i),ne.renameComponent(s,i,e)}handleCopyPanel(){const{glContainer:e,glEventHub:n}=this.props,s=ne.getRootFromContainer(e),i=ne.getComponentConfigFromContainer(e);if(i==null){T1.error("Could not get component config from container",e);return}const o=ne.cloneComponent(s,i);o!==null&&n.emit(Re.CLONED,this,o)}getCloneAction(){return{title:"Copy Panel",order:10,group:oe.groups.high,action:this.handleCopyPanel}}getRenameAction(){return{title:"Rename",order:10,group:oe.groups.medium,action:this.handleShowRenameDialog}}render(){const{children:e,className:n,renderTabTooltip:s,glContainer:i,additionalActions:o,errorMessage:r,isLoaded:l,isLoading:a,isClonable:d,isRenamable:c}=this.props,{tab:u}=i,{showRenameDialog:m,title:p}=this.state;return T("div",{className:z("h-100 w-100 iris-panel",n),onFocusCapture:this.handleFocus,onBlurCapture:this.handleBlur,children:[e,h(Ul,{errorMessage:r,isLoaded:l,isLoading:a}),u!=null&&Ci.createPortal(T(we,{children:[h(eg,{glContainer:i,additionalActions:this.getAdditionActions(o,d,c)}),c&&h(tg,{isShown:m,value:p,itemType:"Panel",onCancel:this.handleRenameCancel,onSubmit:this.handleRenameSubmit}),s!=null&&h(ze,{interactive:!0,options:{placement:"bottom"},popperClassName:"panel-tab-popper",children:s()})]}),u.element[0])]})}}ts.defaultProps={className:"",onTab:()=>{},onTabClicked:()=>{},onClearAllFilters:()=>{},onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onBeforeShow:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},renderTabTooltip:null,additionalActions:[],errorMessage:null,isLoading:!1,isLoaded:!0,isClonable:!1,isRenamable:!1};function ia(t){const{widgetType:e,widgetName:n,glContainer:s,description:i,children:o}=t,r=ne.getTitleFromContainer(s);return T("div",{className:"tab-tooltip-container",children:[T("div",{className:"row flex-nowrap align-items-start",children:[h("span",{className:"tab-tooltip-title",children:T("b",{children:[e," Name "]})}),h("span",{className:"tab-tooltip-name",children:n}),h(Pl,{className:"tab-tooltip-copy",tooltip:"Copy name",copy:n})]}),n!==r&&T("div",{className:"row",children:[h("span",{className:"tab-tooltip-title",children:h("b",{children:"Display Name"})}),h("span",{className:"tab-tooltip-name",children:r})]}),i&&h("div",{className:"row",children:h("span",{className:"tab-tooltip-description",children:i})}),o]})}ia.propTypes={glContainer:jd.Container.isRequired,widgetType:D.exports.string,widgetName:D.exports.string,description:D.exports.string,children:D.exports.node};ia.defaultProps={widgetType:"",widgetName:"",description:null,children:null};class oa extends w.exports.PureComponent{constructor(e){super(e),this.getCachedRenderTabTooltip=Ce((n,s,i,o,r)=>n?()=>h(ia,{glContainer:s,widgetType:i,widgetName:o,description:r}):null),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleCopyName=this.handleCopyName.bind(this),this.state={isClientDisconnected:!1,isPanelDisconnected:!1,isWidgetDisconnected:!1,isWaitingForReconnect:!1,isPanelInactive:!1}}handleCopyName(){const{widgetName:e}=this.props;ro(e)}getErrorMessage(){const{errorMessage:e}=this.props,{isClientDisconnected:n,isPanelDisconnected:s,isWidgetDisconnected:i,isWaitingForReconnect:o}=this.state;if(e)return`${e}`;if(n&&s&&o)return`Disconnected from server.
|
|
37
37
|
Check your internet connection.`;if(n&&s)return"Disconnected from server.";if(s){const{widgetName:r,widgetType:l}=this.props;return`Variable "${r}" not set.
|
|
38
38
|
${l} does not exist yet.`}if(i){const{widgetName:r}=this.props;return`${r} is unavailable.`}}handleSessionClosed(...e){const{onSessionClose:n}=this.props;this.setState({isPanelDisconnected:!0,isWaitingForReconnect:!1}),n(...e)}handleSessionOpened(...e){const{onSessionOpen:n}=this.props;n(...e)}render(){const{children:e,className:n,componentPanel:s,isLoaded:i,isLoading:o,glContainer:r,glEventHub:l,isDisconnected:a,isClonable:d,isRenamable:c,showTabTooltip:u,renderTabTooltip:m,widgetType:p,widgetName:g,description:f,onClearAllFilters:b,onHide:C,onFocus:S,onBlur:v,onResize:y,onShow:E,onTabBlur:I,onTabFocus:R,onTabClicked:N}=this.props,{isPanelDisconnected:F,isWidgetDisconnected:B,isPanelInactive:U}=this.state,x=this.getErrorMessage(),H=m!=null?m:this.getCachedRenderTabTooltip(u,r,p,g,f),A=[{title:`Copy ${p} Name`,group:oe.groups.medium,order:20,action:this.handleCopyName}];return T(ts,{className:z(n,{disconnected:F||B||a,inactive:U}),componentPanel:s,glContainer:r,glEventHub:l,onClearAllFilters:b,onHide:C,onFocus:S,onBlur:v,onResize:y,onShow:E,onSessionClose:this.handleSessionClosed,onSessionOpen:this.handleSessionOpened,onTabBlur:I,onTabFocus:R,onTabClicked:N,renderTabTooltip:H,errorMessage:x,isLoaded:i,isLoading:o,isClonable:d,isRenamable:c,additionalActions:A,children:[e,U&&h("div",{className:"fill-parent-absolute"})]})}}oa.defaultProps={className:"",errorMessage:null,isClonable:!0,isDisconnected:!1,isLoading:!1,isLoaded:!0,isRenamable:!0,showTabTooltip:!0,widgetName:"Widget",widgetType:"Widget",renderTabTooltip:null,description:"",onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onClearAllFilters:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},onTabClicked:()=>{}};const Yt=Object.freeze({DEFAULT:"DEFAULT",LINKER:"LINKER"}),E1="SET_SESSION_WRAPPER",y1=Gs(E1,null),I1={sessionWrapper:y1},R1=new Map,ra=Object.freeze([]),ng=(t,e)=>{var n;return(n=Zt(t,e).columns)!=null?n:ra},D1=(t,e)=>{var n;return(n=Zt(t,e).filterSets)!=null?n:ra},mc=(t,e)=>{var n;return(n=Zt(t,e).filters)!=null?n:ra},pc=(t,e)=>{var n;return(n=Zt(t,e).tableMap)!=null?n:R1},gc=(t,e)=>Zt(t,e).isolatedLinkerPanelId,fo=(t,e)=>{var n;return(n=Zt(t,e).links)!=null?n:ra},fc=(t,e)=>Zt(t,e).columnSelectionValidator,M1=(t,e)=>Zt(t,e).connection,Si=(t,e)=>Zt(t,e).sessionWrapper,N1=(t,e)=>n=>n(es(t,{connection:e})),F1=(t,e)=>n=>n(es(t,{sessionWrapper:e})),Cc=(t,e)=>n=>n(es(t,{links:e})),x1=(t,e)=>(n,s)=>{const i=fo(s(),t),o=e.filter(r=>i.findIndex(l=>ut(l.start,r.start)&&ut(l.end,r.end))<0);return n(Cc(t,i.concat(o)))},_1=(t,e)=>(n,s)=>{const o=fo(s(),t).filter(r=>!e.includes(r.id));return n(Cc(t,o))},sg=(t,e)=>n=>n(es(t,{isolatedLinkerPanelId:e})),k1=(t,e)=>n=>n(es(t,{columnSelectionValidator:e})),O1=(t,e)=>n=>n(es(t,{consoleSettings:e})),L1=(t,e)=>n=>n(es(t,{filterSets:e}));Object.entries(I1).map(([t,e])=>ho.register(t,e));function ig({columnMap:t,inputFilterMap:e,linkedColumnMap:n,onAdd:s,onOpenLinker:i,waitingFilterMap:o,waitingInputMap:r}){const l=w.exports.useMemo(()=>{const p=Array.from(r.keys()),g=p.find(C=>e.get(C)!=null),f=p.find(C=>n.get(C)!=null),b=nn.join(p.map(C=>`"${C}"`));return g!=null&&g&&f!=null&&f?`Use a filter control or linked table to set a value for ${b}`:g!=null&&g?`Set a filter control value for ${b}`:`Double click a row in a linked table to set a value for ${b}`},[e,n,r]),a=w.exports.useMemo(()=>Array.from(t.values()),[t]),d=w.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),s(Array.from(o.values()))},[s,o]),c=w.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),i()},[i]),u=o.size>0,m=!u&&r.size>0;return h("div",{className:"chart-panel-overlay chart-filter-overlay",children:T("div",{className:z("chart-panel-overlay-content chart-filter-overlay-content",{"chart-filter-waiting-filter":u},{"chart-filter-waiting-input":m}),children:[u&&T(we,{children:[h("div",{className:"info-message",children:"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"}),h("div",{className:"waiting-filter-list",children:a.map(p=>{const g=o.has(p.name),f=g?gs:Id;return T("div",{className:z("waiting-filter-item",{"is-invalid":g}),children:[h(Z,{icon:f}),p.name]},p.name)})}),T("div",{children:[h(Qo,{onClick:d,className:"btn-primary",children:"Add Input Filters"}),h(Qo,{onClick:c,className:"btn-primary",children:"Open Linker Tool"})]})]}),m&&T(we,{children:[h("div",{className:"info-message",children:"Waiting for User Input"}),h("div",{className:"",children:l})]})]})})}ig.propTypes={columnMap:D.exports.instanceOf(Map).isRequired,inputFilterMap:D.exports.instanceOf(Map).isRequired,linkedColumnMap:D.exports.instanceOf(Map).isRequired,onAdd:D.exports.func.isRequired,onOpenLinker:D.exports.func.isRequired,waitingFilterMap:D.exports.instanceOf(Map).isRequired,waitingInputMap:D.exports.instanceOf(Map).isRequired};function er({columns:t,onColumnSelected:e,onMouseEnter:n,onMouseLeave:s}){return h("div",{className:"chart-panel-overlay chart-column-selector-overlay",children:T("div",{className:z("chart-panel-overlay-content"),children:[h("div",{className:"info-message",children:"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"}),h("div",{className:"waiting-column-select-list",children:t.map(i=>h(Bl,{className:z("btn-chart-column-selector",er.makeButtonClassName(i.name)),onClick:()=>e(i.name),onMouseEnter:()=>{n&&n(i)},onMouseLeave:s,disabled:!i.isValid,isLinked:i.isActive,children:i.name},i.name))})]})})}er.makeButtonClassName=t=>`btn-chart-column-selector-${t}`;er.defaultProps={onMouseEnter:()=>{},onMouseLeave:()=>{}};const en=X.module("ChartPanel"),A1=150;function sl(t){return t.settings!==void 0}function P1(t){return t.inputFilters!=null}function H1(t){return t.panelState!=null}class la extends w.exports.Component{constructor(e){super(e),this.getWaitingInputMap=Ce((r,l,a)=>{if(!r)return new Map;const d=new Map(l);return a.forEach((c,u)=>{d.delete(u)}),d}),this.getWaitingFilterMap=Ce((r,l,a,d,c)=>{if(!r)return new Map;const u=new Map(l);return a.forEach((m,p)=>{u.delete(p)}),c.forEach((m,p)=>{u.delete(p)}),d.forEach((m,p)=>{u.delete(p)}),u}),this.getInputFilterColumnMap=Ce((r,l)=>{const a=new Map;for(let d=0;d<l.length;d+=1){const c=l[d],{name:u,type:m}=c,p=r.get(u);p!=null&&p.type===m&&a.set(u,c)}return a}),this.getLinkedColumnMap=Ce((r,l)=>{const a=new Map,d=ne.getIdFromPanel(this);for(let c=0;c<l.length;c+=1){const u=l[c];let m=null;if(u.start!=null&&u.start.panelId===d&&r.has(u.start.columnName)?m=u.start.columnName:u.end&&u.end.panelId===d&&r.has(u.end.columnName)&&(m=u.end.columnName),m!=null&&r.has(m)){const p=r.get(m);P(p),a.set(m,p)}}return a}),this.getSelectorColumns=Ce((r,l,a)=>Array.from(r.values()).map(d=>({name:d.name,type:d.type,isValid:a?a(this,d):!1,isActive:l.has(d.name)}))),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleColumnMouseEnter=this.handleColumnMouseEnter.bind(this),this.handleColumnMouseLeave=this.handleColumnMouseLeave.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleFilterAdd=this.handleFilterAdd.bind(this),this.handleHide=this.handleHide.bind(this),this.handleError=this.handleError.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSettingsChanged=this.handleSettingsChanged.bind(this),this.handleOpenLinker=this.handleOpenLinker.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSourceColumnChange=this.handleSourceColumnChange.bind(this),this.handleSourceFilterChange=this.handleSourceFilterChange.bind(this),this.handleSourceSortChange=this.handleSourceSortChange.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleUpdate=this.handleUpdate.bind(this),this.updateModelFromSource=je(this.updateModelFromSource.bind(this),A1),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.panelContainer=Y.createRef(),this.chart=Y.createRef(),this.pending=new Ss;const{metadata:n,panelState:s}=e,{filterValueMap:i=[],settings:o={}}=s!=null?s:{};this.state={settings:o,error:void 0,isActive:!1,isDisconnected:!1,isLoading:!1,isLoaded:!1,isLinked:n!=null&&sl(n)&&n.settings.isLinked,filterMap:new Map(i),filterValueMap:new Map(i),model:void 0,columnMap:new Map,panelState:s}}componentDidMount(){this.isHidden()||(this.setState({isActive:!0}),this.initModel())}componentDidUpdate(e,n){const{inputFilters:s,source:i}=this.props,{columnMap:o,model:r,filterMap:l,filterValueMap:a,isLinked:d,settings:c}=this.state;!r||(o!==n.columnMap&&this.pruneFilterMaps(),s!==e.inputFilters&&this.updateChangedInputFilters(s,e.inputFilters),l!==n.filterMap?this.updateFilters():a!==n.filterValueMap&&this.updatePanelState(),c!==n.settings&&vh(r)&&(r.updateSettings(c),this.updatePanelState()),d!==n.isLinked?i&&(d?(this.startListeningToSource(i),this.updateModelFromSource()):this.stopListeningToSource(i)):d&&i!==e.source&&(e.source&&this.stopListeningToSource(e.source),i&&(this.startListeningToSource(i),this.updateModelFromSource())))}componentWillUnmount(){this.pending.cancel();const{source:e}=this.props;e&&this.stopListeningToSource(e)}initModel(){this.setState({isLoading:!0,isLoaded:!1,error:void 0});const{makeModel:e}=this.props;this.pending.add(e(),n=>{n.close()}).then(this.handleLoadSuccess,this.handleLoadError)}startListeningToSource(e){en.debug("startListeningToSource",e),e.addEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.addEventListener(M.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.addEventListener(M.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}stopListeningToSource(e){en.debug("stopListeningToSource",e),e.removeEventListener(M.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.removeEventListener(M.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.removeEventListener(M.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}loadModelIfNecessary(){const{isActive:e,isLoaded:n,isLoading:s}=this.state;e&&!n&&!s&&this.initModel()}isHidden(){const{glContainer:e}=this.props,{isHidden:n}=e;return n}handleColumnSelected(e){const{glEventHub:n}=this.props,{columnMap:s}=this.state;n.emit(no.COLUMN_SELECTED,this,s.get(e))}handleColumnMouseEnter({type:e,name:n}){const{columnSelectionValidator:s}=this.props;en.debug("handleColumnMouseEnter",s,e,n),s&&s(this,{type:e,name:n})}handleColumnMouseLeave(){const{columnSelectionValidator:e}=this.props;en.debug("handleColumnMouseLeave",e),e&&e(this,void 0)}handleDisconnect(){this.setState({error:new Error("Figure disconnected"),isDisconnected:!0})}handleFilterAdd(e){for(let n=0;n<e.length;n+=1)this.openInputFilter(e[n])}handleOpenLinker(){const{localDashboardId:e,setActiveTool:n,setDashboardIsolatedLinkerPanelId:s}=this.props;s(e,void 0),n(Yt.LINKER)}handleReconnect(){this.setState({isDisconnected:!1,error:void 0}),this.sendColumnChange(),this.updateColumnFilters()}handleLoadSuccess(e){en.debug("handleLoadSuccess");const{model:n}=this.state;this.setState({model:e,isLoaded:!0},()=>{const{inputFilters:s,source:i}=this.props,{filterMap:o,isLinked:r}=this.state;e!==n&&(this.sendColumnChange(),this.updateColumnFilters(),this.updateInputFilters(s,o.size>0||e.isFilterRequired()),i&&r&&(this.startListeningToSource(i),this.updateModelFromSource()))})}handleLoadError(e){ye.isCanceled(e)||(en.error("handleLoadError",e),this.setState({error:e,isLoading:!1}))}handleSourceColumnChange(){this.updateModelFromSource()}handleSourceFilterChange(){this.updateModelFromSource()}handleSourceSortChange(){this.updateModelFromSource()}updateModelFromSource(){const{metadata:e,source:n}=this.props,{isLinked:s,model:i}=this.state;if(!s||!i||!n){en.debug2("updateModelFromSource ignoring",s,i,n);return}if(this.pending.cancel(),sl(e)){const{settings:o}=e;this.pending.add(M.plot.Figure.create(xe.makeFigureSettings(o,n))).then(r=>{vh(i)&&i.setFigure(r)}).catch(this.handleLoadError)}this.updatePanelState()}updatePanelState(){const{sourcePanel:e}=this.props,{panelState:n,filterValueMap:s,settings:i}=this.state;let{tableSettings:o}=n!=null?n:{};if(e&&P1(e.props)&&H1(e.state)){const{inputFilters:r}=e.props,{panelState:l}=e.state;l!=null&&(o=te.extractTableSettings(l,r))}this.setState({panelState:{settings:i,tableSettings:o,filterValueMap:Array.from(s)}})}handleError(){this.setState({isLoading:!1})}handleResize(){this.updateChart()}handleSettingsChanged(e){this.setState(({settings:n})=>{const s={...n,...e};return en.debug("Updated settings",s),{settings:s}})}handleHide(){this.setActive(!1)}handleShow(){this.setActive(!0)}handleTabBlur(){this.setActive(!1)}handleTabFocus(){const e=this.isHidden();this.setActive(!e)}handleUpdate(){this.setState({isLoading:!1})}handleClearAllFilters(){this.setState({filterValueMap:new Map,filterMap:new Map}),this.updatePanelState()}openInputFilter(e){const{glEventHub:n}=this.props,{name:s,type:i}=e;n.emit(Ae.OPEN_INPUT,{title:`${s} Filter`,panelState:{name:s,type:i,isValueShown:!0},createNewStack:!0,focusElement:"input"})}setActive(e){this.setState({isActive:e},()=>{e&&(this.loadModelIfNecessary(),this.updateChart())})}sendColumnChange(){const{model:e}=this.state;if(!e)return;const{glEventHub:n}=this.props;n.emit(Ae.COLUMNS_CHANGED,this,Array.from(e.getFilterColumnMap().values()))}getCoordinateForColumn(e){var l;const n=er.makeButtonClassName(e);if(!this.panelContainer.current)return null;const s=this.panelContainer.current.querySelector(`.${n}`),i=(l=s==null?void 0:s.getBoundingClientRect())!=null?l:null;if(i==null||i.width<=0||i.height<=0)return null;const o=i.left+i.width/2,r=i.bottom;return[o,r]}setFilterMap(e){en.debug("setFilterMap",e),this.setState(n=>{const{columnMap:s,filterMap:i}=n;let o=null;const r=new Map(n.filterValueMap);return e.forEach(({columnType:l,value:a},d)=>{const c=s.get(d);c==null||c.type!==l||(r.set(d,a),i.get(d)!==a&&(o===null&&(o=new Map(i)),o.set(d,a)))}),{filterValueMap:r,filterMap:o!=null?o:i}})}unsetFilterValue(e){this.setState(n=>{var a;const{inputFilters:s}=this.props,{columnMap:i}=n;let{filterMap:o,filterValueMap:r}=n;if(!r.has(e))return null;r=new Map(n.filterValueMap),r.delete(e);const l=this.getInputFilterColumnMap(i,s);if(l.has(e)){const d=o.get(e),c=(a=l.get(e))==null?void 0:a.value;c!=null&&d!==c&&(o=new Map(n.filterMap),c.length>0?o.set(e,c):o.delete(e))}else o=new Map(n.filterMap),o.delete(e);return{filterMap:o,filterValueMap:r}})}updateChangedInputFilters(e,n){const s=n.filter(o=>e.find(r=>r.name===o.name&&r.type===o.type)===void 0);s.length>0&&this.deleteInputFilters(s);const i=e.filter(o=>!n.includes(o));i.length>0&&this.updateInputFilters(i)}updateInputFilters(e,n=!1){this.setState(s=>{const{columnMap:i}=s,o=new Map(s.filterValueMap),r=new Map(s.filterMap),l=n?{filterMap:r,filterValueMap:o}:{};for(let a=0;a<e.length;a+=1){const{name:d,type:c,value:u}=e[a],m=i.get(d);m!=null&&m.type===c&&(u!=null&&r.get(d)!==u&&(u===""?r.delete(d):r.set(d,u),l.filterMap=r),o.has(d)&&(o.delete(d),l.filterValueMap=o))}return en.debug("updateInputFilters",l),l})}deleteInputFilters(e,n=!1){this.setState(s=>{const{columnMap:i,filterValueMap:o}=s,r=new Map(s.filterMap);let l=n;for(let a=0;a<e.length;a+=1){const{name:d,type:c}=e[a],u=i.get(d);if(u!=null&&u.type===c&&r.has(d)){const m=r.get(d);if(o.has(d)){const p=o.get(d);p!==m&&p!=null&&(l=!0,r.set(d,p))}else l=!0,r.delete(d)}}return en.debug("deleteInputFilters",l),l?{filterMap:r}:null})}updateColumnFilters(){this.setState(({model:e})=>e?{columnMap:e.getFilterColumnMap()}:null)}updateFilters(){const{columnMap:e,filterMap:n,model:s}=this.state;P(s);const i=this.getWaitingInputMap(s.isFilterRequired(),e,n);if(s.setFilter(n),n.size>0&&i.size===0){const o=s.getDefaultTitle(),r=nn.join(Array.from(n.entries()).map(([l,a])=>`${l}: ${a}`));o?s.setTitle(`${o}<br><span style="font-size: smaller">${r}</span>`):s.setTitle(r),en.debug2("updateFilters filters set",n),this.setState({isLoading:!0})}else en.debug2("updateFilters waiting on inputs",i),s.setTitle(s.getDefaultTitle()),this.setState({isLoading:!1});this.updatePanelState()}pruneFilterMaps(){this.setState(e=>{const{columnMap:n}=e,s=new Map(e.filterMap),i=new Map(e.filterValueMap),o={};return e.filterValueMap.forEach((r,l)=>{n.has(l)||(i.delete(l),o.filterValueMap=i)}),e.filterMap.forEach((r,l)=>{n.has(l)||(s.delete(l),o.filterMap=s)}),o})}updateChart(){this.chart.current&&this.chart.current.updateDimensions()}render(){const{columnSelectionValidator:e,glContainer:n,glEventHub:s,inputFilters:i,isLinkerActive:o,links:r,metadata:l,settings:a}=this.props,{columnMap:d,filterMap:c,error:u,model:m,isActive:p,isDisconnected:g,isLoaded:f,isLoading:b}=this.state;let C;sl(l)?C=l.table:C=l.figure;const S=this.getInputFilterColumnMap(d,i),v=this.getLinkedColumnMap(d,r),y=m!=null?this.getWaitingInputMap(m.isFilterRequired(),d,c):new Map,E=m!=null?this.getWaitingFilterMap(m.isFilterRequired(),d,c,v,S):new Map,I=u!=null?`Unable to open chart. ${u}`:void 0,R=y.size>0,N=d.size>0&&o;return h(oa,{className:z("iris-chart-panel",{"input-required":R}),componentPanel:this,glContainer:n,glEventHub:s,onHide:this.handleHide,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabBlur:this.handleTabBlur,onTabFocus:this.handleTabFocus,errorMessage:I,isDisconnected:g,isLoading:b,isLoaded:f,widgetName:C,widgetType:"Chart",children:T("div",{ref:this.panelContainer,className:"chart-panel-container h-100 w-100",children:[h("div",{className:"chart-container h-100 w-100",children:f&&m&&h(Rm,{isActive:p,model:m,settings:a,ref:this.chart,onDisconnect:this.handleDisconnect,onReconnect:this.handleReconnect,onUpdate:this.handleUpdate,onError:this.handleError,onSettingsChanged:this.handleSettingsChanged})}),h(mt,{in:R&&!N&&!b,timeout:Be.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(ig,{inputFilterMap:S,linkedColumnMap:v,onAdd:this.handleFilterAdd,onOpenLinker:this.handleOpenLinker,columnMap:d,waitingFilterMap:E,waitingInputMap:y})}),h(mt,{in:N,timeout:Be.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(er,{columns:this.getSelectorColumns(d,v,e),onColumnSelected:this.handleColumnSelected,onMouseEnter:this.handleColumnMouseEnter,onMouseLeave:this.handleColumnMouseLeave})})]})})}}la.defaultProps={columnSelectionValidator:null,isLinkerActive:!1,source:null,sourcePanel:null,panelState:null,settings:{}};la.displayName="ChartPanel";la.COMPONENT="ChartPanel";const U1=(t,e)=>{const{localDashboardId:n,metadata:s}=e;let i;s!=null&&(i=s.sourcePanelId);const o=pc(t,n),r=fp(t,n),l=ql(t),a=gc(t,n),d=l===Yt.LINKER&&a===void 0;return{columnSelectionValidator:fc(t,n),isLinkerActive:d,inputFilters:mc(t,n),links:fo(t,n),source:i!=null?o.get(i):void 0,sourcePanel:i!=null?r.get(i):void 0,settings:Rt(t)}},Xi=It(U1,{setActiveTool:Xl,setDashboardIsolatedLinkerPanelId:sg},null,{forwardRef:!0})(la);const Kr=X.module("CommandHistoryPanel"),og=class extends w.exports.Component{constructor(t){super(t),this.handleFocusHistory=this.handleFocusHistory.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSendToConsole=this.handleSendToConsole.bind(this),this.handleSendToNotebook=this.handleSendToNotebook.bind(this),this.container=Y.createRef(),this.pending=new Ss;const{session:e,sessionId:n,language:s}=t;this.state={panelState:{},session:e,sessionId:n,language:s,contextActions:[{action:this.handleFocusHistory,shortcut:Vt.COMMAND_HISTORY.FOCUS_HISTORY}]}}static handleError(t){Kr.error(t)}componentDidMount(){const{glEventHub:t,session:e}=this.props;t.on(bt.FOCUS_HISTORY,this.handleFocusHistory),e!=null&&this.loadTable()}componentWillUnmount(){const{glEventHub:t}=this.props;t.off(bt.FOCUS_HISTORY,this.handleFocusHistory),this.pending.cancel()}handleFocusHistory(){this.container.current&&this.container.current.focus()}handleShow(){var t;(t=this.container.current)==null||t.restoreScrollPosition()}handleSessionOpened(t,{language:e,sessionId:n}){this.setState({session:t,sessionId:n,language:e},()=>{this.loadTable()})}handleSessionClosed(){this.pending.cancel(),this.setState({session:void 0,language:void 0,table:void 0})}handleSendToNotebook(t,e=!1){const{session:n,language:s}=this.state;if(Kr.debug("handleSendToNotebook",n,t),!n){Kr.error("Session is not connected.");return}const{glEventHub:i}=this.props;i.emit(e?Pe.CREATE_NOTEBOOK:Pe.SEND_TO_NOTEBOOK,n,s,t)}handleSendToConsole(t,e=!0,n=!1){Kr.debug("handleSendToConsole",t);const{glEventHub:s}=this.props;s.emit(bt.SEND_COMMAND,t,e,n)}loadTable(){const{commandHistoryStorage:t}=this.props,{language:e,sessionId:n}=this.state;P(e),P(n),this.pending.add(t.getTable(e,n,Date.now()),s=>s.close()).then(s=>{this.setState({table:s})}).catch(og.handleError)}render(){const{glContainer:t,glEventHub:e,commandHistoryStorage:n}=this.props,{language:s,contextActions:i,table:o}=this.state;return T(ts,{className:"command-history-pane",componentPanel:this,glContainer:t,glEventHub:e,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[!o&&h("div",{className:"command-history-disconnected-message",children:"Waiting for console connection"}),o&&s!=null&&T(we,{children:[h(Gl,{ref:this.container,language:s,sendToNotebook:this.handleSendToNotebook,sendToConsole:this.handleSendToConsole,table:o,commandHistoryStorage:n}),h(oe,{actions:i})]})]})}};let bc=og;bc.COMPONENT="CommandHistoryPanel";bc.TITLE="Command History";const V1=(t,e)=>{const n=Nm(t),s=Si(t,e.localDashboardId),{session:i,config:o}=s!=null?s:{},{type:r,id:l}=o!=null?o:{};return{commandHistoryStorage:n,language:r,session:i,sessionId:l}},Il=It(V1,null,null,{forwardRef:!0})(bc);const qr=X.module("ConsolePanel"),B1=500,$1=Object.freeze({consoleSettings:{},itemIds:[]});class Sc extends w.exports.PureComponent{constructor(e){super(e),this.savePanelState=je(()=>{const{consoleSettings:r,itemIds:l}=this.state,a={consoleSettings:r,itemIds:[...l]};qr.debug("Saving panel state",a),this.setState({panelState:a})},B1),this.handleFocusCommandHistory=this.handleFocusCommandHistory.bind(this),this.handleOpenObject=this.handleOpenObject.bind(this),this.handleCloseObject=this.handleCloseObject.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSettingsChange=this.handleSettingsChange.bind(this),this.handleShow=this.handleShow.bind(this),this.handlePanelMount=this.handlePanelMount.bind(this),this.consoleRef=Y.createRef();const{panelState:n}=e,s={...$1,...n||{}},{consoleSettings:i,itemIds:o}=s;this.state={consoleSettings:i,itemIds:new Map(o),objectMap:new Map,error:void 0,panelState:s}}componentDidMount(){const{glEventHub:e}=this.props;this.closeDisconnectedPanels(),e.on(Re.MOUNT,this.handlePanelMount),this.subscribeToFieldUpdates()}componentDidUpdate(e,n){const{consoleSettings:s,itemIds:i}=this.state;(n.consoleSettings!==s||n.itemIds!==i)&&this.savePanelState()}componentWillUnmount(){var n;const{glEventHub:e}=this.props;this.savePanelState.flush(),e.off(Re.MOUNT,this.handlePanelMount),(n=this.objectSubscriptionCleanup)==null||n.call(this)}subscribeToFieldUpdates(){const{sessionWrapper:e}=this.props,{session:n}=e;this.objectSubscriptionCleanup=n.subscribeToFieldUpdates(s=>{qr.debug("Got updates",s),this.setState(({objectMap:i})=>{const{updated:o,created:r,removed:l}=s,a=[...o,...l],d=new Map(i);return a.forEach(u=>{const{title:m}=u;m!==void 0&&d.delete(m)}),[...o,...r].forEach(u=>{u.title!==void 0&&d.set(u.title,u)}),{objectMap:d}})})}setItemId(e,n){this.setState(({itemIds:s})=>{const i=new Map(s);return i.set(e,n),{itemIds:i}})}getItemId(e,n=!0){const{itemIds:s}=this.state;let i=s.get(e);return i==null&&n&&(i=$e.generate(),this.setItemId(e,i)),i}handleTabFocus(){var e;(e=this.consoleRef.current)==null||e.focus()}handlePanelMount(e){var o,r,l;const{itemIds:n}=this.state,s=(o=e==null?void 0:e.props)==null?void 0:o.id,i=(l=(r=e==null?void 0:e.props)==null?void 0:r.metadata)==null?void 0:l.sourcePanelId;s&&i&&new Set(n.values()).has(i)&&this.setItemId(s,s)}handleFocusCommandHistory(){const{glEventHub:e}=this.props;e.emit(bt.FOCUS_HISTORY)}handleResize(){this.updateDimensions()}handleShow(){this.updateDimensions()}handleOpenObject(e){const{sessionWrapper:n}=this.props,{session:s}=n;this.openWidget(e,s)}handleCloseObject(e){const{title:n}=e;if(n!==void 0){const s=this.getItemId(n,!1),{glEventHub:i}=this.props;i.emit(Re.CLOSE,s)}}handleSettingsChange(e){const{glEventHub:n}=this.props;qr.debug("handleSettingsChange",e),this.setState({consoleSettings:e}),n.emit(bt.SETTINGS_CHANGED,e)}openWidget(e,n){const{glEventHub:s}=this.props,{title:i}=e;P(i);const o=this.getItemId(i),r={fetch:()=>n.getObject(e),panelId:o,widget:e};qr.debug("openWidget",r),s.emit(Re.OPEN,r)}addCommand(e,n=!0,s=!1){var i;(i=this.consoleRef.current)==null||i.addCommand(e,n,s)}closeDisconnectedPanels(e=!1){const{consoleSettings:n,itemIds:s}=this.state,{isClosePanelsOnDisconnectEnabled:i=!0}=n;if(!i&&!e)return;const o=[...s.values()],{glEventHub:r}=this.props;o.forEach(l=>{r.emit(Re.CLOSE,l)}),this.setState({itemIds:new Map})}updateDimensions(){var e;(e=this.consoleRef.current)==null||e.updateDimensions()}render(){const{commandHistoryStorage:e,glContainer:n,glEventHub:s,sessionWrapper:i,timeZone:o,unzip:r}=this.props,{consoleSettings:l,error:a,objectMap:d}=this.state,{config:c,session:u,connection:m}=i,{id:p,type:g}=c;return h(ts,{componentPanel:this,glContainer:n,glEventHub:s,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,errorMessage:a!=null?`${a}`:void 0,children:u!=null&&h(Pd,{ref:this.consoleRef,settings:l,session:u,focusCommandHistory:this.handleFocusCommandHistory,openObject:this.handleOpenObject,closeObject:this.handleCloseObject,commandHistoryStorage:e,onSettingsChange:this.handleSettingsChange,language:g,statusBarChildren:T(we,{children:[h("div",{children:"\xA0"}),h("div",{children:om.LANGUAGE_MAP.get(g)}),h("div",{children:"\xA0"}),h("div",{children:h(C0,{connection:m,defaultUpdateInterval:10*1e3,hoverUpdateInterval:3*1e3,monitorDuration:10*60*1e3})}),h("div",{children:"\xA0"})]}),scope:p,timeZone:o,objectMap:d,unzip:r})})}}Sc.COMPONENT="ConsolePanel";Sc.TITLE="Console";const W1=(t,e)=>({commandHistoryStorage:Nm(t),sessionWrapper:Si(t,e.localDashboardId),timeZone:lr(t)}),Wi=It(W1,null,null,{forwardRef:!0})(Sc);const Yr=X.module("DropdownFilter"),z1=150,il=class extends w.exports.Component{constructor(t){super(t),this.getCompatibleColumns=Ce((i,o)=>i!=null?o.filter(({type:r})=>r!==void 0&&L.isCompatibleType(r,i.columnType)):[]),this.getColumnOptions=Ce((i,o)=>{let r=-1;const l=[];return l.push(h("option",{value:"-1",children:"Select a column"},"placeholder")),i.forEach((a,d)=>{l.push(h("option",{value:d,children:this.getItemLabel(i,d)},`${a.name}/${a.type}`)),o!==null&&a.name===o.name&&a.type===o.type&&(r=d)}),[l,r]}),this.getSelectedOptionIndex=Ce((i,o)=>i.indexOf(o)),this.getValueOptions=Ce(i=>[h("option",{value:"-1",children:il.PLACEHOLDER},"-1"),...i.map((o,r)=>h("option",{value:r,children:o!=null?o:"(null)"},`${r}/${o}`))]),this.getItemLabel=fe((i,o)=>{const{name:r,type:l}=i[o];if(o>0&&i[o-1].name===r||o<i.length-1&&i[o+1].name===r){const a=l.substring(l.lastIndexOf(".")+1);return`${r} (${a})`}return r}),this.sendUpdate=je(()=>{const{onChange:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i({column:o,isValueShown:l,value:r!=null?r:void 0})},z1),this.handleColumnChange=this.handleColumnChange.bind(this),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleDropdownKeyPress=this.handleDropdownKeyPress.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.dropdownRef=Y.createRef();const{column:e,isValueShown:n,value:s}=t;this.state={column:e,id:$e(),selectedColumn:e,disableCancel:!n,isValueShown:n,value:s}}componentDidUpdate(t,e){const{source:n,values:s,isLoaded:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i&&(n!==t.source&&this.sourceUpdated(),s!==t.values&&r!==""&&!s.includes(r)&&this.resetValue(),l!==e.isValueShown&&l&&this.focusInput(),(o!==e.column||r!==e.value||l!==e.isValueShown)&&this.sendUpdate())}componentWillUnmount(){this.sendUpdate.flush()}handleColumnChange(t){const{value:e}=t.target;if(Yr.debug2("handleColumnChange",e),e!=null&&parseInt(e,10)<0){this.setState({selectedColumn:null});return}const{columns:n,source:s}=this.props,i=this.getCompatibleColumns(s,n);this.setState({selectedColumn:i[parseInt(e,10)]})}handleDropdownKeyPress(t){t.key==="Enter"&&(t.preventDefault(),t.stopPropagation(),Yr.debug2("handleDropdownKeyPress"),this.sendUpdate(),this.sendUpdate.flush())}handleValueChange(t){const{value:e}=t.target,n=parseInt(e,10);let s="";const{values:i}=this.props;n>=0&&n<i.length?s=i[n]:Yr.debug2("Selected default item"),Yr.debug2("handleValueChange",s),this.setState({value:s})}handleSettingsCancel(){this.setState(({column:t})=>({selectedColumn:t,isValueShown:!0}))}handleSettingsSave(){this.setState(({column:t,selectedColumn:e,value:n})=>({column:e,value:t===e?n:"",isValueShown:!0,disableCancel:!1}))}handleSettingsClick(t){t.stopPropagation(),this.showSettings()}handleBackgroundClick(t){t.target!==this.dropdownRef.current&&this.focusInput()}sourceUpdated(){this.setState({column:null,selectedColumn:null,isValueShown:!1,disableCancel:!0,value:""})}showSettings(){const{column:t}=this.state;this.setState({selectedColumn:t,isValueShown:!1})}focusInput(){var t;(t=this.dropdownRef.current)==null||t.focus()}resetValue(){this.setState({value:""})}clearFilter(){this.resetValue()}setFilterState({name:t,type:e,value:n,isValueShown:s}){const i=t!=null&&e!=null?{name:t,type:e}:null;this.setState(({value:o,isValueShown:r})=>({column:i,value:n!=null?n:o,isValueShown:s!=null?s:r}))}render(){var H;const{columns:t,disableLinking:e,isLinkerActive:n,isLoaded:s,source:i,onColumnSelected:o,onSourceMouseEnter:r,onSourceMouseLeave:l,values:a,settingsError:d}=this.props,{column:c,disableCancel:u,id:m,isValueShown:p,selectedColumn:g,value:f}=this.state,b=i===null,C=this.getCompatibleColumns(i,t),S=i!=null,v=(H=i==null?void 0:i.columnName)!=null?H:il.SOURCE_BUTTON_PLACEHOLDER,y=c!=null?`${c.name} Filter`:null,[E,I]=this.getColumnOptions(C,g),R=this.getValueOptions(a),N=this.getSelectedOptionIndex(a,f),F=!S||g==null,B=p&&!n,U=`source-column-btn-${m}`,x=`filter-column-select-${m}`;return T(Ed,{className:"dropdown-filter fill-parent-absolute",isFlipped:B,children:[h("div",{className:"dropdown-filter-settings-card",children:T("div",{className:"dropdown-filter-card-content",children:[T("div",{className:"dropdown-filter-settings-grid",children:[h("label",{htmlFor:U,children:"Source Column"}),h(Bl,{id:U,isLinked:S,onClick:o,onMouseEnter:r,onMouseLeave:l,className:il.SOURCE_BUTTON_CLASS_NAME,disabled:e,children:v}),h("div",{className:"text-muted small",children:"Select a source column for the list by linking to a table."}),h("label",{htmlFor:x,children:"Filter Column"}),h("select",{id:x,value:I,className:"custom-select",onChange:this.handleColumnChange,disabled:b,children:E}),h("div",{className:"text-muted small",children:"Dropdown filter control will apply its filter to all columns matching this name in this dashboard."})]}),d&&h("div",{className:"error-message text-center",children:d}),S&&T("div",{className:"dropdown-filter-settings-buttons",children:[h(W,{kind:"secondary",type:"button",onClick:this.handleSettingsCancel,disabled:u||p||n,tooltip:n?"Cancel disabled while linker open":void 0,children:"Cancel"}),h(W,{kind:"primary",type:"button",className:"ml-2",onClick:this.handleSettingsSave,disabled:F||p||n,tooltip:n?"Save disabled while linker open":void 0,children:"Save"})]})]})}),h("div",{className:"dropdown-filter-value-card",onClick:this.handleBackgroundClick,"data-testid":"dropdown-filter-value-background",children:s&&T(we,{children:[h("div",{className:"dropdown-filter-column",children:h("div",{className:"dropdown-filter-column-title",children:y})}),T("div",{className:"dropdown-filter-card-content",children:[h("div",{className:"dropdown-filter-value-input d-flex flex-column justify-content-center",children:h("select",{className:"custom-select",value:N,ref:this.dropdownRef,onChange:this.handleValueChange,onKeyPress:this.handleDropdownKeyPress,title:"Select Value",children:R})}),d&&h("div",{className:"error-message mt-3 text-center",children:d})]}),h("div",{className:"dropdown-filter-menu",children:h(W,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(Z,{icon:or,transform:"grow-4"}),tooltip:"Dropdown Filter Settings"})})]})})]})}};let so=il;so.defaultProps={column:null,disableLinking:!1,isLinkerActive:!1,isLoaded:!1,isValueShown:!1,settingsError:null,source:null,value:"",values:[],onColumnSelected:()=>{},onSourceMouseEnter:()=>{},onSourceMouseLeave:()=>{}};so.PLACEHOLDER="Select a value...";so.SOURCE_BUTTON_CLASS_NAME="btn-dropdown-filter-selector";so.SOURCE_BUTTON_PLACEHOLDER="Select a column";const ot=X.module("DropdownFilterPanel"),G1=250,K1=(t,e)=>{const{localDashboardId:n}=e,s=ne.getIdFromPanel({props:e}),i=pc(t,n),o=fo(t,n),r=ql(t),l=gc(t,n),a=r===Yt.LINKER&&(l===void 0||l===s),d=r===Yt.LINKER&&l!==void 0&&l!==s;return{columns:ng(t,n),columnSelectionValidator:fc(t,n),isLinkerActive:a,disableLinking:d,settings:Rt(t),panelTableMap:i,dashboardLinks:o}},q1=It(K1,null,null,{forwardRef:!0}),li=class extends w.exports.Component{constructor(t){super(t),this.getCachedValues=fe((d,{type:c,name:u},m)=>c!==void 0&&L.isDateType(c)?d.map(p=>li.DATETIME_FORMATTER.format(p)):d.map(p=>p!=null&&c!=null?m.getFormattedString(p,c,u):null)),this.getCachedPanelLinks=fe((d,c)=>{const u=ne.getIdFromPanel(c);return ot.debug("getCachedPanelLinks",d,u),d.filter(m=>{var p;return((p=m.end)==null?void 0:p.panelId)===u})}),this.getCachedSource=fe(d=>{ot.debug("getCachedSource",d);let c;if(d.length>0){const[u]=d;c=u.start,d.length>1&&ot.error("Filter has more that one link",d)}return c}),this.getCachedSourceTable=fe((d,c)=>{var m;if(ot.debug("getCachedSourceTable",d,c),c==null)return null;const{panelId:u}=c;return(m=d.get(u))!=null?m:null}),this.getCachedSourceColumn=fe((d,c)=>{var u;return ot.debug("getCachedSourceColumn",d,c),d==null||c==null?null:(u=d.columns.find(({name:m,type:p})=>m===c.columnName&&p===c.columnType))!=null?u:null}),this.handleChange=je(this.handleChange.bind(this),G1),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleSourceFilterChange=this.handleSourceFilterChange.bind(this),this.handleSourceSortChange=this.handleSourceSortChange.bind(this),this.handleSourceSizeChange=this.handleSourceSizeChange.bind(this),this.handleSourceMouseEnter=this.handleSourceMouseEnter.bind(this),this.handleSourceMouseLeave=this.handleSourceMouseLeave.bind(this),this.handleValuesTableUpdate=this.handleValuesTableUpdate.bind(this),this.dropdownFilterRef=Y.createRef(),this.panelContainer=Y.createRef(),this.pending=new Ss;const{panelState:e,settings:n}=t;this.columnFormats=fs.getColumnFormats(n);const{value:s="",isValueShown:i=!1,name:o,type:r,timestamp:l}=e!=null?e:{},a=o!=null&&r!=null?{name:o,type:r}:void 0;this.state={column:a,formatter:new cn(this.columnFormats),valuesTable:void 0,valuesColumn:void 0,sourceSize:0,value:s,timestamp:l,values:[],isValueShown:i,wasFlipped:!1,skipUpdate:!1,panelState:e,isDisconnected:!1,isLoading:!1,isLoaded:!1,error:null}}componentDidMount(){this.updateValuesTable();const{dashboardLinks:t,panelTableMap:e}=this.props,{column:n,value:s,timestamp:i}=this.state,o=this.getSourceTable(e,t);if(o!==null&&this.startListeningToSource(o),n!=null){const{name:r,type:l}=n;this.sendUpdate(r,l,s,i)}}componentDidUpdate(t,e){const{dashboardLinks:n,panelTableMap:s,settings:i}=this.props,{valuesTable:o}=this.state,r=this.getSource(n),l=this.getSourceTable(s,n),a=this.getSource(t.dashboardLinks),d=this.getSourceTable(t.panelTableMap,t.dashboardLinks);i!==t.settings&&i!==void 0&&this.updateFormatterSettings(i),o!==e.valuesTable&&e.valuesTable!=null&&(ot.debug("Table in state modified, closing the old table."),e.valuesTable.close()),(l!==d||r!==a)&&this.updateValuesTable(),l!==d&&(d!==null&&this.stopListeningToSource(d),l!==null&&this.startListeningToSource(l))}componentWillUnmount(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);this.pending.cancel(),s!==null&&this.stopListeningToSource(s),this.cleanup&&this.cleanup(),n!=null&&n.close()}getCoordinateForColumn(){var i;if(this.panelContainer.current==null)return null;const t=this.panelContainer.current.querySelector(`.${so.SOURCE_BUTTON_CLASS_NAME}`),e=(i=t==null?void 0:t.getBoundingClientRect())!=null?i:null;if(e==null||e.width<=0||e.height<=0)return null;const n=e.left+e.width/2,s=e.bottom;return[n,s]}getSettingsErrorMessage(){const{sourceSize:t}=this.state;if(t>li.MAX_TABLE_SIZE)return`Table too large, must have fewer than ${li.MAX_TABLE_SIZE} options.`}getPanelErrorMessage(){const{error:t}=this.state;return t!=null?`${t}`:void 0}getSource(t){const e=this.getCachedPanelLinks(t,this);return this.getCachedSource(e)}getSourceTable(t,e){const n=this.getSource(e);return this.getCachedSourceTable(t,n)}getValuesColumn(t,e){const n=this.getSource(e);return this.getCachedSourceColumn(t,n)}startListeningToSource(t){ot.debug("startListeningToSource"),t.addEventListener(M.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),t.addEventListener(M.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),t.addEventListener(M.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),t.addEventListener(M.Table.EVENT_DISCONNECT,this.handleDisconnect),t.addEventListener(M.Table.EVENT_RECONNECT,this.handleReconnect)}stopListeningToSource(t){ot.debug("stopListeningToSource"),t.removeEventListener(M.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),t.removeEventListener(M.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),t.removeEventListener(M.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),t.removeEventListener(M.Table.EVENT_DISCONNECT,this.handleDisconnect),t.removeEventListener(M.Table.EVENT_RECONNECT,this.handleReconnect)}handleChange({column:t,isValueShown:e=!1,value:n}){const{name:s=void 0,type:i=void 0}=t!=null?t:{};let o=!0,r=Date.now();this.setState(({panelState:l,timestamp:a,wasFlipped:d,skipUpdate:c})=>{var m;const u=l!=null&&e!==l.isValueShown&&s===l.name&&i===l.type&&n===l.value;return o=(m=!c&&e&&(!u||!d))!=null?m:!1,o||(r=a),{panelState:{isValueShown:e,name:s,type:i,value:n,timestamp:r!=null?r:void 0},timestamp:r,wasFlipped:u,skipUpdate:!1}},()=>{o&&this.sendUpdate(s!=null?s:null,i,n,r)})}handleDisconnect(){this.setState({error:new Error("Table disconnected"),isDisconnected:!0,isLoading:!1})}handleReconnect(){this.setState({isDisconnected:!1,error:null})}handleSourceFilterChange(){this.applySourceFilters()}handleSourceSortChange(){this.applySourceSorts()}handleSourceSizeChange({detail:t}){this.setState({sourceSize:t})}handleColumnSelected(){ot.debug("handleColumnSelected");const{glEventHub:t}=this.props;t.emit(Ae.COLUMN_SELECTED,this,li.SOURCE_COLUMN)}handleClearAllFilters(){var t,e;(e=(t=this.dropdownFilterRef)==null?void 0:t.current)==null||e.clearFilter()}setPanelState(t,e=!1){var s,i;const{dashboardLinks:n}=this.props;if(this.getSource(n)==null){ot.debug("Ignore state update for unlinked filter",t);return}this.setState({skipUpdate:!e}),(i=(s=this.dropdownFilterRef)==null?void 0:s.current)==null||i.setFilterState(t)}sendUpdate(t,e,n,s){var a;const{dashboardLinks:i,glEventHub:o}=this.props,r=(a=this.getSource(i))==null?void 0:a.panelId,l=r===null?[]:[r];ot.debug("sendUpdate",{name:t,type:e,value:n,timestamp:s,excludePanelIds:l}),o.emit(Ae.FILTERS_CHANGED,this,{name:t,type:e,value:n!=null?n:"=null",timestamp:s,excludePanelIds:l})}updateValuesTable(){const{dashboardLinks:t,panelTableMap:e}=this.props,n=this.getSource(t),s=this.getSourceTable(e,t);if(ot.debug("updateValuesTable",n,s),this.setState({values:[],valuesTable:void 0,error:null}),n==null){ot.debug("Filter unlinked."),this.setState({isLoading:!1,isLoaded:!0,isValueShown:!1,sourceSize:0});return}this.setState({isLoading:!0}),s!=null&&(this.setState({isLoaded:!1,sourceSize:s.size}),this.pending.add(s.copy(),i=>i.close()).then(i=>{this.updateViewportListener(i),this.setState({valuesTable:i})}).catch(i=>{ye.isCanceled(i)||(ot.error(i),this.setState({isLoading:!1,error:i}))}))}applySourceSorts(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);if(ot.debug("applySourceSorts",s==null?void 0:s.sort),n==null||s==null){ot.debug("Table not initialized");return}const i=[...s.sort];n.applySort(i),this.setViewport(n)}applySourceFilters(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);if(ot.debug("applySourceFilters",s==null?void 0:s.filter),n==null||s==null){ot.debug("Table not initialized");return}const i=[...s.filter];n.applyFilter(i),this.setViewport(n)}updateViewportListener(t){if(ot.debug("updateViewportListener",t==null?void 0:t.size),this.cleanup&&this.cleanup(),t==null){this.cleanup=void 0;return}this.cleanup=t.addEventListener(M.Table.EVENT_UPDATED,this.handleValuesTableUpdate),this.setViewport(t)}setViewport(t){const{dashboardLinks:e}=this.props,n=this.getValuesColumn(t,e);if(!n){ot.error("values column is null");return}t.setViewport(0,li.MAX_TABLE_SIZE-1,[n])}updateFormatterSettings(t){const e=fs.getColumnFormats(t);ut(this.columnFormats,e)||(this.columnFormats=e,this.setState({formatter:new cn(e)}))}handleValuesTableUpdate({detail:t}){const{rows:e}=t,{dashboardLinks:n}=this.props,{valuesTable:s}=this.state;if(!s){ot.error("valuesTable is null");return}const i=this.getValuesColumn(s,n);if(!i){ot.error("Values column not found");return}const o=e.map(r=>r.get(i));this.setState({values:o,isLoading:!1,isLoaded:!0,valuesColumn:i})}handleSourceMouseEnter(){const{columnSelectionValidator:t}=this.props;!t||t(this,li.SOURCE_COLUMN)}handleSourceMouseLeave(){const{columnSelectionValidator:t}=this.props;!t||t(this,void 0)}render(){const{columns:t,dashboardLinks:e,disableLinking:n,glContainer:s,glEventHub:i,isLinkerActive:o}=this.props,{column:r,formatter:l,isDisconnected:a,isValueShown:d,value:c,values:u,valuesColumn:m,isLoading:p,isLoaded:g}=this.state,f=this.getSource(e),b=this.getSettingsErrorMessage(),C=this.getPanelErrorMessage(),S=g&&m!=null?this.getCachedValues(u,m,l):[];return h(oa,{errorMessage:C,isLoading:p,isLoaded:g,isDisconnected:a,className:"iris-dropdown-filter-panel",componentPanel:this,glContainer:s,glEventHub:i,onClearAllFilters:this.handleClearAllFilters,widgetName:"Dropdown Filter",widgetType:"DropdownFilter",children:h("div",{ref:this.panelContainer,className:"dropdown-filter-container h-100 w-100 container",children:h(so,{ref:this.dropdownFilterRef,column:r,columns:t,isValueShown:d,isLinkerActive:o,disableLinking:n,isLoaded:g,settingsError:b,source:f,value:c,values:S,onChange:this.handleChange,onColumnSelected:this.handleColumnSelected,onSourceMouseEnter:this.handleSourceMouseEnter,onSourceMouseLeave:this.handleSourceMouseLeave})})})}};let Co=li;Co.displayName="DropdownFilterPanel";Co.COMPONENT="DropdownFilterPanel";Co.MAX_TABLE_SIZE=256;Co.DATETIME_FORMATTER=new nt({showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"});Co.SOURCE_COLUMN=Object.freeze({name:"FilterSource",type:null});const gi=q1(Co);function jn(t){return t.type==="directory"}var rg=(t=>(t.GROOVY="text/x-groovy",t.PLAIN_TEXT="text/plain",t.PYTHON="text/x-python",t.PYTHON_COMPILED="application/x-python-code",t.SCALA="text/x-scala",t.UNKNOWN="",t))(rg||{});class ue{static fileExtensionToString(e=""){return e.length===0?"":`.${e}`}static getDepth(e){var s;if(!ue.hasPath(e))throw new Error(`Invalid path provided: ${e}`);return((s=e.match(/\//g))!=null?s:[]).length-1}static getExtension(e){var s;const n=this.getBaseName(e).split(".");return n.length>1&&(s=n.pop())!=null?s:""}static getBaseName(e){var n;return(n=e.split("/").pop())!=null?n:""}static getCopyFileName(e){const n=e.lastIndexOf(".");let s=null,i=null;n<0?i=e:(i=e.substring(0,n),s=e.substring(n+1));const o=i?`${i}-copy`:"Copy";return s!==null?`${o}.${s}`:o}static getMimeType(e){switch(this.getExtension(e).toLowerCase()){case"groovy":return"text/x-groovy";case"py":return"text/x-python";case"pyc":return"application/x-python-code";case"scala":return"text/x-scala";case"txt":return"text/plain";default:return""}}static getParent(e){if(!ue.hasPath(e))throw new Error(`Invalid name provided: ${e}`);const n=e.split("/");for(;n.pop()==="";);if(n.length===0)throw new Error(`No parent for path provided: ${e}`);return`${n.join("/")}/`}static getPath(e){if(!ue.hasPath(e))throw new Error(`Invalid filename provided: ${e}`);const n=e.split("/");return n.pop(),`${n.join("/")}/`}static hasPath(e){return e.startsWith("/")}static isPath(e){return e.startsWith("/")&&e.endsWith("/")}static makePath(e){return e.endsWith("/")?e:`${e}/`}static replaceExtension(e,n=""){const s=e.lastIndexOf("."),i=s>-1?e.substring(0,s):e,o=ue.fileExtensionToString(n);return`${i}${o}`}static validateName(e){var o,r;const n=[".",".."],s=/[\\/\0]/g,i=new Map([["\0","null"]]);if(!e)throw new Ki("Name cannot be empty");if(n.includes(e))throw new Ki(`"${e}" is a reserved name`);if(s.test(e))throw new Ki(`Invalid characters in name: "${(r=(o=e.match(s))==null?void 0:o.reduce((l,a)=>l.includes(a)?l:[...l,a],[]).map(l=>i.has(l)?i.get(l):l).join('", "'))!=null?r:""}"`)}static reducePaths(e){const n=e.filter(s=>ue.isPath(s));return e.filter(s=>!n.some(i=>s!==i&&s.startsWith(i)))}static removeRoot(e,n){if(e.length===0)return n;if(!n.startsWith(e))throw new Error(`Filename ${n} does not start with expected root ${e}`);return n.substring(e.length)}static addRoot(e,n){return`${e}${n}`}}const Lt=X.module("FileList"),rd=t=>jn(t)?ue.makePath(t.filename):ue.getPath(t.filename),wc=26,Y1=500,Gh="item-list-scroll-pane",ld=t=>{var I;const{children:e,draggedItems:n,isDragInProgress:s,isDropTargetValid:i,isSelected:o,item:r,itemIndex:l,dropTargetItem:a,onDragStart:d,onDragOver:c,onDragEnd:u,onDrop:m}=t,p=(I=n==null?void 0:n.some(R=>R.id===r.id))!=null?I:!1,g=rd(r),f=s&&a?rd(a):null,b=s&&i&&jn(r)&&f===g,C=s&&i&&f===g,S=s&&!i&&f===g,v=X1(r),y=ue.getDepth(r.filename),E=Array(y).fill(null).map((R,N)=>h("span",{className:"file-list-depth-line"},N));return T("div",{className:z("d-flex w-100 align-items-center","file-list-item",{"is-dragged":p,"is-exact-drop-target":b,"is-in-drop-target":C,"is-invalid-drop-target":S,"is-selected":o}),onDragStart:R=>d(l,R),onDragOver:R=>c(l,R),onDragEnd:R=>u(l,R),onDrop:R=>m(l,R),draggable:!0,role:"presentation","aria-label":r.basename,children:[E," ",h(Z,{icon:v,className:"item-icon",fixedWidth:!0})," ",T("span",{className:"truncation-wrapper",children:[e!=null?e:r.basename,h(ze,{options:{placement:"left"},children:e!=null?e:r.basename})]})]})};function X1(t){if(jn(t))return t.isExpanded?EC:yC;switch(ue.getMimeType(t.basename)){case rg.PYTHON:return lb;default:return SC}}function Kh(t,e){if(t.length===0||e==null)throw new Error("No items to move");const n=rd(e);if(t.some(({filename:s})=>ue.getPath(s)===n))throw new Error("File already in the destination folder");if(t.some(s=>jn(s)&&n.startsWith(ue.makePath(s.filename))))throw new Error("Destination folder cannot be a child of a dragged folder");return{files:t,targetPath:n}}function j1(t){const{isMultiSelect:e=!1,table:n,onFocusChange:s=()=>{},onMove:i,onSelect:o,onSelectionChange:r=()=>{},renderItem:l=ld,rowHeight:a=wc,overscanCount:d=wn.DEFAULT_OVERSCAN}=t,[c,u]=w.exports.useState(()=>({items:[],offset:0,itemCount:0})),[m,p]=w.exports.useState({top:0,bottom:0}),[g,f]=w.exports.useState(),[b,C]=w.exports.useState(),[S,v]=w.exports.useState(),[y,E]=w.exports.useState([]),I=w.exports.useRef(null),R=w.exports.useRef(null),N=w.exports.useCallback(ee=>{if(ee.length===0||c==null)return[];const pe=[];for(let ve=0;ve<ee.length;ve+=1){const De=ee[ve];for(let qe=De[0];qe<=De[1];qe+=1)qe>=c.offset&&qe<c.offset+c.items.length&&pe.push(c.items[qe-c.offset])}return pe},[c]),F=w.exports.useCallback(ee=>{const pe=N([[ee,ee]]);if(pe.length>0)return pe[0]},[N]),B=w.exports.useCallback(()=>{const ee=bn.count(y);if(ee===0)return null;if(ee===1){const pe=y[0][0],ve=F(pe);if(ve!=null)return ve.filename}return`${ee} items`},[F,y]),U=w.exports.useCallback(ee=>{var pe;if(!(!b||!g)){Lt.debug("dropItems",b,"to",ee);try{const{files:ve,targetPath:De}=Kh(b,g);i(ve,De),ee!=null&&(E([[ee,ee]]),(pe=I.current)==null||pe.focusItem(ee))}catch(ve){Lt.error("Unable to complete move",ve)}}},[b,g,i]),x=w.exports.useCallback((ee,pe)=>{const ve=c.items[ee-c.offset];ve!==void 0&&(Lt.debug("handleItemClick",ve),o(ve,pe),jn(ve)&&(n==null||n.setExpanded(ve.filename,!ve.isExpanded)))},[c,o,n]),H=w.exports.useCallback((ee,pe)=>{var qe;Lt.debug2("handleItemDragStart",ee,y);let ve=y;bn.isSelected(y,ee)||(ve=[[ee,ee]],E(ve)),C(N(ve)),(qe=I.current)==null||qe.resetMouseState();const De=document.createElement("div");De.innerHTML=`<div class="dnd-placeholder-content">${B()}</div>`,De.className="file-list-dnd-placeholder",document.body.appendChild(De),pe.dataTransfer.setDragImage(De,0,0),pe.dataTransfer.effectAllowed="move",v(De)},[B,N,y]),A=w.exports.useCallback((ee,pe)=>{pe.preventDefault(),Lt.debug2("handleItemDragOver",pe),f(F(ee))},[F]),O=w.exports.useCallback((ee,pe)=>{Lt.debug("handleItemDragEnd",ee),S==null||S.remove(),C(void 0),f(void 0),v(void 0)},[S]),_=w.exports.useCallback((ee,pe)=>{U(ee)},[U]),k=w.exports.useCallback(()=>{Lt.debug2("handleItemDragExit"),f(void 0)},[]),V=w.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(Gh)&&(ee.preventDefault(),Lt.debug2("handleListDragOver",ee),f({type:"directory",filename:"/",basename:"/",id:"/"}))},[]),G=w.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(Gh)&&(Lt.debug("handleListDrop"),U())},[U]),q=w.exports.useCallback(ee=>{if(Lt.debug2("handleSelectionChange",ee),ee!==y){E(ee);const pe=N(ee);r(pe)}},[N,r,y]),Q=w.exports.useCallback(ee=>{if(Lt.debug2("handleFocusChange",ee),ee!=null){const[pe]=N([[ee,ee]]);s(pe)}else s()},[N,s]),ce=w.exports.useCallback((ee,pe)=>{Lt.debug("handleViewportChange",ee,pe),(ee!==m.top||pe!==m.bottom)&&p({top:ee,bottom:pe})},[m]),ae=w.exports.useMemo(()=>{if(!b||!g)return!1;try{return Kh(b,g),Lt.debug("handleValidateDropTarget true"),!0}catch{return Lt.debug("handleValidateDropTarget false"),!1}},[b,g]),{focusedPath:le}=t;w.exports.useEffect(()=>{le!==void 0&&(le==="/"?n.collapseAll():(n.setExpanded(le,!1),n.setExpanded(le,!0)))},[n,le]),w.exports.useEffect(function(){Lt.debug("updating table viewport",m),n==null||n.setViewport({top:Math.max(0,m.top-d),bottom:m.bottom+d})},[d,n,m]),w.exports.useEffect(function(){const pe=n.onUpdate(ve=>{u({items:ve.items.map(De=>({...De,itemName:De.basename})),offset:ve.offset,itemCount:n.size})});return()=>{pe()}},[n]),w.exports.useEffect(function(){if(g!=null&&jn(g)&&g.filename!=="/"){const pe=setTimeout(()=>{g.isExpanded||n==null||n.setExpanded(g.filename,!0)},Y1);return()=>clearTimeout(pe)}},[g,n]);const Ee=w.exports.useCallback(ee=>l({...ee,isDragInProgress:b!=null,dropTargetItem:g,draggedItems:b,isDropTargetValid:ae,onDragStart:H,onDragEnd:O,onDragOver:A,onDragExit:k,onDrop:_}),[O,k,A,H,_,b,g,ae,l]);return h("div",{ref:R,className:z("file-list",{"is-dragging":b!=null}),onDragOver:V,onDrop:G,children:h(wn,{ref:I,items:c.items,itemCount:c.itemCount,offset:c.offset,onFocusChange:Q,onSelect:x,onSelectionChange:q,onViewportChange:ce,selectedRanges:y,renderItem:Ee,rowHeight:a,isMultiSelect:e,isDragSelect:!1,isDeselectOnClick:!1})})}const Z1={name:"File Explorer",DELETE:Le.createAndAdd({id:"FILE_EXPLORER.DELETE",name:"Delete",shortcut:[me.DELETE],macShortcut:[he.CMD,me.BACKSPACE]}),RENAME:Le.createAndAdd({id:"FILE_EXPLORER.RENAME",name:"Rename",shortcut:[me.ENTER],macShortcut:[me.ENTER]})},qh={FILE_EXPLORER:Z1};const Yh=X.module("FileListItemEditor"),Q1=()=>Promise.resolve();function J1({item:t,onCancel:e,onSubmit:n,validate:s=Q1}){const i=w.exports.useRef(null),[o,r]=w.exports.useState(t.basename),[l,a]=w.exports.useState(),[d,c]=w.exports.useState(Promise.resolve()),u=w.exports.useCallback(()=>{var C;(C=i.current)==null||C.focus()},[i]),m=w.exports.useCallback(C=>C.stopPropagation(),[]),p=w.exports.useCallback(()=>{d.then(()=>{n(o)}).catch(C=>Yh.info("Unable to validate name",C))},[n,o,d]);w.exports.useEffect(function(){const S=ye.makeCancelable(s(o));return S.then(()=>a(void 0)).catch(v=>{ye.isCanceled(v)||a(v)}),c(S),()=>S.cancel()},[s,o]),w.exports.useEffect(function(){u()},[u]);const g=w.exports.useCallback(()=>{Yh.debug2("handleBlur"),p()},[p]),f=w.exports.useCallback(C=>{const{value:S}=C.target;r(S)},[]),b=w.exports.useCallback(C=>{C.stopPropagation();const{key:S}=C;switch(S){case"Enter":{p();break}case"Escape":{e();break}}},[e,p]);return T("div",{className:"file-list-item-editor",children:[h("input",{type:"text",className:z("form-control file-list-item-editor-input",{"is-invalid":l}),value:o,ref:i,onBlur:g,onKeyDown:b,onChange:f,onClick:m,onDoubleClick:m,onMouseDown:m}),l&&h("div",{className:"invalid-feedback",children:`${l}`})]})}function lg(t){const{isMultiSelect:e=!1,focusedPath:n,showContextMenu:s=!1,onCreateFile:i,onCreateFolder:o,onCopy:r,onDelete:l,onMove:a=()=>{},onRename:d,onSelect:c,onSelectionChange:u,table:m,rowHeight:p=wc,validateRename:g=()=>Promise.resolve()}=t,[f,b]=w.exports.useState(),[C,S]=w.exports.useState([]),[v,y]=w.exports.useState(),E=w.exports.useCallback(k=>{S(k),u==null||u(k)},[u]),I=w.exports.useCallback(k=>{y(k)},[]),R=w.exports.useCallback(()=>{v&&(r==null||r(v))},[v,r]),N=w.exports.useCallback(()=>{C.length>0&&(l==null||l(C))},[l,C]),F=w.exports.useCallback(()=>{i==null||i()},[i]),B=w.exports.useCallback(()=>{v&&(o==null||o(ue.getPath(v.filename)))},[v,o]),U=w.exports.useCallback(()=>{v&&b(v)},[v]),x=w.exports.useCallback(()=>{b(void 0)},[]),H=w.exports.useCallback(k=>{f&&(d==null||d(f,k),b(void 0))},[d,f]),A=w.exports.useMemo(()=>{if(f)return[];const k=[];return i&&k.push({title:"New File",description:"Create new file",action:F,group:oe.groups.medium}),o&&k.push({title:"New Folder",description:"Create new folder",action:B,group:oe.groups.medium}),r&&k.push({title:"Copy",description:"Copy",action:R,group:oe.groups.low,disabled:v==null||jn(v)}),l&&C.length>0&&k.push({title:"Delete",description:"Delete",shortcut:qh.FILE_EXPLORER.DELETE,action:N,group:oe.groups.low}),d&&k.push({title:"Rename",description:"Rename",shortcut:qh.FILE_EXPLORER.RENAME,action:U,group:oe.groups.low,disabled:v==null}),k},[R,N,F,B,U,v,r,i,o,l,d,C,f]),O=w.exports.useCallback(k=>f?g(f,k):Promise.reject(new Error("No rename item")),[f,g]),_=w.exports.useCallback(k=>{const{item:V}=k;return f&&f.filename===V.filename?ld({...k,children:h(J1,{item:V,validate:O,onSubmit:H,onCancel:x})}):ld(k)},[x,H,f,O]);return T("div",{className:"file-list-container",children:[m!=null&&h(j1,{onMove:a,onSelect:c,onSelectionChange:E,onFocusChange:I,renderItem:_,rowHeight:p,table:m,isMultiSelect:e,focusedPath:n}),s&&h(oe,{actions:A})]})}lg.displayName="FileListContainer";class ol extends Ki{constructor(e){super("Name already exists"),this.isExistingFile=!0,this.info=e}}class vc extends Error{constructor(){super("No file exists at the path specified"),this.isFileNotFound=!0}}const Zs=X.module("FileExplorer");function Tc(t){const{storage:e,isMultiSelect:n=!1,focusedPath:s,onDelete:i=()=>{},onRename:o=()=>{},onSelect:r,onSelectionChange:l,rowHeight:a=wc}=t,[d,c]=w.exports.useState([]),[u,m]=w.exports.useState();w.exports.useEffect(function(){let R;async function N(){Zs.debug("initTable"),R=ye.makeCancelable(e.getTable(),F=>F.close());try{m(await R)}catch(F){ye.isCanceled(F)||Zs.error("Unable to initialize table",F)}}return N(),()=>{R.cancel()}},[e]);const p=w.exports.useCallback(I=>{ye.isCanceled(I)||Zs.error(I)},[]),g=w.exports.useCallback(I=>{Zs.debug("handleDelete, pending confirmation",I),c(I)},[]),f=w.exports.useCallback(()=>{Zs.debug("handleDeleteConfirm",d),d.forEach(I=>e.deleteFile(jn(I)?ue.makePath(I.filename):I.filename)),i(d),c([])},[d,i,e]),b=w.exports.useCallback(()=>{Zs.debug("handleDeleteCancel"),c([])},[]),C=w.exports.useCallback((I,R)=>{ue.reducePaths(I.map(F=>jn(F)?ue.makePath(F.filename):F.filename)).forEach(F=>{const B=ue.isPath(F)?`${R}${ue.getBaseName(F.substring(0,F.length-1))}/`:`${R}${ue.getBaseName(F)}`;e.moveFile(F,B).then(()=>{o(F,B)}).catch(p)})},[p,o,e]),S=w.exports.useCallback((I,R)=>{let N=I.filename;const F=jn(I);F&&!N.endsWith("/")&&(N=`${N}/`);let B=`${ue.getParent(N)}${R}`;F&&!B.endsWith("/")&&(B=`${B}/`),Zs.debug2("handleRename",N,B),e.moveFile(N,B).catch(p),o(N,B)},[p,o,e]),v=w.exports.useCallback(async(I,R)=>{if(R===I.basename)return;ue.validateName(R);const N=`${ue.getPath(I.filename)}${R}`;try{const F=await e.info(N);throw new ol(F)}catch(F){if(!(F instanceof vc))throw F}},[e]),y=d.length>0,E=w.exports.useMemo(()=>d.length===1?`Are you sure you want to delete "${d[0].filename}"?`:"Are you sure you want to delete the selected files?",[d]);return T("div",{className:"file-explorer",children:[u&&h(lg,{isMultiSelect:n,focusedPath:s,showContextMenu:!0,onMove:C,onDelete:g,onRename:S,onSelect:r,onSelectionChange:l,rowHeight:a,table:u,validateRename:v}),h(ji,{isOpen:y,headerText:E,bodyText:"You cannot undo this action.",onCancel:b,onConfirm:f,confirmButtonText:"Delete"})]})}Tc.displayName="FileExplorer";const Qs=X.module("NewItemModal"),rl=class extends w.exports.PureComponent{constructor(t){super(t),this.inputRef=Y.createRef(),this.pending=new Ss,this.pathMap=new Map,this.isInitialLoad=!0,this.handleModalSubmit=this.handleModalSubmit.bind(this),this.handleModalOpened=this.handleModalOpened.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleChange=this.handleChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleValidationError=this.handleValidationError.bind(this),this.handleOverwriteCancel=this.handleOverwriteCancel.bind(this),this.handleOverwriteConfirm=this.handleOverwriteConfirm.bind(this),this.handleExtensionChangeCancel=this.handleExtensionChangeCancel.bind(this),this.handleExtensionChangeConfirm=this.handleExtensionChangeConfirm.bind(this),this.handleBreadcrumbSelect=this.handleBreadcrumbSelect.bind(this);const{defaultValue:e}=t,n=ue.hasPath(e)?ue.getPath(e):"/";this.state={isSubmitting:!1,path:n,prevExtension:ue.getExtension(e),showExtensionChangeModal:!1,showOverwriteModal:!1,value:ue.getBaseName(e)}}static getValidationMessage(t){return t instanceof ol&&t.info.type==="directory"?"Error: Cannot overwrite existing directory":`${t}`}static handleError(t){ye.isCanceled(t)||Qs.error(t)}componentDidUpdate(t,e){const{isOpen:n}=this.props,{isOpen:s}=t,{value:i,path:o}=this.state;!s&&n&&(this.resetValue(),this.isInitialLoad=!0),s&&n&&(!this.isInitialLoad&&(o!==e.path||i!==e.value)&&this.updateValidationStatus(o,i),this.isInitialLoad=!1)}componentWillUnmount(){this.pending.cancel(),this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableExistingItemPromise&&this.cancelableExistingItemPromise.cancel()}resetValue(){const{defaultValue:t}=this.props,e=ue.hasPath(t)?ue.getPath(t):"/";this.setState({path:e,value:ue.getBaseName(t),validationError:void 0,prevExtension:ue.getExtension(t),isSubmitting:!1})}getValidationPromise(t,e,n=!1){return this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableValidatePromise=ye.makeCancelable(this.validateName(t,e,n)),this.cancelableValidatePromise}async validateName(t,e,n){ue.validateName(e);const{defaultValue:s,storage:i}=this.props;if(n){const o=`${t}${e}`;if(o!==s)try{const r=await i.info(o);throw new ol(r)}catch(r){if(!(r instanceof vc))throw r}}return e}updateValidationStatus(t,e){this.getValidationPromise(t,e).then(()=>{this.setState({validationError:void 0})}).catch(this.handleValidationError).catch(rl.handleError)}handleModalOpened(){this.focusRenameInput()}handleModalSubmit(){this.submitModal()}handleChange(t){const{value:e}=t.target;this.setState({value:e})}handleSelect(t){if(Qs.debug("handleSelect",t),t.type==="directory")this.setState({path:ue.makePath(t.filename)});else{const e=t.basename,n=ue.getPath(t.filename);this.setState({value:e,path:n},()=>{this.focusRenameInput()})}}handleKeyDown(t){const{key:e}=t;switch(t.stopPropagation(),e){case"Enter":{t.preventDefault(),this.submitModal();break}case"Escape":{t.preventDefault();const{onCancel:n}=this.props;n();break}}}handleValidationError(t){if(!(t instanceof Ki))throw t;Qs.debug("Validation error",t),this.setState({validationError:t})}handleOverwriteCancel(){this.setState({showOverwriteModal:!1,isSubmitting:!1})}handleOverwriteConfirm(){this.setState({showOverwriteModal:!1});const{onSubmit:t}=this.props,{path:e,value:n}=this.state;Qs.debug("handleOverwriteConfirm",e,n),t(`${e}${n}`)}handleExtensionChangeCancel(){Qs.debug("handleExtensionChangeCancel"),this.setState(({value:t,prevExtension:e})=>{const n=ue.replaceExtension(t,e);return{showExtensionChangeModal:!1,value:n}}),this.submitModal(!0)}handleExtensionChangeConfirm(){Qs.debug("handleExtensionChangeConfirm"),this.setState({showExtensionChangeModal:!1}),this.submitModal(!0)}focusRenameInput(){const t=this.inputRef.current;if(t){const{type:e}=this.props,{value:n}=t,s=e==="directory"?n.length:n.lastIndexOf(".");t.focus(),t.setSelectionRange(0,s>0?s:n.length)}}submitModal(t=!1){this.setState(({prevExtension:e,value:n,path:s})=>{const{notifyOnExtensionChange:i,type:o}=this.props;Qs.debug("submitModal",e,n);const r=ue.getExtension(n);return i&&!t&&e!==null&&e!==r?{isSubmitting:!1,showExtensionChangeModal:!0,newExtension:r}:(this.getValidationPromise(s,n,!0).then(l=>{const{onSubmit:a}=this.props;a(`${s}${n}`)}).catch(l=>{if(l instanceof ol&&o!=="directory"&&l.info.type!=="directory"){this.setState({showOverwriteModal:!0});return}throw l}).catch(l=>{throw ye.isCanceled(l)&&this.setState({isSubmitting:!1}),l}).catch(this.handleValidationError).catch(rl.handleError),{isSubmitting:!0,showExtensionChangeModal:!1,newExtension:void 0})})}handleBreadcrumbSelect(t){this.setState({path:t})}renderPathButtons(t){const e=t.split("/");return e.pop(),e.map((n,s)=>{let i="";for(let o=0;o<s;o+=1)i+=`${e[o]}/`;return i+=`${n}/`,T(Y.Fragment,{children:[h(W,{kind:"ghost",className:"directory-breadcrumbs",onClick:()=>this.handleBreadcrumbSelect(i),"aria-label":s===0?"Home":void 0,icon:s===0?h(Z,{icon:IC,transform:"right-1.6"}):void 0,tooltip:s===0?"Home":void 0,children:n}),"/"]},i)})}render(){const{storage:t,isOpen:e,onCancel:n,placeholder:s,title:i,type:o}=this.props,{isSubmitting:r,path:l,showExtensionChangeModal:a,showOverwriteModal:d,validationError:c,value:u,prevExtension:m,newExtension:p}=this.state,g=o==="directory",f=ue.fileExtensionToString(m),b=ue.fileExtensionToString(p),C=g?"Create":"Save",S=g?"New folder name":"Save file as";return T(we,{children:[T(tr,{isOpen:e,toggle:n,onOpened:this.handleModalOpened,className:"modal-dialog-centered new-file-modal theme-bg-dark",children:[h(sr,{toggle:n,children:i}),h(nr,{children:h("form",{children:T("div",{className:"d-flex flex-column new-file-modal-content",children:[T("div",{className:"flex-grow-0 mb-4",children:[h("label",{htmlFor:"file-name-input",children:S}),h("input",{id:"file-name-input",type:"text",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:"false",className:z("form-control",{"is-invalid":c}),value:u,placeholder:s,ref:this.inputRef,onKeyDown:this.handleKeyDown,onChange:this.handleChange}),c&&h("div",{className:"invalid-feedback",children:rl.getValidationMessage(c)})]}),T("div",{className:"flex-grow-0",children:[h("label",{children:"Directory: /"}),this.renderPathButtons(l)]}),h("div",{className:"flex-grow-1 file-explorer-container",children:h(Tc,{onSelect:this.handleSelect,storage:t,focusedPath:l})})]})})}),T(Td,{children:[h(W,{kind:"secondary",onClick:n,children:"Cancel"}),h(W,{kind:"primary",disabled:r,onClick:this.handleModalSubmit,children:C})]})]}),h(ji,{isOpen:d,headerText:"Confirm overwrite",bodyText:"File with this name already exists, are you sure you want to overwrite it?",onCancel:this.handleOverwriteCancel,onConfirm:this.handleOverwriteConfirm,cancelButtonText:"Cancel",confirmButtonText:"Overwrite"}),h(ji,{isOpen:a,headerText:"Confirm extension change",bodyText:`Are you sure you want to change extension from "${f}" to "${b}"?`,onCancel:this.handleExtensionChangeCancel,onConfirm:this.handleExtensionChangeConfirm,cancelButtonText:`Keep "${f}"`,confirmButtonText:`Use "${b}"`})]})}};let aa=rl;aa.propTypes={isOpen:D.exports.bool,title:D.exports.string.isRequired,defaultValue:D.exports.string,type:D.exports.oneOf(["file","directory"]).isRequired,onSubmit:D.exports.func,onCancel:D.exports.func,placeholder:D.exports.string,storage:D.exports.shape({}).isRequired,notifyOnExtensionChange:D.exports.bool};aa.defaultProps={isOpen:!1,defaultValue:"/",notifyOnExtensionChange:!1,placeholder:"",onSubmit:t=>{},onCancel:()=>{}};function e2({createFile:t,createFolder:e,onSearchChange:n,defaultSearchText:s=""}){return T("div",{className:"file-explorer-toolbar",children:[T("div",{className:"file-explorer-toolbar-buttons",children:[h(W,{kind:"ghost",icon:Nu,tooltip:"New notebook",onClick:t,"aria-label":"New notebook"}),h(W,{kind:"ghost",icon:LC,tooltip:"New folder",onClick:e,"aria-label":"New folder"})]}),n&&h("div",{className:"file-explorer-toolbar-search",children:h(ju,{value:s,onChange:n,placeholder:"Search by name"})})]})}const Ai=X.module("FileExplorerPanel"),t2=(t,e)=>{const n=Fm(t),s=Si(t,e.localDashboardId),{session:i,config:o}=s!=null?s:{},r=o==null?void 0:o.type;return{fileStorage:n,language:r,session:i}},n2=It(t2,null,null,{forwardRef:!0});function s2(t){const e=t;return e!=null&&typeof e.button=="number"}const ad=class extends Y.Component{static handleError(t){Ai.error(t)}static isFocusEvent(t){return s2(t)?t.detail>=2:!0}constructor(t){super(t),this.handleFileSelect=this.handleFileSelect.bind(this),this.handleCreateFile=this.handleCreateFile.bind(this),this.handleCreateDirectory=this.handleCreateDirectory.bind(this),this.handleCreateDirectoryCancel=this.handleCreateDirectoryCancel.bind(this),this.handleCreateDirectorySubmit=this.handleCreateDirectorySubmit.bind(this),this.handleDelete=this.handleDelete.bind(this),this.handleRename=this.handleRename.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSelectionChange=this.handleSelectionChange.bind(this);const{session:e,language:n}=t;this.state={isShown:!1,language:n,session:e,showCreateFolder:!1,focusedFilePath:"/"}}componentDidMount(){this.isHidden()||this.setState({isShown:!0})}handleCreateFile(){const{glEventHub:t}=this.props,{session:e,language:n}=this.state,s={language:n,value:""};Ai.debug("handleCreateFile",e,n,s),t.emit(Pe.CREATE_NOTEBOOK,e,n,s)}handleCreateDirectory(t){this.setState({showCreateFolder:!0})}handleCreateDirectoryCancel(){Ai.debug("handleCreateDirectoryCancel"),this.setState({showCreateFolder:!1})}handleCreateDirectorySubmit(t){Ai.debug("handleCreateDirectorySubmit",t),this.setState({showCreateFolder:!1});const{fileStorage:e}=this.props;e.createDirectory(t).catch(ad.handleError)}handleDelete(t){const{glEventHub:e}=this.props;t.forEach(n=>{e.emit(Pe.CLOSE_FILE,{id:n.filename,itemName:n.filename})})}handleSelectionChange(t){let e="/";t.length===1&&(t[0].type==="directory"?e=ue.makePath(t[0].filename):e=ue.getPath(t[0].filename)),this.setState({focusedFilePath:e})}handleFileSelect(t,e){if(Ai.debug("fileSelect",t),t.type==="directory")return;const n=ad.isFocusEvent(e),s={id:t.filename,itemName:t.filename},{glEventHub:i}=this.props,{session:o,language:r}=this.state,l={value:null,language:r};i.emit(Pe.SELECT_NOTEBOOK,o,r,l,s,n)}handleRename(t,e){const{glEventHub:n}=this.props;Ai.debug("handleRename",t,e),n.emit(Pe.RENAME_FILE,t,e)}handleSessionOpened(t,{language:e}){this.setState({session:t,language:e})}handleSessionClosed(){this.setState({session:void 0,language:void 0})}handleShow(){this.setState({isShown:!0})}isHidden(){const{glContainer:t}=this.props,{isHidden:e}=t;return e}render(){const{fileStorage:t,glContainer:e,glEventHub:n}=this.props,{isShown:s,showCreateFolder:i,focusedFilePath:o}=this.state;return T(ts,{className:"file-explorer-panel",componentPanel:this,glContainer:e,glEventHub:n,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[h(e2,{createFile:this.handleCreateFile,createFolder:this.handleCreateDirectory}),s&&h(Tc,{isMultiSelect:!0,storage:t,onDelete:this.handleDelete,onRename:this.handleRename,onSelect:this.handleFileSelect,onSelectionChange:this.handleSelectionChange}),h(aa,{isOpen:i,type:"directory",title:"Create New Folder",storage:t,onSubmit:this.handleCreateDirectorySubmit,onCancel:this.handleCreateDirectoryCancel,defaultValue:o})]})}};let Ec=ad;Ec.COMPONENT="FileExplorerPanel";Ec.TITLE="File Explorer";const Rl=n2(Ec);const at=X.module("FilterSetManager"),i2="Enter name...",Xh="No Available Filter Sets";class Dl extends w.exports.Component{constructor(e){super(e),this.renameInputRef=Y.createRef(),this.dropdownRef=Y.createRef(),this.editDropdownRef=Y.createRef(),this.isRenamingExistingSet=Ce((n,s)=>s!==void 0&&n.some(({id:i})=>i===s.id)),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleEditDropdownChange=this.handleEditDropdownChange.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterApply=this.handleFilterApply.bind(this),this.handleCaptureNewSet=this.handleCaptureNewSet.bind(this),this.handleNameInputChange=this.handleNameInputChange.bind(this),this.handleNameInputKeyPress=this.handleNameInputKeyPress.bind(this),this.handleRenameConfirm=this.handleRenameConfirm.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRestoreFullStateChange=this.handleRestoreFullStateChange.bind(this),this.handleSetDelete=this.handleSetDelete.bind(this),this.handleSetEdit=this.handleSetEdit.bind(this),this.handleSetUpdate=this.handleSetUpdate.bind(this),this.state={editId:void 0,renameSet:void 0,nameInputValue:"",nameInputError:void 0,modifiedFilterSets:[],restoreFullState:!1}}static animateScreenFlash(){var n;const e=document.createElement("div");e.classList.add("screen-flash-overlay"),e.addEventListener("animationend",()=>{e.remove()}),(n=document.querySelector("body"))==null||n.appendChild(e)}componentDidMount(){const{isValueShown:e}=this.props;e?this.updateSelectedId():this.initSettingsScreen()}componentDidUpdate(e,n){const{isValueShown:s,filterSets:i}=this.props,{modifiedFilterSets:o}=this.state;if(e.isValueShown&&!s&&this.initSettingsScreen(),this.isNameInputScreen()&&!this.isNameInputScreen(n)&&this.focusRenameInput(),i!==e.filterSets)if(!s&&i.length>0&&e.filterSets.length===0&&o.length===0){const{onChange:r}=this.props;r({isValueShown:!0,selectedId:i[0].id})}else this.updateSelectedId()}initSettingsScreen(){const{filterSets:e,selectedId:n}=this.props;at.debug("initSettingsScreen",e,n),this.setState({modifiedFilterSets:[...e],editId:n})}updateSelectedId(){const{isValueShown:e,filterSets:n,selectedId:s,onChange:i}=this.props;if(at.debug("updateSelectedId",n,s),!!e&&!n.some(({id:o})=>o===s)){const o=n.length===0;i({isValueShown:!o,selectedId:o?void 0:n[0].id})}}handleEditDropdownChange(e){const{value:n}=e.target;this.setState({editId:n})}handleFilterChange(e){const{value:n}=e.target,{isValueShown:s,onChange:i}=this.props;this.applyFilterSet(n),i({isValueShown:s,selectedId:n})}handleFilterApply(){const{selectedId:e}=this.props;this.applyFilterSet(e)}handleSettingsCancel(){const{onChange:e,selectedId:n,filterSets:s}=this.props;this.setState({modifiedFilterSets:[]}),s.length>0&&e({isValueShown:!0,selectedId:n})}handleSettingsSave(){const{onChange:e,onUpdateSets:n}=this.props,{modifiedFilterSets:s,editId:i}=this.state;this.setState({modifiedFilterSets:[]}),at.debug("Update sets",s,i),n(s),s.length>0&&e({isValueShown:!0,selectedId:i})}handleCaptureNewSet(){const{getFilterState:e}=this.props;Dl.animateScreenFlash();const n=$e(),s=e(),i={id:n,title:"",panels:s};at.debug("handleSetCreate",i),this.setState({nameInputValue:"",nameInputError:void 0,renameSet:i})}handleRenameCancel(){this.setState({renameSet:void 0})}handleRestoreFullStateChange(e){this.setState({restoreFullState:e.target.value==="true"})}getNameError(e){var o;const{renameSet:n,modifiedFilterSets:s}=this.state,i=(o=e==null?void 0:e.trim())!=null?o:"";if(i.length===0)return at.debug("Name cannot be empty",i),"Name cannot be empty";if(n!==void 0&&s.some(({title:r,id:l})=>r===i&&l!==n.id))return at.debug("Set with this name already exists",i),"Set with this name already exists"}handleRenameConfirm(){var c;const{nameInputValue:e,renameSet:n,modifiedFilterSets:s,restoreFullState:i}=this.state;if(n===void 0){at.error("Renamed set undefined.");return}const o=this.getNameError(e);if(at.debug("handleRenameConfirm",e,o),o!==void 0){this.setState({nameInputError:o});return}const r=(c=e==null?void 0:e.trim())!=null?c:"",l={...n,title:r,restoreFullState:i},a=s.findIndex(({id:u})=>u===n.id),d=[...s];a>=0?(d[a]=l,at.debug("Renamed existing set",d)):(d.push(l),at.debug("Added new set to modified sets",d)),this.setState({editId:l.id,modifiedFilterSets:d,renameSet:void 0})}handleSetDelete(){this.setState(e=>{const{editId:n,modifiedFilterSets:s}=e,i=s.findIndex(({id:a})=>a===n);if(i<0)return at.error("Unable to find selected filterSet index",s,n),null;const o=s.filter(({id:a})=>a!==n),r=Math.max(0,Math.min(o.length-1,i-1)),l=o.length>0?o[r].id:void 0;return at.debug("Deleted selected set",n,s,o),at.debug("New selection",r,l),{modifiedFilterSets:o,editId:l}})}handleSetUpdate(){const{getFilterState:e}=this.props;Dl.animateScreenFlash();const n=e();this.setState(({modifiedFilterSets:s,editId:i})=>{if(i===void 0)return at.error("Filter for update not selected."),null;const o=[...s],r=o.findIndex(({id:l})=>l===i);return r<0?(at.error("Selected set for update not found."),null):(o[r]={...o[r],panels:n},at.debug("Update set",o,n),{modifiedFilterSets:o})})}handleSetEdit(){this.setState(({editId:e,modifiedFilterSets:n})=>{const s=n.find(({id:r})=>r===e);if(s===void 0)return at.error("Could not find selected set",e,n),null;const{title:i,restoreFullState:o=!1}=s;return{nameInputValue:i,nameInputError:void 0,renameSet:s,restoreFullState:o}})}handleSettingsClick(e){e.stopPropagation();const{onChange:n,selectedId:s}=this.props;n({isValueShown:!1,selectedId:s})}handleBackgroundClick(e){at.debug("handleBackgroundClick"),e.target!==this.dropdownRef.current&&this.focusInput()}handleNameInputChange(e){const{value:n}=e.target,s=this.getNameError(n);this.setState({nameInputValue:n,nameInputError:s})}handleNameInputKeyPress(e){const{key:n}=e;n==="Enter"&&(e.preventDefault(),this.handleRenameConfirm())}isNameInputScreen(e=this.state){const{renameSet:n}=e;return n!==void 0}applyFilterSet(e){const{onApply:n,filterSets:s}=this.props;if(e===void 0){at.debug("No filter selected");return}const i=s.find(({id:o})=>o===e);if(i===void 0){at.debug("Selected id not found in filterSets",e,s);return}at.debug("Apply filterSet",i),n(i)}focusInput(){var e;(e=this.dropdownRef.current)==null||e.focus()}focusRenameInput(){var e;(e=this.renameInputRef.current)==null||e.focus()}render(){const{nameInputValue:e,nameInputError:n,editId:s,renameSet:i,modifiedFilterSets:o,restoreFullState:r}=this.state,{isValueShown:l,filterSets:a,selectedId:d}=this.props,c=this.isNameInputScreen(),u=this.isRenamingExistingSet(o,i),m=o.length===0,p=!c&&m&&a.length===0,g=!c&&!p,f=T("div",{className:"fa-layers mr-3",children:[h(Z,{icon:Zi,mask:Wa,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:zs,className:"text-primary",transform:"shrink-6 down-5 right-7"})]}),b=T("div",{className:"fa-layers",children:[h(Z,{icon:Zi,mask:Wa,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:$a,transform:"shrink-1 down-5 right-7"})]});return h("div",{className:"filter-set-manager fill-parent-absolute",children:T(Ed,{className:"w-100 h-100",isFlipped:l,children:[h("div",{className:"filter-set-manager-settings-card fill-parent-absolute",children:T("div",{className:"filter-set-manager-card-content",children:[p&&T("div",{children:[h(W,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture filter set"}),h("div",{className:"py-3 text-muted small",children:"Takes a snapshot of the currently applied filters on all panels, allowing you to restore saved filter sets later."})]}),c&&T("div",{className:"d-flex flex-column justify-content-center","data-testid":"edit-filter-set-container",children:[T("div",{className:"form-group",children:[h("label",{children:u?"Edit set":"Name captured set"}),T("div",{className:"name-input-container",children:[h("input",{type:"text",className:"input-set-name form-control",placeholder:i2,value:e,ref:this.renameInputRef,onChange:this.handleNameInputChange,onKeyPress:this.handleNameInputKeyPress,spellCheck:"false"}),h(W,{"data-testid":"rename-confirm-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameConfirm,tooltip:"Save","test-id":"button-save",icon:Fu}),h(W,{"data-testid":"rename-cancel-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameCancel,tooltip:"Cancel",icon:CC})]}),n!==void 0&&h("div",{className:"error-message",children:n})]}),h("div",{className:"form-group",children:T(Vl,{onChange:this.handleRestoreFullStateChange,value:`${r}`,children:[h(Fn,{value:"false",children:"Restore only filters"}),h(Fn,{value:"true",children:"Restore full table state"})]})})]}),g&&T("div",{className:"filter-set-manager-settings-grid-1",children:[T("div",{className:"form-group",children:[h("label",{children:"Edit filter sets"}),T("div",{className:"filter-select-container",children:[T("select",{"data-testid":"settings-card-filter-select",ref:this.editDropdownRef,value:s!=null?s:"-1",className:"custom-select filter-value-select",onChange:this.handleEditDropdownChange,disabled:m,children:[m&&h("option",{value:"-1",disabled:!0,children:Xh}),o.map(({id:C,title:S})=>h("option",{value:C,children:S},C))]}),h(W,{kind:"ghost",onClick:this.handleSetUpdate,disabled:m,icon:b,tooltip:"Update"}),h(W,{kind:"ghost",onClick:this.handleSetEdit,disabled:m,icon:ir,tooltip:"Edit"}),h(W,{kind:"ghost",onClick:this.handleSetDelete,disabled:m,icon:hn,tooltip:"Delete"})]})]}),h("div",{children:h(W,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture new filter set"})}),T("div",{className:"py-3 text-right",children:[h(W,{kind:"secondary",onClick:this.handleSettingsCancel,children:"Cancel"}),"\xA0",h(W,{kind:"primary",onClick:this.handleSettingsSave,children:"Save"})]})]})]})},"front"),T("div",{className:"filter-set-manager-value-card fill-parent-absolute",onClick:this.handleBackgroundClick,children:[h("div",{className:"filter-set-manager-column",children:h("div",{className:"filter-set-manager-column-title",children:"Filter sets"})}),h("div",{className:"filter-set-manager-card-content",children:h("div",{className:"filter-set-manager-value-input",children:T("div",{className:"filter-select-container",children:[T("select",{"data-testid":"value-card-filter-select",ref:this.dropdownRef,value:d,className:"custom-select filter-value-select",onChange:this.handleFilterChange,children:[a.length===0&&h("option",{value:"-1",disabled:!0,children:Xh}),a.map(({id:C,title:S})=>h("option",{value:C,children:S},C))]}),h(W,{"data-testid":"filter-apply-button",kind:"ghost",onClick:this.handleFilterApply,icon:Md,tooltip:"Apply Filter Set"})]})})}),h("div",{className:"filter-set-manager-menu",children:h(W,{kind:"ghost",className:"btn btn-link btn-link-icon m-2 px-2",onClick:this.handleSettingsClick,tooltip:"Settings",icon:h(Z,{icon:or,transform:"grow-4"})})})]},"back")]})})}}function yc(t){var l,a;const{model:e,widgetName:n,glContainer:s,description:i}=t,o=((l=e==null?void 0:e.rowCount)!=null?l:0)-((a=e==null?void 0:e.pendingRowCount)!=null?a:0),r=e==null?void 0:e.displayString(o,"long");return h(ia,{widgetType:"Table",widgetName:n,glContainer:s,description:i,children:T("div",{className:"column-statistics-grid",children:[h("span",{className:"column-statistic-operation",children:"Number of Rows"}),h("span",{className:"column-statistic-value",children:r})]})})}yc.propTypes={glContainer:jd.Container.isRequired,widgetName:D.exports.string.isRequired,description:D.exports.string};yc.defaultProps={description:null};const Vn=X.module("IrisGridPanel"),o2=500,r2={IrisGrid:go,IrisGridTableModel:jp,ContextMenuRoot:Vu};class io extends w.exports.PureComponent{constructor(e){super(e),this.getGridInputFilters=Ce((s,i)=>te.getInputFiltersForColumns(s,i.filter(({value:o,excludePanelIds:r})=>{const l=ne.getIdFromPanel(this);return o!=null&&(r==null||l!=null&&!r.includes(l))}))),this.getAlwaysFetchColumns=Ce((s,i)=>{const o=ne.getIdFromPanel(this),r=new Set(i);for(let l=0;l<s.length;l+=1){const{start:a}=s[l];a!=null&&a.panelId===o&&r.add(a.columnName)}return[...r]}),this.getPluginContent=Ce((s,i,o,r,l)=>!i||!mi(i)||s==null||i.table==null?null:h("div",{className:"iris-grid-plugin",children:h(s,{ref:this.pluginRef,filter:this.handlePluginFilter,onFilter:this.handlePluginFilter,fetchColumns:this.handlePluginFetchColumns,onFetchColumns:this.handlePluginFetchColumns,table:i.table,user:o,panel:this,workspace:r,components:r2,onStateChange:this.handlePluginStateChange,pluginState:l})})),this.getDehydratedIrisGridPanelState=Ce((s,i,o,r,l)=>te.dehydrateIrisGridPanelState(s,{isSelectingPartition:i,partition:o,partitionColumn:r,advancedSettings:l})),this.getDehydratedIrisGridState=Ce((s,i,o,r,l,a,d,c,u,m,p,g,f,b,C,S,v,y,E,I,R)=>te.dehydrateIrisGridState(s,{advancedFilters:o,aggregationSettings:v,customColumnFormatMap:r,isFilterBarShown:l,metrics:{userColumnWidths:C,userRowHeights:S},quickFilters:a,customColumns:d,reverseType:c,rollupConfig:u,showSearchBar:m,searchValue:p,selectDistinctColumns:g,selectedSearchColumns:f,sorts:i,invertSearchColumns:b,pendingDataMap:y,frozenColumns:E,conditionalFormats:I,columnHeaderGroups:R})),this.getDehydratedGridState=Ce((s,i,o,r,l)=>te.dehydrateGridState(s,{isStuckToBottom:r,isStuckToRight:l,movedColumns:i,movedRows:o})),this.getCachedPanelState=Ce((s,i,o,r)=>({irisGridPanelState:s,irisGridState:i,gridState:o,pluginState:r})),this.savePanelState=je(()=>{const{irisGridState:s,gridState:i,pluginState:o}=this;P(s);const{onPanelStateUpdate:r}=this.props,{model:l,panelState:a,isSelectingPartition:d,partition:c,partitionColumn:u,advancedSettings:m}=this.state,{advancedFilters:p,aggregationSettings:g,customColumnFormatMap:f,isFilterBarShown:b,quickFilters:C,customColumns:S,reverseType:v,rollupConfig:y,showSearchBar:E,searchValue:I,selectDistinctColumns:R,selectedSearchColumns:N,sorts:F,invertSearchColumns:B,metrics:U,pendingDataMap:x,frozenColumns:H,conditionalFormats:A,columnHeaderGroups:O}=s;P(l),P(U);const{userColumnWidths:_,userRowHeights:k}=U;P(i);const{isStuckToBottom:V,isStuckToRight:G,movedColumns:q,movedRows:Q}=i,ce=this.getCachedPanelState(this.getDehydratedIrisGridPanelState(l,d,c,u,m),this.getDehydratedIrisGridState(l,F,p,f,b,C,S,v,y,E,I,R,N,B,_,k,g,x,H,A,O),this.getDehydratedGridState(l,q,Q,V,G),o);ce!==a&&(Vn.debug("Saving panel state",this,ce),this.setState({panelState:ce}),r==null||r(ce))},o2),this.handleAdvancedSettingsChange=this.handleAdvancedSettingsChange.bind(this),this.handleColumnsChanged=this.handleColumnsChanged.bind(this),this.handleTableChanged=this.handleTableChanged.bind(this),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleDataSelected=this.handleDataSelected.bind(this),this.handleError=this.handleError.bind(this),this.handleGridStateChange=this.handleGridStateChange.bind(this),this.handlePluginStateChange=this.handlePluginStateChange.bind(this),this.handlePartitionAppend=this.handlePartitionAppend.bind(this),this.handleCreateChart=this.handleCreateChart.bind(this),this.handleResize=this.handleResize.bind(this),this.handleShow=this.handleShow.bind(this),this.handleTabClicked=this.handleTabClicked.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.isColumnSelectionValid=this.isColumnSelectionValid.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handlePluginFilter=this.handlePluginFilter.bind(this),this.handlePluginFetchColumns=this.handlePluginFetchColumns.bind(this),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.irisGrid=Y.createRef(),this.pluginRef=Y.createRef();const{panelState:n}=e;this.pluginState=null,this.state={error:null,isDisconnected:!1,isLoaded:!1,isLoading:!0,isModelReady:!1,model:void 0,advancedFilters:new Map,aggregationSettings:{aggregations:[],showOnTop:!1},advancedSettings:new Map(Rp.DEFAULTS),customColumns:[],customColumnFormatMap:new Map,isFilterBarShown:!1,quickFilters:new Map,sorts:[],userColumnWidths:new Map,userRowHeights:new Map,reverseType:L.REVERSE_TYPE.NONE,movedColumns:[],movedRows:[],isSelectingPartition:!1,partition:void 0,partitionColumn:void 0,rollupConfig:void 0,showSearchBar:!1,searchValue:"",selectedSearchColumns:void 0,invertSearchColumns:!0,Plugin:void 0,pluginFilters:[],pluginFetchColumns:[],modelQueue:[],pendingDataMap:new Map,frozenColumns:void 0,panelState:n,irisGridStateOverrides:{},gridStateOverrides:{},isStuckToBottom:!1,isStuckToRight:!1,conditionalFormats:[],selectDistinctColumns:[]}}componentDidMount(){this.initModel()}componentDidUpdate(e,n){const{model:s}=this.state;s!==n.model&&(n.model!=null&&(this.stopModelListening(n.model),n.model.close()),s!=null&&this.startModelListening(s))}componentWillUnmount(){this.savePanelState.cancel(),this.modelPromise!=null&&(this.modelPromise.cancel(),this.modelPromise=void 0);const{model:e}=this.state;e&&(this.stopModelListening(e),e.close())}getTableName(){const{metadata:e}=this.props;return e.table}initModel(){this.setState({isModelReady:!1,isLoading:!0,error:null});const{makeModel:e}=this.props;this.modelPromise!=null&&this.modelPromise.cancel(),this.modelPromise=ye.makeCancelable(e(),n=>n.close()),this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError)}handleLoadSuccess(e){const n=e,{panelState:s,irisGridStateOverrides:i}=this.state,o=[];if(s!=null){const{irisGridState:r}=s,{aggregationSettings:l,customColumns:a,selectDistinctColumns:d=[],rollupConfig:c}={...r,...i};a.length>0&&o.push(u=>{u.customColumns=a}),c!=null&&c.columns.length>0&&o.push(u=>{u.rollupConfig=te.getModelRollupConfig(u.originalColumns,c,l)}),d.length>0&&o.push(u=>{u.selectDistinctColumns=d})}this.setState({model:n,modelQueue:o}),this.initModelQueue(n,o)}initModelQueue(e,n){const s=e;if(n.length===0){this.modelInitialized(s);return}const i=n.shift();Vn.debug("initModelQueue",i),i&&i(s),this.setState({modelQueue:n})}handleAdvancedSettingsChange(e,n){Vn.debug("handleAdvancedSettingsChange",e,n),this.setState(({advancedSettings:s})=>s.get(e)===n?null:{advancedSettings:new Map(s).set(e,n)})}handlePluginFilter(e){const{model:n}=this.state;P(n);const{columns:s,formatter:i}=n,o=te.getFiltersFromInputFilters(s,e,i.timeZone);this.setState({pluginFilters:o})}handlePluginFetchColumns(e){this.setState({pluginFetchColumns:e})}handleContextMenu(e){var n,s,i;return(i=(s=(n=this.pluginRef.current)==null?void 0:n.getMenu)==null?void 0:s.call(n,e))!=null?i:[]}isColumnSelectionValid(e){const{columnSelectionValidator:n}=this.props;return n&&e?n(this,e):!1}handleGridStateChange(e,n){this.irisGridState=e,this.gridState=n,this.setState({isLoaded:!0,isLoading:!1}),this.savePanelState();const{glEventHub:s,onStateChange:i}=this.props;s.emit(Et.STATE_CHANGED,this),i==null||i(e,n)}handlePluginStateChange(e){const{irisGridState:n,gridState:s}=this;this.pluginState=e,n!==null&&s!==null&&this.savePanelState()}handleColumnsChanged(e){const{isModelReady:n,model:s,modelQueue:i}=this.state;n?this.sendColumnsChange(e.detail):(P(s),this.initModelQueue(s,i))}handleTableChanged(e){Vn.debug("handleTableChanged",e);const{glEventHub:n}=this.props,{detail:s}=e;n.emit(Ae.TABLE_CHANGED,this,s)}handlePartitionAppend(e,n){const{glEventHub:s}=this.props,{name:i}=e,o=this.getTableName(),r=`${o} = ${o}.where("${i}=\`${n}\`")`;s.emit(bt.SEND_COMMAND,r,!1,!0)}handleCreateChart(e,n){this.savePanelState.flush(),this.setState(()=>null,()=>{const{glEventHub:s,inputFilters:i,metadata:o}=this.props,{table:r}=o,{panelState:l}=this.state,a=ne.getIdFromPanel(this);let d;l&&(d=te.extractTableSettings(l,i)),s.emit(Et.CREATE_CHART,{metadata:{settings:e,sourcePanelId:a,table:r,tableSettings:d},table:mi(n)?n.table:void 0})})}handleColumnSelected(e){const{glEventHub:n}=this.props;n.emit(Et.COLUMN_SELECTED,this,e)}handleDataSelected(e,n){const{glEventHub:s}=this.props;s.emit(Et.DATA_SELECTED,this,n)}handleResize(){this.updateGrid()}handleShow(){this.updateGrid()}handleTabClicked(){this.irisGrid.current&&this.irisGrid.current.focus()}handleError(e){Vn.error(e),this.setState({error:e,isLoading:!1})}handleDisconnect(){this.setState({error:new Error("Table disconnected"),isDisconnected:!0,isLoading:!1})}handleReconnect(){this.setState({isDisconnected:!1,error:null})}handleLoadError(e){ye.isCanceled(e)||this.handleError(e)}modelInitialized(e){const{glEventHub:n,loadPlugin:s}=this.props;if(this.modelPromise=void 0,this.loadPanelState(e),this.setState({isModelReady:!0}),mi(e)){const{table:i}=e,{pluginName:o}=i;if(o!==""&&s!=null&&o!=null){const r=s(o);this.setState({Plugin:r})}n.emit(Ae.TABLE_CHANGED,this,i)}this.sendColumnsChange(e.columns)}handleClearAllFilters(){const e=this.irisGrid.current,{isDisconnected:n}=this.state;e!=null&&!n&&e.clearAllFilters()}sendColumnsChange(e){Vn.debug2("sendColumnsChange",e);const{glEventHub:n}=this.props;n.emit(Ae.COLUMNS_CHANGED,this,e)}startModelListening(e){e.addEventListener(Se.EVENT.DISCONNECT,this.handleDisconnect),e.addEventListener(Se.EVENT.RECONNECT,this.handleReconnect),e.addEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.addEventListener(Se.EVENT.TABLE_CHANGED,this.handleTableChanged)}stopModelListening(e){e.removeEventListener(Se.EVENT.DISCONNECT,this.handleDisconnect),e.removeEventListener(Se.EVENT.RECONNECT,this.handleReconnect),e.removeEventListener(Se.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.removeEventListener(Se.EVENT.TABLE_CHANGED,this.handleTableChanged)}getCoordinateForColumn(e){var S,v,y;const{model:n}=this.state;if(!n)return null;const s=this.irisGrid.current,{gridWrapper:i}=s||{},o=(S=i==null?void 0:i.getBoundingClientRect())!=null?S:null;if(o==null||o.width<=0||o.height<=0)return null;P(s);const{metrics:r}=s.state;P(r);const{columnHeaderHeight:l,allColumnXs:a,allColumnWidths:d,right:c,columnHeaderMaxDepth:u}=r,m=n.getColumnIndexByName(e);P(m);const p=s.getVisibleColumn(m),g=(v=a.get(p))!=null?v:0,f=(y=d.get(p))!=null?y:0,b=Math.max(o.left,Math.min(p>c?o.right:o.left+g+f*.5,o.right)),C=o.top+l*u;return[b,C]}setFilterMap(e){const n=this.irisGrid.current;n!=null&&n.setFilterMap(e)}setAdvancedFilterMap(e){const n=this.irisGrid.current;n!=null&&n.setAdvancedFilterMap(e)}setFilters({quickFilters:e,advancedFilters:n}){Vn.debug("setFilters",e,n);const{model:s,isDisconnected:i}=this.state,o=this.irisGrid.current;if(o==null||i){Vn.debug("Ignore setFilters, model disconnected");return}P(s);const{columns:r,formatter:l}=s,a=te.changeFilterColumnNamesToIndexes(s.columns,e).filter(([c])=>s.isFilterable(c)),d=te.changeFilterColumnNamesToIndexes(s.columns,n).filter(([c])=>s.isFilterable(c));o.clearAllFilters(),o.setFilters({quickFilters:te.hydrateQuickFilters(r,a,l.timeZone),advancedFilters:te.hydrateAdvancedFilters(r,d,l.timeZone)})}setStateOverrides(e){Vn.debug("setStateOverrides",e);const{irisGridState:n,gridState:s}=e;this.setState({irisGridStateOverrides:n,gridStateOverrides:s},()=>{this.initModel()})}unsetFilterValue(){}loadPanelState(e){const{panelState:n,irisGridStateOverrides:s,gridStateOverrides:i}=this.state;if(n!=null)try{const{gridState:o,irisGridState:r,irisGridPanelState:l}=n,a={...s},{quickFilters:d,advancedFilters:c}=a;d&&(a.quickFilters=te.changeFilterColumnNamesToIndexes(e.columns,d)),c&&(a.advancedFilters=te.changeFilterColumnNamesToIndexes(e.columns,c));const{isSelectingPartition:u,partition:m,partitionColumn:p,advancedSettings:g}=te.hydrateIrisGridPanelState(e,l),{advancedFilters:f,customColumns:b,customColumnFormatMap:C,isFilterBarShown:S,quickFilters:v,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:R,userColumnWidths:N,userRowHeights:F,showSearchBar:B,searchValue:U,selectDistinctColumns:x,selectedSearchColumns:H,invertSearchColumns:A,pendingDataMap:O,frozenColumns:_,conditionalFormats:k,columnHeaderGroups:V}=te.hydrateIrisGridState(e,{...r,...a}),{isStuckToBottom:G,isStuckToRight:q,movedColumns:Q,movedRows:ce}=te.hydrateGridState(e,{...o,...i},r.customColumns);this.setState({advancedFilters:f,advancedSettings:g,conditionalFormats:k,customColumns:b,customColumnFormatMap:C,isFilterBarShown:S,isSelectingPartition:u,movedColumns:Q,movedRows:ce,partition:m,partitionColumn:p,quickFilters:v,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:R,userColumnWidths:N,userRowHeights:F,showSearchBar:B,searchValue:U,selectDistinctColumns:x,selectedSearchColumns:H,invertSearchColumns:A,pendingDataMap:O,frozenColumns:_,isStuckToBottom:G,isStuckToRight:q,columnHeaderGroups:V})}catch(o){Vn.error("loadPanelState failed to load panelState",n,o)}}updateGrid(){var n,s;const e=(s=(n=this.irisGrid.current)==null?void 0:n.grid)!=null?s:null;!e||e.handleResize()}render(){var mn,_t;const{children:e,glContainer:n,glEventHub:s,columnSelectionValidator:i,getDownloadWorker:o,inputFilters:r,links:l,metadata:a,panelState:d,user:c,workspace:u,settings:m,theme:p}=this.props,{advancedFilters:g,aggregationSettings:f,advancedSettings:b,conditionalFormats:C,customColumns:S,customColumnFormatMap:v,error:y,isDisconnected:E,isFilterBarShown:I,isSelectingPartition:R,isStuckToBottom:N,isStuckToRight:F,isLoaded:B,isLoading:U,isModelReady:x,model:H,movedColumns:A,movedRows:O,partition:_,partitionColumn:k,quickFilters:V,reverseType:G,rollupConfig:q,sorts:Q,userColumnWidths:ce,userRowHeights:ae,showSearchBar:le,searchValue:Ee,selectDistinctColumns:ee,selectedSearchColumns:pe,invertSearchColumns:ve,Plugin:De,pluginFilters:qe,pluginFetchColumns:dt,pendingDataMap:st,frozenColumns:On,columnHeaderGroups:Bt}=this.state,Me=y!=null?`Unable to open table. ${y}`:void 0,{table:ct}=a,lt=(mn=H==null?void 0:H.description)!=null?mn:void 0,Mt=(_t=d==null?void 0:d.pluginState)!=null?_t:null,$t=e!=null?e:this.getPluginContent(De,H,c,u,Mt),{permissions:Ln}=c,{canCopy:un,canDownloadCsv:vi}=Ln;return h(oa,{errorMessage:Me,isDisconnected:E,isLoading:U,isLoaded:B,className:"iris-grid-panel",glContainer:n,glEventHub:s,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleShow,onTabClicked:this.handleTabClicked,widgetName:ct,widgetType:"Table",description:lt,componentPanel:this,renderTabTooltip:()=>h(yc,{model:H,widgetName:ct,glContainer:n,description:lt}),children:x&&H&&h(go,{advancedFilters:g,aggregationSettings:f,advancedSettings:b,alwaysFetchColumns:this.getAlwaysFetchColumns(l,dt),columnAllowedCursor:"linker",columnNotAllowedCursor:"not-allowed",customColumns:S,customColumnFormatMap:v,columnSelectionValidator:this.isColumnSelectionValid,conditionalFormats:C,inputFilters:this.getGridInputFilters(H.columns,r),applyInputFiltersOnInit:d==null,isFilterBarShown:I,isSelectingColumn:i!=null,isSelectingPartition:R,isStuckToBottom:N,isStuckToRight:F,movedColumns:A,movedRows:O,partition:_,partitionColumn:k,quickFilters:V,reverseType:G,rollupConfig:q,settings:m,sorts:Q,userColumnWidths:ce,userRowHeights:ae,model:H,showSearchBar:le,searchValue:Ee,selectedSearchColumns:pe,selectDistinctColumns:ee,invertSearchColumns:ve,onColumnSelected:this.handleColumnSelected,onCreateChart:this.handleCreateChart,onDataSelected:this.handleDataSelected,onError:this.handleError,onPartitionAppend:this.handlePartitionAppend,onStateChange:this.handleGridStateChange,onContextMenu:this.handleContextMenu,onAdvancedSettingsChange:this.handleAdvancedSettingsChange,customFilters:qe,pendingDataMap:st,canCopy:un,canDownloadCsv:vi,ref:this.irisGrid,getDownloadWorker:o,frozenColumns:On,theme:p,columnHeaderGroups:Bt,children:$t})})}}io.defaultProps={onStateChange:()=>{},onPanelStateUpdate:()=>{}};io.displayName="IrisGridPanel";io.COMPONENT="IrisGridPanel";const l2=(t,{localDashboardId:e=Dn})=>({inputFilters:mc(t,e),links:fo(t,e),columnSelectionValidator:fc(t,e),user:Mm(t),workspace:Kl(t),settings:Rt(t)}),fi=It(l2,null,null,{forwardRef:!0})(io);const jh=X.module("InputFilter"),a2=150,dd=class extends w.exports.Component{constructor(t){super(t),this.getItemLabel=fe((i,o)=>{const{name:r,type:l}=i[o];if(o>0&&i[o-1].name===r||o<i.length-1&&i[o+1].name===r){const a=l.substring(l.lastIndexOf(".")+1);return`${r} (${a})`}return r}),this.sendUpdate=je(()=>{const{onChange:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i({column:o,isValueShown:l,value:r})},a2),this.handleColumnChange=this.handleColumnChange.bind(this),this.handleInputKeyPress=this.handleInputKeyPress.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.inputRef=Y.createRef();const{column:e,isValueShown:n,value:s}=t;this.state={column:e,selectedColumn:e,value:s,isValueShown:n}}componentDidUpdate(t,e){const{column:n}=this.props,{column:s,value:i,isValueShown:o}=this.state;n!==t.column&&this.setState({column:n,selectedColumn:n}),o!==void 0&&o&&o!==e.isValueShown&&this.focusInput(),(s!==e.column||i!==e.value||o!==e.isValueShown)&&this.sendUpdate()}componentWillUnmount(){this.sendUpdate.flush()}handleColumnChange(t){const{columns:e}=this.props,{value:n}=t.target,s=e[parseInt(n,10)];jh.debug2("handleColumnChange",s),this.setState({selectedColumn:s,value:void 0})}handleInputKeyPress(t){t.key==="Enter"&&(t.preventDefault(),t.stopPropagation(),this.setState(({value:e})=>e==null?{value:""}:null,()=>{this.sendUpdate(),this.sendUpdate.flush()}))}handleValueChange(t){const{value:e}=t.target;jh.debug2("handleValueChange",e),this.setState({value:e})}handleSettingsCancel(){const{column:t}=this.state;this.setState({selectedColumn:t,isValueShown:!0})}handleSettingsSave(){const{selectedColumn:t}=this.state;this.setState({column:t,isValueShown:!0})}handleSettingsClick(t){const{column:e}=this.state;this.setState({selectedColumn:e,isValueShown:!1}),t.stopPropagation()}handleBackgroundClick(t){t.target!==this.inputRef.current&&this.focusInput()}focusInput(){this.inputRef.current!==null&&(this.inputRef.current.select(),this.inputRef.current.focus())}clearFilter(){this.setState({value:""})}setFilterState({name:t,type:e,value:n,isValueShown:s}){const i=t!=null&&e!=null?{name:t,type:e}:void 0,o=s===void 0?{column:i,value:n}:{column:i,value:n,isValueShown:s};this.setState(o)}render(){const{columns:t}=this.props,{column:e,isValueShown:n,selectedColumn:s,value:i}=this.state,o=i==null||i.length===0?dd.PLACEHOLDER.length:i.length;let r=null;if(e!=null){const l=t.findIndex(a=>a.name===e.name&&a.type===e.type);r=l>=0?this.getItemLabel(t,l):e.name}return T(Ed,{className:"input-filter fill-parent-absolute",isFlipped:n!=null?n:!1,children:[h("div",{className:"input-filter-settings-card",children:T("div",{className:"input-filter-settings-content",children:[T("div",{className:"input-filter-settings-grid",children:[h("label",{children:"Filter Column"}),T("select",{value:t.findIndex(l=>l.name===(s==null?void 0:s.name)&&l.type===(s==null?void 0:s.type)),className:"custom-select",onChange:this.handleColumnChange,children:[t.map((l,a)=>h("option",{value:a,children:this.getItemLabel(t,a)},`${l.name}/${l.type}`)),t.length===0&&h("option",{value:"-1",disabled:!0,children:"No Available Columns"})]}),h("div",{className:"text-muted small",children:"Input filter control will apply its filter to all columns matching this name in this dashboard."})]}),T("div",{className:"input-filter-settings-buttons",children:[h(W,{kind:"secondary",onClick:this.handleSettingsCancel,disabled:e==null,children:"Cancel"}),h(W,{kind:"primary",className:"ml-2",onClick:this.handleSettingsSave,disabled:s==null,children:"Save"})]})]})}),T("div",{className:"input-filter-value-card",onClick:this.handleBackgroundClick,children:[h("div",{className:"input-filter-column",children:T("div",{className:"input-filter-column-title",children:[r," Filter"]})}),h("div",{className:"d-flex justify-content-center align-items-center h-100 w-100",children:h("div",{className:"input-filter-value-input d-flex flex-column justify-content-center",children:h("input",{type:"text",ref:this.inputRef,placeholder:dd.PLACEHOLDER,value:i!=null?i:"",onChange:this.handleValueChange,onKeyPress:this.handleInputKeyPress,style:{width:`${o+3}ch`},spellCheck:"false"})})}),h("div",{className:"input-filter-menu",children:h(W,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(Z,{icon:or,transform:"grow-4"}),tooltip:"Input Filter Settings"})})]})]})}};let Ic=dd;Ic.PLACEHOLDER="Enter value...";Ic.defaultProps={column:null,isValueShown:!1,value:null};const d2=250;class da extends w.exports.Component{constructor(e){super(e),this.handleChange=je(this.handleChange.bind(this),d2),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.inputFilterRef=Y.createRef();const{panelState:n}=e,{value:s,isValueShown:i=!1,name:o,type:r,timestamp:l}=n!=null?n:{};this.state={columns:[],column:o!=null&&r!=null?{name:o,type:r}:void 0,value:s,timestamp:l,isValueShown:i,wasFlipped:!1,skipUpdate:!1,panelState:n}}componentDidMount(){this.updateColumns();const{column:e,value:n,timestamp:s}=this.state;if(e!=null){const{name:i,type:o}=e;this.sendUpdate(i,o,n,s)}}componentDidUpdate(e){const{columns:n}=this.props;n!==e.columns&&this.updateColumns()}handleChange({column:e,isValueShown:n=!1,value:s}){let i,o;e!=null&&({name:i,type:o}=e);let r=!0,l=Date.now();this.setState(({panelState:a,timestamp:d,wasFlipped:c,skipUpdate:u})=>{var p;const m=a!=null&&n!==a.isValueShown&&i===a.name&&o===a.type&&s===a.value;return r=(p=!u&&n&&(!m||!c))!=null?p:!1,r||(l=d),{panelState:{isValueShown:n,name:i,type:o,value:s,timestamp:l},timestamp:l,wasFlipped:m,skipUpdate:!1}},()=>{r&&this.sendUpdate(i,o,s,l)})}handleClearAllFilters(){var e;(e=this.inputFilterRef.current)==null||e.clearFilter()}sendUpdate(e,n,s,i){const{glEventHub:o}=this.props;o.emit(Ae.FILTERS_CHANGED,this,{name:e,type:n,value:s,timestamp:i})}setPanelState(e,n=!1){var s;this.setState({skipUpdate:!n}),(s=this.inputFilterRef.current)==null||s.setFilterState(e)}updateColumns(){const{columns:e}=this.props;e!=null&&this.setState(n=>{const{column:s}=n;return s==null&&e.length>0?{columns:[...e],column:e[0]}:s!=null&&!e.find(({name:i,type:o})=>s.name===i&&s.type===o)?{columns:[...e,s]}:{columns:[...e]}})}render(){const{glContainer:e,glEventHub:n}=this.props,{column:s,columns:i,isValueShown:o,value:r}=this.state;return h(ts,{className:"iris-input-filter-panel",componentPanel:this,glContainer:e,glEventHub:n,onClearAllFilters:this.handleClearAllFilters,isClonable:!0,isRenamable:!0,children:h(Ic,{ref:this.inputFilterRef,column:s,columns:i,onChange:this.handleChange,isValueShown:o,value:r})})}}da.defaultProps={panelState:null};da.COMPONENT="InputFilterPanel";da.displayName="InputFilterPanel";const c2=(t,e)=>{const{localDashboardId:n}=e;return{columns:ng(t,n)}},qo=It(c2,null,null,{forwardRef:!0})(da);const Ft=X.module("FilterSetManagerPanel");function h2(t){return t.setPanelState!=null}const cd=class extends w.exports.Component{static changeFilterIndexesToColumnNames(t,e){return e.map(([n,s])=>{if(n>=t.columns.length)return null;const{name:i}=t.columns[n];return{name:i,filter:s}}).filter(n=>n!=null)}constructor(t){super(t),this.handleChange=this.handleChange.bind(this),this.handleFilterApply=this.handleFilterApply.bind(this),this.handleSetsUpdate=this.handleSetsUpdate.bind(this),this.handleGetFilterState=this.handleGetFilterState.bind(this);const{panelState:e,filterSets:n}=t,{selectedId:s=n.length>0?n[0].id:void 0,isValueShown:i=!1}=e!=null?e:{};this.state={selectedId:s,isValueShown:i,panelState:e}}getFilterState(){const{dashboardOpenedPanelMap:t}=this.props,e=[];return[...t.keys()].forEach(n=>{const s=t.get(n);if(s===void 0){Ft.error("Could not get panel",s);return}const i=ne.getComponentNameFromPanel(s),o=ne.getIdFromPanel(s);Ft.debug("Panel:",s,i);const{glContainer:r=null}=s.props;if(r==null){Ft.error("Could not get panel container",s);return}const l=ne.getComponentConfigFromContainer(r);if(l==null){Ft.error("Could not get component config from container",r);return}const a=ne.getPanelComponentState(l);if(a==null){Ft.debug(`Panel state is null ${o}`);return}switch(i){case ne.getComponentName(io):{let d;o!=null&&(d=this.getIrisGridPanelFilters(o,a)),d!=null&&e.push({panelId:o,type:i,state:d});break}case ne.getComponentName(qo):case ne.getComponentName(gi):{const{isValueShown:d,name:c,type:u,value:m}=a;e.push({panelId:o,type:i,state:{isValueShown:d,name:c,type:u,value:m}});break}}}),e}getIrisGridPanelFilters(t,e){const{panelTableMap:n}=this.props,s=n.get(t);if(s==null)return Ft.error(`Unable to get table for panel ${t}.`),null;const{irisGridState:i={advancedFilters:void 0,quickFilters:void 0},gridState:o={}}=e,{advancedFilters:r,quickFilters:l}=i;let a;r&&(a=cd.changeFilterIndexesToColumnNames(s,r));let d;return l&&(d=cd.changeFilterIndexesToColumnNames(s,l)),{irisGridState:{...i,advancedFilters:a,quickFilters:d},gridState:{...o}}}handleGetFilterState(){return this.getFilterState()}handleChange({isValueShown:t,selectedId:e}){Ft.debug("handleChange",t,e),this.setState({isValueShown:t,selectedId:e}),this.updatePanelState()}handleFilterApply(t){const{dashboardOpenedPanelMap:e}=this.props,{panels:n,restoreFullState:s=!1}=t;Ft.debug("Apply filters from filter set",t),n.forEach(({panelId:i,type:o,state:r})=>{if(i==null){Ft.debug("panel is null",i);return}if(!e.has(i)){Ft.debug("Ignore closed panel",i);return}Ft.debug("Apply panel filters",i,o,r);const l=e.get(i);switch(o){case ne.getComponentName(io):this.restoreIrisGridFilters(l,r,s);break;case ne.getComponentName(qo):case ne.getComponentName(gi):this.restoreInputFilterState(l,r);break}})}handleSetsUpdate(t){const{setDashboardFilterSets:e,localDashboardId:n}=this.props;Ft.debug("Saving updated sets",t),e(n,[...t])}updatePanelState(){this.setState(({selectedId:t,isValueShown:e})=>({panelState:{selectedId:t,isValueShown:e}}))}restoreIrisGridFilters(t,e,n){const{irisGridState:s={},advancedFilters:i=[],quickFilters:o=[]}=e,{advancedFilters:r=i,quickFilters:l=o}=s,{panelTableMap:a}=this.props,d=ne.getIdFromPanel(t);if(d==null){Ft.error("Panel Id is null.");return}if(a.get(d)==null){Ft.error(`Unable to get table for panel ${d}.`);return}Ft.debug("restoreIrisGridFilters",d,e,n),n?t.setStateOverrides(e):t.setFilters({quickFilters:l,advancedFilters:r})}restoreInputFilterState(t,e){const n={...e};delete n.isValueShown,Ft.debug("restoreInputFilterState",t,n),t&&h2(t)&&t.setPanelState(n)}render(){const{glContainer:t,glEventHub:e,filterSets:n}=this.props,{isValueShown:s,selectedId:i}=this.state;return h(ts,{className:"filter-set-manager-panel",componentPanel:this,glContainer:t,glEventHub:e,isClonable:!0,isRenamable:!0,children:h("div",{className:"input-filter-container h-100 w-100 container",children:h(Dl,{onChange:this.handleChange,onApply:this.handleFilterApply,onUpdateSets:this.handleSetsUpdate,isValueShown:s,filterSets:n,selectedId:i,getFilterState:this.handleGetFilterState})})})}};let Rc=cd;Rc.defaultProps={panelState:null};Rc.COMPONENT="FilterSetManagerPanel";const u2=(t,e)=>{const{localDashboardId:n}=e;return{filterSets:D1(t,n),dashboardOpenedPanelMap:fp(t,n),dashboardInputFilters:mc(t,n),panelTableMap:pc(t,n)}},La=It(u2,{setDashboardFilterSets:L1},null,{forwardRef:!0})(Rc);const Zh=X.module("LogPanel");class ca extends w.exports.PureComponent{constructor(e){super(e),this.handleResize=this.handleResize.bind(this),this.handleShow=this.handleShow.bind(this),this.handleHide=this.handleHide.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.isBottomVisible=!0,this.logView=null;const{session:n}=this.props;this.state={session:n}}handleResize(){this.updateDimensions()}handleShow(){this.updateDimensions(),this.logView&&(this.logView.triggerFindWidget(),this.isBottomVisible&&this.logView.scrollToBottom())}handleHide(){this.logView&&(this.isBottomVisible=this.logView.isBottomVisible())}handleSessionOpened(e){Zh.debug("Session opened",[e]),this.setState({session:e})}handleSessionClosed(e){Zh.debug("Session closed",e)}updateDimensions(){this.logView&&this.logView.updateDimensions()}render(){const{glContainer:e,glEventHub:n}=this.props,{session:s}=this.state;return T(ts,{componentPanel:this,glContainer:e,glEventHub:n,onResize:this.handleResize,onHide:this.handleHide,onShow:this.handleShow,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,children:[s==null&&h("div",{className:"log-panel-disconnected-message",children:"Waiting for session connection"}),s!=null&&h(co,{session:s,ref:i=>{this.logView=i}})]})}}ca.defaultProps={session:null};ca.COMPONENT="LogPanel";ca.TITLE="Log";const m2=(t,e)=>{var n;return{session:(n=Si(t,e.localDashboardId))==null?void 0:n.session}},Ml=It(m2,null,null,{forwardRef:!0})(ca);class ag extends w.exports.PureComponent{render(){const{isEditing:e,children:n,onDoubleClick:s}=this.props;return T("div",{className:"markdown-editor-container h-100 w-100",onDoubleClick:s,children:[h("div",{className:z("text-muted","edit-hint",{viewing:e===void 0||!e}),children:T("span",{children:["double-click to edit ",h(Z,{icon:ir})]})}),n]})}}ag.defaultProps={isEditing:!1};const p2=X.module("MarkdownStartPage");class dg extends w.exports.PureComponent{constructor(e){super(e),this.handleDeleteButtonClick=this.handleDeleteButtonClick.bind(this),this.handleDeleteModalClose=this.handleDeleteModalClose.bind(this),this.state={isDeleteModalShown:!1}}handleDeleteButtonClick(e){this.setState({isDeleteModalShown:!0,toBeDeleted:e})}handleDeleteModalClose(){this.setState({isDeleteModalShown:!1,toBeDeleted:void 0})}handleDeleteMarkdown(e){if(p2.debug("delete markdown: ",e),e!==void 0){const{onDelete:n}=this.props;n(e)}this.setState({isDeleteModalShown:!1,toBeDeleted:void 0})}render(){const{closedMarkdowns:e,onOpen:n,onCreate:s}=this.props,{isDeleteModalShown:i,toBeDeleted:o}=this.state;return h("div",{className:"markdown-panel-start-page h-100 w-100",children:T("div",{className:"markdown-panel-start-page-container",children:[T("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Start"}),h("div",{className:"list-item",children:h(W,{kind:"ghost",className:"title",onClick:s,children:"New Markdown Note"})})]}),T("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Recently Closed from Dashboard"}),e.map(r=>T("div",{className:"list-item",children:[h(W,{kind:"ghost",className:"title",onClick:()=>n(r),children:r.title}),h("button",{className:"btn-link icon",type:"button",onClick:()=>{this.handleDeleteButtonClick(r)},children:h(Z,{icon:hn})})]},r.id)),T(tr,{isOpen:i,toggle:this.handleDeleteModalClose,className:"modal-dialog-centered markdown-delete-modal theme-bg-light",children:[h(sr,{children:"Are you sure you want to permanently delete this note?"}),h(nr,{children:"You can't undo this action."}),T(Td,{children:[h(W,{kind:"secondary",onClick:this.handleDeleteModalClose,children:"Cancel"}),h(W,{kind:"danger",onClick:()=>{this.handleDeleteMarkdown(o)},children:"Delete"})]})]})]})]})})}}dg.defaultProps={closedMarkdowns:[],onOpen:()=>{},onCreate:()=>{},onDelete:()=>{}};const g2=t=>{const{children:e,className:n}=t,s=n!==void 0&&(n==null?void 0:n.startsWith("language-"))?n.substring(9):"plaintext";return h("pre",{children:h("code",{children:h(Wl,{language:s,children:Y.Children.map(e,i=>typeof i=="string"?i.trim():i)})})})};class cg extends w.exports.PureComponent{constructor(e){super(e),this.container=null}render(){const{isEditing:e,content:n,onEditorInitialized:s}=this.props;return h("div",{className:"markdown-editor-container",ref:i=>{this.container=i},children:e?h(zl,{settings:{language:"markdown",value:n,lineNumbers:"off"},onEditorInitialized:s}):h(Cu,{components:{code:g2},children:n})})}}cg.defaultProps={isEditing:!1,content:""};const Xr=X.module("MarkdownPanel");class Dc extends w.exports.Component{constructor(e){super(e),this.getClosedMarkdowns=Ce(i=>i.filter(o=>o.component==="MarkdownPanel").reverse()),this.handleContainerDoubleClick=this.handleContainerDoubleClick.bind(this),this.handleCreateMarkdown=this.handleCreateMarkdown.bind(this),this.handleDeleteMarkdown=this.handleDeleteMarkdown.bind(this),this.handleOpenMarkdown=this.handleOpenMarkdown.bind(this),this.handleEditorInitialized=this.handleEditorInitialized.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleEditorResize=this.handleEditorResize.bind(this);const{panelState:n}=e;let s=null;n!=null&&n.content!=null&&({content:s}=n),this.state={isStartPageShown:s==null,isEditing:!1,content:s,panelState:n},this.markdownEditor=null}setEditorPosition(e){var s,i;P(this.markdownEditor);const{container:n}=this.markdownEditor;if(this.editor&&n){const o=n.getBoundingClientRect().top,r=n.scrollTop,l=n.scrollHeight,a=(i=(s=this.editor.getModel())==null?void 0:s.getLineCount())!=null?i:0;let d=Math.round((r+e-o)/l*a);d>a&&(d=a),this.editor.revealLine(d),this.editor.setPosition({lineNumber:d,column:1}),this.editor.focus()}}handleContainerDoubleClick(e){const{isEditing:n}=this.state,s=e.clientY;n||this.setState({isEditing:!0},()=>{this.setEditorPosition(s)})}handleEditorInitialized(e){Xr.debug("Markdown Editor Initialized..."),this.editor=e}handleCreateMarkdown(){Xr.debug("create markdown..."),this.setState({isStartPageShown:!1,content:"",isEditing:!0,panelState:{content:""}},()=>{this.editor!=null&&this.editor.focus!=null&&this.editor.focus()})}handleOpenMarkdown(e){Xr.debug("open markdown...",e);const{glContainer:n,glEventHub:s}=this.props,i=ne.getComponentConfigFromContainer(n);s.emit(Re.REOPEN,e,i)}handleDeleteMarkdown(e){const{glEventHub:n}=this.props;n.emit(Re.DELETE,e)}handleEditorBlur(e){var i;Xr.debug("markdown content changed, saving...");const{isEditing:n}=this.state;if(!n||this.markdownEditor!=null&&this.markdownEditor.container!=null&&this.markdownEditor.container.contains(e.relatedTarget))return;const s=(i=this.editor)==null?void 0:i.getValue();this.setState({content:s,isEditing:!1,panelState:{content:s}})}handleEditorResize(){const{isEditing:e}=this.state;e&&this.editor&&this.editor.layout()}render(){const{glContainer:e,glEventHub:n,closedPanels:s}=this.props,{isEditing:i,isStartPageShown:o,content:r}=this.state,l=this.getClosedMarkdowns(s);return h(ts,{glContainer:e,glEventHub:n,className:"markdown-panel",componentPanel:this,onResize:this.handleEditorResize,onBlur:this.handleEditorBlur,isClonable:!0,isRenamable:!0,children:o?h(dg,{closedMarkdowns:l,onCreate:this.handleCreateMarkdown,onOpen:this.handleOpenMarkdown,onDelete:this.handleDeleteMarkdown}):h(ag,{isEditing:i,onDoubleClick:this.handleContainerDoubleClick,children:h(cg,{ref:a=>{this.markdownEditor=a},isEditing:i,content:r!=null?r:void 0,onEditorInitialized:this.handleEditorInitialized})})})}}Dc.defaultProps={panelState:null};Dc.COMPONENT="MarkdownPanel";const f2=(t,e)=>{const{localDashboardId:n}=e;return{closedPanels:mv(t,n)}},Oo=It(f2,null,null,{forwardRef:!0})(Dc);class hg extends w.exports.PureComponent{constructor(e){super(e),this.handleRunSelected=this.handleRunSelected.bind(this),this.renderCodeBlock=this.renderCodeBlock.bind(this),this.renderLink=this.renderLink.bind(this),this.commands=new Map,this.codeElements=new Map,this.editorScrollView=Y.createRef(),this.state={hasCode:!1,hasRunCode:!1,nextStartLine:null}}componentDidMount(){this.updateHasCode()}componentDidUpdate(){this.updateHasCode()}updateHasCode(){const{hasCode:e}=this.state;this.commands.size===0&&e?this.setState({hasCode:!1}):this.commands.size>0&&!e&&this.setState({hasCode:!0})}getNextStartLine(e){const n=[...this.commands.keys()],s=n.findIndex(i=>i===e)+1;return s>=n.length?null:n[s]}handleRunSelected(e){var c,u,m;e.preventDefault(),e.stopPropagation();const{nextStartLine:n}=this.state,s=[...this.commands.keys()],i=s.findIndex(p=>p===n||n==null);if(i<0)return;const o=s[i],r=this.commands.get(o),l=this.getNextStartLine(o),a=(c=this.codeElements.get(o))==null?void 0:c.current,d=(u=a==null?void 0:a.parentElement)==null?void 0:u.nextElementSibling;if(d!=null){const{offsetTop:p}=d,g=p;(m=this.editorScrollView.current)==null||m.scroll({top:g,left:0})}this.runCode(r),this.setState({nextStartLine:l})}runCode(e){const{onRunCode:n}=this.props;n(e),this.setState({hasRunCode:!0})}renderCodeBlock(e){const{children:n,className:s,inline:i,node:o}=e,{hasRunCode:r,nextStartLine:l}=this.state,{children:a,position:d}=o;P(d);const{start:c}=d,{line:u}=c,m=a[0].value,p=Y.createRef(),g=this.commands.size===0,f=l===u||g&&l==null&&!r,b=s!==void 0&&s.startsWith("language-")?s.substring(9):"plaintext";return i!=null&&i?h("code",{className:s,children:n}):(this.commands.set(u,m),this.codeElements.set(u,p),T("div",{className:z("markdown-notebook-code-block",{"is-selected":f}),ref:p,onClick:()=>{this.setState({nextStartLine:u})},role:"presentation",children:[h(W,{kind:"ghost",icon:ul,className:"btn-play-block",onClick:C=>{C.stopPropagation(),C.preventDefault(),this.runCode(m),this.setState({nextStartLine:u})},tooltip:"Run code"}),h("code",{children:h(Wl,{language:b,children:Y.Children.map(n,C=>typeof C=="string"?C.trim():C)})})]}))}renderLink(e){const{onLinkClick:n}=this.props,{href:s,children:i,target:o}=e;return h("a",{href:s,onClick:n,target:o,children:i})}render(){const{content:e,transformImageUri:n,transformLinkUri:s}=this.props,{hasCode:i,hasRunCode:o,nextStartLine:r}=this.state;return T("div",{className:"markdown-notebook",children:[h("div",{className:"markdown-notebook-toolbar",children:h(W,{className:z("btn-play-selected-cell",{flashing:i&&!o}),kind:"ghost",icon:ul,onClick:this.handleRunSelected,tooltip:"Run code and select next",disabled:o&&r==null||!i,children:"Run Selected Code"})}),h("div",{className:"markdown-notebook-content",ref:this.editorScrollView,children:h(Cu,{components:{code:this.renderCodeBlock,a:this.renderLink},linkTarget:"_blank",remarkPlugins:[hf],transformLinkUri:s,transformImageUri:n,includeElementIndex:!0,children:e})})]})}}hg.defaultProps={onRunCode:()=>{}};const Ue=X.module("NotebookPanel"),Qh=400,Bi=class extends w.exports.Component{constructor(t){super(t),this.getSettings=Ce((u,m)=>({...u,minimap:{enabled:m}})),this.getOverflowActions=Ce((u,m)=>[{title:"Find",icon:QC,action:this.handleFind,group:oe.groups.high,shortcut:Vt.NOTEBOOK.FIND,order:10},{title:"Show Minimap",icon:u?Xn:void 0,action:this.handleMinimapChange,group:oe.groups.medium,shortcut:Vt.NOTEBOOK.MINIMAP,order:20},{title:"Word Wrap",icon:m?Xn:void 0,action:this.handleWordWrapChange,group:oe.groups.medium,shortcut:Vt.NOTEBOOK.WORDWRAP,order:30}]),this.handleBlur=this.handleBlur.bind(this),this.handleCloseCancel=this.handleCloseCancel.bind(this),this.handleCloseDiscard=this.handleCloseDiscard.bind(this),this.handleCloseSave=this.handleCloseSave.bind(this),this.handleCopy=this.handleCopy.bind(this),this.handleEditorInitialized=this.handleEditorInitialized.bind(this),this.handleEditorWillDestroy=this.handleEditorWillDestroy.bind(this),this.handleEditorChange=this.handleEditorChange.bind(this),this.handleFind=this.handleFind.bind(this),this.handleMinimapChange=this.handleMinimapChange.bind(this),this.handleWordWrapChange=this.handleWordWrapChange.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleLinkClick=this.handleLinkClick.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.handlePanelTabClick=this.handlePanelTabClick.bind(this),this.handleRenameFile=this.handleRenameFile.bind(this),this.handleResize=this.handleResize.bind(this),this.handleRunCommand=this.handleRunCommand.bind(this),this.handleRunAll=this.handleRunAll.bind(this),this.handleRunSelected=this.handleRunSelected.bind(this),this.handleSave=this.handleSave.bind(this),this.handleSaveAsCancel=this.handleSaveAsCancel.bind(this),this.handleSaveAsSubmit=this.handleSaveAsSubmit.bind(this),this.handleSaveError=this.handleSaveError.bind(this),this.handleSaveSuccess=this.handleSaveSuccess.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleShowRename=this.handleShowRename.bind(this),this.handleTab=this.handleTab.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTransformLinkUri=this.handleTransformLinkUri.bind(this),this.getDropdownOverflowActions=this.getDropdownOverflowActions.bind(this),this.pending=new Ss,this.debouncedSavePanelState=je(this.savePanelState.bind(this),Qh),this.debouncedLoad=je(this.load.bind(this),Qh),this.notebook=null,this.tabTitleElement=null,this.tabInitOnce=!1,this.shouldPromptClose=!0;const{isDashboardActive:e,session:n,sessionLanguage:s,panelState:i}=t;let o={value:"",language:"",wordWrap:"off"},r=null,{isPreview:l}=t;i!=null&&({fileMetadata:r=r,isPreview:l=l,settings:o=o}=i);const a=r!=null&&ue.hasPath(r.itemName),c=a===!0&&o.value!=null||!a&&o.value!=null&&o.value.length>0?1:0;this.state={error:void 0,isDashboardActive:e,isFocused:!1,isLoading:!0,isLoaded:!1,isPreview:l,savedChangeCount:0,changeCount:c,fileMetadata:r,settings:o,session:n,sessionLanguage:s,panelState:{fileMetadata:r,settings:o},showCloseModal:!1,showSaveAsModal:!1,scriptCode:""},Ue.debug("constructor",t,this.state)}static handleError(t){ye.isCanceled(t)||Ue.error(t)}static languageFromFileName(t){switch(ue.getExtension(t).toLowerCase()){case"py":case"python":return"python";case"groovy":return"groovy";case"scala":return"scala";default:return null}}componentDidMount(){const{glContainer:t,glEventHub:e}=this.props,{tab:n}=t;n!=null&&this.initTab(n),this.initNotebookContent(),e.on(Pe.RENAME_FILE,this.handleRenameFile),t.on("tabClicked",this.handlePanelTabClick)}componentDidUpdate(t,e){const{isPreview:n,settings:s}=this.state,{wordWrap:i}=s,{defaultNotebookSettings:o}=this.props;n!==e.isPreview&&this.setPreviewStatus(),i!==e.settings.wordWrap&&(this.updateEditorWordWrap(),this.debouncedSavePanelState()),o.isMinimapEnabled!==t.defaultNotebookSettings.isMinimapEnabled&&this.updateEditorMinimap()}componentWillUnmount(){this.debouncedSavePanelState.flush(),this.pending.cancel();const{glContainer:t,glEventHub:e}=this.props,{fileMetadata:n,isPreview:s}=this.state;e.off(Pe.RENAME_FILE,this.handleRenameFile),t.off("tabClicked",this.handlePanelTabClick),e.emit(Pe.UNREGISTER_FILE,n,s)}initTab(t){this.tabInitOnce||(this.tabInitOnce=!0,this.initTabCloseOverride()),this.initTabClasses(t)}initTabCloseOverride(){const{glContainer:t}=this.props,e=t.close.bind(t);t.close=()=>{const{changeCount:n,savedChangeCount:s}=this.state;return n!==s&&this.shouldPromptClose?this.setState({showCloseModal:!0}):e(),!0}}initTabClasses(t){const e=t.element.get(0);P(e);const n=e.querySelector(".lm_title");this.tabTitleElement=n,n==null||n.classList.add("notebook-title"),this.setPreviewStatus()}getNotebookValue(){const{changeCount:t,savedChangeCount:e,settings:n}=this.state,{value:s}=n;if(t!==e&&this.notebook){const i=this.notebook.getValue();return i!=null?i:s}return s}initNotebookContent(){const{fileMetadata:t,settings:e,isPreview:n}=this.state;if(t&&t.id){Ue.debug("Init content from file"),this.registerFileMetadata(t,n),this.load();return}if(e.value!=null){Ue.debug("Use content passed in the settings prop"),this.handleLoadSuccess();return}this.handleLoadError(new Error("Missing file metadata"))}closeFileTabById(t){const{glEventHub:e}=this.props;e.emit(Pe.CLOSE_FILE,{id:t})}registerFileMetadata(t,e){const{glEventHub:n,metadata:s}=this.props,{id:i}=s;n.emit(Pe.REGISTER_FILE,i,t,e)}renameTab(t,e){const{glEventHub:n}=this.props;n.emit(Pe.RENAME,t,e)}load(){const{fileMetadata:t,settings:e}=this.state;P(t);const{id:n}=t,{fileStorage:s}=this.props;this.pending.add(s.loadFile(n)).then(i=>{var a;Ue.debug("Loaded file",i);const{filename:o}=i,{itemName:r}=this.state;if(o!==r){const{metadata:d}=this.props,{id:c}=d;this.renameTab(c,ue.getBaseName(o))}const l={...e,language:(a=Bi.languageFromFileName(o))!=null?a:""};e.value==null&&(l.value=i.content),e.wordWrap===void 0&&(e.wordWrap="off"),this.setState({fileMetadata:{id:o,itemName:o},settings:l}),this.debouncedSavePanelState()}).then(this.handleLoadSuccess).catch(this.handleLoadError)}save(){const{fileMetadata:t}=this.state;if(t&&ue.hasPath(t.itemName)){const e=this.getNotebookValue();return e!==void 0?(this.saveContent(t.itemName,e),!0):!1}return this.setState({showSaveAsModal:!0}),!1}saveContent(t,e){Ue.debug("saveContent",t,e),this.updateSavedChangeCount();const{fileStorage:n}=this.props;this.pending.add(n.saveFile({filename:t,content:e,basename:t})).then(this.handleSaveSuccess).catch(this.handleSaveError)}updateSavedChangeCount(){this.setState(({changeCount:t})=>({savedChangeCount:t}))}setPreviewStatus(){if(!this.tabTitleElement)return;const{isPreview:t}=this.state;Ue.debug("setPreviewStatus",this.tabTitleElement,t),t?this.tabTitleElement.classList.add("is-preview"):this.tabTitleElement.classList.remove("is-preview")}savePanelState(){this.setState(t=>{const{changeCount:e,savedChangeCount:n,fileMetadata:s,isPreview:i,settings:o}=t,r=this.getNotebookValue(),l=e!==n?r:void 0,a={...o,value:r},c={settings:{...o,value:l},fileMetadata:s,isPreview:i};return Ue.debug("Saving panel state",c),{settings:a,panelState:c}})}handleCloseDiscard(){this.shouldPromptClose=!1,this.setState({showCloseModal:!1});const{glContainer:t}=this.props;t.close()}handleCloseSave(){if(this.shouldPromptClose=!1,this.setState({showCloseModal:!1}),this.save()){const{glContainer:t}=this.props;t.close()}}handleCloseCancel(){this.shouldPromptClose=!0,this.setState({showCloseModal:!1})}handleCopy(){const{fileMetadata:t,settings:e}=this.state;P(t);const n=this.getNotebookValue(),{language:s}=e,{itemName:i}=t,o=ue.getCopyFileName(i);Ue.debug("handleCopy",t,i,o),this.createNotebook(o,s,n)}handleEditorInitialized(t){this.editor=t}handleEditorWillDestroy(){this.editor=void 0}handleEditorChange(t){Ue.debug2("handleEditorChanged",t),this.removePreviewStatus(),this.setState(e=>{const{changeCount:n,savedChangeCount:s}=e,{isUndoing:i,isRedoing:o}=t;return i?{changeCount:n-1,savedChangeCount:s}:!o&&n<s?{changeCount:n+1,savedChangeCount:0}:{changeCount:n+1,savedChangeCount:s}}),this.debouncedSavePanelState()}handleFind(){this.notebook&&this.notebook.toggleFind()}updateEditorMinimap(){if(this.editor){const{defaultNotebookSettings:t}=this.props;this.editor.updateOptions({minimap:{enabled:t.isMinimapEnabled}})}}handleMinimapChange(){const{settings:t,defaultNotebookSettings:e,saveSettings:n}=this.props,s={...t,defaultNotebookSettings:{isMinimapEnabled:!e.isMinimapEnabled}};n(s)}updateEditorWordWrap(){if(this.editor){const{settings:t}=this.state,{wordWrap:e}=t;this.editor.updateOptions({wordWrap:e})}}handleWordWrapChange(){this.editor&&this.setState(t=>{const{settings:e}=t,n=e.wordWrap==="on"?"off":"on";return{settings:{...e,wordWrap:n}}})}handleBlur(){Ue.debug("handleBlur"),this.setState({isFocused:!1})}handleFocus(){Ue.debug("handleFocus"),this.setState({isFocused:!0})}handleLinkClick(t){const{notebooksUrl:e,session:n,sessionLanguage:s}=this.props,{href:i}=t.currentTarget;if(!i||!i.startsWith(e))return;t.stopPropagation(),t.preventDefault();const o=`/${i.substring(e.length)}`.replace(/%20/g," ");if(o==="/"){Ue.debug("Ignoring invalid notebook link",o);return}Ue.debug("Notebook link clicked, opening",o);const{glEventHub:r}=this.props,l={value:null,language:s},a={id:o,itemName:o};r.emit(Pe.SELECT_NOTEBOOK,n,s,l,a)}handleLoadSuccess(){this.setState({error:void 0,isLoaded:!0,isLoading:!1})}handleLoadError(t){let e=t;ye.isCanceled(e)||(ye.isTimedOut(e)&&(e=new Error("File not found.")),Ue.error(e),this.setState({error:e,isLoading:!1}))}handleSave(){Ue.debug("handleSave"),this.save()}handleSaveSuccess(t){var i;const{fileStorage:e}=this.props,n={id:t.filename,itemName:t.filename},s=(i=Bi.languageFromFileName(t.filename))!=null?i:"";this.setState(o=>{const{fileMetadata:r}=o,l={...o.settings,language:s};return Ue.debug("handleSaveSuccess",n,r,l),r&&ue.hasPath(r.itemName)&&r.itemName!==n.itemName&&(Ue.debug("handleSaveSuccess deleting old file",r.itemName),e.deleteFile(r.itemName).catch(Bi.handleError)),{fileMetadata:n,settings:l,isPreview:!1}}),this.debouncedSavePanelState(),this.registerFileMetadata(n,!1)}handleSaveError(t){ye.isCanceled(t)||(this.setState({savedChangeCount:0}),Ue.error(t))}handleSaveAsCancel(){this.setState({showSaveAsModal:!1})}handleSaveAsSubmit(t){var i;Ue.debug("handleSaveAsSubmit",t);const{fileMetadata:e}=this.state;if(!e)return;const{itemName:n}=e,s=(i=this.getNotebookValue())!=null?i:"";if(this.setState({showSaveAsModal:!1}),ue.getBaseName(n)!==ue.getBaseName(t)){const{metadata:o}=this.props,{id:r}=o;this.renameTab(r,ue.getBaseName(t))}this.saveContent(t,s)}handleRenameFile(t,e){const{fileMetadata:n}=this.state;n&&n.id===t&&(this.setState({fileMetadata:{id:e,itemName:e}}),this.debouncedSavePanelState())}handleResize(){var t;(t=this.notebook)==null||t.updateDimensions()}handleRunCommand(t){this.runCommand(t)}handleRunAll(){var t;if(!this.notebook){Ue.error("Editor is not initialized.");return}this.runCommand((t=this.notebook.getValue())!=null?t:void 0)}handleRunSelected(){if(!this.notebook){Ue.error("Editor is not initialized.");return}this.runCommand(this.notebook.getSelectedCommand())}handleSessionOpened(t,{language:e}){this.setState({session:t,sessionLanguage:e})}handleSessionClosed(){this.setState({session:void 0,sessionLanguage:void 0})}handleShow(){var t;Ue.debug("handleShow"),(t=this.notebook)==null||t.updateDimensions()}handleShowRename(){this.setState({showSaveAsModal:!0})}handleTab(t){Ue.debug("NotebookPanel tab event",t),this.initTab(t)}handleTabFocus(...t){Ue.debug("handleTabFocus",...t);const{glContainer:e}=this.props;this.setState({isDashboardActive:!0}),this.notebook&&!e.isHidden&&this.notebook.updateDimensions()}handleTabBlur(){Ue.debug("handleTabBlur"),this.setState({isDashboardActive:!1})}handlePanelTabClick(){Ue.debug("handlePanelTabClick"),this.focus()}handleTransformLinkUri(t){const{notebooksUrl:e}=this.props,{fileMetadata:n}=this.state;if(t.endsWith("/"))return t;if(t.startsWith("/"))return`${e}${t.substring(1)}`;let s=n==null?void 0:n.itemName;if(s===void 0)return t;s.charAt(0)==="/"&&(s=s.substring(1));const i=new URL(s,e);return new URL(t,i).href}focus(){requestAnimationFrame(()=>{this.notebook&&this.notebook.focus()})}createNotebook(t,e,n=""){const{glEventHub:s}=this.props,{session:i,sessionLanguage:o,settings:r}=this.state,l={...r,language:e,value:n},a={id:null,itemName:t};Ue.debug("handleCreateNotebook",i,o,l,a),s.emit(Pe.CREATE_NOTEBOOK,i,o,l,a)}runCommand(t){if(t===void 0){Ue.debug("Ignoring empty command.");return}this.removePreviewStatus();const{glEventHub:e}=this.props;e.emit(bt.SEND_COMMAND,t,!1,!0)}removePreviewStatus(){this.setState(({isPreview:t})=>{if(t){const{fileMetadata:e}=this.state;return e&&this.registerFileMetadata(e,!1),{isPreview:!1}}return null})}getDropdownOverflowActions(){const{defaultNotebookSettings:t}=this.props,{settings:e}=this.state;return this.getOverflowActions(t.isMinimapEnabled,this.getSettings(e,t.isMinimapEnabled).wordWrap==="on")}render(){var _,k;const{fileStorage:t,glContainer:e,glContainer:{tab:n},glEventHub:s,defaultNotebookSettings:i}=this.props,{changeCount:o,savedChangeCount:r,error:l,isDashboardActive:a,isLoaded:d,isLoading:c,isPreview:u,fileMetadata:m,session:p,sessionLanguage:g,settings:f,showCloseModal:b,showSaveAsModal:C}=this.state,S=a&&!e.isHidden&&!u,v=(_=m==null?void 0:m.itemName)!=null?_:Bi.DEFAULT_NAME,y=v.endsWith(".md"),E=(m==null?void 0:m.id)!=null,I=this.getSettings(f,i.isMinimapEnabled),R=p!=null,N=g===I.language,F=!d||!R||!N,B=!d,U=[{action:this.handleSave,shortcut:Cs.SAVE},{action:this.handleMinimapChange,shortcut:Vt.NOTEBOOK.MINIMAP},{action:this.handleWordWrapChange,shortcut:Vt.NOTEBOOK.WORDWRAP}],x=gh.getDisabledRunTooltip(R,N,"Notebook extension","Run"),H=gh.getDisabledRunTooltip(R,N,"Notebook extension","Run Selected"),A=[{title:E?"Rename":"Save As\u2026",order:10,group:oe.groups.high,action:this.handleShowRename},{title:"Copy File",action:this.handleCopy,group:oe.groups.high,order:20}],O=n==null?void 0:n.element.find(".lm_title_before").get(0);return T(we,{children:[O&&Ci.createPortal(h("span",{className:z("editor-unsaved-indicator",{"is-unsaved":o!==r})}),O),T(ts,{className:"notebook-container",componentPanel:this,glContainer:e,glEventHub:s,onTab:this.handleTab,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,onTabBlur:this.handleTabBlur,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onFocus:this.handleFocus,onBlur:this.handleBlur,additionalActions:A,renderTabTooltip:()=>v,children:[!y&&T(we,{children:[T("div",{className:"notebook-toolbar",children:[T("span",{children:[h(W,{kind:"ghost",className:"btn-play",onClick:this.handleRunAll,disabled:F,icon:h(Z,{icon:ul,transform:"grow-4"}),tooltip:`Run ${Vt.NOTEBOOK.RUN.getDisplayText()}`,"aria-label":"Run"}),x!=null&&h(ze,{children:x})]}),T("span",{children:[h(W,{kind:"ghost",className:"btn-play",onClick:this.handleRunSelected,disabled:F,icon:h(Z,{icon:db,transform:"grow-4"}),tooltip:`Run Selected ${Vt.NOTEBOOK.RUN_SELECTED.getDisplayText()}`,"aria-label":"Run Selected"}),H!=null&&h(ze,{children:H})]}),h(W,{kind:"ghost",className:"mr-auto",disabled:B,onClick:this.handleSave,icon:Fu,tooltip:`Save ${Cs.SAVE.getDisplayText()}`,"aria-label":"Save"}),h(W,{kind:"ghost",className:"btn-overflow btn-link-icon",disabled:B,icon:Du,tooltip:"More Actions...",onClick:()=>{},children:h(Nn,{actions:this.getDropdownOverflowActions,popperOptions:Bi.POPPER_OPTIONS})})]}),h(bm,{isLoaded:d,isLoading:c,error:l,onChange:this.handleEditorChange,onRunCommand:this.handleRunCommand,session:p,sessionLanguage:g,onEditorInitialized:this.handleEditorInitialized,onEditorWillDestroy:this.handleEditorWillDestroy,settings:I,focusOnMount:S,ref:V=>{this.notebook=V}})]}),y&&h(hg,{content:(k=I.value)!=null?k:"",onLinkClick:this.handleLinkClick,onRunCode:this.handleRunCommand,transformImageUri:this.handleTransformLinkUri,transformLinkUri:this.handleTransformLinkUri}),h(aa,{isOpen:C,type:"file",defaultValue:v,title:E?"Rename":"Save file as",onSubmit:this.handleSaveAsSubmit,onCancel:this.handleSaveAsCancel,notifyOnExtensionChange:!0,storage:t}),h(ji,{isOpen:b,headerText:`Do you want to save the changes you made to ${v}?`,bodyText:"Your changes will be lost if you don't save them.",onCancel:this.handleCloseCancel,onDiscard:this.handleCloseDiscard,onConfirm:this.handleCloseSave,discardButtonText:"Discard Changes",confirmButtonText:"Save"}),h(oe,{actions:U})]})]})}};let pr=Bi;pr.COMPONENT="NotebookPanel";pr.POPPER_OPTIONS={placement:"bottom-end"};pr.DEFAULT_NAME="Untitled";pr.defaultProps={isDashboardActive:!0,isPreview:!1,session:null,sessionLanguage:null,defaultNotebookSettings:null};const C2=(t,e)=>{const n=Fm(t),s=Rt(t),i=v0(t),o=Si(t,e.localDashboardId),{session:r,config:l}=o!=null?o:{},{type:a}=l!=null?l:{};return{fileStorage:n,settings:s,defaultNotebookSettings:i,session:r,sessionLanguage:a}},Js=It(C2,{saveSettings:Yl},null,{forwardRef:!0})(pr);class Yo extends w.exports.Component{constructor(e){super(e),this.irisGridRef=Y.createRef(),this.buttonRef=Y.createRef(),this.handleReload=this.handleReload.bind(this),this.handleGridStateChange=this.handleGridStateChange.bind(this),this.handlePanelStateUpdate=this.handlePanelStateUpdate.bind(this);const{panelState:n}=e;this.state={shouldFocusGrid:!1,panelState:n}}handleReload(){var e,n;(e=this.irisGridRef.current)==null||e.initModel(),(n=this.buttonRef.current)==null||n.blur(),this.setState({shouldFocusGrid:!0})}handleGridStateChange(){var n,s,i;const{shouldFocusGrid:e}=this.state;e&&((i=(s=(n=this.irisGridRef.current)==null?void 0:n.irisGrid)==null?void 0:s.current)==null?void 0:i.grid)&&(this.irisGridRef.current.irisGrid.current.grid.focus(),this.setState({shouldFocusGrid:!1}))}handlePanelStateUpdate(e){this.setState({panelState:e})}render(){const{...e}=this.props;return h(fi,{ref:this.irisGridRef,onStateChange:this.handleGridStateChange,onPanelStateUpdate:this.handlePanelStateUpdate,...e,children:T(W,{ref:this.buttonRef,kind:"primary",className:"btn-pandas",onClick:this.handleReload,tooltip:"Click to refresh pandas dataframe, updates do not occur automatically.",children:["pandas dataframe",T("span",{children:[h(Z,{icon:Md,transform:"shrink-1",className:"mr-1"}),"Reload"]})]})})}}Yo.defaultProps={panelState:null};Yo.COMPONENT="PandasPanel";function b2(t){Ks(t);const{id:e,layout:n,registerComponent:s,hydrate:i}=t,o=w.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=$e.generate(),widget:d})=>{const{name:c,type:u}=d;if(u!==dh.VariableType.FIGURE)return;const m={name:c,figure:c},p=()=>l().then(b=>eo.makeModel(void 0,b)),g={type:"react-component",component:Xi.COMPONENT,props:{localDashboardId:e,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=n;ne.openComponent({root:f,config:g,dragEvent:r})},[e,n]);return w.exports.useEffect(function(){const l=[s(Xi.COMPONENT,Xi,i)];return()=>{l.forEach(a=>a())}},[i,s]),Ke(n.eventHub,Re.OPEN,o),null}function S2(t){Ks(t);const{id:e,layout:n}=t,s=w.exports.useCallback(({metadata:i,panelId:o=$e.generate(),table:r})=>{const{settings:l}=i,a=()=>eo.makeModelFromSettings(l,r),d=xe.titleFromSettings(l),c={type:"react-component",component:Xi.COMPONENT,props:{localDashboardId:e,id:o,metadata:i,makeModel:a},title:d,id:o},{root:u}=n;ne.openComponent({root:u,config:c})},[e,n]);return Ke(n.eventHub,Et.CREATE_CHART,s),null}const ht=X.module("ConsolePlugin");function Jh(t){return t.notebook!==void 0}function w2(t){Ks(t)}function v2(t){w2(t);const{id:e,hydrateConsole:n,layout:s,panelManager:i,registerComponent:o,notebooksUrl:r}=t,l=w.exports.useRef(0),[a]=w.exports.useState(new Map),[d]=w.exports.useState(new Map),c=Sd(),u=w.exports.useCallback(()=>i.getLastUsedPanelOfType(Wi),[i]),m=w.exports.useCallback((O,_=!0,k=!0)=>{if(!(O&&O.trim()))ht.info("Ignoring empty code");else{const G=u();if(!G||!(G instanceof Wi.WrappedComponent)){ht.error("Console panel not found");return}ht.debug("Send command: ",O,_,k),G.addCommand(O,_,k)}},[u]),p=w.exports.useCallback(O=>{c(O1(e,O))},[c,e]),g=w.exports.useCallback(({language:O})=>{const _=O==="python"?"py":O;let k=null;return _==null?(ht.debug("No extension for language",O),k=`Untitled-${l.current}`):k=`Untitled-${l.current}.${_}`,l.current+=1,k},[]),f=w.exports.useCallback((O,_=!0)=>{const{id:k}=O;return k!=null&&a.has(k)?a.get(k):k!=null&&d.has(k)?d.get(k):_?$e.generate():null},[a,d]),b=w.exports.useCallback((O,_)=>{ne.renameComponent(s.root,{id:O},_)},[s.root]),C=w.exports.useCallback((O,_)=>{ht.debug("Rename file panel",O,_);let k;if(a.has(O)&&(k=a.get(O),a.delete(O),k!=null&&a.set(_,k)),d.has(O)&&(k=d.get(O),d.delete(O),k!=null&&d.set(_,k)),k===void 0){ht.debug2(`File ${O} isn't open, no need to rename the tab`);return}b(k,ue.getBaseName(_))},[a,d,b]),S=w.exports.useCallback(O=>{const _=f(O,!1);if(_==null){ht.error("Could not find panel id for file metadata",O);return}ne.activateTab(s.root,{id:_})},[f,s.root]),v=w.exports.useCallback((O,_,k)=>{if(ht.debug("registerFilePanel",O,_,k),_==null||_.id==null){ht.debug("Ignore empty file id",_);return}const{id:V}=_;if(k){d.set(V,O);return}if(a.has(V)){const G=a.get(V);if(O===G){ht.debug(`Update tab title for file ${V}`);const{itemName:q}=_;C(V,ue.getBaseName(q))}else ht.error(`File ${V} already associated with a different tab ${G}`);return}a.set(V,O),d.has(V)&&d.delete(V)},[a,d,C]),y=w.exports.useCallback((O,_)=>{if(ht.debug("unregisterFileTab",O,_),O==null||O.id==null){ht.debug("Ignore empty file id",O);return}const{id:k}=O;if(_){d.delete(k);return}a.delete(k)},[a,d]),E=w.exports.useCallback(O=>{ht.debug("closeFilePanel",O);const{id:_}=O;let k=null,V=!1;if(a.has(_))k=a.get(_);else if(d.has(_))k=d.get(_),V=!0;else{ht.debug(`File ${_} isn't open, ignore close event`);return}y(O,V),ne.closeComponent(s.root,{id:k})},[s.root,a,d,y]),I=w.exports.useCallback(O=>{const{itemName:_}=O;return ue.getBaseName(_)},[]),R=w.exports.useCallback(O=>{const{id:_}=O;return ht.debug("fileIsOpen",O,_,a),_!=null&&a.has(_)},[a]),N=w.exports.useCallback(O=>{const{id:_}=O;return ht.debug("fileIsOpenAsPreview",O,_,d),_!=null&&d.has(_)},[d]),F=w.exports.useCallback(O=>{if(O==null)return;const _=i.getOpenedPanelById(O);_&&Jh(_)&&_.focus()},[i]),B=w.exports.useCallback(({id:O,settings:_,fileMetadata:k,session:V,sessionLanguage:G,isPreview:q=!1})=>{const Q={settings:_,fileMetadata:k},ce=I(k);return{type:"react-component",component:Js.COMPONENT,isFocusOnShow:!1,props:{localDashboardId:e,metadata:{id:O},session:V,sessionLanguage:G,panelState:Q,isPreview:q,notebooksUrl:r},title:ce,id:O}},[I,e,r]),U=w.exports.useCallback((O,_,k,V={id:null,itemName:g(k)})=>{const G=f(V);if(R(V)&&G!=null){ht.debug("File is already open, focus panel"),S(V),F(G);return}const q=ne.getStackForComponentTypes(s.root,[Js.COMPONENT]),Q=B({id:G,settings:k,fileMetadata:V,session:O,sessionLanguage:_});ht.debug("createNotebook",Q,a),ne.openComponentInStack(q,Q)},[R,F,g,f,s.root,B,a,S]),x=w.exports.useCallback((O,_,k,V,G=!1)=>{ht.debug("selectNotebook",V,G);const q=R(V),Q=N(V);if(q){if(S(V),G){const ee=f(V);F(ee)}return}if(Q&&!G){S(V);return}const[ce]=Array.from(d.values());let ae=null,le=null;ce!=null&&(ae=ce,le=ne.getStackForConfig(s.root,{component:Js.COMPONENT,id:ae})),le==null&&(ae=f(V),le=ne.getStackForComponentTypes(s.root,[Js.COMPONENT]));const Ee=B({id:ae,settings:k,fileMetadata:V,session:O,sessionLanguage:_,isPreview:!G});ne.openComponentInStack(le,Ee),G&&F(ae)},[S,R,N,F,f,s.root,B,d]),H=w.exports.useCallback((O,_,k={},V=!0)=>{const G=i.getLastUsedPanelOfType(Js);G&&Jh(G)?k!=null&&k.value!=null&&G.notebook!=null&&G.notebook.append(k.value):V&&U(O,_,k)},[U,i]),A=w.exports.useCallback((O,_)=>td.hydrate({...O,notebooksUrl:r},_),[r]);return w.exports.useEffect(function(){const _=[o(Wi.COMPONENT,Wi,n),o(Il.COMPONENT,Il),o(Rl.COMPONENT,Rl),o(Ml.COMPONENT,Ml),o(Js.COMPONENT,Js,A)];return()=>{_.forEach(k=>k())}},[o,n,A]),Ke(s.eventHub,bt.SEND_COMMAND,m),Ke(s.eventHub,bt.SETTINGS_CHANGED,p),Ke(s.eventHub,Pe.CLOSE_FILE,E),Ke(s.eventHub,Pe.CREATE_NOTEBOOK,U),Ke(s.eventHub,Pe.SELECT_NOTEBOOK,x),Ke(s.eventHub,Pe.RENAME,b),Ke(s.eventHub,Pe.RENAME_FILE,C),Ke(s.eventHub,Pe.SEND_TO_NOTEBOOK,H),Ke(s.eventHub,Pe.REGISTER_FILE,v),Ke(s.eventHub,Pe.UNREGISTER_FILE,y),null}const Lo=X.module("FilterPlugin");function eu(t,e){return t.concat(e)}function T2(t){Ks(t);const{id:e,layout:n,registerComponent:s}=t,i=Sd(),[o]=w.exports.useState(()=>new Map),[r]=w.exports.useState(()=>new Map),[l]=w.exports.useState(()=>new Map),a=w.exports.useCallback(()=>{const b=Array.from(o.values()).reduce(eu,[]).sort((v,y)=>{const E=nn.toLower(v.name),I=nn.toLower(y.name);if(E!==I)return E>I?1:-1;const R=nn.toLower(v.type),N=nn.toLower(y.type);return R!==N?R>N?1:-1:0}).reduce((v,y)=>((v.length===0||nn.toLower(v[v.length-1].name)!==nn.toLower(y.name)||nn.toLower(v[v.length-1].type)!==nn.toLower(y.type))&&v.push(y),v),[]),C=Array.from(r.values()).reduce(eu,[]).sort((v,y)=>v.timestamp-y.timestamp),S=new Map(l);Lo.debug("sendUpdate",{columns:b,filters:C,tableMap:S}),i(es(e,{columns:b,filters:C,tableMap:S}))},[i,e,o,r,l]),d=w.exports.useCallback((b,C)=>{Lo.debug2("handleColumnsChanged",b,C),o.set(b,[].concat(C)),a()},[o,a]),c=w.exports.useCallback((b,C)=>{Lo.debug2("handleFiltersChanged",b,C),r.set(b,[].concat(C)),a()},[r,a]),u=w.exports.useCallback((b,C)=>{Lo.debug2("handleTableChanged",b,C),l.set(ne.getIdFromPanel(b),C),a()},[l,a]),m=w.exports.useCallback(b=>{Lo.debug2("handlePanelUnmount",b),o.delete(b),r.delete(b),l.delete(ne.getIdFromPanel(b)),a()},[o,r,l,a]),p=w.exports.useCallback(({title:b="DropdownFilter",metadata:C={},panelState:S=null,id:v=$e.generate(),focusElement:y=ne.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const R={type:"react-component",component:gi.COMPONENT,props:{id:v,metadata:C,panelState:S,localDashboardId:e},title:b,id:v},{root:N}=n;ne.openComponent({root:N,config:R,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),g=w.exports.useCallback(({title:b="InputFilter",metadata:C={},panelState:S=null,id:v=$e.generate(),focusElement:y=ne.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const R={type:"react-component",component:qo.COMPONENT,props:{id:v,metadata:C,panelState:S,localDashboardId:e},title:b,id:v},{root:N}=n;ne.openComponent({root:N,config:R,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),f=w.exports.useCallback(({title:b="FilterSets",metadata:C={},panelState:S=null,id:v=$e.generate(),focusElement:y=ne.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const R={type:"react-component",component:La.COMPONENT,props:{id:v,metadata:C,panelState:S,localDashboardId:e},title:b,id:v},{root:N}=n;ne.openComponent({root:N,config:R,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]);return w.exports.useEffect(function(){const C=[s(gi.COMPONENT,gi),s(qo.COMPONENT,qo),s(La.COMPONENT,La)];return()=>{C.forEach(S=>S())}},[s]),Ke(n.eventHub,Ae.COLUMNS_CHANGED,d),Ke(n.eventHub,Ae.FILTERS_CHANGED,c),Ke(n.eventHub,Ae.TABLE_CHANGED,u),Ke(n.eventHub,Ae.OPEN_DROPDOWN,p),Ke(n.eventHub,Ae.OPEN_INPUT,g),Ke(n.eventHub,Ae.OPEN_FILTER_SET_MANAGER,f),Ke(n.eventHub,Re.UNMOUNT,m),null}const E2=[dh.VariableType.TABLE,dh.VariableType.TREETABLE,dh.VariableType.HIERARCHICALTABLE];function y2(t){Ks(t);const{getDownloadWorker:e,loadPlugin:n,id:s,layout:i,registerComponent:o,hydrate:r,theme:l}=t,a=w.exports.useCallback(({dragEvent:d,fetch:c,panelId:u=$e.generate(),widget:m})=>{const{name:p,type:g}=m;if(!E2.includes(g))return;const f={name:p,table:p,type:m.type},b=()=>c().then(v=>hc.makeModel(v)),C={type:"react-component",component:fi.COMPONENT,props:{getDownloadWorker:e,loadPlugin:n,localDashboardId:s,id:u,metadata:f,makeModel:b,theme:l},title:p,id:u},{root:S}=i;ne.openComponent({root:S,config:C,dragEvent:d})},[e,s,i,n,l]);return w.exports.useEffect(function(){const c=[o(fi.COMPONENT,fi,r)];return()=>{c.forEach(u=>u())}},[r,o]),Ke(i.eventHub,Re.OPEN,a),null}function ug(t){return typeof t.getCoordinateForColumn=="function"}function tu(t){const e=t;return ug(t)&&typeof e.setFilterMap=="function"&&typeof e.unsetFilterValue=="function"}const Ao=X.module("LinkerUtils"),mg=class{static getLinkType(t,e,n){var l;if((t==null?void 0:t.panelId)==null||(e==null?void 0:e.panelId)==null||t.panelId===e.panelId||n!=null&&n!==t.panelId&&n!==e.panelId)return Ao.debug2("Incompatible panel ids",t,e,n),"invalid";if(t.panelComponent==null||e.panelComponent==null)return Ao.error("PanelComponent should not be null",t,e),"invalid";const s=(l=mg.ALLOWED_LINKS.get(t.panelComponent))==null?void 0:l.includes(e.panelComponent);if(s===void 0||!s)return Ao.debug2("Incompatible panel components",t,e),"invalid";const{columnType:i}=t,{columnType:o}=e;if(!(o===null||L.isCompatibleType(i,o)))return Ao.debug2("Incompatible type",i,o),"invalid";switch(e.panelComponent){case ne.getComponentName(Xi):case ne.getComponentName(fi):return"tableLink";case ne.getComponentName(gi):return"filterSource"}return Ao.debug2("Incompatible target panel component",e.panelComponent),"invalid"}static findColumn(t,{columnName:e,columnType:n}){return t.find(({name:s,type:i})=>s===e&&i===n)}static cloneLinksForPanel(t,e,n){const s=[];return t.forEach(i=>{var o;i.start.panelId===e&&i.type!=="filterSource"?s.push({...i,id:$e.generate(),start:{...i.start,panelId:n}}):((o=i.end)==null?void 0:o.panelId)===e&&s.push({...i,id:$e.generate(),end:{...i.end,panelId:n}})}),s}};let ai=mg;ai.ALLOWED_LINKS=new Map([[ne.getComponentName(fi),[ne.getComponentName(fi),ne.getComponentName(Xi),ne.getComponentName(gi)]]]);const I2=X.module("LinkerLink"),nu=.015,su=1.5,pg=12,gg=12,iu=2,jr=Math.sqrt((gg*.5)**2+pg**2),ou=Math.asin(gg*.5/pg),ru=15,Ps=Math.PI*.5,ll=class extends w.exports.Component{constructor(t){super(t),this.getOperators=Ce((e,n)=>{const{onOperatorChanged:s}=this.props;let i=L.getFilterTypes(n);return L.isBooleanType(n)&&(i=[K.eq,K.notEq]),i.flatMap((o,r)=>{if(o==="eqIgnoreCase"||o==="notEqIgnoreCase")return[];let l="";return o==="startsWith"?l="a*":o==="endsWith"?l="*z":l=L.getFilterOperatorString(o),[{title:ll.getLabelForLinkFilter(n,o),icon:h("b",{children:l}),action:()=>s(e,o),order:r}]})}),this.handleClick=this.handleClick.bind(this),this.handleMouseEnter=this.handleMouseEnter.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleDelete=this.handleDelete.bind(this),this.getDropdownActions=this.getDropdownActions.bind(this),this.state={isHovering:void 0}}static makeCirclePath(t,e,n){return`M ${t} ${e} m -${n},0 a ${n},${n} 0 1,0 ${n*2},0 a ${n},${n} 0 1,0 -${n*2},0 z`}static getLabelForLinkFilter(t,e){try{if(L.isNumberType(t)||L.isCharType(t))return Em(e);if(L.isTextType(t))return Tm(e);if(L.isDateType(t))return ym(e);if(L.isBooleanType(t)){if(e===K.eq)return"is equal to";if(e===K.notEq)return"is not equal to"}throw new Error(`Unrecognized column type: ${t}`)}catch(n){return I2.warn(n),""}}handleClick(t){t.stopPropagation(),t.preventDefault();const{id:e,onClick:n,onDelete:s}=this.props;t.altKey?s(e):n(e)}handleMouseEnter(){this.setState({isHovering:!0})}handleMouseLeave(){this.setState({isHovering:!1})}handleDelete(){const{id:t,onDelete:e}=this.props;e(t)}getDropdownActions(){const{id:t,startColumnType:e}=this.props;return e!=null?this.getOperators(t,e):[]}render(){const{className:t,operator:e,isSelected:n,x1:s,y1:i,x2:o,y2:r,id:l,startColumnType:a}=this.props,{isHovering:d}=this.state,c=Math.sqrt((s-o)**2+(i-r)**2),u=Math.atan2(r-i,o-s),m=Math.sin(u),p=Math.cos(u)+2,g=window.innerWidth,f=window.innerHeight,b=0,C=0,S=Math.max(b,Math.min(s+(o-s)/2+m*(c*nu)**su,g)),v=Math.max(C,Math.min(i+(r-i)/2+p*(c*nu)**su,f)),y=`M ${s} ${i} Q ${S} ${v} ${o} ${r}`,E=`M ${b} ${C} L ${b} ${f} L ${g} ${f} L ${g} ${C} z
|
|
39
39
|
${ll.makeCirclePath(s,i,ru)}
|
|
40
40
|
${ll.makeCirclePath(o,r,ru)}`,I=`link-select-clip-${l}`,R=Math.atan2(r-v,o-S),N=R-ou+Math.PI,F=R+ou+Math.PI,B=o+Math.cos(R)*iu,U=r+Math.sin(R)*iu,x=B+Math.cos(N)*jr,H=U+Math.sin(N)*jr,A=B+Math.cos(F)*jr,O=U+Math.sin(F)*jr,_=`${B},${U} ${x},${H} ${A},${O}`,k=.25*s+.5*S+.25*o,V=.25*i+.5*v+.25*r,G=S-s+(o-S),Q=(v-i+(r-v))/G;let ae=20/Math.sqrt(1+Q**2),le=ae*Q,Ee=ae*-1,ee=le*-1;Number.isFinite(Q)?Q>0?(ae*=-1,le*=-1,Ee*=-1,ee*=-1,Ee-=50-10*(Math.abs(u)%Ps),ee+=10*(Math.abs(u)%Ps),ae-=50-10*(Math.abs(u)%Ps),le+=10*(Math.abs(u)%Ps)):Q<0?(Ee+=10*(Math.abs(u)%Ps),ee+=10*(Math.abs(u)%Ps),ae+=10*(Math.abs(u)%Ps),le+=10*(Math.abs(u)%Ps)):(Ee=15,ee=10,ae=-25,le=10):(Ee=10,ee=5,ae=10,le=-35);let pe="";return e!==void 0&&(e==="startsWith"?pe="a*":e==="endsWith"?pe="*z":pe=L.getFilterOperatorString(e)),T(we,{children:[T("svg",{className:z(t,{hovering:d}),children:[h("clipPath",{id:I,children:h("path",{d:E,clipRule:"evenodd"})}),h("path",{className:"link-select",d:y,onClick:this.handleClick,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,clipPath:`url(#${I})`}),h("path",{className:"link-background",d:y}),h("path",{className:"link-foreground",d:y}),h("circle",{className:"link-dot",cx:s,cy:i,r:"5"}),h("polygon",{className:"link-triangle",points:_})]}),a!=null&&n&&T(we,{children:[h(W,{kind:"primary",className:"btn-fab btn-operator",style:{top:V+(Q>=0?le:ee),left:k+(Q>=0?ae:Ee)},onClick:()=>{},icon:T("div",{className:"fa-md fa-layers",children:[h("b",{children:pe}),h(Z,{icon:qn,transform:"right-8 down-9 shrink-5"})]}),tooltip:"Change comparison operator",children:h(Nn,{actions:this.getDropdownActions,popperOptions:{placement:"bottom-start"}})}),h(W,{kind:"primary",className:"btn-fab btn-delete",style:{top:V+(Q<0?le:ee),left:k+(Q<0?ae:Ee)},onClick:this.handleDelete,icon:hn,tooltip:"Delete"})]})]})}};let fg=ll;fg.defaultProps={className:"",isSelected:!1,onClick(){},onDelete(){}};const Aa=X.module("LinkerOverlayContent");class Cg extends w.exports.Component{constructor(e){super(e),this.handleBlur=this.handleBlur.bind(this),this.handleResize=this.handleResize.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleKeyUp=this.handleKeyUp.bind(this),this.handleEscapePressed=this.handleEscapePressed.bind(this),this.handleOperatorChanged=this.handleOperatorChanged.bind(this),this.dialogRef=Y.createRef(),this.state={mouse:void 0,dialog:void 0,offset:{x:0,y:0},isDragging:!1,mode:"select"}}componentDidMount(){window.addEventListener("blur",this.handleBlur,!0),window.addEventListener("mousemove",this.handleMouseMove,!0),window.addEventListener("mouseup",this.handleMouseUp,!0),window.addEventListener("keydown",this.handleKeyDown,!0),window.addEventListener("keyup",this.handleKeyUp,!0),window.addEventListener("resize",this.handleResize,!0)}componentDidCatch(e,n){Aa.error("componentDidCatch",e,n)}componentWillUnmount(){window.removeEventListener("blur",this.handleBlur,!0),window.removeEventListener("mousemove",this.handleMouseMove,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),window.removeEventListener("keydown",this.handleKeyDown,!0),window.removeEventListener("keyup",this.handleKeyUp,!0),window.removeEventListener("resize",this.handleResize,!0)}getPointFromLinkPoint(e){const{panelManager:n}=this.props,{panelId:s,columnName:i}=e,o=n.getOpenedPanelById(s);if(o!=null){if(!ug(o))throw new Error(`Panel does not have getCoordinateForColumn method: ${s}`);try{const l=o.getCoordinateForColumn(i);if(l!=null)return l}catch{Aa.error("Could not get coordinate for column",i,o)}}const r=n.getContainerByPanelId(s);if(r==null)throw new Error(`Unable to find panel container for id: ${s}`);return ne.getTabPoint(r)}handleOperatorChanged(e,n){const{links:s,onLinksUpdated:i}=this.props,o=s.map(r=>r.id===e?{...r,operator:n}:r);i(o)}handleBlur(){this.setState({mode:"select"})}handleResize(){const{dialog:e}=this.state;if(e&&this.dialogRef.current){const n=this.dialogRef.current.getBoundingClientRect(),s=Qe(e.x,0,window.innerWidth-n.width),i=Qe(e.y,0,window.innerHeight-n.height);this.setState({dialog:{x:s,y:i}})}}handleMouseMove(e){const{offset:n,isDragging:s}=this.state;if(this.setState({mouse:{x:e.clientX,y:e.clientY}}),s&&this.dialogRef.current){const i=this.dialogRef.current.getBoundingClientRect(),o=Qe(window.innerWidth-(e.clientX+i.width+n.x),0,window.innerWidth-i.width),r=Qe(window.innerHeight-(e.clientY+i.height+n.y),0,window.innerHeight-i.height);this.setState({dialog:{x:o,y:r}})}}handleMouseDown(e){const n={x:0,y:0};if(this.dialogRef.current){const s=this.dialogRef.current.getBoundingClientRect();n.x=s.right-(s.width+e.clientX),n.y=s.bottom-(s.height+e.clientY)}this.setState({isDragging:!0,offset:n})}handleMouseUp(){this.setState({isDragging:!1})}handleKeyDown(e){if(e.key==="Alt")e.preventDefault(),this.setState({mode:"delete"});else if(e.key==="Delete"||e.key==="Backspace"){const{selectedIds:n,onLinkDeleted:s}=this.props;e.preventDefault(),n.forEach(i=>s(i))}}handleKeyUp(e){e.key==="Alt"&&(e.preventDefault(),this.setState({mode:"select"}))}handleEscapePressed(){const{onCancel:e}=this.props;e()}render(){const{disabled:e,links:n,selectedIds:s,messageText:i,onLinkSelected:o,onLinkDeleted:r,onAllLinksDeleted:l,onDone:a}=this.props,{mouse:d,dialog:c,isDragging:u,mode:m}=this.state,p=n.map(g=>{var f,b;try{const{id:C,type:S,isReversed:v,start:y,end:E,operator:I}=g,R=y.columnType;let[N,F]=this.getPointFromLinkPoint(y),B=(f=d==null?void 0:d.x)!=null?f:N,U=(b=d==null?void 0:d.y)!=null?b:F;if(E!=null&&([B,U]=this.getPointFromLinkPoint(E)),v!=null&&v){const[H,A]=[N,F];[N,F]=[B,U],[B,U]=[H,A]}const x=z("linker-link",{disabled:e},{"link-filter-source":S==="filterSource"},{"link-invalid":S==="invalid"},{interactive:g.end==null},{"link-is-selected":s.has(C)},{"danger-delete":m==="delete"});return{x1:N,y1:F,x2:B,y2:U,id:C,className:x,operator:I,startColumnType:R}}catch(C){return Aa.warn("Unable to get point for link",g,C),null}}).filter(g=>g!=null);return T("div",{className:z("linker-overlay",{"danger-delete":m==="delete"}),children:[p.map(({x1:g,y1:f,x2:b,y2:C,id:S,className:v,operator:y,startColumnType:E})=>h(fg,{className:v,id:S,x1:g,y1:f,x2:b,y2:C,onClick:o,onDelete:r,isSelected:s.has(S),operator:y,startColumnType:E,onOperatorChanged:this.handleOperatorChanged},S)),T("div",{className:z("linker-toast-dialog",{dragging:u}),ref:this.dialogRef,style:{bottom:c==null?void 0:c.y,right:c==null?void 0:c.x},children:[h(W,{draggable:!0,kind:"inline",className:"btn-drag-handle",icon:rr,onClick:()=>{},onMouseDown:this.handleMouseDown,children:!u&&h(ze,{children:"Drag to reposition"})}),h("div",{className:"toast-body",children:i}),T("div",{className:"toast-footer",children:[h(W,{kind:"secondary",onClick:l,children:"Clear All"}),h(W,{kind:"primary",onClick:a,children:"Done"})]})]}),h(oe,{actions:[{action:this.handleEscapePressed,shortcut:Cs.LINKER_CLOSE,isGlobal:!0}]})]})}}Cg.defaultProps={disabled:"false"};const zt=X.module("Linker"),R2=(t,e)=>({activeTool:ql(t),isolatedLinkerPanelId:gc(t,e.localDashboardId),links:fo(t,e.localDashboardId),timeZone:lr(t)}),D2=It(R2,{setActiveTool:Xl,setDashboardLinks:Cc,addDashboardLinks:x1,deleteDashboardLinks:_1,setDashboardIsolatedLinkerPanelId:sg,setDashboardColumnSelectionValidator:k1});class M2 extends w.exports.Component{constructor(e){super(e),this.getCachedLinks=Ce((n,s,i)=>{const o=[...n];return s!=null&&s.start!=null&&o.push(s),i!==void 0?o.filter(r=>{var l,a;return((l=r==null?void 0:r.start)==null?void 0:l.panelId)===i||((a=r==null?void 0:r.end)==null?void 0:a.panelId)===i||(r==null?void 0:r.end)==null}):o}),this.handleCancel=this.handleCancel.bind(this),this.handleDone=this.handleDone.bind(this),this.handlePanelCloned=this.handlePanelCloned.bind(this),this.handleFilterColumnSelect=this.handleFilterColumnSelect.bind(this),this.handleColumnsChanged=this.handleColumnsChanged.bind(this),this.handlePanelClosed=this.handlePanelClosed.bind(this),this.handleLayoutStateChanged=this.handleLayoutStateChanged.bind(this),this.handleAllLinksDeleted=this.handleAllLinksDeleted.bind(this),this.handleLinkDeleted=this.handleLinkDeleted.bind(this),this.handleLinksUpdated=this.handleLinksUpdated.bind(this),this.handleChartColumnSelect=this.handleChartColumnSelect.bind(this),this.handleGridColumnSelect=this.handleGridColumnSelect.bind(this),this.handleUpdateValues=this.handleUpdateValues.bind(this),this.handleStateChange=this.handleStateChange.bind(this),this.handleExited=this.handleExited.bind(this),this.handleLinkSelected=this.handleLinkSelected.bind(this),this.handlePanelDragging=this.handlePanelDragging.bind(this),this.handlePanelDropped=this.handlePanelDropped.bind(this),this.isColumnSelectionValid=this.isColumnSelectionValid.bind(this),this.state={linkInProgress:void 0,selectedIds:new Set,isDraggingPanel:!1}}componentDidMount(){const{layout:e}=this.props;this.startListening(e),this.updateSelectionValidators()}componentDidUpdate(e){const{activeTool:n,layout:s}=this.props;s!==e.layout&&(this.stopListening(e.layout),this.startListening(s)),n!==e.activeTool&&(this.updateSelectionValidators(),n===Yt.DEFAULT&&this.reset())}componentDidCatch(e,n){zt.error("componentDidCatch",e,n)}componentWillUnmount(){const{layout:e}=this.props;this.stopListening(e)}startListening(e){e.on("stateChanged",this.handleLayoutStateChanged);const{eventHub:n}=e;n.on(Et.COLUMN_SELECTED,this.handleGridColumnSelect),n.on(Et.DATA_SELECTED,this.handleUpdateValues),n.on(Et.STATE_CHANGED,this.handleStateChange),n.on(no.COLUMN_SELECTED,this.handleChartColumnSelect),n.on(Re.CLONED,this.handlePanelCloned),n.on(Ae.COLUMN_SELECTED,this.handleFilterColumnSelect),n.on(Ae.COLUMNS_CHANGED,this.handleColumnsChanged),n.on(Re.CLOSE,this.handlePanelClosed),n.on(Re.CLOSED,this.handlePanelClosed),n.on(Re.DRAGGING,this.handlePanelDragging),n.on(Re.DROPPED,this.handlePanelDropped)}stopListening(e){e.off("stateChanged",this.handleLayoutStateChanged);const{eventHub:n}=e;n.off(Et.COLUMN_SELECTED,this.handleGridColumnSelect),n.off(Et.DATA_SELECTED,this.handleUpdateValues),n.off(Et.STATE_CHANGED,this.handleStateChange),n.off(no.COLUMN_SELECTED,this.handleChartColumnSelect),n.off(Re.CLONED,this.handlePanelCloned),n.off(Ae.COLUMN_SELECTED,this.handleFilterColumnSelect),n.off(Ae.COLUMNS_CHANGED,this.handleColumnsChanged),n.off(Re.CLOSE,this.handlePanelClosed),n.off(Re.CLOSED,this.handlePanelClosed),n.off(Re.DRAGGING,this.handlePanelDragging),n.off(Re.DROPPED,this.handlePanelDropped)}reset(){this.setState({linkInProgress:void 0,selectedIds:new Set})}handleCancel(){const{linkInProgress:e}=this.state;if(e==null){const{setActiveTool:n}=this.props;n(Yt.DEFAULT)}this.setState({linkInProgress:void 0})}handleDone(){const{setActiveTool:e}=this.props;e(Yt.DEFAULT)}handleChartColumnSelect(e,n){this.columnSelected(e,n,!0)}handleFilterColumnSelect(e,n){zt.debug("handleFilterColumnSelect",this.isOverlayShown());const{links:s,localDashboardId:i,setActiveTool:o,setDashboardIsolatedLinkerPanelId:r}=this.props,l=ne.getIdFromPanel(e),a=s.filter(d=>{var c,u;return((c=d.start)==null?void 0:c.panelId)===l||((u=d.end)==null?void 0:u.panelId)===l});if(!this.isOverlayShown()&&l!=null){o(Yt.LINKER),r(i,l),a.length===0&&this.columnSelected(e,n,!0,l);return}this.columnSelected(e,n,!0)}handleColumnsChanged(e,n){zt.debug("handleColumnsChanged",e,n);const{links:s}=this.props,i=ne.getIdFromPanel(e);if(i==null){zt.error("Invalid panelId",e);return}const o=s.filter(({start:r,end:l})=>r.panelId===i&&ai.findColumn(n,r)==null||l!=null&&l.panelId===i&&ai.findColumn(n,l)==null);this.deleteLinks(o)}handleGridColumnSelect(e,n){this.columnSelected(e,n)}columnSelected(e,n,s=!1,i){if(i===void 0&&!this.isOverlayShown())return;const{isolatedLinkerPanelId:o}=this.props,{linkInProgress:r}=this.state,l=ne.getIdFromPanel(e);if(l==null)return;const a=ne.getComponentNameFromPanel(e),{name:d,type:c}=n;if(r==null||r.start==null){const u={id:$e.generate(),start:{panelId:l,panelComponent:a,columnName:d,columnType:c},type:"invalid",isReversed:s};zt.debug("starting link",u),this.setState({linkInProgress:u})}else{const{links:u}=this.props,{start:m,id:p,isReversed:g}=r,f={panelId:l,panelComponent:a,columnName:d,columnType:c},b=ai.getLinkType(g!==void 0&&g?f:m,g!==void 0&&g?m:f,i!=null?i:o);switch(b){case"invalid":zt.debug("Ignore invalid link connection",r,f);return;case"filterSource":{const S=g!==void 0&&g?m.panelId:f.panelId,v=u.filter(({end:y})=>(y==null?void 0:y.panelId)===S);this.deleteLinks(v);break}}const C={start:g!==void 0&&g?f:m,end:g!==void 0&&g?m:f,id:p,type:b,operator:K.eq};zt.info("creating link",C),this.setState({linkInProgress:void 0,selectedIds:new Set([p])},()=>{this.addLinks([C])})}}unsetFilterValueForLink(e){const{panelManager:n}=this.props;if(e.end){const{end:s}=e,{panelId:i,columnName:o,columnType:r}=s,l=n.getOpenedPanelById(i);l?tu(l)?l.unsetFilterValue(o,r):zt.debug("endPanel.unsetFilterValue not implemented",l):zt.debug("endPanel no longer exists, ignoring unsetFilterValue",i)}}setPanelFilterMap(e,n){zt.debug("Set filter data for panel:",e,n);const{panelManager:s}=this.props,i=s.getOpenedPanelById(e);i?tu(i)?i.setFilterMap(n):zt.debug("panel.setFilterMap not implemented",e,i):zt.debug("panel no longer exists, ignoring setFilterMap",e)}addLinks(e){const{addDashboardLinks:n,localDashboardId:s}=this.props;n(s,e)}deleteLinks(e,n=!1){const{localDashboardId:s}=this.props;if(e.forEach(i=>this.unsetFilterValueForLink(i)),n){const{setDashboardLinks:i}=this.props;i(s,[])}else if(e.length>0){const{deleteDashboardLinks:i}=this.props;i(s,e.map(({id:o})=>o))}}handleAllLinksDeleted(){const{links:e,isolatedLinkerPanelId:n}=this.props;if(n===void 0)this.deleteLinks(e,!0);else{const s=e.filter(i=>{var o,r;return((o=i==null?void 0:i.start)==null?void 0:o.panelId)===n||((r=i==null?void 0:i.end)==null?void 0:r.panelId)===n});this.deleteLinks(s)}this.reset()}handleLinkDeleted(e){const{links:n}=this.props,s=n.find(i=>i.id===e);s?this.deleteLinks([s]):zt.error("Unable to find link to delete",e)}handleUpdateValues(e,n){const s=ne.getIdFromPanel(e),{links:i,timeZone:o}=this.props,r=new Map;for(let l=0;l<i.length;l+=1){const{start:a,end:d,operator:c}=i[l];if(a.panelId===s&&d!=null){const{panelId:u,columnName:m,columnType:p}=d,g=r.has(u)?r.get(u):new Map,f=g.has(m)===!0?g.get(m).filterList:[],{visibleIndex:b,isExpandable:C,isGrouped:S}=n[a.columnName];let{value:v}=n[a.columnName],y=`${v}`;v===null&&C&&S&&(v=void 0),p!=null&&L.isDateType(p)&&(y=new nt({timeZone:o,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:bs.FULL_DATE_FORMAT}).format(v));const E={operator:c,text:y,value:v,startColumnIndex:b};f.push(E),g.set(m,{columnType:p,filterList:f}),r.set(u,g)}}r.forEach((l,a)=>{this.setPanelFilterMap(a,l)})}handlePanelCloned(e,n){const{links:s}=this.props,i=ne.getIdFromPanel(e),o=n.id;if(i!=null){const r=ai.cloneLinksForPanel(s,i,o);this.addLinks(r)}}handlePanelDragging(e){const{links:n}=this.props;for(let s=0;s<n.length;s+=1){const i=n[s],{start:o,end:r}=i;if(o.panelId===e||(r==null?void 0:r.panelId)===e){this.setState({isDraggingPanel:!0});return}}}handlePanelDropped(){this.setState({isDraggingPanel:!1})}handlePanelClosed(e){zt.debug(`Panel ${e} closed, deleting links.`),this.deleteLinksForPanelId(e)}handleLinkSelected(e){this.setState({selectedIds:new Set([e])})}handleLinksUpdated(e){const{localDashboardId:n,setDashboardLinks:s}=this.props;s(n,e)}handleLayoutStateChanged(){this.forceUpdate()}handleStateChange(){this.forceUpdate()}handleExited(){const{localDashboardId:e,setDashboardIsolatedLinkerPanelId:n}=this.props;n(e,void 0)}deleteLinksForPanelId(e){const{links:n}=this.props;for(let s=0;s<n.length;s+=1){const i=n[s],{start:o,end:r,id:l}=i;(o.panelId===e||(r==null?void 0:r.panelId)===e)&&this.handleLinkDeleted(l)}}isOverlayShown(){const{activeTool:e}=this.props;return e===Yt.LINKER}updateSelectionValidators(){const{activeTool:e,setDashboardColumnSelectionValidator:n,localDashboardId:s}=this.props;switch(e){case Yt.LINKER:n(s,this.isColumnSelectionValid);break;default:n(s,void 0);break}}updateLinkInProgressType(e,n="invalid"){this.setState({linkInProgress:{...e,type:n}})}isColumnSelectionValid(e,n){const{linkInProgress:s}=this.state,{isolatedLinkerPanelId:i}=this.props;if((s==null?void 0:s.start)==null)return!0;if(n==null)return this.updateLinkInProgressType(s),!1;const{isReversed:o,start:r}=s,l=ne.getIdFromPanel(e);if(l==null)return!1;const a={panelId:l,panelComponent:ne.getComponentNameFromPanel(e),columnName:n.name,columnType:n.type},d=o!==void 0&&o?ai.getLinkType(a,r,i):ai.getLinkType(r,a,i);return this.updateLinkInProgressType(s,d),d!=="invalid"}render(){const{links:e,isolatedLinkerPanelId:n,panelManager:s}=this.props,{linkInProgress:i,selectedIds:o,isDraggingPanel:r}=this.state,l=this.isOverlayShown(),a=i!=null&&i.start!=null,d=n===void 0?"Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.":"Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.";return r?null:h(mt,{in:l,timeout:Be.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,onExited:this.handleExited,children:h(Cg,{disabled:a,panelManager:s,links:this.getCachedLinks(e,i,n),selectedIds:o,messageText:d,onLinkSelected:this.handleLinkSelected,onLinkDeleted:this.handleLinkDeleted,onAllLinksDeleted:this.handleAllLinksDeleted,onLinksUpdated:this.handleLinksUpdated,onDone:this.handleDone,onCancel:this.handleCancel})})}}const N2=D2(M2);function F2(t){Ks(t);const{id:e,layout:n,panelManager:s}=t;return h(N2,{layout:n,localDashboardId:e,panelManager:s})}const hd=class{static getNewMarkdownTitle(t){let e=`${hd.DEFAULT_TITLE}`,n=0;for(;t.indexOf(e)>=0;)n+=1,e=`${hd.DEFAULT_TITLE}-${n}`;return e}};let Xo=hd;Xo.DEFAULT_TITLE="Note";Xo.DEFAULT_CONTENT=`# Markdown Note
|
|
41
41
|
|
|
42
|
-
This note can be edited using **markdown** for styling.`;function x2(t){Ks(t);const{id:e,layout:n,panelManager:s,registerComponent:i}=t,o=w.exports.useCallback(l=>{const{title:a,componentState:d,props:c}=l;let{panelState:u=null}=c;return d!=null&&({panelState:u=null}=d),a==null||u==null||u.content==null||u.content.length===0||u.content===Xo.DEFAULT_CONTENT?null:Yd(l)},[]),r=w.exports.useCallback(({title:l="",metadata:a={},id:d=$e.generate(),focusElement:c=ne.DEFAULT_FOCUS_SELECTOR,createNewStack:u=!1,dragEvent:m=null}={})=>{const p=s.getOpenedPanelConfigsOfType(Oo.COMPONENT),g=s.getClosedPanelConfigsOfType(Oo.COMPONENT),f=p.map(y=>{var E;return(E=y.title)!=null?E:""}),b=l!=null&&l!==""?l:Xo.getNewMarkdownTitle(f),C=g.length>0?null:Xo.DEFAULT_CONTENT,S={type:"react-component",component:Oo.COMPONENT,props:{id:d,metadata:a,panelState:{content:C},localDashboardId:e},title:b,id:d},{root:v}=n;ne.openComponent({root:v,config:S,focusElement:c,createNewStack:u,dragEvent:m})},[e,n,s]);return w.exports.useEffect(function(){const a=[i(Oo.COMPONENT,Oo,Xd,o)];return()=>{a.forEach(d=>d())}},[o,i]),Ke(n.eventHub,Jp.OPEN,r),null}function _2(t){Ks(t);const{hydrate:e,id:n,layout:s,registerComponent:i}=t,o=w.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=$e.generate(),widget:d})=>{const{name:c,type:u}=d;if(u!==dh.VariableType.PANDAS)return;const m={name:c,table:c},p=()=>l().then(b=>hc.makeModel(b)),g={type:"react-component",component:Yo.COMPONENT,props:{localDashboardId:n,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=s;ne.openComponent({root:f,config:g,dragEvent:r})},[n,s]);return w.exports.useEffect(function(){const l=[i(Yo.COMPONENT,Yo,e)];return()=>{l.forEach(a=>a())}},[e,i]),Ke(s.eventHub,Re.OPEN,o),null}class Sn{}Sn.DROPDOWN_FILTER="ControlType.DROPDOWN_FILTER";Sn.INPUT_FILTER="ControlType.INPUT_FILTER";Sn.MARKDOWN="ControlType.MARKDOWN";Sn.FILTER_SET_MANAGER="ControlType.FILTER_SET_MANAGER";const k2=D.exports.shape({state:D.exports.shape({panelState:D.exports.shape({})})}),O2=D.exports.shape({panelId:D.exports.string.isRequired,columnName:D.exports.string.isRequired,columnType:D.exports.string.isRequired}),lu=D.exports.shape({panelId:D.exports.string.isRequired,columnName:D.exports.string.isRequired}),bg=D.exports.shape({start:lu,end:lu,id:D.exports.string,isReversed:D.exports.bool}),L2=D.exports.arrayOf(bg),A2=D.exports.shape({name:D.exports.string.isRequired,operateAs:D.exports.string.isRequired,groups:D.exports.arrayOf(D.exports.string).isRequired,permissions:D.exports.shape({isSuperUser:D.exports.bool.isRequired,isQueryViewOnly:D.exports.bool.isRequired,isNonInteractive:D.exports.bool.isRequired,canUsePanels:D.exports.bool.isRequired,canCreateDashboard:D.exports.bool.isRequired,canCreateCodeStudio:D.exports.bool.isRequired,canCreateQueryMonitor:D.exports.bool.isRequired,canCopy:D.exports.bool.isRequired,canDownloadCsv:D.exports.bool.isRequired}).isRequired});Object.freeze({LinkPoint:O2,Link:bg,Links:L2,Panel:k2,User:A2});const P2=(t,e)=>t[e]===null?null:D.exports.bool,H2=(t,e)=>t[e]===null?null:D.exports.string;Object.freeze({nullableBoolean:P2,nullableString:H2});X.module("StorageTableViewportUpdater");class au{static makeSortConfig(e,n){return{column:e,direction:n}}static makeFilterConfig(e){const n=[],s=[];return e.forEach((i,o)=>{n.push(i),o>0&&s.push(Xt.and)}),{filterItems:n,filterOperators:s}}static combineFilterConfigs(e,n,s=Xt.and){return{filterItems:[...e.filterItems,...n.filterItems],filterOperators:[...e.filterOperators,s,...n.filterOperators]}}static makeFilterItem(e,n,s){return{columnName:e,type:n,value:s}}}const Pa=X.module("PouchStorageTable"),U2="Deephaven.";bu.plugin(uf);function V2(t,e){switch(t){case K.in:case K.contains:return{$regex:new RegExp(`${e}`)};case K.inIgnoreCase:return{$regex:new RegExp(`${e}`,"i")};case K.eq:return{$eq:e};case K.notEq:return{$neq:e};case K.greaterThan:return{$gt:e};case K.greaterThanOrEqualTo:return{$gte:e};case K.lessThan:return{$lt:e};case K.lessThanOrEqualTo:return{$lte:e};case K.startsWith:return{$regex:new RegExp(`^(?${e}).*`)};default:throw new Error(`Unsupported type: ${t}`)}}function B2(t){const{filterItems:e,filterOperators:n}=t;let s=null;for(let i=0;i<e.length;i+=1){const o=e[i],{columnName:r,type:l,value:a}=o,d={[r]:V2(l,a)};if(i===0)s=d;else if(s!==null&&i-1<n.length){const c=n[i-1];if(c===Xt.and)s={$and:[s,d]};else if(c===Xt.or)s={$or:[s,d]};else throw new Error(`Unexpected filter operator ${c}, ${d}`)}}if(s==null)throw new Error(`Invalid filter config ${t}`);return s}function Ha(t=[]){return{$and:[...t.map(e=>B2(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function $2(t,e=!1){var n;return[{id:e?"desc":"asc"},...(n=t==null?void 0:t.map(s=>({[s.column]:s.direction})))!=null?n:[]]}class W2{constructor(e){this.listeners=[],this.itemListeners=new Map,this.currentSize=0,this.currentReverse=!1,this.currentFilter=null,this.currentSort=null,this.db=new bu(`${U2}${e}`),this.db._remote=!1,this.db.changes({live:!0,since:"now",include_docs:!0}).on("change",this.dbUpdate.bind(this)),this.db.createIndex({index:{fields:["id","name"]}}),this.refreshInfo()}onUpdate(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(n=>n!==e)}}onItemUpdate(e,n){return this.itemListeners.has(e)||this.itemListeners.set(e,[]),this.itemListeners.set(e,[...this.itemListeners.get(e),n]),this.refreshItem(e),()=>{this.itemListeners.set(e,this.itemListeners.get(e).filter(s=>s!==n))}}close(){this.listeners=[]}get size(){return this.currentSize}get viewport(){return this.currentViewport}setReversed(e){this.currentReverse=e,this.currentViewportData=void 0,this.refreshData()}setViewport(e){this.currentViewport=e,this.refreshInfo(),this.refreshData()}setSorts(e){this.currentSort=e,this.currentViewportData=void 0,this.refreshData()}setFilters(e){this.currentFilter=e,this.currentViewportData=void 0,this.refreshInfo(),this.refreshData()}get data(){return this.currentViewportData}async getViewportData(){var e;return this.viewportUpdatePromise||this.refreshData(),(e=this.viewportUpdatePromise)!=null?e:Promise.resolve({items:[],offset:0})}async put(e){const n={...e,_id:e.id};return await this.db.put(n),n}sendUpdate(){var s;const{listeners:e}=this,n=(s=this.currentViewportData)!=null?s:{items:[],offset:0};for(let i=0;i<e.length;i+=1)e[i](n)}sendItemUpdate(e){const n=this.itemListeners.get(e.id);if(n!==void 0)for(let s=0;s<n.length;s+=1)n[s](e)}dbUpdate(e){Pa.debug("Update received",e),this.refreshInfo(),e.doc!==void 0&&this.sendItemUpdate(e.doc),this.refreshData()}async refreshInfo(){var e,n;try{(e=this.infoUpdatePromise)==null||e.cancel(),this.infoUpdatePromise=ye.makeCancelable(this.db.find({selector:Ha((n=this.currentFilter)!=null?n:[]),fields:[]}));const s=await this.infoUpdatePromise;this.currentSize=s.docs.length,this.sendUpdate()}catch(s){if(!ye.isCanceled(s))throw Pa.error("Unable to refreshInfo",s),s}}async refreshData(){var e,n;if(!!this.currentViewport)try{const{currentViewport:s}=this,i=$2(this.currentSort,this.currentReverse);(e=this.viewportUpdatePromise)==null||e.cancel(),this.viewportUpdatePromise=ye.makeCancelable(this.db.find({selector:Ha((n=this.currentFilter)!=null?n:[]),skip:s.top,limit:s.bottom-s.top+1,sort:i,fields:["id","name"]}).then(r=>({items:r.docs,offset:s.top})));const o=await this.viewportUpdatePromise;return this.currentViewportData=o,this.sendUpdate(),o}catch(s){if(!ye.isCanceled(s))throw Pa.error("Unable to refreshData",s),s}}async refreshItem(e){const s=(await this.db.find({selector:{id:e},limit:1})).docs[0];return s!==void 0&&this.sendItemUpdate(s),s}async getSnapshot(e){const n=new Map,s=[{id:this.currentReverse?"desc":"asc"}];return await Promise.all(e.map(async([i,o])=>{var l;const r=o-i+1;return this.db.find({selector:Ha((l=this.currentFilter)!=null?l:[]),skip:i,limit:r,sort:s,fields:["id","name"]}).then(a=>{for(let d=0;d<r;d+=1){const c=i+d;n.set(c,a.docs[d])}})})),n}}class du extends W2{constructor(e){super(`CommandHistoryStorage.${e}`)}setSearch(e){this.setFilters(e?[au.makeFilterConfig([au.makeFilterItem("name",K.contains,e)])]:[])}}const cu=X.module("PouchCommandHistoryStorage");class z2{constructor(){this.updateTableMap=new Map}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new du(e)),this.updateTableMap.get(e)}async getTable(e){return new du(e)}async addItem(e,n,s,i){return this.updateItem(e,{id:`${new Date().getTime()}`,name:s,data:i})}async updateItem(e,n){const s=this.getUpdateTable(e),i=await s.refreshItem(n.id),o={...i!=null?i:{},...n};return cu.debug("Updating item",o),await s.put(o),cu.debug("Update saved"),n}listenItem(e,n,s){return this.getUpdateTable(e).onItemUpdate(n,s)}}const Sg="SET_LAYOUT_STORAGE",G2=t=>({type:Sg,payload:t}),wg="/ide/assets/community-wordmark-app.d2c5c1eb.svg";const K2=X.module("FormattingSectionContent");function q2(t){return t.formatString!=null}function ud(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}function vg(t,e){return t.defaultFormatString===e.defaultFormatString}function Y2(t,e){return vg(t,e)}function X2(t,e){return vg(t,e)}function Tg(t){return t!==""&&Jn.isValidColumnName(t)}function Ws(t,e){if(!t||e.formatString==null||!q2(e))return!1;switch(t){case"datetime":return nt.isValid(e);case"decimal":return _e.isValid(e);case"int":return Ze.isValid(e);default:return K2.warn("Trying to validate format of unknown type"),!0}}function Eg(t){const{id:e,isNewRule:n,...s}=t;return s}function yg(t){return Tg(t.columnName)&&Ws(t.columnType,t.format)}function Ig(t){const{timestamp:e,timeZone:n,showTimeZone:s,showTSeparator:i,isGlobalOptions:o,legacyGlobalFormat:r}=t,l=new cn([],{timeZone:n,showTimeZone:s,showTSeparator:i}),a=o?nt.getGlobalFormats(s,i):nt.getFormats(s,i);return r!=null&&!a.includes(r)&&a.unshift(r),h(we,{children:a.map(d=>{const c=nt.makeFormat("",d,nt.TYPE_GLOBAL);return h("option",{value:d,"data-testid":"time-format",children:l.getFormattedString(e,L.dataType.DATETIME,"",c)},d)})})}function j2(){return h(we,{children:Rn.TIME_ZONES.map(t=>{const{label:e,value:n}=t;return h("option",{value:n,children:e},n)})})}const ei=X.module("FormattingSectionContent"),Rg=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedDateTimeFormatOptions=fe((c,u,m,p=!1,g)=>{const{timestampAtMenuOpen:f}=this.state;return h(Ig,{timestamp:f,timeZone:c,showTimeZone:u,showTSeparator:m,isGlobalOptions:p,legacyGlobalFormat:g})}),this.debouncedCommitChanges=je(this.commitChanges.bind(this),Rg.inputDebounceTime),this.handleDefaultDateTimeFormatChange=this.handleDefaultDateTimeFormatChange.bind(this),this.handleDefaultDecimalFormatChange=this.handleDefaultDecimalFormatChange.bind(this),this.handleDefaultIntegerFormatChange=this.handleDefaultIntegerFormatChange.bind(this),this.handleShowTimeZoneChange=this.handleShowTimeZoneChange.bind(this),this.handleShowTSeparatorChange=this.handleShowTSeparatorChange.bind(this),this.handleTimeZoneChange=this.handleTimeZoneChange.bind(this),this.handleResetDateTimeFormat=this.handleResetDateTimeFormat.bind(this),this.handleResetDecimalFormat=this.handleResetDecimalFormat.bind(this),this.handleResetIntegerFormat=this.handleResetIntegerFormat.bind(this),this.handleResetTimeZone=this.handleResetTimeZone.bind(this),this.handleTruncateNumbersWithPoundChange=this.handleTruncateNumbersWithPoundChange.bind(this);const{formatter:e,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,showTimeZone:o,showTSeparator:r,timeZone:l,truncateNumbersWithPound:a}=t,d=e.map((c,u)=>({...c,id:u}));this.containerRef=Y.createRef(),this.state={formatSettings:d,showTimeZone:o,showTSeparator:r,timeZone:l,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,truncateNumbersWithPound:a,timestampAtMenuOpen:new Date}}componentDidMount(){ud(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}handleDefaultDateTimeFormatChange(t){ei.debug("handleDefaultDateTimeFormatChange",t.target.value),this.setState({defaultDateTimeFormat:t.target.value},()=>{this.debouncedCommitChanges()})}handleDefaultDecimalFormatChange(t){ei.debug("handleDefaultDecimalFormatChange",t.target.value),this.setState({defaultDecimalFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleDefaultIntegerFormatChange(t){ei.debug("handleDefaultIntegerFormatChange",t.target.value),this.setState({defaultIntegerFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleShowTimeZoneChange(){this.setState(t=>({showTimeZone:!t.showTimeZone}),()=>{this.debouncedCommitChanges()})}handleShowTSeparatorChange(){this.setState(t=>({showTSeparator:!t.showTSeparator}),()=>{this.debouncedCommitChanges()})}handleTimeZoneChange(t){this.setState({timeZone:t.target.value},()=>{this.debouncedCommitChanges()})}handleResetDateTimeFormat(){const{defaults:t}=this.props,{defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s}=t;ei.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s},()=>{this.debouncedCommitChanges()})}handleResetTimeZone(){const{defaults:t}=this.props,{timeZone:e}=t;ei.debug("handleResetTimeZone"),this.setState({timeZone:e},()=>{this.debouncedCommitChanges()})}handleResetDecimalFormat(){const{defaults:t}=this.props,{defaultDecimalFormatOptions:e}=t;ei.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleResetIntegerFormat(){const{defaults:t}=this.props,{defaultIntegerFormatOptions:e}=t;ei.debug("handleResetIntegerFormat"),this.setState({defaultIntegerFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleTruncateNumbersWithPoundChange(){this.setState(t=>({truncateNumbersWithPound:!t.truncateNumbersWithPound}),()=>{this.debouncedCommitChanges()})}commitChanges(){var m;const{formatSettings:t,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,truncateNumbersWithPound:l}=this.state,a=(m=t.filter(yg).map(Eg))!=null?m:[],{settings:d,saveSettings:c}=this.props,u={...d,formatter:a,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,truncateNumbersWithPound:l};Ws(L.dataType.DECIMAL,_e.makeCustomFormat(o.defaultFormatString))&&(u.defaultDecimalFormatOptions=o),Ws(L.dataType.INT,Ze.makeCustomFormat(r.defaultFormatString))&&(u.defaultIntegerFormatOptions=r),c(u)}render(){const{defaults:t}=this.props,{defaultDateTimeFormat:e,defaultDecimalFormatOptions:n,defaultIntegerFormatOptions:s,timeZone:i,showTimeZone:o,showTSeparator:r,truncateNumbersWithPound:l}=this.state,{defaultFormatString:a=_e.DEFAULT_FORMAT_STRING}=n!=null?n:{},{defaultFormatString:d=Ze.DEFAULT_FORMAT_STRING}=s!=null?s:{},c=i===t.timeZone,u=r===t.showTSeparator&&o===t.showTimeZone&&e===t.defaultDateTimeFormat,m=Y2(n,t.defaultDecimalFormatOptions),p=X2(s,t.defaultIntegerFormatOptions);return h("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:T("div",{className:"container-fluid p-0",children:[h("div",{children:"Default formatting for column types"}),h("div",{className:"app-settings-menu-description mb-3",children:"Applies a formatting rule to all columns of a set type."}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"select-reset-timezone",children:"Time zone"}),h("div",{className:"col pr-0",children:h("select",{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:h(j2,{})})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:z("btn-reset","btn-reset-time-zone",{hidden:c})})})]}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"select-default-time-format",children:"DateTime"}),h("div",{className:"col pr-0",children:h("select",{className:"custom-select",value:e,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(i,o,r,!0,e)})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:z("btn-reset","btn-reset-date-time",{hidden:u})})})]}),h("div",{className:"form-row",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:o!=null?o:null,onChange:this.handleShowTimeZoneChange,children:"Show time zone in dates"})})}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:r!=null?r:null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"default-decimal-format-input",children:"Decimal"}),h("div",{className:"col pr-0",children:h("input",{className:z("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!Ws(L.dataType.DECIMAL,_e.makeCustomFormat(a))}),"data-lpignore":!0,placeholder:_e.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:a,onChange:this.handleDefaultDecimalFormatChange})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:z("btn-reset","btn-reset-decimal",{hidden:m}),"data-testid":"btn-reset-decimal"})})]}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"Integer"}),h("div",{className:"col pr-0",children:h("input",{className:z("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!Ws(L.dataType.INT,Ze.makeCustomFormat(d))}),"data-lpignore":!0,placeholder:Ze.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:d,onChange:this.handleDefaultIntegerFormatChange})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:z("btn-reset","btn-reset-integer",{hidden:p}),"data-testid":"btn-reset-integer"})})]}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:l!=null?l:null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Truncate numbers with #"})})})]})})}};let Mc=Rg;Mc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:nt.DEFAULT_TIME_ZONE_ID}};Mc.inputDebounceTime=250;const Z2=t=>({formatter:Om(t),defaultDateTimeFormat:xm(t),defaultDecimalFormatOptions:_m(t),defaultIntegerFormatOptions:km(t),showTimeZone:Lm(t),showTSeparator:Am(t),truncateNumbersWithPound:Pm(t),timeZone:lr(t),settings:Rt(t)}),Q2=It(Z2,{saveSettings:Yl})(Mc);function J2(){const[t,e]=w.exports.useState(!1),n=()=>{e(!t)};return T(W,{kind:"ghost",onClick:n,icon:MC,children:["Legal Notices",T(tr,{isOpen:t,toggle:n,className:"theme-bg-light",children:[h(sr,{toggle:n,children:"Legal Notice"}),T(nr,{children:[h("p",{children:"Deephaven software is protected by U.S. Patent Nos. 9,612,959; 9,613,018; 9,613,109; 9,619,210; 9,633,060; 9,639,570; 9,672,238; 9,679,006; 9,690,821; 9,710,511; 9,760,591; 9,805,084; 9,836,495; 9,836,494; 9,886,469; 9,898,496; 9,934,266; 10,002,153; 10,002,154; 10,002,155; 10,003,673; 10,019,138; 10,069,943; 10,176,211; 10,198,465; 10,198,466; 10,198,469; 10,212,257; 10,241,960; 10,241,965; 10,242,040; 10,242,041; 10,353,893; 10,346,394; 10,452,649; 10,496,639; 10,540,351; 10,552,412; 10,565,194; 10,565,206; 10,572,474; 10,621,168; 10,642,829; 10,657,184; 10,678,787; 10,691,686; and 10,783,191. Other patents pending."}),T("p",{children:["\xA9 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})}function jo(t){const{children:e,isExpanded:n,sectionKey:s,title:i,onToggle:o}=t;return T(we,{children:[h("div",{children:T(W,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>o(s),children:[h("div",{className:"flex-grow-1",children:i}),h("div",{className:"flex-shrink-0",children:h(Z,{transform:n?"flip-v":"",icon:qn})})]})}),h(kd,{in:n,autoFocusOnShow:!0,children:e})]})}jo.propTypes={children:D.exports.node,isExpanded:D.exports.bool.isRequired,sectionKey:D.exports.string.isRequired,title:D.exports.node.isRequired,onToggle:D.exports.func};jo.defaultProps={children:null,onToggle:()=>{}};function ey({shortcut:t,displayText:e,categoryName:n,onChange:s}){const[i,o]=w.exports.useState(e),[r,l]=w.exports.useState(t.getKeyState()),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState("");w.exports.useEffect(function(){o(e),l(t.getKeyState())},[e,t]),w.exports.useEffect(function(){o(Kt.getDisplayText(r)),t.matchesKeyState(r)&&d(!1)},[r,t]),w.exports.useEffect(function(){if(a){if(!Kt.isValidKeyState(r)){Kt.isAllowedKey(r.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const y=Le.getConflictingShortcuts(r).filter(E=>E.id.startsWith(n)&&E!==t).map(E=>E.name);if(y.length){u(`Conflicts with ${y.join(", ")}`);return}u("")}else u("")},[a,r,n,t]);function m(v){if(v.stopPropagation(),v.preventDefault(),t.isEditable&&!v.repeat){const y=Kt.getKeyStateFromEvent(v),E=Kt.createKeyState([me.BACKSPACE]);Kt.doKeyStatesMatch(y,E)?l(Kt.NULL_KEY_STATE):l(y)}}function p(v){v.stopPropagation(),v.preventDefault(),t.matchesKeyState(r)||d(!0)}function g(){We.disableAllActions()}function f(){We.enableAllActions()}function b(){t.setKeyState(r),d(!1),s(t)}function C(){const v=t.getKeyState();l(v),d(!1)}function S(){d(!0),l(t.getDefaultKeyState())}return T(we,{children:[T("div",{className:"shortcut-item-container",children:[T("label",{className:"shortcut-item-name",children:[t.name,t.tooltip!==void 0&&h(ze,{children:t.tooltip})]}),T("div",{className:"shortcut-item-input-container",children:[h("input",{className:z("form-control",{"is-invalid":c}),onKeyDown:m,onKeyUp:p,onFocus:g,onBlur:f,disabled:!t.isEditable,value:i,readOnly:!0}),!Kt.doKeyStatesMatch(r,t.getDefaultKeyState())&&!c&&h(W,{className:"reset-to-default-button",kind:"ghost",icon:h(Z,{icon:di,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:S})]})]}),a&&T("div",{className:z("shortcut-item-message-container",{"is-invalid":c}),children:[h("div",{className:"shortcut-item-message",children:c}),T("div",{className:"shortcut-item-message-buttons",children:[Kt.isValidKeyState(r)&&h(W,{kind:"ghost",onClick:b,children:"Confirm"}),h(W,{kind:"ghost",onClick:C,children:"Undo"})]})]})]})}function ty({shortcutOverrides:t={},settings:e,saveSettings:n}){const s=w.exports.useCallback(l=>{const a=Kt.isMacPlatform,d={mac:{...t.mac},windows:{...t.windows}},c=a?d.mac:d.windows;l.forEach(u=>{u.isDefault()?delete c[u.id]:c[u.id]=u.getKeyState()}),n({...e,shortcutOverrides:d})},[e,n,t]);let i=Array.from(Le.shortcutsByCategory.entries()).map(([l,a])=>({name:l,shortcuts:a}));const o=i.findIndex(l=>l.name.toUpperCase()==="GLOBAL"),r=i.splice(o,1);return i=i.concat(r),T(we,{children:[h("div",{className:"app-settings-menu-description",children:"Customize shortcuts below. Assigning shortcuts that conflict with the browser or IDE shortcuts may cause unintended behavior"}),i.map(l=>h(ny,{name:l.name,shortcuts:l.shortcuts,saveShortcutOverrides:s},l.name))]})}function ny({name:t,shortcuts:e,saveShortcutOverrides:n}){function s(a){return a.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[i,o]=w.exports.useState(e);function r(a){const d=i.filter(u=>u!==a&&!u.isNull()&&u.matchesKeyState(a.getKeyState()));d.forEach(u=>u.setToNull());const c=[a,...d];n(c),o(u=>[...u])}const l=w.exports.useMemo(()=>i.map(a=>a.getDisplayText()),[i]);return T("div",{className:"mt-3",children:[h("div",{className:"font-weight-bold",children:s(t)}),i.map((a,d)=>h(ey,{shortcut:a,displayText:l[d],categoryName:t,onChange:r},a.id))]})}const sy=t=>({settings:Rt(t),shortcutOverrides:w0(t)}),iy={saveSettings:Yl},oy=It(sy,iy)(ty),md=new eC,pd=new cl(md);function ry(){X.setLogLevel(parseInt("2",10)),md.enable(),pd.enable(),window!=null&&(window.DHLog=X,window.DHLogProxy=md,window.DHLogHistory=pd)}const ly="yyyy-MM-dd-HHmmss";function Dg(t,e="root",n=new Map([[t,""]])){const s={};return Object.entries(t).forEach(([i,o])=>{try{JSON.stringify(o),s[i]=o}catch{const l=o;if(typeof o=="bigint")s[i]=o.toString();else if(n.has(l))s[i]=`Circular ref to ${n.get(l)}`;else{const a=`${e}.${i}`;n.set(l,a),s[i]=Dg(o,a,n)}}}),s}function ay(){const t=jl.getState();return JSON.stringify(Dg(t),null,2)}function dy(t){const e={uiVersion:"0.26.0",userAgent:navigator.userAgent,...t};return JSON.stringify(e,null,2)}async function cy(t=`${M.i18n.DateTimeFormat.format(ly,new Date)}_support_logs`,e){const n=new Su,s=n.folder(t);s.file("console.txt",pd.getFormattedHistory()),s.file("redux.json",ay()),s.file("metadata.json",dy(e));const i=await n.generateAsync({type:"blob"}),o=document.createElement("a");o.href=URL.createObjectURL(i),o.download=`${t}.zip`,o.click()}const hy=[{value:L.dataType.DATETIME,label:"DateTime"},{value:L.dataType.DECIMAL,label:"Decimal"},{value:L.dataType.INT,label:"Integer"}];function uy(){const t=hy.map(e=>h("option",{value:e.value,children:e.label},`key-columnType-${e.value}`));return T(we,{children:[h("option",{disabled:!0,value:"",children:"Select Type"},"key-columnType-placeholder"),t]})}const Mg=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedColumnTypeOptions=fe(()=>h(uy,{})),this.getCachedDateTimeFormatOptions=fe((c,u,m,p=!1,g)=>{const{timestampAtMenuOpen:f}=this.state;return h(Ig,{timestamp:f,timeZone:c,showTimeZone:u,showTSeparator:m,isGlobalOptions:p,legacyGlobalFormat:g})}),this.debouncedCommitChanges=je(this.commitChanges.bind(this),Mg.inputDebounceTime),this.handleFormatRuleEntered=this.handleFormatRuleEntered.bind(this),this.handleFormatRuleChange=this.handleFormatRuleChange.bind(this),this.handleFormatRuleCreate=this.handleFormatRuleCreate.bind(this),this.handleFormatRuleDelete=this.handleFormatRuleDelete.bind(this);const{formatter:e,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,showTimeZone:o,showTSeparator:r,timeZone:l,truncateNumbersWithPound:a}=t,d=e.map((c,u)=>({...c,id:u}));this.containerRef=Y.createRef(),this.addFormatRuleButtonRef=Y.createRef(),this.lastFormatRuleIndex=d.length,this.state={formatSettings:d,formatRulesChanged:!1,showTimeZone:o,showTSeparator:r,timeZone:l,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,truncateNumbersWithPound:a,timestampAtMenuOpen:new Date}}componentDidMount(){ud(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}isDuplicateRule(t){var n;const{formatSettings:e}=this.state;return(n=e.some(s=>s.id!==t.id&&s.columnName===t.columnName&&s.columnType===t.columnType))!=null?n:!1}getAutoIncrementFormatRuleIndex(){const{lastFormatRuleIndex:t}=this;return this.lastFormatRuleIndex+=1,t}handleFormatRuleChange(t,e,n){this.setState(s=>{const{formatSettings:i}=s;P(i);const o=[...i];let r={};e==="columnType"&&(r={format:""});const l={...o[t],...r,[e]:n};return o[t]=l,{formatSettings:o}},()=>{this.debouncedCommitChanges()})}handleFormatRuleCreate(){this.setState(t=>{const{formatSettings:e}=t,n={columnType:L.dataType.DATETIME,columnName:"",format:{},id:this.getAutoIncrementFormatRuleIndex(),isNewRule:!0};return{formatSettings:e!=null?[...e,n]:[n],formatRulesChanged:!0}})}handleFormatRuleDelete(t){this.setState(e=>{const{formatSettings:n}=e;return{formatSettings:n.filter((i,o)=>o!==t),formatRulesChanged:!0}},()=>{this.debouncedCommitChanges()})}handleFormatRuleEntered(t){this.scrollToFormatBlockBottom(),ud(t)}commitChanges(){var m;const{formatSettings:t,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,truncateNumbersWithPound:l}=this.state,a=(m=t.filter(yg).map(Eg))!=null?m:[],{settings:d,saveSettings:c}=this.props,u={...d,formatter:a,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,truncateNumbersWithPound:l};Ws(L.dataType.DECIMAL,_e.makeCustomFormat(o.defaultFormatString))&&(u.defaultDecimalFormatOptions=o),Ws(L.dataType.INT,Ze.makeCustomFormat(r.defaultFormatString))&&(u.defaultIntegerFormatOptions=r),c(u)}scrollToFormatBlockBottom(){var e,n,s,i;const{scrollTo:t}=this.props;t(0,((n=(e=this.addFormatRuleButtonRef.current)==null?void 0:e.offsetHeight)!=null?n:0)+((i=(s=this.addFormatRuleButtonRef.current)==null?void 0:s.offsetTop)!=null?i:0))}getRuleError(t){const e={hasColumnNameError:!1,hasFormatError:!1,message:""},n=[];return t.isNewRule!==void 0&&t.isNewRule||(this.isDuplicateRule(t)&&(e.hasColumnNameError=!0,n.push("Duplicate column name/type combo.")),Tg(t.columnName)||(e.hasColumnNameError=!0,n.push("Column names must start with a letter or underscore and contain only alphanumeric characters or underscores.")),t.format.formatString!==void 0&&t.format.formatString.length===0?(e.hasFormatError=!0,n.push("Empty formatting rule.")):Ws(t.columnType,t.format)||(e.hasFormatError=!0,n.push("Invalid formatting rule.")),e.message=n.join(`
|
|
43
|
-
`)),e}renderFormatRule(t,e){const n=`input-${t}-columnName`,s=`input-${t}-columnType`,i=`input-${t}-format`,o=this.getCachedColumnTypeOptions(),r=c=>this.handleFormatRuleChange(t,"columnName",c.target.value),l=()=>this.handleFormatRuleChange(t,"isNewRule",!1),a=c=>this.handleFormatRuleChange(t,"columnType",c.target.value),d=this.getRuleError(e);return T("fieldset",{className:"container-fluid format-rule-container",children:[T("div",{className:"form-row",children:[T("div",{className:"form-group col-7 mb-2",children:[h("label",{htmlFor:n,children:"Column Name"}),h("input",{id:n,className:z("form-control",{"is-invalid":d.hasColumnNameError}),"data-lpignore":!0,type:"text",value:e.columnName,onChange:r,onBlur:l})]}),T("div",{className:"form-group col mb-2",children:[h(W,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(t),icon:hn,tooltip:"Delete","aria-label":"Delete Format Rule"}),h("label",{htmlFor:s,children:"Column Type"}),h("select",{id:s,className:"custom-select",value:e.columnType,onChange:a,children:o})]})]}),h("div",{className:"form-row",children:T("div",{className:"form-group col-12 d-flex mb-2",children:[h("label",{className:"flex-shrink-0 col-form-label mr-3",htmlFor:i,children:"Formatting Rule"}),this.renderFormatRuleInput(t,e.columnType,i,e.format,d.hasFormatError)]})}),h("div",{className:"form-row",children:h("div",{className:"form-group col-12 d-flex mb-2",children:d.message&&h("p",{className:"text-danger",children:d.message})})})]},t)}renderFormatRuleInput(t,e,n,s,i){switch(L.getNormalizedType(e)){case L.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(t,n,s,i);case L.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(t,n,s,i);case L.dataType.INT:return this.renderIntegerFormatRuleInput(t,n,s,i);default:throw new Error(`Unrecognized column type: ${e}`)}}renderDateTimeFormatRuleInput(t,e,n,s){var a;const{showTimeZone:i,showTSeparator:o,timeZone:r}=this.state,l=(a=n.formatString)!=null?a:"";return T("select",{className:z("custom-select",{"is-invalid":s}),value:l,id:e,onChange:d=>{const c=nt.makeFormat("",d.target.value,nt.TYPE_GLOBAL);this.handleFormatRuleChange(t,"format",c)},children:[h("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(r,i,o)]})}renderIntegerFormatRuleInput(t,e,n,s){var o;const i=(o=n.formatString)!=null?o:"";return h("input",{className:z("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:Ze.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:r=>{const l=Ze.makeFormat("",r.target.value,Ze.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",l)}})}renderDecimalFormatRuleInput(t,e,n,s){var o;const i=(o=n.formatString)!=null?o:"";return h("input",{className:z("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:_e.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:r=>{const l=_e.makeFormat("",r.target.value,_e.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",l)}})}render(){const{formatRulesChanged:t,formatSettings:e}=this.state,n=e.map((i,o)=>h(mt,{classNames:"fade",timeout:Be.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(o,i)},i.id)),s=h(W,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:zs,children:"Add New Rule"});return T("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[h("div",{children:"Default formatting for matched column names"}),h("div",{className:"app-settings-menu-description mb-3",children:"Applies a formatting rule to all columns that match a specified name and type."}),h(mf,{appear:t,enter:t,exit:t,children:n}),s]})}};let Nc=Mg;Nc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:nt.DEFAULT_TIME_ZONE_ID}};Nc.inputDebounceTime=250;const my=t=>({formatter:Om(t),defaultDateTimeFormat:xm(t),defaultDecimalFormatOptions:_m(t),defaultIntegerFormatOptions:km(t),showTimeZone:Lm(t),showTSeparator:Am(t),truncateNumbersWithPound:Pm(t),timeZone:lr(t),settings:Rt(t)}),py=It(my,{saveSettings:Yl})(Nc),us=class extends w.exports.Component{constructor(t){super(t),this.handleClose=this.handleClose.bind(this),this.handleScrollTo=this.handleScrollTo.bind(this),this.handleSectionToggle=this.handleSectionToggle.bind(this),this.handleExportSupportLogs=this.handleExportSupportLogs.bind(this),this.menuContentRef=Y.createRef(),this.state={expandedSectionKey:us.FORMATTING_SECTION_KEY}}static focusFirstInputInContainer(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}componentDidMount(){us.focusFirstInputInContainer(this.menuContentRef.current)}isSectionExpanded(t){const{expandedSectionKey:e}=this.state;return e===t}handleScrollTo(t,e){var n;(n=this.menuContentRef.current)==null||n.scrollTo(t,e)}handleSectionToggle(t){this.setState(e=>({expandedSectionKey:e.expandedSectionKey===t?void 0:t}))}handleClose(){const{onDone:t}=this.props;t()}handleExportSupportLogs(){const{serverConfigValues:t}=this.props;cy(void 0,Object.fromEntries(t))}render(){const t="0.26.
|
|
42
|
+
This note can be edited using **markdown** for styling.`;function x2(t){Ks(t);const{id:e,layout:n,panelManager:s,registerComponent:i}=t,o=w.exports.useCallback(l=>{const{title:a,componentState:d,props:c}=l;let{panelState:u=null}=c;return d!=null&&({panelState:u=null}=d),a==null||u==null||u.content==null||u.content.length===0||u.content===Xo.DEFAULT_CONTENT?null:Yd(l)},[]),r=w.exports.useCallback(({title:l="",metadata:a={},id:d=$e.generate(),focusElement:c=ne.DEFAULT_FOCUS_SELECTOR,createNewStack:u=!1,dragEvent:m=null}={})=>{const p=s.getOpenedPanelConfigsOfType(Oo.COMPONENT),g=s.getClosedPanelConfigsOfType(Oo.COMPONENT),f=p.map(y=>{var E;return(E=y.title)!=null?E:""}),b=l!=null&&l!==""?l:Xo.getNewMarkdownTitle(f),C=g.length>0?null:Xo.DEFAULT_CONTENT,S={type:"react-component",component:Oo.COMPONENT,props:{id:d,metadata:a,panelState:{content:C},localDashboardId:e},title:b,id:d},{root:v}=n;ne.openComponent({root:v,config:S,focusElement:c,createNewStack:u,dragEvent:m})},[e,n,s]);return w.exports.useEffect(function(){const a=[i(Oo.COMPONENT,Oo,Xd,o)];return()=>{a.forEach(d=>d())}},[o,i]),Ke(n.eventHub,Jp.OPEN,r),null}function _2(t){Ks(t);const{hydrate:e,id:n,layout:s,registerComponent:i}=t,o=w.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=$e.generate(),widget:d})=>{const{name:c,type:u}=d;if(u!==dh.VariableType.PANDAS)return;const m={name:c,table:c},p=()=>l().then(b=>hc.makeModel(b)),g={type:"react-component",component:Yo.COMPONENT,props:{localDashboardId:n,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=s;ne.openComponent({root:f,config:g,dragEvent:r})},[n,s]);return w.exports.useEffect(function(){const l=[i(Yo.COMPONENT,Yo,e)];return()=>{l.forEach(a=>a())}},[e,i]),Ke(s.eventHub,Re.OPEN,o),null}class Sn{}Sn.DROPDOWN_FILTER="ControlType.DROPDOWN_FILTER";Sn.INPUT_FILTER="ControlType.INPUT_FILTER";Sn.MARKDOWN="ControlType.MARKDOWN";Sn.FILTER_SET_MANAGER="ControlType.FILTER_SET_MANAGER";const k2=D.exports.shape({state:D.exports.shape({panelState:D.exports.shape({})})}),O2=D.exports.shape({panelId:D.exports.string.isRequired,columnName:D.exports.string.isRequired,columnType:D.exports.string.isRequired}),lu=D.exports.shape({panelId:D.exports.string.isRequired,columnName:D.exports.string.isRequired}),bg=D.exports.shape({start:lu,end:lu,id:D.exports.string,isReversed:D.exports.bool}),L2=D.exports.arrayOf(bg),A2=D.exports.shape({name:D.exports.string.isRequired,operateAs:D.exports.string.isRequired,groups:D.exports.arrayOf(D.exports.string).isRequired,permissions:D.exports.shape({isSuperUser:D.exports.bool.isRequired,isQueryViewOnly:D.exports.bool.isRequired,isNonInteractive:D.exports.bool.isRequired,canUsePanels:D.exports.bool.isRequired,canCreateDashboard:D.exports.bool.isRequired,canCreateCodeStudio:D.exports.bool.isRequired,canCreateQueryMonitor:D.exports.bool.isRequired,canCopy:D.exports.bool.isRequired,canDownloadCsv:D.exports.bool.isRequired}).isRequired});Object.freeze({LinkPoint:O2,Link:bg,Links:L2,Panel:k2,User:A2});const P2=(t,e)=>t[e]===null?null:D.exports.bool,H2=(t,e)=>t[e]===null?null:D.exports.string;Object.freeze({nullableBoolean:P2,nullableString:H2});X.module("StorageTableViewportUpdater");class au{static makeSortConfig(e,n){return{column:e,direction:n}}static makeFilterConfig(e){const n=[],s=[];return e.forEach((i,o)=>{n.push(i),o>0&&s.push(Xt.and)}),{filterItems:n,filterOperators:s}}static combineFilterConfigs(e,n,s=Xt.and){return{filterItems:[...e.filterItems,...n.filterItems],filterOperators:[...e.filterOperators,s,...n.filterOperators]}}static makeFilterItem(e,n,s){return{columnName:e,type:n,value:s}}}const Pa=X.module("PouchStorageTable"),U2="Deephaven.";bu.plugin(uf);function V2(t,e){switch(t){case K.in:case K.contains:return{$regex:new RegExp(`${e}`)};case K.inIgnoreCase:return{$regex:new RegExp(`${e}`,"i")};case K.eq:return{$eq:e};case K.notEq:return{$neq:e};case K.greaterThan:return{$gt:e};case K.greaterThanOrEqualTo:return{$gte:e};case K.lessThan:return{$lt:e};case K.lessThanOrEqualTo:return{$lte:e};case K.startsWith:return{$regex:new RegExp(`^(?${e}).*`)};default:throw new Error(`Unsupported type: ${t}`)}}function B2(t){const{filterItems:e,filterOperators:n}=t;let s=null;for(let i=0;i<e.length;i+=1){const o=e[i],{columnName:r,type:l,value:a}=o,d={[r]:V2(l,a)};if(i===0)s=d;else if(s!==null&&i-1<n.length){const c=n[i-1];if(c===Xt.and)s={$and:[s,d]};else if(c===Xt.or)s={$or:[s,d]};else throw new Error(`Unexpected filter operator ${c}, ${d}`)}}if(s==null)throw new Error(`Invalid filter config ${t}`);return s}function Ha(t=[]){return{$and:[...t.map(e=>B2(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function $2(t,e=!1){var n;return[{id:e?"desc":"asc"},...(n=t==null?void 0:t.map(s=>({[s.column]:s.direction})))!=null?n:[]]}class W2{constructor(e){this.listeners=[],this.itemListeners=new Map,this.currentSize=0,this.currentReverse=!1,this.currentFilter=null,this.currentSort=null,this.db=new bu(`${U2}${e}`),this.db._remote=!1,this.db.changes({live:!0,since:"now",include_docs:!0}).on("change",this.dbUpdate.bind(this)),this.db.createIndex({index:{fields:["id","name"]}}),this.refreshInfo()}onUpdate(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(n=>n!==e)}}onItemUpdate(e,n){return this.itemListeners.has(e)||this.itemListeners.set(e,[]),this.itemListeners.set(e,[...this.itemListeners.get(e),n]),this.refreshItem(e),()=>{this.itemListeners.set(e,this.itemListeners.get(e).filter(s=>s!==n))}}close(){this.listeners=[]}get size(){return this.currentSize}get viewport(){return this.currentViewport}setReversed(e){this.currentReverse=e,this.currentViewportData=void 0,this.refreshData()}setViewport(e){this.currentViewport=e,this.refreshInfo(),this.refreshData()}setSorts(e){this.currentSort=e,this.currentViewportData=void 0,this.refreshData()}setFilters(e){this.currentFilter=e,this.currentViewportData=void 0,this.refreshInfo(),this.refreshData()}get data(){return this.currentViewportData}async getViewportData(){var e;return this.viewportUpdatePromise||this.refreshData(),(e=this.viewportUpdatePromise)!=null?e:Promise.resolve({items:[],offset:0})}async put(e){const n={...e,_id:e.id};return await this.db.put(n),n}sendUpdate(){var s;const{listeners:e}=this,n=(s=this.currentViewportData)!=null?s:{items:[],offset:0};for(let i=0;i<e.length;i+=1)e[i](n)}sendItemUpdate(e){const n=this.itemListeners.get(e.id);if(n!==void 0)for(let s=0;s<n.length;s+=1)n[s](e)}dbUpdate(e){Pa.debug("Update received",e),this.refreshInfo(),e.doc!==void 0&&this.sendItemUpdate(e.doc),this.refreshData()}async refreshInfo(){var e,n;try{(e=this.infoUpdatePromise)==null||e.cancel(),this.infoUpdatePromise=ye.makeCancelable(this.db.find({selector:Ha((n=this.currentFilter)!=null?n:[]),fields:[]}));const s=await this.infoUpdatePromise;this.currentSize=s.docs.length,this.sendUpdate()}catch(s){if(!ye.isCanceled(s))throw Pa.error("Unable to refreshInfo",s),s}}async refreshData(){var e,n;if(!!this.currentViewport)try{const{currentViewport:s}=this,i=$2(this.currentSort,this.currentReverse);(e=this.viewportUpdatePromise)==null||e.cancel(),this.viewportUpdatePromise=ye.makeCancelable(this.db.find({selector:Ha((n=this.currentFilter)!=null?n:[]),skip:s.top,limit:s.bottom-s.top+1,sort:i,fields:["id","name"]}).then(r=>({items:r.docs,offset:s.top})));const o=await this.viewportUpdatePromise;return this.currentViewportData=o,this.sendUpdate(),o}catch(s){if(!ye.isCanceled(s))throw Pa.error("Unable to refreshData",s),s}}async refreshItem(e){const s=(await this.db.find({selector:{id:e},limit:1})).docs[0];return s!==void 0&&this.sendItemUpdate(s),s}async getSnapshot(e){const n=new Map,s=[{id:this.currentReverse?"desc":"asc"}];return await Promise.all(e.map(async([i,o])=>{var l;const r=o-i+1;return this.db.find({selector:Ha((l=this.currentFilter)!=null?l:[]),skip:i,limit:r,sort:s,fields:["id","name"]}).then(a=>{for(let d=0;d<r;d+=1){const c=i+d;n.set(c,a.docs[d])}})})),n}}class du extends W2{constructor(e){super(`CommandHistoryStorage.${e}`)}setSearch(e){this.setFilters(e?[au.makeFilterConfig([au.makeFilterItem("name",K.contains,e)])]:[])}}const cu=X.module("PouchCommandHistoryStorage");class z2{constructor(){this.updateTableMap=new Map}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new du(e)),this.updateTableMap.get(e)}async getTable(e){return new du(e)}async addItem(e,n,s,i){return this.updateItem(e,{id:`${new Date().getTime()}`,name:s,data:i})}async updateItem(e,n){const s=this.getUpdateTable(e),i=await s.refreshItem(n.id),o={...i!=null?i:{},...n};return cu.debug("Updating item",o),await s.put(o),cu.debug("Update saved"),n}listenItem(e,n,s){return this.getUpdateTable(e).onItemUpdate(n,s)}}const Sg="SET_LAYOUT_STORAGE",G2=t=>({type:Sg,payload:t}),wg="/ide/assets/community-wordmark-app.d2c5c1eb.svg";const K2=X.module("FormattingSectionContent");function q2(t){return t.formatString!=null}function ud(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}function vg(t,e){return t.defaultFormatString===e.defaultFormatString}function Y2(t,e){return vg(t,e)}function X2(t,e){return vg(t,e)}function Tg(t){return t!==""&&Jn.isValidColumnName(t)}function Ws(t,e){if(!t||e.formatString==null||!q2(e))return!1;switch(t){case"datetime":return nt.isValid(e);case"decimal":return _e.isValid(e);case"int":return Ze.isValid(e);default:return K2.warn("Trying to validate format of unknown type"),!0}}function Eg(t){const{id:e,isNewRule:n,...s}=t;return s}function yg(t){return Tg(t.columnName)&&Ws(t.columnType,t.format)}function Ig(t){const{timestamp:e,timeZone:n,showTimeZone:s,showTSeparator:i,isGlobalOptions:o,legacyGlobalFormat:r}=t,l=new cn([],{timeZone:n,showTimeZone:s,showTSeparator:i}),a=o?nt.getGlobalFormats(s,i):nt.getFormats(s,i);return r!=null&&!a.includes(r)&&a.unshift(r),h(we,{children:a.map(d=>{const c=nt.makeFormat("",d,nt.TYPE_GLOBAL);return h("option",{value:d,"data-testid":"time-format",children:l.getFormattedString(e,L.dataType.DATETIME,"",c)},d)})})}function j2(){return h(we,{children:Rn.TIME_ZONES.map(t=>{const{label:e,value:n}=t;return h("option",{value:n,children:e},n)})})}const ei=X.module("FormattingSectionContent"),Rg=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedDateTimeFormatOptions=fe((c,u,m,p=!1,g)=>{const{timestampAtMenuOpen:f}=this.state;return h(Ig,{timestamp:f,timeZone:c,showTimeZone:u,showTSeparator:m,isGlobalOptions:p,legacyGlobalFormat:g})}),this.debouncedCommitChanges=je(this.commitChanges.bind(this),Rg.inputDebounceTime),this.handleDefaultDateTimeFormatChange=this.handleDefaultDateTimeFormatChange.bind(this),this.handleDefaultDecimalFormatChange=this.handleDefaultDecimalFormatChange.bind(this),this.handleDefaultIntegerFormatChange=this.handleDefaultIntegerFormatChange.bind(this),this.handleShowTimeZoneChange=this.handleShowTimeZoneChange.bind(this),this.handleShowTSeparatorChange=this.handleShowTSeparatorChange.bind(this),this.handleTimeZoneChange=this.handleTimeZoneChange.bind(this),this.handleResetDateTimeFormat=this.handleResetDateTimeFormat.bind(this),this.handleResetDecimalFormat=this.handleResetDecimalFormat.bind(this),this.handleResetIntegerFormat=this.handleResetIntegerFormat.bind(this),this.handleResetTimeZone=this.handleResetTimeZone.bind(this),this.handleTruncateNumbersWithPoundChange=this.handleTruncateNumbersWithPoundChange.bind(this);const{formatter:e,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,showTimeZone:o,showTSeparator:r,timeZone:l,truncateNumbersWithPound:a}=t,d=e.map((c,u)=>({...c,id:u}));this.containerRef=Y.createRef(),this.state={formatSettings:d,showTimeZone:o,showTSeparator:r,timeZone:l,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,truncateNumbersWithPound:a,timestampAtMenuOpen:new Date}}componentDidMount(){ud(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}handleDefaultDateTimeFormatChange(t){ei.debug("handleDefaultDateTimeFormatChange",t.target.value),this.setState({defaultDateTimeFormat:t.target.value},()=>{this.debouncedCommitChanges()})}handleDefaultDecimalFormatChange(t){ei.debug("handleDefaultDecimalFormatChange",t.target.value),this.setState({defaultDecimalFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleDefaultIntegerFormatChange(t){ei.debug("handleDefaultIntegerFormatChange",t.target.value),this.setState({defaultIntegerFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleShowTimeZoneChange(){this.setState(t=>({showTimeZone:!t.showTimeZone}),()=>{this.debouncedCommitChanges()})}handleShowTSeparatorChange(){this.setState(t=>({showTSeparator:!t.showTSeparator}),()=>{this.debouncedCommitChanges()})}handleTimeZoneChange(t){this.setState({timeZone:t.target.value},()=>{this.debouncedCommitChanges()})}handleResetDateTimeFormat(){const{defaults:t}=this.props,{defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s}=t;ei.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s},()=>{this.debouncedCommitChanges()})}handleResetTimeZone(){const{defaults:t}=this.props,{timeZone:e}=t;ei.debug("handleResetTimeZone"),this.setState({timeZone:e},()=>{this.debouncedCommitChanges()})}handleResetDecimalFormat(){const{defaults:t}=this.props,{defaultDecimalFormatOptions:e}=t;ei.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleResetIntegerFormat(){const{defaults:t}=this.props,{defaultIntegerFormatOptions:e}=t;ei.debug("handleResetIntegerFormat"),this.setState({defaultIntegerFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleTruncateNumbersWithPoundChange(){this.setState(t=>({truncateNumbersWithPound:!t.truncateNumbersWithPound}),()=>{this.debouncedCommitChanges()})}commitChanges(){var m;const{formatSettings:t,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,truncateNumbersWithPound:l}=this.state,a=(m=t.filter(yg).map(Eg))!=null?m:[],{settings:d,saveSettings:c}=this.props,u={...d,formatter:a,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,truncateNumbersWithPound:l};Ws(L.dataType.DECIMAL,_e.makeCustomFormat(o.defaultFormatString))&&(u.defaultDecimalFormatOptions=o),Ws(L.dataType.INT,Ze.makeCustomFormat(r.defaultFormatString))&&(u.defaultIntegerFormatOptions=r),c(u)}render(){const{defaults:t}=this.props,{defaultDateTimeFormat:e,defaultDecimalFormatOptions:n,defaultIntegerFormatOptions:s,timeZone:i,showTimeZone:o,showTSeparator:r,truncateNumbersWithPound:l}=this.state,{defaultFormatString:a=_e.DEFAULT_FORMAT_STRING}=n!=null?n:{},{defaultFormatString:d=Ze.DEFAULT_FORMAT_STRING}=s!=null?s:{},c=i===t.timeZone,u=r===t.showTSeparator&&o===t.showTimeZone&&e===t.defaultDateTimeFormat,m=Y2(n,t.defaultDecimalFormatOptions),p=X2(s,t.defaultIntegerFormatOptions);return h("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:T("div",{className:"container-fluid p-0",children:[h("div",{children:"Default formatting for column types"}),h("div",{className:"app-settings-menu-description mb-3",children:"Applies a formatting rule to all columns of a set type."}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"select-reset-timezone",children:"Time zone"}),h("div",{className:"col pr-0",children:h("select",{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:h(j2,{})})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:z("btn-reset","btn-reset-time-zone",{hidden:c})})})]}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"select-default-time-format",children:"DateTime"}),h("div",{className:"col pr-0",children:h("select",{className:"custom-select",value:e,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(i,o,r,!0,e)})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:z("btn-reset","btn-reset-date-time",{hidden:u})})})]}),h("div",{className:"form-row",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:o!=null?o:null,onChange:this.handleShowTimeZoneChange,children:"Show time zone in dates"})})}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:r!=null?r:null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"default-decimal-format-input",children:"Decimal"}),h("div",{className:"col pr-0",children:h("input",{className:z("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!Ws(L.dataType.DECIMAL,_e.makeCustomFormat(a))}),"data-lpignore":!0,placeholder:_e.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:a,onChange:this.handleDefaultDecimalFormatChange})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:z("btn-reset","btn-reset-decimal",{hidden:m}),"data-testid":"btn-reset-decimal"})})]}),T("div",{className:"form-row mb-2",children:[h("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"Integer"}),h("div",{className:"col pr-0",children:h("input",{className:z("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!Ws(L.dataType.INT,Ze.makeCustomFormat(d))}),"data-lpignore":!0,placeholder:Ze.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:d,onChange:this.handleDefaultIntegerFormatChange})}),h("div",{className:"col-1 btn-col",children:h(W,{kind:"ghost",icon:di,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:z("btn-reset","btn-reset-integer",{hidden:p}),"data-testid":"btn-reset-integer"})})]}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(St,{checked:l!=null?l:null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Truncate numbers with #"})})})]})})}};let Mc=Rg;Mc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:nt.DEFAULT_TIME_ZONE_ID}};Mc.inputDebounceTime=250;const Z2=t=>({formatter:Om(t),defaultDateTimeFormat:xm(t),defaultDecimalFormatOptions:_m(t),defaultIntegerFormatOptions:km(t),showTimeZone:Lm(t),showTSeparator:Am(t),truncateNumbersWithPound:Pm(t),timeZone:lr(t),settings:Rt(t)}),Q2=It(Z2,{saveSettings:Yl})(Mc);function J2(){const[t,e]=w.exports.useState(!1),n=()=>{e(!t)};return T(W,{kind:"ghost",onClick:n,icon:MC,children:["Legal Notices",T(tr,{isOpen:t,toggle:n,className:"theme-bg-light",children:[h(sr,{toggle:n,children:"Legal Notice"}),T(nr,{children:[h("p",{children:"Deephaven software is protected by U.S. Patent Nos. 9,612,959; 9,613,018; 9,613,109; 9,619,210; 9,633,060; 9,639,570; 9,672,238; 9,679,006; 9,690,821; 9,710,511; 9,760,591; 9,805,084; 9,836,495; 9,836,494; 9,886,469; 9,898,496; 9,934,266; 10,002,153; 10,002,154; 10,002,155; 10,003,673; 10,019,138; 10,069,943; 10,176,211; 10,198,465; 10,198,466; 10,198,469; 10,212,257; 10,241,960; 10,241,965; 10,242,040; 10,242,041; 10,353,893; 10,346,394; 10,452,649; 10,496,639; 10,540,351; 10,552,412; 10,565,194; 10,565,206; 10,572,474; 10,621,168; 10,642,829; 10,657,184; 10,678,787; 10,691,686; and 10,783,191. Other patents pending."}),T("p",{children:["\xA9 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})}function jo(t){const{children:e,isExpanded:n,sectionKey:s,title:i,onToggle:o}=t;return T(we,{children:[h("div",{children:T(W,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>o(s),children:[h("div",{className:"flex-grow-1",children:i}),h("div",{className:"flex-shrink-0",children:h(Z,{transform:n?"flip-v":"",icon:qn})})]})}),h(kd,{in:n,autoFocusOnShow:!0,children:e})]})}jo.propTypes={children:D.exports.node,isExpanded:D.exports.bool.isRequired,sectionKey:D.exports.string.isRequired,title:D.exports.node.isRequired,onToggle:D.exports.func};jo.defaultProps={children:null,onToggle:()=>{}};function ey({shortcut:t,displayText:e,categoryName:n,onChange:s}){const[i,o]=w.exports.useState(e),[r,l]=w.exports.useState(t.getKeyState()),[a,d]=w.exports.useState(!1),[c,u]=w.exports.useState("");w.exports.useEffect(function(){o(e),l(t.getKeyState())},[e,t]),w.exports.useEffect(function(){o(Kt.getDisplayText(r)),t.matchesKeyState(r)&&d(!1)},[r,t]),w.exports.useEffect(function(){if(a){if(!Kt.isValidKeyState(r)){Kt.isAllowedKey(r.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const y=Le.getConflictingShortcuts(r).filter(E=>E.id.startsWith(n)&&E!==t).map(E=>E.name);if(y.length){u(`Conflicts with ${y.join(", ")}`);return}u("")}else u("")},[a,r,n,t]);function m(v){if(v.stopPropagation(),v.preventDefault(),t.isEditable&&!v.repeat){const y=Kt.getKeyStateFromEvent(v),E=Kt.createKeyState([me.BACKSPACE]);Kt.doKeyStatesMatch(y,E)?l(Kt.NULL_KEY_STATE):l(y)}}function p(v){v.stopPropagation(),v.preventDefault(),t.matchesKeyState(r)||d(!0)}function g(){We.disableAllActions()}function f(){We.enableAllActions()}function b(){t.setKeyState(r),d(!1),s(t)}function C(){const v=t.getKeyState();l(v),d(!1)}function S(){d(!0),l(t.getDefaultKeyState())}return T(we,{children:[T("div",{className:"shortcut-item-container",children:[T("label",{className:"shortcut-item-name",children:[t.name,t.tooltip!==void 0&&h(ze,{children:t.tooltip})]}),T("div",{className:"shortcut-item-input-container",children:[h("input",{className:z("form-control",{"is-invalid":c}),onKeyDown:m,onKeyUp:p,onFocus:g,onBlur:f,disabled:!t.isEditable,value:i,readOnly:!0}),!Kt.doKeyStatesMatch(r,t.getDefaultKeyState())&&!c&&h(W,{className:"reset-to-default-button",kind:"ghost",icon:h(Z,{icon:di,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:S})]})]}),a&&T("div",{className:z("shortcut-item-message-container",{"is-invalid":c}),children:[h("div",{className:"shortcut-item-message",children:c}),T("div",{className:"shortcut-item-message-buttons",children:[Kt.isValidKeyState(r)&&h(W,{kind:"ghost",onClick:b,children:"Confirm"}),h(W,{kind:"ghost",onClick:C,children:"Undo"})]})]})]})}function ty({shortcutOverrides:t={},settings:e,saveSettings:n}){const s=w.exports.useCallback(l=>{const a=Kt.isMacPlatform,d={mac:{...t.mac},windows:{...t.windows}},c=a?d.mac:d.windows;l.forEach(u=>{u.isDefault()?delete c[u.id]:c[u.id]=u.getKeyState()}),n({...e,shortcutOverrides:d})},[e,n,t]);let i=Array.from(Le.shortcutsByCategory.entries()).map(([l,a])=>({name:l,shortcuts:a}));const o=i.findIndex(l=>l.name.toUpperCase()==="GLOBAL"),r=i.splice(o,1);return i=i.concat(r),T(we,{children:[h("div",{className:"app-settings-menu-description",children:"Customize shortcuts below. Assigning shortcuts that conflict with the browser or IDE shortcuts may cause unintended behavior"}),i.map(l=>h(ny,{name:l.name,shortcuts:l.shortcuts,saveShortcutOverrides:s},l.name))]})}function ny({name:t,shortcuts:e,saveShortcutOverrides:n}){function s(a){return a.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[i,o]=w.exports.useState(e);function r(a){const d=i.filter(u=>u!==a&&!u.isNull()&&u.matchesKeyState(a.getKeyState()));d.forEach(u=>u.setToNull());const c=[a,...d];n(c),o(u=>[...u])}const l=w.exports.useMemo(()=>i.map(a=>a.getDisplayText()),[i]);return T("div",{className:"mt-3",children:[h("div",{className:"font-weight-bold",children:s(t)}),i.map((a,d)=>h(ey,{shortcut:a,displayText:l[d],categoryName:t,onChange:r},a.id))]})}const sy=t=>({settings:Rt(t),shortcutOverrides:w0(t)}),iy={saveSettings:Yl},oy=It(sy,iy)(ty),md=new eC,pd=new cl(md);function ry(){X.setLogLevel(parseInt("2",10)),md.enable(),pd.enable(),window!=null&&(window.DHLog=X,window.DHLogProxy=md,window.DHLogHistory=pd)}const ly="yyyy-MM-dd-HHmmss";function Dg(t,e="root",n=new Map([[t,""]])){const s={};return Object.entries(t).forEach(([i,o])=>{try{JSON.stringify(o),s[i]=o}catch{const l=o;if(typeof o=="bigint")s[i]=o.toString();else if(n.has(l))s[i]=`Circular ref to ${n.get(l)}`;else{const a=`${e}.${i}`;n.set(l,a),s[i]=Dg(o,a,n)}}}),s}function ay(){const t=jl.getState();return JSON.stringify(Dg(t),null,2)}function dy(t){const e={uiVersion:"0.26.1",userAgent:navigator.userAgent,...t};return JSON.stringify(e,null,2)}async function cy(t=`${M.i18n.DateTimeFormat.format(ly,new Date)}_support_logs`,e){const n=new Su,s=n.folder(t);s.file("console.txt",pd.getFormattedHistory()),s.file("redux.json",ay()),s.file("metadata.json",dy(e));const i=await n.generateAsync({type:"blob"}),o=document.createElement("a");o.href=URL.createObjectURL(i),o.download=`${t}.zip`,o.click()}const hy=[{value:L.dataType.DATETIME,label:"DateTime"},{value:L.dataType.DECIMAL,label:"Decimal"},{value:L.dataType.INT,label:"Integer"}];function uy(){const t=hy.map(e=>h("option",{value:e.value,children:e.label},`key-columnType-${e.value}`));return T(we,{children:[h("option",{disabled:!0,value:"",children:"Select Type"},"key-columnType-placeholder"),t]})}const Mg=class extends w.exports.PureComponent{constructor(t){super(t),this.getCachedColumnTypeOptions=fe(()=>h(uy,{})),this.getCachedDateTimeFormatOptions=fe((c,u,m,p=!1,g)=>{const{timestampAtMenuOpen:f}=this.state;return h(Ig,{timestamp:f,timeZone:c,showTimeZone:u,showTSeparator:m,isGlobalOptions:p,legacyGlobalFormat:g})}),this.debouncedCommitChanges=je(this.commitChanges.bind(this),Mg.inputDebounceTime),this.handleFormatRuleEntered=this.handleFormatRuleEntered.bind(this),this.handleFormatRuleChange=this.handleFormatRuleChange.bind(this),this.handleFormatRuleCreate=this.handleFormatRuleCreate.bind(this),this.handleFormatRuleDelete=this.handleFormatRuleDelete.bind(this);const{formatter:e,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,showTimeZone:o,showTSeparator:r,timeZone:l,truncateNumbersWithPound:a}=t,d=e.map((c,u)=>({...c,id:u}));this.containerRef=Y.createRef(),this.addFormatRuleButtonRef=Y.createRef(),this.lastFormatRuleIndex=d.length,this.state={formatSettings:d,formatRulesChanged:!1,showTimeZone:o,showTSeparator:r,timeZone:l,defaultDateTimeFormat:n,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:i,truncateNumbersWithPound:a,timestampAtMenuOpen:new Date}}componentDidMount(){ud(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}isDuplicateRule(t){var n;const{formatSettings:e}=this.state;return(n=e.some(s=>s.id!==t.id&&s.columnName===t.columnName&&s.columnType===t.columnType))!=null?n:!1}getAutoIncrementFormatRuleIndex(){const{lastFormatRuleIndex:t}=this;return this.lastFormatRuleIndex+=1,t}handleFormatRuleChange(t,e,n){this.setState(s=>{const{formatSettings:i}=s;P(i);const o=[...i];let r={};e==="columnType"&&(r={format:""});const l={...o[t],...r,[e]:n};return o[t]=l,{formatSettings:o}},()=>{this.debouncedCommitChanges()})}handleFormatRuleCreate(){this.setState(t=>{const{formatSettings:e}=t,n={columnType:L.dataType.DATETIME,columnName:"",format:{},id:this.getAutoIncrementFormatRuleIndex(),isNewRule:!0};return{formatSettings:e!=null?[...e,n]:[n],formatRulesChanged:!0}})}handleFormatRuleDelete(t){this.setState(e=>{const{formatSettings:n}=e;return{formatSettings:n.filter((i,o)=>o!==t),formatRulesChanged:!0}},()=>{this.debouncedCommitChanges()})}handleFormatRuleEntered(t){this.scrollToFormatBlockBottom(),ud(t)}commitChanges(){var m;const{formatSettings:t,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,truncateNumbersWithPound:l}=this.state,a=(m=t.filter(yg).map(Eg))!=null?m:[],{settings:d,saveSettings:c}=this.props,u={...d,formatter:a,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,truncateNumbersWithPound:l};Ws(L.dataType.DECIMAL,_e.makeCustomFormat(o.defaultFormatString))&&(u.defaultDecimalFormatOptions=o),Ws(L.dataType.INT,Ze.makeCustomFormat(r.defaultFormatString))&&(u.defaultIntegerFormatOptions=r),c(u)}scrollToFormatBlockBottom(){var e,n,s,i;const{scrollTo:t}=this.props;t(0,((n=(e=this.addFormatRuleButtonRef.current)==null?void 0:e.offsetHeight)!=null?n:0)+((i=(s=this.addFormatRuleButtonRef.current)==null?void 0:s.offsetTop)!=null?i:0))}getRuleError(t){const e={hasColumnNameError:!1,hasFormatError:!1,message:""},n=[];return t.isNewRule!==void 0&&t.isNewRule||(this.isDuplicateRule(t)&&(e.hasColumnNameError=!0,n.push("Duplicate column name/type combo.")),Tg(t.columnName)||(e.hasColumnNameError=!0,n.push("Column names must start with a letter or underscore and contain only alphanumeric characters or underscores.")),t.format.formatString!==void 0&&t.format.formatString.length===0?(e.hasFormatError=!0,n.push("Empty formatting rule.")):Ws(t.columnType,t.format)||(e.hasFormatError=!0,n.push("Invalid formatting rule.")),e.message=n.join(`
|
|
43
|
+
`)),e}renderFormatRule(t,e){const n=`input-${t}-columnName`,s=`input-${t}-columnType`,i=`input-${t}-format`,o=this.getCachedColumnTypeOptions(),r=c=>this.handleFormatRuleChange(t,"columnName",c.target.value),l=()=>this.handleFormatRuleChange(t,"isNewRule",!1),a=c=>this.handleFormatRuleChange(t,"columnType",c.target.value),d=this.getRuleError(e);return T("fieldset",{className:"container-fluid format-rule-container",children:[T("div",{className:"form-row",children:[T("div",{className:"form-group col-7 mb-2",children:[h("label",{htmlFor:n,children:"Column Name"}),h("input",{id:n,className:z("form-control",{"is-invalid":d.hasColumnNameError}),"data-lpignore":!0,type:"text",value:e.columnName,onChange:r,onBlur:l})]}),T("div",{className:"form-group col mb-2",children:[h(W,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(t),icon:hn,tooltip:"Delete","aria-label":"Delete Format Rule"}),h("label",{htmlFor:s,children:"Column Type"}),h("select",{id:s,className:"custom-select",value:e.columnType,onChange:a,children:o})]})]}),h("div",{className:"form-row",children:T("div",{className:"form-group col-12 d-flex mb-2",children:[h("label",{className:"flex-shrink-0 col-form-label mr-3",htmlFor:i,children:"Formatting Rule"}),this.renderFormatRuleInput(t,e.columnType,i,e.format,d.hasFormatError)]})}),h("div",{className:"form-row",children:h("div",{className:"form-group col-12 d-flex mb-2",children:d.message&&h("p",{className:"text-danger",children:d.message})})})]},t)}renderFormatRuleInput(t,e,n,s,i){switch(L.getNormalizedType(e)){case L.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(t,n,s,i);case L.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(t,n,s,i);case L.dataType.INT:return this.renderIntegerFormatRuleInput(t,n,s,i);default:throw new Error(`Unrecognized column type: ${e}`)}}renderDateTimeFormatRuleInput(t,e,n,s){var a;const{showTimeZone:i,showTSeparator:o,timeZone:r}=this.state,l=(a=n.formatString)!=null?a:"";return T("select",{className:z("custom-select",{"is-invalid":s}),value:l,id:e,onChange:d=>{const c=nt.makeFormat("",d.target.value,nt.TYPE_GLOBAL);this.handleFormatRuleChange(t,"format",c)},children:[h("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(r,i,o)]})}renderIntegerFormatRuleInput(t,e,n,s){var o;const i=(o=n.formatString)!=null?o:"";return h("input",{className:z("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:Ze.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:r=>{const l=Ze.makeFormat("",r.target.value,Ze.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",l)}})}renderDecimalFormatRuleInput(t,e,n,s){var o;const i=(o=n.formatString)!=null?o:"";return h("input",{className:z("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:_e.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:r=>{const l=_e.makeFormat("",r.target.value,_e.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",l)}})}render(){const{formatRulesChanged:t,formatSettings:e}=this.state,n=e.map((i,o)=>h(mt,{classNames:"fade",timeout:Be.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(o,i)},i.id)),s=h(W,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:zs,children:"Add New Rule"});return T("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[h("div",{children:"Default formatting for matched column names"}),h("div",{className:"app-settings-menu-description mb-3",children:"Applies a formatting rule to all columns that match a specified name and type."}),h(mf,{appear:t,enter:t,exit:t,children:n}),s]})}};let Nc=Mg;Nc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:nt.DEFAULT_TIME_ZONE_ID}};Nc.inputDebounceTime=250;const my=t=>({formatter:Om(t),defaultDateTimeFormat:xm(t),defaultDecimalFormatOptions:_m(t),defaultIntegerFormatOptions:km(t),showTimeZone:Lm(t),showTSeparator:Am(t),truncateNumbersWithPound:Pm(t),timeZone:lr(t),settings:Rt(t)}),py=It(my,{saveSettings:Yl})(Nc),us=class extends w.exports.Component{constructor(t){super(t),this.handleClose=this.handleClose.bind(this),this.handleScrollTo=this.handleScrollTo.bind(this),this.handleSectionToggle=this.handleSectionToggle.bind(this),this.handleExportSupportLogs=this.handleExportSupportLogs.bind(this),this.menuContentRef=Y.createRef(),this.state={expandedSectionKey:us.FORMATTING_SECTION_KEY}}static focusFirstInputInContainer(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}componentDidMount(){us.focusFirstInputInContainer(this.menuContentRef.current)}isSectionExpanded(t){const{expandedSectionKey:e}=this.state;return e===t}handleScrollTo(t,e){var n;(n=this.menuContentRef.current)==null||n.scrollTo(t,e)}handleSectionToggle(t){this.setState(e=>({expandedSectionKey:e.expandedSectionKey===t?void 0:t}))}handleClose(){const{onDone:t}=this.props;t()}handleExportSupportLogs(){const{serverConfigValues:t}=this.props;cy(void 0,Object.fromEntries(t))}render(){const t="0.26.1",e="https://github.com/deephaven/web-client-ui/",n="https://deephaven.io/core/docs/",{serverConfigValues:s}=this.props,i=s.get("barrage.version"),o=s.get("java.version"),r=s.get("deephaven.version"),l=(a,d)=>T(we,{children:[h("div",{children:a}),h("div",{children:d})]});return T("div",{className:"app-settings-menu",children:[T("header",{className:"app-settings-menu-header",children:[h("div",{className:"flex-spacer"}),h(W,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:h(Z,{icon:oo,transform:"grow-4"}),tooltip:"Close"})]}),T("div",{className:"app-settings-menu-content",ref:this.menuContentRef,children:[h("h5",{children:"Settings"}),h("hr",{className:"my-0"}),h(jo,{sectionKey:us.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(us.FORMATTING_SECTION_KEY),title:T(we,{children:[h(Z,{icon:GC,transform:"grow-4",className:"mr-2"}),"Default Formatting & Time zone"]}),onToggle:this.handleSectionToggle,children:h(Q2,{})}),h(jo,{sectionKey:us.COLUMN_SPECIFIC_SECTION_KEY,isExpanded:this.isSectionExpanded(us.COLUMN_SPECIFIC_SECTION_KEY),title:T(we,{children:[h(Z,{icon:NC,transform:"grow-4",className:"mr-2"}),"Column Specific Formatting Rules"]}),onToggle:this.handleSectionToggle,children:h(py,{scrollTo:this.handleScrollTo})}),h(jo,{sectionKey:us.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(us.SHORTCUT_SECTION_KEY),title:T(we,{children:[h(Z,{icon:HC,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:h(oy,{})}),T("div",{className:"app-settings-footer",children:[T("div",{className:"app-settings-footer-section",children:[T("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Support"}),T("div",{children:["GitHub:\xA0",h("a",{href:e,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:e})]}),h(W,{kind:"tertiary",className:"mt-2 py-2",onClick:this.handleExportSupportLogs,children:"Export Logs"})]}),T("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Documentation"}),h("a",{target:"_blank",rel:"noreferrer noopener",href:n,className:"custom-link",children:n})]}),T("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Version"}),T("span",{className:"d-inline-block text-muted",children:[r," ",h(Z,{icon:RC}),T(ze,{interactive:!0,children:[T("div",{className:"detailed-server-config",children:[l("Engine Version",r),l("Web UI Version",t),l("Java Version",o),l("Barrage Version",i)]}),h(Pl,{tooltip:"Copy version numbers",copy:`Engine Version: ${r}
|
|
44
44
|
Web UI Version: ${t}
|
|
45
45
|
Java Version: ${o}
|
|
46
|
-
Barrage Version: ${i}`,children:"Copy Versions"})]})]})]}),h("div",{className:"app-settings-footer-item",children:h(J2,{})})]}),h("div",{className:"app-settings-footer-section",children:h("div",{className:"logo",children:h("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:h("img",{src:wg,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}};let bo=us;bo.defaultProps={onDone:()=>{}};bo.FORMATTING_SECTION_KEY="SettingsMenu.formatting";bo.COLUMN_SPECIFIC_SECTION_KEY="SettingsMenu.columnFormatting";bo.APPLICATION_SECTION_KEY="ApplicationMenu.settings";bo.SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";const hu=10;function zi(t){const{forwardedProps:{menuItem:{action:e,title:n,disabled:s},iconElement:i,displayShortcut:o,isMouseSelected:r,isKeyboardSelected:l,closeMenu:a}}=t,d=w.exports.useRef(),c=w.exports.useRef(),u=w.exports.useRef(null),[m,p]=w.exports.useState(!1),g=w.exports.useCallback(C=>{d.current!=null&&c.current!=null&&u.current&&(Math.abs(d.current-C.clientX)>=hu||Math.abs(c.current-C.clientY)>=hu)&&(p(!0),window.removeEventListener("mousemove",g),a(),e(C),u.current=null)},[e,a]);function f(C){d.current=C.clientX,c.current=C.clientY,u.current=C.target,window.addEventListener("mousemove",g)}function b(C){u.current===C.target&&(p(!0),a(),e(),window.removeEventListener("mousemove",g)),u.current=null}return w.exports.useEffect(function(){return function(){return window.removeEventListener("mousemove",g)}},[g]),T("button",{type:"button",className:z("btn-context-menu",{disabled:s},{active:r&&!s},{"keyboard-active":l&&!s}),onMouseDown:f,onMouseUp:b,disabled:m,children:[h("span",{className:z("icon"),children:i}),h("span",{className:"title",children:n}),h("span",{className:"shortcut",children:o})]})}function Fc(t){const{handleControlSelect:e,handleToolSelect:n,onClearFilter:s}=t,i=w.exports.useMemo(()=>[{title:"Input Filter",icon:ib,menuElement:h(zi,{}),action:o=>{e(Sn.INPUT_FILTER,o)},order:10},{title:"Dropdown Filter",icon:Ou,menuElement:h(zi,{}),action:o=>{e(Sn.DROPDOWN_FILTER,o)},order:15},{title:"Markdown Widget",icon:kC,menuElement:h(zi,{}),action:o=>{e(Sn.MARKDOWN,o)},order:20},{title:"Filter Sets",icon:Wa,menuElement:h(zi,{}),action:o=>{e(Sn.FILTER_SET_MANAGER,o)},order:25},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:yd,action:()=>{n(Yt.LINKER)},order:40,shortcut:Cs.LINKER},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:eb,action:()=>{s()},order:60,shortcut:an.TABLE.CLEAR_ALL_FILTERS}],[e,n,s]);return h(Nn,{popperClassName:"controls-menu-popper",actions:i})}Fc.propTypes={handleControlSelect:D.exports.func,handleToolSelect:D.exports.func,onClearFilter:D.exports.func};Fc.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};zi.propTypes={forwardedProps:D.exports.shape({iconElement:D.exports.node,displayShortcut:D.exports.string,isMouseSelected:D.exports.bool.isRequired,isKeyboardSelected:D.exports.bool.isRequired,closeMenu:D.exports.func.isRequired,menuItem:D.exports.shape({action:D.exports.func,title:D.exports.string,disabled:D.exports.bool}).isRequired})};zi.defaultProps={forwardedProps:null};const gy=Gs(Sg,null),fy={layoutStorage:gy},Cy=t=>t.layoutStorage,by=t=>t.serverConfigValues;Object.entries(fy).map(([t,e])=>ho.register(t,e));const uu=10;function Sy(t){const{onExportLayout:e,onImportLayout:n,onResetLayout:s,onSelect:i,widgets:o=[]}=t,[r,l]=w.exports.useState(!1),[a,d]=w.exports.useState(""),c=w.exports.useRef(null),u=w.exports.useRef(),m=w.exports.useCallback((y,E)=>{y!=null&&i(y,E)},[i]),p=w.exports.useCallback(y=>{d(y.target.value)},[]),g=w.exports.useCallback(y=>{u.current!=null&&(Math.abs(u.current.x-y.clientX)>=uu||Math.abs(u.current.y-y.clientY)>=uu)&&(l(!0),window.removeEventListener("mousemove",g),m(u.current.widget,y),u.current=void 0)},[u,m]),f=w.exports.useCallback((y,E)=>{u.current={x:y.clientX,y:y.clientY,widget:E},window.addEventListener("mousemove",g)},[g]),b=w.exports.useCallback((y,E)=>{var I;window.removeEventListener("mousemove",g),((I=u.current)==null?void 0:I.widget)===E&&(l(!0),m(E)),u.current=void 0},[g,u,m]),C=w.exports.useMemo(()=>o.filter(y=>{var E;return a?(E=y.name)==null?void 0:E.toLowerCase().includes(a.toLowerCase()):!0}),[a,o]).sort((y,E)=>{var I,R,N;return(N=(R=y.name)==null?void 0:R.localeCompare((I=E.name)!=null?I:""))!=null?N:0}),S=w.exports.useMemo(()=>C.map(y=>{var E,I;return h("li",{children:T(W,{kind:"ghost","data-testid":`panel-list-item-${(E=y.name)!=null?E:""}-button`,onMouseDown:R=>{f(R,y)},onMouseUp:R=>{b(R,y)},onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&m(y)},disabled:r,onClick:()=>{},children:[h(im,{type:y.type})," ",(I=y.name)!=null?I:""]})},y.name)}),[C,r,f,b,m]),v=w.exports.useMemo(()=>S.length===0?h("span",{children:"No bound variables found."}):null,[S]);return T("div",{className:"widget-list-container d-flex flex-column",children:[h("div",{className:"widget-list-header",children:h(ws,{value:a,placeholder:"Find Table, Plot or Widget",onChange:p,ref:c})}),T("ul",{className:"widget-list flex-grow-1",children:[v&&h("li",{className:"widget-list-message",children:v}),!v&&S]}),h("div",{children:h("hr",{})}),T("div",{className:"widget-list-footer",children:[T(W,{kind:"ghost",onClick:e,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:za,icon:Bc,transform:"right-5 down-5"}),h(Z,{icon:Bc,transform:"right-8 down-6"})]}),"Export Layout"]}),T(W,{kind:"ghost",onClick:n,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:za,icon:$a,transform:"right-5 down-5"}),h(Z,{icon:$a,transform:"right-8 down-6"})]}),"Import Layout"]}),h(W,{kind:"ghost",icon:di,onClick:s,tooltip:"Reset Layout"})]})]})}const wy=async(t,e,n)=>{let s,i,o,r;if(sl(e)?(s=e.settings,i=e.table,o=void 0,r=e.tableSettings):(s={},i="",o=e.figure,r={}),n!==void 0&&(n.tableSettings!=null&&(r=n.tableSettings),n.table!=null&&(i=n.table),n.figure!=null&&(o=n.figure),n.settings!=null&&(s={...s,...n.settings})),o!==void 0){const d={title:o,name:o,type:M.VariableType.FIGURE},c=await t.getObject(d);return eo.makeModel(s,c)}const l={title:o,name:i,type:M.VariableType.TABLE},a=await t.getObject(l);return te.applyTableSettings(a,r,lr(jl.getState())),eo.makeModelFromSettings(s,a)},vy=async(t,e,n=M.VariableType.TABLE)=>{const{table:s}=e,i={title:s,name:s,type:n},o=await t.getObject(i);return hc.makeModel(o)};function Ty({onAutoFillClick:t=()=>{}}){return T("div",{className:"empty-dashboard-container",children:[T("div",{className:"hint-container",children:[h(Z,{icon:hC})," ",h("br",{}),"Use the panel list to add objects from a query."]}),T("div",{className:"empty-dashboard",children:[h("div",{className:"add-panels-hint",children:"Drag Panels Here"}),h(W,{kind:"tertiary",onClick:t,children:"Auto fill objects"})]})]})}function Ey(t){return t.version===2}function yy(t){return Array.isArray(t)}const Zr=X.module("UserLayoutUtils"),Iy={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Wi.COMPONENT,title:Wi.TITLE,isClosable:!1},{type:"react-component",component:Ml.COMPONENT,title:Ml.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:Il.COMPONENT,title:Il.TITLE,isClosable:!1},{type:"react-component",component:Rl.COMPONENT,title:Rl.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},Ry={layoutConfig:[],links:[],filterSets:[],version:2};function Ng(t){if(Ey(t))return t;if(yy(t))return{layoutConfig:t,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${t}`)}async function Dy(t,e=!0){try{const n=await t.getLayouts();if(n.length>0)try{const s=await t.getLayout(n[0]);return Ng(s)}catch(s){Zr.error("Unable to load layout",n[0],":",s),Zr.warn("No valid layouts found, falling back to default layout")}}catch(n){Zr.error("Unable to fetch layout list",n),Zr.warn("Falling back to default layout")}return e?Iy:Ry}function My(t){const{filterSets:e,layoutConfig:n,links:s}=t;return{filterSets:e,layoutConfig:n,links:s,version:2}}const al={exportLayout:My,getDefaultLayout:Dy,normalizeLayout:Ng},Qr=X.module("DownloadServiceWorkerUtils"),Fg=class{static registerOnLoaded(){new URL("/ide/",window.location.href).origin===window.location.origin&&("serviceWorker"in navigator?window.addEventListener("load",()=>{const e=new URL("/ide/download/serviceWorker.js",window.location.href);navigator.serviceWorker.register(e).then(n=>{n.update(),Qr.info("Registering service worker on ",e,n)}).catch(n=>{Qr.error("Failed to register service worker",n)})}):Qr.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const e=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(Fg.DOWNLOAD_PATH));if(e&&e.active)return Qr.info("Download service worker is active."),e.active;throw new Error("Can not find download service worker.")}throw new Error("Download service worker is not available.")}static unregisterSW(){}};let Nl=Fg;Nl.DOWNLOAD_PATH="/download/";const xg={react:Y},Ny=pf(xg),Fy=gf({requires:Ny}),xy=ff.createRequires(xg),_y=Cf({requires:xy}),ky=X.module("PluginUtils");class gd{static loadComponentPlugin(e){if("".split(",").includes(e)){const o=Y.lazy(()=>Tf(()=>import(`./internal/${e}`),[])),r=Y.forwardRef((l,a)=>h(w.exports.Suspense,{fallback:h("div",{children:"Loading Plugin..."}),children:h(o,{ref:a,...l})}));return r.pluginName=e,r.displayName="Local Plugin",r}const n=new URL("/ide/plugins/",`${window.location}`),s=new URL(`${e}.js`,n),i=Y.forwardRef((o,r)=>h(Fy,{url:s,render:({err:l,Component:a})=>{if(l!=null&&l!==""){const d=`Error loading plugin ${e} from ${s} due to ${l}`;return ky.error(d),h("div",{className:"error-message",children:`${d}`})}return h(a,{ref:r,...o})}}));return i.pluginName=e,i.displayName="Plugin",i}static async loadModulePlugin(e){return await _y(e)}static async loadJson(e){return new Promise((n,s)=>{const i=new XMLHttpRequest;i.addEventListener("load",()=>{try{const o=JSON.parse(i.responseText);n(o)}catch(o){s(o)}}),i.addEventListener("error",o=>{s(o)}),i.open("GET",e),i.send()})}}const At=X.module("AppMainContainer");class Zo extends w.exports.Component{constructor(e){super(e),this.getDashboardPlugins=Ce(n=>[...n.entries()].filter(([,s])=>s.DashboardPlugin!=null).map(([s,{DashboardPlugin:i}])=>h(i,{},s))),this.handleSettingsMenuHide=this.handleSettingsMenuHide.bind(this),this.handleSettingsMenuShow=this.handleSettingsMenuShow.bind(this),this.handleError=this.handleError.bind(this),this.handleControlSelect=this.handleControlSelect.bind(this),this.handleToolSelect=this.handleToolSelect.bind(this),this.handleClearFilter=this.handleClearFilter.bind(this),this.handleDataChange=this.handleDataChange.bind(this),this.handleAutoFillClick=this.handleAutoFillClick.bind(this),this.handleGoldenLayoutChange=this.handleGoldenLayoutChange.bind(this),this.handleLayoutConfigChange=this.handleLayoutConfigChange.bind(this),this.handleExportLayoutClick=this.handleExportLayoutClick.bind(this),this.handleImportLayoutClick=this.handleImportLayoutClick.bind(this),this.handleImportLayoutFiles=this.handleImportLayoutFiles.bind(this),this.handleLoadTablePlugin=this.handleLoadTablePlugin.bind(this),this.handleResetLayoutClick=this.handleResetLayoutClick.bind(this),this.handleWidgetMenuClick=this.handleWidgetMenuClick.bind(this),this.handleWidgetsMenuClose=this.handleWidgetsMenuClose.bind(this),this.handleWidgetSelect=this.handleWidgetSelect.bind(this),this.handlePaste=this.handlePaste.bind(this),this.hydrateChart=this.hydrateChart.bind(this),this.hydrateGrid=this.hydrateGrid.bind(this),this.hydratePandas=this.hydratePandas.bind(this),this.hydrateDefault=this.hydrateDefault.bind(this),this.openNotebookFromURL=this.openNotebookFromURL.bind(this),this.importElement=Y.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(Yt.LINKER)},shortcut:Cs.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:an.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{At.debug("Consume unhandled save shortcut")},shortcut:Cs.SAVE,isGlobal:!0}],isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,n){return td.hydrate({...e,unzip:s=>Su.loadAsync(s).then(i=>Object.values(i.files))},n)}componentDidMount(){this.initWidgets(),window.addEventListener("beforeunload",Zo.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:n}=this.props;e.dashboardData!==n&&this.handleDataChange(n)}componentWillUnmount(){this.deinitWidgets(),window.removeEventListener("beforeunload",Zo.handleWindowBeforeUnload)}initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){At.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(n=>{At.debug("Got updates",n),this.setState(({widgets:s})=>{const{updated:i,created:o,removed:r}=n,l=[...i,...r],a=s.filter(c=>!l.some(u=>u.name===c.name));return[...i,...o].forEach(c=>{c.name!=null&&c.name!==""&&a.push(c)}),{widgets:a}})})}deinitWidgets(){var e;(e=this.widgetListenerRemover)==null||e.call(this)}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:n}=e.params;if(n){const{session:s,sessionConfig:i}=this.props;if(s==null||i==null){At.error("No session available to open notebook URL",n);return}const o={id:`/${n}`,itemName:`/${n}`},r=i.type,l={value:null,language:r};this.emitLayoutEvent(Pe.SELECT_NOTEBOOK,s,r,l,o,!0)}}sendClearFilter(){this.emitLayoutEvent(Ae.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...n){var s;(s=this.goldenLayout)==null||s.eventHub.emit(e,...n)}handleError(e){ye.isCanceled(e)||At.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,n=null){switch(At.debug("handleControlSelect",e),e){case Sn.DROPDOWN_FILTER:this.emitLayoutEvent(Ae.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:n});break;case Sn.INPUT_FILTER:this.emitLayoutEvent(Ae.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:n});break;case Sn.MARKDOWN:this.emitLayoutEvent(Jp.OPEN,{title:"Markdown",type:e,dragEvent:n});break;case Sn.FILTER_SET_MANAGER:this.emitLayoutEvent(Ae.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:n});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){At.debug("handleToolSelect",e);const{activeTool:n,setActiveTool:s}=this.props;s(n===e?Yt.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:n}=this.props,{closed:s,filterSets:i,links:o}=e;n({closed:s,filterSets:i,links:o})}handleGoldenLayoutChange(e){this.goldenLayout=e}handleLayoutConfigChange(e){const{updateWorkspaceData:n}=this.props;n({layoutConfig:e})}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,n){this.setState({isPanelsMenuShown:!1}),At.debug("handleWidgetSelect",e,n),this.openWidget(e,n)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;At.debug("handleAutoFillClick",e);const n=e.sort((s,i)=>s.title!=null&&i.title!=null?s.title.localeCompare(i.title):0);for(let s=0;s<n.length;s+=1)this.openWidget(n[s])}handleExportLayoutClick(){At.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:n}=e,s=al.exportLayout(n);At.info("handleExportLayoutClick exportedConfig",s);const i=new Blob([JSON.stringify(s)],{type:"application/json"}),o=M.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),r=document.createElement("a");r.href=URL.createObjectURL(i),r.download=`deephaven-app-layout-${o}.json`,r.click()}catch(e){At.error("Unable to export layout",e)}}handleImportLayoutClick(){At.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){At.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.resetLayout()}handleImportLayoutFiles(e){var n;e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile((n=e.target.files)==null?void 0:n[0])}async importLayoutFile(e){try{const{updateDashboardData:n,updateWorkspaceData:s}=this.props,i=await e.text(),o=JSON.parse(i),{filterSets:r,layoutConfig:l,links:a}=al.normalizeLayout(o);s({layoutConfig:l}),n(Dn,{filterSets:r,links:a})}catch(n){At.error("Unable to import layout",n)}}async resetLayout(){const{layoutStorage:e,session:n}=this.props,{filterSets:s,layoutConfig:i,links:o}=await al.getDefaultLayout(e,n!==void 0),{updateDashboardData:r,updateWorkspaceData:l}=this.props;l({layoutConfig:i}),r(Dn,{filterSets:s,links:o})}handlePaste(e){let n=e.currentTarget.parentElement;for(;n!=null;){if(n.classList.contains("monaco-editor"))return;n=n.parentElement}const{clipboardData:s}=e,i=s.getData("Text"),o=/“|”/g;o.test(i)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,i.replace(o,'"')))}handleLoadTablePlugin(e){const{plugins:n}=this.props,s=n.get(e);return s!=null&&s.TablePlugin!=null?s.TablePlugin:gd.loadComponentPlugin(e)}hydrateDefault(e,n){const{connection:s}=this.props,{metadata:i}=e;if((i==null?void 0:i.type)!=null&&((i==null?void 0:i.id)!=null||(i==null?void 0:i.name)!=null)){const o=i.id!=null?{type:i.type,id:i.id}:{type:i.type,name:i.name,title:i.name};return{fetch:()=>s.getObject(o),localDashboardId:n,...e}}return td.hydrate(e,n)}hydrateGrid(e,n){var s;return this.hydrateTable(e,n,(s=e.metadata.type)!=null?s:M.VariableType.TABLE)}hydratePandas(e,n){return this.hydrateTable(e,n,M.VariableType.PANDAS)}hydrateTable(e,n,s=M.VariableType.TABLE){const{connection:i}=this.props;return{...e,getDownloadWorker:Nl.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:n,makeModel:()=>vy(i,e.metadata,s)}}hydrateChart(e,n){const{connection:s}=this.props;return{...e,localDashboardId:n,makeModel:()=>{const{metadata:i,panelState:o}=e;return wy(s,i,o)}}}openWidget(e,n){const{connection:s}=this.props;this.emitLayoutEvent(Re.OPEN,{dragEvent:n,fetch:()=>s.getObject(e),widget:e})}render(){const{activeTool:e,plugins:n,user:s,workspace:i,serverConfigValues:o}=this.props,{data:r}=i,{layoutConfig:l}=r,{permissions:a}=s,{canUsePanels:d}=a,{contextActions:c,isPanelsMenuShown:u,isSettingsMenuShown:m,widgets:p}=this.state,g=this.getDashboardPlugins(n);return T("div",{className:z("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[h("nav",{className:"nav-container",children:T("div",{className:"app-main-top-nav-menus",children:[h("img",{src:wg,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),T("div",{children:[T(W,{kind:"ghost",className:"btn-panels-menu",icon:cb,onClick:()=>{},children:["Controls",h(Fc,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&T(W,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:rb,children:["Panels",h(_n,{isShown:u,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:h(Sy,{widgets:p,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),h(W,{kind:"ghost",className:z("btn-settings-menu",{"text-warning":s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:h(Z,{icon:or,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),T(bv,{emptyDashboard:h(Ty,{onAutoFillClick:this.handleAutoFillClick}),id:Dn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[h(y2,{hydrate:this.hydrateGrid,getDownloadWorker:Nl.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),h(b2,{hydrate:this.hydrateChart}),h(S2,{}),h(v2,{hydrateConsole:Zo.hydrateConsole,notebooksUrl:new URL("/notebooks/",`${window.location}`).href}),h(T2,{}),h(_2,{hydrate:this.hydratePandas}),h(x2,{}),h(F2,{}),g]}),h(mt,{in:m,timeout:Be.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:h(bo,{serverConfigValues:o,onDone:this.handleSettingsMenuHide})}),h(oe,{actions:c}),h("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles})]})}}const Oy=t=>{var e,n;return{activeTool:ql(t),dashboardData:Zt(t,Dn),layoutStorage:Cy(t),plugins:T0(t),connection:M1(t,Dn),session:(e=Si(t,Dn))==null?void 0:e.session,sessionConfig:(n=Si(t,Dn))==null?void 0:n.config,user:Mm(t),workspace:Kl(t),serverConfigValues:by(t)}},Ly=It(Oy,{setActiveTool:Xl,updateDashboardData:es,updateWorkspaceData:qm})(bf(Zo));function Ay(){return T("div",{className:"app",children:[h(Ly,{}),h(Vu,{})]})}const Py=X.module("LocalWorkspaceStorage"),Go=class{static async makeDefaultWorkspaceData(t,e){const{filterSets:n,links:s,layoutConfig:i}=await al.getDefaultLayout(t,e==null?void 0:e.isConsoleAvailable);return{settings:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:nt.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(t,e){return{data:await Go.makeDefaultWorkspaceData(t,e)}}constructor(t){this.layoutStorage=t}async load(t){var e;try{return JSON.parse((e=localStorage.getItem(Go.STORAGE_KEY))!=null?e:"")}catch{return Py.info("Unable to load workspace data, initializing to default data"),Go.makeDefaultWorkspace(this.layoutStorage,t)}}async save(t){return localStorage.setItem(Go.STORAGE_KEY,JSON.stringify(t)),t}};let _g=Go;_g.STORAGE_KEY="deephaven.WorkspaceStorage";class Hy extends Error{constructor(){super(...arguments),this.isNoConsolesError=!0}}function Uy(t){return t.isNoConsolesError}const Gi=X.module("SessionUtils");function Vy(){return new URL("/jsapi",`${window.location}`)}function kg(){const t=Vy();return`${t.protocol}//${t.host}`}function By(){const t=kg();return Gi.info(`Starting connection to '${t}'...`),new M.IdeConnection(t)}async function $y(t){Gi.info("Getting console types...");const e=await t.getConsoleTypes();if(Gi.info("Available types:",e),e.length===0)throw new Hy("No console types available");const n=e[0];Gi.info("Starting session with type",n);const s=await t.startSession(n),i={type:n,id:$e.generate()};return Gi.info("Console session established",i),{session:s,config:i,connection:t}}function Wy(){const t=kg();return Gi.info("createCoreClient",t),new M.CoreClient(t)}class zy{constructor(e,n=""){this.storageService=e,this.root=n}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(n=>n.basename)}async getLayout(e){const s=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(s)}}const Po=X.module("GrpcFileStorageTable"),fd=class{constructor(t,e="",n=e){this.currentSize=0,this.listeners=[],this.childTables=new Map,this.storageService=t,this.baseRoot=e,this.root=n,n===e&&(this.doRefresh=je(this.doRefresh.bind(this),fd.REFRESH_DEBOUNCE))}removeBaseRoot(t){return ue.removeRoot(this.baseRoot,t)}getViewportData(){var t;return this.viewportUpdatePromise||this.refreshInternal(),(t=this.viewportUpdatePromise)!=null?t:Promise.resolve({items:[],offset:0})}getSnapshot(t){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(t,e){const n=t.split("/");let s=n.shift();if((s===void 0||s==="")&&(s=n.shift()),s===void 0||s==="")throw new Error(`Invalid path: ${t}`);const i=n.join("/");if(e){if(!this.childTables.has(s)){const o=new fd(this.storageService,this.baseRoot,`${this.root}/${s}`);this.childTables.set(s,o)}if(i){const o=this.childTables.get(s);o==null||o.setExpanded(i,e)}}else if(this.childTables.has(s))if(i){const o=this.childTables.get(s);o==null||o.setExpanded(i,e)}else this.childTables.delete(s);this.currentViewport&&this.refreshInternal()}collapseAll(){this.childTables.clear(),this.currentViewport&&this.refreshInternal()}setSearch(t){throw new Error("Method not implemented.")}setViewport(t){this.currentViewport=t,this.refreshInternal()}setFilters(){throw new Error("Method not implemented.")}setSorts(){throw new Error("Method not implemented.")}setReversed(){throw new Error("Method not implemented.")}close(){this.listeners=[]}onUpdate(t){return this.listeners=[...this.listeners,t],()=>{this.listeners=this.listeners.filter(e=>e!==t)}}doRefresh(t){Po.debug2("doRefresh",this.root),t(this.fetchData())}refresh(){var n;Po.debug2("refresh",this.root),(n=this.viewportUpdatePromise)==null||n.cancel();const t=new Promise(s=>{this.doRefresh(s)}),e=ye.makeCancelable(t.then(s=>{if(this.viewportUpdatePromise!==e)throw new Qi;return this.currentViewportData=s,this.sendUpdate(),s}));e.catch(s=>{ye.isCanceled(s)||Po.error("Error updating viewport",s)}),this.viewportUpdatePromise=e}refreshInternal(){try{this.refresh()}catch(t){ye.isCanceled(t)||Po.error("Unable to refresh data",t)}}async fetchData(){const{currentViewport:t}=this;if(!t)throw new Error("No viewport set");let n=(await this.storageService.listItems(this.root)).map(s=>({type:s.type,filename:this.removeBaseRoot(s.filename),basename:s.basename,id:this.removeBaseRoot(s.filename),isExpanded:s.type==="directory"?this.childTables.has(s.basename):void 0})).sort((s,i)=>s.type!==i.type?s.type==="directory"?-1:1:s.basename.localeCompare(i.basename));for(let s=0;s<n.length;s+=1){const i=n[s],{basename:o,filename:r}=i;if(r===this.removeBaseRoot(`${this.root}/${o}`)&&i.type==="directory"){const l=this.childTables.get(o);if(l!=null){l.setViewport({top:0,bottom:t.bottom-s});const a=await l.getViewportData();n.splice(s+1,0,...a.items)}}}return this.currentSize=n.length,Po.debug2(this.root,"items",n,t),n=n.slice(t.top,t.bottom),{items:n,offset:t.top}}sendUpdate(){var n;const{listeners:t}=this,e=(n=this.currentViewportData)!=null?n:{items:[],offset:0};for(let s=0;s<t.length;s+=1)t[s](e)}};let Og=fd;Og.REFRESH_DEBOUNCE=50;const Gy=X.module("GrpcFileStorage"),Lg=class{constructor(t,e=""){this.tables=[],this.refreshTables=Zn(()=>{this.tables.forEach(n=>n.refresh())},Lg.REFRESH_THROTTLE),this.storageService=t,this.root=e}removeRoot(t){return ue.removeRoot(this.root,t)}addRoot(t){return ue.addRoot(this.root,t)}async createDirectory(t){return await this.storageService.createDirectory(this.addRoot(t)),this.refreshTables(),{type:"directory",id:t,filename:t,basename:ue.getBaseName(t)}}async getTable(){const t=new Og(this.storageService,this.root);return this.tables.push(t),t}async saveFile(t){const e=dh.storage.FileContents.text(t.content);return await this.storageService.saveFile(this.addRoot(t.filename),e,!0),this.refreshTables(),t}async loadFile(t){const n=await(await this.storageService.loadFile(this.addRoot(t))).text();return{filename:t,basename:ue.getBaseName(t),content:n}}async deleteFile(t){await this.storageService.deleteItem(this.addRoot(t)),this.refreshTables()}async moveFile(t,e){await this.storageService.moveItem(this.addRoot(t),this.addRoot(e)),this.refreshTables()}async info(t){const e=await this.storageService.listItems(this.addRoot(ue.getPath(t)),ue.getBaseName(t));if(e.length===0)throw new vc;if(e.length>1)throw Gy.error("More than one matching file found, should never happen.",e),new Error("More than one matching file found");const n=e[0];return{filename:this.removeRoot(n.filename),basename:n.basename,id:this.removeRoot(n.filename),type:n.type}}};let Ag=Lg;Ag.REFRESH_THROTTLE=150;const pi=X.module("AppInit");async function Ky(){pi.debug("Loading plugins...");try{const t=await gd.loadJson("/js-plugins/manifest.json");pi.debug("Plugin manifest loaded:",t);const e=[];for(let i=0;i<t.plugins.length;i+=1){const{name:o,main:r}=t.plugins[i],l=`/js-plugins/${o}/${r}`;e.push(gd.loadModulePlugin(l))}const n=await Promise.all(e),s=new Map;for(let i=0;i<n.length;i+=1){const{name:o}=t.plugins[i];s.set(o,n[i])}return pi.info("Plugins loaded:",s),s}catch(t){return pi.error("Unable to load plugins:",t),new Map}}async function qy(t){let e;try{e=await $y(t)}catch(n){if(!Uy(n))throw n}return e}function xc(t){const{workspace:e,setActiveTool:n,setCommandHistoryStorage:s,setDashboardData:i,setFileStorage:o,setLayoutStorage:r,setDashboardConnection:l,setDashboardSessionWrapper:a,setPlugins:d,setUser:c,setWorkspace:u,setWorkspaceStorage:m,setServerConfigValues:p}=t,[g,f]=w.exports.useState(),[b,C]=w.exports.useState(!0),S=w.exports.useCallback(async()=>{var R,N;try{pi.info("Initializing Web UI","0.26.0",navigator.userAgent);const F=await Ky(),B=By(),U=await qy(B);B.addEventListener(M.IdeConnection.HACK_CONNECTION_FAILURE,De=>{var dt;const{detail:qe}=De;pi.error("Connection failure",`${JSON.stringify(qe)}`),f(`Unable to connect: ${(dt=qe.details)!=null?dt:"Unknown Error"}`)});const x="user",H=Wy();await H.login({type:M.CoreClient.LOGIN_TYPE_ANONYMOUS});const A=H.getStorageService(),O=new zy(A,"/layouts"),_=new Ag(A,"/notebooks"),k=new _g(O),V=new z2,G=await k.load({isConsoleAvailable:U!==void 0}),{data:q}=G,{settings:Q}=q;Q.defaultDecimalFormatOptions===void 0&&(Q.defaultDecimalFormatOptions={defaultFormatString:_e.DEFAULT_FORMAT_STRING}),Q.defaultIntegerFormatOptions===void 0&&(Q.defaultIntegerFormatOptions={defaultFormatString:Ze.DEFAULT_FORMAT_STRING}),Q.truncateNumbersWithPound===void 0&&(Q.truncateNumbersWithPound=!1);const{shortcutOverrides:ce={}}=Q,le=Kt.isMacPlatform?(R=ce.mac)!=null?R:{}:(N=ce.windows)!=null?N:{};Object.entries(le).forEach(([De,qe])=>{var dt;(dt=Le.get(De))==null||dt.setKeyState(qe)});const Ee={filterSets:q.filterSets,links:q.links},ee=await H.getServerConfigValues(),pe=new Map(ee),ve={name:x,operateAs:x,groups:[],permissions:{isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:pe.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:pe.get("internal.webClient.appInit.canDownloadCsv")!=="false"}};n(Yt.DEFAULT),p(pe),s(V),i(Dn,Ee),o(_),r(O),l(Dn,B),U!==void 0&&a(Dn,U),d(F),c(ve),m(k),u(G)}catch(F){pi.error(F),f(F)}},[n,s,i,o,r,l,a,d,c,u,m,p]),v=w.exports.useCallback(()=>{document.fonts!=null?document.fonts.ready.then(()=>{C(!1)}):C(!1)},[]);w.exports.useEffect(function(){S(),v()},[S,v]);const y=e==null&&g==null||b,E=!y&&g==null,I=g!=null?`${g}`:null;return T(we,{children:[E&&h(Ay,{}),h(Ul,{isLoading:y,isLoaded:E,errorMessage:I}),T("div",{id:"preload-fonts",style:{visibility:"hidden",position:"absolute",top:-1e4},children:[h("p",{className:"fira-sans-regular",children:"preload"}),h("p",{className:"fira-sans-semibold",children:"preload"}),h("p",{className:"fira-mono",children:"preload"})]})]})}xc.propTypes={workspace:D.exports.shape({}),workspaceStorage:D.exports.shape({close:D.exports.func}),setActiveTool:D.exports.func.isRequired,setCommandHistoryStorage:D.exports.func.isRequired,setDashboardData:D.exports.func.isRequired,setFileStorage:D.exports.func.isRequired,setLayoutStorage:D.exports.func.isRequired,setDashboardConnection:D.exports.func.isRequired,setDashboardSessionWrapper:D.exports.func.isRequired,setPlugins:D.exports.func.isRequired,setUser:D.exports.func.isRequired,setWorkspace:D.exports.func.isRequired,setWorkspaceStorage:D.exports.func.isRequired};xc.defaultProps={workspace:null,workspaceStorage:null};const Yy=t=>({workspace:Kl(t),workspaceStorage:S0(t)}),mu=It(Yy,{setActiveTool:Xl,setCommandHistoryStorage:I0,setDashboardData:Cp,setFileStorage:R0,setLayoutStorage:G2,setDashboardConnection:N1,setDashboardSessionWrapper:F1,setPlugins:M0,setUser:E0,setWorkspace:Km,setWorkspaceStorage:y0,setServerConfigValues:N0})(xc);function Xy(){return h(Sf,{basename:"/ide/",children:T(wf,{children:[h(Pc,{exact:!0,path:"/",component:mu}),h(Pc,{path:"/notebook/:notebookPath+",component:mu}),h(vf,{from:"*",to:"/"})]})})}Boolean(window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function jy(){"serviceWorker"in navigator&&navigator.serviceWorker.getRegistrations().then(t=>{t.forEach(e=>{e.scope.endsWith("/download/")||e.unregister()})})}ry();Ci.render(h(fu,{store:jl,children:h(Xy,{})}),document.getElementById("root"));jy();Nl.registerOnLoaded();rt.init({getWorker:()=>new Ef});window["__react-beautiful-dnd-disable-dev-warnings"]=!0;
|
|
47
|
-
//# sourceMappingURL=index.
|
|
46
|
+
Barrage Version: ${i}`,children:"Copy Versions"})]})]})]}),h("div",{className:"app-settings-footer-item",children:h(J2,{})})]}),h("div",{className:"app-settings-footer-section",children:h("div",{className:"logo",children:h("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:h("img",{src:wg,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}};let bo=us;bo.defaultProps={onDone:()=>{}};bo.FORMATTING_SECTION_KEY="SettingsMenu.formatting";bo.COLUMN_SPECIFIC_SECTION_KEY="SettingsMenu.columnFormatting";bo.APPLICATION_SECTION_KEY="ApplicationMenu.settings";bo.SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";const hu=10;function zi(t){const{forwardedProps:{menuItem:{action:e,title:n,disabled:s},iconElement:i,displayShortcut:o,isMouseSelected:r,isKeyboardSelected:l,closeMenu:a}}=t,d=w.exports.useRef(),c=w.exports.useRef(),u=w.exports.useRef(null),[m,p]=w.exports.useState(!1),g=w.exports.useCallback(C=>{d.current!=null&&c.current!=null&&u.current&&(Math.abs(d.current-C.clientX)>=hu||Math.abs(c.current-C.clientY)>=hu)&&(p(!0),window.removeEventListener("mousemove",g),a(),e(C),u.current=null)},[e,a]);function f(C){d.current=C.clientX,c.current=C.clientY,u.current=C.target,window.addEventListener("mousemove",g)}function b(C){u.current===C.target&&(p(!0),a(),e(),window.removeEventListener("mousemove",g)),u.current=null}return w.exports.useEffect(function(){return function(){return window.removeEventListener("mousemove",g)}},[g]),T("button",{type:"button",className:z("btn-context-menu",{disabled:s},{active:r&&!s},{"keyboard-active":l&&!s}),onMouseDown:f,onMouseUp:b,disabled:m,children:[h("span",{className:z("icon"),children:i}),h("span",{className:"title",children:n}),h("span",{className:"shortcut",children:o})]})}function Fc(t){const{handleControlSelect:e,handleToolSelect:n,onClearFilter:s}=t,i=w.exports.useMemo(()=>[{title:"Input Filter",icon:ib,menuElement:h(zi,{}),action:o=>{e(Sn.INPUT_FILTER,o)},order:10},{title:"Dropdown Filter",icon:Ou,menuElement:h(zi,{}),action:o=>{e(Sn.DROPDOWN_FILTER,o)},order:15},{title:"Markdown Widget",icon:kC,menuElement:h(zi,{}),action:o=>{e(Sn.MARKDOWN,o)},order:20},{title:"Filter Sets",icon:Wa,menuElement:h(zi,{}),action:o=>{e(Sn.FILTER_SET_MANAGER,o)},order:25},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:yd,action:()=>{n(Yt.LINKER)},order:40,shortcut:Cs.LINKER},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:eb,action:()=>{s()},order:60,shortcut:an.TABLE.CLEAR_ALL_FILTERS}],[e,n,s]);return h(Nn,{popperClassName:"controls-menu-popper",actions:i})}Fc.propTypes={handleControlSelect:D.exports.func,handleToolSelect:D.exports.func,onClearFilter:D.exports.func};Fc.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};zi.propTypes={forwardedProps:D.exports.shape({iconElement:D.exports.node,displayShortcut:D.exports.string,isMouseSelected:D.exports.bool.isRequired,isKeyboardSelected:D.exports.bool.isRequired,closeMenu:D.exports.func.isRequired,menuItem:D.exports.shape({action:D.exports.func,title:D.exports.string,disabled:D.exports.bool}).isRequired})};zi.defaultProps={forwardedProps:null};const gy=Gs(Sg,null),fy={layoutStorage:gy},Cy=t=>t.layoutStorage,by=t=>t.serverConfigValues;Object.entries(fy).map(([t,e])=>ho.register(t,e));const uu=10;function Sy(t){const{onExportLayout:e,onImportLayout:n,onResetLayout:s,onSelect:i,widgets:o=[]}=t,[r,l]=w.exports.useState(!1),[a,d]=w.exports.useState(""),c=w.exports.useRef(null),u=w.exports.useRef(),m=w.exports.useCallback((y,E)=>{y!=null&&i(y,E)},[i]),p=w.exports.useCallback(y=>{d(y.target.value)},[]),g=w.exports.useCallback(y=>{u.current!=null&&(Math.abs(u.current.x-y.clientX)>=uu||Math.abs(u.current.y-y.clientY)>=uu)&&(l(!0),window.removeEventListener("mousemove",g),m(u.current.widget,y),u.current=void 0)},[u,m]),f=w.exports.useCallback((y,E)=>{u.current={x:y.clientX,y:y.clientY,widget:E},window.addEventListener("mousemove",g)},[g]),b=w.exports.useCallback((y,E)=>{var I;window.removeEventListener("mousemove",g),((I=u.current)==null?void 0:I.widget)===E&&(l(!0),m(E)),u.current=void 0},[g,u,m]),C=w.exports.useMemo(()=>o.filter(y=>{var E;return a?(E=y.name)==null?void 0:E.toLowerCase().includes(a.toLowerCase()):!0}),[a,o]).sort((y,E)=>{var I,R,N;return(N=(R=y.name)==null?void 0:R.localeCompare((I=E.name)!=null?I:""))!=null?N:0}),S=w.exports.useMemo(()=>C.map(y=>{var E,I;return h("li",{children:T(W,{kind:"ghost","data-testid":`panel-list-item-${(E=y.name)!=null?E:""}-button`,onMouseDown:R=>{f(R,y)},onMouseUp:R=>{b(R,y)},onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&m(y)},disabled:r,onClick:()=>{},children:[h(im,{type:y.type})," ",(I=y.name)!=null?I:""]})},y.name)}),[C,r,f,b,m]),v=w.exports.useMemo(()=>S.length===0?h("span",{children:"No bound variables found."}):null,[S]);return T("div",{className:"widget-list-container d-flex flex-column",children:[h("div",{className:"widget-list-header",children:h(ws,{value:a,placeholder:"Find Table, Plot or Widget",onChange:p,ref:c})}),T("ul",{className:"widget-list flex-grow-1",children:[v&&h("li",{className:"widget-list-message",children:v}),!v&&S]}),h("div",{children:h("hr",{})}),T("div",{className:"widget-list-footer",children:[T(W,{kind:"ghost",onClick:e,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:za,icon:Bc,transform:"right-5 down-5"}),h(Z,{icon:Bc,transform:"right-8 down-6"})]}),"Export Layout"]}),T(W,{kind:"ghost",onClick:n,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:za,icon:$a,transform:"right-5 down-5"}),h(Z,{icon:$a,transform:"right-8 down-6"})]}),"Import Layout"]}),h(W,{kind:"ghost",icon:di,onClick:s,tooltip:"Reset Layout"})]})]})}const wy=async(t,e,n)=>{let s,i,o,r;if(sl(e)?(s=e.settings,i=e.table,o=void 0,r=e.tableSettings):(s={},i="",o=e.figure,r={}),n!==void 0&&(n.tableSettings!=null&&(r=n.tableSettings),n.table!=null&&(i=n.table),n.figure!=null&&(o=n.figure),n.settings!=null&&(s={...s,...n.settings})),o!==void 0){const d={title:o,name:o,type:M.VariableType.FIGURE},c=await t.getObject(d);return eo.makeModel(s,c)}const l={title:o,name:i,type:M.VariableType.TABLE},a=await t.getObject(l);return te.applyTableSettings(a,r,lr(jl.getState())),eo.makeModelFromSettings(s,a)},vy=async(t,e,n=M.VariableType.TABLE)=>{const{table:s}=e,i={title:s,name:s,type:n},o=await t.getObject(i);return hc.makeModel(o)};function Ty({onAutoFillClick:t=()=>{}}){return T("div",{className:"empty-dashboard-container",children:[T("div",{className:"hint-container",children:[h(Z,{icon:hC})," ",h("br",{}),"Use the panel list to add objects from a query."]}),T("div",{className:"empty-dashboard",children:[h("div",{className:"add-panels-hint",children:"Drag Panels Here"}),h(W,{kind:"tertiary",onClick:t,children:"Auto fill objects"})]})]})}function Ey(t){return t.version===2}function yy(t){return Array.isArray(t)}const Zr=X.module("UserLayoutUtils"),Iy={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Wi.COMPONENT,title:Wi.TITLE,isClosable:!1},{type:"react-component",component:Ml.COMPONENT,title:Ml.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:Il.COMPONENT,title:Il.TITLE,isClosable:!1},{type:"react-component",component:Rl.COMPONENT,title:Rl.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},Ry={layoutConfig:[],links:[],filterSets:[],version:2};function Ng(t){if(Ey(t))return t;if(yy(t))return{layoutConfig:t,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${t}`)}async function Dy(t,e=!0){try{const n=await t.getLayouts();if(n.length>0)try{const s=await t.getLayout(n[0]);return Ng(s)}catch(s){Zr.error("Unable to load layout",n[0],":",s),Zr.warn("No valid layouts found, falling back to default layout")}}catch(n){Zr.error("Unable to fetch layout list",n),Zr.warn("Falling back to default layout")}return e?Iy:Ry}function My(t){const{filterSets:e,layoutConfig:n,links:s}=t;return{filterSets:e,layoutConfig:n,links:s,version:2}}const al={exportLayout:My,getDefaultLayout:Dy,normalizeLayout:Ng},Qr=X.module("DownloadServiceWorkerUtils"),Fg=class{static registerOnLoaded(){new URL("/ide/",window.location.href).origin===window.location.origin&&("serviceWorker"in navigator?window.addEventListener("load",()=>{const e=new URL("/ide/download/serviceWorker.js",window.location.href);navigator.serviceWorker.register(e).then(n=>{n.update(),Qr.info("Registering service worker on ",e,n)}).catch(n=>{Qr.error("Failed to register service worker",n)})}):Qr.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const e=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(Fg.DOWNLOAD_PATH));if(e&&e.active)return Qr.info("Download service worker is active."),e.active;throw new Error("Can not find download service worker.")}throw new Error("Download service worker is not available.")}static unregisterSW(){}};let Nl=Fg;Nl.DOWNLOAD_PATH="/download/";const xg={react:Y},Ny=pf(xg),Fy=gf({requires:Ny}),xy=ff.createRequires(xg),_y=Cf({requires:xy}),ky=X.module("PluginUtils");class gd{static loadComponentPlugin(e){if("".split(",").includes(e)){const o=Y.lazy(()=>Tf(()=>import(`./internal/${e}`),[])),r=Y.forwardRef((l,a)=>h(w.exports.Suspense,{fallback:h("div",{children:"Loading Plugin..."}),children:h(o,{ref:a,...l})}));return r.pluginName=e,r.displayName="Local Plugin",r}const n=new URL("/ide/plugins/",`${window.location}`),s=new URL(`${e}.js`,n),i=Y.forwardRef((o,r)=>h(Fy,{url:s,render:({err:l,Component:a})=>{if(l!=null&&l!==""){const d=`Error loading plugin ${e} from ${s} due to ${l}`;return ky.error(d),h("div",{className:"error-message",children:`${d}`})}return h(a,{ref:r,...o})}}));return i.pluginName=e,i.displayName="Plugin",i}static async loadModulePlugin(e){return await _y(e)}static async loadJson(e){return new Promise((n,s)=>{const i=new XMLHttpRequest;i.addEventListener("load",()=>{try{const o=JSON.parse(i.responseText);n(o)}catch(o){s(o)}}),i.addEventListener("error",o=>{s(o)}),i.open("GET",e),i.send()})}}const At=X.module("AppMainContainer");class Zo extends w.exports.Component{constructor(e){super(e),this.getDashboardPlugins=Ce(n=>[...n.entries()].filter(([,s])=>s.DashboardPlugin!=null).map(([s,{DashboardPlugin:i}])=>h(i,{},s))),this.handleSettingsMenuHide=this.handleSettingsMenuHide.bind(this),this.handleSettingsMenuShow=this.handleSettingsMenuShow.bind(this),this.handleError=this.handleError.bind(this),this.handleControlSelect=this.handleControlSelect.bind(this),this.handleToolSelect=this.handleToolSelect.bind(this),this.handleClearFilter=this.handleClearFilter.bind(this),this.handleDataChange=this.handleDataChange.bind(this),this.handleAutoFillClick=this.handleAutoFillClick.bind(this),this.handleGoldenLayoutChange=this.handleGoldenLayoutChange.bind(this),this.handleLayoutConfigChange=this.handleLayoutConfigChange.bind(this),this.handleExportLayoutClick=this.handleExportLayoutClick.bind(this),this.handleImportLayoutClick=this.handleImportLayoutClick.bind(this),this.handleImportLayoutFiles=this.handleImportLayoutFiles.bind(this),this.handleLoadTablePlugin=this.handleLoadTablePlugin.bind(this),this.handleResetLayoutClick=this.handleResetLayoutClick.bind(this),this.handleWidgetMenuClick=this.handleWidgetMenuClick.bind(this),this.handleWidgetsMenuClose=this.handleWidgetsMenuClose.bind(this),this.handleWidgetSelect=this.handleWidgetSelect.bind(this),this.handlePaste=this.handlePaste.bind(this),this.hydrateChart=this.hydrateChart.bind(this),this.hydrateGrid=this.hydrateGrid.bind(this),this.hydratePandas=this.hydratePandas.bind(this),this.hydrateDefault=this.hydrateDefault.bind(this),this.openNotebookFromURL=this.openNotebookFromURL.bind(this),this.importElement=Y.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(Yt.LINKER)},shortcut:Cs.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:an.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{At.debug("Consume unhandled save shortcut")},shortcut:Cs.SAVE,isGlobal:!0}],isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,n){return td.hydrate({...e,unzip:s=>Su.loadAsync(s).then(i=>Object.values(i.files))},n)}componentDidMount(){this.initWidgets(),window.addEventListener("beforeunload",Zo.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:n}=this.props;e.dashboardData!==n&&this.handleDataChange(n)}componentWillUnmount(){this.deinitWidgets(),window.removeEventListener("beforeunload",Zo.handleWindowBeforeUnload)}initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){At.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(n=>{At.debug("Got updates",n),this.setState(({widgets:s})=>{const{updated:i,created:o,removed:r}=n,l=[...i,...r],a=s.filter(c=>!l.some(u=>u.name===c.name));return[...i,...o].forEach(c=>{c.name!=null&&c.name!==""&&a.push(c)}),{widgets:a}})})}deinitWidgets(){var e;(e=this.widgetListenerRemover)==null||e.call(this)}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:n}=e.params;if(n){const{session:s,sessionConfig:i}=this.props;if(s==null||i==null){At.error("No session available to open notebook URL",n);return}const o={id:`/${n}`,itemName:`/${n}`},r=i.type,l={value:null,language:r};this.emitLayoutEvent(Pe.SELECT_NOTEBOOK,s,r,l,o,!0)}}sendClearFilter(){this.emitLayoutEvent(Ae.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...n){var s;(s=this.goldenLayout)==null||s.eventHub.emit(e,...n)}handleError(e){ye.isCanceled(e)||At.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,n=null){switch(At.debug("handleControlSelect",e),e){case Sn.DROPDOWN_FILTER:this.emitLayoutEvent(Ae.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:n});break;case Sn.INPUT_FILTER:this.emitLayoutEvent(Ae.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:n});break;case Sn.MARKDOWN:this.emitLayoutEvent(Jp.OPEN,{title:"Markdown",type:e,dragEvent:n});break;case Sn.FILTER_SET_MANAGER:this.emitLayoutEvent(Ae.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:n});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){At.debug("handleToolSelect",e);const{activeTool:n,setActiveTool:s}=this.props;s(n===e?Yt.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:n}=this.props,{closed:s,filterSets:i,links:o}=e;n({closed:s,filterSets:i,links:o})}handleGoldenLayoutChange(e){this.goldenLayout=e}handleLayoutConfigChange(e){const{updateWorkspaceData:n}=this.props;n({layoutConfig:e})}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,n){this.setState({isPanelsMenuShown:!1}),At.debug("handleWidgetSelect",e,n),this.openWidget(e,n)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;At.debug("handleAutoFillClick",e);const n=e.sort((s,i)=>s.title!=null&&i.title!=null?s.title.localeCompare(i.title):0);for(let s=0;s<n.length;s+=1)this.openWidget(n[s])}handleExportLayoutClick(){At.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:n}=e,s=al.exportLayout(n);At.info("handleExportLayoutClick exportedConfig",s);const i=new Blob([JSON.stringify(s)],{type:"application/json"}),o=M.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),r=document.createElement("a");r.href=URL.createObjectURL(i),r.download=`deephaven-app-layout-${o}.json`,r.click()}catch(e){At.error("Unable to export layout",e)}}handleImportLayoutClick(){At.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){At.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.resetLayout()}handleImportLayoutFiles(e){var n;e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile((n=e.target.files)==null?void 0:n[0])}async importLayoutFile(e){try{const{updateDashboardData:n,updateWorkspaceData:s}=this.props,i=await e.text(),o=JSON.parse(i),{filterSets:r,layoutConfig:l,links:a}=al.normalizeLayout(o);s({layoutConfig:l}),n(Dn,{filterSets:r,links:a})}catch(n){At.error("Unable to import layout",n)}}async resetLayout(){const{layoutStorage:e,session:n}=this.props,{filterSets:s,layoutConfig:i,links:o}=await al.getDefaultLayout(e,n!==void 0),{updateDashboardData:r,updateWorkspaceData:l}=this.props;l({layoutConfig:i}),r(Dn,{filterSets:s,links:o})}handlePaste(e){let n=e.currentTarget.parentElement;for(;n!=null;){if(n.classList.contains("monaco-editor"))return;n=n.parentElement}const{clipboardData:s}=e,i=s.getData("Text"),o=/“|”/g;o.test(i)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,i.replace(o,'"')))}handleLoadTablePlugin(e){const{plugins:n}=this.props,s=n.get(e);return s!=null&&s.TablePlugin!=null?s.TablePlugin:gd.loadComponentPlugin(e)}hydrateDefault(e,n){const{connection:s}=this.props,{metadata:i}=e;if((i==null?void 0:i.type)!=null&&((i==null?void 0:i.id)!=null||(i==null?void 0:i.name)!=null)){const o=i.id!=null?{type:i.type,id:i.id}:{type:i.type,name:i.name,title:i.name};return{fetch:()=>s.getObject(o),localDashboardId:n,...e}}return td.hydrate(e,n)}hydrateGrid(e,n){var s;return this.hydrateTable(e,n,(s=e.metadata.type)!=null?s:M.VariableType.TABLE)}hydratePandas(e,n){return this.hydrateTable(e,n,M.VariableType.PANDAS)}hydrateTable(e,n,s=M.VariableType.TABLE){const{connection:i}=this.props;return{...e,getDownloadWorker:Nl.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:n,makeModel:()=>vy(i,e.metadata,s)}}hydrateChart(e,n){const{connection:s}=this.props;return{...e,localDashboardId:n,makeModel:()=>{const{metadata:i,panelState:o}=e;return wy(s,i,o)}}}openWidget(e,n){const{connection:s}=this.props;this.emitLayoutEvent(Re.OPEN,{dragEvent:n,fetch:()=>s.getObject(e),widget:e})}render(){const{activeTool:e,plugins:n,user:s,workspace:i,serverConfigValues:o}=this.props,{data:r}=i,{layoutConfig:l}=r,{permissions:a}=s,{canUsePanels:d}=a,{contextActions:c,isPanelsMenuShown:u,isSettingsMenuShown:m,widgets:p}=this.state,g=this.getDashboardPlugins(n);return T("div",{className:z("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[h("nav",{className:"nav-container",children:T("div",{className:"app-main-top-nav-menus",children:[h("img",{src:wg,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),T("div",{children:[T(W,{kind:"ghost",className:"btn-panels-menu",icon:cb,onClick:()=>{},children:["Controls",h(Fc,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&T(W,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:rb,children:["Panels",h(_n,{isShown:u,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:h(Sy,{widgets:p,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),h(W,{kind:"ghost",className:z("btn-settings-menu",{"text-warning":s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:h(Z,{icon:or,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),T(bv,{emptyDashboard:h(Ty,{onAutoFillClick:this.handleAutoFillClick}),id:Dn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[h(y2,{hydrate:this.hydrateGrid,getDownloadWorker:Nl.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),h(b2,{hydrate:this.hydrateChart}),h(S2,{}),h(v2,{hydrateConsole:Zo.hydrateConsole,notebooksUrl:new URL("/notebooks/",`${window.location}`).href}),h(T2,{}),h(_2,{hydrate:this.hydratePandas}),h(x2,{}),h(F2,{}),g]}),h(mt,{in:m,timeout:Be.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:h(bo,{serverConfigValues:o,onDone:this.handleSettingsMenuHide})}),h(oe,{actions:c}),h("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles})]})}}const Oy=t=>{var e,n;return{activeTool:ql(t),dashboardData:Zt(t,Dn),layoutStorage:Cy(t),plugins:T0(t),connection:M1(t,Dn),session:(e=Si(t,Dn))==null?void 0:e.session,sessionConfig:(n=Si(t,Dn))==null?void 0:n.config,user:Mm(t),workspace:Kl(t),serverConfigValues:by(t)}},Ly=It(Oy,{setActiveTool:Xl,updateDashboardData:es,updateWorkspaceData:qm})(bf(Zo));function Ay(){return T("div",{className:"app",children:[h(Ly,{}),h(Vu,{})]})}const Py=X.module("LocalWorkspaceStorage"),Go=class{static async makeDefaultWorkspaceData(t,e){const{filterSets:n,links:s,layoutConfig:i}=await al.getDefaultLayout(t,e==null?void 0:e.isConsoleAvailable);return{settings:{defaultDateTimeFormat:nt.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:nt.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:_e.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Ze.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(t,e){return{data:await Go.makeDefaultWorkspaceData(t,e)}}constructor(t){this.layoutStorage=t}async load(t){var e;try{return JSON.parse((e=localStorage.getItem(Go.STORAGE_KEY))!=null?e:"")}catch{return Py.info("Unable to load workspace data, initializing to default data"),Go.makeDefaultWorkspace(this.layoutStorage,t)}}async save(t){return localStorage.setItem(Go.STORAGE_KEY,JSON.stringify(t)),t}};let _g=Go;_g.STORAGE_KEY="deephaven.WorkspaceStorage";class Hy extends Error{constructor(){super(...arguments),this.isNoConsolesError=!0}}function Uy(t){return t.isNoConsolesError}const Gi=X.module("SessionUtils");function Vy(){return new URL("/jsapi",`${window.location}`)}function kg(){const t=Vy();return`${t.protocol}//${t.host}`}function By(){const t=kg();return Gi.info(`Starting connection to '${t}'...`),new M.IdeConnection(t)}async function $y(t){Gi.info("Getting console types...");const e=await t.getConsoleTypes();if(Gi.info("Available types:",e),e.length===0)throw new Hy("No console types available");const n=e[0];Gi.info("Starting session with type",n);const s=await t.startSession(n),i={type:n,id:$e.generate()};return Gi.info("Console session established",i),{session:s,config:i,connection:t}}function Wy(){const t=kg();return Gi.info("createCoreClient",t),new M.CoreClient(t)}class zy{constructor(e,n=""){this.storageService=e,this.root=n}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(n=>n.basename)}async getLayout(e){const s=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(s)}}const Po=X.module("GrpcFileStorageTable"),fd=class{constructor(t,e="",n=e){this.currentSize=0,this.listeners=[],this.childTables=new Map,this.storageService=t,this.baseRoot=e,this.root=n,n===e&&(this.doRefresh=je(this.doRefresh.bind(this),fd.REFRESH_DEBOUNCE))}removeBaseRoot(t){return ue.removeRoot(this.baseRoot,t)}getViewportData(){var t;return this.viewportUpdatePromise||this.refreshInternal(),(t=this.viewportUpdatePromise)!=null?t:Promise.resolve({items:[],offset:0})}getSnapshot(t){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(t,e){const n=t.split("/");let s=n.shift();if((s===void 0||s==="")&&(s=n.shift()),s===void 0||s==="")throw new Error(`Invalid path: ${t}`);const i=n.join("/");if(e){if(!this.childTables.has(s)){const o=new fd(this.storageService,this.baseRoot,`${this.root}/${s}`);this.childTables.set(s,o)}if(i){const o=this.childTables.get(s);o==null||o.setExpanded(i,e)}}else if(this.childTables.has(s))if(i){const o=this.childTables.get(s);o==null||o.setExpanded(i,e)}else this.childTables.delete(s);this.currentViewport&&this.refreshInternal()}collapseAll(){this.childTables.clear(),this.currentViewport&&this.refreshInternal()}setSearch(t){throw new Error("Method not implemented.")}setViewport(t){this.currentViewport=t,this.refreshInternal()}setFilters(){throw new Error("Method not implemented.")}setSorts(){throw new Error("Method not implemented.")}setReversed(){throw new Error("Method not implemented.")}close(){this.listeners=[]}onUpdate(t){return this.listeners=[...this.listeners,t],()=>{this.listeners=this.listeners.filter(e=>e!==t)}}doRefresh(t){Po.debug2("doRefresh",this.root),t(this.fetchData())}refresh(){var n;Po.debug2("refresh",this.root),(n=this.viewportUpdatePromise)==null||n.cancel();const t=new Promise(s=>{this.doRefresh(s)}),e=ye.makeCancelable(t.then(s=>{if(this.viewportUpdatePromise!==e)throw new Qi;return this.currentViewportData=s,this.sendUpdate(),s}));e.catch(s=>{ye.isCanceled(s)||Po.error("Error updating viewport",s)}),this.viewportUpdatePromise=e}refreshInternal(){try{this.refresh()}catch(t){ye.isCanceled(t)||Po.error("Unable to refresh data",t)}}async fetchData(){const{currentViewport:t}=this;if(!t)throw new Error("No viewport set");let n=(await this.storageService.listItems(this.root)).map(s=>({type:s.type,filename:this.removeBaseRoot(s.filename),basename:s.basename,id:this.removeBaseRoot(s.filename),isExpanded:s.type==="directory"?this.childTables.has(s.basename):void 0})).sort((s,i)=>s.type!==i.type?s.type==="directory"?-1:1:s.basename.localeCompare(i.basename));for(let s=0;s<n.length;s+=1){const i=n[s],{basename:o,filename:r}=i;if(r===this.removeBaseRoot(`${this.root}/${o}`)&&i.type==="directory"){const l=this.childTables.get(o);if(l!=null){l.setViewport({top:0,bottom:t.bottom-s});const a=await l.getViewportData();n.splice(s+1,0,...a.items)}}}return this.currentSize=n.length,Po.debug2(this.root,"items",n,t),n=n.slice(t.top,t.bottom),{items:n,offset:t.top}}sendUpdate(){var n;const{listeners:t}=this,e=(n=this.currentViewportData)!=null?n:{items:[],offset:0};for(let s=0;s<t.length;s+=1)t[s](e)}};let Og=fd;Og.REFRESH_DEBOUNCE=50;const Gy=X.module("GrpcFileStorage"),Lg=class{constructor(t,e=""){this.tables=[],this.refreshTables=Zn(()=>{this.tables.forEach(n=>n.refresh())},Lg.REFRESH_THROTTLE),this.storageService=t,this.root=e}removeRoot(t){return ue.removeRoot(this.root,t)}addRoot(t){return ue.addRoot(this.root,t)}async createDirectory(t){return await this.storageService.createDirectory(this.addRoot(t)),this.refreshTables(),{type:"directory",id:t,filename:t,basename:ue.getBaseName(t)}}async getTable(){const t=new Og(this.storageService,this.root);return this.tables.push(t),t}async saveFile(t){const e=dh.storage.FileContents.text(t.content);return await this.storageService.saveFile(this.addRoot(t.filename),e,!0),this.refreshTables(),t}async loadFile(t){const n=await(await this.storageService.loadFile(this.addRoot(t))).text();return{filename:t,basename:ue.getBaseName(t),content:n}}async deleteFile(t){await this.storageService.deleteItem(this.addRoot(t)),this.refreshTables()}async moveFile(t,e){await this.storageService.moveItem(this.addRoot(t),this.addRoot(e)),this.refreshTables()}async info(t){const e=await this.storageService.listItems(this.addRoot(ue.getPath(t)),ue.getBaseName(t));if(e.length===0)throw new vc;if(e.length>1)throw Gy.error("More than one matching file found, should never happen.",e),new Error("More than one matching file found");const n=e[0];return{filename:this.removeRoot(n.filename),basename:n.basename,id:this.removeRoot(n.filename),type:n.type}}};let Ag=Lg;Ag.REFRESH_THROTTLE=150;const pi=X.module("AppInit");async function Ky(){pi.debug("Loading plugins...");try{const t=await gd.loadJson("/js-plugins/manifest.json");pi.debug("Plugin manifest loaded:",t);const e=[];for(let i=0;i<t.plugins.length;i+=1){const{name:o,main:r}=t.plugins[i],l=`/js-plugins/${o}/${r}`;e.push(gd.loadModulePlugin(l))}const n=await Promise.all(e),s=new Map;for(let i=0;i<n.length;i+=1){const{name:o}=t.plugins[i];s.set(o,n[i])}return pi.info("Plugins loaded:",s),s}catch(t){return pi.error("Unable to load plugins:",t),new Map}}async function qy(t){let e;try{e=await $y(t)}catch(n){if(!Uy(n))throw n}return e}function xc(t){const{workspace:e,setActiveTool:n,setCommandHistoryStorage:s,setDashboardData:i,setFileStorage:o,setLayoutStorage:r,setDashboardConnection:l,setDashboardSessionWrapper:a,setPlugins:d,setUser:c,setWorkspace:u,setWorkspaceStorage:m,setServerConfigValues:p}=t,[g,f]=w.exports.useState(),[b,C]=w.exports.useState(!0),S=w.exports.useCallback(async()=>{var R,N;try{pi.info("Initializing Web UI","0.26.1",navigator.userAgent);const F=await Ky(),B=By(),U=await qy(B);B.addEventListener(M.IdeConnection.HACK_CONNECTION_FAILURE,De=>{var dt;const{detail:qe}=De;pi.error("Connection failure",`${JSON.stringify(qe)}`),f(`Unable to connect: ${(dt=qe.details)!=null?dt:"Unknown Error"}`)});const x="user",H=Wy();await H.login({type:M.CoreClient.LOGIN_TYPE_ANONYMOUS});const A=H.getStorageService(),O=new zy(A,"/layouts"),_=new Ag(A,"/notebooks"),k=new _g(O),V=new z2,G=await k.load({isConsoleAvailable:U!==void 0}),{data:q}=G,{settings:Q}=q;Q.defaultDecimalFormatOptions===void 0&&(Q.defaultDecimalFormatOptions={defaultFormatString:_e.DEFAULT_FORMAT_STRING}),Q.defaultIntegerFormatOptions===void 0&&(Q.defaultIntegerFormatOptions={defaultFormatString:Ze.DEFAULT_FORMAT_STRING}),Q.truncateNumbersWithPound===void 0&&(Q.truncateNumbersWithPound=!1);const{shortcutOverrides:ce={}}=Q,le=Kt.isMacPlatform?(R=ce.mac)!=null?R:{}:(N=ce.windows)!=null?N:{};Object.entries(le).forEach(([De,qe])=>{var dt;(dt=Le.get(De))==null||dt.setKeyState(qe)});const Ee={filterSets:q.filterSets,links:q.links},ee=await H.getServerConfigValues(),pe=new Map(ee),ve={name:x,operateAs:x,groups:[],permissions:{isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:pe.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:pe.get("internal.webClient.appInit.canDownloadCsv")!=="false"}};n(Yt.DEFAULT),p(pe),s(V),i(Dn,Ee),o(_),r(O),l(Dn,B),U!==void 0&&a(Dn,U),d(F),c(ve),m(k),u(G)}catch(F){pi.error(F),f(F)}},[n,s,i,o,r,l,a,d,c,u,m,p]),v=w.exports.useCallback(()=>{document.fonts!=null?document.fonts.ready.then(()=>{C(!1)}):C(!1)},[]);w.exports.useEffect(function(){S(),v()},[S,v]);const y=e==null&&g==null||b,E=!y&&g==null,I=g!=null?`${g}`:null;return T(we,{children:[E&&h(Ay,{}),h(Ul,{isLoading:y,isLoaded:E,errorMessage:I}),T("div",{id:"preload-fonts",style:{visibility:"hidden",position:"absolute",top:-1e4},children:[h("p",{className:"fira-sans-regular",children:"preload"}),h("p",{className:"fira-sans-semibold",children:"preload"}),h("p",{className:"fira-mono",children:"preload"})]})]})}xc.propTypes={workspace:D.exports.shape({}),workspaceStorage:D.exports.shape({close:D.exports.func}),setActiveTool:D.exports.func.isRequired,setCommandHistoryStorage:D.exports.func.isRequired,setDashboardData:D.exports.func.isRequired,setFileStorage:D.exports.func.isRequired,setLayoutStorage:D.exports.func.isRequired,setDashboardConnection:D.exports.func.isRequired,setDashboardSessionWrapper:D.exports.func.isRequired,setPlugins:D.exports.func.isRequired,setUser:D.exports.func.isRequired,setWorkspace:D.exports.func.isRequired,setWorkspaceStorage:D.exports.func.isRequired};xc.defaultProps={workspace:null,workspaceStorage:null};const Yy=t=>({workspace:Kl(t),workspaceStorage:S0(t)}),mu=It(Yy,{setActiveTool:Xl,setCommandHistoryStorage:I0,setDashboardData:Cp,setFileStorage:R0,setLayoutStorage:G2,setDashboardConnection:N1,setDashboardSessionWrapper:F1,setPlugins:M0,setUser:E0,setWorkspace:Km,setWorkspaceStorage:y0,setServerConfigValues:N0})(xc);function Xy(){return h(Sf,{basename:"/ide/",children:T(wf,{children:[h(Pc,{exact:!0,path:"/",component:mu}),h(Pc,{path:"/notebook/:notebookPath+",component:mu}),h(vf,{from:"*",to:"/"})]})})}Boolean(window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function jy(){"serviceWorker"in navigator&&navigator.serviceWorker.getRegistrations().then(t=>{t.forEach(e=>{e.scope.endsWith("/download/")||e.unregister()})})}ry();Ci.render(h(fu,{store:jl,children:h(Xy,{})}),document.getElementById("root"));jy();Nl.registerOnLoaded();rt.init({getWorker:()=>new Ef});window["__react-beautiful-dnd-disable-dev-warnings"]=!0;
|
|
47
|
+
//# sourceMappingURL=index.16c869a3.js.map
|