@deephaven/code-studio 0.22.2-beta.6 → 0.22.2
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.
|
@@ -30,14 +30,14 @@ ${e}`):s.setValue(`${e}`);const o=s.getLineCount(),r=s.getLineLength(o)+1;this.e
|
|
|
30
30
|
buffered ${this.snapshotsBuffer.size}
|
|
31
31
|
making ${Math.min(ks.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)} more snapshots
|
|
32
32
|
`),this.makeSnapshot(Math.min(ks.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 o;let e="";const n=t.added.iterator(),{formatter:s}=this.props,i=[];for(;n.hasNext();)i.push(n.next().value);A(this.columns);for(let r=0;r<i.length;r+=1){const l=i[r];for(let a=0;a<this.columns.length;a+=1){const{type:d,name:c}=this.columns[a],u=this.getCachedCustomColumnFormatFlag(s,c,d);let m=null;if(!u){const g=t.getFormat(l,this.columns[a]);m=(g==null?void 0:g.formatString)!=null?g:null}let p=null;m?p=s.getFormattedString(t.getData(l,this.columns[a]),d,c,m):p=s.getFormattedString(t.getData(l,this.columns[a]),d,c),e+=ks.csvEscapeString(p),e+=a===((o=this.columns)==null?void 0:o.length)-1?`
|
|
33
|
-
`:","}}return e}makeSnapshot(t){if(t<=0)return;A(this.gridRangeCounter);let e=0,n=this.gridRanges[this.gridRangeCounter];for(A(this.tableSubscription),A(this.columns);e<t;){A(n),A(n.startRow),A(n.endRow),A(this.rangedSnapshotCounter),A(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(Ee.makeCancelable(this.tableSubscription.snapshot(M.RangeSet.ofRange(s,i),this.columns).then(r=>(lv(r),this.handleSnapshotResolved(r,o,s,i),o)).catch(r=>{es.error(r)}),r=>{es.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;this.useBlobFallback||(e!=null&&(this.makeIframe(`${e}`),this.writeCsvTable()),n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,ks.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},ks.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 to=ks;to.DOWNLOAD_CELL_CHUNK=6e3;to.SNAPSHOT_BUFFER_SIZE=5;to.STREAM_TIMEOUT=8e3;to.SNAPSHOT_HANDLER_TIMEOUT=5;to.defaultProps={getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}};const av=X.module("VisibilityOrderingBuilder"),dv=150,Ze=class extends S.exports.Component{constructor(t){super(t),this.debouncedSearchColumns=je(this.searchColumns,dv),this.getFirstMovableIndex=Te((e,n)=>{for(let s=0;s<n.length;s+=1)if(e.isColumnMovable(s))return s;return null}),this.getLastMovableIndex=Te((e,n)=>{for(let s=n.length-1;s>=0;s-=1)if(e.isColumnMovable(s))return s;return null}),this.renderImmovableItem=Te(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.renderVisibilityOrderingItem=Te((e,n,s,i,o,r,l,a)=>h(dl,{draggableId:`${n}`,index:s,disableInteractiveElementBlocking:!0,children:d=>v("div",{className:"visibility-ordering-list-item",ref:d.innerRef,...d.draggableProps,children:[h(z,{kind:"ghost",className:"btn-link-icon visibility",onMouseDown:c=>{this.handleVisibilityDraggingStart(n,i?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE,c)},onMouseEnter:c=>{this.handleMouseEnter(n,c)},onMouseUp:c=>{this.handleVisibilityDraggingEnd(c)},onClick:c=>{this.handleItemClick(n,c,!1)},onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(this.handleVisibilityKeyDown(n,i?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE),c.stopPropagation(),c.preventDefault())},tooltip:i?"Show":"Hide",children:h(j,{icon:i?xc:Ra})}),v("div",{role:"menuitem",tabIndex:0,className:W("ordering column-item",{isSelected:o},{isDragging:r},{isDragged:l},{"two-dragged":a===2},{"multiple-dragged":a!=null&&a>2}),onClick:c=>{this.handleItemClick(n,c)},...d.dragHandleProps,children:[h("span",{className:"column-name",children:e}),v("div",{children:[a!=null&&a!==0&&h("span",{className:"number-badge",children:a}),h(Be,{children:"Drag to re-order"}),h(j,{icon:ul})]})]})]})},e)),this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleOrderDraggingStart=this.handleOrderDraggingStart.bind(this),this.handleOrderDraggingEnd=this.handleOrderDraggingEnd.bind(this),this.state={selectedColumns:[],lastSelectedColumns:[],isDraggingVisibility:!1,visibilityDraggingOption:void 0,visibilityDraggingStartColumn:null,isDraggingOrder:!1,orderDraggingColumn:null,searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:t,onColumnVisibilityChanged:e,onMovedColumnsChanged:n}=this.props,{columns:s}=t;e(s.map(i=>{const o=t.getColumnIndexByName(i.name);return A(o),o}),Ze.VISIBILITY_OPTIONS.SHOW),this.setState({selectedColumns:[],lastSelectedColumns:[],searchFilter:""}),n([])}resetSelection(){const{isDraggingOrder:t}=this.state;t||this.setState({selectedColumns:[],lastSelectedColumns:[]})}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 r;const{model:e,movedColumns:n}=this.props,{columns:s}=e,i=[];let o=s.length;if(s.forEach((l,a)=>{const d=l.name.toLowerCase();e.isColumnMovable(a)&&d.includes(t.toLowerCase())&&(i.push(a),o=Math.min(o,K.getVisibleIndex(a,n)))}),this.addColumnToSelected(i,!1),i.length>0){const l=(r=this.list)==null?void 0:r.querySelectorAll(".column-item")[o];l==null||l.scrollIntoView({block:"center"})}}handleVisibilityKeyDown(t,e){const{onColumnVisibilityChanged:n}=this.props;n([t],e)}handleVisibilityDraggingStart(t,e,n){const{onColumnVisibilityChanged:s,movedColumns:i}=this.props,o=K.isModifierKeyDown(n),r=n.shiftKey;if(o||r)return;s([t],e);const l=K.getVisibleIndex(t,i);this.setState({isDraggingVisibility:!0,visibilityDraggingOption:e,visibilityDraggingStartColumn:l}),this.addColumnToSelected([t])}handleVisibilityDraggingEnd(t=null){t&&t.target.focus();const{isDraggingVisibility:e}=this.state;e&&this.setState({isDraggingVisibility:!1,visibilityDraggingOption:void 0,visibilityDraggingStartColumn:null})}handleOrderDraggingStart(t){var o;document.documentElement.classList.add("drag-pointer-events-none");const{selectedColumns:e}=this.state,{draggableId:n,source:{index:s}}=t,i=parseInt(n,10);if(((o=this.list)==null?void 0:o.querySelectorAll(".column-item")[s]).focus(),!e.includes(i)){this.setState({isDraggingOrder:!0,orderDraggingColumn:i,selectedColumns:[i]});return}this.setState({isDraggingOrder:!0,orderDraggingColumn:i})}handleOrderDraggingEnd(t){document.documentElement.classList.remove("drag-pointer-events-none");const{movedColumns:e,onMovedColumnsChanged:n}=this.props,{selectedColumns:s,orderDraggingColumn:i}=this.state;if(this.setState({isDraggingOrder:!1,orderDraggingColumn:null}),!t.destination)return;const{index:o}=t.destination,r=[...s].sort((m,p)=>K.getVisibleIndex(m,e)-K.getVisibleIndex(p,e));let l=[...e];A(i);const a=K.getVisibleIndex(i,l),d=[],c=[];l=K.moveItem(a,o,l),r.forEach(m=>{const p=K.getVisibleIndex(m,l);m!==i&&(p<o?d.push(m):c.push(m))}),d.forEach(m=>{const p=K.getVisibleIndex(m,l);l=K.moveItem(p,o,l)});const u=d.length>0||a>o?o+1:o;c.reverse().forEach(m=>{const p=K.getVisibleIndex(m,l);l=K.moveItem(p,u,l)}),n(l),av.debug("move column order by drag & drop",l)}handleMouseEnter(t,e){const{onColumnVisibilityChanged:n,movedColumns:s,userColumnWidths:i}=this.props,{isDraggingVisibility:o,visibilityDraggingOption:r,visibilityDraggingStartColumn:l}=this.state,a=K.getVisibleIndex(t,s),d=K.isModifierKeyDown(e),c=e.shiftKey;if(!o||d||c)return;e.target.focus();const u=[t];A(l);const m=a>l;for(let p=l;m?p<a:p>a;m?p+=1:p-=1){const g=K.getModelIndex(p,s),f=K.checkColumnHidden(g,i);(f&&r===Ze.VISIBILITY_OPTIONS.SHOW||!f&&r===Ze.VISIBILITY_OPTIONS.HIDE)&&u.push(g)}this.addColumnToSelected(u,!0),n(u,r)}handleMoveColumns(t){const{movedColumns:e,onMovedColumnsChanged:n,model:s}=this.props,{columns:i}=s,{selectedColumns:o}=this.state;if(o.length===0)return;const r=this.getFirstMovableIndex(s,i),l=this.getLastMovableIndex(s,i);if(r==null||l==null)return;const a=[...o].sort((u,m)=>t===Ze.MOVE_OPTIONS.TOP||t===Ze.MOVE_OPTIONS.UP?K.getVisibleIndex(u,e)-K.getVisibleIndex(m,e):K.getVisibleIndex(m,e)-K.getVisibleIndex(u,e));let d=[],c=()=>{};switch(t){case Ze.MOVE_OPTIONS.TOP:a.forEach((u,m)=>{const p=K.getVisibleIndex(u,e);d=K.moveItem(p,r+m,d)}),c=()=>{A(this.list),this.list.scrollTop=0};break;case Ze.MOVE_OPTIONS.BOTTOM:a.forEach((u,m)=>{const p=K.getVisibleIndex(u,e);d=K.moveItem(p,l-m,d)}),c=()=>{A(this.list),this.list.scrollTop=this.list.scrollHeight};break;case Ze.MOVE_OPTIONS.UP:K.getVisibleIndex(a[0],e)!==r&&a.forEach(u=>{const m=K.getVisibleIndex(u,e);d=K.moveItem(m,m-1,d)});break;case Ze.MOVE_OPTIONS.DOWN:K.getVisibleIndex(a[0],e)!==l&&a.forEach(u=>{const m=K.getVisibleIndex(u,e);d=K.moveItem(m,m+1,d)});break}d.length>0&&n(e.concat(d),c)}handleSortColumns(t){const{model:e,onMovedColumnsChanged:n}=this.props,{columns:s}=e,i=[],o=[];for(let c=0;c<s.length;c+=1)e.isColumnMovable(c)?i.push(c):o.push(c);const r=i.sort((c,u)=>{const m=t===Ze.SORTING_OPTIONS.ASC,p=s[c].name.toUpperCase(),g=s[u].name.toUpperCase();return sn.sort(p,g,m)}),l=[];for(let c=0;c<o.length;c+=1){const u=o[c];l[u]=u}let a=0;for(let c=0;c<r.length;c+=1){for(;l[a]!=null;)a+=1;l[a]=r[c]}let d=[];l.forEach((c,u)=>{const m=K.getVisibleIndex(c,d);d=K.moveItem(m,u,d)}),n(d)}handleItemClick(t,e,n=!0){e.stopPropagation(),e.currentTarget.focus();const{selectedColumns:s,lastSelectedColumns:i}=this.state,o=K.isModifierKeyDown(e),r=e.shiftKey,l=s.includes(t),a=[t];if(l&&o){this.removeColumnFromSelected(t);return}if(l&&s.length===1&&n){this.removeColumnFromSelected(t);return}if(r){const{movedColumns:d}=this.props,c=i[i.length-1],u=K.getVisibleIndex(c,d),m=K.getVisibleIndex(t,d),p=m>u,g=[];for(let f=u;p?f<m:f>m;p?f+=1:f-=1)g.push(K.getModelIndex(f,d));g.forEach(f=>{s.includes(f)||a.push(f)})}this.addColumnToSelected(a,o||r)}addColumnToSelected(t,e=!1){const{selectedColumns:n,lastSelectedColumns:s}=this.state,i=e?n.concat(t):t,o=e?s.concat(t):t;this.setState({selectedColumns:i,lastSelectedColumns:o})}removeColumnFromSelected(t){const{selectedColumns:e,lastSelectedColumns:n}=this.state,s=[...e];s.splice(s.findIndex(r=>r===t),1);const i=n[n.length-1],o=[...n];i===t&&o.pop(),this.setState({selectedColumns:s,lastSelectedColumns:o})}makeVisibilityOrderingList(){const{model:t,userColumnWidths:e,movedColumns:n}=this.props,{columns:s}=t,{selectedColumns:i,isDraggingOrder:o,orderDraggingColumn:r}=this.state,l=[];let a=!1;for(let d=0;d<s.length;d+=1){const c=K.getModelIndex(d,n),u=s[c],m=t.isColumnMovable(c);if(d>0&&m!==a&&l.push(h("hr",{})),m){const p=e.get(c)===0,g=i.includes(c),f=r===c,b=o&&f&&i.length>1?i.length:null;l.push(this.renderVisibilityOrderingItem(u.name,c,d,p,g,o,f,b))}else l.push(this.renderImmovableItem(u.name));a=m}return l}render(){const{model:t,userColumnWidths:e,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,{columns:o}=t,r=s.length===0,l=r?o.map((u,m)=>m).filter(u=>t.isColumnMovable(u)):[...s],a=K.checkAllColumnsHidden(l,e),d=a?"Show Selected":"Hide Selected",c=this.makeVisibilityOrderingList();return v("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,onMouseUp:()=>{this.handleVisibilityDraggingEnd()},onMouseLeave:()=>{this.handleVisibilityDraggingEnd()},children:[v("div",{className:"top-menu",children:[h(z,{kind:"ghost",onClick:()=>{n(l,a?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE)},icon:a?xc:Ra,tooltip:"Toggle column visibility",children:r?"Toggle All":d}),v("div",{children:[h(z,{kind:"ghost",className:"text-muted",onClick:()=>{this.resetVisibilityOrdering()},tooltip:"Reset to default",children:"Reset"}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleSortColumns(Ze.SORTING_OPTIONS.ASC)},tooltip:"Sort ascending",children:h(j,{icon:hd})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleSortColumns(Ze.SORTING_OPTIONS.DSC)},tooltip:"Sort descending",children:h(j,{icon:ud})}),h("span",{className:"vertical-divider"}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.UP)},disabled:r,tooltip:"Move selection up",children:h(j,{icon:ff})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.DOWN)},disabled:r,tooltip:"Move selection down",children:h(j,{icon:pf})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.TOP)},disabled:r,tooltip:"Move selection to top",children:h(j,{icon:Wf})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.BOTTOM)},disabled:r,tooltip:"Move selection to bottom",children:h(j,{icon:$f})})]})]}),h("div",{className:"top-menu",children:h(Cs,{className:"w-100",value:i,matchCount:i?s.length:void 0,onChange:this.handleSearchInputChange})}),h(Vo,{onDragStart:this.handleOrderDraggingStart,onDragEnd:this.handleOrderDraggingEnd,children:h(Ho,{droppableId:"droppable-visibility-order-list",children:(u,m)=>h("div",{role:"menu",className:W("visibility-ordering-list",{isDragging:m.draggingFromThisWith}),ref:u.innerRef,...u.droppableProps,children:v("div",{className:"column-list",ref:p=>{this.list=p},children:[c,u.placeholder]})})})})]})}};let mi=Ze;mi.VISIBILITY_OPTIONS={SHOW:"SHOW",HIDE:"HIDE"};mi.SORTING_OPTIONS={DSC:"DSC",ASC:"ASC"};mi.MOVE_OPTIONS={TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"};mi.COLUMN_CHANGE_OPTIONS={ALL:"ALL",SELECTION:"SELECTION"};mi.defaultProps={movedColumns:[],onColumnVisibilityChanged:()=>{},onMovedColumnsChanged:()=>{}};const yr=X.module("AdvancedFilterCreatorFilterItem");class $d extends S.exports.PureComponent{constructor(e){super(e),this.getCachedIsValid=me((o,r,l,a)=>{try{return!l||P.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(P.isNumberType(e)||P.isCharType(e))return jb(n);if(P.isTextType(e))return Xb(n);if(P.isDateType(e))return Qb(n);if(P.isBooleanType(e))return Zb(n);throw new Error(`Unrecognized column type: ${e}`)}catch(s){return yr.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;yr.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){yr.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(){yr.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=!P.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=$d.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:v("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:W("form-control",{error:!a}),placeholder:"Enter value",value:o,onChange:this.handleValueChange})})}),h("div",{className:"form-group col-1 px-0",children:h(z,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:_n,tooltip:"Remove Filter"})})]})})}}const yh=X.module("AdvancedFilterCreatorSelectValueList"),Va=class extends S.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=Va.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})}yh.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=Va.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);yh.debug2("Setting viewport",o,",",r),s.setViewport(o,r)}render(){const{offset:t,isLoading:e,items:n,itemCount:s}=this.state;return v("div",{className:"select-value-list-wrapper",children:[h(Bu,{itemCount:s,items:n,offset:t,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h(ut,{in:e,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"loading-list",children:h(kn,{className:"loading-spinner-large"})})})]})}};let tp=Va;tp.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{}};const np=class extends S.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,np.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;P.isCharType(s.type)?r=P.makeQuickFilter(s,e):P.isTextType(s.type)?r=P.makeQuickFilter(s,`~${e}`,n):r=P.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 v("div",{className:"advanced-filter-creator-select-value",children:[v("div",{className:l?"form-group":"",children:[h("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),l&&h("input",{type:"text",className:W("form-control",{"is-invalid":t!=null}),id:"advanced-filter-creator-select-value-input",placeholder:c,value:i,onChange:this.handleSearchChange})]}),h(tp,{table:o,filters:e,invertSelection:n,selectedValues:s,formatter:r,onChange:this.handleListChange}),v("div",{className:"advanced-filter-creator-select-meta-row",children:[v("div",{children:[h(z,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h(z,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h(ut,{in:d!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"row-count-info",children:d})})]})]})}};let Wd=np;Wd.searchDebounceTime=250;Wd.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0};const mo=X.module("AdvancedFilterCreator"),Zs=class extends S.exports.PureComponent{constructor(t){var r,l;super(t),this.getFilterTypes=me(a=>P.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:ze()})))!=null?l:[];o.length===0&&o.push(Zs.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:ze()}}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){mo.debug("No values table for this model, just ignore");return}this.valuesTablePromise=P.makeCancelableTablePromise(t.valuesTable(e)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{Ee.isCanceled(n)||(mo.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(Zs.makeFilterItem()),e=e.concat(Yt.and),this.setState({filterItems:t,filterOperators:e})}handleAddOr(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(Zs.makeFilterItem()),e=e.concat(Yt.or),this.setState({filterItems:t,filterOperators:e})}handleChangeFilterOperator(t,e){let{filterOperators:n}=this.state;n=[...n],Yb(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(Zs.makeFilterItem()),this.setState({filterItems:e,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(t,e){this.setState({selectedValues:t,invertSelection:e}),this.startUpdateTimer()}handleReset(){mo.debug("Resetting Advanced Filter"),this.setState({filterItems:[Zs.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(t){const e=Ne.isModifierKeyDown(t);this.sortTable(P.sortDirection.descending,e)}handleSortUp(t){const e=Ne.isModifierKeyDown(t);this.sortTable(P.sortDirection.ascending,e)}handleSubmit(t){mo.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),t.preventDefault()}handleDone(t){mo.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,Zs.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=P.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=P.isBooleanType(t.type),m=P.isDateType(t.type),p=this.getFilterTypes(t.type),g=t.type.substring(t.type.lastIndexOf(".")+1),f=[];if(!u&&p.length)for(let w=0;w<i.length;w+=1){const T=i[w],{key:y,selectedType:E,value:I}=T,D=h($d,{column:t,filterTypes:p,onChange:this.getFilterChangeHandler(w),onDelete:this.getFilterDeleteHandler(w),selectedType:E,value:I,formatter:s},y);if(f.push(D),w<o.length){const x=o[w]===Yt.and,U=v("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h(z,{kind:"ghost",className:W("filter-operator",{active:x}),onClick:()=>this.handleChangeFilterOperator(w,Yt.and),children:"AND"}),h(z,{kind:"ghost",className:W("filter-operator",{active:!x}),onClick:()=>this.handleChangeFilterOperator(w,Yt.or),children:"OR"})]},`filterOperator${y}`);f.push(U)}}const b=this.shouldShowAddFilter(),C=v("div",{className:W("form-row justify-content-end add-filter-item",{hidden:!b}),children:[h("span",{className:"text-muted",children:h(j,{icon:As})}),h(z,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!b,tooltip:"Add filter with AND",children:"AND"}),h(z,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!b,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return f.push(C),v("div",{className:"advanced-filter-creator",role:"presentation",children:[h("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),v("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[v("div",{className:"title-bar",children:[h("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),v("div",{className:"advanced-filter-menu-buttons",children:[h(z,{kind:"ghost",className:W("sort-operator",{active:n===P.sortDirection.descending}),onClick:this.handleSortDown,icon:_c,tooltip:`Sort ${t.name} Descending`}),h(z,{kind:"ghost",className:W("sort-operator",{active:n===P.sortDirection.ascending}),onClick:this.handleSortUp,icon:h(j,{icon:_c,rotation:180}),tooltip:`Sort ${t.name} Ascending`})]})]}),h("hr",{}),v("div",{className:"advanced-filter-column-name",children:[t.name,"\xA0",v("span",{className:"column-type",children:["(",g,")"]})]}),f,c&&d==null&&v(pe,{children:[!u&&h("hr",{}),h("div",{className:"form-group",children:h(Wd,{table:a,onChange:this.handleSelectValueChange,invertSelection:r,selectedValues:l,formatter:s,showSearch:!m,timeZone:s.timeZone})})]}),v("div",{className:"form-row justify-content-end",children:[h(z,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h(z,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let zd=Zs;zd.debounceFilterUpdate=250;zd.defaultProps={options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null};function cv(t,e){const n=mv(t);return n===void 0?void 0:`${Sv(t)} ? ${n} : ${e}`}function hv(t){return dh.Column.formatRowColor(t)}function uv(t,e){return t.formatColor(e)}const ca=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||{}),rn=(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))(rn||{}),Ht=(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))(Ht||{}),Ro=(t=>(t.IS_TRUE="is-true",t.IS_FALSE="is-false",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Ro||{}),oi=(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))(oi||{}),Un=(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))(Un||{});function Ih(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 el(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 tl(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 mv(t){const e=tl(t.style),n=el(t.style);if(!(e===void 0||n===void 0))return`bgfg(\`${n}\`, \`${e}\`)`}function pv(t){const{column:e,value:n,start:s,end:i}=t;return xv(e.name,t.condition,n,s,i)}function gv(t){const{column:e,value:n}=t;return _v(e.name,t.condition,n)}function fv(t){const{column:e,value:n}=t;return kv(e.name,t.condition,n)}function Cv(t){const{column:e}=t;return Ov(e.name,t.condition)}function bv(t){const{column:e,value:n}=t;return Lv(e.name,t.condition,n)}function Sv(t){const{column:e}=t;if(P.isNumberType(e.type))return pv(t);if(P.isCharType(e.type))return bv(t);if(P.isStringType(e.type))return gv(t);if(P.isDateType(e.type))return fv(t);if(P.isBooleanType(e.type))return Cv(t);throw new Error("Invalid column type")}function wv(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 vv(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 Tv(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 Ev(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 yv(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 sp(t){if(P.isNumberType(t)||P.isCharType(t))return"is-equal";if(P.isStringType(t)||P.isDateType(t))return"is-exactly";if(P.isBooleanType(t))return"is-true";throw new Error("Invalid column type")}function Iv(t){if(P.isCharType(t)||P.isStringType(t))return""}function ip(t){const{condition:e,value:n,start:s,end:i}=t;return{condition:e,value:n,start:s,end:i}}function xl(t){return{condition:sp(t),value:Iv(t),start:void 0,end:void 0}}function op(){return{type:"no-formatting"}}function Rv(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 Dv(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 Mv(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 Nv(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 Fv(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 xv(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 _v(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 kv(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 Ov(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 Lv(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 Av(t,e){if(P.isNumberType(t))return Fv(e);if(P.isCharType(t))return Nv(e);if(P.isStringType(t))return Rv(e);if(P.isDateType(t))return Dv(e);if(P.isBooleanType(t))return Mv(e);throw new Error("Invalid column type")}function Pv(t,e){if(e===void 0)return ca.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){ca.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=cv(o,d);if(u===void 0){ca.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"?uv(a,u):hv(u);n.push(p),r==="conditional"?i.set(a.name,[u,p]):s=[u,p]}),n}function Hv({type:t}){return P.isNumberType(t)||P.isCharType(t)||P.isStringType(t)||P.isDateType(t)||P.isBooleanType(t)}const _l=({animation:t="iris-grid-bottom-bar-slide-up",children:e,className:n,isShown:s,onClick:i,onEntering:o,onEntered:r,onExiting:l,onExited:a})=>h(ut,{in:s,timeout:Et.transitionMs,classNames:t,onEntering:o,onEntered:r,onExiting:l,onExited:a,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:W("iris-grid-bottom-bar",n),role:"presentation",onClick:i,onKeyPress:i,children:e})});const Vv=3e3,Uv=5,Bv=({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]=S.exports.useState(!1),[g,f]=S.exports.useState(!1),b=S.exports.useRef(),C=gl(t),w=S.exports.useMemo(()=>r.size===0?o:r.size<=Uv?`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]);S.exports.useEffect(function(){C!=null&&C&&!t&&w==null&&(p(!0),f(!0),b.current=setTimeout(()=>{p(!1)},Vv))},[w,t,C]),S.exports.useEffect(function(){b.current&&l.size>0&&(clearTimeout(b.current),p(!1),f(!1))},[l]),S.exports.useEffect(function(){return()=>b.current?clearTimeout(b.current):void 0},[]);const T=l.size;let y;return t?y=h(kn,{}):g&&(y=ad),v(_l,{className:"pending-data-bottom-bar",isShown:T>0||m||w!=null,onEntering:a,onEntered:d,onExiting:c,onExited:()=>{f(!1),u&&u()},children:[w!=null&&w!==""&&v("div",{className:"error-message",children:[h(j,{icon:cs}),h("span",{children:`${w}`})]}),(w==null||w==="")&&h("div",{className:"status-message",children:T>0&&h("span",{children:`${T} row${T>1?"s":""} pending`})}),v("div",{className:"buttons-container",children:[!t&&!g&&h(z,{kind:"secondary",onClick:n,tooltip:s,children:"Discard"}),v(z,{kind:g?"success":"primary",onClick:e,icon:y,disabled:t||g||w!=null,tooltip:i,children:[t&&"Committing...",!t&&g&&"Success",!t&&!g&&"Commit"]})]})]})},po=X.module("IrisGridUtils");function Ds(t,e){return t>=0&&t<e.length}class se{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})=>Ds(a,l)&&(typeof d=="number"&&Ds(d,l)||Array.isArray(d)&&Ds(d[0],l)&&Ds(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=se.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})=>Ds(u,c)&&(typeof m=="number"&&Ds(m,c)||Array.isArray(m)&&Ds(m[0],c)&&Ds(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:w,pendingDataMap:T=new Map,frozenColumns:y}=n;A(l);const{userColumnWidths:E,userRowHeights:I}=l,{columns:D}=e;return{advancedFilters:se.dehydrateAdvancedFilters(D,i),aggregationSettings:s,customColumnFormatMap:[...o],isFilterBarShown:r,quickFilters:se.dehydrateQuickFilters(a),sorts:se.dehydrateSort(C),userColumnWidths:[...E].filter(([F])=>F!=null&&F>=0&&F<D.length).map(([F,x])=>[D[F].name,x]),userRowHeights:[...I],customColumns:[...d],conditionalFormats:[...c],reverseType:u,rollupConfig:m,showSearchBar:p,searchValue:g,selectDistinctColumns:[...f],selectedSearchColumns:b,invertSearchColumns:w,pendingDataMap:se.dehydratePendingDataMap(D,T),frozenColumns:y}}static hydrateIrisGridState(e,n){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:w,invertSearchColumns:T=!0,pendingDataMap:y=[],frozenColumns:E}=n,{columns:I,formatter:D}=e;return{advancedFilters:se.hydrateAdvancedFilters(I,s,D.timeZone),aggregationSettings:i,customColumnFormatMap:new Map(o),isFilterBarShown:r,quickFilters:se.hydrateQuickFilters(I,l,D.timeZone),sorts:se.hydrateSort(I,a),userColumnWidths:new Map(u.map(([F,x])=>typeof F=="string"||F instanceof String?[I.findIndex(({name:U})=>U===F),x]:[F,x]).filter(([F])=>F!=null&&F>=0&&F<I.length)),customColumns:d,conditionalFormats:c,userRowHeights:new Map(m),reverseType:p,rollupConfig:g,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:w,invertSearchColumns:T,pendingDataMap:se.hydratePendingDataMap(I,y),frozenColumns:E}}static dehydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?o.name:null,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?se.getColumnByName(l,o):void 0,advancedSettings:new Map([...Ym.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=se.getColumn(e,o);d!=null&&(a=P.makeQuickFilter(d,l,s))}catch(d){po.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=se.getColumn(e,s);A(o);const r=se.dehydrateAdvancedFilterOptions(o,i.options);return[s,{options:r}]})}static hydrateAdvancedFilters(e,n,s){const i=n.map(([o,r])=>{const l=se.getColumn(e,o);A(l);const a=se.hydrateAdvancedFilterOptions(l,r.options);let d=null;try{se.getColumn(e,o)!=null&&(d=P.makeAdvancedFilter(l,a,s))}catch(c){po.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=>se.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=>se.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,se.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 A(d),[(c=i(l))!=null?c:null,se.hydrateValue(a,e[d].type)]}))}]))}static dehydrateValue(e,n){return P.isDateType(n)?se.dehydrateDateTime(e):P.isLongType(n)?se.dehydrateLong(e):e}static hydrateValue(e,n){return P.isDateType(n)?se.hydrateDateTime(e):P.isLongType(n)?se.hydrateLong(e):e}static dehydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.format(ps.FULL_DATE_FORMAT,e):null}static hydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.parse(ps.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===P.sortDirection.reverse)return M.Table.reverse();const l=se.getColumn(e,i);if(l!=null){let a=l.sort();return o&&(a=a.abs()),r===P.sortDirection.descending?a=a.desc():a=a.asc(),a}return null}).filter(s=>s!=null&&s.direction!==P.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=se.getFiltersFromFilterMap(se.hydrateQuickFilters(i,n.quickFilters,s)));let r=[];n.advancedFilters&&(r=se.getFiltersFromFilterMap(se.hydrateAdvancedFilters(i,n.advancedFilters,s)));const l=se.getFiltersFromInputFilters(i,n.inputFilters,s);let a=[];n.sorts&&(a=se.hydrateSort(i,n.sorts));let d=[...o,...r];const{partition:c,partitionColumn:u}=n;if(c!=null&&u!=null){const m=se.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 P.makeQuickFilter(l,r,s)}catch(a){po.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=se.parseCustomColumnNames(e),i=se.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=K.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=K.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=K.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=K.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=se.getVisibleColumnsInRange(e,n,s,i,o),d=a.length*l,c=se.getPrevVisibleColumns(e,n-1,d,i,o),u=se.getNextVisibleColumns(e,s+1,d,i,o),m=[...c,...a,...u];return se.getColumnsToFetch(e,m,r)}static rangeSetFromRanges(e){const n=e.slice().sort((s,i)=>(A(s.startRow),A(i.startRow),s.startRow-i.startRow)).map(s=>{const{startRow:i,endRow:o}=s;return A(i),A(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];A(l.startColumn),A(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})=>Ls.isRollupOperation(g)?[]:Ls.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[Le.FIRST])!=null?p:[];c[Le.FIRST]=[...f,...g]}}return{groupingColumns:i,includeConstituents:o,includeDescriptions:l,aggregations:c}}static getPendingErrors(e){e.forEach((n,s)=>{if(!se.isValidIndex(s))throw new Error(`Invalid rowIndex ${s}`);const{data:i}=n;i.forEach((o,r)=>{if(!se.isValidIndex(r))throw new Error(`Invalid columnIndex ${r}`)})})}static getColumn(e,n){return n<e.length?e[n]:(po.error("Unable to retrieve column",n,">=",e.length),null)}static getColumnByName(e,n){const s=e.find(({name:i})=>i===n);return s==null&&po.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)}}const en=X.module("IrisGridCopyHandler"),Ue=class extends S.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:Ue.COPY_STATES.IDLE,buttonState:Ue.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(t,e){switch(t){case Ue.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${e.toLocaleString()} rows to your clipboard?`;case Ue.COPY_STATES.CLICK_REQUIRED:return`Fetched ${e.toLocaleString()} rows!`;case Ue.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case Ue.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${e.toLocaleString()} rows for clipboard...`;case Ue.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(t){switch(t){case Ue.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case Ue.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case Ue.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(){en.debug2("startCopy"),this.stopCopy();const{copyOperation:t}=this.props;if(t==null){en.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:e,error:n}=t;if(n!=null){en.debug("Showing copy error",n),this.setState({isShown:!0,copyState:Ue.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=re.rowCount(e);this.setState({rowCount:s,isShown:!0,error:void 0}),s>Ue.NO_PROMPT_THRESHOLD?this.setState({buttonState:Ue.BUTTON_STATES.COPY,copyState:Ue.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){en.debug2("handleBackgroundClick");const{copyState:t}=this.state;t===Ue.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){en.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){en.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){en.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(t){en.debug2("copyText",t),this.textData=t,Ne.copyToClipboard(t).then(()=>{this.setState({copyState:Ue.COPY_STATES.DONE}),this.startHideTimer()},e=>{en.error("copyText error",e),this.setState({buttonState:Ue.BUTTON_STATES.CLICK_TO_COPY,copyState:Ue.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:Ue.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:Ue.COPY_STATES.FETCH_IN_PROGRESS});const{model:t,copyOperation:e}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:o,formatValues:r}=e;en.debug("startFetch",n);const l=se.getHiddenColumns(i);let a=K.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=Ee.makeCancelable(t.textSnapshot(a,s,d)),this.fetchPromise.then(c=>{this.fetchPromise=void 0,this.copyText(c)}).catch(c=>{c instanceof ai?en.debug("User cancelled copy."):(en.error("Error fetching contents",c),this.fetchPromise=void 0,this.setState({buttonState:Ue.BUTTON_STATES.RETRY,copyState:Ue.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(en.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,Ue.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===Ue.COPY_STATES.DONE?"fade":"copy-slide-up",c=Ue.getCopyButtonText(i),u=a!=null?a:Ue.getStatusMessageText(o,l),m=o!==Ue.COPY_STATES.DONE,p=i===Ue.BUTTON_STATES.FETCH_IN_PROGRESS,g=o===Ue.COPY_STATES.DONE;return v(_l,{animation:d,isShown:r,className:W("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(ut,{in:m,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:v("div",{className:"buttons-container",children:[h("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),v(z,{kind:p?"tertiary":"primary",className:W("btn-copy",{"btn-spinner":p}),onClick:this.handleCopyClick,disabled:p,children:[p&&h(kn,{}),c]})]})})]})}};let no=Ue;no.NO_PROMPT_THRESHOLD=1e4;no.HIDE_TIMEOUT=3e3;no.COPY_STATES={IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"};no.BUTTON_STATES={COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"};no.defaultProps={copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}};class rp extends S.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 v("div",{style:n,className:"iris-grid-input-autosized-wrapper","data-value":o,children:[h("input",{ref:r=>{this.inputField=r},className:W("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(z,{kind:"ghost",className:W("btn-link-icon advanced-filter-button",{"filter-set":s}),onClick:i,onContextMenu:this.handleContextMenu,children:v("div",{className:"fa-layers ",children:[h(j,{icon:dd,className:"filter-solid"}),h(j,{icon:zr,className:"filter-light"})]})})})]})}}rp.defaultProps={style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150};class $v extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){const{selectedRanges:n}=this.irisGrid.state;return e.key==="c"&&Ne.isModifierKeyDown(e)?(se.isValidSnapshotRanges(n)?this.irisGrid.copyRanges(n):this.irisGrid.copyRanges(n,!1,!1,"Invalid copy ranges"),!0):!1}}const Wv={TOGGLE_QUICK_FILTER:Pe.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[de.CTRL,he.F],macShortcut:[de.CMD,he.F]}),CLEAR_ALL_FILTERS:Pe.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[de.CTRL,he.E],macShortcut:[de.CMD,he.E]}),CLEAR_FILTERS:Pe.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[de.CTRL,de.SHIFT,he.E],macShortcut:[de.CMD,de.SHIFT,he.E]}),REVERSE:Pe.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[de.CTRL,he.I],macShortcut:[de.CMD,he.I]}),TOGGLE_SEARCH:Pe.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[de.CTRL,de.SHIFT,he.F],macShortcut:[de.CMD,de.SHIFT,he.F]}),GOTO_ROW:Pe.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[de.CTRL,he.G],macShortcut:[de.CMD,he.G]})},zv={COMMIT:Pe.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[de.CTRL,he.S],macShortcut:[de.CMD,he.S]}),DISCARD:Pe.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[de.CTRL,de.ALT,he.S],macShortcut:[de.CMD,de.OPTION,he.S]})},dn={TABLE:Wv,INPUT_TABLE:zv};class Gv extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){if(dn.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:n}=this.irisGrid.state;return n===P.REVERSE_TYPE.NONE?this.irisGrid.reverse(P.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(P.REVERSE_TYPE.NONE),!0}return!1}}class Kv extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){return dn.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}class qv extends yt{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);ht(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 Yv extends yt{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 Xv extends yt{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 lp=class extends S.exports.Component{constructor(t=lp.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=CC.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 v("div",{className:"form-group flex-grow mb-0",children:[v("div",{className:"custom-format-title",children:[h("span",{className:"icon",children:o}),v("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h(Be,{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 ap=lp;ap.defaultProps={formatString:"",forwardedProps:{menuItem:{},closeMenu(t){},iconElement:null},placeholder:"",title:"",onChange(t){}};class cn{static isDefaultSelected(e){return!e||![et.TYPE_CONTEXT_CUSTOM,et.TYPE_CONTEXT_PRESET].includes(e.type)}static isCustomSelected(e){return e!=null&&e.type===et.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(ap,{formatString:e.formatString,title:e.label,placeholder:s,onChange:o})}}}const Bn=class{static getOptions(t,e){const n=new Date,i=[{group:Bn.dateGroup,formatString:"yyyy-MM-dd"},{group:Bn.dateGroup,formatString:"MM-dd-yyyy"},{group:Bn.timeGroup,formatString:"HH:mm:ss"},{group:Bn.timeGroup,formatString:"HH:mm:ss.SSS"},{group:Bn.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(r=>{const l=dt.makeFormat("",r.formatString,dt.TYPE_CONTEXT_PRESET),a=t.getFormattedString(n,P.dataType.DATETIME,"",l);return cn.makeOption(a,l,r.group,dt.isSameFormat(l,e))});return[cn.makeOption("Default",null,Bn.dateGroup,cn.isDefaultSelected(e)),...i]}};let kl=Bn;kl.dateGroup=10;kl.timeGroup=20;kl.dateTimeGroup=30;const $n=class{static getOptions(t,e){const n=[{format:Ae.FORMAT_PERCENT,group:$n.presetGroup},{format:Ae.FORMAT_BASIS_POINTS,group:$n.presetGroup},{format:Ae.FORMAT_MILLIONS,group:$n.presetGroup},{format:Ae.FORMAT_SCIENTIFIC_NOTATION,group:$n.presetGroup},{format:Ae.FORMAT_ROUND,group:$n.presetRoundGroup},{format:Ae.FORMAT_ROUND_TWO_DECIMALS,group:$n.presetRoundGroup},{format:Ae.FORMAT_ROUND_FOUR_DECIMALS,group:$n.presetRoundGroup}],s=cn.makeOption("Default",null,$n.defaultGroup,cn.isDefaultSelected(t)),i=n.map(a=>cn.makeOption(a.format.label,a.format,a.group,Ae.isSameFormat(a.format,t))),o=cn.isCustomSelected(t),r=o?t:Ae.makeCustomFormat(),l=cn.makeCustomFormatOption(r,$n.customGroup,Ae.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=Ae.makeCustomFormat(a);Ae.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let Xo=$n;Xo.defaultGroup=10;Xo.presetGroup=20;Xo.presetRoundGroup=30;Xo.customGroup=40;const Do=class{static getOptions(t,e){const n=[{format:it.FORMAT_MILLIONS,group:Do.presetGroup},{format:it.FORMAT_SCIENTIFIC_NOTATION,group:Do.presetGroup}],s=cn.makeOption("Default",null,Do.defaultGroup,cn.isDefaultSelected(t)),i=n.map(a=>cn.makeOption(a.format.label,a.format,a.group,it.isSameFormat(a.format,t))),o=cn.isCustomSelected(t),r=o?t:it.makeCustomFormat(),l=cn.makeCustomFormatOption(r,Do.customGroup,it.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=it.makeCustomFormat(a);it.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let Ol=Do;Ol.defaultGroup=10;Ol.presetGroup=20;Ol.customGroup=30;const Rh=X.module("IrisGridContextMenuHandler"),jv=150,Dh="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",Z=class extends yt{constructor(t){super(),this.debouncedUpdateCustomFormat=je(t.handleFormatSelection,jv),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=Z.getFilterValueForNumberOrChar(t.type,e);return n.eq(s)}static getFilterValueForNumberOrChar(t,e){return P.isCharType(t)?M.FilterValue.ofString(String.fromCharCode(e)):M.FilterValue.ofNumber(e)}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(t,e){var F;const{irisGrid:n}=this,{column:s}=e;A(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();A(a);const{filterIconColor:g,filterBarActiveColor:f,contextMenuSortIconColor:b,contextMenuReverseIconColor:C}=p,w=i.sort,T=P.getSortForColumn(w,t),y=d!==P.REVERSE_TYPE.NONE,{userColumnWidths:E}=a,I=[...E.values()].some(x=>x===0),D=i.isColumnFrozen(s);return l.push({title:"Hide Column",group:Z.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),l.push({title:D?"Unfreeze Column":"Freeze Column",group:Z.GROUP_HIDE_COLUMNS,action:()=>{D?this.irisGrid.unFreezeColumnByColumnName(r.name):this.irisGrid.freezeColumnByColumnName(r.name)},order:10}),l.push({title:"Show All Columns",group:Z.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!I}),l.push({title:"Quick Filters",icon:Zn,iconColor:f,shortcut:dn.TABLE.TOGGLE_QUICK_FILTER,group:Z.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),l.push({title:"Advanced Filters",icon:u.get(t)?dd:zr,iconColor:g,group:Z.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),l.push({title:"Clear Table Filters",group:Z.GROUP_FILTER,order:40,shortcut:dn.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(c.size>0||u.size>0||m!=null)}),l.push({title:"Sort by",icon:Zn,iconColor:b,group:Z.GROUP_SORT,order:10,actions:this.sortByActions(r,t,T)}),l.push({title:"Add Additional Sort",disabled:T&&w.length===1||y&&w.length===1||T&&y&&w.length===2||w.length===0,group:Z.GROUP_SORT,order:20,actions:this.additionalSortActions(r,t)}),l.push({title:"Clear Table Sorting",disabled:w.length===0||y&&w.length===1,group:Z.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,Z.COLUMN_SORT_DIRECTION.none)},order:30}),l.push({title:d===P.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:Zn,iconColor:C,group:Z.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:dn.TABLE.REVERSE,action:()=>{d===P.REVERSE_TYPE.NONE?this.irisGrid.reverse(P.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(P.REVERSE_TYPE.NONE)}}),l.push({title:"Copy Column Name",group:Z.GROUP_COPY,action:()=>{var x;Ne.copyToClipboard((x=i.textForColumnHeader(t))!=null?x:"").catch(U=>Rh.error("Unable to copy header",U))}}),P.isDateType(r.type)?l.push({title:"Date/Time Format",group:Z.GROUP_FORMAT,actions:this.dateFormatActions(r)}):P.isNumberType(r.type)&&l.push({title:"Number Format",group:Z.GROUP_FORMAT,actions:(F=this.numberFormatActions(r))!=null?F:void 0}),l}getCellActions(t,e,n){A(t);const{irisGrid:s}=this,{column:i,row:o}=n,{model:r,canCopy:l}=s.props,{columns:a}=r,d=s.getModelRow(o);A(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,w=new dt({timeZone:C==null?void 0:C.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Dh}),T=new dt({timeZone:C==null?void 0:C.timeZone,showTimeZone:C==null?void 0:C.showTimeZone,showTSeparator:C==null?void 0:C.showTSeparator,defaultDateTimeFormatString:Dh});if(m==null||o==null)return p;if(r.isFilterable(t)){const E={title:"Filter By Value",icon:Zn,iconColor:b,group:Z.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(P.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(P.isNumberType(m.type)||P.isCharType(m.type)){A(t);const I=P.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(P.isDateType(m.type)){const I=w.format(c),D=T.format(c);g.get(t)&&E.actions.push({title:"And",actions:this.dateFilterActions(m,I,D,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.dateFilterActions(m,I,D,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:dn.TABLE.GOTO_ROW,group:Z.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${o+1}`)};return p.push(y),l&&(p.push({title:"Copy Cell",group:Z.GROUP_COPY,order:10,action:()=>{s.copyCell(i,o)}}),p.push({title:"Copy Cell Unformatted",group:Z.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;A(p);const{columnHeaderHeight:w,gridY:T,columnHeaderMaxDepth:y}=p,E=[];if(a!=null&&d!=null){const I=c.valueForCell(a,d),D=c.textForCell(a,d),F=m[a],{onContextMenu:x}=s.props;F!=null&&E.push(x({model:c,value:I,valueText:D,column:F,rowIndex:r,columnIndex:o,modelRow:d,modelColumn:a}))}return a!=null&&c.isFilterable(a)&&E.push({title:"Clear Column Filter",group:Z.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(a)},disabled:!(f.has(a)||b.has(a))}),(g?i<=T:i<=w*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:ms.COPY,group:Z.GROUP_COPY,order:30,action:()=>{s.copyRanges(C)}}),E.push({title:"Copy Selection w/ Headers",group:Z.GROUP_COPY,order:40,action:()=>{s.copyRanges(C,!0)}})),Je(c)&&c.isEditable&&C.length>0&&E.push({title:"Delete Selected Rows",group:Z.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(C)}})),E.length===0?!1:(A(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=kl.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?ds:void 0,group:d,order:r,action:()=>{const m=e.getColumnIndexByName(t.name);A(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(P.isDecimalType(t.type))i=Xo.getOptions(s,l=>{A(o),this.debouncedUpdateCustomFormat(o,l)});else if(P.isIntegerType(t.type))i=Ol.getOptions(s,l=>{A(o),this.debouncedUpdateCustomFormat(o,l)});else return Rh.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?ds:void 0,order:l,action:()=>{o===void 0&&a&&a.type===et.TYPE_CONTEXT_CUSTOM||(A(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 A(u),d.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[i?Z.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,Z.getQuickFilterCondition(l,t.filter().eq(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().notEq(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().contains(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().contains(o).not(),i),Z.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,Z.getQuickFilterCondition(l,t.filter().invoke("startsWith",o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().invoke("endsWith",o),i),Z.getQuickFilterText(a,`*${e}`,i))},order:60,group:oe.groups.low}),d}numberFilterActions(t,e,n,s,i){const o=Z.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 A(u),a.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[i?Z.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=Z.getNumberValueEqualsFilter(t,n);this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,m,i),Z.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=Z.getNumberValueEqualsFilter(t,n).not();this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,m,i),Z.getQuickFilterText(l,`!=${e}`,i))},order:20,group:oe.groups.low}),d&&!P.isCharType(t.type)&&(a.push({title:"greater than",description:`Show only rows where ${t.name} is greater than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,t.filter().greaterThan(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().greaterThanOrEqualTo(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().lessThan(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().lessThanOrEqualTo(o),i),Z.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 A(a),i.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[s?Z.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,Z.getQuickFilterCondition(r,t.filter().isTrue(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isFalse(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isNull(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isNull().not(),s),Z.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);A(c);const u=[];return u.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[o?Z.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,Z.getQuickFilterCondition(l,t.filter().eq(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().notEq(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().lessThan(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().lessThanOrEqualTo(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().greaterThan(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().greaterThanOrEqualTo(r),o),Z.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 A(l),o.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[n?Z.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,Z.getQuickFilterCondition(s,t.filter().isNull(),n),Z.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,Z.getQuickFilterCondition(s,t.filter().isNull().not(),n),Z.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,Z.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.ascending)?Zn:void 0,iconColor:i},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.descending)?Zn:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return P.isNumberType(t.type)&&(o.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.ascending,!0)?Zn:void 0,iconColor:i}),o.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.descending,!0)?Zn:void 0,iconColor:i})),o}additionalSortActions(t,e){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:v("div",{className:"btn-context-menu menu-title",children:[h("span",{className:"icon",children:h(j,{icon:Zn,style:{color:s!=null?s:void 0}})}),h("span",{className:"title",children:"Add Additional Sort"}),h("span",{className:"shortcut",children:Ne.isMacPlatform()?"\u2318Click":"^Click"})]}),order:1},{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return P.isNumberType(t.type)&&(i.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(t,e=null,n=!1){return t?t.direction===e&&t.isAbs===n:!1}};let bs=Z;bs.GROUP_EDIT=oe.groups.high+10;bs.GROUP_HIDE_COLUMNS=oe.groups.high+25;bs.GROUP_FILTER=oe.groups.high+50;bs.GROUP_GOTO=oe.groups.high+51;bs.GROUP_SORT=oe.groups.high+75;bs.GROUP_COPY=oe.groups.high+100;bs.GROUP_FORMAT=oe.groups.high+150;bs.COLUMN_SORT_DIRECTION={ascending:"ASC",descending:"DESC",none:null};class Qv extends yt{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 Zv extends yt{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 Jv extends yt{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=Ne.isModifierKeyDown(s);return this.irisGrid.toggleSort(i,o),!0}return!1}}class eT extends yt{constructor(e){super(),this.irisGrid=e}onWheel(e,n,s){const{irisGrid:i}=this,{model:o}=i.props,{metrics:r,pendingRowCount:l}=i.state;A(r);const{bottom:a,rowCount:d,rowHeight:c}=r,{deltaY:u}=K.getScrollDelta(s);return Je(o)&&o.isEditable&&a>=d-1&&u>0&&i.setState({pendingRowCount:l+Math.ceil(u/c)}),!1}}const tT=3e3,nT=({children:t=null,onEntering:e,onEntered:n,onExiting:s,onExited:i})=>{const[o,r]=S.exports.useState(!1),l=S.exports.useRef(),a=gl(t),d=S.exports.useCallback(()=>{r(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{r(!1)},tT)},[r,l]);return S.exports.useEffect(()=>{a!==t&&t!=null&&d()},[t,a,r,d]),S.exports.useEffect(()=>()=>l.current?clearTimeout(l.current):void 0,[]),h(_l,{className:"toast-bottom-bar",isShown:o,onEntering:e,onEntered:n,onExiting:s,onExited:i,children:t})};class sT extends qo{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!==P.REVERSE_TYPE.NONE&&l!=null&&l.length>0&&(n+=i.reverseHeaderBarHeight),n}getUserColumnWidths(){return this.userColumnWidths}}const iT=1,dp=Y.memo(({model:t,modelColumns:e,top:n,bottom:s,left:i,right:o,filter:r,formatter:l,reverseType:a=P.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:w=new Map,frozenColumns:T,formatColumns:y})=>{const E=S.exports.useMemo(()=>se.getModelViewportColumns(e,i,o,u,m,p,iT),[e,i,o,u,m,p]);return S.exports.useEffect(function(){t.filter=r},[t,r]),S.exports.useEffect(function(){const D=[...d];a!==P.REVERSE_TYPE.NONE&&D.push(M.Table.reverse()),t.sort=D},[t,d,a]),S.exports.useEffect(function(){t.formatter=l},[t,l]),S.exports.useEffect(function(){t.isCustomColumnsAvailable&&(t.customColumns=c)},[t,c]),S.exports.useEffect(function(){t.isFormatColumnsAvailable&&(t.formatColumns=y)},[t,y]),S.exports.useEffect(function(){t.setViewport(n,s,E)},[t,n,s,E]),S.exports.useEffect(function(){t.isRollupAvailable&&(t.rollupConfig=g)},[t,t.isRollupAvailable,g]),S.exports.useEffect(function(){t.isSelectDistinctAvailable&&(t.selectDistinctColumns=b)},[t,b]),S.exports.useEffect(function(){t.isTotalsAvailable&&(t.totalsConfig=f)},[t,t.isTotalsAvailable,f]),S.exports.useEffect(function(){t.pendingRowCount=C},[t,C]),S.exports.useEffect(function(){t.pendingDataMap=w},[t,w]),S.exports.useEffect(function(){T&&t.updateFrozenColumns(T)},[t,T]),null});dp.displayName="IrisGridModelUpdater";const Hn=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),ha=16;class Fo extends Gi{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(Hn.SORT_UP,aC),this.setIcon(Hn.SORT_DOWN,lC),this.setIcon(Hn.CARET_DOWN,ls),this.setIcon(Hn.CARET_RIGHT,Su),this.setIcon(Hn.CELL_OVERFLOW,Nf)}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:ha/n.icon[0],d:ha/n.icon[1]};o.addPath(i,r),this.icons[e]=o}getIcon(e){return this.icons[e]}getSortIcon(e){return e?e.direction===P.sortDirection.ascending?this.getIcon(Hn.SORT_UP):e.direction===P.sortDirection.descending?this.getIcon(Hn.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=B(a,i),c=l.get(s);if(c===void 0)return;const u=r.valueForCell(c,d);if(P.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,visibleColumnWidths:d,visibleColumnXs: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,{visibleRowYs: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{visibleColumnWidths:r,visibleColumnXs:l,maxY:a}=i,d=l.get(o),c=r.get(o);A(d),A(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!==P.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!==P.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,visibleColumnWidths:d,visibleColumnXs:c,gridX:u,columnHeaderHeight:m,fontWidths:p}=o,{headerHorizontalPadding:g}=l,f=B(d,s,0),b=B(c,s)+u,C=a.get(s);if(C==null)return;const w=P.getSortForColumn(r.sort,C);if(!w)return;const T=this.getSortIcon(w);if(!T)return;const y=r.textForColumnHeader(C);if(y===void 0)return;const E=(H=p.get(e.font))!=null?H:Gi.DEFAULT_FONT_WIDTH;A(E);const I=y.length*E,D=u+b+I+g;let{maxX:F}=i;F-=g;const x=u+b+f-g-1,U=D>F?D+1:Math.min(F,x),$=w.direction===P.sortDirection.ascending?-6:-12,O=m*.5+$;e.save(),e.beginPath(),e.rect(b,0,f,m),e.clip(),e.fillStyle=l.headerSortBarColor,e.translate(U,O),e.fill(T),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,visibleColumnWidths:g,visibleColumnXs: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 w=0;w<p.length;w+=1){const T=p[w],y=B(m,T),E=B(f,T),I=B(g,T);if(i.isFilterable(y)&&I>0){const D=d+(E!=null?E:0);e.rect(D+.5,C+.5,I,a-2)}}e.stroke();for(let w=0;w<p.length;w+=1){const T=p[w],y=B(g,T),I=B(f,T)+d;this.drawExpandedFilterHeader(e,n,T,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,w=c.get(s);if(w===void 0)return;const T=a.get(w),y=d.get(w);if(T==null&&y==null)return;let E=null;if(T!=null){const{text:D}=T;if(E=D,E||(E=P.getFilterText(T.filter)),E!=null){const{fontWidths:F}=r;let x=F.get(e.font);(x==null||x===0)&&(x=e.measureText("8").width,x||(x=10));const U=(o-f*2)/x;U<=0?E="":E.length>U&&(E=`${E.substring(0,U-1)}\u2026`)}}if(e.save(),Fo.isFilterValid(y,T)&&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 D=i+2,F=C+2,x=o-3,U=m-5;e.strokeRect(D,F,x,U)}if(E!=null&&E!==""){const D=i+f,F=C+m*.5+1;e.fillStyle=b,e.fillText(E,D,F)}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,visibleColumnWidths:u,visibleColumnXs: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 w=C+l;this.drawCollapsedFilterHeader(e,n,f,w,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:w}=l;e.save();const T=Fo.isFilterValid(g,p);C!=null&&p==null&&g==null?e.fillStyle=C:b!=null&&T?e.fillStyle=b:w!=null&&(e.fillStyle=w);const y=i+1,E=u-f,I=o-1,D=f-1;e.fillRect(y,E,I,D),e.restore()}drawTreeMarker(e,n,s,i,o,r,l){e.save();const{x1:a,y1:d}=o,c=l?this.getIcon(Hn.CARET_DOWN):this.getIcon(Hn.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:w,visibleRowHeights:T,visibleRowYs:y,width:E}=s;if(f<=0||g.length===0)return;const{cellHorizontalPadding:I,floatingGridRowColor:D,floatingRowBackgroundColors:F,headerColor:x,rowHoverBackgroundColor:U}=l;e.translate(d,a),e.beginPath();const $=Math.min(c,E-f-w-d);e.fillStyle=F,m>0&&e.rect($,0,f,m),p>0&&e.rect($,b-a-C-p,f,p),e.fill();const O=o!=null&&r!=null&&o>=d&&o<=c+f?K.getRowAtY(r,s):null;if(U!=null&&O!==null&&g.includes(O)){e.fillStyle=U;const L=y.get(O),N=T.get(O);A(L),A(N),e.fillRect($,L,f,N)}if(e.beginPath(),D!=null&&(e.strokeStyle=D),m>0&&(e.moveTo($+.5,.5),e.lineTo($+.5,m-.5)),p>0){const L=b-a-C-p;e.moveTo($-.5,L+.5),e.lineTo($-.5,L+p-.5)}e.stroke(),e.fillStyle=x,e.textAlign="left";const H=$+I;for(let L=0;L<g.length;L+=1){const N=g[L],k=T.get(N),_=y.get(N),V=u.get(N);if(_!=null&&k!=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}=K.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}=K.getCellInfoFromXY(s,i,o);if(a==null||d==null||c==null||u==null||!P.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:Fo.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}=K.getCellInfoFromXY(e,n,s);A(a),A(l),A(d);const{width:c,verticalBarWidth:u}=s,{cellHorizontalPadding:m}=i,p=ha+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(Hn.CELL_OVERFLOW);r!=null&&l!=null&&n.translate(r+c,l+2),n.fill(p),n.restore()}}const oT="12px Fira Sans, sans-serif",rT="#f0f0ee",lT="#1a171a",ae={"grid-bg":"#211f22",font:oT,white:rT,black:lT,"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"},cp=Object.freeze({backgroundColor:ae["grid-bg"],white:ae.white,black:ae.black,font:ae.font,headerBackgroundColor:ae["header-bg"],headerColor:ae["header-color"],headerSeparatorColor:ae["header-separator-color"],headerSeparatorHoverColor:ae["header-separator-hover-color"],headerHiddenSeparatorHoverColor:ae["header-hidden-separator-hover-color"],headerSortBarColor:ae["header-sort-bar-color"],headerReverseBarColor:ae["header-reverse-bar-color"],headerBarCasingColor:ae["header-bar-casing-color"],headerFont:ae["header-font"],rowBackgroundColors:ae["row-background-colors"],rowHoverBackgroundColor:ae["row-hover-bg"],selectionColor:ae["selection-color"],selectionOutlineColor:ae["selection-outline-color"],selectionOutlineCasingColor:ae["selection-outline-casing-color"],selectedRowHoverBackgroundColor:ae["selected-row-hover-bg"],scrollBarBackgroundColor:ae["scroll-bar-bg"],scrollBarHoverBackgroundColor:ae["scroll-bar-hover-bg"],scrollBarCasingColor:ae["scroll-bar-casing-color"],scrollBarCornerColor:ae["scroll-bar-corner-color"],scrollBarColor:ae["scroll-bar-color"],scrollBarHoverColor:ae["scroll-bar-hover-color"],scrollBarActiveColor:ae["scroll-bar-active-color"],scrollBarSelectionTickColor:ae["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:ae["scroll-bar-active-selection-tick-color"],textColor:ae["text-color"],positiveNumberColor:ae["positive-number-color"],negativeNumberColor:ae["negative-number-color"],zeroNumberColor:ae["zero-number-color"],dateColor:ae["date-color"],pendingTextColor:ae["pending-text-color"],errorTextColor:ae["error-text-color"],nullStringColor:ae["null-string-color"],filterBarActiveBackgroundColor:ae["filter-bar-active-bg"],filterBarExpandedBackgroundColor:ae["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:ae["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:ae["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:ae["filter-bar-separator-color"],filterBarActiveColor:ae["filter-bar-active-color"],filterBarErrorColor:ae["filter-bar-error-color"],filterIconColor:ae["filter-icon-color"],scrimColor:ae["scrim-color"],contextMenuSortIconColor:ae["context-menu-sort-icon-color"],contextMenuReverseIconColor:ae["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:ae["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(ae["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(ae["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:ae["linker-column-hover-bg"],treeLineColor:ae["tree-line-color"],treeMarkerColor:ae["tree-marker-color"],treeMarkerHoverColor:ae["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:ae["floating-grid-row-color"],floatingRowBackgroundColors:ae["floating-row-background-colors"],floatingDividerInnerColor:ae["floating-divider-inner-color"],floatingDividerOuterColor:ae["floating-divider-outer-color"],overflowButtonColor:ae["overflow-button-color"],overflowButtonHoverColor:ae["overflow-button-hover-color"]});const Ir=X.module("ColumnStatistics"),aT={SIZE:"Number of Rows"},Ua=class extends S.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.handleCopyHeader=this.handleCopyHeader.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0,copied:!1}}static getStatsLabel(t){var e;return(e=aT[t])!=null?e:t.split(" ").map(n=>n[0].toUpperCase()+n.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}handleCopyHeader(){this.setState({copied:!0})}maybeGenerateStatistics(){const{model:t}=this.props,e=t.rowCount;this.setState({numRows:e}),t.isColumnStatisticsAvailable?e<Ua.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:t,model:e}=this.props;this.cancelablePromise=Ee.makeCancelable(e.columnStatistics(t)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(t){Ir.debug("Received statistics",t);const{model:e,onStatistics:n}=this.props,s=[];t.statisticsMap.forEach((i,o)=>{s.push({operation:Ua.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}),n()}handleError(t){if(t!=null&&Ee.isCanceled(t)){Ir.debug("Called handleError on a cancelled promise result");return}Ir.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,copied:r}=this.state,l=!s&&n==null&&i==null&&e.isColumnStatisticsAvailable,a=[],d=t.type.substring(t.type.lastIndexOf(".")+1),c=t.description===null?null:t.description;if(i!=null)for(let g=0;g<i.length;g+=1){const{operation:f,className:b,value:C,type:w}=i[g],T=w?e.displayString(C,w):e.displayString(C,t.type,t.name),y=v(Y.Fragment,{children:[h("div",{className:W("column-statistic-operation",b),children:f}),h("div",{className:"column-statistic-value",children:T})]},f);a.push(y)}const u=pt(e)&&e.hasExpandableRows?"Expanded Rows":"Number of Rows",m=e.displayString(o,"long"),p=e.getColumnIndexByName(t.name);return v("div",{className:"column-statistics",children:[v("div",{className:"column-statistics-title",children:[t.name,v("span",{className:"column-statistics-type",children:["\xA0(",d,")"]}),h(z,{kind:"ghost",className:"column-statistics-copy",icon:r?ld:od,onClick:()=>{Ne.copyToClipboard(t.name).then(this.handleCopyHeader).catch(g=>Ir.error("Unable to column name",g))},tooltip:r?"Copied text":"Copy column name"})]}),c!=null&&h("div",{className:"column-statistics-description",children:c}),p!=null&&!e.isColumnMovable(p)&&v("div",{className:"column-statistics-status",children:[h(j,{icon:e.isColumnFrozen(p)?Qf:xf,className:"mr-1"}),e.isColumnFrozen(p)?"Frozen":"Not movable"]}),v("div",{className:"column-statistics-grid",children:[i==null&&v(pe,{children:[h("div",{className:"column-statistic-operation",children:u}),h("div",{className:"column-statistic-value",children:m})]}),a]}),l&&h(z,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h("div",{className:"error-message",children:`${n}`}),i&&!s&&h(z,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h(j,{icon:cd,className:"mr-1"}),children:"Refresh"}),s&&v("div",{className:"column-statistics-loading",children:[h(kn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let hp=Ua;hp.AUTO_GENERATE_LIMIT=1e5;class Rr extends S.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=>P.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=v(pe,{children:[h(j,{icon:kc,mask:sa,transform:"shrink-2 down-5 right-7"}),h(j,{icon:zf,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?a=v(pe,{children:[h(j,{icon:Lo,mask:sa,transform:"shrink-1 down-5 right-7"}),h(j,{icon:Oc,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):a=v(pe,{children:[h(j,{icon:kc,mask:sa,transform:"shrink-2 down-5 right-7"}),h(j,{icon:iC,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),v("div",{className:"cross-column-container",children:[h(Cs,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),v("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(Be,{children:"Configure Columns"}),h(xn,{isShown:o,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:v("div",{className:"cross-column-popup",children:["Searched Columns",h("div",{className:"cross-column-scroll",children:i.map(d=>v(Y.Fragment,{children:[h(Bt,{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))}),v("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&&v("p",{className:"text-danger",children:[h(j,{icon:Oc})," Select at least one column to search."]})]})})]})]})}}const Ms=X.module("PartitionSelectorSearch"),dT=150,up=class extends S.exports.Component{constructor(t){super(t),this.debounceUpdateFilter=je(()=>{this.updateFilter()},dT),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 ai||Ms.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(){Ms.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){Ms.debug2("handleSelect",t);const{onSelect:e}=this.props,{offset:n,items:s}=this.state,i=t-n;if(i<0||s.length<=i){Ms.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;Ms.debug2("handleTableUpdate",l,n,s.length),this.setState({itemCount:l,items:s,offset:n,isLoading:!1})}handleTextChange(t){Ms.debug2("handleTextChange");const{value:e}=t.target;this.setState({text:e}),this.debounceUpdateFilter()}handleViewportChange(t,e){Ms.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)}Ms.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,up.MAX_VISIBLE_ITEMS)*bn.DEFAULT_ROW_HEIGHT+11;return v("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(bn,{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&&v("div",{className:"iris-grid-partition-selector-loading",children:[h(kn,{}),"\xA0Loading..."]})]})}};let Ll=up;Ll.MAX_VISIBLE_ITEMS=12;Ll.defaultProps={initialPageSize:100,onSelect:()=>{},onListResized:()=>{}};Ll.propTypes={getFormattedString:R.exports.func.isRequired,table:R.exports.shape({addEventListener:R.exports.func.isRequired,removeEventListener:R.exports.func.isRequired,columns:R.exports.arrayOf(R.exports.shape({name:R.exports.string.isRequired,type:R.exports.string.isRequired,filter:R.exports.func.isRequired})),size:R.exports.number.isRequired,applyFilter:R.exports.func.isRequired,setViewport:R.exports.func.isRequired}).isRequired,initialPageSize:R.exports.number,onSelect:R.exports.func,onListResized:R.exports.func};const yi=X.module("IrisGridPartitionSelector"),cT=250;class mp extends S.exports.Component{constructor(e){super(e),this.debounceUpdate=je(()=>{this.sendUpdate()},cT),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(){yi.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:n}=this.state;e(n)}handleCloseClick(){yi.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){yi.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){yi.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(){yi.debug2("sendUpdate");const{onChange:e}=this.props,{partition:n}=this.state;e(n)}sendFetchAll(){yi.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(Ll,{getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:l=>{this.selectorSearch=l}},"search");return v("div",{className:"iris-grid-partition-selector",children:[h("div",{className:"status-message",children:v("span",{children:['Filtering "',e,'" partition to']})}),v("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:v("button",{type:"button",className:"btn btn-outline-primary",children:[h(j,{icon:ls}),h(Be,{children:"Partitions"}),h(Gn,{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(j,{icon:Xi})})]})}}mp.defaultProps={onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""};const hT=X.module("SelectDistinctBuilder");class pp extends S.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!=="");ht(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){hT.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 v("div",{className:"form-inline px-3 pb-3",children:[v("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(z,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(i)},icon:h(j,{icon:_n,transform:"grow-3"}),tooltip:"Delete column"})]},i)})}render(){const{columns:e,inputs:n}=this.state,s=n.length>=e.length;return v("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(z,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:s,icon:As,children:"Add Additional Column"})}),h("div",{className:"select-distinct-builder-footer",children:v("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."]})})]})}}pp.defaultProps={selectDistinctColumns:[],onChange:()=>{}};const Gd=({items:t,onChange:e=()=>{}})=>h(Uu,{items:Array.from(t.entries()).map(([n,s])=>({title:Gd.getAdvancedSettingsTitleForKey(n),isOn:s,onChange:i=>e(n,i)}))});Gd.getAdvancedSettingsTitleForKey=t=>{switch(t){case ui.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Control filters clear existing table filters";case ui.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Inbound links clear existing table filters"}};const Mh=X.module("ConditionalFormattingMenu"),ua=()=>{};function uT(t){const{column:{type:e}}=t;if(P.isNumberType(e))return t.condition===Xe.IS_NULL||t.condition===Xe.IS_NOT_NULL?"":`${t.value}`;if(P.isCharType(e))return t.condition===Ht.IS_NULL||t.condition===Ht.IS_NOT_NULL?"":`${t.value}`;if(P.isStringType(e))return t.condition===rn.IS_NULL||t.condition===rn.IS_NOT_NULL?"":`"${t.value}"`;if(P.isDateType(e))return t.condition===Ht.IS_NULL||t.condition===Ht.IS_NOT_NULL?"":`${t.value}`;if(P.isBooleanType(e))return"";throw new Error(`Invalid column type ${e} in getRuleValue`)}function mT(t){return P.isNumberType(t.column.type)&&t.condition===Xe.IS_BETWEEN?`${t.start} < ${t.column.name} < ${t.end}`:`${t.column.name} ${Av(t.column.type,t.condition)}
|
|
33
|
+
`:","}}return e}makeSnapshot(t){if(t<=0)return;A(this.gridRangeCounter);let e=0,n=this.gridRanges[this.gridRangeCounter];for(A(this.tableSubscription),A(this.columns);e<t;){A(n),A(n.startRow),A(n.endRow),A(this.rangedSnapshotCounter),A(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(Ee.makeCancelable(this.tableSubscription.snapshot(M.RangeSet.ofRange(s,i),this.columns).then(r=>(lv(r),this.handleSnapshotResolved(r,o,s,i),o)).catch(r=>{es.error(r)}),r=>{es.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;this.useBlobFallback||(e!=null&&(this.makeIframe(`${e}`),this.writeCsvTable()),n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,ks.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},ks.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 to=ks;to.DOWNLOAD_CELL_CHUNK=6e3;to.SNAPSHOT_BUFFER_SIZE=5;to.STREAM_TIMEOUT=8e3;to.SNAPSHOT_HANDLER_TIMEOUT=5;to.defaultProps={getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}};const av=X.module("VisibilityOrderingBuilder"),dv=150,Ze=class extends S.exports.Component{constructor(t){super(t),this.debouncedSearchColumns=je(this.searchColumns,dv),this.getFirstMovableIndex=Te((e,n)=>{for(let s=0;s<n.length;s+=1)if(e.isColumnMovable(s))return s;return null}),this.getLastMovableIndex=Te((e,n)=>{for(let s=n.length-1;s>=0;s-=1)if(e.isColumnMovable(s))return s;return null}),this.renderImmovableItem=Te(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.renderVisibilityOrderingItem=Te((e,n,s,i,o,r,l,a)=>h(dl,{draggableId:`${n}`,index:s,disableInteractiveElementBlocking:!0,children:d=>v("div",{className:"visibility-ordering-list-item",ref:d.innerRef,...d.draggableProps,children:[h(z,{kind:"ghost",className:"btn-link-icon visibility",onMouseDown:c=>{this.handleVisibilityDraggingStart(n,i?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE,c)},onMouseEnter:c=>{this.handleMouseEnter(n,c)},onMouseUp:c=>{this.handleVisibilityDraggingEnd(c)},onClick:c=>{this.handleItemClick(n,c,!1)},onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(this.handleVisibilityKeyDown(n,i?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE),c.stopPropagation(),c.preventDefault())},tooltip:i?"Show":"Hide",children:h(j,{icon:i?xc:Ra})}),v("div",{role:"menuitem",tabIndex:0,className:W("ordering column-item",{isSelected:o},{isDragging:r},{isDragged:l},{"two-dragged":a===2},{"multiple-dragged":a!=null&&a>2}),onClick:c=>{this.handleItemClick(n,c)},...d.dragHandleProps,children:[h("span",{className:"column-name",children:e}),v("div",{children:[a!=null&&a!==0&&h("span",{className:"number-badge",children:a}),h(Be,{children:"Drag to re-order"}),h(j,{icon:ul})]})]})]})},e)),this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleOrderDraggingStart=this.handleOrderDraggingStart.bind(this),this.handleOrderDraggingEnd=this.handleOrderDraggingEnd.bind(this),this.state={selectedColumns:[],lastSelectedColumns:[],isDraggingVisibility:!1,visibilityDraggingOption:void 0,visibilityDraggingStartColumn:null,isDraggingOrder:!1,orderDraggingColumn:null,searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:t,onColumnVisibilityChanged:e,onMovedColumnsChanged:n}=this.props,{columns:s}=t;e(s.map(i=>{const o=t.getColumnIndexByName(i.name);return A(o),o}),Ze.VISIBILITY_OPTIONS.SHOW),this.setState({selectedColumns:[],lastSelectedColumns:[],searchFilter:""}),n([])}resetSelection(){const{isDraggingOrder:t}=this.state;t||this.setState({selectedColumns:[],lastSelectedColumns:[]})}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 r;const{model:e,movedColumns:n}=this.props,{columns:s}=e,i=[];let o=s.length;if(s.forEach((l,a)=>{const d=l.name.toLowerCase();e.isColumnMovable(a)&&d.includes(t.toLowerCase())&&(i.push(a),o=Math.min(o,K.getVisibleIndex(a,n)))}),this.addColumnToSelected(i,!1),i.length>0){const l=(r=this.list)==null?void 0:r.querySelectorAll(".column-item")[o];l==null||l.scrollIntoView({block:"center"})}}handleVisibilityKeyDown(t,e){const{onColumnVisibilityChanged:n}=this.props;n([t],e)}handleVisibilityDraggingStart(t,e,n){const{onColumnVisibilityChanged:s,movedColumns:i}=this.props,o=K.isModifierKeyDown(n),r=n.shiftKey;if(o||r)return;s([t],e);const l=K.getVisibleIndex(t,i);this.setState({isDraggingVisibility:!0,visibilityDraggingOption:e,visibilityDraggingStartColumn:l}),this.addColumnToSelected([t])}handleVisibilityDraggingEnd(t=null){t&&t.target.focus();const{isDraggingVisibility:e}=this.state;e&&this.setState({isDraggingVisibility:!1,visibilityDraggingOption:void 0,visibilityDraggingStartColumn:null})}handleOrderDraggingStart(t){var o;document.documentElement.classList.add("drag-pointer-events-none");const{selectedColumns:e}=this.state,{draggableId:n,source:{index:s}}=t,i=parseInt(n,10);if(((o=this.list)==null?void 0:o.querySelectorAll(".column-item")[s]).focus(),!e.includes(i)){this.setState({isDraggingOrder:!0,orderDraggingColumn:i,selectedColumns:[i]});return}this.setState({isDraggingOrder:!0,orderDraggingColumn:i})}handleOrderDraggingEnd(t){document.documentElement.classList.remove("drag-pointer-events-none");const{movedColumns:e,onMovedColumnsChanged:n}=this.props,{selectedColumns:s,orderDraggingColumn:i}=this.state;if(this.setState({isDraggingOrder:!1,orderDraggingColumn:null}),!t.destination)return;const{index:o}=t.destination,r=[...s].sort((m,p)=>K.getVisibleIndex(m,e)-K.getVisibleIndex(p,e));let l=[...e];A(i);const a=K.getVisibleIndex(i,l),d=[],c=[];l=K.moveItem(a,o,l),r.forEach(m=>{const p=K.getVisibleIndex(m,l);m!==i&&(p<o?d.push(m):c.push(m))}),d.forEach(m=>{const p=K.getVisibleIndex(m,l);l=K.moveItem(p,o,l)});const u=d.length>0||a>o?o+1:o;c.reverse().forEach(m=>{const p=K.getVisibleIndex(m,l);l=K.moveItem(p,u,l)}),n(l),av.debug("move column order by drag & drop",l)}handleMouseEnter(t,e){const{onColumnVisibilityChanged:n,movedColumns:s,userColumnWidths:i}=this.props,{isDraggingVisibility:o,visibilityDraggingOption:r,visibilityDraggingStartColumn:l}=this.state,a=K.getVisibleIndex(t,s),d=K.isModifierKeyDown(e),c=e.shiftKey;if(!o||d||c)return;e.target.focus();const u=[t];A(l);const m=a>l;for(let p=l;m?p<a:p>a;m?p+=1:p-=1){const g=K.getModelIndex(p,s),f=K.checkColumnHidden(g,i);(f&&r===Ze.VISIBILITY_OPTIONS.SHOW||!f&&r===Ze.VISIBILITY_OPTIONS.HIDE)&&u.push(g)}this.addColumnToSelected(u,!0),n(u,r)}handleMoveColumns(t){const{movedColumns:e,onMovedColumnsChanged:n,model:s}=this.props,{columns:i}=s,{selectedColumns:o}=this.state;if(o.length===0)return;const r=this.getFirstMovableIndex(s,i),l=this.getLastMovableIndex(s,i);if(r==null||l==null)return;const a=[...o].sort((u,m)=>t===Ze.MOVE_OPTIONS.TOP||t===Ze.MOVE_OPTIONS.UP?K.getVisibleIndex(u,e)-K.getVisibleIndex(m,e):K.getVisibleIndex(m,e)-K.getVisibleIndex(u,e));let d=[],c=()=>{};switch(t){case Ze.MOVE_OPTIONS.TOP:a.forEach((u,m)=>{const p=K.getVisibleIndex(u,e);d=K.moveItem(p,r+m,d)}),c=()=>{A(this.list),this.list.scrollTop=0};break;case Ze.MOVE_OPTIONS.BOTTOM:a.forEach((u,m)=>{const p=K.getVisibleIndex(u,e);d=K.moveItem(p,l-m,d)}),c=()=>{A(this.list),this.list.scrollTop=this.list.scrollHeight};break;case Ze.MOVE_OPTIONS.UP:K.getVisibleIndex(a[0],e)!==r&&a.forEach(u=>{const m=K.getVisibleIndex(u,e);d=K.moveItem(m,m-1,d)});break;case Ze.MOVE_OPTIONS.DOWN:K.getVisibleIndex(a[0],e)!==l&&a.forEach(u=>{const m=K.getVisibleIndex(u,e);d=K.moveItem(m,m+1,d)});break}d.length>0&&n(e.concat(d),c)}handleSortColumns(t){const{model:e,onMovedColumnsChanged:n}=this.props,{columns:s}=e,i=[],o=[];for(let c=0;c<s.length;c+=1)e.isColumnMovable(c)?i.push(c):o.push(c);const r=i.sort((c,u)=>{const m=t===Ze.SORTING_OPTIONS.ASC,p=s[c].name.toUpperCase(),g=s[u].name.toUpperCase();return sn.sort(p,g,m)}),l=[];for(let c=0;c<o.length;c+=1){const u=o[c];l[u]=u}let a=0;for(let c=0;c<r.length;c+=1){for(;l[a]!=null;)a+=1;l[a]=r[c]}let d=[];l.forEach((c,u)=>{const m=K.getVisibleIndex(c,d);d=K.moveItem(m,u,d)}),n(d)}handleItemClick(t,e,n=!0){e.stopPropagation(),e.currentTarget.focus();const{selectedColumns:s,lastSelectedColumns:i}=this.state,o=K.isModifierKeyDown(e),r=e.shiftKey,l=s.includes(t),a=[t];if(l&&o){this.removeColumnFromSelected(t);return}if(l&&s.length===1&&n){this.removeColumnFromSelected(t);return}if(r){const{movedColumns:d}=this.props,c=i[i.length-1],u=K.getVisibleIndex(c,d),m=K.getVisibleIndex(t,d),p=m>u,g=[];for(let f=u;p?f<m:f>m;p?f+=1:f-=1)g.push(K.getModelIndex(f,d));g.forEach(f=>{s.includes(f)||a.push(f)})}this.addColumnToSelected(a,o||r)}addColumnToSelected(t,e=!1){const{selectedColumns:n,lastSelectedColumns:s}=this.state,i=e?n.concat(t):t,o=e?s.concat(t):t;this.setState({selectedColumns:i,lastSelectedColumns:o})}removeColumnFromSelected(t){const{selectedColumns:e,lastSelectedColumns:n}=this.state,s=[...e];s.splice(s.findIndex(r=>r===t),1);const i=n[n.length-1],o=[...n];i===t&&o.pop(),this.setState({selectedColumns:s,lastSelectedColumns:o})}makeVisibilityOrderingList(){const{model:t,userColumnWidths:e,movedColumns:n}=this.props,{columns:s}=t,{selectedColumns:i,isDraggingOrder:o,orderDraggingColumn:r}=this.state,l=[];let a=!1;for(let d=0;d<s.length;d+=1){const c=K.getModelIndex(d,n),u=s[c],m=t.isColumnMovable(c);if(d>0&&m!==a&&l.push(h("hr",{})),m){const p=e.get(c)===0,g=i.includes(c),f=r===c,b=o&&f&&i.length>1?i.length:null;l.push(this.renderVisibilityOrderingItem(u.name,c,d,p,g,o,f,b))}else l.push(this.renderImmovableItem(u.name));a=m}return l}render(){const{model:t,userColumnWidths:e,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,{columns:o}=t,r=s.length===0,l=r?o.map((u,m)=>m).filter(u=>t.isColumnMovable(u)):[...s],a=K.checkAllColumnsHidden(l,e),d=a?"Show Selected":"Hide Selected",c=this.makeVisibilityOrderingList();return v("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,onMouseUp:()=>{this.handleVisibilityDraggingEnd()},onMouseLeave:()=>{this.handleVisibilityDraggingEnd()},children:[v("div",{className:"top-menu",children:[h(z,{kind:"ghost",onClick:()=>{n(l,a?Ze.VISIBILITY_OPTIONS.SHOW:Ze.VISIBILITY_OPTIONS.HIDE)},icon:a?xc:Ra,tooltip:"Toggle column visibility",children:r?"Toggle All":d}),v("div",{children:[h(z,{kind:"ghost",className:"text-muted",onClick:()=>{this.resetVisibilityOrdering()},tooltip:"Reset to default",children:"Reset"}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleSortColumns(Ze.SORTING_OPTIONS.ASC)},tooltip:"Sort ascending",children:h(j,{icon:hd})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleSortColumns(Ze.SORTING_OPTIONS.DSC)},tooltip:"Sort descending",children:h(j,{icon:ud})}),h("span",{className:"vertical-divider"}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.UP)},disabled:r,tooltip:"Move selection up",children:h(j,{icon:ff})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.DOWN)},disabled:r,tooltip:"Move selection down",children:h(j,{icon:pf})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.TOP)},disabled:r,tooltip:"Move selection to top",children:h(j,{icon:Wf})}),h(z,{kind:"ghost",className:"btn-link-icon",onClick:()=>{this.handleMoveColumns(Ze.MOVE_OPTIONS.BOTTOM)},disabled:r,tooltip:"Move selection to bottom",children:h(j,{icon:$f})})]})]}),h("div",{className:"top-menu",children:h(Cs,{className:"w-100",value:i,matchCount:i?s.length:void 0,onChange:this.handleSearchInputChange})}),h(Vo,{onDragStart:this.handleOrderDraggingStart,onDragEnd:this.handleOrderDraggingEnd,children:h(Ho,{droppableId:"droppable-visibility-order-list",children:(u,m)=>h("div",{role:"menu",className:W("visibility-ordering-list",{isDragging:m.draggingFromThisWith}),ref:u.innerRef,...u.droppableProps,children:v("div",{className:"column-list",ref:p=>{this.list=p},children:[c,u.placeholder]})})})})]})}};let mi=Ze;mi.VISIBILITY_OPTIONS={SHOW:"SHOW",HIDE:"HIDE"};mi.SORTING_OPTIONS={DSC:"DSC",ASC:"ASC"};mi.MOVE_OPTIONS={TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"};mi.COLUMN_CHANGE_OPTIONS={ALL:"ALL",SELECTION:"SELECTION"};mi.defaultProps={movedColumns:[],onColumnVisibilityChanged:()=>{},onMovedColumnsChanged:()=>{}};const yr=X.module("AdvancedFilterCreatorFilterItem");class $d extends S.exports.PureComponent{constructor(e){super(e),this.getCachedIsValid=me((o,r,l,a)=>{try{return!l||P.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(P.isNumberType(e)||P.isCharType(e))return jb(n);if(P.isTextType(e))return Xb(n);if(P.isDateType(e))return Qb(n);if(P.isBooleanType(e))return Zb(n);throw new Error(`Unrecognized column type: ${e}`)}catch(s){return yr.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;yr.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){yr.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(){yr.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=!P.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=$d.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:v("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:W("form-control",{error:!a}),placeholder:"Enter value",value:o,onChange:this.handleValueChange})})}),h("div",{className:"form-group col-1 px-0",children:h(z,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:_n,tooltip:"Remove Filter"})})]})})}}const yh=X.module("AdvancedFilterCreatorSelectValueList"),Va=class extends S.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=Va.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})}yh.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=Va.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);yh.debug2("Setting viewport",o,",",r),s.setViewport(o,r)}render(){const{offset:t,isLoading:e,items:n,itemCount:s}=this.state;return v("div",{className:"select-value-list-wrapper",children:[h(Bu,{itemCount:s,items:n,offset:t,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h(ut,{in:e,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"loading-list",children:h(kn,{className:"loading-spinner-large"})})})]})}};let tp=Va;tp.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{}};const np=class extends S.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,np.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;P.isCharType(s.type)?r=P.makeQuickFilter(s,e):P.isTextType(s.type)?r=P.makeQuickFilter(s,`~${e}`,n):r=P.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 v("div",{className:"advanced-filter-creator-select-value",children:[v("div",{className:l?"form-group":"",children:[h("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),l&&h("input",{type:"text",className:W("form-control",{"is-invalid":t!=null}),id:"advanced-filter-creator-select-value-input",placeholder:c,value:i,onChange:this.handleSearchChange})]}),h(tp,{table:o,filters:e,invertSelection:n,selectedValues:s,formatter:r,onChange:this.handleListChange}),v("div",{className:"advanced-filter-creator-select-meta-row",children:[v("div",{children:[h(z,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h(z,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h(ut,{in:d!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"row-count-info",children:d})})]})]})}};let Wd=np;Wd.searchDebounceTime=250;Wd.defaultProps={invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0};const mo=X.module("AdvancedFilterCreator"),Zs=class extends S.exports.PureComponent{constructor(t){var r,l;super(t),this.getFilterTypes=me(a=>P.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:ze()})))!=null?l:[];o.length===0&&o.push(Zs.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:ze()}}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){mo.debug("No values table for this model, just ignore");return}this.valuesTablePromise=P.makeCancelableTablePromise(t.valuesTable(e)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{Ee.isCanceled(n)||(mo.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(Zs.makeFilterItem()),e=e.concat(Yt.and),this.setState({filterItems:t,filterOperators:e})}handleAddOr(){let{filterItems:t,filterOperators:e}=this.state;t=t.concat(Zs.makeFilterItem()),e=e.concat(Yt.or),this.setState({filterItems:t,filterOperators:e})}handleChangeFilterOperator(t,e){let{filterOperators:n}=this.state;n=[...n],Yb(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(Zs.makeFilterItem()),this.setState({filterItems:e,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(t,e){this.setState({selectedValues:t,invertSelection:e}),this.startUpdateTimer()}handleReset(){mo.debug("Resetting Advanced Filter"),this.setState({filterItems:[Zs.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(t){const e=Ne.isModifierKeyDown(t);this.sortTable(P.sortDirection.descending,e)}handleSortUp(t){const e=Ne.isModifierKeyDown(t);this.sortTable(P.sortDirection.ascending,e)}handleSubmit(t){mo.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),t.preventDefault()}handleDone(t){mo.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,Zs.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=P.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=P.isBooleanType(t.type),m=P.isDateType(t.type),p=this.getFilterTypes(t.type),g=t.type.substring(t.type.lastIndexOf(".")+1),f=[];if(!u&&p.length)for(let w=0;w<i.length;w+=1){const T=i[w],{key:y,selectedType:E,value:I}=T,D=h($d,{column:t,filterTypes:p,onChange:this.getFilterChangeHandler(w),onDelete:this.getFilterDeleteHandler(w),selectedType:E,value:I,formatter:s},y);if(f.push(D),w<o.length){const x=o[w]===Yt.and,U=v("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h(z,{kind:"ghost",className:W("filter-operator",{active:x}),onClick:()=>this.handleChangeFilterOperator(w,Yt.and),children:"AND"}),h(z,{kind:"ghost",className:W("filter-operator",{active:!x}),onClick:()=>this.handleChangeFilterOperator(w,Yt.or),children:"OR"})]},`filterOperator${y}`);f.push(U)}}const b=this.shouldShowAddFilter(),C=v("div",{className:W("form-row justify-content-end add-filter-item",{hidden:!b}),children:[h("span",{className:"text-muted",children:h(j,{icon:As})}),h(z,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!b,tooltip:"Add filter with AND",children:"AND"}),h(z,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!b,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return f.push(C),v("div",{className:"advanced-filter-creator",role:"presentation",children:[h("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),v("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[v("div",{className:"title-bar",children:[h("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),v("div",{className:"advanced-filter-menu-buttons",children:[h(z,{kind:"ghost",className:W("sort-operator",{active:n===P.sortDirection.descending}),onClick:this.handleSortDown,icon:_c,tooltip:`Sort ${t.name} Descending`}),h(z,{kind:"ghost",className:W("sort-operator",{active:n===P.sortDirection.ascending}),onClick:this.handleSortUp,icon:h(j,{icon:_c,rotation:180}),tooltip:`Sort ${t.name} Ascending`})]})]}),h("hr",{}),v("div",{className:"advanced-filter-column-name",children:[t.name,"\xA0",v("span",{className:"column-type",children:["(",g,")"]})]}),f,c&&d==null&&v(pe,{children:[!u&&h("hr",{}),h("div",{className:"form-group",children:h(Wd,{table:a,onChange:this.handleSelectValueChange,invertSelection:r,selectedValues:l,formatter:s,showSearch:!m,timeZone:s.timeZone})})]}),v("div",{className:"form-row justify-content-end",children:[h(z,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h(z,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let zd=Zs;zd.debounceFilterUpdate=250;zd.defaultProps={options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null};function cv(t,e){const n=mv(t);return n===void 0?void 0:`${Sv(t)} ? ${n} : ${e}`}function hv(t){return dh.Column.formatRowColor(t)}function uv(t,e){return t.formatColor(e)}const ca=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||{}),rn=(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))(rn||{}),Ht=(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))(Ht||{}),Ro=(t=>(t.IS_TRUE="is-true",t.IS_FALSE="is-false",t.IS_NULL="is-null",t.IS_NOT_NULL="is-not-null",t))(Ro||{}),oi=(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))(oi||{}),Un=(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))(Un||{});function Ih(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 el(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 tl(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 mv(t){const e=tl(t.style),n=el(t.style);if(!(e===void 0||n===void 0))return`bgfg(\`${n}\`, \`${e}\`)`}function pv(t){const{column:e,value:n,start:s,end:i}=t;return xv(e.name,t.condition,n,s,i)}function gv(t){const{column:e,value:n}=t;return _v(e.name,t.condition,n)}function fv(t){const{column:e,value:n}=t;return kv(e.name,t.condition,n)}function Cv(t){const{column:e}=t;return Ov(e.name,t.condition)}function bv(t){const{column:e,value:n}=t;return Lv(e.name,t.condition,n)}function Sv(t){const{column:e}=t;if(P.isNumberType(e.type))return pv(t);if(P.isCharType(e.type))return bv(t);if(P.isStringType(e.type))return gv(t);if(P.isDateType(e.type))return fv(t);if(P.isBooleanType(e.type))return Cv(t);throw new Error("Invalid column type")}function wv(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 vv(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 Tv(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 Ev(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 yv(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 sp(t){if(P.isNumberType(t)||P.isCharType(t))return"is-equal";if(P.isStringType(t)||P.isDateType(t))return"is-exactly";if(P.isBooleanType(t))return"is-true";throw new Error("Invalid column type")}function Iv(t){if(P.isCharType(t)||P.isStringType(t))return""}function ip(t){const{condition:e,value:n,start:s,end:i}=t;return{condition:e,value:n,start:s,end:i}}function xl(t){return{condition:sp(t),value:Iv(t),start:void 0,end:void 0}}function op(){return{type:"no-formatting"}}function Rv(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 Dv(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 Mv(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 Nv(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 Fv(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 xv(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 _v(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 kv(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 Ov(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 Lv(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 Av(t,e){if(P.isNumberType(t))return Fv(e);if(P.isCharType(t))return Nv(e);if(P.isStringType(t))return Rv(e);if(P.isDateType(t))return Dv(e);if(P.isBooleanType(t))return Mv(e);throw new Error("Invalid column type")}function Pv(t,e){if(e===void 0)return ca.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){ca.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=cv(o,d);if(u===void 0){ca.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"?uv(a,u):hv(u);n.push(p),r==="conditional"?i.set(a.name,[u,p]):s=[u,p]}),n}function Hv({type:t}){return P.isNumberType(t)||P.isCharType(t)||P.isStringType(t)||P.isDateType(t)||P.isBooleanType(t)}const _l=({animation:t="iris-grid-bottom-bar-slide-up",children:e,className:n,isShown:s,onClick:i,onEntering:o,onEntered:r,onExiting:l,onExited:a})=>h(ut,{in:s,timeout:Et.transitionMs,classNames:t,onEntering:o,onEntered:r,onExiting:l,onExited:a,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:W("iris-grid-bottom-bar",n),role:"presentation",onClick:i,onKeyPress:i,children:e})});const Vv=3e3,Uv=5,Bv=({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]=S.exports.useState(!1),[g,f]=S.exports.useState(!1),b=S.exports.useRef(),C=gl(t),w=S.exports.useMemo(()=>r.size===0?o:r.size<=Uv?`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]);S.exports.useEffect(function(){C!=null&&C&&!t&&w==null&&(p(!0),f(!0),b.current=setTimeout(()=>{p(!1)},Vv))},[w,t,C]),S.exports.useEffect(function(){b.current&&l.size>0&&(clearTimeout(b.current),p(!1),f(!1))},[l]),S.exports.useEffect(function(){return()=>b.current?clearTimeout(b.current):void 0},[]);const T=l.size;let y;return t?y=h(kn,{}):g&&(y=ad),v(_l,{className:"pending-data-bottom-bar",isShown:T>0||m||w!=null,onEntering:a,onEntered:d,onExiting:c,onExited:()=>{f(!1),u&&u()},children:[w!=null&&w!==""&&v("div",{className:"error-message",children:[h(j,{icon:cs}),h("span",{children:`${w}`})]}),(w==null||w==="")&&h("div",{className:"status-message",children:T>0&&h("span",{children:`${T} row${T>1?"s":""} pending`})}),v("div",{className:"buttons-container",children:[!t&&!g&&h(z,{kind:"secondary",onClick:n,tooltip:s,children:"Discard"}),v(z,{kind:g?"success":"primary",onClick:e,icon:y,disabled:t||g||w!=null,tooltip:i,children:[t&&"Committing...",!t&&g&&"Success",!t&&!g&&"Commit"]})]})]})},po=X.module("IrisGridUtils");function Ds(t,e){return t>=0&&t<e.length}class se{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})=>Ds(a,l)&&(typeof d=="number"&&Ds(d,l)||Array.isArray(d)&&Ds(d[0],l)&&Ds(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=se.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})=>Ds(u,c)&&(typeof m=="number"&&Ds(m,c)||Array.isArray(m)&&Ds(m[0],c)&&Ds(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:w,pendingDataMap:T=new Map,frozenColumns:y}=n;A(l);const{userColumnWidths:E,userRowHeights:I}=l,{columns:D}=e;return{advancedFilters:se.dehydrateAdvancedFilters(D,i),aggregationSettings:s,customColumnFormatMap:[...o],isFilterBarShown:r,quickFilters:se.dehydrateQuickFilters(a),sorts:se.dehydrateSort(C),userColumnWidths:[...E].filter(([F])=>F!=null&&F>=0&&F<D.length).map(([F,x])=>[D[F].name,x]),userRowHeights:[...I],customColumns:[...d],conditionalFormats:[...c],reverseType:u,rollupConfig:m,showSearchBar:p,searchValue:g,selectDistinctColumns:[...f],selectedSearchColumns:b,invertSearchColumns:w,pendingDataMap:se.dehydratePendingDataMap(D,T),frozenColumns:y}}static hydrateIrisGridState(e,n){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:w,invertSearchColumns:T=!0,pendingDataMap:y=[],frozenColumns:E}=n,{columns:I,formatter:D}=e;return{advancedFilters:se.hydrateAdvancedFilters(I,s,D.timeZone),aggregationSettings:i,customColumnFormatMap:new Map(o),isFilterBarShown:r,quickFilters:se.hydrateQuickFilters(I,l,D.timeZone),sorts:se.hydrateSort(I,a),userColumnWidths:new Map(u.map(([F,x])=>typeof F=="string"||F instanceof String?[I.findIndex(({name:U})=>U===F),x]:[F,x]).filter(([F])=>F!=null&&F>=0&&F<I.length)),customColumns:d,conditionalFormats:c,userRowHeights:new Map(m),reverseType:p,rollupConfig:g,showSearchBar:f,searchValue:b,selectDistinctColumns:C,selectedSearchColumns:w,invertSearchColumns:T,pendingDataMap:se.hydratePendingDataMap(I,y),frozenColumns:E}}static dehydrateIrisGridPanelState(e,n){const{isSelectingPartition:s,partition:i,partitionColumn:o,advancedSettings:r}=n;return{isSelectingPartition:s,partition:i,partitionColumn:o!=null?o.name:null,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?se.getColumnByName(l,o):void 0,advancedSettings:new Map([...Ym.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=se.getColumn(e,o);d!=null&&(a=P.makeQuickFilter(d,l,s))}catch(d){po.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=se.getColumn(e,s);A(o);const r=se.dehydrateAdvancedFilterOptions(o,i.options);return[s,{options:r}]})}static hydrateAdvancedFilters(e,n,s){const i=n.map(([o,r])=>{const l=se.getColumn(e,o);A(l);const a=se.hydrateAdvancedFilterOptions(l,r.options);let d=null;try{se.getColumn(e,o)!=null&&(d=P.makeAdvancedFilter(l,a,s))}catch(c){po.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=>se.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=>se.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,se.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 A(d),[(c=i(l))!=null?c:null,se.hydrateValue(a,e[d].type)]}))}]))}static dehydrateValue(e,n){return P.isDateType(n)?se.dehydrateDateTime(e):P.isLongType(n)?se.dehydrateLong(e):e}static hydrateValue(e,n){return P.isDateType(n)?se.hydrateDateTime(e):P.isLongType(n)?se.hydrateLong(e):e}static dehydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.format(ps.FULL_DATE_FORMAT,e):null}static hydrateDateTime(e){return e!=null?M.i18n.DateTimeFormat.parse(ps.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===P.sortDirection.reverse)return M.Table.reverse();const l=se.getColumn(e,i);if(l!=null){let a=l.sort();return o&&(a=a.abs()),r===P.sortDirection.descending?a=a.desc():a=a.asc(),a}return null}).filter(s=>s!=null&&s.direction!==P.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=se.getFiltersFromFilterMap(se.hydrateQuickFilters(i,n.quickFilters,s)));let r=[];n.advancedFilters&&(r=se.getFiltersFromFilterMap(se.hydrateAdvancedFilters(i,n.advancedFilters,s)));const l=se.getFiltersFromInputFilters(i,n.inputFilters,s);let a=[];n.sorts&&(a=se.hydrateSort(i,n.sorts));let d=[...o,...r];const{partition:c,partitionColumn:u}=n;if(c!=null&&u!=null){const m=se.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 P.makeQuickFilter(l,r,s)}catch(a){po.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=se.parseCustomColumnNames(e),i=se.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=K.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=K.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=K.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=K.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=se.getVisibleColumnsInRange(e,n,s,i,o),d=a.length*l,c=se.getPrevVisibleColumns(e,n-1,d,i,o),u=se.getNextVisibleColumns(e,s+1,d,i,o),m=[...c,...a,...u];return se.getColumnsToFetch(e,m,r)}static rangeSetFromRanges(e){const n=e.slice().sort((s,i)=>(A(s.startRow),A(i.startRow),s.startRow-i.startRow)).map(s=>{const{startRow:i,endRow:o}=s;return A(i),A(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];A(l.startColumn),A(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})=>Ls.isRollupOperation(g)?[]:Ls.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[Le.FIRST])!=null?p:[];c[Le.FIRST]=[...f,...g]}}return{groupingColumns:i,includeConstituents:o,includeDescriptions:l,aggregations:c}}static getPendingErrors(e){e.forEach((n,s)=>{if(!se.isValidIndex(s))throw new Error(`Invalid rowIndex ${s}`);const{data:i}=n;i.forEach((o,r)=>{if(!se.isValidIndex(r))throw new Error(`Invalid columnIndex ${r}`)})})}static getColumn(e,n){return n<e.length?e[n]:(po.error("Unable to retrieve column",n,">=",e.length),null)}static getColumnByName(e,n){const s=e.find(({name:i})=>i===n);return s==null&&po.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)}}const en=X.module("IrisGridCopyHandler"),Ue=class extends S.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:Ue.COPY_STATES.IDLE,buttonState:Ue.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(t,e){switch(t){case Ue.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${e.toLocaleString()} rows to your clipboard?`;case Ue.COPY_STATES.CLICK_REQUIRED:return`Fetched ${e.toLocaleString()} rows!`;case Ue.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case Ue.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${e.toLocaleString()} rows for clipboard...`;case Ue.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(t){switch(t){case Ue.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case Ue.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case Ue.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(){en.debug2("startCopy"),this.stopCopy();const{copyOperation:t}=this.props;if(t==null){en.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:e,error:n}=t;if(n!=null){en.debug("Showing copy error",n),this.setState({isShown:!0,copyState:Ue.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=re.rowCount(e);this.setState({rowCount:s,isShown:!0,error:void 0}),s>Ue.NO_PROMPT_THRESHOLD?this.setState({buttonState:Ue.BUTTON_STATES.COPY,copyState:Ue.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){en.debug2("handleBackgroundClick");const{copyState:t}=this.state;t===Ue.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){en.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){en.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){en.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(t){en.debug2("copyText",t),this.textData=t,Ne.copyToClipboard(t).then(()=>{this.setState({copyState:Ue.COPY_STATES.DONE}),this.startHideTimer()},e=>{en.error("copyText error",e),this.setState({buttonState:Ue.BUTTON_STATES.CLICK_TO_COPY,copyState:Ue.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:Ue.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:Ue.COPY_STATES.FETCH_IN_PROGRESS});const{model:t,copyOperation:e}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:o,formatValues:r}=e;en.debug("startFetch",n);const l=se.getHiddenColumns(i);let a=K.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=Ee.makeCancelable(t.textSnapshot(a,s,d)),this.fetchPromise.then(c=>{this.fetchPromise=void 0,this.copyText(c)}).catch(c=>{c instanceof ai?en.debug("User cancelled copy."):(en.error("Error fetching contents",c),this.fetchPromise=void 0,this.setState({buttonState:Ue.BUTTON_STATES.RETRY,copyState:Ue.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(en.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,Ue.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===Ue.COPY_STATES.DONE?"fade":"copy-slide-up",c=Ue.getCopyButtonText(i),u=a!=null?a:Ue.getStatusMessageText(o,l),m=o!==Ue.COPY_STATES.DONE,p=i===Ue.BUTTON_STATES.FETCH_IN_PROGRESS,g=o===Ue.COPY_STATES.DONE;return v(_l,{animation:d,isShown:r,className:W("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(ut,{in:m,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:v("div",{className:"buttons-container",children:[h("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),v(z,{kind:p?"tertiary":"primary",className:W("btn-copy",{"btn-spinner":p}),onClick:this.handleCopyClick,disabled:p,children:[p&&h(kn,{}),c]})]})})]})}};let no=Ue;no.NO_PROMPT_THRESHOLD=1e4;no.HIDE_TIMEOUT=3e3;no.COPY_STATES={IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"};no.BUTTON_STATES={COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"};no.defaultProps={copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}};class rp extends S.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 v("div",{style:n,className:"iris-grid-input-autosized-wrapper","data-value":o,children:[h("input",{ref:r=>{this.inputField=r},className:W("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(z,{kind:"ghost",className:W("btn-link-icon advanced-filter-button",{"filter-set":s}),onClick:i,onContextMenu:this.handleContextMenu,children:v("div",{className:"fa-layers ",children:[h(j,{icon:dd,className:"filter-solid"}),h(j,{icon:zr,className:"filter-light"})]})})})]})}}rp.defaultProps={style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150};class $v extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){const{selectedRanges:n}=this.irisGrid.state;return e.key==="c"&&Ne.isModifierKeyDown(e)?(se.isValidSnapshotRanges(n)?this.irisGrid.copyRanges(n):this.irisGrid.copyRanges(n,!1,!1,"Invalid copy ranges"),!0):!1}}const Wv={TOGGLE_QUICK_FILTER:Pe.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[de.CTRL,he.F],macShortcut:[de.CMD,he.F]}),CLEAR_ALL_FILTERS:Pe.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[de.CTRL,he.E],macShortcut:[de.CMD,he.E]}),CLEAR_FILTERS:Pe.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[de.CTRL,de.SHIFT,he.E],macShortcut:[de.CMD,de.SHIFT,he.E]}),REVERSE:Pe.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[de.CTRL,he.I],macShortcut:[de.CMD,he.I]}),TOGGLE_SEARCH:Pe.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[de.CTRL,de.SHIFT,he.F],macShortcut:[de.CMD,de.SHIFT,he.F]}),GOTO_ROW:Pe.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[de.CTRL,he.G],macShortcut:[de.CMD,he.G]})},zv={COMMIT:Pe.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[de.CTRL,he.S],macShortcut:[de.CMD,he.S]}),DISCARD:Pe.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[de.CTRL,de.ALT,he.S],macShortcut:[de.CMD,de.OPTION,he.S]})},dn={TABLE:Wv,INPUT_TABLE:zv};class Gv extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){if(dn.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:n}=this.irisGrid.state;return n===P.REVERSE_TYPE.NONE?this.irisGrid.reverse(P.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(P.REVERSE_TYPE.NONE),!0}return!1}}class Kv extends gi{constructor(e){super(),this.irisGrid=e}onDown(e){return dn.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}class qv extends yt{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);ht(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 Yv extends yt{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 Xv extends yt{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 lp=class extends S.exports.Component{constructor(t=lp.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=CC.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 v("div",{className:"form-group flex-grow mb-0",children:[v("div",{className:"custom-format-title",children:[h("span",{className:"icon",children:o}),v("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h(Be,{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 ap=lp;ap.defaultProps={formatString:"",forwardedProps:{menuItem:{},closeMenu(t){},iconElement:null},placeholder:"",title:"",onChange(t){}};class cn{static isDefaultSelected(e){return!e||![et.TYPE_CONTEXT_CUSTOM,et.TYPE_CONTEXT_PRESET].includes(e.type)}static isCustomSelected(e){return e!=null&&e.type===et.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(ap,{formatString:e.formatString,title:e.label,placeholder:s,onChange:o})}}}const Bn=class{static getOptions(t,e){const n=new Date,i=[{group:Bn.dateGroup,formatString:"yyyy-MM-dd"},{group:Bn.dateGroup,formatString:"MM-dd-yyyy"},{group:Bn.timeGroup,formatString:"HH:mm:ss"},{group:Bn.timeGroup,formatString:"HH:mm:ss.SSS"},{group:Bn.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:Bn.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(r=>{const l=dt.makeFormat("",r.formatString,dt.TYPE_CONTEXT_PRESET),a=t.getFormattedString(n,P.dataType.DATETIME,"",l);return cn.makeOption(a,l,r.group,dt.isSameFormat(l,e))});return[cn.makeOption("Default",null,Bn.dateGroup,cn.isDefaultSelected(e)),...i]}};let kl=Bn;kl.dateGroup=10;kl.timeGroup=20;kl.dateTimeGroup=30;const $n=class{static getOptions(t,e){const n=[{format:Ae.FORMAT_PERCENT,group:$n.presetGroup},{format:Ae.FORMAT_BASIS_POINTS,group:$n.presetGroup},{format:Ae.FORMAT_MILLIONS,group:$n.presetGroup},{format:Ae.FORMAT_SCIENTIFIC_NOTATION,group:$n.presetGroup},{format:Ae.FORMAT_ROUND,group:$n.presetRoundGroup},{format:Ae.FORMAT_ROUND_TWO_DECIMALS,group:$n.presetRoundGroup},{format:Ae.FORMAT_ROUND_FOUR_DECIMALS,group:$n.presetRoundGroup}],s=cn.makeOption("Default",null,$n.defaultGroup,cn.isDefaultSelected(t)),i=n.map(a=>cn.makeOption(a.format.label,a.format,a.group,Ae.isSameFormat(a.format,t))),o=cn.isCustomSelected(t),r=o?t:Ae.makeCustomFormat(),l=cn.makeCustomFormatOption(r,$n.customGroup,Ae.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=Ae.makeCustomFormat(a);Ae.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let Xo=$n;Xo.defaultGroup=10;Xo.presetGroup=20;Xo.presetRoundGroup=30;Xo.customGroup=40;const Do=class{static getOptions(t,e){const n=[{format:it.FORMAT_MILLIONS,group:Do.presetGroup},{format:it.FORMAT_SCIENTIFIC_NOTATION,group:Do.presetGroup}],s=cn.makeOption("Default",null,Do.defaultGroup,cn.isDefaultSelected(t)),i=n.map(a=>cn.makeOption(a.format.label,a.format,a.group,it.isSameFormat(a.format,t))),o=cn.isCustomSelected(t),r=o?t:it.makeCustomFormat(),l=cn.makeCustomFormatOption(r,Do.customGroup,it.DEFAULT_FORMAT_STRING,o,a=>{if(a!=null){const d=it.makeCustomFormat(a);it.isValid(d)&&e(d)}else e(null)});return[s,...i,l]}};let Ol=Do;Ol.defaultGroup=10;Ol.presetGroup=20;Ol.customGroup=30;const Rh=X.module("IrisGridContextMenuHandler"),jv=150,Dh="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",Z=class extends yt{constructor(t){super(),this.debouncedUpdateCustomFormat=je(t.handleFormatSelection,jv),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=Z.getFilterValueForNumberOrChar(t.type,e);return n.eq(s)}static getFilterValueForNumberOrChar(t,e){return P.isCharType(t)?M.FilterValue.ofString(String.fromCharCode(e)):M.FilterValue.ofNumber(e)}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(t,e){var F;const{irisGrid:n}=this,{column:s}=e;A(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();A(a);const{filterIconColor:g,filterBarActiveColor:f,contextMenuSortIconColor:b,contextMenuReverseIconColor:C}=p,w=i.sort,T=P.getSortForColumn(w,t),y=d!==P.REVERSE_TYPE.NONE,{userColumnWidths:E}=a,I=[...E.values()].some(x=>x===0),D=i.isColumnFrozen(s);return l.push({title:"Hide Column",group:Z.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),l.push({title:D?"Unfreeze Column":"Freeze Column",group:Z.GROUP_HIDE_COLUMNS,action:()=>{D?this.irisGrid.unFreezeColumnByColumnName(r.name):this.irisGrid.freezeColumnByColumnName(r.name)},order:10}),l.push({title:"Show All Columns",group:Z.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!I}),l.push({title:"Quick Filters",icon:Zn,iconColor:f,shortcut:dn.TABLE.TOGGLE_QUICK_FILTER,group:Z.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),l.push({title:"Advanced Filters",icon:u.get(t)?dd:zr,iconColor:g,group:Z.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),l.push({title:"Clear Table Filters",group:Z.GROUP_FILTER,order:40,shortcut:dn.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(c.size>0||u.size>0||m!=null)}),l.push({title:"Sort by",icon:Zn,iconColor:b,group:Z.GROUP_SORT,order:10,actions:this.sortByActions(r,t,T)}),l.push({title:"Add Additional Sort",disabled:T&&w.length===1||y&&w.length===1||T&&y&&w.length===2||w.length===0,group:Z.GROUP_SORT,order:20,actions:this.additionalSortActions(r,t)}),l.push({title:"Clear Table Sorting",disabled:w.length===0||y&&w.length===1,group:Z.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,Z.COLUMN_SORT_DIRECTION.none)},order:30}),l.push({title:d===P.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:Zn,iconColor:C,group:Z.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:dn.TABLE.REVERSE,action:()=>{d===P.REVERSE_TYPE.NONE?this.irisGrid.reverse(P.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(P.REVERSE_TYPE.NONE)}}),l.push({title:"Copy Column Name",group:Z.GROUP_COPY,action:()=>{var x;Ne.copyToClipboard((x=i.textForColumnHeader(t))!=null?x:"").catch(U=>Rh.error("Unable to copy header",U))}}),P.isDateType(r.type)?l.push({title:"Date/Time Format",group:Z.GROUP_FORMAT,actions:this.dateFormatActions(r)}):P.isNumberType(r.type)&&l.push({title:"Number Format",group:Z.GROUP_FORMAT,actions:(F=this.numberFormatActions(r))!=null?F:void 0}),l}getCellActions(t,e,n){A(t);const{irisGrid:s}=this,{column:i,row:o}=n,{model:r,canCopy:l}=s.props,{columns:a}=r,d=s.getModelRow(o);A(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,w=new dt({timeZone:C==null?void 0:C.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Dh}),T=new dt({timeZone:C==null?void 0:C.timeZone,showTimeZone:C==null?void 0:C.showTimeZone,showTSeparator:C==null?void 0:C.showTSeparator,defaultDateTimeFormatString:Dh});if(m==null||o==null)return p;if(r.isFilterable(t)){const E={title:"Filter By Value",icon:Zn,iconColor:b,group:Z.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(P.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(P.isNumberType(m.type)||P.isCharType(m.type)){A(t);const I=P.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(P.isDateType(m.type)){const I=w.format(c),D=T.format(c);g.get(t)&&E.actions.push({title:"And",actions:this.dateFilterActions(m,I,D,c,g.get(t),"&&"),order:2,group:oe.groups.high}),E.actions.push(...this.dateFilterActions(m,I,D,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:dn.TABLE.GOTO_ROW,group:Z.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${o+1}`)};return p.push(y),l&&(p.push({title:"Copy Cell",group:Z.GROUP_COPY,order:10,action:()=>{s.copyCell(i,o)}}),p.push({title:"Copy Cell Unformatted",group:Z.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;A(p);const{columnHeaderHeight:w,gridY:T,columnHeaderMaxDepth:y}=p,E=[];if(a!=null&&d!=null){const I=c.valueForCell(a,d),D=c.textForCell(a,d),F=m[a],{onContextMenu:x}=s.props;F!=null&&E.push(x({model:c,value:I,valueText:D,column:F,rowIndex:r,columnIndex:o,modelRow:d,modelColumn:a}))}return a!=null&&c.isFilterable(a)&&E.push({title:"Clear Column Filter",group:Z.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(a)},disabled:!(f.has(a)||b.has(a))}),(g?i<=T:i<=w*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:ms.COPY,group:Z.GROUP_COPY,order:30,action:()=>{s.copyRanges(C)}}),E.push({title:"Copy Selection w/ Headers",group:Z.GROUP_COPY,order:40,action:()=>{s.copyRanges(C,!0)}})),Je(c)&&c.isEditable&&C.length>0&&E.push({title:"Delete Selected Rows",group:Z.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(C)}})),E.length===0?!1:(A(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=kl.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?ds:void 0,group:d,order:r,action:()=>{const m=e.getColumnIndexByName(t.name);A(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(P.isDecimalType(t.type))i=Xo.getOptions(s,l=>{A(o),this.debouncedUpdateCustomFormat(o,l)});else if(P.isIntegerType(t.type))i=Ol.getOptions(s,l=>{A(o),this.debouncedUpdateCustomFormat(o,l)});else return Rh.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?ds:void 0,order:l,action:()=>{o===void 0&&a&&a.type===et.TYPE_CONTEXT_CUSTOM||(A(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 A(u),d.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[i?Z.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,Z.getQuickFilterCondition(l,t.filter().eq(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().notEq(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().contains(o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().contains(o).not(),i),Z.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,Z.getQuickFilterCondition(l,t.filter().invoke("startsWith",o),i),Z.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,Z.getQuickFilterCondition(l,t.filter().invoke("endsWith",o),i),Z.getQuickFilterText(a,`*${e}`,i))},order:60,group:oe.groups.low}),d}numberFilterActions(t,e,n,s,i){const o=Z.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 A(u),a.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[i?Z.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=Z.getNumberValueEqualsFilter(t,n);this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,m,i),Z.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=Z.getNumberValueEqualsFilter(t,n).not();this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,m,i),Z.getQuickFilterText(l,`!=${e}`,i))},order:20,group:oe.groups.low}),d&&!P.isCharType(t.type)&&(a.push({title:"greater than",description:`Show only rows where ${t.name} is greater than ${e}`,action:()=>{this.irisGrid.setQuickFilter(u,Z.getQuickFilterCondition(r,t.filter().greaterThan(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().greaterThanOrEqualTo(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().lessThan(o),i),Z.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,Z.getQuickFilterCondition(r,t.filter().lessThanOrEqualTo(o),i),Z.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 A(a),i.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[s?Z.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,Z.getQuickFilterCondition(r,t.filter().isTrue(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isFalse(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isNull(),s),Z.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,Z.getQuickFilterCondition(r,t.filter().isNull().not(),s),Z.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);A(c);const u=[];return u.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[o?Z.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,Z.getQuickFilterCondition(l,t.filter().eq(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().notEq(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().lessThan(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().lessThanOrEqualTo(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().greaterThan(r),o),Z.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,Z.getQuickFilterCondition(l,t.filter().greaterThanOrEqualTo(r),o),Z.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 A(l),o.push({menuElement:v("div",{className:"iris-grid-filter-menu-item-value",children:[n?Z.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,Z.getQuickFilterCondition(s,t.filter().isNull(),n),Z.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,Z.getQuickFilterCondition(s,t.filter().isNull().not(),n),Z.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,Z.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.ascending)?Zn:void 0,iconColor:i},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.descending)?Zn:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return P.isNumberType(t.type)&&(o.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.ascending,!0)?Zn:void 0,iconColor:i}),o.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,Z.COLUMN_SORT_DIRECTION.descending,!0)?Zn:void 0,iconColor:i})),o}additionalSortActions(t,e){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:v("div",{className:"btn-context-menu menu-title",children:[h("span",{className:"icon",children:h(j,{icon:Zn,style:{color:s!=null?s:void 0}})}),h("span",{className:"title",children:"Add Additional Sort"}),h("span",{className:"shortcut",children:Ne.isMacPlatform()?"\u2318Click":"^Click"})]}),order:1},{title:`${t.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${t.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return P.isNumberType(t.type)&&(i.push({title:`ABS(${t.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${t.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(e,Z.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(t,e=null,n=!1){return t?t.direction===e&&t.isAbs===n:!1}};let bs=Z;bs.GROUP_EDIT=oe.groups.high+10;bs.GROUP_HIDE_COLUMNS=oe.groups.high+25;bs.GROUP_FILTER=oe.groups.high+50;bs.GROUP_GOTO=oe.groups.high+51;bs.GROUP_SORT=oe.groups.high+75;bs.GROUP_COPY=oe.groups.high+100;bs.GROUP_FORMAT=oe.groups.high+150;bs.COLUMN_SORT_DIRECTION={ascending:"ASC",descending:"DESC",none:null};class Qv extends yt{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 Zv extends yt{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 Jv extends yt{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=Ne.isModifierKeyDown(s);return this.irisGrid.toggleSort(i,o),!0}return!1}}class eT extends yt{constructor(e){super(),this.irisGrid=e}onWheel(e,n,s){const{irisGrid:i}=this,{model:o}=i.props,{metrics:r,pendingRowCount:l}=i.state;A(r);const{bottom:a,rowCount:d,rowHeight:c}=r,{deltaY:u}=K.getScrollDelta(s);return Je(o)&&o.isEditable&&a>=d-1&&u>0&&i.setState({pendingRowCount:l+Math.ceil(u/c)}),!1}}const tT=3e3,nT=({children:t=null,onEntering:e,onEntered:n,onExiting:s,onExited:i})=>{const[o,r]=S.exports.useState(!1),l=S.exports.useRef(),a=gl(t),d=S.exports.useCallback(()=>{r(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{r(!1)},tT)},[r,l]);return S.exports.useEffect(()=>{a!==t&&t!=null&&d()},[t,a,r,d]),S.exports.useEffect(()=>()=>l.current?clearTimeout(l.current):void 0,[]),h(_l,{className:"toast-bottom-bar",isShown:o,onEntering:e,onEntered:n,onExiting:s,onExited:i,children:t})};class sT extends qo{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!==P.REVERSE_TYPE.NONE&&l!=null&&l.length>0&&(n+=i.reverseHeaderBarHeight),n}getUserColumnWidths(){return this.userColumnWidths}}const iT=1,dp=Y.memo(({model:t,modelColumns:e,top:n,bottom:s,left:i,right:o,filter:r,formatter:l,reverseType:a=P.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:w=new Map,frozenColumns:T,formatColumns:y})=>{const E=S.exports.useMemo(()=>se.getModelViewportColumns(e,i,o,u,m,p,iT),[e,i,o,u,m,p]);return S.exports.useEffect(function(){t.filter=r},[t,r]),S.exports.useEffect(function(){const D=[...d];a!==P.REVERSE_TYPE.NONE&&D.push(M.Table.reverse()),t.sort=D},[t,d,a]),S.exports.useEffect(function(){t.formatter=l},[t,l]),S.exports.useEffect(function(){t.isCustomColumnsAvailable&&(t.customColumns=c)},[t,c]),S.exports.useEffect(function(){t.isFormatColumnsAvailable&&(t.formatColumns=y)},[t,y]),S.exports.useEffect(function(){t.setViewport(n,s,E)},[t,n,s,E]),S.exports.useEffect(function(){t.isRollupAvailable&&(t.rollupConfig=g)},[t,t.isRollupAvailable,g]),S.exports.useEffect(function(){t.isSelectDistinctAvailable&&(t.selectDistinctColumns=b)},[t,b]),S.exports.useEffect(function(){t.isTotalsAvailable&&(t.totalsConfig=f)},[t,t.isTotalsAvailable,f]),S.exports.useEffect(function(){t.pendingRowCount=C},[t,C]),S.exports.useEffect(function(){t.pendingDataMap=w},[t,w]),S.exports.useEffect(function(){T&&t.updateFrozenColumns(T)},[t,T]),null});dp.displayName="IrisGridModelUpdater";const Hn=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),ha=16;class Fo extends Gi{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(Hn.SORT_UP,aC),this.setIcon(Hn.SORT_DOWN,lC),this.setIcon(Hn.CARET_DOWN,ls),this.setIcon(Hn.CARET_RIGHT,Su),this.setIcon(Hn.CELL_OVERFLOW,Nf)}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:ha/n.icon[0],d:ha/n.icon[1]};o.addPath(i,r),this.icons[e]=o}getIcon(e){return this.icons[e]}getSortIcon(e){return e?e.direction===P.sortDirection.ascending?this.getIcon(Hn.SORT_UP):e.direction===P.sortDirection.descending?this.getIcon(Hn.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=B(a,i),c=l.get(s);if(c===void 0)return;const u=r.valueForCell(c,d);if(P.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,visibleColumnWidths:d,visibleColumnXs: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,{visibleRowYs: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{visibleColumnWidths:r,visibleColumnXs:l,maxY:a}=i,d=l.get(o),c=r.get(o);A(d),A(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!==P.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!==P.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,visibleColumnWidths:d,visibleColumnXs:c,gridX:u,columnHeaderHeight:m,fontWidths:p}=o,{headerHorizontalPadding:g}=l,f=B(d,s,0),b=B(c,s)+u,C=a.get(s);if(C==null)return;const w=P.getSortForColumn(r.sort,C);if(!w)return;const T=this.getSortIcon(w);if(!T)return;const y=r.textForColumnHeader(C);if(y===void 0)return;const E=(H=p.get(e.font))!=null?H:Gi.DEFAULT_FONT_WIDTH;A(E);const I=y.length*E,D=u+b+I+g;let{maxX:F}=i;F-=g;const x=u+b+f-g-1,U=D>F?D+1:Math.min(F,x),$=w.direction===P.sortDirection.ascending?-6:-12,O=m*.5+$;e.save(),e.beginPath(),e.rect(b,0,f,m),e.clip(),e.fillStyle=l.headerSortBarColor,e.translate(U,O),e.fill(T),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,visibleColumnWidths:g,visibleColumnXs: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 w=0;w<p.length;w+=1){const T=p[w],y=B(m,T),E=B(f,T),I=B(g,T);if(i.isFilterable(y)&&I>0){const D=d+(E!=null?E:0);e.rect(D+.5,C+.5,I,a-2)}}e.stroke();for(let w=0;w<p.length;w+=1){const T=p[w],y=B(g,T),I=B(f,T)+d;this.drawExpandedFilterHeader(e,n,T,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,w=c.get(s);if(w===void 0)return;const T=a.get(w),y=d.get(w);if(T==null&&y==null)return;let E=null;if(T!=null){const{text:D}=T;if(E=D,E||(E=P.getFilterText(T.filter)),E!=null){const{fontWidths:F}=r;let x=F.get(e.font);(x==null||x===0)&&(x=e.measureText("8").width,x||(x=10));const U=(o-f*2)/x;U<=0?E="":E.length>U&&(E=`${E.substring(0,U-1)}\u2026`)}}if(e.save(),Fo.isFilterValid(y,T)&&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 D=i+2,F=C+2,x=o-3,U=m-5;e.strokeRect(D,F,x,U)}if(E!=null&&E!==""){const D=i+f,F=C+m*.5+1;e.fillStyle=b,e.fillText(E,D,F)}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,visibleColumnWidths:u,visibleColumnXs: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 w=C+l;this.drawCollapsedFilterHeader(e,n,f,w,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:w}=l;e.save();const T=Fo.isFilterValid(g,p);C!=null&&p==null&&g==null?e.fillStyle=C:b!=null&&T?e.fillStyle=b:w!=null&&(e.fillStyle=w);const y=i+1,E=u-f,I=o-1,D=f-1;e.fillRect(y,E,I,D),e.restore()}drawTreeMarker(e,n,s,i,o,r,l){e.save();const{x1:a,y1:d}=o,c=l?this.getIcon(Hn.CARET_DOWN):this.getIcon(Hn.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:w,visibleRowHeights:T,visibleRowYs:y,width:E}=s;if(f<=0||g.length===0)return;const{cellHorizontalPadding:I,floatingGridRowColor:D,floatingRowBackgroundColors:F,headerColor:x,rowHoverBackgroundColor:U}=l;e.translate(d,a),e.beginPath();const $=Math.min(c,E-f-w-d);e.fillStyle=F,m>0&&e.rect($,0,f,m),p>0&&e.rect($,b-a-C-p,f,p),e.fill();const O=o!=null&&r!=null&&o>=d&&o<=c+f?K.getRowAtY(r,s):null;if(U!=null&&O!==null&&g.includes(O)){e.fillStyle=U;const L=y.get(O),N=T.get(O);A(L),A(N),e.fillRect($,L,f,N)}if(e.beginPath(),D!=null&&(e.strokeStyle=D),m>0&&(e.moveTo($+.5,.5),e.lineTo($+.5,m-.5)),p>0){const L=b-a-C-p;e.moveTo($-.5,L+.5),e.lineTo($-.5,L+p-.5)}e.stroke(),e.fillStyle=x,e.textAlign="left";const H=$+I;for(let L=0;L<g.length;L+=1){const N=g[L],k=T.get(N),_=y.get(N),V=u.get(N);if(_!=null&&k!=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}=K.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}=K.getCellInfoFromXY(s,i,o);if(a==null||d==null||c==null||u==null||!P.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:Fo.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}=K.getCellInfoFromXY(e,n,s);A(a),A(l),A(d);const{width:c,verticalBarWidth:u}=s,{cellHorizontalPadding:m}=i,p=ha+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(Hn.CELL_OVERFLOW);r!=null&&l!=null&&n.translate(r+c,l+2),n.fill(p),n.restore()}}const oT="12px Fira Sans, sans-serif",rT="#f0f0ee",lT="#1a171a",ae={"grid-bg":"#211f22",font:oT,white:rT,black:lT,"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"},cp=Object.freeze({backgroundColor:ae["grid-bg"],white:ae.white,black:ae.black,font:ae.font,headerBackgroundColor:ae["header-bg"],headerColor:ae["header-color"],headerSeparatorColor:ae["header-separator-color"],headerSeparatorHoverColor:ae["header-separator-hover-color"],headerHiddenSeparatorHoverColor:ae["header-hidden-separator-hover-color"],headerSortBarColor:ae["header-sort-bar-color"],headerReverseBarColor:ae["header-reverse-bar-color"],headerBarCasingColor:ae["header-bar-casing-color"],headerFont:ae["header-font"],rowBackgroundColors:ae["row-background-colors"],rowHoverBackgroundColor:ae["row-hover-bg"],selectionColor:ae["selection-color"],selectionOutlineColor:ae["selection-outline-color"],selectionOutlineCasingColor:ae["selection-outline-casing-color"],selectedRowHoverBackgroundColor:ae["selected-row-hover-bg"],scrollBarBackgroundColor:ae["scroll-bar-bg"],scrollBarHoverBackgroundColor:ae["scroll-bar-hover-bg"],scrollBarCasingColor:ae["scroll-bar-casing-color"],scrollBarCornerColor:ae["scroll-bar-corner-color"],scrollBarColor:ae["scroll-bar-color"],scrollBarHoverColor:ae["scroll-bar-hover-color"],scrollBarActiveColor:ae["scroll-bar-active-color"],scrollBarSelectionTickColor:ae["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:ae["scroll-bar-active-selection-tick-color"],textColor:ae["text-color"],positiveNumberColor:ae["positive-number-color"],negativeNumberColor:ae["negative-number-color"],zeroNumberColor:ae["zero-number-color"],dateColor:ae["date-color"],pendingTextColor:ae["pending-text-color"],errorTextColor:ae["error-text-color"],nullStringColor:ae["null-string-color"],filterBarActiveBackgroundColor:ae["filter-bar-active-bg"],filterBarExpandedBackgroundColor:ae["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:ae["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:ae["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:ae["filter-bar-separator-color"],filterBarActiveColor:ae["filter-bar-active-color"],filterBarErrorColor:ae["filter-bar-error-color"],filterIconColor:ae["filter-icon-color"],scrimColor:ae["scrim-color"],contextMenuSortIconColor:ae["context-menu-sort-icon-color"],contextMenuReverseIconColor:ae["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:ae["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(ae["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(ae["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:ae["linker-column-hover-bg"],treeLineColor:ae["tree-line-color"],treeMarkerColor:ae["tree-marker-color"],treeMarkerHoverColor:ae["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:ae["floating-grid-row-color"],floatingRowBackgroundColors:ae["floating-row-background-colors"],floatingDividerInnerColor:ae["floating-divider-inner-color"],floatingDividerOuterColor:ae["floating-divider-outer-color"],overflowButtonColor:ae["overflow-button-color"],overflowButtonHoverColor:ae["overflow-button-hover-color"]});const Ir=X.module("ColumnStatistics"),aT={SIZE:"Number of Rows"},Ua=class extends S.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.handleCopyHeader=this.handleCopyHeader.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0,copied:!1}}static getStatsLabel(t){var e;return(e=aT[t])!=null?e:t.split(" ").map(n=>n[0].toUpperCase()+n.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}handleCopyHeader(){this.setState({copied:!0})}maybeGenerateStatistics(){const{model:t}=this.props,e=t.rowCount-t.pendingRowCount;this.setState({numRows:e}),t.isColumnStatisticsAvailable?e<Ua.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:t,model:e}=this.props;this.cancelablePromise=Ee.makeCancelable(e.columnStatistics(t)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(t){Ir.debug("Received statistics",t);const{model:e,onStatistics:n}=this.props,s=[];t.statisticsMap.forEach((i,o)=>{s.push({operation:Ua.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&&Ee.isCanceled(t)){Ir.debug("Called handleError on a cancelled promise result");return}Ir.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,copied:r}=this.state,l=!s&&n==null&&i==null&&e.isColumnStatisticsAvailable,a=[],d=t.type.substring(t.type.lastIndexOf(".")+1),c=t.description===null?null:t.description;if(i!=null)for(let g=0;g<i.length;g+=1){const{operation:f,className:b,value:C,type:w}=i[g],T=w?e.displayString(C,w):e.displayString(C,t.type,t.name),y=v(Y.Fragment,{children:[h("div",{className:W("column-statistic-operation",b),children:f}),h("div",{className:"column-statistic-value",children:T})]},f);a.push(y)}const u=pt(e)&&e.hasExpandableRows?"Expanded Rows":"Number of Rows",m=e.displayString(o,"long"),p=e.getColumnIndexByName(t.name);return v("div",{className:"column-statistics",children:[v("div",{className:"column-statistics-title",children:[t.name,v("span",{className:"column-statistics-type",children:["\xA0(",d,")"]}),h(z,{kind:"ghost",className:"column-statistics-copy",icon:r?ld:od,onClick:()=>{Ne.copyToClipboard(t.name).then(this.handleCopyHeader).catch(g=>Ir.error("Unable to column name",g))},tooltip:r?"Copied text":"Copy column name"})]}),c!=null&&h("div",{className:"column-statistics-description",children:c}),p!=null&&!e.isColumnMovable(p)&&v("div",{className:"column-statistics-status",children:[h(j,{icon:e.isColumnFrozen(p)?Qf:xf,className:"mr-1"}),e.isColumnFrozen(p)?"Frozen":"Not movable"]}),v("div",{className:"column-statistics-grid",children:[i==null&&v(pe,{children:[h("div",{className:"column-statistic-operation",children:u}),h("div",{className:"column-statistic-value",children:m})]}),a]}),l&&h(z,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h("div",{className:"error-message",children:`${n}`}),i&&!s&&h(z,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h(j,{icon:cd,className:"mr-1"}),children:"Refresh"}),s&&v("div",{className:"column-statistics-loading",children:[h(kn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let hp=Ua;hp.AUTO_GENERATE_LIMIT=1e5;class Rr extends S.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=>P.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=v(pe,{children:[h(j,{icon:kc,mask:sa,transform:"shrink-2 down-5 right-7"}),h(j,{icon:zf,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?a=v(pe,{children:[h(j,{icon:Lo,mask:sa,transform:"shrink-1 down-5 right-7"}),h(j,{icon:Oc,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):a=v(pe,{children:[h(j,{icon:kc,mask:sa,transform:"shrink-2 down-5 right-7"}),h(j,{icon:iC,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),v("div",{className:"cross-column-container",children:[h(Cs,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),v("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(Be,{children:"Configure Columns"}),h(xn,{isShown:o,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:v("div",{className:"cross-column-popup",children:["Searched Columns",h("div",{className:"cross-column-scroll",children:i.map(d=>v(Y.Fragment,{children:[h(Bt,{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))}),v("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&&v("p",{className:"text-danger",children:[h(j,{icon:Oc})," Select at least one column to search."]})]})})]})]})}}const Ms=X.module("PartitionSelectorSearch"),dT=150,up=class extends S.exports.Component{constructor(t){super(t),this.debounceUpdateFilter=je(()=>{this.updateFilter()},dT),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 ai||Ms.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(){Ms.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){Ms.debug2("handleSelect",t);const{onSelect:e}=this.props,{offset:n,items:s}=this.state,i=t-n;if(i<0||s.length<=i){Ms.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;Ms.debug2("handleTableUpdate",l,n,s.length),this.setState({itemCount:l,items:s,offset:n,isLoading:!1})}handleTextChange(t){Ms.debug2("handleTextChange");const{value:e}=t.target;this.setState({text:e}),this.debounceUpdateFilter()}handleViewportChange(t,e){Ms.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)}Ms.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,up.MAX_VISIBLE_ITEMS)*bn.DEFAULT_ROW_HEIGHT+11;return v("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(bn,{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&&v("div",{className:"iris-grid-partition-selector-loading",children:[h(kn,{}),"\xA0Loading..."]})]})}};let Ll=up;Ll.MAX_VISIBLE_ITEMS=12;Ll.defaultProps={initialPageSize:100,onSelect:()=>{},onListResized:()=>{}};Ll.propTypes={getFormattedString:R.exports.func.isRequired,table:R.exports.shape({addEventListener:R.exports.func.isRequired,removeEventListener:R.exports.func.isRequired,columns:R.exports.arrayOf(R.exports.shape({name:R.exports.string.isRequired,type:R.exports.string.isRequired,filter:R.exports.func.isRequired})),size:R.exports.number.isRequired,applyFilter:R.exports.func.isRequired,setViewport:R.exports.func.isRequired}).isRequired,initialPageSize:R.exports.number,onSelect:R.exports.func,onListResized:R.exports.func};const yi=X.module("IrisGridPartitionSelector"),cT=250;class mp extends S.exports.Component{constructor(e){super(e),this.debounceUpdate=je(()=>{this.sendUpdate()},cT),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(){yi.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:n}=this.state;e(n)}handleCloseClick(){yi.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){yi.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){yi.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(){yi.debug2("sendUpdate");const{onChange:e}=this.props,{partition:n}=this.state;e(n)}sendFetchAll(){yi.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(Ll,{getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:l=>{this.selectorSearch=l}},"search");return v("div",{className:"iris-grid-partition-selector",children:[h("div",{className:"status-message",children:v("span",{children:['Filtering "',e,'" partition to']})}),v("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:v("button",{type:"button",className:"btn btn-outline-primary",children:[h(j,{icon:ls}),h(Be,{children:"Partitions"}),h(Gn,{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(j,{icon:Xi})})]})}}mp.defaultProps={onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""};const hT=X.module("SelectDistinctBuilder");class pp extends S.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!=="");ht(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){hT.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 v("div",{className:"form-inline px-3 pb-3",children:[v("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(z,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(i)},icon:h(j,{icon:_n,transform:"grow-3"}),tooltip:"Delete column"})]},i)})}render(){const{columns:e,inputs:n}=this.state,s=n.length>=e.length;return v("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(z,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:s,icon:As,children:"Add Additional Column"})}),h("div",{className:"select-distinct-builder-footer",children:v("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."]})})]})}}pp.defaultProps={selectDistinctColumns:[],onChange:()=>{}};const Gd=({items:t,onChange:e=()=>{}})=>h(Uu,{items:Array.from(t.entries()).map(([n,s])=>({title:Gd.getAdvancedSettingsTitleForKey(n),isOn:s,onChange:i=>e(n,i)}))});Gd.getAdvancedSettingsTitleForKey=t=>{switch(t){case ui.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Control filters clear existing table filters";case ui.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Inbound links clear existing table filters"}};const Mh=X.module("ConditionalFormattingMenu"),ua=()=>{};function uT(t){const{column:{type:e}}=t;if(P.isNumberType(e))return t.condition===Xe.IS_NULL||t.condition===Xe.IS_NOT_NULL?"":`${t.value}`;if(P.isCharType(e))return t.condition===Ht.IS_NULL||t.condition===Ht.IS_NOT_NULL?"":`${t.value}`;if(P.isStringType(e))return t.condition===rn.IS_NULL||t.condition===rn.IS_NOT_NULL?"":`"${t.value}"`;if(P.isDateType(e))return t.condition===Ht.IS_NULL||t.condition===Ht.IS_NOT_NULL?"":`${t.value}`;if(P.isBooleanType(e))return"";throw new Error(`Invalid column type ${e} in getRuleValue`)}function mT(t){return P.isNumberType(t.column.type)&&t.condition===Xe.IS_BETWEEN?`${t.start} < ${t.column.name} < ${t.end}`:`${t.column.name} ${Av(t.column.type,t.condition)}
|
|
34
34
|
${uT(t)}`}const pT=t=>{const{rules:e=[],onChange:n=ua,onCreate:s=ua,onSelect:i=ua}=t,o=S.exports.useCallback((d,c,u)=>{d.stopPropagation(),Mh.debug("Rule clicked",c,u),i(u)},[i]),r=S.exports.useCallback((d,c,u)=>{d.stopPropagation(),Mh.debug("Delete button clicked",c,u);const m=[...e];m.splice(u,1),n(m)},[n,e]),l=S.exports.useCallback(d=>{d.stopPropagation()},[]),a=S.exports.useCallback(d=>{if(Xt.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 v("div",{className:"conditional-formatting-rules",children:[h(Vo,{onDragStart:Xt.startDragging,onDragEnd:a,children:h(Ho,{droppableId:"droppable-custom-columns",children:(d,c)=>v("div",{ref:d.innerRef,...d.droppableProps,className:W("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(dl,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(p,g)=>h("div",{role:"menuitem",tabIndex:0,onClick:f=>o(f,u,m),className:W("draggable-container",{dragging:g.isDragging}),ref:p.innerRef,...p.draggableProps,children:h("div",{className:"conditional-formatting-list-item",children:v("div",{className:"formatting-item",children:[h("div",{className:"rule-icon",children:h("span",{className:"rule-icon-bg",style:{backgroundColor:el(u.config.style),color:tl(u.config.style)},children:u.type===qn.ROWS?"row":"col"})}),h("div",{className:"rule-title",children:mT(u.config)}),h(z,{kind:"ghost",className:"ml-1 px-2",onClick:f=>r(f,u,m),icon:_n,tooltip:"Delete rule"}),v("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...p.dragHandleProps,children:[h(Be,{children:"Drag to re-order"}),h(j,{icon:ul})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),h("hr",{}),h(z,{kind:"ghost",onClick:s,icon:As,children:"Add New Rule"})]})},Ii=X.module("ConditionEditor"),gT=()=>{},fT=[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:wv(t)},t)),CT=[rn.IS_EXACTLY,rn.IS_NOT_EXACTLY,rn.CONTAINS,rn.DOES_NOT_CONTAIN,rn.STARTS_WITH,rn.ENDS_WITH,rn.IS_NULL,rn.IS_NOT_NULL].map(t=>h("option",{value:t,children:vv(t)},t)),bT=[Ht.IS_EXACTLY,Ht.IS_NOT_EXACTLY,Ht.IS_BEFORE,Ht.IS_BEFORE_OR_EQUAL,Ht.IS_AFTER,Ht.IS_AFTER_OR_EQUAL,Ht.IS_NULL,Ht.IS_NOT_NULL].map(t=>h("option",{value:t,children:Tv(t)},t)),ST=[Ro.IS_TRUE,Ro.IS_FALSE,Ro.IS_NULL,Ro.IS_NOT_NULL].map(t=>h("option",{value:t,children:Ev(t)},t)),wT=[oi.IS_EQUAL,oi.IS_NOT_EQUAL,oi.IS_NULL,oi.IS_NOT_NULL].map(t=>h("option",{value:t,children:yv(t)},t));function vT(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 TT(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 v("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 ET(t,e,n){switch(t){case rn.IS_NULL:case rn.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function yT(t,e,n){switch(t){case Ht.IS_NULL:case Ht.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n!=null?n:"",onChange:e})}}function IT(){return null}function RT(t,e,n){switch(t){case oi.IS_NULL:case oi.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})}}const gp=t=>{const{column:e,config:n,onChange:s=gT}=t,i=e.type,[o,r]=S.exports.useState(i),[l,a]=S.exports.useState(n.condition),[d,c]=S.exports.useState(n.value),[u,m]=S.exports.useState(n.start),[p,g]=S.exports.useState(n.end);i!==o&&(a(sp(i)),c(void 0),m(void 0),g(void 0),r(i));const f=S.exports.useMemo(()=>{if(i===void 0)return[];if(P.isNumberType(i))return fT;if(P.isCharType(i))return wT;if(P.isStringType(i))return CT;if(P.isDateType(i))return bT;if(P.isBooleanType(i))return ST},[i]),b=S.exports.useCallback(E=>{const{value:I}=E.target;Ii.debug("handleConditionChange",I),a(I)},[]),C=S.exports.useCallback(E=>{const{value:I}=E.target;Ii.debug("handleValueChange",I),c(I)},[]),w=S.exports.useCallback(E=>{const{value:I}=E.target;Ii.debug("handleStartValueChange",I),m(I)},[]),T=S.exports.useCallback(E=>{const{value:I}=E.target;Ii.debug("handleEndValueChange",I),g(I)},[]);S.exports.useEffect(function(){let I=!0;l===void 0&&(Ii.debug("Unable to create formatting rule. Condition is not selected."),I=!1),P.isNumberType(e.type)&&!vT(l,d,u,p)&&(Ii.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=S.exports.useMemo(()=>{if(i===void 0)return null;if(P.isNumberType(i))return TT(l,C,w,T,d,u,p);if(P.isCharType(i))return RT(l,C,d);if(P.isStringType(i))return ET(l,C,d);if(P.isDateType(i))return yT(l,C,d);if(P.isBooleanType(i))return IT()},[i,l,d,u,p,C,w,T]);return v("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 DT=X.module("StyleEditor"),MT="#fcfcfa",NT="#f0f0ee",FT="#1a171a",xT=200,_T=()=>{},fp=t=>{var T,y;const{config:e,onChange:n=_T}=t,[s,i]=S.exports.useState(e.type),[o,r]=S.exports.useState((y=(T=e.customConfig)==null?void 0:T.background)!=null?y:MT),[l,a]=S.exports.useState(!1),[d,c]=S.exports.useState(xT),u=S.exports.useRef(null),m=S.exports.useCallback(E=>{const{value:I}=E.target;DT.debug("handleBackgroundChange",I),r(I)},[]),p=S.exports.useCallback(()=>{l&&a(!1)},[l]),g=S.exports.useCallback(()=>{l||b(),a(!l)},[l]),f=S.exports.useMemo(()=>[Un.NO_FORMATTING,Un.POSITIVE,Un.NEGATIVE,Un.WARN,Un.NEUTRAL,Un.ACCENT_1,Un.ACCENT_2,Un.CUSTOM],[]);function b(){u.current&&c(u.current.getBoundingClientRect().width)}S.exports.useEffect(function(){n({type:s,customConfig:{color:pl.isDark(o)?NT:FT,background:o}})},[n,s,o]);const C=S.exports.useCallback(()=>{const E=[];for(let I=0;I<f.length;I+=1){const D=f[I],F=`option-${I}-${D}`;E.push(v(z,{kind:"inline",className:"style-option-btn",onClick:()=>{i(D),a(!1)},style:{color:tl({type:D}),background:el({type:D})},children:[D===s&&h(j,{icon:ds,className:"mr-2"}),D!==s&&h("span",{className:"mr-4"}),Ih(D)]},F))}return E},[f,s]),w=S.exports.useCallback(()=>h("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:h("div",{className:"style-options",children:C()})}),[d,C]);return v("div",{className:"style-editor",children:[v("div",{className:"mb-2",ref:u,children:[h("label",{className:"mb-0",children:"Style"}),v(z,{kind:"inline",className:"cs-dropdown",style:{color:tl({type:s}),background:el({type:s})},onClick:g,children:[Ih(s),h("span",{children:h(j,{icon:md,className:"cs-caret"})}),h(Gn,{isShown:l,actions:{menuElement:w()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:p,menuStyle:{maxWidth:"100rem"}})]})]}),s===Un.CUSTOM&&v("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})]})]})},go=X.module("ColumnFormatEditor"),kT=()=>{};function OT(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:op(),...xl(e)}}const LT=t=>{var b;const{columns:e,config:n=OT(e),onChange:s=kT}=t,[i,o]=S.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=S.exports.useState(ip(n)),[a,d]=S.exports.useState(!1),[c,u]=S.exports.useState(n.style),m=S.exports.useCallback(C=>{const w=e.find(({name:T})=>T===C);w!==void 0?(o(w),i.type!==w.type&&(l(xl(w.type)),d(!1))):go.error(`Column ${C} not found.`)},[e,i]),p=S.exports.useCallback((C,w)=>{go.debug("handleConditionChange",C,w),l(C),d(w)},[]),g=S.exports.useCallback(C=>{go.debug("handleStyleChange",C),u(C)},[]);S.exports.useEffect(function(){if(i===void 0){go.debug("Column is not selected, skip update.");return}if(c===void 0){go.debug("Style is not selected, skip update.");return}const{type:w,name:T}=i;s({column:{type:w,name:T},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return v("div",{className:"conditional-rule-editor form",children:[v("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Cell If"}),h(Qi,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&v(pe,{children:[h(gp,{column:i,config:r,onChange:p}),h(fp,{config:c,onChange:g})]})]})},fo=X.module("RowFormatEditor"),AT=()=>{};function PT(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:op(),...xl(e)}}const HT=t=>{var b;const{columns:e,config:n=PT(e),onChange:s=AT}=t,[i,o]=S.exports.useState((b=e.find(C=>C.name===n.column.name&&C.type===n.column.type))!=null?b:e[0]),[r,l]=S.exports.useState(ip(n)),[a,d]=S.exports.useState(!1),[c,u]=S.exports.useState(n.style),m=S.exports.useCallback(C=>{const w=e.find(({name:T})=>T===C);w!==void 0?(o(w),i.type!==w.type&&(l(xl(w.type)),d(!1))):fo.error(`Column ${C} not found.`)},[e,i]),p=S.exports.useCallback((C,w)=>{fo.debug("handleConditionChange",C,w),l(C),d(w)},[]),g=S.exports.useCallback(C=>{fo.debug("handleStyleChange",C),u(C)},[]);S.exports.useEffect(function(){if(i===void 0){fo.debug("Column is not selected, skip update.");return}if(c===void 0){fo.debug("Style is not selected, skip update.");return}const{type:w,name:T}=i;s({column:{type:w,name:T},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return v("div",{className:"conditional-rule-editor form",children:[v("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Row If"}),h(Qi,{defaultValue:i==null?void 0:i.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&v(pe,{children:[h(gp,{column:i,config:r,onChange:p}),h(fp,{config:c,onChange:g})]})]})};const ma=X.module("ConditionalFormatEditor"),pa=()=>{};function VT(t){switch(t){case qn.CONDITIONAL:return h(A0,{});case qn.ROWS:return h(P0,{})}}function UT(t){switch(t){case qn.CONDITIONAL:return"Conditional";case qn.ROWS:return"Rows"}}const Nh=[qn.CONDITIONAL,qn.ROWS],BT=t=>{var C;const{columns:e,onSave:n=pa,onUpdate:s=pa,onCancel:i=pa,rule:o}=t,r=e.filter(Hv),[l,a]=S.exports.useState((C=o==null?void 0:o.type)!=null?C:Nh[0]),[d,c]=S.exports.useState(o),[u,m]=S.exports.useState(!1),p=S.exports.useCallback(()=>{i()},[i]),g=S.exports.useCallback(()=>{if(d===void 0){ma.error("Rule is not defined.");return}n(d)},[n,d]),f=S.exports.useCallback(w=>{ma.debug("handleFormatterChange",w),a(w)},[]),b=S.exports.useCallback((w,T)=>{ma.debug("handleRuleChange",w,T,l);const y={type:l,config:w};c(y),m(T),s(T?y:void 0)},[s,l]);return v("div",{className:"conditional-format-editor form",children:[v("div",{className:"mb-2",children:[h("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h("div",{className:"formatter-list",children:Nh.map((w,T)=>h("div",{className:"formatter-type",children:v("button",{type:"button",className:W("btn","btn-icon","btn-formatter-type",{active:w===l}),"data-index":T,onClick:()=>f(w),children:[VT(w),UT(w)]})},w))})]}),l===qn.CONDITIONAL&&h(LT,{columns:r,config:d==null?void 0:d.config,onChange:b}),l===qn.ROWS&&h(HT,{columns:r,config:d==null?void 0:d.config,onChange:b}),h("hr",{}),v("div",{className:"d-flex justify-content-end my-3",children:[h(z,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),h(z,{kind:"primary",onClick:g,disabled:d===void 0||!u,children:"Done"})]})]})};function $T({text:t,isOpen:e,onClose:n}){const[s,i]=S.exports.useState(!1),[o,r]=S.exports.useState(0),[l,a]=S.exports.useState(!1),[d,c]=S.exports.useState(!1),[u,m]=S.exports.useState(!1),p=S.exports.useRef(),g=S.exports.useRef(null),[f,b]=S.exports.useState(!1);S.exports.useEffect(function(){if(!!e){try{JSON.parse(t),m(!0)}catch{m(!1)}c(!1)}},[e,t]),S.exports.useEffect(function(){p.current&&p.current.layout()},[o]),S.exports.useEffect(function(){p.current&&p.current.updateOptions({lineNumbers:l?"on":"off"})},[l]),S.exports.useEffect(()=>(g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{b(!1)},1e3),()=>{g.current&&clearTimeout(g.current)}),[f]);function C(){var D,F;Ne.copyToClipboard((F=(D=p.current)==null?void 0:D.getValue())!=null?F:t).then(()=>{b(!0)})}function w(){a(!l)}function T(){var F;const D=(F=p.current)==null?void 0:F.getModel();!u||!D||(d?(D.setValue(t),c(!1)):(D.setValue(JSON.stringify(JSON.parse(t),void 0,2)),c(!0)),y())}function y(){var F,x;const D=p.current;!D||a(((x=(F=D.getModel())==null?void 0:F.getLineCount())!=null?x:0)>1)}function E(){s&&(p.current=void 0,n())}function I(D){p.current=D,D.onDidContentSizeChange(({contentHeight:F})=>r(F)),y()}return!e&&!s?null:v(Uo,{isOpen:e,centered:!0,keyboard:!0,toggle:E,onOpened:()=>i(!0),onClosed:()=>{i(!1),r(0)},className:"theme-bg-dark cell-overflow-modal",children:[v($o,{toggle:n,children:[h("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h(z,{kind:"inline",icon:f?ld:od,tooltip:f?"Copied contents":"Copy contents",onClick:C}),h(z,{kind:"inline",active:l,icon:Ff,tooltip:"Toggle line numbers",onClick:w}),u&&h(z,{kind:"inline",icon:Df,active:d,tooltip:"Format as JSON",onClick:T})]}),h(Bo,{style:{height:o},children:h(Tl,{onEditorInitialized:I,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 WT="###,##0",zT=({gotoRow:t,gotoRowError:e,onSubmit:n,isShown:s,onEntering:i,onEntered:o,onExiting:r,onExited:l,model:a,onGotoRowNumberChanged:d,onClose:c})=>{const u=S.exports.useRef(null),m="Row number",{rowCount:p}=a;return S.exports.useEffect(()=>{var g;document.activeElement!==u.current&&((g=u.current)==null||g.select())},[t]),h(_l,{isShown:s,className:W("goto-row"),onEntering:i,onEntered:()=>{var g;o(),(g=u.current)==null||g.select()},onExiting:r,onExited:l,children:v(pe,{children:[v("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:W("form-control",{"is-invalid":e!==""}),placeholder:m,onChange:g=>{d(g)},value:t})}),v("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(WT,p)]}),e&&h("div",{className:"goto-row-error text-danger",children:e})]}),h("div",{className:"goto-row-close",children:h(z,{kind:"ghost",onClick:c,children:h(j,{icon:Xi,style:{marginRight:"0"}})})})]})})},fe=X.module("IrisGrid"),GT=500,KT=250,qT=250,Cp=Object.freeze({aggregations:[],showOnTop:!1});function Fh({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===P.REVERSE_TYPE.NONE&&o==null&&r==null&&l.length===0&&a.length===0}const Js=class extends S.exports.Component{constructor(t){super(t),this.getAdvancedMenuOpenedHandler=Te(N=>this.handleAdvancedMenuOpened.bind(this,N),{max:100}),this.getCachedAdvancedFilterMenuActions=Te((N,k,_,V,G)=>h(zd,{model:N,column:k,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:_,sortDirection:V,formatter:G}),{max:50}),this.getCachedOptionItems=Te((N,k,_,V,G,Q,J,ve,le,be,ke,ee,ge,Se,Re,qe)=>{const Oe=[];return N&&Oe.push({type:_e.CHART_BUILDER,title:"Chart Builder",icon:Jf}),Oe.push({type:_e.VISIBILITY_ORDERING_BUILDER,title:"Column Visibility & Ordering",icon:Ra}),_&&Oe.push({type:_e.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:hl}),k&&Oe.push({type:_e.CUSTOM_COLUMN_BUILDER,title:"Manage Custom Columns",icon:Hf}),V&&Oe.push({type:_e.ROLLUP_ROWS,title:"Rollup Rows",icon:wu}),G&&Oe.push({type:_e.AGGREGATIONS,title:"Aggregate Columns",icon:Vf}),Q&&Oe.push({type:_e.SELECT_DISTINCT,title:"Select Distinct Values",icon:Pf}),J&&ge&&Oe.push({type:_e.TABLE_EXPORTER,title:"Download CSV",icon:Sf}),qe&&Oe.push({type:_e.ADVANCED_SETTINGS,title:"Advanced Settings",icon:Uf}),Oe.push({type:_e.QUICK_FILTERS,title:"Quick Filters",subtitle:ve.shortcut.getDisplayText(),icon:zr,isOn:ke,onChange:ve.action}),Se&&Oe.push({type:_e.SEARCH_BAR,title:"Search Bar",subtitle:le.shortcut.getDisplayText(),icon:bu,isOn:ee,onChange:le.action}),Oe.push({type:_e.GOTO,title:"Go to",subtitle:be.shortcut.getDisplayText(),icon:Af,isOn:Re,onChange:be.action}),Oe},{max:1}),this.getCachedHiddenColumns=Te(N=>N,{max:1,normalizer:([N])=>N.join()}),this.getAggregationMap=Te((N,k)=>{const _={};return k.forEach(({operation:V,selected:G,invert:Q})=>{_[V]=Ls.getOperationColumnNames(N,V,G,Q)}),_}),this.getOperationMap=Te((N,k)=>{const _={};return k.filter(V=>!Ls.isRollupOperation(V.operation)).forEach(({operation:V,selected:G,invert:Q})=>{Ls.getOperationColumnNames(N,V,G,Q).forEach(J=>{var le;const ve=[...(le=_[J])!=null?le:[],V];_[J]=ve})}),_}),this.getOperationOrder=Te(N=>N.map(k=>k.operation).filter(k=>!Ls.isRollupOperation(k))),this.getCachedFormatColumns=Te((N,k)=>Pv(N,k)),this.getCachedModelColumns=Te((N,k)=>N.columns),this.getCachedPreviewFormatColumns=Te((N,k,_,V)=>{if(fe.debug("getCachedPreviewFormatColumns",k,_,V),_!==void 0&&V!==void 0){const G=[...k];return G[V]=_,this.getCachedFormatColumns(N,G)}return this.getCachedFormatColumns(N,k)}),this.getModelRollupConfig=Te((N,k,_)=>se.getModelRollupConfig(N,k,_)),this.getModelTotalsConfig=Te((N,k,_)=>{var ve,le,be;const{aggregations:V,showOnTop:G}=_;if(((le=(ve=k==null?void 0:k.columns)==null?void 0:ve.length)!=null?le:0)>0||((be=V==null?void 0:V.length)!=null?be:0)===0)return null;const Q=this.getOperationMap(N,V),J=this.getOperationOrder(V);return{operationMap:Q,operationOrder:J,showOnTop:G}}),this.getCachedStateOverride=Te((N,k,_,V,G,Q,J,ve,le,be)=>({hoverSelectColumn:N,isFilterBarShown:k,isSelectingColumn:_,loadingScrimProgress:V,quickFilters:G,advancedFilters:Q,sorts:J,reverseType:ve,rollupConfig:le,isMenuShown:be}),{max:1}),this.getCachedFilter=Te((N,k,_,V,G)=>[...N!=null?N:[],...V!=null?V:[],...se.getFiltersFromFilterMap(k),...se.getFiltersFromFilterMap(_),...G!==void 0?[G]:[]],{max:1}),this.getCachedTheme=Te((N,k,_)=>({...cp,...N,autoSelectRow:!k,rowFooterWidth:_>0?N.rowFooterWidth:0}),{max:1}),this.getAlwaysFetchColumns=Te((N,k,_,V,G,Q)=>{const J=[];for(let le=0;le<V;le+=1)J.push(k[K.getModelIndex(le,_)].name);for(let le=0;le<G;le+=1)J.push(k[K.getModelIndex(k.length-1-le,_)].name);if(Q)for(let le=Q[0];le<=Q[1];le+=1)J.push(k[K.getModelIndex(le,_)].name);return[...new Set([...N,...J])]}),this.updateSearchFilter=je((N,k,_,V)=>{const G=Rr.createSearchFilter(N,k,_,V);this.setState({searchFilter:G})},KT),this.handleConditionalFormatEditorUpdate=je(N=>{this.setState({conditionalFormatPreview:N})},qT),this.handleDownloadProgressUpdate=us((N,k)=>{const{tableDownloadStatus:_}=this.state;_===ln.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:N,tableDownloadEstimatedTime:k})},GT),this.getOverflowButtonTooltip=Te(N=>{if(N==null)return null;const k={position:"absolute",...N,pointerEvents:"none"};return h("div",{style:k,children:h(Be,{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.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 fs,this.globalColumnFormats=[],this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new Fo,this.tableSaver=null,this.crossColumnRef=Y.createRef(),this.isAnimating=!1,this.filterInputRef=Y.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:dn.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:dn.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:dn.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:N}=this.props;Je(N)&&N.isEditable&&N.pendingDataMap.size>0&&this.discardPending().catch(fe.error)},shortcut:dn.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:N}=this.props;Je(N)&&N.isEditable&&N.pendingDataMap.size>0&&N.pendingDataErrors.size===0&&this.commitPending().catch(fe.error)},shortcut:dn.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:w,quickFilters:T,selectDistinctColumns:y,pendingDataMap:E,canCopy:I,frozenColumns:D}=t,F=[new Gv(this),new Kv(this)];I&&F.push(new $v(this));const x=[new qv(this),new Yv(this),new Xv(this),new Jv(this),new Zv(this),new bs(this),new Qv(this),new eT(this)],U=l.length>0?l:r.movedColumns,$=a.length>0?a:r.movedRows,O=new sT({userColumnWidths:new Map(m),userRowHeights:new Map(p),movedColumns:U}),H=b!=null?b:[],L=Rr.createSearchFilter(f,H,r.columns,C);this.state={isFilterBarShown:i,isSelectingPartition:o,focusedFilterBarColumn:null,metricCalculator:O,metrics:void 0,keyHandlers:F,mouseHandlers:x,partition:d,partitionColumn:c,partitionTable:null,partitionFilters:[],quickFilters:T?new Map(T):new Map,advancedFilters:new Map(w),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:P.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:U,movedRows:$,shownColumnTooltip:null,formatter:new un,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:L,searchValue:f,selectedSearchColumns:H,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:D,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,isGotoRowShown:!1,gotoRow:"",gotoRowError:""}}static makeQuickFilter(t,e,n){try{return P.makeQuickFilter(t,e,n)}catch(s){fe.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(ui.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?(fe.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);return n&&i!=null&&o!=null?s.valueForCell(i,o):n?null:i!=null&&o!=null?s.textForCell(i,o):""}getModelColumn(t){const{metrics:e}=this.state;A(e);const{modelColumns:n}=e;return n==null?null:t!=null?n.get(t):null}getModelRow(t){const{metrics:e}=this.state;A(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=Je(t)&&t.isEditable)!=null?n:!1,t.floatingTopRowCount+t.floatingBottomRowCount)}getVisibleColumn(t){const{movedColumns:e}=this.state;return K.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):fe.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 fe.debug2("Ignoring change to existing filter"),!1}return n.set(t,{text:e,filter:Js.makeQuickFilter(o,e,i.timeZone)}),!0}return n.delete(t)}setAdvancedFilterMap(t){this.setState({advancedFilters:t})}setAdvancedFilter(t,e,n){fe.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){fe.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;fe.debug("setFilterMap",t);const{advancedSettings:e}=this.props;((i=e.get(ui.LINK_CHANGE_CLEARS_ALL_FILTERS))!=null?i:!1)&&this.clearAllFilters();const{model:s}=this.props;t.forEach(({columnType:o,text:r,value:l},a)=>{const d=s.columns.find(u=>u.name===a&&u.type===o);if(d==null)return;const c=s.getColumnIndexByName(d.name);if(A(c),l===void 0)this.removeQuickFilter(c);else if(l===null)this.setQuickFilter(c,d.filter().isNull(),"=null");else{const u=P.isTextType(o)?M.FilterValue.ofString(l):M.FilterValue.ofNumber(l);this.setQuickFilter(c,d.filter().eq(u),`${r}`)}})}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(){fe.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(){fe.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){fe.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=P.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:Js.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=hs.getColumnFormats(t),s=hs.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=!ht(this.globalColumnFormats,n),a=!ht(this.dateTimeFormatterOptions,s),d=!ht(this.decimalFormatOptions,t==null?void 0:t.defaultDecimalFormatOptions),c=!ht(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 un(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);fe.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=Rr.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 fe.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));Ne.copyToClipboard(i).catch(o=>fe.error("Unable to copy cell",o))}else fe.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 fe.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;A(o),A(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})},Js.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){fe.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 fe.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Cp,customColumns:[],quickFilters:new Map,reverseType:P.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!Fh(this.state)}startListening(t){t.addEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.addEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.addEventListener(Ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(t){t.removeEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.removeEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.removeEventListener(Ce.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=K.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;A(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();A(p);const g=o.getLastLeft(p,t);(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(K.getModelIndex(t,n),0),(s=this.grid)==null||s.forceUpdate()}freezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;fe.debug2("freezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.add(t);const o=s.getColumnIndexByName(t);A(o);const r=K.getVisibleIndex(o,n),l=K.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;fe.debug2("unfreezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.delete(t);const o=s.getColumnIndexByName(t);A(o);const r=K.getVisibleIndex(o,n),l=K.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===mi.VISIBILITY_OPTIONS.SHOW?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(){fe.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){fe.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(t){const{onPartitionAppend:e}=this.props,{partitionColumn:n}=this.state;e(n,t)}handlePartitionChange(t){const{partitionColumn:e}=this.state;this.updatePartition(t,e)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(t){if(Ee.isCanceled(t))return;fe.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){fe.info("Toggling sort for column",t);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(t);A(i);const o=P.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=P.sortDirection.none,n=!1,s=!1){var r;A(t);const{model:i}=this.props,o=P.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&&P.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(!Je(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 Pi("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=>{Ee.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=pt(n)&&n.isRowExpandable(e),g=i.find(f=>f.name===d)!=null;o[d]={value:u,text:m,type:c,isGrouped:g,isExpandable:p}}const{onDataSelected:r}=this.props;r(e,o)}handleAdvancedFilterChange(t,e,n){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);A(i),this.setAdvancedFilter(i,e,n)}handleAdvancedFilterSortChange(t,e,n=!1){var a;const{model:s}=this.props,i=s.getColumnIndexByName(t.name);A(i);const o=P.getSortForColumn(s.sort,i);let r=null;(o==null||o.direction!==e)&&(e===P.sortDirection.descending?r=t.sort().desc():r=t.sort().asc());const l=P.setSortForColumn(s.sort,i,r,n);fe.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){fe.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);A(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;A(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=P.getNormalizedType(s.type);A(r);const l=un.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(fe.error("request failed:",e.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{fe.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(),fe.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};Fh(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(Je(e)&&e.isEditable){A(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){A(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=()=>null){this.setState({movedColumns:t},e)}handleTooltipRef(t){t!=null&&t.startTimer(),this.tooltip=t}handleConditionalFormatsChange(t){fe.debug("Updated conditional formats",t),this.setState({conditionalFormats:t})}handleConditionalFormatCreate(){fe.debug("Create new conditional format");const{openOptions:t,conditionalFormats:e}=this.state;this.setState({openOptions:[...t,{type:_e.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:e.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(t){fe.debug("Edit conditional format",t);const{openOptions:e,conditionalFormats:n}=this.state;this.setState({openOptions:[...e,{type:_e.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:t,conditionalFormatPreview:{...n[t]}})}handleConditionalFormatEditorSave(t){fe.debug("Save conditional format changes",t),this.setState(e=>{if(e.conditionalFormatEditIndex===null)return fe.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){fe.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=se.getRemovedCustomColumnNames(a,t);if(d.length>0){const c=se.removeSortsInColumns(s,d),u=se.removeFiltersInColumns(l,i,d),m=se.removeFiltersInColumns(l,o,d),p=se.removeColumnFromMovedColumns(l,n,d),g=se.removeColumnsFromSelectDistinctColumns(r,d);c.length!==s.length&&(fe.debug("removing sorts from removed custom columns..."),this.setState({sorts:c})),(u.size!==i.size||m.size!==o.size)&&(fe.debug("removing filters from removed custom columns..."),this.setState({quickFilters:u,advancedFilters:m})),ht(n,p)||(fe.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),ht(r,g)||(fe.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;fe.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;fe.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){fe.debug("handleAggregationsChange",t),this.startLoading(`Aggregating ${t.aggregations.map(e=>e.operation).join(", ")}...`),this.setState({aggregationSettings:t})}handleAggregationChange(t){fe.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){fe.debug("handleAggregationEdit",t);const{openOptions:e}=this.state;this.setState({openOptions:[...e,{type:_e.AGGREGATION_EDIT,title:`Edit Columns to ${t.operation}`}],selectedAggregation:t})}handleRollupChange(t){var e,n;fe.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:P.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(t){fe.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:P.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:t}=this.props;t?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:ln.DOWNLOAD_STATUS.INITIATING}):fe.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(t,e,n,s){const{canDownloadCsv:i}=this.props;i?(fe.info("start table downloading",t,e,n,s),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(t,e,n,s),{tableDownloadStatus:ln.DOWNLOAD_STATUS.DOWNLOADING}))):fe.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:ln.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:ln.DOWNLOAD_STATUS.CANCELED})}deleteRanges(t){const{model:e}=this.props;this.pending.add(e.delete(t)).catch(n=>{Ee.isCanceled(n)||fe.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;A(t),A(e);const n=(m=this.gridWrapper)==null?void 0:m.getBoundingClientRect(),s=20;A(n);const{columnHeaderHeight:i,visibleColumnXs:o,visibleColumnWidths:r,width:l,columnHeaderMaxDepth:a}=t,d=o.get(e),c=r.get(e);A(d),A(c);const u=n.left+Ut(d+c/2,s,l-s);return{top:n.top+(a-1)*i,left:n.left+Ut(d+c/2,s,l-s),bottom:n.top+a*i,right:n.left+Ut(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,visibleColumnXs:o,visibleColumnWidths: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(Be,{timeout:400,interactive:!0,options:g,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h(hp,{model:n,column:b,onStatistics:()=>{var C;(C=this.tooltip)==null||C.update()}})},b.name)})}render(){var mt,Ci,mc,pc,gc,fc,Cc,bc,Sc;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:w,isReady:T,copyOperation:y,focusedFilterBarColumn:E,loadingText:I,loadingScrimProgress:D,loadingSpinnerShown:F,keyHandlers:x,mouseHandlers:U,shownColumnTooltip:$,hoverAdvancedFilter:O,shownAdvancedFilter:H,hoverSelectColumn:L,quickFilters:N,advancedFilters:k,partition:_,partitionFilters:V,partitionTable:G,partitionColumn:Q,searchFilter:J,selectDistinctColumns:ve,movedColumns:le,movedRows:be,formatter:ke,conditionalFormats:ee,conditionalFormatPreview:ge,conditionalFormatEditIndex:Se,sorts:Re,reverseType:qe,customColumns:Oe,selectedRanges:jn,isTableDownloading:wn,tableDownloadStatus:bt,tableDownloadProgress:Ie,tableDownloadEstimatedTime:ot,showSearchBar:rt,searchValue:Ft,selectedSearchColumns:Qt,invertSearchColumns:Zt,aggregationSettings:xt,selectedAggregation:On,rollupConfig:$t,openOptions:vn,pendingSavePromise:Vs,pendingSaveError:Wl,pendingRowCount:zl,pendingDataErrors:Gl,pendingDataMap:Zo,toastMessage:Jo,frozenColumns:er,showOverflowModal:tr,overflowText:nr,overflowButtonTooltipProps:sr,isGotoRowShown:ir,gotoRow:Kl,gotoRowError:ql}=this.state;if(!T)return null;const Us=this.getTheme(),Yl=this.getCachedFilter(e,N,k,V,J),fi=g.getUserColumnWidths(),ro=this.getCachedStateOverride(L,b,s,D,N,k,Re,qe,$t,w),or=f?f.top:0,rr=f?f.bottomViewport:0;let lo=null,ao=null;a&&(lo=f?f.left:0,ao=f?f.right:0);const Xl=f!=null&&f.width>0&&f.height>0,jl=((Ci=(mt=$t==null?void 0:$t.columns)==null?void 0:mt.length)!=null?Ci:0)>0;let lr=null;const Ql=f?Math.min(Math.max(Js.minDebounce,Math.round(f.rowCount/200)),Js.maxDebounce):Js.maxDebounce;if(b&&E!=null&&f!=null){const{gridX:Qe,gridY:Jt,visibleColumnXs:Ss,visibleColumnWidths:co,width:bi}=f,Ln=Ss.get(E),Wt=co.get(E);if(Ln!=null&&Wt!=null){const _t=Qe+Ln,Qn=Jt-((mc=Us.filterBarHeight)!=null?mc:0),Bs=Wt+1,$s=((pc=Us.filterBarHeight)!=null?pc:0)-1,mr={top:Qn,left:_t,minWidth:Math.min(Bs,bi-_t),height:$s};let An="",Si=!0;const Ws=this.getModelColumn(E);A(Ws);const wi=N.get(Ws),ws=k.get(Ws);wi!=null&&(An=wi.text,Si=wi.filter!=null);const vi=N.size!==0||k.size!==0;lr=h(rp,{ref:this.filterInputRef,style:mr,className:W({error:!Si,active:An!==""||ws!=null,"iris-grid-has-filter":vi}),isAdvancedFilterSet:ws!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:(gc=this.grid)==null?void 0:gc.handleContextMenu,debounceMs:Ql,value:An},E)}}let ar=null;if(I!=null){const Qe=v("div",{className:"iris-grid-loading-status",children:[h("div",{className:W("iris-grid-loading-status-bar",{show:F}),children:I}),v("button",{type:"button",onClick:this.handleCancel,className:W("iris-grid-btn-cancel",{show:F}),children:[h(j,{icon:Xi,transform:"down-1"}),"Cancel"]})]}),Jt=f?f.gridY:0;ar=h("div",{className:"iris-grid-loading",style:{top:Jt},children:Qe})}let dr=null;$!=null&&f&&(dr=this.getColumnTooltip($,f,r),(fc=this.tooltip)==null||fc.update());const cr=[];if(f&&b){const{gridX:Qe,gridY:Jt,visibleColumns:Ss,visibleColumnXs:co,visibleColumnWidths:bi}=f,{filterBarHeight:Ln}=Us;for(let Wt=0;Wt<Ss.length;Wt+=1){const _t=Ss[Wt],Qn=co.get(_t),Bs=bi.get(_t),$s=this.getModelColumn(_t);if($s!=null&&r.isFilterable($s)&&Qn!=null&&Bs!=null&&Bs>0){const An=Qe+Qn+Bs-24,Si=Jt-(Ln!=null?Ln:0)+2,Ws={position:"absolute",top:Si,left:An},ws=k.get($s)!=null,vi=_t===O||_t===E||ws,ea=h("div",{className:W("advanced-filter-button-container",{hidden:!vi}),style:Ws,children:vi&&h(z,{kind:"ghost",className:W("btn-link-icon advanced-filter-button",{"filter-set":ws}),onClick:()=>{this.setState({shownAdvancedFilter:_t})},onContextMenu:Jp=>{var wc;(wc=this.grid)==null||wc.handleContextMenu(Jp)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:_t})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:v("div",{className:"fa-layers",children:[h(j,{icon:dd,className:"filter-solid"}),h(j,{icon:zr,className:"filter-light"})]})})},_t);cr.push(ea)}}}const hr=[];if(f){const{gridX:Qe,visibleColumns:Jt,visibleColumnXs:Ss,visibleColumnWidths:co,columnHeaderHeight:bi}=f;for(let Ln=0;Ln<Jt.length;Ln+=1){const Wt=Jt[Ln],_t=Ss.get(Wt),Qn=co.get(Wt);if(_t!=null&&Qn!=null&&Qn>0){const Bs=Qe+_t,$s=Qe+_t+Qn-20,mr=b?{position:"absolute",top:bi,left:$s,width:20,height:Us.filterBarHeight}:{position:"absolute",top:0,left:Bs,width:Qn,height:bi},An=this.getModelColumn(Wt);if(An!=null){const Si=r.columns[An],Ws=k.get(An),{options:wi}=Ws||{},ws=P.getSortForColumn(r.sort,An),vi=ws?ws.direction:null,ea=h("div",{className:"advanced-filter-menu-container",style:mr,children:h(xn,{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,Si,wi,vi,ke)})},Wt);hr.push(ea)}}}}const ur=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,rt,m,this.isTableSearchAvailable(),ir,c.size>0),Zl=vn.map(Qe=>{switch(Qe.type){case _e.CHART_BUILDER:return h(Xm,{model:r,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},_e.CHART_BUILDER);case _e.VISIBILITY_ORDERING_BUILDER:return h(mi,{model:r,movedColumns:le,userColumnWidths:fi,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged},_e.VISIBILITY_ORDERING_BUILDER);case _e.CONDITIONAL_FORMATTING:return h(pT,{rules:ee,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case _e.CONDITIONAL_FORMATTING_EDIT:return A(r.columns),A(this.handleConditionalFormatEditorUpdate),h(BT,{columns:r.columns,rule:ge,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case _e.CUSTOM_COLUMN_BUILDER:return h(Ud,{model:r,customColumns:Oe,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},_e.CUSTOM_COLUMN_BUILDER);case _e.ROLLUP_ROWS:return h(Bd,{model:r,onChange:this.handleRollupChange,config:$t},_e.ROLLUP_ROWS);case _e.AGGREGATIONS:return h(M0,{settings:xt,isRollup:jl,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case _e.AGGREGATION_EDIT:return On&&h(F0,{aggregation:On,columns:r.originalColumns,onChange:this.handleAggregationChange});case _e.TABLE_EXPORTER:return h(ln,{model:r,name:l,isDownloading:wn,tableDownloadStatus:bt,tableDownloadProgress:Ie,tableDownloadEstimatedTime:ot!=null?ot:void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:jn},_e.TABLE_EXPORTER);case _e.SELECT_DISTINCT:return h(pp,{model:r,selectDistinctColumns:ve,onChange:this.handleSelectDistinctChanged});case _e.ADVANCED_SETTINGS:return h(Gd,{items:c,onChange:u});default:throw Error(`Unexpected option type ${Qe.type}`)}}),Jl=this.getCachedHiddenColumns(se.getHiddenColumns(fi));return v("div",{className:"iris-grid",role:"presentation",children:[v("div",{className:"iris-grid-column",children:[t!=null&&h("div",{className:"iris-grid-bar",children:t}),h(ut,{in:C,timeout:Et.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&&h(mp,{table:G,getFormattedString:(Qe,Jt,Ss)=>r.displayString(Qe,Jt,Ss),columnName:Q.name,partition:_,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h(ut,{in:rt,timeout:Et.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(Rr,{value:Ft,selectedColumns:Qt,invertSelection:Zt,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),v("div",{className:"grid-wrapper",ref:Qe=>{this.gridWrapper=Qe},children:[h(eo,{ref:Qe=>{this.grid=Qe},isStickyBottom:!Je(r)||!r.isEditable,isStuckToBottom:i,isStuckToRight:o,metricCalculator:g,model:r,keyHandlers:x,mouseHandlers:U,movedColumns:le,movedRows:be,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:ro,theme:Us}),h($T,{isOpen:tr,text:nr,onClose:this.handleOverflowClose}),Xl&&h(dp,{model:r,modelColumns:r.columns,top:or,bottom:rr,left:lo,right:ao,filter:Yl,formatter:ke,sorts:Re,reverseType:qe,movedColumns:le,customColumns:Oe,hiddenColumns:Jl,alwaysFetchColumns:this.getAlwaysFetchColumns(d,r.columns,le,r.floatingLeftColumnCount,r.floatingRightColumnCount,(bc=(Cc=this.grid)==null?void 0:Cc.state.draggingColumn)==null?void 0:bc.range),formatColumns:this.getCachedPreviewFormatColumns(this.getCachedModelColumns(r,Oe),ee,ge,((Sc=vn[vn.length-1])==null?void 0:Sc.type)===_e.CONDITIONAL_FORMATTING_EDIT&&Se!=null?Se:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,$t,xt),totalsConfig:this.getModelTotalsConfig(r.columns,$t,xt),selectDistinctColumns:ve,pendingRowCount:zl,pendingDataMap:Zo,frozenColumns:er}),!w&&h("div",{className:"grid-settings-button",children:h(z,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${l}`,onClick:this.handleMenu,icon:h(j,{icon:kf,transform:"up-1"}),tooltip:"Table Options"})}),lr,ar,cr,dr,hr,sr&&this.getOverflowButtonTooltip(sr)]}),h(zT,{model:r,isShown:ir,gotoRow:Kl,gotoRowError:ql,onSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd}),h(Bv,{error:Wl,isSaving:Vs!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:Gl,pendingDataMap:Zo,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h(nT,{children:Jo}),h(no,{model:r,copyOperation:y!=null?y:void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h(to,{ref:Qe=>{this.tableSaver=Qe},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:bt===ln.DOWNLOAD_STATUS.DOWNLOADING,formatter:ke})]}),h(ut,{in:w,timeout:Et.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:v(LC,{children:[h($c,{title:"Table Options",onClose:this.handleMenuClose,children:h(Uu,{onSelect:Qe=>this.handleMenuSelect(ur[Qe]),items:ur})}),Zl.map((Qe,Jt)=>h($c,{title:vn[Jt].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Qe},vn[Jt].type))]})})}),h(oe,{actions:this.contextActions})]})}};let so=Js;so.minDebounce=150;so.maxDebounce=500;so.loadingSpinnerDelay=800;so.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:P.REVERSE_TYPE.NONE,customColumns:[],aggregationSettings:Cp,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:ps.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:[],decimalFormatOptions:R.exports.shape({defaultFormatString:R.exports.string}),integerFormatOptions:R.exports.shape({defaultFormatString:R.exports.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:cp,canToggleSearch:!0};class YT 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 XT=X.module("ColumnHeaderGroup");function xh(t){return t instanceof bp}class bp{constructor({name:e,children:n,color:s,depth:i,childIndexes:o}){this.getVisibleRange=me(r=>{const l=this.childIndexes.flat(),a=K.getVisibleIndexes(l,r),d=Math.min(...a),c=Math.max(...a);return c-d!==l.length-1&&XT.warn(`Column header group ${this.name} is not contiguous`),[d,c]}),this.name=e,this.children=n,this.color=s,this.depth=i,this.childIndexes=o}}const tt=X.module("IrisGridTableModel"),jT=150,QT=0;function ri(t){return t.table!==void 0}const Ba=class extends Ce{constructor(t,e=new un,n=null){super(),this.pendingNewRowCount=0,this.columnHeaderGroupMap=new Map,this.columnHeaderParentMap=new Map,this._columnHeaderMaxDepth=null,this._columnHeaderGroups=[],this.getMemoizedColumnMap=me(s=>{const i=new Map;return s.forEach(o=>i.set(o.name,o)),i}),this.getColumnIndicesByNameMap=me(s=>{const i=new Map;return s.forEach(({name:o},r)=>i.set(o,r)),i}),this.setViewport=us((s,i,o)=>{if(i<s){tt.error("Invalid viewport",s,i);return}const{viewport:r}=this;if(r!=null&&r.top===s&&r.bottom===i&&r.columns===o){tt.debug2("Ignoring duplicate viewport",r);return}this.viewport={top:s,bottom:i,columns:o},tt.debug2("setViewport",this.viewport),this.applyViewport()},jT),this.applyViewport=us(()=>{if(!this.viewport)return;tt.debug2("applyViewport",this.viewport);const{top:s,bottom:i,columns:o}=this.viewport,[r,l]=this.getCachedViewportRowRange(s,i);this.applyBufferedViewport(r,l,o)},QT,{leading:!1}),this.getCachedFormattedString=an((s,i,o,r,l)=>s.getFormattedString(i,o,r,l),{max:1e4}),this.getCachedCustomColumnFormatFlag=an(hs.isCustomColumnFormatDefined,{max:1e4}),this.getCachedViewportRowRange=me((s,i)=>{const o=i-s,r=Math.max(0,s-o*Ba.ROW_BUFFER_PAGES),l=i+o*Ba.ROW_BUFFER_PAGES;return[r,l]}),this.getCachedPendingErrors=me((s,i,o)=>{const r=new Map;return s.forEach((l,a)=>{var c;const{data:d}=l;for(let u=0;u<o;u+=1)d.has(u)||(r.has(a)||r.set(a,[]),(c=r.get(a))==null||c.push(new YT(a,i[u].name)))}),r}),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.pendingNewDataErrors=null,this.pendingNewRowCount=0}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(Ce.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ge(Ce.EVENT.RECONNECT))}handleTableUpdate(t){this.copyViewportData(t.detail),this.dispatchEvent(new Ge(Ce.EVENT.UPDATED))}handleTotalsUpdate(t){this.copyTotalsData(t.detail),this.dispatchEvent(new Ge(Ce.EVENT.UPDATED))}handleRequestFailed(t){this.dispatchEvent(new Ge(Ce.EVENT.REQUEST_FAILED,t))}handleCustomColumnsChanged(){this.dispatchEvent(new Ge(Ce.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(!se.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=e;s.forEach((i,o)=>{if(!se.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(Ce.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(Ce.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(P.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 A(n.nullStringColor),n.nullStringColor;if(o&&o.color)return o.color;if(this.isPendingRow(e))return A(n.pendingTextColor),n.pendingTextColor;if(r!=null){const l=(i=this.totalsColumn(t,e))!=null?i:this.columns[t];if(P.isDateType(l.type)||l.name==="Date")return A(n.dateColor),n.dateColor;if(P.isNumberType(l.type))return r>0?(A(n.positiveNumberColor),n.positiveNumberColor):r<0?(A(n.negativeNumberColor),n.negativeNumberColor):(A(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(e)&&this.isKeyColumn(t))return A(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 P.isNumberType(n)?"right":P.isDateType(n)||e.name==="Date"?"center":"left"}textForColumnHeader(t,e=0){var n,s;return(s=(n=this.columnAtDepth(t,e))==null?void 0:n.name)!=null?s:void 0}colorForColumnHeader(t,e=0){var s;const n=this.columnAtDepth(t,e);return xh(n)&&(s=n.color)!=null?s:null}getColumnHeaderGroup(t,e){const n=this.columnAtDepth(t,e);if(xh(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 movedColumns(){var i;let t=[];const e=(o,r)=>{const l=this.getColumnIndexByName(o);if(l==null)throw new Error(`Unknown layout hint column: ${o}`);const a=K.getVisibleIndex(l,t);t=K.moveItem(a,r,t)},n=(o,r)=>{const l=this.columnHeaderGroupMap.get(o);if(!l)throw new Error(`Unknown layout hint group: ${o}`);const a=l.getVisibleRange(t);t=K.moveRange(a,r,t)};if(this.frontColumns.length||this.backColumns.length||this.frozenColumns.length){const o=new Set;let r=0;this.frozenColumns.forEach(a=>{if(o.has(a))throw new Error(`Column specified in multiple layout hints: ${a}`);e(a,r),r+=1}),this.frontColumns.forEach(a=>{if(o.has(a))throw new Error(`Column specified in multiple layout hints: ${a}`);e(a,r),r+=1});let l=this.columnMap.size-1;this.backColumns.forEach(a=>{if(o.has(a))throw new Error(`Column specified in multiple layout hints: ${a}`);e(a,l),l-=1})}const s=(i=this.layoutHints)==null?void 0:i.columnGroups;if(s){this.setColumnHeaderGroups(s);const o=[...this.columnHeaderGroupMap.values()];o.sort((r,l)=>r.depth-l.depth),o.forEach(r=>{const l=r.children[0],a=this.getColumnIndexByName(l);let d;if(a!=null)d=K.getVisibleIndex(a,t);else{const c=this.columnHeaderGroupMap.get(l);if(!c)throw new Error(`Unknown column ${l} in group ${r.name}`);[,d]=c.getVisibleRange(t)}for(let c=1;c<r.children.length;c+=1){const u=r.children[c],m=this.columnHeaderGroupMap.get(u),p=this.getColumnIndexByName(u);if(m){const f=m.getVisibleRange(t)[0]<d?d-m.childIndexes.length+1:d+1;n(u,f),d=f+m.childIndexes.length-1}else if(p!=null){const f=K.getVisibleIndex(p,t)<d?d:d+1;e(u,f),d=f}}})}return t}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){var t,e;return this._columnHeaderMaxDepth==null&&this.setColumnHeaderGroups((t=this.layoutHints)==null?void 0:t.columnGroups),(e=this._columnHeaderMaxDepth)!=null?e:1}set columnHeaderMaxDepth(t){this._columnHeaderMaxDepth=t}setColumnHeaderGroups(t){if(t===this._columnHeaderGroups||(this._columnHeaderGroups=t!=null?t:[],this.columnHeaderMaxDepth=1,this.columnHeaderParentMap=new Map,this.columnHeaderGroupMap=new Map,!t||t.length===0))return;const e=new Map(t.map(o=>[o.name,o])),n=new Set,s=o=>{const{name:r}=o;if(this.getColumnIndexByName(r)!=null)throw new Error(`Column header group has same name as column: ${r}`);const l=this.columnHeaderGroupMap.get(r);if(l)return l;const a=[];let d=1;o.children.forEach(u=>{if(n.has(u))throw new Error(`Column group child ${u} specified in multiple groups`);n.add(u);const m=e.get(u),p=this.getColumnIndexByName(u);if(m){const g=s(m);a.push(g.childIndexes.flat()),d=Math.max(d,g.depth+1)}else if(p!=null)a.push(p),d=Math.max(d,1);else throw new Error(`Unknown child ${u} in group ${r}`)});const c=new bp({...o,depth:d,childIndexes:a});return this.columnHeaderGroupMap.set(r,c),o.children.forEach(u=>this.columnHeaderParentMap.set(u,c)),this.columnHeaderMaxDepth=Math.max(this.columnHeaderMaxDepth,c.depth+1),c},i=new Set;t.forEach(o=>{const{name:r}=o;if(i.has(r))throw new Error(`Duplicate column group name: ${r}`);i.add(r),s(o)})}get groupedColumns(){return[]}row(t){var l,a,d,c,u,m,p,g,f,b,C,w,T,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 A(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=(T=(w=this.viewportData)==null?void 0:w.rows)==null?void 0:T[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:Le.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){tt.warn("invalid data!");return}this.viewportData=this.extractViewportData(t),this.formattedStringData=[]}copyTotalsData(t){var l,a,d,c,u;if(t==null){tt.warn("invalid data!");return}const{columns:e,rows:n}=t;if(n.length!==1){tt.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:Le.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(w=>w.name===g);b.set(C,{value:i.get(p),format:i.getFormat(p)})}tt.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);A(o),n.set(o,{value:t.get(i),format:t.getFormat(i)})}return{data:n}}closeSubscription(){tt.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(Ce.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(tt.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(Ce.EVENT.UPDATED));return}this.totalsTablePromise=Ee.makeCancelable(this.table.getTotalsTable(t),e=>e.close()),this.totalsTablePromise.then(e=>{this.totalsTablePromise=null,this.setTotalsTable(e)}).catch(e=>{Ee.isCanceled(e)||(tt.error("Unable to set next totalsTable",e),this.totalsTablePromise=null,this.dispatchEvent(new Ge(Ce.EVENT.REQUEST_FAILED,{detail:e})))})}}setTotalsTable(t){tt.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){tt.debug2("applyBufferedViewport",t,e,n),this.subscription==null?(tt.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(t,e,n)):(tt.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(t,e,n))}async snapshot(t,e=!1,n=s=>s){if(this.subscription==null)throw new Error("No subscription available");const s=re.consolidate(t);if(!se.isValidSnapshotRanges(s))throw new Error(`Invalid snapshot ranges ${t}`);const i=new Set,o=[],r=new Set;for(let u=0;u<s.length;u+=1){const m=s[u];A(m.endRow),A(m.startRow);for(let p=m.startRow;p<=m.endRow&&p<this.floatingTopRowCount;p+=1)i.add(p);m.endRow>=this.floatingTopRowCount&&m.startRow<=this.floatingTopRowCount+this.table.size&&o.push(new re(m.startColumn,Math.min(Math.max(0,m.startRow-this.floatingTopRowCount)),m.endColumn,Math.min(Math.max(0,m.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let p=Math.max(m.startRow,this.floatingTopRowCount+this.table.size);p<=m.endRow&&p<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;p+=1)r.add(p)}const l=se.columnsFromRanges(s,this.columns),a=[];e&&a.push(l.map(u=>u.name));const d=[...i].sort();for(let u=0;u<d.length;u+=1){const m=d[u],p=l.map(g=>{const f=this.getColumnIndexByName(g.name);return A(f),n(this.valueForCell(f,m),g)});e&&p.push(this.textForRowFooter(m)),a.push(p)}if(o.length>0){const u=se.rangeSetFromRanges(o),m=await this.subscription.snapshot(u,l);a.push(...m.rows.map(p=>l.map(g=>n(p.get(g),g))))}const c=[...r].sort();for(let u=0;u<c.length;u+=1){const m=c[u],p=l.map(g=>{const f=this.getColumnIndexByName(g.name);return A(f),n(this.valueForCell(f,m),g)});e&&p.push(this.textForRowFooter(m)),a.push(p)}return a}async textSnapshot(t,e=!1,n=s=>`${s}`){return tt.debug2("textSnapshot",t,e),(await this.snapshot(t,e,n)).map(i=>i.join(" ")).join(`
|
|
35
35
|
`)}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)||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=P.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=>(A(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);A(p);const{data:g}=p,f=new Map(g),b=P.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(Ce.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]=P.makeValue(g.type,e,this.formatter.timeZone)}),p}),u=await((n=this.inputTable)==null?void 0:n.addRows(c));tt.debug("setValueForRanges(",t,",",e,") set tableRanges",a,"result",u)}re.forEachCell(t,(d,c)=>{const u=i[d];A(u),this.cacheFormattedValue(d,c,u)})}catch(s){tt.error("Unable to set ranges",t,e,s)}finally{re.forEachCell(t,(s,i)=>{this.clearPendingValue(s,i)})}}async setValues(t=[]){var e;if(tt.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=P.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);A(C);const{data:w}=C,T=new Map(w);m!=null?T.set(d,{value:m}):T.delete(d),T.size>0?n.set(g,{...C,data:T}):n.delete(g)}}),this.pendingDataMap=n,this.dispatchEvent(new Ge(Ce.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=>(A(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];A(C);const w=re.rowCount([C]);if(p<w){A(C.startRow),m=C.startRow+p;break}p-=w}const g={};for(let b=0;b<this.columns.length;b+=1)g[this.columns[b].name]=c[b];A(m);const f=s.get(m);return f!=null&&f.forEach(b=>{var w;const C=this.columns[(w=b.column)!=null?w:b.x];g[C.name]=P.makeValue(C.type,b.text,this.formatter.timeZone)}),g});tt.info("setValues setting tableRanges",r);const d=await((e=this.inputTable)==null?void 0:e.addRows(a));tt.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=P.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));tt.debug("commitPending()",this.pendingNewDataMap,"result",i),this.pendingNewDataMap=new Map,this.pendingNewDataErrors=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(Ce.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}`);A(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=>(A(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];A(m.startRow),A(m.endRow);for(let p=m.startRow;p<=m.endRow;p+=1)c.delete(p)}this.pendingNewDataMap=c,this.formattedStringData=[],this.dispatchEvent(new Ge(Ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ge(Ce.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=>(A(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=P.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 P.makeValue(s.type,n,this.formatter.timeZone),!0}catch{return!1}}};let Kd=Ba;Kd.ROW_BUFFER_PAGES=1;const Ns=X.module("IrisGridTableModel"),ga=Object.freeze([]);class Sp extends Kd{constructor(e,n=new un,s=null){super(e,n,s),this.getMemoizedFrontColumns=me(i=>i!=null?i:ga),this.getMemoizedBackColumns=me(i=>i!=null?i:ga),this.getMemoizedFrozenColumns=me((i,o)=>{var r;return(r=o!=null?o:i)!=null?r:ga}),this.getCachedFilterableColumnSet=me(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(Ns.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){Ns.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){Ns.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(Ns.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){Ns.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){Ns.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(Ce.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(Ns.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(Ce.EVENT.UPDATED));return}this.totalsTablePromise=Ee.makeCancelable(this.table.getTotalsTable(e),n=>n.close()),this.totalsTablePromise.then(n=>{this.totalsTablePromise=null,this.setTotalsTable(n)}).catch(n=>{Ee.isCanceled(n)||(Ns.error("Unable to set next totalsTable",n),this.totalsTablePromise=null,this.dispatchEvent(new Ge(Ce.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}`);A(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=>(A(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];A(g.startRow),A(g.endRow);for(let f=g.startRow;f<=g.endRow;f+=1)m.delete(f)}super.pendingDataMap=m,this.formattedStringData=[],this.dispatchEvent(new Ge(Ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ge(Ce.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=>(A(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=P.makeFilterRawValue(f.type,b),w=f.filter().eq(C);p.push(w)}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 ZT extends Kd{constructor(){super(...arguments),this.getCachedFilterableColumnSet=me((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,d,c;A(this.viewport),A(this.viewportData);const{columns:i}=this.viewport,o=[];n!=null&&n&&o.push(i.map(u=>u.name));const r=new re(0,(l=this.viewportData)==null?void 0:l.offset,i.length,((a=this.viewportData)==null?void 0:a.offset)+((d=this.viewportData)==null?void 0:d.rows.length));for(let u=0;u<e.length;u+=1){const m=re.intersection(r,e[u]);A(m),A(m.startRow),A(m.endRow);for(let p=m.startRow;p<=m.endRow;p+=1){const g=[],f=this.viewportData.rows[p-this.viewportData.offset];A(m.startColumn),A(m.endColumn);for(let b=m.startColumn;b<=m.endColumn;b+=1)A(s),g.push(s((c=f.data.get(b))==null?void 0:c.value,this.columns[b]));o.push(g)}}return o}get groupedColumns(){return[]}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 Fs=X.module("IrisGridProxyModel");function fa(t,e,n){return P.isTreeTable(t)?new ZT(t,e):new Sp(t,e,n)}class JT extends Ce{constructor(e,n=new un,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)=>pt(this.model)?this.model.isRowExpandable(...o):!1,this.isRowExpanded=(...o)=>pt(this.model)?this.model.isRowExpanded(...o):!1,this.setRowExpanded=(...o)=>{if(pt(this.model))return this.model.setRowExpanded(...o);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")},this.depthForRow=(...o)=>pt(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)=>Je(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)=>(Je(this.model)&&this.model.editValueForCell(...o),""),this.setValueForCell=(...o)=>Je(this.model)?this.model.setValueForCell(...o):Promise.reject(new Error("Model is not editable")),this.setValueForRanges=(...o)=>Je(this.model)?this.model.setValueForRanges(...o):Promise.reject(new Error("Model is not editable")),this.setValues=(...o)=>Je(this.model)?this.model.setValues(...o):Promise.resolve(),this.isValidForCell=(...o)=>Je(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=fa(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){Fs.debug2("handleModelEvent",e);const{detail:n,type:s}=e;this.dispatchEvent(new Ge(s,{detail:n}))}setModel(e){Fs.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(Ce.EVENT.COLUMNS_CHANGED,{detail:e.columns})),ri(e)&&this.dispatchEvent(new Ge(Ce.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){Fs.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=Ee.makeCancelable(e,n=>n.close()),this.modelPromise.then(n=>{this.modelPromise=null,this.setModel(n)}).catch(n=>{if(Ee.isCanceled(n)){Fs.debug2("setNextModel cancelled");return}Fs.error("Unable to set next model",n),this.modelPromise=null,this.dispatchEvent(new Ge(Ce.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(Ce.EVENT);for(let s=0;s<n.length;s+=1)e.addEventListener(n[s],this.handleModelEvent)}removeListeners(e){const n=Object.keys(Ce.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 pt(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 movedColumns(){return this.model.movedColumns}get movedRows(){return this.model.movedRows}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 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(Fs.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(ht(e,this.rollup))return;this.rollup=e;let n=Promise.resolve(this.originalModel);ri(this.originalModel)&&e!=null&&(n=this.originalModel.table.rollup(e).then(s=>fa(s,this.formatter))),this.setNextModel(n)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(Fs.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){Fs.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);ri(this.originalModel)&&n.length>0&&(s=this.originalModel.table.selectDistinct(n).then(i=>fa(i,this.formatter))),this.setNextModel(s)}get table(){if(ri(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 Je(this.model)&&this.model.isEditable}export(){if(P.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}columnStatistics(e){if(P.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 qd{static async makeModel(e,n=new un){let s=null;return!P.isTreeTable(e)&&e.hasInputTable&&(s=await e.inputTable()),new JT(e,n,s)}}const ts=X.module("TableViewportUpdater"),eE=150,Mo=class extends S.exports.PureComponent{constructor(){super(...arguments),this.getViewportRowRange=me((t,e,n)=>{const s=n-e,i=Math.max(0,e-s*Mo.ROW_BUFFER_PAGES),o=n+s*Mo.ROW_BUFFER_PAGES;return[i,o]}),this.getViewportColumns=me((t,e,n,s)=>{if(e==null||n==null)return null;const i=n-e,o=Math.max(0,e-i*Mo.COLUMN_BUFFER_PAGES),r=Math.min(n+i*Mo.COLUMN_BUFFER_PAGES,t.columns.length-1),l=[];for(let a=o;a<=r;a+=1){const d=K.getModelIndex(a,s);l.push(t.columns[d])}return l}),this.updateViewport=us((t,e,n,s,i)=>{if(e<t){ts.error("Invalid viewport",t,e);return}if(t===0&&e===0){ts.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(ts.debug2("Setting Viewport Top:",l,"Bottom:",a,"Columns:",d),this.subscription==null){ts.debug2("updateViewport creating new subscription"),this.subscription=r.setViewport(l,a,d);const{onSubscription:c}=this.props;c(this.subscription)}else ts.debug2("updateViewport using existing subscription"),this.subscription.setViewport(l,a,d)},eE)}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)&&(ts.debug("update table filter",r),o.applyFilter(r)),(u||p)&&(ts.debug("update table sort",l),o.applySort(l)),(m||p)&&(ts.debug("update table custom columns",a),o.applyCustomColumns(a)),this.updateViewport(e,n,s,i,d)}componentWillUnmount(){this.closeSubscription()}closeSubscription(){if(ts.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 Yd=Mo;Yd.ROW_BUFFER_PAGES=3;Yd.COLUMN_BUFFER_PAGES=1;Yd.defaultProps={top:0,bottom:0,left:null,right:null,columns:null,onSubscription:()=>{},filters:[],sorts:[],customColumns:[],movedColumns:[]};const Ri=X.module("TreeTableViewportUpdater"),tE=150,wp=class extends S.exports.PureComponent{constructor(t){super(t),this.updateViewport=us((e,n)=>{if(n<e){Ri.error("Invalid viewport",e,n);return}if(e===0&&n===0){Ri.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(Ri.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)},tE),this.listenerCleanup=null}componentDidMount(){const{top:t,bottom:e,table:n,filters:s,sorts:i}=this.props;Ri.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&&(Ri.debug("update table filter",i),s.applyFilter(i)),o!==t.sorts&&(Ri.debug("update table sort",o),s.applySort(o)),this.updateViewport(e,n)}componentWillUnmount(){this.updateViewport.cancel(),this.listenerCleanup&&this.listenerCleanup()}render(){return null}};let vp=wp;vp.UPDATE_INTERVAL=1e3;vp.defaultProps={top:0,bottom:0,onViewportUpdate:()=>{},filters:[],sorts:[],updateInterval:wp.UPDATE_INTERVAL};class Ki{}Ki.OPEN="ChartEvent.OPEN";Ki.CLOSE="ChartEvent.CLOSE";Ki.COLUMN_SELECTED="ChartEvent.COLUMN_SELECTED";class Ct{}Ct.SESSION_OPENED="ConsoleEvent.SESSION_OPENED";Ct.SESSION_CLOSED="ConsoleEvent.SESSION_CLOSED";Ct.FOCUS_HISTORY="ConsoleEvent.FOCUS_HISTORY";Ct.SEND_COMMAND="ConsoleEvent.SEND_COMMAND";Ct.SETTINGS_CHANGED="ConsoleEvent.SETTINGS_CHANGED";class He{}He.TABLE_CHANGED="InputFilterEvent.TABLE_CHANGED";He.COLUMNS_CHANGED="InputFilterEvent.COLUMNS_CHANGED";He.FILTERS_CHANGED="InputFilterEvent.FILTERS_CHANGED";He.CLEAR_ALL_FILTERS="InputFilterEvent.CLEAR_ALL_FILTERS";He.COLUMN_SELECTED="InputFilterEvent.COLUMN_SELECTED";He.OPEN_DROPDOWN="InputFilterEvent.OPEN_DROPDOWN";He.OPEN_INPUT="InputFilterEvent.OPEN_INPUT";He.OPEN_FILTER_SET_MANAGER="InputFilterEvent.OPEN_FILTER_SET_MANAGER";class vt{}vt.OPEN_GRID="IrisGridEvent.OPEN_GRID";vt.CLOSE_GRID="IrisGridEvent.CLOSE_GRID";vt.DATA_SELECTED="IrisGridEvent.DATA_SELECTED";vt.COLUMN_SELECTED="IrisGridEvent.COLUMN_SELECTED";vt.STATE_CHANGED="IrisGridEvent.STATE_CHANGED";vt.CREATE_CHART="IrisGridevent.CREATE_CHART";const Tp=Object.freeze({OPEN:"MarkdownEvent.OPEN"});class Ve{}Ve.CREATE_NOTEBOOK="NotebookEvent.createNotebook";Ve.SELECT_NOTEBOOK="NotebookEvent.selectNotebook";Ve.CLOSE_FILE="NotebookEvent.closeFile";Ve.RENAME="NotebookEvent.rename";Ve.RENAME_FILE="NotebookEvent.renameFile";Ve.REGISTER_FILE="NotebookEvent.registerFile";Ve.SEND_TO_NOTEBOOK="NotebookEvent.sendToNotebook";Ve.UNREGISTER_FILE="NotebookEvent.unregisterFile";class zn{}zn.focus="TabEvent.focus";zn.blur="TabEvent.blur";zn.openPQObject="TabEvent.openPQObject";zn.openControl="TabEvent.openControl";zn.reload="TabEvent.reload";zn.clearAllFilters="TabEvent.clearAllFilters";class Ep extends S.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})}}Ep.defaultProps={additionalActions:[]};class yp extends S.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 v("form",{className:W("p-3",{"was-validated":o}),onSubmit:this.handleRenameSubmit,noValidate:!0,role:"presentation",onMouseDown:r=>{r.stopPropagation()},onMouseUp:r=>{r.stopPropagation()},children:[v("div",{className:"form-group",children:[v("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}),v("div",{className:"invalid-feedback",children:[s," name cannot be empty"]}),(e||!n)&&v("div",{className:"pt-2",children:["Renaming this ",s," will rename for all users."]})]}),v("div",{className:"text-right",children:[h(z,{kind:"secondary",className:"mr-2",onClick:this.handleRenameCancel,children:"Cancel"}),h(z,{kind:"primary",type:"submit",children:"Rename"})]})]})}render(){const{isShown:e,onCancel:n}=this.props;return h(xn,{isShown:e,onEntered:this.handleRenameDialogOpened,onExited:n,options:{placement:"bottom",modifiers:{preventOverflow:{boundariesElement:"viewport"}}},interactive:!0,closeOnBlur:!0,children:this.renderRenameDialog()})}}yp.defaultProps={isShared:!1,isOwner:!0,itemType:"Item",value:""};const nE=X.module("Panel");class Xn extends S.exports.PureComponent{constructor(e){super(e),this.getAdditionActions=me((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:te.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(Ct.SESSION_CLOSED,this.handleSessionClosed),s.on(Ct.SESSION_OPENED,this.handleSessionOpened),s.on(zn.focus,this.handleTabFocus),s.on(zn.blur,this.handleTabBlur),s.on(He.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Me.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(Ct.SESSION_CLOSED,this.handleSessionClosed),s.off(Ct.SESSION_OPENED,this.handleSessionOpened),s.off(zn.focus,this.handleTabFocus),s.off(zn.blur,this.handleTabBlur),s.off(He.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Me.UNMOUNT,e)}handleTab(e){e!=null&&this.setState({title:te.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(Me.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=te.getRootFromContainer(n),i=te.getComponentConfigFromContainer(n);A(i),te.renameComponent(s,i,e)}handleCopyPanel(){const{glContainer:e,glEventHub:n}=this.props,s=te.getRootFromContainer(e),i=te.getComponentConfigFromContainer(e);if(i==null){nE.error("Could not get component config from container",e);return}const o=te.cloneComponent(s,i);o!==null&&n.emit(Me.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 v("div",{className:W("h-100 w-100 iris-panel",n),onFocusCapture:this.handleFocus,onBlurCapture:this.handleBlur,children:[e,h(Cl,{errorMessage:r,isLoaded:l,isLoading:a}),u!=null&&hi.createPortal(v(pe,{children:[h(Ep,{glContainer:i,additionalActions:this.getAdditionActions(o,d,c)}),c&&h(yp,{isShown:m,value:p,itemType:"Panel",onCancel:this.handleRenameCancel,onSubmit:this.handleRenameSubmit}),s!=null&&h(Be,{interactive:!0,options:{placement:"bottom"},popperClassName:"panel-tab-popper",children:s()})]}),u.element[0])]})}}Xn.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};const sE=X.module("WidgetPanelTooltip"),Al=t=>{const{widgetType:e,widgetName:n,glContainer:s,description:i,children:o}=t,r=te.getTitleFromContainer(s),[l,a]=S.exports.useState(!1);return v("div",{className:"tab-tooltip-container",children:[v("div",{className:"row flex-nowrap align-items-start",children:[h("span",{className:"tab-tooltip-title",children:v("b",{children:[e," Name "]})}),h("span",{className:"tab-tooltip-name",children:n}),h(z,{kind:"ghost",className:"tab-tooltip-copy",icon:l?ld:od,onClick:()=>{Ne.copyToClipboard(n).then(()=>a(!0)).catch(d=>sE.error("Unable to column name",d))},tooltip:l?"Copied text":"Copy name"})]}),n!==r&&v("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]})};Al.propTypes={glContainer:kd.Container.isRequired,widgetType:R.exports.string,widgetName:R.exports.string,description:R.exports.string,children:R.exports.node};Al.defaultProps={widgetType:"",widgetName:"",description:null,children:null};class Pl extends S.exports.PureComponent{constructor(e){super(e),this.getCachedRenderTabTooltip=me((n,s,i,o,r)=>n?()=>h(Al,{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;Ne.copyToClipboard(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.
|
|
36
36
|
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.
|
|
37
|
-
${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:w,onBlur:T,onResize:y,onShow:E,onTabBlur:I,onTabFocus:D,onTabClicked:F}=this.props,{isPanelDisconnected:x,isWidgetDisconnected:U,isPanelInactive:$}=this.state,O=this.getErrorMessage(),H=m!=null?m:this.getCachedRenderTabTooltip(u,r,p,g,f),L=[{title:`Copy ${p} Name`,group:oe.groups.medium,order:20,action:this.handleCopyName}];return v(Xn,{className:W(n,{disconnected:x||U||a,inactive:$}),componentPanel:s,glContainer:r,glEventHub:l,onClearAllFilters:b,onHide:C,onFocus:w,onBlur:T,onResize:y,onShow:E,onSessionClose:this.handleSessionClosed,onSessionOpen:this.handleSessionOpened,onTabBlur:I,onTabFocus:D,onTabClicked:F,renderTabTooltip:H,errorMessage:O,isLoaded:i,isLoading:o,isClonable:d,isRenamable:c,additionalActions:L,children:[e,$&&h("div",{className:"fill-parent-absolute"})]})}}Pl.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 hn=Object.freeze({DEFAULT:"DEFAULT",LINKER:"LINKER"}),iE="SET_SESSION_WRAPPER",oE=Ps(iE,null),rE={sessionWrapper:oE},lE=new Map,Hl=Object.freeze([]),Ip=(t,e)=>{var n;return(n=jt(t,e).columns)!=null?n:Hl},aE=(t,e)=>{var n;return(n=jt(t,e).filterSets)!=null?n:Hl},Xd=(t,e)=>{var n;return(n=jt(t,e).filters)!=null?n:Hl},jd=(t,e)=>{var n;return(n=jt(t,e).tableMap)!=null?n:lE},Qd=(t,e)=>jt(t,e).isolatedLinkerPanelId,io=(t,e)=>{var n;return(n=jt(t,e).links)!=null?n:Hl},Zd=(t,e)=>jt(t,e).columnSelectionValidator,dE=(t,e)=>jt(t,e).connection,pi=(t,e)=>jt(t,e).sessionWrapper,cE=(t,e)=>n=>n(Yn(t,{connection:e})),hE=(t,e)=>n=>n(Yn(t,{sessionWrapper:e})),Jd=(t,e)=>n=>n(Yn(t,{links:e})),uE=(t,e)=>(n,s)=>{const i=io(s(),t),o=e.filter(r=>i.findIndex(l=>ht(l.start,r.start)&&ht(l.end,r.end))<0);return n(Jd(t,i.concat(o)))},mE=(t,e)=>(n,s)=>{const o=io(s(),t).filter(r=>!e.includes(r.id));return n(Jd(t,o))},Rp=(t,e)=>n=>n(Yn(t,{isolatedLinkerPanelId:e})),pE=(t,e)=>n=>n(Yn(t,{columnSelectionValidator:e})),gE=(t,e)=>n=>n(Yn(t,{consoleSettings:e})),fE=(t,e)=>n=>n(Yn(t,{filterSets:e}));Object.entries(rE).map(([t,e])=>Ji.register(t,e));const Dp=({columnMap:t,inputFilterMap:e,linkedColumnMap:n,onAdd:s,onOpenLinker:i,waitingFilterMap:o,waitingInputMap:r})=>{const l=S.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=sn.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=S.exports.useMemo(()=>Array.from(t.values()),[t]),d=S.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),s(Array.from(o.values()))},[s,o]),c=S.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:v("div",{className:W("chart-panel-overlay-content chart-filter-overlay-content",{"chart-filter-waiting-filter":u},{"chart-filter-waiting-input":m}),children:[u&&v(pe,{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?cs:ad;return v("div",{className:W("waiting-filter-item",{"is-invalid":g}),children:[h(j,{icon:f}),p.name]},p.name)})}),v("div",{children:[h($i,{onClick:d,className:"btn-primary",children:"Add Input Filters"}),h($i,{onClick:c,className:"btn-primary",children:"Open Linker Tool"})]})]}),m&&v(pe,{children:[h("div",{className:"info-message",children:"Waiting for User Input"}),h("div",{className:"",children:l})]})]})})};Dp.propTypes={columnMap:R.exports.instanceOf(Map).isRequired,inputFilterMap:R.exports.instanceOf(Map).isRequired,linkedColumnMap:R.exports.instanceOf(Map).isRequired,onAdd:R.exports.func.isRequired,onOpenLinker:R.exports.func.isRequired,waitingFilterMap:R.exports.instanceOf(Map).isRequired,waitingInputMap:R.exports.instanceOf(Map).isRequired};const Po=({columns:t,onColumnSelected:e,onMouseEnter:n,onMouseLeave:s})=>h("div",{className:"chart-panel-overlay chart-column-selector-overlay",children:h("div",{className:W("chart-panel-overlay-content"),children:v(pe,{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(Sl,{className:W("btn-chart-column-selector",Po.makeButtonClassName(i.name)),onClick:()=>e(i.name),onMouseEnter:()=>{n&&n(i)},onMouseLeave:s,disabled:!i.isValid,isLinked:i.isActive,children:i.name},i.name))})]})})});Po.makeButtonClassName=t=>`btn-chart-column-selector-${t}`;Po.defaultProps={onMouseEnter:()=>{},onMouseLeave:()=>{}};const tn=X.module("ChartPanel"),CE=150;function Pr(t){return t.settings!==void 0}function bE(t){return t.inputFilters!=null}function SE(t){return t.panelState!=null}class Vl extends S.exports.Component{constructor(e){super(e),this.getWaitingInputMap=me((r,l,a)=>{if(!r)return new Map;const d=new Map(l);return a.forEach((c,u)=>{d.delete(u)}),d}),this.getWaitingFilterMap=me((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=me((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=me((r,l)=>{const a=new Map,d=te.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);A(p),a.set(m,p)}}return a}),this.getSelectorColumns=me((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),CE),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.panelContainer=Y.createRef(),this.chart=Y.createRef(),this.pending=new fs;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&&Pr(n)&&n.settings&&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&&lh(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){tn.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){tn.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(Ki.COLUMN_SELECTED,this,s.get(e))}handleColumnMouseEnter({type:e,name:n}){const{columnSelectionValidator:s}=this.props;tn.debug("handleColumnMouseEnter",s,e,n),s&&s(this,{type:e,name:n})}handleColumnMouseLeave(){const{columnSelectionValidator:e}=this.props;tn.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(hn.LINKER)}handleReconnect(){this.setState({isDisconnected:!1,error:void 0}),this.sendColumnChange(),this.updateColumnFilters()}handleLoadSuccess(e){tn.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){Ee.isCanceled(e)||(tn.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){tn.debug2("updateModelFromSource ignoring",s,i,n);return}if(this.pending.cancel(),Pr(e)){const{settings:o}=e;this.pending.add(M.plot.Figure.create(xe.makeFigureSettings(o,n))).then(r=>{lh(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&&bE(e.props)&&SE(e.state)){const{inputFilters:r}=e.props,{panelState:l}=e.state;l!=null&&(o=se.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 tn.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(He.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(He.COLUMNS_CHANGED,this,Array.from(e.getFilterColumnMap().values()))}getCoordinateForColumn(e){var l;const n=Po.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){tn.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 tn.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 tn.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;A(s);const i=this.getWaitingInputMap(s.isFilterRequired(),e,n);if(s.setFilter(n),n.size>0&&i.size===0){const o=s.getDefaultTitle(),r=sn.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),tn.debug2("updateFilters filters set",n),this.setState({isLoading:!0})}else tn.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;Pr(l)?C=l.table:C=l.figure;const w=this.getInputFilterColumnMap(d,i),T=this.getLinkedColumnMap(d,r),y=m!=null?this.getWaitingInputMap(m.isFilterRequired(),d,c):new Map,E=m!=null?this.getWaitingFilterMap(m.isFilterRequired(),d,c,T,w):new Map,I=u!=null?`Unable to open chart. ${u}`:void 0,D=y.size>0,F=d.size>0&&o;return h(Pl,{className:W("iris-chart-panel",{"input-required":D}),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:v("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(dm,{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(ut,{in:D&&!F&&!b,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Dp,{inputFilterMap:w,linkedColumnMap:T,onAdd:this.handleFilterAdd,onOpenLinker:this.handleOpenLinker,columnMap:d,waitingFilterMap:E,waitingInputMap:y})}),h(ut,{in:F,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Po,{columns:this.getSelectorColumns(d,T,e),onColumnSelected:this.handleColumnSelected,onMouseEnter:this.handleColumnMouseEnter,onMouseLeave:this.handleColumnMouseLeave})})]})})}}Vl.defaultProps={columnSelectionValidator:null,isLinkerActive:!1,source:null,sourcePanel:null,panelState:null,settings:{}};Vl.displayName="ChartPanel";Vl.COMPONENT="ChartPanel";const wE=(t,e)=>{const{localDashboardId:n,metadata:s}=e;let i;s!=null&&(i=s.sourcePanelId);const o=jd(t,n),r=Gm(t,n),l=Rl(t),a=Qd(t,n),d=l===hn.LINKER&&a===void 0;return{columnSelectionValidator:Zd(t,n),isLinkerActive:d,inputFilters:Xd(t,n),links:io(t,n),source:i!=null?o.get(i):void 0,sourcePanel:i!=null?r.get(i):void 0,settings:Nt(t)}},Ui=Mt(wE,{setActiveTool:Dl,setDashboardIsolatedLinkerPanelId:Rp},null,{forwardRef:!0})(Vl);const Dr=X.module("CommandHistoryPanel"),Mp=class extends S.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 fs;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){Dr.error(t)}componentDidMount(){const{glEventHub:t,session:e}=this.props;t.on(Ct.FOCUS_HISTORY,this.handleFocusHistory),e!=null&&this.loadTable()}componentWillUnmount(){const{glEventHub:t}=this.props;t.off(Ct.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(Dr.debug("handleSendToNotebook",n,t),!n){Dr.error("Session is not connected.");return}const{glEventHub:i}=this.props;i.emit(e?Ve.CREATE_NOTEBOOK:Ve.SEND_TO_NOTEBOOK,n,s,t)}handleSendToConsole(t,e=!0,n=!1){Dr.debug("handleSendToConsole",t);const{glEventHub:s}=this.props;s.emit(Ct.SEND_COMMAND,t,e,n)}loadTable(){const{commandHistoryStorage:t}=this.props,{language:e,sessionId:n}=this.state;A(e),A(n),this.pending.add(t.getTable(e,n,Date.now()),s=>s.close()).then(s=>{this.setState({table:s})}).catch(Mp.handleError)}render(){const{glContainer:t,glEventHub:e,commandHistoryStorage:n}=this.props,{language:s,contextActions:i,table:o}=this.state;return v(Xn,{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&&v(pe,{children:[h(El,{ref:this.container,language:s,sendToNotebook:this.handleSendToNotebook,sendToConsole:this.handleSendToConsole,table:o,commandHistoryStorage:n}),h(oe,{actions:i})]})]})}};let ec=Mp;ec.COMPONENT="CommandHistoryPanel";ec.TITLE="Command History";const vE=(t,e)=>{const n=um(t),s=pi(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}},nl=Mt(vE,null,null,{forwardRef:!0})(ec);const Mr=X.module("ConsolePanel"),TE=500,EE=Object.freeze({consoleSettings:{},itemIds:[]});class tc extends S.exports.PureComponent{constructor(e){super(e),this.savePanelState=je(()=>{const{consoleSettings:r,itemIds:l}=this.state,a={consoleSettings:r,itemIds:[...l]};Mr.debug("Saving panel state",a),this.setState({panelState:a})},TE),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={...EE,...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(Me.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(Me.MOUNT,this.handlePanelMount),(n=this.objectSubscriptionCleanup)==null||n.call(this)}subscribeToFieldUpdates(){const{sessionWrapper:e}=this.props,{session:n}=e;this.objectSubscriptionCleanup=n.subscribeToFieldUpdates(s=>{Mr.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=ze.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(Ct.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(Me.CLOSE,s)}}handleSettingsChange(e){const{glEventHub:n}=this.props;Mr.debug("handleSettingsChange",e),this.setState({consoleSettings:e}),n.emit(Ct.SETTINGS_CHANGED,e)}openWidget(e,n){const{glEventHub:s}=this.props,{title:i}=e;A(i);const o=this.getItemId(i),r={fetch:()=>n.getObject(e),panelId:o,widget:e};Mr.debug("openWidget",r),s.emit(Me.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(Me.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(Xn,{componentPanel:this,glContainer:n,glEventHub:s,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,errorMessage:a!=null?`${a}`:void 0,children:h(pe,{children:u!=null&&h(Sd,{ref:this.consoleRef,settings:l,session:u,focusCommandHistory:this.handleFocusCommandHistory,openObject:this.handleOpenObject,closeObject:this.handleCloseObject,commandHistoryStorage:e,onSettingsChange:this.handleSettingsChange,language:g,statusBarChildren:v(pe,{children:[h("div",{children:"\xA0"}),h("div",{children:Gu.LANGUAGE_MAP.get(g)}),h("div",{children:"\xA0"}),h("div",{children:h(mS,{connection:m,defaultUpdateInterval:10*1e3,hoverUpdateInterval:3*1e3,monitorDuration:10*60*1e3})}),h("div",{children:"\xA0"})]}),scope:p,timeZone:o,objectMap:d,unzip:r})})})}}tc.COMPONENT="ConsolePanel";tc.TITLE="Console";const yE=(t,e)=>({commandHistoryStorage:um(t),sessionWrapper:pi(t,e.localDashboardId),timeZone:Il(t)}),Oi=Mt(yE,null,null,{forwardRef:!0})(tc);const Co=X.module("DropdownFilter"),IE=150,Hr=class extends S.exports.Component{constructor(t){super(t),this.getCompatibleColumns=me((i,o)=>i!=null?o.filter(({type:r})=>r!==void 0&&P.isCompatibleType(r,i.columnType)):[]),this.getColumnOptions=me((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=me((i,o)=>i.indexOf(o)),this.getValueOptions=me(i=>[h("option",{value:"-1",children:Hr.PLACEHOLDER},"-1"),...i.map((o,r)=>h("option",{value:r,children:o},`${r}/${o}`))]),this.getItemLabel=Te((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})},IE),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,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(Co.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(),Co.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;if(n===-1)Co.debug2("Selected default item");else if(n>=0&&n<i.length)s=i[n];else{Co.error("Invalid index",n,i);return}Co.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()}handleMouseEnter(){const{onSourceMouseEnter:t}=this.props;t()}handleMouseLeave(){const{onSourceMouseLeave:t}=this.props;t()}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(){this.dropdownRef.current!==null&&this.dropdownRef.current.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({column:i,value:n,isValueShown:s})}render(){var U;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,isValueShown:m,selectedColumn:p,value:g}=this.state,f=i===null,b=this.getCompatibleColumns(i,t),C=i!=null,w=(U=i==null?void 0:i.columnName)!=null?U:Hr.SOURCE_BUTTON_PLACEHOLDER,T=c!=null?`${c.name} Filter`:null,[y,E]=this.getColumnOptions(b,p),I=this.getValueOptions(a),D=this.getSelectedOptionIndex(a,g),F=!C||p==null;return v(id,{className:"dropdown-filter fill-parent-absolute",isFlipped:m&&!n,children:[h("div",{className:"dropdown-filter-settings-card",children:v("div",{className:"dropdown-filter-card-content",children:[v("div",{className:"dropdown-filter-settings-grid",children:[h("label",{children:"Source Column"}),h(Sl,{isLinked:C,onClick:o,onMouseEnter:r,onMouseLeave:l,className:Hr.SOURCE_BUTTON_CLASS_NAME,disabled:e,children:w}),h("div",{className:"text-muted small",children:"Select a source column for the list by linking to a table."}),h("label",{children:"Filter Column"}),h("select",{value:E,className:"custom-select",onChange:this.handleColumnChange,disabled:f,children:y}),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}),C&&v("div",{className:"dropdown-filter-settings-buttons",children:[h(z,{kind:"secondary",type:"button",onClick:this.handleSettingsCancel,disabled:u||m||n,tooltip:n?"Cancel disabled while linker open":void 0,children:"Cancel"}),h(z,{kind:"primary",type:"button",className:"ml-2",onClick:this.handleSettingsSave,disabled:F||m||n,tooltip:n?"Save disabled while linker open":void 0,children:"Save"})]})]})}),h("div",{className:"dropdown-filter-value-card",onClick:this.handleBackgroundClick,children:s&&v(pe,{children:[h("div",{className:"dropdown-filter-column",children:h("div",{className:"dropdown-filter-column-title",children:T})}),v("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:D,ref:this.dropdownRef,onChange:this.handleValueChange,onKeyPress:this.handleDropdownKeyPress,children:I})}),d&&h("div",{className:"error-message mt-3 text-center",children:d})]}),h("div",{className:"dropdown-filter-menu",children:h(z,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(j,{icon:Wo,transform:"grow-4"}),tooltip:"Dropdown Filter Settings"})})]})})]})}};let qi=Hr;qi.defaultProps={column:null,disableLinking:!1,isLinkerActive:!1,isLoaded:!1,isValueShown:!1,settingsError:null,source:null,value:"",values:[],onColumnSelected:()=>{},onSourceMouseEnter:()=>{},onSourceMouseLeave:()=>{}};qi.PLACEHOLDER="Select a value...";qi.SOURCE_BUTTON_CLASS_NAME="btn-dropdown-filter-selector";qi.SOURCE_BUTTON_PLACEHOLDER="Select a column";const nt=X.module("DropdownFilterPanel"),RE=250,ei=class extends S.exports.Component{constructor(t){super(t),this.getCachedValues=me((d,{type:c,name:u},m)=>c!==void 0&&P.isDateType(c)?d.map(p=>ei.DATETIME_FORMATTER.format(p)):d.map(p=>p!=null&&c!=null?m.getFormattedString(p,c,u):null)),this.getCachedPanelLinks=me((d,c)=>{const u=te.getIdFromPanel(c);return nt.debug("getCachedPanelLinks",d,u),d.filter(m=>{var p;return((p=m.end)==null?void 0:p.panelId)===u})}),this.getCachedSource=me(d=>{nt.debug("getCachedSource",d);let c=null;if(d.length>0){const[u]=d;c=u.start,d.length>1&&nt.error("Filter has more that one link",d)}return c}),this.getCachedSourceTable=me((d,c)=>{var m;if(nt.debug("getCachedSourceTable",d,c),c==null)return null;const{panelId:u}=c;return(m=d.get(u))!=null?m:null}),this.getCachedSourceColumn=me((d,c)=>{var u;return nt.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),RE),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 fs;const{panelState:e,settings:n}=t;this.columnFormats=hs.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 un(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{column:t,value:e,timestamp:n}=this.state,s=this.getSourceTable();if(s!==null&&this.startListeningToSource(s),t!=null){const{name:i,type:o}=t;this.sendUpdate(i,o,e,n)}}componentDidUpdate(t,e){const{valuesTable:n}=this.state,{settings:s}=this.props,i=this.getSource(),o=this.getSourceTable(),r=this.getSource(t),l=this.getSourceTable(t);s!==t.settings&&s!==void 0&&this.updateFormatterSettings(s),n!==e.valuesTable&&e.valuesTable!=null&&(nt.debug("Table in state modified, closing the old table."),e.valuesTable.close()),(o!==l||i!==r)&&this.updateValuesTable(),o!==l&&(l!==null&&this.stopListeningToSource(l),o!==null&&this.startListeningToSource(o))}componentWillUnmount(){const{valuesTable:t}=this.state,e=this.getSourceTable();this.pending.cancel(),e!==null&&this.stopListeningToSource(e),this.cleanup&&this.cleanup(),t!=null&&t.close()}getCoordinateForColumn(){var i;if(this.panelContainer.current==null)return null;const t=this.panelContainer.current.querySelector(`.${qi.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>ei.MAX_TABLE_SIZE)return`Table too large, must have fewer than ${ei.MAX_TABLE_SIZE} options.`}getPanelErrorMessage(){const{error:t}=this.state;return t!=null?`${t}`:void 0}getSource(t=this.props){const{dashboardLinks:e}=t,n=this.getCachedPanelLinks(e,this);return this.getCachedSource(n)}getSourceTable(t=this.props){const{panelTableMap:e}=t,n=this.getSource(t);return this.getCachedSourceTable(e,n)}getValuesColumn(t){const e=this.getSource();return this.getCachedSourceColumn(t,e)}startListeningToSource(t){nt.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){nt.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,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(){nt.debug("handleColumnSelected");const{glEventHub:t}=this.props;t.emit(He.COLUMN_SELECTED,this,ei.SOURCE_COLUMN)}handleClearAllFilters(){var t,e;(e=(t=this.dropdownFilterRef)==null?void 0:t.current)==null||e.clearFilter()}setPanelState(t,e=!1){var n,s;if(this.getSource()==null){nt.debug("Ignore state update for unlinked filter",t);return}this.setState({skipUpdate:!e}),(s=(n=this.dropdownFilterRef)==null?void 0:n.current)==null||s.setFilterState(t)}sendUpdate(t,e,n,s){var l;const{glEventHub:i}=this.props,o=(l=this.getSource())==null?void 0:l.panelId,r=o===null?[]:[o];nt.debug("sendUpdate",{name:t,type:e,value:n,timestamp:s,excludePanelIds:r}),i.emit(He.FILTERS_CHANGED,this,{name:t,type:e,value:n!=null?n:"=null",timestamp:s,excludePanelIds:r})}updateValuesTable(){const t=this.getSource(),e=this.getSourceTable();if(nt.debug("updateValuesTable",t,e),this.setState({values:[],valuesTable:void 0,error:null}),t==null){nt.debug("Filter unlinked."),this.setState({isLoading:!1,isLoaded:!0,isValueShown:!1,sourceSize:0});return}this.setState({isLoading:!0}),e!=null&&(this.setState({isLoaded:!1,sourceSize:e.size}),this.pending.add(e.copy(),n=>n.close()).then(n=>{this.updateViewportListener(n),this.setState({valuesTable:n})}).catch(n=>{Ee.isCanceled(n)||(nt.error(n),this.setState({isLoading:!1,error:n}))}))}applySourceSorts(){const{valuesTable:t}=this.state,e=this.getSourceTable();if(nt.debug("applySourceSorts",e.sort),t==null){nt.debug("Table not initialized");return}const n=[...e.sort];t.applySort(n),this.setViewport(t)}applySourceFilters(){const{valuesTable:t}=this.state,e=this.getSourceTable();if(nt.debug("applySourceFilters",e.filter),t==null){nt.debug("Table not initialized");return}const n=[...e.filter];t.applyFilter(n),this.setViewport(t)}updateViewportListener(t){if(nt.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 e=this.getValuesColumn(t);if(!e){nt.error("values column is null");return}t.setViewport(0,ei.MAX_TABLE_SIZE-1,[e])}updateFormatterSettings(t){const e=hs.getColumnFormats(t);ht(this.columnFormats,e)||(this.columnFormats=e,this.setState({formatter:new un(e)}))}handleValuesTableUpdate({detail:t}){const{rows:e}=t,{valuesTable:n}=this.state;if(!n){nt.error("valuesTable is null");return}const s=this.getValuesColumn(n);if(!s){nt.error("Values column not found");return}const i=e.map(o=>o.get(s));this.setState({values:i,isLoading:!1,isLoaded:!0,valuesColumn:s})}handleSourceMouseEnter(){const{columnSelectionValidator:t}=this.props;!t||t(this,ei.SOURCE_COLUMN)}handleSourceMouseLeave(){const{columnSelectionValidator:t}=this.props;!t||t(this,void 0)}render(){const{columns:t,disableLinking:e,glContainer:n,glEventHub:s,isLinkerActive:i}=this.props,{column:o,formatter:r,isDisconnected:l,isValueShown:a,value:d,values:c,valuesColumn:u,isLoading:m,isLoaded:p}=this.state,g=this.getSource(),f=this.getSettingsErrorMessage(),b=this.getPanelErrorMessage(),C=p&&u!=null?this.getCachedValues(c,u,r):[];return h(Pl,{errorMessage:b,isLoading:m,isLoaded:p,isDisconnected:l,className:"iris-dropdown-filter-panel",componentPanel:this,glContainer:n,glEventHub:s,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(qi,{ref:this.dropdownFilterRef,column:o,columns:t,isValueShown:a,isLinkerActive:i,disableLinking:e,isLoaded:p,settingsError:f,source:g,value:d,values:C,onChange:this.handleChange,onColumnSelected:this.handleColumnSelected,onSourceMouseEnter:this.handleSourceMouseEnter,onSourceMouseLeave:this.handleSourceMouseLeave})})})}};let oo=ei;oo.displayName="DropdownFilterPanel";oo.COMPONENT="DropdownFilterPanel";oo.MAX_TABLE_SIZE=256;oo.DATETIME_FORMATTER=new dt({showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"});oo.SOURCE_COLUMN=Object.freeze({name:"FilterSource",type:null});const DE=(t,e)=>{const{localDashboardId:n}=e,s=te.getIdFromPanel({props:e}),i=jd(t,n),o=io(t,n),r=Rl(t),l=Qd(t,n),a=r===hn.LINKER&&(l===void 0||l===s),d=r===hn.LINKER&&l!==void 0&&l!==s;return{columns:Ip(t,n),columnSelectionValidator:Zd(t,n),isLinkerActive:a,disableLinking:d,settings:Nt(t),panelTableMap:i,dashboardLinks:o}},di=Mt(DE,null,null,{forwardRef:!0})(oo);function Kn(t){return t.type==="directory"}var Np=(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))(Np||{});class ce{static fileExtensionToString(e=""){return e.length===0?"":`.${e}`}static getDepth(e){var s;if(!ce.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(!ce.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(!ce.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=ce.fileExtensionToString(n);return`${i}${o}`}static validateName(e){var o;const n=[".",".."],s=/[\\/\0]/g,i=new Map([["\0","null"]]);if(!e)throw new Pi("Name cannot be empty");if(n.includes(e))throw new Pi(`"${e}" is a reserved name`);if(s.test(e))throw new Pi(`Invalid characters in name: "${((o=e.match(s))!=null?o:[]).reduce((r,l)=>r.includes(l)?r:[...r,l],[]).map(r=>i.has(r)?i.get(r):r).join('", "')}"`)}static reducePaths(e){const n=e.filter(s=>ce.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 Ot=X.module("FileList"),$a=t=>Kn(t)?ce.makePath(t.filename):ce.getPath(t.filename),nc=26,ME=500,_h="item-list-scroll-pane",Wa=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(D=>D.id===r.id))!=null?I:!1,g=$a(r),f=s&&a?$a(a):null,b=s&&i&&Kn(r)&&f===g,C=s&&i&&f===g,w=s&&!i&&f===g,T=NE(r),y=ce.getDepth(r.filename),E=Array(y).fill(null).map((D,F)=>h("span",{className:"file-list-depth-line"},F));return v("div",{className:W("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":w,"is-selected":o}),onDragStart:D=>d(l,D),onDragOver:D=>c(l,D),onDragEnd:D=>u(l,D),onDrop:D=>m(l,D),draggable:!0,role:"presentation","aria-label":r.basename,children:[E," ",h(j,{icon:T,className:"item-icon",fixedWidth:!0})," ",v("span",{className:"truncation-wrapper",children:[e!=null?e:r.basename,h(Be,{options:{modifiers:{preventOverflow:{boundariesElement:"window"}},placement:"left"},children:e!=null?e:r.basename})]})]})};function NE(t){if(Kn(t))return t.isExpanded?Ef:yf;switch(ce.getMimeType(t.basename)){case Np.PYTHON:return sC;default:return wf}}function kh(t,e){if(t.length===0||e==null)throw new Error("No items to move");const n=$a(e);if(t.some(({filename:s})=>ce.getPath(s)===n))throw new Error("File already in the destination folder");if(t.some(s=>Kn(s)&&n.startsWith(ce.makePath(s.filename))))throw new Error("Destination folder cannot be a child of a dragged folder");return{files:t,targetPath:n}}const FE=t=>{const{isMultiSelect:e=!1,table:n,onFocusChange:s=()=>{},onMove:i,onSelect:o,onSelectionChange:r=()=>{},renderItem:l=Wa,rowHeight:a=nc,overscanCount:d=bn.DEFAULT_OVERSCAN}=t,[c,u]=S.exports.useState(()=>({items:[],offset:0,itemCount:0})),[m,p]=S.exports.useState({top:0,bottom:0}),[g,f]=S.exports.useState(),[b,C]=S.exports.useState(),[w,T]=S.exports.useState(),[y,E]=S.exports.useState([]),I=S.exports.useRef(null),D=S.exports.useRef(null),F=S.exports.useCallback(ee=>{if(ee.length===0||c==null)return[];const ge=[];for(let Se=0;Se<ee.length;Se+=1){const Re=ee[Se];for(let qe=Re[0];qe<=Re[1];qe+=1)qe>=c.offset&&qe<c.offset+c.items.length&&ge.push(c.items[qe-c.offset])}return ge},[c]),x=S.exports.useCallback(ee=>{const ge=F([[ee,ee]]);if(ge.length>0)return ge[0]},[F]),U=S.exports.useCallback(()=>{const ee=fn.count(y);if(ee===0)return null;if(ee===1){const ge=y[0][0],Se=x(ge);if(Se!=null)return Se.filename}return`${ee} items`},[x,y]),$=S.exports.useCallback(ee=>{var ge;if(!(!b||!g)){Ot.debug("dropItems",b,"to",ee);try{const{files:Se,targetPath:Re}=kh(b,g);i(Se,Re),ee!=null&&(E([[ee,ee]]),(ge=I.current)==null||ge.focusItem(ee))}catch(Se){Ot.error("Unable to complete move",Se)}}},[b,g,i]),O=S.exports.useCallback((ee,ge)=>{const Se=c.items[ee-c.offset];Se!==void 0&&(Ot.debug("handleItemClick",Se),o(Se,ge),Kn(Se)&&(n==null||n.setExpanded(Se.filename,!Se.isExpanded)))},[c,o,n]),H=S.exports.useCallback((ee,ge)=>{var qe;Ot.debug2("handleItemDragStart",ee,y);let Se=y;fn.isSelected(y,ee)||(Se=[[ee,ee]],E(Se)),C(F(Se)),(qe=I.current)==null||qe.resetMouseState();const Re=document.createElement("div");Re.innerHTML=`<div class="dnd-placeholder-content">${U()}</div>`,Re.className="file-list-dnd-placeholder",document.body.appendChild(Re),ge.dataTransfer.setDragImage(Re,0,0),ge.dataTransfer.effectAllowed="move",T(Re)},[U,F,y]),L=S.exports.useCallback((ee,ge)=>{ge.preventDefault(),Ot.debug2("handleItemDragOver",ge),f(x(ee))},[x]),N=S.exports.useCallback((ee,ge)=>{Ot.debug("handleItemDragEnd",ee),w==null||w.remove(),C(void 0),f(void 0),T(void 0)},[w]),k=S.exports.useCallback((ee,ge)=>{$(ee)},[$]),_=S.exports.useCallback(()=>{Ot.debug2("handleItemDragExit"),f(void 0)},[]),V=S.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(_h)&&(ee.preventDefault(),Ot.debug2("handleListDragOver",ee),f({type:"directory",filename:"/",basename:"/",id:"/"}))},[]),G=S.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(_h)&&(Ot.debug("handleListDrop"),$())},[$]),Q=S.exports.useCallback(ee=>{if(Ot.debug2("handleSelectionChange",ee),ee!==y){E(ee);const ge=F(ee);r(ge)}},[F,r,y]),J=S.exports.useCallback(ee=>{if(Ot.debug2("handleFocusChange",ee),ee!=null){const[ge]=F([[ee,ee]]);s(ge)}else s()},[F,s]),ve=S.exports.useCallback((ee,ge)=>{Ot.debug("handleViewportChange",ee,ge),(ee!==m.top||ge!==m.bottom)&&p({top:ee,bottom:ge})},[m]),le=S.exports.useMemo(()=>{if(!b||!g)return!1;try{return kh(b,g),Ot.debug("handleValidateDropTarget true"),!0}catch{return Ot.debug("handleValidateDropTarget false"),!1}},[b,g]),{focusedPath:be}=t;S.exports.useEffect(()=>{be!==void 0&&(be==="/"?n.collapseAll():(n.setExpanded(be,!1),n.setExpanded(be,!0)))},[n,be]),S.exports.useEffect(function(){Ot.debug("updating table viewport",m),n==null||n.setViewport({top:Math.max(0,m.top-d),bottom:m.bottom+d})},[d,n,m]),S.exports.useEffect(function(){const ge=n.onUpdate(Se=>{u({items:Se.items.map(Re=>({...Re,itemName:Re.basename})),offset:Se.offset,itemCount:n.size})});return()=>{ge()}},[n]),S.exports.useEffect(function(){if(g!=null&&Kn(g)&&g.filename!=="/"){const ge=setTimeout(()=>{g.isExpanded||n==null||n.setExpanded(g.filename,!0)},ME);return()=>clearTimeout(ge)}},[g,n]);const ke=S.exports.useCallback(ee=>l({...ee,isDragInProgress:b!=null,dropTargetItem:g,draggedItems:b,isDropTargetValid:le,onDragStart:H,onDragEnd:N,onDragOver:L,onDragExit:_,onDrop:k}),[N,_,L,H,k,b,g,le,l]);return h("div",{ref:D,className:W("file-list",{"is-dragging":b!=null}),onDragOver:V,onDrop:G,children:h(bn,{ref:I,items:c.items,itemCount:c.itemCount,offset:c.offset,onFocusChange:J,onSelect:O,onSelectionChange:Q,onViewportChange:ve,selectedRanges:y,renderItem:ke,rowHeight:a,isMultiSelect:e,isDragSelect:!1,isDeselectOnClick:!1})})};const xE={name:"File Explorer",DELETE:Pe.createAndAdd({id:"FILE_EXPLORER.DELETE",name:"Delete",shortcut:[he.DELETE],macShortcut:[de.CMD,he.BACKSPACE]}),RENAME:Pe.createAndAdd({id:"FILE_EXPLORER.RENAME",name:"Rename",shortcut:[he.ENTER],macShortcut:[he.ENTER]})},Oh={FILE_EXPLORER:xE};const Lh=X.module("FileListItemEditor"),_E=({item:t,onCancel:e,onSubmit:n,validate:s=()=>Promise.resolve()})=>{const i=S.exports.useRef(null),[o,r]=S.exports.useState(t.basename),[l,a]=S.exports.useState(),[d,c]=S.exports.useState(Promise.resolve()),u=S.exports.useCallback(()=>{var C;(C=i.current)==null||C.focus()},[i]),m=S.exports.useCallback(C=>C.stopPropagation(),[]),p=S.exports.useCallback(()=>{d.then(()=>{n(o)}).catch(C=>Lh.info("Unable to validate name",C))},[n,o,d]);S.exports.useEffect(function(){const w=Ee.makeCancelable(s(o));return w.then(()=>a(void 0)).catch(T=>{Ee.isCanceled(T)||a(T)}),c(w),()=>w.cancel()},[s,o]),S.exports.useEffect(function(){u()},[u]);const g=S.exports.useCallback(()=>{Lh.debug2("handleBlur"),p()},[p]),f=S.exports.useCallback(C=>{const{value:w}=C.target;r(w)},[]),b=S.exports.useCallback(C=>{C.stopPropagation();const{key:w}=C;switch(w){case"Enter":{p();break}case"Escape":{e();break}}},[e,p]);return v("div",{className:"file-list-item-editor",children:[h("input",{type:"text",className:W("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}`})]})},Fp=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=nc,validateRename:g=()=>Promise.resolve()}=t,[f,b]=S.exports.useState(),[C,w]=S.exports.useState([]),[T,y]=S.exports.useState(),E=S.exports.useCallback(_=>{w(_),u==null||u(_)},[u]),I=S.exports.useCallback(_=>{y(_)},[]),D=S.exports.useCallback(()=>{T&&(r==null||r(T))},[T,r]),F=S.exports.useCallback(()=>{C.length>0&&(l==null||l(C))},[l,C]),x=S.exports.useCallback(()=>{i==null||i()},[i]),U=S.exports.useCallback(()=>{T&&(o==null||o(ce.getPath(T.filename)))},[T,o]),$=S.exports.useCallback(()=>{T&&b(T)},[T]),O=S.exports.useCallback(()=>{b(void 0)},[]),H=S.exports.useCallback(_=>{f&&(d==null||d(f,_),b(void 0))},[d,f]),L=S.exports.useMemo(()=>{if(f)return[];const _=[];return i&&_.push({title:"New File",description:"Create new file",action:x,group:oe.groups.medium}),o&&_.push({title:"New Folder",description:"Create new folder",action:U,group:oe.groups.medium}),r&&_.push({title:"Copy",description:"Copy",action:D,group:oe.groups.low,disabled:T==null||Kn(T)}),l&&C.length>0&&_.push({title:"Delete",description:"Delete",shortcut:Oh.FILE_EXPLORER.DELETE,action:F,group:oe.groups.low}),d&&_.push({title:"Rename",description:"Rename",shortcut:Oh.FILE_EXPLORER.RENAME,action:$,group:oe.groups.low,disabled:T==null}),_},[D,F,x,U,$,T,r,i,o,l,d,C,f]),N=S.exports.useCallback(_=>f?g(f,_):Promise.reject(new Error("No rename item")),[f,g]),k=S.exports.useCallback(_=>{const{item:V}=_;return f&&f.filename===V.filename?Wa({..._,children:h(_E,{item:V,validate:N,onSubmit:H,onCancel:O})}):Wa(_)},[O,H,f,N]);return v("div",{className:"file-list-container",children:[m!=null&&h(FE,{onMove:a,onSelect:c,onSelectionChange:E,onFocusChange:I,renderItem:k,rowHeight:p,table:m,isMultiSelect:e,focusedPath:n}),s&&h(oe,{actions:L})]})};Fp.displayName="FileListContainer";class Vr extends Pi{constructor(e){super("Name already exists"),this.isExistingFile=!0,this.info=e}}class sc extends Error{constructor(){super("No file exists at the path specified"),this.isFileNotFound=!0}}const zs=X.module("FileExplorer"),ic=t=>{const{storage:e,isMultiSelect:n=!1,focusedPath:s,onDelete:i=()=>{},onRename:o=()=>{},onSelect:r,onSelectionChange:l,rowHeight:a=nc}=t,[d,c]=S.exports.useState([]),[u,m]=S.exports.useState();S.exports.useEffect(function(){let D;async function F(){zs.debug("initTable"),D=Ee.makeCancelable(e.getTable(),x=>x.close());try{m(await D)}catch(x){Ee.isCanceled(x)||zs.error("Unable to initialize table",x)}}return F(),()=>{D.cancel()}},[e]);const p=S.exports.useCallback(I=>{Ee.isCanceled(I)||zs.error(I)},[]),g=S.exports.useCallback(I=>{zs.debug("handleDelete, pending confirmation",I),c(I)},[]),f=S.exports.useCallback(()=>{zs.debug("handleDeleteConfirm",d),d.forEach(I=>e.deleteFile(Kn(I)?ce.makePath(I.filename):I.filename)),i(d),c([])},[d,i,e]),b=S.exports.useCallback(()=>{zs.debug("handleDeleteCancel"),c([])},[]),C=S.exports.useCallback((I,D)=>{ce.reducePaths(I.map(x=>Kn(x)?ce.makePath(x.filename):x.filename)).forEach(x=>{const U=ce.isPath(x)?`${D}${ce.getBaseName(x.substring(0,x.length-1))}/`:`${D}${ce.getBaseName(x)}`;e.moveFile(x,U).then(()=>{o(x,U)}).catch(p)})},[p,o,e]),w=S.exports.useCallback((I,D)=>{let F=I.filename;const x=Kn(I);x&&!F.endsWith("/")&&(F=`${F}/`);let U=`${ce.getParent(F)}${D}`;x&&!U.endsWith("/")&&(U=`${U}/`),zs.debug2("handleRename",F,U),e.moveFile(F,U).catch(p),o(F,U)},[p,o,e]),T=S.exports.useCallback(async(I,D)=>{if(D===I.basename)return;ce.validateName(D);const F=`${ce.getPath(I.filename)}${D}`;try{const x=await e.info(F);throw new Vr(x)}catch(x){if(!(x instanceof sc))throw x}},[e]),y=d.length>0,E=S.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 v("div",{className:"file-explorer",children:[u&&h(Fp,{isMultiSelect:n,focusedPath:s,showContextMenu:!0,onMove:C,onDelete:g,onRename:w,onSelect:r,onSelectionChange:l,rowHeight:a,table:u,validateRename:T}),h(Bi,{isOpen:y,headerText:E,bodyText:"You cannot undo this action.",onCancel:b,onConfirm:f,confirmButtonText:"Delete"})]})};ic.displayName="FileExplorer";const Gs=X.module("NewItemModal"),Ur=class extends S.exports.PureComponent{constructor(t){super(t),this.inputRef=Y.createRef(),this.pending=new fs,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=ce.hasPath(e)?ce.getPath(e):"/";this.state={isSubmitting:!1,path:n,prevExtension:ce.getExtension(e),showExtensionChangeModal:!1,showOverwriteModal:!1,value:ce.getBaseName(e)}}static getValidationMessage(t){return t instanceof Vr&&t.info.type==="directory"?"Error: Cannot overwrite existing directory":`${t}`}static handleError(t){Ee.isCanceled(t)||Gs.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=ce.hasPath(t)?ce.getPath(t):"/";this.setState({path:e,value:ce.getBaseName(t),validationError:void 0,prevExtension:ce.getExtension(t),isSubmitting:!1})}getValidationPromise(t,e,n=!1){return this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableValidatePromise=Ee.makeCancelable(this.validateName(t,e,n)),this.cancelableValidatePromise}async validateName(t,e,n){ce.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 Vr(r)}catch(r){if(!(r instanceof sc))throw r}}return e}updateValidationStatus(t,e){this.getValidationPromise(t,e).then(()=>{this.setState({validationError:void 0})}).catch(this.handleValidationError).catch(Ur.handleError)}handleModalOpened(){this.focusRenameInput()}handleModalSubmit(){this.submitModal()}handleChange(t){const{value:e}=t.target;this.setState({value:e})}handleSelect(t){if(Gs.debug("handleSelect",t),t.type==="directory")this.setState({path:ce.makePath(t.filename)});else{const e=t.basename,n=ce.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 Pi))throw t;Gs.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;Gs.debug("handleOverwriteConfirm",e,n),t(`${e}${n}`)}handleExtensionChangeCancel(){Gs.debug("handleExtensionChangeCancel"),this.setState(({value:t,prevExtension:e})=>{const n=ce.replaceExtension(t,e);return{showExtensionChangeModal:!1,value:n}}),this.submitModal(!0)}handleExtensionChangeConfirm(){Gs.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;Gs.debug("submitModal",e,n);const r=ce.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 Vr&&o!=="directory"&&l.info.type!=="directory"){this.setState({showOverwriteModal:!0});return}throw l}).catch(l=>{throw Ee.isCanceled(l)&&this.setState({isSubmitting:!1}),l}).catch(this.handleValidationError).catch(Ur.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}/`,v(Y.Fragment,{children:[h(z,{kind:"ghost",className:"directory-breadcrumbs",onClick:()=>this.handleBreadcrumbSelect(i),"aria-label":s===0?"Home":void 0,icon:s===0?h(j,{icon:If,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=ce.fileExtensionToString(m),b=ce.fileExtensionToString(p),C=g?"Create":"Save",w=g?"New folder name":"Save file as";return v(pe,{children:[v(Uo,{isOpen:e,toggle:n,onOpened:this.handleModalOpened,className:"modal-dialog-centered new-file-modal theme-bg-dark",children:[h($o,{toggle:n,children:i}),h(Bo,{children:h("form",{children:v("div",{className:"d-flex flex-column new-file-modal-content",children:[v("div",{className:"flex-grow-0 mb-4",children:[h("label",{htmlFor:"file-name-input",children:w}),h("input",{id:"file-name-input",type:"text",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:"false",className:W("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:Ur.getValidationMessage(c)})]}),v("div",{className:"flex-grow-0",children:[h("label",{children:"Directory: /"}),this.renderPathButtons(l)]}),h("div",{className:"flex-grow-1 file-explorer-container",children:h(ic,{onSelect:this.handleSelect,storage:t,focusedPath:l})})]})})}),v(sd,{children:[h(z,{kind:"secondary",onClick:n,children:"Cancel"}),h(z,{kind:"primary",disabled:r,onClick:this.handleModalSubmit,children:C})]})]}),h(Bi,{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(Bi,{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 Ul=Ur;Ul.propTypes={isOpen:R.exports.bool,title:R.exports.string.isRequired,defaultValue:R.exports.string,type:R.exports.oneOf(["file","directory"]).isRequired,onSubmit:R.exports.func,onCancel:R.exports.func,placeholder:R.exports.string,storage:R.exports.shape({}).isRequired,notifyOnExtensionChange:R.exports.bool};Ul.defaultProps={isOpen:!1,defaultValue:"/",notifyOnExtensionChange:!1,placeholder:"",onSubmit:t=>{},onCancel:()=>{}};const kE=({createFile:t,createFolder:e,onSearchChange:n,defaultSearchText:s=""})=>v("div",{className:"file-explorer-toolbar",children:[v("div",{className:"file-explorer-toolbar-buttons",children:[h(z,{kind:"ghost",icon:fu,tooltip:"New notebook",onClick:t,"aria-label":"New notebook"}),h(z,{kind:"ghost",icon:Of,tooltip:"New folder",onClick:e,"aria-label":"New folder"})]}),n&&h("div",{className:"file-explorer-toolbar-search",children:h(Au,{value:s,onChange:n,placeholder:"Search by name"})})]});const Di=X.module("FileExplorerPanel"),OE=(t,e)=>{const n=mm(t),s=pi(t,e.localDashboardId),{session:i,config:o}=s!=null?s:{},r=o==null?void 0:o.type;return{fileStorage:n,language:r,session:i}},LE=Mt(OE,null,null,{forwardRef:!0});function AE(t){const e=t;return e!=null&&typeof e.button=="number"}const za=class extends Y.Component{static handleError(t){Di.error(t)}static isFocusEvent(t){return AE(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:""};Di.debug("handleCreateFile",e,n,s),t.emit(Ve.CREATE_NOTEBOOK,e,n,s)}handleCreateDirectory(t){this.setState({showCreateFolder:!0})}handleCreateDirectoryCancel(){Di.debug("handleCreateDirectoryCancel"),this.setState({showCreateFolder:!1})}handleCreateDirectorySubmit(t){Di.debug("handleCreateDirectorySubmit",t),this.setState({showCreateFolder:!1});const{fileStorage:e}=this.props;e.createDirectory(t).catch(za.handleError)}handleDelete(t){const{glEventHub:e}=this.props;t.forEach(n=>{e.emit(Ve.CLOSE_FILE,{id:n.filename,itemName:n.filename})})}handleSelectionChange(t){let e="/";t.length===1&&(t[0].type==="directory"?e=ce.makePath(t[0].filename):e=ce.getPath(t[0].filename)),this.setState({focusedFilePath:e})}handleFileSelect(t,e){if(Di.debug("fileSelect",t),t.type==="directory")return;const n=za.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(Ve.SELECT_NOTEBOOK,o,r,l,s,n)}handleRename(t,e){const{glEventHub:n}=this.props;Di.debug("handleRename",t,e),n.emit(Ve.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 v(Xn,{className:"file-explorer-panel",componentPanel:this,glContainer:e,glEventHub:n,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[h(kE,{createFile:this.handleCreateFile,createFolder:this.handleCreateDirectory}),s&&h(ic,{isMultiSelect:!0,storage:t,onDelete:this.handleDelete,onRename:this.handleRename,onSelect:this.handleFileSelect,onSelectionChange:this.handleSelectionChange}),h(Ul,{isOpen:i,type:"directory",title:"Create New Folder",storage:t,onSubmit:this.handleCreateDirectorySubmit,onCancel:this.handleCreateDirectoryCancel,defaultValue:o})]})}};let oc=za;oc.COMPONENT="FileExplorerPanel";oc.TITLE="File Explorer";const sl=LE(oc);const lt=X.module("FilterSetManager"),PE="Enter name...",Ah="No Available Filter Sets";class il extends S.exports.Component{constructor(e){super(e),this.renameInputRef=Y.createRef(),this.dropdownRef=Y.createRef(),this.editDropdownRef=Y.createRef(),this.isRenamingExistingSet=me((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;lt.debug("initSettingsScreen",e,n),this.setState({modifiedFilterSets:[...e],editId:n})}updateSelectedId(){const{isValueShown:e,filterSets:n,selectedId:s,onChange:i}=this.props;if(lt.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:[]}),lt.debug("Update sets",s,i),n(s),s.length>0&&e({isValueShown:!0,selectedId:i})}handleCaptureNewSet(){const{getFilterState:e}=this.props;il.animateScreenFlash();const n=ze(),s=e(),i={id:n,title:"",panels:s};lt.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 lt.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 lt.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){lt.error("Renamed set undefined.");return}const o=this.getNameError(e);if(lt.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,lt.debug("Renamed existing set",d)):(d.push(l),lt.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 lt.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 lt.debug("Deleted selected set",n,s,o),lt.debug("New selection",r,l),{modifiedFilterSets:o,editId:l}})}handleSetUpdate(){const{getFilterState:e}=this.props;il.animateScreenFlash();const n=e();this.setState(({modifiedFilterSets:s,editId:i})=>{if(i===void 0)return lt.error("Filter for update not selected."),null;const o=[...s],r=o.findIndex(({id:l})=>l===i);return r<0?(lt.error("Selected set for update not found."),null):(o[r]={...o[r],panels:n},lt.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 lt.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){lt.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){lt.debug("No filter selected");return}const i=s.find(({id:o})=>o===e);if(i===void 0){lt.debug("Selected id not found in filterSets",e,s);return}lt.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=v("div",{className:"fa-layers mr-3",children:[h(j,{icon:Lo,mask:ya,transform:"shrink-1 down-5 right-7"}),h(j,{icon:As,className:"text-primary",transform:"shrink-6 down-5 right-7"})]}),b=v("div",{className:"fa-layers",children:[h(j,{icon:Lo,mask:ya,transform:"shrink-1 down-5 right-7"}),h(j,{icon:Ea,transform:"shrink-1 down-5 right-7"})]});return h("div",{className:"filter-set-manager fill-parent-absolute",children:v(id,{className:"w-100 h-100",isFlipped:l,children:[h("div",{className:"filter-set-manager-settings-card fill-parent-absolute",children:v("div",{className:"filter-set-manager-card-content",children:[p&&v("div",{children:[h(z,{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&&v("div",{className:"d-flex flex-column justify-content-center","data-testid":"edit-filter-set-container",children:[v("div",{className:"form-group",children:[h("label",{children:u?"Edit set":"Name captured set"}),v("div",{className:"name-input-container",children:[h("input",{type:"text",className:"input-set-name form-control",placeholder:PE,value:e,ref:this.renameInputRef,onChange:this.handleNameInputChange,onKeyPress:this.handleNameInputKeyPress,spellCheck:"false"}),h(z,{"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:Cu}),h(z,{"data-testid":"rename-cancel-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameCancel,tooltip:"Cancel",icon:bf})]}),n!==void 0&&h("div",{className:"error-message",children:n})]}),h("div",{className:"form-group",children:v(bl,{onChange:this.handleRestoreFullStateChange,value:`${r}`,children:[h(Nn,{value:"false",children:"Restore only filters"}),h(Nn,{value:"true",children:"Restore full table state"})]})})]}),g&&v("div",{className:"filter-set-manager-settings-grid-1",children:[v("div",{className:"form-group",children:[h("label",{children:"Edit filter sets"}),v("div",{className:"filter-select-container",children:[v("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:Ah}),o.map(({id:C,title:w})=>h("option",{value:C,children:w},C))]}),h(z,{kind:"ghost",onClick:this.handleSetUpdate,disabled:m,icon:b,tooltip:"Update"}),h(z,{kind:"ghost",onClick:this.handleSetEdit,disabled:m,icon:hl,tooltip:"Edit"}),h(z,{kind:"ghost",onClick:this.handleSetDelete,disabled:m,icon:_n,tooltip:"Delete"})]})]}),h("div",{children:h(z,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture new filter set"})}),v("div",{className:"py-3 text-right",children:[h(z,{kind:"secondary",onClick:this.handleSettingsCancel,children:"Cancel"}),"\xA0",h(z,{kind:"primary",onClick:this.handleSettingsSave,children:"Save"})]})]})]})},"front"),h("div",{className:"filter-set-manager-value-card fill-parent-absolute",onClick:this.handleBackgroundClick,children:v(pe,{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:v("div",{className:"filter-select-container",children:[v("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:Ah}),a.map(({id:C,title:w})=>h("option",{value:C,children:w},C))]}),h(z,{"data-testid":"filter-apply-button",kind:"ghost",onClick:this.handleFilterApply,icon:cd,tooltip:"Apply Filter Set"})]})})}),h("div",{className:"filter-set-manager-menu",children:h(z,{kind:"ghost",className:"btn btn-link btn-link-icon m-2 px-2",onClick:this.handleSettingsClick,tooltip:"Settings",icon:h(j,{icon:Wo,transform:"grow-4"})})})]})},"back")]})})}}const rc=t=>{var r;const{model:e,widgetName:n,glContainer:s,description:i}=t,o=e==null?void 0:e.displayString((r=e==null?void 0:e.rowCount)!=null?r:0,"long");return h(Al,{widgetType:"Table",widgetName:n,glContainer:s,description:i,children:v("div",{className:"column-statistics-grid",children:[h("span",{className:"column-statistic-operation",children:"Number of Rows"}),h("span",{className:"column-statistic-value",children:o})]})})};rc.propTypes={glContainer:kd.Container.isRequired,widgetName:R.exports.string.isRequired,description:R.exports.string};rc.defaultProps={description:null};const Vn=X.module("IrisGridPanel"),HE=500,VE={IrisGrid:so,IrisGridTableModel:Sp,ContextMenuRoot:Ru};class Yi extends S.exports.PureComponent{constructor(e){super(e),this.getGridInputFilters=me((s,i)=>se.getInputFiltersForColumns(s,i.filter(({value:o,excludePanelIds:r})=>{const l=te.getIdFromPanel(this);return o!=null&&(r==null||l!=null&&!r.includes(l))}))),this.getAlwaysFetchColumns=me((s,i)=>{const o=te.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=me((s,i,o,r,l)=>!i||!ri(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:VE,onStateChange:this.handlePluginStateChange,pluginState:l})})),this.getDehydratedIrisGridPanelState=me((s,i,o,r,l)=>se.dehydrateIrisGridPanelState(s,{isSelectingPartition:i,partition:o,partitionColumn:r,advancedSettings:l})),this.getDehydratedIrisGridState=me((s,i,o,r,l,a,d,c,u,m,p,g,f,b,C,w,T,y,E,I)=>se.dehydrateIrisGridState(s,{advancedFilters:o,aggregationSettings:T,customColumnFormatMap:r,isFilterBarShown:l,metrics:{userColumnWidths:C,userRowHeights:w},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})),this.getDehydratedGridState=me((s,i,o,r,l)=>se.dehydrateGridState(s,{isStuckToBottom:r,isStuckToRight:l,movedColumns:i,movedRows:o})),this.getCachedPanelState=me((s,i,o,r)=>({irisGridPanelState:s,irisGridState:i,gridState:o,pluginState:r})),this.savePanelState=je(()=>{const{irisGridState:s,gridState:i,pluginState:o}=this;A(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:w,reverseType:T,rollupConfig:y,showSearchBar:E,searchValue:I,selectDistinctColumns:D,selectedSearchColumns:F,sorts:x,invertSearchColumns:U,metrics:$,pendingDataMap:O,frozenColumns:H,conditionalFormats:L}=s;A(l),A($);const{userColumnWidths:N,userRowHeights:k}=$;A(i);const{isStuckToBottom:_,isStuckToRight:V,movedColumns:G,movedRows:Q}=i,J=this.getCachedPanelState(this.getDehydratedIrisGridPanelState(l,d,c,u,m),this.getDehydratedIrisGridState(l,x,p,f,b,C,w,T,y,E,I,D,F,U,N,k,g,O,H,L),this.getDehydratedGridState(l,G,Q,_,V),o);J!==a&&(Vn.debug("Saving panel state",this,J),this.setState({panelState:J}),r==null||r(J))},HE),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(Ym.DEFAULTS),customColumns:[],customColumnFormatMap:new Map,isFilterBarShown:!1,quickFilters:new Map,sorts:[],userColumnWidths:new Map,userRowHeights:new Map,reverseType:P.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=Ee.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=se.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;A(n);const{columns:s,formatter:i}=n,o=se.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(vt.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):(A(s),this.initModelQueue(s,i))}handleTableChanged(e){Vn.debug("handleTableChanged",e);const{glEventHub:n}=this.props,{detail:s}=e;n.emit(He.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(Ct.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=te.getIdFromPanel(this);let d;l&&(d=se.extractTableSettings(l,i)),s.emit(vt.CREATE_CHART,{metadata:{settings:e,sourcePanelId:a,table:r,tableSettings:d},table:ri(n)?n.table:void 0})})}handleColumnSelected(e){const{glEventHub:n}=this.props;n.emit(vt.COLUMN_SELECTED,this,e)}handleDataSelected(e,n){const{glEventHub:s}=this.props;s.emit(vt.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){Ee.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}),ri(e)){const{table:i}=e,{pluginName:o}=i;if(o!==""&&s!=null&&o!=null){const r=s(o);this.setState({Plugin:r})}n.emit(He.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(He.COLUMNS_CHANGED,this,e)}startModelListening(e){e.addEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.addEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.addEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}stopModelListening(e){e.removeEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.removeEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.removeEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}getCoordinateForColumn(e){var w,T,y;const{model:n}=this.state;if(!n)return null;const s=this.irisGrid.current,{gridWrapper:i}=s||{},o=(w=i==null?void 0:i.getBoundingClientRect())!=null?w:null;if(o==null||o.width<=0||o.height<=0)return null;A(s);const{metrics:r}=s.state;A(r);const{columnHeaderHeight:l,visibleColumnXs:a,visibleColumnWidths:d,right:c,columnHeaderMaxDepth:u}=r,m=n.getColumnIndexByName(e);A(m);const p=s.getVisibleColumn(m),g=(T=a.get(p))!=null?T: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}A(s);const{columns:r,formatter:l}=s,a=se.changeFilterColumnNamesToIndexes(s.columns,e).filter(([c])=>s.isFilterable(c)),d=se.changeFilterColumnNamesToIndexes(s.columns,n).filter(([c])=>s.isFilterable(c));o.clearAllFilters(),o.setFilters({quickFilters:se.hydrateQuickFilters(r,a,l.timeZone),advancedFilters:se.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=se.changeFilterColumnNamesToIndexes(e.columns,d)),c&&(a.advancedFilters=se.changeFilterColumnNamesToIndexes(e.columns,c));const{isSelectingPartition:u,partition:m,partitionColumn:p,advancedSettings:g}=se.hydrateIrisGridPanelState(e,l),{advancedFilters:f,customColumns:b,customColumnFormatMap:C,isFilterBarShown:w,quickFilters:T,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:D,userColumnWidths:F,userRowHeights:x,showSearchBar:U,searchValue:$,selectDistinctColumns:O,selectedSearchColumns:H,invertSearchColumns:L,pendingDataMap:N,frozenColumns:k,conditionalFormats:_}=se.hydrateIrisGridState(e,{...r,...a}),{isStuckToBottom:V,isStuckToRight:G,movedColumns:Q,movedRows:J}=se.hydrateGridState(e,{...o,...i},r.customColumns);this.setState({advancedFilters:f,advancedSettings:g,conditionalFormats:_,customColumns:b,customColumnFormatMap:C,isFilterBarShown:w,isSelectingPartition:u,movedColumns:Q,movedRows:J,partition:m,partitionColumn:p,quickFilters:T,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:D,userColumnWidths:F,userRowHeights:x,showSearchBar:U,searchValue:$,selectDistinctColumns:O,selectedSearchColumns:H,invertSearchColumns:L,pendingDataMap:N,frozenColumns:k,isStuckToBottom:V,isStuckToRight:G})}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 On,$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:w,customColumnFormatMap:T,error:y,isDisconnected:E,isFilterBarShown:I,isSelectingPartition:D,isStuckToBottom:F,isStuckToRight:x,isLoaded:U,isLoading:$,isModelReady:O,model:H,movedColumns:L,movedRows:N,partition:k,partitionColumn:_,quickFilters:V,reverseType:G,rollupConfig:Q,sorts:J,userColumnWidths:ve,userRowHeights:le,showSearchBar:be,searchValue:ke,selectDistinctColumns:ee,selectedSearchColumns:ge,invertSearchColumns:Se,Plugin:Re,pluginFilters:qe,pluginFetchColumns:Oe,pendingDataMap:jn,frozenColumns:wn}=this.state,bt=y!=null?`Unable to open table. ${y}`:void 0,{table:Ie}=a,ot=(On=H==null?void 0:H.description)!=null?On:void 0,rt=($t=d==null?void 0:d.pluginState)!=null?$t:null,Ft=e!=null?e:this.getPluginContent(Re,H,c,u,rt),{permissions:Qt}=c,{canCopy:Zt,canDownloadCsv:xt}=Qt;return v(Pl,{errorMessage:bt,isDisconnected:E,isLoading:$,isLoaded:U,className:"iris-grid-panel",glContainer:n,glEventHub:s,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleShow,onTabClicked:this.handleTabClicked,widgetName:Ie,widgetType:"Table",description:ot,componentPanel:this,renderTabTooltip:()=>h(rc,{model:H,widgetName:Ie,glContainer:n,description:ot}),children:[O&&H&&h(so,{advancedFilters:g,aggregationSettings:f,advancedSettings:b,alwaysFetchColumns:this.getAlwaysFetchColumns(l,Oe),columnAllowedCursor:"linker",columnNotAllowedCursor:"not-allowed",customColumns:w,customColumnFormatMap:T,columnSelectionValidator:this.isColumnSelectionValid,conditionalFormats:C,inputFilters:this.getGridInputFilters(H.columns,r),applyInputFiltersOnInit:d==null,isFilterBarShown:I,isSelectingColumn:i!=null,isSelectingPartition:D,isStuckToBottom:F,isStuckToRight:x,movedColumns:L,movedRows:N,partition:k,partitionColumn:_,quickFilters:V,reverseType:G,rollupConfig:Q,settings:m,sorts:J,userColumnWidths:ve,userRowHeights:le,model:H,showSearchBar:be,searchValue:ke,selectedSearchColumns:ge,selectDistinctColumns:ee,invertSearchColumns:Se,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:jn,canCopy:Zt,canDownloadCsv:xt,ref:this.irisGrid,getDownloadWorker:o,frozenColumns:wn,theme:p,children:Ft}),!O&&h(pe,{})]})}}Yi.defaultProps={onStateChange:()=>{},onPanelStateUpdate:()=>{}};Yi.displayName="IrisGridPanel";Yi.COMPONENT="IrisGridPanel";const UE=(t,{localDashboardId:e=Dn})=>({inputFilters:Xd(t,e),links:io(t,e),columnSelectionValidator:Zd(t,e),user:hm(t),workspace:yl(t),settings:Nt(t)}),ci=Mt(UE,null,null,{forwardRef:!0})(Yi);const Ph=X.module("InputFilter"),BE=150,Ga=class extends S.exports.Component{constructor(t){super(t),this.getItemLabel=Te((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})},BE),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)];Ph.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;Ph.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?Ga.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 v(id,{className:"input-filter fill-parent-absolute",isFlipped:n!=null?n:!1,children:[h("div",{className:"input-filter-settings-card",children:v("div",{className:"input-filter-settings-content",children:[v("div",{className:"input-filter-settings-grid",children:[h("label",{children:"Filter Column"}),v("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."})]}),v("div",{className:"input-filter-settings-buttons",children:[h(z,{kind:"secondary",onClick:this.handleSettingsCancel,disabled:e==null,children:"Cancel"}),h(z,{kind:"primary",className:"ml-2",onClick:this.handleSettingsSave,disabled:s==null,children:"Save"})]})]})}),v("div",{className:"input-filter-value-card",onClick:this.handleBackgroundClick,children:[h("div",{className:"input-filter-column",children:v("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:Ga.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(z,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(j,{icon:Wo,transform:"grow-4"}),tooltip:"Input Filter Settings"})})]})]})}};let lc=Ga;lc.PLACEHOLDER="Enter value...";lc.defaultProps={column:null,isValueShown:!1,value:null};const $E=250;class Bl extends S.exports.Component{constructor(e){super(e),this.handleChange=je(this.handleChange.bind(this),$E),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,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(He.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(Xn,{className:"iris-input-filter-panel",componentPanel:this,glContainer:e,glEventHub:n,onClearAllFilters:this.handleClearAllFilters,isClonable:!0,isRenamable:!0,children:h(lc,{ref:this.inputFilterRef,column:s,columns:i,onChange:this.handleChange,isValueShown:o,value:r})})}}Bl.defaultProps={panelState:null};Bl.COMPONENT="InputFilterPanel";Bl.displayName="InputFilterPanel";const WE=(t,e)=>{const{localDashboardId:n}=e;return{columns:Ip(t,n)}},xo=Mt(WE,null,null,{forwardRef:!0})(Bl);const Rt=X.module("FilterSetManagerPanel");function zE(t){return t.setPanelState!=null}const Ka=class extends S.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){Rt.error("Could not get panel",s);return}const i=te.getComponentNameFromPanel(s),o=te.getIdFromPanel(s);Rt.debug("Panel:",s,i);const{glContainer:r=null}=s.props;if(r==null){Rt.error("Could not get panel container",s);return}const l=te.getComponentConfigFromContainer(r);if(l==null){Rt.error("Could not get component config from container",r);return}const a=te.getPanelComponentState(l);if(a==null){Rt.debug(`Panel state is null ${o}`);return}switch(i){case te.getComponentName(Yi):{let d;o!=null&&(d=this.getIrisGridPanelFilters(o,a)),d!=null&&e.push({panelId:o,type:i,state:d});break}case te.getComponentName(xo):case te.getComponentName(di):{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 Rt.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=Ka.changeFilterIndexesToColumnNames(s,r));let d;return l&&(d=Ka.changeFilterIndexesToColumnNames(s,l)),{irisGridState:{...i,advancedFilters:a,quickFilters:d},gridState:{...o}}}handleGetFilterState(){return this.getFilterState()}handleChange({isValueShown:t,selectedId:e}){Rt.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;Rt.debug("Apply filters from filter set",t),n.forEach(({panelId:i,type:o,state:r})=>{if(i==null){Rt.debug("panel is null",i);return}if(!e.has(i)){Rt.debug("Ignore closed panel",i);return}Rt.debug("Apply panel filters",i,o,r);const l=e.get(i);switch(o){case te.getComponentName(Yi):this.restoreIrisGridFilters(l,r,s);break;case te.getComponentName(xo):case te.getComponentName(di):this.restoreInputFilterState(l,r);break}})}handleSetsUpdate(t){const{setDashboardFilterSets:e,localDashboardId:n}=this.props;Rt.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=te.getIdFromPanel(t);if(d==null){Rt.error("Panel Id is null.");return}if(a.get(d)==null){Rt.error(`Unable to get table for panel ${d}.`);return}Rt.debug("restoreIrisGridFilters",d,e,n),n?t.setStateOverrides(e):t.setFilters({quickFilters:l,advancedFilters:r})}restoreInputFilterState(t,e){const n={...e};delete n.isValueShown,Rt.debug("restoreInputFilterState",t,n),t&&zE(t)&&t.setPanelState(n)}render(){const{glContainer:t,glEventHub:e,filterSets:n}=this.props,{isValueShown:s,selectedId:i}=this.state;return h(Xn,{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(il,{onChange:this.handleChange,onApply:this.handleFilterApply,onUpdateSets:this.handleSetsUpdate,isValueShown:s,filterSets:n,selectedId:i,getFilterState:this.handleGetFilterState})})})}};let ac=Ka;ac.defaultProps={panelState:null};ac.COMPONENT="FilterSetManagerPanel";const GE=(t,e)=>{const{localDashboardId:n}=e;return{filterSets:aE(t,n),dashboardOpenedPanelMap:Gm(t,n),dashboardInputFilters:Xd(t,n),panelTableMap:jd(t,n)}},Ca=Mt(GE,{setDashboardFilterSets:fE},null,{forwardRef:!0})(ac);const Hh=X.module("LogPanel");class $l extends S.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){Hh.debug("Session opened",[e]),this.setState({session:e})}handleSessionClosed(e){Hh.debug("Session closed",e)}updateDimensions(){this.logView&&this.logView.updateDimensions()}render(){const{glContainer:e,glEventHub:n}=this.props,{session:s}=this.state;return v(Xn,{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(Zi,{session:s,ref:i=>{this.logView=i}})]})}}$l.defaultProps={session:null};$l.COMPONENT="LogPanel";$l.TITLE="Log";const KE=(t,e)=>{var n;return{session:(n=pi(t,e.localDashboardId))==null?void 0:n.session}},ol=Mt(KE,null,null,{forwardRef:!0})($l);class xp extends S.exports.PureComponent{render(){const{isEditing:e,children:n,onDoubleClick:s}=this.props;return v("div",{className:"markdown-editor-container h-100 w-100",onDoubleClick:s,children:[h("div",{className:W("text-muted","edit-hint",{viewing:e===void 0||!e}),children:v("span",{children:["double-click to edit ",h(j,{icon:hl})]})}),n]})}}xp.defaultProps={isEditing:!1};const qE=X.module("MarkdownStartPage");class _p extends S.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(qE.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:v("div",{className:"markdown-panel-start-page-container",children:[v("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Start"}),h("div",{className:"list-item",children:h(z,{kind:"ghost",className:"title",onClick:s,children:"New Markdown Note"})})]}),v("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Recently Closed from Dashboard"}),e.map(r=>v("div",{className:"list-item",children:[h(z,{kind:"ghost",className:"title",onClick:()=>n(r),children:r.title}),h("button",{className:"btn-link icon",type:"button",onClick:()=>{this.handleDeleteButtonClick(r)},children:h(j,{icon:_n})})]},r.id)),v(Uo,{isOpen:i,toggle:this.handleDeleteModalClose,className:"modal-dialog-centered markdown-delete-modal theme-bg-light",children:[h($o,{children:"Are you sure you want to permanently delete this note?"}),h(Bo,{children:"You can't undo this action."}),v(sd,{children:[h(z,{kind:"secondary",onClick:this.handleDeleteModalClose,children:"Cancel"}),h(z,{kind:"danger",onClick:()=>{this.handleDeleteMarkdown(o)},children:"Delete"})]})]})]})]})})}}_p.defaultProps={closedMarkdowns:[],onOpen:()=>{},onCreate:()=>{},onDelete:()=>{}};class kp extends S.exports.PureComponent{constructor(e){super(e),this.renderMarkdown=n=>{const{children:s,className:i}=n,o=i!==void 0&&(i==null?void 0:i.startsWith("language-"))?i.substring(9):"plaintext";return h("pre",{children:h("code",{children:h(vl,{language:o,children:Y.Children.map(s,r=>typeof r=="string"?r.trim():r)})})})},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(Tl,{settings:{language:"markdown",value:n,lineNumbers:"off"},onEditorInitialized:s}):h(iu,{components:{code:this.renderMarkdown},children:n})})}}kp.defaultProps={isEditing:!1,content:""};const Nr=X.module("MarkdownPanel");class dc extends S.exports.Component{constructor(e){super(e),this.getClosedMarkdowns=me(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;A(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){Nr.debug("Markdown Editor Initialized..."),this.editor=e}handleCreateMarkdown(){Nr.debug("create markdown..."),this.setState({isStartPageShown:!1,content:"",isEditing:!0,panelState:{content:""}},()=>{this.editor!=null&&this.editor.focus!=null&&this.editor.focus()})}handleOpenMarkdown(e){Nr.debug("open markdown...",e);const{glContainer:n,glEventHub:s}=this.props,i=te.getComponentConfigFromContainer(n);s.emit(Me.REOPEN,e,i)}handleDeleteMarkdown(e){const{glEventHub:n}=this.props;n.emit(Me.DELETE,e)}handleEditorBlur(e){var i;Nr.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(Xn,{glContainer:e,glEventHub:n,className:"markdown-panel",componentPanel:this,onResize:this.handleEditorResize,onBlur:this.handleEditorBlur,isClonable:!0,isRenamable:!0,children:o?h(_p,{closedMarkdowns:l,onCreate:this.handleCreateMarkdown,onOpen:this.handleOpenMarkdown,onDelete:this.handleDeleteMarkdown}):h(xp,{isEditing:i,onDoubleClick:this.handleContainerDoubleClick,children:h(kp,{ref:a=>{this.markdownEditor=a},isEditing:i,content:r!=null?r:void 0,onEditorInitialized:this.handleEditorInitialized})})})}}dc.defaultProps={panelState:null};dc.COMPONENT="MarkdownPanel";const YE=(t,e)=>{const{localDashboardId:n}=e;return{closedPanels:C0(t,n)}},bo=Mt(YE,null,null,{forwardRef:!0})(dc);class Op extends S.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;A(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),v("div",{className:W("markdown-notebook-code-block",{"is-selected":f}),ref:p,onClick:()=>{this.setState({nextStartLine:u})},role:"presentation",children:[h(z,{kind:"ghost",icon:Gr,className:"btn-play-block",onClick:C=>{C.stopPropagation(),C.preventDefault(),this.runCode(m),this.setState({nextStartLine:u})},tooltip:"Run code"}),h("code",{children:h(vl,{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 v("div",{className:"markdown-notebook",children:[h("div",{className:"markdown-notebook-toolbar",children:h(z,{className:W("btn-play-selected-cell",{flashing:i&&!o}),kind:"ghost",icon:Gr,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(iu,{components:{code:this.renderCodeBlock,a:this.renderLink},linkTarget:"_blank",remarkPlugins:[hg],transformLinkUri:s,transformImageUri:n,includeElementIndex:!0,children:e})})]})}}Op.defaultProps={onRunCode:()=>{}};const $e=X.module("NotebookPanel"),Vh=400,xi=class extends S.exports.Component{constructor(t){super(t),this.getSettings=me((u,m)=>({...u,minimap:{enabled:m}})),this.getOverflowActions=me((u,m)=>[{title:"Find",icon:Yf,action:this.handleFind,group:oe.groups.high,shortcut:Vt.NOTEBOOK.FIND,order:10},{title:"Show Minimap",icon:u?ds:void 0,action:this.handleMinimapChange,group:oe.groups.medium,shortcut:Vt.NOTEBOOK.MINIMAP,order:20},{title:"Word Wrap",icon:m?ds: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 fs,this.debouncedSavePanelState=je(this.savePanelState.bind(this),Vh),this.debouncedLoad=je(this.load.bind(this),Vh),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&&ce.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:""},$e.debug("constructor",t,this.state)}static handleError(t){Ee.isCanceled(t)||$e.error(t)}static languageFromFileName(t){switch(ce.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(Ve.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(Ve.RENAME_FILE,this.handleRenameFile),t.off("tabClicked",this.handlePanelTabClick),e.emit(Ve.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);A(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){$e.debug("Init content from file"),this.registerFileMetadata(t,n),this.load();return}if(e.value!=null){$e.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(Ve.CLOSE_FILE,{id:t})}registerFileMetadata(t,e){const{glEventHub:n,metadata:s}=this.props,{id:i}=s;n.emit(Ve.REGISTER_FILE,i,t,e)}renameTab(t,e){const{glEventHub:n}=this.props;n.emit(Ve.RENAME,t,e)}load(){const{fileMetadata:t,settings:e}=this.state;A(t);const{id:n}=t,{fileStorage:s}=this.props;this.pending.add(s.loadFile(n)).then(i=>{var a;$e.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,ce.getBaseName(o))}const l={...e,language:(a=xi.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&&ce.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){$e.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;$e.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 $e.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;A(t);const n=this.getNotebookValue(),{language:s}=e,{itemName:i}=t,o=ce.getCopyFileName(i);$e.debug("handleCopy",t,i,o),this.createNotebook(o,s,n)}handleEditorInitialized(t){this.editor=t}handleEditorWillDestroy(){this.editor=void 0}handleEditorChange(t){$e.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(){$e.debug("handleBlur"),this.setState({isFocused:!1})}handleFocus(){$e.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==="/"){$e.debug("Ignoring invalid notebook link",o);return}$e.debug("Notebook link clicked, opening",o);const{glEventHub:r}=this.props,l={value:null,language:s},a={id:o,itemName:o};r.emit(Ve.SELECT_NOTEBOOK,n,s,l,a)}handleLoadSuccess(){this.setState({error:void 0,isLoaded:!0,isLoading:!1})}handleLoadError(t){let e=t;Ee.isCanceled(e)||(Ee.isTimedOut(e)&&(e=new Error("File not found.")),$e.error(e),this.setState({error:e,isLoading:!1}))}handleSave(){$e.debug("handleSave"),this.save()}handleSaveSuccess(t){var i;const{fileStorage:e}=this.props,n={id:t.filename,itemName:t.filename},s=(i=xi.languageFromFileName(t.filename))!=null?i:"";this.setState(o=>{const{fileMetadata:r}=o,l={...o.settings,language:s};return $e.debug("handleSaveSuccess",n,r,l),r&&ce.hasPath(r.itemName)&&r.itemName!==n.itemName&&($e.debug("handleSaveSuccess deleting old file",r.itemName),e.deleteFile(r.itemName).catch(xi.handleError)),{fileMetadata:n,settings:l,isPreview:!1}}),this.debouncedSavePanelState(),this.registerFileMetadata(n,!1)}handleSaveError(t){Ee.isCanceled(t)||(this.setState({savedChangeCount:0}),$e.error(t))}handleSaveAsCancel(){this.setState({showSaveAsModal:!1})}handleSaveAsSubmit(t){var i;$e.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}),ce.getBaseName(n)!==ce.getBaseName(t)){const{metadata:o}=this.props,{id:r}=o;this.renameTab(r,ce.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){$e.error("Editor is not initialized.");return}this.runCommand((t=this.notebook.getValue())!=null?t:void 0)}handleRunSelected(){if(!this.notebook){$e.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;$e.debug("handleShow"),(t=this.notebook)==null||t.updateDimensions()}handleShowRename(){this.setState({showSaveAsModal:!0})}handleTab(t){$e.debug("NotebookPanel tab event",t),this.initTab(t)}handleTabFocus(...t){$e.debug("handleTabFocus",...t);const{glContainer:e}=this.props;this.setState({isDashboardActive:!0}),this.notebook&&!e.isHidden&&this.notebook.updateDimensions()}handleTabBlur(){$e.debug("handleTabBlur"),this.setState({isDashboardActive:!1})}handlePanelTabClick(){$e.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};$e.debug("handleCreateNotebook",i,o,l,a),s.emit(Ve.CREATE_NOTEBOOK,i,o,l,a)}runCommand(t){if(t===void 0){$e.debug("Ignoring empty command.");return}this.removePreviewStatus();const{glEventHub:e}=this.props;e.emit(Ct.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,w=a&&!e.isHidden&&!u,T=(k=m==null?void 0:m.itemName)!=null?k:xi.DEFAULT_NAME,y=T.endsWith(".md"),E=(m==null?void 0:m.id)!=null,I=this.getSettings(f,i.isMinimapEnabled),D=p!=null,F=g===I.language,x=!d||!D||!F,U=!d,$=[{action:this.handleSave,shortcut:ms.SAVE},{action:this.handleMinimapChange,shortcut:Vt.NOTEBOOK.MINIMAP},{action:this.handleWordWrapChange,shortcut:Vt.NOTEBOOK.WORDWRAP}],O=th.getDisabledRunTooltip(D,F,"Notebook extension","Run"),H=th.getDisabledRunTooltip(D,F,"Notebook extension","Run Selected"),L=[{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}],N=n==null?void 0:n.element.find(".lm_title_before").get(0);return v(pe,{children:[N&&hi.createPortal(h("span",{className:W("editor-unsaved-indicator",{"is-unsaved":o!==r})}),N),v(Xn,{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:L,renderTabTooltip:()=>T,children:[!y&&v(pe,{children:[v("div",{className:"notebook-toolbar",children:[v("span",{children:[h(z,{kind:"ghost",className:"btn-play",onClick:this.handleRunAll,disabled:x,icon:h(j,{icon:Gr,transform:"grow-4"}),tooltip:`Run ${Vt.NOTEBOOK.RUN.getDisplayText()}`,"aria-label":"Run"}),O!=null&&h(Be,{children:O})]}),v("span",{children:[h(z,{kind:"ghost",className:"btn-play",onClick:this.handleRunSelected,disabled:x,icon:h(j,{icon:oC,transform:"grow-4"}),tooltip:`Run Selected ${Vt.NOTEBOOK.RUN_SELECTED.getDisplayText()}`,"aria-label":"Run Selected"}),H!=null&&h(Be,{children:H})]}),h(z,{kind:"ghost",className:"mr-auto",disabled:U,onClick:this.handleSave,icon:Cu,tooltip:`Save ${ms.SAVE.getDisplayText()}`,"aria-label":"Save"}),h(z,{kind:"ghost",className:"btn-overflow btn-link-icon",disabled:U,icon:pu,tooltip:"More Actions...",onClick:()=>{},children:h(Gn,{actions:this.getDropdownOverflowActions,popperOptions:xi.POPPER_OPTIONS})})]}),h(im,{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:w,ref:V=>{this.notebook=V}})]}),y&&h(Op,{content:(_=I.value)!=null?_:"",onLinkClick:this.handleLinkClick,onRunCode:this.handleRunCommand,transformImageUri:this.handleTransformLinkUri,transformLinkUri:this.handleTransformLinkUri}),h(Ul,{isOpen:C,type:"file",defaultValue:T,title:E?"Rename":"Save file as",onSubmit:this.handleSaveAsSubmit,onCancel:this.handleSaveAsCancel,notifyOnExtensionChange:!0,storage:t}),h(Bi,{isOpen:b,headerText:`Do you want to save the changes you made to ${T}?`,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:$})]})]})}};let jo=xi;jo.COMPONENT="NotebookPanel";jo.POPPER_OPTIONS={placement:"bottom-end"};jo.DEFAULT_NAME="Untitled";jo.defaultProps={isDashboardActive:!0,isPreview:!1,session:null,sessionLanguage:null,defaultNotebookSettings:null};const XE=(t,e)=>{const n=mm(t),s=Nt(t),i=yS(t),o=pi(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}},Ks=Mt(XE,{saveSettings:Td},null,{forwardRef:!0})(jo);class _o extends S.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(ci,{ref:this.irisGridRef,onStateChange:this.handleGridStateChange,onPanelStateUpdate:this.handlePanelStateUpdate,...e,children:v(z,{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",v("span",{children:[h(j,{icon:cd,transform:"shrink-1",className:"mr-1"}),"Reload"]})]})})}}_o.defaultProps={panelState:null};_o.COMPONENT="PandasPanel";const jE=t=>{Hs(t);const{id:e,layout:n,registerComponent:s,hydrate:i}=t,o=S.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=ze.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=>zi.makeModel(void 0,b)),g={type:"react-component",component:Ui.COMPONENT,props:{localDashboardId:e,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=n;te.openComponent({root:f,config:g,dragEvent:r})},[e,n]);return S.exports.useEffect(function(){const l=[s(Ui.COMPONENT,Ui,i)];return()=>{l.forEach(a=>a())}},[i,s]),Ke(n.eventHub,Me.OPEN,o),h(pe,{})},QE=t=>{Hs(t);const{id:e,layout:n}=t,s=S.exports.useCallback(({metadata:i,panelId:o=ze.generate(),table:r})=>{const{settings:l}=i,a=()=>zi.makeModelFromSettings(l,r),d=xe.titleFromSettings(l),c={type:"react-component",component:Ui.COMPONENT,props:{localDashboardId:e,id:o,metadata:i,makeModel:a},title:d,id:o},{root:u}=n;te.openComponent({root:u,config:c})},[e,n]);return Ke(n.eventHub,vt.CREATE_CHART,s),h(pe,{})},ct=X.module("ConsolePlugin");function Uh(t){return t.notebook!==void 0}function ZE(t){Hs(t)}const JE=t=>{ZE(t);const{id:e,hydrateConsole:n,layout:s,panelManager:i,registerComponent:o,notebooksUrl:r}=t,l=S.exports.useRef(0),[a]=S.exports.useState(new Map),[d]=S.exports.useState(new Map),c=ed(),u=S.exports.useCallback(()=>i.getLastUsedPanelOfType(Oi),[i]),m=S.exports.useCallback((N,k=!0,_=!0)=>{if(!(N&&N.trim()))ct.info("Ignoring empty code");else{const G=u();if(!G||!(G instanceof Oi.WrappedComponent)){ct.error("Console panel not found");return}ct.debug("Send command: ",N,k,_),G.addCommand(N,k,_)}},[u]),p=S.exports.useCallback(N=>{c(gE(e,N))},[c,e]),g=S.exports.useCallback(({language:N})=>{const k=N==="python"?"py":N;let _=null;return k==null?(ct.debug("No extension for language",N),_=`Untitled-${l.current}`):_=`Untitled-${l.current}.${k}`,l.current+=1,_},[]),f=S.exports.useCallback((N,k=!0)=>{const{id:_}=N;return _!=null&&a.has(_)?a.get(_):_!=null&&d.has(_)?d.get(_):k?ze.generate():null},[a,d]),b=S.exports.useCallback((N,k)=>{te.renameComponent(s.root,{id:N},k)},[s.root]),C=S.exports.useCallback((N,k)=>{ct.debug("Rename file panel",N,k);let _;if(a.has(N)&&(_=a.get(N),a.delete(N),_!=null&&a.set(k,_)),d.has(N)&&(_=d.get(N),d.delete(N),_!=null&&d.set(k,_)),_===void 0){ct.debug2(`File ${N} isn't open, no need to rename the tab`);return}b(_,ce.getBaseName(k))},[a,d,b]),w=S.exports.useCallback(N=>{const k=f(N,!1);if(k==null){ct.error("Could not find panel id for file metadata",N);return}te.activateTab(s.root,{id:k})},[f,s.root]),T=S.exports.useCallback((N,k,_)=>{if(ct.debug("registerFilePanel",N,k,_),k==null||k.id==null){ct.debug("Ignore empty file id",k);return}const{id:V}=k;if(_){d.set(V,N);return}if(a.has(V)){const G=a.get(V);if(N===G){ct.debug(`Update tab title for file ${V}`);const{itemName:Q}=k;C(V,ce.getBaseName(Q))}else ct.error(`File ${V} already associated with a different tab ${G}`);return}a.set(V,N),d.has(V)&&d.delete(V)},[a,d,C]),y=S.exports.useCallback((N,k)=>{if(ct.debug("unregisterFileTab",N,k),N==null||N.id==null){ct.debug("Ignore empty file id",N);return}const{id:_}=N;if(k){d.delete(_);return}a.delete(_)},[a,d]),E=S.exports.useCallback(N=>{ct.debug("closeFilePanel",N);const{id:k}=N;let _=null,V=!1;if(a.has(k))_=a.get(k);else if(d.has(k))_=d.get(k),V=!0;else{ct.debug(`File ${k} isn't open, ignore close event`);return}y(N,V),te.closeComponent(s.root,{id:_})},[s.root,a,d,y]),I=S.exports.useCallback(N=>{const{itemName:k}=N;return ce.getBaseName(k)},[]),D=S.exports.useCallback(N=>{const{id:k}=N;return ct.debug("fileIsOpen",N,k,a),k!=null&&a.has(k)},[a]),F=S.exports.useCallback(N=>{const{id:k}=N;return ct.debug("fileIsOpenAsPreview",N,k,d),k!=null&&d.has(k)},[d]),x=S.exports.useCallback(N=>{if(N==null)return;const k=i.getOpenedPanelById(N);k&&Uh(k)&&k.focus()},[i]),U=S.exports.useCallback(({id:N,settings:k,fileMetadata:_,session:V,sessionLanguage:G,isPreview:Q=!1})=>{const J={settings:k,fileMetadata:_},ve=I(_);return{type:"react-component",component:Ks.COMPONENT,isFocusOnShow:!1,props:{localDashboardId:e,metadata:{id:N},session:V,sessionLanguage:G,panelState:J,isPreview:Q,notebooksUrl:r},title:ve,id:N}},[I,e,r]),$=S.exports.useCallback((N,k,_,V={id:null,itemName:g(_)})=>{const G=f(V);if(D(V)&&G!=null){ct.debug("File is already open, focus panel"),w(V),x(G);return}const Q=te.getStackForComponentTypes(s.root,[Ks.COMPONENT]),J=U({id:G,settings:_,fileMetadata:V,session:N,sessionLanguage:k});ct.debug("createNotebook",J,a),te.openComponentInStack(Q,J)},[D,x,g,f,s.root,U,a,w]),O=S.exports.useCallback((N,k,_,V,G=!1)=>{ct.debug("selectNotebook",V,G);const Q=D(V),J=F(V);if(Q){if(w(V),G){const ee=f(V);x(ee)}return}if(J&&!G){w(V);return}const[ve]=Array.from(d.values());let le=null,be=null;ve!=null&&(le=ve,be=te.getStackForConfig(s.root,{component:Ks.COMPONENT,id:le})),be==null&&(le=f(V),be=te.getStackForComponentTypes(s.root,[Ks.COMPONENT]));const ke=U({id:le,settings:_,fileMetadata:V,session:N,sessionLanguage:k,isPreview:!G});te.openComponentInStack(be,ke),G&&x(le)},[w,D,F,x,f,s.root,U,d]),H=S.exports.useCallback((N,k,_={},V=!0)=>{const G=i.getLastUsedPanelOfType(Ks);G&&Uh(G)?_!=null&&_.value!=null&&G.notebook!=null&&G.notebook.append(_.value):V&&$(N,k,_)},[$,i]),L=S.exports.useCallback((N,k)=>Pa.hydrate({...N,notebooksUrl:r},k),[r]);return S.exports.useEffect(function(){const k=[o(Oi.COMPONENT,Oi,n),o(nl.COMPONENT,nl),o(sl.COMPONENT,sl),o(ol.COMPONENT,ol),o(Ks.COMPONENT,Ks,L)];return()=>{k.forEach(_=>_())}},[o,n,L]),Ke(s.eventHub,Ct.SEND_COMMAND,m),Ke(s.eventHub,Ct.SETTINGS_CHANGED,p),Ke(s.eventHub,Ve.CLOSE_FILE,E),Ke(s.eventHub,Ve.CREATE_NOTEBOOK,$),Ke(s.eventHub,Ve.SELECT_NOTEBOOK,O),Ke(s.eventHub,Ve.RENAME,b),Ke(s.eventHub,Ve.RENAME_FILE,C),Ke(s.eventHub,Ve.SEND_TO_NOTEBOOK,H),Ke(s.eventHub,Ve.REGISTER_FILE,T),Ke(s.eventHub,Ve.UNREGISTER_FILE,y),h(pe,{})},So=X.module("FilterPlugin");function Bh(t,e){return t.concat(e)}const e1=t=>{Hs(t);const{id:e,layout:n,registerComponent:s}=t,i=ed(),[o]=S.exports.useState(()=>new Map),[r]=S.exports.useState(()=>new Map),[l]=S.exports.useState(()=>new Map),a=S.exports.useCallback(()=>{const b=Array.from(o.values()).reduce(Bh,[]).sort((T,y)=>{const E=sn.toLower(T.name),I=sn.toLower(y.name);if(E!==I)return E>I?1:-1;const D=sn.toLower(T.type),F=sn.toLower(y.type);return D!==F?D>F?1:-1:0}).reduce((T,y)=>((T.length===0||sn.toLower(T[T.length-1].name)!==sn.toLower(y.name)||sn.toLower(T[T.length-1].type)!==sn.toLower(y.type))&&T.push(y),T),[]),C=Array.from(r.values()).reduce(Bh,[]).sort((T,y)=>T.timestamp-y.timestamp),w=new Map(l);So.debug("sendUpdate",{columns:b,filters:C,tableMap:w}),i(Yn(e,{columns:b,filters:C,tableMap:w}))},[i,e,o,r,l]),d=S.exports.useCallback((b,C)=>{So.debug2("handleColumnsChanged",b,C),o.set(b,[].concat(C)),a()},[o,a]),c=S.exports.useCallback((b,C)=>{So.debug2("handleFiltersChanged",b,C),r.set(b,[].concat(C)),a()},[r,a]),u=S.exports.useCallback((b,C)=>{So.debug2("handleTableChanged",b,C),l.set(te.getIdFromPanel(b),C),a()},[l,a]),m=S.exports.useCallback(b=>{So.debug2("handlePanelUnmount",b),o.delete(b),r.delete(b),l.delete(te.getIdFromPanel(b)),a()},[o,r,l,a]),p=S.exports.useCallback(({title:b="DropdownFilter",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:di.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),g=S.exports.useCallback(({title:b="InputFilter",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:xo.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),f=S.exports.useCallback(({title:b="FilterSets",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:Ca.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]);return S.exports.useEffect(function(){const C=[s(di.COMPONENT,di),s(xo.COMPONENT,xo),s(Ca.COMPONENT,Ca)];return()=>{C.forEach(w=>w())}},[s]),Ke(n.eventHub,He.COLUMNS_CHANGED,d),Ke(n.eventHub,He.FILTERS_CHANGED,c),Ke(n.eventHub,He.TABLE_CHANGED,u),Ke(n.eventHub,He.OPEN_DROPDOWN,p),Ke(n.eventHub,He.OPEN_INPUT,g),Ke(n.eventHub,He.OPEN_FILTER_SET_MANAGER,f),Ke(n.eventHub,Me.UNMOUNT,m),h(pe,{})},t1=[dh.VariableType.TABLE,dh.VariableType.TREETABLE],n1=t=>{Hs(t);const{getDownloadWorker:e,loadPlugin:n,id:s,layout:i,registerComponent:o,hydrate:r,theme:l}=t,a=S.exports.useCallback(({dragEvent:d,fetch:c,panelId:u=ze.generate(),widget:m})=>{const{name:p,type:g}=m;if(!t1.includes(g))return;const f={name:p,table:p},b=()=>c().then(T=>qd.makeModel(T)),C={type:"react-component",component:ci.COMPONENT,props:{getDownloadWorker:e,loadPlugin:n,localDashboardId:s,id:u,metadata:f,makeModel:b,theme:l},title:p,id:u},{root:w}=i;te.openComponent({root:w,config:C,dragEvent:d})},[e,s,i,n,l]);return S.exports.useEffect(function(){const c=[o(ci.COMPONENT,ci,r)];return()=>{c.forEach(u=>u())}},[r,o]),Ke(i.eventHub,Me.OPEN,a),h(pe,{})};function Lp(t){return typeof t.getCoordinateForColumn=="function"}function $h(t){const e=t;return Lp(t)&&typeof e.setFilterMap=="function"&&typeof e.unsetFilterValue=="function"}const wo=X.module("LinkerUtils"),Ap=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 wo.debug2("Incompatible panel ids",t,e,n),"invalid";if(t.panelComponent==null||e.panelComponent==null)return wo.error("PanelComponent should not be null",t,e),"invalid";const s=(l=Ap.ALLOWED_LINKS.get(t.panelComponent))==null?void 0:l.includes(e.panelComponent);if(s===void 0||!s)return wo.debug2("Incompatible panel components",t,e),"invalid";const{columnType:i}=t,{columnType:o}=e;if(!(o===null||P.isCompatibleType(i,o)))return wo.debug2("Incompatible type",i,o),"invalid";switch(e.panelComponent){case te.getComponentName(Ui):case te.getComponentName(ci):return"tableLink";case te.getComponentName(di):return"filterSource"}return wo.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:ze.generate(),start:{...i.start,panelId:n}}):((o=i.end)==null?void 0:o.panelId)===e&&s.push({...i,id:ze.generate(),end:{...i.end,panelId:n}})}),s}};let ti=Ap;ti.ALLOWED_LINKS=new Map([[te.getComponentName(ci),[te.getComponentName(ci),te.getComponentName(Ui),te.getComponentName(di)]]]);const Wh=.015,zh=1.5,Pp=12,Hp=12,Gh=2,Fr=Math.sqrt((Hp*.5)**2+Pp**2),Kh=Math.asin(Hp*.5/Pp),qh=15,qa=class extends S.exports.PureComponent{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`}constructor(t){super(t),this.handleClick=this.handleClick.bind(this)}handleClick(t){t.stopPropagation(),t.preventDefault();const{id:e,onClick:n}=this.props;n(e)}render(){const{className:t,x1:e,y1:n,x2:s,y2:i,id:o}=this.props,r=Math.sqrt((e-s)**2+(n-i)**2),l=Math.atan2(i-n,s-e),a=Math.sin(l),d=Math.cos(l)+2,c=window.innerWidth,u=window.innerHeight,m=0,p=0,g=Math.max(m,Math.min(e+(s-e)/2+a*(r*Wh)**zh,c)),f=Math.max(p,Math.min(n+(i-n)/2+d*(r*Wh)**zh,u)),b=`M ${e} ${n} Q ${g} ${f} ${s} ${i}`,C=`M ${m} ${p} L ${m} ${u} L ${c} ${u} L ${c} ${p} z
|
|
37
|
+
${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:w,onBlur:T,onResize:y,onShow:E,onTabBlur:I,onTabFocus:D,onTabClicked:F}=this.props,{isPanelDisconnected:x,isWidgetDisconnected:U,isPanelInactive:$}=this.state,O=this.getErrorMessage(),H=m!=null?m:this.getCachedRenderTabTooltip(u,r,p,g,f),L=[{title:`Copy ${p} Name`,group:oe.groups.medium,order:20,action:this.handleCopyName}];return v(Xn,{className:W(n,{disconnected:x||U||a,inactive:$}),componentPanel:s,glContainer:r,glEventHub:l,onClearAllFilters:b,onHide:C,onFocus:w,onBlur:T,onResize:y,onShow:E,onSessionClose:this.handleSessionClosed,onSessionOpen:this.handleSessionOpened,onTabBlur:I,onTabFocus:D,onTabClicked:F,renderTabTooltip:H,errorMessage:O,isLoaded:i,isLoading:o,isClonable:d,isRenamable:c,additionalActions:L,children:[e,$&&h("div",{className:"fill-parent-absolute"})]})}}Pl.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 hn=Object.freeze({DEFAULT:"DEFAULT",LINKER:"LINKER"}),iE="SET_SESSION_WRAPPER",oE=Ps(iE,null),rE={sessionWrapper:oE},lE=new Map,Hl=Object.freeze([]),Ip=(t,e)=>{var n;return(n=jt(t,e).columns)!=null?n:Hl},aE=(t,e)=>{var n;return(n=jt(t,e).filterSets)!=null?n:Hl},Xd=(t,e)=>{var n;return(n=jt(t,e).filters)!=null?n:Hl},jd=(t,e)=>{var n;return(n=jt(t,e).tableMap)!=null?n:lE},Qd=(t,e)=>jt(t,e).isolatedLinkerPanelId,io=(t,e)=>{var n;return(n=jt(t,e).links)!=null?n:Hl},Zd=(t,e)=>jt(t,e).columnSelectionValidator,dE=(t,e)=>jt(t,e).connection,pi=(t,e)=>jt(t,e).sessionWrapper,cE=(t,e)=>n=>n(Yn(t,{connection:e})),hE=(t,e)=>n=>n(Yn(t,{sessionWrapper:e})),Jd=(t,e)=>n=>n(Yn(t,{links:e})),uE=(t,e)=>(n,s)=>{const i=io(s(),t),o=e.filter(r=>i.findIndex(l=>ht(l.start,r.start)&&ht(l.end,r.end))<0);return n(Jd(t,i.concat(o)))},mE=(t,e)=>(n,s)=>{const o=io(s(),t).filter(r=>!e.includes(r.id));return n(Jd(t,o))},Rp=(t,e)=>n=>n(Yn(t,{isolatedLinkerPanelId:e})),pE=(t,e)=>n=>n(Yn(t,{columnSelectionValidator:e})),gE=(t,e)=>n=>n(Yn(t,{consoleSettings:e})),fE=(t,e)=>n=>n(Yn(t,{filterSets:e}));Object.entries(rE).map(([t,e])=>Ji.register(t,e));const Dp=({columnMap:t,inputFilterMap:e,linkedColumnMap:n,onAdd:s,onOpenLinker:i,waitingFilterMap:o,waitingInputMap:r})=>{const l=S.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=sn.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=S.exports.useMemo(()=>Array.from(t.values()),[t]),d=S.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),s(Array.from(o.values()))},[s,o]),c=S.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:v("div",{className:W("chart-panel-overlay-content chart-filter-overlay-content",{"chart-filter-waiting-filter":u},{"chart-filter-waiting-input":m}),children:[u&&v(pe,{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?cs:ad;return v("div",{className:W("waiting-filter-item",{"is-invalid":g}),children:[h(j,{icon:f}),p.name]},p.name)})}),v("div",{children:[h($i,{onClick:d,className:"btn-primary",children:"Add Input Filters"}),h($i,{onClick:c,className:"btn-primary",children:"Open Linker Tool"})]})]}),m&&v(pe,{children:[h("div",{className:"info-message",children:"Waiting for User Input"}),h("div",{className:"",children:l})]})]})})};Dp.propTypes={columnMap:R.exports.instanceOf(Map).isRequired,inputFilterMap:R.exports.instanceOf(Map).isRequired,linkedColumnMap:R.exports.instanceOf(Map).isRequired,onAdd:R.exports.func.isRequired,onOpenLinker:R.exports.func.isRequired,waitingFilterMap:R.exports.instanceOf(Map).isRequired,waitingInputMap:R.exports.instanceOf(Map).isRequired};const Po=({columns:t,onColumnSelected:e,onMouseEnter:n,onMouseLeave:s})=>h("div",{className:"chart-panel-overlay chart-column-selector-overlay",children:h("div",{className:W("chart-panel-overlay-content"),children:v(pe,{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(Sl,{className:W("btn-chart-column-selector",Po.makeButtonClassName(i.name)),onClick:()=>e(i.name),onMouseEnter:()=>{n&&n(i)},onMouseLeave:s,disabled:!i.isValid,isLinked:i.isActive,children:i.name},i.name))})]})})});Po.makeButtonClassName=t=>`btn-chart-column-selector-${t}`;Po.defaultProps={onMouseEnter:()=>{},onMouseLeave:()=>{}};const tn=X.module("ChartPanel"),CE=150;function Pr(t){return t.settings!==void 0}function bE(t){return t.inputFilters!=null}function SE(t){return t.panelState!=null}class Vl extends S.exports.Component{constructor(e){super(e),this.getWaitingInputMap=me((r,l,a)=>{if(!r)return new Map;const d=new Map(l);return a.forEach((c,u)=>{d.delete(u)}),d}),this.getWaitingFilterMap=me((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=me((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=me((r,l)=>{const a=new Map,d=te.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);A(p),a.set(m,p)}}return a}),this.getSelectorColumns=me((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),CE),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.panelContainer=Y.createRef(),this.chart=Y.createRef(),this.pending=new fs;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&&Pr(n)&&n.settings&&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&&lh(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){tn.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){tn.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(Ki.COLUMN_SELECTED,this,s.get(e))}handleColumnMouseEnter({type:e,name:n}){const{columnSelectionValidator:s}=this.props;tn.debug("handleColumnMouseEnter",s,e,n),s&&s(this,{type:e,name:n})}handleColumnMouseLeave(){const{columnSelectionValidator:e}=this.props;tn.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(hn.LINKER)}handleReconnect(){this.setState({isDisconnected:!1,error:void 0}),this.sendColumnChange(),this.updateColumnFilters()}handleLoadSuccess(e){tn.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){Ee.isCanceled(e)||(tn.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){tn.debug2("updateModelFromSource ignoring",s,i,n);return}if(this.pending.cancel(),Pr(e)){const{settings:o}=e;this.pending.add(M.plot.Figure.create(xe.makeFigureSettings(o,n))).then(r=>{lh(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&&bE(e.props)&&SE(e.state)){const{inputFilters:r}=e.props,{panelState:l}=e.state;l!=null&&(o=se.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 tn.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(He.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(He.COLUMNS_CHANGED,this,Array.from(e.getFilterColumnMap().values()))}getCoordinateForColumn(e){var l;const n=Po.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){tn.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 tn.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 tn.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;A(s);const i=this.getWaitingInputMap(s.isFilterRequired(),e,n);if(s.setFilter(n),n.size>0&&i.size===0){const o=s.getDefaultTitle(),r=sn.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),tn.debug2("updateFilters filters set",n),this.setState({isLoading:!0})}else tn.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;Pr(l)?C=l.table:C=l.figure;const w=this.getInputFilterColumnMap(d,i),T=this.getLinkedColumnMap(d,r),y=m!=null?this.getWaitingInputMap(m.isFilterRequired(),d,c):new Map,E=m!=null?this.getWaitingFilterMap(m.isFilterRequired(),d,c,T,w):new Map,I=u!=null?`Unable to open chart. ${u}`:void 0,D=y.size>0,F=d.size>0&&o;return h(Pl,{className:W("iris-chart-panel",{"input-required":D}),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:v("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(dm,{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(ut,{in:D&&!F&&!b,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Dp,{inputFilterMap:w,linkedColumnMap:T,onAdd:this.handleFilterAdd,onOpenLinker:this.handleOpenLinker,columnMap:d,waitingFilterMap:E,waitingInputMap:y})}),h(ut,{in:F,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Po,{columns:this.getSelectorColumns(d,T,e),onColumnSelected:this.handleColumnSelected,onMouseEnter:this.handleColumnMouseEnter,onMouseLeave:this.handleColumnMouseLeave})})]})})}}Vl.defaultProps={columnSelectionValidator:null,isLinkerActive:!1,source:null,sourcePanel:null,panelState:null,settings:{}};Vl.displayName="ChartPanel";Vl.COMPONENT="ChartPanel";const wE=(t,e)=>{const{localDashboardId:n,metadata:s}=e;let i;s!=null&&(i=s.sourcePanelId);const o=jd(t,n),r=Gm(t,n),l=Rl(t),a=Qd(t,n),d=l===hn.LINKER&&a===void 0;return{columnSelectionValidator:Zd(t,n),isLinkerActive:d,inputFilters:Xd(t,n),links:io(t,n),source:i!=null?o.get(i):void 0,sourcePanel:i!=null?r.get(i):void 0,settings:Nt(t)}},Ui=Mt(wE,{setActiveTool:Dl,setDashboardIsolatedLinkerPanelId:Rp},null,{forwardRef:!0})(Vl);const Dr=X.module("CommandHistoryPanel"),Mp=class extends S.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 fs;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){Dr.error(t)}componentDidMount(){const{glEventHub:t,session:e}=this.props;t.on(Ct.FOCUS_HISTORY,this.handleFocusHistory),e!=null&&this.loadTable()}componentWillUnmount(){const{glEventHub:t}=this.props;t.off(Ct.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(Dr.debug("handleSendToNotebook",n,t),!n){Dr.error("Session is not connected.");return}const{glEventHub:i}=this.props;i.emit(e?Ve.CREATE_NOTEBOOK:Ve.SEND_TO_NOTEBOOK,n,s,t)}handleSendToConsole(t,e=!0,n=!1){Dr.debug("handleSendToConsole",t);const{glEventHub:s}=this.props;s.emit(Ct.SEND_COMMAND,t,e,n)}loadTable(){const{commandHistoryStorage:t}=this.props,{language:e,sessionId:n}=this.state;A(e),A(n),this.pending.add(t.getTable(e,n,Date.now()),s=>s.close()).then(s=>{this.setState({table:s})}).catch(Mp.handleError)}render(){const{glContainer:t,glEventHub:e,commandHistoryStorage:n}=this.props,{language:s,contextActions:i,table:o}=this.state;return v(Xn,{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&&v(pe,{children:[h(El,{ref:this.container,language:s,sendToNotebook:this.handleSendToNotebook,sendToConsole:this.handleSendToConsole,table:o,commandHistoryStorage:n}),h(oe,{actions:i})]})]})}};let ec=Mp;ec.COMPONENT="CommandHistoryPanel";ec.TITLE="Command History";const vE=(t,e)=>{const n=um(t),s=pi(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}},nl=Mt(vE,null,null,{forwardRef:!0})(ec);const Mr=X.module("ConsolePanel"),TE=500,EE=Object.freeze({consoleSettings:{},itemIds:[]});class tc extends S.exports.PureComponent{constructor(e){super(e),this.savePanelState=je(()=>{const{consoleSettings:r,itemIds:l}=this.state,a={consoleSettings:r,itemIds:[...l]};Mr.debug("Saving panel state",a),this.setState({panelState:a})},TE),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={...EE,...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(Me.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(Me.MOUNT,this.handlePanelMount),(n=this.objectSubscriptionCleanup)==null||n.call(this)}subscribeToFieldUpdates(){const{sessionWrapper:e}=this.props,{session:n}=e;this.objectSubscriptionCleanup=n.subscribeToFieldUpdates(s=>{Mr.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=ze.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(Ct.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(Me.CLOSE,s)}}handleSettingsChange(e){const{glEventHub:n}=this.props;Mr.debug("handleSettingsChange",e),this.setState({consoleSettings:e}),n.emit(Ct.SETTINGS_CHANGED,e)}openWidget(e,n){const{glEventHub:s}=this.props,{title:i}=e;A(i);const o=this.getItemId(i),r={fetch:()=>n.getObject(e),panelId:o,widget:e};Mr.debug("openWidget",r),s.emit(Me.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(Me.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(Xn,{componentPanel:this,glContainer:n,glEventHub:s,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,errorMessage:a!=null?`${a}`:void 0,children:h(pe,{children:u!=null&&h(Sd,{ref:this.consoleRef,settings:l,session:u,focusCommandHistory:this.handleFocusCommandHistory,openObject:this.handleOpenObject,closeObject:this.handleCloseObject,commandHistoryStorage:e,onSettingsChange:this.handleSettingsChange,language:g,statusBarChildren:v(pe,{children:[h("div",{children:"\xA0"}),h("div",{children:Gu.LANGUAGE_MAP.get(g)}),h("div",{children:"\xA0"}),h("div",{children:h(mS,{connection:m,defaultUpdateInterval:10*1e3,hoverUpdateInterval:3*1e3,monitorDuration:10*60*1e3})}),h("div",{children:"\xA0"})]}),scope:p,timeZone:o,objectMap:d,unzip:r})})})}}tc.COMPONENT="ConsolePanel";tc.TITLE="Console";const yE=(t,e)=>({commandHistoryStorage:um(t),sessionWrapper:pi(t,e.localDashboardId),timeZone:Il(t)}),Oi=Mt(yE,null,null,{forwardRef:!0})(tc);const Co=X.module("DropdownFilter"),IE=150,Hr=class extends S.exports.Component{constructor(t){super(t),this.getCompatibleColumns=me((i,o)=>i!=null?o.filter(({type:r})=>r!==void 0&&P.isCompatibleType(r,i.columnType)):[]),this.getColumnOptions=me((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=me((i,o)=>i.indexOf(o)),this.getValueOptions=me(i=>[h("option",{value:"-1",children:Hr.PLACEHOLDER},"-1"),...i.map((o,r)=>h("option",{value:r,children:o},`${r}/${o}`))]),this.getItemLabel=Te((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})},IE),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,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(Co.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(),Co.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;if(n===-1)Co.debug2("Selected default item");else if(n>=0&&n<i.length)s=i[n];else{Co.error("Invalid index",n,i);return}Co.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()}handleMouseEnter(){const{onSourceMouseEnter:t}=this.props;t()}handleMouseLeave(){const{onSourceMouseLeave:t}=this.props;t()}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(){this.dropdownRef.current!==null&&this.dropdownRef.current.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({column:i,value:n,isValueShown:s})}render(){var U;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,isValueShown:m,selectedColumn:p,value:g}=this.state,f=i===null,b=this.getCompatibleColumns(i,t),C=i!=null,w=(U=i==null?void 0:i.columnName)!=null?U:Hr.SOURCE_BUTTON_PLACEHOLDER,T=c!=null?`${c.name} Filter`:null,[y,E]=this.getColumnOptions(b,p),I=this.getValueOptions(a),D=this.getSelectedOptionIndex(a,g),F=!C||p==null;return v(id,{className:"dropdown-filter fill-parent-absolute",isFlipped:m&&!n,children:[h("div",{className:"dropdown-filter-settings-card",children:v("div",{className:"dropdown-filter-card-content",children:[v("div",{className:"dropdown-filter-settings-grid",children:[h("label",{children:"Source Column"}),h(Sl,{isLinked:C,onClick:o,onMouseEnter:r,onMouseLeave:l,className:Hr.SOURCE_BUTTON_CLASS_NAME,disabled:e,children:w}),h("div",{className:"text-muted small",children:"Select a source column for the list by linking to a table."}),h("label",{children:"Filter Column"}),h("select",{value:E,className:"custom-select",onChange:this.handleColumnChange,disabled:f,children:y}),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}),C&&v("div",{className:"dropdown-filter-settings-buttons",children:[h(z,{kind:"secondary",type:"button",onClick:this.handleSettingsCancel,disabled:u||m||n,tooltip:n?"Cancel disabled while linker open":void 0,children:"Cancel"}),h(z,{kind:"primary",type:"button",className:"ml-2",onClick:this.handleSettingsSave,disabled:F||m||n,tooltip:n?"Save disabled while linker open":void 0,children:"Save"})]})]})}),h("div",{className:"dropdown-filter-value-card",onClick:this.handleBackgroundClick,children:s&&v(pe,{children:[h("div",{className:"dropdown-filter-column",children:h("div",{className:"dropdown-filter-column-title",children:T})}),v("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:D,ref:this.dropdownRef,onChange:this.handleValueChange,onKeyPress:this.handleDropdownKeyPress,children:I})}),d&&h("div",{className:"error-message mt-3 text-center",children:d})]}),h("div",{className:"dropdown-filter-menu",children:h(z,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(j,{icon:Wo,transform:"grow-4"}),tooltip:"Dropdown Filter Settings"})})]})})]})}};let qi=Hr;qi.defaultProps={column:null,disableLinking:!1,isLinkerActive:!1,isLoaded:!1,isValueShown:!1,settingsError:null,source:null,value:"",values:[],onColumnSelected:()=>{},onSourceMouseEnter:()=>{},onSourceMouseLeave:()=>{}};qi.PLACEHOLDER="Select a value...";qi.SOURCE_BUTTON_CLASS_NAME="btn-dropdown-filter-selector";qi.SOURCE_BUTTON_PLACEHOLDER="Select a column";const nt=X.module("DropdownFilterPanel"),RE=250,ei=class extends S.exports.Component{constructor(t){super(t),this.getCachedValues=me((d,{type:c,name:u},m)=>c!==void 0&&P.isDateType(c)?d.map(p=>ei.DATETIME_FORMATTER.format(p)):d.map(p=>p!=null&&c!=null?m.getFormattedString(p,c,u):null)),this.getCachedPanelLinks=me((d,c)=>{const u=te.getIdFromPanel(c);return nt.debug("getCachedPanelLinks",d,u),d.filter(m=>{var p;return((p=m.end)==null?void 0:p.panelId)===u})}),this.getCachedSource=me(d=>{nt.debug("getCachedSource",d);let c=null;if(d.length>0){const[u]=d;c=u.start,d.length>1&&nt.error("Filter has more that one link",d)}return c}),this.getCachedSourceTable=me((d,c)=>{var m;if(nt.debug("getCachedSourceTable",d,c),c==null)return null;const{panelId:u}=c;return(m=d.get(u))!=null?m:null}),this.getCachedSourceColumn=me((d,c)=>{var u;return nt.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),RE),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 fs;const{panelState:e,settings:n}=t;this.columnFormats=hs.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 un(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{column:t,value:e,timestamp:n}=this.state,s=this.getSourceTable();if(s!==null&&this.startListeningToSource(s),t!=null){const{name:i,type:o}=t;this.sendUpdate(i,o,e,n)}}componentDidUpdate(t,e){const{valuesTable:n}=this.state,{settings:s}=this.props,i=this.getSource(),o=this.getSourceTable(),r=this.getSource(t),l=this.getSourceTable(t);s!==t.settings&&s!==void 0&&this.updateFormatterSettings(s),n!==e.valuesTable&&e.valuesTable!=null&&(nt.debug("Table in state modified, closing the old table."),e.valuesTable.close()),(o!==l||i!==r)&&this.updateValuesTable(),o!==l&&(l!==null&&this.stopListeningToSource(l),o!==null&&this.startListeningToSource(o))}componentWillUnmount(){const{valuesTable:t}=this.state,e=this.getSourceTable();this.pending.cancel(),e!==null&&this.stopListeningToSource(e),this.cleanup&&this.cleanup(),t!=null&&t.close()}getCoordinateForColumn(){var i;if(this.panelContainer.current==null)return null;const t=this.panelContainer.current.querySelector(`.${qi.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>ei.MAX_TABLE_SIZE)return`Table too large, must have fewer than ${ei.MAX_TABLE_SIZE} options.`}getPanelErrorMessage(){const{error:t}=this.state;return t!=null?`${t}`:void 0}getSource(t=this.props){const{dashboardLinks:e}=t,n=this.getCachedPanelLinks(e,this);return this.getCachedSource(n)}getSourceTable(t=this.props){const{panelTableMap:e}=t,n=this.getSource(t);return this.getCachedSourceTable(e,n)}getValuesColumn(t){const e=this.getSource();return this.getCachedSourceColumn(t,e)}startListeningToSource(t){nt.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){nt.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,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(){nt.debug("handleColumnSelected");const{glEventHub:t}=this.props;t.emit(He.COLUMN_SELECTED,this,ei.SOURCE_COLUMN)}handleClearAllFilters(){var t,e;(e=(t=this.dropdownFilterRef)==null?void 0:t.current)==null||e.clearFilter()}setPanelState(t,e=!1){var n,s;if(this.getSource()==null){nt.debug("Ignore state update for unlinked filter",t);return}this.setState({skipUpdate:!e}),(s=(n=this.dropdownFilterRef)==null?void 0:n.current)==null||s.setFilterState(t)}sendUpdate(t,e,n,s){var l;const{glEventHub:i}=this.props,o=(l=this.getSource())==null?void 0:l.panelId,r=o===null?[]:[o];nt.debug("sendUpdate",{name:t,type:e,value:n,timestamp:s,excludePanelIds:r}),i.emit(He.FILTERS_CHANGED,this,{name:t,type:e,value:n!=null?n:"=null",timestamp:s,excludePanelIds:r})}updateValuesTable(){const t=this.getSource(),e=this.getSourceTable();if(nt.debug("updateValuesTable",t,e),this.setState({values:[],valuesTable:void 0,error:null}),t==null){nt.debug("Filter unlinked."),this.setState({isLoading:!1,isLoaded:!0,isValueShown:!1,sourceSize:0});return}this.setState({isLoading:!0}),e!=null&&(this.setState({isLoaded:!1,sourceSize:e.size}),this.pending.add(e.copy(),n=>n.close()).then(n=>{this.updateViewportListener(n),this.setState({valuesTable:n})}).catch(n=>{Ee.isCanceled(n)||(nt.error(n),this.setState({isLoading:!1,error:n}))}))}applySourceSorts(){const{valuesTable:t}=this.state,e=this.getSourceTable();if(nt.debug("applySourceSorts",e.sort),t==null){nt.debug("Table not initialized");return}const n=[...e.sort];t.applySort(n),this.setViewport(t)}applySourceFilters(){const{valuesTable:t}=this.state,e=this.getSourceTable();if(nt.debug("applySourceFilters",e.filter),t==null){nt.debug("Table not initialized");return}const n=[...e.filter];t.applyFilter(n),this.setViewport(t)}updateViewportListener(t){if(nt.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 e=this.getValuesColumn(t);if(!e){nt.error("values column is null");return}t.setViewport(0,ei.MAX_TABLE_SIZE-1,[e])}updateFormatterSettings(t){const e=hs.getColumnFormats(t);ht(this.columnFormats,e)||(this.columnFormats=e,this.setState({formatter:new un(e)}))}handleValuesTableUpdate({detail:t}){const{rows:e}=t,{valuesTable:n}=this.state;if(!n){nt.error("valuesTable is null");return}const s=this.getValuesColumn(n);if(!s){nt.error("Values column not found");return}const i=e.map(o=>o.get(s));this.setState({values:i,isLoading:!1,isLoaded:!0,valuesColumn:s})}handleSourceMouseEnter(){const{columnSelectionValidator:t}=this.props;!t||t(this,ei.SOURCE_COLUMN)}handleSourceMouseLeave(){const{columnSelectionValidator:t}=this.props;!t||t(this,void 0)}render(){const{columns:t,disableLinking:e,glContainer:n,glEventHub:s,isLinkerActive:i}=this.props,{column:o,formatter:r,isDisconnected:l,isValueShown:a,value:d,values:c,valuesColumn:u,isLoading:m,isLoaded:p}=this.state,g=this.getSource(),f=this.getSettingsErrorMessage(),b=this.getPanelErrorMessage(),C=p&&u!=null?this.getCachedValues(c,u,r):[];return h(Pl,{errorMessage:b,isLoading:m,isLoaded:p,isDisconnected:l,className:"iris-dropdown-filter-panel",componentPanel:this,glContainer:n,glEventHub:s,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(qi,{ref:this.dropdownFilterRef,column:o,columns:t,isValueShown:a,isLinkerActive:i,disableLinking:e,isLoaded:p,settingsError:f,source:g,value:d,values:C,onChange:this.handleChange,onColumnSelected:this.handleColumnSelected,onSourceMouseEnter:this.handleSourceMouseEnter,onSourceMouseLeave:this.handleSourceMouseLeave})})})}};let oo=ei;oo.displayName="DropdownFilterPanel";oo.COMPONENT="DropdownFilterPanel";oo.MAX_TABLE_SIZE=256;oo.DATETIME_FORMATTER=new dt({showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"});oo.SOURCE_COLUMN=Object.freeze({name:"FilterSource",type:null});const DE=(t,e)=>{const{localDashboardId:n}=e,s=te.getIdFromPanel({props:e}),i=jd(t,n),o=io(t,n),r=Rl(t),l=Qd(t,n),a=r===hn.LINKER&&(l===void 0||l===s),d=r===hn.LINKER&&l!==void 0&&l!==s;return{columns:Ip(t,n),columnSelectionValidator:Zd(t,n),isLinkerActive:a,disableLinking:d,settings:Nt(t),panelTableMap:i,dashboardLinks:o}},di=Mt(DE,null,null,{forwardRef:!0})(oo);function Kn(t){return t.type==="directory"}var Np=(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))(Np||{});class ce{static fileExtensionToString(e=""){return e.length===0?"":`.${e}`}static getDepth(e){var s;if(!ce.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(!ce.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(!ce.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=ce.fileExtensionToString(n);return`${i}${o}`}static validateName(e){var o;const n=[".",".."],s=/[\\/\0]/g,i=new Map([["\0","null"]]);if(!e)throw new Pi("Name cannot be empty");if(n.includes(e))throw new Pi(`"${e}" is a reserved name`);if(s.test(e))throw new Pi(`Invalid characters in name: "${((o=e.match(s))!=null?o:[]).reduce((r,l)=>r.includes(l)?r:[...r,l],[]).map(r=>i.has(r)?i.get(r):r).join('", "')}"`)}static reducePaths(e){const n=e.filter(s=>ce.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 Ot=X.module("FileList"),$a=t=>Kn(t)?ce.makePath(t.filename):ce.getPath(t.filename),nc=26,ME=500,_h="item-list-scroll-pane",Wa=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(D=>D.id===r.id))!=null?I:!1,g=$a(r),f=s&&a?$a(a):null,b=s&&i&&Kn(r)&&f===g,C=s&&i&&f===g,w=s&&!i&&f===g,T=NE(r),y=ce.getDepth(r.filename),E=Array(y).fill(null).map((D,F)=>h("span",{className:"file-list-depth-line"},F));return v("div",{className:W("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":w,"is-selected":o}),onDragStart:D=>d(l,D),onDragOver:D=>c(l,D),onDragEnd:D=>u(l,D),onDrop:D=>m(l,D),draggable:!0,role:"presentation","aria-label":r.basename,children:[E," ",h(j,{icon:T,className:"item-icon",fixedWidth:!0})," ",v("span",{className:"truncation-wrapper",children:[e!=null?e:r.basename,h(Be,{options:{modifiers:{preventOverflow:{boundariesElement:"window"}},placement:"left"},children:e!=null?e:r.basename})]})]})};function NE(t){if(Kn(t))return t.isExpanded?Ef:yf;switch(ce.getMimeType(t.basename)){case Np.PYTHON:return sC;default:return wf}}function kh(t,e){if(t.length===0||e==null)throw new Error("No items to move");const n=$a(e);if(t.some(({filename:s})=>ce.getPath(s)===n))throw new Error("File already in the destination folder");if(t.some(s=>Kn(s)&&n.startsWith(ce.makePath(s.filename))))throw new Error("Destination folder cannot be a child of a dragged folder");return{files:t,targetPath:n}}const FE=t=>{const{isMultiSelect:e=!1,table:n,onFocusChange:s=()=>{},onMove:i,onSelect:o,onSelectionChange:r=()=>{},renderItem:l=Wa,rowHeight:a=nc,overscanCount:d=bn.DEFAULT_OVERSCAN}=t,[c,u]=S.exports.useState(()=>({items:[],offset:0,itemCount:0})),[m,p]=S.exports.useState({top:0,bottom:0}),[g,f]=S.exports.useState(),[b,C]=S.exports.useState(),[w,T]=S.exports.useState(),[y,E]=S.exports.useState([]),I=S.exports.useRef(null),D=S.exports.useRef(null),F=S.exports.useCallback(ee=>{if(ee.length===0||c==null)return[];const ge=[];for(let Se=0;Se<ee.length;Se+=1){const Re=ee[Se];for(let qe=Re[0];qe<=Re[1];qe+=1)qe>=c.offset&&qe<c.offset+c.items.length&&ge.push(c.items[qe-c.offset])}return ge},[c]),x=S.exports.useCallback(ee=>{const ge=F([[ee,ee]]);if(ge.length>0)return ge[0]},[F]),U=S.exports.useCallback(()=>{const ee=fn.count(y);if(ee===0)return null;if(ee===1){const ge=y[0][0],Se=x(ge);if(Se!=null)return Se.filename}return`${ee} items`},[x,y]),$=S.exports.useCallback(ee=>{var ge;if(!(!b||!g)){Ot.debug("dropItems",b,"to",ee);try{const{files:Se,targetPath:Re}=kh(b,g);i(Se,Re),ee!=null&&(E([[ee,ee]]),(ge=I.current)==null||ge.focusItem(ee))}catch(Se){Ot.error("Unable to complete move",Se)}}},[b,g,i]),O=S.exports.useCallback((ee,ge)=>{const Se=c.items[ee-c.offset];Se!==void 0&&(Ot.debug("handleItemClick",Se),o(Se,ge),Kn(Se)&&(n==null||n.setExpanded(Se.filename,!Se.isExpanded)))},[c,o,n]),H=S.exports.useCallback((ee,ge)=>{var qe;Ot.debug2("handleItemDragStart",ee,y);let Se=y;fn.isSelected(y,ee)||(Se=[[ee,ee]],E(Se)),C(F(Se)),(qe=I.current)==null||qe.resetMouseState();const Re=document.createElement("div");Re.innerHTML=`<div class="dnd-placeholder-content">${U()}</div>`,Re.className="file-list-dnd-placeholder",document.body.appendChild(Re),ge.dataTransfer.setDragImage(Re,0,0),ge.dataTransfer.effectAllowed="move",T(Re)},[U,F,y]),L=S.exports.useCallback((ee,ge)=>{ge.preventDefault(),Ot.debug2("handleItemDragOver",ge),f(x(ee))},[x]),N=S.exports.useCallback((ee,ge)=>{Ot.debug("handleItemDragEnd",ee),w==null||w.remove(),C(void 0),f(void 0),T(void 0)},[w]),k=S.exports.useCallback((ee,ge)=>{$(ee)},[$]),_=S.exports.useCallback(()=>{Ot.debug2("handleItemDragExit"),f(void 0)},[]),V=S.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(_h)&&(ee.preventDefault(),Ot.debug2("handleListDragOver",ee),f({type:"directory",filename:"/",basename:"/",id:"/"}))},[]),G=S.exports.useCallback(ee=>{ee.target instanceof Element&&ee.target.classList.contains(_h)&&(Ot.debug("handleListDrop"),$())},[$]),Q=S.exports.useCallback(ee=>{if(Ot.debug2("handleSelectionChange",ee),ee!==y){E(ee);const ge=F(ee);r(ge)}},[F,r,y]),J=S.exports.useCallback(ee=>{if(Ot.debug2("handleFocusChange",ee),ee!=null){const[ge]=F([[ee,ee]]);s(ge)}else s()},[F,s]),ve=S.exports.useCallback((ee,ge)=>{Ot.debug("handleViewportChange",ee,ge),(ee!==m.top||ge!==m.bottom)&&p({top:ee,bottom:ge})},[m]),le=S.exports.useMemo(()=>{if(!b||!g)return!1;try{return kh(b,g),Ot.debug("handleValidateDropTarget true"),!0}catch{return Ot.debug("handleValidateDropTarget false"),!1}},[b,g]),{focusedPath:be}=t;S.exports.useEffect(()=>{be!==void 0&&(be==="/"?n.collapseAll():(n.setExpanded(be,!1),n.setExpanded(be,!0)))},[n,be]),S.exports.useEffect(function(){Ot.debug("updating table viewport",m),n==null||n.setViewport({top:Math.max(0,m.top-d),bottom:m.bottom+d})},[d,n,m]),S.exports.useEffect(function(){const ge=n.onUpdate(Se=>{u({items:Se.items.map(Re=>({...Re,itemName:Re.basename})),offset:Se.offset,itemCount:n.size})});return()=>{ge()}},[n]),S.exports.useEffect(function(){if(g!=null&&Kn(g)&&g.filename!=="/"){const ge=setTimeout(()=>{g.isExpanded||n==null||n.setExpanded(g.filename,!0)},ME);return()=>clearTimeout(ge)}},[g,n]);const ke=S.exports.useCallback(ee=>l({...ee,isDragInProgress:b!=null,dropTargetItem:g,draggedItems:b,isDropTargetValid:le,onDragStart:H,onDragEnd:N,onDragOver:L,onDragExit:_,onDrop:k}),[N,_,L,H,k,b,g,le,l]);return h("div",{ref:D,className:W("file-list",{"is-dragging":b!=null}),onDragOver:V,onDrop:G,children:h(bn,{ref:I,items:c.items,itemCount:c.itemCount,offset:c.offset,onFocusChange:J,onSelect:O,onSelectionChange:Q,onViewportChange:ve,selectedRanges:y,renderItem:ke,rowHeight:a,isMultiSelect:e,isDragSelect:!1,isDeselectOnClick:!1})})};const xE={name:"File Explorer",DELETE:Pe.createAndAdd({id:"FILE_EXPLORER.DELETE",name:"Delete",shortcut:[he.DELETE],macShortcut:[de.CMD,he.BACKSPACE]}),RENAME:Pe.createAndAdd({id:"FILE_EXPLORER.RENAME",name:"Rename",shortcut:[he.ENTER],macShortcut:[he.ENTER]})},Oh={FILE_EXPLORER:xE};const Lh=X.module("FileListItemEditor"),_E=({item:t,onCancel:e,onSubmit:n,validate:s=()=>Promise.resolve()})=>{const i=S.exports.useRef(null),[o,r]=S.exports.useState(t.basename),[l,a]=S.exports.useState(),[d,c]=S.exports.useState(Promise.resolve()),u=S.exports.useCallback(()=>{var C;(C=i.current)==null||C.focus()},[i]),m=S.exports.useCallback(C=>C.stopPropagation(),[]),p=S.exports.useCallback(()=>{d.then(()=>{n(o)}).catch(C=>Lh.info("Unable to validate name",C))},[n,o,d]);S.exports.useEffect(function(){const w=Ee.makeCancelable(s(o));return w.then(()=>a(void 0)).catch(T=>{Ee.isCanceled(T)||a(T)}),c(w),()=>w.cancel()},[s,o]),S.exports.useEffect(function(){u()},[u]);const g=S.exports.useCallback(()=>{Lh.debug2("handleBlur"),p()},[p]),f=S.exports.useCallback(C=>{const{value:w}=C.target;r(w)},[]),b=S.exports.useCallback(C=>{C.stopPropagation();const{key:w}=C;switch(w){case"Enter":{p();break}case"Escape":{e();break}}},[e,p]);return v("div",{className:"file-list-item-editor",children:[h("input",{type:"text",className:W("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}`})]})},Fp=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=nc,validateRename:g=()=>Promise.resolve()}=t,[f,b]=S.exports.useState(),[C,w]=S.exports.useState([]),[T,y]=S.exports.useState(),E=S.exports.useCallback(_=>{w(_),u==null||u(_)},[u]),I=S.exports.useCallback(_=>{y(_)},[]),D=S.exports.useCallback(()=>{T&&(r==null||r(T))},[T,r]),F=S.exports.useCallback(()=>{C.length>0&&(l==null||l(C))},[l,C]),x=S.exports.useCallback(()=>{i==null||i()},[i]),U=S.exports.useCallback(()=>{T&&(o==null||o(ce.getPath(T.filename)))},[T,o]),$=S.exports.useCallback(()=>{T&&b(T)},[T]),O=S.exports.useCallback(()=>{b(void 0)},[]),H=S.exports.useCallback(_=>{f&&(d==null||d(f,_),b(void 0))},[d,f]),L=S.exports.useMemo(()=>{if(f)return[];const _=[];return i&&_.push({title:"New File",description:"Create new file",action:x,group:oe.groups.medium}),o&&_.push({title:"New Folder",description:"Create new folder",action:U,group:oe.groups.medium}),r&&_.push({title:"Copy",description:"Copy",action:D,group:oe.groups.low,disabled:T==null||Kn(T)}),l&&C.length>0&&_.push({title:"Delete",description:"Delete",shortcut:Oh.FILE_EXPLORER.DELETE,action:F,group:oe.groups.low}),d&&_.push({title:"Rename",description:"Rename",shortcut:Oh.FILE_EXPLORER.RENAME,action:$,group:oe.groups.low,disabled:T==null}),_},[D,F,x,U,$,T,r,i,o,l,d,C,f]),N=S.exports.useCallback(_=>f?g(f,_):Promise.reject(new Error("No rename item")),[f,g]),k=S.exports.useCallback(_=>{const{item:V}=_;return f&&f.filename===V.filename?Wa({..._,children:h(_E,{item:V,validate:N,onSubmit:H,onCancel:O})}):Wa(_)},[O,H,f,N]);return v("div",{className:"file-list-container",children:[m!=null&&h(FE,{onMove:a,onSelect:c,onSelectionChange:E,onFocusChange:I,renderItem:k,rowHeight:p,table:m,isMultiSelect:e,focusedPath:n}),s&&h(oe,{actions:L})]})};Fp.displayName="FileListContainer";class Vr extends Pi{constructor(e){super("Name already exists"),this.isExistingFile=!0,this.info=e}}class sc extends Error{constructor(){super("No file exists at the path specified"),this.isFileNotFound=!0}}const zs=X.module("FileExplorer"),ic=t=>{const{storage:e,isMultiSelect:n=!1,focusedPath:s,onDelete:i=()=>{},onRename:o=()=>{},onSelect:r,onSelectionChange:l,rowHeight:a=nc}=t,[d,c]=S.exports.useState([]),[u,m]=S.exports.useState();S.exports.useEffect(function(){let D;async function F(){zs.debug("initTable"),D=Ee.makeCancelable(e.getTable(),x=>x.close());try{m(await D)}catch(x){Ee.isCanceled(x)||zs.error("Unable to initialize table",x)}}return F(),()=>{D.cancel()}},[e]);const p=S.exports.useCallback(I=>{Ee.isCanceled(I)||zs.error(I)},[]),g=S.exports.useCallback(I=>{zs.debug("handleDelete, pending confirmation",I),c(I)},[]),f=S.exports.useCallback(()=>{zs.debug("handleDeleteConfirm",d),d.forEach(I=>e.deleteFile(Kn(I)?ce.makePath(I.filename):I.filename)),i(d),c([])},[d,i,e]),b=S.exports.useCallback(()=>{zs.debug("handleDeleteCancel"),c([])},[]),C=S.exports.useCallback((I,D)=>{ce.reducePaths(I.map(x=>Kn(x)?ce.makePath(x.filename):x.filename)).forEach(x=>{const U=ce.isPath(x)?`${D}${ce.getBaseName(x.substring(0,x.length-1))}/`:`${D}${ce.getBaseName(x)}`;e.moveFile(x,U).then(()=>{o(x,U)}).catch(p)})},[p,o,e]),w=S.exports.useCallback((I,D)=>{let F=I.filename;const x=Kn(I);x&&!F.endsWith("/")&&(F=`${F}/`);let U=`${ce.getParent(F)}${D}`;x&&!U.endsWith("/")&&(U=`${U}/`),zs.debug2("handleRename",F,U),e.moveFile(F,U).catch(p),o(F,U)},[p,o,e]),T=S.exports.useCallback(async(I,D)=>{if(D===I.basename)return;ce.validateName(D);const F=`${ce.getPath(I.filename)}${D}`;try{const x=await e.info(F);throw new Vr(x)}catch(x){if(!(x instanceof sc))throw x}},[e]),y=d.length>0,E=S.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 v("div",{className:"file-explorer",children:[u&&h(Fp,{isMultiSelect:n,focusedPath:s,showContextMenu:!0,onMove:C,onDelete:g,onRename:w,onSelect:r,onSelectionChange:l,rowHeight:a,table:u,validateRename:T}),h(Bi,{isOpen:y,headerText:E,bodyText:"You cannot undo this action.",onCancel:b,onConfirm:f,confirmButtonText:"Delete"})]})};ic.displayName="FileExplorer";const Gs=X.module("NewItemModal"),Ur=class extends S.exports.PureComponent{constructor(t){super(t),this.inputRef=Y.createRef(),this.pending=new fs,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=ce.hasPath(e)?ce.getPath(e):"/";this.state={isSubmitting:!1,path:n,prevExtension:ce.getExtension(e),showExtensionChangeModal:!1,showOverwriteModal:!1,value:ce.getBaseName(e)}}static getValidationMessage(t){return t instanceof Vr&&t.info.type==="directory"?"Error: Cannot overwrite existing directory":`${t}`}static handleError(t){Ee.isCanceled(t)||Gs.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=ce.hasPath(t)?ce.getPath(t):"/";this.setState({path:e,value:ce.getBaseName(t),validationError:void 0,prevExtension:ce.getExtension(t),isSubmitting:!1})}getValidationPromise(t,e,n=!1){return this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableValidatePromise=Ee.makeCancelable(this.validateName(t,e,n)),this.cancelableValidatePromise}async validateName(t,e,n){ce.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 Vr(r)}catch(r){if(!(r instanceof sc))throw r}}return e}updateValidationStatus(t,e){this.getValidationPromise(t,e).then(()=>{this.setState({validationError:void 0})}).catch(this.handleValidationError).catch(Ur.handleError)}handleModalOpened(){this.focusRenameInput()}handleModalSubmit(){this.submitModal()}handleChange(t){const{value:e}=t.target;this.setState({value:e})}handleSelect(t){if(Gs.debug("handleSelect",t),t.type==="directory")this.setState({path:ce.makePath(t.filename)});else{const e=t.basename,n=ce.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 Pi))throw t;Gs.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;Gs.debug("handleOverwriteConfirm",e,n),t(`${e}${n}`)}handleExtensionChangeCancel(){Gs.debug("handleExtensionChangeCancel"),this.setState(({value:t,prevExtension:e})=>{const n=ce.replaceExtension(t,e);return{showExtensionChangeModal:!1,value:n}}),this.submitModal(!0)}handleExtensionChangeConfirm(){Gs.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;Gs.debug("submitModal",e,n);const r=ce.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 Vr&&o!=="directory"&&l.info.type!=="directory"){this.setState({showOverwriteModal:!0});return}throw l}).catch(l=>{throw Ee.isCanceled(l)&&this.setState({isSubmitting:!1}),l}).catch(this.handleValidationError).catch(Ur.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}/`,v(Y.Fragment,{children:[h(z,{kind:"ghost",className:"directory-breadcrumbs",onClick:()=>this.handleBreadcrumbSelect(i),"aria-label":s===0?"Home":void 0,icon:s===0?h(j,{icon:If,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=ce.fileExtensionToString(m),b=ce.fileExtensionToString(p),C=g?"Create":"Save",w=g?"New folder name":"Save file as";return v(pe,{children:[v(Uo,{isOpen:e,toggle:n,onOpened:this.handleModalOpened,className:"modal-dialog-centered new-file-modal theme-bg-dark",children:[h($o,{toggle:n,children:i}),h(Bo,{children:h("form",{children:v("div",{className:"d-flex flex-column new-file-modal-content",children:[v("div",{className:"flex-grow-0 mb-4",children:[h("label",{htmlFor:"file-name-input",children:w}),h("input",{id:"file-name-input",type:"text",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:"false",className:W("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:Ur.getValidationMessage(c)})]}),v("div",{className:"flex-grow-0",children:[h("label",{children:"Directory: /"}),this.renderPathButtons(l)]}),h("div",{className:"flex-grow-1 file-explorer-container",children:h(ic,{onSelect:this.handleSelect,storage:t,focusedPath:l})})]})})}),v(sd,{children:[h(z,{kind:"secondary",onClick:n,children:"Cancel"}),h(z,{kind:"primary",disabled:r,onClick:this.handleModalSubmit,children:C})]})]}),h(Bi,{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(Bi,{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 Ul=Ur;Ul.propTypes={isOpen:R.exports.bool,title:R.exports.string.isRequired,defaultValue:R.exports.string,type:R.exports.oneOf(["file","directory"]).isRequired,onSubmit:R.exports.func,onCancel:R.exports.func,placeholder:R.exports.string,storage:R.exports.shape({}).isRequired,notifyOnExtensionChange:R.exports.bool};Ul.defaultProps={isOpen:!1,defaultValue:"/",notifyOnExtensionChange:!1,placeholder:"",onSubmit:t=>{},onCancel:()=>{}};const kE=({createFile:t,createFolder:e,onSearchChange:n,defaultSearchText:s=""})=>v("div",{className:"file-explorer-toolbar",children:[v("div",{className:"file-explorer-toolbar-buttons",children:[h(z,{kind:"ghost",icon:fu,tooltip:"New notebook",onClick:t,"aria-label":"New notebook"}),h(z,{kind:"ghost",icon:Of,tooltip:"New folder",onClick:e,"aria-label":"New folder"})]}),n&&h("div",{className:"file-explorer-toolbar-search",children:h(Au,{value:s,onChange:n,placeholder:"Search by name"})})]});const Di=X.module("FileExplorerPanel"),OE=(t,e)=>{const n=mm(t),s=pi(t,e.localDashboardId),{session:i,config:o}=s!=null?s:{},r=o==null?void 0:o.type;return{fileStorage:n,language:r,session:i}},LE=Mt(OE,null,null,{forwardRef:!0});function AE(t){const e=t;return e!=null&&typeof e.button=="number"}const za=class extends Y.Component{static handleError(t){Di.error(t)}static isFocusEvent(t){return AE(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:""};Di.debug("handleCreateFile",e,n,s),t.emit(Ve.CREATE_NOTEBOOK,e,n,s)}handleCreateDirectory(t){this.setState({showCreateFolder:!0})}handleCreateDirectoryCancel(){Di.debug("handleCreateDirectoryCancel"),this.setState({showCreateFolder:!1})}handleCreateDirectorySubmit(t){Di.debug("handleCreateDirectorySubmit",t),this.setState({showCreateFolder:!1});const{fileStorage:e}=this.props;e.createDirectory(t).catch(za.handleError)}handleDelete(t){const{glEventHub:e}=this.props;t.forEach(n=>{e.emit(Ve.CLOSE_FILE,{id:n.filename,itemName:n.filename})})}handleSelectionChange(t){let e="/";t.length===1&&(t[0].type==="directory"?e=ce.makePath(t[0].filename):e=ce.getPath(t[0].filename)),this.setState({focusedFilePath:e})}handleFileSelect(t,e){if(Di.debug("fileSelect",t),t.type==="directory")return;const n=za.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(Ve.SELECT_NOTEBOOK,o,r,l,s,n)}handleRename(t,e){const{glEventHub:n}=this.props;Di.debug("handleRename",t,e),n.emit(Ve.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 v(Xn,{className:"file-explorer-panel",componentPanel:this,glContainer:e,glEventHub:n,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[h(kE,{createFile:this.handleCreateFile,createFolder:this.handleCreateDirectory}),s&&h(ic,{isMultiSelect:!0,storage:t,onDelete:this.handleDelete,onRename:this.handleRename,onSelect:this.handleFileSelect,onSelectionChange:this.handleSelectionChange}),h(Ul,{isOpen:i,type:"directory",title:"Create New Folder",storage:t,onSubmit:this.handleCreateDirectorySubmit,onCancel:this.handleCreateDirectoryCancel,defaultValue:o})]})}};let oc=za;oc.COMPONENT="FileExplorerPanel";oc.TITLE="File Explorer";const sl=LE(oc);const lt=X.module("FilterSetManager"),PE="Enter name...",Ah="No Available Filter Sets";class il extends S.exports.Component{constructor(e){super(e),this.renameInputRef=Y.createRef(),this.dropdownRef=Y.createRef(),this.editDropdownRef=Y.createRef(),this.isRenamingExistingSet=me((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;lt.debug("initSettingsScreen",e,n),this.setState({modifiedFilterSets:[...e],editId:n})}updateSelectedId(){const{isValueShown:e,filterSets:n,selectedId:s,onChange:i}=this.props;if(lt.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:[]}),lt.debug("Update sets",s,i),n(s),s.length>0&&e({isValueShown:!0,selectedId:i})}handleCaptureNewSet(){const{getFilterState:e}=this.props;il.animateScreenFlash();const n=ze(),s=e(),i={id:n,title:"",panels:s};lt.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 lt.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 lt.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){lt.error("Renamed set undefined.");return}const o=this.getNameError(e);if(lt.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,lt.debug("Renamed existing set",d)):(d.push(l),lt.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 lt.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 lt.debug("Deleted selected set",n,s,o),lt.debug("New selection",r,l),{modifiedFilterSets:o,editId:l}})}handleSetUpdate(){const{getFilterState:e}=this.props;il.animateScreenFlash();const n=e();this.setState(({modifiedFilterSets:s,editId:i})=>{if(i===void 0)return lt.error("Filter for update not selected."),null;const o=[...s],r=o.findIndex(({id:l})=>l===i);return r<0?(lt.error("Selected set for update not found."),null):(o[r]={...o[r],panels:n},lt.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 lt.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){lt.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){lt.debug("No filter selected");return}const i=s.find(({id:o})=>o===e);if(i===void 0){lt.debug("Selected id not found in filterSets",e,s);return}lt.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=v("div",{className:"fa-layers mr-3",children:[h(j,{icon:Lo,mask:ya,transform:"shrink-1 down-5 right-7"}),h(j,{icon:As,className:"text-primary",transform:"shrink-6 down-5 right-7"})]}),b=v("div",{className:"fa-layers",children:[h(j,{icon:Lo,mask:ya,transform:"shrink-1 down-5 right-7"}),h(j,{icon:Ea,transform:"shrink-1 down-5 right-7"})]});return h("div",{className:"filter-set-manager fill-parent-absolute",children:v(id,{className:"w-100 h-100",isFlipped:l,children:[h("div",{className:"filter-set-manager-settings-card fill-parent-absolute",children:v("div",{className:"filter-set-manager-card-content",children:[p&&v("div",{children:[h(z,{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&&v("div",{className:"d-flex flex-column justify-content-center","data-testid":"edit-filter-set-container",children:[v("div",{className:"form-group",children:[h("label",{children:u?"Edit set":"Name captured set"}),v("div",{className:"name-input-container",children:[h("input",{type:"text",className:"input-set-name form-control",placeholder:PE,value:e,ref:this.renameInputRef,onChange:this.handleNameInputChange,onKeyPress:this.handleNameInputKeyPress,spellCheck:"false"}),h(z,{"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:Cu}),h(z,{"data-testid":"rename-cancel-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameCancel,tooltip:"Cancel",icon:bf})]}),n!==void 0&&h("div",{className:"error-message",children:n})]}),h("div",{className:"form-group",children:v(bl,{onChange:this.handleRestoreFullStateChange,value:`${r}`,children:[h(Nn,{value:"false",children:"Restore only filters"}),h(Nn,{value:"true",children:"Restore full table state"})]})})]}),g&&v("div",{className:"filter-set-manager-settings-grid-1",children:[v("div",{className:"form-group",children:[h("label",{children:"Edit filter sets"}),v("div",{className:"filter-select-container",children:[v("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:Ah}),o.map(({id:C,title:w})=>h("option",{value:C,children:w},C))]}),h(z,{kind:"ghost",onClick:this.handleSetUpdate,disabled:m,icon:b,tooltip:"Update"}),h(z,{kind:"ghost",onClick:this.handleSetEdit,disabled:m,icon:hl,tooltip:"Edit"}),h(z,{kind:"ghost",onClick:this.handleSetDelete,disabled:m,icon:_n,tooltip:"Delete"})]})]}),h("div",{children:h(z,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture new filter set"})}),v("div",{className:"py-3 text-right",children:[h(z,{kind:"secondary",onClick:this.handleSettingsCancel,children:"Cancel"}),"\xA0",h(z,{kind:"primary",onClick:this.handleSettingsSave,children:"Save"})]})]})]})},"front"),h("div",{className:"filter-set-manager-value-card fill-parent-absolute",onClick:this.handleBackgroundClick,children:v(pe,{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:v("div",{className:"filter-select-container",children:[v("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:Ah}),a.map(({id:C,title:w})=>h("option",{value:C,children:w},C))]}),h(z,{"data-testid":"filter-apply-button",kind:"ghost",onClick:this.handleFilterApply,icon:cd,tooltip:"Apply Filter Set"})]})})}),h("div",{className:"filter-set-manager-menu",children:h(z,{kind:"ghost",className:"btn btn-link btn-link-icon m-2 px-2",onClick:this.handleSettingsClick,tooltip:"Settings",icon:h(j,{icon:Wo,transform:"grow-4"})})})]})},"back")]})})}}const rc=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(Al,{widgetType:"Table",widgetName:n,glContainer:s,description:i,children:v("div",{className:"column-statistics-grid",children:[h("span",{className:"column-statistic-operation",children:"Number of Rows"}),h("span",{className:"column-statistic-value",children:r})]})})};rc.propTypes={glContainer:kd.Container.isRequired,widgetName:R.exports.string.isRequired,description:R.exports.string};rc.defaultProps={description:null};const Vn=X.module("IrisGridPanel"),HE=500,VE={IrisGrid:so,IrisGridTableModel:Sp,ContextMenuRoot:Ru};class Yi extends S.exports.PureComponent{constructor(e){super(e),this.getGridInputFilters=me((s,i)=>se.getInputFiltersForColumns(s,i.filter(({value:o,excludePanelIds:r})=>{const l=te.getIdFromPanel(this);return o!=null&&(r==null||l!=null&&!r.includes(l))}))),this.getAlwaysFetchColumns=me((s,i)=>{const o=te.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=me((s,i,o,r,l)=>!i||!ri(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:VE,onStateChange:this.handlePluginStateChange,pluginState:l})})),this.getDehydratedIrisGridPanelState=me((s,i,o,r,l)=>se.dehydrateIrisGridPanelState(s,{isSelectingPartition:i,partition:o,partitionColumn:r,advancedSettings:l})),this.getDehydratedIrisGridState=me((s,i,o,r,l,a,d,c,u,m,p,g,f,b,C,w,T,y,E,I)=>se.dehydrateIrisGridState(s,{advancedFilters:o,aggregationSettings:T,customColumnFormatMap:r,isFilterBarShown:l,metrics:{userColumnWidths:C,userRowHeights:w},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})),this.getDehydratedGridState=me((s,i,o,r,l)=>se.dehydrateGridState(s,{isStuckToBottom:r,isStuckToRight:l,movedColumns:i,movedRows:o})),this.getCachedPanelState=me((s,i,o,r)=>({irisGridPanelState:s,irisGridState:i,gridState:o,pluginState:r})),this.savePanelState=je(()=>{const{irisGridState:s,gridState:i,pluginState:o}=this;A(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:w,reverseType:T,rollupConfig:y,showSearchBar:E,searchValue:I,selectDistinctColumns:D,selectedSearchColumns:F,sorts:x,invertSearchColumns:U,metrics:$,pendingDataMap:O,frozenColumns:H,conditionalFormats:L}=s;A(l),A($);const{userColumnWidths:N,userRowHeights:k}=$;A(i);const{isStuckToBottom:_,isStuckToRight:V,movedColumns:G,movedRows:Q}=i,J=this.getCachedPanelState(this.getDehydratedIrisGridPanelState(l,d,c,u,m),this.getDehydratedIrisGridState(l,x,p,f,b,C,w,T,y,E,I,D,F,U,N,k,g,O,H,L),this.getDehydratedGridState(l,G,Q,_,V),o);J!==a&&(Vn.debug("Saving panel state",this,J),this.setState({panelState:J}),r==null||r(J))},HE),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(Ym.DEFAULTS),customColumns:[],customColumnFormatMap:new Map,isFilterBarShown:!1,quickFilters:new Map,sorts:[],userColumnWidths:new Map,userRowHeights:new Map,reverseType:P.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=Ee.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=se.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;A(n);const{columns:s,formatter:i}=n,o=se.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(vt.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):(A(s),this.initModelQueue(s,i))}handleTableChanged(e){Vn.debug("handleTableChanged",e);const{glEventHub:n}=this.props,{detail:s}=e;n.emit(He.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(Ct.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=te.getIdFromPanel(this);let d;l&&(d=se.extractTableSettings(l,i)),s.emit(vt.CREATE_CHART,{metadata:{settings:e,sourcePanelId:a,table:r,tableSettings:d},table:ri(n)?n.table:void 0})})}handleColumnSelected(e){const{glEventHub:n}=this.props;n.emit(vt.COLUMN_SELECTED,this,e)}handleDataSelected(e,n){const{glEventHub:s}=this.props;s.emit(vt.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){Ee.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}),ri(e)){const{table:i}=e,{pluginName:o}=i;if(o!==""&&s!=null&&o!=null){const r=s(o);this.setState({Plugin:r})}n.emit(He.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(He.COLUMNS_CHANGED,this,e)}startModelListening(e){e.addEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.addEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.addEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}stopModelListening(e){e.removeEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.removeEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.removeEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}getCoordinateForColumn(e){var w,T,y;const{model:n}=this.state;if(!n)return null;const s=this.irisGrid.current,{gridWrapper:i}=s||{},o=(w=i==null?void 0:i.getBoundingClientRect())!=null?w:null;if(o==null||o.width<=0||o.height<=0)return null;A(s);const{metrics:r}=s.state;A(r);const{columnHeaderHeight:l,visibleColumnXs:a,visibleColumnWidths:d,right:c,columnHeaderMaxDepth:u}=r,m=n.getColumnIndexByName(e);A(m);const p=s.getVisibleColumn(m),g=(T=a.get(p))!=null?T: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}A(s);const{columns:r,formatter:l}=s,a=se.changeFilterColumnNamesToIndexes(s.columns,e).filter(([c])=>s.isFilterable(c)),d=se.changeFilterColumnNamesToIndexes(s.columns,n).filter(([c])=>s.isFilterable(c));o.clearAllFilters(),o.setFilters({quickFilters:se.hydrateQuickFilters(r,a,l.timeZone),advancedFilters:se.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=se.changeFilterColumnNamesToIndexes(e.columns,d)),c&&(a.advancedFilters=se.changeFilterColumnNamesToIndexes(e.columns,c));const{isSelectingPartition:u,partition:m,partitionColumn:p,advancedSettings:g}=se.hydrateIrisGridPanelState(e,l),{advancedFilters:f,customColumns:b,customColumnFormatMap:C,isFilterBarShown:w,quickFilters:T,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:D,userColumnWidths:F,userRowHeights:x,showSearchBar:U,searchValue:$,selectDistinctColumns:O,selectedSearchColumns:H,invertSearchColumns:L,pendingDataMap:N,frozenColumns:k,conditionalFormats:_}=se.hydrateIrisGridState(e,{...r,...a}),{isStuckToBottom:V,isStuckToRight:G,movedColumns:Q,movedRows:J}=se.hydrateGridState(e,{...o,...i},r.customColumns);this.setState({advancedFilters:f,advancedSettings:g,conditionalFormats:_,customColumns:b,customColumnFormatMap:C,isFilterBarShown:w,isSelectingPartition:u,movedColumns:Q,movedRows:J,partition:m,partitionColumn:p,quickFilters:T,reverseType:y,rollupConfig:E,aggregationSettings:I,sorts:D,userColumnWidths:F,userRowHeights:x,showSearchBar:U,searchValue:$,selectDistinctColumns:O,selectedSearchColumns:H,invertSearchColumns:L,pendingDataMap:N,frozenColumns:k,isStuckToBottom:V,isStuckToRight:G})}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 On,$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:w,customColumnFormatMap:T,error:y,isDisconnected:E,isFilterBarShown:I,isSelectingPartition:D,isStuckToBottom:F,isStuckToRight:x,isLoaded:U,isLoading:$,isModelReady:O,model:H,movedColumns:L,movedRows:N,partition:k,partitionColumn:_,quickFilters:V,reverseType:G,rollupConfig:Q,sorts:J,userColumnWidths:ve,userRowHeights:le,showSearchBar:be,searchValue:ke,selectDistinctColumns:ee,selectedSearchColumns:ge,invertSearchColumns:Se,Plugin:Re,pluginFilters:qe,pluginFetchColumns:Oe,pendingDataMap:jn,frozenColumns:wn}=this.state,bt=y!=null?`Unable to open table. ${y}`:void 0,{table:Ie}=a,ot=(On=H==null?void 0:H.description)!=null?On:void 0,rt=($t=d==null?void 0:d.pluginState)!=null?$t:null,Ft=e!=null?e:this.getPluginContent(Re,H,c,u,rt),{permissions:Qt}=c,{canCopy:Zt,canDownloadCsv:xt}=Qt;return v(Pl,{errorMessage:bt,isDisconnected:E,isLoading:$,isLoaded:U,className:"iris-grid-panel",glContainer:n,glEventHub:s,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleShow,onTabClicked:this.handleTabClicked,widgetName:Ie,widgetType:"Table",description:ot,componentPanel:this,renderTabTooltip:()=>h(rc,{model:H,widgetName:Ie,glContainer:n,description:ot}),children:[O&&H&&h(so,{advancedFilters:g,aggregationSettings:f,advancedSettings:b,alwaysFetchColumns:this.getAlwaysFetchColumns(l,Oe),columnAllowedCursor:"linker",columnNotAllowedCursor:"not-allowed",customColumns:w,customColumnFormatMap:T,columnSelectionValidator:this.isColumnSelectionValid,conditionalFormats:C,inputFilters:this.getGridInputFilters(H.columns,r),applyInputFiltersOnInit:d==null,isFilterBarShown:I,isSelectingColumn:i!=null,isSelectingPartition:D,isStuckToBottom:F,isStuckToRight:x,movedColumns:L,movedRows:N,partition:k,partitionColumn:_,quickFilters:V,reverseType:G,rollupConfig:Q,settings:m,sorts:J,userColumnWidths:ve,userRowHeights:le,model:H,showSearchBar:be,searchValue:ke,selectedSearchColumns:ge,selectDistinctColumns:ee,invertSearchColumns:Se,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:jn,canCopy:Zt,canDownloadCsv:xt,ref:this.irisGrid,getDownloadWorker:o,frozenColumns:wn,theme:p,children:Ft}),!O&&h(pe,{})]})}}Yi.defaultProps={onStateChange:()=>{},onPanelStateUpdate:()=>{}};Yi.displayName="IrisGridPanel";Yi.COMPONENT="IrisGridPanel";const UE=(t,{localDashboardId:e=Dn})=>({inputFilters:Xd(t,e),links:io(t,e),columnSelectionValidator:Zd(t,e),user:hm(t),workspace:yl(t),settings:Nt(t)}),ci=Mt(UE,null,null,{forwardRef:!0})(Yi);const Ph=X.module("InputFilter"),BE=150,Ga=class extends S.exports.Component{constructor(t){super(t),this.getItemLabel=Te((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})},BE),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)];Ph.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;Ph.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?Ga.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 v(id,{className:"input-filter fill-parent-absolute",isFlipped:n!=null?n:!1,children:[h("div",{className:"input-filter-settings-card",children:v("div",{className:"input-filter-settings-content",children:[v("div",{className:"input-filter-settings-grid",children:[h("label",{children:"Filter Column"}),v("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."})]}),v("div",{className:"input-filter-settings-buttons",children:[h(z,{kind:"secondary",onClick:this.handleSettingsCancel,disabled:e==null,children:"Cancel"}),h(z,{kind:"primary",className:"ml-2",onClick:this.handleSettingsSave,disabled:s==null,children:"Save"})]})]})}),v("div",{className:"input-filter-value-card",onClick:this.handleBackgroundClick,children:[h("div",{className:"input-filter-column",children:v("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:Ga.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(z,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(j,{icon:Wo,transform:"grow-4"}),tooltip:"Input Filter Settings"})})]})]})}};let lc=Ga;lc.PLACEHOLDER="Enter value...";lc.defaultProps={column:null,isValueShown:!1,value:null};const $E=250;class Bl extends S.exports.Component{constructor(e){super(e),this.handleChange=je(this.handleChange.bind(this),$E),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,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(He.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(Xn,{className:"iris-input-filter-panel",componentPanel:this,glContainer:e,glEventHub:n,onClearAllFilters:this.handleClearAllFilters,isClonable:!0,isRenamable:!0,children:h(lc,{ref:this.inputFilterRef,column:s,columns:i,onChange:this.handleChange,isValueShown:o,value:r})})}}Bl.defaultProps={panelState:null};Bl.COMPONENT="InputFilterPanel";Bl.displayName="InputFilterPanel";const WE=(t,e)=>{const{localDashboardId:n}=e;return{columns:Ip(t,n)}},xo=Mt(WE,null,null,{forwardRef:!0})(Bl);const Rt=X.module("FilterSetManagerPanel");function zE(t){return t.setPanelState!=null}const Ka=class extends S.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){Rt.error("Could not get panel",s);return}const i=te.getComponentNameFromPanel(s),o=te.getIdFromPanel(s);Rt.debug("Panel:",s,i);const{glContainer:r=null}=s.props;if(r==null){Rt.error("Could not get panel container",s);return}const l=te.getComponentConfigFromContainer(r);if(l==null){Rt.error("Could not get component config from container",r);return}const a=te.getPanelComponentState(l);if(a==null){Rt.debug(`Panel state is null ${o}`);return}switch(i){case te.getComponentName(Yi):{let d;o!=null&&(d=this.getIrisGridPanelFilters(o,a)),d!=null&&e.push({panelId:o,type:i,state:d});break}case te.getComponentName(xo):case te.getComponentName(di):{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 Rt.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=Ka.changeFilterIndexesToColumnNames(s,r));let d;return l&&(d=Ka.changeFilterIndexesToColumnNames(s,l)),{irisGridState:{...i,advancedFilters:a,quickFilters:d},gridState:{...o}}}handleGetFilterState(){return this.getFilterState()}handleChange({isValueShown:t,selectedId:e}){Rt.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;Rt.debug("Apply filters from filter set",t),n.forEach(({panelId:i,type:o,state:r})=>{if(i==null){Rt.debug("panel is null",i);return}if(!e.has(i)){Rt.debug("Ignore closed panel",i);return}Rt.debug("Apply panel filters",i,o,r);const l=e.get(i);switch(o){case te.getComponentName(Yi):this.restoreIrisGridFilters(l,r,s);break;case te.getComponentName(xo):case te.getComponentName(di):this.restoreInputFilterState(l,r);break}})}handleSetsUpdate(t){const{setDashboardFilterSets:e,localDashboardId:n}=this.props;Rt.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=te.getIdFromPanel(t);if(d==null){Rt.error("Panel Id is null.");return}if(a.get(d)==null){Rt.error(`Unable to get table for panel ${d}.`);return}Rt.debug("restoreIrisGridFilters",d,e,n),n?t.setStateOverrides(e):t.setFilters({quickFilters:l,advancedFilters:r})}restoreInputFilterState(t,e){const n={...e};delete n.isValueShown,Rt.debug("restoreInputFilterState",t,n),t&&zE(t)&&t.setPanelState(n)}render(){const{glContainer:t,glEventHub:e,filterSets:n}=this.props,{isValueShown:s,selectedId:i}=this.state;return h(Xn,{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(il,{onChange:this.handleChange,onApply:this.handleFilterApply,onUpdateSets:this.handleSetsUpdate,isValueShown:s,filterSets:n,selectedId:i,getFilterState:this.handleGetFilterState})})})}};let ac=Ka;ac.defaultProps={panelState:null};ac.COMPONENT="FilterSetManagerPanel";const GE=(t,e)=>{const{localDashboardId:n}=e;return{filterSets:aE(t,n),dashboardOpenedPanelMap:Gm(t,n),dashboardInputFilters:Xd(t,n),panelTableMap:jd(t,n)}},Ca=Mt(GE,{setDashboardFilterSets:fE},null,{forwardRef:!0})(ac);const Hh=X.module("LogPanel");class $l extends S.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){Hh.debug("Session opened",[e]),this.setState({session:e})}handleSessionClosed(e){Hh.debug("Session closed",e)}updateDimensions(){this.logView&&this.logView.updateDimensions()}render(){const{glContainer:e,glEventHub:n}=this.props,{session:s}=this.state;return v(Xn,{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(Zi,{session:s,ref:i=>{this.logView=i}})]})}}$l.defaultProps={session:null};$l.COMPONENT="LogPanel";$l.TITLE="Log";const KE=(t,e)=>{var n;return{session:(n=pi(t,e.localDashboardId))==null?void 0:n.session}},ol=Mt(KE,null,null,{forwardRef:!0})($l);class xp extends S.exports.PureComponent{render(){const{isEditing:e,children:n,onDoubleClick:s}=this.props;return v("div",{className:"markdown-editor-container h-100 w-100",onDoubleClick:s,children:[h("div",{className:W("text-muted","edit-hint",{viewing:e===void 0||!e}),children:v("span",{children:["double-click to edit ",h(j,{icon:hl})]})}),n]})}}xp.defaultProps={isEditing:!1};const qE=X.module("MarkdownStartPage");class _p extends S.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(qE.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:v("div",{className:"markdown-panel-start-page-container",children:[v("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Start"}),h("div",{className:"list-item",children:h(z,{kind:"ghost",className:"title",onClick:s,children:"New Markdown Note"})})]}),v("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Recently Closed from Dashboard"}),e.map(r=>v("div",{className:"list-item",children:[h(z,{kind:"ghost",className:"title",onClick:()=>n(r),children:r.title}),h("button",{className:"btn-link icon",type:"button",onClick:()=>{this.handleDeleteButtonClick(r)},children:h(j,{icon:_n})})]},r.id)),v(Uo,{isOpen:i,toggle:this.handleDeleteModalClose,className:"modal-dialog-centered markdown-delete-modal theme-bg-light",children:[h($o,{children:"Are you sure you want to permanently delete this note?"}),h(Bo,{children:"You can't undo this action."}),v(sd,{children:[h(z,{kind:"secondary",onClick:this.handleDeleteModalClose,children:"Cancel"}),h(z,{kind:"danger",onClick:()=>{this.handleDeleteMarkdown(o)},children:"Delete"})]})]})]})]})})}}_p.defaultProps={closedMarkdowns:[],onOpen:()=>{},onCreate:()=>{},onDelete:()=>{}};class kp extends S.exports.PureComponent{constructor(e){super(e),this.renderMarkdown=n=>{const{children:s,className:i}=n,o=i!==void 0&&(i==null?void 0:i.startsWith("language-"))?i.substring(9):"plaintext";return h("pre",{children:h("code",{children:h(vl,{language:o,children:Y.Children.map(s,r=>typeof r=="string"?r.trim():r)})})})},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(Tl,{settings:{language:"markdown",value:n,lineNumbers:"off"},onEditorInitialized:s}):h(iu,{components:{code:this.renderMarkdown},children:n})})}}kp.defaultProps={isEditing:!1,content:""};const Nr=X.module("MarkdownPanel");class dc extends S.exports.Component{constructor(e){super(e),this.getClosedMarkdowns=me(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;A(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){Nr.debug("Markdown Editor Initialized..."),this.editor=e}handleCreateMarkdown(){Nr.debug("create markdown..."),this.setState({isStartPageShown:!1,content:"",isEditing:!0,panelState:{content:""}},()=>{this.editor!=null&&this.editor.focus!=null&&this.editor.focus()})}handleOpenMarkdown(e){Nr.debug("open markdown...",e);const{glContainer:n,glEventHub:s}=this.props,i=te.getComponentConfigFromContainer(n);s.emit(Me.REOPEN,e,i)}handleDeleteMarkdown(e){const{glEventHub:n}=this.props;n.emit(Me.DELETE,e)}handleEditorBlur(e){var i;Nr.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(Xn,{glContainer:e,glEventHub:n,className:"markdown-panel",componentPanel:this,onResize:this.handleEditorResize,onBlur:this.handleEditorBlur,isClonable:!0,isRenamable:!0,children:o?h(_p,{closedMarkdowns:l,onCreate:this.handleCreateMarkdown,onOpen:this.handleOpenMarkdown,onDelete:this.handleDeleteMarkdown}):h(xp,{isEditing:i,onDoubleClick:this.handleContainerDoubleClick,children:h(kp,{ref:a=>{this.markdownEditor=a},isEditing:i,content:r!=null?r:void 0,onEditorInitialized:this.handleEditorInitialized})})})}}dc.defaultProps={panelState:null};dc.COMPONENT="MarkdownPanel";const YE=(t,e)=>{const{localDashboardId:n}=e;return{closedPanels:C0(t,n)}},bo=Mt(YE,null,null,{forwardRef:!0})(dc);class Op extends S.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;A(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),v("div",{className:W("markdown-notebook-code-block",{"is-selected":f}),ref:p,onClick:()=>{this.setState({nextStartLine:u})},role:"presentation",children:[h(z,{kind:"ghost",icon:Gr,className:"btn-play-block",onClick:C=>{C.stopPropagation(),C.preventDefault(),this.runCode(m),this.setState({nextStartLine:u})},tooltip:"Run code"}),h("code",{children:h(vl,{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 v("div",{className:"markdown-notebook",children:[h("div",{className:"markdown-notebook-toolbar",children:h(z,{className:W("btn-play-selected-cell",{flashing:i&&!o}),kind:"ghost",icon:Gr,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(iu,{components:{code:this.renderCodeBlock,a:this.renderLink},linkTarget:"_blank",remarkPlugins:[hg],transformLinkUri:s,transformImageUri:n,includeElementIndex:!0,children:e})})]})}}Op.defaultProps={onRunCode:()=>{}};const $e=X.module("NotebookPanel"),Vh=400,xi=class extends S.exports.Component{constructor(t){super(t),this.getSettings=me((u,m)=>({...u,minimap:{enabled:m}})),this.getOverflowActions=me((u,m)=>[{title:"Find",icon:Yf,action:this.handleFind,group:oe.groups.high,shortcut:Vt.NOTEBOOK.FIND,order:10},{title:"Show Minimap",icon:u?ds:void 0,action:this.handleMinimapChange,group:oe.groups.medium,shortcut:Vt.NOTEBOOK.MINIMAP,order:20},{title:"Word Wrap",icon:m?ds: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 fs,this.debouncedSavePanelState=je(this.savePanelState.bind(this),Vh),this.debouncedLoad=je(this.load.bind(this),Vh),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&&ce.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:""},$e.debug("constructor",t,this.state)}static handleError(t){Ee.isCanceled(t)||$e.error(t)}static languageFromFileName(t){switch(ce.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(Ve.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(Ve.RENAME_FILE,this.handleRenameFile),t.off("tabClicked",this.handlePanelTabClick),e.emit(Ve.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);A(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){$e.debug("Init content from file"),this.registerFileMetadata(t,n),this.load();return}if(e.value!=null){$e.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(Ve.CLOSE_FILE,{id:t})}registerFileMetadata(t,e){const{glEventHub:n,metadata:s}=this.props,{id:i}=s;n.emit(Ve.REGISTER_FILE,i,t,e)}renameTab(t,e){const{glEventHub:n}=this.props;n.emit(Ve.RENAME,t,e)}load(){const{fileMetadata:t,settings:e}=this.state;A(t);const{id:n}=t,{fileStorage:s}=this.props;this.pending.add(s.loadFile(n)).then(i=>{var a;$e.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,ce.getBaseName(o))}const l={...e,language:(a=xi.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&&ce.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){$e.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;$e.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 $e.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;A(t);const n=this.getNotebookValue(),{language:s}=e,{itemName:i}=t,o=ce.getCopyFileName(i);$e.debug("handleCopy",t,i,o),this.createNotebook(o,s,n)}handleEditorInitialized(t){this.editor=t}handleEditorWillDestroy(){this.editor=void 0}handleEditorChange(t){$e.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(){$e.debug("handleBlur"),this.setState({isFocused:!1})}handleFocus(){$e.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==="/"){$e.debug("Ignoring invalid notebook link",o);return}$e.debug("Notebook link clicked, opening",o);const{glEventHub:r}=this.props,l={value:null,language:s},a={id:o,itemName:o};r.emit(Ve.SELECT_NOTEBOOK,n,s,l,a)}handleLoadSuccess(){this.setState({error:void 0,isLoaded:!0,isLoading:!1})}handleLoadError(t){let e=t;Ee.isCanceled(e)||(Ee.isTimedOut(e)&&(e=new Error("File not found.")),$e.error(e),this.setState({error:e,isLoading:!1}))}handleSave(){$e.debug("handleSave"),this.save()}handleSaveSuccess(t){var i;const{fileStorage:e}=this.props,n={id:t.filename,itemName:t.filename},s=(i=xi.languageFromFileName(t.filename))!=null?i:"";this.setState(o=>{const{fileMetadata:r}=o,l={...o.settings,language:s};return $e.debug("handleSaveSuccess",n,r,l),r&&ce.hasPath(r.itemName)&&r.itemName!==n.itemName&&($e.debug("handleSaveSuccess deleting old file",r.itemName),e.deleteFile(r.itemName).catch(xi.handleError)),{fileMetadata:n,settings:l,isPreview:!1}}),this.debouncedSavePanelState(),this.registerFileMetadata(n,!1)}handleSaveError(t){Ee.isCanceled(t)||(this.setState({savedChangeCount:0}),$e.error(t))}handleSaveAsCancel(){this.setState({showSaveAsModal:!1})}handleSaveAsSubmit(t){var i;$e.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}),ce.getBaseName(n)!==ce.getBaseName(t)){const{metadata:o}=this.props,{id:r}=o;this.renameTab(r,ce.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){$e.error("Editor is not initialized.");return}this.runCommand((t=this.notebook.getValue())!=null?t:void 0)}handleRunSelected(){if(!this.notebook){$e.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;$e.debug("handleShow"),(t=this.notebook)==null||t.updateDimensions()}handleShowRename(){this.setState({showSaveAsModal:!0})}handleTab(t){$e.debug("NotebookPanel tab event",t),this.initTab(t)}handleTabFocus(...t){$e.debug("handleTabFocus",...t);const{glContainer:e}=this.props;this.setState({isDashboardActive:!0}),this.notebook&&!e.isHidden&&this.notebook.updateDimensions()}handleTabBlur(){$e.debug("handleTabBlur"),this.setState({isDashboardActive:!1})}handlePanelTabClick(){$e.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};$e.debug("handleCreateNotebook",i,o,l,a),s.emit(Ve.CREATE_NOTEBOOK,i,o,l,a)}runCommand(t){if(t===void 0){$e.debug("Ignoring empty command.");return}this.removePreviewStatus();const{glEventHub:e}=this.props;e.emit(Ct.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,w=a&&!e.isHidden&&!u,T=(k=m==null?void 0:m.itemName)!=null?k:xi.DEFAULT_NAME,y=T.endsWith(".md"),E=(m==null?void 0:m.id)!=null,I=this.getSettings(f,i.isMinimapEnabled),D=p!=null,F=g===I.language,x=!d||!D||!F,U=!d,$=[{action:this.handleSave,shortcut:ms.SAVE},{action:this.handleMinimapChange,shortcut:Vt.NOTEBOOK.MINIMAP},{action:this.handleWordWrapChange,shortcut:Vt.NOTEBOOK.WORDWRAP}],O=th.getDisabledRunTooltip(D,F,"Notebook extension","Run"),H=th.getDisabledRunTooltip(D,F,"Notebook extension","Run Selected"),L=[{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}],N=n==null?void 0:n.element.find(".lm_title_before").get(0);return v(pe,{children:[N&&hi.createPortal(h("span",{className:W("editor-unsaved-indicator",{"is-unsaved":o!==r})}),N),v(Xn,{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:L,renderTabTooltip:()=>T,children:[!y&&v(pe,{children:[v("div",{className:"notebook-toolbar",children:[v("span",{children:[h(z,{kind:"ghost",className:"btn-play",onClick:this.handleRunAll,disabled:x,icon:h(j,{icon:Gr,transform:"grow-4"}),tooltip:`Run ${Vt.NOTEBOOK.RUN.getDisplayText()}`,"aria-label":"Run"}),O!=null&&h(Be,{children:O})]}),v("span",{children:[h(z,{kind:"ghost",className:"btn-play",onClick:this.handleRunSelected,disabled:x,icon:h(j,{icon:oC,transform:"grow-4"}),tooltip:`Run Selected ${Vt.NOTEBOOK.RUN_SELECTED.getDisplayText()}`,"aria-label":"Run Selected"}),H!=null&&h(Be,{children:H})]}),h(z,{kind:"ghost",className:"mr-auto",disabled:U,onClick:this.handleSave,icon:Cu,tooltip:`Save ${ms.SAVE.getDisplayText()}`,"aria-label":"Save"}),h(z,{kind:"ghost",className:"btn-overflow btn-link-icon",disabled:U,icon:pu,tooltip:"More Actions...",onClick:()=>{},children:h(Gn,{actions:this.getDropdownOverflowActions,popperOptions:xi.POPPER_OPTIONS})})]}),h(im,{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:w,ref:V=>{this.notebook=V}})]}),y&&h(Op,{content:(_=I.value)!=null?_:"",onLinkClick:this.handleLinkClick,onRunCode:this.handleRunCommand,transformImageUri:this.handleTransformLinkUri,transformLinkUri:this.handleTransformLinkUri}),h(Ul,{isOpen:C,type:"file",defaultValue:T,title:E?"Rename":"Save file as",onSubmit:this.handleSaveAsSubmit,onCancel:this.handleSaveAsCancel,notifyOnExtensionChange:!0,storage:t}),h(Bi,{isOpen:b,headerText:`Do you want to save the changes you made to ${T}?`,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:$})]})]})}};let jo=xi;jo.COMPONENT="NotebookPanel";jo.POPPER_OPTIONS={placement:"bottom-end"};jo.DEFAULT_NAME="Untitled";jo.defaultProps={isDashboardActive:!0,isPreview:!1,session:null,sessionLanguage:null,defaultNotebookSettings:null};const XE=(t,e)=>{const n=mm(t),s=Nt(t),i=yS(t),o=pi(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}},Ks=Mt(XE,{saveSettings:Td},null,{forwardRef:!0})(jo);class _o extends S.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(ci,{ref:this.irisGridRef,onStateChange:this.handleGridStateChange,onPanelStateUpdate:this.handlePanelStateUpdate,...e,children:v(z,{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",v("span",{children:[h(j,{icon:cd,transform:"shrink-1",className:"mr-1"}),"Reload"]})]})})}}_o.defaultProps={panelState:null};_o.COMPONENT="PandasPanel";const jE=t=>{Hs(t);const{id:e,layout:n,registerComponent:s,hydrate:i}=t,o=S.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=ze.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=>zi.makeModel(void 0,b)),g={type:"react-component",component:Ui.COMPONENT,props:{localDashboardId:e,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=n;te.openComponent({root:f,config:g,dragEvent:r})},[e,n]);return S.exports.useEffect(function(){const l=[s(Ui.COMPONENT,Ui,i)];return()=>{l.forEach(a=>a())}},[i,s]),Ke(n.eventHub,Me.OPEN,o),h(pe,{})},QE=t=>{Hs(t);const{id:e,layout:n}=t,s=S.exports.useCallback(({metadata:i,panelId:o=ze.generate(),table:r})=>{const{settings:l}=i,a=()=>zi.makeModelFromSettings(l,r),d=xe.titleFromSettings(l),c={type:"react-component",component:Ui.COMPONENT,props:{localDashboardId:e,id:o,metadata:i,makeModel:a},title:d,id:o},{root:u}=n;te.openComponent({root:u,config:c})},[e,n]);return Ke(n.eventHub,vt.CREATE_CHART,s),h(pe,{})},ct=X.module("ConsolePlugin");function Uh(t){return t.notebook!==void 0}function ZE(t){Hs(t)}const JE=t=>{ZE(t);const{id:e,hydrateConsole:n,layout:s,panelManager:i,registerComponent:o,notebooksUrl:r}=t,l=S.exports.useRef(0),[a]=S.exports.useState(new Map),[d]=S.exports.useState(new Map),c=ed(),u=S.exports.useCallback(()=>i.getLastUsedPanelOfType(Oi),[i]),m=S.exports.useCallback((N,k=!0,_=!0)=>{if(!(N&&N.trim()))ct.info("Ignoring empty code");else{const G=u();if(!G||!(G instanceof Oi.WrappedComponent)){ct.error("Console panel not found");return}ct.debug("Send command: ",N,k,_),G.addCommand(N,k,_)}},[u]),p=S.exports.useCallback(N=>{c(gE(e,N))},[c,e]),g=S.exports.useCallback(({language:N})=>{const k=N==="python"?"py":N;let _=null;return k==null?(ct.debug("No extension for language",N),_=`Untitled-${l.current}`):_=`Untitled-${l.current}.${k}`,l.current+=1,_},[]),f=S.exports.useCallback((N,k=!0)=>{const{id:_}=N;return _!=null&&a.has(_)?a.get(_):_!=null&&d.has(_)?d.get(_):k?ze.generate():null},[a,d]),b=S.exports.useCallback((N,k)=>{te.renameComponent(s.root,{id:N},k)},[s.root]),C=S.exports.useCallback((N,k)=>{ct.debug("Rename file panel",N,k);let _;if(a.has(N)&&(_=a.get(N),a.delete(N),_!=null&&a.set(k,_)),d.has(N)&&(_=d.get(N),d.delete(N),_!=null&&d.set(k,_)),_===void 0){ct.debug2(`File ${N} isn't open, no need to rename the tab`);return}b(_,ce.getBaseName(k))},[a,d,b]),w=S.exports.useCallback(N=>{const k=f(N,!1);if(k==null){ct.error("Could not find panel id for file metadata",N);return}te.activateTab(s.root,{id:k})},[f,s.root]),T=S.exports.useCallback((N,k,_)=>{if(ct.debug("registerFilePanel",N,k,_),k==null||k.id==null){ct.debug("Ignore empty file id",k);return}const{id:V}=k;if(_){d.set(V,N);return}if(a.has(V)){const G=a.get(V);if(N===G){ct.debug(`Update tab title for file ${V}`);const{itemName:Q}=k;C(V,ce.getBaseName(Q))}else ct.error(`File ${V} already associated with a different tab ${G}`);return}a.set(V,N),d.has(V)&&d.delete(V)},[a,d,C]),y=S.exports.useCallback((N,k)=>{if(ct.debug("unregisterFileTab",N,k),N==null||N.id==null){ct.debug("Ignore empty file id",N);return}const{id:_}=N;if(k){d.delete(_);return}a.delete(_)},[a,d]),E=S.exports.useCallback(N=>{ct.debug("closeFilePanel",N);const{id:k}=N;let _=null,V=!1;if(a.has(k))_=a.get(k);else if(d.has(k))_=d.get(k),V=!0;else{ct.debug(`File ${k} isn't open, ignore close event`);return}y(N,V),te.closeComponent(s.root,{id:_})},[s.root,a,d,y]),I=S.exports.useCallback(N=>{const{itemName:k}=N;return ce.getBaseName(k)},[]),D=S.exports.useCallback(N=>{const{id:k}=N;return ct.debug("fileIsOpen",N,k,a),k!=null&&a.has(k)},[a]),F=S.exports.useCallback(N=>{const{id:k}=N;return ct.debug("fileIsOpenAsPreview",N,k,d),k!=null&&d.has(k)},[d]),x=S.exports.useCallback(N=>{if(N==null)return;const k=i.getOpenedPanelById(N);k&&Uh(k)&&k.focus()},[i]),U=S.exports.useCallback(({id:N,settings:k,fileMetadata:_,session:V,sessionLanguage:G,isPreview:Q=!1})=>{const J={settings:k,fileMetadata:_},ve=I(_);return{type:"react-component",component:Ks.COMPONENT,isFocusOnShow:!1,props:{localDashboardId:e,metadata:{id:N},session:V,sessionLanguage:G,panelState:J,isPreview:Q,notebooksUrl:r},title:ve,id:N}},[I,e,r]),$=S.exports.useCallback((N,k,_,V={id:null,itemName:g(_)})=>{const G=f(V);if(D(V)&&G!=null){ct.debug("File is already open, focus panel"),w(V),x(G);return}const Q=te.getStackForComponentTypes(s.root,[Ks.COMPONENT]),J=U({id:G,settings:_,fileMetadata:V,session:N,sessionLanguage:k});ct.debug("createNotebook",J,a),te.openComponentInStack(Q,J)},[D,x,g,f,s.root,U,a,w]),O=S.exports.useCallback((N,k,_,V,G=!1)=>{ct.debug("selectNotebook",V,G);const Q=D(V),J=F(V);if(Q){if(w(V),G){const ee=f(V);x(ee)}return}if(J&&!G){w(V);return}const[ve]=Array.from(d.values());let le=null,be=null;ve!=null&&(le=ve,be=te.getStackForConfig(s.root,{component:Ks.COMPONENT,id:le})),be==null&&(le=f(V),be=te.getStackForComponentTypes(s.root,[Ks.COMPONENT]));const ke=U({id:le,settings:_,fileMetadata:V,session:N,sessionLanguage:k,isPreview:!G});te.openComponentInStack(be,ke),G&&x(le)},[w,D,F,x,f,s.root,U,d]),H=S.exports.useCallback((N,k,_={},V=!0)=>{const G=i.getLastUsedPanelOfType(Ks);G&&Uh(G)?_!=null&&_.value!=null&&G.notebook!=null&&G.notebook.append(_.value):V&&$(N,k,_)},[$,i]),L=S.exports.useCallback((N,k)=>Pa.hydrate({...N,notebooksUrl:r},k),[r]);return S.exports.useEffect(function(){const k=[o(Oi.COMPONENT,Oi,n),o(nl.COMPONENT,nl),o(sl.COMPONENT,sl),o(ol.COMPONENT,ol),o(Ks.COMPONENT,Ks,L)];return()=>{k.forEach(_=>_())}},[o,n,L]),Ke(s.eventHub,Ct.SEND_COMMAND,m),Ke(s.eventHub,Ct.SETTINGS_CHANGED,p),Ke(s.eventHub,Ve.CLOSE_FILE,E),Ke(s.eventHub,Ve.CREATE_NOTEBOOK,$),Ke(s.eventHub,Ve.SELECT_NOTEBOOK,O),Ke(s.eventHub,Ve.RENAME,b),Ke(s.eventHub,Ve.RENAME_FILE,C),Ke(s.eventHub,Ve.SEND_TO_NOTEBOOK,H),Ke(s.eventHub,Ve.REGISTER_FILE,T),Ke(s.eventHub,Ve.UNREGISTER_FILE,y),h(pe,{})},So=X.module("FilterPlugin");function Bh(t,e){return t.concat(e)}const e1=t=>{Hs(t);const{id:e,layout:n,registerComponent:s}=t,i=ed(),[o]=S.exports.useState(()=>new Map),[r]=S.exports.useState(()=>new Map),[l]=S.exports.useState(()=>new Map),a=S.exports.useCallback(()=>{const b=Array.from(o.values()).reduce(Bh,[]).sort((T,y)=>{const E=sn.toLower(T.name),I=sn.toLower(y.name);if(E!==I)return E>I?1:-1;const D=sn.toLower(T.type),F=sn.toLower(y.type);return D!==F?D>F?1:-1:0}).reduce((T,y)=>((T.length===0||sn.toLower(T[T.length-1].name)!==sn.toLower(y.name)||sn.toLower(T[T.length-1].type)!==sn.toLower(y.type))&&T.push(y),T),[]),C=Array.from(r.values()).reduce(Bh,[]).sort((T,y)=>T.timestamp-y.timestamp),w=new Map(l);So.debug("sendUpdate",{columns:b,filters:C,tableMap:w}),i(Yn(e,{columns:b,filters:C,tableMap:w}))},[i,e,o,r,l]),d=S.exports.useCallback((b,C)=>{So.debug2("handleColumnsChanged",b,C),o.set(b,[].concat(C)),a()},[o,a]),c=S.exports.useCallback((b,C)=>{So.debug2("handleFiltersChanged",b,C),r.set(b,[].concat(C)),a()},[r,a]),u=S.exports.useCallback((b,C)=>{So.debug2("handleTableChanged",b,C),l.set(te.getIdFromPanel(b),C),a()},[l,a]),m=S.exports.useCallback(b=>{So.debug2("handlePanelUnmount",b),o.delete(b),r.delete(b),l.delete(te.getIdFromPanel(b)),a()},[o,r,l,a]),p=S.exports.useCallback(({title:b="DropdownFilter",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:di.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),g=S.exports.useCallback(({title:b="InputFilter",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:xo.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]),f=S.exports.useCallback(({title:b="FilterSets",metadata:C={},panelState:w=null,id:T=ze.generate(),focusElement:y=te.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:I=null})=>{const D={type:"react-component",component:Ca.COMPONENT,props:{id:T,metadata:C,panelState:w,localDashboardId:e},title:b,id:T},{root:F}=n;te.openComponent({root:F,config:D,focusElement:y,createNewStack:E,dragEvent:I})},[n,e]);return S.exports.useEffect(function(){const C=[s(di.COMPONENT,di),s(xo.COMPONENT,xo),s(Ca.COMPONENT,Ca)];return()=>{C.forEach(w=>w())}},[s]),Ke(n.eventHub,He.COLUMNS_CHANGED,d),Ke(n.eventHub,He.FILTERS_CHANGED,c),Ke(n.eventHub,He.TABLE_CHANGED,u),Ke(n.eventHub,He.OPEN_DROPDOWN,p),Ke(n.eventHub,He.OPEN_INPUT,g),Ke(n.eventHub,He.OPEN_FILTER_SET_MANAGER,f),Ke(n.eventHub,Me.UNMOUNT,m),h(pe,{})},t1=[dh.VariableType.TABLE,dh.VariableType.TREETABLE],n1=t=>{Hs(t);const{getDownloadWorker:e,loadPlugin:n,id:s,layout:i,registerComponent:o,hydrate:r,theme:l}=t,a=S.exports.useCallback(({dragEvent:d,fetch:c,panelId:u=ze.generate(),widget:m})=>{const{name:p,type:g}=m;if(!t1.includes(g))return;const f={name:p,table:p},b=()=>c().then(T=>qd.makeModel(T)),C={type:"react-component",component:ci.COMPONENT,props:{getDownloadWorker:e,loadPlugin:n,localDashboardId:s,id:u,metadata:f,makeModel:b,theme:l},title:p,id:u},{root:w}=i;te.openComponent({root:w,config:C,dragEvent:d})},[e,s,i,n,l]);return S.exports.useEffect(function(){const c=[o(ci.COMPONENT,ci,r)];return()=>{c.forEach(u=>u())}},[r,o]),Ke(i.eventHub,Me.OPEN,a),h(pe,{})};function Lp(t){return typeof t.getCoordinateForColumn=="function"}function $h(t){const e=t;return Lp(t)&&typeof e.setFilterMap=="function"&&typeof e.unsetFilterValue=="function"}const wo=X.module("LinkerUtils"),Ap=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 wo.debug2("Incompatible panel ids",t,e,n),"invalid";if(t.panelComponent==null||e.panelComponent==null)return wo.error("PanelComponent should not be null",t,e),"invalid";const s=(l=Ap.ALLOWED_LINKS.get(t.panelComponent))==null?void 0:l.includes(e.panelComponent);if(s===void 0||!s)return wo.debug2("Incompatible panel components",t,e),"invalid";const{columnType:i}=t,{columnType:o}=e;if(!(o===null||P.isCompatibleType(i,o)))return wo.debug2("Incompatible type",i,o),"invalid";switch(e.panelComponent){case te.getComponentName(Ui):case te.getComponentName(ci):return"tableLink";case te.getComponentName(di):return"filterSource"}return wo.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:ze.generate(),start:{...i.start,panelId:n}}):((o=i.end)==null?void 0:o.panelId)===e&&s.push({...i,id:ze.generate(),end:{...i.end,panelId:n}})}),s}};let ti=Ap;ti.ALLOWED_LINKS=new Map([[te.getComponentName(ci),[te.getComponentName(ci),te.getComponentName(Ui),te.getComponentName(di)]]]);const Wh=.015,zh=1.5,Pp=12,Hp=12,Gh=2,Fr=Math.sqrt((Hp*.5)**2+Pp**2),Kh=Math.asin(Hp*.5/Pp),qh=15,qa=class extends S.exports.PureComponent{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`}constructor(t){super(t),this.handleClick=this.handleClick.bind(this)}handleClick(t){t.stopPropagation(),t.preventDefault();const{id:e,onClick:n}=this.props;n(e)}render(){const{className:t,x1:e,y1:n,x2:s,y2:i,id:o}=this.props,r=Math.sqrt((e-s)**2+(n-i)**2),l=Math.atan2(i-n,s-e),a=Math.sin(l),d=Math.cos(l)+2,c=window.innerWidth,u=window.innerHeight,m=0,p=0,g=Math.max(m,Math.min(e+(s-e)/2+a*(r*Wh)**zh,c)),f=Math.max(p,Math.min(n+(i-n)/2+d*(r*Wh)**zh,u)),b=`M ${e} ${n} Q ${g} ${f} ${s} ${i}`,C=`M ${m} ${p} L ${m} ${u} L ${c} ${u} L ${c} ${p} z
|
|
38
38
|
${qa.makeCirclePath(e,n,qh)}
|
|
39
39
|
${qa.makeCirclePath(s,i,qh)}`,w=`link-select-clip-${o}`,T=Math.atan2(i-f,s-g),y=T-Kh+Math.PI,E=T+Kh+Math.PI,I=s+Math.cos(T)*Gh,D=i+Math.sin(T)*Gh,F=I+Math.cos(y)*Fr,x=D+Math.sin(y)*Fr,U=I+Math.cos(E)*Fr,$=D+Math.sin(E)*Fr,O=`${I},${D} ${F},${x} ${U},${$}`;return v("svg",{className:t,children:[h("clipPath",{id:w,children:h("path",{d:C,clipRule:"evenodd"})}),h("path",{className:"link-select",d:b,onClick:this.handleClick,clipPath:`url(#${w})`}),h("path",{className:"link-background",d:b}),h("path",{className:"link-foreground",d:b}),h("circle",{className:"link-dot",cx:e,cy:n,r:"5"}),h("polygon",{className:"link-triangle",points:O})]})}};let Vp=qa;Vp.defaultProps={className:"",onClick(){}};const ba=X.module("LinkerOverlayContent");class Up extends S.exports.Component{constructor(e){super(e),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleEscapePressed=this.handleEscapePressed.bind(this),this.state={mouseX:void 0,mouseY:void 0}}componentDidMount(){window.addEventListener("mousemove",this.handleMouseMove,!0)}componentDidCatch(e,n){ba.error("componentDidCatch",e,n)}componentWillUnmount(){window.removeEventListener("mousemove",this.handleMouseMove,!0)}getPointFromLinkPoint(e){const{panelManager:n}=this.props,{panelId:s,columnName:i}=e,o=n.getOpenedPanelById(s);if(o!=null){if(!Lp(o))throw new Error(`Panel does not have getCoordinateForColumn method: ${s}`);try{const l=o.getCoordinateForColumn(i);if(l!=null)return l}catch{ba.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 te.getTabPoint(r)}handleMouseMove(e){this.setState({mouseX:e.clientX,mouseY:e.clientY})}handleEscapePressed(){const{onCancel:e}=this.props;e()}render(){const{disabled:e,links:n,messageText:s,onLinkDeleted:i,onAllLinksDeleted:o,onDone:r}=this.props,{mouseX:l,mouseY:a}=this.state,d=n.map(c=>{try{const{id:u,type:m,isReversed:p,start:g,end:f}=c;let[b,C]=this.getPointFromLinkPoint(g),w=l!=null?l:b,T=a!=null?a:C;if(f!=null&&([w,T]=this.getPointFromLinkPoint(f)),p!=null&&p){const[E,I]=[b,C];[b,C]=[w,T],[w,T]=[E,I]}const y=W("linker-link",{disabled:e},{"link-filter-source":m==="filterSource"},{"link-invalid":m==="invalid"},{interactive:c.end==null});return{x1:b,y1:C,x2:w,y2:T,id:u,className:y}}catch(u){return ba.error("Unable to get point for link",c,u),null}}).filter(c=>c!=null);return v("div",{className:"linker-overlay",children:[h("svg",{children:d.map(({x1:c,y1:u,x2:m,y2:p,id:g,className:f})=>h(Vp,{className:f,id:g,x1:c,y1:u,x2:m,y2:p,onClick:i},g))}),v("div",{className:"linker-toast-dialog",children:[h("div",{className:"toast-body",children:s}),v("div",{className:"toast-footer",children:[h(z,{kind:"secondary",onClick:o,children:"Clear All"}),h(z,{kind:"primary",onClick:r,children:"Done"})]})]}),h(oe,{actions:[{action:this.handleEscapePressed,shortcut:ms.LINKER_CLOSE,isGlobal:!0}]})]})}}Up.defaultProps={disabled:"false"};const zt=X.module("Linker"),s1=(t,e)=>({activeTool:Rl(t),isolatedLinkerPanelId:Qd(t,e.localDashboardId),links:io(t,e.localDashboardId),timeZone:Il(t)}),i1=Mt(s1,{setActiveTool:Dl,setDashboardLinks:Jd,addDashboardLinks:uE,deleteDashboardLinks:mE,setDashboardIsolatedLinkerPanelId:Rp,setDashboardColumnSelectionValidator:pE});class o1 extends S.exports.Component{constructor(e){super(e),this.getCachedLinks=me((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.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.isColumnSelectionValid=this.isColumnSelectionValid.bind(this),this.state={linkInProgress:void 0}}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()}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(vt.COLUMN_SELECTED,this.handleGridColumnSelect),n.on(vt.DATA_SELECTED,this.handleUpdateValues),n.on(vt.STATE_CHANGED,this.handleStateChange),n.on(Ki.COLUMN_SELECTED,this.handleChartColumnSelect),n.on(Me.CLONED,this.handlePanelCloned),n.on(He.COLUMN_SELECTED,this.handleFilterColumnSelect),n.on(He.COLUMNS_CHANGED,this.handleColumnsChanged),n.on(Me.CLOSED,this.handlePanelClosed)}stopListening(e){e.off("stateChanged",this.handleLayoutStateChanged);const{eventHub:n}=e;n.off(vt.COLUMN_SELECTED,this.handleGridColumnSelect),n.off(vt.DATA_SELECTED,this.handleUpdateValues),n.off(vt.STATE_CHANGED,this.handleStateChange),n.off(Ki.COLUMN_SELECTED,this.handleChartColumnSelect),n.off(Me.CLONED,this.handlePanelCloned),n.off(He.COLUMN_SELECTED,this.handleFilterColumnSelect),n.off(He.COLUMNS_CHANGED,this.handleColumnsChanged),n.off(Me.CLOSED,this.handlePanelClosed)}handleCancel(){const{linkInProgress:e}=this.state;if(e==null){const{setActiveTool:n}=this.props;n(hn.DEFAULT)}this.setState({linkInProgress:void 0})}handleDone(){const{setActiveTool:e}=this.props;e(hn.DEFAULT),this.setState({linkInProgress:void 0})}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=te.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(hn.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=te.getIdFromPanel(e);if(i==null){zt.error("Invalid panelId",e);return}const o=s.filter(({start:r,end:l})=>r.panelId===i&&ti.findColumn(n,r)==null||l!=null&&l.panelId===i&&ti.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=te.getIdFromPanel(e);if(l==null)return;const a=te.getComponentNameFromPanel(e),{name:d,type:c}=n;if(r==null||r.start==null){const u={id:ze.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{start:u,id:m,isReversed:p}=r,g={panelId:l,panelComponent:a,columnName:d,columnType:c},f=ti.getLinkType(p!==void 0&&p?g:u,p!==void 0&&p?u:g,i!=null?i:o);switch(f){case"invalid":zt.debug("Ignore invalid link connection",r,g);return;case"filterSource":{const{links:C}=this.props,w=p!==void 0&&p?u.panelId:g.panelId,T=C.filter(({end:y})=>(y==null?void 0:y.panelId)===w);this.deleteLinks(T);break}}const b={start:p!==void 0&&p?g:u,end:p!==void 0&&p?u:g,id:m,type:f};zt.info("creating link",b),this.setState({linkInProgress:void 0},()=>{this.addLinks([b])})}}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?$h(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?$h(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.setState({linkInProgress:void 0})}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=te.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}=i[l];if(a.panelId===s&&d!=null){const{panelId:c,columnName:u,columnType:m}=d,p=r.has(c)?r.get(c):new Map,{isExpandable:g,isGrouped:f}=n[a.columnName];let{value:b}=n[a.columnName],C=`${b}`;b===null&&g&&f&&(b=void 0),m!=null&&P.isDateType(m)&&(C=new dt({timeZone:o,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:ps.FULL_DATE_FORMAT}).format(b)),p.set(u,{columnType:m,text:C,value:b}),r.set(c,p)}}r.forEach((l,a)=>{this.setPanelFilterMap(a,l)})}handlePanelCloned(e,n){const{links:s}=this.props,i=te.getIdFromPanel(e),o=n.id;if(i!=null){const r=ti.cloneLinksForPanel(s,i,o);this.addLinks(r)}}handlePanelClosed(e){zt.debug(`Panel ${e} closed, deleting links.`),this.deleteLinksForPanelId(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===hn.LINKER}updateSelectionValidators(){const{activeTool:e,setDashboardColumnSelectionValidator:n,localDashboardId:s}=this.props;switch(e){case hn.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=te.getIdFromPanel(e);if(l==null)return!1;const a={panelId:l,panelComponent:te.getComponentNameFromPanel(e),columnName:n.name,columnType:n.type},d=o!==void 0&&o?ti.getLinkType(a,r,i):ti.getLinkType(r,a,i);return this.updateLinkInProgressType(s,d),d!=="invalid"}render(){const{links:e,isolatedLinkerPanelId:n,panelManager:s}=this.props,{linkInProgress:i}=this.state,o=this.isOverlayShown(),r=i!=null&&i.start!=null,l=n===void 0?"Click a column source, then click a column target to create a filter link. Remove a filter link by clicking again to erase. Click done when finished.":"Create a link between the source column button and a table column by clicking on one, then the other. Remove the link by clicking it directly. Click done when finished.";return h(pe,{children:h(ut,{in:o,timeout:Et.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,onExited:this.handleExited,children:h(Up,{disabled:r,panelManager:s,links:this.getCachedLinks(e,i,n),messageText:l,onLinkDeleted:this.handleLinkDeleted,onAllLinksDeleted:this.handleAllLinksDeleted,onDone:this.handleDone,onCancel:this.handleCancel})})})}}const r1=i1(o1),l1=t=>{Hs(t);const{id:e,layout:n,panelManager:s}=t;return h(r1,{layout:n,localDashboardId:e,panelManager:s})},Ya=class{static getNewMarkdownTitle(t){let e=`${Ya.DEFAULT_TITLE}`,n=0;for(;t.indexOf(e)>=0;)n+=1,e=`${Ya.DEFAULT_TITLE}-${n}`;return e}};let ko=Ya;ko.DEFAULT_TITLE="Note";ko.DEFAULT_CONTENT=`# Markdown Note
|
|
40
40
|
|
|
41
41
|
This note can be edited using **markdown** for styling.`;const a1=t=>{Hs(t);const{id:e,layout:n,panelManager:s,registerComponent:i}=t,o=S.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===ko.DEFAULT_CONTENT?null:xd(l)},[]),r=S.exports.useCallback(({title:l="",metadata:a={},id:d=ze.generate(),focusElement:c=te.DEFAULT_FOCUS_SELECTOR,createNewStack:u=!1,dragEvent:m=null}={})=>{const p=s.getOpenedPanelConfigsOfType(bo.COMPONENT),g=s.getClosedPanelConfigsOfType(bo.COMPONENT),f=p.map(y=>{var E;return(E=y.title)!=null?E:""}),b=l!=null&&l!==""?l:ko.getNewMarkdownTitle(f),C=g.length>0?null:ko.DEFAULT_CONTENT,w={type:"react-component",component:bo.COMPONENT,props:{id:d,metadata:a,panelState:{content:C},localDashboardId:e},title:b,id:d},{root:T}=n;te.openComponent({root:T,config:w,focusElement:c,createNewStack:u,dragEvent:m})},[e,n,s]);return S.exports.useEffect(function(){const a=[i(bo.COMPONENT,bo,_d,o)];return()=>{a.forEach(d=>d())}},[o,i]),Ke(n.eventHub,Tp.OPEN,r),h(pe,{})},d1=t=>{Hs(t);const{hydrate:e,id:n,layout:s,registerComponent:i}=t,o=S.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=ze.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=>qd.makeModel(b)),g={type:"react-component",component:_o.COMPONENT,props:{localDashboardId:n,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=s;te.openComponent({root:f,config:g,dragEvent:r})},[n,s]);return S.exports.useEffect(function(){const l=[i(_o.COMPONENT,_o,e)];return()=>{l.forEach(a=>a())}},[e,i]),Ke(s.eventHub,Me.OPEN,o),h(pe,{})};class Cn{}Cn.DROPDOWN_FILTER="ControlType.DROPDOWN_FILTER";Cn.INPUT_FILTER="ControlType.INPUT_FILTER";Cn.MARKDOWN="ControlType.MARKDOWN";Cn.FILTER_SET_MANAGER="ControlType.FILTER_SET_MANAGER";const c1=R.exports.shape({state:R.exports.shape({panelState:R.exports.shape({})})}),h1=R.exports.shape({panelId:R.exports.string.isRequired,columnName:R.exports.string.isRequired,columnType:R.exports.string.isRequired}),Yh=R.exports.shape({panelId:R.exports.string.isRequired,columnName:R.exports.string.isRequired}),Bp=R.exports.shape({start:Yh,end:Yh,id:R.exports.string,isReversed:R.exports.bool}),u1=R.exports.arrayOf(Bp),m1=R.exports.shape({name:R.exports.string.isRequired,operateAs:R.exports.string.isRequired,groups:R.exports.arrayOf(R.exports.string).isRequired,permissions:R.exports.shape({isSuperUser:R.exports.bool.isRequired,isQueryViewOnly:R.exports.bool.isRequired,isNonInteractive:R.exports.bool.isRequired,canUsePanels:R.exports.bool.isRequired,canCreateDashboard:R.exports.bool.isRequired,canCreateCodeStudio:R.exports.bool.isRequired,canCreateQueryMonitor:R.exports.bool.isRequired,canCopy:R.exports.bool.isRequired,canDownloadCsv:R.exports.bool.isRequired}).isRequired});Object.freeze({LinkPoint:h1,Link:Bp,Links:u1,Panel:c1,User:m1});const p1=(t,e)=>t[e]===null?null:R.exports.bool,g1=(t,e)=>t[e]===null?null:R.exports.string;Object.freeze({nullableBoolean:p1,nullableString:g1});X.module("StorageTableViewportUpdater");class Xh{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(Yt.and)}),{filterItems:n,filterOperators:s}}static combineFilterConfigs(e,n,s=Yt.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 Sa=X.module("PouchStorageTable"),f1="Deephaven.";ou.plugin(ug);function C1(t,e){switch(t){case q.in:case q.contains:return{$regex:new RegExp(`${e}`)};case q.inIgnoreCase:return{$regex:new RegExp(`${e}`,"i")};case q.eq:return{$eq:e};case q.notEq:return{$neq:e};case q.greaterThan:return{$gt:e};case q.greaterThanOrEqualTo:return{$gte:e};case q.lessThan:return{$lt:e};case q.lessThanOrEqualTo:return{$lte:e};case q.startsWith:return{$regex:new RegExp(`^(?${e}).*`)};default:throw new Error(`Unsupported type: ${t}`)}}function b1(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]:C1(l,a)};if(i===0)s=d;else if(s!==null&&i-1<n.length){const c=n[i-1];if(c===Yt.and)s={$and:[s,d]};else if(c===Yt.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 wa(t=[]){return{$and:[...t.map(e=>b1(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function S1(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 w1{constructor(e){this.listeners=[],this.itemListeners=new Map,this.currentSize=0,this.currentReverse=!1,this.currentFilter=null,this.currentSort=null,this.db=new ou(`${f1}${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){Sa.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=Ee.makeCancelable(this.db.find({selector:wa((n=this.currentFilter)!=null?n:[]),fields:[]}));const s=await this.infoUpdatePromise;this.currentSize=s.docs.length,this.sendUpdate()}catch(s){if(!Ee.isCanceled(s))throw Sa.error("Unable to refreshInfo",s),s}}async refreshData(){var e,n;if(!!this.currentViewport)try{const{currentViewport:s}=this,i=S1(this.currentSort,this.currentReverse);(e=this.viewportUpdatePromise)==null||e.cancel(),this.viewportUpdatePromise=Ee.makeCancelable(this.db.find({selector:wa((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(!Ee.isCanceled(s))throw Sa.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:wa((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 jh extends w1{constructor(e){super(`CommandHistoryStorage.${e}`)}setSearch(e){this.setFilters(e?[Xh.makeFilterConfig([Xh.makeFilterItem("name",q.contains,e)])]:[])}}const Qh=X.module("PouchCommandHistoryStorage");class v1{constructor(){this.updateTableMap=new Map}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new jh(e)),this.updateTableMap.get(e)}async getTable(e){return new jh(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 Qh.debug("Updating item",o),await s.put(o),Qh.debug("Update saved"),n}listenItem(e,n,s){return this.getUpdateTable(e).onItemUpdate(n,s)}}const $p="SET_LAYOUT_STORAGE",T1=t=>({type:$p,payload:t}),Wp="/ide/assets/community-wordmark-app.d2c5c1eb.svg";const xs=X.module("FormattingSectionContent");function E1(t){return t.formatString!=null}const at=class extends S.exports.PureComponent{constructor(t){super(t),this.getCachedColumnTypeOptions=Te(()=>at.renderColumnTypeOptions()),this.getCachedDateTimeFormatOptions=Te((c,u,m,p=!1,g=null)=>{const{timestampAtMenuOpen:f}=this.state;return at.renderDateTimeOptions(f,c,u,m,p,g)}),this.debouncedCommitChanges=je(this.commitChanges.bind(this),at.inputDebounceTime),this.handleDefaultDateTimeFormatChange=this.handleDefaultDateTimeFormatChange.bind(this),this.handleDefaultDecimalFormatChange=this.handleDefaultDecimalFormatChange.bind(this),this.handleDefaultIntegerFormatChange=this.handleDefaultIntegerFormatChange.bind(this),this.handleFormatRuleEntered=this.handleFormatRuleEntered.bind(this),this.handleFormatRuleChange=this.handleFormatRuleChange.bind(this),this.handleFormatRuleCreate=this.handleFormatRuleCreate.bind(this),this.handleFormatRuleDelete=this.handleFormatRuleDelete.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.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}}static focusFirstInputInContainer(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}static isSameOptions(t,e){return t.defaultFormatString===e.defaultFormatString}static isSameDecimalOptions(t,e){return at.isSameOptions(t,e)}static isSameIntegerOptions(t,e){return at.isSameOptions(t,e)}static isValidColumnName(t){return t!==""&&gs.isValidColumnName(t)}static isValidFormat(t,e){if(!t||e.formatString==null||!E1(e))return!1;switch(t){case"datetime":return dt.isValid(e);case"decimal":return Ae.isValid(e);case"int":return it.isValid(e);default:return xs.warn("Trying to validate format of unknown type"),!0}}static removeFormatRuleExtraProps(t){const{id:e,isNewRule:n,...s}=t;return s}static isFormatRuleValidForSave(t){return at.isValidColumnName(t.columnName)&&at.isValidFormat(t.columnType,t.format)}static renderTimeZoneOptions(){return Rn.TIME_ZONES.map(e=>{const{label:n,value:s}=e;return h("option",{value:s,children:n},s)})}static renderColumnTypeOptions(){const e=[{value:P.dataType.DATETIME,label:"DateTime"},{value:P.dataType.DECIMAL,label:"Decimal"},{value:P.dataType.INT,label:"Integer"}].map(n=>h("option",{value:n.value,children:n.label},`key-columnType-${n.value}`));return v(pe,{children:[h("option",{disabled:!0,value:"",children:"Select Type"},"key-columnType-placeholder"),e]})}static renderDateTimeOptions(t,e,n,s,i,o){const r=new un([],{timeZone:e,showTimeZone:n,showTSeparator:s}),l=i?dt.getGlobalFormats(n,s):dt.getFormats(n,s);return o&&!l.includes(o)&&l.unshift(o),l.map(a=>{const d=dt.makeFormat("",a,dt.TYPE_GLOBAL);return h("option",{value:a,children:r.getFormattedString(t,P.dataType.DATETIME,"",d)},a)})}componentDidMount(){at.focusFirstInputInContainer(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}handleDefaultDateTimeFormatChange(t){xs.debug("handleDefaultDateTimeFormatChange",t.target.value),this.setState({defaultDateTimeFormat:t.target.value},()=>{this.debouncedCommitChanges()})}handleDefaultDecimalFormatChange(t){xs.debug("handleDefaultDecimalFormatChange",t.target.value),this.setState({defaultDecimalFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleDefaultIntegerFormatChange(t){xs.debug("handleDefaultIntegerFormatChange",t.target.value),this.setState({defaultIntegerFormatOptions:{defaultFormatString:t.target.value}},()=>{this.debouncedCommitChanges()})}handleFormatRuleChange(t,e,n){this.setState(s=>{const{formatSettings:i}=s;A(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:P.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()})}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;xs.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s},()=>{this.debouncedCommitChanges()})}handleResetTimeZone(){const{defaults:t}=this.props,{timeZone:e}=t;xs.debug("handleResetTimeZone"),this.setState({timeZone:e},()=>{this.debouncedCommitChanges()})}handleResetDecimalFormat(){const{defaults:t}=this.props,{defaultDecimalFormatOptions:e}=t;xs.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleResetIntegerFormat(){const{defaults:t}=this.props,{defaultIntegerFormatOptions:e}=t;xs.debug("handleResetIntegerFormat"),this.setState({defaultIntegerFormatOptions:e},()=>{this.debouncedCommitChanges()})}handleTruncateNumbersWithPoundChange(){this.setState(t=>({truncateNumbersWithPound:!t.truncateNumbersWithPound}),()=>{this.debouncedCommitChanges()})}handleFormatRuleEntered(t){this.scrollToFormatBlockBottom(),at.focusFirstInputInContainer(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(at.isFormatRuleValidForSave).map(at.removeFormatRuleExtraProps))!=null?m:[],{settings:d,saveSettings:c}=this.props,u={...d,formatter:a,defaultDateTimeFormat:e,showTimeZone:n,showTSeparator:s,timeZone:i,truncateNumbersWithPound:l};at.isValidFormat(P.dataType.DECIMAL,Ae.makeCustomFormat(o.defaultFormatString))&&(u.defaultDecimalFormatOptions=o),at.isValidFormat(P.dataType.INT,it.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.")),at.isValidColumnName(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.")):at.isValidFormat(t.columnType,t.format)||(e.hasFormatError=!0,n.push("Invalid formatting rule.")),e.message=n.join(`
|
|
42
|
-
`)),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 v("fieldset",{className:"container-fluid format-rule-container",children:[v("div",{className:"form-row",children:[v("div",{className:"form-group col-7 mb-2",children:[h("label",{htmlFor:n,children:"Column Name"}),h("input",{id:n,className:W("form-control",{"is-invalid":d.hasColumnNameError}),"data-lpignore":!0,type:"text",value:e.columnName,onChange:r,onBlur:l})]}),v("div",{className:"form-group col mb-2",children:[h(z,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(t),icon:_n,tooltip:"Delete"}),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:v("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(P.getNormalizedType(e)){case P.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(t,n,s,i);case P.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(t,n,s,i);case P.dataType.INT:return this.renderIntegerFormatRuleInput(t,n,s,i);default:return null}}renderDateTimeFormatRuleInput(t,e,n,s){const{showTimeZone:i,showTSeparator:o,timeZone:r}=this.state,l=n!=null&&n.formatString||"";return v("select",{className:W("custom-select",{"is-invalid":s}),value:l,id:e,onChange:a=>{const d=dt.makeFormat("",a.target.value,dt.TYPE_GLOBAL);this.handleFormatRuleChange(t,"format",d)},children:[h("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(r,i,o)]})}renderIntegerFormatRuleInput(t,e,n,s){const i=n!=null&&n.formatString||"";return h("input",{className:W("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:it.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:o=>{const r=it.makeFormat("",o.target.value,it.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",r)}})}renderDecimalFormatRuleInput(t,e,n,s){const i=n!=null&&n.formatString||"";return h("input",{className:W("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:Ae.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:o=>{const r=Ae.makeFormat("",o.target.value,Ae.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",r)}})}render(){const{defaults:t}=this.props,{formatRulesChanged:e,formatSettings:n,defaultDateTimeFormat:s,defaultDecimalFormatOptions:i,defaultIntegerFormatOptions:o,timeZone:r,showTimeZone:l,showTSeparator:a,truncateNumbersWithPound:d}=this.state,{defaultFormatString:c=Ae.DEFAULT_FORMAT_STRING}=i!=null?i:{},{defaultFormatString:u=it.DEFAULT_FORMAT_STRING}=o!=null?o:{},m=n.map((w,T)=>h(ut,{classNames:"fade",timeout:Et.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(T,w)},w.id)),p=h(z,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:As,children:"Add New Rule"}),g=r===t.timeZone,f=a===t.showTSeparator&&l===t.showTimeZone&&s===t.defaultDateTimeFormat,b=at.isSameDecimalOptions(i,t.defaultDecimalFormatOptions),C=at.isSameIntegerOptions(o,t.defaultIntegerFormatOptions);return v("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[v("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."}),v("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:r,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:at.renderTimeZoneOptions()})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:W("btn-reset","btn-reset-time-zone",{hidden:g})})})]}),v("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:s,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(r,l,a,!0,s)})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:W("btn-reset","btn-reset-date-time",{hidden:f})})})]}),h("div",{className:"form-row",children:h("div",{className:"offset-3 col-9",children:h(Bt,{checked:l!=null?l: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(Bt,{checked:a!=null?a:null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),v("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:W("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!at.isValidFormat(P.dataType.DECIMAL,Ae.makeCustomFormat(c))}),"data-lpignore":!0,placeholder:Ae.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:c,onChange:this.handleDefaultDecimalFormatChange})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:W("btn-reset","btn-reset-decimal",{hidden:b}),"data-testid":"btn-reset-decimal"})})]}),v("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:W("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!at.isValidFormat(P.dataType.INT,it.makeCustomFormat(u))}),"data-lpignore":!0,placeholder:it.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:u,onChange:this.handleDefaultIntegerFormatChange})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:W("btn-reset","btn-reset-integer",{hidden:C}),"data-testid":"btn-reset-integer"})})]}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(Bt,{checked:d!=null?d:null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Truncate numbers with #"})})})]}),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(mg,{appear:e,enter:e,exit:e,children:m}),p]})}};let cc=at;cc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:dt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:Ae.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:it.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:dt.DEFAULT_TIME_ZONE_ID}};cc.inputDebounceTime=250;const y1=t=>({formatter:SS(t),defaultDateTimeFormat:fS(t),defaultDecimalFormatOptions:CS(t),defaultIntegerFormatOptions:bS(t),showTimeZone:wS(t),showTSeparator:vS(t),truncateNumbersWithPound:TS(t),timeZone:Il(t),settings:Nt(t)}),I1=Mt(y1,{saveSettings:Td})(cc),R1=()=>{const[t,e]=S.exports.useState(!1),n=()=>{e(!t)};return v(z,{kind:"ghost",onClick:n,icon:Mf,children:["Legal Notices",v(Uo,{isOpen:t,toggle:n,className:"theme-bg-light",children:[h($o,{toggle:n,children:"Legal Notice"}),v(Bo,{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."}),v("p",{children:["\xA9 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})},rl=t=>{const{children:e,isExpanded:n,sectionKey:s,title:i,onToggle:o}=t;return v(pe,{children:[h("div",{children:v(z,{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(j,{transform:n?"flip-v":"",icon:ls})})]})}),h(gd,{in:n,autoFocusOnShow:!0,children:e})]})};rl.propTypes={children:R.exports.node,isExpanded:R.exports.bool.isRequired,sectionKey:R.exports.string.isRequired,title:R.exports.node.isRequired,onToggle:R.exports.func};rl.defaultProps={children:null,onToggle:()=>{}};function D1({shortcut:t,displayText:e,categoryName:n,onChange:s}){const[i,o]=S.exports.useState(e),[r,l]=S.exports.useState(t.getKeyState()),[a,d]=S.exports.useState(!1),[c,u]=S.exports.useState("");S.exports.useEffect(function(){o(e),l(t.getKeyState())},[e,t]),S.exports.useEffect(function(){o(Kt.getDisplayText(r)),t.matchesKeyState(r)&&d(!1)},[r,t]),S.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=Pe.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(T){if(T.stopPropagation(),T.preventDefault(),t.isEditable&&!T.repeat){const y=Kt.getKeyStateFromEvent(T),E=Kt.createKeyState([he.BACKSPACE]);Kt.doKeyStatesMatch(y,E)?l(Kt.NULL_KEY_STATE):l(y)}}function p(T){T.stopPropagation(),T.preventDefault(),t.matchesKeyState(r)||d(!0)}function g(){Ne.disableAllActions()}function f(){Ne.enableAllActions()}function b(){t.setKeyState(r),d(!1),s(t)}function C(){const T=t.getKeyState();l(T),d(!1)}function w(){d(!0),l(t.getDefaultKeyState())}return v(pe,{children:[v("div",{className:"shortcut-item-container",children:[v("label",{className:"shortcut-item-name",children:[t.name,t.tooltip!==void 0&&h(Be,{children:t.tooltip})]}),v("div",{className:"shortcut-item-input-container",children:[h("input",{className:W("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(z,{className:"reset-to-default-button",kind:"ghost",icon:h(j,{icon:_i,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:w})]})]}),a&&v("div",{className:W("shortcut-item-message-container",{"is-invalid":c}),children:[h("div",{className:"shortcut-item-message",children:c}),v("div",{className:"shortcut-item-message-buttons",children:[Kt.isValidKeyState(r)&&h(z,{kind:"ghost",onClick:b,children:"Confirm"}),h(z,{kind:"ghost",onClick:C,children:"Undo"})]})]})]})}function M1({shortcutOverrides:t={},settings:e,saveSettings:n}){const s=S.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(Pe.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),v(pe,{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(N1,{name:l.name,shortcuts:l.shortcuts,saveShortcutOverrides:s},l.name))]})}function N1({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]=S.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=S.exports.useMemo(()=>i.map(a=>a.getDisplayText()),[i]);return v("div",{className:"mt-3",children:[h("div",{className:"font-weight-bold",children:s(t)}),i.map((a,d)=>h(D1,{shortcut:a,displayText:l[d],categoryName:t,onChange:r},a.id))]})}const F1=t=>({settings:Nt(t),shortcutOverrides:ES(t)}),x1={saveSettings:Td},_1=Mt(F1,x1)(M1),Xa=new nf,ja=new Wr(Xa);function k1(){X.setLogLevel(parseInt("2",10)),Xa.enable(),ja.enable(),window!=null&&(window.DHLog=X,window.DHLogProxy=Xa,window.DHLogHistory=ja)}const O1="yyyy-MM-dd-HHmmss";function zp(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]=zp(o,a,n)}}}),s}function L1(){const t=Ml.getState();return JSON.stringify(zp(t),null,2)}function A1(t){const e={uiVersion:"0.22.1",userAgent:navigator.userAgent,...t};return JSON.stringify(e,null,2)}async function P1(t=`${M.i18n.DateTimeFormat.format(O1,new Date)}_support_logs`,e){const n=new ru,s=n.folder(t);s.file("console.txt",ja.getFormattedHistory()),s.file("redux.json",L1()),s.file("metadata.json",A1(e));const i=await n.generateAsync({type:"blob"}),o=document.createElement("a");o.href=URL.createObjectURL(i),o.download=`${t}.zip`,o.click()}const ni=class extends S.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:ni.FORMATTING_SECTION_KEY}}static focusFirstInputInContainer(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}componentDidMount(){ni.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;P1(void 0,Object.fromEntries(t))}render(){const t="0.22.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)=>v(pe,{children:[h("div",{children:a}),h("div",{children:d})]});return v("div",{className:"app-settings-menu",children:[v("header",{className:"app-settings-menu-header",children:[h("div",{className:"flex-spacer"}),h(z,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:h(j,{icon:Xi,transform:"grow-4"}),tooltip:"Close"})]}),v("div",{className:"app-settings-menu-content",ref:this.menuContentRef,children:[h("h5",{children:"Settings"}),h("hr",{className:"my-0"}),h(rl,{sectionKey:ni.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(ni.FORMATTING_SECTION_KEY),title:v(pe,{children:[h(j,{icon:Bf,transform:"grow-4",className:"mr-2"}),"Formatting & Time zone"]}),onToggle:this.handleSectionToggle,children:h(I1,{scrollTo:this.handleScrollTo})}),h(rl,{sectionKey:ni.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(ni.SHORTCUT_SECTION_KEY),title:v(pe,{children:[h(j,{icon:Lf,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:h(_1,{})}),v("div",{className:"app-settings-footer",children:[v("div",{className:"app-settings-footer-section",children:[v("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Support"}),v("div",{children:["GitHub:\xA0",h("a",{href:e,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:e})]}),h(z,{kind:"tertiary",className:"mt-2 py-2",onClick:this.handleExportSupportLogs,children:"Export Logs"})]}),v("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})]}),v("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Version"}),v("span",{className:"d-inline-block text-muted",children:[r," ",h(j,{icon:Rf}),h(Be,{interactive:!0,children:v("div",{className:"detailed-server-config",children:[l("Engine Version",r),l("Web UI Version",t),l("Java Version",o),l("Barrage Version",i)]})})]})]}),h("div",{className:"app-settings-footer-item",children:h(R1,{})})]}),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:Wp,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}};let Qo=ni;Qo.defaultProps={onDone:()=>{}};Qo.FORMATTING_SECTION_KEY="SettingsMenu.formatting";Qo.APPLICATION_SECTION_KEY="ApplicationMenu.settings";Qo.SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";const Zh=10,Li=t=>{const{forwardedProps:{menuItem:{action:e,title:n,disabled:s},iconElement:i,displayShortcut:o,isMouseSelected:r,isKeyboardSelected:l,closeMenu:a}}=t,d=S.exports.useRef(),c=S.exports.useRef(),u=S.exports.useRef(null),[m,p]=S.exports.useState(!1),g=S.exports.useCallback(C=>{d.current!=null&&c.current!=null&&u.current&&(Math.abs(d.current-C.clientX)>=Zh||Math.abs(c.current-C.clientY)>=Zh)&&(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 S.exports.useEffect(function(){return function(){return window.removeEventListener("mousemove",g)}},[g]),v("button",{type:"button",className:W("btn-context-menu",{disabled:s},{active:r&&!s},{"keyboard-active":l&&!s}),onMouseDown:f,onMouseUp:b,disabled:m,children:[h("span",{className:W("icon"),children:i}),h("span",{className:"title",children:n}),h("span",{className:"shortcut",children:o})]})},hc=t=>{const{handleControlSelect:e,handleToolSelect:n,onClearFilter:s}=t,i=S.exports.useMemo(()=>[{title:"Input Filter",icon:eC,menuElement:h(Li,{}),action:o=>{e(Cn.INPUT_FILTER,o)},order:10},{title:"Dropdown Filter",icon:wu,menuElement:h(Li,{}),action:o=>{e(Cn.DROPDOWN_FILTER,o)},order:15},{title:"Markdown Widget",icon:_f,menuElement:h(Li,{}),action:o=>{e(Cn.MARKDOWN,o)},order:20},{title:"Filter Sets",icon:ya,menuElement:h(Li,{}),action:o=>{e(Cn.FILTER_SET_MANAGER,o)},order:25},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:rd,action:()=>{n(hn.LINKER)},order:40,shortcut:ms.LINKER},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:jf,action:()=>{s()},order:60,shortcut:dn.TABLE.CLEAR_ALL_FILTERS}],[e,n,s]);return h(Gn,{popperClassName:"controls-menu-popper",actions:i})};hc.propTypes={handleControlSelect:R.exports.func,handleToolSelect:R.exports.func,onClearFilter:R.exports.func};hc.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};Li.propTypes={forwardedProps:R.exports.shape({iconElement:R.exports.node,displayShortcut:R.exports.string,isMouseSelected:R.exports.bool.isRequired,isKeyboardSelected:R.exports.bool.isRequired,closeMenu:R.exports.func.isRequired,menuItem:R.exports.shape({action:R.exports.func,title:R.exports.string,disabled:R.exports.bool}).isRequired})};Li.defaultProps={forwardedProps:null};const H1=Ps($p,null),V1={layoutStorage:H1},U1=t=>t.layoutStorage,B1=t=>t.serverConfigValues;Object.entries(V1).map(([t,e])=>Ji.register(t,e));const Jh=10,$1=t=>{const{onExportLayout:e,onImportLayout:n,onResetLayout:s,onSelect:i,widgets:o=[]}=t,[r,l]=S.exports.useState(!1),[a,d]=S.exports.useState(""),c=S.exports.useRef(null),u=S.exports.useRef(),m=S.exports.useCallback((y,E)=>{y!=null&&i(y,E)},[i]),p=S.exports.useCallback(y=>{d(y.target.value)},[]),g=S.exports.useCallback(y=>{u.current!=null&&(Math.abs(u.current.x-y.clientX)>=Jh||Math.abs(u.current.y-y.clientY)>=Jh)&&(l(!0),window.removeEventListener("mousemove",g),m(u.current.widget,y),u.current=void 0)},[u,m]),f=S.exports.useCallback((y,E)=>{u.current={x:y.clientX,y:y.clientY,widget:E},window.addEventListener("mousemove",g)},[g]),b=S.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=S.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,D,F;return(F=(D=y.name)==null?void 0:D.localeCompare((I=E.name)!=null?I:""))!=null?F:0}),w=S.exports.useMemo(()=>C.map(y=>{var E,I;return h("li",{children:v(z,{kind:"ghost","data-testid":`panel-list-item-${(E=y.name)!=null?E:""}-button`,onMouseDown:D=>{f(D,y)},onMouseUp:D=>{b(D,y)},onKeyDown:D=>{(D.key==="Enter"||D.key===" ")&&m(y)},disabled:r,onClick:()=>{},children:[h(zu,{type:y.type})," ",(I=y.name)!=null?I:""]})},y.name)}),[C,r,f,b,m]),T=S.exports.useMemo(()=>w.length===0?h("span",{children:"No bound variables found."}):null,[w]);return v("div",{className:"widget-list-container d-flex flex-column",children:[h("div",{className:"widget-list-header",children:h(Cs,{value:a,placeholder:"Find Table, Plot or Widget",onChange:p,ref:c})}),v("ul",{className:"widget-list flex-grow-1",children:[T&&h("li",{className:"widget-list-message",children:T}),!T&&w]}),h("div",{children:h("hr",{})}),v("div",{className:"widget-list-footer",children:[v(z,{kind:"ghost",onClick:e,children:[v("div",{className:"fa-md fa-layers",children:[h(j,{mask:Ia,icon:Dc,transform:"right-5 down-5"}),h(j,{icon:Dc,transform:"right-8 down-6"})]}),"Export Layout"]}),v(z,{kind:"ghost",onClick:n,children:[v("div",{className:"fa-md fa-layers",children:[h(j,{mask:Ia,icon:Ea,transform:"right-5 down-5"}),h(j,{icon:Ea,transform:"right-8 down-6"})]}),"Import Layout"]}),h(z,{kind:"ghost",icon:_i,onClick:s,tooltip:"Reset Layout"})]})]})},W1=async(t,e,n)=>{let s,i,o,r;if(Pr(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 zi.makeModel(s,c)}const l={title:o,name:i,type:M.VariableType.TABLE},a=await t.getObject(l);return se.applyTableSettings(a,r,Il(Ml.getState())),zi.makeModelFromSettings(s,a)},z1=async(t,e,n=M.VariableType.TABLE)=>{const{table:s}=e,i={title:s,name:s,type:n},o=await t.getObject(i);return qd.makeModel(o)};const G1=({onAutoFillClick:t=()=>{}})=>v("div",{className:"empty-dashboard-container",children:[v("div",{className:"hint-container",children:[h(j,{icon:mf})," ",h("br",{}),"Use the panel list to add objects from a query."]}),v("div",{className:"empty-dashboard",children:[h("div",{className:"add-panels-hint",children:"Drag Panels Here"}),h(z,{kind:"tertiary",onClick:t,children:"Auto fill objects"})]})]});function K1(t){return t.version===2}function q1(t){return Array.isArray(t)}const xr=X.module("UserLayoutUtils"),Y1={layoutConfig:[{type:"column",content:[{type:"row",content:[{type:"stack",content:[{type:"react-component",component:Oi.COMPONENT,title:Oi.TITLE,isClosable:!1},{type:"react-component",component:ol.COMPONENT,title:ol.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:nl.COMPONENT,title:nl.TITLE,isClosable:!1},{type:"react-component",component:sl.COMPONENT,title:sl.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},X1={layoutConfig:[],links:[],filterSets:[],version:2};function Gp(t){if(K1(t))return t;if(q1(t))return{layoutConfig:t,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${t}`)}async function j1(t,e=!0){try{const n=await t.getLayouts();if(n.length>0)try{const s=await t.getLayout(n[0]);return Gp(s)}catch(s){xr.error("Unable to load layout",n[0],":",s),xr.warn("No valid layouts found, falling back to default layout")}}catch(n){xr.error("Unable to fetch layout list",n),xr.warn("Falling back to default layout")}return e?Y1:X1}function Q1(t){const{filterSets:e,layoutConfig:n,links:s}=t;return{filterSets:e,layoutConfig:n,links:s,version:2}}const Br={exportLayout:Q1,getDefaultLayout:j1,normalizeLayout:Gp},_r=X.module("DownloadServiceWorkerUtils"),Kp=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(),_r.info("Registering service worker on ",e,n)}).catch(n=>{_r.error("Failed to register service worker",n)})}):_r.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const e=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(Kp.DOWNLOAD_PATH));if(e&&e.active)return _r.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 ll=Kp;ll.DOWNLOAD_PATH="/download/";const qp={react:Y},Z1=pg(qp),J1=gg({requires:Z1}),e2=fg.createRequires(qp),t2=Cg({requires:e2}),n2=X.module("PluginUtils");class Qa{static loadComponentPlugin(e){if("".split(",").includes(e)){const o=Y.lazy(()=>Tg(()=>import(`./internal/${e}`),[])),r=Y.forwardRef((l,a)=>h(S.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(J1,{url:s,render:({err:l,Component:a})=>{if(l!=null&&l!==""){const d=`Error loading plugin ${e} from ${s} due to ${l}`;return n2.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 t2(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 Lt=X.module("AppMainContainer");class Oo extends S.exports.Component{constructor(e){super(e),this.getDashboardPlugins=me(n=>[...n.entries()].filter(([,{DashboardPlugin:s}])=>s).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(hn.LINKER)},shortcut:ms.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:dn.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{Lt.debug("Consume unhandled save shortcut")},shortcut:ms.SAVE,isGlobal:!0}],isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,n){return Pa.hydrate({...e,unzip:s=>ru.loadAsync(s).then(i=>Object.values(i.files))},n)}componentDidMount(){this.initWidgets(),window.addEventListener("beforeunload",Oo.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:n}=this.props;e.dashboardData!==n&&this.handleDataChange(n)}componentWillUnmount(){this.deinitWidgets(),window.removeEventListener("beforeunload",Oo.handleWindowBeforeUnload)}initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){Lt.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(n=>{Lt.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){Lt.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(Ve.SELECT_NOTEBOOK,s,r,l,o,!0)}}sendClearFilter(){this.emitLayoutEvent(He.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...n){var s;(s=this.goldenLayout)==null||s.eventHub.emit(e,...n)}handleError(e){Ee.isCanceled(e)||Lt.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,n=null){switch(Lt.debug("handleControlSelect",e),e){case Cn.DROPDOWN_FILTER:this.emitLayoutEvent(He.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:n});break;case Cn.INPUT_FILTER:this.emitLayoutEvent(He.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:n});break;case Cn.MARKDOWN:this.emitLayoutEvent(Tp.OPEN,{title:"Markdown",type:e,dragEvent:n});break;case Cn.FILTER_SET_MANAGER:this.emitLayoutEvent(He.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:n});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){Lt.debug("handleToolSelect",e);const{activeTool:n,setActiveTool:s}=this.props;s(n===e?hn.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}),Lt.debug("handleWidgetSelect",e,n),this.openWidget(e,n)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;Lt.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(){Lt.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:n}=e,s=Br.exportLayout(n);Lt.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){Lt.error("Unable to export layout",e)}}handleImportLayoutClick(){Lt.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){Lt.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}=Br.normalizeLayout(o);s({layoutConfig:l}),n(Dn,{filterSets:r,links:a})}catch(n){Lt.error("Unable to import layout",n)}}async resetLayout(){const{layoutStorage:e,session:n}=this.props,{filterSets:s,layoutConfig:i,links:o}=await Br.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:Qa.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 Pa.hydrate(e,n)}hydrateGrid(e,n){return this.hydrateTable(e,n,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:ll.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:n,makeModel:()=>z1(i,e.metadata,s)}}hydrateChart(e,n){const{connection:s}=this.props;return{...e,localDashboardId:n,makeModel:()=>{const{metadata:i,panelState:o}=e;return W1(s,i,o)}}}openWidget(e,n){const{connection:s}=this.props;this.emitLayoutEvent(Me.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 v("div",{className:W("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:v("div",{className:"app-main-top-nav-menus",children:[h("img",{src:Wp,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),v("div",{children:[v(z,{kind:"ghost",className:"btn-panels-menu",icon:rC,onClick:()=>{},children:["Controls",h(hc,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&v(z,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:nC,children:["Panels",h(xn,{isShown:u,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:h($1,{widgets:p,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),h(z,{kind:"ghost",className:W("btn-settings-menu",{"text-warning":s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:h(j,{icon:Wo,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),v(T0,{emptyDashboard:h(G1,{onAutoFillClick:this.handleAutoFillClick}),id:Dn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[h(n1,{hydrate:this.hydrateGrid,getDownloadWorker:ll.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),h(jE,{hydrate:this.hydrateChart}),h(QE,{}),h(JE,{hydrateConsole:Oo.hydrateConsole,notebooksUrl:new URL("/notebooks/",`${window.location}`).href}),h(e1,{}),h(d1,{hydrate:this.hydratePandas}),h(a1,{}),h(l1,{}),g]}),h(ut,{in:m,timeout:Et.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:h(Qo,{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 s2=t=>{var e,n;return{activeTool:Rl(t),dashboardData:jt(t,Dn),layoutStorage:U1(t),plugins:IS(t),connection:dE(t,Dn),session:(e=pi(t,Dn))==null?void 0:e.session,sessionConfig:(n=pi(t,Dn))==null?void 0:n.config,user:hm(t),workspace:yl(t),serverConfigValues:B1(t)}},i2=Mt(s2,{setActiveTool:Dl,updateDashboardData:Yn,updateWorkspaceData:Em})(bg(Oo)),o2=()=>v("div",{className:"app",children:[h(i2,{}),h(Ru,{})]}),r2=X.module("LocalWorkspaceStorage"),No=class{static async makeDefaultWorkspaceData(t,e){const{filterSets:n,links:s,layoutConfig:i}=await Br.getDefaultLayout(t,e==null?void 0:e.isConsoleAvailable);return{settings:{defaultDateTimeFormat:dt.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:dt.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:Ae.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:it.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(t,e){return{data:await No.makeDefaultWorkspaceData(t,e)}}constructor(t){this.layoutStorage=t}async load(t){var e;try{return JSON.parse((e=localStorage.getItem(No.STORAGE_KEY))!=null?e:"")}catch{return r2.info("Unable to load workspace data, initializing to default data"),No.makeDefaultWorkspace(this.layoutStorage,t)}}async save(t){return localStorage.setItem(No.STORAGE_KEY,JSON.stringify(t)),t}};let Yp=No;Yp.STORAGE_KEY="deephaven.WorkspaceStorage";class l2 extends Error{constructor(){super(...arguments),this.isNoConsolesError=!0}}function a2(t){return t.isNoConsolesError}const Ai=X.module("SessionUtils");function d2(){return new URL("/jsapi",`${window.location}`)}function Xp(){const t=d2();return`${t.protocol}//${t.host}`}function c2(){const t=Xp();return Ai.info(`Starting connection to '${t}'...`),new M.IdeConnection(t)}async function h2(t){Ai.info("Getting console types...");const e=await t.getConsoleTypes();if(Ai.info("Available types:",e),e.length===0)throw new l2("No console types available");const n=e[0];Ai.info("Starting session with type",n);const s=await t.startSession(n),i={type:n,id:ze.generate()};return Ai.info("Console session established",i),{session:s,config:i,connection:t}}function u2(){const t=Xp();return Ai.info("createCoreClient",t),new M.CoreClient(t)}class m2{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 vo=X.module("GrpcFileStorageTable"),Za=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),Za.REFRESH_DEBOUNCE))}removeBaseRoot(t){return ce.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 Za(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){vo.debug2("doRefresh",this.root),t(this.fetchData())}refresh(){var n;vo.debug2("refresh",this.root),(n=this.viewportUpdatePromise)==null||n.cancel();const t=new Promise(s=>{this.doRefresh(s)}),e=Ee.makeCancelable(t.then(s=>{if(this.viewportUpdatePromise!==e)throw new ai;return this.currentViewportData=s,this.sendUpdate(),s}));e.catch(s=>{Ee.isCanceled(s)||vo.error("Error updating viewport",s)}),this.viewportUpdatePromise=e}refreshInternal(){try{this.refresh()}catch(t){Ee.isCanceled(t)||vo.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,vo.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 jp=Za;jp.REFRESH_DEBOUNCE=50;const p2=X.module("GrpcFileStorage"),Qp=class{constructor(t,e=""){this.tables=[],this.refreshTables=us(()=>{this.tables.forEach(n=>n.refresh())},Qp.REFRESH_THROTTLE),this.storageService=t,this.root=e}removeRoot(t){return ce.removeRoot(this.root,t)}addRoot(t){return ce.addRoot(this.root,t)}async createDirectory(t){return await this.storageService.createDirectory(this.addRoot(t)),this.refreshTables(),{type:"directory",id:t,filename:t,basename:ce.getBaseName(t)}}async getTable(){const t=new jp(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:ce.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(ce.getPath(t)),ce.getBaseName(t));if(e.length===0)throw new sc;if(e.length>1)throw p2.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:this.removeRoot(n.basename),id:this.removeRoot(n.filename),type:n.type}}};let Zp=Qp;Zp.REFRESH_THROTTLE=150;const li=X.module("AppInit");async function g2(){li.debug("Loading plugins...");try{const t=await Qa.loadJson("/js-plugins/manifest.json");li.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(Qa.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 li.info("Plugins loaded:",s),s}catch(t){return li.error("Unable to load plugins:",t),new Map}}async function f2(t){let e;try{e=await h2(t)}catch(n){if(!a2(n))throw n}return e}const uc=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]=S.exports.useState(),[b,C]=S.exports.useState(!0),w=S.exports.useCallback(async()=>{var D,F;try{li.info("Initializing Web UI","0.22.1",navigator.userAgent);const x=await g2(),U=c2(),$=await f2(U);U.addEventListener(M.IdeConnection.HACK_CONNECTION_FAILURE,Re=>{var Oe;const{detail:qe}=Re;li.error("Connection failure",qe),f(`Unable to connect: ${(Oe=qe.details)!=null?Oe:"Unknown Error"}`)});const O="user",H=u2();await H.login({type:M.CoreClient.LOGIN_TYPE_ANONYMOUS});const L=H.getStorageService(),N=new m2(L,"/layouts"),k=new Zp(L,"/notebooks"),_=new Yp(N),V=new v1,G=await _.load({isConsoleAvailable:$!==void 0}),{data:Q}=G,{settings:J}=Q;J.defaultDecimalFormatOptions===void 0&&(J.defaultDecimalFormatOptions={defaultFormatString:Ae.DEFAULT_FORMAT_STRING}),J.defaultIntegerFormatOptions===void 0&&(J.defaultIntegerFormatOptions={defaultFormatString:it.DEFAULT_FORMAT_STRING}),J.truncateNumbersWithPound===void 0&&(J.truncateNumbersWithPound=!1);const{shortcutOverrides:ve={}}=J,be=Kt.isMacPlatform?(D=ve.mac)!=null?D:{}:(F=ve.windows)!=null?F:{};Object.entries(be).forEach(([Re,qe])=>{var Oe;(Oe=Pe.get(Re))==null||Oe.setKeyState(qe)});const ke={filterSets:Q.filterSets,links:Q.links},ee=await H.getServerConfigValues(),ge=new Map(ee),Se={name:O,operateAs:O,groups:[],permissions:{isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:ge.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:ge.get("internal.webClient.appInit.canDownloadCsv")!=="false"}};n(hn.DEFAULT),p(ge),s(V),i(Dn,ke),o(k),r(N),l(Dn,U),$!==void 0&&a(Dn,$),d(x),c(Se),m(_),u(G)}catch(x){li.error(x),f(x)}},[n,s,i,o,r,l,a,d,c,u,m,p]),T=S.exports.useCallback(()=>{document.fonts!=null?document.fonts.ready.then(()=>{C(!1)}):C(!1)},[]);S.exports.useEffect(function(){w(),T()},[w,T]);const y=e==null&&g==null||b,E=!y&&g==null,I=g!=null?`${g}`:null;return v(pe,{children:[E&&h(o2,{}),h(Cl,{isLoading:y,isLoaded:E,errorMessage:I}),v("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"})]})]})};uc.propTypes={workspace:R.exports.shape({}),workspaceStorage:R.exports.shape({close:R.exports.func}),setActiveTool:R.exports.func.isRequired,setCommandHistoryStorage:R.exports.func.isRequired,setDashboardData:R.exports.func.isRequired,setFileStorage:R.exports.func.isRequired,setLayoutStorage:R.exports.func.isRequired,setDashboardConnection:R.exports.func.isRequired,setDashboardSessionWrapper:R.exports.func.isRequired,setPlugins:R.exports.func.isRequired,setUser:R.exports.func.isRequired,setWorkspace:R.exports.func.isRequired,setWorkspaceStorage:R.exports.func.isRequired};uc.defaultProps={workspace:null,workspaceStorage:null};const C2=t=>({workspace:yl(t),workspaceStorage:gS(t)}),eu=Mt(C2,{setActiveTool:Dl,setCommandHistoryStorage:MS,setDashboardData:Km,setFileStorage:NS,setLayoutStorage:T1,setDashboardConnection:cE,setDashboardSessionWrapper:hE,setPlugins:xS,setUser:RS,setWorkspace:Tm,setWorkspaceStorage:DS,setServerConfigValues:_S})(uc),b2=()=>h(Sg,{basename:"/ide/",children:v(wg,{children:[h(Ec,{exact:!0,path:"/",component:eu}),h(Ec,{path:"/notebook/:notebookPath+",component:eu}),h(vg,{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 S2(){"serviceWorker"in navigator&&navigator.serviceWorker.getRegistrations().then(t=>{t.forEach(e=>{e.scope.endsWith("/download/")||e.unregister()})})}k1();hi.render(h(su,{store:Ml,children:h(b2,{})}),document.getElementById("root"));S2();ll.registerOnLoaded();st.init({getWorker:()=>new Eg});window["__react-beautiful-dnd-disable-dev-warnings"]=!0;
|
|
43
|
-
//# sourceMappingURL=index.
|
|
42
|
+
`)),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 v("fieldset",{className:"container-fluid format-rule-container",children:[v("div",{className:"form-row",children:[v("div",{className:"form-group col-7 mb-2",children:[h("label",{htmlFor:n,children:"Column Name"}),h("input",{id:n,className:W("form-control",{"is-invalid":d.hasColumnNameError}),"data-lpignore":!0,type:"text",value:e.columnName,onChange:r,onBlur:l})]}),v("div",{className:"form-group col mb-2",children:[h(z,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(t),icon:_n,tooltip:"Delete"}),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:v("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(P.getNormalizedType(e)){case P.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(t,n,s,i);case P.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(t,n,s,i);case P.dataType.INT:return this.renderIntegerFormatRuleInput(t,n,s,i);default:return null}}renderDateTimeFormatRuleInput(t,e,n,s){const{showTimeZone:i,showTSeparator:o,timeZone:r}=this.state,l=n!=null&&n.formatString||"";return v("select",{className:W("custom-select",{"is-invalid":s}),value:l,id:e,onChange:a=>{const d=dt.makeFormat("",a.target.value,dt.TYPE_GLOBAL);this.handleFormatRuleChange(t,"format",d)},children:[h("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(r,i,o)]})}renderIntegerFormatRuleInput(t,e,n,s){const i=n!=null&&n.formatString||"";return h("input",{className:W("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:it.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:o=>{const r=it.makeFormat("",o.target.value,it.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",r)}})}renderDecimalFormatRuleInput(t,e,n,s){const i=n!=null&&n.formatString||"";return h("input",{className:W("form-control","flex-grow-1",{"is-invalid":s}),"data-lpignore":!0,id:e,placeholder:Ae.DEFAULT_FORMAT_STRING,type:"text",value:i,onChange:o=>{const r=Ae.makeFormat("",o.target.value,Ae.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(t,"format",r)}})}render(){const{defaults:t}=this.props,{formatRulesChanged:e,formatSettings:n,defaultDateTimeFormat:s,defaultDecimalFormatOptions:i,defaultIntegerFormatOptions:o,timeZone:r,showTimeZone:l,showTSeparator:a,truncateNumbersWithPound:d}=this.state,{defaultFormatString:c=Ae.DEFAULT_FORMAT_STRING}=i!=null?i:{},{defaultFormatString:u=it.DEFAULT_FORMAT_STRING}=o!=null?o:{},m=n.map((w,T)=>h(ut,{classNames:"fade",timeout:Et.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(T,w)},w.id)),p=h(z,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:As,children:"Add New Rule"}),g=r===t.timeZone,f=a===t.showTSeparator&&l===t.showTimeZone&&s===t.defaultDateTimeFormat,b=at.isSameDecimalOptions(i,t.defaultDecimalFormatOptions),C=at.isSameIntegerOptions(o,t.defaultIntegerFormatOptions);return v("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[v("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."}),v("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:r,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:at.renderTimeZoneOptions()})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:W("btn-reset","btn-reset-time-zone",{hidden:g})})})]}),v("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:s,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(r,l,a,!0,s)})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:W("btn-reset","btn-reset-date-time",{hidden:f})})})]}),h("div",{className:"form-row",children:h("div",{className:"offset-3 col-9",children:h(Bt,{checked:l!=null?l: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(Bt,{checked:a!=null?a:null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),v("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:W("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!at.isValidFormat(P.dataType.DECIMAL,Ae.makeCustomFormat(c))}),"data-lpignore":!0,placeholder:Ae.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:c,onChange:this.handleDefaultDecimalFormatChange})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:W("btn-reset","btn-reset-decimal",{hidden:b}),"data-testid":"btn-reset-decimal"})})]}),v("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:W("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!at.isValidFormat(P.dataType.INT,it.makeCustomFormat(u))}),"data-lpignore":!0,placeholder:it.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:u,onChange:this.handleDefaultIntegerFormatChange})}),h("div",{className:"col-1 btn-col",children:h(z,{kind:"ghost",icon:_i,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:W("btn-reset","btn-reset-integer",{hidden:C}),"data-testid":"btn-reset-integer"})})]}),h("div",{className:"form-row mb-3",children:h("div",{className:"offset-3 col-9",children:h(Bt,{checked:d!=null?d:null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Truncate numbers with #"})})})]}),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(mg,{appear:e,enter:e,exit:e,children:m}),p]})}};let cc=at;cc.defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:dt.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:Ae.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:it.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:dt.DEFAULT_TIME_ZONE_ID}};cc.inputDebounceTime=250;const y1=t=>({formatter:SS(t),defaultDateTimeFormat:fS(t),defaultDecimalFormatOptions:CS(t),defaultIntegerFormatOptions:bS(t),showTimeZone:wS(t),showTSeparator:vS(t),truncateNumbersWithPound:TS(t),timeZone:Il(t),settings:Nt(t)}),I1=Mt(y1,{saveSettings:Td})(cc),R1=()=>{const[t,e]=S.exports.useState(!1),n=()=>{e(!t)};return v(z,{kind:"ghost",onClick:n,icon:Mf,children:["Legal Notices",v(Uo,{isOpen:t,toggle:n,className:"theme-bg-light",children:[h($o,{toggle:n,children:"Legal Notice"}),v(Bo,{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."}),v("p",{children:["\xA9 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})},rl=t=>{const{children:e,isExpanded:n,sectionKey:s,title:i,onToggle:o}=t;return v(pe,{children:[h("div",{children:v(z,{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(j,{transform:n?"flip-v":"",icon:ls})})]})}),h(gd,{in:n,autoFocusOnShow:!0,children:e})]})};rl.propTypes={children:R.exports.node,isExpanded:R.exports.bool.isRequired,sectionKey:R.exports.string.isRequired,title:R.exports.node.isRequired,onToggle:R.exports.func};rl.defaultProps={children:null,onToggle:()=>{}};function D1({shortcut:t,displayText:e,categoryName:n,onChange:s}){const[i,o]=S.exports.useState(e),[r,l]=S.exports.useState(t.getKeyState()),[a,d]=S.exports.useState(!1),[c,u]=S.exports.useState("");S.exports.useEffect(function(){o(e),l(t.getKeyState())},[e,t]),S.exports.useEffect(function(){o(Kt.getDisplayText(r)),t.matchesKeyState(r)&&d(!1)},[r,t]),S.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=Pe.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(T){if(T.stopPropagation(),T.preventDefault(),t.isEditable&&!T.repeat){const y=Kt.getKeyStateFromEvent(T),E=Kt.createKeyState([he.BACKSPACE]);Kt.doKeyStatesMatch(y,E)?l(Kt.NULL_KEY_STATE):l(y)}}function p(T){T.stopPropagation(),T.preventDefault(),t.matchesKeyState(r)||d(!0)}function g(){Ne.disableAllActions()}function f(){Ne.enableAllActions()}function b(){t.setKeyState(r),d(!1),s(t)}function C(){const T=t.getKeyState();l(T),d(!1)}function w(){d(!0),l(t.getDefaultKeyState())}return v(pe,{children:[v("div",{className:"shortcut-item-container",children:[v("label",{className:"shortcut-item-name",children:[t.name,t.tooltip!==void 0&&h(Be,{children:t.tooltip})]}),v("div",{className:"shortcut-item-input-container",children:[h("input",{className:W("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(z,{className:"reset-to-default-button",kind:"ghost",icon:h(j,{icon:_i,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:w})]})]}),a&&v("div",{className:W("shortcut-item-message-container",{"is-invalid":c}),children:[h("div",{className:"shortcut-item-message",children:c}),v("div",{className:"shortcut-item-message-buttons",children:[Kt.isValidKeyState(r)&&h(z,{kind:"ghost",onClick:b,children:"Confirm"}),h(z,{kind:"ghost",onClick:C,children:"Undo"})]})]})]})}function M1({shortcutOverrides:t={},settings:e,saveSettings:n}){const s=S.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(Pe.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),v(pe,{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(N1,{name:l.name,shortcuts:l.shortcuts,saveShortcutOverrides:s},l.name))]})}function N1({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]=S.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=S.exports.useMemo(()=>i.map(a=>a.getDisplayText()),[i]);return v("div",{className:"mt-3",children:[h("div",{className:"font-weight-bold",children:s(t)}),i.map((a,d)=>h(D1,{shortcut:a,displayText:l[d],categoryName:t,onChange:r},a.id))]})}const F1=t=>({settings:Nt(t),shortcutOverrides:ES(t)}),x1={saveSettings:Td},_1=Mt(F1,x1)(M1),Xa=new nf,ja=new Wr(Xa);function k1(){X.setLogLevel(parseInt("2",10)),Xa.enable(),ja.enable(),window!=null&&(window.DHLog=X,window.DHLogProxy=Xa,window.DHLogHistory=ja)}const O1="yyyy-MM-dd-HHmmss";function zp(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]=zp(o,a,n)}}}),s}function L1(){const t=Ml.getState();return JSON.stringify(zp(t),null,2)}function A1(t){const e={uiVersion:"0.22.2",userAgent:navigator.userAgent,...t};return JSON.stringify(e,null,2)}async function P1(t=`${M.i18n.DateTimeFormat.format(O1,new Date)}_support_logs`,e){const n=new ru,s=n.folder(t);s.file("console.txt",ja.getFormattedHistory()),s.file("redux.json",L1()),s.file("metadata.json",A1(e));const i=await n.generateAsync({type:"blob"}),o=document.createElement("a");o.href=URL.createObjectURL(i),o.download=`${t}.zip`,o.click()}const ni=class extends S.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:ni.FORMATTING_SECTION_KEY}}static focusFirstInputInContainer(t){const e=t==null?void 0:t.querySelector("input, select, textarea");e&&e.focus()}componentDidMount(){ni.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;P1(void 0,Object.fromEntries(t))}render(){const t="0.22.2",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)=>v(pe,{children:[h("div",{children:a}),h("div",{children:d})]});return v("div",{className:"app-settings-menu",children:[v("header",{className:"app-settings-menu-header",children:[h("div",{className:"flex-spacer"}),h(z,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:h(j,{icon:Xi,transform:"grow-4"}),tooltip:"Close"})]}),v("div",{className:"app-settings-menu-content",ref:this.menuContentRef,children:[h("h5",{children:"Settings"}),h("hr",{className:"my-0"}),h(rl,{sectionKey:ni.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(ni.FORMATTING_SECTION_KEY),title:v(pe,{children:[h(j,{icon:Bf,transform:"grow-4",className:"mr-2"}),"Formatting & Time zone"]}),onToggle:this.handleSectionToggle,children:h(I1,{scrollTo:this.handleScrollTo})}),h(rl,{sectionKey:ni.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(ni.SHORTCUT_SECTION_KEY),title:v(pe,{children:[h(j,{icon:Lf,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:h(_1,{})}),v("div",{className:"app-settings-footer",children:[v("div",{className:"app-settings-footer-section",children:[v("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Support"}),v("div",{children:["GitHub:\xA0",h("a",{href:e,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:e})]}),h(z,{kind:"tertiary",className:"mt-2 py-2",onClick:this.handleExportSupportLogs,children:"Export Logs"})]}),v("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})]}),v("div",{className:"app-settings-footer-item",children:[h("div",{className:"font-weight-bold",children:"Version"}),v("span",{className:"d-inline-block text-muted",children:[r," ",h(j,{icon:Rf}),h(Be,{interactive:!0,children:v("div",{className:"detailed-server-config",children:[l("Engine Version",r),l("Web UI Version",t),l("Java Version",o),l("Barrage Version",i)]})})]})]}),h("div",{className:"app-settings-footer-item",children:h(R1,{})})]}),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:Wp,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}};let Qo=ni;Qo.defaultProps={onDone:()=>{}};Qo.FORMATTING_SECTION_KEY="SettingsMenu.formatting";Qo.APPLICATION_SECTION_KEY="ApplicationMenu.settings";Qo.SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";const Zh=10,Li=t=>{const{forwardedProps:{menuItem:{action:e,title:n,disabled:s},iconElement:i,displayShortcut:o,isMouseSelected:r,isKeyboardSelected:l,closeMenu:a}}=t,d=S.exports.useRef(),c=S.exports.useRef(),u=S.exports.useRef(null),[m,p]=S.exports.useState(!1),g=S.exports.useCallback(C=>{d.current!=null&&c.current!=null&&u.current&&(Math.abs(d.current-C.clientX)>=Zh||Math.abs(c.current-C.clientY)>=Zh)&&(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 S.exports.useEffect(function(){return function(){return window.removeEventListener("mousemove",g)}},[g]),v("button",{type:"button",className:W("btn-context-menu",{disabled:s},{active:r&&!s},{"keyboard-active":l&&!s}),onMouseDown:f,onMouseUp:b,disabled:m,children:[h("span",{className:W("icon"),children:i}),h("span",{className:"title",children:n}),h("span",{className:"shortcut",children:o})]})},hc=t=>{const{handleControlSelect:e,handleToolSelect:n,onClearFilter:s}=t,i=S.exports.useMemo(()=>[{title:"Input Filter",icon:eC,menuElement:h(Li,{}),action:o=>{e(Cn.INPUT_FILTER,o)},order:10},{title:"Dropdown Filter",icon:wu,menuElement:h(Li,{}),action:o=>{e(Cn.DROPDOWN_FILTER,o)},order:15},{title:"Markdown Widget",icon:_f,menuElement:h(Li,{}),action:o=>{e(Cn.MARKDOWN,o)},order:20},{title:"Filter Sets",icon:ya,menuElement:h(Li,{}),action:o=>{e(Cn.FILTER_SET_MANAGER,o)},order:25},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:rd,action:()=>{n(hn.LINKER)},order:40,shortcut:ms.LINKER},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:jf,action:()=>{s()},order:60,shortcut:dn.TABLE.CLEAR_ALL_FILTERS}],[e,n,s]);return h(Gn,{popperClassName:"controls-menu-popper",actions:i})};hc.propTypes={handleControlSelect:R.exports.func,handleToolSelect:R.exports.func,onClearFilter:R.exports.func};hc.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};Li.propTypes={forwardedProps:R.exports.shape({iconElement:R.exports.node,displayShortcut:R.exports.string,isMouseSelected:R.exports.bool.isRequired,isKeyboardSelected:R.exports.bool.isRequired,closeMenu:R.exports.func.isRequired,menuItem:R.exports.shape({action:R.exports.func,title:R.exports.string,disabled:R.exports.bool}).isRequired})};Li.defaultProps={forwardedProps:null};const H1=Ps($p,null),V1={layoutStorage:H1},U1=t=>t.layoutStorage,B1=t=>t.serverConfigValues;Object.entries(V1).map(([t,e])=>Ji.register(t,e));const Jh=10,$1=t=>{const{onExportLayout:e,onImportLayout:n,onResetLayout:s,onSelect:i,widgets:o=[]}=t,[r,l]=S.exports.useState(!1),[a,d]=S.exports.useState(""),c=S.exports.useRef(null),u=S.exports.useRef(),m=S.exports.useCallback((y,E)=>{y!=null&&i(y,E)},[i]),p=S.exports.useCallback(y=>{d(y.target.value)},[]),g=S.exports.useCallback(y=>{u.current!=null&&(Math.abs(u.current.x-y.clientX)>=Jh||Math.abs(u.current.y-y.clientY)>=Jh)&&(l(!0),window.removeEventListener("mousemove",g),m(u.current.widget,y),u.current=void 0)},[u,m]),f=S.exports.useCallback((y,E)=>{u.current={x:y.clientX,y:y.clientY,widget:E},window.addEventListener("mousemove",g)},[g]),b=S.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=S.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,D,F;return(F=(D=y.name)==null?void 0:D.localeCompare((I=E.name)!=null?I:""))!=null?F:0}),w=S.exports.useMemo(()=>C.map(y=>{var E,I;return h("li",{children:v(z,{kind:"ghost","data-testid":`panel-list-item-${(E=y.name)!=null?E:""}-button`,onMouseDown:D=>{f(D,y)},onMouseUp:D=>{b(D,y)},onKeyDown:D=>{(D.key==="Enter"||D.key===" ")&&m(y)},disabled:r,onClick:()=>{},children:[h(zu,{type:y.type})," ",(I=y.name)!=null?I:""]})},y.name)}),[C,r,f,b,m]),T=S.exports.useMemo(()=>w.length===0?h("span",{children:"No bound variables found."}):null,[w]);return v("div",{className:"widget-list-container d-flex flex-column",children:[h("div",{className:"widget-list-header",children:h(Cs,{value:a,placeholder:"Find Table, Plot or Widget",onChange:p,ref:c})}),v("ul",{className:"widget-list flex-grow-1",children:[T&&h("li",{className:"widget-list-message",children:T}),!T&&w]}),h("div",{children:h("hr",{})}),v("div",{className:"widget-list-footer",children:[v(z,{kind:"ghost",onClick:e,children:[v("div",{className:"fa-md fa-layers",children:[h(j,{mask:Ia,icon:Dc,transform:"right-5 down-5"}),h(j,{icon:Dc,transform:"right-8 down-6"})]}),"Export Layout"]}),v(z,{kind:"ghost",onClick:n,children:[v("div",{className:"fa-md fa-layers",children:[h(j,{mask:Ia,icon:Ea,transform:"right-5 down-5"}),h(j,{icon:Ea,transform:"right-8 down-6"})]}),"Import Layout"]}),h(z,{kind:"ghost",icon:_i,onClick:s,tooltip:"Reset Layout"})]})]})},W1=async(t,e,n)=>{let s,i,o,r;if(Pr(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 zi.makeModel(s,c)}const l={title:o,name:i,type:M.VariableType.TABLE},a=await t.getObject(l);return se.applyTableSettings(a,r,Il(Ml.getState())),zi.makeModelFromSettings(s,a)},z1=async(t,e,n=M.VariableType.TABLE)=>{const{table:s}=e,i={title:s,name:s,type:n},o=await t.getObject(i);return qd.makeModel(o)};const G1=({onAutoFillClick:t=()=>{}})=>v("div",{className:"empty-dashboard-container",children:[v("div",{className:"hint-container",children:[h(j,{icon:mf})," ",h("br",{}),"Use the panel list to add objects from a query."]}),v("div",{className:"empty-dashboard",children:[h("div",{className:"add-panels-hint",children:"Drag Panels Here"}),h(z,{kind:"tertiary",onClick:t,children:"Auto fill objects"})]})]});function K1(t){return t.version===2}function q1(t){return Array.isArray(t)}const xr=X.module("UserLayoutUtils"),Y1={layoutConfig:[{type:"column",content:[{type:"row",content:[{type:"stack",content:[{type:"react-component",component:Oi.COMPONENT,title:Oi.TITLE,isClosable:!1},{type:"react-component",component:ol.COMPONENT,title:ol.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:nl.COMPONENT,title:nl.TITLE,isClosable:!1},{type:"react-component",component:sl.COMPONENT,title:sl.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},X1={layoutConfig:[],links:[],filterSets:[],version:2};function Gp(t){if(K1(t))return t;if(q1(t))return{layoutConfig:t,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${t}`)}async function j1(t,e=!0){try{const n=await t.getLayouts();if(n.length>0)try{const s=await t.getLayout(n[0]);return Gp(s)}catch(s){xr.error("Unable to load layout",n[0],":",s),xr.warn("No valid layouts found, falling back to default layout")}}catch(n){xr.error("Unable to fetch layout list",n),xr.warn("Falling back to default layout")}return e?Y1:X1}function Q1(t){const{filterSets:e,layoutConfig:n,links:s}=t;return{filterSets:e,layoutConfig:n,links:s,version:2}}const Br={exportLayout:Q1,getDefaultLayout:j1,normalizeLayout:Gp},_r=X.module("DownloadServiceWorkerUtils"),Kp=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(),_r.info("Registering service worker on ",e,n)}).catch(n=>{_r.error("Failed to register service worker",n)})}):_r.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const e=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(Kp.DOWNLOAD_PATH));if(e&&e.active)return _r.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 ll=Kp;ll.DOWNLOAD_PATH="/download/";const qp={react:Y},Z1=pg(qp),J1=gg({requires:Z1}),e2=fg.createRequires(qp),t2=Cg({requires:e2}),n2=X.module("PluginUtils");class Qa{static loadComponentPlugin(e){if("".split(",").includes(e)){const o=Y.lazy(()=>Tg(()=>import(`./internal/${e}`),[])),r=Y.forwardRef((l,a)=>h(S.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(J1,{url:s,render:({err:l,Component:a})=>{if(l!=null&&l!==""){const d=`Error loading plugin ${e} from ${s} due to ${l}`;return n2.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 t2(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 Lt=X.module("AppMainContainer");class Oo extends S.exports.Component{constructor(e){super(e),this.getDashboardPlugins=me(n=>[...n.entries()].filter(([,{DashboardPlugin:s}])=>s).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(hn.LINKER)},shortcut:ms.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:dn.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{Lt.debug("Consume unhandled save shortcut")},shortcut:ms.SAVE,isGlobal:!0}],isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,n){return Pa.hydrate({...e,unzip:s=>ru.loadAsync(s).then(i=>Object.values(i.files))},n)}componentDidMount(){this.initWidgets(),window.addEventListener("beforeunload",Oo.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:n}=this.props;e.dashboardData!==n&&this.handleDataChange(n)}componentWillUnmount(){this.deinitWidgets(),window.removeEventListener("beforeunload",Oo.handleWindowBeforeUnload)}initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){Lt.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(n=>{Lt.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){Lt.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(Ve.SELECT_NOTEBOOK,s,r,l,o,!0)}}sendClearFilter(){this.emitLayoutEvent(He.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...n){var s;(s=this.goldenLayout)==null||s.eventHub.emit(e,...n)}handleError(e){Ee.isCanceled(e)||Lt.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,n=null){switch(Lt.debug("handleControlSelect",e),e){case Cn.DROPDOWN_FILTER:this.emitLayoutEvent(He.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:n});break;case Cn.INPUT_FILTER:this.emitLayoutEvent(He.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:n});break;case Cn.MARKDOWN:this.emitLayoutEvent(Tp.OPEN,{title:"Markdown",type:e,dragEvent:n});break;case Cn.FILTER_SET_MANAGER:this.emitLayoutEvent(He.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:n});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){Lt.debug("handleToolSelect",e);const{activeTool:n,setActiveTool:s}=this.props;s(n===e?hn.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}),Lt.debug("handleWidgetSelect",e,n),this.openWidget(e,n)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;Lt.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(){Lt.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:n}=e,s=Br.exportLayout(n);Lt.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){Lt.error("Unable to export layout",e)}}handleImportLayoutClick(){Lt.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){Lt.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}=Br.normalizeLayout(o);s({layoutConfig:l}),n(Dn,{filterSets:r,links:a})}catch(n){Lt.error("Unable to import layout",n)}}async resetLayout(){const{layoutStorage:e,session:n}=this.props,{filterSets:s,layoutConfig:i,links:o}=await Br.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:Qa.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 Pa.hydrate(e,n)}hydrateGrid(e,n){return this.hydrateTable(e,n,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:ll.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:n,makeModel:()=>z1(i,e.metadata,s)}}hydrateChart(e,n){const{connection:s}=this.props;return{...e,localDashboardId:n,makeModel:()=>{const{metadata:i,panelState:o}=e;return W1(s,i,o)}}}openWidget(e,n){const{connection:s}=this.props;this.emitLayoutEvent(Me.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 v("div",{className:W("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:v("div",{className:"app-main-top-nav-menus",children:[h("img",{src:Wp,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),v("div",{children:[v(z,{kind:"ghost",className:"btn-panels-menu",icon:rC,onClick:()=>{},children:["Controls",h(hc,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&v(z,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:nC,children:["Panels",h(xn,{isShown:u,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:h($1,{widgets:p,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),h(z,{kind:"ghost",className:W("btn-settings-menu",{"text-warning":s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:h(j,{icon:Wo,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),v(T0,{emptyDashboard:h(G1,{onAutoFillClick:this.handleAutoFillClick}),id:Dn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[h(n1,{hydrate:this.hydrateGrid,getDownloadWorker:ll.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),h(jE,{hydrate:this.hydrateChart}),h(QE,{}),h(JE,{hydrateConsole:Oo.hydrateConsole,notebooksUrl:new URL("/notebooks/",`${window.location}`).href}),h(e1,{}),h(d1,{hydrate:this.hydratePandas}),h(a1,{}),h(l1,{}),g]}),h(ut,{in:m,timeout:Et.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:h(Qo,{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 s2=t=>{var e,n;return{activeTool:Rl(t),dashboardData:jt(t,Dn),layoutStorage:U1(t),plugins:IS(t),connection:dE(t,Dn),session:(e=pi(t,Dn))==null?void 0:e.session,sessionConfig:(n=pi(t,Dn))==null?void 0:n.config,user:hm(t),workspace:yl(t),serverConfigValues:B1(t)}},i2=Mt(s2,{setActiveTool:Dl,updateDashboardData:Yn,updateWorkspaceData:Em})(bg(Oo)),o2=()=>v("div",{className:"app",children:[h(i2,{}),h(Ru,{})]}),r2=X.module("LocalWorkspaceStorage"),No=class{static async makeDefaultWorkspaceData(t,e){const{filterSets:n,links:s,layoutConfig:i}=await Br.getDefaultLayout(t,e==null?void 0:e.isConsoleAvailable);return{settings:{defaultDateTimeFormat:dt.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:dt.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:Ae.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:it.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(t,e){return{data:await No.makeDefaultWorkspaceData(t,e)}}constructor(t){this.layoutStorage=t}async load(t){var e;try{return JSON.parse((e=localStorage.getItem(No.STORAGE_KEY))!=null?e:"")}catch{return r2.info("Unable to load workspace data, initializing to default data"),No.makeDefaultWorkspace(this.layoutStorage,t)}}async save(t){return localStorage.setItem(No.STORAGE_KEY,JSON.stringify(t)),t}};let Yp=No;Yp.STORAGE_KEY="deephaven.WorkspaceStorage";class l2 extends Error{constructor(){super(...arguments),this.isNoConsolesError=!0}}function a2(t){return t.isNoConsolesError}const Ai=X.module("SessionUtils");function d2(){return new URL("/jsapi",`${window.location}`)}function Xp(){const t=d2();return`${t.protocol}//${t.host}`}function c2(){const t=Xp();return Ai.info(`Starting connection to '${t}'...`),new M.IdeConnection(t)}async function h2(t){Ai.info("Getting console types...");const e=await t.getConsoleTypes();if(Ai.info("Available types:",e),e.length===0)throw new l2("No console types available");const n=e[0];Ai.info("Starting session with type",n);const s=await t.startSession(n),i={type:n,id:ze.generate()};return Ai.info("Console session established",i),{session:s,config:i,connection:t}}function u2(){const t=Xp();return Ai.info("createCoreClient",t),new M.CoreClient(t)}class m2{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 vo=X.module("GrpcFileStorageTable"),Za=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),Za.REFRESH_DEBOUNCE))}removeBaseRoot(t){return ce.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 Za(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){vo.debug2("doRefresh",this.root),t(this.fetchData())}refresh(){var n;vo.debug2("refresh",this.root),(n=this.viewportUpdatePromise)==null||n.cancel();const t=new Promise(s=>{this.doRefresh(s)}),e=Ee.makeCancelable(t.then(s=>{if(this.viewportUpdatePromise!==e)throw new ai;return this.currentViewportData=s,this.sendUpdate(),s}));e.catch(s=>{Ee.isCanceled(s)||vo.error("Error updating viewport",s)}),this.viewportUpdatePromise=e}refreshInternal(){try{this.refresh()}catch(t){Ee.isCanceled(t)||vo.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,vo.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 jp=Za;jp.REFRESH_DEBOUNCE=50;const p2=X.module("GrpcFileStorage"),Qp=class{constructor(t,e=""){this.tables=[],this.refreshTables=us(()=>{this.tables.forEach(n=>n.refresh())},Qp.REFRESH_THROTTLE),this.storageService=t,this.root=e}removeRoot(t){return ce.removeRoot(this.root,t)}addRoot(t){return ce.addRoot(this.root,t)}async createDirectory(t){return await this.storageService.createDirectory(this.addRoot(t)),this.refreshTables(),{type:"directory",id:t,filename:t,basename:ce.getBaseName(t)}}async getTable(){const t=new jp(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:ce.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(ce.getPath(t)),ce.getBaseName(t));if(e.length===0)throw new sc;if(e.length>1)throw p2.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:this.removeRoot(n.basename),id:this.removeRoot(n.filename),type:n.type}}};let Zp=Qp;Zp.REFRESH_THROTTLE=150;const li=X.module("AppInit");async function g2(){li.debug("Loading plugins...");try{const t=await Qa.loadJson("/js-plugins/manifest.json");li.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(Qa.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 li.info("Plugins loaded:",s),s}catch(t){return li.error("Unable to load plugins:",t),new Map}}async function f2(t){let e;try{e=await h2(t)}catch(n){if(!a2(n))throw n}return e}const uc=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]=S.exports.useState(),[b,C]=S.exports.useState(!0),w=S.exports.useCallback(async()=>{var D,F;try{li.info("Initializing Web UI","0.22.2",navigator.userAgent);const x=await g2(),U=c2(),$=await f2(U);U.addEventListener(M.IdeConnection.HACK_CONNECTION_FAILURE,Re=>{var Oe;const{detail:qe}=Re;li.error("Connection failure",qe),f(`Unable to connect: ${(Oe=qe.details)!=null?Oe:"Unknown Error"}`)});const O="user",H=u2();await H.login({type:M.CoreClient.LOGIN_TYPE_ANONYMOUS});const L=H.getStorageService(),N=new m2(L,"/layouts"),k=new Zp(L,"/notebooks"),_=new Yp(N),V=new v1,G=await _.load({isConsoleAvailable:$!==void 0}),{data:Q}=G,{settings:J}=Q;J.defaultDecimalFormatOptions===void 0&&(J.defaultDecimalFormatOptions={defaultFormatString:Ae.DEFAULT_FORMAT_STRING}),J.defaultIntegerFormatOptions===void 0&&(J.defaultIntegerFormatOptions={defaultFormatString:it.DEFAULT_FORMAT_STRING}),J.truncateNumbersWithPound===void 0&&(J.truncateNumbersWithPound=!1);const{shortcutOverrides:ve={}}=J,be=Kt.isMacPlatform?(D=ve.mac)!=null?D:{}:(F=ve.windows)!=null?F:{};Object.entries(be).forEach(([Re,qe])=>{var Oe;(Oe=Pe.get(Re))==null||Oe.setKeyState(qe)});const ke={filterSets:Q.filterSets,links:Q.links},ee=await H.getServerConfigValues(),ge=new Map(ee),Se={name:O,operateAs:O,groups:[],permissions:{isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:ge.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:ge.get("internal.webClient.appInit.canDownloadCsv")!=="false"}};n(hn.DEFAULT),p(ge),s(V),i(Dn,ke),o(k),r(N),l(Dn,U),$!==void 0&&a(Dn,$),d(x),c(Se),m(_),u(G)}catch(x){li.error(x),f(x)}},[n,s,i,o,r,l,a,d,c,u,m,p]),T=S.exports.useCallback(()=>{document.fonts!=null?document.fonts.ready.then(()=>{C(!1)}):C(!1)},[]);S.exports.useEffect(function(){w(),T()},[w,T]);const y=e==null&&g==null||b,E=!y&&g==null,I=g!=null?`${g}`:null;return v(pe,{children:[E&&h(o2,{}),h(Cl,{isLoading:y,isLoaded:E,errorMessage:I}),v("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"})]})]})};uc.propTypes={workspace:R.exports.shape({}),workspaceStorage:R.exports.shape({close:R.exports.func}),setActiveTool:R.exports.func.isRequired,setCommandHistoryStorage:R.exports.func.isRequired,setDashboardData:R.exports.func.isRequired,setFileStorage:R.exports.func.isRequired,setLayoutStorage:R.exports.func.isRequired,setDashboardConnection:R.exports.func.isRequired,setDashboardSessionWrapper:R.exports.func.isRequired,setPlugins:R.exports.func.isRequired,setUser:R.exports.func.isRequired,setWorkspace:R.exports.func.isRequired,setWorkspaceStorage:R.exports.func.isRequired};uc.defaultProps={workspace:null,workspaceStorage:null};const C2=t=>({workspace:yl(t),workspaceStorage:gS(t)}),eu=Mt(C2,{setActiveTool:Dl,setCommandHistoryStorage:MS,setDashboardData:Km,setFileStorage:NS,setLayoutStorage:T1,setDashboardConnection:cE,setDashboardSessionWrapper:hE,setPlugins:xS,setUser:RS,setWorkspace:Tm,setWorkspaceStorage:DS,setServerConfigValues:_S})(uc),b2=()=>h(Sg,{basename:"/ide/",children:v(wg,{children:[h(Ec,{exact:!0,path:"/",component:eu}),h(Ec,{path:"/notebook/:notebookPath+",component:eu}),h(vg,{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 S2(){"serviceWorker"in navigator&&navigator.serviceWorker.getRegistrations().then(t=>{t.forEach(e=>{e.scope.endsWith("/download/")||e.unregister()})})}k1();hi.render(h(su,{store:Ml,children:h(b2,{})}),document.getElementById("root"));S2();ll.registerOnLoaded();st.init({getWorker:()=>new Eg});window["__react-beautiful-dnd-disable-dev-warnings"]=!0;
|
|
43
|
+
//# sourceMappingURL=index.bd31ac8a.js.map
|