@oliasoft-open-source/charts-library 5.5.0-beta-3 → 5.5.0-beta-5
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/dist/assets/{Color-AVL7NMMY-Cvup177w.js → Color-AVL7NMMY-m0fFC0hS.js} +1 -1
- package/dist/assets/{DocsRenderer-PQXLIZUC-C8oenzCg.js → DocsRenderer-PQXLIZUC-BhZrnj-x.js} +2 -2
- package/dist/assets/bar-chart.stories-BFArxuxM.js +145 -0
- package/dist/assets/client-SlPkUNtY.js +1 -0
- package/dist/assets/{components-Bhnu9xjs.js → components-Bt9IMQSt.js} +1 -1
- package/dist/assets/{get-draggableData-Ci7DAhgp.js → get-draggableData-ByrVhmD5.js} +2 -2
- package/dist/assets/{iframe-DmiD_XLI.js → iframe-DW2UQNc3.js} +5 -5
- package/dist/assets/{legend-DLSpTR0Q.js → legend-C6YWwRpu.js} +7 -7
- package/dist/assets/{legend-context-0FoVt6TR.js → legend-context-C2Dt3PJx.js} +3 -3
- package/dist/assets/line-chart-CNmqtXk-.js +1 -0
- package/dist/assets/{line-chart.stories-SIfsugaw.js → line-chart.stories-Cnj5uyTo.js} +1 -1
- package/dist/assets/line-chart.test-case.stories-ClCgTJUJ.js +1545 -0
- package/dist/assets/pie-chart.stories-BVUTCp0_.js +45 -0
- package/dist/assets/{react-18-DVWhm1ZL.js → react-18-CFvwF0kt.js} +1 -1
- package/dist/assets/{react-CG8Fu59u.js → react-BLWr6Eyx.js} +1 -1
- package/dist/assets/scatter-chart.stories-CZod9JAT.js +41 -0
- package/dist/common/helpers/callout-helpers/callout-helpers.d.ts +2 -2
- package/dist/common/helpers/get-chart-from-ctx.d.ts +1 -0
- package/dist/common/plugins/annotation-dragger-plugin/annotation-position-storage.d.ts +7 -0
- package/dist/common/plugins/annotation-dragger-plugin/event-helpers.d.ts +1 -1
- package/dist/iframe.html +1 -1
- package/dist/index.js +114 -45
- package/dist/index.json +1 -1
- package/dist/line-chart/hooks/use-chart-options.d.ts +4 -1
- package/dist/project.json +1 -1
- package/dist/src/components/common/helpers/callout-helpers/callout-helpers.d.ts +2 -2
- package/dist/src/components/common/helpers/get-chart-from-ctx.d.ts +1 -0
- package/dist/src/components/common/plugins/annotation-dragger-plugin/annotation-position-storage.d.ts +7 -0
- package/dist/src/components/common/plugins/annotation-dragger-plugin/event-helpers.d.ts +1 -1
- package/dist/src/components/line-chart/hooks/use-chart-options.d.ts +4 -1
- package/package.json +1 -1
- package/dist/assets/bar-chart.stories-De78SDiD.js +0 -145
- package/dist/assets/client-DsbWhmXk.js +0 -1
- package/dist/assets/line-chart-VpvCvObG.js +0 -1
- package/dist/assets/line-chart.test-case.stories-B9eK7kjq.js +0 -430
- package/dist/assets/pie-chart.stories-CHMHYc28.js +0 -45
- package/dist/assets/scatter-chart.stories-HJi4Ssg8.js +0 -41
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import{_t as e,at as t,dt as n}from"./iframe-DW2UQNc3.js";import{$ as r,At as i,Ft as a,I as o,J as s,M as c,Mt as l,Nt as u,Pt as d,Q as ee,S as f,St as te,Tt as ne,V as p,Z as re,at as m,d as h,gt as g,ht as _,kt as v,n as y,tt as b,wt as x,x as ie,yt as ae}from"./legend-context-C2Dt3PJx.js";import{n as oe,t as se}from"./bar-chart-const-D_44J3Hs.js";var ce=e(r(),1),S=e(n(),1),C={chart:`_chart_1jdnu_1`,fixedHeight:`_fixedHeight_1jdnu_13`,stretchHeight:`_stretchHeight_1jdnu_19`,zoomForm:`_zoomForm_1jdnu_32`,zoomReset:`_zoomReset_1jdnu_40`,help:`_help_1jdnu_43`,autoWeight:`_autoWeight_1jdnu_47`},le=e=>({width:e?.width,height:e?.height,maintainAspectRatio:e?.maintainAspectRatio||!1,staticChartHeight:e?.staticChartHeight||!1,performanceMode:e?.performanceMode??!0}),ue=e=>({tooltips:e?.tooltips??!0,showLabelsInTooltips:e?.showLabelsInTooltips||!1,scientificNotation:e?.scientificNotation??!0}),de=e=>({showDataLabels:e?.showDataLabels||!1,stacked:e?.stacked||!1,cutout:e?.cutout||0}),fe=e=>({display:e?.display??!0,useDataset:e?.useDataset||!1,position:e?.position||c.Bottom,align:e?.align||f.Center}),pe=e=>({enableZoom:e?.enableZoom||!1,enablePan:e?.enablePan||!1}),w=e=>({onLegendClick:e?.onLegendClick,onHover:e?.onHover,onUnhover:e?.onUnhover}),T=e=>({labels:e?.labels||[],datasets:e?.datasets||[]});const E=e=>{let t=e?.chart||{},n=t?.options||{};return{testId:t?.testId??null,data:T(t?.data),options:{title:n?.title||``,chartStyling:le(n?.chartStyling),tooltip:ue(n?.tooltip),graph:de(n?.graph),legend:fe(n?.legend),chartOptions:pe(n?.chartOptions),interactions:w(n?.interactions)}}},D=e=>{let[t,n]=(0,S.useState)(!1),{data:r,options:i}=e,a=(e=>{let t=[...e];if(i.graph.stacked){let e={label:t?.[0]?.label??``,backgroundColor:[],borderColor:``,borderWidth:Number(t[0].borderWidth)||1,data:[],borderDash:[]};return r.labels.map((n,r)=>{t.map((t,n)=>{e.data.push(t.data[r]);let{backgroundColor:i}=t,{borderColor:a}=t;e.backgroundColor.push((Array.isArray(i)?i[r%(a?.length||1)]:i)||p[r]+`${99-10*n}`),e.borderColor=a??``})}),[e]}return t.map((e,t)=>{let{borderWidth:n=`1`}=e??{},r=parseFloat(String(n))||1,i=p[t],a=e.borderColor||i,o=e.backgroundColor||h(p);return{...e,borderWidth:r,borderColor:a,backgroundColor:o}})})(r.datasets),o=()=>i.title===``?{}:{display:!0,text:e.options.title},s=(e,t,n)=>{let{chart:r}=n??{};if(t&&r){let{index:e=0}=t;if(r.toggleDataVisibility(e),r.update(),i.interactions?.onLegendClick){let n=r.isDatasetVisible(e);i.interactions.onLegendClick(t.text,!n)}}};return{generatedDatasets:a,getTitle:o,legendClick:s,onClick:(e,t,n)=>{n.resetZoom()},onHover:(e,r)=>{if(t&&!r?.length&&(n(!1),i.interactions.onUnhover&&i.interactions.onUnhover(e)),!t&&r?.length&&(n(!0),i.interactions.onHover)){let{index:t,datasetIndex:n}=r[0],o=a;i.interactions.onHover(e,n,t,o)}},getDatalabels:()=>i.graph.showDataLabels?{display:`auto`,align:`center`,anchor:`center`,formatter:(e,t)=>{if(t.chart.getDatasetMeta(i.graph.stacked?0:t.datasetIndex).data[t.dataIndex].hidden)return``;let n=t.dataset.data[t.dataIndex],r=n?.label||(typeof n==`number`?n:Array.isArray(n)?n.reduce((e,t,n)=>n===0?`${e} ${t}`:`${e}, ${t}`,``):``);return typeof n==`number`?Number.isInteger(r)?r:r.toFixed(2):r}}:{display:!1},getLegend:()=>({position:i.legend.position,display:i.legend.display,align:i.legend.align,labels:{boxHeight:6,boxWidth:6,usePointStyle:!0,filter:e=>i.legend.useDataset?!r.datasets[e.index]?.hideLegend:!0},onClick:s}),getToolTips:()=>{let e=e=>{let t={};return i?.tooltip?.scientificNotation?(Math.abs(e)<1e-4||Math.abs(e)>1e7)&&(t={roundScientificCoefficient:3}):t={scientific:!1},b(m(e),t)};return{callbacks:{title:e=>{let{dataIndex:t}=e[0],n=i.graph.stacked?parseInt(String(t/r.labels.length)):t;return`${r.labels[n]}`},label:t=>{let{dataIndex:n}=t,a=i.graph.stacked?n%r.datasets.length:t.datasetIndex,o=r.datasets.length>1?`${r.datasets[a]?.label}: `:``,s=t.dataset.data[n],c=typeof s==`object`?`${s.value||``} ${i.tooltip.showLabelsInTooltips&&s.label?`(`+s.label+`)`:``}`:s,l=r?.yUnit?`[${r?.yUnit}]`:``;return`${o} ${e(c)} ${l}`}},padding:8,boxWidth:12,boxHeight:12,boxPadding:4,usePointStyle:!0}}}};var O=e(t(),1);ne.register(v,x,i,te,u,a,d,l,g,_);var k=e=>{ie();let t=E(e),n=(0,S.useRef)(null),{data:r,options:i,testId:a}=t,{generatedDatasets:s,getTitle:c,onClick:l,onHover:u,getDatalabels:d,getLegend:ee,getToolTips:f}=D(t);return(0,O.jsx)(`div`,{className:(0,ce.default)(C.chart,!i.chartStyling.width||!i.chartStyling.height?i.chartStyling.staticChartHeight?C.fixedHeight:C.stretchHeight:``),style:{width:i.chartStyling.width||`auto`,height:i.chartStyling.height||`auto`},"data-testid":a,children:(0,O.jsx)(ae,{ref:n,data:{datasets:s,labels:i.graph.stacked?void 0:r.labels},options:{cutout:i.graph.cutout,onClick:l,responsive:!0,maintainAspectRatio:i.chartStyling.maintainAspectRatio,animation:i.chartStyling.performanceMode?!1:{duration:o.FAST},hover:{mode:`nearest`,intersect:!0},onHover:u,plugins:{annotation:!1,title:c(),datalabels:d(),tooltip:f(),legend:ee()}}})})},A=e=>{let{options:t}=E(e);return(0,O.jsx)(y,{options:t,children:(0,O.jsx)(k,{...e})})};A.__docgenInfo={description:``,methods:[],displayName:`PieChartWithLegend`,props:{chart:{required:!0,tsType:{name:`IPieChartData`},description:``},testId:{required:!1,tsType:{name:`union`,raw:`string | null`,elements:[{name:`string`},{name:`null`}]},description:``}}};var j=[`label 1`,`label 2`,`label 3`],M={label:`data1`,data:[3,8,7]},N={label:`data2`,data:[1,2,3]},P={label:`data3`,data:[5,0,4]},F={label:`spacing data`,offset:40,data:[3,8,7]},I={label:`hover data`,data:[3,8,7],hoverOffset:40},L={label:`data`,data:[{value:210,label:`label`},{value:333,label:`labal`},{value:248,label:`lebel`}]},R={label:`data`,data:[210,333,248]},z={data:{labels:j,datasets:[M]}},B={data:{labels:j,datasets:[M,N,P]}},V={data:{labels:j,datasets:[M,N,P]},options:{title:`Stacked`,graph:{stacked:!0}}},me={data:{labels:j,datasets:[L]},options:{title:`With custom datalabels`,graph:{showDataLabels:!0}}},he={data:{labels:j,datasets:[R]},options:{title:`With value as datalabels`,graph:{showDataLabels:!0}}},ge={data:{labels:j,datasets:[L]},options:{title:`With datalabels in tooltips`,tooltip:{showLabelsInTooltips:!0}}},_e={data:{labels:j,datasets:[I]},options:{title:`Hover offset`}},ve={data:{labels:j,datasets:[F]},options:{title:`Segment offset`}},ye={data:{labels:j,datasets:[M]},options:{chartStyling:{performanceMode:!1}}},be={data:{labels:j,datasets:[M]},options:{title:`Cutout 50%`,graph:{cutout:`50%`}}},xe={data:{labels:j,datasets:[M]},options:{title:`Cutout 20 pixels`,graph:{cutout:20}}},Se={title:`PieChart`,component:A,args:{chart:z}},H=e=>(0,O.jsx)(A,{...e});const U=H.bind({}),W=H.bind({});W.args={chart:B};const G=H.bind({});G.args={chart:V};const K=H.bind({});K.args={chart:me};const q=H.bind({});q.args={chart:he};const J=H.bind({});J.args={chart:ge};const Y=H.bind({});Y.args={chart:ye};const X=H.bind({});X.args={chart:be};const Z=H.bind({});Z.args={chart:xe};const Q=H.bind({});Q.args={chart:_e};const $=H.bind({});Q.args={chart:ve},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`args => {
|
|
2
|
+
return <PieChart
|
|
3
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
4
|
+
{...args} />;
|
|
5
|
+
}`,...U.parameters?.docs?.source}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`args => {
|
|
6
|
+
return <PieChart
|
|
7
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
8
|
+
{...args} />;
|
|
9
|
+
}`,...W.parameters?.docs?.source}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`args => {
|
|
10
|
+
return <PieChart
|
|
11
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
12
|
+
{...args} />;
|
|
13
|
+
}`,...G.parameters?.docs?.source}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`args => {
|
|
14
|
+
return <PieChart
|
|
15
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
16
|
+
{...args} />;
|
|
17
|
+
}`,...K.parameters?.docs?.source}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`args => {
|
|
18
|
+
return <PieChart
|
|
19
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
20
|
+
{...args} />;
|
|
21
|
+
}`,...q.parameters?.docs?.source}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`args => {
|
|
22
|
+
return <PieChart
|
|
23
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
24
|
+
{...args} />;
|
|
25
|
+
}`,...J.parameters?.docs?.source}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`args => {
|
|
26
|
+
return <PieChart
|
|
27
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
28
|
+
{...args} />;
|
|
29
|
+
}`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`args => {
|
|
30
|
+
return <PieChart
|
|
31
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
32
|
+
{...args} />;
|
|
33
|
+
}`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`args => {
|
|
34
|
+
return <PieChart
|
|
35
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
36
|
+
{...args} />;
|
|
37
|
+
}`,...Z.parameters?.docs?.source}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`args => {
|
|
38
|
+
return <PieChart
|
|
39
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
40
|
+
{...args} />;
|
|
41
|
+
}`,...Q.parameters?.docs?.source}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`args => {
|
|
42
|
+
return <PieChart
|
|
43
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
44
|
+
{...args} />;
|
|
45
|
+
}`,...$.parameters?.docs?.source}}};const Ce=[`Default`,`MultipleSets`,`MultipleSetsStacked`,`Datalabels`,`DatalabelsValues`,`DatalabelsInTooltips`,`Animated`,`Doughnut`,`DoughnutFixedCutout`,`HoverOffset`,`SegmentOffset`];export{Y as Animated,K as Datalabels,J as DatalabelsInTooltips,q as DatalabelsValues,U as Default,X as Doughnut,Z as DoughnutFixedCutout,Q as HoverOffset,W as MultipleSets,G as MultipleSetsStacked,$ as SegmentOffset,Ce as __namedExportsOrder,Se as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_t as e,dt as t}from"./iframe-
|
|
1
|
+
import{_t as e,dt as t}from"./iframe-DW2UQNc3.js";import{t as n}from"./client-SlPkUNtY.js";var r=e(t(),1),i=e(n(),1),a=new Map;function o(){return globalThis.IS_REACT_ACT_ENVIRONMENT}var s=({callback:e,children:t})=>{let n=r.useRef();return r.useLayoutEffect(()=>{n.current!==e&&(n.current=e,e())},[e]),t};typeof Promise.withResolvers>`u`&&(Promise.withResolvers=()=>{let e=null,t=null;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}});var c=async(e,t,n)=>{let i=await u(t,n);if(o()){i.render(e);return}let{promise:a,resolve:c}=Promise.withResolvers();return i.render(r.createElement(s,{callback:c},e)),a},l=(e,t)=>{let n=a.get(e);n&&(n.unmount(),a.delete(e))},u=async(e,t)=>{let n=a.get(e);return n||(n=i.createRoot(e,t),a.set(e,n)),n};export{c as renderElement,l as unmountElement};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_t as e,dt as t}from"./iframe-
|
|
1
|
+
import{_t as e,dt as t}from"./iframe-DW2UQNc3.js";var n=e(t(),1),r={},i=n.createContext(r);function a(e){let t=n.useContext(i);return n.useMemo(function(){return typeof e==`function`?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?typeof e.components==`function`?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:t},e.children)}export{o as MDXProvider,a as useMDXComponents};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{_t as e,at as t,dt as n}from"./iframe-DW2UQNc3.js";import{Ft as r,I as i,K as a,M as o,N as s,Nt as c,Pt as l,R as u,S as d,Tt as f,V as ee,_ as te,at as p,b as m,bt as h,g,gt as _,ht as v,jt as y,kt as ne,m as re,n as ie,q as ae,tt as oe,w as b,wt as se,x as ce,z as le}from"./legend-context-C2Dt3PJx.js";import{J as ue,Y as de,d as fe,f as pe,g as me,i as he,p as ge,q as _e,r as ve,t as ye}from"./legend-C6YWwRpu.js";import{n as be,t as xe}from"./bar-chart-const-D_44J3Hs.js";var x=e(n(),1);const S=(e,t)=>{let n={};return t?(Math.abs(e)<1e-4||Math.abs(e)>1e7)&&(n={roundScientificCoefficient:3}):n={scientific:!1},oe(p(e),n)};var C=(e,t)=>{if(t?.tooltip?.showLabelsInTooltips){let{label:t}=e[0]?.dataset??{};return t}},w=(e,t)=>{let{raw:n,dataset:r}=e??{},i=n?.label,a=t?.tooltip?.scientificNotation;return`${i??r?.label} ( x: ${S(n?.x,a)} , y: ${S(n?.y,a)} )`};const T=e=>({enabled:e?.tooltip?.enabled,callbacks:{title:t=>C(t,e),label:t=>w(t,e)},backgroundColor:e?.tooltip?.backgroundColor,displayColors:e?.tooltip?.displayColors,padding:7});var E=({options:e,axisType:t=b.X,currentScale:n})=>{let r=m(e.direction),i=n||e?.axes?.[t]?.[0],a=r&&t===b.Y||!r&&t===b.X,o=i?.gridLines||{};return{type:s.Linear,position:i?.position,beginAtZero:e?.additionalAxesOptions?.beginAtZero,reverse:(()=>t===(r?b.Y:b.X)?e?.additionalAxesOptions?.reverse:!1)(),suggestedMax:e?.additionalAxesOptions?.suggestedMax,suggestedMin:e?.additionalAxesOptions?.suggestedMin,min:a?e?.additionalAxesOptions?.min:void 0,max:a?e?.additionalAxesOptions?.max:void 0,title:{display:!!i?.label?.length||!!i?.unit?.length,text:i?.label||i?.unit,padding:0},ticks:(()=>{let n=e?.additionalAxesOptions;return{stepSize:i?.stepSize??(t===b.Y?n?.stepSize:void 0),includeBounds:!1,font:{size:12}}})(),grid:{...o}}};const D=e=>({x:E({options:e,axisType:b.X}),y:E({options:e,axisType:b.Y})}),O=(e,t)=>{let{data:n,options:r}=e,{interactions:a,chartStyling:o}=r,[s,c]=(0,x.useState)(!1),{legend:l,customLegendPlugin:u,legendClick:d}=pe({chartRef:t,options:r}),{state:f}=ge(),{annotation:p}=f,m=(e=>e.map((e,t)=>{let{borderWidth:n=1}=e??{},r=parseFloat(String(n))||1,i=ee[t],a=e.borderColor??i,o=e.backgroundColor??i;return{...e,borderWidth:r,borderColor:a,backgroundColor:o}}))(n.datasets),h=(e,t,n)=>{n.resetZoom()},g=(e,t)=>{if(s&&!t?.length&&(c(!1),a.onUnhover&&a.onUnhover(e)),!s&&t?.length&&(c(!0),a.onHover)){let{index:n,datasetIndex:r}=t[0];a.onHover(e,r,n,m)}};return{generatedDatasets:m,scatterOptions:{onClick:h,onHover:g,...o,interactions:{onLegendClick:d,onHover:g},scales:D(e?.options),animation:o.performanceMode?{duration:i.NO}:{duration:i.FAST,onComplete:a?.onAnimationComplete},plugins:{legend:{...l,display:!1,events:[]},customLegendPlugin:u,title:te(r),annotation:fe(p),chartAreaBorder:{borderColor:le},datalabels:{display:r.graph.showDataLabels},tooltip:T(r)}}}};let k=function(e){return e[e.TopToBottom=0]=`TopToBottom`,e[e.BottomToTop=1]=`BottomToTop`,e[e.LeftToRight=2]=`LeftToRight`,e[e.RightToLeft=3]=`RightToLeft`,e[e.TopLeftToBottomRight=4]=`TopLeftToBottomRight`,e[e.BottomRightToTopLeft=5]=`BottomRightToTopLeft`,e[e.BottomLeftToTopRight=6]=`BottomLeftToTopRight`,e[e.TopRightToBottomLeft=7]=`TopRightToBottomLeft`,e}({});var A=e=>({display:e?.display??!1,gradientColors:e?.gradientColors??ae,direction:e?.direction??k.BottomLeftToTopRight}),j=e=>({width:e?.width??`auto`,height:e?.height??`auto`,maintainAspectRatio:e?.maintainAspectRatio||!1,staticChartHeight:e?.staticChartHeight||!1,performanceMode:e?.performanceMode??!0,gradient:A(e?.gradient)}),M=e=>({enabled:e?.enabled??!0,tooltips:e?.tooltips??!0,showLabelsInTooltips:e?.showLabelsInTooltips||!1,backgroundColor:e?.backgroundColor||`#333`,displayColors:e?.displayColors||!1,scientificNotation:e?.scientificNotation??!0}),Se=e=>({showMinorGridlines:e?.showMinorGridlines??!1,showDataLabels:e?.showDataLabels??!1}),Ce=e=>({display:e?.display??!0,useDataset:e?.useDataset||!1,position:e?.position||o.BottomLeft,align:e?.align||d.Center}),we=e=>({enableZoom:e?.enableZoom||!1,enablePan:e?.enablePan||!1}),Te=e=>({onLegendClick:e?.onLegendClick,onHover:e?.onHover,onUnhover:e?.onUnhover,onAnimationComplete:e?.onAnimationComplete}),Ee=e=>({labels:e?.labels||[],datasets:e?.datasets||[]}),De=e=>e?e.map(e=>({...e,display:e?.display??!0})):[],Oe=e=>({showAnnotations:e?.showAnnotations??!0,controlAnnotation:e?.controlAnnotation||!1,annotationsData:De(e?.annotationsData)}),ke=e=>({x:e?.x||[{}],y:e?.y||[{}]}),Ae=e=>({reverse:e?.reverse||!1,stacked:e?.stacked||!1,beginAtZero:e?.beginAtZero??!0,stepSize:e?.stepSize,suggestedMin:e?.suggestedMin,suggestedMax:e?.suggestedMax,min:e?.min,max:e?.max});const N=e=>{let t=e?.chart||{},n=t?.options||{};return{testId:t?.testId??null,data:Ee(t?.data),options:{title:n?.title||``,axes:ke(n?.axes),additionalAxesOptions:Ae(n?.additionalAxesOptions),direction:n?.direction||ve.VERTICAL,chartStyling:j(n?.chartStyling),tooltip:M(n?.tooltip),graph:Se(n?.graph),legend:Ce(n?.legend),annotations:Oe(n?.annotations),chartOptions:we(n?.chartOptions),interactions:Te(n?.interactions)}}};var je=(e,t)=>{switch(e){case k.TopToBottom:return[t.left,t.top,t.left,t.bottom];case k.BottomToTop:return[t.left,t.bottom,t.left,t.top];case k.LeftToRight:return[t.left,t.top,t.right,t.top];case k.RightToLeft:return[t.right,t.top,t.left,t.top];case k.TopLeftToBottomRight:return[t.left,t.top,t.right,t.bottom];case k.BottomRightToTopLeft:return[t.right,t.bottom,t.left,t.top];case k.BottomLeftToTopRight:return[t.left,t.bottom,t.right,t.top];case k.TopRightToBottomLeft:return[t.right,t.top,t.left,t.bottom];default:return[t.left,t.bottom,t.right,t.top]}};const Me={id:`gradientBackgroundPlugin`,beforeDraw:e=>{let{ctx:t,chartArea:n,options:r}=e;if(!t||!n)return;let{display:i=!1,gradientColors:a,direction:o=k.BottomLeftToTopRight}=r?.gradient??{};if(!i||!a||a.length===0)return;let[s,c,l,u]=je(o,n),d=t.createLinearGradient(s,c,l,u);a.forEach(({offset:e,color:t})=>{d.addColorStop(e,t)}),t.save(),t.globalCompositeOperation=`destination-over`,t.fillStyle=d,t.fillRect(n.left,n.top,n.right-n.left,n.bottom-n.top),t.restore()}};var P={chart:`_chart_1qlu1_1`,canvas:`_canvas_1qlu1_11`,fixedHeight:`_fixedHeight_1qlu1_20`,stretchHeight:`_stretchHeight_1qlu1_26`,squareAspectRatio:`_squareAspectRatio_1qlu1_32`,zoomForm:`_zoomForm_1qlu1_43`,zoomReset:`_zoomReset_1qlu1_51`,help:`_help_1qlu1_54`,autoWeight:`_autoWeight_1qlu1_58`},F=e(t(),1);f.register(ne,y,se,c,r,l,_,v,de,Me);var Ne=e=>{ce();let t=(0,x.useRef)(null),n=N(e),{options:r,testId:i}=n,{scatterOptions:a,generatedDatasets:o}=O(n,t);return(0,F.jsx)(`div`,{className:re(r.chartStyling,P),style:{width:r.chartStyling.width,height:r.chartStyling.height},"data-testid":i,children:(0,F.jsx)(_e,{backend:ue,context:window,children:(0,F.jsxs)(`div`,{className:P.canvas,id:`canvas`,children:[(0,F.jsx)(h,{ref:t,data:{datasets:o},options:a,plugins:g(r.graph,r.legend)}),!!o.length&&(0,F.jsx)(ye,{chartRef:t,legendConfig:{options:r,generatedDatasets:o,chartType:he.SCATTER}})]})})})},I=e=>{let{options:t}=N(e);return(0,F.jsx)(ie,{options:t,children:(0,F.jsx)(Ne,{...e})})};I.__docgenInfo={description:``,methods:[],displayName:`ScatterChartWithLegend`,props:{chart:{required:!0,tsType:{name:`IScatterChartData`},description:``},testId:{required:!1,tsType:{name:`union`,raw:`string | null`,elements:[{name:`string`},{name:`null`}]},description:``}}};var L=[`label 1`,`label 2`,`label 3`],R={label:`Dataset 1`,data:[{x:1,y:5},{x:3,y:7},{x:6,y:2},{x:8,y:6},{x:9,y:4}]},z={label:`Dataset 2`,data:[{x:1,y:3},{x:4,y:5},{x:7,y:9},{x:10,y:2},{x:12,y:7}]},Pe={label:`Dataset 3`,data:[{x:2,y:8},{x:5,y:6},{x:8,y:10},{x:11,y:5},{x:14,y:9}]},B={label:`Dataset 4`,data:[{x:2,y:8},{x:14,y:9}]},Fe={label:`Dataset 5`,data:[{x:14,y:7,label:`Echo`},{x:3,y:18,label:`Lima`},{x:19,y:2,label:`Romeo`},{x:8,y:11,label:`Charlie`},{x:12,y:9,label:`Oscar`}]},Ie={label:`Dataset 6`,data:[{x:15,y:3,label:`Hotel`},{x:9,y:14,label:`Tango`},{x:4,y:17,label:`Whiskey`},{x:11,y:7,label:`Juliet`},{x:13,y:1,label:`Zulu`}]},Le={label:`Dataset Decimals`,data:[{x:4.30021321123002,y:2.30021321123005},{x:5.12321321000003,y:3.23213210000037}]},V={data:{labels:L,datasets:[R]}},Re={data:{labels:L,datasets:[R]},options:{chartStyling:{height:300,width:700}}},ze={data:{labels:L,datasets:[R,z,Pe]}},Be={data:{labels:L,datasets:[R]},options:{title:`With Data Labels`,graph:{showDataLabels:!0}}},Ve={data:{labels:L,datasets:[R,z,Le]},options:{title:`With Tooltips`,tooltip:{title:`Tooltip`,showLabelsInTooltips:!0}}},He={data:{labels:L,datasets:[{...R,backgroundColor:`red`,borderColor:`red`}]}},Ue={data:{labels:L,datasets:[R]},options:{title:`With Annotation`,annotations:{showAnnotations:!0,annotationsData:[{annotationAxis:`y`,label:`Horizontal Annotation`,value:2.5,color:`rgba(96, 32, 196, 0.5)`}]}}},We={data:{labels:L,datasets:[R,z,B]},options:{title:`With Axes Labels`,axes:{x:[{label:`x axis`}],y:[{label:`y axis`}]}}},Ge={...V,options:{title:`With Gradient`,chartStyling:{gradient:{display:!0}}}},H={data:{datasets:[Fe,Ie,B]},options:{title:`With datapoint label showing when hovered`,tooltip:{showLabelsInTooltips:!0}}},Ke={title:`ScatterChart`,component:I,args:{chart:V}},U=e=>(0,F.jsx)(I,{...e});const W=U.bind({});W.args={chart:V};const G=U.bind({});G.args={chart:Re};const K=U.bind({});K.args={chart:ze};const q=U.bind({});q.args={chart:Be};const J=U.bind({});J.args={chart:Ve};const Y=U.bind({});Y.args={chart:Ue};const X=U.bind({});X.args={chart:We};const Z=U.bind({});Z.args={chart:Ge};const Q=U.bind({});Q.args={chart:H};const $=U.bind({});$.args={chart:He},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`args => {
|
|
2
|
+
return <ScatterChart
|
|
3
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
4
|
+
{...args} />;
|
|
5
|
+
}`,...W.parameters?.docs?.source}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`args => {
|
|
6
|
+
return <ScatterChart
|
|
7
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
8
|
+
{...args} />;
|
|
9
|
+
}`,...G.parameters?.docs?.source}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`args => {
|
|
10
|
+
return <ScatterChart
|
|
11
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
12
|
+
{...args} />;
|
|
13
|
+
}`,...K.parameters?.docs?.source}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`args => {
|
|
14
|
+
return <ScatterChart
|
|
15
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
16
|
+
{...args} />;
|
|
17
|
+
}`,...q.parameters?.docs?.source}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`args => {
|
|
18
|
+
return <ScatterChart
|
|
19
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
20
|
+
{...args} />;
|
|
21
|
+
}`,...J.parameters?.docs?.source}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`args => {
|
|
22
|
+
return <ScatterChart
|
|
23
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
24
|
+
{...args} />;
|
|
25
|
+
}`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`args => {
|
|
26
|
+
return <ScatterChart
|
|
27
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
28
|
+
{...args} />;
|
|
29
|
+
}`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`args => {
|
|
30
|
+
return <ScatterChart
|
|
31
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
32
|
+
{...args} />;
|
|
33
|
+
}`,...Z.parameters?.docs?.source}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`args => {
|
|
34
|
+
return <ScatterChart
|
|
35
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
36
|
+
{...args} />;
|
|
37
|
+
}`,...Q.parameters?.docs?.source}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`args => {
|
|
38
|
+
return <ScatterChart
|
|
39
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
40
|
+
{...args} />;
|
|
41
|
+
}`,...$.parameters?.docs?.source}}};const qe=[`Default`,`StyledChart`,`MultipleDatasets`,`WithDataLabels`,`WithTooltips`,`WithAnnotation`,`WithAxesLabels`,`WithGradient`,`WithDatapointsHavingLabel`,`CustomPointColor`];export{$ as CustomPointColor,W as Default,K as MultipleDatasets,G as StyledChart,Y as WithAnnotation,X as WithAxesLabels,q as WithDataLabels,Q as WithDatapointsHavingLabel,Z as WithGradient,J as WithTooltips,qe as __namedExportsOrder,Ke as default};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ICommonAnnotationsData } from '../../common.interface';
|
|
2
2
|
type TCalloutCfg = NonNullable<NonNullable<ICommonAnnotationsData['labelConfig']>['callout']>;
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const resolveCalloutXValue: (ctx: any, refAnnotation: ICommonAnnotationsData, calloutCfg: TCalloutCfg, index: number) => number | undefined;
|
|
4
|
+
export declare const resolveCalloutYValue: (ctx: any, refAnnotation: ICommonAnnotationsData, calloutCfg: TCalloutCfg, index: number) => number | undefined;
|
|
5
5
|
export declare const isCalloutAnchorInChartArea: (ctx: any, refAnnotation: ICommonAnnotationsData, margin?: number) => boolean;
|
|
6
6
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getChartFromCtx: (ctx: any) => any;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface TStoredAnnotationPosition {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
export declare const setAnnotationPosition: (persistenceId: string | undefined, annotationId: string, pos: TStoredAnnotationPosition) => void;
|
|
7
|
+
export declare const getAnnotationPosition: (persistenceId: string | undefined, annotationId: string) => TStoredAnnotationPosition | undefined;
|
|
@@ -3,4 +3,4 @@ import { IScales } from './annotation-dragger-plugin';
|
|
|
3
3
|
import { ICommonAnnotationsData } from '../../common.interface';
|
|
4
4
|
export declare const handleAnnotationMouseDown: (event: MouseEvent, canvas: HTMLCanvasElement, scales: IScales, annotations: Record<string, ICommonAnnotationsData>, setDraggingState: (isDragging: boolean, annotation: ICommonAnnotationsData | null, dragStartX: number, dragStartY: number) => void, hoveredAnnotationId: string | null) => void;
|
|
5
5
|
export declare const handleAnnotationMouseMove: (event: MouseEvent, canvas: HTMLCanvasElement, scales: IScales, isDragging: boolean, activeAnnotation: ICommonAnnotationsData | null, dragStartX: number, dragStartY: number, chart: Chart) => void;
|
|
6
|
-
export declare const handleAnnotationMouseUp: (isDragging: boolean, activeAnnotation: ICommonAnnotationsData | null, chart: Chart, canvas: HTMLCanvasElement, setDraggingState: (isDragging: boolean, annotation: ICommonAnnotationsData | null) => void) => void;
|
|
6
|
+
export declare const handleAnnotationMouseUp: (isDragging: boolean, activeAnnotation: ICommonAnnotationsData | null, chart: Chart, canvas: HTMLCanvasElement, setDraggingState: (isDragging: boolean, annotation: ICommonAnnotationsData | null) => void, persistenceId?: string) => void;
|
package/dist/iframe.html
CHANGED
|
@@ -529,7 +529,7 @@
|
|
|
529
529
|
}
|
|
530
530
|
</script>
|
|
531
531
|
|
|
532
|
-
<script type="module" crossorigin src="./assets/iframe-
|
|
532
|
+
<script type="module" crossorigin src="./assets/iframe-DW2UQNc3.js"></script>
|
|
533
533
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-Dr7BywEQ.js">
|
|
534
534
|
|
|
535
535
|
</head>
|
package/dist/index.js
CHANGED
|
@@ -19317,51 +19317,61 @@ var getYScale = (chart$4, axisId) => {
|
|
|
19317
19317
|
const key = Object.keys(chart$4?.scales ?? {})?.find((k) => k?.toLowerCase()?.includes("y"));
|
|
19318
19318
|
return key ? chart$4?.scales?.[key] : void 0;
|
|
19319
19319
|
};
|
|
19320
|
-
const
|
|
19321
|
-
if (typeof calloutCfg?.xAdjust === "function") return calloutCfg?.xAdjust?.(ctx);
|
|
19320
|
+
const resolveCalloutXValue = (ctx, refAnnotation, calloutCfg, index$2) => {
|
|
19322
19321
|
const chart$4 = ctx?.chart;
|
|
19323
|
-
const scale = getXScale(chart$4, refAnnotation?.annotationAxis);
|
|
19324
19322
|
const xVal = refAnnotation?.xValue;
|
|
19325
|
-
if (
|
|
19326
|
-
|
|
19327
|
-
const
|
|
19323
|
+
if (typeof xVal !== "number") return 0;
|
|
19324
|
+
if (!chart$4) return xVal;
|
|
19325
|
+
const scale = getXScale(chart$4, refAnnotation?.annotationAxis);
|
|
19326
|
+
if (!scale) return xVal;
|
|
19327
|
+
const hasCustomOffset = typeof calloutCfg?.xAdjust === "number";
|
|
19328
|
+
const side = index$2 % 2 === 0 ? 1 : -1;
|
|
19329
|
+
const dx = hasCustomOffset ? calloutCfg?.xAdjust : side * 60;
|
|
19330
|
+
const basePx = scale.getPixelForValue(xVal);
|
|
19331
|
+
const cxBase = basePx + dx;
|
|
19332
|
+
const area = chart$4.chartArea;
|
|
19333
|
+
const el = ctx?.element;
|
|
19334
|
+
if (!area || !el) return scale.getValueForPixel(cxBase);
|
|
19328
19335
|
const margin = calloutCfg?.margin ?? 8;
|
|
19329
|
-
const
|
|
19330
|
-
let
|
|
19331
|
-
|
|
19332
|
-
else dx = (index$2 % 2 === 0 ? 1 : -1) * 60;
|
|
19333
|
-
let cx$1 = basePx + dx;
|
|
19336
|
+
const halfW = (el?.width ?? 0) / 2;
|
|
19337
|
+
let cx$1 = cxBase;
|
|
19338
|
+
let adjDx = dx;
|
|
19334
19339
|
if (cx$1 - halfW < area.left + margin) {
|
|
19335
|
-
|
|
19336
|
-
cx$1 = basePx +
|
|
19340
|
+
adjDx += area.left + margin + halfW - cx$1;
|
|
19341
|
+
cx$1 = basePx + adjDx;
|
|
19337
19342
|
} else if (cx$1 + halfW > area.right - margin) {
|
|
19338
|
-
|
|
19339
|
-
cx$1 = basePx +
|
|
19343
|
+
adjDx += area.right - margin - halfW - cx$1;
|
|
19344
|
+
cx$1 = basePx + adjDx;
|
|
19340
19345
|
}
|
|
19341
|
-
return
|
|
19346
|
+
return scale.getValueForPixel(cx$1);
|
|
19342
19347
|
};
|
|
19343
|
-
const
|
|
19344
|
-
if (typeof calloutCfg?.yAdjust === "function") return calloutCfg.yAdjust(ctx);
|
|
19348
|
+
const resolveCalloutYValue = (ctx, refAnnotation, calloutCfg, index$2) => {
|
|
19345
19349
|
const chart$4 = ctx?.chart;
|
|
19350
|
+
const yVal = refAnnotation.yValue;
|
|
19351
|
+
if (typeof yVal !== "number") return 0;
|
|
19352
|
+
if (!chart$4) return yVal;
|
|
19346
19353
|
const scale = getYScale(chart$4, refAnnotation?.annotationAxis);
|
|
19347
|
-
|
|
19348
|
-
|
|
19349
|
-
const
|
|
19350
|
-
const
|
|
19354
|
+
if (!scale) return yVal;
|
|
19355
|
+
const hasCustomOffset = typeof calloutCfg?.yAdjust === "number";
|
|
19356
|
+
const row = Math.floor(index$2 / 2);
|
|
19357
|
+
const dy = hasCustomOffset ? calloutCfg?.yAdjust : -40 - row * 22;
|
|
19358
|
+
const basePx = scale.getPixelForValue(yVal);
|
|
19359
|
+
const cyBase = basePx + dy;
|
|
19360
|
+
const area = chart$4.chartArea;
|
|
19361
|
+
const el = ctx?.element;
|
|
19362
|
+
if (!area || !el) return scale.getValueForPixel(cyBase);
|
|
19351
19363
|
const margin = calloutCfg?.margin ?? 8;
|
|
19352
|
-
const
|
|
19353
|
-
let
|
|
19354
|
-
|
|
19355
|
-
else dy = -40 - Math.floor(index$2 / 2) * 22;
|
|
19356
|
-
let cy = basePx + dy;
|
|
19364
|
+
const halfH = (el?.height ?? 0) / 2;
|
|
19365
|
+
let cy = cyBase;
|
|
19366
|
+
let adjDy = dy;
|
|
19357
19367
|
if (cy - halfH < area.top + margin) {
|
|
19358
|
-
|
|
19359
|
-
cy = basePx +
|
|
19368
|
+
adjDy += area.top + margin + halfH - cy;
|
|
19369
|
+
cy = basePx + adjDy;
|
|
19360
19370
|
} else if (cy + halfH > area.bottom - margin) {
|
|
19361
|
-
|
|
19362
|
-
cy = basePx +
|
|
19371
|
+
adjDy += area.bottom - margin - halfH - cy;
|
|
19372
|
+
cy = basePx + adjDy;
|
|
19363
19373
|
}
|
|
19364
|
-
return
|
|
19374
|
+
return scale.getValueForPixel(cy);
|
|
19365
19375
|
};
|
|
19366
19376
|
var isInRange = (v, min, max) => v >= min && v <= max;
|
|
19367
19377
|
const isCalloutAnchorInChartArea = (ctx, refAnnotation, margin = 0) => {
|
|
@@ -19378,6 +19388,47 @@ const isCalloutAnchorInChartArea = (ctx, refAnnotation, margin = 0) => {
|
|
|
19378
19388
|
const y = yScale.getPixelForValue(yVal);
|
|
19379
19389
|
return isInRange(x, area.left + margin, area.right - margin) && isInRange(y, area.top + margin, area.bottom - margin);
|
|
19380
19390
|
};
|
|
19391
|
+
var STORAGE_PREFIX = "chart_annotations";
|
|
19392
|
+
var getStorageKey = (persistenceId) => {
|
|
19393
|
+
return `${STORAGE_PREFIX}:${persistenceId}`;
|
|
19394
|
+
};
|
|
19395
|
+
var readStorage = (persistenceId) => {
|
|
19396
|
+
try {
|
|
19397
|
+
const raw = window.localStorage.getItem(getStorageKey(persistenceId));
|
|
19398
|
+
if (!raw) return {};
|
|
19399
|
+
const json = JSON.parse(raw);
|
|
19400
|
+
return typeof json === "object" && json !== null ? json : {};
|
|
19401
|
+
} catch {
|
|
19402
|
+
return {};
|
|
19403
|
+
}
|
|
19404
|
+
};
|
|
19405
|
+
var writeStorage = (persistenceId, data) => {
|
|
19406
|
+
try {
|
|
19407
|
+
window.localStorage.setItem(getStorageKey(persistenceId), JSON.stringify(data));
|
|
19408
|
+
} catch {}
|
|
19409
|
+
};
|
|
19410
|
+
const setAnnotationPosition = (persistenceId, annotationId, pos) => {
|
|
19411
|
+
if (!persistenceId) return;
|
|
19412
|
+
const current = readStorage(persistenceId);
|
|
19413
|
+
writeStorage(persistenceId, {
|
|
19414
|
+
...current,
|
|
19415
|
+
[annotationId]: {
|
|
19416
|
+
...current[annotationId] ?? {},
|
|
19417
|
+
...pos
|
|
19418
|
+
}
|
|
19419
|
+
});
|
|
19420
|
+
};
|
|
19421
|
+
const getAnnotationPosition = (persistenceId, annotationId) => {
|
|
19422
|
+
if (!persistenceId) return void 0;
|
|
19423
|
+
return readStorage(persistenceId)[annotationId];
|
|
19424
|
+
};
|
|
19425
|
+
const getChartFromCtx = (ctx) => {
|
|
19426
|
+
if (!ctx) return;
|
|
19427
|
+
if (ctx.chart?.persistenceId !== void 0) return ctx.chart;
|
|
19428
|
+
if (ctx.chart?.chart?.persistenceId !== void 0) return ctx.chart.chart;
|
|
19429
|
+
if (ctx.$context?.chart?.persistenceId !== void 0) return ctx.$context.chart;
|
|
19430
|
+
return ctx.chart?.chart ?? ctx.chart ?? ctx.$context?.chart;
|
|
19431
|
+
};
|
|
19381
19432
|
var handleLineEnter = (element, chart$4, annotation$1) => {
|
|
19382
19433
|
chart$4.canvas.style.cursor = CursorStyle.Pointer;
|
|
19383
19434
|
if (element.options.scaleID?.includes(AxisType.X)) {
|
|
@@ -19589,7 +19640,6 @@ var getCalloutAnnotation = (refAnnotation, index$2) => {
|
|
|
19589
19640
|
const startOffset = typeof calloutCfg.startOffset === "number" ? calloutCfg.startOffset : 4;
|
|
19590
19641
|
const endOffset = typeof calloutCfg.endOffset === "number" ? calloutCfg.endOffset : 4;
|
|
19591
19642
|
return [baseAnnotation, {
|
|
19592
|
-
...baseAnnotation,
|
|
19593
19643
|
id: `callout-annotation-${index$2}`,
|
|
19594
19644
|
type: "label",
|
|
19595
19645
|
backgroundColor: "transparent",
|
|
@@ -19600,11 +19650,17 @@ var getCalloutAnnotation = (refAnnotation, index$2) => {
|
|
|
19600
19650
|
borderWidth: BORDER_WIDTH.INITIAL,
|
|
19601
19651
|
padding: 5,
|
|
19602
19652
|
display: (ctx) => (refAnnotation.display ?? true) && isCalloutAnchorInChartArea(ctx, refAnnotation, calloutCfg.margin ?? 0),
|
|
19603
|
-
|
|
19604
|
-
|
|
19653
|
+
xValue: (ctx) => {
|
|
19654
|
+
const persistenceId = getChartFromCtx(ctx)?.options?.persistenceId;
|
|
19655
|
+
const stored = getAnnotationPosition(persistenceId, `callout-annotation-${index$2}`);
|
|
19656
|
+
const explicit = typeof calloutCfg.xValue === "number" ? calloutCfg.xValue : void 0;
|
|
19657
|
+
return stored?.x ?? explicit ?? resolveCalloutXValue(ctx, refAnnotation, calloutCfg, index$2);
|
|
19605
19658
|
},
|
|
19606
|
-
|
|
19607
|
-
|
|
19659
|
+
yValue: (ctx) => {
|
|
19660
|
+
const persistenceId = getChartFromCtx(ctx)?.options?.persistenceId;
|
|
19661
|
+
const stored = getAnnotationPosition(persistenceId, `callout-annotation-${index$2}`);
|
|
19662
|
+
const explicit = typeof calloutCfg.yValue === "number" ? calloutCfg.yValue : void 0;
|
|
19663
|
+
return stored?.y ?? explicit ?? resolveCalloutYValue(ctx, refAnnotation, calloutCfg, index$2);
|
|
19608
19664
|
},
|
|
19609
19665
|
resizable: false,
|
|
19610
19666
|
displayDragCoordinates: false,
|
|
@@ -19615,9 +19671,15 @@ var getCalloutAnnotation = (refAnnotation, index$2) => {
|
|
|
19615
19671
|
leave: ({ element }, { chart: chart$4 }) => {
|
|
19616
19672
|
return handleLabelLeave(element, chart$4, { enableDrag: true });
|
|
19617
19673
|
},
|
|
19618
|
-
onDragStart: calloutCfg?.onDragStart ? () => (coords) =>
|
|
19619
|
-
|
|
19620
|
-
|
|
19674
|
+
onDragStart: calloutCfg?.onDragStart ? () => (coords) => {
|
|
19675
|
+
return calloutCfg.onDragStart?.(coords, refAnnotation);
|
|
19676
|
+
} : void 0,
|
|
19677
|
+
onDrag: calloutCfg?.onDrag ? () => (coords) => {
|
|
19678
|
+
return calloutCfg.onDrag?.(coords, refAnnotation);
|
|
19679
|
+
} : void 0,
|
|
19680
|
+
onDragEnd: calloutCfg?.onDragEnd ? () => (coords) => {
|
|
19681
|
+
return calloutCfg.onDragEnd?.(coords, refAnnotation);
|
|
19682
|
+
} : void 0,
|
|
19621
19683
|
calloutConnector: {
|
|
19622
19684
|
enabled: true,
|
|
19623
19685
|
fromId: baseId,
|
|
@@ -19753,7 +19815,7 @@ const toAnnotationObject = (annotationArr = []) => {
|
|
|
19753
19815
|
}, {});
|
|
19754
19816
|
return { annotations };
|
|
19755
19817
|
};
|
|
19756
|
-
const useChartOptions = ({ chartRef, state, options, dispatch, generatedDatasets }) => {
|
|
19818
|
+
const useChartOptions = ({ chartRef, state, options, dispatch, generatedDatasets, persistenceId }) => {
|
|
19757
19819
|
const { interactions: { onAnimationComplete }, annotations: { controlAnnotation, showAnnotations = false, annotationsData = [], labelAnnotation: { showLabel, text, position, fontSize, xOffset, yOffset, maxWidth, lineHeight } = {} }, chartStyling: { layoutPadding } } = options;
|
|
19758
19820
|
const { enableDragPoints, zoomEnabled, panEnabled, lineEnabled } = state;
|
|
19759
19821
|
const [hoveredPoint, setHoveredPoint] = useState(null);
|
|
@@ -19835,6 +19897,7 @@ const useChartOptions = ({ chartRef, state, options, dispatch, generatedDatasets
|
|
|
19835
19897
|
...dragData
|
|
19836
19898
|
};
|
|
19837
19899
|
return useMemo(() => ({
|
|
19900
|
+
persistenceId,
|
|
19838
19901
|
layout: { padding: layoutPadding },
|
|
19839
19902
|
onHover: onHover(hoveredPoint, setHoveredPoint, generatedDatasets),
|
|
19840
19903
|
maintainAspectRatio: options?.chartStyling?.maintainAspectRatio,
|
|
@@ -20195,7 +20258,7 @@ const handleAnnotationMouseMove = (event, canvas$3, scales$1, isDragging$1, acti
|
|
|
20195
20258
|
}
|
|
20196
20259
|
}
|
|
20197
20260
|
};
|
|
20198
|
-
const handleAnnotationMouseUp = (isDragging$1, activeAnnotation, chart$4, canvas$3, setDraggingState) => {
|
|
20261
|
+
const handleAnnotationMouseUp = (isDragging$1, activeAnnotation, chart$4, canvas$3, setDraggingState, persistenceId) => {
|
|
20199
20262
|
if (isDragging$1) {
|
|
20200
20263
|
if (activeAnnotation) {
|
|
20201
20264
|
const annotationId = activeAnnotation?.id;
|
|
@@ -20207,6 +20270,10 @@ const handleAnnotationMouseUp = (isDragging$1, activeAnnotation, chart$4, canvas
|
|
|
20207
20270
|
}, activeAnnotation);
|
|
20208
20271
|
if (!isNil(canvas$3) && !isNil(canvas$3.style)) canvas$3.style.cursor = CursorStyle.Pointer;
|
|
20209
20272
|
setDraggingState(false, null);
|
|
20273
|
+
setAnnotationPosition(persistenceId, annotationId, {
|
|
20274
|
+
x: centerX,
|
|
20275
|
+
y: centerY
|
|
20276
|
+
});
|
|
20210
20277
|
}
|
|
20211
20278
|
}
|
|
20212
20279
|
};
|
|
@@ -20259,7 +20326,8 @@ const annotationDraggerPlugin = {
|
|
|
20259
20326
|
}
|
|
20260
20327
|
},
|
|
20261
20328
|
afterUpdate(chart$4) {
|
|
20262
|
-
const { canvas: canvas$3, scales: scales$1, hoveredAnnotationId } = chart$4 ?? {};
|
|
20329
|
+
const { canvas: canvas$3, scales: scales$1, hoveredAnnotationId, options } = chart$4 ?? {};
|
|
20330
|
+
const persistenceId = options?.persistenceId;
|
|
20263
20331
|
const pluginOptions = chart$4?.options?.plugins?.annotationDraggerPlugin || { enabled: false };
|
|
20264
20332
|
if (!canvas$3 || !scales$1 || !pluginOptions || !pluginOptions?.enabled) return;
|
|
20265
20333
|
const typedScales = {
|
|
@@ -20302,7 +20370,7 @@ const annotationDraggerPlugin = {
|
|
|
20302
20370
|
});
|
|
20303
20371
|
canvas$3.addEventListener(MouseEvents.MOUSEUP, (event) => {
|
|
20304
20372
|
const canvasEvent = event.currentTarget;
|
|
20305
|
-
handleAnnotationMouseUp(isDragging$1, activeAnnotation, chart$4, canvasEvent, setDraggingState);
|
|
20373
|
+
handleAnnotationMouseUp(isDragging$1, activeAnnotation, chart$4, canvasEvent, setDraggingState, persistenceId);
|
|
20306
20374
|
});
|
|
20307
20375
|
canvas$3.dataset.annotationDraggerInitialized = "true";
|
|
20308
20376
|
}
|
|
@@ -20871,7 +20939,8 @@ var LineChart = (props) => {
|
|
|
20871
20939
|
state,
|
|
20872
20940
|
options,
|
|
20873
20941
|
dispatch,
|
|
20874
|
-
generatedDatasets
|
|
20942
|
+
generatedDatasets,
|
|
20943
|
+
persistenceId
|
|
20875
20944
|
});
|
|
20876
20945
|
const usePlugins = useChartPlugins({
|
|
20877
20946
|
options,
|