vue-echarts.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. import "./chunk-PRU7KXEZ.js";
  2. import "./chunk-F35ET5C4.js";
  3. import {
  4. init,
  5. throttle
  6. } from "./chunk-PRJRDRZN.js";
  7. import "./chunk-7YIZLZUW.js";
  8. import {
  9. computed2 as computed,
  10. defineComponent,
  11. getCurrentInstance,
  12. h,
  13. inject,
  14. nextTick,
  15. onBeforeUnmount,
  16. onMounted,
  17. shallowRef,
  18. toRefs,
  19. unref,
  20. watch,
  21. watchEffect
  22. } from "./chunk-RDKJTCL2.js";
  23. import "./chunk-HM4MQYWN.js";
  24. // node_modules/vue-echarts/node_modules/vue-demi/lib/index.mjs
  25. var Vue2 = void 0;
  26. // node_modules/resize-detector/esm/index.js
  27. var raf = null;
  28. function requestAnimationFrame(callback) {
  29. if (!raf) {
  30. raf = (window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback2) {
  31. return setTimeout(callback2, 16);
  32. }).bind(window);
  33. }
  34. return raf(callback);
  35. }
  36. var caf = null;
  37. function cancelAnimationFrame(id) {
  38. if (!caf) {
  39. caf = (window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id2) {
  40. clearTimeout(id2);
  41. }).bind(window);
  42. }
  43. caf(id);
  44. }
  45. function createStyles(styleText) {
  46. var style2 = document.createElement("style");
  47. if (style2.styleSheet) {
  48. style2.styleSheet.cssText = styleText;
  49. } else {
  50. style2.appendChild(document.createTextNode(styleText));
  51. }
  52. (document.querySelector("head") || document.body).appendChild(style2);
  53. return style2;
  54. }
  55. function createElement(tagName, props) {
  56. if (props === void 0)
  57. props = {};
  58. var elem = document.createElement(tagName);
  59. Object.keys(props).forEach(function(key) {
  60. elem[key] = props[key];
  61. });
  62. return elem;
  63. }
  64. function getComputedStyle(elem, prop, pseudo) {
  65. var computedStyle = window.getComputedStyle(elem, pseudo || null) || {
  66. display: "none"
  67. };
  68. return computedStyle[prop];
  69. }
  70. function getRenderInfo(elem) {
  71. if (!document.documentElement.contains(elem)) {
  72. return {
  73. detached: true,
  74. rendered: false
  75. };
  76. }
  77. var current = elem;
  78. while (current !== document) {
  79. if (getComputedStyle(current, "display") === "none") {
  80. return {
  81. detached: false,
  82. rendered: false
  83. };
  84. }
  85. current = current.parentNode;
  86. }
  87. return {
  88. detached: false,
  89. rendered: true
  90. };
  91. }
  92. var css_248z = '.resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:"";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}';
  93. var total = 0;
  94. var style = null;
  95. function addListener(elem, callback) {
  96. if (!elem.__resize_mutation_handler__) {
  97. elem.__resize_mutation_handler__ = handleMutation.bind(elem);
  98. }
  99. var listeners = elem.__resize_listeners__;
  100. if (!listeners) {
  101. elem.__resize_listeners__ = [];
  102. if (window.ResizeObserver) {
  103. var offsetWidth = elem.offsetWidth;
  104. var offsetHeight = elem.offsetHeight;
  105. var ro = new ResizeObserver(function() {
  106. if (!elem.__resize_observer_triggered__) {
  107. elem.__resize_observer_triggered__ = true;
  108. if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {
  109. return;
  110. }
  111. }
  112. runCallbacks(elem);
  113. });
  114. var ref = getRenderInfo(elem);
  115. var detached = ref.detached;
  116. var rendered = ref.rendered;
  117. elem.__resize_observer_triggered__ = detached === false && rendered === false;
  118. elem.__resize_observer__ = ro;
  119. ro.observe(elem);
  120. } else if (elem.attachEvent && elem.addEventListener) {
  121. elem.__resize_legacy_resize_handler__ = function handleLegacyResize() {
  122. runCallbacks(elem);
  123. };
  124. elem.attachEvent("onresize", elem.__resize_legacy_resize_handler__);
  125. document.addEventListener("DOMSubtreeModified", elem.__resize_mutation_handler__);
  126. } else {
  127. if (!total) {
  128. style = createStyles(css_248z);
  129. }
  130. initTriggers(elem);
  131. elem.__resize_rendered__ = getRenderInfo(elem).rendered;
  132. if (window.MutationObserver) {
  133. var mo = new MutationObserver(elem.__resize_mutation_handler__);
  134. mo.observe(document, {
  135. attributes: true,
  136. childList: true,
  137. characterData: true,
  138. subtree: true
  139. });
  140. elem.__resize_mutation_observer__ = mo;
  141. }
  142. }
  143. }
  144. elem.__resize_listeners__.push(callback);
  145. total++;
  146. }
  147. function removeListener(elem, callback) {
  148. var listeners = elem.__resize_listeners__;
  149. if (!listeners) {
  150. return;
  151. }
  152. if (callback) {
  153. listeners.splice(listeners.indexOf(callback), 1);
  154. }
  155. if (!listeners.length || !callback) {
  156. if (elem.detachEvent && elem.removeEventListener) {
  157. elem.detachEvent("onresize", elem.__resize_legacy_resize_handler__);
  158. document.removeEventListener("DOMSubtreeModified", elem.__resize_mutation_handler__);
  159. return;
  160. }
  161. if (elem.__resize_observer__) {
  162. elem.__resize_observer__.unobserve(elem);
  163. elem.__resize_observer__.disconnect();
  164. elem.__resize_observer__ = null;
  165. } else {
  166. if (elem.__resize_mutation_observer__) {
  167. elem.__resize_mutation_observer__.disconnect();
  168. elem.__resize_mutation_observer__ = null;
  169. }
  170. elem.removeEventListener("scroll", handleScroll);
  171. elem.removeChild(elem.__resize_triggers__.triggers);
  172. elem.__resize_triggers__ = null;
  173. }
  174. elem.__resize_listeners__ = null;
  175. }
  176. if (!--total && style) {
  177. style.parentNode.removeChild(style);
  178. }
  179. }
  180. function getUpdatedSize(elem) {
  181. var ref = elem.__resize_last__;
  182. var width = ref.width;
  183. var height = ref.height;
  184. var offsetWidth = elem.offsetWidth;
  185. var offsetHeight = elem.offsetHeight;
  186. if (offsetWidth !== width || offsetHeight !== height) {
  187. return {
  188. width: offsetWidth,
  189. height: offsetHeight
  190. };
  191. }
  192. return null;
  193. }
  194. function handleMutation() {
  195. var ref = getRenderInfo(this);
  196. var rendered = ref.rendered;
  197. var detached = ref.detached;
  198. if (rendered !== this.__resize_rendered__) {
  199. if (!detached && this.__resize_triggers__) {
  200. resetTriggers(this);
  201. this.addEventListener("scroll", handleScroll, true);
  202. }
  203. this.__resize_rendered__ = rendered;
  204. runCallbacks(this);
  205. }
  206. }
  207. function handleScroll() {
  208. var this$1 = this;
  209. resetTriggers(this);
  210. if (this.__resize_raf__) {
  211. cancelAnimationFrame(this.__resize_raf__);
  212. }
  213. this.__resize_raf__ = requestAnimationFrame(function() {
  214. var updated = getUpdatedSize(this$1);
  215. if (updated) {
  216. this$1.__resize_last__ = updated;
  217. runCallbacks(this$1);
  218. }
  219. });
  220. }
  221. function runCallbacks(elem) {
  222. if (!elem || !elem.__resize_listeners__) {
  223. return;
  224. }
  225. elem.__resize_listeners__.forEach(function(callback) {
  226. callback.call(elem, elem);
  227. });
  228. }
  229. function initTriggers(elem) {
  230. var position = getComputedStyle(elem, "position");
  231. if (!position || position === "static") {
  232. elem.style.position = "relative";
  233. }
  234. elem.__resize_old_position__ = position;
  235. elem.__resize_last__ = {};
  236. var triggers = createElement("div", {
  237. className: "resize-triggers"
  238. });
  239. var expand = createElement("div", {
  240. className: "resize-expand-trigger"
  241. });
  242. var expandChild = createElement("div");
  243. var contract = createElement("div", {
  244. className: "resize-contract-trigger"
  245. });
  246. expand.appendChild(expandChild);
  247. triggers.appendChild(expand);
  248. triggers.appendChild(contract);
  249. elem.appendChild(triggers);
  250. elem.__resize_triggers__ = {
  251. triggers,
  252. expand,
  253. expandChild,
  254. contract
  255. };
  256. resetTriggers(elem);
  257. elem.addEventListener("scroll", handleScroll, true);
  258. elem.__resize_last__ = {
  259. width: elem.offsetWidth,
  260. height: elem.offsetHeight
  261. };
  262. }
  263. function resetTriggers(elem) {
  264. var ref = elem.__resize_triggers__;
  265. var expand = ref.expand;
  266. var expandChild = ref.expandChild;
  267. var contract = ref.contract;
  268. var csw = contract.scrollWidth;
  269. var csh = contract.scrollHeight;
  270. var eow = expand.offsetWidth;
  271. var eoh = expand.offsetHeight;
  272. var esw = expand.scrollWidth;
  273. var esh = expand.scrollHeight;
  274. contract.scrollLeft = csw;
  275. contract.scrollTop = csh;
  276. expandChild.style.width = eow + 1 + "px";
  277. expandChild.style.height = eoh + 1 + "px";
  278. expand.scrollLeft = esw;
  279. expand.scrollTop = esh;
  280. }
  281. // node_modules/vue-echarts/dist/index.esm.min.js
  282. var O = function() {
  283. return O = Object.assign || function(e) {
  284. for (var t, n = 1, r = arguments.length; n < r; n++)
  285. for (var o in t = arguments[n])
  286. Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);
  287. return e;
  288. }, O.apply(this, arguments);
  289. };
  290. var b = ["getWidth", "getHeight", "getDom", "getOption", "resize", "dispatchAction", "convertToPixel", "convertFromPixel", "containPixel", "getDataURL", "getConnectedDataURL", "appendData", "clear", "isDisposed", "dispose"];
  291. function y(e) {
  292. return t = /* @__PURE__ */ Object.create(null), b.forEach(function(n) {
  293. t[n] = function(t2) {
  294. return function() {
  295. for (var n2 = [], r = 0; r < arguments.length; r++)
  296. n2[r] = arguments[r];
  297. if (!e.value)
  298. throw new Error("ECharts is not initialized yet.");
  299. return e.value[t2].apply(e.value, n2);
  300. };
  301. }(n);
  302. }), t;
  303. var t;
  304. }
  305. var E = { autoresize: [Boolean, Object] };
  306. var _ = /^on[^a-z]/;
  307. var x = function(e) {
  308. return _.test(e);
  309. };
  310. function j(e, n) {
  311. var r = unref(e);
  312. return r && "object" == typeof r && "value" in r ? r.value || n : r || n;
  313. }
  314. var w = "ecLoadingOptions";
  315. var A = { loading: Boolean, loadingOptions: Object };
  316. var z = null;
  317. var C = "x-vue-echarts";
  318. var L = [];
  319. var T = [];
  320. !function(e, t) {
  321. if (e && "undefined" != typeof document) {
  322. var n, r = true === t.prepend ? "prepend" : "append", o = true === t.singleTag, i = "string" == typeof t.container ? document.querySelector(t.container) : document.getElementsByTagName("head")[0];
  323. if (o) {
  324. var a = L.indexOf(i);
  325. -1 === a && (a = L.push(i) - 1, T[a] = {}), n = T[a] && T[a][r] ? T[a][r] : T[a][r] = u();
  326. } else
  327. n = u();
  328. 65279 === e.charCodeAt(0) && (e = e.substring(1)), n.styleSheet ? n.styleSheet.cssText += e : n.appendChild(document.createTextNode(e));
  329. }
  330. function u() {
  331. var e2 = document.createElement("style");
  332. if (e2.setAttribute("type", "text/css"), t.attributes)
  333. for (var n2 = Object.keys(t.attributes), o2 = 0; o2 < n2.length; o2++)
  334. e2.setAttribute(n2[o2], t.attributes[n2[o2]]);
  335. var a2 = "prepend" === r ? "afterbegin" : "beforeend";
  336. return i.insertAdjacentElement(a2, e2), e2;
  337. }
  338. }("x-vue-echarts{display:flex;flex-direction:column;width:100%;height:100%;min-width:0}\n.vue-echarts-inner{flex-grow:1;min-width:0}\n", {});
  339. var S = function() {
  340. if (null != z)
  341. return z;
  342. if ("undefined" == typeof HTMLElement || "undefined" == typeof customElements)
  343. return z = false;
  344. try {
  345. new Function("tag", "class EChartsElement extends HTMLElement {\n __dispose = null;\n\n disconnectedCallback() {\n if (this.__dispose) {\n this.__dispose();\n this.__dispose = null;\n }\n }\n}\n\nif (customElements.get(tag) == null) {\n customElements.define(tag, EChartsElement);\n}\n")(C);
  346. } catch (e) {
  347. return z = false;
  348. }
  349. return z = true;
  350. }();
  351. Vue2 && Vue2.config.ignoredElements.push(C);
  352. var D = "ecTheme";
  353. var U = "ecInitOptions";
  354. var k = "ecUpdateOptions";
  355. var B = defineComponent({ name: "echarts", props: O(O({ option: Object, theme: { type: [Object, String] }, initOptions: Object, updateOptions: Object, group: String, manualUpdate: Boolean }, E), A), emits: {}, inheritAttrs: false, setup: function(t, i) {
  356. var a = i.attrs, p = shallowRef(), b2 = shallowRef(), E2 = shallowRef(), _2 = shallowRef(), A2 = inject(D, null), z2 = inject(U, null), C2 = inject(k, null), L2 = toRefs(t), T2 = L2.autoresize, B2 = L2.manualUpdate, P = L2.loading, H = L2.loadingOptions, M = computed(function() {
  357. return _2.value || t.option || null;
  358. }), R = computed(function() {
  359. return t.theme || j(A2, {});
  360. }), F = computed(function() {
  361. return t.initOptions || j(z2, {});
  362. }), N = computed(function() {
  363. return t.updateOptions || j(C2, {});
  364. }), q = computed(function() {
  365. return function(e) {
  366. var t2 = {};
  367. for (var n in e)
  368. x(n) || (t2[n] = e[n]);
  369. return t2;
  370. }(a);
  371. }), I = getCurrentInstance().proxy.$listeners;
  372. function W(e) {
  373. if (b2.value) {
  374. var n = E2.value = init(b2.value, R.value, F.value);
  375. t.group && (n.group = t.group);
  376. var r = I;
  377. r || (r = {}, Object.keys(a).filter(function(e2) {
  378. return 0 === e2.indexOf("on") && e2.length > 2;
  379. }).forEach(function(e2) {
  380. var t2 = e2.charAt(2).toLowerCase() + e2.slice(3);
  381. "Once" === t2.substring(t2.length - 4) && (t2 = "~".concat(t2.substring(0, t2.length - 4))), r[t2] = a[e2];
  382. })), Object.keys(r).forEach(function(e2) {
  383. var t2 = r[e2];
  384. if (t2) {
  385. var o2 = e2.toLowerCase();
  386. "~" === o2.charAt(0) && (o2 = o2.substring(1), t2.__once__ = true);
  387. var i2 = n;
  388. if (0 === o2.indexOf("zr:") && (i2 = n.getZr(), o2 = o2.substring(3)), t2.__once__) {
  389. delete t2.__once__;
  390. var a2 = t2;
  391. t2 = function() {
  392. for (var e3 = [], n2 = 0; n2 < arguments.length; n2++)
  393. e3[n2] = arguments[n2];
  394. a2.apply(void 0, e3), i2.off(o2, t2);
  395. };
  396. }
  397. i2.on(o2, t2);
  398. }
  399. }), T2.value ? nextTick(function() {
  400. n && !n.isDisposed() && n.resize(), o();
  401. }) : o();
  402. }
  403. function o() {
  404. var t2 = e || M.value;
  405. t2 && n.setOption(t2, N.value);
  406. }
  407. }
  408. function Z() {
  409. E2.value && (E2.value.dispose(), E2.value = void 0);
  410. }
  411. var $ = null;
  412. watch(B2, function(n) {
  413. "function" == typeof $ && ($(), $ = null), n || ($ = watch(function() {
  414. return t.option;
  415. }, function(e, t2) {
  416. e && (E2.value ? E2.value.setOption(e, O({ notMerge: e !== t2 }, N.value)) : W());
  417. }, { deep: true }));
  418. }, { immediate: true }), watch([R, F], function() {
  419. Z(), W();
  420. }, { deep: true }), watchEffect(function() {
  421. t.group && E2.value && (E2.value.group = t.group);
  422. });
  423. var G = y(E2);
  424. return function(e, t2, i2) {
  425. var a2 = inject(w, {}), u = computed(function() {
  426. return O(O({}, j(a2, {})), null == i2 ? void 0 : i2.value);
  427. });
  428. watchEffect(function() {
  429. var n = e.value;
  430. n && (t2.value ? n.showLoading(u.value) : n.hideLoading());
  431. });
  432. }(E2, P, H), function(t2, n, r) {
  433. var o = null;
  434. watch([r, t2, n], function(e, t3, n2) {
  435. var r2 = e[0], i2 = e[1], a2 = e[2];
  436. if (r2 && i2 && a2) {
  437. var u = true === a2 ? {} : a2, s = u.throttle, c = void 0 === s ? 100 : s, l = u.onResize, f = function() {
  438. i2.resize(), null == l || l();
  439. };
  440. o = c ? throttle(f, c) : f, addListener(r2, o);
  441. }
  442. n2(function() {
  443. r2 && o && removeListener(r2, o);
  444. });
  445. });
  446. }(E2, T2, b2), onMounted(function() {
  447. W();
  448. }), onBeforeUnmount(function() {
  449. S && p.value ? p.value.__dispose = Z : Z();
  450. }), O({ chart: E2, root: p, inner: b2, setOption: function(e, n) {
  451. t.manualUpdate && (_2.value = e), E2.value ? E2.value.setOption(e, n || {}) : W(e);
  452. }, nonEventAttrs: q }, G);
  453. }, render: function() {
  454. var e = Vue2 ? { attrs: this.nonEventAttrs } : O({}, this.nonEventAttrs);
  455. return e.ref = "root", e.class = e.class ? ["echarts"].concat(e.class) : "echarts", h(C, e, [h("div", { ref: "inner", class: "vue-echarts-inner" })]);
  456. } });
  457. export {
  458. U as INIT_OPTIONS_KEY,
  459. w as LOADING_OPTIONS_KEY,
  460. D as THEME_KEY,
  461. k as UPDATE_OPTIONS_KEY,
  462. B as default
  463. };
  464. //# sourceMappingURL=vue-echarts.js.map