taro-react-uilib 1.4.5 → 1.4.7-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as n,useImperativeHandle as r,useEffect as a}from"react";import s from"classnames";import{View as c}from"@tarojs/components";import i from"../Button/index.js";import l from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,p=o.content,u=o.className,h=void 0===u?"":u,v=o.visible,g=o.showCancel,x=void 0===g||g,E=o.confirmText,N=void 0===E?"确定":E,C=o.cancelText,b=void 0===C?"取消":C,j=o.footer,T=void 0!==j&&j,k=o.onConfirm,w=o.onCancel,y=o.onClose,z=o.portrait,S=void 0!==z&&z,_=o.tranparent,B=void 0!==_&&_,M=e(n(!1),2),q=M[0],A=M[1];r(f,(function(){return{close:D,open:F}}));var D=function(){y&&y(),A(!1)},F=function(){A(!0)};a((function(){v||y&&y(),A(v)}),[v]);var G=s("xh-dialog-ref",h,{show:q}),H=t.createElement(c,{className:s("xh-dialog-ref-content-footer-buttons",{portrait:S})},x&&t.createElement(i,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){w&&w(),D()},className:"xh-dialog-ref-content-footer-buttons-cancel"},b),t.createElement(i,{type:"primary",shape:"rectangle",size:"full",ghost:!0,className:"xh-dialog-ref-content-footer-buttons--confirm",onClick:function(){k&&k()},preventTime:0},N));return t.createElement(c,{className:G},t.createElement(l,null),t.createElement(m,{in:q,timeout:200,classNames:"scale"},t.createElement(c,{className:s("xh-dialog-ref-content",{tranparent:B})},d&&t.createElement(c,{className:"xh-dialog-ref-content-header"},d),t.createElement(c,{className:"xh-dialog-ref-content-content"},p),T||t.createElement(c,{className:"xh-dialog-ref-content-footer"},H))))}));export{f as default};
1
+ import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as n,useImperativeHandle as a,useEffect as r}from"react";import c from"classnames";import{View as s}from"@tarojs/components";import i from"../Button/index.js";import l from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,p=o.content,u=o.className,h=void 0===u?"":u,v=o.visible,g=o.showCancel,x=void 0===g||g,E=o.confirmText,N=void 0===E?"确定":E,C=o.cancelText,b=void 0===C?"取消":C,j=o.footer,T=void 0!==j&&j,y=o.onConfirm,k=o.onCancel,w=o.onClose,z=o.portrait,S=void 0!==z&&z,_=o.tranparent,B=void 0!==_&&_,M=o.fancy,q=void 0!==M&&M,A=e(n(!1),2),D=A[0],F=A[1];a(f,(function(){return{close:G,open:H}}));var G=function(){w&&w(),F(!1)},H=function(){F(!0)};r((function(){v||w&&w(),F(v)}),[v]);var I=c("xh-dialog-ref",h,{show:D}),J=t.createElement(s,{className:c("xh-dialog-ref-content-footer-buttons",{portrait:S,fancy:q})},x&&t.createElement(i,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){k&&k(),G()},className:"xh-dialog-ref-content-footer-buttons-cancel"},b),t.createElement(i,{type:"primary",shape:"rectangle",size:"full",ghost:!q,className:"xh-dialog-ref-content-footer-buttons-confirm",onClick:function(){y&&y()},preventTime:0},N));return t.createElement(s,{className:I},t.createElement(l,null),t.createElement(m,{in:D,timeout:200,classNames:"scale"},t.createElement(s,{className:c("xh-dialog-ref-content",{tranparent:B})},d&&t.createElement(s,{className:"xh-dialog-ref-content-header"},d),t.createElement(s,{className:"xh-dialog-ref-content-content"},p),T||t.createElement(s,{className:"xh-dialog-ref-content-footer"},J))))}));export{f as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n portrait?: boolean;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n portrait = false,\n tranparent = false,\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View\n className={classNames(\"xh-dialog-ref-content-footer-buttons\", {\n portrait,\n })}\n >\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost\n className=\"xh-dialog-ref-content-footer-buttons--confirm\"\n onClick={handleConfirm}\n preventTime={0}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View className={dialogcls}>\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","portrait","_g","tranparent","_h","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","Mask","CSSTransition","in","timeout"],"mappings":"yWAkCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAaEF,EAAKE,OAZPC,EAYEH,EAZKG,QACPC,EAWEJ,EAAKK,UAXPA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EAUEN,UATFO,EASEP,EATeQ,WAAjBA,OAAa,IAAAD,KACbE,EAQET,EARgBU,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAOEX,EAPeY,WAAjBA,OAAa,IAAAD,EAAA,OACbE,EAMEb,EANYc,OAAdA,OAAS,IAAAD,KACTE,EAKEf,EAAKe,UAJPC,EAIEhB,EAJMgB,SACRC,EAGEjB,UAFFkB,EAEElB,EAFcmB,SAAhBA,OAAW,IAAAD,KACXE,EACEpB,EADgBqB,WAAlBA,OAAa,IAAAD,KAETE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoB1B,GAAS,WAAM,MAAC,CAClC2B,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZX,GAAWA,IACXS,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACHxB,GACHW,GAAWA,IAEbS,EAAepB,EACjB,GAAG,CAACA,IAEJ,IAAMyB,EAAYC,EAAW,gBAAiB3B,EAAW,CACvD4B,KAAMR,IAGFS,EACJC,EAACC,cAAAC,EACC,CAAAhC,UAAW2B,EAAW,uCAAwC,CAC5Db,SAAQA,KAGTX,GACC2B,EAACC,cAAAE,EACC,CAAAC,OACA,EAAAC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QA5Ba,WACnB3B,GAAYA,IACZY,GACF,EA0BQvB,UAAU,+CAETO,GAGLuB,EAAAC,cAACE,EAAM,CACLM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAK,EACLlC,UAAU,gDACVsC,QA5CgB,WACpB5B,GAAaA,GAEf,EA0CM2B,YAAa,GAEZhC,IAqBP,OAfEyB,EAAAC,cAACC,EAAK,CAAAhC,UAAW0B,GACfI,EAAAC,cAACS,EAAO,MACRV,EAAAC,cAACU,EAAa,CAACC,GAAItB,EAAauB,QAAS,IAAKhB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAAChC,UAAW2B,EAAW,wBAAyB,CAAEX,WAAUA,KAC9DnB,GACCiC,EAAAC,cAACC,EAAI,CAAChC,UAAU,gCAAgCH,GAElDiC,EAAAC,cAACC,EAAK,CAAAhC,UAAU,iCAAiCF,GAChDW,GACCqB,EAAAC,cAACC,EAAI,CAAChC,UAAU,gCAAgC6B,KAO5D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n portrait?: boolean;\n fancy?: boolean;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n portrait = false,\n tranparent = false,\n fancy = false,\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View\n className={classNames(\"xh-dialog-ref-content-footer-buttons\", {\n portrait,\n fancy,\n })}\n >\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost={!fancy}\n className=\"xh-dialog-ref-content-footer-buttons-confirm\"\n onClick={handleConfirm}\n preventTime={0}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View className={dialogcls}>\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","portrait","_g","tranparent","_h","fancy","_j","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","Mask","CSSTransition","in","timeout"],"mappings":"yWAmCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAcEF,EAAKE,OAbPC,EAaEH,EAAKG,QAZPC,EAYEJ,EAZYK,UAAdA,OAAY,IAAAD,EAAA,KACZE,EAWEN,EAXKM,QACPC,EAUEP,EAAKQ,WAVPA,OAAU,IAAAD,GAAOA,EACjBE,EASET,EATgBU,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAQEX,EAReY,WAAjBA,OAAU,IAAAD,EAAG,KAAIA,EACjBE,EAOEb,SAPFc,cAAcD,EACdE,EAMEf,YALFgB,EAKEhB,EAAKgB,SAJPC,EAIEjB,EAAKiB,QAHPC,EAGElB,EAHcmB,SAAhBA,OAAW,IAAAD,KACXE,EAEEpB,EAAKqB,WAFPA,cAAkBD,EAClBE,EACEtB,EAAKuB,MADPA,OAAK,IAAAD,GAAQA,EAETE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoB5B,GAAS,WAAM,MAAC,CAClC6B,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZb,GAAWA,IACXW,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACH1B,GACHW,GAAWA,IAEbW,EAAetB,EACjB,GAAG,CAACA,IAEJ,IAAM2B,EAAYC,EAAW,gBAAiB7B,EAAW,CACvD8B,KAAMR,IAGFS,EACJC,EAACC,cAAAC,EACC,CAAAlC,UAAW6B,EAAW,uCAAwC,CAC5Df,SAAQA,EACRI,MAAKA,KAGNf,GACC6B,EAACC,cAAAE,EACC,CAAAC,OACA,EAAAC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QA7Ba,WACnB7B,GAAYA,IACZc,GACF,EA2BQzB,UAAU,+CAETO,GAGLyB,EAAAC,cAACE,EAAM,CACLM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAQlB,EACRlB,UAAU,+CACVwC,QA7CgB,WACpB9B,GAAaA,GAEf,EA2CM6B,YAAa,GAEZlC,IAqBP,OAfE2B,EAAAC,cAACC,EAAK,CAAAlC,UAAW4B,GACfI,EAAAC,cAACS,EAAO,MACRV,EAAAC,cAACU,EAAa,CAACC,GAAItB,EAAauB,QAAS,IAAKhB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAAClC,UAAW6B,EAAW,wBAAyB,CAAEb,WAAUA,KAC9DnB,GACCmC,EAAAC,cAACC,EAAI,CAAClC,UAAU,gCAAgCH,GAElDmC,EAAAC,cAACC,EAAK,CAAAlC,UAAU,iCAAiCF,GAChDW,GACCuB,EAAAC,cAACC,EAAI,CAAClC,UAAU,gCAAgC+B,KAO5D"}
@@ -1,2 +1,2 @@
1
- import{__rest as t,__read as n,__assign as e,__awaiter as i,__generator as o}from"../node_modules/tslib/tslib.es6.js";import r,{useReady as c}from"@tarojs/taro";import{Canvas as u,View as a}from"@tarojs/components";import s,{memo as d,forwardRef as l,useRef as v,useState as h,useMemo as f,useEffect as m,useImperativeHandle as p}from"react";import{uniqueId as g,tripleDefer as E,isEqual as w,pick as y,compareVersion as P,isFunction as x,isString as R}from"../src/utils/index.js";import T from"../src/hooks/usePrevious.js";import j from"../src/hooks/useUnMount.js";import S from"../src/hooks/useUpdateEffect.js";import I from"./weapp/wx-canvas.js";import{touchEnd as N,touchMove as W,touchStart as _}from"./weapp/wx-touch.js";var b=d(l((function(d,l){var b=d.echarts,k=d.isPage,B=void 0===k||k,V=d.canvasId,C=t(d,["echarts","isPage","canvasId"]),L=v(),O=v(),Y=n(h(!0),2),z=Y[0],D=Y[1],M=T(C),U=f((function(){return V||g("canvas_")}),[V]),A=f((function(){return["disableScroll","disableScroll","onTouchCancel","onLongTap","onError","nativeProps","className","key","hidden","animation"]}),[]),H=f((function(){return e({width:"100%",height:"300px"},C.style)}),[C.style]);c((function(){r.getEnv()===r.ENV_TYPE.WEAPP&&B&&r.nextTick((function(){J()}))})),m((function(){r.getEnv()!==r.ENV_TYPE.WEB&&B||E((function(){r.nextTick((function(){J()}))}))}),[]),j((function(){G()})),S((function(){if(!w(null==M?void 0:M.theme,C.theme)||!w(null==M?void 0:M.opts,C.opts)||!w(null==M?void 0:M.onEvents,C.onEvents))return G(),void J();var t=["option","notMerge","lazyUpdate","showLoading","loadingOption"];w(y(C,t),y(M,t))||q(),w(null==M?void 0:M.style,C.style)&&w(null==M?void 0:M.className,C.className)||K(L.current)}),[C]);var K=function(t){var n=b.getInstanceByDom(t);if(!z)try{n.resize({width:"auto",height:"auto"})}catch(t){}D(!1)},Q=function(t){var n=t.width,c=t.height,u=t.devicePixelRatio;return i(void 0,void 0,void 0,(function(){var t,i;return o(this,(function(o){return t=C.theme,i=C.opts,[2,new Promise((function(o,a){L.current?(O.current=b.init(L.current,t,e({width:n,height:c,devicePixelRatio:u},i)),r.getEnv()===r.ENV_TYPE.WEB?b.getInstanceByDom(L.current).on("finished",(function(){b.dispose(L.current);var r=e({width:n,height:c,devicePixelRatio:u},i);O.current=b.init(L.current,t,r),o(O.current)})):o(O.current)):a()}))]}))}))},q=function(){var t=C.option,n=C.notMerge,e=void 0===n||n,i=C.lazyUpdate,o=void 0!==i&&i,r=C.showLoading,c=C.loadingOption,u=void 0===c?null:c,a=b.getInstanceByDom(L.current);return a&&(a.setOption(t,e,o),r?a.showLoading(u):a.hideLoading()),a},F=function(t){var n=t.width,e=t.height,r=t.devicePixelRatio;return i(void 0,void 0,void 0,(function(){var t,i,c;return o(this,(function(o){switch(o.label){case 0:return t=C.onEvents,i=C.onChartReady,[4,Q({width:n,height:e,devicePixelRatio:r})];case 1:return o.sent(),function(t,n){function e(n,e){R(n)&&x(e)&&t.on(n,(function(n){e(n,t)}))}for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&e(i,n[i])}(c=q(),t||{}),x(i)&&(null==i||i(c)),L.current&&K(L.current),[2]}}))}))},G=function(){O.current&&(null==b||b.dispose(O.current))},J=function(){var t,e,i,o;if(r.getEnv()===r.ENV_TYPE.WEB&&L.current){var c=(null===(t=C.style)||void 0===t?void 0:t.width)||(null===(e=L.current)||void 0===e?void 0:e.clientWidth)||window.innerWidth,u=(null===(i=C.style)||void 0===i?void 0:i.height)||(null===(o=L.current)||void 0===o?void 0:o.clientHeight)||300;F({width:c,height:u,devicePixelRatio:window.devicePixelRatio})}else{var a=r.getSystemInfoSync().SDKVersion||"";P(a,"2.9.0")>=0&&r.createSelectorQuery().select("#".concat(U)).fields({node:!0,size:!0}).exec((function(t){var e=n(t,1)[0];if(e){var i=e||{},o=i.node,c=i.width,u=i.height,a=o,s=r.getSystemInfoSync().pixelRatio,d=a.getContext("2d"),l=new I(d,!0,a);null==b||b.setCanvasCreator((function(){return l})),L.current=l,F({width:c,height:u,devicePixelRatio:s})}}))}};return p(l,(function(){return{chartRef:O,canvasRef:L}})),f((function(){return r.getEnv()===r.ENV_TYPE.WEAPP?s.createElement(u,e({ref:L,canvasId:U,id:U,style:H,type:"2d",onTouchEnd:function(t){return N({chart:O.current,event:t})},onTouchMove:function(t){return W({chart:O.current,event:t})},onTouchStart:function(t){return _({chart:O.current,event:t})}},y(C,A))):s.createElement(a,{ref:L,id:U,style:H})}),[C,A,U])})));export{b as default};
1
+ import{__rest as t,__read as e,__assign as n,__awaiter as i,__generator as o}from"../node_modules/tslib/tslib.es6.js";import r,{useReady as c}from"@tarojs/taro";import{Canvas as u,View as a}from"@tarojs/components";import s,{memo as d,forwardRef as l,useRef as v,useState as h,useMemo as f,useEffect as m,useImperativeHandle as p}from"react";import{uniqueId as g,tripleDefer as E,isEqual as w,pick as y,compareVersion as P,isFunction as x,isString as R}from"../src/utils/index.js";import T from"../src/hooks/usePrevious.js";import j from"../src/hooks/useUnMount.js";import N from"../src/hooks/useUpdateEffect.js";import S from"./weapp/wx-canvas.js";import{touchEnd as I,touchMove as W,touchStart as _}from"./weapp/wx-touch.js";var b=d(l((function(d,l){var b=d.echarts,k=d.isPage,B=void 0===k||k,V=d.canvasId,C=t(d,["echarts","isPage","canvasId"]),L=v(),O=v(),Y=e(h(!0),2),z=Y[0],D=Y[1],M=T(C),U=f((function(){return V||g("canvas_")}),[V]),A=f((function(){return["disableScroll","disableScroll","onTouchCancel","onLongTap","onError","nativeProps","className","key","hidden","animation"]}),[]),H=f((function(){return n({width:"100%",height:"300px"},C.style)}),[C.style]);c((function(){r.getEnv()===r.ENV_TYPE.WEAPP&&B&&r.nextTick((function(){J()}))})),m((function(){r.getEnv()!==r.ENV_TYPE.WEB&&B||E((function(){r.nextTick((function(){J()}))}))}),[]),j((function(){G()})),N((function(){if(!w(null==M?void 0:M.theme,C.theme)||!w(null==M?void 0:M.opts,C.opts)||!w(null==M?void 0:M.onEvents,C.onEvents))return G(),void J();var t=["option","notMerge","lazyUpdate","showLoading","loadingOption"];w(y(C,t),y(M,t))||q(),w(null==M?void 0:M.style,C.style)&&w(null==M?void 0:M.className,C.className)||K(L.current)}),[C]);var K=function(t){var e=b.getInstanceByDom(t);if(!z)try{e.resize({width:"auto",height:"auto"})}catch(t){}D(!1)},Q=function(t){var e=t.width,c=t.height,u=t.devicePixelRatio;return i(void 0,void 0,void 0,(function(){var t,i;return o(this,(function(o){return t=C.theme,i=C.opts,[2,new Promise((function(o,a){L.current?(O.current=b.init(L.current,t,n({width:e,height:c,devicePixelRatio:u},i)),r.getEnv()===r.ENV_TYPE.WEB?b.getInstanceByDom(L.current).on("finished",(function(){b.dispose(L.current);var r=n({width:e,height:c,devicePixelRatio:u},i);O.current=b.init(L.current,t,r),o(O.current)})):o(O.current)):a()}))]}))}))},q=function(){var t=C.option,e=C.notMerge,n=void 0===e||e,i=C.lazyUpdate,o=void 0!==i&&i,r=C.showLoading,c=C.loadingOption,u=void 0===c?null:c,a=b.getInstanceByDom(L.current);return a&&(a.setOption(t,n,o),r?a.showLoading(u):a.hideLoading()),a},F=function(t){var e=t.width,n=t.height,r=t.devicePixelRatio;return i(void 0,void 0,void 0,(function(){var t,i,c;return o(this,(function(o){switch(o.label){case 0:return t=C.onEvents,i=C.onChartReady,[4,Q({width:e,height:n,devicePixelRatio:r})];case 1:return o.sent(),function(t,e){function n(e,n){R(e)&&x(n)&&t.on(e,(function(e){n(e,t)}))}for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&n(i,e[i])}(c=q(),t||{}),x(i)&&(null==i||i(c)),L.current&&K(L.current),[2]}}))}))},G=function(){O.current&&(null==b||b.dispose(O.current))},J=function(){var t,n,i,o;if(r.getEnv()===r.ENV_TYPE.WEB&&L.current){var c=(null===(t=C.style)||void 0===t?void 0:t.width)||(null===(n=L.current)||void 0===n?void 0:n.clientWidth)||window.innerWidth,u=(null===(i=C.style)||void 0===i?void 0:i.height)||(null===(o=L.current)||void 0===o?void 0:o.clientHeight)||300;F({width:c,height:u,devicePixelRatio:window.devicePixelRatio})}else{var a=r.getSystemInfoSync().SDKVersion||"";P(a,"2.9.0")>=0&&r.createSelectorQuery().select("#".concat(U)).fields({node:!0,size:!0}).exec((function(t){var n=e(t,1)[0];if(n){var i=n||{},o=i.node,c=i.width,u=i.height,a=o,s=r.getSystemInfoSync().pixelRatio,d=a.getContext("2d"),l=new S(d,!0,a);null==b||b.setCanvasCreator((function(){return l})),L.current=l,F({width:c,height:u,devicePixelRatio:s})}}))}};return p(l,(function(){return{chartRef:O,canvasRef:L}})),f((function(){return r.getEnv()===r.ENV_TYPE.WEAPP?s.createElement(u,n({ref:L,canvasId:U,id:U,style:H,type:"2d",onTouchEnd:function(t){return I({chart:O.current,event:t})},onTouchMove:function(t){return W({chart:O.current,event:t})},onTouchStart:function(t){return _({chart:O.current,event:t})}},y(C,A))):s.createElement(a,{className:"xh-echarts",ref:L,id:U,style:H})}),[C,A,U])})));export{b as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Echarts/index.tsx"],"sourcesContent":["import Taro, { useReady } from \"@tarojs/taro\";\nimport { Canvas, View } from \"@tarojs/components\";\nimport React, {\n useRef,\n useState,\n useMemo,\n memo,\n useEffect,\n CSSProperties,\n ForwardRefRenderFunction,\n forwardRef,\n useImperativeHandle,\n} from \"react\";\nimport {\n isString,\n isFunction,\n isEqual,\n pick,\n uniqueId,\n tripleDefer,\n compareVersion,\n} from \"@/utils\";\nimport usePrevious from \"@/hooks/usePrevious\";\nimport useUnMount from \"@/hooks/useUnMount\";\nimport useUpdateEffect from \"@/hooks/useUpdateEffect\";\nimport WxCanvas from \"./weapp/wx-canvas\";\nimport { touchEnd, touchMove, touchStart } from \"./weapp/wx-touch\";\nimport {\n EChartsProps,\n InitEchart,\n EChartsInstance,\n EchartsHandle,\n} from \"./types\";\n\nexport type {\n EChartsProps,\n EChartOption,\n EChartsInstance,\n EChartsLoadingOption,\n EchartsHandle,\n} from \"./types\";\n\n// 只兼容H5&微信小程序\nconst Echarts: ForwardRefRenderFunction<EchartsHandle, EChartsProps> = (\n { echarts, isPage = true, canvasId: pCanvasId, ...props },\n ref\n) => {\n const canvasRef = useRef<HTMLDivElement | HTMLCanvasElement | null>();\n const chartRef = useRef<EChartsInstance>();\n const [isInitialResize, setIsInitialResize] = useState<boolean>(true);\n const prevProps = usePrevious<EChartsProps>(props);\n const canvasId = useMemo(() => pCanvasId || uniqueId(\"canvas_\"), [pCanvasId]);\n const canvasProps = useMemo(\n () => [\n \"disableScroll\",\n \"disableScroll\",\n \"onTouchCancel\",\n \"onLongTap\",\n \"onError\",\n \"nativeProps\",\n \"className\",\n \"key\",\n \"hidden\",\n \"animation\",\n ],\n []\n );\n const canvasStyle = useMemo(\n () =>\n ({\n width: \"100%\",\n height: \"300px\",\n ...(props.style as CSSProperties),\n } as CSSProperties),\n [props.style]\n );\n /**\n * 获取小程序渲染层的节点要在 onReady 生命周期,等同于 useReady hooks\n * 访问小程序渲染层的 DOM 节点。\n */\n useReady(() => {\n // 顶层页面级别才触发useReady 【注意Popup 、Dialog 等弹出层 都不是页面级别】\n if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP && isPage) {\n Taro.nextTick(() => {\n initChart();\n });\n }\n });\n\n useEffect(() => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB || !isPage) {\n tripleDefer(() => {\n Taro.nextTick(() => {\n initChart();\n });\n });\n }\n }, []);\n\n useUnMount(() => {\n dispose();\n });\n\n useUpdateEffect(() => {\n if (\n !isEqual(prevProps?.theme, props.theme) ||\n !isEqual(prevProps?.opts, props.opts) ||\n !isEqual(prevProps?.onEvents, props.onEvents)\n ) {\n dispose();\n initChart(); // re-render\n return;\n }\n\n // update\n const pickKeys = [\n \"option\",\n \"notMerge\",\n \"lazyUpdate\",\n \"showLoading\",\n \"loadingOption\",\n ];\n if (!isEqual(pick(props, pickKeys), pick(prevProps, pickKeys))) {\n updateEChartsOption();\n }\n\n /**\n * resize: style 、className\n */\n if (\n !isEqual(prevProps?.style, props.style) ||\n !isEqual(prevProps?.className, props.className)\n ) {\n resize(canvasRef.current);\n }\n }, [props]);\n\n // 大小变化\n const resize = canvas => {\n const echartsInstance = echarts.getInstanceByDom(canvas);\n // 调整大小不应在第一次渲染时发生,因为它会取消初始 echarts 动画\n if (!isInitialResize) {\n try {\n echartsInstance.resize({\n width: \"auto\",\n height: \"auto\",\n });\n } catch (e) {\n console.warn(e);\n }\n }\n setIsInitialResize(false);\n };\n\n const initEchartsInstance = async ({\n width,\n height,\n devicePixelRatio,\n }: InitEchart) => {\n const { theme, opts } = props;\n return new Promise((resolve, reject) => {\n if (canvasRef.current) {\n chartRef.current = echarts.init(canvasRef.current, theme, {\n width,\n height,\n devicePixelRatio,\n ...opts,\n });\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) {\n /**\n * echart同一个dom下多次动态渲染值,防止值、事件重复互相影响\n * 每次init之后,先dispose释放下资源,再重新init\n */\n const echartsInstance = echarts.getInstanceByDom(canvasRef.current);\n echartsInstance.on(\"finished\", () => {\n echarts.dispose(canvasRef.current);\n // 获取渲染后的width、height\n const newOpts = {\n width,\n height,\n devicePixelRatio,\n ...opts,\n };\n chartRef.current = echarts.init(canvasRef.current, theme, newOpts);\n resolve(chartRef.current);\n });\n } else {\n resolve(chartRef.current);\n }\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject();\n }\n });\n };\n\n const updateEChartsOption = () => {\n /**\n * 官方文档:https://echarts.apache.org/zh/api.html#echartsInstance.setOption\n */\n const {\n option,\n notMerge = true, // 不跟之前设置的option合并,保证每次渲染都是最新的option\n lazyUpdate = false, // 设置完 option 后是否不立即更新图表,默认为 false,即同步立即更新。如果为 true,则会在下一个 animation frame 中,才更新图表\n showLoading,\n loadingOption = null,\n } = props;\n // 1. 获取echarts实例\n const echartInstance = echarts.getInstanceByDom(canvasRef.current);\n if (echartInstance) {\n // 2. 设置option\n echartInstance.setOption(option, notMerge, lazyUpdate);\n // 3. 显示加载动画效果\n if (showLoading) echartInstance.showLoading(loadingOption);\n else echartInstance.hideLoading();\n }\n\n return echartInstance;\n };\n\n // 绑定事件\n const bindEvents = (instance, events) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n function bindEvent(eventName, func) {\n if (isString(eventName) && isFunction(func)) {\n instance.on(eventName, param => {\n func(param, instance);\n });\n }\n }\n\n for (const eventName in events) {\n if (Object.prototype.hasOwnProperty.call(events, eventName)) {\n bindEvent(eventName, events[eventName]);\n }\n }\n };\n\n // 渲染图表\n const renderEcharts = async ({\n width,\n height,\n devicePixelRatio,\n }: InitEchart) => {\n const { onEvents, onChartReady } = props;\n // 1. 初始化图表\n await initEchartsInstance({\n width,\n height,\n devicePixelRatio,\n });\n // 2. 更新echarts实例\n const echartsInstance = updateEChartsOption();\n // 3. 绑定事件\n bindEvents(echartsInstance, onEvents || {});\n // 4. 图表渲染完成\n if (isFunction(onChartReady)) onChartReady?.(echartsInstance);\n\n // 5. resize\n if (canvasRef.current) {\n resize(canvasRef.current);\n }\n };\n\n // 销毁echarts实例\n const dispose = () => {\n if (chartRef.current) {\n echarts?.dispose(chartRef.current);\n }\n };\n\n // 初始化微信小程序图表\n const initWexinChart = () => {\n const query = Taro.createSelectorQuery();\n query\n .select(`#${canvasId}`)\n .fields({\n node: true,\n size: true,\n })\n .exec(res => {\n const [result] = res;\n if (result) {\n const { node, width, height } = result || {};\n const canvasNode = node;\n const canvasDpr = Taro.getSystemInfoSync().pixelRatio;\n const ctx = canvasNode.getContext(\"2d\");\n const canvas = new WxCanvas(ctx, true, canvasNode);\n echarts?.setCanvasCreator(() => {\n return canvas;\n });\n canvasRef.current = canvas as any;\n renderEcharts({\n width,\n height,\n devicePixelRatio: canvasDpr,\n });\n }\n });\n };\n\n // 初始化图表\n const initChart = () => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB && canvasRef.current) {\n const width =\n props.style?.width ||\n canvasRef.current?.clientWidth ||\n window.innerWidth;\n const height =\n props.style?.height || canvasRef.current?.clientHeight || 300;\n renderEcharts({\n width,\n height,\n devicePixelRatio: window.devicePixelRatio,\n });\n } else {\n const version = Taro.getSystemInfoSync().SDKVersion || \"\";\n const canUseNewCanvas = compareVersion(version, \"2.9.0\") >= 0;\n if (canUseNewCanvas) {\n // console.log('微信基础库版本大于2.9.0,开始使用<canvas type=\"2d\"/>');\n // 2.9.0 可以使用 <canvas type=\"2d\"></canvas>\n initWexinChart();\n } else {\n console.error(\n `当前基础库为${version}, 微信基础库版本过低,需大于等于 2.9.0`\n );\n }\n }\n };\n\n useImperativeHandle(ref, () => ({ chartRef, canvasRef }));\n\n // container component\n const renderContainerComponent = useMemo(() => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP) {\n return (\n // eslint-disable-next-line react/react-in-jsx-scope\n <Canvas\n ref={canvasRef}\n canvasId={canvasId}\n id={canvasId}\n style={canvasStyle}\n type=\"2d\"\n onTouchEnd={event => touchEnd({ chart: chartRef.current, event })}\n onTouchMove={event => touchMove({ chart: chartRef.current, event })}\n onTouchStart={event => touchStart({ chart: chartRef.current, event })}\n {...pick(props, canvasProps)}\n />\n );\n }\n // eslint-disable-next-line react/react-in-jsx-scope\n return <View ref={canvasRef} id={canvasId} style={canvasStyle} />;\n }, [props, canvasProps, canvasId]);\n\n return renderContainerComponent;\n};\n\nexport default memo(forwardRef(Echarts));\n"],"names":["index","memo","forwardRef","_a","ref","echarts","_b","isPage","pCanvasId","canvasId","props","__rest","canvasRef","useRef","chartRef","_c","__read","useState","isInitialResize","setIsInitialResize","prevProps","usePrevious","useMemo","uniqueId","canvasProps","canvasStyle","__assign","width","height","style","useReady","Taro","getEnv","ENV_TYPE","WEAPP","nextTick","initChart","useEffect","WEB","tripleDefer","useUnMount","dispose","useUpdateEffect","isEqual","theme","opts","onEvents","pickKeys","pick","updateEChartsOption","className","resize","current","canvas","echartsInstance","getInstanceByDom","e","initEchartsInstance","devicePixelRatio","Promise","resolve","reject","init","on","newOpts","option","notMerge","lazyUpdate","showLoading","loadingOption","echartInstance","setOption","hideLoading","renderEcharts","onChartReady","sent","instance","events","bindEvent","eventName","func","isString","isFunction","param","Object","prototype","hasOwnProperty","call","bindEvents","clientWidth","window","innerWidth","_d","clientHeight","version","getSystemInfoSync","SDKVersion","compareVersion","createSelectorQuery","select","concat","fields","node","size","exec","res","result","canvasNode","canvasDpr","pixelRatio","ctx","getContext","canvas_1","WxCanvas","setCanvasCreator","useImperativeHandle","React","createElement","Canvas","id","type","onTouchEnd","event","touchEnd","chart","onTouchMove","touchMove","onTouchStart","touchStart","View"],"mappings":"utBA2CA,IA0TAA,EAAeC,EAAKC,GA1TmD,SACrEC,EACAC,GADE,IAAAC,EAAOF,EAAAE,QAAEC,EAAaH,EAAAI,OAAbA,OAAS,IAAAD,GAAIA,EAAYE,EAASL,EAAAM,SAAKC,EAAKC,EAAAR,EAAvD,iCAGMS,EAAYC,IACZC,EAAWD,IACXE,EAAAC,EAAwCC,GAAkB,GAAK,GAA9DC,EAAeH,EAAA,GAAEI,OAClBC,EAAYC,EAA0BX,GACtCD,EAAWa,GAAQ,WAAM,OAAAd,GAAae,EAAS,aAAY,CAACf,IAC5DgB,EAAcF,GAClB,WAAM,MAAA,CACJ,gBACA,gBACA,gBACA,YACA,UACA,cACA,YACA,MACA,SACA,YACD,GACD,IAEIG,EAAcH,GAClB,WACE,OAACI,EAAA,CACCC,MAAO,OACPC,OAAQ,SACJlB,EAAMmB,MAHZ,GAKF,CAACnB,EAAMmB,QAMTC,GAAS,WAEHC,EAAKC,WAAaD,EAAKE,SAASC,OAAS3B,GAC3CwB,EAAKI,UAAS,WACZC,GACF,GAEJ,IAEAC,GAAU,WACJN,EAAKC,WAAaD,EAAKE,SAASK,KAAQ/B,GAC1CgC,GAAY,WACVR,EAAKI,UAAS,WACZC,GACF,GACF,GAEH,GAAE,IAEHI,GAAW,WACTC,GACF,IAEAC,GAAgB,WACd,IACGC,EAAQvB,aAAS,EAATA,EAAWwB,MAAOlC,EAAMkC,SAChCD,EAAQvB,aAAS,EAATA,EAAWyB,KAAMnC,EAAMmC,QAC/BF,EAAQvB,aAAA,EAAAA,EAAW0B,SAAUpC,EAAMoC,UAIpC,OAFAL,SACAL,IAKF,IAAMW,EAAW,CACf,SACA,WACA,aACA,cACA,iBAEGJ,EAAQK,EAAKtC,EAAOqC,GAAWC,EAAK5B,EAAW2B,KAClDE,IAOCN,EAAQvB,aAAS,EAATA,EAAWS,MAAOnB,EAAMmB,QAChCc,EAAQvB,aAAA,EAAAA,EAAW8B,UAAWxC,EAAMwC,YAErCC,EAAOvC,EAAUwC,QAErB,GAAG,CAAC1C,IAGJ,IAAMyC,EAAS,SAAAE,GACb,IAAMC,EAAkBjD,EAAQkD,iBAAiBF,GAEjD,IAAKnC,EACH,IACEoC,EAAgBH,OAAO,CACrBxB,MAAO,OACPC,OAAQ,QAIX,CAFC,MAAO4B,GAER,CAEHrC,GAAmB,EACrB,EAEMsC,EAAsB,SAAOtD,GACjC,IAAAwB,UACAC,EAAMzB,EAAAyB,OACN8B,EAAgBvD,EAAAuD,8FAGhB,OADQd,EAAgBlC,EAAXkC,MAAEC,EAASnC,OACxB,CAAA,EAAO,IAAIiD,SAAQ,SAACC,EAASC,GACvBjD,EAAUwC,SACZtC,EAASsC,QAAU/C,EAAQyD,KAAKlD,EAAUwC,QAASR,KACjDjB,MAAKA,EACLC,OAAMA,EACN8B,iBAAgBA,GACbb,IAEDd,EAAKC,WAAaD,EAAKE,SAASK,IAKVjC,EAAQkD,iBAAiB3C,EAAUwC,SAC3CW,GAAG,YAAY,WAC7B1D,EAAQoC,QAAQ7B,EAAUwC,SAE1B,IAAMY,EAAOtC,EAAA,CACXC,MAAKA,EACLC,OAAMA,EACN8B,iBAAgBA,GACbb,GAEL/B,EAASsC,QAAU/C,EAAQyD,KAAKlD,EAAUwC,QAASR,EAAOoB,GAC1DJ,EAAQ9C,EAASsC,QACnB,IAEAQ,EAAQ9C,EAASsC,UAInBS,GAEH,YAGGZ,EAAsB,WAKxB,IAAAgB,EAKEvD,EAAKuD,OAJP9D,EAIEO,EAJawD,SAAfA,OAAQ,IAAA/D,GAAOA,EACfG,EAGEI,EAHgByD,WAAlBA,OAAa,IAAA7D,GAAKA,EAClB8D,EAEE1D,EAFS0D,YACXrD,EACEL,EADkB2D,cAApBA,OAAa,IAAAtD,EAAG,KAAIA,EAGhBuD,EAAiBjE,EAAQkD,iBAAiB3C,EAAUwC,SAS1D,OARIkB,IAEFA,EAAeC,UAAUN,EAAQC,EAAUC,GAEvCC,EAAaE,EAAeF,YAAYC,GACvCC,EAAeE,eAGfF,CACT,EAqBMG,EAAgB,SAAOtE,GAC3B,IAAAwB,UACAC,EAAMzB,EAAAyB,OACN8B,EAAgBvD,EAAAuD,uHAIhB,OAFQZ,EAA2BpC,EAAnBoC,SAAE4B,EAAiBhE,eAEnC,CAAA,EAAM+C,EAAoB,CACxB9B,MAAKA,EACLC,OAAMA,EACN8B,iBAAgBA,mBAHlBpD,EAAAqE,OAzBiB,SAACC,EAAUC,GAE5B,SAASC,EAAUC,EAAWC,GACxBC,EAASF,IAAcG,EAAWF,IACpCJ,EAASb,GAAGgB,GAAW,SAAAI,GACrBH,EAAKG,EAAOP,EACd,GAEH,CAED,IAAK,IAAMG,KAAaF,EAClBO,OAAOC,UAAUC,eAAeC,KAAKV,EAAQE,IAC/CD,EAAUC,EAAWF,EAAOE,GAGlC,CAkBES,CAFMlC,EAAkBL,IAEIH,GAAY,CAAA,GAEpCoC,EAAWR,KAAeA,SAAAA,EAAepB,IAGzC1C,EAAUwC,SACZD,EAAOvC,EAAUwC,qBAKfX,EAAU,WACV3B,EAASsC,UACX/C,SAAAA,EAASoC,QAAQ3B,EAASsC,SAE9B,EAiCMhB,EAAY,uBAChB,GAAIL,EAAKC,WAAaD,EAAKE,SAASK,KAAO1B,EAAUwC,QAAS,CAC5D,IAAMzB,WACJxB,EAAAO,EAAMmB,4BAAOF,SACI,QAAjBrB,EAAAM,EAAUwC,eAAO,IAAA9C,OAAA,EAAAA,EAAEmF,cACnBC,OAAOC,WACH/D,GACS,UAAblB,EAAMmB,aAAO,IAAAd,OAAA,EAAAA,EAAAa,UAA2B,QAAjBgE,EAAAhF,EAAUwC,eAAO,IAAAwC,OAAA,EAAAA,EAAEC,eAAgB,IAC5DpB,EAAc,CACZ9C,MAAKA,EACLC,OAAMA,EACN8B,iBAAkBgC,OAAOhC,kBAE5B,KAAM,CACL,IAAMoC,EAAU/D,EAAKgE,oBAAoBC,YAAc,GAC/BC,EAAeH,EAAS,UAAY,GA5ChD/D,EAAKmE,sBAEhBC,OAAO,IAAAC,OAAI3F,IACX4F,OAAO,CACNC,MAAM,EACNC,MAAM,IAEPC,MAAK,SAAAC,GACE,IAACC,EAAD1F,EAAWyF,QACjB,GAAIC,EAAQ,CACJ,IAAApG,EAA0BoG,GAAU,GAAlCJ,EAAIhG,EAAAgG,KAAE3E,EAAKrB,EAAAqB,MAAEC,WACf+E,EAAaL,EACbM,EAAY7E,EAAKgE,oBAAoBc,WACrCC,EAAMH,EAAWI,WAAW,MAC5BC,EAAS,IAAIC,EAASH,GAAK,EAAMH,GACvCtG,SAAAA,EAAS6G,kBAAiB,WACxB,OAAOF,CACT,IACApG,EAAUwC,QAAU4D,EACpBvC,EAAc,CACZ9C,MAAKA,EACLC,OAAMA,EACN8B,iBAAkBkD,GAErB,CACH,GA6BD,CACH,EA0BA,OAxBAO,EAAoB/G,GAAK,WAAM,OAAGU,SAAQA,EAAEF,UAASA,EAAtB,IAGEU,GAAQ,WACvC,OAAIS,EAAKC,WAAaD,EAAKE,SAASC,MAGhCkF,EAACC,cAAAC,KACClH,IAAKQ,EACLH,SAAUA,EACV8G,GAAI9G,EACJoB,MAAOJ,EACP+F,KAAK,KACLC,WAAY,SAAAC,GAAS,OAAAC,EAAS,CAAEC,MAAO9G,EAASsC,QAASsE,SAAQ,EACjEG,YAAa,SAAAH,GAAS,OAAAI,EAAU,CAAEF,MAAO9G,EAASsC,QAASsE,WAC3DK,aAAc,SAAAL,GAAS,OAAAM,EAAW,CAAEJ,MAAO9G,EAASsC,QAASsE,YACzD1E,EAAKtC,EAAOc,KAKf4F,EAACC,cAAAY,EAAK,CAAA7H,IAAKQ,EAAW2G,GAAI9G,EAAUoB,MAAOJ,GACnD,GAAE,CAACf,EAAOc,EAAaf,GAG1B"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Echarts/index.tsx"],"sourcesContent":["import Taro, { useReady } from \"@tarojs/taro\";\nimport { Canvas, View } from \"@tarojs/components\";\nimport React, {\n useRef,\n useState,\n useMemo,\n memo,\n useEffect,\n CSSProperties,\n ForwardRefRenderFunction,\n forwardRef,\n useImperativeHandle,\n} from \"react\";\nimport {\n isString,\n isFunction,\n isEqual,\n pick,\n uniqueId,\n tripleDefer,\n compareVersion,\n} from \"@/utils\";\nimport usePrevious from \"@/hooks/usePrevious\";\nimport useUnMount from \"@/hooks/useUnMount\";\nimport useUpdateEffect from \"@/hooks/useUpdateEffect\";\nimport WxCanvas from \"./weapp/wx-canvas\";\nimport { touchEnd, touchMove, touchStart } from \"./weapp/wx-touch\";\nimport {\n EChartsProps,\n InitEchart,\n EChartsInstance,\n EchartsHandle,\n} from \"./types\";\n\nexport type {\n EChartsProps,\n EChartOption,\n EChartsInstance,\n EChartsLoadingOption,\n EchartsHandle,\n} from \"./types\";\n\n// 只兼容H5&微信小程序\nconst Echarts: ForwardRefRenderFunction<EchartsHandle, EChartsProps> = (\n { echarts, isPage = true, canvasId: pCanvasId, ...props },\n ref\n) => {\n const canvasRef = useRef<HTMLDivElement | HTMLCanvasElement | null>();\n const chartRef = useRef<EChartsInstance>();\n const [isInitialResize, setIsInitialResize] = useState<boolean>(true);\n const prevProps = usePrevious<EChartsProps>(props);\n const canvasId = useMemo(() => pCanvasId || uniqueId(\"canvas_\"), [pCanvasId]);\n const canvasProps = useMemo(\n () => [\n \"disableScroll\",\n \"disableScroll\",\n \"onTouchCancel\",\n \"onLongTap\",\n \"onError\",\n \"nativeProps\",\n \"className\",\n \"key\",\n \"hidden\",\n \"animation\",\n ],\n []\n );\n const canvasStyle = useMemo(\n () =>\n ({\n width: \"100%\",\n height: \"300px\",\n ...(props.style as CSSProperties),\n } as CSSProperties),\n [props.style]\n );\n /**\n * 获取小程序渲染层的节点要在 onReady 生命周期,等同于 useReady hooks\n * 访问小程序渲染层的 DOM 节点。\n */\n useReady(() => {\n // 顶层页面级别才触发useReady 【注意Popup 、Dialog 等弹出层 都不是页面级别】\n if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP && isPage) {\n Taro.nextTick(() => {\n initChart();\n });\n }\n });\n\n useEffect(() => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB || !isPage) {\n tripleDefer(() => {\n Taro.nextTick(() => {\n initChart();\n });\n });\n }\n }, []);\n\n useUnMount(() => {\n dispose();\n });\n\n useUpdateEffect(() => {\n if (\n !isEqual(prevProps?.theme, props.theme) ||\n !isEqual(prevProps?.opts, props.opts) ||\n !isEqual(prevProps?.onEvents, props.onEvents)\n ) {\n dispose();\n initChart(); // re-render\n return;\n }\n\n // update\n const pickKeys = [\n \"option\",\n \"notMerge\",\n \"lazyUpdate\",\n \"showLoading\",\n \"loadingOption\",\n ];\n if (!isEqual(pick(props, pickKeys), pick(prevProps, pickKeys))) {\n updateEChartsOption();\n }\n\n /**\n * resize: style 、className\n */\n if (\n !isEqual(prevProps?.style, props.style) ||\n !isEqual(prevProps?.className, props.className)\n ) {\n resize(canvasRef.current);\n }\n }, [props]);\n\n // 大小变化\n const resize = canvas => {\n const echartsInstance = echarts.getInstanceByDom(canvas);\n // 调整大小不应在第一次渲染时发生,因为它会取消初始 echarts 动画\n if (!isInitialResize) {\n try {\n echartsInstance.resize({\n width: \"auto\",\n height: \"auto\",\n });\n } catch (e) {\n console.warn(e);\n }\n }\n setIsInitialResize(false);\n };\n\n const initEchartsInstance = async ({\n width,\n height,\n devicePixelRatio,\n }: InitEchart) => {\n const { theme, opts } = props;\n return new Promise((resolve, reject) => {\n if (canvasRef.current) {\n chartRef.current = echarts.init(canvasRef.current, theme, {\n width,\n height,\n devicePixelRatio,\n ...opts,\n });\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB) {\n /**\n * echart同一个dom下多次动态渲染值,防止值、事件重复互相影响\n * 每次init之后,先dispose释放下资源,再重新init\n */\n const echartsInstance = echarts.getInstanceByDom(canvasRef.current);\n echartsInstance.on(\"finished\", () => {\n echarts.dispose(canvasRef.current);\n // 获取渲染后的width、height\n const newOpts = {\n width,\n height,\n devicePixelRatio,\n ...opts,\n };\n chartRef.current = echarts.init(canvasRef.current, theme, newOpts);\n resolve(chartRef.current);\n });\n } else {\n resolve(chartRef.current);\n }\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject();\n }\n });\n };\n\n const updateEChartsOption = () => {\n /**\n * 官方文档:https://echarts.apache.org/zh/api.html#echartsInstance.setOption\n */\n const {\n option,\n notMerge = true, // 不跟之前设置的option合并,保证每次渲染都是最新的option\n lazyUpdate = false, // 设置完 option 后是否不立即更新图表,默认为 false,即同步立即更新。如果为 true,则会在下一个 animation frame 中,才更新图表\n showLoading,\n loadingOption = null,\n } = props;\n // 1. 获取echarts实例\n const echartInstance = echarts.getInstanceByDom(canvasRef.current);\n if (echartInstance) {\n // 2. 设置option\n echartInstance.setOption(option, notMerge, lazyUpdate);\n // 3. 显示加载动画效果\n if (showLoading) echartInstance.showLoading(loadingOption);\n else echartInstance.hideLoading();\n }\n\n return echartInstance;\n };\n\n // 绑定事件\n const bindEvents = (instance, events) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n function bindEvent(eventName, func) {\n if (isString(eventName) && isFunction(func)) {\n instance.on(eventName, param => {\n func(param, instance);\n });\n }\n }\n\n for (const eventName in events) {\n if (Object.prototype.hasOwnProperty.call(events, eventName)) {\n bindEvent(eventName, events[eventName]);\n }\n }\n };\n\n // 渲染图表\n const renderEcharts = async ({\n width,\n height,\n devicePixelRatio,\n }: InitEchart) => {\n const { onEvents, onChartReady } = props;\n // 1. 初始化图表\n await initEchartsInstance({\n width,\n height,\n devicePixelRatio,\n });\n // 2. 更新echarts实例\n const echartsInstance = updateEChartsOption();\n // 3. 绑定事件\n bindEvents(echartsInstance, onEvents || {});\n // 4. 图表渲染完成\n if (isFunction(onChartReady)) onChartReady?.(echartsInstance);\n\n // 5. resize\n if (canvasRef.current) {\n resize(canvasRef.current);\n }\n };\n\n // 销毁echarts实例\n const dispose = () => {\n if (chartRef.current) {\n echarts?.dispose(chartRef.current);\n }\n };\n\n // 初始化微信小程序图表\n const initWexinChart = () => {\n const query = Taro.createSelectorQuery();\n query\n .select(`#${canvasId}`)\n .fields({\n node: true,\n size: true,\n })\n .exec(res => {\n const [result] = res;\n if (result) {\n const { node, width, height } = result || {};\n const canvasNode = node;\n const canvasDpr = Taro.getSystemInfoSync().pixelRatio;\n const ctx = canvasNode.getContext(\"2d\");\n const canvas = new WxCanvas(ctx, true, canvasNode);\n echarts?.setCanvasCreator(() => {\n return canvas;\n });\n canvasRef.current = canvas as any;\n renderEcharts({\n width,\n height,\n devicePixelRatio: canvasDpr,\n });\n }\n });\n };\n\n // 初始化图表\n const initChart = () => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEB && canvasRef.current) {\n const width =\n props.style?.width ||\n canvasRef.current?.clientWidth ||\n window.innerWidth;\n const height =\n props.style?.height || canvasRef.current?.clientHeight || 300;\n renderEcharts({\n width,\n height,\n devicePixelRatio: window.devicePixelRatio,\n });\n } else {\n const version = Taro.getSystemInfoSync().SDKVersion || \"\";\n const canUseNewCanvas = compareVersion(version, \"2.9.0\") >= 0;\n if (canUseNewCanvas) {\n // console.log('微信基础库版本大于2.9.0,开始使用<canvas type=\"2d\"/>');\n // 2.9.0 可以使用 <canvas type=\"2d\"></canvas>\n initWexinChart();\n } else {\n console.error(\n `当前基础库为${version}, 微信基础库版本过低,需大于等于 2.9.0`\n );\n }\n }\n };\n\n useImperativeHandle(ref, () => ({ chartRef, canvasRef }));\n\n // container component\n const renderContainerComponent = useMemo(() => {\n if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP) {\n return (\n // eslint-disable-next-line react/react-in-jsx-scope\n <Canvas\n ref={canvasRef}\n canvasId={canvasId}\n id={canvasId}\n style={canvasStyle}\n type=\"2d\"\n onTouchEnd={event => touchEnd({ chart: chartRef.current, event })}\n onTouchMove={event => touchMove({ chart: chartRef.current, event })}\n onTouchStart={event => touchStart({ chart: chartRef.current, event })}\n {...pick(props, canvasProps)}\n />\n );\n }\n // eslint-disable-next-line react/react-in-jsx-scope\n return (\n <View\n className=\"xh-echarts\"\n ref={canvasRef}\n id={canvasId}\n style={canvasStyle}\n />\n );\n }, [props, canvasProps, canvasId]);\n\n return renderContainerComponent;\n};\n\nexport default memo(forwardRef(Echarts));\n"],"names":["index","memo","forwardRef","_a","ref","echarts","_b","isPage","pCanvasId","canvasId","props","__rest","canvasRef","useRef","chartRef","_c","__read","useState","isInitialResize","setIsInitialResize","prevProps","usePrevious","useMemo","uniqueId","canvasProps","canvasStyle","__assign","width","height","style","useReady","Taro","getEnv","ENV_TYPE","WEAPP","nextTick","initChart","useEffect","WEB","tripleDefer","useUnMount","dispose","useUpdateEffect","isEqual","theme","opts","onEvents","pickKeys","pick","updateEChartsOption","className","resize","current","canvas","echartsInstance","getInstanceByDom","e","initEchartsInstance","devicePixelRatio","Promise","resolve","reject","init","on","newOpts","option","notMerge","lazyUpdate","showLoading","loadingOption","echartInstance","setOption","hideLoading","renderEcharts","onChartReady","sent","instance","events","bindEvent","eventName","func","isString","isFunction","param","Object","prototype","hasOwnProperty","call","bindEvents","clientWidth","window","innerWidth","_d","clientHeight","version","getSystemInfoSync","SDKVersion","compareVersion","createSelectorQuery","select","concat","fields","node","size","exec","res","result","canvasNode","canvasDpr","pixelRatio","ctx","getContext","canvas_1","WxCanvas","setCanvasCreator","useImperativeHandle","React","createElement","Canvas","id","type","onTouchEnd","event","touchEnd","chart","onTouchMove","touchMove","onTouchStart","touchStart","View"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"react";import t from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as o}from"@tarojs/taro";var s=function(s){var a=s.percent,c=void 0===a?88:a,n=s.className,l=s.showPercent,m=void 0!==l&&l,p=s.doneColor,i=void 0===p?"":p,d=s.percentColor,h=void 0===d?"":d,g=s.height,v=s.dots,E=void 0===v?[]:v,N=t("xh-progress",n,{dots:E.length>0}),f=t("progress-bar",{dots:E.length>0},{h5:"h5"===process.env.TARO_ENV}),u=t("progress-bar-percent");return e.createElement(r,{className:N},e.createElement(r,{className:"progress",style:{height:g&&"".concat(o(g))}},E.length>0?e.createElement(e.Fragment,null,E.map((function(t){return e.createElement(r,{style:{width:"".concat(t,"%")},key:t,"data-progress":t,className:f},"h5"!==process.env.TARO_ENV&&e.createElement(r,{className:"progress-bar-text"},t,"%"))})),e.createElement(r,{className:"progress-cover",style:{width:"".concat(c,"%")}})):e.createElement(r,{style:{width:"".concat(c,"%"),backgroundColor:i,color:h},className:f},m&&e.createElement(r,{className:u},"".concat(c,"%")))))};export{s as default};
1
+ import e from"react";import o from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as t}from"@tarojs/taro";var s=function(s){var a=s.percent,c=void 0===a?88:a,l=s.className,n=s.showPercent,m=void 0!==n&&n,d=s.doneColor,i=void 0===d?"":d,p=s.percentColor,g=void 0===p?"":p,h=s.height,v=void 0===h?28:h,E=s.dots,N=void 0===E?[]:E,u=s.solid,f=void 0!==u&&u,b=s.backgroundColor,y=void 0===b?"":b,C=o("xh-progress",l,{dots:N.length>0}),k=o("progress-bar",{dots:N.length>0},{solid:f},{h5:"h5"===process.env.TARO_ENV}),w=o("progress-bar-percent",{solid:f});return e.createElement(r,{className:C,style:{height:v&&t(v)}},e.createElement(r,{className:o("progress",{solid:f}),style:{backgroundColor:y}},N.length>0?e.createElement(e.Fragment,null,N.map((function(o){return e.createElement(r,{style:{width:"".concat(o,"%")},key:o,"data-progress":o,className:k},"h5"!==process.env.TARO_ENV&&e.createElement(r,{className:"progress-bar-text"},o,"%"))})),e.createElement(r,{className:"progress-cover",style:{width:"".concat(c,"%")}})):e.createElement(r,{style:{width:"".concat(c,"%"),backgroundColor:i,color:g},className:k},m&&e.createElement(r,{className:w},"".concat(c,"%")))))};export{s as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n /**\n * @description 百分比,不要百分号\n */\n dots?: number[];\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> = props => {\n const {\n percent = 88,\n className,\n showPercent = false,\n doneColor = \"\",\n percentColor = \"\",\n height,\n dots = [],\n } = props;\n const progresslcs = classNames(\"xh-progress\", className, {\n dots: dots.length > 0,\n });\n\n const showPercentcls = classNames(\n \"progress-bar\",\n { dots: dots.length > 0 },\n { h5: process.env.TARO_ENV === \"h5\" }\n );\n const showbarPercentcls = classNames(\"progress-bar-percent\");\n return (\n <View className={progresslcs}>\n <View\n className=\"progress\"\n style={{ height: height && `${pxTransform(height)}` }}\n >\n {dots.length > 0 ? (\n <React.Fragment>\n {dots.map(item => (\n <View\n style={{\n width: `${item}%`,\n }}\n key={item}\n data-progress={item}\n className={showPercentcls}\n >\n {process.env.TARO_ENV !== \"h5\" && (\n <View className=\"progress-bar-text\">{item}%</View>\n )}\n </View>\n ))}\n <View className=\"progress-cover\" style={{ width: `${percent}%` }} />\n </React.Fragment>\n ) : (\n <View\n style={{\n width: `${percent}%`,\n backgroundColor: doneColor,\n color: percentColor,\n }}\n className={showPercentcls}\n >\n {showPercent && (\n <View className={showbarPercentcls}>{`${percent}%`}</View>\n )}\n </View>\n )}\n </View>\n </View>\n );\n};\n\nexport default Progress;\n"],"names":["Progress","props","_a","percent","className","_b","showPercent","_c","doneColor","_d","percentColor","height","_e","dots","progresslcs","classNames","length","showPercentcls","h5","process","env","TARO_ENV","showbarPercentcls","React","createElement","View","style","pxTransform","Fragment","map","item","width","concat","key","backgroundColor","color"],"mappings":"oIAmBM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EAOED,EAAKE,QAPPA,aAAU,GAAED,EACZE,EAMEH,YALFI,EAKEJ,EAAKK,YALPA,OAAc,IAAAD,GAAKA,EACnBE,EAIEN,EAJYO,UAAdA,OAAY,IAAAD,EAAA,GAAEA,EACdE,EAGER,eAHFS,OAAe,IAAAD,EAAA,GAAEA,EACjBE,EAEEV,EAFIU,OACNC,EACEX,EADOY,KAATA,OAAI,IAAAD,EAAG,GAAEA,EAELE,EAAcC,EAAW,cAAeX,EAAW,CACvDS,KAAMA,EAAKG,OAAS,IAGhBC,EAAiBF,EACrB,eACA,CAAEF,KAAMA,EAAKG,OAAS,GACtB,CAAEE,GAA6B,OAAzBC,QAAQC,IAAIC,WAEdC,EAAoBP,EAAW,wBACrC,OACEQ,EAACC,cAAAC,EAAK,CAAArB,UAAWU,GACfS,EAAAC,cAACC,EAAI,CACHrB,UAAU,WACVsB,MAAO,CAAEf,OAAQA,GAAU,UAAGgB,EAAYhB,MAEzCE,EAAKG,OAAS,EACbO,EAACC,cAAAD,EAAMK,SAAQ,KACZf,EAAKgB,KAAI,SAAAC,GAAQ,OAChBP,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAF,EAAO,MAEnBG,IAAKH,EACU,gBAAAA,EACf1B,UAAWa,GAEe,OAAzBE,QAAQC,IAAIC,UACXE,gBAACE,EAAI,CAACrB,UAAU,qBAAqB0B,EAAa,SAIxDP,EAACC,cAAAC,EAAK,CAAArB,UAAU,iBAAiBsB,MAAO,CAAEK,MAAO,GAAGC,OAAA7B,WAGtDoB,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAA7B,EAAU,KACpB+B,gBAAiB1B,EACjB2B,MAAOzB,GAETN,UAAWa,GAEVX,GACCiB,EAAAC,cAACC,EAAI,CAACrB,UAAWkB,GAAoB,GAAAU,OAAG7B,EAAO,QAO7D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport type { StandardLonghandProperties } from \"csstype\";\n\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n /**\n * @description 百分比,不要百分号\n */\n dots?: number[];\n /**\n * 苗条模式\n */\n solid?: boolean;\n backgroundColor?: StandardLonghandProperties[\"color\"];\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> = props => {\n const {\n percent = 88,\n className,\n showPercent = false,\n doneColor = \"\",\n percentColor = \"\",\n height = 28,\n dots = [],\n solid = false,\n backgroundColor = \"\",\n } = props;\n const progresslcs = classNames(\"xh-progress\", className, {\n dots: dots.length > 0,\n });\n\n const showPercentcls = classNames(\n \"progress-bar\",\n { dots: dots.length > 0 },\n { solid },\n { h5: process.env.TARO_ENV === \"h5\" }\n );\n const showbarPercentcls = classNames(\"progress-bar-percent\", { solid });\n return (\n <View\n className={progresslcs}\n style={{\n height: height && pxTransform(height),\n }}\n >\n <View\n className={classNames(\"progress\", { solid })}\n style={{ backgroundColor }}\n >\n {dots.length > 0 ? (\n <React.Fragment>\n {dots.map(item => (\n <View\n style={{\n width: `${item}%`,\n }}\n key={item}\n data-progress={item}\n className={showPercentcls}\n >\n {process.env.TARO_ENV !== \"h5\" && (\n <View className=\"progress-bar-text\">{item}%</View>\n )}\n </View>\n ))}\n <View className=\"progress-cover\" style={{ width: `${percent}%` }} />\n </React.Fragment>\n ) : (\n <View\n style={{\n width: `${percent}%`,\n backgroundColor: doneColor,\n color: percentColor,\n }}\n className={showPercentcls}\n >\n {showPercent && (\n <View className={showbarPercentcls}>{`${percent}%`}</View>\n )}\n </View>\n )}\n </View>\n </View>\n );\n};\n\nexport default Progress;\n"],"names":["Progress","props","_a","percent","className","_b","showPercent","_c","doneColor","_d","percentColor","_e","height","_f","dots","_g","solid","_h","backgroundColor","progresslcs","classNames","length","showPercentcls","h5","process","env","TARO_ENV","showbarPercentcls","React","View","style","pxTransform","createElement","Fragment","map","item","width","concat","key","color"],"mappings":"oIA2BM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EASED,EAAKE,QATPA,aAAU,GAAED,EACZE,EAQEH,EAAKG,UAPPC,EAOEJ,EAPiBK,YAAnBA,OAAW,IAAAD,GAAQA,EACnBE,EAMEN,YANFO,OAAY,IAAAD,EAAA,KACZE,EAKER,EAAKS,aALPA,OAAY,IAAAD,EAAG,GAAEA,EACjBE,EAIEV,EAJSW,OAAXA,OAAS,IAAAD,EAAA,GAAEA,EACXE,EAGEZ,EAAKa,KAHPA,aAAO,GAAED,EACTE,EAEEd,EAFWe,MAAbA,OAAK,IAAAD,GAAQA,EACbE,EACEhB,kBADFiB,OAAkB,IAAAD,EAAA,KAEdE,EAAcC,EAAW,cAAehB,EAAW,CACvDU,KAAMA,EAAKO,OAAS,IAGhBC,EAAiBF,EACrB,eACA,CAAEN,KAAMA,EAAKO,OAAS,GACtB,CAAEL,MAAKA,GACP,CAAEO,GAA6B,OAAzBC,QAAQC,IAAIC,WAEdC,EAAoBP,EAAW,uBAAwB,CAAEJ,MAAKA,IACpE,OACEY,gBAACC,EAAI,CACHzB,UAAWe,EACXW,MAAO,CACLlB,OAAQA,GAAUmB,EAAYnB,KAGhCgB,EAAAI,cAACH,EAAI,CACHzB,UAAWgB,EAAW,WAAY,CAAEJ,MAAKA,IACzCc,MAAO,CAAEZ,gBAAeA,IAEvBJ,EAAKO,OAAS,EACbO,EAACI,cAAAJ,EAAMK,SAAQ,KACZnB,EAAKoB,KAAI,SAAAC,GAAQ,OAChBP,EAACI,cAAAH,EACC,CAAAC,MAAO,CACLM,MAAO,GAAGC,OAAAF,EAAO,MAEnBG,IAAKH,EACU,gBAAAA,EACf/B,UAAWkB,GAEe,OAAzBE,QAAQC,IAAIC,UACXE,gBAACC,EAAI,CAACzB,UAAU,qBAAqB+B,EAAa,SAIxDP,EAACI,cAAAH,EAAK,CAAAzB,UAAU,iBAAiB0B,MAAO,CAAEM,MAAO,GAAGC,OAAAlC,WAGtDyB,EAACI,cAAAH,EACC,CAAAC,MAAO,CACLM,MAAO,GAAGC,OAAAlC,EAAU,KACpBe,gBAAiBV,EACjB+B,MAAO7B,GAETN,UAAWkB,GAEVhB,GACCsB,EAAAI,cAACH,EAAI,CAACzB,UAAWuB,GAAoB,GAAAU,OAAGlC,EAAO,QAO7D"}