@deephaven/embed-chart 0.70.0 → 0.70.1-alpha-picker-table.34
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.
- package/build/assets/{App-21248c2d.js → App-6b2a6fb7.js} +2 -2
- package/build/assets/{App-21248c2d.js.map → App-6b2a6fb7.js.map} +1 -1
- package/build/assets/{Chart-1562304a.js → Chart-9faa0a01.js} +2 -2
- package/build/assets/{Chart-1562304a.js.map → Chart-9faa0a01.js.map} +1 -1
- package/build/assets/IrisGrid-f939ed99.js +5 -0
- package/build/assets/{IrisGrid-e33ce3ae.js.map → IrisGrid-f939ed99.js.map} +1 -1
- package/build/assets/{MarkdownEditor-c5f86639.js → MarkdownEditor-ad338195.js} +2 -2
- package/build/assets/{MarkdownEditor-c5f86639.js.map → MarkdownEditor-ad338195.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-d440b3a6.js → MarkdownNotebook-5a61f9aa.js} +2 -2
- package/build/assets/{MarkdownNotebook-d440b3a6.js.map → MarkdownNotebook-5a61f9aa.js.map} +1 -1
- package/build/assets/{index-7668b360.js → index-44b25ef3.js} +2 -2
- package/build/assets/{index-7668b360.js.map → index-44b25ef3.js.map} +1 -1
- package/build/assets/index-b7f9f94d.js +39 -0
- package/build/assets/index-b7f9f94d.js.map +1 -0
- package/build/assets/{useChartTheme-c09ea475.js → useChartTheme-bde778d8.js} +3 -3
- package/build/assets/{useChartTheme-c09ea475.js.map → useChartTheme-bde778d8.js.map} +1 -1
- package/build/assets/useConnection-d1a53635.js +2 -0
- package/build/assets/useConnection-d1a53635.js.map +1 -0
- package/build/index.html +1 -1
- package/package.json +13 -13
- package/build/assets/IrisGrid-e33ce3ae.js +0 -5
- package/build/assets/index-6bd1d4b4.js +0 -39
- package/build/assets/index-6bd1d4b4.js.map +0 -1
- package/build/assets/useConnection-0d2d1a18.js +0 -2
- package/build/assets/useConnection-0d2d1a18.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as o,D as r}from"./vendor-7d0187fb.js";import{L,a as x}from"./index-
|
|
2
|
-
//# sourceMappingURL=App-
|
|
1
|
+
import{r as o,D as r}from"./vendor-7d0187fb.js";import{L,a as x}from"./index-44b25ef3.js";import{u as y,a as b,L as w,C as A,b as C}from"./useConnection-d1a53635.js";import"./helpers-de833af9.js";const t=L.module("EmbedChart.App");async function E(a,n,s){t.info(`Fetching figure ${s}...`);const i={name:s,type:a.VariableType.FIGURE};return n.getObject(i)}function S(){const[a,n]=o.useState(),[s,i]=o.useState(),[p,g]=o.useState(!0),d=o.useMemo(()=>new URLSearchParams(window.location.search),[]),l=y(),c=b();o.useEffect(function(){async function m(){try{const e=d.get("name");if(e==null)throw new Error("No name param provided");t.debug("Loading figure",e,"...");const f=await E(c,l,e);t.debug("Creating model...");const h=await C.makeModel(c,void 0,f);n(h),t.debug("Figure successfully loaded!")}catch(e){t.error("Unable to load figure",e),i(`${e}`)}g(!1)}m()},[c,l,d]);const u=a!=null;return r.jsxs("div",{className:"App",children:[u&&r.jsx(w,{model:a}),!u&&r.jsx(x,{isLoaded:u,isLoading:p,errorMessage:s??null}),r.jsx(A,{})]})}export{S as default};
|
|
2
|
+
//# sourceMappingURL=App-6b2a6fb7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App-
|
|
1
|
+
{"version":3,"file":"App-6b2a6fb7.js","sources":["../../src/App.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useConnection } from '@deephaven/app-utils';\nimport { Chart, ChartModel, ChartModelFactory } from '@deephaven/chart'; // chart is used to display Deephaven charts\nimport { ContextMenuRoot, LoadingOverlay } from '@deephaven/components'; // Use the loading spinner from the Deephaven components package\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport './App.scss'; // Styles for in this app\nimport { useApi } from '@deephaven/jsapi-bootstrap';\n\nconst log = Log.module('EmbedChart.App');\n\n/**\n * Load an existing Deephaven figure with the connection provided\n * @param dh JSAPI instance\n * @param connection The Deephaven session object\n * @param name Name of the figure to load\n * @returns Deephaven figure\n */\nasync function loadFigure(\n dh: typeof DhType,\n connection: DhType.IdeConnection,\n name: string\n): Promise<DhType.plot.Figure> {\n log.info(`Fetching figure ${name}...`);\n\n const descriptor = { name, type: dh.VariableType.FIGURE };\n return connection.getObject(descriptor);\n}\n\n/**\n * A functional React component that displays a Deephaven figure using the @deephaven/chart package.\n * It will attempt to open and display the figure specified with the `name` parameter, expecting it to be present on the server.\n * E.g. http://localhost:3000/?name=myFigure will attempt to open a figure `myFigure`\n * If no query param is provided, it will display an error.\n * By default, tries to connect to the server defined in the VITE_CORE_API_URL variable, which is set to http://localhost:10000/jsapi\n * See Vite docs for how to update these env vars: https://vitejs.dev/guide/env-and-mode.html\n */\nfunction App(): JSX.Element {\n const [model, setModel] = useState<ChartModel>();\n const [error, setError] = useState<string>();\n const [isLoading, setIsLoading] = useState(true);\n const searchParams = useMemo(\n () => new URLSearchParams(window.location.search),\n []\n );\n const connection = useConnection();\n const dh = useApi();\n\n useEffect(\n function initializeApp() {\n async function initApp(): Promise<void> {\n try {\n // Get the table name from the query param `name`.\n const name = searchParams.get('name');\n\n if (name == null) {\n throw new Error('No name param provided');\n }\n\n log.debug('Loading figure', name, '...');\n\n // Load the figure up.\n const figure = await loadFigure(dh, connection, name);\n\n // Create the `ChartModel` for use with the `Chart` component\n log.debug(`Creating model...`);\n\n const newModel = await ChartModelFactory.makeModel(\n dh,\n undefined,\n figure\n );\n\n setModel(newModel);\n\n log.debug('Figure successfully loaded!');\n } catch (e: unknown) {\n log.error('Unable to load figure', e);\n setError(`${e}`);\n }\n setIsLoading(false);\n }\n initApp();\n },\n [dh, connection, searchParams]\n );\n\n const isLoaded = model != null;\n\n return (\n <div className=\"App\">\n {isLoaded && <Chart model={model} />}\n {!isLoaded && (\n <LoadingOverlay\n isLoaded={isLoaded}\n isLoading={isLoading}\n errorMessage={error ?? null}\n />\n )}\n <ContextMenuRoot />\n </div>\n );\n}\n\nexport default App;\n"],"names":["log","Log","loadFigure","dh","connection","name","descriptor","App","model","setModel","useState","error","setError","isLoading","setIsLoading","searchParams","useMemo","useConnection","useApi","useEffect","initApp","figure","newModel","ChartModelFactory","isLoaded","jsxs","jsx","Chart","LoadingOverlay","ContextMenuRoot"],"mappings":"oMASA,MAAMA,EAAMC,EAAI,OAAO,gBAAgB,EASvC,eAAeC,EACbC,EACAC,EACAC,EAC6B,CACzBL,EAAA,KAAK,mBAAmBK,CAAI,KAAK,EAErC,MAAMC,EAAa,CAAE,KAAAD,EAAM,KAAMF,EAAG,aAAa,QAC1C,OAAAC,EAAW,UAAUE,CAAU,CACxC,CAUA,SAASC,GAAmB,CAC1B,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAqB,SAAA,EACzC,CAACC,EAAOC,CAAQ,EAAIF,EAAiB,SAAA,EACrC,CAACG,EAAWC,CAAY,EAAIJ,WAAS,EAAI,EACzCK,EAAeC,EAAA,QACnB,IAAM,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAChD,CAAC,CAAA,EAEGZ,EAAaa,IACbd,EAAKe,IAEXC,EAAA,UACE,UAAyB,CACvB,eAAeC,GAAyB,CAClC,GAAA,CAEI,MAAAf,EAAOU,EAAa,IAAI,MAAM,EAEpC,GAAIV,GAAQ,KACJ,MAAA,IAAI,MAAM,wBAAwB,EAGtCL,EAAA,MAAM,iBAAkBK,EAAM,KAAK,EAGvC,MAAMgB,EAAS,MAAMnB,EAAWC,EAAIC,EAAYC,CAAI,EAGpDL,EAAI,MAAM,mBAAmB,EAEvB,MAAAsB,EAAW,MAAMC,EAAkB,UACvCpB,EACA,OACAkB,CAAA,EAGFZ,EAASa,CAAQ,EAEjBtB,EAAI,MAAM,6BAA6B,QAChC,EAAY,CACfA,EAAA,MAAM,wBAAyB,CAAC,EAC3BY,EAAA,GAAG,CAAC,EAAE,CACjB,CACAE,EAAa,EAAK,CACpB,CACQM,GACV,EACA,CAACjB,EAAIC,EAAYW,CAAY,CAAA,EAG/B,MAAMS,EAAWhB,GAAS,KAGxB,OAAAiB,EAAA,KAAC,MAAI,CAAA,UAAU,MACZ,SAAA,CAAYD,GAAAE,EAAA,IAACC,GAAM,MAAAnB,CAAc,CAAA,EACjC,CAACgB,GACAE,EAAA,IAACE,EAAA,CACC,SAAAJ,EACA,UAAAX,EACA,aAAcF,GAAS,IAAA,CACzB,QAEDkB,EAAgB,EAAA,CACnB,CAAA,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{D as m,r as L,b6 as M,H as P,aV as E}from"./vendor-7d0187fb.js";import{L as k,_ as R,aV as U,aW as x}from"./index-7668b360.js";import{c as I}from"./Plotly-da68c98c.js";import{H as W,B as p,F as T,D as z}from"./useConnection-0d2d1a18.js";import{q as B,p as _,h as S,F as V,P as H,C as $}from"./useChartTheme-c09ea475.js";import{P as q}from"./plotly-d72b6537.js";import"./helpers-de833af9.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=K(e),e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function K(i){var e=Z(i,"string");return typeof e=="symbol"?e:String(e)}function Z(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),F=v.downsampleButtonAttr(a,h),D=a?U:x;l.push({name:b,title:"Downsampling status",icon:v.convertIcon(D),click:this.handleDownsampleClick,attr:F})}var y=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"],[...y?A:[],...N?j:[]]]}})),W(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(F=>{var{layout:D,revision:y}=F;return typeof D.datarevision=="number"&&(D.datarevision+=1),{data:r,layout:D,revision:y+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 V(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(H,{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($,{tooltip:"Copy Error",copy:n,children:"Copy Error"})]})})]})}}o(v,"defaultProps",{isActive:!0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:z.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,formatter:[]},Plotly:q,onDisconnect:()=>{},onReconnect:()=>{},onUpdate:()=>{},onError:()=>{},onSettingsChanged:()=>{}});function re(i){var e=B();return m.jsx(v,g(g({},i),{},{theme:e}))}export{re as default};
|
|
2
|
-
//# sourceMappingURL=Chart-
|
|
1
|
+
import{D as m,r as L,b6 as M,H as P,aV as E}from"./vendor-7d0187fb.js";import{L as U,_ as R,aV as k,aW as x}from"./index-44b25ef3.js";import{c as I}from"./Plotly-da68c98c.js";import{U as W,O as p,Q as T,D as z}from"./useConnection-d1a53635.js";import{q as B,p as _,h as S,F as V,P as H,C as $}from"./useChartTheme-bde778d8.js";import{P as q}from"./plotly-d72b6537.js";import"./helpers-de833af9.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=K(e),e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function K(i){var e=Z(i,"string");return typeof e=="symbol"?e:String(e)}function Z(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=U.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?k: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:[]]]}})),W(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 V(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(H,{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($,{tooltip:"Copy Error",copy:n,children:"Copy Error"})]})})]})}}o(v,"defaultProps",{isActive:!0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:z.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,formatter:[]},Plotly:q,onDisconnect:()=>{},onReconnect:()=>{},onUpdate:()=>{},onError:()=>{},onSettingsChanged:()=>{}});function re(i){var e=B();return m.jsx(v,g(g({},i),{},{theme:e}))}export{re as default};
|
|
2
|
+
//# sourceMappingURL=Chart-9faa0a01.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart-1562304a.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
|
+
{"version":3,"file":"Chart-9faa0a01.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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"}
|