vue-echarts 8.3.0 → 8.3.1
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/README.md +6 -2
- package/README.zh-Hans.md +6 -2
- package/dist/graphic.d.ts +26 -26
- package/dist/graphic.js +34 -37
- package/dist/graphic.js.map +1 -1
- package/dist/{index-BujxhN-1.d.ts → index-GjFScMW2.d.ts} +6 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.js +60 -57
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +3 -3
- package/dist/index.min.js.map +1 -1
- package/dist/style.css +2 -2
- package/dist/{update-CWPvYl2M.js → update-DiQcDAnW.js} +7 -8
- package/dist/update-DiQcDAnW.js.map +1 -0
- package/package.json +22 -19
- package/dist/update-CWPvYl2M.js.map +0 -1
package/dist/index.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("echarts"),require("vue")):typeof define==`function`&&define.amd?define([`echarts`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.VueECharts=t(e.echarts,e.Vue))})(this,function(e,t){var n=Object.defineProperty,r=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r};let i=[`getWidth`,`getHeight`,`getDom`,`getZr`,`getId`,`getOption`,`isSSR`,`getDevicePixelRatio`,`resize`,`makeActionFromEvent`,`dispatchAction`,`updateLabelLayout`,`convertToPixel`,`convertToLayout`,`convertFromPixel`,`containPixel`,`getVisual`,`renderToCanvas`,`renderToSVGString`,`getSvgDataURL`,`getDataURL`,`getConnectedDataURL`,`appendData`,`clear`];function a(e,t,n){let r=()=>{if(n())throw Error(`ECharts has been disposed.`);let t=e.value;if(!t)throw Error(`ECharts is not initialized yet.`);return t},a={};for(let e of i)a[e]=(...t)=>{let n=r();return Reflect.apply(n[e],n,t)};return a.dispose=t,a.isDisposed=n,a}function o(e){return typeof e==`function`||Array.isArray(e)&&e.length>0}function s(e){if(typeof e==`function`)return e;if(
|
|
2
|
-
x-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;}
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("echarts"),require("vue")):typeof define==`function`&&define.amd?define([`echarts`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.VueECharts=t(e.echarts,e.Vue))})(this,function(e,t){var n=Object.defineProperty,r=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r};let i=[`getWidth`,`getHeight`,`getDom`,`getZr`,`getId`,`getOption`,`isSSR`,`getDevicePixelRatio`,`resize`,`makeActionFromEvent`,`dispatchAction`,`updateLabelLayout`,`convertToPixel`,`convertToLayout`,`convertFromPixel`,`containPixel`,`getVisual`,`renderToCanvas`,`renderToSVGString`,`getSvgDataURL`,`getDataURL`,`getConnectedDataURL`,`appendData`,`clear`];function a(e,t,n){let r=()=>{if(n())throw Error(`ECharts has been disposed.`);let t=e.value;if(!t)throw Error(`ECharts is not initialized yet.`);return t},a={};for(let e of i)a[e]=(...t)=>{let n=r();return Reflect.apply(n[e],n,t)};return a.dispose=t,a.isDisposed=n,a}function o(e){return typeof e==`function`||Array.isArray(e)&&e.length>0}function s(e){if(typeof e==`function`)return e;if(Array.isArray(e)&&e.length!==0)return(...t)=>{let n;for(let r of e.slice())n=r(...t)||n;return n}}function c(){return typeof window<`u`&&typeof document<`u`}let l=/^on[^a-z]/,u=e=>l.test(e);function d(e){if(!u(e))return null;let t=e.charAt(2).toLowerCase()+e.slice(3),n=t.endsWith(`Once`);return n&&(t=t.slice(0,-4)),{event:t,once:n}}function f(e){let t=Number(e);return Number.isInteger(t)&&t>=0&&t<2**32-1&&String(t)===e}function p(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function m(e,t){return e===0||t===0}function h(e,t){if(Object.is(e,t))return typeof e!=`object`||!e;if(!p(e)||!p(t))return!1;let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&Object.is(e[n],t[n]))}function g(e){(0,t.warn)(`[vue-echarts] ${e}`)}function _(n,r,i){let a=()=>typeof r.value==`object`?r.value:void 0;return(0,t.watch)([i,n,()=>!!r.value,()=>a()?.throttle??100],([t,n,r,i],o,s)=>{if(!n||!t||!r)return;let c=n.getWidth(),l=n.getHeight(),u=()=>{m(c,l)||c===n.getWidth()&&l===n.getHeight()||(n.resize(),a()?.onResize?.())},d=i?(0,e.throttle)(u,i):void 0,f=new ResizeObserver(([e])=>{c=e.contentRect.width,l=e.contentRect.height,(d??u)()});f.observe(t),s(()=>{f.disconnect(),d?.clear()})},{flush:`sync`})}let v={autoresize:[Boolean,Object]},y=Symbol();function ee(e,n,r,i){let a=(0,t.inject)(y,void 0);return(0,t.watch)(()=>e.value&&n.value?{type:r.value||void 0,options:{...(0,t.toValue)(a),...i.value}}:null,t=>{let n=e.value;if(!n)return;if(!t){n.hideLoading();return}let{type:r,options:i}=t;r?n.showLoading(r,i):n.showLoading(i)},{deep:!0,immediate:!0,flush:`sync`})}let b={loading:Boolean,loadingType:String,loadingOptions:Object},x={tooltip:[`tooltip`,`formatter`],dataView:[`toolbox`,`feature`,`dataView`,`optionToContent`]},te=/-__proto__(?:-|$)/;function ne(e){return(e===`tooltip`||e.startsWith(`tooltip-`)||e===`dataView`||e.startsWith(`dataView-`))&&!e.endsWith(`-`)&&!e.includes(`--`)&&!te.test(e)}function S(e){let t=e.startsWith(`tooltip`)?`tooltip`:`dataView`,n=e.slice(t.length),r=n?n.slice(1).split(`-`):[],i=x[t];if(f(r[0]??``)){let e=r.shift();r.push(i[0],e,...i.slice(1))}else r.push(...i);return r}function C(e,t,n,r){let i=Array.isArray(e);if(i!==f(t))return;let a=i?e[Number(t)]:e[t],o;if(Array.isArray(a))o=r.has(a)?a:[...a];else if(p(a))o=r.has(a)?a:{...a};else if(a===void 0&&!i&&!f(n))o={};else return;return r.add(o),w(e,t,o),o}function w(e,t,n){if(Array.isArray(e)){e[Number(t)]=n;return}e[t]=n}function T(e,t,n,r,i=!1){let a=e;for(let e=0;e<t.length-1;e++){let n=C(a,t[e],t[e+1],r);if(!n)return!1;a=n}if(Array.isArray(a))return!1;let o=t[t.length-1];return(!i||a[o]===void 0)&&w(a,o,n),!0}function re(e,n){let r=(0,t.getCurrentInstance)(),i,a=(0,t.shallowReactive)({}),o=(0,t.shallowReactive)({}),s=(0,t.shallowRef)(!1),c=(0,t.shallowRef)(!1),l=(t=!1)=>{let n=new Set;for(let r in e)r!==`graphic`&&(ne(r)?n.add(r):t&&g(`Invalid slot name: ${r}`));return n};l(!0);let u=new Set,d=u,f=new Set,p=new Map;function m(e){if(c.value=e,!e){f.clear();for(let e of Object.keys(o))delete o[e]}}function h(e){let t=e.size!==u.size;for(let n of u)e.has(n)||(t=!0,delete o[n],delete a[n],p.delete(n));return t&&(u=e),t}let _=()=>{if(d=l(),d.size===0||!c.value||!s.value)return;let n=r.vnode.el.ownerDocument;return i??=n.createElement(`div`),(0,t.h)(t.Teleport,{to:i},Array.from(d,n=>{let r=e[n],i=n in o?r?.(o[n]):void 0;return(0,t.h)(`div`,{key:n,ref:e=>{e?a[n]=e:delete a[n]},style:{display:`contents`}},i)}))};function v(t){let n=l();h(n);let r=new WeakSet,i;for(let e of f)n.has(e)||(i??={...t},T(i,S(e),null,r,!0));let s=[];for(let c of n){i??={...t};let n=p.get(c);n||(n={path:S(c),formatter:t=>{if(e[c])return c in o&&Object.is(o[c],t)&&delete o[c],o[c]=t,a[c]}},p.set(c,n)),T(i,n.path,n.formatter,r)&&s.push(c)}return{option:i??t,commit:()=>{s.forEach(e=>f.add(e))}}}return(0,t.onUpdated)(()=>{h(d)&&n()}),(0,t.onMounted)(()=>{u=d,s.value=!0}),{render:_,prepare:v,setReady:m,cancelPendingUpdate:()=>{h(l())}}}let E=`x-vue-echarts`,D=Symbol.for(`vue-echarts.lifecycle`);function ie(){let e=globalThis.customElements;if(!e)return!1;let t=e.get(E);if(t)return!!t[D];class n extends HTMLElement{__dispose=null;disconnectedCallback(){this.__dispose&&queueMicrotask(()=>{if(!this.isConnected&&this.__dispose){let e=this.__dispose;this.__dispose=null,e()}})}}return Object.defineProperty(n,D,{value:!0}),e.define(E,n),!0}function ae(e){return null}function oe(e,n){let r=new Map,i=new Map,a=new Set,c;function l(){for(let e of r.values())e.emitter.off(e.event,e.handler);r.clear()}function u(){a.clear();let t=e.value;for(let[e,t]of i)n[e]!==t&&i.delete(e);if(!t){l(),c=void 0;return}c&&c!==t&&l(),c=t;for(let e in n){let c=d(e);if(!c||c.event.startsWith(`native:`)||c.event===`zr:`)continue;let l=c.event.startsWith(`zr:`),u=(l?c.event.slice(3):c.event).toLowerCase(),f=n[e],p=r.get(e);if(c.once&&i.get(e)===f)continue;if(p&&p.source===f&&o(f)){a.add(e);continue}let m=s(f);if(p&&(p.emitter.off(p.event,p.handler),r.delete(e)),!m)continue;let h=l?t.getZr():t,g=m;c.once&&(g=(...t)=>{r.delete(e),i.set(e,f),h.off(u,g),m(...t)}),h.on(u,g),r.set(e,{emitter:h,event:u,source:f,handler:g}),a.add(e)}for(let[e,t]of r)a.has(e)||(t.emitter.off(t.event,t.handler),r.delete(e))}let f=(0,t.watchSyncEffect)(u);(0,t.getCurrentInstance)()&&(0,t.onUpdated)(u);let p=()=>{f(),l()};return(0,t.onScopeDispose)(p),{sync:u,stop:p}}function se(e){let t={};for(let n in e){if(n.startsWith(`onNative:`)){let r=n.slice(9);r&&(t[`on:${r}`]=e[n]);continue}u(n)||(t[n]=e[n])}return t}function O(e){return typeof e==`string`||typeof e==`number`?String(e):void 0}function k(t,n,r){if(!p(t))return!0;let i=Object.create(null);for(let a of Object.keys(t)){let o=t[a];if(o!==void 0){if(r===`graphic`&&a===`$action`&&(n.hasAction=!0),r===`graphic`&&(a===`elements`||a===`children`)&&Array.isArray(o)){i[a]=A(o,n,`graphic`,!0);continue}if(r===`option`){let t=e.ComponentModel.hasClass(a);if(Array.isArray(o)||t&&p(o)){i[a]=A(Array.isArray(o)?o:[o],n,a===`graphic`?`graphic`:void 0,t);continue}}i[a]=r===`media`&&a===`option`?k(o,n,`option`):k(o,n)}}return i}function A(e,t,n,r){let i=[];for(let a of e){let e=r?a:void 0;i.push({id:O(e?.id),name:O(e?.name),...n===`graphic`?{type:O(e?.type),parentId:O(e?.parentId)}:{},shape:k(a,t,n)})}return i}function j(t){let n=t,r={hasAction:!1},i=Object.create(null),a=Object.create(null),o=[];for(let t of Object.keys(n)){let s=n[t],c=e.ComponentModel.hasClass(t);if(Array.isArray(s)||c&&p(s)){let e=t===`options`?`option`:t===`media`?`media`:t===`graphic`?`graphic`:void 0;i[t]=A(Array.isArray(s)?s:[s],r,e,c);continue}if(p(s)){a[t]=k(s,r,t===`baseOption`?`option`:void 0);continue}s!==void 0&&!c&&o.push(t)}return{collections:i,objectShapes:a,leaves:o,hasAction:r.hasAction}}function M(e,t){return t?t.length<e.length:e.length>0}function N(e){return e.id===void 0?e.name===void 0?void 0:`name:${e.name}`:`id:${e.id}`}function P(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)if(N(e[r])!==N(t[r]))return!0;return!1}function F(e,t){let n=new Map;for(let t=0;t<e.length;t++){let r=e[t];r.id!==void 0&&n.set(r.id,t)}return t.every((e,t)=>{let r=e.id===void 0?void 0:n.get(e.id);return r===void 0||r===t})}function I(e,t){if(e===!0||t===!0)return!1;let n=Array.isArray(e),r=Array.isArray(t);if(n||r)return!n||!r||M(e,t)||P(e,t)||L(e,t)!==0;for(let n in e){let r=t[n];if(r===void 0||I(e[n],r))return!0}return!1}function L(e,t){let n=new Map;for(let e of t)e.id!==void 0&&!n.has(e.id)&&n.set(e.id,e);let r=0;for(let i=0;i<e.length;i++){let a=e[i],o=a.id===void 0?t[i]:n.get(a.id);if(o&&(a.type!==o.type||a.parentId!==o.parentId||I(a.shape,o.shape))){if(a.id!==void 0)return 2;r=1}}return r}function R(t,n){if(n.objectShapes.aria&&!t.objectShapes.aria)return!0;for(let r in n.collections)if(!t.collections[r]&&!t.objectShapes[r]&&!t.leaves.includes(r)&&!e.ComponentModel.hasClass(r))return!0;for(let e in t.objectShapes){let r=t.objectShapes[e],i=n.objectShapes[e];if(r&&i){if(I(r,i))return!0;continue}if(!n.leaves.includes(e))return!0}for(let e of t.leaves)if(!n.leaves.includes(e)&&n.collections[e]===void 0&&n.objectShapes[e]===void 0)return!0;return!1}function z(e,t){let n=t?L(e,t):0;return n===2?n:n===0&&!M(e,t)&&!(t&&P(e,t))?0:t&&!F(e,t)?2:1}function ce(t,n){let r=j(n);if(!t)return{signature:r,plan:{notMerge:!1}};let i=R(t,r),a=[];for(let n in t.collections){let o=r.collections[n],s=z(t.collections[n],o);e.ComponentModel.hasClass(n)?s===2?i=!0:s===1&&a.push(n):i||=!o||s!==0}let o=r.hasAction?a.filter(e=>e!==`graphic`):a,s=i&&!r.hasAction;return{signature:r,plan:!s&&o.length?{notMerge:s,replaceMerge:o.sort()}:{notMerge:s}}}var B=`x-vue-echarts{display:block;width:100%;height:100%;min-width:0;min-height:0;}
|
|
2
|
+
x-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;border-radius:inherit;}
|
|
3
3
|
x-vue-echarts>.echarts-host>:first-child,x-vue-echarts>.echarts-host>:first-child>canvas{border-radius:inherit;}
|
|
4
|
-
`;if(c())if(Array.isArray(document.adoptedStyleSheets)&&`replaceSync`in CSSStyleSheet.prototype){let e=new CSSStyleSheet;e.replaceSync(B),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e]}else{let e=document.createElement(`style`);e.textContent=B,document.head.appendChild(e)}let le=ie(),V=Symbol(),H=Symbol(),U=Symbol(),W=Symbol(),G=
|
|
4
|
+
`;if(c()){if(Array.isArray(document.adoptedStyleSheets)&&`replaceSync`in CSSStyleSheet.prototype){let e=new CSSStyleSheet;e.replaceSync(B),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e]}else{let e=document.createElement(`style`);e.textContent=B,document.head.appendChild(e)}}let le=ie(),V=Symbol(),H=Symbol(),U=Symbol(),W=Symbol(),G={option:Object,theme:{type:[Object,String]},initOptions:Object,updateOptions:Object,group:String,manualUpdate:Boolean,...v,...b},K=(0,t.defineComponent)({name:`Echarts`,inheritAttrs:!1,props:G,emits:{},slots:Object,setup(n,{attrs:r,expose:i,slots:o}){let s=(0,t.shallowRef)(),c=(0,t.shallowRef)(),l=(0,t.shallowRef)(),u=(0,t.shallowRef)(0),d=0,f=(0,t.inject)(H,null),p=(0,t.inject)(U,null),v=(0,t.inject)(W,null),y=(0,t.toRef)(n,`autoresize`),b=(0,t.toRef)(n,`manualUpdate`),x=(0,t.toRef)(n,`loading`),te=(0,t.toRef)(n,`loadingType`),ne=(0,t.toRef)(n,`loadingOptions`),S=(0,t.computed)(()=>n.theme??(0,t.toValue)(f)??void 0),C=(0,t.computed)(()=>n.initOptions??(0,t.toValue)(p)??void 0),w=(0,t.computed)(()=>n.updateOptions??(0,t.toValue)(v)),T=(0,t.shallowRef)(!1),{render:D,prepare:ie,setReady:O,cancelPendingUpdate:k}=re(o,Y),A=ae({slots:o,manualUpdate:b,requestUpdate:()=>Y(2)}),j,M,N=!1,P=!1,F=!1,I=!1,L=0,R=!1;function z(){return n.option??(A&&(o.graphic||I)?{}:void 0)}function B(e){return e!==void 0&&l.value===e&&!T.value}function G(e,t,n){let r=++L;return j=null,R=!1,t(),!B(e)||L!==r?!1:(j=n,R=!0,!0)}function K(e){if(!P||N)return!1;de();let t=L+1;N=!0;try{return G(e,()=>e.setTheme(S.value||{}),j===void 0?void 0:null)}catch(e){throw L===t&&(N=!1),e}}function q(e,t,n,r){let i=n===`manual`;F=!1;let a=ie(t),s=a.option,c=!!(A&&o.graphic),l=i?r:w.value??void 0,u=null,d=n===`graphic`&&c&&I&&R;if(d)u=j??null;else if(!i&&!l){let e=c?{...s,graphic:void 0}:s,t=ce(j??void 0,e);l=!t.signature.hasAction&&j===null?{...t.plan,notMerge:!0}:t.plan,u=t.signature}let f=l?.replaceMerge,p=typeof f==`string`?[f]:f??[],m=A?.prepare(s,!R||!I||!!l?.notMerge||p.includes(`graphic`)||i),h=m?.option??s;(m?.replace||I&&!c)&&!l?.notMerge&&!p.includes(`graphic`)&&(l={...l,replaceMerge:[...p,`graphic`]});let g=p.some(e=>e!==`graphic`);d&&!l?.notMerge&&!g&&(h={graphic:h.graphic}),de(),G(e,()=>e.setOption(h,l),u)&&(a.commit(),m?.commit(),I=c,P=!0,i||(M=t),K(e)&&!i&&q(e,t))}function J(e){d|=e,u.value++}function Y(e=1){!b.value&&!F&&!T.value&&J(e)}function ue(){let e=d;d=0;let t=l.value;if(!e||!B(t))return;if(e&8){X(),pe();return}if(F)return;let n=e&3?z()??M:M,r=!N&&P;(!r||K(t))&&!b.value&&n&&q(t,n,e===2&&!r?`graphic`:void 0)}o.graphic&&!A&&g("Detected `#graphic` slot but no extension is registered. Import from `vue-echarts/graphic` to enable it.");let{sync:de,stop:fe}=oe(l,r);function X(){d=0,A?.cancelPendingFlush(),L++;let e=l.value;l.value=void 0,O(!1),j=void 0,R=!1,M=void 0,F=!1,I=!1,e?.dispose()}function pe(){d=0,P=!1;let r=c.value,i=(0,e.init)(r,S.value,C.value);if(l.value=i,!B(i))return;N=!0;function a(){let e=b.value?n.option:z();e&&(b.value?q(i,e,`manual`,w.value??void 0):q(i,e)),O(B(i))}if(y.value){F=!0,(0,t.nextTick)(()=>{B(i)&&(y.value&&!m(r.offsetWidth,r.offsetHeight)&&(i.resize(),!B(i))||(F?(F=!1,a()):O(!0)))});return}a()}let me=(e,t,r)=>{if(!n.manualUpdate){g("`setOption` is only available when `manual-update` is `true`.");return}let i=l.value;B(i)&&q(i,e,`manual`,typeof t==`boolean`?{notMerge:t,lazyUpdate:r}:t??(r===void 0?void 0:{lazyUpdate:r}))},he=(0,t.watch)(S,(e,t)=>{h(e,t)||(N=!1,J(4))},{deep:!0,flush:`sync`}),ge=(0,t.watch)(C,(e,t)=>{h(e,t)||J(8)},{deep:!0,flush:`sync`});function Z(){return(0,t.watch)(()=>b.value?V:n.option,(e,t)=>{e!==V&&t!==V&&(e??z())&&Y()},{deep:!0})}let Q=Z(),_e=(0,t.watch)(b,()=>J(8),{flush:`sync`}),ve=(0,t.watch)(u,ue,{flush:`post`}),ye=(0,t.watchSyncEffect)(()=>{let e=l.value;B(e)&&(e.group=n.group??``)}),be=ee(l,x,te,ne),xe=_(l,y,c);function Se(){T.value||(T.value=!0,he(),ge(),Q(),_e(),ve(),ye(),be(),xe(),fe(),X())}let $=a(l,Se,()=>T.value),Ce=$.clear;return $.clear=()=>{let e=l.value;if(!B(e))return Ce();F=!1,d=0,A?.cancelPendingFlush(),k(),Q(),Q=Z(),G(e,()=>e.clear(),void 0)&&(M=void 0,I=!1,P=!0)},(0,t.onMounted)(()=>{T.value||pe()}),(0,t.onBeforeUnmount)(()=>{if(Q(),T.value)return;T.value=!0;let e=s.value;if(le&&e?.isConnected&&e.__dispose===null){e.__dispose=X;return}X()}),i(Object.assign({setOption:me,get root(){return s.value??void 0},get chart(){let e=l.value;return B(e)?e:void 0}},$)),(()=>{let e=[(0,t.h)(`div`,{ref:c,class:`echarts-host`})];if(!T.value){let t=D();t&&e.push(t);let n=A?.render();n&&e.push(n)}let n=se(r);return(0,t.h)(E,{...n,ref:s,class:[`echarts`,n.class]},e)})}});var q=r({INIT_OPTIONS_KEY:()=>U,LOADING_OPTIONS_KEY:()=>y,THEME_KEY:()=>H,UPDATE_OPTIONS_KEY:()=>W,default:()=>J}),J=K;return Object.assign(J,q)});
|
|
5
5
|
//# sourceMappingURL=index.min.js.map
|
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","names":["Teleport","ComponentModel","cssRules","useGraphic","ECharts","exported"],"sources":["../src/composables/api.ts","../src/utils.ts","../src/composables/autoresize.ts","../src/composables/loading.ts","../src/composables/slot.ts","../src/wc.ts","../src/graphic/runtime.ts","../src/core/events.ts","../src/update.ts","../src/style.css?raw","../src/style.ts","../src/ECharts.ts","../src/index.ts","../src/global.ts"],"sourcesContent":["import type { Ref } from \"vue\";\nimport type { EChartsType } from \"../types\";\n\nconst METHOD_NAMES = [\n \"getWidth\",\n \"getHeight\",\n \"getDom\",\n \"getZr\",\n \"getId\",\n \"getOption\",\n \"isSSR\",\n \"getDevicePixelRatio\",\n \"resize\",\n \"makeActionFromEvent\",\n \"dispatchAction\",\n \"updateLabelLayout\",\n \"convertToPixel\",\n \"convertToLayout\",\n \"convertFromPixel\",\n \"containPixel\",\n \"getVisual\",\n \"renderToCanvas\",\n \"renderToSVGString\",\n \"getSvgDataURL\",\n \"getDataURL\",\n \"getConnectedDataURL\",\n \"appendData\",\n \"clear\",\n] as const;\n\ntype MethodName = (typeof METHOD_NAMES)[number];\n\nexport type PublicMethods = Pick<EChartsType, MethodName | \"dispose\" | \"isDisposed\">;\n\nexport function usePublicAPI(\n chart: Ref<EChartsType | undefined>,\n dispose: () => void,\n isDisposed: () => boolean,\n): PublicMethods {\n const getInstance = (): EChartsType => {\n if (isDisposed()) {\n throw new Error(\"ECharts has been disposed.\");\n }\n const instance = chart.value;\n if (!instance) {\n throw new Error(\"ECharts is not initialized yet.\");\n }\n return instance;\n };\n\n const api: Record<string, (...args: unknown[]) => unknown> = {};\n for (const name of METHOD_NAMES) {\n api[name] = (...args: unknown[]): unknown => {\n const instance = getInstance();\n return Reflect.apply(instance[name], instance, args);\n };\n }\n api.dispose = dispose;\n api.isDisposed = isDisposed;\n return api as PublicMethods;\n}\n","import { warn as vueWarn } from \"vue\";\n\nexport type AttrMap = Record<string, unknown>;\nexport type EventHandler = (...args: unknown[]) => unknown;\n\nexport function hasEventHandler(value: unknown): boolean {\n return typeof value === \"function\" || (Array.isArray(value) && value.length > 0);\n}\n\nexport function createEventInvoker(value: unknown): EventHandler | undefined {\n if (typeof value === \"function\") {\n return value as EventHandler;\n }\n\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n\n return (...args: unknown[]): unknown => {\n let result: unknown;\n for (const handler of value.slice()) {\n result = handler(...args) || result;\n }\n return result;\n };\n}\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\n// Copied from\n// https://github.com/vuejs/vue-next/blob/5a7a1b8293822219283d6e267496bec02234b0bc/packages/shared/src/index.ts#L40-L41\nconst onRE = /^on[^a-z]/;\nexport const isOn = (key: string): boolean => onRE.test(key);\n\ntype ParsedOnEvent = {\n event: string;\n once: boolean;\n};\n\nexport function parseOnEvent(key: string): ParsedOnEvent | null {\n if (!isOn(key)) {\n return null;\n }\n\n let event = key.charAt(2).toLowerCase() + key.slice(3);\n const once = event.endsWith(\"Once\");\n if (once) {\n event = event.slice(0, -4);\n }\n\n return { event, once };\n}\n\nexport function isValidArrayIndex(key: string): boolean {\n const num = Number(key);\n return Number.isInteger(num) && num >= 0 && num < Math.pow(2, 32) - 1 && String(num) === key;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n\nexport function hasZeroDimension(width: number, height: number): boolean {\n return width === 0 || height === 0;\n}\n\nexport function isIgnorableWatchChange(value: unknown, previous: unknown): boolean {\n if (Object.is(value, previous)) {\n return value === null || typeof value !== \"object\";\n }\n\n if (!isPlainObject(value) || !isPlainObject(previous)) {\n return false;\n }\n\n const keys = Object.keys(value);\n return (\n keys.length === Object.keys(previous).length &&\n keys.every((key) => Object.hasOwn(previous, key) && Object.is(value[key], previous[key]))\n );\n}\n\nconst LOG_PREFIX = \"[vue-echarts]\";\n\nexport function warn(message: string): void {\n vueWarn(`${LOG_PREFIX} ${message}`);\n}\n","import { watch } from \"vue\";\nimport { throttle } from \"echarts/core\";\n\nimport type { Ref, PropType } from \"vue\";\nimport type { EChartsType, AutoResize } from \"../types\";\nimport { hasZeroDimension } from \"../utils\";\n\nexport function useAutoresize(\n chart: Ref<EChartsType | undefined>,\n autoresize: Ref<AutoResize | undefined>,\n container: Ref<HTMLElement | undefined>,\n): () => void {\n const getOptions = () => (typeof autoresize.value === \"object\" ? autoresize.value : undefined);\n const resizeSources = [\n container,\n chart,\n () => Boolean(autoresize.value),\n () => getOptions()?.throttle ?? 100,\n ] as const;\n\n return watch(\n resizeSources,\n ([container, chart, enabled, wait], _, onCleanup) => {\n if (!chart || !container || !enabled) {\n return;\n }\n\n let observedWidth = chart.getWidth();\n let observedHeight = chart.getHeight();\n\n const resize = () => {\n if (\n hasZeroDimension(observedWidth, observedHeight) ||\n (observedWidth === chart.getWidth() && observedHeight === chart.getHeight())\n ) {\n return;\n }\n chart.resize();\n getOptions()?.onResize?.();\n };\n const throttledResize = wait ? throttle(resize, wait) : undefined;\n\n const observer = new ResizeObserver(([entry]) => {\n observedWidth = entry.contentRect.width;\n observedHeight = entry.contentRect.height;\n (throttledResize ?? resize)();\n });\n\n observer.observe(container);\n onCleanup(() => {\n observer.disconnect();\n throttledResize?.clear();\n });\n },\n // Stop observer work before the outgoing chart can be disposed.\n { flush: \"sync\" },\n );\n}\n\nexport const autoresizeProps = {\n autoresize: [Boolean, Object] as PropType<AutoResize>,\n};\n","import { inject, toValue, watch } from \"vue\";\n\nimport type { Ref, InjectionKey, PropType } from \"vue\";\nimport type { EChartsType, LoadingOptions, LoadingOptionsInjection } from \"../types\";\n\nexport const LOADING_OPTIONS_KEY: InjectionKey<LoadingOptionsInjection> = Symbol();\n\nexport function useLoading(\n chart: Ref<EChartsType | undefined>,\n loading: Ref<boolean | undefined>,\n loadingType: Ref<string | undefined>,\n loadingOptions: Ref<LoadingOptions | undefined>,\n): () => void {\n const defaultLoadingOptions = inject(LOADING_OPTIONS_KEY, undefined);\n\n return watch(\n () =>\n loading.value\n ? {\n instance: chart.value,\n visible: true as const,\n type: loadingType.value || undefined,\n options: {\n ...toValue(defaultLoadingOptions),\n ...loadingOptions.value,\n },\n }\n : { instance: chart.value, visible: false as const },\n (state) => {\n const { instance } = state;\n if (!instance) {\n return;\n }\n\n if (!state.visible) {\n instance.hideLoading();\n return;\n }\n\n const { type, options: currentOptions } = state;\n if (type) {\n instance.showLoading(type, currentOptions);\n } else {\n instance.showLoading(currentOptions);\n }\n },\n { deep: true, immediate: true, flush: \"sync\" },\n );\n}\n\nexport const loadingProps = {\n loading: Boolean,\n loadingType: String,\n loadingOptions: Object as PropType<LoadingOptions>,\n};\n","import {\n getCurrentInstance,\n h,\n Teleport,\n onUpdated,\n onMounted,\n shallowRef,\n shallowReactive,\n} from \"vue\";\nimport type { Slots, SlotsType } from \"vue\";\nimport type { Option } from \"../types\";\nimport { isPlainObject, isValidArrayIndex, warn } from \"../utils\";\nimport type { TooltipComponentFormatterCallbackParams } from \"echarts\";\nimport type { VChartSlotsExtension } from \"../index\";\n\nconst SLOT_OPTION_PATHS = {\n tooltip: [\"tooltip\", \"formatter\"],\n dataView: [\"toolbox\", \"feature\", \"dataView\", \"optionToContent\"],\n} as const;\nconst PROTOTYPE_SEGMENT_RE = /-__proto__(?:-|$)/;\ntype SlotPrefix = keyof typeof SLOT_OPTION_PATHS;\ntype SlotName = SlotPrefix | `${SlotPrefix}-${string}`;\ntype SlotMap<T> = Partial<Record<SlotName, T>>;\n\nfunction isValidSlotName(key: string): key is SlotName {\n return (\n (key === \"tooltip\" ||\n key.startsWith(\"tooltip-\") ||\n key === \"dataView\" ||\n key.startsWith(\"dataView-\")) &&\n !key.endsWith(\"-\") &&\n !key.includes(\"--\") &&\n !PROTOTYPE_SEGMENT_RE.test(key)\n );\n}\n\nfunction getSlotPath(key: SlotName): string[] {\n const prefix: SlotPrefix = key.startsWith(\"tooltip\") ? \"tooltip\" : \"dataView\";\n const rest = key.slice(prefix.length);\n const path = rest ? rest.slice(1).split(\"-\") : [];\n const target = SLOT_OPTION_PATHS[prefix];\n if (isValidArrayIndex(path[0] ?? \"\")) {\n const index = path.shift()!;\n path.push(target[0], index, ...target.slice(1));\n } else {\n path.push(...target);\n }\n return path;\n}\n\ntype Container = Record<string, unknown> | unknown[];\n\nfunction ensureChild(parent: Container, seg: string, nextSeg: string): Container | undefined {\n const parentIsArray = Array.isArray(parent);\n if (parentIsArray !== isValidArrayIndex(seg)) {\n return undefined;\n }\n const next = parentIsArray ? parent[Number(seg)] : parent[seg];\n\n let child: Container;\n if (Array.isArray(next)) {\n child = [...next];\n } else if (isPlainObject(next)) {\n child = { ...next };\n } else if (next === undefined && !parentIsArray && !isValidArrayIndex(nextSeg)) {\n child = {};\n } else {\n return undefined;\n }\n writeSegment(parent, seg, child);\n return child;\n}\n\nfunction writeSegment(parent: Container, seg: string, value: unknown): void {\n if (Array.isArray(parent)) {\n parent[Number(seg)] = value;\n return;\n }\n parent[seg] = value;\n}\n\nfunction writePath(\n root: Option,\n path: readonly string[],\n value: unknown,\n preserveDefined = false,\n): boolean {\n let current: Container = root;\n for (let i = 0; i < path.length - 1; i++) {\n const child = ensureChild(current, path[i], path[i + 1]);\n if (!child) {\n return false;\n }\n current = child;\n }\n if (Array.isArray(current)) {\n return false;\n }\n const leaf = path[path.length - 1];\n if (!preserveDefined || current[leaf] === undefined) {\n writeSegment(current, leaf, value);\n }\n return true;\n}\n\nexport function useSlotOption(slots: Slots, onSlotsChange: () => void) {\n const instance = getCurrentInstance()!;\n let detachedRoot: HTMLDivElement | undefined;\n const containers = shallowReactive<SlotMap<HTMLElement>>({});\n const params = shallowReactive<SlotMap<unknown>>({});\n const isMounted = shallowRef(false);\n const ready = shallowRef(false);\n\n const collectSlotNames = (warnInvalid = false): SlotName[] => {\n const names: SlotName[] = [];\n for (const key in slots) {\n if (key === \"graphic\") {\n continue;\n }\n if (isValidSlotName(key)) {\n names.push(key);\n } else if (warnInvalid) {\n warn(`Invalid slot name: ${key}`);\n }\n }\n return names;\n };\n collectSlotNames(true);\n\n let slotNames: readonly SlotName[] = [];\n let nextSlotNames = slotNames;\n const patchedSlotNames = new Set<SlotName>();\n const callbacks = new Map<\n SlotName,\n { path: string[]; formatter: (payload: unknown) => HTMLElement | undefined }\n >();\n\n function setReady(value: boolean): void {\n ready.value = value;\n if (value) {\n return;\n }\n patchedSlotNames.clear();\n for (const key of Object.keys(params) as SlotName[]) {\n delete params[key];\n }\n }\n\n function syncSlotNames(names: readonly SlotName[]): boolean {\n if (names.length === slotNames.length && slotNames.every((name) => names.includes(name))) {\n return false;\n }\n\n for (const key of slotNames) {\n if (!names.includes(key)) {\n delete params[key];\n delete containers[key];\n callbacks.delete(key);\n }\n }\n slotNames = names;\n return true;\n }\n\n const render = () => {\n nextSlotNames = collectSlotNames();\n if (nextSlotNames.length === 0 || !ready.value || !isMounted.value) {\n return undefined;\n }\n const ownerDocument = (instance.vnode.el as HTMLElement).ownerDocument;\n detachedRoot ??= ownerDocument.createElement(\"div\");\n\n return h(\n Teleport,\n { to: detachedRoot },\n nextSlotNames.map((slotName) => {\n const slot = slots[slotName];\n const slotContent = slotName in params ? slot?.(params[slotName]) : undefined;\n return h(\n \"div\",\n {\n key: slotName,\n ref: (el) => {\n if (el) {\n containers[slotName] = el as HTMLElement;\n } else {\n delete containers[slotName];\n }\n },\n style: { display: \"contents\" },\n },\n slotContent,\n );\n }),\n );\n };\n\n function prepare(src: Option): { option: Option; commit: () => void } {\n const names = collectSlotNames();\n syncSlotNames(names);\n let root: Option | undefined;\n\n for (const key of patchedSlotNames) {\n if (!names.includes(key)) {\n root ??= { ...src };\n writePath(root, getSlotPath(key), null, true);\n }\n }\n\n if (names.length) {\n root ??= { ...src };\n }\n const patchedNames: SlotName[] = [];\n\n for (const key of names) {\n let callback = callbacks.get(key);\n if (!callback) {\n const formatter = (payload: unknown): HTMLElement | undefined => {\n if (!slots[key]) {\n return undefined;\n }\n // ECharts may update and reuse the same formatter payload object.\n if (key in params && Object.is(params[key], payload)) {\n delete params[key];\n }\n params[key] = payload;\n return containers[key];\n };\n callback = { path: getSlotPath(key), formatter };\n callbacks.set(key, callback);\n }\n\n if (!writePath(root!, callback.path, callback.formatter)) {\n continue;\n }\n patchedNames.push(key);\n }\n\n return {\n option: root ?? src,\n commit: () => {\n // Native theme changes can replay callbacks from an older option backup.\n // Keep their cleanup paths until the chart instance is replaced.\n patchedNames.forEach((name) => patchedSlotNames.add(name));\n },\n };\n }\n\n onUpdated(() => {\n if (syncSlotNames(nextSlotNames)) {\n onSlotsChange();\n }\n });\n\n onMounted(() => {\n slotNames = nextSlotNames;\n isMounted.value = true;\n });\n\n return {\n render,\n prepare,\n setReady,\n cancelPendingUpdate: () => {\n // A queued updated hook must not replay slot changes preceding clear().\n syncSlotNames(collectSlotNames());\n },\n };\n}\n\nexport type SlotsTypes = SlotsType<\n Record<\"tooltip\" | `tooltip-${string}`, TooltipComponentFormatterCallbackParams> &\n Record<\"dataView\" | `dataView-${string}`, Option> &\n VChartSlotsExtension\n>;\n","export const TAG_NAME = \"x-vue-echarts\";\n// Shared across bundles so one copy can trust another copy's disconnect hook.\nconst LIFECYCLE_MARKER = Symbol.for(\"vue-echarts.lifecycle\");\n\ntype LifecycleConstructor = CustomElementConstructor & {\n [LIFECYCLE_MARKER]?: true;\n};\n\nexport interface EChartsElement extends HTMLElement {\n __dispose: (() => void) | null;\n}\n\nexport function register(): boolean {\n const registry = globalThis.customElements;\n\n if (!registry) {\n return false;\n }\n\n const existing = registry.get(TAG_NAME);\n if (existing) {\n return Boolean((existing as LifecycleConstructor)[LIFECYCLE_MARKER]);\n }\n\n class ECElement extends HTMLElement implements EChartsElement {\n __dispose: (() => void) | null = null;\n\n disconnectedCallback(): void {\n if (!this.__dispose) {\n return;\n }\n queueMicrotask(() => {\n if (!this.isConnected && this.__dispose) {\n const dispose = this.__dispose;\n this.__dispose = null;\n dispose();\n }\n });\n }\n }\n\n Object.defineProperty(ECElement, LIFECYCLE_MARKER, { value: true });\n registry.define(TAG_NAME, ECElement);\n return true;\n}\n","import type { Ref, Slots, VNodeChild } from \"vue\";\n\nimport type { Option } from \"../types\";\n\nexport type GraphicContext = {\n slots: Slots;\n manualUpdate: Ref<boolean>;\n requestUpdate: () => void;\n};\n\ntype GraphicRuntime = {\n cancelPendingFlush: () => void;\n prepare: (\n option: Option,\n reset: boolean,\n ) => { option: Option; replace: boolean; commit: () => void };\n render: () => VNodeChild;\n};\n\nlet runtimeFactory: ((context: GraphicContext) => GraphicRuntime) | null = null;\n\nexport function registerRuntime(factory: (context: GraphicContext) => GraphicRuntime): void {\n runtimeFactory = factory;\n}\n\nexport function useRuntime(context: GraphicContext): GraphicRuntime | null {\n return runtimeFactory ? runtimeFactory(context) : null;\n}\n","import { getCurrentInstance, onScopeDispose, onUpdated, watchSyncEffect } from \"vue\";\n\nimport type { Ref } from \"vue\";\nimport type { EChartsType } from \"../types\";\nimport { createEventInvoker, hasEventHandler, isOn, parseOnEvent } from \"../utils\";\nimport type { AttrMap, EventHandler } from \"../utils\";\n\ntype EventEmitter = {\n on: (event: string, handler: EventHandler) => void;\n off: (event: string, handler: EventHandler) => void;\n};\n\ntype ListenerBinding = {\n emitter: EventEmitter;\n event: string;\n source: unknown;\n handler: EventHandler;\n};\n\nconst NATIVE_EVENT_PREFIX = \"onNative:\";\n\nexport function useReactiveChartListeners(\n chart: Ref<EChartsType | undefined>,\n attrs: AttrMap,\n): { sync: () => void; stop: () => void } {\n const bindings = new Map<string, ListenerBinding>();\n const consumedSources = new Map<string, unknown>();\n const seen = new Set<string>();\n let boundChart: EChartsType | undefined;\n\n function clearBindings(): void {\n for (const binding of bindings.values()) {\n binding.emitter.off(binding.event, binding.handler);\n }\n bindings.clear();\n }\n\n function sync(): void {\n seen.clear();\n const instance = chart.value;\n for (const [key, source] of consumedSources) {\n if (attrs[key] !== source) {\n consumedSources.delete(key);\n }\n }\n if (!instance) {\n clearBindings();\n boundChart = undefined;\n return;\n }\n\n if (boundChart && boundChart !== instance) {\n clearBindings();\n }\n boundChart = instance;\n\n for (const key in attrs) {\n const parsed = parseOnEvent(key);\n if (!parsed || parsed.event.startsWith(\"native:\") || parsed.event === \"zr:\") {\n continue;\n }\n\n const zr = parsed.event.startsWith(\"zr:\");\n const event = (zr ? parsed.event.slice(3) : parsed.event).toLowerCase();\n const source = attrs[key];\n const existing = bindings.get(key);\n\n if (parsed.once && consumedSources.get(key) === source) {\n continue;\n }\n\n if (existing && existing.source === source && hasEventHandler(source)) {\n seen.add(key);\n continue;\n }\n\n const invoke = createEventInvoker(source);\n if (existing) {\n existing.emitter.off(existing.event, existing.handler);\n bindings.delete(key);\n }\n\n if (!invoke) {\n continue;\n }\n\n const emitter = zr ? (instance.getZr() as EventEmitter) : (instance as EventEmitter);\n let handler = invoke;\n if (parsed.once) {\n handler = (...args): void => {\n bindings.delete(key);\n consumedSources.set(key, source);\n emitter.off(event, handler);\n invoke(...args);\n };\n }\n\n emitter.on(event, handler);\n bindings.set(key, {\n emitter,\n event,\n source,\n handler,\n });\n seen.add(key);\n }\n\n for (const [key, binding] of bindings) {\n if (seen.has(key)) {\n continue;\n }\n binding.emitter.off(binding.event, binding.handler);\n bindings.delete(key);\n }\n }\n\n const stopWatch = watchSyncEffect(sync);\n if (getCurrentInstance()) {\n onUpdated(sync);\n }\n\n const stop = () => {\n stopWatch();\n clearBindings();\n };\n onScopeDispose(stop);\n return { sync, stop };\n}\n\nexport function getRootAttrs(attrs: AttrMap): AttrMap {\n const result: AttrMap = {};\n\n for (const key in attrs) {\n if (key.startsWith(NATIVE_EVENT_PREFIX)) {\n const event = key.slice(NATIVE_EVENT_PREFIX.length);\n if (event) {\n result[`on:${event}`] = attrs[key];\n }\n continue;\n }\n if (!isOn(key)) {\n result[key] = attrs[key];\n }\n }\n\n return result;\n}\n","import { ComponentModel } from \"echarts/core\";\n\nimport type { Option } from \"./types\";\nimport { isPlainObject } from \"./utils\";\n\ninterface ObjectShape {\n [key: string]: Shape | undefined;\n}\ntype Shape = true | ObjectShape | ItemShape[];\ntype ItemShape = {\n id: string | undefined;\n name: string | undefined;\n /** Graphic elements cannot merge a change of type. */\n type?: string;\n shape: Shape;\n};\ntype ShapeMode = \"option\" | \"media\" | \"graphic\";\ntype AnalysisContext = {\n hasAction: boolean;\n};\n\nfunction toIdentity(value: unknown): string | undefined {\n return typeof value === \"string\" || typeof value === \"number\" ? String(value) : undefined;\n}\n\n/** Minimal signature of an option used to decide setOption behavior. */\nexport interface Signature {\n /** Map of top-level arrays and singleton components to their summaries. */\n collections: Record<string, ItemShape[] | undefined>;\n /** Structural snapshots used to detect nested property removal without retaining option values. */\n objectShapes: Record<string, Shape | undefined>;\n /** Top-level keys whose values are not traversed. */\n leaves: string[];\n /** Whether the option delegates graphic element changes to `$action`. */\n hasAction: boolean;\n}\n\ninterface PlannedUpdate {\n signature: Signature;\n plan: {\n notMerge: boolean;\n replaceMerge?: string[];\n };\n}\n\nenum UpdateKind {\n Merge,\n Replace,\n Reset,\n}\n\nfunction buildShape(\n value: unknown,\n context: AnalysisContext,\n mode?: ShapeMode,\n): true | ObjectShape {\n if (!isPlainObject(value)) {\n return true;\n }\n\n const shape: ObjectShape = Object.create(null);\n for (const key of Object.keys(value)) {\n const child = value[key];\n if (child === undefined) {\n continue;\n }\n if (mode === \"graphic\" && key === \"$action\") {\n context.hasAction = true;\n }\n if (mode === \"graphic\" && (key === \"elements\" || key === \"children\") && Array.isArray(child)) {\n shape[key] = analyzeItems(child, context, \"graphic\", true);\n continue;\n }\n if (mode === \"option\") {\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(child) || (componentItems && isPlainObject(child))) {\n shape[key] = analyzeItems(\n Array.isArray(child) ? child : [child],\n context,\n key === \"graphic\" ? \"graphic\" : undefined,\n componentItems,\n );\n continue;\n }\n }\n shape[key] =\n mode === \"media\" && key === \"option\"\n ? buildShape(child, context, \"option\")\n : buildShape(child, context);\n }\n return shape;\n}\n\nfunction analyzeItems(\n items: unknown[],\n context: AnalysisContext,\n mode: ShapeMode | undefined,\n componentItems: boolean,\n): ItemShape[] {\n const shapes: ItemShape[] = [];\n\n for (const item of items) {\n const identity = componentItems ? (item as Record<string, unknown>) : undefined;\n shapes.push({\n id: toIdentity(identity?.id),\n name: toIdentity(identity?.name),\n ...(mode === \"graphic\" ? { type: toIdentity(identity?.type) } : {}),\n shape: buildShape(item, context, mode),\n });\n }\n\n return shapes;\n}\n\n/**\n * Build a structural signature that retains component identities but not option payload values.\n * Data arrays inside component items remain leaves. Graphic element trees and nested option units\n * (`baseOption`, timeline options, and media options) reuse collection summaries.\n */\nfunction buildSignature(option: Option): Signature {\n const opt = option as Record<string, unknown>;\n\n const context: AnalysisContext = { hasAction: false };\n const collections: Record<string, ItemShape[] | undefined> = Object.create(null);\n const objectShapes: Record<string, Shape | undefined> = Object.create(null);\n const leaves: string[] = [];\n\n for (const key of Object.keys(opt)) {\n const value = opt[key];\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(value) || (componentItems && isPlainObject(value))) {\n const mode =\n key === \"options\"\n ? \"option\"\n : key === \"media\"\n ? \"media\"\n : key === \"graphic\"\n ? \"graphic\"\n : undefined;\n const shapes = analyzeItems(\n Array.isArray(value) ? value : [value],\n context,\n mode,\n componentItems,\n );\n collections[key] = shapes;\n continue;\n }\n\n if (isPlainObject(value)) {\n const mode = key === \"baseOption\" ? \"option\" : undefined;\n const shape = buildShape(value, context, mode);\n objectShapes[key] = shape;\n continue;\n }\n\n if (value !== undefined && !componentItems) {\n leaves.push(key);\n }\n }\n\n return {\n collections,\n objectShapes,\n leaves,\n hasAction: context.hasAction,\n };\n}\n\nfunction hasCollectionRemoval(prev: ItemShape[], next: ItemShape[] | undefined): boolean {\n if (!next) {\n return prev.length > 0;\n }\n return next.length < prev.length;\n}\n\nfunction getItemIdentity(item: ItemShape): string | undefined {\n return item.id !== undefined\n ? `id:${item.id}`\n : item.name !== undefined\n ? `name:${item.name}`\n : undefined;\n}\n\nfunction hasIdentityChange(prev: ItemShape[], next: ItemShape[]): boolean {\n const length = Math.min(prev.length, next.length);\n for (let index = 0; index < length; index++) {\n const previous = getItemIdentity(prev[index]);\n const current = getItemIdentity(next[index]);\n if (previous !== current && (previous !== undefined || current !== undefined)) {\n return true;\n }\n }\n return false;\n}\n\nfunction preservesReplacementOrder(prev: ItemShape[], next: ItemShape[]): boolean {\n const positions = new Map<string, number>();\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n if (item.id !== undefined) {\n positions.set(item.id, index);\n }\n }\n\n return next.every((item, index) => {\n const previousIndex = item.id === undefined ? undefined : positions.get(item.id);\n return previousIndex === undefined || previousIndex === index;\n });\n}\n\nfunction hasShapeRemoval(prev: Shape, next: Shape): boolean {\n if (prev === true || next === true) {\n return false;\n }\n\n const prevIsCollection = Array.isArray(prev);\n const nextIsCollection = Array.isArray(next);\n if (prevIsCollection || nextIsCollection) {\n return (\n !prevIsCollection ||\n !nextIsCollection ||\n hasCollectionRemoval(prev, next) ||\n hasIdentityChange(prev, next) ||\n compareItemShapes(prev, next) !== UpdateKind.Merge\n );\n }\n\n for (const key in prev) {\n const nextChild = next[key];\n if (nextChild === undefined || hasShapeRemoval(prev[key] as Shape, nextChild)) {\n return true;\n }\n }\n return false;\n}\n\nfunction compareItemShapes(prev: ItemShape[], next: ItemShape[]): UpdateKind {\n const byId = new Map<string, ItemShape>();\n for (const item of next) {\n if (item.id !== undefined && !byId.has(item.id)) {\n byId.set(item.id, item);\n }\n }\n let kind = UpdateKind.Merge;\n\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n const candidate = item.id !== undefined ? byId.get(item.id) : next[index];\n if (\n candidate &&\n (item.type !== candidate.type || hasShapeRemoval(item.shape, candidate.shape))\n ) {\n // replaceMerge recreates anonymous items, but merges items with explicit IDs.\n if (item.id !== undefined) {\n return UpdateKind.Reset;\n }\n kind = UpdateKind.Replace;\n }\n }\n return kind;\n}\n\nfunction needsGlobalReset(prev: Signature, next: Signature): boolean {\n // Global arrays may already contain theme/default entries, while aria is only\n // auto-enabled when it is present during initial model creation.\n if (next.objectShapes.aria && !prev.objectShapes.aria) {\n return true;\n }\n for (const key in next.collections) {\n if (\n !prev.collections[key] &&\n !prev.objectShapes[key] &&\n !prev.leaves.includes(key) &&\n !ComponentModel.hasClass(key)\n ) {\n return true;\n }\n }\n\n for (const key in prev.objectShapes) {\n const prevShape = prev.objectShapes[key];\n const nextShape = next.objectShapes[key];\n if (prevShape && nextShape) {\n if (hasShapeRemoval(prevShape, nextShape)) {\n return true;\n }\n continue;\n }\n\n if (!next.leaves.includes(key)) {\n return true;\n }\n }\n\n for (const key of prev.leaves) {\n if (\n !next.leaves.includes(key) &&\n next.collections[key] === undefined &&\n next.objectShapes[key] === undefined\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction compareCollection(prev: ItemShape[], next: ItemShape[] | undefined): UpdateKind {\n const kind = next ? compareItemShapes(prev, next) : UpdateKind.Merge;\n if (kind === UpdateKind.Reset) {\n return kind;\n }\n if (\n kind === UpdateKind.Merge &&\n !hasCollectionRemoval(prev, next) &&\n !(next && hasIdentityChange(prev, next))\n ) {\n return UpdateKind.Merge;\n }\n return next && !preservesReplacementOrder(prev, next) ? UpdateKind.Reset : UpdateKind.Replace;\n}\n\n/**\n * Produce an update plan that preserves option structure and initialization semantics.\n * Falls back to `notMerge: true` when the change looks complex.\n */\nexport function planUpdate(prev: Signature | undefined, option: Option): PlannedUpdate {\n const next = buildSignature(option);\n\n if (!prev) {\n return {\n signature: next,\n plan: { notMerge: false },\n };\n }\n\n let reset = needsGlobalReset(prev, next);\n const replaceMerge: string[] = [];\n for (const key in prev.collections) {\n const collection = next.collections[key];\n const kind = compareCollection(prev.collections[key]!, collection);\n if (!ComponentModel.hasClass(key)) {\n // Removing even an empty setting array can expose theme/default entries.\n reset ||= !collection || kind !== UpdateKind.Merge;\n } else if (kind === UpdateKind.Reset) {\n reset = true;\n } else if (kind === UpdateKind.Replace) {\n replaceMerge.push(key);\n }\n }\n\n // Command compatibility is separate from snapshot analysis: keep the target tree\n // and all safe unrelated replacements even when a complete reset is unavailable.\n const replacements = next.hasAction\n ? replaceMerge.filter((key) => key !== \"graphic\")\n : replaceMerge;\n const notMerge = reset && !next.hasAction;\n\n return {\n signature: next,\n plan:\n !notMerge && replacements.length\n ? { notMerge, replaceMerge: replacements.sort() }\n : { notMerge },\n };\n}\n","export default \"x-vue-echarts{display:block;width:100%;height:100%;min-width:0;}\\nx-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;}\\nx-vue-echarts>.echarts-host>:first-child,x-vue-echarts>.echarts-host>:first-child>canvas{border-radius:inherit;}\\n\"","import cssRules from \"./style.css?raw\";\nimport { isBrowser } from \"./utils\";\n\nif (isBrowser()) {\n if (Array.isArray(document.adoptedStyleSheets) && \"replaceSync\" in CSSStyleSheet.prototype) {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssRules);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n } else {\n const styleEl = document.createElement(\"style\");\n styleEl.textContent = cssRules;\n document.head.appendChild(styleEl);\n }\n}\n","import {\n defineComponent,\n shallowRef,\n toRef,\n watch,\n computed,\n inject,\n onMounted,\n onBeforeUnmount,\n h,\n nextTick,\n watchSyncEffect,\n toValue,\n} from \"vue\";\nimport { init as initChart } from \"echarts/core\";\n\nimport type { InjectionKey, PropType, VNodeChild } from \"vue\";\n\nimport { usePublicAPI, type PublicMethods } from \"./composables/api\";\nimport { useAutoresize, autoresizeProps } from \"./composables/autoresize\";\nimport { useLoading, loadingProps } from \"./composables/loading\";\nimport { useSlotOption, type SlotsTypes } from \"./composables/slot\";\nimport { hasZeroDimension, isIgnorableWatchChange, warn } from \"./utils\";\nimport { register, TAG_NAME } from \"./wc\";\nimport { useRuntime as useGraphic } from \"./graphic/runtime\";\nimport { useReactiveChartListeners, getRootAttrs } from \"./core/events\";\nimport { planUpdate } from \"./update\";\nimport type { Signature } from \"./update\";\n\nimport type {\n EChartsType,\n SetOptionType,\n Option,\n Theme,\n ThemeInjection,\n InitOptions,\n InitOptionsInjection,\n UpdateOptions,\n UpdateOptionsInjection,\n Emits,\n PublicComponent,\n} from \"./types\";\nimport type { EChartsElement } from \"./wc\";\n\nimport \"./style\";\n\nconst wcRegistered = register();\nconst SKIP_AUTO_UPDATE = Symbol();\ntype ApplyMode = \"manual\" | \"graphic\";\nenum UpdateReason {\n Option = 1,\n Graphic = 2,\n Theme = 4,\n Reinit = 8,\n}\n\nexport const THEME_KEY: InjectionKey<ThemeInjection> = Symbol();\nexport const INIT_OPTIONS_KEY: InjectionKey<InitOptionsInjection> = Symbol();\nexport const UPDATE_OPTIONS_KEY: InjectionKey<UpdateOptionsInjection> = Symbol();\nexport { LOADING_OPTIONS_KEY } from \"./composables/loading\";\n\nconst chartProps = {\n option: Object as PropType<Option>,\n theme: {\n type: [Object, String] as PropType<Theme>,\n },\n initOptions: Object as PropType<InitOptions>,\n updateOptions: Object as PropType<UpdateOptions>,\n group: String,\n manualUpdate: Boolean,\n ...autoresizeProps,\n ...loadingProps,\n};\n\ntype Bindings = {\n setOption: SetOptionType;\n readonly root: HTMLElement | undefined;\n readonly chart: EChartsType | undefined;\n} & PublicMethods;\n\nconst ECharts = /* @__PURE__ */ defineComponent({\n name: \"Echarts\",\n inheritAttrs: false,\n props: chartProps,\n emits: {} as Emits,\n slots: Object as SlotsTypes,\n setup(props, { attrs, expose, slots }) {\n const root = shallowRef<EChartsElement>();\n const chartHost = shallowRef<HTMLDivElement>();\n const chart = shallowRef<EChartsType>();\n const updateRequest = shallowRef(0);\n let pendingUpdate = 0;\n const defaultTheme = inject(THEME_KEY, null);\n const defaultInitOptions = inject(INIT_OPTIONS_KEY, null);\n const defaultUpdateOptions = inject(UPDATE_OPTIONS_KEY, null);\n\n const autoresize = toRef(props, \"autoresize\");\n const manualUpdate = toRef(props, \"manualUpdate\");\n const loading = toRef(props, \"loading\");\n const loadingType = toRef(props, \"loadingType\");\n const loadingOptions = toRef(props, \"loadingOptions\");\n\n const realTheme = computed(() => props.theme ?? toValue(defaultTheme) ?? undefined);\n const realInitOptions = computed(\n () => props.initOptions ?? toValue(defaultInitOptions) ?? undefined,\n );\n const realUpdateOptions = computed(() => props.updateOptions ?? toValue(defaultUpdateOptions));\n\n const terminallyDisposed = shallowRef(false);\n\n const {\n render: renderSlot,\n prepare: prepareSlots,\n setReady: setSlotsReady,\n cancelPendingUpdate: cancelSlotUpdate,\n } = useSlotOption(slots, requestUpdate);\n\n const graphic = useGraphic({\n slots,\n manualUpdate,\n requestUpdate: () => requestUpdate(UpdateReason.Graphic),\n });\n\n // `null` means the model has no trusted signature, so the next smart update must rebuild.\n let lastSignature: Signature | null | undefined;\n let lastAutoOption: Option | undefined;\n let themeApplied = false;\n let optionApplied = false;\n let initDeferred = false;\n let graphicSlotApplied = false;\n let updateRevision = 0;\n let modelValid = false;\n\n function getAutoOption(): Option | undefined {\n // A graphic slot is a complete option source even without an `option` prop.\n return props.option ?? (graphic && (slots.graphic || graphicSlotApplied) ? {} : undefined);\n }\n\n function isCurrent(instance: EChartsType | undefined): instance is EChartsType {\n return instance !== undefined && chart.value === instance && !terminallyDisposed.value;\n }\n\n function runUpdate(\n instance: EChartsType,\n update: () => void,\n signature: Signature | null | undefined,\n ): boolean {\n const revision = ++updateRevision;\n // A failed native call may have partially changed the model. Only a successful,\n // uninterrupted submission can establish a new smart-update baseline.\n lastSignature = null;\n modelValid = false;\n update();\n if (!isCurrent(instance) || updateRevision !== revision) {\n return false;\n }\n lastSignature = signature;\n modelValid = true;\n return true;\n }\n\n function applyTheme(instance: EChartsType): boolean {\n // ECharts ignores setTheme until its first option creates the chart model.\n if (!optionApplied || themeApplied) {\n return false;\n }\n const revision = updateRevision + 1;\n // Native update events can submit another option before setTheme returns.\n themeApplied = true;\n try {\n return runUpdate(\n instance,\n () => instance.setTheme(realTheme.value || {}),\n lastSignature === undefined ? undefined : null,\n );\n } catch (error) {\n if (updateRevision === revision) {\n themeApplied = false;\n }\n throw error;\n }\n }\n\n function applyOption(\n instance: EChartsType,\n option: Option,\n mode?: ApplyMode,\n manualOptions?: UpdateOptions,\n ): void {\n const manual = mode === \"manual\";\n initDeferred = false;\n const preparedSlots = prepareSlots(option);\n const slotted = preparedSlots.option;\n const hasGraphicSlot = Boolean(graphic && slots.graphic);\n // An owned graphic tree is planned separately from the source it overrides.\n const source = hasGraphicSlot ? { ...slotted, graphic: undefined } : slotted;\n let updateOptions = manual ? manualOptions : (realUpdateOptions.value ?? undefined);\n let nextSignature: Signature | null = null;\n\n const graphicOnly = mode === \"graphic\" && hasGraphicSlot && graphicSlotApplied && modelValid;\n if (graphicOnly) {\n nextSignature = lastSignature ?? null;\n } else if (!manual && !updateOptions) {\n const planned = planUpdate(lastSignature ?? undefined, source);\n const rebuild = !planned.signature.hasAction && lastSignature === null;\n updateOptions = rebuild ? { ...planned.plan, notMerge: true } : planned.plan;\n nextSignature = planned.signature;\n }\n\n const replaceMerge = updateOptions?.replaceMerge;\n const replacements = typeof replaceMerge === \"string\" ? [replaceMerge] : (replaceMerge ?? []);\n const preparedGraphic = graphic?.prepare(\n slotted,\n !modelValid ||\n !graphicSlotApplied ||\n Boolean(updateOptions?.notMerge) ||\n replacements.includes(\"graphic\") ||\n manual,\n );\n let patched = preparedGraphic?.option ?? slotted;\n const replaceGraphic = preparedGraphic?.replace || (graphicSlotApplied && !hasGraphicSlot);\n if (replaceGraphic && !updateOptions?.notMerge && !replacements.includes(\"graphic\")) {\n updateOptions = { ...updateOptions, replaceMerge: [...replacements, \"graphic\"] };\n }\n const replacesSource = replacements.some((key) => key !== \"graphic\");\n if (graphicOnly && !updateOptions?.notMerge && !replacesSource) {\n patched = { graphic: patched.graphic };\n }\n syncListeners();\n if (!runUpdate(instance, () => instance.setOption(patched, updateOptions), nextSignature)) {\n return;\n }\n preparedSlots.commit();\n preparedGraphic?.commit();\n graphicSlotApplied = hasGraphicSlot;\n optionApplied = true;\n if (!manual) {\n lastAutoOption = option;\n }\n if (applyTheme(instance) && !manual) {\n applyOption(instance, option);\n }\n }\n\n function scheduleUpdate(reason: UpdateReason): void {\n pendingUpdate |= reason;\n updateRequest.value++;\n }\n\n function requestUpdate(reason = UpdateReason.Option): void {\n if (!manualUpdate.value && !initDeferred && !terminallyDisposed.value) {\n scheduleUpdate(reason);\n }\n }\n\n function flushUpdate(): void {\n const reasons = pendingUpdate;\n pendingUpdate = 0;\n const instance = chart.value;\n if (!reasons || !isCurrent(instance)) {\n return;\n }\n if (reasons & UpdateReason.Reinit) {\n cleanup();\n init();\n return;\n }\n if (initDeferred) {\n return;\n }\n\n syncListeners();\n const option =\n reasons & (UpdateReason.Option | UpdateReason.Graphic)\n ? (getAutoOption() ?? lastAutoOption)\n : lastAutoOption;\n const needsTheme = !themeApplied && optionApplied;\n if (needsTheme && !applyTheme(instance)) {\n return;\n }\n if (!manualUpdate.value && option) {\n const graphicOnly = reasons === UpdateReason.Graphic && !needsTheme;\n applyOption(instance, option, graphicOnly ? \"graphic\" : undefined);\n }\n }\n\n if (slots.graphic && !graphic) {\n warn(\n \"Detected `#graphic` slot but no extension is registered. Import from `vue-echarts/graphic` to enable it.\",\n );\n }\n\n const { sync: syncListeners, stop: stopListeners } = useReactiveChartListeners(chart, attrs);\n\n function cleanup(): void {\n pendingUpdate = 0;\n graphic?.cancelPendingFlush();\n updateRevision++;\n const instance = chart.value;\n chart.value = undefined;\n setSlotsReady(false);\n lastSignature = undefined;\n modelValid = false;\n lastAutoOption = undefined;\n initDeferred = false;\n graphicSlotApplied = false;\n instance?.dispose();\n }\n\n function init(): void {\n pendingUpdate = 0;\n optionApplied = false;\n\n const host = chartHost.value as HTMLDivElement;\n const instance = initChart(host, realTheme.value, realInitOptions.value);\n chart.value = instance;\n if (!isCurrent(instance)) {\n return;\n }\n themeApplied = true;\n\n function commit(): void {\n const option = manualUpdate.value ? props.option : getAutoOption();\n if (option) {\n if (manualUpdate.value) {\n applyOption(instance, option, \"manual\", realUpdateOptions.value ?? undefined);\n } else {\n applyOption(instance, option);\n }\n }\n setSlotsReady(isCurrent(instance));\n }\n\n if (autoresize.value) {\n initDeferred = true;\n nextTick(() => {\n if (!isCurrent(instance)) {\n return;\n }\n if (autoresize.value && !hasZeroDimension(host.offsetWidth, host.offsetHeight)) {\n instance.resize();\n if (!isCurrent(instance)) {\n return;\n }\n }\n if (initDeferred) {\n initDeferred = false;\n commit();\n } else {\n setSlotsReady(true);\n }\n });\n return;\n }\n\n commit();\n }\n\n const setOption: SetOptionType = (option, notMerge, lazyUpdate?: boolean) => {\n if (!props.manualUpdate) {\n warn(\"`setOption` is only available when `manual-update` is `true`.\");\n return;\n }\n\n const instance = chart.value;\n if (!isCurrent(instance)) {\n return;\n }\n\n const updateOptions =\n typeof notMerge === \"boolean\"\n ? { notMerge, lazyUpdate }\n : (notMerge ?? (lazyUpdate === undefined ? undefined : { lazyUpdate }));\n\n applyOption(instance, option, \"manual\", updateOptions);\n };\n\n // Mark synchronously so later batched replacements cannot mask nested changes.\n const stopThemeWatch = watch(\n realTheme,\n (theme, previousTheme) => {\n if (isIgnorableWatchChange(theme, previousTheme)) {\n return;\n }\n themeApplied = false;\n scheduleUpdate(UpdateReason.Theme);\n },\n { deep: true, flush: \"sync\" },\n );\n\n const stopInitOptionsWatch = watch(\n realInitOptions,\n (options, previousOptions) => {\n if (!isIgnorableWatchChange(options, previousOptions)) {\n scheduleUpdate(UpdateReason.Reinit);\n }\n },\n { deep: true, flush: \"sync\" },\n );\n\n function watchOption() {\n return watch(\n () => (manualUpdate.value ? SKIP_AUTO_UPDATE : props.option),\n (option, previousOption) => {\n if (\n option !== SKIP_AUTO_UPDATE &&\n previousOption !== SKIP_AUTO_UPDATE &&\n (option ?? getAutoOption())\n ) {\n requestUpdate();\n }\n },\n // Batch deep traversal, then submit after Vue has prepared slot containers and graphic nodes.\n { deep: true },\n );\n }\n let stopOptionWatch = watchOption();\n const stopModeWatch = watch(manualUpdate, () => scheduleUpdate(UpdateReason.Reinit), {\n flush: \"sync\",\n });\n const stopUpdateWatch = watch(updateRequest, flushUpdate, { flush: \"post\" });\n\n const stopGroupWatch = watchSyncEffect(() => {\n const instance = chart.value;\n if (isCurrent(instance)) {\n instance.group = props.group ?? \"\";\n }\n });\n const stopLoading = useLoading(chart, loading, loadingType, loadingOptions);\n const stopAutoresize = useAutoresize(chart, autoresize, chartHost);\n\n function dispose(): void {\n if (terminallyDisposed.value) {\n return;\n }\n terminallyDisposed.value = true;\n stopThemeWatch();\n stopInitOptionsWatch();\n stopOptionWatch();\n stopModeWatch();\n stopUpdateWatch();\n stopGroupWatch();\n stopLoading();\n stopAutoresize();\n stopListeners();\n cleanup();\n }\n\n const publicApi = usePublicAPI(chart, dispose, () => terminallyDisposed.value);\n const guardedClear = publicApi.clear;\n publicApi.clear = () => {\n const instance = chart.value;\n if (!isCurrent(instance)) {\n return guardedClear();\n }\n initDeferred = false;\n pendingUpdate = 0;\n graphic?.cancelPendingFlush();\n cancelSlotUpdate();\n // Drop earlier queued source changes while observing changes made inside clear's events.\n stopOptionWatch();\n stopOptionWatch = watchOption();\n if (runUpdate(instance, () => instance.clear(), undefined)) {\n lastAutoOption = undefined;\n graphicSlotApplied = false;\n optionApplied = true;\n }\n };\n\n onMounted(() => {\n if (!terminallyDisposed.value) {\n init();\n }\n });\n\n onBeforeUnmount(() => {\n stopOptionWatch();\n if (terminallyDisposed.value) {\n return;\n }\n terminallyDisposed.value = true;\n const element = root.value;\n if (wcRegistered && element?.isConnected && element.__dispose === null) {\n element.__dispose = cleanup;\n return;\n }\n\n cleanup();\n });\n\n const exposed = {\n setOption,\n get root(): HTMLElement | undefined {\n return root.value ?? undefined;\n },\n get chart() {\n const instance = chart.value;\n return isCurrent(instance) ? instance : undefined;\n },\n };\n expose(Object.assign(exposed, publicApi));\n\n return (() => {\n const children: VNodeChild[] = [\n h(\"div\", {\n ref: chartHost,\n class: \"echarts-host\",\n }),\n ];\n\n if (!terminallyDisposed.value) {\n const teleported = renderSlot();\n if (teleported) {\n children.push(teleported);\n }\n\n const graphicContent = graphic?.render();\n if (graphicContent) {\n children.push(graphicContent);\n }\n }\n\n const forwardedAttrs = getRootAttrs(attrs);\n\n return h(\n TAG_NAME,\n {\n ...forwardedAttrs,\n ref: root,\n class: [\"echarts\", forwardedAttrs.class],\n },\n children,\n );\n }) as unknown as typeof exposed & PublicMethods;\n },\n}) as PublicComponent<typeof chartProps, Bindings, Emits, SlotsTypes>;\n\nexport default ECharts;\n","import ECharts from \"./ECharts\";\nimport type { Slot } from \"vue\";\n\nexport interface VChartSlotsExtension {\n graphic?: Slot;\n}\n\nexport default ECharts;\nexport * from \"./ECharts\";\nexport type { AutoResize, LoadingOptions } from \"./types\";\n","import \"echarts\";\nimport ECharts, * as exported from \"./index\";\n\nexport default Object.assign(ECharts, exported);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.min.js","names":["watch","throttle","inject","watch","toValue","getCurrentInstance","shallowReactive","shallowRef","h","Teleport","watchSyncEffect","getCurrentInstance","ComponentModel","cssRules","shallowRef","inject","toRef","computed","toValue","useGraphic","initChart","watch","watchSyncEffect","h","ECharts","exported"],"sources":["../src/composables/api.ts","../src/utils.ts","../src/composables/autoresize.ts","../src/composables/loading.ts","../src/composables/slot.ts","../src/wc.ts","../src/graphic/runtime.ts","../src/core/events.ts","../src/update.ts","../src/style.css?raw","../src/style.ts","../src/ECharts.ts","../src/index.ts","../src/global.ts"],"sourcesContent":["import type { Ref } from \"vue\";\nimport type { EChartsType } from \"../types\";\n\nconst METHOD_NAMES = [\n \"getWidth\",\n \"getHeight\",\n \"getDom\",\n \"getZr\",\n \"getId\",\n \"getOption\",\n \"isSSR\",\n \"getDevicePixelRatio\",\n \"resize\",\n \"makeActionFromEvent\",\n \"dispatchAction\",\n \"updateLabelLayout\",\n \"convertToPixel\",\n \"convertToLayout\",\n \"convertFromPixel\",\n \"containPixel\",\n \"getVisual\",\n \"renderToCanvas\",\n \"renderToSVGString\",\n \"getSvgDataURL\",\n \"getDataURL\",\n \"getConnectedDataURL\",\n \"appendData\",\n \"clear\",\n] as const;\n\ntype MethodName = (typeof METHOD_NAMES)[number];\n\nexport type PublicMethods = Pick<EChartsType, MethodName | \"dispose\" | \"isDisposed\">;\n\nexport function usePublicAPI(\n chart: Ref<EChartsType | undefined>,\n dispose: () => void,\n isDisposed: () => boolean,\n): PublicMethods {\n const getInstance = (): EChartsType => {\n if (isDisposed()) {\n throw new Error(\"ECharts has been disposed.\");\n }\n const instance = chart.value;\n if (!instance) {\n throw new Error(\"ECharts is not initialized yet.\");\n }\n return instance;\n };\n\n const api: Record<string, (...args: unknown[]) => unknown> = {};\n for (const name of METHOD_NAMES) {\n api[name] = (...args: unknown[]): unknown => {\n const instance = getInstance();\n return Reflect.apply(instance[name], instance, args);\n };\n }\n api.dispose = dispose;\n api.isDisposed = isDisposed;\n return api as PublicMethods;\n}\n","import { warn as vueWarn } from \"vue\";\n\nexport type AttrMap = Record<string, unknown>;\nexport type EventHandler = (...args: unknown[]) => unknown;\n\nexport function hasEventHandler(value: unknown): boolean {\n return typeof value === \"function\" || (Array.isArray(value) && value.length > 0);\n}\n\nexport function createEventInvoker(value: unknown): EventHandler | undefined {\n if (typeof value === \"function\") {\n return value as EventHandler;\n }\n\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n\n return (...args: unknown[]): unknown => {\n let result: unknown;\n for (const handler of value.slice()) {\n result = handler(...args) || result;\n }\n return result;\n };\n}\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\n// Copied from\n// https://github.com/vuejs/vue-next/blob/5a7a1b8293822219283d6e267496bec02234b0bc/packages/shared/src/index.ts#L40-L41\nconst onRE = /^on[^a-z]/;\nexport const isOn = (key: string): boolean => onRE.test(key);\n\ntype ParsedOnEvent = {\n event: string;\n once: boolean;\n};\n\nexport function parseOnEvent(key: string): ParsedOnEvent | null {\n if (!isOn(key)) {\n return null;\n }\n\n let event = key.charAt(2).toLowerCase() + key.slice(3);\n const once = event.endsWith(\"Once\");\n if (once) {\n event = event.slice(0, -4);\n }\n\n return { event, once };\n}\n\nexport function isValidArrayIndex(key: string): boolean {\n const num = Number(key);\n return Number.isInteger(num) && num >= 0 && num < Math.pow(2, 32) - 1 && String(num) === key;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n\nexport function hasZeroDimension(width: number, height: number): boolean {\n return width === 0 || height === 0;\n}\n\nexport function isIgnorableWatchChange(value: unknown, previous: unknown): boolean {\n if (Object.is(value, previous)) {\n return value === null || typeof value !== \"object\";\n }\n\n if (!isPlainObject(value) || !isPlainObject(previous)) {\n return false;\n }\n\n const keys = Object.keys(value);\n return (\n keys.length === Object.keys(previous).length &&\n keys.every((key) => Object.hasOwn(previous, key) && Object.is(value[key], previous[key]))\n );\n}\n\nconst LOG_PREFIX = \"[vue-echarts]\";\n\nexport function warn(message: string): void {\n vueWarn(`${LOG_PREFIX} ${message}`);\n}\n","import { watch } from \"vue\";\nimport { throttle } from \"echarts/core\";\n\nimport type { Ref, PropType } from \"vue\";\nimport type { EChartsType, AutoResize } from \"../types\";\nimport { hasZeroDimension } from \"../utils\";\n\nexport function useAutoresize(\n chart: Ref<EChartsType | undefined>,\n autoresize: Ref<AutoResize | undefined>,\n container: Ref<HTMLElement | undefined>,\n): () => void {\n const getOptions = () => (typeof autoresize.value === \"object\" ? autoresize.value : undefined);\n const resizeSources = [\n container,\n chart,\n () => Boolean(autoresize.value),\n () => getOptions()?.throttle ?? 100,\n ] as const;\n\n return watch(\n resizeSources,\n ([container, chart, enabled, wait], _, onCleanup) => {\n if (!chart || !container || !enabled) {\n return;\n }\n\n let observedWidth = chart.getWidth();\n let observedHeight = chart.getHeight();\n\n const resize = () => {\n if (\n hasZeroDimension(observedWidth, observedHeight) ||\n (observedWidth === chart.getWidth() && observedHeight === chart.getHeight())\n ) {\n return;\n }\n chart.resize();\n getOptions()?.onResize?.();\n };\n const throttledResize = wait ? throttle(resize, wait) : undefined;\n\n const observer = new ResizeObserver(([entry]) => {\n observedWidth = entry.contentRect.width;\n observedHeight = entry.contentRect.height;\n (throttledResize ?? resize)();\n });\n\n observer.observe(container);\n onCleanup(() => {\n observer.disconnect();\n throttledResize?.clear();\n });\n },\n // Stop observer work before the outgoing chart can be disposed.\n { flush: \"sync\" },\n );\n}\n\nexport const autoresizeProps = {\n autoresize: [Boolean, Object] as PropType<AutoResize>,\n};\n","import { inject, toValue, watch } from \"vue\";\n\nimport type { Ref, InjectionKey, PropType } from \"vue\";\nimport type { EChartsType, LoadingOptions, LoadingOptionsInjection } from \"../types\";\n\nexport const LOADING_OPTIONS_KEY: InjectionKey<LoadingOptionsInjection> = Symbol();\n\nexport function useLoading(\n chart: Ref<EChartsType | undefined>,\n loading: Ref<boolean | undefined>,\n loadingType: Ref<string | undefined>,\n loadingOptions: Ref<LoadingOptions | undefined>,\n): () => void {\n const defaultLoadingOptions = inject(LOADING_OPTIONS_KEY, undefined);\n\n return watch(\n // Track chart availability without including its internals in deep traversal.\n () =>\n chart.value && loading.value\n ? {\n type: loadingType.value || undefined,\n options: {\n ...toValue(defaultLoadingOptions),\n ...loadingOptions.value,\n },\n }\n : null,\n (state) => {\n const instance = chart.value;\n if (!instance) {\n return;\n }\n\n if (!state) {\n instance.hideLoading();\n return;\n }\n\n const { type, options } = state;\n if (type) {\n instance.showLoading(type, options);\n } else {\n instance.showLoading(options);\n }\n },\n { deep: true, immediate: true, flush: \"sync\" },\n );\n}\n\nexport const loadingProps = {\n loading: Boolean,\n loadingType: String,\n loadingOptions: Object as PropType<LoadingOptions>,\n};\n","import {\n getCurrentInstance,\n h,\n Teleport,\n onUpdated,\n onMounted,\n shallowRef,\n shallowReactive,\n} from \"vue\";\nimport type { Slots as VueSlots, SlotsType as VueSlotsType } from \"vue\";\nimport type { Option } from \"../types\";\nimport { isPlainObject, isValidArrayIndex, warn } from \"../utils\";\nimport type { TooltipComponentFormatterCallbackParams } from \"echarts\";\nimport type { VChartSlotsExtension } from \"../index\";\n\nconst SLOT_OPTION_PATHS = {\n tooltip: [\"tooltip\", \"formatter\"],\n dataView: [\"toolbox\", \"feature\", \"dataView\", \"optionToContent\"],\n} as const;\nconst PROTOTYPE_SEGMENT_RE = /-__proto__(?:-|$)/;\ntype SlotPrefix = keyof typeof SLOT_OPTION_PATHS;\ntype SlotName = SlotPrefix | `${SlotPrefix}-${string}`;\ntype SlotMap<T> = Partial<Record<SlotName, T>>;\n\nfunction isValidSlotName(key: string): key is SlotName {\n return (\n (key === \"tooltip\" ||\n key.startsWith(\"tooltip-\") ||\n key === \"dataView\" ||\n key.startsWith(\"dataView-\")) &&\n !key.endsWith(\"-\") &&\n !key.includes(\"--\") &&\n !PROTOTYPE_SEGMENT_RE.test(key)\n );\n}\n\nfunction getSlotPath(key: SlotName): string[] {\n const prefix: SlotPrefix = key.startsWith(\"tooltip\") ? \"tooltip\" : \"dataView\";\n const rest = key.slice(prefix.length);\n const path = rest ? rest.slice(1).split(\"-\") : [];\n const target = SLOT_OPTION_PATHS[prefix];\n if (isValidArrayIndex(path[0] ?? \"\")) {\n const index = path.shift()!;\n path.push(target[0], index, ...target.slice(1));\n } else {\n path.push(...target);\n }\n return path;\n}\n\ntype Container = Record<string, unknown> | unknown[];\n\nfunction ensureChild(\n parent: Container,\n seg: string,\n nextSeg: string,\n writable: WeakSet<Container>,\n): Container | undefined {\n const parentIsArray = Array.isArray(parent);\n if (parentIsArray !== isValidArrayIndex(seg)) {\n return undefined;\n }\n const next = parentIsArray ? parent[Number(seg)] : parent[seg];\n\n let child: Container;\n if (Array.isArray(next)) {\n child = writable.has(next) ? next : [...next];\n } else if (isPlainObject(next)) {\n child = writable.has(next) ? next : { ...next };\n } else if (next === undefined && !parentIsArray && !isValidArrayIndex(nextSeg)) {\n child = {};\n } else {\n return undefined;\n }\n writable.add(child);\n writeSegment(parent, seg, child);\n return child;\n}\n\nfunction writeSegment(parent: Container, seg: string, value: unknown): void {\n if (Array.isArray(parent)) {\n parent[Number(seg)] = value;\n return;\n }\n parent[seg] = value;\n}\n\nfunction writePath(\n root: Option,\n path: readonly string[],\n value: unknown,\n writable: WeakSet<Container>,\n preserveDefined = false,\n): boolean {\n let current: Container = root;\n for (let i = 0; i < path.length - 1; i++) {\n const child = ensureChild(current, path[i], path[i + 1], writable);\n if (!child) {\n return false;\n }\n current = child;\n }\n if (Array.isArray(current)) {\n return false;\n }\n const leaf = path[path.length - 1];\n if (!preserveDefined || current[leaf] === undefined) {\n writeSegment(current, leaf, value);\n }\n return true;\n}\n\nexport function useSlotOption(slots: VueSlots, onSlotsChange: () => void) {\n const instance = getCurrentInstance()!;\n let detachedRoot: HTMLDivElement | undefined;\n const containers = shallowReactive<SlotMap<HTMLElement>>({});\n const params = shallowReactive<SlotMap<unknown>>({});\n const isMounted = shallowRef(false);\n const ready = shallowRef(false);\n\n const collectSlotNames = (warnInvalid = false): Set<SlotName> => {\n const names = new Set<SlotName>();\n for (const key in slots) {\n if (key === \"graphic\") {\n continue;\n }\n if (isValidSlotName(key)) {\n names.add(key);\n } else if (warnInvalid) {\n warn(`Invalid slot name: ${key}`);\n }\n }\n return names;\n };\n collectSlotNames(true);\n\n let slotNames: ReadonlySet<SlotName> = new Set();\n let nextSlotNames = slotNames;\n const patchedSlotNames = new Set<SlotName>();\n const callbacks = new Map<\n SlotName,\n { path: string[]; formatter: (payload: unknown) => HTMLElement | undefined }\n >();\n\n function setReady(value: boolean): void {\n ready.value = value;\n if (value) {\n return;\n }\n patchedSlotNames.clear();\n for (const key of Object.keys(params) as SlotName[]) {\n delete params[key];\n }\n }\n\n function syncSlotNames(names: ReadonlySet<SlotName>): boolean {\n let changed = names.size !== slotNames.size;\n for (const key of slotNames) {\n if (!names.has(key)) {\n changed = true;\n delete params[key];\n delete containers[key];\n callbacks.delete(key);\n }\n }\n if (changed) {\n slotNames = names;\n }\n return changed;\n }\n\n const render = () => {\n nextSlotNames = collectSlotNames();\n if (nextSlotNames.size === 0 || !ready.value || !isMounted.value) {\n return undefined;\n }\n const ownerDocument = (instance.vnode.el as HTMLElement).ownerDocument;\n detachedRoot ??= ownerDocument.createElement(\"div\");\n\n return h(\n Teleport,\n { to: detachedRoot },\n Array.from(nextSlotNames, (slotName) => {\n const slot = slots[slotName];\n const slotContent = slotName in params ? slot?.(params[slotName]) : undefined;\n return h(\n \"div\",\n {\n key: slotName,\n ref: (el) => {\n if (el) {\n containers[slotName] = el as HTMLElement;\n } else {\n delete containers[slotName];\n }\n },\n style: { display: \"contents\" },\n },\n slotContent,\n );\n }),\n );\n };\n\n function prepare(src: Option): { option: Option; commit: () => void } {\n const names = collectSlotNames();\n syncSlotNames(names);\n // Shared callback paths only clone each container once per submission.\n const writable = new WeakSet<Container>();\n let root: Option | undefined;\n\n for (const key of patchedSlotNames) {\n if (!names.has(key)) {\n root ??= { ...src };\n writePath(root, getSlotPath(key), null, writable, true);\n }\n }\n\n const patchedNames: SlotName[] = [];\n\n for (const key of names) {\n root ??= { ...src };\n let callback = callbacks.get(key);\n if (!callback) {\n const formatter = (payload: unknown): HTMLElement | undefined => {\n if (!slots[key]) {\n return undefined;\n }\n // ECharts may update and reuse the same formatter payload object.\n if (key in params && Object.is(params[key], payload)) {\n delete params[key];\n }\n params[key] = payload;\n return containers[key];\n };\n callback = { path: getSlotPath(key), formatter };\n callbacks.set(key, callback);\n }\n\n if (!writePath(root, callback.path, callback.formatter, writable)) {\n continue;\n }\n patchedNames.push(key);\n }\n\n return {\n option: root ?? src,\n commit: () => {\n // Native theme changes can replay callbacks from an older option backup.\n // Keep their cleanup paths until the chart instance is replaced.\n patchedNames.forEach((name) => patchedSlotNames.add(name));\n },\n };\n }\n\n onUpdated(() => {\n if (syncSlotNames(nextSlotNames)) {\n onSlotsChange();\n }\n });\n\n onMounted(() => {\n slotNames = nextSlotNames;\n isMounted.value = true;\n });\n\n return {\n render,\n prepare,\n setReady,\n cancelPendingUpdate: () => {\n // A queued updated hook must not replay slot changes preceding clear().\n syncSlotNames(collectSlotNames());\n },\n };\n}\n\n/** Vue SlotsType metadata for VChart, including VChartSlotsExtension augmentations. */\nexport type Slots = VueSlotsType<\n Record<\"tooltip\" | `tooltip-${string}`, TooltipComponentFormatterCallbackParams> &\n Record<\"dataView\" | `dataView-${string}`, Option> &\n VChartSlotsExtension\n>;\n","export const TAG_NAME = \"x-vue-echarts\";\n// Shared across bundles so one copy can trust another copy's disconnect hook.\nconst LIFECYCLE_MARKER = Symbol.for(\"vue-echarts.lifecycle\");\n\ntype LifecycleConstructor = CustomElementConstructor & {\n [LIFECYCLE_MARKER]?: true;\n};\n\nexport interface EChartsElement extends HTMLElement {\n __dispose: (() => void) | null;\n}\n\nexport function register(): boolean {\n const registry = globalThis.customElements;\n\n if (!registry) {\n return false;\n }\n\n const existing = registry.get(TAG_NAME);\n if (existing) {\n return Boolean((existing as LifecycleConstructor)[LIFECYCLE_MARKER]);\n }\n\n class ECElement extends HTMLElement implements EChartsElement {\n __dispose: (() => void) | null = null;\n\n disconnectedCallback(): void {\n if (!this.__dispose) {\n return;\n }\n queueMicrotask(() => {\n if (!this.isConnected && this.__dispose) {\n const dispose = this.__dispose;\n this.__dispose = null;\n dispose();\n }\n });\n }\n }\n\n Object.defineProperty(ECElement, LIFECYCLE_MARKER, { value: true });\n registry.define(TAG_NAME, ECElement);\n return true;\n}\n","import type { Ref, Slots, VNodeChild } from \"vue\";\n\nimport type { Option } from \"../types\";\n\nexport type GraphicContext = {\n slots: Slots;\n manualUpdate: Ref<boolean>;\n requestUpdate: () => void;\n};\n\ntype GraphicRuntime = {\n cancelPendingFlush: () => void;\n prepare: (\n option: Option,\n reset: boolean,\n ) => { option: Option; replace: boolean; commit: () => void };\n render: () => VNodeChild;\n};\n\nlet runtimeFactory: ((context: GraphicContext) => GraphicRuntime) | null = null;\n\nexport function registerRuntime(factory: (context: GraphicContext) => GraphicRuntime): void {\n runtimeFactory = factory;\n}\n\nexport function useRuntime(context: GraphicContext): GraphicRuntime | null {\n return runtimeFactory ? runtimeFactory(context) : null;\n}\n","import { getCurrentInstance, onScopeDispose, onUpdated, watchSyncEffect } from \"vue\";\n\nimport type { Ref } from \"vue\";\nimport type { EChartsType } from \"../types\";\nimport { createEventInvoker, hasEventHandler, isOn, parseOnEvent } from \"../utils\";\nimport type { AttrMap, EventHandler } from \"../utils\";\n\ntype EventEmitter = {\n on: (event: string, handler: EventHandler) => void;\n off: (event: string, handler: EventHandler) => void;\n};\n\ntype ListenerBinding = {\n emitter: EventEmitter;\n event: string;\n source: unknown;\n handler: EventHandler;\n};\n\nconst NATIVE_EVENT_PREFIX = \"onNative:\";\n\nexport function useReactiveChartListeners(\n chart: Ref<EChartsType | undefined>,\n attrs: AttrMap,\n): { sync: () => void; stop: () => void } {\n const bindings = new Map<string, ListenerBinding>();\n const consumedSources = new Map<string, unknown>();\n const seen = new Set<string>();\n let boundChart: EChartsType | undefined;\n\n function clearBindings(): void {\n for (const binding of bindings.values()) {\n binding.emitter.off(binding.event, binding.handler);\n }\n bindings.clear();\n }\n\n function sync(): void {\n seen.clear();\n const instance = chart.value;\n for (const [key, source] of consumedSources) {\n if (attrs[key] !== source) {\n consumedSources.delete(key);\n }\n }\n if (!instance) {\n clearBindings();\n boundChart = undefined;\n return;\n }\n\n if (boundChart && boundChart !== instance) {\n clearBindings();\n }\n boundChart = instance;\n\n for (const key in attrs) {\n const parsed = parseOnEvent(key);\n if (!parsed || parsed.event.startsWith(\"native:\") || parsed.event === \"zr:\") {\n continue;\n }\n\n const zr = parsed.event.startsWith(\"zr:\");\n const event = (zr ? parsed.event.slice(3) : parsed.event).toLowerCase();\n const source = attrs[key];\n const existing = bindings.get(key);\n\n if (parsed.once && consumedSources.get(key) === source) {\n continue;\n }\n\n if (existing && existing.source === source && hasEventHandler(source)) {\n seen.add(key);\n continue;\n }\n\n const invoke = createEventInvoker(source);\n if (existing) {\n existing.emitter.off(existing.event, existing.handler);\n bindings.delete(key);\n }\n\n if (!invoke) {\n continue;\n }\n\n const emitter = zr ? (instance.getZr() as EventEmitter) : (instance as EventEmitter);\n let handler = invoke;\n if (parsed.once) {\n handler = (...args): void => {\n bindings.delete(key);\n consumedSources.set(key, source);\n emitter.off(event, handler);\n invoke(...args);\n };\n }\n\n emitter.on(event, handler);\n bindings.set(key, {\n emitter,\n event,\n source,\n handler,\n });\n seen.add(key);\n }\n\n for (const [key, binding] of bindings) {\n if (seen.has(key)) {\n continue;\n }\n binding.emitter.off(binding.event, binding.handler);\n bindings.delete(key);\n }\n }\n\n const stopWatch = watchSyncEffect(sync);\n if (getCurrentInstance()) {\n onUpdated(sync);\n }\n\n const stop = () => {\n stopWatch();\n clearBindings();\n };\n onScopeDispose(stop);\n return { sync, stop };\n}\n\nexport function getRootAttrs(attrs: AttrMap): AttrMap {\n const result: AttrMap = {};\n\n for (const key in attrs) {\n if (key.startsWith(NATIVE_EVENT_PREFIX)) {\n const event = key.slice(NATIVE_EVENT_PREFIX.length);\n if (event) {\n result[`on:${event}`] = attrs[key];\n }\n continue;\n }\n if (!isOn(key)) {\n result[key] = attrs[key];\n }\n }\n\n return result;\n}\n","import { ComponentModel } from \"echarts/core\";\n\nimport type { Option } from \"./types\";\nimport { isPlainObject } from \"./utils\";\n\ninterface ObjectShape {\n [key: string]: Shape | undefined;\n}\ntype Shape = true | ObjectShape | ItemShape[];\ntype ItemShape = {\n id: string | undefined;\n name: string | undefined;\n /** Graphic elements cannot merge a change of type or parent. */\n type?: string;\n parentId?: string;\n shape: Shape;\n};\ntype ShapeMode = \"option\" | \"media\" | \"graphic\";\ntype AnalysisContext = {\n hasAction: boolean;\n};\n\nfunction toIdentity(value: unknown): string | undefined {\n return typeof value === \"string\" || typeof value === \"number\" ? String(value) : undefined;\n}\n\n/** Minimal signature of an option used to decide setOption behavior. */\nexport interface Signature {\n /** Map of top-level arrays and singleton components to their summaries. */\n collections: Record<string, ItemShape[] | undefined>;\n /** Structural snapshots used to detect nested property removal without retaining option values. */\n objectShapes: Record<string, Shape | undefined>;\n /** Top-level keys whose values are not traversed. */\n leaves: string[];\n /** Whether the option delegates graphic element changes to `$action`. */\n hasAction: boolean;\n}\n\ninterface PlannedUpdate {\n signature: Signature;\n plan: {\n notMerge: boolean;\n replaceMerge?: string[];\n };\n}\n\nenum UpdateKind {\n Merge,\n Replace,\n Reset,\n}\n\nfunction buildShape(\n value: unknown,\n context: AnalysisContext,\n mode?: ShapeMode,\n): true | ObjectShape {\n if (!isPlainObject(value)) {\n return true;\n }\n\n const shape: ObjectShape = Object.create(null);\n for (const key of Object.keys(value)) {\n const child = value[key];\n if (child === undefined) {\n continue;\n }\n if (mode === \"graphic\" && key === \"$action\") {\n context.hasAction = true;\n }\n if (mode === \"graphic\" && (key === \"elements\" || key === \"children\") && Array.isArray(child)) {\n shape[key] = analyzeItems(child, context, \"graphic\", true);\n continue;\n }\n if (mode === \"option\") {\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(child) || (componentItems && isPlainObject(child))) {\n shape[key] = analyzeItems(\n Array.isArray(child) ? child : [child],\n context,\n key === \"graphic\" ? \"graphic\" : undefined,\n componentItems,\n );\n continue;\n }\n }\n shape[key] =\n mode === \"media\" && key === \"option\"\n ? buildShape(child, context, \"option\")\n : buildShape(child, context);\n }\n return shape;\n}\n\nfunction analyzeItems(\n items: unknown[],\n context: AnalysisContext,\n mode: ShapeMode | undefined,\n componentItems: boolean,\n): ItemShape[] {\n const shapes: ItemShape[] = [];\n\n for (const item of items) {\n const identity = componentItems ? (item as Record<string, unknown>) : undefined;\n shapes.push({\n id: toIdentity(identity?.id),\n name: toIdentity(identity?.name),\n ...(mode === \"graphic\"\n ? { type: toIdentity(identity?.type), parentId: toIdentity(identity?.parentId) }\n : {}),\n shape: buildShape(item, context, mode),\n });\n }\n\n return shapes;\n}\n\n/**\n * Build a structural signature that retains component identities but not option payload values.\n * Data arrays inside component items remain leaves. Graphic element trees and nested option units\n * (`baseOption`, timeline options, and media options) reuse collection summaries.\n */\nfunction buildSignature(option: Option): Signature {\n const opt = option as Record<string, unknown>;\n\n const context: AnalysisContext = { hasAction: false };\n const collections: Record<string, ItemShape[] | undefined> = Object.create(null);\n const objectShapes: Record<string, Shape | undefined> = Object.create(null);\n const leaves: string[] = [];\n\n for (const key of Object.keys(opt)) {\n const value = opt[key];\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(value) || (componentItems && isPlainObject(value))) {\n const mode =\n key === \"options\"\n ? \"option\"\n : key === \"media\"\n ? \"media\"\n : key === \"graphic\"\n ? \"graphic\"\n : undefined;\n const shapes = analyzeItems(\n Array.isArray(value) ? value : [value],\n context,\n mode,\n componentItems,\n );\n collections[key] = shapes;\n continue;\n }\n\n if (isPlainObject(value)) {\n const mode = key === \"baseOption\" ? \"option\" : undefined;\n const shape = buildShape(value, context, mode);\n objectShapes[key] = shape;\n continue;\n }\n\n if (value !== undefined && !componentItems) {\n leaves.push(key);\n }\n }\n\n return {\n collections,\n objectShapes,\n leaves,\n hasAction: context.hasAction,\n };\n}\n\nfunction hasCollectionRemoval(prev: ItemShape[], next: ItemShape[] | undefined): boolean {\n if (!next) {\n return prev.length > 0;\n }\n return next.length < prev.length;\n}\n\nfunction getItemIdentity(item: ItemShape): string | undefined {\n return item.id !== undefined\n ? `id:${item.id}`\n : item.name !== undefined\n ? `name:${item.name}`\n : undefined;\n}\n\nfunction hasIdentityChange(prev: ItemShape[], next: ItemShape[]): boolean {\n const length = Math.min(prev.length, next.length);\n for (let index = 0; index < length; index++) {\n const previous = getItemIdentity(prev[index]);\n const current = getItemIdentity(next[index]);\n if (previous !== current) {\n return true;\n }\n }\n return false;\n}\n\nfunction preservesReplacementOrder(prev: ItemShape[], next: ItemShape[]): boolean {\n const positions = new Map<string, number>();\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n if (item.id !== undefined) {\n positions.set(item.id, index);\n }\n }\n\n return next.every((item, index) => {\n const previousIndex = item.id === undefined ? undefined : positions.get(item.id);\n return previousIndex === undefined || previousIndex === index;\n });\n}\n\nfunction hasShapeRemoval(prev: Shape, next: Shape): boolean {\n if (prev === true || next === true) {\n return false;\n }\n\n const prevIsCollection = Array.isArray(prev);\n const nextIsCollection = Array.isArray(next);\n if (prevIsCollection || nextIsCollection) {\n return (\n !prevIsCollection ||\n !nextIsCollection ||\n hasCollectionRemoval(prev, next) ||\n hasIdentityChange(prev, next) ||\n compareItemShapes(prev, next) !== UpdateKind.Merge\n );\n }\n\n for (const key in prev) {\n const nextChild = next[key];\n if (nextChild === undefined || hasShapeRemoval(prev[key] as Shape, nextChild)) {\n return true;\n }\n }\n return false;\n}\n\nfunction compareItemShapes(prev: ItemShape[], next: ItemShape[]): UpdateKind {\n const byId = new Map<string, ItemShape>();\n for (const item of next) {\n if (item.id !== undefined && !byId.has(item.id)) {\n byId.set(item.id, item);\n }\n }\n let kind = UpdateKind.Merge;\n\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n const candidate = item.id !== undefined ? byId.get(item.id) : next[index];\n if (\n candidate &&\n (item.type !== candidate.type ||\n item.parentId !== candidate.parentId ||\n hasShapeRemoval(item.shape, candidate.shape))\n ) {\n // replaceMerge recreates anonymous items, but merges items with explicit IDs.\n if (item.id !== undefined) {\n return UpdateKind.Reset;\n }\n kind = UpdateKind.Replace;\n }\n }\n return kind;\n}\n\nfunction needsGlobalReset(prev: Signature, next: Signature): boolean {\n // Global arrays may already contain theme/default entries, while aria is only\n // auto-enabled when it is present during initial model creation.\n if (next.objectShapes.aria && !prev.objectShapes.aria) {\n return true;\n }\n for (const key in next.collections) {\n if (\n !prev.collections[key] &&\n !prev.objectShapes[key] &&\n !prev.leaves.includes(key) &&\n !ComponentModel.hasClass(key)\n ) {\n return true;\n }\n }\n\n for (const key in prev.objectShapes) {\n const prevShape = prev.objectShapes[key];\n const nextShape = next.objectShapes[key];\n if (prevShape && nextShape) {\n if (hasShapeRemoval(prevShape, nextShape)) {\n return true;\n }\n continue;\n }\n\n if (!next.leaves.includes(key)) {\n return true;\n }\n }\n\n for (const key of prev.leaves) {\n if (\n !next.leaves.includes(key) &&\n next.collections[key] === undefined &&\n next.objectShapes[key] === undefined\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction compareCollection(prev: ItemShape[], next: ItemShape[] | undefined): UpdateKind {\n const kind = next ? compareItemShapes(prev, next) : UpdateKind.Merge;\n if (kind === UpdateKind.Reset) {\n return kind;\n }\n if (\n kind === UpdateKind.Merge &&\n !hasCollectionRemoval(prev, next) &&\n !(next && hasIdentityChange(prev, next))\n ) {\n return UpdateKind.Merge;\n }\n return next && !preservesReplacementOrder(prev, next) ? UpdateKind.Reset : UpdateKind.Replace;\n}\n\n/**\n * Produce an update plan that preserves option structure and initialization semantics.\n * Falls back to `notMerge: true` when the change looks complex.\n */\nexport function planUpdate(prev: Signature | undefined, option: Option): PlannedUpdate {\n const next = buildSignature(option);\n\n if (!prev) {\n return {\n signature: next,\n plan: { notMerge: false },\n };\n }\n\n let reset = needsGlobalReset(prev, next);\n const replaceMerge: string[] = [];\n for (const key in prev.collections) {\n const collection = next.collections[key];\n const kind = compareCollection(prev.collections[key]!, collection);\n if (!ComponentModel.hasClass(key)) {\n // Removing even an empty setting array can expose theme/default entries.\n reset ||= !collection || kind !== UpdateKind.Merge;\n } else if (kind === UpdateKind.Reset) {\n reset = true;\n } else if (kind === UpdateKind.Replace) {\n replaceMerge.push(key);\n }\n }\n\n // Command compatibility is separate from snapshot analysis: keep the target tree\n // and all safe unrelated replacements even when a complete reset is unavailable.\n const replacements = next.hasAction\n ? replaceMerge.filter((key) => key !== \"graphic\")\n : replaceMerge;\n const notMerge = reset && !next.hasAction;\n\n return {\n signature: next,\n plan:\n !notMerge && replacements.length\n ? { notMerge, replaceMerge: replacements.sort() }\n : { notMerge },\n };\n}\n","export default \"x-vue-echarts{display:block;width:100%;height:100%;min-width:0;min-height:0;}\\nx-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;border-radius:inherit;}\\nx-vue-echarts>.echarts-host>:first-child,x-vue-echarts>.echarts-host>:first-child>canvas{border-radius:inherit;}\\n\"","import cssRules from \"./style.css?raw\";\nimport { isBrowser } from \"./utils\";\n\nif (isBrowser()) {\n if (Array.isArray(document.adoptedStyleSheets) && \"replaceSync\" in CSSStyleSheet.prototype) {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssRules);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n } else {\n const styleEl = document.createElement(\"style\");\n styleEl.textContent = cssRules;\n document.head.appendChild(styleEl);\n }\n}\n","import {\n defineComponent,\n shallowRef,\n toRef,\n watch,\n computed,\n inject,\n onMounted,\n onBeforeUnmount,\n h,\n nextTick,\n watchSyncEffect,\n toValue,\n} from \"vue\";\nimport { init as initChart } from \"echarts/core\";\n\nimport type { InjectionKey, PropType, VNodeChild } from \"vue\";\n\nimport { usePublicAPI, type PublicMethods } from \"./composables/api\";\nimport { useAutoresize, autoresizeProps } from \"./composables/autoresize\";\nimport { useLoading, loadingProps } from \"./composables/loading\";\nimport { useSlotOption, type Slots } from \"./composables/slot\";\nimport { hasZeroDimension, isIgnorableWatchChange, warn } from \"./utils\";\nimport { register, TAG_NAME } from \"./wc\";\nimport { useRuntime as useGraphic } from \"./graphic/runtime\";\nimport { useReactiveChartListeners, getRootAttrs } from \"./core/events\";\nimport { planUpdate } from \"./update\";\nimport type { Signature } from \"./update\";\n\nimport type {\n EChartsType,\n SetOptionType,\n Option,\n Theme,\n ThemeInjection,\n InitOptions,\n InitOptionsInjection,\n UpdateOptions,\n UpdateOptionsInjection,\n Emits,\n Component,\n} from \"./types\";\nimport type { EChartsElement } from \"./wc\";\n\nimport \"./style\";\n\nconst wcRegistered = register();\nconst SKIP_AUTO_UPDATE = Symbol();\ntype ApplyMode = \"manual\" | \"graphic\";\nenum UpdateReason {\n Option = 1,\n Graphic = 2,\n Theme = 4,\n Reinit = 8,\n}\n\nexport const THEME_KEY: InjectionKey<ThemeInjection> = Symbol();\nexport const INIT_OPTIONS_KEY: InjectionKey<InitOptionsInjection> = Symbol();\nexport const UPDATE_OPTIONS_KEY: InjectionKey<UpdateOptionsInjection> = Symbol();\nexport { LOADING_OPTIONS_KEY } from \"./composables/loading\";\n\nconst chartProps = {\n option: Object as PropType<Option>,\n theme: {\n type: [Object, String] as PropType<Theme>,\n },\n initOptions: Object as PropType<InitOptions>,\n updateOptions: Object as PropType<UpdateOptions>,\n group: String,\n manualUpdate: Boolean,\n ...autoresizeProps,\n ...loadingProps,\n};\n\n/** Methods and read-only state exposed by VChart through a template ref. */\nexport type Exposed = {\n setOption: SetOptionType;\n readonly root: HTMLElement | undefined;\n readonly chart: EChartsType | undefined;\n} & PublicMethods;\n\nconst ECharts = /* @__PURE__ */ defineComponent({\n name: \"Echarts\",\n inheritAttrs: false,\n props: chartProps,\n emits: {} as Emits,\n slots: Object as Slots,\n setup(props, { attrs, expose, slots }) {\n const root = shallowRef<EChartsElement>();\n const chartHost = shallowRef<HTMLDivElement>();\n const chart = shallowRef<EChartsType>();\n const updateRequest = shallowRef(0);\n let pendingUpdate = 0;\n const defaultTheme = inject(THEME_KEY, null);\n const defaultInitOptions = inject(INIT_OPTIONS_KEY, null);\n const defaultUpdateOptions = inject(UPDATE_OPTIONS_KEY, null);\n\n const autoresize = toRef(props, \"autoresize\");\n const manualUpdate = toRef(props, \"manualUpdate\");\n const loading = toRef(props, \"loading\");\n const loadingType = toRef(props, \"loadingType\");\n const loadingOptions = toRef(props, \"loadingOptions\");\n\n const realTheme = computed(() => props.theme ?? toValue(defaultTheme) ?? undefined);\n const realInitOptions = computed(\n () => props.initOptions ?? toValue(defaultInitOptions) ?? undefined,\n );\n const realUpdateOptions = computed(() => props.updateOptions ?? toValue(defaultUpdateOptions));\n\n const terminallyDisposed = shallowRef(false);\n\n const {\n render: renderSlot,\n prepare: prepareSlots,\n setReady: setSlotsReady,\n cancelPendingUpdate: cancelSlotUpdate,\n } = useSlotOption(slots, requestUpdate);\n\n const graphic = useGraphic({\n slots,\n manualUpdate,\n requestUpdate: () => requestUpdate(UpdateReason.Graphic),\n });\n\n // `null` means the model has no trusted signature, so the next smart update must rebuild.\n let lastSignature: Signature | null | undefined;\n let lastAutoOption: Option | undefined;\n let themeApplied = false;\n let optionApplied = false;\n let initDeferred = false;\n let graphicSlotApplied = false;\n let updateRevision = 0;\n let modelValid = false;\n\n function getAutoOption(): Option | undefined {\n // A graphic slot is a complete option source even without an `option` prop.\n return props.option ?? (graphic && (slots.graphic || graphicSlotApplied) ? {} : undefined);\n }\n\n function isCurrent(instance: EChartsType | undefined): instance is EChartsType {\n return instance !== undefined && chart.value === instance && !terminallyDisposed.value;\n }\n\n function runUpdate(\n instance: EChartsType,\n update: () => void,\n signature: Signature | null | undefined,\n ): boolean {\n const revision = ++updateRevision;\n // A failed native call may have partially changed the model. Only a successful,\n // uninterrupted submission can establish a new smart-update baseline.\n lastSignature = null;\n modelValid = false;\n update();\n if (!isCurrent(instance) || updateRevision !== revision) {\n return false;\n }\n lastSignature = signature;\n modelValid = true;\n return true;\n }\n\n function applyTheme(instance: EChartsType): boolean {\n // ECharts ignores setTheme until its first option creates the chart model.\n if (!optionApplied || themeApplied) {\n return false;\n }\n syncListeners();\n const revision = updateRevision + 1;\n // Native update events can submit another option before setTheme returns.\n themeApplied = true;\n try {\n return runUpdate(\n instance,\n () => instance.setTheme(realTheme.value || {}),\n lastSignature === undefined ? undefined : null,\n );\n } catch (error) {\n if (updateRevision === revision) {\n themeApplied = false;\n }\n throw error;\n }\n }\n\n function applyOption(\n instance: EChartsType,\n option: Option,\n mode?: ApplyMode,\n manualOptions?: UpdateOptions,\n ): void {\n const manual = mode === \"manual\";\n initDeferred = false;\n const preparedSlots = prepareSlots(option);\n const slotted = preparedSlots.option;\n const hasGraphicSlot = Boolean(graphic && slots.graphic);\n let updateOptions = manual ? manualOptions : (realUpdateOptions.value ?? undefined);\n let nextSignature: Signature | null = null;\n\n const graphicOnly = mode === \"graphic\" && hasGraphicSlot && graphicSlotApplied && modelValid;\n if (graphicOnly) {\n nextSignature = lastSignature ?? null;\n } else if (!manual && !updateOptions) {\n // An owned graphic tree is planned separately from the source it overrides.\n const source = hasGraphicSlot ? { ...slotted, graphic: undefined } : slotted;\n const planned = planUpdate(lastSignature ?? undefined, source);\n const rebuild = !planned.signature.hasAction && lastSignature === null;\n updateOptions = rebuild ? { ...planned.plan, notMerge: true } : planned.plan;\n nextSignature = planned.signature;\n }\n\n const replaceMerge = updateOptions?.replaceMerge;\n const replacements = typeof replaceMerge === \"string\" ? [replaceMerge] : (replaceMerge ?? []);\n const preparedGraphic = graphic?.prepare(\n slotted,\n !modelValid ||\n !graphicSlotApplied ||\n Boolean(updateOptions?.notMerge) ||\n replacements.includes(\"graphic\") ||\n manual,\n );\n let patched = preparedGraphic?.option ?? slotted;\n const replaceGraphic = preparedGraphic?.replace || (graphicSlotApplied && !hasGraphicSlot);\n if (replaceGraphic && !updateOptions?.notMerge && !replacements.includes(\"graphic\")) {\n updateOptions = { ...updateOptions, replaceMerge: [...replacements, \"graphic\"] };\n }\n const replacesSource = replacements.some((key) => key !== \"graphic\");\n if (graphicOnly && !updateOptions?.notMerge && !replacesSource) {\n patched = { graphic: patched.graphic };\n }\n syncListeners();\n if (!runUpdate(instance, () => instance.setOption(patched, updateOptions), nextSignature)) {\n return;\n }\n preparedSlots.commit();\n preparedGraphic?.commit();\n graphicSlotApplied = hasGraphicSlot;\n optionApplied = true;\n if (!manual) {\n lastAutoOption = option;\n }\n if (applyTheme(instance) && !manual) {\n applyOption(instance, option);\n }\n }\n\n function scheduleUpdate(reason: UpdateReason): void {\n pendingUpdate |= reason;\n updateRequest.value++;\n }\n\n function requestUpdate(reason = UpdateReason.Option): void {\n if (!manualUpdate.value && !initDeferred && !terminallyDisposed.value) {\n scheduleUpdate(reason);\n }\n }\n\n function flushUpdate(): void {\n const reasons = pendingUpdate;\n pendingUpdate = 0;\n const instance = chart.value;\n if (!reasons || !isCurrent(instance)) {\n return;\n }\n if (reasons & UpdateReason.Reinit) {\n cleanup();\n init();\n return;\n }\n if (initDeferred) {\n return;\n }\n\n const option =\n reasons & (UpdateReason.Option | UpdateReason.Graphic)\n ? (getAutoOption() ?? lastAutoOption)\n : lastAutoOption;\n const needsTheme = !themeApplied && optionApplied;\n if (needsTheme && !applyTheme(instance)) {\n return;\n }\n if (!manualUpdate.value && option) {\n const graphicOnly = reasons === UpdateReason.Graphic && !needsTheme;\n applyOption(instance, option, graphicOnly ? \"graphic\" : undefined);\n }\n }\n\n if (slots.graphic && !graphic) {\n warn(\n \"Detected `#graphic` slot but no extension is registered. Import from `vue-echarts/graphic` to enable it.\",\n );\n }\n\n const { sync: syncListeners, stop: stopListeners } = useReactiveChartListeners(chart, attrs);\n\n function cleanup(): void {\n pendingUpdate = 0;\n graphic?.cancelPendingFlush();\n updateRevision++;\n const instance = chart.value;\n chart.value = undefined;\n setSlotsReady(false);\n lastSignature = undefined;\n modelValid = false;\n lastAutoOption = undefined;\n initDeferred = false;\n graphicSlotApplied = false;\n instance?.dispose();\n }\n\n function init(): void {\n pendingUpdate = 0;\n optionApplied = false;\n\n const host = chartHost.value as HTMLDivElement;\n const instance = initChart(host, realTheme.value, realInitOptions.value);\n chart.value = instance;\n if (!isCurrent(instance)) {\n return;\n }\n themeApplied = true;\n\n function commit(): void {\n const option = manualUpdate.value ? props.option : getAutoOption();\n if (option) {\n if (manualUpdate.value) {\n applyOption(instance, option, \"manual\", realUpdateOptions.value ?? undefined);\n } else {\n applyOption(instance, option);\n }\n }\n setSlotsReady(isCurrent(instance));\n }\n\n if (autoresize.value) {\n initDeferred = true;\n nextTick(() => {\n if (!isCurrent(instance)) {\n return;\n }\n if (autoresize.value && !hasZeroDimension(host.offsetWidth, host.offsetHeight)) {\n instance.resize();\n if (!isCurrent(instance)) {\n return;\n }\n }\n if (initDeferred) {\n initDeferred = false;\n commit();\n } else {\n setSlotsReady(true);\n }\n });\n return;\n }\n\n commit();\n }\n\n const setOption: SetOptionType = (option, notMerge, lazyUpdate?: boolean) => {\n if (!props.manualUpdate) {\n warn(\"`setOption` is only available when `manual-update` is `true`.\");\n return;\n }\n\n const instance = chart.value;\n if (!isCurrent(instance)) {\n return;\n }\n\n const updateOptions =\n typeof notMerge === \"boolean\"\n ? { notMerge, lazyUpdate }\n : (notMerge ?? (lazyUpdate === undefined ? undefined : { lazyUpdate }));\n\n applyOption(instance, option, \"manual\", updateOptions);\n };\n\n // Mark synchronously so later batched replacements cannot mask nested changes.\n const stopThemeWatch = watch(\n realTheme,\n (theme, previousTheme) => {\n if (isIgnorableWatchChange(theme, previousTheme)) {\n return;\n }\n themeApplied = false;\n scheduleUpdate(UpdateReason.Theme);\n },\n { deep: true, flush: \"sync\" },\n );\n\n const stopInitOptionsWatch = watch(\n realInitOptions,\n (options, previousOptions) => {\n if (!isIgnorableWatchChange(options, previousOptions)) {\n scheduleUpdate(UpdateReason.Reinit);\n }\n },\n { deep: true, flush: \"sync\" },\n );\n\n function watchOption() {\n return watch(\n () => (manualUpdate.value ? SKIP_AUTO_UPDATE : props.option),\n (option, previousOption) => {\n if (\n option !== SKIP_AUTO_UPDATE &&\n previousOption !== SKIP_AUTO_UPDATE &&\n (option ?? getAutoOption())\n ) {\n requestUpdate();\n }\n },\n // Batch deep traversal, then submit after Vue has prepared slot containers and graphic nodes.\n { deep: true },\n );\n }\n let stopOptionWatch = watchOption();\n const stopModeWatch = watch(manualUpdate, () => scheduleUpdate(UpdateReason.Reinit), {\n flush: \"sync\",\n });\n const stopUpdateWatch = watch(updateRequest, flushUpdate, { flush: \"post\" });\n\n const stopGroupWatch = watchSyncEffect(() => {\n const instance = chart.value;\n if (isCurrent(instance)) {\n instance.group = props.group ?? \"\";\n }\n });\n const stopLoading = useLoading(chart, loading, loadingType, loadingOptions);\n const stopAutoresize = useAutoresize(chart, autoresize, chartHost);\n\n function dispose(): void {\n if (terminallyDisposed.value) {\n return;\n }\n terminallyDisposed.value = true;\n stopThemeWatch();\n stopInitOptionsWatch();\n stopOptionWatch();\n stopModeWatch();\n stopUpdateWatch();\n stopGroupWatch();\n stopLoading();\n stopAutoresize();\n stopListeners();\n cleanup();\n }\n\n const publicApi = usePublicAPI(chart, dispose, () => terminallyDisposed.value);\n const guardedClear = publicApi.clear;\n publicApi.clear = () => {\n const instance = chart.value;\n if (!isCurrent(instance)) {\n return guardedClear();\n }\n initDeferred = false;\n pendingUpdate = 0;\n graphic?.cancelPendingFlush();\n cancelSlotUpdate();\n // Drop earlier queued source changes while observing changes made inside clear's events.\n stopOptionWatch();\n stopOptionWatch = watchOption();\n if (runUpdate(instance, () => instance.clear(), undefined)) {\n lastAutoOption = undefined;\n graphicSlotApplied = false;\n optionApplied = true;\n }\n };\n\n onMounted(() => {\n if (!terminallyDisposed.value) {\n init();\n }\n });\n\n onBeforeUnmount(() => {\n stopOptionWatch();\n if (terminallyDisposed.value) {\n return;\n }\n terminallyDisposed.value = true;\n const element = root.value;\n if (wcRegistered && element?.isConnected && element.__dispose === null) {\n element.__dispose = cleanup;\n return;\n }\n\n cleanup();\n });\n\n const exposed = {\n setOption,\n get root(): HTMLElement | undefined {\n return root.value ?? undefined;\n },\n get chart() {\n const instance = chart.value;\n return isCurrent(instance) ? instance : undefined;\n },\n };\n expose(Object.assign(exposed, publicApi));\n\n return (() => {\n const children: VNodeChild[] = [\n h(\"div\", {\n ref: chartHost,\n class: \"echarts-host\",\n }),\n ];\n\n if (!terminallyDisposed.value) {\n const teleported = renderSlot();\n if (teleported) {\n children.push(teleported);\n }\n\n const graphicContent = graphic?.render();\n if (graphicContent) {\n children.push(graphicContent);\n }\n }\n\n const forwardedAttrs = getRootAttrs(attrs);\n\n return h(\n TAG_NAME,\n {\n ...forwardedAttrs,\n ref: root,\n class: [\"echarts\", forwardedAttrs.class],\n },\n children,\n );\n }) as unknown as typeof exposed & PublicMethods;\n },\n}) as Component<typeof chartProps, Exposed, Emits, Slots>;\n\nexport default ECharts;\n","import ECharts from \"./ECharts\";\nimport type { Slot } from \"vue\";\n\nexport interface VChartSlotsExtension {\n graphic?: Slot;\n}\n\nexport default ECharts;\nexport * from \"./ECharts\";\nexport type { AutoResize, LoadingOptions, Component } from \"./types\";\nexport type { Slots } from \"./composables/slot\";\n","import \"echarts\";\nimport ECharts, * as exported from \"./index\";\n\nexport default Object.assign(ECharts, exported);\n"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
x-vue-echarts{display:block;width:100%;height:100%;min-width:0;}
|
|
2
|
-
x-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;}
|
|
1
|
+
x-vue-echarts{display:block;width:100%;height:100%;min-width:0;min-height:0;}
|
|
2
|
+
x-vue-echarts>.echarts-host{display:block;width:100%;height:100%;min-width:0;border-radius:inherit;}
|
|
3
3
|
x-vue-echarts>.echarts-host>:first-child,x-vue-echarts>.echarts-host>:first-child>canvas{border-radius:inherit;}
|
|
@@ -93,7 +93,10 @@ function analyzeItems(items, context, mode, componentItems) {
|
|
|
93
93
|
shapes.push({
|
|
94
94
|
id: toIdentity(identity?.id),
|
|
95
95
|
name: toIdentity(identity?.name),
|
|
96
|
-
...mode === "graphic" ? {
|
|
96
|
+
...mode === "graphic" ? {
|
|
97
|
+
type: toIdentity(identity?.type),
|
|
98
|
+
parentId: toIdentity(identity?.parentId)
|
|
99
|
+
} : {},
|
|
97
100
|
shape: buildShape(item, context, mode)
|
|
98
101
|
});
|
|
99
102
|
}
|
|
@@ -140,11 +143,7 @@ function getItemIdentity(item) {
|
|
|
140
143
|
}
|
|
141
144
|
function hasIdentityChange(prev, next) {
|
|
142
145
|
const length = Math.min(prev.length, next.length);
|
|
143
|
-
for (let index = 0; index < length; index++)
|
|
144
|
-
const previous = getItemIdentity(prev[index]);
|
|
145
|
-
const current = getItemIdentity(next[index]);
|
|
146
|
-
if (previous !== current && (previous !== void 0 || current !== void 0)) return true;
|
|
147
|
-
}
|
|
146
|
+
for (let index = 0; index < length; index++) if (getItemIdentity(prev[index]) !== getItemIdentity(next[index])) return true;
|
|
148
147
|
return false;
|
|
149
148
|
}
|
|
150
149
|
function preservesReplacementOrder(prev, next) {
|
|
@@ -176,7 +175,7 @@ function compareItemShapes(prev, next) {
|
|
|
176
175
|
for (let index = 0; index < prev.length; index++) {
|
|
177
176
|
const item = prev[index];
|
|
178
177
|
const candidate = item.id !== void 0 ? byId.get(item.id) : next[index];
|
|
179
|
-
if (candidate && (item.type !== candidate.type || hasShapeRemoval(item.shape, candidate.shape))) {
|
|
178
|
+
if (candidate && (item.type !== candidate.type || item.parentId !== candidate.parentId || hasShapeRemoval(item.shape, candidate.shape))) {
|
|
180
179
|
if (item.id !== void 0) return 2;
|
|
181
180
|
kind = 1;
|
|
182
181
|
}
|
|
@@ -236,4 +235,4 @@ function planUpdate(prev, option) {
|
|
|
236
235
|
//#endregion
|
|
237
236
|
export { hasEventHandler as a, isIgnorableWatchChange as c, isValidArrayIndex as d, parseOnEvent as f, createEventInvoker as i, isOn as l, registerRuntime as n, hasZeroDimension as o, warn$1 as p, useRuntime as r, isBrowser as s, planUpdate as t, isPlainObject as u };
|
|
238
237
|
|
|
239
|
-
//# sourceMappingURL=update-
|
|
238
|
+
//# sourceMappingURL=update-DiQcDAnW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-DiQcDAnW.js","names":["warn"],"sources":["../src/utils.ts","../src/graphic/runtime.ts","../src/update.ts"],"sourcesContent":["import { warn as vueWarn } from \"vue\";\n\nexport type AttrMap = Record<string, unknown>;\nexport type EventHandler = (...args: unknown[]) => unknown;\n\nexport function hasEventHandler(value: unknown): boolean {\n return typeof value === \"function\" || (Array.isArray(value) && value.length > 0);\n}\n\nexport function createEventInvoker(value: unknown): EventHandler | undefined {\n if (typeof value === \"function\") {\n return value as EventHandler;\n }\n\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n\n return (...args: unknown[]): unknown => {\n let result: unknown;\n for (const handler of value.slice()) {\n result = handler(...args) || result;\n }\n return result;\n };\n}\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\n// Copied from\n// https://github.com/vuejs/vue-next/blob/5a7a1b8293822219283d6e267496bec02234b0bc/packages/shared/src/index.ts#L40-L41\nconst onRE = /^on[^a-z]/;\nexport const isOn = (key: string): boolean => onRE.test(key);\n\ntype ParsedOnEvent = {\n event: string;\n once: boolean;\n};\n\nexport function parseOnEvent(key: string): ParsedOnEvent | null {\n if (!isOn(key)) {\n return null;\n }\n\n let event = key.charAt(2).toLowerCase() + key.slice(3);\n const once = event.endsWith(\"Once\");\n if (once) {\n event = event.slice(0, -4);\n }\n\n return { event, once };\n}\n\nexport function isValidArrayIndex(key: string): boolean {\n const num = Number(key);\n return Number.isInteger(num) && num >= 0 && num < Math.pow(2, 32) - 1 && String(num) === key;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n\nexport function hasZeroDimension(width: number, height: number): boolean {\n return width === 0 || height === 0;\n}\n\nexport function isIgnorableWatchChange(value: unknown, previous: unknown): boolean {\n if (Object.is(value, previous)) {\n return value === null || typeof value !== \"object\";\n }\n\n if (!isPlainObject(value) || !isPlainObject(previous)) {\n return false;\n }\n\n const keys = Object.keys(value);\n return (\n keys.length === Object.keys(previous).length &&\n keys.every((key) => Object.hasOwn(previous, key) && Object.is(value[key], previous[key]))\n );\n}\n\nconst LOG_PREFIX = \"[vue-echarts]\";\n\nexport function warn(message: string): void {\n vueWarn(`${LOG_PREFIX} ${message}`);\n}\n","import type { Ref, Slots, VNodeChild } from \"vue\";\n\nimport type { Option } from \"../types\";\n\nexport type GraphicContext = {\n slots: Slots;\n manualUpdate: Ref<boolean>;\n requestUpdate: () => void;\n};\n\ntype GraphicRuntime = {\n cancelPendingFlush: () => void;\n prepare: (\n option: Option,\n reset: boolean,\n ) => { option: Option; replace: boolean; commit: () => void };\n render: () => VNodeChild;\n};\n\nlet runtimeFactory: ((context: GraphicContext) => GraphicRuntime) | null = null;\n\nexport function registerRuntime(factory: (context: GraphicContext) => GraphicRuntime): void {\n runtimeFactory = factory;\n}\n\nexport function useRuntime(context: GraphicContext): GraphicRuntime | null {\n return runtimeFactory ? runtimeFactory(context) : null;\n}\n","import { ComponentModel } from \"echarts/core\";\n\nimport type { Option } from \"./types\";\nimport { isPlainObject } from \"./utils\";\n\ninterface ObjectShape {\n [key: string]: Shape | undefined;\n}\ntype Shape = true | ObjectShape | ItemShape[];\ntype ItemShape = {\n id: string | undefined;\n name: string | undefined;\n /** Graphic elements cannot merge a change of type or parent. */\n type?: string;\n parentId?: string;\n shape: Shape;\n};\ntype ShapeMode = \"option\" | \"media\" | \"graphic\";\ntype AnalysisContext = {\n hasAction: boolean;\n};\n\nfunction toIdentity(value: unknown): string | undefined {\n return typeof value === \"string\" || typeof value === \"number\" ? String(value) : undefined;\n}\n\n/** Minimal signature of an option used to decide setOption behavior. */\nexport interface Signature {\n /** Map of top-level arrays and singleton components to their summaries. */\n collections: Record<string, ItemShape[] | undefined>;\n /** Structural snapshots used to detect nested property removal without retaining option values. */\n objectShapes: Record<string, Shape | undefined>;\n /** Top-level keys whose values are not traversed. */\n leaves: string[];\n /** Whether the option delegates graphic element changes to `$action`. */\n hasAction: boolean;\n}\n\ninterface PlannedUpdate {\n signature: Signature;\n plan: {\n notMerge: boolean;\n replaceMerge?: string[];\n };\n}\n\nenum UpdateKind {\n Merge,\n Replace,\n Reset,\n}\n\nfunction buildShape(\n value: unknown,\n context: AnalysisContext,\n mode?: ShapeMode,\n): true | ObjectShape {\n if (!isPlainObject(value)) {\n return true;\n }\n\n const shape: ObjectShape = Object.create(null);\n for (const key of Object.keys(value)) {\n const child = value[key];\n if (child === undefined) {\n continue;\n }\n if (mode === \"graphic\" && key === \"$action\") {\n context.hasAction = true;\n }\n if (mode === \"graphic\" && (key === \"elements\" || key === \"children\") && Array.isArray(child)) {\n shape[key] = analyzeItems(child, context, \"graphic\", true);\n continue;\n }\n if (mode === \"option\") {\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(child) || (componentItems && isPlainObject(child))) {\n shape[key] = analyzeItems(\n Array.isArray(child) ? child : [child],\n context,\n key === \"graphic\" ? \"graphic\" : undefined,\n componentItems,\n );\n continue;\n }\n }\n shape[key] =\n mode === \"media\" && key === \"option\"\n ? buildShape(child, context, \"option\")\n : buildShape(child, context);\n }\n return shape;\n}\n\nfunction analyzeItems(\n items: unknown[],\n context: AnalysisContext,\n mode: ShapeMode | undefined,\n componentItems: boolean,\n): ItemShape[] {\n const shapes: ItemShape[] = [];\n\n for (const item of items) {\n const identity = componentItems ? (item as Record<string, unknown>) : undefined;\n shapes.push({\n id: toIdentity(identity?.id),\n name: toIdentity(identity?.name),\n ...(mode === \"graphic\"\n ? { type: toIdentity(identity?.type), parentId: toIdentity(identity?.parentId) }\n : {}),\n shape: buildShape(item, context, mode),\n });\n }\n\n return shapes;\n}\n\n/**\n * Build a structural signature that retains component identities but not option payload values.\n * Data arrays inside component items remain leaves. Graphic element trees and nested option units\n * (`baseOption`, timeline options, and media options) reuse collection summaries.\n */\nfunction buildSignature(option: Option): Signature {\n const opt = option as Record<string, unknown>;\n\n const context: AnalysisContext = { hasAction: false };\n const collections: Record<string, ItemShape[] | undefined> = Object.create(null);\n const objectShapes: Record<string, Shape | undefined> = Object.create(null);\n const leaves: string[] = [];\n\n for (const key of Object.keys(opt)) {\n const value = opt[key];\n const componentItems = ComponentModel.hasClass(key);\n if (Array.isArray(value) || (componentItems && isPlainObject(value))) {\n const mode =\n key === \"options\"\n ? \"option\"\n : key === \"media\"\n ? \"media\"\n : key === \"graphic\"\n ? \"graphic\"\n : undefined;\n const shapes = analyzeItems(\n Array.isArray(value) ? value : [value],\n context,\n mode,\n componentItems,\n );\n collections[key] = shapes;\n continue;\n }\n\n if (isPlainObject(value)) {\n const mode = key === \"baseOption\" ? \"option\" : undefined;\n const shape = buildShape(value, context, mode);\n objectShapes[key] = shape;\n continue;\n }\n\n if (value !== undefined && !componentItems) {\n leaves.push(key);\n }\n }\n\n return {\n collections,\n objectShapes,\n leaves,\n hasAction: context.hasAction,\n };\n}\n\nfunction hasCollectionRemoval(prev: ItemShape[], next: ItemShape[] | undefined): boolean {\n if (!next) {\n return prev.length > 0;\n }\n return next.length < prev.length;\n}\n\nfunction getItemIdentity(item: ItemShape): string | undefined {\n return item.id !== undefined\n ? `id:${item.id}`\n : item.name !== undefined\n ? `name:${item.name}`\n : undefined;\n}\n\nfunction hasIdentityChange(prev: ItemShape[], next: ItemShape[]): boolean {\n const length = Math.min(prev.length, next.length);\n for (let index = 0; index < length; index++) {\n const previous = getItemIdentity(prev[index]);\n const current = getItemIdentity(next[index]);\n if (previous !== current) {\n return true;\n }\n }\n return false;\n}\n\nfunction preservesReplacementOrder(prev: ItemShape[], next: ItemShape[]): boolean {\n const positions = new Map<string, number>();\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n if (item.id !== undefined) {\n positions.set(item.id, index);\n }\n }\n\n return next.every((item, index) => {\n const previousIndex = item.id === undefined ? undefined : positions.get(item.id);\n return previousIndex === undefined || previousIndex === index;\n });\n}\n\nfunction hasShapeRemoval(prev: Shape, next: Shape): boolean {\n if (prev === true || next === true) {\n return false;\n }\n\n const prevIsCollection = Array.isArray(prev);\n const nextIsCollection = Array.isArray(next);\n if (prevIsCollection || nextIsCollection) {\n return (\n !prevIsCollection ||\n !nextIsCollection ||\n hasCollectionRemoval(prev, next) ||\n hasIdentityChange(prev, next) ||\n compareItemShapes(prev, next) !== UpdateKind.Merge\n );\n }\n\n for (const key in prev) {\n const nextChild = next[key];\n if (nextChild === undefined || hasShapeRemoval(prev[key] as Shape, nextChild)) {\n return true;\n }\n }\n return false;\n}\n\nfunction compareItemShapes(prev: ItemShape[], next: ItemShape[]): UpdateKind {\n const byId = new Map<string, ItemShape>();\n for (const item of next) {\n if (item.id !== undefined && !byId.has(item.id)) {\n byId.set(item.id, item);\n }\n }\n let kind = UpdateKind.Merge;\n\n for (let index = 0; index < prev.length; index++) {\n const item = prev[index];\n const candidate = item.id !== undefined ? byId.get(item.id) : next[index];\n if (\n candidate &&\n (item.type !== candidate.type ||\n item.parentId !== candidate.parentId ||\n hasShapeRemoval(item.shape, candidate.shape))\n ) {\n // replaceMerge recreates anonymous items, but merges items with explicit IDs.\n if (item.id !== undefined) {\n return UpdateKind.Reset;\n }\n kind = UpdateKind.Replace;\n }\n }\n return kind;\n}\n\nfunction needsGlobalReset(prev: Signature, next: Signature): boolean {\n // Global arrays may already contain theme/default entries, while aria is only\n // auto-enabled when it is present during initial model creation.\n if (next.objectShapes.aria && !prev.objectShapes.aria) {\n return true;\n }\n for (const key in next.collections) {\n if (\n !prev.collections[key] &&\n !prev.objectShapes[key] &&\n !prev.leaves.includes(key) &&\n !ComponentModel.hasClass(key)\n ) {\n return true;\n }\n }\n\n for (const key in prev.objectShapes) {\n const prevShape = prev.objectShapes[key];\n const nextShape = next.objectShapes[key];\n if (prevShape && nextShape) {\n if (hasShapeRemoval(prevShape, nextShape)) {\n return true;\n }\n continue;\n }\n\n if (!next.leaves.includes(key)) {\n return true;\n }\n }\n\n for (const key of prev.leaves) {\n if (\n !next.leaves.includes(key) &&\n next.collections[key] === undefined &&\n next.objectShapes[key] === undefined\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction compareCollection(prev: ItemShape[], next: ItemShape[] | undefined): UpdateKind {\n const kind = next ? compareItemShapes(prev, next) : UpdateKind.Merge;\n if (kind === UpdateKind.Reset) {\n return kind;\n }\n if (\n kind === UpdateKind.Merge &&\n !hasCollectionRemoval(prev, next) &&\n !(next && hasIdentityChange(prev, next))\n ) {\n return UpdateKind.Merge;\n }\n return next && !preservesReplacementOrder(prev, next) ? UpdateKind.Reset : UpdateKind.Replace;\n}\n\n/**\n * Produce an update plan that preserves option structure and initialization semantics.\n * Falls back to `notMerge: true` when the change looks complex.\n */\nexport function planUpdate(prev: Signature | undefined, option: Option): PlannedUpdate {\n const next = buildSignature(option);\n\n if (!prev) {\n return {\n signature: next,\n plan: { notMerge: false },\n };\n }\n\n let reset = needsGlobalReset(prev, next);\n const replaceMerge: string[] = [];\n for (const key in prev.collections) {\n const collection = next.collections[key];\n const kind = compareCollection(prev.collections[key]!, collection);\n if (!ComponentModel.hasClass(key)) {\n // Removing even an empty setting array can expose theme/default entries.\n reset ||= !collection || kind !== UpdateKind.Merge;\n } else if (kind === UpdateKind.Reset) {\n reset = true;\n } else if (kind === UpdateKind.Replace) {\n replaceMerge.push(key);\n }\n }\n\n // Command compatibility is separate from snapshot analysis: keep the target tree\n // and all safe unrelated replacements even when a complete reset is unavailable.\n const replacements = next.hasAction\n ? replaceMerge.filter((key) => key !== \"graphic\")\n : replaceMerge;\n const notMerge = reset && !next.hasAction;\n\n return {\n signature: next,\n plan:\n !notMerge && replacements.length\n ? { notMerge, replaceMerge: replacements.sort() }\n : { notMerge },\n };\n}\n"],"mappings":"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"}
|