@deephaven/embed-widget 0.72.1-beta.0 → 0.72.1-beta.3

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 (39) hide show
  1. package/build/assets/{App-cc5a732e.js → App-837e142d.js} +2 -2
  2. package/build/assets/{App-cc5a732e.js.map → App-837e142d.js.map} +1 -1
  3. package/build/assets/Chart-84b789bf.js +2 -0
  4. package/build/assets/Chart-84b789bf.js.map +1 -0
  5. package/build/assets/Chart-b5066b0e.css +1 -0
  6. package/build/assets/IrisGrid-2266a589.js +5 -0
  7. package/build/assets/{IrisGrid-5b25f94b.js.map → IrisGrid-2266a589.js.map} +1 -1
  8. package/build/assets/{IrisGrid-6e937433.css → IrisGrid-f952e819.css} +1 -1
  9. package/build/assets/{IrisGridThemeProvider-ad9dd63b.js → IrisGridThemeProvider-ffd932d6.js} +2 -2
  10. package/build/assets/{IrisGridThemeProvider-ad9dd63b.js.map → IrisGridThemeProvider-ffd932d6.js.map} +1 -1
  11. package/build/assets/{MarkdownEditor-913705db.js → MarkdownEditor-71a8c07c.js} +2 -2
  12. package/build/assets/{MarkdownEditor-913705db.js.map → MarkdownEditor-71a8c07c.js.map} +1 -1
  13. package/build/assets/{MarkdownNotebook-5b5dcda4.js → MarkdownNotebook-649c2362.js} +2 -2
  14. package/build/assets/{MarkdownNotebook-5b5dcda4.js.map → MarkdownNotebook-649c2362.js.map} +1 -1
  15. package/build/assets/Plot-4cea14d7.js +2 -0
  16. package/build/assets/{Plot-2e6e1501.js.map → Plot-4cea14d7.js.map} +1 -1
  17. package/build/assets/{Plotly-6128f6a9.js → Plotly-1709f270.js} +2 -2
  18. package/build/assets/{Plotly-6128f6a9.js.map → Plotly-1709f270.js.map} +1 -1
  19. package/build/assets/{index-d83170ec.js → index-08d77a68.js} +2 -2
  20. package/build/assets/{index-d83170ec.js.map → index-08d77a68.js.map} +1 -1
  21. package/build/assets/{index-bd56bddd.js → index-450de27f.js} +2 -2
  22. package/build/assets/{index-bd56bddd.js.map → index-450de27f.js.map} +1 -1
  23. package/build/assets/{index-23abefb9.js → index-88d7400b.js} +12 -12
  24. package/build/assets/index-88d7400b.js.map +1 -0
  25. package/build/assets/plotly-5fee1c59.js +7 -0
  26. package/build/assets/{plotly-d8efd49e.js.map → plotly-5fee1c59.js.map} +1 -1
  27. package/build/assets/{useConnection-2f4ab52d.js → useConnection-38bd3a3c.js} +2 -2
  28. package/build/assets/{useConnection-2f4ab52d.js.map → useConnection-38bd3a3c.js.map} +1 -1
  29. package/build/assets/{usePlugins-f3d95e6e.js → usePlugins-f0b3205b.js} +2 -2
  30. package/build/assets/{usePlugins-f3d95e6e.js.map → usePlugins-f0b3205b.js.map} +1 -1
  31. package/build/index.html +1 -1
  32. package/package.json +14 -14
  33. package/build/assets/Chart-4d8e58d7.js +0 -2
  34. package/build/assets/Chart-4d8e58d7.js.map +0 -1
  35. package/build/assets/Chart-b27697ef.css +0 -1
  36. package/build/assets/IrisGrid-5b25f94b.js +0 -5
  37. package/build/assets/Plot-2e6e1501.js +0 -2
  38. package/build/assets/index-23abefb9.js.map +0 -1
  39. package/build/assets/plotly-d8efd49e.js +0 -7
@@ -1,2 +0,0 @@
1
- import{D as m,r as L,aV as M,H as P,b9 as E}from"./vendor-bc5aebce.js";import{L as k,aE as R,aW as U,aX as x}from"./index-bd56bddd.js";import{c as I}from"./Plotly-6128f6a9.js";import{aM as W,au as z,aC as p,aE as T,a5 as S,a4 as B,f as _,o as V,a1 as H}from"./index-23abefb9.js";import{D as $}from"./DownsamplingError-8e6bdb73.js";import{P as K}from"./plotly-d8efd49e.js";import"./helpers-de833af9.js";import"./usePlugins-f3d95e6e.js";function C(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}function g(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?C(Object(t),!0).forEach(function(r){o(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):C(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}function o(i,e,t){return e=Z(e),e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function Z(i){var e=q(i,"string");return typeof e=="symbol"?e:String(e)}function q(i,e){if(typeof i!="object"||i===null)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var r=t.call(i,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}var c=k.module("Chart");class v extends L.Component{static convertIcon(e){var[t,,,,r]=e.icon,s="".concat(r);return{width:t,path:s,ascent:t,descent:0,transform:"matrix(1, 0, 0, 1, 0, 0)"}}static downsampleButtonTitle(e,t){return e?"Downsampling in progress...":t?"Downsampling disabled, click to enable":"Downsampling enabled, click to disable"}static downsampleButtonAttr(e,t){return e?"animation-spin":t?void 0:"fill-active"}constructor(e){var t;super(e),o(this,"currentSeries",void 0),o(this,"PlotComponent",void 0),o(this,"plot",void 0),o(this,"plotWrapper",void 0),o(this,"columnFormats",void 0),o(this,"dateTimeFormatterOptions",void 0),o(this,"decimalFormatOptions",void 0),o(this,"integerFormatOptions",void 0),o(this,"rect",void 0),o(this,"ranges",void 0),o(this,"isSubscribed",void 0),o(this,"isLoadedFired",void 0),o(this,"resizeObserver",void 0),o(this,"getCachedConfig",M((r,s,a,h,d,n)=>{var l=[],u=!!r;u&&l.push({name:"Downsampling failed: ".concat(r),title:"Downsampling failed",click:()=>{this.toggleErrorMessage("".concat(r))},icon:v.convertIcon(R),attr:"fill-warning"});var f=!!n;if(f&&l.push({name:"Error: ".concat(n),title:"Error",click:()=>{this.toggleErrorMessage("".concat(n))},icon:v.convertIcon(R),attr:"fill-warning"}),s||a||h||u){var b=v.downsampleButtonTitle(a,h),y=v.downsampleButtonAttr(a,h),D=a?U:x;l.push({name:b,title:"Downsampling status",icon:v.convertIcon(D),click:this.handleDownsampleClick,attr:y})}var F=d.some(O=>{var{type:w}=O;return w!=null&&!w.includes("3d")}),N=d.some(O=>{var{type:w}=O;return w!=null&&w.includes("3d")}),A=["zoomIn2d","zoomOut2d","autoScale2d","resetScale2d"],j=["orbitRotation","tableRotation","resetCameraDefault3d"];return{displaylogo:!1,displayModeBar:a||u||f?!0:"hover",modeBarButtons:[l,["toImage"],["zoom2d","pan2d"],[...F?A:[],...N?j:[]]]}})),z(this),this.PlotComponent=I(e.Plotly),this.plot=P.createRef(),this.plotWrapper=(t=e.containerRef)!==null&&t!==void 0?t:P.createRef(),this.columnFormats=[],this.dateTimeFormatterOptions={},this.decimalFormatOptions={},this.integerFormatOptions={},this.isSubscribed=!1,this.isLoadedFired=!1,this.currentSeries=0,this.resizeObserver=new window.ResizeObserver(this.handleResize),this.state={data:null,downsamplingError:null,isDownsampleFinished:!1,isDownsampleInProgress:!1,isDownsamplingDisabled:!1,error:null,shownError:null,layout:{datarevision:0},revision:0}}componentDidMount(){this.updateDimensions(),this.updateModelDimensions(),this.initData(),this.initFormatter();var{isActive:e,model:t}=this.props;e&&this.subscribe(t),this.plotWrapper.current!=null&&this.resizeObserver.observe(this.plotWrapper.current),this.handleThemeChange()}componentDidUpdate(e){var{isActive:t,model:r,settings:s,theme:a}=this.props;this.updateFormatterSettings(s),r!==e.model&&(this.unsubscribe(e.model),this.subscribe(r)),t!==e.isActive&&(t?(this.updateDimensions(),this.subscribe(r)):this.unsubscribe(r)),a!==e.theme&&this.handleThemeChange()}componentWillUnmount(){var{model:e}=this.props;this.unsubscribe(e),this.resizeObserver.disconnect()}getPlotRect(){var e,t;return(e=(t=this.plotWrapper.current)===null||t===void 0?void 0:t.getBoundingClientRect())!==null&&e!==void 0?e:null}initData(){var{model:e}=this.props;this.setState(t=>{var{layout:r}=t;return{data:e.getData(),layout:g(g({},r),e.getLayout())}})}subscribe(e){if(!this.isSubscribed){if(!this.rect||this.rect.width===0||this.rect.height===0){c.debug2("Delaying subscription until model dimensions are set");return}e.subscribe(this.handleModelEvent),this.isSubscribed=!0}}unsubscribe(e){this.isSubscribed&&(e.unsubscribe(this.handleModelEvent),this.isSubscribed=!1)}handleAfterPlot(){this.plot.current!=null}handleDownsampleClick(){this.setState(e=>{var{isDownsamplingDisabled:t}=e;return{downsamplingError:null,isDownsampleInProgress:!1,isDownsampleFinished:!1,isDownsamplingDisabled:!t}},()=>{var{model:e}=this.props,{isDownsamplingDisabled:t}=this.state;e.setDownsamplingDisabled(t)})}handleErrorClose(){this.setState({shownError:null})}handleModelEvent(e){var{type:t,detail:r}=e;switch(c.debug2("Received data update",t,r),t){case p.EVENT_UPDATED:{this.currentSeries+=1,this.setState(y=>{var{layout:D,revision:F}=y;return typeof D.datarevision=="number"&&(D.datarevision+=1),{data:r,layout:D,revision:F+1}});var{onUpdate:s}=this.props;s({isLoading:!this.isLoadedFired});break}case p.EVENT_LOADFINISHED:{var{onUpdate:a}=this.props;this.isLoadedFired=!0,a({isLoading:!1});break}case p.EVENT_DISCONNECT:{var{onDisconnect:h}=this.props;h();break}case p.EVENT_RECONNECT:{var{onReconnect:d}=this.props;d();break}case p.EVENT_DOWNSAMPLESTARTED:{this.setState({isDownsampleFinished:!1,isDownsampleInProgress:!0,downsamplingError:null});break}case p.EVENT_DOWNSAMPLEFINISHED:{this.setState({isDownsampleFinished:!0,isDownsampleInProgress:!1,downsamplingError:null});break}case p.EVENT_DOWNSAMPLENEEDED:case p.EVENT_DOWNSAMPLEFAILED:{var n,l=(n=r.message)!==null&&n!==void 0?n:r;this.setState({isDownsampleFinished:!1,isDownsampleInProgress:!1,isDownsamplingDisabled:!1,downsamplingError:l});var{onError:u}=this.props;u(new $(l));break}case p.EVENT_ERROR:{var f="".concat(r);this.setState({error:f});var{onError:b}=this.props;b(new Error(f));break}default:c.debug("Unknown event type",t,e)}}handlePlotUpdate(e){var{layout:t}=e,r=T.getLayoutRanges(t),s=!E(r,this.ranges);s&&(this.ranges=r,this.updateModelDimensions(!0))}handleRelayout(e){if(c.debug("handleRelayout",e),e.hiddenlabels!=null){var{onSettingsChanged:t}=this.props,r=[...e.hiddenlabels];t({hiddenSeries:r})}this.updateModelDimensions()}handleResize(){this.updateDimensions()}handleRestyle(e){var[t,r]=e;if(c.debug("handleRestyle",t,r),Object.keys(t).includes("visible")){var{data:s}=this.state,{onSettingsChanged:a}=this.props;if(s!=null){var h=s.reduce((d,n)=>{var{name:l,visible:u}=n;return l!=null&&u==="legendonly"?[...d,l]:d},[]);a({hiddenSeries:h})}}}handleThemeChange(){var{theme:e,model:t}=this.props,{dh:r}=t,s=new T(r);this.setState(a=>{var{layout:h}=a;return{layout:g(g({},h),{},{template:s.makeDefaultTemplate(e)})}})}toggleErrorMessage(e){this.setState(t=>{var{shownError:r}=t;return{shownError:r===e?null:e}})}updateModelDimensions(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.getPlotRect();if(!t){c.warn("Unable to get plotting rect");return}var r=!this.rect||this.rect.width!==t.width||this.rect.height!==t.height;if(r||e){this.rect=t;var{isActive:s,model:a}=this.props;a.setDimensions(t),s&&this.subscribe(a)}}initFormatter(){var{settings:e}=this.props;this.updateFormatterSettings(e)}updateFormatterSettings(e){var t=S.getColumnFormats(e),r=S.getDateTimeFormatterOptions(e),{decimalFormatOptions:s={},integerFormatOptions:a={}}=e;(!E(this.columnFormats,t)||!E(this.dateTimeFormatterOptions,r)||!E(this.decimalFormatOptions,s)||!E(this.integerFormatOptions,a))&&(this.columnFormats=S.getColumnFormats(e),this.dateTimeFormatterOptions=r,this.decimalFormatOptions=s,this.integerFormatOptions=a,this.updateFormatter())}updateFormatter(){var{model:e}=this.props,t=new B(e.dh,this.columnFormats,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions);e.setFormatter(t)}updateDimensions(){var e=this.getPlotRect(),{Plotly:t}=this.props;this.plot.current!=null&&e!=null&&e.width>0&&e.height>0&&t.relayout(this.plot.current.el,{autosize:!0}).catch(r=>{c.debug("Unable to resize, promise rejected",r)})}render(){var{PlotComponent:e}=this,{data:t,downsamplingError:r,isDownsampleFinished:s,isDownsampleInProgress:a,isDownsamplingDisabled:h,error:d,shownError:n,layout:l,revision:u}=this.state,f=this.getCachedConfig(r,s,a,h,t??[],d),b=t!=null;return m.jsxs("div",{className:"h-100 w-100 chart-wrapper",ref:this.plotWrapper,children:[b&&m.jsx(e,{ref:this.plot,data:t,layout:l,revision:u,config:f,onAfterPlot:this.handleAfterPlot,onError:c.error,onRelayout:this.handleRelayout,onUpdate:this.handlePlotUpdate,onRestyle:this.handleRestyle,useResizeHandler:!0,style:{height:"100%",width:"100%"}}),m.jsx(_,{className:"chart-error-popper",options:{placement:"top"},isShown:n!=null,onExited:this.handleErrorClose,closeOnBlur:!0,interactive:!0,children:n!=null&&m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"chart-error",children:n}),m.jsx(V,{tooltip:"Copy Error",copy:n,children:"Copy Error"})]})})]})}}o(v,"defaultProps",{isActive:!0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:H.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,formatter:[]},Plotly:K,onDisconnect:()=>{},onReconnect:()=>{},onUpdate:()=>{},onError:()=>{},onSettingsChanged:()=>{}});function ie(i){var e=W();return m.jsx(v,g(g({},i),{},{theme:e}))}export{ie as default};
2
- //# sourceMappingURL=Chart-4d8e58d7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chart-4d8e58d7.js","sources":["../../../chart/dist/Chart.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); }\nimport React, { Component } from 'react';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { CopyButton, Popper } from '@deephaven/components';\nimport { vsLoading, dhGraphLineDown, dhWarningFilled } from '@deephaven/icons';\nimport { Formatter, FormatterUtils, DateUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { bindAllMethods } from '@deephaven/utils';\nimport createPlotlyComponent from \"./plotly/createPlotlyComponent.js\";\nimport Plotly from \"./plotly/Plotly.js\";\nimport ChartModel from \"./ChartModel.js\";\nimport ChartUtils from \"./ChartUtils.js\";\nimport \"./Chart.css\";\nimport DownsamplingError from \"./DownsamplingError.js\";\nimport useChartTheme from \"./useChartTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('Chart');\n\n// All of the ChartProps have default values except for model in the Chart\n// component, hence the Partial here.\nclass Chart extends Component {\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param faIcon The icon to convert\n */\n static convertIcon(faIcon) {\n var [width,,,, path] = faIcon.icon;\n // By default the icons are flipped upside down, so we need to add our own transform\n // https://github.com/plotly/plotly.js/issues/1335\n var stringPath = \"\".concat(path);\n return {\n width,\n path: stringPath,\n ascent: width,\n descent: 0,\n transform: \"matrix(1, 0, 0, 1, 0, 0)\"\n };\n }\n static downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return 'Downsampling in progress...';\n }\n return isDownsamplingDisabled ? 'Downsampling disabled, click to enable' : 'Downsampling enabled, click to disable';\n }\n static downsampleButtonAttr(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return 'animation-spin';\n }\n return isDownsamplingDisabled ? undefined : 'fill-active';\n }\n constructor(props) {\n var _props$containerRef;\n super(props);\n _defineProperty(this, \"currentSeries\", void 0);\n _defineProperty(this, \"PlotComponent\", void 0);\n _defineProperty(this, \"plot\", void 0);\n _defineProperty(this, \"plotWrapper\", void 0);\n _defineProperty(this, \"columnFormats\", void 0);\n _defineProperty(this, \"dateTimeFormatterOptions\", void 0);\n _defineProperty(this, \"decimalFormatOptions\", void 0);\n _defineProperty(this, \"integerFormatOptions\", void 0);\n _defineProperty(this, \"rect\", void 0);\n _defineProperty(this, \"ranges\", void 0);\n _defineProperty(this, \"isSubscribed\", void 0);\n _defineProperty(this, \"isLoadedFired\", void 0);\n _defineProperty(this, \"resizeObserver\", void 0);\n _defineProperty(this, \"getCachedConfig\", memoize((downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, data, error) => {\n var customButtons = [];\n var hasDownsampleError = Boolean(downsamplingError);\n if (hasDownsampleError) {\n customButtons.push({\n name: \"Downsampling failed: \".concat(downsamplingError),\n title: 'Downsampling failed',\n click: () => {\n this.toggleErrorMessage(\"\".concat(downsamplingError));\n },\n icon: Chart.convertIcon(dhWarningFilled),\n attr: 'fill-warning'\n });\n }\n var hasError = Boolean(error);\n if (hasError) {\n customButtons.push({\n name: \"Error: \".concat(error),\n title: \"Error\",\n click: () => {\n this.toggleErrorMessage(\"\".concat(error));\n },\n icon: Chart.convertIcon(dhWarningFilled),\n attr: 'fill-warning'\n });\n }\n if (isDownsampleFinished || isDownsampleInProgress || isDownsamplingDisabled || hasDownsampleError) {\n var name = Chart.downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled);\n var attr = Chart.downsampleButtonAttr(isDownsampleInProgress, isDownsamplingDisabled);\n var icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n title: 'Downsampling status',\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n attr\n });\n }\n var has2D = data.some(_ref => {\n var {\n type\n } = _ref;\n return type != null && !type.includes('3d');\n });\n var has3D = data.some(_ref2 => {\n var {\n type\n } = _ref2;\n return type != null && type.includes('3d');\n });\n var buttons2D = ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'];\n var buttons3D = ['orbitRotation', 'tableRotation', 'resetCameraDefault3d'];\n return {\n displaylogo: false,\n // Display the mode bar if there's an error or downsampling so user can see progress\n // Yes, the value is a boolean or the string 'hover': https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js#L249\n displayModeBar:\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n isDownsampleInProgress || hasDownsampleError || hasError ? true : 'hover',\n // Each array gets grouped together in the mode bar\n modeBarButtons: [customButtons, ['toImage'], ['zoom2d', 'pan2d'],\n // These work the same for both 2d and 3d\n [...(has2D ? buttons2D : []), ...(has3D ? buttons3D : [])]]\n };\n }));\n bindAllMethods(this);\n this.PlotComponent = createPlotlyComponent(props.Plotly);\n this.plot = /*#__PURE__*/React.createRef();\n this.plotWrapper = (_props$containerRef = props.containerRef) !== null && _props$containerRef !== void 0 ? _props$containerRef : /*#__PURE__*/React.createRef();\n this.columnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.isSubscribed = false;\n this.isLoadedFired = false;\n this.currentSeries = 0;\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n this.state = {\n data: null,\n downsamplingError: null,\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n error: null,\n shownError: null,\n layout: {\n datarevision: 0\n },\n revision: 0\n };\n }\n componentDidMount() {\n // Need to make sure the model dimensions are up to date before initializing the data\n this.updateDimensions();\n this.updateModelDimensions();\n this.initData();\n this.initFormatter();\n var {\n isActive,\n model\n } = this.props;\n if (isActive) {\n this.subscribe(model);\n }\n if (this.plotWrapper.current != null) {\n this.resizeObserver.observe(this.plotWrapper.current);\n }\n this.handleThemeChange();\n }\n componentDidUpdate(prevProps) {\n var {\n isActive,\n model,\n settings,\n theme\n } = this.props;\n this.updateFormatterSettings(settings);\n if (model !== prevProps.model) {\n this.unsubscribe(prevProps.model);\n this.subscribe(model);\n }\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.updateDimensions();\n this.subscribe(model);\n } else {\n this.unsubscribe(model);\n }\n }\n if (theme !== prevProps.theme) {\n this.handleThemeChange();\n }\n }\n componentWillUnmount() {\n var {\n model\n } = this.props;\n this.unsubscribe(model);\n this.resizeObserver.disconnect();\n }\n\n // Listen for resizing of the element and update the canvas appropriately\n\n getPlotRect() {\n var _this$plotWrapper$cur, _this$plotWrapper$cur2;\n return (_this$plotWrapper$cur = (_this$plotWrapper$cur2 = this.plotWrapper.current) === null || _this$plotWrapper$cur2 === void 0 ? void 0 : _this$plotWrapper$cur2.getBoundingClientRect()) !== null && _this$plotWrapper$cur !== void 0 ? _this$plotWrapper$cur : null;\n }\n initData() {\n var {\n model\n } = this.props;\n this.setState(_ref3 => {\n var {\n layout\n } = _ref3;\n return {\n data: model.getData(),\n layout: _objectSpread(_objectSpread({}, layout), model.getLayout())\n };\n });\n }\n subscribe(model) {\n if (this.isSubscribed) {\n return;\n }\n if (!this.rect || this.rect.width === 0 || this.rect.height === 0) {\n log.debug2('Delaying subscription until model dimensions are set');\n return;\n }\n model.subscribe(this.handleModelEvent);\n this.isSubscribed = true;\n }\n unsubscribe(model) {\n if (!this.isSubscribed) {\n return;\n }\n model.unsubscribe(this.handleModelEvent);\n this.isSubscribed = false;\n }\n handleAfterPlot() {\n if (this.plot.current != null) {\n // TODO: Translate whatever Don was doing in plotting.js in the afterplot here so that area graphs show up properly\n }\n }\n handleDownsampleClick() {\n this.setState(_ref4 => {\n var {\n isDownsamplingDisabled\n } = _ref4;\n return {\n downsamplingError: null,\n isDownsampleInProgress: false,\n isDownsampleFinished: false,\n isDownsamplingDisabled: !isDownsamplingDisabled\n };\n }, () => {\n var {\n model\n } = this.props;\n var {\n isDownsamplingDisabled\n } = this.state;\n model.setDownsamplingDisabled(isDownsamplingDisabled);\n });\n }\n handleErrorClose() {\n this.setState({\n shownError: null\n });\n }\n handleModelEvent(event) {\n var {\n type,\n detail\n } = event;\n log.debug2('Received data update', type, detail);\n switch (type) {\n case ChartModel.EVENT_UPDATED:\n {\n this.currentSeries += 1;\n this.setState(state => {\n var {\n layout,\n revision\n } = state;\n if (typeof layout.datarevision === 'number') {\n layout.datarevision += 1;\n }\n return {\n data: detail,\n layout,\n revision: revision + 1\n };\n });\n var {\n onUpdate\n } = this.props;\n onUpdate({\n isLoading: !this.isLoadedFired\n });\n break;\n }\n case ChartModel.EVENT_LOADFINISHED:\n {\n var {\n onUpdate: _onUpdate\n } = this.props;\n this.isLoadedFired = true;\n _onUpdate({\n isLoading: false\n });\n break;\n }\n case ChartModel.EVENT_DISCONNECT:\n {\n var {\n onDisconnect\n } = this.props;\n onDisconnect();\n break;\n }\n case ChartModel.EVENT_RECONNECT:\n {\n var {\n onReconnect\n } = this.props;\n onReconnect();\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLESTARTED:\n {\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: true,\n downsamplingError: null\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLEFINISHED:\n {\n this.setState({\n isDownsampleFinished: true,\n isDownsampleInProgress: false,\n downsamplingError: null\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLENEEDED:\n case ChartModel.EVENT_DOWNSAMPLEFAILED:\n {\n var _detail$message;\n var downsamplingError = (_detail$message = detail.message) !== null && _detail$message !== void 0 ? _detail$message : detail;\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n downsamplingError\n });\n var {\n onError\n } = this.props;\n onError(new DownsamplingError(downsamplingError));\n break;\n }\n case ChartModel.EVENT_ERROR:\n {\n var _error = \"\".concat(detail);\n this.setState({\n error: _error\n });\n var {\n onError: _onError\n } = this.props;\n _onError(new Error(_error));\n break;\n }\n default:\n log.debug('Unknown event type', type, event);\n }\n }\n handlePlotUpdate(figure) {\n // User could have modified zoom/pan here, update the model dimensions\n // We don't need to update the datarevision, as we don't have any data changes\n // until an update comes back from the server anyway\n var {\n layout\n } = figure;\n var ranges = ChartUtils.getLayoutRanges(layout);\n var isRangesChanged = !deepEqual(ranges, this.ranges);\n if (isRangesChanged) {\n this.ranges = ranges;\n this.updateModelDimensions(true);\n }\n }\n handleRelayout(changes) {\n log.debug('handleRelayout', changes);\n if (changes.hiddenlabels != null) {\n var {\n onSettingsChanged\n } = this.props;\n // Pie charts store series visibility in layout.hiddenlabels and trigger relayout on changes\n // Series visibility for other types of charts is handled in handleRestyle\n var hiddenSeries = [...changes.hiddenlabels];\n onSettingsChanged({\n hiddenSeries\n });\n }\n this.updateModelDimensions();\n }\n handleResize() {\n this.updateDimensions();\n }\n handleRestyle(_ref5) {\n var [changes, seriesIndexes] = _ref5;\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n var {\n data\n } = this.state;\n var {\n onSettingsChanged\n } = this.props;\n if (data != null) {\n var hiddenSeries = data.reduce((acc, _ref6) => {\n var {\n name,\n visible\n } = _ref6;\n return name != null && visible === 'legendonly' ? [...acc, name] : acc;\n }, []);\n onSettingsChanged({\n hiddenSeries\n });\n }\n }\n }\n handleThemeChange() {\n var {\n theme,\n model\n } = this.props;\n var {\n dh\n } = model;\n var chartUtils = new ChartUtils(dh);\n this.setState(_ref7 => {\n var {\n layout\n } = _ref7;\n return {\n layout: _objectSpread(_objectSpread({}, layout), {}, {\n template: chartUtils.makeDefaultTemplate(theme)\n })\n };\n });\n }\n\n /**\n * Toggle the error message. If it is already being displayed, then hide it.\n */\n toggleErrorMessage(error) {\n this.setState(_ref8 => {\n var {\n shownError\n } = _ref8;\n return {\n shownError: shownError === error ? null : error\n };\n });\n }\n\n /**\n * Update the models dimensions and ranges.\n * Note that this will update it all whether the plot size changes OR the range\n * the user is looking at has changed (eg. panning/zooming).\n * Could update each independently, but doing them at the same time keeps the\n * ChartModel API a bit cleaner.\n * @param force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var rect = this.getPlotRect();\n if (!rect) {\n log.warn('Unable to get plotting rect');\n return;\n }\n var isRectChanged = !this.rect || this.rect.width !== rect.width || this.rect.height !== rect.height;\n if (isRectChanged || force) {\n this.rect = rect;\n var {\n isActive,\n model\n } = this.props;\n model.setDimensions(rect);\n // We may need to resubscribe if dimensions were too small before\n if (isActive) {\n this.subscribe(model);\n }\n }\n }\n initFormatter() {\n var {\n settings\n } = this.props;\n this.updateFormatterSettings(settings);\n }\n updateFormatterSettings(settings) {\n var columnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var {\n decimalFormatOptions = {},\n integerFormatOptions = {}\n } = settings;\n if (!deepEqual(this.columnFormats, columnFormats) || !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions) || !deepEqual(this.decimalFormatOptions, decimalFormatOptions) || !deepEqual(this.integerFormatOptions, integerFormatOptions)) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = decimalFormatOptions;\n this.integerFormatOptions = integerFormatOptions;\n this.updateFormatter();\n }\n }\n updateFormatter() {\n var {\n model\n } = this.props;\n var formatter = new Formatter(model.dh, this.columnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions);\n model.setFormatter(formatter);\n }\n updateDimensions() {\n var rect = this.getPlotRect();\n var {\n Plotly: PlotlyProp\n } = this.props;\n if (this.plot.current != null && rect != null && rect.width > 0 && rect.height > 0) {\n // Call relayout to resize avoiding the debouncing plotly does\n // https://github.com/plotly/plotly.js/issues/2769#issuecomment-402099552\n PlotlyProp.relayout(this.plot.current.el, {\n autosize: true\n }).catch(e => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n render() {\n var {\n PlotComponent\n } = this;\n var {\n data,\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled,\n error,\n shownError,\n layout,\n revision\n } = this.state;\n var config = this.getCachedConfig(downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, data !== null && data !== void 0 ? data : [], error);\n var isPlotShown = data != null;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"h-100 w-100 chart-wrapper\",\n ref: this.plotWrapper,\n children: [isPlotShown && /*#__PURE__*/_jsx(PlotComponent\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n , {\n ref: this.plot,\n data: data,\n layout: layout,\n revision: revision,\n config: config,\n onAfterPlot: this.handleAfterPlot,\n onError: log.error,\n onRelayout: this.handleRelayout,\n onUpdate: this.handlePlotUpdate,\n onRestyle: this.handleRestyle,\n useResizeHandler: true,\n style: {\n height: '100%',\n width: '100%'\n }\n }), /*#__PURE__*/_jsx(Popper, {\n className: \"chart-error-popper\",\n options: {\n placement: 'top'\n },\n isShown: shownError != null,\n onExited: this.handleErrorClose,\n closeOnBlur: true,\n interactive: true,\n children: shownError != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"chart-error\",\n children: shownError\n }), /*#__PURE__*/_jsx(CopyButton, {\n tooltip: \"Copy Error\",\n copy: shownError,\n children: \"Copy Error\"\n })]\n })\n })]\n });\n }\n}\n_defineProperty(Chart, \"defaultProps\", {\n isActive: true,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: []\n },\n Plotly,\n onDisconnect: () => undefined,\n onReconnect: () => undefined,\n onUpdate: () => undefined,\n onError: () => undefined,\n onSettingsChanged: () => undefined\n});\nexport default function ChartContainer(props) {\n var chartTheme = useChartTheme();\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(Chart, _objectSpread(_objectSpread({}, props), {}, {\n theme: chartTheme\n }));\n}\n//# sourceMappingURL=Chart.js.map"],"names":["ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","log","Log","Chart","Component","faIcon","width","path","stringPath","isDownsampleInProgress","isDownsamplingDisabled","props","_props$containerRef","memoize","downsamplingError","isDownsampleFinished","data","error","customButtons","hasDownsampleError","dhWarningFilled","hasError","name","attr","icon","vsLoading","dhGraphLineDown","has2D","_ref","type","has3D","_ref2","buttons2D","buttons3D","bindAllMethods","createPlotlyComponent","React","isActive","model","prevProps","settings","theme","_this$plotWrapper$cur","_this$plotWrapper$cur2","_ref3","layout","_ref4","event","detail","ChartModel","state","revision","onUpdate","_onUpdate","onDisconnect","onReconnect","_detail$message","onError","DownsamplingError","_error","_onError","figure","ranges","ChartUtils","isRangesChanged","deepEqual","changes","onSettingsChanged","hiddenSeries","_ref5","seriesIndexes","acc","_ref6","visible","dh","chartUtils","_ref7","_ref8","shownError","force","rect","isRectChanged","columnFormats","FormatterUtils","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","formatter","Formatter","PlotlyProp","e","PlotComponent","config","isPlotShown","_jsxs","_jsx","Popper","_Fragment","CopyButton","DateUtils","Plotly","ChartContainer","chartTheme","useChartTheme"],"mappings":"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"}
@@ -1 +0,0 @@
1
- .plotly-notifier{margin-right:15px}.plotly-notifier .notifier-note{color:var(--dh-color-fg, #f0f0ee)!important;border:0!important;border-radius:2px!important;background:var(--dh-color-plotly-notifier-note-bg)!important;overflow-wrap:normal!important;-webkit-hyphens:unset!important;hyphens:unset!important;margin-bottom:.5rem!important;box-shadow:0 .1rem 1rem var(--dh-color-dropshadow)!important}.plotly-notifier .notifier-close{color:var(--dh-color-gray-600)!important;transition:all .2s ease-in-out!important}.plotly-notifier .notifier-close:hover{color:var(--dh-color-fg, #f0f0ee)!important}.chart-wrapper{background:var(--dh-color-chart-bg)}.chart-wrapper .plot-container .cartesianlayer text{-webkit-user-select:none;user-select:none}.chart-wrapper .plot-container .hovertext path,.chart-wrapper .plot-container .axistext path{stroke:none!important}.chart-wrapper .plot-container .axistext path{fill:var(--dh-color-plotly-axis-text)!important;box-shadow:4px 4px var(--dh-color-black)}.chart-wrapper .plot-container .zoomlayer .zoombox{fill:var(--dh-color-plotly-zoombox)!important}.chart-wrapper .plot-container .zoomlayer .zoombox-corners{fill:var(--dh-color-plotly-zoombox-corners-fill);stroke:var(--dh-color-plotly-zoombox-corners-stroke)}.chart-wrapper .js-plotly-plot .plotly [data-title]:before{border-color:transparent transparent var(--dh-color-tooltip-bg);z-index:1002}.chart-wrapper .js-plotly-plot .plotly [data-title]:after{border-radius:4px;background:var(--dh-color-tooltip-bg);color:var(--dh-color-tooltip-fg);padding:.25rem .5rem;box-shadow:var(--dh-color-tooltip-box-shadow);z-index:1001}.chart-wrapper .js-plotly-plot .plotly .modebar{z-index:auto}.chart-wrapper .js-plotly-plot .plotly .modebar .modebar-btn[data-attr=animation-spin] svg{animation:fa-spin 2s infinite linear}.chart-wrapper .js-plotly-plot .plotly .modebar .modebar-btn[data-attr=fill-active] svg path{fill:var(--dh-color-plotly-modebar-btn-active)!important}.chart-wrapper .js-plotly-plot .plotly .modebar .modebar-btn[data-attr=fill-warning] svg path{fill:var(--dh-color-plotly-modebar-btn-warning)!important}.chart-error-popper .popper-content{padding:.25rem}