@deephaven/code-studio 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/build/assets/{AppRoot-c69f286d.js → AppRoot-af503463.js} +4 -4
  2. package/build/assets/{AppRoot-c69f286d.js.map → AppRoot-af503463.js.map} +1 -1
  3. package/build/assets/{ControlType-1bdbc207.js → ControlType-83c0cb9c.js} +2 -2
  4. package/build/assets/ControlType-83c0cb9c.js.map +1 -0
  5. package/build/assets/FontBootstrap-b4538119.js +4 -0
  6. package/build/assets/FontBootstrap-b4538119.js.map +1 -0
  7. package/build/assets/{IrisGrid-6d9d51d4.js → IrisGrid-48e0c5de.js} +4 -4
  8. package/build/assets/{IrisGrid-6d9d51d4.js.map → IrisGrid-48e0c5de.js.map} +1 -1
  9. package/build/assets/{IrisGridModelFactory-e70ab7de.js → IrisGridModelFactory-4166dcd3.js} +2 -2
  10. package/build/assets/{IrisGridModelFactory-e70ab7de.js.map → IrisGridModelFactory-4166dcd3.js.map} +1 -1
  11. package/build/assets/{StyleGuideRoot-b68e7e2e.js → StyleGuideRoot-17a1d97f.js} +2 -2
  12. package/build/assets/StyleGuideRoot-17a1d97f.js.map +1 -0
  13. package/build/assets/{index-6fd4451b.js → index-1c94f8a1.js} +3 -3
  14. package/build/assets/{index-6fd4451b.js.map → index-1c94f8a1.js.map} +1 -1
  15. package/build/assets/{index-0be9ad52.js → index-b98d157a.js} +2 -2
  16. package/build/assets/{index-0be9ad52.js.map → index-b98d157a.js.map} +1 -1
  17. package/build/assets/{index-6170a9ac.js → index-cbb82d20.js} +2 -2
  18. package/build/assets/{index-6170a9ac.js.map → index-cbb82d20.js.map} +1 -1
  19. package/build/assets/{usePlugins-738c8dbc.js → usePlugins-5d177539.js} +3 -3
  20. package/build/assets/usePlugins-5d177539.js.map +1 -0
  21. package/build/assets/{useUser-7c5049ea.js → useUser-49aeff4f.js} +2 -2
  22. package/build/assets/{useUser-7c5049ea.js.map → useUser-49aeff4f.js.map} +1 -1
  23. package/build/index.html +2 -2
  24. package/package.json +31 -31
  25. package/build/assets/ControlType-1bdbc207.js.map +0 -1
  26. package/build/assets/FontBootstrap-6b01cb5c.js +0 -4
  27. package/build/assets/FontBootstrap-6b01cb5c.js.map +0 -1
  28. package/build/assets/StyleGuideRoot-b68e7e2e.js.map +0 -1
  29. package/build/assets/usePlugins-738c8dbc.js.map +0 -1
@@ -1,4 +0,0 @@
1
- import{r as c,L as xe,K as X,H as P,C as i,F as k,M as x,G as Y,a1 as Ee}from"./vendor-90228628.js";import{v as pe,d as K,l as Ce,C as re,B as ie,a8 as we,ax as Se}from"./usePlugins-738c8dbc.js";import{L as fe,av as ke,a6 as Me,e as Pe}from"./index-0be9ad52.js";import{M as me,D as De,ah as _e,n as je,o as Ae}from"./IrisGrid-6d9d51d4.js";function se(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function Re(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?se(Object(t),!0).forEach(function(n){V(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):se(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}function V(r,e,t){return e=Fe(e),e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Fe(r){var e=Ve(r,"string");return typeof e=="symbol"?e:String(e)}function Ve(r,e){if(typeof r!="object"||r===null)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}var Le=100,J;(function(r){r.UP="UP",r.DOWN="DOWN"})(J||(J={}));class F extends c.Component{constructor(e){super(e),V(this,"popper",void 0),V(this,"cbContainer",void 0),V(this,"menuContainer",void 0),V(this,"input",void 0),V(this,"getCachedFilteredOptions",xe((n,a)=>n.filter(s=>s.title.toLowerCase().indexOf(a.toLowerCase())>=0)));var{popperOptions:t}=this.props;t=Re({placement:"bottom-end",modifiers:{preventOverflow:{enabled:!1}}},t),this.state={title:"",filteredOptions:[],keyboardOptionIndex:0,menuIsOpen:!1,inputWidth:100,invalid:!1,popperOptions:t},this.handleMenuKeyDown=this.handleMenuKeyDown.bind(this),this.handleMenuBlur=this.handleMenuBlur.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleInputKeyDown=this.handleInputKeyDown.bind(this),this.handleInputBlur=this.handleInputBlur.bind(this),this.handelInputFocus=this.handelInputFocus.bind(this),this.handleInputClick=this.handleInputClick.bind(this),this.updateInputValue=X(this.updateInputValue,Le),this.handleOptionClick=this.handleOptionClick.bind(this),this.handleMenuOpened=this.handleMenuOpened.bind(this),this.handleMenuExited=this.handleMenuExited.bind(this),this.popper=P.createRef(),this.cbContainer=P.createRef(),this.menuContainer=P.createRef(),this.input=P.createRef()}setInputWidth(){this.cbContainer.current&&this.setState({inputWidth:this.cbContainer.current.getBoundingClientRect().width})}getValueAndValidate(e){if(!e)return this.setState({invalid:!1}),{value:e,isValid:!1};var{options:t}=this.props,n=t.filter(a=>a.title.toLowerCase()===e.toLowerCase());return n.length<1?(this.setState({invalid:!0}),{value:e,isValid:!1}):(this.setState({invalid:!1}),{value:n[0].value,isValid:!0})}updateInputValue(e){var{menuIsOpen:t}=this.state,{value:n,isValid:a}=this.getValueAndValidate(e);t&&this.processFilterChange(e),this.fireOnChange(n,a)}fireOnChange(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,{onChange:n}=this.props;n(e,t)}processFilterChange(e){var t,{options:n}=this.props,{menuIsOpen:a}=this.state,s=e?this.getCachedFilteredOptions(n,e):n,l=s.length===1&&s[0].title===e;if(this.setState({filteredOptions:s,keyboardOptionIndex:0}),l&&a){this.closeMenu();return}(t=this.popper.current)===null||t===void 0||t.scheduleUpdate()}resetValue(){this.setState({title:""}),this.fireOnChange("")}handleResize(){this.setInputWidth()}handleMenuKeyDown(e){var t,{filteredOptions:n,keyboardOptionIndex:a}=this.state,s=n[a];switch(e.key){case"Enter":case"ArrowRight":e.stopPropagation(),e.preventDefault(),s!=null&&(this.setState({title:s.title,invalid:!1}),this.fireOnChange(s.value)),this.closeMenu(),(t=this.input.current)===null||t===void 0||t.focus();break;case"ArrowUp":e.stopPropagation(),e.preventDefault(),this.navigateMenu(F.MENU_NAVIGATION_DIRECTION.UP);break;case"ArrowDown":e.stopPropagation(),e.preventDefault(),this.navigateMenu(F.MENU_NAVIGATION_DIRECTION.DOWN);break;case"Tab":if(e.stopPropagation(),e.preventDefault(),e.shiftKey){this.navigateMenu(F.MENU_NAVIGATION_DIRECTION.UP);break}this.navigateMenu(F.MENU_NAVIGATION_DIRECTION.DOWN);break;case"Escape":e.preventDefault(),e.stopPropagation(),this.closeMenu();break}}navigateMenu(e){var{filteredOptions:t,keyboardOptionIndex:n}=this.state,a=n;e===F.MENU_NAVIGATION_DIRECTION.UP?n>0?(a=(a-1)%t.length,this.setState({keyboardOptionIndex:a})):n===0&&(a=t.length-1,this.setState({keyboardOptionIndex:a})):e===F.MENU_NAVIGATION_DIRECTION.DOWN&&n<t.length&&(a=(a+1)%t.length,this.setState({keyboardOptionIndex:a})),this.scrollOptionIntoView(a)}handleInputKeyDown(e){var{onEnter:t}=this.props,{menuIsOpen:n}=this.state;n?this.handleMenuKeyDown(e):e.key==="Enter"?t():e.key==="Escape"?(this.resetValue(),e.preventDefault(),e.stopPropagation()):e.key==="ArrowRight"||e.key==="ArrowLeft"||e.key==="Tab"||e.key==="Shift"||this.openMenu()}handleInputChange(e){this.setState({title:e.target.value}),this.updateInputValue(e.target.value)}handleOptionClick(e){var t;this.setState({title:e.title,invalid:!1}),this.fireOnChange(e.value),this.closeMenu(),(t=this.input.current)===null||t===void 0||t.focus()}handelInputFocus(){var{menuIsOpen:e}=this.state;e||this.openMenu()}handleInputClick(){var{menuIsOpen:e}=this.state;e||this.openMenu()}handleInputBlur(e){var{menuIsOpen:t}=this.state;t&&e.relatedTarget instanceof Element&&this.popper.current!==null&&this.popper.current.element.contains(e.relatedTarget)||this.closeMenu(!1)}handleMenuBlur(e){e.relatedTarget===this.input.current||e.relatedTarget instanceof Element&&this.popper.current!==null&&this.popper.current.element.contains(e.relatedTarget)||this.closeMenu(!1)}handleMenuOpened(){var e;(e=this.input.current)===null||e===void 0||e.focus()}handleMenuExited(){var{menuIsOpen:e}=this.state;e&&this.setState({menuIsOpen:!1,keyboardOptionIndex:0})}openMenu(){var{title:e}=this.state;this.processFilterChange(e),this.setInputWidth(),this.setState({menuIsOpen:!0}),window.requestAnimationFrame(()=>{var t;(t=this.popper.current)===null||t===void 0||t.show()})}closeMenu(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(this.setState({menuIsOpen:!1,keyboardOptionIndex:0}),t){var n;(n=this.input.current)===null||n===void 0||n.focus()}(e=this.popper.current)===null||e===void 0||e.hide()}scrollOptionIntoView(e){if(this.menuContainer.current){var t;(t=this.menuContainer.current.children.item(e))===null||t===void 0||t.scrollIntoView({behavior:"smooth",block:"nearest"})}}renderMenuElement(){var{inputWidth:e}=this.state;return i.jsx("div",{className:k("aci-options"),ref:this.menuContainer,role:"presentation",onKeyDown:this.handleMenuKeyDown,style:{width:e},onBlur:this.handleMenuBlur,children:this.renderOptions()})}renderOptions(){var{noMatchText:e}=this.props,{title:t,filteredOptions:n}=this.state;return t&&n.length===0?i.jsx("div",{className:"no-match",children:e}):n.map((a,s)=>this.renderOption(a,s))}renderOption(e,t){var{keyboardOptionIndex:n}=this.state,a="option-".concat(t,"-").concat(e.value);return i.jsx("button",{type:"button",className:k("aci-option-btn",{"keyboard-active":n===t}),onClick:()=>this.handleOptionClick(e),onFocus:()=>this.setState({keyboardOptionIndex:t}),children:e.title},a)}render(){var{options:e,inputPlaceholder:t,disabled:n,className:a,defaultTitle:s,spellCheck:l,"data-testid":u}=this.props,{title:o,menuIsOpen:p,popperOptions:d,invalid:h}=this.state;return i.jsxs("div",{className:"aci-container",ref:this.cbContainer,children:[i.jsx("input",{value:o||s,className:k("form-control",a,"aci-input",{"is-invalid":h&&!p}),ref:this.input,onChange:this.handleInputChange,placeholder:t||e[0].title,disabled:n,onFocus:this.handelInputFocus,onClick:this.handleInputClick,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,spellCheck:l,"data-testid":u}),i.jsx(pe,{ref:this.popper,options:d,className:k("aci-options-popper interactive"),onEntered:this.handleMenuOpened,onExited:this.handleMenuExited,children:this.renderMenuElement()})]})}}V(F,"propTypes",{options:x.arrayOf(x.shape({title:x.string.isRequired,value:x.string.isRequired})).isRequired,popperOptions:x.shape({}),onChange:x.func,inputPlaceholder:x.string,disabled:x.bool,className:x.string,defaultTitle:x.string,spellCheck:x.bool,onEnter:x.func,noMatchText:x.string,"data-testid":x.string});V(F,"defaultProps",{onChange(){},inputPlaceholder:"",disabled:!1,className:"",defaultTitle:"",popperOptions:null,spellCheck:!0,onEnter(){},noMatchText:"No matching items found","data-testid":void 0});V(F,"MENU_NAVIGATION_DIRECTION",J);const Ot=F;function ve(r){var{className:e="",value:t,onChange:n,spellCheck:a=!1,placeholder:s="",disabled:l=!1,delimiter:u="",id:o="","data-testid":p}=r,[d,h]=c.useState(t),[f,v]=c.useState(!1),g=c.useRef(null);c.useEffect(function(){h(t)},[t]);function T(b){return b.trim().split(u).filter(A=>A).join(`
2
- `.concat(u.trim()))}function C(b){return b.split(`
3
- `).map(A=>A.trim()).join(" ")}function w(){if(g.current){g.current.style.height="0";var b=g.current.scrollHeight+(g.current.offsetHeight-g.current.clientHeight);b>0&&(g.current.style.height="".concat(b,"px"))}}function D(b){var A=b.target.value;f&&(u&&(A=T(A)),v(!1)),h(A),n(A)}function I(){g.current&&(u&&(h(T(d)),w()),g.current.scrollLeft=0)}function M(){g.current&&document.activeElement!==g.current&&g.current.focus()}function E(){u&&(h(C(d)),n(C(d)))}function S(){v(!0)}return c.useEffect(function(){w()},[d]),i.jsx("textarea",{ref:g,id:o,className:k(e,"auto-resize-textarea form-control"),placeholder:s,value:d,rows:1,onChange:D,onFocus:I,onMouseDown:M,onBlur:E,onPaste:S,spellCheck:a,disabled:l,"data-testid":p})}ve.propTypes={value:x.string.isRequired,onChange:x.func.isRequired,className:x.string,placeholder:x.string,spellCheck:x.bool,disabled:x.bool,delimiter:x.string,id:x.string,"data-testid":x.string};ve.defaultProps={className:"",id:"",placeholder:"",disabled:!1,spellCheck:!1,delimiter:"","data-testid":void 0};var Ue=fe.module("TimeInput"),$e="([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]",We=["00:00:00","12:34:56","23:59:59"],ge=P.forwardRef((r,e)=>{var{allowValueWrapping:t=!0,className:n="",onChange:a=()=>!1,value:s=0,onFocus:l=()=>!1,onBlur:u=()=>!1,onSelect:o=()=>!1,"data-testid":p}=r,[d,h]=c.useState(K.formatTime(s)),[f,v]=c.useState(),g=c.useRef(null);c.useImperativeHandle(e,()=>({focus:()=>{var I;(I=g.current)===null||I===void 0||I.focus()},setSelection:I=>{var M;(M=g.current)===null||M===void 0||M.focus(),v(I)}}),[]),c.useEffect(function(){h(K.formatTime(s))},[s]);function T(I,M,E){var S=I.selectionStart===0?24:60,b=parseInt(E,10)-M;return Number.isNaN(b)?b=0:t?b=(b%S+S)%S:b=Math.min(Math.max(0,b),S-1),"".concat(b).padStart(2,"0")}function C(I,M,E,S,b){return S===0&&b===2&&M===1&&parseInt(E,10)>1?"0".concat(E).concat(I.substring(2)):De(I,M,E)}function w(I){Ue.debug("handleChange",I),h(I),K.isTimeString(I)&&a(K.parseTime(I))}var D=c.useCallback(I=>{v(I),o(I)},[o]);return i.jsx(me,{ref:g,className:n,example:We,getNextSegmentValue:T,getPreferredReplacementString:C,onChange:w,onSelect:D,pattern:$e,selection:f,value:d,onFocus:l,onBlur:u,"data-testid":p})});ge.defaultProps={allowValueWrapping:!0,className:"",onChange:()=>!1,onSelect:()=>!1,value:0,onFocus:()=>!1,onBlur:()=>!1,"data-testid":void 0};const Q=ge;function le(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function Be(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?le(Object(t),!0).forEach(function(n){U(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):le(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}function U(r,e,t){return e=Ke(e),e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Ke(r){var e=He(r,"string");return typeof e=="symbol"?e:String(e)}function He(r,e){if(typeof r!="object"||r===null)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}var oe=-1,ee;(function(r){r.UP="UP",r.DOWN="DOWN"})(ee||(ee={}));class _ extends c.Component{constructor(e){super(e),U(this,"csContainer",void 0),U(this,"menuContainer",void 0),U(this,"button",void 0),U(this,"input",void 0);var{value:t,valueToTime:n}=e;this.toggleMenu=this.toggleMenu.bind(this),this.handleMenuKeyDown=this.handleMenuKeyDown.bind(this),this.closeMenu=this.closeMenu.bind(this),this.handleOptionClick=this.handleOptionClick.bind(this),this.handleOptionFocus=this.handleOptionFocus.bind(this),this.handleMenuOpened=this.handleMenuOpened.bind(this),this.handleMenuExited=this.handleMenuExited.bind(this),this.handleCustomInput=this.handleCustomInput.bind(this),this.csContainer=P.createRef(),this.menuContainer=P.createRef(),this.button=P.createRef(),this.input=P.createRef(),this.state={keyboardOptionIndex:0,menuIsOpen:!1,inputWidth:100,customTime:n(t),inputFocused:!1}}getSelectedText(){var{options:e,value:t,placeholder:n}=this.props,{customTime:a}=this.state;if(t===null)return n;for(var s=0;s<e.length;s+=1){var l=e[s];if(l.value===t)return l.title}return K.formatTime(a)}setInputWidth(){this.csContainer.current&&this.setState({inputWidth:this.csContainer.current.getBoundingClientRect().width})}focus(){var e;(e=this.button.current)===null||e===void 0||e.focus()}updateInputValue(e){var{onChange:t}=this.props;t(e)}handleResize(){this.setInputWidth()}handleMenuKeyDown(e){var t,{keyboardOptionIndex:n,inputFocused:a}=this.state,{options:s}=this.props;switch(e.key){case"Enter":case" ":a?this.updateFromCustom():this.updateInputValue(s[n].value),this.closeMenu(),(t=this.button.current)===null||t===void 0||t.focus(),e.stopPropagation(),e.preventDefault();break;case"Tab":e.shiftKey?this.handleMenuNavigation(_.MENU_NAVIGATION_DIRECTION.UP):this.handleMenuNavigation(_.MENU_NAVIGATION_DIRECTION.DOWN),e.stopPropagation(),e.preventDefault();break;case"ArrowUp":this.handleMenuNavigation(_.MENU_NAVIGATION_DIRECTION.UP),e.stopPropagation(),e.preventDefault();break;case"ArrowDown":this.handleMenuNavigation(_.MENU_NAVIGATION_DIRECTION.DOWN),e.stopPropagation(),e.preventDefault();break;case"Escape":this.closeMenu();break}}handleMenuNavigation(e){var{keyboardOptionIndex:t,inputFocused:n}=this.state,{options:a}=this.props,s=a.length,l=t;switch(e){case _.MENU_NAVIGATION_DIRECTION.UP:if(!n&&t===0){this.focusInput();break}else n&&this.focusOption(t);t>0&&!n?(l=(l-1)%s,this.setState({keyboardOptionIndex:l})):t===0&&(l=s-1,this.setState({keyboardOptionIndex:l})),this.scrollOptionIntoView(l);break;case _.MENU_NAVIGATION_DIRECTION.DOWN:if(!n&&t===s-1){this.focusInput();break}else n&&this.focusOption(t);t<s&&!(n&&t===0)&&(l=(l+1)%s,this.setState({keyboardOptionIndex:l})),this.scrollOptionIntoView(l);break}}handleOptionClick(e){var t=Number(e.currentTarget.value),{options:n,timeToValue:a}=this.props,{customTime:s}=this.state;if(t===oe){var l=a(s);this.updateAndClose(l)}else this.updateAndClose(n[t].value)}updateAndClose(e){var t;this.updateInputValue(e),this.closeMenu(),(t=this.button.current)===null||t===void 0||t.focus()}handleOptionFocus(e){this.setState({keyboardOptionIndex:Number(e.target.value)})}handleMenuOpened(){var e,{options:t,value:n}=this.props,{keyboardOptionIndex:a}=this.state;this.scrollOptionIntoView(a);var s=(e=this.menuContainer.current)===null||e===void 0?void 0:e.querySelector(".cs-option-btn.keyboard-active");if(s instanceof HTMLElement&&s.focus(),n!==null){var l=t.map(u=>u.value).indexOf(n);l<0&&this.focusInput()}}focusInput(){var e;(e=this.input.current)===null||e===void 0||e.focus()}focusOption(e){var t,n=(t=this.menuContainer.current)===null||t===void 0?void 0:t.querySelector(".cs-options");if(n&&n.children!=null){var a=n.children.item(e);a instanceof HTMLElement&&a.focus()}}handleMenuExited(){var{menuIsOpen:e}=this.state;e&&this.setState({menuIsOpen:!1,keyboardOptionIndex:0})}handleCustomInput(e){var{timeToValue:t}=this.props,n=t(e);this.updateInputValue(n),this.setState({customTime:e})}updateFromCustom(){var{timeToValue:e}=this.props,{customTime:t}=this.state,n=e(t);this.updateInputValue(n)}toggleMenu(e){var{menuIsOpen:t}=this.state;t?this.closeMenu():this.openMenu(),e.stopPropagation()}openMenu(){this.updateKeyboardIndex(),this.setInputWidth(),this.setState({menuIsOpen:!0})}closeMenu(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(this.setState({menuIsOpen:!1}),e){var t;(t=this.button.current)===null||t===void 0||t.focus()}}updateKeyboardIndex(){var{options:e,value:t}=this.props;if(t!==null){var n=e.map(a=>a.value).indexOf(t);n>0&&this.setState({keyboardOptionIndex:n})}}scrollOptionIntoView(e){var t,n=(t=this.menuContainer.current)===null||t===void 0?void 0:t.querySelector(".cs-options");if(n&&n.children!=null){var a=n.children.item(e);a instanceof HTMLElement&&a.offsetTop>_.DROP_DOWN_MENU_HEIGHT?n.scrollTop=a.offsetTop-_.DROP_DOWN_MENU_HEIGHT:(a instanceof HTMLElement&&a.offsetTop<0||e===0)&&(n.scrollTop=0)}}renderMenuElement(){var{inputWidth:e}=this.state;return i.jsx("div",{className:"cs-menu-container",ref:this.menuContainer,role:"presentation",onKeyDown:this.handleMenuKeyDown,onClick:t=>{t.stopPropagation()},style:{width:e},children:i.jsx("div",{className:"cs-options-container",children:i.jsx("div",{className:"cs-options",children:this.renderOptions()})})})}renderOptions(){for(var{options:e,value:t,icon:n,customText:a}=this.props,{keyboardOptionIndex:s,customTime:l,inputFocused:u}=this.state,o=!1,p=[],d=0;d<e.length;d+=1){var h=e[d],f="option-".concat(d,"-").concat(h.value);o=o||h.value===t,p.push(i.jsxs("button",{type:"button",value:d,className:k("cs-option-btn",{"keyboard-active":s===d&&!u}),onClick:this.handleOptionClick,onFocus:this.handleOptionFocus,children:[h.value===t&&i.jsx(Y,{icon:n,className:"mr-2"}),h.value!==t&&i.jsx("span",{className:"mr-4"}),h.title]},f))}return p.push(i.jsx("hr",{className:"cs-divider"},"option-divider")),p.push(i.jsxs("button",{type:"button",value:oe,className:k("cs-option-btn",{"keyboard-active":u}),onClick:this.handleOptionClick,onFocus:this.handleOptionFocus,children:[!o&&t!==null?i.jsx(Y,{icon:n,className:"mr-2"}):i.jsx("span",{className:"mr-4"}),a]},"option-custom-label")),p.push(i.jsxs("div",{className:"cs-custom-container",children:[i.jsx("span",{className:"mr-2"}),i.jsx(Q,{ref:this.input,onChange:this.handleCustomInput,value:l,onFocus:()=>this.setState({inputFocused:!0}),onBlur:()=>this.setState({inputFocused:!1})},"option-input"),i.jsx("span",{className:"ml-2"})]},"cs-custom-container")),p.push(i.jsx("hr",{className:"mb-2"},"option-end")),p}render(){var{disabled:e,invalid:t,value:n,"data-testid":a}=this.props,{menuIsOpen:s}=this.state,{popperOptions:l}=this.props;return l=Be({placement:"bottom-end",modifiers:{preventOverflow:{enabled:!1}}},l),i.jsx("div",{className:"input-group cs-container context-menu",ref:this.csContainer,"data-testid":a,children:i.jsx("div",{className:k("input-group-append cs-dropdown",{"cs-dropdown-invalid":t}),children:i.jsxs("button",{type:"button",className:k("btn cs-btn form-control",{"cs-btn-invalid":t}),ref:this.button,onClick:this.toggleMenu,disabled:e,children:[i.jsx("span",{className:k({"text-muted":n===null}),children:this.getSelectedText()}),i.jsx("span",{className:"cs-caret"}),i.jsx(Ce,{isShown:s,actions:{menuElement:this.renderMenuElement()},popperOptions:l,popperClassName:"CustomTimeSelect",onMenuOpened:this.handleMenuOpened,onMenuClosed:this.handleMenuExited,menuStyle:{maxWidth:"100rem"}})]})})})}}U(_,"MENU_NAVIGATION_DIRECTION",ee);U(_,"DROP_DOWN_MENU_HEIGHT",125);U(_,"defaultProps",{onChange(){},value:null,disabled:!1,popperOptions:{},icon:ke,customText:"Custom",placeholder:"Select a time",valueToTime:r=>r===null?0:Math.round(r/1e3),timeToValue:r=>r*1e3,invalid:!1,"data-testid":void 0});const It=_;var Ge=fe.module("DateInput"),ze="[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])",qe=["2000-01-01","2022-12-31"],Ze="YYYY-MM-DD",be=P.forwardRef((r,e)=>{var{className:t="",onChange:n=()=>{},defaultValue:a="",onFocus:s=()=>{},onBlur:l=()=>{},"data-testid":u}=r,[o,p]=c.useState(a),[d,h]=c.useState(),f=c.useCallback(v=>{Ge.debug("handleChange",v),p(v),n(v)},[n]);return i.jsx("div",{className:"d-flex flex-row align-items-center",children:i.jsx(me,{ref:e,className:k(t),example:qe,getNextSegmentValue:_e,onChange:f,onSelect:h,pattern:ze,placeholder:Ze,selection:d,value:o,onFocus:s,onBlur:l,"data-testid":u})})});be.displayName="DateInput";const Tt=be;function Xe(r,e,t){return e=Ye(e),e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Ye(r){var e=Je(r,"string");return typeof e=="symbol"?e:String(e)}function Je(r,e){if(typeof r!="object"||r===null)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}class W extends c.Component{static isParentSelected(e,t){var n=t.get(e);if(n===void 0)return!1;if(typeof n=="boolean")return n;var a=Array.from(n.values()).includes(!0),s=Array.from(n.values()).includes(!1);return a&&s?null:a}constructor(e){super(e),this.toggleMenu=this.toggleMenu.bind(this),this.toggleValueFor=this.toggleValueFor.bind(this),this.selectAll=this.selectAll.bind(this),this.clear=this.clear.bind(this),this.state={menuIsOpen:!1}}toggleMenu(e){e.stopPropagation(),e.preventDefault(),this.setState(t=>{var{menuIsOpen:n}=t;return{menuIsOpen:!n}})}toggleValueFor(e,t){var{valueMap:n,onUpdateValueMap:a}=this.props,s=new Map(n),l=s.get(e);if(l instanceof Map){var u=new Map(l);if(t!=null)u.set(t,l.get(t)===void 0);else{var o=W.isParentSelected(e,s),p=o==null||!o;l.forEach((f,v)=>u.set(v,p))}s.set(e,u)}else s.set(e,l==null||!l);var d=s.get(e);if(t===void 0&&d!==void 0&&typeof d!="boolean"){var h=W.isParentSelected(e,n);h!=null&&h?d.forEach((f,v)=>d.set(v,!1)):d.forEach((f,v)=>d.set(v,!0))}a(s)}setAllValues(e){var{valueMap:t,onUpdateValueMap:n}=this.props,a=new Map;t.forEach((s,l)=>{if(typeof s=="boolean")a.set(l,e);else{var u=new Map;s.forEach((o,p)=>u.set(p,e)),a.set(l,u)}}),n(a)}selectAll(){this.setAllValues(!0)}clear(){this.setAllValues(!1)}renderMenuElement(){var{valueMap:e,"data-testid":t}=this.props;return i.jsxs("div",{className:"hcm-menu-container",children:[Array.from(e.entries()).map(n=>{var[a,s]=n;return i.jsxs("div",{children:[i.jsx(re,{className:"hcm-parent",checked:W.isParentSelected(a,e),onChange:()=>this.toggleValueFor(a),children:a}),s!==void 0&&typeof s!="boolean"&&Array.from(s.entries()).map(l=>{var[u,o]=l;return i.jsx(re,{className:"hcm-child",checked:o,onChange:()=>this.toggleValueFor(a,u),children:u},u)})]},a)}),i.jsx(ie,{kind:"ghost",onClick:this.selectAll,"data-testid":t!==void 0?"".concat(t,"-btn-select-all"):void 0,children:"Select All"}),i.jsx(ie,{kind:"ghost",onClick:this.clear,"data-testid":t!==void 0?"".concat(t,"-btn-clear"):void 0,children:"Clear"})]})}render(){var{menuText:e,className:t,icon:n,id:a,"data-testid":s}=this.props,{menuIsOpen:l}=this.state;return i.jsxs("button",{type:"button",className:k("btn hcm-btn",t),onClick:this.toggleMenu,id:a,"data-testid":s,children:[i.jsxs("span",{children:[n&&i.jsx(Y,{icon:n,className:"hcm-icon mr-1"}),e]}),i.jsx("span",{className:"cs-caret"}),i.jsx(pe,{options:{placement:"bottom"},isShown:l,onExited:()=>{this.setState({menuIsOpen:!1})},closeOnBlur:!0,interactive:!0,children:this.renderMenuElement()})]})}}Xe(W,"defaultProps",{className:"",icon:null,id:"","data-testid":void 0});const Nt=W;var Qe=.025,et=.9,tt=.1,nt=.618,ue=80,$={SIZE:8,DOT_SIZE:2},L=18,at=250,rt=60*1e3,it={background:"var(--dh-color-random-area-plot-animation-bg)",foregroundFill:"var(--dh-color-random-area-plot-animation-fg-fill)",foregroundStroke:"var(--dh-color-random-area-plot-animation-fg-stroke)",gridColor:"var(--dh-color-random-area-plot-animation-grid)"};function st(){return Me(it)}var lt=P.memo(()=>{var{activeThemes:r}=we(),[e,t]=c.useState(null);c.useEffect(()=>{t(st())},[r]);var n=c.useRef(null),a=c.useRef(null),[s,l]=c.useState(!1),u=window.devicePixelRatio,o,p,d,h,f,v=null,g=[];function T(){var m;a.current!=null&&(d=a.current.offsetWidth,h=a.current.offsetHeight),n.current!=null&&(n.current.style.width="".concat(d,"px"),n.current.style.height="".concat(h,"px"),n.current.width=d*u,n.current.height=h*u),(m=o)===null||m===void 0||m.scale(u,u)}function C(){if(e==null)return null;var{foregroundFill:m,foregroundStroke:N}=e,y=document.createElement("canvas");y.width=$.SIZE,y.height=$.SIZE;var R=y.getContext("2d");return R!=null&&(R.fillStyle=N,R.fillRect(0,0,$.DOT_SIZE,$.DOT_SIZE),R.fillStyle=m,R.fillRect(0,0,$.SIZE,$.SIZE)),R?.createPattern(y,"repeat")}function w(m){var N=Math.random()-.5,y=Qe*N;return m<tt?y=Math.abs(y):m>et&&(y=-Math.abs(y)),m+y}function D(){for(var m=[],N=nt,y=0;y<d+L;y+=1)N=w(N),m.push(N);return m}function I(){for(;g.length>=d+L;)g.pop();for(;g.length<d+L;)g.push(w(g[g.length-1]))}function M(m,N){N.beginPath(),N.moveTo(-1,h+1),N.lineTo(-1,h*m[0]);for(var y=0;y<m.length;y+=1)N.lineTo(y,h*m[y]);N.lineTo(d+L,h*m[m.length-1]),N.lineTo(d+L,h+1),N.closePath()}function E(m){m.beginPath();for(var N=1;N<d;N+=ue)m.moveTo(N,0),m.lineTo(N,h);for(var y=1;y<h;y+=ue)m.moveTo(0,y),m.lineTo(d,y)}function S(m){var N,y,R;if(e!=null){v=(N=v)!==null&&N!==void 0?N:m;var{background:Oe,foregroundStroke:Ie,gridColor:Te}=e;Pe(o),o.fillStyle=Oe,o.fillRect(0,0,d,h),E(o),o.lineWidth=1,o.strokeStyle=Te,o.stroke();var ne=(((y=v)!==null&&y!==void 0?y:0)-(m??0))/(1e3/L);if(o.translate(ne,0),M(g,o),o.lineWidth=2,o.strokeStyle=Ie,o.stroke(),o.translate(-ne,0),p!=null&&(o.fillStyle=p),o.fill(),o.setTransform(u,0,0,u,0,0),(m??0)-((R=v)!==null&&R!==void 0?R:0)>1e3/L){for(var Z,Ne=Math.floor(((m??0)-((Z=v)!==null&&Z!==void 0?Z:0))/(1e3/L)),ae=0;ae<Ne;ae+=1)g.shift(),g.push(w(g[g.length-1]));v=m}f!=null&&cancelAnimationFrame(f),f=requestAnimationFrame(S)}}var b=X(()=>{f=requestAnimationFrame(m=>{T(),I(),l(!1),S(m)})},at,{leading:!0});function A(){l(!0),f!=null&&cancelAnimationFrame(f),f=null,v=null}var H=X(()=>{A()},rt);function q(){f==null&&(l(!1),T(),I(),f=requestAnimationFrame(S)),H()}function G(){document.hasFocus()&&q()}function te(){f!=null&&cancelAnimationFrame(f),H(),b()}return c.useEffect(()=>{var m;return o=(m=n.current)===null||m===void 0?void 0:m.getContext("2d",{alpha:!1}),T(),g=D(),p=C(),S(),H(),window.addEventListener("resize",te),window.addEventListener("focus",q),window.addEventListener("blur",A),window.addEventListener("mousemove",G),window.addEventListener("keydown",G),()=>{f!=null&&cancelAnimationFrame(f),window.removeEventListener("resize",te),window.removeEventListener("focus",q),window.removeEventListener("blur",A),window.removeEventListener("mousemove",G),window.removeEventListener("keydown",G),H.cancel(),b.cancel()}},[e]),e&&i.jsx("div",{className:"random-area-plot-animation-container",ref:a,children:i.jsx("canvas",{ref:n,className:s?"shade":""})})});const xt=lt,ot="_track_1ymiy_30",ut="_handle_1ymiy_13",dt="_ticks_1ymiy_98",ye={"handle-size":"15px","popover-width":"90px","time-slider":"_time-slider_1ymiy_3","time-slider-popovers":"_time-slider-popovers_1ymiy_8","handle-popper":"_handle-popper_1ymiy_13","flex-spacer":"_flex-spacer_1ymiy_26",track:ot,"track-fills":"_track-fills_1ymiy_37","track-fill":"_track-fill_1ymiy_37","track-fill-start":"_track-fill-start_1ymiy_55","track-fill-middle":"_track-fill-middle_1ymiy_56","track-fill-end":"_track-fill-end_1ymiy_59","handle-track":"_handle-track_1ymiy_62",handle:ut,ticks:dt,"tick-labels":"_tick-labels_1ymiy_116","tick-label":"_tick-label_1ymiy_116","tick-label-wrapper":"_tick-label-wrapper_1ymiy_132"};var z=parseInt(ye["handle-size"],10),de=parseInt(ye["popover-width"],10),j=24*60*60-1,ce=5*60;function Et(r){var{startTime:e,endTime:t,onChange:n,isStartModified:a=!1,isEndModified:s=!1,"data-testid":l}=r,[u,o]=c.useState(e),[p,d]=c.useState(t),h=c.useRef(null);c.useEffect(function(){o(e),d(t)},[e,t]);var f=c.useCallback((T,C)=>{var w=T,D=C;w===D&&(D<j?D+=1:w-=1),o(w),d(D),n({startTime:w,endTime:D})},[o,d,n]),v=c.useCallback(T=>{f(T,p)},[f,p]),g=c.useCallback(T=>{f(u,T)},[f,u]);return i.jsxs("div",{className:"time-slider","data-testid":l,children:[i.jsx(ct,{startTime:u,endTime:p,onStartTimeChange:v,onEndTimeChange:g,isStartModified:a,isEndModified:s}),i.jsxs("div",{className:"track",ref:h,children:[i.jsx(ht,{startTime:u,endTime:p}),i.jsx("div",{className:"ticks",children:Array(24).fill(null).map((T,C)=>i.jsx("div",{className:"tick"},C))}),i.jsx(he,{track:h,time:u,setTime:v}),i.jsx(he,{track:h,time:p,setTime:g})]}),i.jsxs("div",{className:"tick-labels",children:[i.jsx("div",{className:"tick-label",children:"0:00"}),i.jsx("div",{className:"tick-label-wrapper",children:Array(24).fill(null).map((T,C)=>i.jsx("div",{className:"tick-label",children:"".concat(C+1,":00")},C))})]})]})}function ct(r){var{startTime:e,endTime:t,onStartTimeChange:n,onEndTimeChange:a,isStartModified:s,isEndModified:l,"data-testid":u}=r,o=e>t,[p,d]=c.useState(o?t:e),[h,f]=c.useState(o?e:t),v=c.useRef(null),g=c.useRef(null),T=c.useRef(null),C=c.useRef(null);c.useEffect(function(){d(e>t?t:e),f(e>t?e:t)},[e,t]),c.useEffect(function(){if(T.current!==null){var S;(S=g.current)===null||S===void 0||S.setSelection(T.current)}if(C.current!==null){var b;(b=v.current)===null||b===void 0||b.setSelection(C.current)}},[o]);function w(E){e<=t?n(E):a(E)}function D(E){e<=t?a(E):n(E)}var I=c.useCallback(E=>{T.current=E,C.current=null},[]),M=c.useCallback(E=>{T.current=null,C.current=E},[]);return i.jsxs("div",{className:"time-slider-popovers",children:[i.jsx("div",{className:"flex",style:{flexBasis:"calc(".concat(p/j*100,"% - ").concat(de/2,"px)")}}),i.jsxs("div",{className:"handle-popper",children:[i.jsx("label",{className:k({modified:o?l:s}),children:o?"End Time":"Start Time"}),i.jsx(Q,{ref:v,allowValueWrapping:!1,value:p,onChange:w,onSelect:I,"data-testid":u!==void 0?"".concat(u,"-input-1"):void 0})]}),i.jsx("div",{className:"flex-spacer"}),i.jsxs("div",{className:"handle-popper",children:[i.jsx("label",{className:k({modified:o?s:l}),children:o?"Start Time":"End Time"}),i.jsx(Q,{ref:g,allowValueWrapping:!1,value:h,onChange:D,onSelect:M,"data-testid":u!==void 0?"".concat(u,"-input-2"):void 0})]}),i.jsx("div",{className:"flex",style:{flexBasis:"calc(".concat((j-h)/j*100,"% - ").concat(de/2,"px)")}})]})}function ht(r){var{startTime:e,endTime:t,"data-testid":n}=r;return i.jsxs("div",{className:"track-fills","data-testid":n,children:[e>t&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"track-fill track-fill-start",style:{transform:"scaleX(".concat(t/j,")")}}),i.jsx("div",{className:"track-fill track-fill-end",style:{transform:"scaleX(".concat((j-e)/j,")")}})]}),e<t&&i.jsx("div",{className:"track-fill track-fill-middle",style:{transform:"translateX(".concat(e/j*100,"%) scaleX(").concat((t-e)/j,")")}})]})}function he(r){var{track:e,time:t,setTime:n,"data-testid":a}=r,s=c.useMemo(()=>{var f=3600,v=z/2;return t<f?v=t/f*(z/2):t>23*f&&(v=z/2+1/(j-23*f)*(t-23*f)*(z/2)),"translateX(calc(".concat(t/j*100,"% - ").concat(v,"px))")},[t]),l=c.useCallback(f=>{if(!e.current)return 0;var v=e.current.getBoundingClientRect(),g=Math.max(f-v.left,0),T=j*Math.min(1,g/v.width),C=ce*Math.round(T/ce),w=Math.min(j,C);return w},[e]),u=c.useCallback(f=>{var{clientX:v}=f;n(l(v))},[n,l]),o=c.useCallback(f=>{var{clientX:v}=f;n(l(v)),window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",o),document.documentElement.classList.remove("drag-pointer-events-none")},[n,l,u]),p=c.useCallback(()=>{window.addEventListener("mousemove",u),window.addEventListener("mouseup",o),document.documentElement.classList.add("drag-pointer-events-none")},[u,o]),d=c.useCallback(()=>{window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",o),document.documentElement.classList.remove("drag-pointer-events-none")},[u,o]),h=c.useCallback(()=>{p()},[p]);return c.useEffect(function(){return()=>{d()}},[d]),i.jsx("div",{className:"handle-track",style:{transform:s},children:i.jsx("button",{className:"handle",type:"button","aria-label":"Change time",onMouseDown:h,"data-testid":a})})}function Ct(r){var{children:e,className:t,labelText:n,hintText:a,isModified:s,validationError:l,showValidationError:u=!0,"data-testid":o,id:p}=r,{current:d}=c.useRef(p??Ee());return i.jsxs(i.Fragment,{children:[i.jsx("label",{className:k("validate-label",t,{modified:s}),htmlFor:d,"data-testid":o,children:n}),P.Children.toArray(e).map(h=>P.isValidElement(h)?P.cloneElement(h,{className:k(h.props.className,{"is-invalid":l})}):i.jsx("div",{className:k(t),children:h})),a!==void 0&&i.jsx("small",{className:"form-text text-muted",children:a}),l!==void 0&&u&&i.jsx("p",{className:"validate-label-error text-danger",children:l})]})}function B(r,e,t){return e=pt(e),e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function pt(r){var e=ft(r,"string");return typeof e=="symbol"?e:String(e)}function ft(r,e){if(typeof r!="object"||r===null)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}class O extends je{static get theme(){return O._theme==null&&(O._theme=Se()),O._theme}static makeRandomSeries(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:100,a=[],s=[],l=[],u=[],o=new Date("2018-06-01"),p=0;p<n;p+=1){var d=new Date(o.getFullYear(),o.getMonth(),o.getDate()+p-n);a.push("".concat(d.getFullYear(),"-").concat(d.getMonth()+1,"-").concat(d.getDate()));var h=(Math.sin(p/n*e)*n/3+Math.cos(p*.2)*n/6+Math.sin(p*.5)*n/10+O.random()*n/5+p*O.smoothing)*t;h=Math.round(h*100)/100,s.push(h),u.push(40+p*O.smoothing),l.push(Math.sin(p/n*e)*n/3+O.random()*n/10+p*O.smoothing)}return{x:a,y:s,s:l,l:u}}static makeScatter(e){return{name:"SCTR",x:e.x,y:e.y,type:"scatter",mode:"markers",hoverinfo:"skip",marker:{size:5}}}static makeArea(e){return{name:"AREA",x:e.x,y:e.s,type:"scatter",mode:"line",fill:"tozeroy",hoverinfo:"all",line:{color:O.theme.area_color,width:3}}}static makeTrendline(e){return{name:"Trendline <br>R<sup>2</sup> = 0.91",x:e.x,y:e.l,type:"scatter",mode:"line",hoverinfo:"skip",line:{width:3,dash:"dot",color:O.theme.trend_color}}}static makeErrorBand(e){for(var t=[],n=[],a=0;a<e.y.length;a+=1){var s=e.y[a];t[a]=Math.round((s+18)*100)/100,n[a]=Math.round((s-18)*100)/100}var l=t.concat(n.reverse());return{name:"error",x:e.x.concat(e.x.slice().reverse()),y:l,type:"scatter",mode:"line",hoverinfo:"skip",fill:"toself",fillcolor:O.theme.error_band_fill_color,line:{width:0,color:O.theme.error_band_line_color,shape:"spline"}}}static makeLine(e){return{name:"LINE",x:e.x,y:e.y,type:"scatter",mode:"line",hoverinfo:"x+y+text+name",line:{color:O.theme.line_color,width:3}}}static makeRandomData(){var e=O.makeRandomSeries(6),t=O.makeArea(e),n=O.makeTrendline(e),a=O.makeRandomSeries(2),s=O.makeLine(a),l=O.makeErrorBand(a);return[t,n,s,l]}static makeDefaultLayout(e){var t=new Ae(e).makeDefaultLayout(O.theme);return t.title="Chart",t.xaxis&&(t.xaxis.title="Datestamp"),t.yaxis&&(t.yaxis.title="Price"),t}constructor(e){var{data:t=O.makeRandomData(),layout:n=O.makeDefaultLayout(e),filterFields:a=[]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e),B(this,"data",void 0),B(this,"filterFields",void 0),B(this,"layout",void 0),this.data=t,this.layout=n,this.filterFields=a}getData(){return this.data}getLayout(){return this.layout}getFilterColumnMap(){for(var e=new Map,t=0;t<this.filterFields.length;t+=1){var n=this.filterFields[t],a="java.lang.String";e.set(n,{name:n,type:a})}return e}isFilterRequired(){return this.filterFields.length>0}setFilter(){this.fireUpdate(this.data)}}B(O,"random",Math.random.bind(Math));B(O,"smoothing",1.5);B(O,"_theme",void 0);const wt=O;var mt=c.createContext(!1);function St(r){var{fontClassNames:e=["fira-sans-regular","fira-sans-semibold","fira-mono"],children:t}=r,[n,a]=c.useState(!1);return c.useEffect(function(){document.fonts.ready.then(()=>{a(!0)})},[]),i.jsxs(i.Fragment,{children:[i.jsx(mt.Provider,{value:n,children:t}),i.jsx("div",{id:"preload-fonts",style:{visibility:"hidden",position:"absolute",top:-1e4},children:e.map(s=>i.jsx("p",{className:s,children:"preload"},s))})]})}export{Ot as A,It as C,Tt as D,mt as F,Nt as H,wt as M,Q as T,Ct as V,ve as a,xt as b,Et as c,St as d};
4
- //# sourceMappingURL=FontBootstrap-6b01cb5c.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FontBootstrap-6b01cb5c.js","sources":["../../../components/dist/AutoCompleteInput.js","../../../components/dist/AutoResizeTextarea.js","../../../components/dist/TimeInput.js","../../../components/dist/CustomTimeSelect.js","../../../components/dist/DateInput.js","../../../components/dist/HierarchicalCheckboxMenu.js","../../../components/dist/RandomAreaPlotAnimation.js","../../../components/dist/TimeSlider.js","../../../components/dist/ValidateLabelInput.js","../../../chart/dist/MockChartModel.js","../../../app-utils/dist/components/FontBootstrap.js"],"sourcesContent":["function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Popper } from \"./popper/index.js\";\nimport \"./AutoCompleteInput.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar DEBOUNCE_DELAY = 100;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass AutoCompleteInput extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"cbContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"input\", void 0);\n _defineProperty(this, \"getCachedFilteredOptions\", memoize((options, input) => options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0)));\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions\n };\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.popper = /*#__PURE__*/React.createRef();\n this.cbContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n }\n setInputWidth() {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width\n });\n }\n }\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title) {\n if (!title) {\n this.setState({\n invalid: false\n });\n return {\n value: title,\n isValid: false\n };\n }\n\n // validate\n var {\n options\n } = this.props;\n var result = options.filter(option => option.title.toLowerCase() === title.toLowerCase());\n if (result.length < 1) {\n this.setState({\n invalid: true\n });\n return {\n value: title,\n isValid: false\n };\n }\n this.setState({\n invalid: false\n });\n return {\n value: result[0].value,\n isValid: true\n };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title) {\n var {\n menuIsOpen\n } = this.state;\n var {\n value,\n isValid\n } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n fireOnChange(value) {\n var isValid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n onChange\n } = this.props;\n onChange(value, isValid);\n }\n processFilterChange(filter) {\n var _this$popper$current;\n var {\n options\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var filteredOptions = filter ? this.getCachedFilteredOptions(options, filter) : options;\n var perfectMatch = filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue() {\n this.setState({\n title: ''\n });\n this.fireOnChange('');\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$input$current;\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var option = filteredOptions[keyboardOptionIndex];\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n navigateMenu(direction) {\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n handleInputKeyDown(event) {\n var {\n onEnter\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (!(event.key === 'ArrowRight' || event.key === 'ArrowLeft' || event.key === 'Tab' || event.key === 'Shift')) {\n this.openMenu();\n }\n }\n handleInputChange(event) {\n this.setState({\n title: event.target.value\n });\n this.updateInputValue(event.target.value);\n }\n handleOptionClick(option) {\n var _this$input$current2;\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n this.closeMenu();\n (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();\n }\n handelInputFocus() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputClick() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputBlur(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen && event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuBlur(event) {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (event.relatedTarget === this.input.current || event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuOpened() {\n var _this$input$current3;\n (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n openMenu() {\n var {\n title\n } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.show();\n });\n }\n closeMenu() {\n var _this$popper$current3;\n var focusInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n if (focusInput) {\n var _this$input$current4;\n (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();\n }\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.hide();\n }\n scrollOptionIntoView(index) {\n if (this.menuContainer.current) {\n var _this$menuContainer$c;\n (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('aci-options'),\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n style: {\n width: inputWidth\n },\n onBlur: this.handleMenuBlur,\n children: this.renderOptions()\n });\n }\n renderOptions() {\n var {\n noMatchText\n } = this.props;\n var {\n title,\n filteredOptions\n } = this.state;\n if (title && filteredOptions.length === 0) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"no-match\",\n children: noMatchText\n });\n }\n return filteredOptions.map((option, index) => this.renderOption(option, index));\n }\n renderOption(option, index) {\n var {\n keyboardOptionIndex\n } = this.state;\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n return /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index\n }),\n onClick: () => this.handleOptionClick(option),\n onFocus: () => this.setState({\n keyboardOptionIndex: index\n }),\n children: option.title\n }, key);\n }\n render() {\n var {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId\n } = this.props;\n var {\n title,\n menuIsOpen,\n popperOptions,\n invalid\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"aci-container\",\n ref: this.cbContainer,\n children: [/*#__PURE__*/_jsx(\"input\", {\n value: title || defaultTitle,\n className: classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen\n }),\n ref: this.input,\n onChange: this.handleInputChange,\n placeholder: inputPlaceholder || options[0].title,\n disabled: disabled,\n onFocus: this.handelInputFocus,\n onClick: this.handleInputClick,\n onBlur: this.handleInputBlur,\n onKeyDown: this.handleInputKeyDown,\n spellCheck: spellCheck,\n \"data-testid\": dataTestId\n }), /*#__PURE__*/_jsx(Popper, {\n ref: this.popper,\n options: popperOptions,\n className: classNames('aci-options-popper interactive'),\n onEntered: this.handleMenuOpened,\n onExited: this.handleMenuExited,\n children: this.renderMenuElement()\n })]\n });\n }\n}\n_defineProperty(AutoCompleteInput, \"propTypes\", {\n options: PropTypes.arrayOf(PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string\n});\n_defineProperty(AutoCompleteInput, \"defaultProps\", {\n onChange() {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter() {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined\n});\n_defineProperty(AutoCompleteInput, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\nexport default AutoCompleteInput;\n//# sourceMappingURL=AutoCompleteInput.js.map","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport \"./AutoResizeTextarea.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea(_ref) {\n var {\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId\n } = _ref;\n var [value, setValue] = useState(propsValue);\n var [isPastedChange, setIsPastedChange] = useState(false);\n var element = useRef(null);\n useEffect(function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n function explode(input) {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input.trim().split(delimiter).filter(string => string) // remove empty strings\n .join(\"\\n\".concat(delimiter.trim()));\n }\n function implode(input) {\n return input.split('\\n').map(string => string.trim()).join(' ');\n }\n function reCalculateLayout() {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n var resizedHeight = element.current.scrollHeight + (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = \"\".concat(resizedHeight, \"px\");\n }\n function handleChange(event) {\n var newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n function handleFocus() {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n function handlePaste() {\n setIsPastedChange(true);\n }\n useEffect(function reCalculate() {\n reCalculateLayout();\n }, [value]);\n return /*#__PURE__*/_jsx(\"textarea\", {\n ref: element,\n id: id,\n className: classNames(className, 'auto-resize-textarea form-control'),\n placeholder: placeholder,\n value: value,\n rows: 1,\n onChange: handleChange,\n onFocus: handleFocus,\n onMouseDown: handleMouseDown,\n onBlur: handleBlur,\n onPaste: handlePaste,\n spellCheck: spellCheck,\n disabled: disabled,\n \"data-testid\": dataTestId\n });\n}\nAutoResizeTextarea.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n spellCheck: PropTypes.bool,\n disabled: PropTypes.bool,\n delimiter: PropTypes.string,\n id: PropTypes.string,\n 'data-testid': PropTypes.string\n};\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n 'data-testid': undefined\n};\nexport default AutoResizeTextarea;\n//# sourceMappingURL=AutoResizeTextarea.js.map","import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { TimeUtils } from '@deephaven/utils';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from \"./MaskedInputUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('TimeInput');\nvar TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\nvar EXAMPLES = ['00:00:00', '12:34:56', '23:59:59'];\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nvar TimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n allowValueWrapping = true,\n className = '',\n onChange = () => false,\n value: propsValue = 0,\n onFocus = () => false,\n onBlur = () => false,\n onSelect = () => false,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(TimeUtils.formatTime(propsValue));\n var [selection, _setSelection] = useState();\n var inputRef = useRef(null);\n useImperativeHandle(ref, () => ({\n focus: () => {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();\n },\n setSelection: newSelection => {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();\n _setSelection(newSelection);\n }\n }), []);\n useEffect(function setFormattedTime() {\n setValue(TimeUtils.formatTime(propsValue));\n }, [propsValue]);\n function getNextSegmentValue(range, delta, segmentValue) {\n // Delta is backward because negative Y is up\n var maxValue = range.selectionStart === 0 ? 24 : 60;\n var newSegmentValue = parseInt(segmentValue, 10) - delta;\n if (Number.isNaN(newSegmentValue)) {\n newSegmentValue = 0;\n } else if (allowValueWrapping) {\n // Add max value and re-mod so we don't get negative values after mod\n newSegmentValue = (newSegmentValue % maxValue + maxValue) % maxValue;\n } else {\n newSegmentValue = Math.min(Math.max(0, newSegmentValue), maxValue - 1);\n }\n return \"\".concat(newSegmentValue).padStart(2, '0');\n }\n function getPreferredReplacementString(replaceValue, replaceIndex, newChar, selectionStart, selectionEnd) {\n if (selectionStart === 0 && selectionEnd === 2 && replaceIndex === 1 && parseInt(newChar, 10) > 1) {\n // DH-10082 Special case for when typing `3` when it's already 12\n return \"0\".concat(newChar).concat(replaceValue.substring(2));\n }\n return DEFAULT_GET_PREFERRED_REPLACEMENT_STRING(replaceValue, replaceIndex, newChar);\n }\n function handleChange(newValue) {\n log.debug('handleChange', newValue);\n setValue(newValue);\n\n // Only send a change if the value is actually valid\n if (TimeUtils.isTimeString(newValue)) {\n onChange(TimeUtils.parseTime(newValue));\n }\n }\n var handleSelect = useCallback(newSelection => {\n _setSelection(newSelection);\n onSelect(newSelection);\n }, [onSelect]);\n return /*#__PURE__*/_jsx(MaskedInput, {\n ref: inputRef,\n className: className,\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n getPreferredReplacementString: getPreferredReplacementString,\n onChange: handleChange,\n onSelect: handleSelect,\n pattern: TIME_PATTERN,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: onBlur,\n \"data-testid\": dataTestId\n });\n});\nTimeInput.defaultProps = {\n allowValueWrapping: true,\n className: '',\n onChange: () => false,\n onSelect: () => false,\n value: 0,\n onFocus: () => false,\n onBlur: () => false,\n 'data-testid': undefined\n};\nexport default TimeInput;\n//# sourceMappingURL=TimeInput.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport DropdownMenu from \"./menu-actions/DropdownMenu.js\";\nimport \"./CustomTimeSelect.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar CUSTOM_OPTION = -1;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass CustomTimeSelect extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"csContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"button\", void 0);\n _defineProperty(this, \"input\", void 0);\n var {\n value,\n valueToTime\n } = props;\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n this.csContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.button = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false\n };\n }\n getSelectedText() {\n var {\n options,\n value,\n placeholder\n } = this.props;\n var {\n customTime\n } = this.state;\n if (value === null) {\n return placeholder;\n }\n for (var i = 0; i < options.length; i += 1) {\n var option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n return TimeUtils.formatTime(customTime);\n }\n setInputWidth() {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width\n });\n }\n }\n focus() {\n var _this$button$current;\n (_this$button$current = this.button.current) === null || _this$button$current === void 0 ? void 0 : _this$button$current.focus();\n }\n updateInputValue(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$button$current2;\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n (_this$button$current2 = this.button.current) === null || _this$button$current2 === void 0 ? void 0 : _this$button$current2.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n } else {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n handleMenuNavigation(direction) {\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n var menuOptionsLength = options.length;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex < menuOptionsLength && !(inputFocused && keyboardOptionIndex === 0)) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n handleOptionClick(event) {\n var optionIndex = Number(event.currentTarget.value);\n var {\n options,\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n if (optionIndex === CUSTOM_OPTION) {\n var update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n updateAndClose(update) {\n var _this$button$current3;\n this.updateInputValue(update);\n this.closeMenu();\n (_this$button$current3 = this.button.current) === null || _this$button$current3 === void 0 ? void 0 : _this$button$current3.focus();\n }\n handleOptionFocus(event) {\n this.setState({\n keyboardOptionIndex: Number(event.target.value)\n });\n }\n handleMenuOpened() {\n var _this$menuContainer$c;\n var {\n options,\n value\n } = this.props;\n var {\n keyboardOptionIndex\n } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n var activeOption = (_this$menuContainer$c = this.menuContainer.current) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.querySelector('.cs-option-btn.keyboard-active');\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n focusInput() {\n var _this$input$current;\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n }\n focusOption(index) {\n var _this$menuContainer$c2;\n var options = (_this$menuContainer$c2 = this.menuContainer.current) === null || _this$menuContainer$c2 === void 0 ? void 0 : _this$menuContainer$c2.querySelector('.cs-options');\n if (options && options.children != null) {\n var option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n handleCustomInput(value) {\n var {\n timeToValue\n } = this.props;\n var update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value\n });\n }\n updateFromCustom() {\n var {\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n var update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n toggleMenu(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n openMenu() {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n }\n closeMenu() {\n var focusButton = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false\n });\n if (focusButton) {\n var _this$button$current4;\n (_this$button$current4 = this.button.current) === null || _this$button$current4 === void 0 ? void 0 : _this$button$current4.focus();\n }\n }\n updateKeyboardIndex() {\n var {\n options,\n value\n } = this.props;\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({\n keyboardOptionIndex: valueIndex\n });\n }\n }\n scrollOptionIntoView(index) {\n var _this$menuContainer$c3;\n var options = (_this$menuContainer$c3 = this.menuContainer.current) === null || _this$menuContainer$c3 === void 0 ? void 0 : _this$menuContainer$c3.querySelector('.cs-options');\n if (options && options.children != null) {\n var activeOption = options.children.item(index);\n if (activeOption instanceof HTMLElement && activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT) {\n options.scrollTop = activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (activeOption instanceof HTMLElement && activeOption.offsetTop < 0 || index === 0) {\n options.scrollTop = 0;\n }\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-menu-container\",\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n onClick: event => {\n event.stopPropagation();\n },\n style: {\n width: inputWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options-container\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options\",\n children: this.renderOptions()\n })\n })\n });\n }\n renderOptions() {\n var {\n options,\n value,\n icon,\n customText\n } = this.props;\n var {\n keyboardOptionIndex,\n customTime,\n inputFocused\n } = this.state;\n var matchFound = false;\n var optionArray = [];\n for (var index = 0; index < options.length; index += 1) {\n var option = options[index];\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n matchFound = matchFound || option.value === value;\n optionArray.push( /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n value: index,\n className: classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus,\n children: [option.value === value && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }), option.value !== value && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), option.title]\n }, key));\n }\n optionArray.push( /*#__PURE__*/_jsx(\"hr\", {\n className: \"cs-divider\"\n }, \"option-divider\"));\n optionArray.push( /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n value: CUSTOM_OPTION,\n className: classNames('cs-option-btn', {\n 'keyboard-active': inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus,\n children: [!matchFound && value !== null ? /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }) : /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), customText]\n }, \"option-custom-label\"));\n optionArray.push( /*#__PURE__*/_jsxs(\"div\", {\n className: \"cs-custom-container\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"mr-2\"\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: this.input,\n onChange: this.handleCustomInput,\n value: customTime,\n onFocus: () => this.setState({\n inputFocused: true\n }),\n onBlur: () => this.setState({\n inputFocused: false\n })\n }, \"option-input\"), /*#__PURE__*/_jsx(\"span\", {\n className: \"ml-2\"\n })]\n }, \"cs-custom-container\"));\n optionArray.push( /*#__PURE__*/_jsx(\"hr\", {\n className: \"mb-2\"\n }, \"option-end\"));\n return optionArray;\n }\n render() {\n var {\n disabled,\n invalid,\n value,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group cs-container context-menu\",\n ref: this.csContainer,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid\n }),\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid\n }),\n ref: this.button,\n onClick: this.toggleMenu,\n disabled: disabled,\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames({\n 'text-muted': value === null\n }),\n children: this.getSelectedText()\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: menuIsOpen,\n actions: {\n menuElement: this.renderMenuElement()\n },\n popperOptions: popperOptions,\n popperClassName: \"CustomTimeSelect\",\n onMenuOpened: this.handleMenuOpened,\n onMenuClosed: this.handleMenuExited,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })\n })\n });\n }\n}\n_defineProperty(CustomTimeSelect, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\n_defineProperty(CustomTimeSelect, \"DROP_DOWN_MENU_HEIGHT\", 125);\n_defineProperty(CustomTimeSelect, \"defaultProps\", {\n onChange() {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => value === null ? 0 : Math.round(value / 1000),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined\n});\nexport default CustomTimeSelect;\n//# sourceMappingURL=CustomTimeSelect.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { getNextSegmentValue } from \"./DateInputUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('DateInput');\nvar DATE_PATTERN = '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])';\nvar EXAMPLES = ['2000-01-01', '2022-12-31'];\nvar DATE_FORMAT = 'YYYY-MM-DD';\nvar DateInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n className = '',\n onChange = () => undefined,\n defaultValue = '',\n onFocus = () => undefined,\n onBlur = () => undefined,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(defaultValue);\n var [selection, setSelection] = useState();\n var handleChange = useCallback(newValue => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n onChange(newValue);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"d-flex flex-row align-items-center\",\n children: /*#__PURE__*/_jsx(MaskedInput, {\n ref: ref,\n className: classNames(className),\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n onChange: handleChange,\n onSelect: setSelection,\n pattern: DATE_PATTERN,\n placeholder: DATE_FORMAT,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: onBlur,\n \"data-testid\": dataTestId\n })\n });\n});\nDateInput.displayName = 'DateInput';\nexport default DateInput;\n//# sourceMappingURL=DateInput.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport Checkbox from \"./Checkbox.js\";\nimport Popper from \"./popper/Popper.js\";\nimport \"./HierarchicalCheckboxMenu.css\";\nimport Button from \"./Button.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component {\n static isParentSelected(parent, valueMap) {\n var children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n var includesTrue = Array.from(children.values()).includes(true);\n var includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n constructor(props) {\n super(props);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.state = {\n menuIsOpen: false\n };\n }\n toggleMenu(event) {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n var {\n menuIsOpen\n } = state;\n return {\n menuIsOpen: !menuIsOpen\n };\n });\n }\n toggleValueFor(parent, child) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n var map = new Map(valueMap);\n var children = map.get(parent);\n if (children instanceof Map) {\n var newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) === undefined);\n } else {\n var parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, map);\n var newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n var currentChildren = map.get(parent);\n if (child === undefined && currentChildren !== undefined && typeof currentChildren !== 'boolean') {\n var _parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, valueMap);\n if (_parentSelected != null && _parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n onUpdateValueMap(map);\n }\n setAllValues(value) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and set everything\n var copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n var children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n onUpdateValueMap(copy);\n }\n selectAll() {\n this.setAllValues(true);\n }\n clear() {\n this.setAllValues(false);\n }\n renderMenuElement() {\n var {\n valueMap,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"hcm-menu-container\",\n children: [Array.from(valueMap.entries()).map(_ref => {\n var [parent, children] = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-parent\",\n checked: HierarchicalCheckboxMenu.isParentSelected(parent, valueMap),\n onChange: () => this.toggleValueFor(parent),\n children: parent\n }), children !== undefined && typeof children !== 'boolean' && Array.from(children.entries()).map(_ref2 => {\n var [child, value] = _ref2;\n return /*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-child\",\n checked: value,\n onChange: () => this.toggleValueFor(parent, child),\n children: child\n }, child);\n })]\n }, parent);\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.selectAll,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-select-all\") : undefined,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.clear,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-clear\") : undefined,\n children: \"Clear\"\n })]\n });\n }\n render() {\n var {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n return /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn hcm-btn', className),\n onClick: this.toggleMenu,\n id: id,\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsxs(\"span\", {\n children: [icon && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"hcm-icon mr-1\"\n }), menuText]\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(Popper, {\n options: {\n placement: 'bottom'\n },\n isShown: menuIsOpen,\n onExited: () => {\n this.setState({\n menuIsOpen: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: this.renderMenuElement()\n })]\n });\n }\n}\n_defineProperty(HierarchicalCheckboxMenu, \"defaultProps\", {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined\n});\nexport default HierarchicalCheckboxMenu;\n//# sourceMappingURL=HierarchicalCheckboxMenu.js.map","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable react/display-name */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport debounce from 'lodash.debounce';\nimport { assertNotNull } from '@deephaven/utils';\nimport \"./RandomAreaPlotAnimation.css\";\nimport { resolveCssVariablesInRecord, useTheme } from \"./theme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar VOLATILITY = 0.025; // how spikey the data gets\nvar LOW = 0.9;\nvar HIGH = 0.1;\nvar START_Y = 0.618;\nvar GRID_SIZE = 80;\nvar PATTERN = {\n SIZE: 8,\n DOT_SIZE: 2\n};\nvar PX_PER_SECOND = 18;\nvar RESIZE_DEBOUNCE = 250;\nvar INTERACTION_TIMEOUT = 60 * 1000;\nvar THEME_COLOR_VARIABLES = {\n background: 'var(--dh-color-random-area-plot-animation-bg)',\n foregroundFill: 'var(--dh-color-random-area-plot-animation-fg-fill)',\n foregroundStroke: 'var(--dh-color-random-area-plot-animation-fg-stroke)',\n gridColor: 'var(--dh-color-random-area-plot-animation-grid)'\n};\n\n/**\n * Resolve theme colors needed for our animation.\n */\nfunction getRandomAreaPlotAnimationThemeColors() {\n return resolveCssVariablesInRecord(THEME_COLOR_VARIABLES);\n}\n\n// Draw a background canvas, paint it with a fun chart looking animation\nvar RandomAreaPlotAnimation = /*#__PURE__*/React.memo(() => {\n var {\n activeThemes\n } = useTheme();\n var [themeColors, setThemeColors] = useState(null);\n\n // Resolving css variables has to run in `useEffect` or `useLayoutEffect` so\n // that we know React has updated the DOM with any styles set by the\n // ThemeProvider.\n useEffect(() => {\n setThemeColors(getRandomAreaPlotAnimationThemeColors());\n }, [activeThemes]);\n var canvas = useRef(null);\n var container = useRef(null);\n var [shade, setShade] = useState(false);\n var scale = window.devicePixelRatio;\n var ctx;\n var pattern;\n var width;\n var height;\n var rAF;\n var lastTimestamp = null;\n var data = [];\n function setCanvasSize() {\n var _ctx;\n // Set canvas size to fill screen\n if (container.current != null) {\n width = container.current.offsetWidth;\n height = container.current.offsetHeight;\n }\n if (canvas.current != null) {\n canvas.current.style.width = \"\".concat(width, \"px\");\n canvas.current.style.height = \"\".concat(height, \"px\");\n canvas.current.width = width * scale;\n canvas.current.height = height * scale;\n }\n (_ctx = ctx) === null || _ctx === void 0 ? void 0 : _ctx.scale(scale, scale);\n }\n\n // Returns the background fill create offscreen as pattern\n function createPatternFill() {\n if (themeColors == null) {\n return null;\n }\n var {\n foregroundFill,\n foregroundStroke\n } = themeColors;\n\n // create the off-screen canvas\n var canvasPattern = document.createElement('canvas');\n canvasPattern.width = PATTERN.SIZE;\n canvasPattern.height = PATTERN.SIZE;\n var contextPattern = canvasPattern.getContext('2d');\n\n // draw pattern to off-screen context\n if (contextPattern != null) {\n contextPattern.fillStyle = foregroundStroke;\n contextPattern.fillRect(0, 0, PATTERN.DOT_SIZE, PATTERN.DOT_SIZE);\n\n // add an overlay fill\n contextPattern.fillStyle = foregroundFill;\n contextPattern.fillRect(0, 0, PATTERN.SIZE, PATTERN.SIZE);\n }\n return contextPattern === null || contextPattern === void 0 ? void 0 : contextPattern.createPattern(canvasPattern, 'repeat');\n }\n\n /**\n * Generates a step in a random walk between LOW - HIGH given a previous value\n * data is always in 0-1 data space so its scaleable\n * data space is converted to screen space inside draw functions\n * @param prev previous random walk step\n * @return new random walk step\n */\n function randomWalk(prev) {\n var rand = Math.random() - 0.5; // give it directionality\n var change = VOLATILITY * rand; // scale by volatity constant\n\n // ensure directional bounce off approaching edges\n if (prev < HIGH) {\n change = Math.abs(change);\n } else if (prev > LOW) {\n change = -Math.abs(change);\n }\n return prev + change;\n }\n function initData() {\n var startingData = [];\n var y = START_Y; // always start towards the bottom of the screen\n for (var x = 0; x < width + PX_PER_SECOND; x += 1) {\n y = randomWalk(y);\n startingData.push(y);\n }\n return startingData;\n }\n function setDataSize() {\n while (data.length >= width + PX_PER_SECOND) {\n data.pop();\n }\n while (data.length < width + PX_PER_SECOND) {\n data.push(randomWalk(data[data.length - 1]));\n }\n }\n function drawAreaLine(path, context) {\n context.beginPath();\n // start offscreen\n context.moveTo(-1, height + 1);\n context.lineTo(-1, height * path[0]);\n\n // draw the line\n for (var i = 0; i < path.length; i += 1) {\n context.lineTo(i, height * path[i]);\n }\n\n // close offscreen\n context.lineTo(width + PX_PER_SECOND, height * path[path.length - 1]);\n context.lineTo(width + PX_PER_SECOND, height + 1);\n context.closePath();\n }\n function drawGridLines(context) {\n context.beginPath();\n // draw verticals\n for (var x = 1; x < width; x += GRID_SIZE) {\n context.moveTo(x, 0);\n context.lineTo(x, height);\n }\n // draw horizontals\n for (var y = 1; y < height; y += GRID_SIZE) {\n context.moveTo(0, y);\n context.lineTo(width, y);\n }\n }\n\n /**\n * Main draw loop for where the animation happens\n * all the styling happens within drawCanvas from paths generated by other functions\n * @param timestamp passed in callback from requestAnimationFrame\n */\n function drawCanvas(timestamp) {\n var _lastTimestamp, _lastTimestamp2, _lastTimestamp3;\n if (themeColors == null) {\n return;\n }\n lastTimestamp = (_lastTimestamp = lastTimestamp) !== null && _lastTimestamp !== void 0 ? _lastTimestamp : timestamp;\n var {\n background,\n foregroundStroke,\n gridColor\n } = themeColors;\n assertNotNull(ctx);\n // clear the canvas\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n drawGridLines(ctx);\n ctx.lineWidth = 1;\n ctx.strokeStyle = gridColor;\n ctx.stroke();\n\n // for speeds less then 60 px per second, subpixel motion is required to look smooth\n var subPixelMotion = (((_lastTimestamp2 = lastTimestamp) !== null && _lastTimestamp2 !== void 0 ? _lastTimestamp2 : 0) - (timestamp !== null && timestamp !== void 0 ? timestamp : 0)) / (1000 / PX_PER_SECOND);\n ctx.translate(subPixelMotion, 0);\n drawAreaLine(data, ctx);\n ctx.lineWidth = 2;\n ctx.strokeStyle = foregroundStroke;\n ctx.stroke();\n ctx.translate(-subPixelMotion, 0); // we don't pattern to shift however\n if (pattern != null) {\n ctx.fillStyle = pattern;\n }\n ctx.fill();\n ctx.setTransform(scale, 0, 0, scale, 0, 0); // reset the translate matrix to normal\n\n // generate new data points\n if ((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp3 = lastTimestamp) !== null && _lastTimestamp3 !== void 0 ? _lastTimestamp3 : 0) > 1000 / PX_PER_SECOND) {\n var _lastTimestamp4;\n // number of points to add since last update\n var numberOfPoints = Math.floor(((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp4 = lastTimestamp) !== null && _lastTimestamp4 !== void 0 ? _lastTimestamp4 : 0)) / (1000 / PX_PER_SECOND));\n for (var i = 0; i < numberOfPoints; i += 1) {\n data.shift();\n data.push(randomWalk(data[data.length - 1]));\n }\n lastTimestamp = timestamp;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = requestAnimationFrame(drawCanvas);\n }\n\n // debounce the resize so its not overly aggresive\n var debouncedHandleResize = debounce(() => {\n rAF = requestAnimationFrame(timestamp => {\n setCanvasSize(); // setCanvas can cause lag if not debounced\n\n // fill or remove extra data points\n setDataSize();\n\n // opening devtools triggers a blur then resize,\n // need to reset shade as we are restarting animation\n setShade(false);\n drawCanvas(timestamp);\n });\n }, RESIZE_DEBOUNCE, {\n leading: true\n } // resize immediately, once.\n );\n\n function pauseAnimation() {\n // pause animation when browser window is blurred to conserve CPU usage\n setShade(true);\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = null;\n lastTimestamp = null;\n }\n\n // when timeout expires, pause animation\n var resetIdleTimeout = debounce(() => {\n pauseAnimation();\n }, INTERACTION_TIMEOUT);\n function startAnimation() {\n // can fire multiple times, check if rAF is null first\n // restart animation loop, and fade back in\n if (rAF == null) {\n setShade(false);\n setCanvasSize();\n setDataSize();\n rAF = requestAnimationFrame(drawCanvas);\n }\n resetIdleTimeout();\n }\n function handleActivity() {\n if (document.hasFocus()) {\n // only if document has focus (mousemove can fire on non-focused tabs)\n startAnimation();\n }\n }\n function handleResize() {\n // pause and debounce animation during resize for better resizing performance\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n resetIdleTimeout(); // treat resizing as a form of activity\n debouncedHandleResize();\n }\n\n // react mount/unmount hooks\n useEffect(() => {\n var _canvas$current;\n ctx = (_canvas$current = canvas.current) === null || _canvas$current === void 0 ? void 0 : _canvas$current.getContext('2d', {\n alpha: false\n });\n setCanvasSize();\n data = initData();\n pattern = createPatternFill();\n\n // start draw loop\n drawCanvas();\n resetIdleTimeout();\n window.addEventListener('resize', handleResize);\n window.addEventListener('focus', startAnimation);\n window.addEventListener('blur', pauseAnimation);\n\n // don't burn cpu if the user is \"idle\", start a timer that resets\n // on any user activity, and on timeout expiry pause the animation\n window.addEventListener('mousemove', handleActivity);\n window.addEventListener('keydown', handleActivity);\n return () => {\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('focus', startAnimation);\n window.removeEventListener('blur', pauseAnimation);\n window.removeEventListener('mousemove', handleActivity);\n window.removeEventListener('keydown', handleActivity);\n resetIdleTimeout.cancel();\n debouncedHandleResize.cancel();\n };\n }, [themeColors]);\n return themeColors && /*#__PURE__*/_jsx(\"div\", {\n className: \"random-area-plot-animation-container\",\n ref: container,\n children: /*#__PURE__*/_jsx(\"canvas\", {\n ref: canvas,\n className: shade ? 'shade' : ''\n })\n });\n});\nexport default RandomAreaPlotAnimation;\n//# sourceMappingURL=RandomAreaPlotAnimation.js.map","/* eslint-disable react/no-array-index-key */\n// array maps being used are static, this is fine.\n\nimport React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport StyleExports from \"./TimeSlider.module.css\";\nimport \"./TimeSlider.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar HANDLE_SIZE = parseInt(StyleExports['handle-size'], 10);\nvar POPOVER_WIDTH = parseInt(StyleExports['popover-width'], 10);\nvar SECONDS_IN_DAY = 24 * 60 * 60 - 1; // Max is actually 23:59:59\nvar SNAP_NEAREST_MINUTES = 5 * 60; // rounds in 5 minute intervals\n\n/**\n * Creates a time slider for setting a start and end time, that can also run overnight\n * @param props takes times in seconds 0 - 86399 and a callback\n */\nfunction TimeSlider(_ref) {\n var {\n startTime: propStartTime,\n endTime: propEndTime,\n onChange,\n isStartModified = false,\n isEndModified = false,\n 'data-testid': dataTestId\n } = _ref;\n var [startTime, setStartTime] = useState(propStartTime);\n var [endTime, setEndTime] = useState(propEndTime);\n var track = useRef(null); // we need the track width while calulculating time from handle drag\n\n // updates state if props change\n useEffect(function setTimeOnPropTimeChange() {\n setStartTime(propStartTime);\n setEndTime(propEndTime);\n }, [propStartTime, propEndTime]);\n var updateTime = useCallback((newStartTime, newEndTime) => {\n var start = newStartTime;\n var end = newEndTime;\n if (start === end) {\n if (end < SECONDS_IN_DAY) {\n end += 1;\n } else {\n start -= 1;\n }\n }\n setStartTime(start);\n setEndTime(end);\n onChange({\n startTime: start,\n endTime: end\n });\n }, [setStartTime, setEndTime, onChange]);\n var handleStartTimeChange = useCallback(newStartTime => {\n updateTime(newStartTime, endTime);\n }, [updateTime, endTime]);\n var handleEndTimeChange = useCallback(newEndTime => {\n updateTime(startTime, newEndTime);\n }, [updateTime, startTime]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-slider\",\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsx(PopOvers, {\n startTime: startTime,\n endTime: endTime,\n onStartTimeChange: handleStartTimeChange,\n onEndTimeChange: handleEndTimeChange,\n isStartModified: isStartModified,\n isEndModified: isEndModified\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"track\",\n ref: track,\n children: [/*#__PURE__*/_jsx(TrackFills, {\n startTime: startTime,\n endTime: endTime\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"ticks\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick\"\n }, index))\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: startTime,\n setTime: handleStartTimeChange\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: endTime,\n setTime: handleEndTimeChange\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"tick-labels\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"0:00\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label-wrapper\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"\".concat(index + 1, \":00\")\n }, index))\n })]\n })]\n });\n}\nfunction PopOvers(props) {\n var {\n startTime,\n endTime,\n onStartTimeChange,\n onEndTimeChange,\n isStartModified,\n isEndModified,\n 'data-testid': dataTestId\n } = props;\n var swapTimes = startTime > endTime;\n var [firstTime, setFirstTime] = useState(swapTimes ? endTime : startTime);\n var [secondTime, setSecondTime] = useState(swapTimes ? startTime : endTime);\n var firstTimeRef = useRef(null);\n var secondTimeRef = useRef(null);\n // Keep track of selection in both time inputs\n var firstTimeSelectionRef = useRef(null);\n var secondTimeSelectionRef = useRef(null);\n useEffect(function setTimeOnPropTimeChange() {\n setFirstTime(startTime > endTime ? endTime : startTime);\n setSecondTime(startTime > endTime ? startTime : endTime);\n }, [startTime, endTime]);\n useEffect(function setFocusOnSwapTimesChange() {\n if (firstTimeSelectionRef.current !== null) {\n var _secondTimeRef$curren;\n (_secondTimeRef$curren = secondTimeRef.current) === null || _secondTimeRef$curren === void 0 ? void 0 : _secondTimeRef$curren.setSelection(firstTimeSelectionRef.current);\n }\n if (secondTimeSelectionRef.current !== null) {\n var _firstTimeRef$current;\n (_firstTimeRef$current = firstTimeRef.current) === null || _firstTimeRef$current === void 0 ? void 0 : _firstTimeRef$current.setSelection(secondTimeSelectionRef.current);\n }\n }, [swapTimes]);\n function onFirstTimeChange(value) {\n if (startTime <= endTime) {\n onStartTimeChange(value);\n } else {\n onEndTimeChange(value);\n }\n }\n function onSecondTimeChange(value) {\n if (startTime <= endTime) {\n onEndTimeChange(value);\n } else {\n onStartTimeChange(value);\n }\n }\n var onFirstTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = selection;\n secondTimeSelectionRef.current = null;\n }, []);\n var onSecondTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = null;\n secondTimeSelectionRef.current = selection;\n }, []);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-slider-popovers\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat(firstTime / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isEndModified : isStartModified\n }),\n children: swapTimes ? 'End Time' : 'Start Time'\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: firstTimeRef,\n allowValueWrapping: false,\n value: firstTime,\n onChange: onFirstTimeChange,\n onSelect: onFirstTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-1\") : undefined\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isStartModified : isEndModified\n }),\n children: swapTimes ? 'Start Time' : 'End Time'\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: secondTimeRef,\n allowValueWrapping: false,\n value: secondTime,\n onChange: onSecondTimeChange,\n onSelect: onSecondTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-2\") : undefined\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat((SECONDS_IN_DAY - secondTime) / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n })]\n });\n}\n/**\n * Shades the area between or outside of handles according to if start or endtime is greater.\n */\nfunction TrackFills(props) {\n var {\n startTime,\n endTime,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"track-fills\",\n \"data-testid\": dataTestId,\n children: [startTime > endTime && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-start\",\n style: {\n transform: \"scaleX(\".concat(endTime / SECONDS_IN_DAY, \")\")\n }\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-end\",\n style: {\n transform: \"scaleX(\".concat((SECONDS_IN_DAY - startTime) / SECONDS_IN_DAY, \")\")\n }\n })]\n }), startTime < endTime && /*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-middle\",\n style: {\n transform: \"translateX(\".concat(startTime / SECONDS_IN_DAY * 100, \"%) scaleX(\").concat((endTime - startTime) / SECONDS_IN_DAY, \")\")\n }\n })]\n });\n}\n/**\n * Creates a draggable handle the sets the time\n */\nfunction Handle(props) {\n var {\n track,\n time,\n setTime,\n 'data-testid': dataTestId\n } = props;\n\n /**\n * Takes the time and generate our translation string taking into account handle offset.\n * The handle offset changes for the first and last tick range dynmaically. Normally,\n * the center of the handle (size/2) is the selection origin, but at edges, it becomes either\n * end of the handle, requireing a relative offset range of 0 - 0.5, and 0.5 - 1 of handle size.\n * @param t time in seconds\n */\n var transform = useMemo(() => {\n var ONE_HOUR = 60 * 60;\n var handleOffset = HANDLE_SIZE / 2;\n if (time < ONE_HOUR) {\n handleOffset = time / ONE_HOUR * (HANDLE_SIZE / 2); // 0 - 0.5 Handle size\n } else if (time > 23 * ONE_HOUR) {\n handleOffset = HANDLE_SIZE / 2 + 1 / (SECONDS_IN_DAY - 23 * ONE_HOUR) * (time - 23 * ONE_HOUR) * (HANDLE_SIZE / 2); // 0.5 - 1 Handle size\n }\n\n return \"translateX(calc(\".concat(time / SECONDS_IN_DAY * 100, \"% - \").concat(handleOffset, \"px))\");\n }, [time]);\n var calculatePositionAsTime = useCallback(clientX => {\n if (!track.current) {\n return 0;\n }\n var trackRect = track.current.getBoundingClientRect();\n var leftEdge = Math.max(clientX - trackRect.left, 0);\n // get position as 0-1 on slider and mulitply by seconds in a day to convert to time\n var preciseTime = SECONDS_IN_DAY * Math.min(1, leftEdge / trackRect.width);\n // snap to nearest N(5) minute interval\n var roundedTime = SNAP_NEAREST_MINUTES * Math.round(preciseTime / SNAP_NEAREST_MINUTES);\n // prevent over-rounding to 24:00:00\n var limitMax = Math.min(SECONDS_IN_DAY, roundedTime);\n return limitMax;\n }, [track]);\n var handleMouseMove = useCallback(_ref2 => {\n var {\n clientX\n } = _ref2;\n setTime(calculatePositionAsTime(clientX));\n }, [setTime, calculatePositionAsTime]);\n var handleMouseUp = useCallback(_ref3 => {\n var {\n clientX\n } = _ref3;\n setTime(calculatePositionAsTime(clientX));\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [setTime, calculatePositionAsTime, handleMouseMove]);\n var startDragListening = useCallback(() => {\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.add('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var stopDragListening = useCallback(() => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var handleMouseDown = useCallback(() => {\n startDragListening();\n }, [startDragListening]);\n useEffect(function removeListenersOnUnmount() {\n return () => {\n stopDragListening();\n };\n }, [stopDragListening]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"handle-track\",\n style: {\n transform\n },\n children: /*#__PURE__*/_jsx(\"button\", {\n className: \"handle\",\n type: \"button\",\n \"aria-label\": \"Change time\",\n onMouseDown: handleMouseDown,\n \"data-testid\": dataTestId\n })\n });\n}\nexport default TimeSlider;\n//# sourceMappingURL=TimeSlider.js.map","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport \"./ValidateLabelInput.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Takes a child and add a label and validaton error\n */\nexport function ValidateLabelInput(props) {\n var {\n children,\n className,\n labelText,\n hintText,\n isModified,\n validationError,\n showValidationError = true,\n 'data-testid': dataTestId,\n id: idProp\n } = props;\n var {\n current: id\n } = useRef(idProp !== null && idProp !== void 0 ? idProp : shortid());\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames('validate-label', className, {\n modified: isModified\n }),\n htmlFor: id,\n \"data-testid\": dataTestId,\n children: labelText\n }), React.Children.toArray(children).map(child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n // eslint-disable-next-line react/jsx-key\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames(className),\n children: child\n });\n }\n\n // toArray strips null children\n return /*#__PURE__*/React.cloneElement(child, {\n className: classNames(child.props.className, {\n 'is-invalid': validationError\n })\n });\n }), hintText !== undefined && /*#__PURE__*/_jsx(\"small\", {\n className: \"form-text text-muted\",\n children: hintText\n }), validationError !== undefined && showValidationError && /*#__PURE__*/_jsx(\"p\", {\n className: \"validate-label-error text-danger\",\n children: validationError\n })]\n });\n}\nexport default ValidateLabelInput;\n//# sourceMappingURL=ValidateLabelInput.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport ChartModel from \"./ChartModel.js\";\nimport { defaultChartTheme } from \"./ChartTheme.js\";\nimport ChartUtils from \"./ChartUtils.js\";\n/** Displays a basic random chart */\nclass MockChartModel extends ChartModel {\n static get theme() {\n /* eslint-disable no-underscore-dangle */\n if (MockChartModel._theme == null) {\n MockChartModel._theme = defaultChartTheme();\n }\n return MockChartModel._theme;\n /* eslint-enable no-underscore-dangle */\n }\n\n static makeRandomSeries(offset) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var steps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var dates = [];\n var values = [];\n var smooth = [];\n var linear = [];\n\n // Setting to a fixed seed date so that e2e tests can be deterministic.\n var startDate = new Date('2018-06-01');\n for (var i = 0; i < steps; i += 1) {\n var date = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i - steps);\n dates.push(\"\".concat(date.getFullYear(), \"-\").concat(date.getMonth() + 1, \"-\").concat(date.getDate()));\n var v = (Math.sin(i / steps * offset) * steps / 3 + Math.cos(i * 0.2) * steps / 6 + Math.sin(i * 0.5) * steps / 10 + MockChartModel.random() * steps / 5 + i * MockChartModel.smoothing) * scale;\n v = Math.round(v * 100) / 100; // 2 decimals only\n // using steps acts as amplititude scaling based on value\n // large sine wave for course shape + small sine waves for bumpiness +\n // general randomness noise + index to be constantly up and to the right + smoothing factor\n values.push(v);\n linear.push(40 + i * MockChartModel.smoothing);\n smooth.push(Math.sin(i / steps * offset) * steps / 3 + MockChartModel.random() * steps / 10 + i * MockChartModel.smoothing); // push a smoother version of the same thing\n }\n\n return {\n x: dates,\n y: values,\n s: smooth,\n l: linear\n };\n }\n static makeScatter(series) {\n return {\n name: 'SCTR',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'markers',\n hoverinfo: 'skip',\n marker: {\n size: 5\n }\n };\n }\n static makeArea(series) {\n return {\n name: 'AREA',\n x: series.x,\n y: series.s,\n type: 'scatter',\n mode: 'line',\n fill: 'tozeroy',\n hoverinfo: 'all',\n line: {\n color: MockChartModel.theme.area_color,\n width: 3\n // area patten gets applied as hack in post render plot.ly callback + css\n }\n };\n }\n\n static makeTrendline(series) {\n return {\n // we probably want to toss the line formula in legend I guess? either that or render it as text manually on plot\n name: 'Trendline <br>R<sup>2</sup> = 0.91',\n x: series.x,\n y: series.l,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n line: {\n width: 3,\n dash: 'dot',\n // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple\n color: MockChartModel.theme.trend_color\n // chroma(c.$green).brighten(1.2).hex()\n }\n };\n }\n\n static makeErrorBand(series) {\n // generate continouous error bands values and text\n var erroryforward = [];\n var errorybackward = [];\n for (var i = 0; i < series.y.length; i += 1) {\n var value = series.y[i];\n erroryforward[i] = Math.round((value + 18) * 100) / 100;\n errorybackward[i] = Math.round((value - 18) * 100) / 100;\n }\n\n // makes a closed shape of points winding clockwise for y values\n var errory = erroryforward.concat(errorybackward.reverse());\n return {\n name: 'error',\n x: series.x.concat(series.x.slice().reverse()),\n // winding for x values, that slice just clones so reverse doesn't apply inplace\n y: errory,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n fill: 'toself',\n // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render\n fillcolor: MockChartModel.theme.error_band_fill_color,\n line: {\n width: 0,\n color: MockChartModel.theme.error_band_line_color,\n shape: 'spline'\n }\n };\n }\n static makeLine(series) {\n return {\n name: 'LINE',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'x+y+text+name',\n line: {\n color: MockChartModel.theme.line_color,\n width: 3\n }\n };\n }\n static makeRandomData() {\n var series1 = MockChartModel.makeRandomSeries(6);\n var areaPattern = MockChartModel.makeArea(series1);\n var trendLine = MockChartModel.makeTrendline(series1);\n var series2 = MockChartModel.makeRandomSeries(2);\n var line = MockChartModel.makeLine(series2);\n var errorBand = MockChartModel.makeErrorBand(series2);\n return [areaPattern, trendLine, line, errorBand];\n }\n static makeDefaultLayout(dh) {\n var layout = new ChartUtils(dh).makeDefaultLayout(MockChartModel.theme);\n layout.title = 'Chart';\n if (layout.xaxis) {\n layout.xaxis.title = 'Datestamp';\n }\n if (layout.yaxis) {\n layout.yaxis.title = 'Price';\n }\n return layout;\n }\n constructor(dh) {\n var {\n data = MockChartModel.makeRandomData(),\n layout = MockChartModel.makeDefaultLayout(dh),\n filterFields = []\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(dh);\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"filterFields\", void 0);\n _defineProperty(this, \"layout\", void 0);\n this.data = data;\n this.layout = layout;\n this.filterFields = filterFields;\n }\n getData() {\n return this.data;\n }\n getLayout() {\n return this.layout;\n }\n getFilterColumnMap() {\n var map = new Map();\n for (var i = 0; i < this.filterFields.length; i += 1) {\n var name = this.filterFields[i];\n var type = 'java.lang.String';\n map.set(name, {\n name,\n type\n });\n }\n return map;\n }\n isFilterRequired() {\n return this.filterFields.length > 0;\n }\n setFilter() {\n this.fireUpdate(this.data);\n }\n}\n_defineProperty(MockChartModel, \"random\", Math.random.bind(Math));\n_defineProperty(MockChartModel, \"smoothing\", 1.5);\n_defineProperty(MockChartModel, \"_theme\", void 0);\nexport default MockChartModel;\n//# sourceMappingURL=MockChartModel.js.map","import React, { createContext, useEffect, useState } from 'react';\nimport 'fira';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var FontsLoadedContext = /*#__PURE__*/createContext(false);\n/**\n * FontBootstrap component. Handles preloading fonts.\n */\nexport function FontBootstrap(_ref) {\n var {\n fontClassNames = ['fira-sans-regular', 'fira-sans-semibold', 'fira-mono'],\n children\n } = _ref;\n var [isLoaded, setIsLoaded] = useState(false);\n useEffect(function initFonts() {\n document.fonts.ready.then(() => {\n setIsLoaded(true);\n });\n }, []);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontsLoadedContext.Provider, {\n value: isLoaded,\n children: children\n }), /*#__PURE__*/_jsx(\"div\", {\n id: \"preload-fonts\",\n style: {\n visibility: 'hidden',\n position: 'absolute',\n top: -10000\n },\n children: fontClassNames.map(className => /*#__PURE__*/_jsx(\"p\", {\n className: className,\n children: \"preload\"\n }, className))\n })]\n });\n}\nexport default FontBootstrap;\n//# sourceMappingURL=FontBootstrap.js.map"],"names":["ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","Component","props","memoize","options","option","popperOptions","debounce","React","title","result","menuIsOpen","isValid","onChange","filter","_this$popper$current","filteredOptions","perfectMatch","event","_this$input$current","keyboardOptionIndex","direction","newKeyboardOptionIndex","onEnter","_this$input$current2","_this$input$current3","_this$popper$current2","_this$popper$current3","focusInput","_this$input$current4","index","_this$menuContainer$c","inputWidth","_jsx","classNames","noMatchText","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","invalid","_jsxs","Popper","PropTypes","AutoCompleteInput$1","AutoResizeTextarea","_ref","propsValue","placeholder","delimiter","id","setValue","useState","isPastedChange","setIsPastedChange","element","useRef","useEffect","explode","string","implode","reCalculateLayout","resizedHeight","handleChange","newValue","handleFocus","handleMouseDown","handleBlur","handlePaste","log","Log","TIME_PATTERN","EXAMPLES","TimeInput","ref","allowValueWrapping","onFocus","onBlur","onSelect","TimeUtils","selection","_setSelection","inputRef","useImperativeHandle","_inputRef$current","newSelection","_inputRef$current2","getNextSegmentValue","range","delta","segmentValue","maxValue","newSegmentValue","getPreferredReplacementString","replaceValue","replaceIndex","newChar","selectionStart","selectionEnd","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","handleSelect","useCallback","MaskedInput","TimeInput$1","CUSTOM_OPTION","CustomTimeSelect","valueToTime","customTime","_this$button$current","_this$button$current2","inputFocused","menuOptionsLength","optionIndex","timeToValue","update","_this$button$current3","activeOption","valueIndex","_this$menuContainer$c2","focusButton","_this$button$current4","_this$menuContainer$c3","icon","customText","matchFound","optionArray","FontAwesomeIcon","DropdownMenu","vsCheck","time","CustomTimeSelect$1","DATE_PATTERN","DATE_FORMAT","DateInput","defaultValue","setSelection","DateInput$1","HierarchicalCheckboxMenu","parent","valueMap","children","includesTrue","includesFalse","state","child","onUpdateValueMap","map","newChildren","parentSelected","newChildValue","_","currentChildren","_parentSelected","copy","Checkbox","_ref2","Button","menuText","HierarchicalCheckboxMenu$1","VOLATILITY","LOW","HIGH","START_Y","GRID_SIZE","PATTERN","PX_PER_SECOND","RESIZE_DEBOUNCE","INTERACTION_TIMEOUT","THEME_COLOR_VARIABLES","getRandomAreaPlotAnimationThemeColors","resolveCssVariablesInRecord","RandomAreaPlotAnimation","activeThemes","useTheme","themeColors","setThemeColors","canvas","container","shade","setShade","scale","ctx","pattern","width","height","rAF","lastTimestamp","data","setCanvasSize","_ctx","createPatternFill","foregroundFill","foregroundStroke","canvasPattern","contextPattern","randomWalk","prev","rand","change","initData","startingData","y","x","setDataSize","drawAreaLine","path","context","drawGridLines","drawCanvas","timestamp","_lastTimestamp","_lastTimestamp2","_lastTimestamp3","background","gridColor","assertNotNull","subPixelMotion","_lastTimestamp4","numberOfPoints","debouncedHandleResize","pauseAnimation","resetIdleTimeout","startAnimation","handleActivity","handleResize","_canvas$current","Animation","HANDLE_SIZE","StyleExports","POPOVER_WIDTH","SECONDS_IN_DAY","SNAP_NEAREST_MINUTES","TimeSlider","propStartTime","propEndTime","isStartModified","isEndModified","startTime","setStartTime","endTime","setEndTime","track","updateTime","newStartTime","newEndTime","start","end","handleStartTimeChange","handleEndTimeChange","PopOvers","TrackFills","Handle","onStartTimeChange","onEndTimeChange","swapTimes","firstTime","setFirstTime","secondTime","setSecondTime","firstTimeRef","secondTimeRef","firstTimeSelectionRef","secondTimeSelectionRef","_secondTimeRef$curren","_firstTimeRef$current","onFirstTimeChange","onSecondTimeChange","onFirstTimeSelect","onSecondTimeSelect","_Fragment","setTime","transform","useMemo","ONE_HOUR","handleOffset","calculatePositionAsTime","clientX","trackRect","leftEdge","preciseTime","roundedTime","limitMax","handleMouseMove","handleMouseUp","_ref3","startDragListening","stopDragListening","ValidateLabelInput","labelText","hintText","isModified","validationError","showValidationError","idProp","shortid","MockChartModel","ChartModel","defaultChartTheme","offset","steps","dates","values","smooth","linear","startDate","date","v","series","erroryforward","errorybackward","errory","series1","areaPattern","trendLine","series2","line","errorBand","dh","layout","ChartUtils","filterFields","name","type","MockChartModel$1","FontsLoadedContext","createContext","FontBootstrap","fontClassNames","isLoaded","setIsLoaded"],"mappings":"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"}