@amaster.ai/taro-echarts-ui 1.1.0-beta.22 → 1.1.0-beta.24
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/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var components=require('@tarojs/components'),
|
|
1
|
+
'use strict';var components=require('@tarojs/components'),w=require('@tarojs/taro'),react=require('react'),platform=require('zrender/lib/core/platform'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var w__default=/*#__PURE__*/_interopDefault(w);var b=null;function pt(){if(b)return b;try{b=w__default.default.createOffscreenCanvas({type:"2d",width:2,height:2})?.getContext("2d");}catch{}return b}function B(){w__default.default.getEnv()!==w__default.default.ENV_TYPE.WEB&&platform.setPlatformAPI({createCanvas:()=>{try{return w__default.default.createOffscreenCanvas({type:"2d",width:1,height:1})}catch{return {getContext:()=>null}}},measureText:(t,s)=>{let o=pt();if(!o)return {width:0};try{return o.font=s||"12px sans-serif",{width:o.measureText(t)?.width||0}}catch{return {width:0}}},loadImage:(t,s,o)=>{try{let e=w__default.default.createImage?.();if(!e)return o();e.onload=()=>s(e),e.onerror=o,e.src=t;}catch{o();}},requestAnimationFrame:t=>setTimeout(t,16),cancelAnimationFrame:t=>clearTimeout(t)});}function I(t,s){t.addEventListener||(t.addEventListener=()=>{}),t.removeEventListener||(t.removeEventListener=()=>{}),t.dispatchEvent||(t.dispatchEvent=()=>{});let o=t.getContext.bind(t);t.getContext=i=>i==="2d"||i==="2d-text"?s:o(i),t.style||(t.style={}),t.setAttribute||(t.setAttribute=()=>{}),t.getAttribute||(t.getAttribute=()=>null),t.removeAttribute||(t.removeAttribute=()=>{}),t.getBoundingClientRect||(t.getBoundingClientRect=()=>({top:0,left:0,width:t.width,height:t.height,right:t.width,bottom:t.height}));let e=t.devicePixelRatio||1,m=(i,h)=>{Object.getOwnPropertyDescriptor(t,i)||Object.defineProperty(t,i,{get:h});};return m("offsetWidth",()=>t.width/e),m("offsetHeight",()=>t.height/e),m("clientWidth",()=>t.width/e),m("clientHeight",()=>t.height/e),t}var L=null,z=false;async function H(){if(L)return L;B();let t=await import('echarts/core');if(!z){let{CanvasRenderer:s}=await import('echarts/renderers'),{PieChart:o,BarChart:e,LineChart:m,ScatterChart:i,RadarChart:h,MapChart:n,TreeChart:E,TreemapChart:P,GraphChart:g,GaugeChart:y,FunnelChart:d,ParallelChart:A,SankeyChart:M,BoxplotChart:O,CandlestickChart:r,EffectScatterChart:C,LinesChart:l,HeatmapChart:u,PictorialBarChart:f,ThemeRiverChart:a,SunburstChart:p,CustomChart:c}=await import('echarts/charts'),{TitleComponent:T,TooltipComponent:S,GridComponent:x,PolarComponent:G,RadarComponent:F,GeoComponent:N,SingleAxisComponent:V,ParallelComponent:$,CalendarComponent:Y,GraphicComponent:_,ToolboxComponent:q,AxisPointerComponent:j,BrushComponent:Q,LegendComponent:X,DataZoomComponent:J,DataZoomInsideComponent:K,DataZoomSliderComponent:U,VisualMapComponent:tt,VisualMapContinuousComponent:et,VisualMapPiecewiseComponent:rt,TimelineComponent:nt,AriaComponent:ot,TransformComponent:it,DatasetComponent:at,MarkPointComponent:st,MarkLineComponent:ut,MarkAreaComponent:ct}=await import('echarts/components');t.use([s,o,e,m,i,h,n,E,P,g,y,d,A,M,O,r,C,l,u,f,a,p,c,T,S,x,G,F,N,V,$,Y,_,q,j,Q,X,J,K,U,tt,et,rt,nt,ot,it,at,st,ut,ct]),z=true;}return L=t,t}function Z(t,s){if(t==null||t==="")return s;if(typeof t=="number")return `${t}px`;let o=String(t),e=o.match(/^(-?\d+(?:\.\d+)?)(rpx)$/i);return e&&e[1]?`${parseFloat(e[1])/2}px`:o}function D({option:t,height:s="300px",width:o="100%",className:e="",style:m}){let i={width:o,height:s,...m},h=react.useMemo(()=>`chart_${Math.random().toString(36).slice(2,11)}`,[]),n=react.useRef(null),[E,P]=react.useState(false),g=react.useRef(null),y=w__default.default.getEnv()!==w__default.default.ENV_TYPE.WEB;react.useEffect(()=>{if(!y){let u=true;(async()=>{try{let p=await H();if(!u)return;let c=document.getElementById(h);if(!c)return;n.current?.dispose(),n.current=p.init(c),n.current.setOption(t),P(!0);}catch(p){console.error("[ECharts] H5 init failed:",p);}})();let a=()=>n.current?.resize();return window.addEventListener("resize",a),()=>{u=false,window.removeEventListener("resize",a),n.current?.dispose(),n.current=null;}}let r=true,C=async(u=0)=>{r&&w__default.default.createSelectorQuery().select(`#${h}`).fields({node:true,size:true}).exec(async f=>{if(!r)return;if(!f?.[0]?.node){u<5&&setTimeout(()=>C(u+1),200*(u+1));return}let a=f[0].node,p=a.getContext("2d");if(!p)return;let c=w__default.default.getSystemInfoSync().pixelRatio,T=f[0].width,S=f[0].height;g.current=a,a.width=T*c,a.height=S*c,p.scale(c,c),a.devicePixelRatio=c,I(a,p),n.current?.dispose(),n.current=null;try{let x=await H();if(!r)return;n.current=x.init(a,null,{width:T,height:S,devicePixelRatio:c}),n.current.setOption(t),P(!0);}catch(x){console.error("[ECharts] Init failed:",x);}});},l=setTimeout(()=>C(),50);return ()=>{r=false,clearTimeout(l),n.current?.dispose(),n.current=null;}},[h,y]),react.useEffect(()=>{E&&n.current&&n.current.setOption(t,true);},[t,E]);let d=(r,C)=>{if(!n.current||!g.current)return;let l=r.touches[0]||r.changedTouches[0];if(!l)return;let u=g.current.getBoundingClientRect();n.current.getZr().handler.dispatch(C,{zrX:l.x-u.left,zrY:l.y-u.top,preventDefault:()=>{},stopPropagation:()=>{},stopImmediatePropagation:()=>{}});},A=r=>{d(r,"mousedown"),d(r,"mousemove");},M=r=>d(r,"mousemove"),O=r=>{d(r,"mouseup"),d(r,"click");};if(!y){let r={...i,width:Z(i.width,"100%"),height:Z(i.height,"300px")};return jsxRuntime.jsx("div",{id:h,className:e||void 0,style:r})}return jsxRuntime.jsx(components.Canvas,{id:h,type:"2d",className:e||void 0,style:{width:i.width||"100%",height:i.height||"300px"},disableScroll:true,onTouchStart:A,onTouchMove:M,onTouchEnd:O})}exports.ECharts=D;exports.setupCanvasPolyfill=I;exports.setupWeappZrenderPlatform=B;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/weappPlatform.ts","../src/polyfill.ts","../src/ECharts.tsx"],"names":["measureCtx","getMeasureCtx","Taro","setupWeappZrenderPlatform","setPlatformAPI","text","font","ctx","src","onload","onerror","img","cb","id","setupCanvasPolyfill","canvas","originalGetContext","type","dpr","defineSize","prop","value","echartsMod","echartsRegistered","getEcharts","echarts","CanvasRenderer","PieChart","BarChart","LineChart","ScatterChart","RadarChart","MapChart","TreeChart","TreemapChart","GraphChart","GaugeChart","FunnelChart","ParallelChart","SankeyChart","BoxplotChart","CandlestickChart","EffectScatterChart","LinesChart","HeatmapChart","PictorialBarChart","ThemeRiverChart","SunburstChart","CustomChart","TitleComponent","TooltipComponent","GridComponent","PolarComponent","RadarComponent","GeoComponent","SingleAxisComponent","ParallelComponent","CalendarComponent","GraphicComponent","ToolboxComponent","AxisPointerComponent","BrushComponent","LegendComponent","DataZoomComponent","DataZoomInsideComponent","DataZoomSliderComponent","VisualMapComponent","VisualMapContinuousComponent","VisualMapPiecewiseComponent","TimelineComponent","AriaComponent","TransformComponent","DatasetComponent","MarkPointComponent","MarkLineComponent","MarkAreaComponent","ECharts","option","height","width","className","style","mergedStyle","finalWidth","finalHeight","canvasId","useMemo","chartRef","useRef","isReady","setIsReady","useState","canvasNodeRef","useEffect","mounted","container","handleResize","initChart","retryCount","res","canvasHeight","error","timer","handleTouch","e","eventType","touch","box","onTouchStart","onTouchMove","onTouchEnd","jsx","Canvas"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * 小程序 ZRender 平台适配\n * 通过 setPlatformAPI 接管 createCanvas/measureText,避免 ECharts 污染 Taro 渲染器\n */\n\n// @ts-ignore\nimport { setPlatformAPI } from 'zrender/lib/core/platform'\nimport Taro from '@tarojs/taro'\n\nlet measureCtx: any = null\n\nfunction getMeasureCtx() {\n if (measureCtx) return measureCtx\n try {\n const offscreen = Taro.createOffscreenCanvas({ type: '2d', width: 2, height: 2 })\n measureCtx = offscreen?.getContext('2d')\n } catch {}\n return measureCtx\n}\n\n/** 设置小程序 zrender 平台 API,必须在 import echarts 之前调用 */\nexport function setupWeappZrenderPlatform() {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) return\n\n setPlatformAPI({\n createCanvas: () => {\n try {\n return Taro.createOffscreenCanvas({ type: '2d', width: 1, height: 1 })\n } catch {\n return { getContext: () => null } as any\n }\n },\n\n measureText: (text: string, font: string) => {\n const ctx = getMeasureCtx()\n if (!ctx) return { width: 0 }\n try {\n ctx.font = font || '12px sans-serif'\n return { width: ctx.measureText(text)?.width || 0 }\n } catch {\n return { width: 0 }\n }\n },\n\n loadImage: (src: string, onload: (img: any) => void, onerror: () => void) => {\n try {\n // @ts-ignore\n const img = (Taro as any).createImage?.()\n if (!img) return onerror()\n img.onload = () => onload(img)\n img.onerror = onerror\n img.src = src\n } catch {\n onerror()\n }\n },\n\n requestAnimationFrame: (cb: FrameRequestCallback) => setTimeout(cb, 16) as unknown as number,\n cancelAnimationFrame: (id: number) => clearTimeout(id),\n } as any)\n}\n","/**\n * Canvas Polyfill - 给小程序 canvas 节点补充 ECharts 需要的 DOM 兼容属性\n */\n\nexport function setupCanvasPolyfill(canvas: any, ctx: any) {\n if (!canvas.addEventListener) canvas.addEventListener = () => {}\n if (!canvas.removeEventListener) canvas.removeEventListener = () => {}\n if (!canvas.dispatchEvent) canvas.dispatchEvent = () => {}\n\n const originalGetContext = canvas.getContext.bind(canvas)\n canvas.getContext = (type: string) => {\n return (type === '2d' || type === '2d-text') ? ctx : originalGetContext(type)\n }\n\n if (!canvas.style) canvas.style = {}\n if (!canvas.setAttribute) canvas.setAttribute = () => {}\n if (!canvas.getAttribute) canvas.getAttribute = () => null\n if (!canvas.removeAttribute) canvas.removeAttribute = () => {}\n\n if (!canvas.getBoundingClientRect) {\n canvas.getBoundingClientRect = () => ({\n top: 0, left: 0,\n width: canvas.width, height: canvas.height,\n right: canvas.width, bottom: canvas.height,\n })\n }\n\n const dpr = canvas.devicePixelRatio || 1\n const defineSize = (prop: string, value: () => number) => {\n if (!Object.getOwnPropertyDescriptor(canvas, prop)) {\n Object.defineProperty(canvas, prop, { get: value })\n }\n }\n defineSize('offsetWidth', () => canvas.width / dpr)\n defineSize('offsetHeight', () => canvas.height / dpr)\n defineSize('clientWidth', () => canvas.width / dpr)\n defineSize('clientHeight', () => canvas.height / dpr)\n\n return canvas\n}\n","/**\n * Taro ECharts 组件\n * 使用 zrender setPlatformAPI 接管 canvas 创建和文本测量,避免影响 Taro 渲染器\n */\n\nimport { Canvas } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useEffect, useRef, useState, useMemo } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { EChartsOption } from 'echarts'\nimport type { EChartsType } from 'echarts/core'\nimport { setupWeappZrenderPlatform } from './weappPlatform'\nimport { setupCanvasPolyfill } from './polyfill'\n\nlet echartsMod: typeof import('echarts/core') | null = null\nlet echartsRegistered = false\n\n/** 动态加载 echarts,确保 setPlatformAPI 在 import 之前执行 */\nasync function getEcharts() {\n if (echartsMod) return echartsMod\n\n setupWeappZrenderPlatform()\n\n const echarts = await import('echarts/core')\n \n if (!echartsRegistered) {\n const { CanvasRenderer } = await import('echarts/renderers')\n const {\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n } = await import('echarts/charts')\n const {\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n } = await import('echarts/components')\n\n echarts.use([\n CanvasRenderer,\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n ])\n\n echartsRegistered = true\n }\n\n echartsMod = echarts\n return echarts\n}\n\nexport interface EChartsProps {\n /** ECharts 配置项 */\n option: EChartsOption\n /** 图表高度 */\n height?: string\n /** 图表宽度 */\n width?: string\n /** CSS 类名 */\n className?: string\n /** 内联样式,style 中的 width/height 会覆盖单独属性 */\n style?: CSSProperties\n}\n\nexport default function ECharts({ \n option, \n height = '300px', \n width = '100%',\n className = '',\n style,\n}: EChartsProps) {\n const mergedStyle: CSSProperties = { width, height, ...style }\n const finalWidth = mergedStyle.width || '100%'\n const finalHeight = mergedStyle.height || '300px'\n \n const canvasId = useMemo(() => `chart_${Math.random().toString(36).slice(2, 11)}`, [])\n const chartRef = useRef<EChartsType | null>(null)\n const [isReady, setIsReady] = useState(false)\n const canvasNodeRef = useRef<any>(null)\n\n useEffect(() => {\n const env = Taro.getEnv()\n\n // H5 环境\n if (env === Taro.ENV_TYPE.WEB) {\n let mounted = true\n \n getEcharts().then((echarts) => {\n if (!mounted) return\n const container = document.getElementById(canvasId)\n if (!container) return\n\n if (!chartRef.current) {\n chartRef.current = echarts.init(container)\n }\n chartRef.current.setOption(option)\n setIsReady(true)\n })\n\n const handleResize = () => chartRef.current?.resize()\n window.addEventListener('resize', handleResize)\n\n return () => {\n mounted = false\n window.removeEventListener('resize', handleResize)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }\n\n // 小程序环境\n let mounted = true\n\n const initChart = async (retryCount = 0) => {\n if (!mounted) return\n\n Taro.createSelectorQuery()\n .select(`#${canvasId}`)\n .fields({ node: true, size: true })\n .exec(async (res) => {\n if (!mounted) return\n\n if (!res?.[0]?.node) {\n if (retryCount < 5) {\n setTimeout(() => initChart(retryCount + 1), 200 * (retryCount + 1))\n }\n return\n }\n\n const canvas = res[0].node\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const dpr = Taro.getSystemInfoSync().pixelRatio\n const width = res[0].width\n const canvasHeight = res[0].height\n\n canvasNodeRef.current = canvas\n canvas.width = width * dpr\n canvas.height = canvasHeight * dpr\n ctx.scale(dpr, dpr)\n canvas.devicePixelRatio = dpr\n\n setupCanvasPolyfill(canvas, ctx)\n\n chartRef.current?.dispose()\n chartRef.current = null\n\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n\n chartRef.current = echarts.init(canvas, null, {\n width,\n height: canvasHeight,\n devicePixelRatio: dpr,\n })\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] Init failed:', error)\n }\n })\n }\n\n const timer = setTimeout(() => initChart(), 100)\n\n return () => {\n mounted = false\n clearTimeout(timer)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }, [canvasId])\n\n useEffect(() => {\n if (isReady && chartRef.current) {\n chartRef.current.setOption(option, true)\n }\n }, [option, isReady])\n\n const handleTouch = (e: any, eventType: string) => {\n if (!chartRef.current || !canvasNodeRef.current) return\n\n const touch = e.touches[0] || e.changedTouches[0]\n if (!touch) return\n\n const box = canvasNodeRef.current.getBoundingClientRect()\n // @ts-ignore\n chartRef.current.getZr().handler.dispatch(eventType, {\n zrX: touch.x - box.left,\n zrY: touch.y - box.top,\n preventDefault: () => {},\n stopPropagation: () => {},\n stopImmediatePropagation: () => {},\n })\n }\n\n const onTouchStart = (e: any) => {\n handleTouch(e, 'mousedown')\n handleTouch(e, 'mousemove')\n }\n const onTouchMove = (e: any) => handleTouch(e, 'mousemove')\n const onTouchEnd = (e: any) => {\n handleTouch(e, 'mouseup')\n handleTouch(e, 'click')\n }\n\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) {\n return <div id={canvasId} className={className || undefined} style={mergedStyle} />\n }\n\n return (\n <Canvas\n id={canvasId}\n type=\"2d\"\n className={className || undefined}\n style={{ width: finalWidth, height: finalHeight }}\n disableScroll\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n />\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/weappPlatform.ts","../src/polyfill.ts","../src/ECharts.tsx"],"names":["measureCtx","getMeasureCtx","Taro","setupWeappZrenderPlatform","setPlatformAPI","text","font","ctx","src","onload","onerror","img","cb","id","setupCanvasPolyfill","canvas","originalGetContext","type","dpr","defineSize","prop","value","echartsMod","echartsRegistered","getEcharts","echarts","CanvasRenderer","PieChart","BarChart","LineChart","ScatterChart","RadarChart","MapChart","TreeChart","TreemapChart","GraphChart","GaugeChart","FunnelChart","ParallelChart","SankeyChart","BoxplotChart","CandlestickChart","EffectScatterChart","LinesChart","HeatmapChart","PictorialBarChart","ThemeRiverChart","SunburstChart","CustomChart","TitleComponent","TooltipComponent","GridComponent","PolarComponent","RadarComponent","GeoComponent","SingleAxisComponent","ParallelComponent","CalendarComponent","GraphicComponent","ToolboxComponent","AxisPointerComponent","BrushComponent","LegendComponent","DataZoomComponent","DataZoomInsideComponent","DataZoomSliderComponent","VisualMapComponent","VisualMapContinuousComponent","VisualMapPiecewiseComponent","TimelineComponent","AriaComponent","TransformComponent","DatasetComponent","MarkPointComponent","MarkLineComponent","MarkAreaComponent","convertRpx","defaultValue","str","match","ECharts","option","height","width","className","style","mergedStyle","canvasId","useMemo","chartRef","useRef","isReady","setIsReady","useState","canvasNodeRef","isWeapp","useEffect","mounted","container","error","handleResize","initChart","retryCount","res","canvasWidth","canvasHeight","timer","handleTouch","e","eventType","touch","box","onTouchStart","onTouchMove","onTouchEnd","h5Style","jsx","Canvas"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * 小程序 ZRender 平台适配\n * 通过 setPlatformAPI 接管 createCanvas/measureText,避免 ECharts 污染 Taro 渲染器\n */\n\n// @ts-ignore\nimport { setPlatformAPI } from 'zrender/lib/core/platform'\nimport Taro from '@tarojs/taro'\n\nlet measureCtx: any = null\n\nfunction getMeasureCtx() {\n if (measureCtx) return measureCtx\n try {\n const offscreen = Taro.createOffscreenCanvas({ type: '2d', width: 2, height: 2 })\n measureCtx = offscreen?.getContext('2d')\n } catch {}\n return measureCtx\n}\n\n/** 设置小程序 zrender 平台 API,必须在 import echarts 之前调用 */\nexport function setupWeappZrenderPlatform() {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) return\n\n setPlatformAPI({\n createCanvas: () => {\n try {\n return Taro.createOffscreenCanvas({ type: '2d', width: 1, height: 1 })\n } catch {\n return { getContext: () => null } as any\n }\n },\n\n measureText: (text: string, font: string) => {\n const ctx = getMeasureCtx()\n if (!ctx) return { width: 0 }\n try {\n ctx.font = font || '12px sans-serif'\n return { width: ctx.measureText(text)?.width || 0 }\n } catch {\n return { width: 0 }\n }\n },\n\n loadImage: (src: string, onload: (img: any) => void, onerror: () => void) => {\n try {\n // @ts-ignore\n const img = (Taro as any).createImage?.()\n if (!img) return onerror()\n img.onload = () => onload(img)\n img.onerror = onerror\n img.src = src\n } catch {\n onerror()\n }\n },\n\n requestAnimationFrame: (cb: FrameRequestCallback) => setTimeout(cb, 16) as unknown as number,\n cancelAnimationFrame: (id: number) => clearTimeout(id),\n } as any)\n}\n","/**\n * Canvas Polyfill - 给小程序 canvas 节点补充 ECharts 需要的 DOM 兼容属性\n */\n\nexport function setupCanvasPolyfill(canvas: any, ctx: any) {\n if (!canvas.addEventListener) canvas.addEventListener = () => {}\n if (!canvas.removeEventListener) canvas.removeEventListener = () => {}\n if (!canvas.dispatchEvent) canvas.dispatchEvent = () => {}\n\n const originalGetContext = canvas.getContext.bind(canvas)\n canvas.getContext = (type: string) => {\n return (type === '2d' || type === '2d-text') ? ctx : originalGetContext(type)\n }\n\n if (!canvas.style) canvas.style = {}\n if (!canvas.setAttribute) canvas.setAttribute = () => {}\n if (!canvas.getAttribute) canvas.getAttribute = () => null\n if (!canvas.removeAttribute) canvas.removeAttribute = () => {}\n\n if (!canvas.getBoundingClientRect) {\n canvas.getBoundingClientRect = () => ({\n top: 0, left: 0,\n width: canvas.width, height: canvas.height,\n right: canvas.width, bottom: canvas.height,\n })\n }\n\n const dpr = canvas.devicePixelRatio || 1\n const defineSize = (prop: string, value: () => number) => {\n if (!Object.getOwnPropertyDescriptor(canvas, prop)) {\n Object.defineProperty(canvas, prop, { get: value })\n }\n }\n defineSize('offsetWidth', () => canvas.width / dpr)\n defineSize('offsetHeight', () => canvas.height / dpr)\n defineSize('clientWidth', () => canvas.width / dpr)\n defineSize('clientHeight', () => canvas.height / dpr)\n\n return canvas\n}\n","/**\n * Taro ECharts 组件\n * 小程序使用 zrender setPlatformAPI,H5 使用原生能力\n */\n\nimport { Canvas } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useEffect, useRef, useState, useMemo } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { EChartsOption } from 'echarts'\nimport type { EChartsType } from 'echarts/core'\nimport { setupWeappZrenderPlatform } from './weappPlatform'\nimport { setupCanvasPolyfill } from './polyfill'\n\nlet echartsMod: typeof import('echarts/core') | null = null\nlet echartsRegistered = false\n\n/** 动态加载 echarts */\nasync function getEcharts() {\n if (echartsMod) return echartsMod\n\n // 小程序环境设置平台 API(内部会判断环境)\n setupWeappZrenderPlatform()\n\n const echarts = await import('echarts/core')\n \n if (!echartsRegistered) {\n const { CanvasRenderer } = await import('echarts/renderers')\n const {\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n } = await import('echarts/charts')\n const {\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n } = await import('echarts/components')\n\n echarts.use([\n CanvasRenderer,\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n ])\n\n echartsRegistered = true\n }\n\n echartsMod = echarts\n return echarts\n}\n\n/** 将 rpx 转换为 px(H5 inline style 需要,PostCSS 只处理 CSS 文件) */\nfunction convertRpx(value: string | number | undefined, defaultValue: string): string {\n if (value === undefined || value === null || value === '') return defaultValue\n if (typeof value === 'number') return `${value}px`\n \n const str = String(value)\n const match = str.match(/^(-?\\d+(?:\\.\\d+)?)(rpx)$/i)\n if (match && match[1]) {\n return `${parseFloat(match[1]) / 2}px`\n }\n return str\n}\n\nexport interface EChartsProps {\n /** ECharts 配置项 */\n option: EChartsOption\n /** 图表高度 */\n height?: string\n /** 图表宽度 */\n width?: string\n /** CSS 类名 */\n className?: string\n /** 内联样式,style 中的 width/height 会覆盖单独属性 */\n style?: CSSProperties\n}\n\nexport default function ECharts({ \n option, \n height = '300px', \n width = '100%',\n className = '',\n style,\n}: EChartsProps) {\n const mergedStyle: CSSProperties = { width, height, ...style }\n \n const canvasId = useMemo(() => `chart_${Math.random().toString(36).slice(2, 11)}`, [])\n const chartRef = useRef<EChartsType | null>(null)\n const [isReady, setIsReady] = useState(false)\n const canvasNodeRef = useRef<any>(null)\n\n const isWeapp = Taro.getEnv() !== Taro.ENV_TYPE.WEB\n\n useEffect(() => {\n // H5 环境\n if (!isWeapp) {\n let mounted = true\n \n const initH5Chart = async () => {\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n \n const container = document.getElementById(canvasId)\n if (!container) return\n\n chartRef.current?.dispose()\n chartRef.current = echarts.init(container)\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] H5 init failed:', error)\n }\n }\n\n initH5Chart()\n\n const handleResize = () => chartRef.current?.resize()\n window.addEventListener('resize', handleResize)\n\n return () => {\n mounted = false\n window.removeEventListener('resize', handleResize)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }\n\n // 小程序环境\n let mounted = true\n\n const initChart = async (retryCount = 0) => {\n if (!mounted) return\n\n Taro.createSelectorQuery()\n .select(`#${canvasId}`)\n .fields({ node: true, size: true })\n .exec(async (res) => {\n if (!mounted) return\n\n if (!res?.[0]?.node) {\n if (retryCount < 5) {\n setTimeout(() => initChart(retryCount + 1), 200 * (retryCount + 1))\n }\n return\n }\n\n const canvas = res[0].node\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const dpr = Taro.getSystemInfoSync().pixelRatio\n const canvasWidth = res[0].width\n const canvasHeight = res[0].height\n\n canvasNodeRef.current = canvas\n canvas.width = canvasWidth * dpr\n canvas.height = canvasHeight * dpr\n ctx.scale(dpr, dpr)\n canvas.devicePixelRatio = dpr\n\n setupCanvasPolyfill(canvas, ctx)\n\n chartRef.current?.dispose()\n chartRef.current = null\n\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n\n chartRef.current = echarts.init(canvas, null, {\n width: canvasWidth,\n height: canvasHeight,\n devicePixelRatio: dpr,\n })\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] Init failed:', error)\n }\n })\n }\n\n const timer = setTimeout(() => initChart(), 50)\n\n return () => {\n mounted = false\n clearTimeout(timer)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }, [canvasId, isWeapp])\n\n useEffect(() => {\n if (isReady && chartRef.current) {\n chartRef.current.setOption(option, true)\n }\n }, [option, isReady])\n\n const handleTouch = (e: any, eventType: string) => {\n if (!chartRef.current || !canvasNodeRef.current) return\n\n const touch = e.touches[0] || e.changedTouches[0]\n if (!touch) return\n\n const box = canvasNodeRef.current.getBoundingClientRect()\n // @ts-ignore\n chartRef.current.getZr().handler.dispatch(eventType, {\n zrX: touch.x - box.left,\n zrY: touch.y - box.top,\n preventDefault: () => {},\n stopPropagation: () => {},\n stopImmediatePropagation: () => {},\n })\n }\n\n const onTouchStart = (e: any) => {\n handleTouch(e, 'mousedown')\n handleTouch(e, 'mousemove')\n }\n const onTouchMove = (e: any) => handleTouch(e, 'mousemove')\n const onTouchEnd = (e: any) => {\n handleTouch(e, 'mouseup')\n handleTouch(e, 'click')\n }\n\n // H5 环境\n if (!isWeapp) {\n const h5Style: CSSProperties = {\n ...mergedStyle,\n width: convertRpx(mergedStyle.width, '100%'),\n height: convertRpx(mergedStyle.height, '300px'),\n }\n return <div id={canvasId} className={className || undefined} style={h5Style} />\n }\n\n // 小程序环境\n return (\n <Canvas\n id={canvasId}\n type=\"2d\"\n className={className || undefined}\n style={{ width: mergedStyle.width || '100%', height: mergedStyle.height || '300px' }}\n disableScroll\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n />\n )\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {Canvas}from'@tarojs/components';import
|
|
1
|
+
import {Canvas}from'@tarojs/components';import w from'@tarojs/taro';import {useMemo,useRef,useState,useEffect}from'react';import {setPlatformAPI}from'zrender/lib/core/platform';import {jsx}from'react/jsx-runtime';var b=null;function pt(){if(b)return b;try{b=w.createOffscreenCanvas({type:"2d",width:2,height:2})?.getContext("2d");}catch{}return b}function B(){w.getEnv()!==w.ENV_TYPE.WEB&&setPlatformAPI({createCanvas:()=>{try{return w.createOffscreenCanvas({type:"2d",width:1,height:1})}catch{return {getContext:()=>null}}},measureText:(t,s)=>{let o=pt();if(!o)return {width:0};try{return o.font=s||"12px sans-serif",{width:o.measureText(t)?.width||0}}catch{return {width:0}}},loadImage:(t,s,o)=>{try{let e=w.createImage?.();if(!e)return o();e.onload=()=>s(e),e.onerror=o,e.src=t;}catch{o();}},requestAnimationFrame:t=>setTimeout(t,16),cancelAnimationFrame:t=>clearTimeout(t)});}function I(t,s){t.addEventListener||(t.addEventListener=()=>{}),t.removeEventListener||(t.removeEventListener=()=>{}),t.dispatchEvent||(t.dispatchEvent=()=>{});let o=t.getContext.bind(t);t.getContext=i=>i==="2d"||i==="2d-text"?s:o(i),t.style||(t.style={}),t.setAttribute||(t.setAttribute=()=>{}),t.getAttribute||(t.getAttribute=()=>null),t.removeAttribute||(t.removeAttribute=()=>{}),t.getBoundingClientRect||(t.getBoundingClientRect=()=>({top:0,left:0,width:t.width,height:t.height,right:t.width,bottom:t.height}));let e=t.devicePixelRatio||1,m=(i,h)=>{Object.getOwnPropertyDescriptor(t,i)||Object.defineProperty(t,i,{get:h});};return m("offsetWidth",()=>t.width/e),m("offsetHeight",()=>t.height/e),m("clientWidth",()=>t.width/e),m("clientHeight",()=>t.height/e),t}var L=null,z=false;async function H(){if(L)return L;B();let t=await import('echarts/core');if(!z){let{CanvasRenderer:s}=await import('echarts/renderers'),{PieChart:o,BarChart:e,LineChart:m,ScatterChart:i,RadarChart:h,MapChart:n,TreeChart:E,TreemapChart:P,GraphChart:g,GaugeChart:y,FunnelChart:d,ParallelChart:A,SankeyChart:M,BoxplotChart:O,CandlestickChart:r,EffectScatterChart:C,LinesChart:l,HeatmapChart:u,PictorialBarChart:f,ThemeRiverChart:a,SunburstChart:p,CustomChart:c}=await import('echarts/charts'),{TitleComponent:T,TooltipComponent:S,GridComponent:x,PolarComponent:G,RadarComponent:F,GeoComponent:N,SingleAxisComponent:V,ParallelComponent:$,CalendarComponent:Y,GraphicComponent:_,ToolboxComponent:q,AxisPointerComponent:j,BrushComponent:Q,LegendComponent:X,DataZoomComponent:J,DataZoomInsideComponent:K,DataZoomSliderComponent:U,VisualMapComponent:tt,VisualMapContinuousComponent:et,VisualMapPiecewiseComponent:rt,TimelineComponent:nt,AriaComponent:ot,TransformComponent:it,DatasetComponent:at,MarkPointComponent:st,MarkLineComponent:ut,MarkAreaComponent:ct}=await import('echarts/components');t.use([s,o,e,m,i,h,n,E,P,g,y,d,A,M,O,r,C,l,u,f,a,p,c,T,S,x,G,F,N,V,$,Y,_,q,j,Q,X,J,K,U,tt,et,rt,nt,ot,it,at,st,ut,ct]),z=true;}return L=t,t}function Z(t,s){if(t==null||t==="")return s;if(typeof t=="number")return `${t}px`;let o=String(t),e=o.match(/^(-?\d+(?:\.\d+)?)(rpx)$/i);return e&&e[1]?`${parseFloat(e[1])/2}px`:o}function D({option:t,height:s="300px",width:o="100%",className:e="",style:m}){let i={width:o,height:s,...m},h=useMemo(()=>`chart_${Math.random().toString(36).slice(2,11)}`,[]),n=useRef(null),[E,P]=useState(false),g=useRef(null),y=w.getEnv()!==w.ENV_TYPE.WEB;useEffect(()=>{if(!y){let u=true;(async()=>{try{let p=await H();if(!u)return;let c=document.getElementById(h);if(!c)return;n.current?.dispose(),n.current=p.init(c),n.current.setOption(t),P(!0);}catch(p){console.error("[ECharts] H5 init failed:",p);}})();let a=()=>n.current?.resize();return window.addEventListener("resize",a),()=>{u=false,window.removeEventListener("resize",a),n.current?.dispose(),n.current=null;}}let r=true,C=async(u=0)=>{r&&w.createSelectorQuery().select(`#${h}`).fields({node:true,size:true}).exec(async f=>{if(!r)return;if(!f?.[0]?.node){u<5&&setTimeout(()=>C(u+1),200*(u+1));return}let a=f[0].node,p=a.getContext("2d");if(!p)return;let c=w.getSystemInfoSync().pixelRatio,T=f[0].width,S=f[0].height;g.current=a,a.width=T*c,a.height=S*c,p.scale(c,c),a.devicePixelRatio=c,I(a,p),n.current?.dispose(),n.current=null;try{let x=await H();if(!r)return;n.current=x.init(a,null,{width:T,height:S,devicePixelRatio:c}),n.current.setOption(t),P(!0);}catch(x){console.error("[ECharts] Init failed:",x);}});},l=setTimeout(()=>C(),50);return ()=>{r=false,clearTimeout(l),n.current?.dispose(),n.current=null;}},[h,y]),useEffect(()=>{E&&n.current&&n.current.setOption(t,true);},[t,E]);let d=(r,C)=>{if(!n.current||!g.current)return;let l=r.touches[0]||r.changedTouches[0];if(!l)return;let u=g.current.getBoundingClientRect();n.current.getZr().handler.dispatch(C,{zrX:l.x-u.left,zrY:l.y-u.top,preventDefault:()=>{},stopPropagation:()=>{},stopImmediatePropagation:()=>{}});},A=r=>{d(r,"mousedown"),d(r,"mousemove");},M=r=>d(r,"mousemove"),O=r=>{d(r,"mouseup"),d(r,"click");};if(!y){let r={...i,width:Z(i.width,"100%"),height:Z(i.height,"300px")};return jsx("div",{id:h,className:e||void 0,style:r})}return jsx(Canvas,{id:h,type:"2d",className:e||void 0,style:{width:i.width||"100%",height:i.height||"300px"},disableScroll:true,onTouchStart:A,onTouchMove:M,onTouchEnd:O})}export{D as ECharts,I as setupCanvasPolyfill,B as setupWeappZrenderPlatform};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/weappPlatform.ts","../src/polyfill.ts","../src/ECharts.tsx"],"names":["measureCtx","getMeasureCtx","Taro","setupWeappZrenderPlatform","setPlatformAPI","text","font","ctx","src","onload","onerror","img","cb","id","setupCanvasPolyfill","canvas","originalGetContext","type","dpr","defineSize","prop","value","echartsMod","echartsRegistered","getEcharts","echarts","CanvasRenderer","PieChart","BarChart","LineChart","ScatterChart","RadarChart","MapChart","TreeChart","TreemapChart","GraphChart","GaugeChart","FunnelChart","ParallelChart","SankeyChart","BoxplotChart","CandlestickChart","EffectScatterChart","LinesChart","HeatmapChart","PictorialBarChart","ThemeRiverChart","SunburstChart","CustomChart","TitleComponent","TooltipComponent","GridComponent","PolarComponent","RadarComponent","GeoComponent","SingleAxisComponent","ParallelComponent","CalendarComponent","GraphicComponent","ToolboxComponent","AxisPointerComponent","BrushComponent","LegendComponent","DataZoomComponent","DataZoomInsideComponent","DataZoomSliderComponent","VisualMapComponent","VisualMapContinuousComponent","VisualMapPiecewiseComponent","TimelineComponent","AriaComponent","TransformComponent","DatasetComponent","MarkPointComponent","MarkLineComponent","MarkAreaComponent","ECharts","option","height","width","className","style","mergedStyle","finalWidth","finalHeight","canvasId","useMemo","chartRef","useRef","isReady","setIsReady","useState","canvasNodeRef","useEffect","mounted","container","handleResize","initChart","retryCount","res","canvasHeight","error","timer","handleTouch","e","eventType","touch","box","onTouchStart","onTouchMove","onTouchEnd","jsx","Canvas"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 小程序 ZRender 平台适配\n * 通过 setPlatformAPI 接管 createCanvas/measureText,避免 ECharts 污染 Taro 渲染器\n */\n\n// @ts-ignore\nimport { setPlatformAPI } from 'zrender/lib/core/platform'\nimport Taro from '@tarojs/taro'\n\nlet measureCtx: any = null\n\nfunction getMeasureCtx() {\n if (measureCtx) return measureCtx\n try {\n const offscreen = Taro.createOffscreenCanvas({ type: '2d', width: 2, height: 2 })\n measureCtx = offscreen?.getContext('2d')\n } catch {}\n return measureCtx\n}\n\n/** 设置小程序 zrender 平台 API,必须在 import echarts 之前调用 */\nexport function setupWeappZrenderPlatform() {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) return\n\n setPlatformAPI({\n createCanvas: () => {\n try {\n return Taro.createOffscreenCanvas({ type: '2d', width: 1, height: 1 })\n } catch {\n return { getContext: () => null } as any\n }\n },\n\n measureText: (text: string, font: string) => {\n const ctx = getMeasureCtx()\n if (!ctx) return { width: 0 }\n try {\n ctx.font = font || '12px sans-serif'\n return { width: ctx.measureText(text)?.width || 0 }\n } catch {\n return { width: 0 }\n }\n },\n\n loadImage: (src: string, onload: (img: any) => void, onerror: () => void) => {\n try {\n // @ts-ignore\n const img = (Taro as any).createImage?.()\n if (!img) return onerror()\n img.onload = () => onload(img)\n img.onerror = onerror\n img.src = src\n } catch {\n onerror()\n }\n },\n\n requestAnimationFrame: (cb: FrameRequestCallback) => setTimeout(cb, 16) as unknown as number,\n cancelAnimationFrame: (id: number) => clearTimeout(id),\n } as any)\n}\n","/**\n * Canvas Polyfill - 给小程序 canvas 节点补充 ECharts 需要的 DOM 兼容属性\n */\n\nexport function setupCanvasPolyfill(canvas: any, ctx: any) {\n if (!canvas.addEventListener) canvas.addEventListener = () => {}\n if (!canvas.removeEventListener) canvas.removeEventListener = () => {}\n if (!canvas.dispatchEvent) canvas.dispatchEvent = () => {}\n\n const originalGetContext = canvas.getContext.bind(canvas)\n canvas.getContext = (type: string) => {\n return (type === '2d' || type === '2d-text') ? ctx : originalGetContext(type)\n }\n\n if (!canvas.style) canvas.style = {}\n if (!canvas.setAttribute) canvas.setAttribute = () => {}\n if (!canvas.getAttribute) canvas.getAttribute = () => null\n if (!canvas.removeAttribute) canvas.removeAttribute = () => {}\n\n if (!canvas.getBoundingClientRect) {\n canvas.getBoundingClientRect = () => ({\n top: 0, left: 0,\n width: canvas.width, height: canvas.height,\n right: canvas.width, bottom: canvas.height,\n })\n }\n\n const dpr = canvas.devicePixelRatio || 1\n const defineSize = (prop: string, value: () => number) => {\n if (!Object.getOwnPropertyDescriptor(canvas, prop)) {\n Object.defineProperty(canvas, prop, { get: value })\n }\n }\n defineSize('offsetWidth', () => canvas.width / dpr)\n defineSize('offsetHeight', () => canvas.height / dpr)\n defineSize('clientWidth', () => canvas.width / dpr)\n defineSize('clientHeight', () => canvas.height / dpr)\n\n return canvas\n}\n","/**\n * Taro ECharts 组件\n * 使用 zrender setPlatformAPI 接管 canvas 创建和文本测量,避免影响 Taro 渲染器\n */\n\nimport { Canvas } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useEffect, useRef, useState, useMemo } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { EChartsOption } from 'echarts'\nimport type { EChartsType } from 'echarts/core'\nimport { setupWeappZrenderPlatform } from './weappPlatform'\nimport { setupCanvasPolyfill } from './polyfill'\n\nlet echartsMod: typeof import('echarts/core') | null = null\nlet echartsRegistered = false\n\n/** 动态加载 echarts,确保 setPlatformAPI 在 import 之前执行 */\nasync function getEcharts() {\n if (echartsMod) return echartsMod\n\n setupWeappZrenderPlatform()\n\n const echarts = await import('echarts/core')\n \n if (!echartsRegistered) {\n const { CanvasRenderer } = await import('echarts/renderers')\n const {\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n } = await import('echarts/charts')\n const {\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n } = await import('echarts/components')\n\n echarts.use([\n CanvasRenderer,\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n ])\n\n echartsRegistered = true\n }\n\n echartsMod = echarts\n return echarts\n}\n\nexport interface EChartsProps {\n /** ECharts 配置项 */\n option: EChartsOption\n /** 图表高度 */\n height?: string\n /** 图表宽度 */\n width?: string\n /** CSS 类名 */\n className?: string\n /** 内联样式,style 中的 width/height 会覆盖单独属性 */\n style?: CSSProperties\n}\n\nexport default function ECharts({ \n option, \n height = '300px', \n width = '100%',\n className = '',\n style,\n}: EChartsProps) {\n const mergedStyle: CSSProperties = { width, height, ...style }\n const finalWidth = mergedStyle.width || '100%'\n const finalHeight = mergedStyle.height || '300px'\n \n const canvasId = useMemo(() => `chart_${Math.random().toString(36).slice(2, 11)}`, [])\n const chartRef = useRef<EChartsType | null>(null)\n const [isReady, setIsReady] = useState(false)\n const canvasNodeRef = useRef<any>(null)\n\n useEffect(() => {\n const env = Taro.getEnv()\n\n // H5 环境\n if (env === Taro.ENV_TYPE.WEB) {\n let mounted = true\n \n getEcharts().then((echarts) => {\n if (!mounted) return\n const container = document.getElementById(canvasId)\n if (!container) return\n\n if (!chartRef.current) {\n chartRef.current = echarts.init(container)\n }\n chartRef.current.setOption(option)\n setIsReady(true)\n })\n\n const handleResize = () => chartRef.current?.resize()\n window.addEventListener('resize', handleResize)\n\n return () => {\n mounted = false\n window.removeEventListener('resize', handleResize)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }\n\n // 小程序环境\n let mounted = true\n\n const initChart = async (retryCount = 0) => {\n if (!mounted) return\n\n Taro.createSelectorQuery()\n .select(`#${canvasId}`)\n .fields({ node: true, size: true })\n .exec(async (res) => {\n if (!mounted) return\n\n if (!res?.[0]?.node) {\n if (retryCount < 5) {\n setTimeout(() => initChart(retryCount + 1), 200 * (retryCount + 1))\n }\n return\n }\n\n const canvas = res[0].node\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const dpr = Taro.getSystemInfoSync().pixelRatio\n const width = res[0].width\n const canvasHeight = res[0].height\n\n canvasNodeRef.current = canvas\n canvas.width = width * dpr\n canvas.height = canvasHeight * dpr\n ctx.scale(dpr, dpr)\n canvas.devicePixelRatio = dpr\n\n setupCanvasPolyfill(canvas, ctx)\n\n chartRef.current?.dispose()\n chartRef.current = null\n\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n\n chartRef.current = echarts.init(canvas, null, {\n width,\n height: canvasHeight,\n devicePixelRatio: dpr,\n })\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] Init failed:', error)\n }\n })\n }\n\n const timer = setTimeout(() => initChart(), 100)\n\n return () => {\n mounted = false\n clearTimeout(timer)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }, [canvasId])\n\n useEffect(() => {\n if (isReady && chartRef.current) {\n chartRef.current.setOption(option, true)\n }\n }, [option, isReady])\n\n const handleTouch = (e: any, eventType: string) => {\n if (!chartRef.current || !canvasNodeRef.current) return\n\n const touch = e.touches[0] || e.changedTouches[0]\n if (!touch) return\n\n const box = canvasNodeRef.current.getBoundingClientRect()\n // @ts-ignore\n chartRef.current.getZr().handler.dispatch(eventType, {\n zrX: touch.x - box.left,\n zrY: touch.y - box.top,\n preventDefault: () => {},\n stopPropagation: () => {},\n stopImmediatePropagation: () => {},\n })\n }\n\n const onTouchStart = (e: any) => {\n handleTouch(e, 'mousedown')\n handleTouch(e, 'mousemove')\n }\n const onTouchMove = (e: any) => handleTouch(e, 'mousemove')\n const onTouchEnd = (e: any) => {\n handleTouch(e, 'mouseup')\n handleTouch(e, 'click')\n }\n\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) {\n return <div id={canvasId} className={className || undefined} style={mergedStyle} />\n }\n\n return (\n <Canvas\n id={canvasId}\n type=\"2d\"\n className={className || undefined}\n style={{ width: finalWidth, height: finalHeight }}\n disableScroll\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n />\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/weappPlatform.ts","../src/polyfill.ts","../src/ECharts.tsx"],"names":["measureCtx","getMeasureCtx","Taro","setupWeappZrenderPlatform","setPlatformAPI","text","font","ctx","src","onload","onerror","img","cb","id","setupCanvasPolyfill","canvas","originalGetContext","type","dpr","defineSize","prop","value","echartsMod","echartsRegistered","getEcharts","echarts","CanvasRenderer","PieChart","BarChart","LineChart","ScatterChart","RadarChart","MapChart","TreeChart","TreemapChart","GraphChart","GaugeChart","FunnelChart","ParallelChart","SankeyChart","BoxplotChart","CandlestickChart","EffectScatterChart","LinesChart","HeatmapChart","PictorialBarChart","ThemeRiverChart","SunburstChart","CustomChart","TitleComponent","TooltipComponent","GridComponent","PolarComponent","RadarComponent","GeoComponent","SingleAxisComponent","ParallelComponent","CalendarComponent","GraphicComponent","ToolboxComponent","AxisPointerComponent","BrushComponent","LegendComponent","DataZoomComponent","DataZoomInsideComponent","DataZoomSliderComponent","VisualMapComponent","VisualMapContinuousComponent","VisualMapPiecewiseComponent","TimelineComponent","AriaComponent","TransformComponent","DatasetComponent","MarkPointComponent","MarkLineComponent","MarkAreaComponent","convertRpx","defaultValue","str","match","ECharts","option","height","width","className","style","mergedStyle","canvasId","useMemo","chartRef","useRef","isReady","setIsReady","useState","canvasNodeRef","isWeapp","useEffect","mounted","container","error","handleResize","initChart","retryCount","res","canvasWidth","canvasHeight","timer","handleTouch","e","eventType","touch","box","onTouchStart","onTouchMove","onTouchEnd","h5Style","jsx","Canvas"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 小程序 ZRender 平台适配\n * 通过 setPlatformAPI 接管 createCanvas/measureText,避免 ECharts 污染 Taro 渲染器\n */\n\n// @ts-ignore\nimport { setPlatformAPI } from 'zrender/lib/core/platform'\nimport Taro from '@tarojs/taro'\n\nlet measureCtx: any = null\n\nfunction getMeasureCtx() {\n if (measureCtx) return measureCtx\n try {\n const offscreen = Taro.createOffscreenCanvas({ type: '2d', width: 2, height: 2 })\n measureCtx = offscreen?.getContext('2d')\n } catch {}\n return measureCtx\n}\n\n/** 设置小程序 zrender 平台 API,必须在 import echarts 之前调用 */\nexport function setupWeappZrenderPlatform() {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) return\n\n setPlatformAPI({\n createCanvas: () => {\n try {\n return Taro.createOffscreenCanvas({ type: '2d', width: 1, height: 1 })\n } catch {\n return { getContext: () => null } as any\n }\n },\n\n measureText: (text: string, font: string) => {\n const ctx = getMeasureCtx()\n if (!ctx) return { width: 0 }\n try {\n ctx.font = font || '12px sans-serif'\n return { width: ctx.measureText(text)?.width || 0 }\n } catch {\n return { width: 0 }\n }\n },\n\n loadImage: (src: string, onload: (img: any) => void, onerror: () => void) => {\n try {\n // @ts-ignore\n const img = (Taro as any).createImage?.()\n if (!img) return onerror()\n img.onload = () => onload(img)\n img.onerror = onerror\n img.src = src\n } catch {\n onerror()\n }\n },\n\n requestAnimationFrame: (cb: FrameRequestCallback) => setTimeout(cb, 16) as unknown as number,\n cancelAnimationFrame: (id: number) => clearTimeout(id),\n } as any)\n}\n","/**\n * Canvas Polyfill - 给小程序 canvas 节点补充 ECharts 需要的 DOM 兼容属性\n */\n\nexport function setupCanvasPolyfill(canvas: any, ctx: any) {\n if (!canvas.addEventListener) canvas.addEventListener = () => {}\n if (!canvas.removeEventListener) canvas.removeEventListener = () => {}\n if (!canvas.dispatchEvent) canvas.dispatchEvent = () => {}\n\n const originalGetContext = canvas.getContext.bind(canvas)\n canvas.getContext = (type: string) => {\n return (type === '2d' || type === '2d-text') ? ctx : originalGetContext(type)\n }\n\n if (!canvas.style) canvas.style = {}\n if (!canvas.setAttribute) canvas.setAttribute = () => {}\n if (!canvas.getAttribute) canvas.getAttribute = () => null\n if (!canvas.removeAttribute) canvas.removeAttribute = () => {}\n\n if (!canvas.getBoundingClientRect) {\n canvas.getBoundingClientRect = () => ({\n top: 0, left: 0,\n width: canvas.width, height: canvas.height,\n right: canvas.width, bottom: canvas.height,\n })\n }\n\n const dpr = canvas.devicePixelRatio || 1\n const defineSize = (prop: string, value: () => number) => {\n if (!Object.getOwnPropertyDescriptor(canvas, prop)) {\n Object.defineProperty(canvas, prop, { get: value })\n }\n }\n defineSize('offsetWidth', () => canvas.width / dpr)\n defineSize('offsetHeight', () => canvas.height / dpr)\n defineSize('clientWidth', () => canvas.width / dpr)\n defineSize('clientHeight', () => canvas.height / dpr)\n\n return canvas\n}\n","/**\n * Taro ECharts 组件\n * 小程序使用 zrender setPlatformAPI,H5 使用原生能力\n */\n\nimport { Canvas } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useEffect, useRef, useState, useMemo } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { EChartsOption } from 'echarts'\nimport type { EChartsType } from 'echarts/core'\nimport { setupWeappZrenderPlatform } from './weappPlatform'\nimport { setupCanvasPolyfill } from './polyfill'\n\nlet echartsMod: typeof import('echarts/core') | null = null\nlet echartsRegistered = false\n\n/** 动态加载 echarts */\nasync function getEcharts() {\n if (echartsMod) return echartsMod\n\n // 小程序环境设置平台 API(内部会判断环境)\n setupWeappZrenderPlatform()\n\n const echarts = await import('echarts/core')\n \n if (!echartsRegistered) {\n const { CanvasRenderer } = await import('echarts/renderers')\n const {\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n } = await import('echarts/charts')\n const {\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n } = await import('echarts/components')\n\n echarts.use([\n CanvasRenderer,\n PieChart, BarChart, LineChart, ScatterChart, RadarChart,\n MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart,\n FunnelChart, ParallelChart, SankeyChart, BoxplotChart,\n CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart,\n PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart,\n TitleComponent, TooltipComponent, GridComponent, PolarComponent,\n RadarComponent, GeoComponent, SingleAxisComponent, ParallelComponent,\n CalendarComponent, GraphicComponent, ToolboxComponent, AxisPointerComponent,\n BrushComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent,\n DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent,\n VisualMapPiecewiseComponent, TimelineComponent, AriaComponent,\n TransformComponent, DatasetComponent, MarkPointComponent,\n MarkLineComponent, MarkAreaComponent,\n ])\n\n echartsRegistered = true\n }\n\n echartsMod = echarts\n return echarts\n}\n\n/** 将 rpx 转换为 px(H5 inline style 需要,PostCSS 只处理 CSS 文件) */\nfunction convertRpx(value: string | number | undefined, defaultValue: string): string {\n if (value === undefined || value === null || value === '') return defaultValue\n if (typeof value === 'number') return `${value}px`\n \n const str = String(value)\n const match = str.match(/^(-?\\d+(?:\\.\\d+)?)(rpx)$/i)\n if (match && match[1]) {\n return `${parseFloat(match[1]) / 2}px`\n }\n return str\n}\n\nexport interface EChartsProps {\n /** ECharts 配置项 */\n option: EChartsOption\n /** 图表高度 */\n height?: string\n /** 图表宽度 */\n width?: string\n /** CSS 类名 */\n className?: string\n /** 内联样式,style 中的 width/height 会覆盖单独属性 */\n style?: CSSProperties\n}\n\nexport default function ECharts({ \n option, \n height = '300px', \n width = '100%',\n className = '',\n style,\n}: EChartsProps) {\n const mergedStyle: CSSProperties = { width, height, ...style }\n \n const canvasId = useMemo(() => `chart_${Math.random().toString(36).slice(2, 11)}`, [])\n const chartRef = useRef<EChartsType | null>(null)\n const [isReady, setIsReady] = useState(false)\n const canvasNodeRef = useRef<any>(null)\n\n const isWeapp = Taro.getEnv() !== Taro.ENV_TYPE.WEB\n\n useEffect(() => {\n // H5 环境\n if (!isWeapp) {\n let mounted = true\n \n const initH5Chart = async () => {\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n \n const container = document.getElementById(canvasId)\n if (!container) return\n\n chartRef.current?.dispose()\n chartRef.current = echarts.init(container)\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] H5 init failed:', error)\n }\n }\n\n initH5Chart()\n\n const handleResize = () => chartRef.current?.resize()\n window.addEventListener('resize', handleResize)\n\n return () => {\n mounted = false\n window.removeEventListener('resize', handleResize)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }\n\n // 小程序环境\n let mounted = true\n\n const initChart = async (retryCount = 0) => {\n if (!mounted) return\n\n Taro.createSelectorQuery()\n .select(`#${canvasId}`)\n .fields({ node: true, size: true })\n .exec(async (res) => {\n if (!mounted) return\n\n if (!res?.[0]?.node) {\n if (retryCount < 5) {\n setTimeout(() => initChart(retryCount + 1), 200 * (retryCount + 1))\n }\n return\n }\n\n const canvas = res[0].node\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const dpr = Taro.getSystemInfoSync().pixelRatio\n const canvasWidth = res[0].width\n const canvasHeight = res[0].height\n\n canvasNodeRef.current = canvas\n canvas.width = canvasWidth * dpr\n canvas.height = canvasHeight * dpr\n ctx.scale(dpr, dpr)\n canvas.devicePixelRatio = dpr\n\n setupCanvasPolyfill(canvas, ctx)\n\n chartRef.current?.dispose()\n chartRef.current = null\n\n try {\n const echarts = await getEcharts()\n if (!mounted) return\n\n chartRef.current = echarts.init(canvas, null, {\n width: canvasWidth,\n height: canvasHeight,\n devicePixelRatio: dpr,\n })\n chartRef.current.setOption(option)\n setIsReady(true)\n } catch (error) {\n console.error('[ECharts] Init failed:', error)\n }\n })\n }\n\n const timer = setTimeout(() => initChart(), 50)\n\n return () => {\n mounted = false\n clearTimeout(timer)\n chartRef.current?.dispose()\n chartRef.current = null\n }\n }, [canvasId, isWeapp])\n\n useEffect(() => {\n if (isReady && chartRef.current) {\n chartRef.current.setOption(option, true)\n }\n }, [option, isReady])\n\n const handleTouch = (e: any, eventType: string) => {\n if (!chartRef.current || !canvasNodeRef.current) return\n\n const touch = e.touches[0] || e.changedTouches[0]\n if (!touch) return\n\n const box = canvasNodeRef.current.getBoundingClientRect()\n // @ts-ignore\n chartRef.current.getZr().handler.dispatch(eventType, {\n zrX: touch.x - box.left,\n zrY: touch.y - box.top,\n preventDefault: () => {},\n stopPropagation: () => {},\n stopImmediatePropagation: () => {},\n })\n }\n\n const onTouchStart = (e: any) => {\n handleTouch(e, 'mousedown')\n handleTouch(e, 'mousemove')\n }\n const onTouchMove = (e: any) => handleTouch(e, 'mousemove')\n const onTouchEnd = (e: any) => {\n handleTouch(e, 'mouseup')\n handleTouch(e, 'click')\n }\n\n // H5 环境\n if (!isWeapp) {\n const h5Style: CSSProperties = {\n ...mergedStyle,\n width: convertRpx(mergedStyle.width, '100%'),\n height: convertRpx(mergedStyle.height, '300px'),\n }\n return <div id={canvasId} className={className || undefined} style={h5Style} />\n }\n\n // 小程序环境\n return (\n <Canvas\n id={canvasId}\n type=\"2d\"\n className={className || undefined}\n style={{ width: mergedStyle.width || '100%', height: mergedStyle.height || '300px' }}\n disableScroll\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n />\n )\n}\n"]}
|
package/package.json
CHANGED