mirror of
https://github.com/ecomfe/vue-echarts.git
synced 2025-08-14 19:23:28 +08:00
refactor!: remove resize-detector and update vue deps to 2.7+
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
## 7.0.0
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
* Dropped browsers without `ResizeObserver` support. Can work with [resize-observer-polyfill](https://www.npmjs.com/package/resize-observer-polyfill).
|
||||||
|
* Dropped support for Vue < 2.7.
|
||||||
|
|
||||||
## 6.7.3
|
## 6.7.3
|
||||||
|
|
||||||
* Fixed that `padding` on the component root doesn't work.
|
* Fixed that `padding` on the component root doesn't work.
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
"scripts/postinstall.js"
|
"scripts/postinstall.js"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"resize-detector": "^0.3.0",
|
|
||||||
"vue-demi": "^0.13.11"
|
"vue-demi": "^0.13.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -75,14 +74,11 @@
|
|||||||
"@vue/composition-api": "^1.0.5",
|
"@vue/composition-api": "^1.0.5",
|
||||||
"@vue/runtime-core": "^3.0.0",
|
"@vue/runtime-core": "^3.0.0",
|
||||||
"echarts": "^5.4.1",
|
"echarts": "^5.4.1",
|
||||||
"vue": "^2.6.12 || ^3.1.1"
|
"vue": "^2.7.0 || ^3.1.1"
|
||||||
},
|
},
|
||||||
"jsdelivr": "dist/index.umd.min.js",
|
"jsdelivr": "dist/index.umd.min.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@vue/runtime-core": {
|
"@vue/runtime-core": {
|
||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
|
6
pnpm-lock.yaml
generated
6
pnpm-lock.yaml
generated
@ -11,9 +11,6 @@ importers:
|
|||||||
'@vue/runtime-core':
|
'@vue/runtime-core':
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.4.24
|
version: 3.4.24
|
||||||
resize-detector:
|
|
||||||
specifier: ^0.3.0
|
|
||||||
version: 0.3.0
|
|
||||||
vue-demi:
|
vue-demi:
|
||||||
specifier: ^0.13.11
|
specifier: ^0.13.11
|
||||||
version: 0.13.11(@vue/composition-api@1.7.2(vue@3.4.24(typescript@4.6.4)))(vue@3.4.24(typescript@4.6.4))
|
version: 0.13.11(@vue/composition-api@1.7.2(vue@3.4.24(typescript@4.6.4)))(vue@3.4.24(typescript@4.6.4))
|
||||||
@ -117,6 +114,9 @@ importers:
|
|||||||
raw-loader:
|
raw-loader:
|
||||||
specifier: ^4.0.2
|
specifier: ^4.0.2
|
||||||
version: 4.0.2(webpack@5.91.0)
|
version: 4.0.2(webpack@5.91.0)
|
||||||
|
resize-detector:
|
||||||
|
specifier: ^0.3.0
|
||||||
|
version: 0.3.0
|
||||||
rimraf:
|
rimraf:
|
||||||
specifier: ^3.0.2
|
specifier: ^3.0.2
|
||||||
version: 3.0.2
|
version: 3.0.2
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
import { watch, type Ref, type PropType } from "vue-demi";
|
import { watch, type Ref, type PropType } from "vue-demi";
|
||||||
import { throttle } from "echarts/core";
|
import { throttle } from "echarts/core";
|
||||||
import {
|
|
||||||
addListener,
|
|
||||||
removeListener,
|
|
||||||
type ResizeCallback
|
|
||||||
} from "resize-detector";
|
|
||||||
import { type EChartsType } from "../types";
|
import { type EChartsType } from "../types";
|
||||||
|
|
||||||
type AutoresizeProp =
|
type AutoresizeProp =
|
||||||
@ -19,28 +14,50 @@ export function useAutoresize(
|
|||||||
autoresize: Ref<AutoresizeProp | undefined>,
|
autoresize: Ref<AutoresizeProp | undefined>,
|
||||||
root: Ref<HTMLElement | undefined>
|
root: Ref<HTMLElement | undefined>
|
||||||
): void {
|
): void {
|
||||||
let resizeListener: ResizeCallback | null = null;
|
watch(
|
||||||
|
[root, chart, autoresize],
|
||||||
|
([root, chart, autoresize], _, onCleanup) => {
|
||||||
|
let ro: ResizeObserver | null = null;
|
||||||
|
|
||||||
watch([root, chart, autoresize], ([root, chart, autoresize], _, cleanup) => {
|
|
||||||
if (root && chart && autoresize) {
|
if (root && chart && autoresize) {
|
||||||
|
const { offsetWidth, offsetHeight } = root;
|
||||||
const autoresizeOptions = autoresize === true ? {} : autoresize;
|
const autoresizeOptions = autoresize === true ? {} : autoresize;
|
||||||
const { throttle: wait = 100, onResize } = autoresizeOptions;
|
const { throttle: wait = 100, onResize } = autoresizeOptions;
|
||||||
|
|
||||||
|
let initialResizeTriggered = false;
|
||||||
|
|
||||||
const callback = () => {
|
const callback = () => {
|
||||||
chart.resize();
|
chart.resize();
|
||||||
onResize?.();
|
onResize?.();
|
||||||
};
|
};
|
||||||
|
|
||||||
resizeListener = wait ? throttle(callback, wait) : callback;
|
const resizeCallback = wait ? throttle(callback, wait) : callback;
|
||||||
addListener(root, resizeListener);
|
|
||||||
|
ro = new ResizeObserver(() => {
|
||||||
|
// We just skip ResizeObserver's initial resize callback if the
|
||||||
|
// size has not changed since the chart is rendered.
|
||||||
|
if (!initialResizeTriggered) {
|
||||||
|
initialResizeTriggered = true;
|
||||||
|
if (
|
||||||
|
root.offsetWidth === offsetWidth &&
|
||||||
|
root.offsetHeight === offsetHeight
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resizeCallback();
|
||||||
|
});
|
||||||
|
ro.observe(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup(() => {
|
onCleanup(() => {
|
||||||
if (root && resizeListener) {
|
if (ro) {
|
||||||
removeListener(root, resizeListener);
|
ro.disconnect();
|
||||||
|
ro = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const autoresizeProps = {
|
export const autoresizeProps = {
|
||||||
|
Reference in New Issue
Block a user