var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; import { defineComponent, openBlock, createElementBlock, createElementVNode, createStaticVNode, ref, resolveComponent, normalizeStyle as normalizeStyle$1, withDirectives, toDisplayString, vShow, Fragment, renderList, createBlock, withCtx, createVNode, createCommentVNode, normalizeClass, withModifiers, mergeProps, toHandlers, createSlots, createTextVNode, renderSlot, pushScopeId, popScopeId, watch as watch$1, resolveDynamicComponent, reactive, computed, toRefs, onMounted, onUnmounted, nextTick } from "vue"; var _export_sfc$1 = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key2, val] of props) { target[key2] = val; } return target; }; const _sfc_main$4v = defineComponent({ name: "AddLocation" }); const _hoisted_1$4u = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_3$4r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M800 416a288 288 0 10-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 01704 0c0 149.312-117.312 330.688-352 544z" }, null, -1); const _hoisted_4$1j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 384h96a32 32 0 110 64h-96v96a32 32 0 01-64 0v-96h-96a32 32 0 010-64h96v-96a32 32 0 0164 0v96z" }, null, -1); const _hoisted_5$m = [ _hoisted_2$4t, _hoisted_3$4r, _hoisted_4$1j ]; function _sfc_render$4v(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4u, _hoisted_5$m); } var addLocation = /* @__PURE__ */ _export_sfc$1(_sfc_main$4v, [["render", _sfc_render$4v]]); const _sfc_main$4u = defineComponent({ name: "Aim" }); const _hoisted_1$4t = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$4q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 96a32 32 0 0132 32v192a32 32 0 01-64 0V128a32 32 0 0132-32zm0 576a32 32 0 0132 32v192a32 32 0 11-64 0V704a32 32 0 0132-32zM96 512a32 32 0 0132-32h192a32 32 0 010 64H128a32 32 0 01-32-32zm576 0a32 32 0 0132-32h192a32 32 0 110 64H704a32 32 0 01-32-32z" }, null, -1); const _hoisted_4$1i = [ _hoisted_2$4s, _hoisted_3$4q ]; function _sfc_render$4u(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4t, _hoisted_4$1i); } var aim = /* @__PURE__ */ _export_sfc$1(_sfc_main$4u, [["render", _sfc_render$4u]]); const _sfc_main$4t = defineComponent({ name: "AlarmClock" }); const _hoisted_1$4s = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 832a320 320 0 100-640 320 320 0 000 640zm0 64a384 384 0 110-768 384 384 0 010 768z" }, null, -1); const _hoisted_3$4p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M292.288 824.576l55.424 32-48 83.136a32 32 0 11-55.424-32l48-83.136zm439.424 0l-55.424 32 48 83.136a32 32 0 1055.424-32l-48-83.136zM512 512h160a32 32 0 110 64H480a32 32 0 01-32-32V320a32 32 0 0164 0v192zM90.496 312.256A160 160 0 01312.32 90.496l-46.848 46.848a96 96 0 00-128 128L90.56 312.256zm835.264 0A160 160 0 00704 90.496l46.848 46.848a96 96 0 01128 128l46.912 46.912z" }, null, -1); const _hoisted_4$1h = [ _hoisted_2$4r, _hoisted_3$4p ]; function _sfc_render$4t(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4s, _hoisted_4$1h); } var alarmClock = /* @__PURE__ */ _export_sfc$1(_sfc_main$4t, [["render", _sfc_render$4t]]); const _sfc_main$4s = defineComponent({ name: "Apple" }); const _hoisted_1$4r = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M599.872 203.776a189.44 189.44 0 0164.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a426.624 426.624 0 01-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1160.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664zm-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 11-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688 63.552 0 81.28 34.688 136.96 33.536 56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152z" }, null, -1); const _hoisted_3$4o = [ _hoisted_2$4q ]; function _sfc_render$4s(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4r, _hoisted_3$4o); } var apple = /* @__PURE__ */ _export_sfc$1(_sfc_main$4s, [["render", _sfc_render$4s]]); const _sfc_main$4r = defineComponent({ name: "ArrowDownBold" }); const _hoisted_1$4q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M104.704 338.752a64 64 0 0190.496 0l316.8 316.8 316.8-316.8a64 64 0 0190.496 90.496L557.248 791.296a64 64 0 01-90.496 0L104.704 429.248a64 64 0 010-90.496z" }, null, -1); const _hoisted_3$4n = [ _hoisted_2$4p ]; function _sfc_render$4r(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4q, _hoisted_3$4n); } var arrowDownBold = /* @__PURE__ */ _export_sfc$1(_sfc_main$4r, [["render", _sfc_render$4r]]); const _sfc_main$4q = defineComponent({ name: "ArrowDown" }); const _hoisted_1$4p = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M831.872 340.864L512 652.672 192.128 340.864a30.592 30.592 0 00-42.752 0 29.12 29.12 0 000 41.6L489.664 714.24a32 32 0 0044.672 0l340.288-331.712a29.12 29.12 0 000-41.728 30.592 30.592 0 00-42.752 0z" }, null, -1); const _hoisted_3$4m = [ _hoisted_2$4o ]; function _sfc_render$4q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4p, _hoisted_3$4m); } var arrowDown = /* @__PURE__ */ _export_sfc$1(_sfc_main$4q, [["render", _sfc_render$4q]]); const _sfc_main$4p = defineComponent({ name: "ArrowLeftBold" }); const _hoisted_1$4o = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M685.248 104.704a64 64 0 010 90.496L368.448 512l316.8 316.8a64 64 0 01-90.496 90.496L232.704 557.248a64 64 0 010-90.496l362.048-362.048a64 64 0 0190.496 0z" }, null, -1); const _hoisted_3$4l = [ _hoisted_2$4n ]; function _sfc_render$4p(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4o, _hoisted_3$4l); } var arrowLeftBold = /* @__PURE__ */ _export_sfc$1(_sfc_main$4p, [["render", _sfc_render$4p]]); const _sfc_main$4o = defineComponent({ name: "ArrowLeft" }); const _hoisted_1$4n = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M609.408 149.376L277.76 489.6a32 32 0 000 44.672l331.648 340.352a29.12 29.12 0 0041.728 0 30.592 30.592 0 000-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 000-42.688 29.12 29.12 0 00-41.728 0z" }, null, -1); const _hoisted_3$4k = [ _hoisted_2$4m ]; function _sfc_render$4o(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4n, _hoisted_3$4k); } var arrowLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$4o, [["render", _sfc_render$4o]]); const _sfc_main$4n = defineComponent({ name: "ArrowRightBold" }); const _hoisted_1$4m = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M338.752 104.704a64 64 0 000 90.496l316.8 316.8-316.8 316.8a64 64 0 0090.496 90.496l362.048-362.048a64 64 0 000-90.496L429.248 104.704a64 64 0 00-90.496 0z" }, null, -1); const _hoisted_3$4j = [ _hoisted_2$4l ]; function _sfc_render$4n(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4m, _hoisted_3$4j); } var arrowRightBold = /* @__PURE__ */ _export_sfc$1(_sfc_main$4n, [["render", _sfc_render$4n]]); const _sfc_main$4m = defineComponent({ name: "ArrowRight" }); const _hoisted_1$4l = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4k = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M340.864 149.312a30.592 30.592 0 000 42.752L652.736 512 340.864 831.872a30.592 30.592 0 000 42.752 29.12 29.12 0 0041.728 0L714.24 534.336a32 32 0 000-44.672L382.592 149.376a29.12 29.12 0 00-41.728 0z" }, null, -1); const _hoisted_3$4i = [ _hoisted_2$4k ]; function _sfc_render$4m(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4l, _hoisted_3$4i); } var arrowRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$4m, [["render", _sfc_render$4m]]); const _sfc_main$4l = defineComponent({ name: "ArrowUpBold" }); const _hoisted_1$4k = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M104.704 685.248a64 64 0 0090.496 0l316.8-316.8 316.8 316.8a64 64 0 0090.496-90.496L557.248 232.704a64 64 0 00-90.496 0L104.704 594.752a64 64 0 000 90.496z" }, null, -1); const _hoisted_3$4h = [ _hoisted_2$4j ]; function _sfc_render$4l(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4k, _hoisted_3$4h); } var arrowUpBold = /* @__PURE__ */ _export_sfc$1(_sfc_main$4l, [["render", _sfc_render$4l]]); const _sfc_main$4k = defineComponent({ name: "ArrowUp" }); const _hoisted_1$4j = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M488.832 344.32l-339.84 356.672a32 32 0 000 44.16l.384.384a29.44 29.44 0 0042.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0042.688 0l.384-.384a32 32 0 000-44.16L535.168 344.32a32 32 0 00-46.336 0z" }, null, -1); const _hoisted_3$4g = [ _hoisted_2$4i ]; function _sfc_render$4k(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4j, _hoisted_3$4g); } var arrowUp = /* @__PURE__ */ _export_sfc$1(_sfc_main$4k, [["render", _sfc_render$4k]]); const _sfc_main$4j = defineComponent({ name: "Avatar" }); const _hoisted_1$4i = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4h = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M628.736 528.896A416 416 0 01928 928H96a415.872 415.872 0 01299.264-399.104L512 704l116.736-175.104zM720 304a208 208 0 11-416 0 208 208 0 01416 0z" }, null, -1); const _hoisted_3$4f = [ _hoisted_2$4h ]; function _sfc_render$4j(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4i, _hoisted_3$4f); } var avatar = /* @__PURE__ */ _export_sfc$1(_sfc_main$4j, [["render", _sfc_render$4j]]); const _sfc_main$4i = defineComponent({ name: "Back" }); const _hoisted_1$4h = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 480h640a32 32 0 110 64H224a32 32 0 010-64z" }, null, -1); const _hoisted_3$4e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M237.248 512l265.408 265.344a32 32 0 01-45.312 45.312l-288-288a32 32 0 010-45.312l288-288a32 32 0 1145.312 45.312L237.248 512z" }, null, -1); const _hoisted_4$1g = [ _hoisted_2$4g, _hoisted_3$4e ]; function _sfc_render$4i(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4h, _hoisted_4$1g); } var back = /* @__PURE__ */ _export_sfc$1(_sfc_main$4i, [["render", _sfc_render$4i]]); const _sfc_main$4h = defineComponent({ name: "Baseball" }); const _hoisted_1$4g = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M195.2 828.8a448 448 0 11633.6-633.6 448 448 0 01-633.6 633.6zm45.248-45.248a384 384 0 10543.104-543.104 384 384 0 00-543.104 543.104z" }, null, -1); const _hoisted_3$4d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 00350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 01497.472 96.896zM108.48 491.904a320.128 320.128 0 01423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 00-346.496-346.432 1736.64 1736.64 0 01-11.392-65.728z" }, null, -1); const _hoisted_4$1f = [ _hoisted_2$4f, _hoisted_3$4d ]; function _sfc_render$4h(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4g, _hoisted_4$1f); } var baseball = /* @__PURE__ */ _export_sfc$1(_sfc_main$4h, [["render", _sfc_render$4h]]); const _sfc_main$4g = defineComponent({ name: "Basketball" }); const _hoisted_1$4f = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M778.752 788.224a382.464 382.464 0 00116.032-245.632 256.512 256.512 0 00-241.728-13.952 762.88 762.88 0 01125.696 259.584zm-55.04 44.224a699.648 699.648 0 00-125.056-269.632 256.128 256.128 0 00-56.064 331.968 382.72 382.72 0 00181.12-62.336zm-254.08 61.248A320.128 320.128 0 01557.76 513.6a715.84 715.84 0 00-48.192-48.128 320.128 320.128 0 01-379.264 88.384 382.4 382.4 0 00110.144 229.696 382.4 382.4 0 00229.184 110.08zM129.28 481.088a256.128 256.128 0 00331.072-56.448 699.648 699.648 0 00-268.8-124.352 382.656 382.656 0 00-62.272 180.8zm106.56-235.84a762.88 762.88 0 01258.688 125.056 256.512 256.512 0 00-13.44-241.088A382.464 382.464 0 00235.84 245.248zm318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a779.84 779.84 0 0166.176 66.112 320.832 320.832 0 01282.112-8.128 382.4 382.4 0 00-110.144-229.12 382.4 382.4 0 00-229.632-110.208zM828.8 828.8a448 448 0 11-633.6-633.6 448 448 0 01633.6 633.6z" }, null, -1); const _hoisted_3$4c = [ _hoisted_2$4e ]; function _sfc_render$4g(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4f, _hoisted_3$4c); } var basketball = /* @__PURE__ */ _export_sfc$1(_sfc_main$4g, [["render", _sfc_render$4g]]); const _sfc_main$4f = defineComponent({ name: "BellFilled" }); const _hoisted_1$4e = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 832a128 128 0 01-256 0h256zm192-64H134.4a38.4 38.4 0 010-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 11127.36 0A320.128 320.128 0 01832 448v243.2h57.6a38.4 38.4 0 010 76.8H832z" }, null, -1); const _hoisted_3$4b = [ _hoisted_2$4d ]; function _sfc_render$4f(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4e, _hoisted_3$4b); } var bellFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$4f, [["render", _sfc_render$4f]]); const _sfc_main$4e = defineComponent({ name: "Bell" }); const _hoisted_1$4d = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a64 64 0 0164 64v64H448v-64a64 64 0 0164-64z" }, null, -1); const _hoisted_3$4a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 768h512V448a256 256 0 10-512 0v320zm256-640a320 320 0 01320 320v384H192V448a320 320 0 01320-320z" }, null, -1); const _hoisted_4$1e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zM448 896h128a64 64 0 01-128 0z" }, null, -1); const _hoisted_5$l = [ _hoisted_2$4c, _hoisted_3$4a, _hoisted_4$1e ]; function _sfc_render$4e(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4d, _hoisted_5$l); } var bell = /* @__PURE__ */ _export_sfc$1(_sfc_main$4e, [["render", _sfc_render$4e]]); const _sfc_main$4d = defineComponent({ name: "Bicycle" }); const _hoisted_1$4c = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4b = /* @__PURE__ */ createStaticVNode('', 5); const _hoisted_7$1 = [ _hoisted_2$4b ]; function _sfc_render$4d(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4c, _hoisted_7$1); } var bicycle = /* @__PURE__ */ _export_sfc$1(_sfc_main$4d, [["render", _sfc_render$4d]]); const _sfc_main$4c = defineComponent({ name: "BottomLeft" }); const _hoisted_1$4b = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$4a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 768h416a32 32 0 110 64H224a32 32 0 01-32-32V352a32 32 0 0164 0v416z" }, null, -1); const _hoisted_3$49 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M246.656 822.656a32 32 0 01-45.312-45.312l544-544a32 32 0 0145.312 45.312l-544 544z" }, null, -1); const _hoisted_4$1d = [ _hoisted_2$4a, _hoisted_3$49 ]; function _sfc_render$4c(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4b, _hoisted_4$1d); } var bottomLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$4c, [["render", _sfc_render$4c]]); const _sfc_main$4b = defineComponent({ name: "BottomRight" }); const _hoisted_1$4a = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$49 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 768a32 32 0 100 64h448a32 32 0 0032-32V352a32 32 0 00-64 0v416H352z" }, null, -1); const _hoisted_3$48 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M777.344 822.656a32 32 0 0045.312-45.312l-544-544a32 32 0 00-45.312 45.312l544 544z" }, null, -1); const _hoisted_4$1c = [ _hoisted_2$49, _hoisted_3$48 ]; function _sfc_render$4b(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$4a, _hoisted_4$1c); } var bottomRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$4b, [["render", _sfc_render$4b]]); const _sfc_main$4a = defineComponent({ name: "Bottom" }); const _hoisted_1$49 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$48 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 805.888V168a32 32 0 10-64 0v637.888L246.656 557.952a30.72 30.72 0 00-45.312 0 35.52 35.52 0 000 48.064l288 306.048a30.72 30.72 0 0045.312 0l288-306.048a35.52 35.52 0 000-48 30.72 30.72 0 00-45.312 0L544 805.824z" }, null, -1); const _hoisted_3$47 = [ _hoisted_2$48 ]; function _sfc_render$4a(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$49, _hoisted_3$47); } var bottom = /* @__PURE__ */ _export_sfc$1(_sfc_main$4a, [["render", _sfc_render$4a]]); const _sfc_main$49 = defineComponent({ name: "Bowl" }); const _hoisted_1$48 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$47 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M714.432 704a351.744 351.744 0 00148.16-256H161.408a351.744 351.744 0 00148.16 256h404.864zM288 766.592A415.68 415.68 0 0196 416a32 32 0 0132-32h768a32 32 0 0132 32 415.68 415.68 0 01-192 350.592V832a64 64 0 01-64 64H352a64 64 0 01-64-64v-65.408zM493.248 320h-90.496l254.4-254.4a32 32 0 1145.248 45.248L493.248 320zm187.328 0h-128l269.696-155.712a32 32 0 0132 55.424L680.576 320zM352 768v64h320v-64H352z" }, null, -1); const _hoisted_3$46 = [ _hoisted_2$47 ]; function _sfc_render$49(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$48, _hoisted_3$46); } var bowl = /* @__PURE__ */ _export_sfc$1(_sfc_main$49, [["render", _sfc_render$49]]); const _sfc_main$48 = defineComponent({ name: "Box" }); const _hoisted_1$47 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$46 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M317.056 128L128 344.064V896h768V344.064L706.944 128H317.056zm-14.528-64h418.944a32 32 0 0124.064 10.88l206.528 236.096A32 32 0 01960 332.032V928a32 32 0 01-32 32H96a32 32 0 01-32-32V332.032a32 32 0 017.936-21.12L278.4 75.008A32 32 0 01302.528 64z" }, null, -1); const _hoisted_3$45 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M64 320h896v64H64z" }, null, -1); const _hoisted_4$1b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 327.872V640h128V327.872L526.08 128h-28.16L448 327.872zM448 64h128l64 256v352a32 32 0 01-32 32H416a32 32 0 01-32-32V320l64-256z" }, null, -1); const _hoisted_5$k = [ _hoisted_2$46, _hoisted_3$45, _hoisted_4$1b ]; function _sfc_render$48(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$47, _hoisted_5$k); } var box$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$48, [["render", _sfc_render$48]]); const _sfc_main$47 = defineComponent({ name: "Briefcase" }); const _hoisted_1$46 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$45 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M320 320V128h384v192h192v192H128V320h192zM128 576h768v320H128V576zm256-256h256.064V192H384v128z" }, null, -1); const _hoisted_3$44 = [ _hoisted_2$45 ]; function _sfc_render$47(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$46, _hoisted_3$44); } var briefcase = /* @__PURE__ */ _export_sfc$1(_sfc_main$47, [["render", _sfc_render$47]]); const _sfc_main$46 = defineComponent({ name: "BrushFilled" }); const _hoisted_1$45 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$44 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M608 704v160a96 96 0 01-192 0V704h-96a128 128 0 01-128-128h640a128 128 0 01-128 128h-96zM192 512V128.064h640V512H192z" }, null, -1); const _hoisted_3$43 = [ _hoisted_2$44 ]; function _sfc_render$46(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$45, _hoisted_3$43); } var brushFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$46, [["render", _sfc_render$46]]); const _sfc_main$45 = defineComponent({ name: "Brush" }); const _hoisted_1$44 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$43 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M896 448H128v192a64 64 0 0064 64h192v192h256V704h192a64 64 0 0064-64V448zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a663.872 663.872 0 00-6.144 128H960v256a128 128 0 01-128 128H704v160a32 32 0 01-32 32H352a32 32 0 01-32-32V768H192A128 128 0 0164 640V384h61.248zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168z" }, null, -1); const _hoisted_3$42 = [ _hoisted_2$43 ]; function _sfc_render$45(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$44, _hoisted_3$42); } var brush$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$45, [["render", _sfc_render$45]]); const _sfc_main$44 = defineComponent({ name: "Burger" }); const _hoisted_1$43 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$42 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 512a32 32 0 00-32 32v64a32 32 0 0030.08 32H864a32 32 0 0032-32v-64a32 32 0 00-32-32H160zm736-58.56A96 96 0 01960 544v64a96 96 0 01-51.968 85.312L855.36 833.6a96 96 0 01-89.856 62.272H258.496A96 96 0 01168.64 833.6l-52.608-140.224A96 96 0 0164 608v-64a96 96 0 0164-90.56V448a384 384 0 11768 5.44zM832 448a320 320 0 00-640 0h640zM512 704H188.352l40.192 107.136a32 32 0 0029.952 20.736h507.008a32 32 0 0029.952-20.736L835.648 704H512z" }, null, -1); const _hoisted_3$41 = [ _hoisted_2$42 ]; function _sfc_render$44(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$43, _hoisted_3$41); } var burger = /* @__PURE__ */ _export_sfc$1(_sfc_main$44, [["render", _sfc_render$44]]); const _sfc_main$43 = defineComponent({ name: "Calendar" }); const _hoisted_1$42 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$41 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 384v512h768V192H768v32a32 32 0 11-64 0v-32H320v32a32 32 0 01-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1164 0v32h160a32 32 0 0132 32v768a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32h160V96a32 32 0 0164 0v32zm-32 384h64a32 32 0 010 64h-64a32 32 0 010-64zm0 192h64a32 32 0 110 64h-64a32 32 0 110-64zm192-192h64a32 32 0 010 64h-64a32 32 0 010-64zm0 192h64a32 32 0 110 64h-64a32 32 0 110-64zm192-192h64a32 32 0 110 64h-64a32 32 0 110-64zm0 192h64a32 32 0 110 64h-64a32 32 0 110-64z" }, null, -1); const _hoisted_3$40 = [ _hoisted_2$41 ]; function _sfc_render$43(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$42, _hoisted_3$40); } var calendar = /* @__PURE__ */ _export_sfc$1(_sfc_main$43, [["render", _sfc_render$43]]); const _sfc_main$42 = defineComponent({ name: "CameraFilled" }); const _hoisted_1$41 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$40 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 224a64 64 0 00-64 64v512a64 64 0 0064 64h704a64 64 0 0064-64V288a64 64 0 00-64-64H748.416l-46.464-92.672A64 64 0 00644.736 96H379.328a64 64 0 00-57.216 35.392L275.776 224H160zm352 435.2a115.2 115.2 0 100-230.4 115.2 115.2 0 000 230.4zm0 140.8a256 256 0 110-512 256 256 0 010 512z" }, null, -1); const _hoisted_3$3$ = [ _hoisted_2$40 ]; function _sfc_render$42(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$41, _hoisted_3$3$); } var cameraFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$42, [["render", _sfc_render$42]]); const _sfc_main$41 = defineComponent({ name: "Camera" }); const _hoisted_1$40 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M896 256H128v576h768V256zm-199.424-64l-32.064-64h-304.96l-32 64h369.024zM96 192h160l46.336-92.608A64 64 0 01359.552 64h304.96a64 64 0 0157.216 35.328L768.192 192H928a32 32 0 0132 32v640a32 32 0 01-32 32H96a32 32 0 01-32-32V224a32 32 0 0132-32zm416 512a160 160 0 100-320 160 160 0 000 320zm0 64a224 224 0 110-448 224 224 0 010 448z" }, null, -1); const _hoisted_3$3_ = [ _hoisted_2$3$ ]; function _sfc_render$41(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$40, _hoisted_3$3_); } var camera = /* @__PURE__ */ _export_sfc$1(_sfc_main$41, [["render", _sfc_render$41]]); const _sfc_main$40 = defineComponent({ name: "CaretBottom" }); const _hoisted_1$3$ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3_ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 384l320 384 320-384z" }, null, -1); const _hoisted_3$3Z = [ _hoisted_2$3_ ]; function _sfc_render$40(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3$, _hoisted_3$3Z); } var caretBottom = /* @__PURE__ */ _export_sfc$1(_sfc_main$40, [["render", _sfc_render$40]]); const _sfc_main$3$ = defineComponent({ name: "CaretLeft" }); const _hoisted_1$3_ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3Z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M672 192L288 511.936 672 832z" }, null, -1); const _hoisted_3$3Y = [ _hoisted_2$3Z ]; function _sfc_render$3$(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3_, _hoisted_3$3Y); } var caretLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$3$, [["render", _sfc_render$3$]]); const _sfc_main$3_ = defineComponent({ name: "CaretRight" }); const _hoisted_1$3Z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3Y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 192v640l384-320.064z" }, null, -1); const _hoisted_3$3X = [ _hoisted_2$3Y ]; function _sfc_render$3_(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3Z, _hoisted_3$3X); } var caretRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$3_, [["render", _sfc_render$3_]]); const _sfc_main$3Z = defineComponent({ name: "CaretTop" }); const _hoisted_1$3Y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3X = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 320L192 704h639.936z" }, null, -1); const _hoisted_3$3W = [ _hoisted_2$3X ]; function _sfc_render$3Z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3Y, _hoisted_3$3W); } var caretTop = /* @__PURE__ */ _export_sfc$1(_sfc_main$3Z, [["render", _sfc_render$3Z]]); const _sfc_main$3Y = defineComponent({ name: "Cellphone" }); const _hoisted_1$3X = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 128a64 64 0 00-64 64v640a64 64 0 0064 64h512a64 64 0 0064-64V192a64 64 0 00-64-64H256zm0-64h512a128 128 0 01128 128v640a128 128 0 01-128 128H256a128 128 0 01-128-128V192A128 128 0 01256 64zm128 128h256a32 32 0 110 64H384a32 32 0 010-64zm128 640a64 64 0 110-128 64 64 0 010 128z" }, null, -1); const _hoisted_3$3V = [ _hoisted_2$3W ]; function _sfc_render$3Y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3X, _hoisted_3$3V); } var cellphone = /* @__PURE__ */ _export_sfc$1(_sfc_main$3Y, [["render", _sfc_render$3Y]]); const _sfc_main$3X = defineComponent({ name: "ChatDotRound" }); const _hoisted_1$3W = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M174.72 855.68l135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0189.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 01-206.912-48.384l-175.616 58.56z" }, null, -1); const _hoisted_3$3U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 563.2a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4zm192 0a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4zm-384 0a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4z" }, null, -1); const _hoisted_4$1a = [ _hoisted_2$3V, _hoisted_3$3U ]; function _sfc_render$3X(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3W, _hoisted_4$1a); } var chatDotRound = /* @__PURE__ */ _export_sfc$1(_sfc_main$3X, [["render", _sfc_render$3X]]); const _sfc_main$3W = defineComponent({ name: "ChatDotSquare" }); const _hoisted_1$3V = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M273.536 736H800a64 64 0 0064-64V256a64 64 0 00-64-64H224a64 64 0 00-64 64v570.88L273.536 736zM296 800L147.968 918.4A32 32 0 0196 893.44V256a128 128 0 01128-128h576a128 128 0 01128 128v416a128 128 0 01-128 128H296z" }, null, -1); const _hoisted_3$3T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 499.2a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4zm192 0a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4zm-384 0a51.2 51.2 0 110-102.4 51.2 51.2 0 010 102.4z" }, null, -1); const _hoisted_4$19 = [ _hoisted_2$3U, _hoisted_3$3T ]; function _sfc_render$3W(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3V, _hoisted_4$19); } var chatDotSquare = /* @__PURE__ */ _export_sfc$1(_sfc_main$3W, [["render", _sfc_render$3W]]); const _sfc_main$3V = defineComponent({ name: "ChatLineRound" }); const _hoisted_1$3U = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M174.72 855.68l135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0189.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 01-206.912-48.384l-175.616 58.56z" }, null, -1); const _hoisted_3$3S = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zM384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z" }, null, -1); const _hoisted_4$18 = [ _hoisted_2$3T, _hoisted_3$3S ]; function _sfc_render$3V(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3U, _hoisted_4$18); } var chatLineRound = /* @__PURE__ */ _export_sfc$1(_sfc_main$3V, [["render", _sfc_render$3V]]); const _sfc_main$3U = defineComponent({ name: "ChatLineSquare" }); const _hoisted_1$3T = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3S = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 826.88L273.536 736H800a64 64 0 0064-64V256a64 64 0 00-64-64H224a64 64 0 00-64 64v570.88zM296 800L147.968 918.4A32 32 0 0196 893.44V256a128 128 0 01128-128h576a128 128 0 01128 128v416a128 128 0 01-128 128H296z" }, null, -1); const _hoisted_3$3R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zM352 320h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z" }, null, -1); const _hoisted_4$17 = [ _hoisted_2$3S, _hoisted_3$3R ]; function _sfc_render$3U(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3T, _hoisted_4$17); } var chatLineSquare = /* @__PURE__ */ _export_sfc$1(_sfc_main$3U, [["render", _sfc_render$3U]]); const _sfc_main$3T = defineComponent({ name: "ChatRound" }); const _hoisted_1$3S = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M174.72 855.68l130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0069.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0189.6 896l56.512-141.248A405.12 405.12 0 0164 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z" }, null, -1); const _hoisted_3$3Q = [ _hoisted_2$3R ]; function _sfc_render$3T(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3S, _hoisted_3$3Q); } var chatRound = /* @__PURE__ */ _export_sfc$1(_sfc_main$3T, [["render", _sfc_render$3T]]); const _sfc_main$3S = defineComponent({ name: "ChatSquare" }); const _hoisted_1$3R = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3Q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M273.536 736H800a64 64 0 0064-64V256a64 64 0 00-64-64H224a64 64 0 00-64 64v570.88L273.536 736zM296 800L147.968 918.4A32 32 0 0196 893.44V256a128 128 0 01128-128h576a128 128 0 01128 128v416a128 128 0 01-128 128H296z" }, null, -1); const _hoisted_3$3P = [ _hoisted_2$3Q ]; function _sfc_render$3S(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3R, _hoisted_3$3P); } var chatSquare = /* @__PURE__ */ _export_sfc$1(_sfc_main$3S, [["render", _sfc_render$3S]]); const _sfc_main$3R = defineComponent({ name: "Check" }); const _hoisted_1$3Q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3P = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z" }, null, -1); const _hoisted_3$3O = [ _hoisted_2$3P ]; function _sfc_render$3R(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3Q, _hoisted_3$3O); } var check = /* @__PURE__ */ _export_sfc$1(_sfc_main$3R, [["render", _sfc_render$3R]]); const _sfc_main$3Q = defineComponent({ name: "Checked" }); const _hoisted_1$3P = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3O = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 192h160v736H160V192h160.064v64H704v-64zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024 311.616 537.28zM384 192V96h256v96H384z" }, null, -1); const _hoisted_3$3N = [ _hoisted_2$3O ]; function _sfc_render$3Q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3P, _hoisted_3$3N); } var checked = /* @__PURE__ */ _export_sfc$1(_sfc_main$3Q, [["render", _sfc_render$3Q]]); const _sfc_main$3P = defineComponent({ name: "Cherry" }); const _hoisted_1$3O = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3N = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 010-64h384a32 32 0 110 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 11-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 11-64.96-1.6zM288 832a160 160 0 100-320 160 160 0 000 320zm448-64a160 160 0 100-320 160 160 0 000 320z" }, null, -1); const _hoisted_3$3M = [ _hoisted_2$3N ]; function _sfc_render$3P(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3O, _hoisted_3$3M); } var cherry = /* @__PURE__ */ _export_sfc$1(_sfc_main$3P, [["render", _sfc_render$3P]]); const _sfc_main$3O = defineComponent({ name: "Chicken" }); const _hoisted_1$3N = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3M = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M349.952 716.992L478.72 588.16a106.688 106.688 0 01-26.176-19.072 106.688 106.688 0 01-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112zm57.344 33.152a128 128 0 11-216.32 114.432l-1.92-32-32-1.92a128 128 0 11114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84zM244.864 708.928a64 64 0 10-59.84 59.84l56.32-3.52 3.52-56.32zm8.064 127.68a64 64 0 1059.84-59.84l-56.32 3.52-3.52 56.32z" }, null, -1); const _hoisted_3$3L = [ _hoisted_2$3M ]; function _sfc_render$3O(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3N, _hoisted_3$3L); } var chicken = /* @__PURE__ */ _export_sfc$1(_sfc_main$3O, [["render", _sfc_render$3O]]); const _sfc_main$3N = defineComponent({ name: "CircleCheckFilled" }); const _hoisted_1$3M = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3L = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm-55.808 536.384l-99.52-99.584a38.4 38.4 0 10-54.336 54.336l126.72 126.72a38.272 38.272 0 0054.336 0l262.4-262.464a38.4 38.4 0 10-54.272-54.336L456.192 600.384z" }, null, -1); const _hoisted_3$3K = [ _hoisted_2$3L ]; function _sfc_render$3N(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3M, _hoisted_3$3K); } var circleCheckFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$3N, [["render", _sfc_render$3N]]); const _sfc_main$3M = defineComponent({ name: "CircleCheck" }); const _hoisted_1$3L = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$3J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M745.344 361.344a32 32 0 0145.312 45.312l-288 288a32 32 0 01-45.312 0l-160-160a32 32 0 1145.312-45.312L480 626.752l265.344-265.408z" }, null, -1); const _hoisted_4$16 = [ _hoisted_2$3K, _hoisted_3$3J ]; function _sfc_render$3M(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3L, _hoisted_4$16); } var circleCheck = /* @__PURE__ */ _export_sfc$1(_sfc_main$3M, [["render", _sfc_render$3M]]); const _sfc_main$3L = defineComponent({ name: "CircleCloseFilled" }); const _hoisted_1$3K = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm0 393.664L407.936 353.6a38.4 38.4 0 10-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1054.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1054.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 10-54.336-54.336L512 457.664z" }, null, -1); const _hoisted_3$3I = [ _hoisted_2$3J ]; function _sfc_render$3L(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3K, _hoisted_3$3I); } var circleCloseFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$3L, [["render", _sfc_render$3L]]); const _sfc_main$3K = defineComponent({ name: "CircleClose" }); const _hoisted_1$3J = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M466.752 512l-90.496-90.496a32 32 0 0145.248-45.248L512 466.752l90.496-90.496a32 32 0 1145.248 45.248L557.248 512l90.496 90.496a32 32 0 11-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 01-45.248-45.248L466.752 512z" }, null, -1); const _hoisted_3$3H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_4$15 = [ _hoisted_2$3I, _hoisted_3$3H ]; function _sfc_render$3K(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3J, _hoisted_4$15); } var circleClose = /* @__PURE__ */ _export_sfc$1(_sfc_main$3K, [["render", _sfc_render$3K]]); const _sfc_main$3J = defineComponent({ name: "CirclePlusFilled" }); const _hoisted_1$3I = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm-38.4 409.6H326.4a38.4 38.4 0 100 76.8h147.2v147.2a38.4 38.4 0 0076.8 0V550.4h147.2a38.4 38.4 0 000-76.8H550.4V326.4a38.4 38.4 0 10-76.8 0v147.2z" }, null, -1); const _hoisted_3$3G = [ _hoisted_2$3H ]; function _sfc_render$3J(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3I, _hoisted_3$3G); } var circlePlusFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$3J, [["render", _sfc_render$3J]]); const _sfc_main$3I = defineComponent({ name: "CirclePlus" }); const _hoisted_1$3H = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3G = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 480h320a32 32 0 110 64H352a32 32 0 010-64z" }, null, -1); const _hoisted_3$3F = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 672V352a32 32 0 1164 0v320a32 32 0 01-64 0z" }, null, -1); const _hoisted_4$14 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_5$j = [ _hoisted_2$3G, _hoisted_3$3F, _hoisted_4$14 ]; function _sfc_render$3I(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3H, _hoisted_5$j); } var circlePlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$3I, [["render", _sfc_render$3I]]); const _sfc_main$3H = defineComponent({ name: "Clock" }); const _hoisted_1$3G = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3F = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$3E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 256a32 32 0 0132 32v256a32 32 0 01-64 0V288a32 32 0 0132-32z" }, null, -1); const _hoisted_4$13 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z" }, null, -1); const _hoisted_5$i = [ _hoisted_2$3F, _hoisted_3$3E, _hoisted_4$13 ]; function _sfc_render$3H(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3G, _hoisted_5$i); } var clock = /* @__PURE__ */ _export_sfc$1(_sfc_main$3H, [["render", _sfc_render$3H]]); const _sfc_main$3G = defineComponent({ name: "CloseBold" }); const _hoisted_1$3F = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M195.2 195.2a64 64 0 0190.496 0L512 421.504 738.304 195.2a64 64 0 0190.496 90.496L602.496 512 828.8 738.304a64 64 0 01-90.496 90.496L512 602.496 285.696 828.8a64 64 0 01-90.496-90.496L421.504 512 195.2 285.696a64 64 0 010-90.496z" }, null, -1); const _hoisted_3$3D = [ _hoisted_2$3E ]; function _sfc_render$3G(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3F, _hoisted_3$3D); } var closeBold = /* @__PURE__ */ _export_sfc$1(_sfc_main$3G, [["render", _sfc_render$3G]]); const _sfc_main$3F = defineComponent({ name: "Close" }); const _hoisted_1$3E = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3D = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M764.288 214.592L512 466.88 259.712 214.592a31.936 31.936 0 00-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1045.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0045.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 10-45.12-45.184z" }, null, -1); const _hoisted_3$3C = [ _hoisted_2$3D ]; function _sfc_render$3F(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3E, _hoisted_3$3C); } var close = /* @__PURE__ */ _export_sfc$1(_sfc_main$3F, [["render", _sfc_render$3F]]); const _sfc_main$3E = defineComponent({ name: "Cloudy" }); const _hoisted_1$3D = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3C = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M598.4 831.872H328.192a256 256 0 01-34.496-510.528A352 352 0 11598.4 831.872zm-271.36-64h272.256a288 288 0 10-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0026.88 382.848z" }, null, -1); const _hoisted_3$3B = [ _hoisted_2$3C ]; function _sfc_render$3E(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3D, _hoisted_3$3B); } var cloudy = /* @__PURE__ */ _export_sfc$1(_sfc_main$3E, [["render", _sfc_render$3E]]); const _sfc_main$3D = defineComponent({ name: "CoffeeCup" }); const _hoisted_1$3C = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3B = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 192a192 192 0 11-8 383.808A256.128 256.128 0 01512 768H320A256 256 0 0164 512V160a32 32 0 0132-32h640a32 32 0 0132 32v32zm0 64v256a128 128 0 100-256zM96 832h640a32 32 0 110 64H96a32 32 0 110-64zm32-640v320a192 192 0 00192 192h192a192 192 0 00192-192V192H128z" }, null, -1); const _hoisted_3$3A = [ _hoisted_2$3B ]; function _sfc_render$3D(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3C, _hoisted_3$3A); } var coffeeCup = /* @__PURE__ */ _export_sfc$1(_sfc_main$3D, [["render", _sfc_render$3D]]); const _sfc_main$3C = defineComponent({ name: "Coffee" }); const _hoisted_1$3B = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3A = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M822.592 192h14.272a32 32 0 0131.616 26.752l21.312 128A32 32 0 01858.24 384h-49.344l-39.04 546.304A32 32 0 01737.92 960H285.824a32 32 0 01-32-29.696L214.912 384H165.76a32 32 0 01-31.552-37.248l21.312-128A32 32 0 01187.136 192h14.016l-6.72-93.696A32 32 0 01226.368 64h571.008a32 32 0 0131.936 34.304L822.592 192zm-64.128 0l4.544-64H260.736l4.544 64h493.184zm-548.16 128H820.48l-10.688-64H214.208l-10.688 64h6.784zm68.736 64l36.544 512H708.16l36.544-512H279.04z" }, null, -1); const _hoisted_3$3z = [ _hoisted_2$3A ]; function _sfc_render$3C(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3B, _hoisted_3$3z); } var coffee = /* @__PURE__ */ _export_sfc$1(_sfc_main$3C, [["render", _sfc_render$3C]]); const _sfc_main$3B = defineComponent({ name: "Coin" }); const _hoisted_1$3A = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M161.92 580.736l29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z" }, null, -1); const _hoisted_3$3y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M161.92 388.736l29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z" }, null, -1); const _hoisted_4$12 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z" }, null, -1); const _hoisted_5$h = [ _hoisted_2$3z, _hoisted_3$3y, _hoisted_4$12 ]; function _sfc_render$3B(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3A, _hoisted_5$h); } var coin = /* @__PURE__ */ _export_sfc$1(_sfc_main$3B, [["render", _sfc_render$3B]]); const _sfc_main$3A = defineComponent({ name: "ColdDrink" }); const _hoisted_1$3z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 64a192 192 0 11-69.952 370.88L480 725.376V896h96a32 32 0 110 64H320a32 32 0 110-64h96V725.376L76.8 273.536a64 64 0 01-12.8-38.4v-10.688a32 32 0 0132-32h71.808l-65.536-83.84a32 32 0 0150.432-39.424l96.256 123.264h337.728A192.064 192.064 0 01768 64zM656.896 192.448H800a32 32 0 0132 32v10.624a64 64 0 01-12.8 38.4l-80.448 107.2a128 128 0 10-81.92-188.16v-.064zm-357.888 64l129.472 165.76a32 32 0 01-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928H299.008z" }, null, -1); const _hoisted_3$3x = [ _hoisted_2$3y ]; function _sfc_render$3A(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3z, _hoisted_3$3x); } var coldDrink = /* @__PURE__ */ _export_sfc$1(_sfc_main$3A, [["render", _sfc_render$3A]]); const _sfc_main$3z = defineComponent({ name: "CollectionTag" }); const _hoisted_1$3y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 128v698.88l196.032-156.864a96 96 0 01119.936 0L768 826.816V128H256zm-32-64h576a32 32 0 0132 32v797.44a32 32 0 01-51.968 24.96L531.968 720a32 32 0 00-39.936 0L243.968 918.4A32 32 0 01192 893.44V96a32 32 0 0132-32z" }, null, -1); const _hoisted_3$3w = [ _hoisted_2$3x ]; function _sfc_render$3z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3y, _hoisted_3$3w); } var collectionTag = /* @__PURE__ */ _export_sfc$1(_sfc_main$3z, [["render", _sfc_render$3z]]); const _sfc_main$3y = defineComponent({ name: "Collection" }); const _hoisted_1$3x = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 736h640V128H256a64 64 0 00-64 64v544zm64-672h608a32 32 0 0132 32v672a32 32 0 01-32 32H160l-32 57.536V192A128 128 0 01256 64z" }, null, -1); const _hoisted_3$3v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M240 800a48 48 0 100 96h592v-96H240zm0-64h656v160a64 64 0 01-64 64H240a112 112 0 010-224zm144-608v250.88l96-76.8 96 76.8V128H384zm-64-64h320v381.44a32 32 0 01-51.968 24.96L480 384l-108.032 86.4A32 32 0 01320 445.44V64z" }, null, -1); const _hoisted_4$11 = [ _hoisted_2$3w, _hoisted_3$3v ]; function _sfc_render$3y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3x, _hoisted_4$11); } var collection = /* @__PURE__ */ _export_sfc$1(_sfc_main$3y, [["render", _sfc_render$3y]]); const _sfc_main$3x = defineComponent({ name: "Comment" }); const _hoisted_1$3w = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M736 504a56 56 0 110-112 56 56 0 010 112zm-224 0a56 56 0 110-112 56 56 0 010 112zm-224 0a56 56 0 110-112 56 56 0 010 112zM128 128v640h192v160l224-160h352V128H128z" }, null, -1); const _hoisted_3$3u = [ _hoisted_2$3v ]; function _sfc_render$3x(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3w, _hoisted_3$3u); } var comment = /* @__PURE__ */ _export_sfc$1(_sfc_main$3x, [["render", _sfc_render$3x]]); const _sfc_main$3w = defineComponent({ name: "Compass" }); const _hoisted_1$3v = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$3t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 01-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0116.832 16.832z" }, null, -1); const _hoisted_4$10 = [ _hoisted_2$3u, _hoisted_3$3t ]; function _sfc_render$3w(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3v, _hoisted_4$10); } var compass = /* @__PURE__ */ _export_sfc$1(_sfc_main$3w, [["render", _sfc_render$3w]]); const _sfc_main$3v = defineComponent({ name: "Connection" }); const _hoisted_1$3u = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 384v64H448a128 128 0 00-128 128v128a128 128 0 00128 128h320a128 128 0 00128-128V576a128 128 0 00-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 01-192 192H448a192 192 0 01-192-192V576a192 192 0 01192-192h192z" }, null, -1); const _hoisted_3$3s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 640v-64h192a128 128 0 00128-128V320a128 128 0 00-128-128H256a128 128 0 00-128 128v128a128 128 0 0064 110.848v70.272A192.064 192.064 0 0164 448V320a192 192 0 01192-192h320a192 192 0 01192 192v128a192 192 0 01-192 192H384z" }, null, -1); const _hoisted_4$$ = [ _hoisted_2$3t, _hoisted_3$3s ]; function _sfc_render$3v(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3u, _hoisted_4$$); } var connection = /* @__PURE__ */ _export_sfc$1(_sfc_main$3v, [["render", _sfc_render$3v]]); const _sfc_main$3u = defineComponent({ name: "Coordinate" }); const _hoisted_1$3t = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 512h64v320h-64z" }, null, -1); const _hoisted_3$3r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 896h640a64 64 0 00-64-64H256a64 64 0 00-64 64zm64-128h512a128 128 0 01128 128v64H128v-64a128 128 0 01128-128zm256-256a192 192 0 100-384 192 192 0 000 384zm0 64a256 256 0 110-512 256 256 0 010 512z" }, null, -1); const _hoisted_4$_ = [ _hoisted_2$3s, _hoisted_3$3r ]; function _sfc_render$3u(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3t, _hoisted_4$_); } var coordinate = /* @__PURE__ */ _export_sfc$1(_sfc_main$3u, [["render", _sfc_render$3u]]); const _sfc_main$3t = defineComponent({ name: "CopyDocument" }); const _hoisted_1$3s = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 832a128 128 0 01-128 128H192A128 128 0 0164 832V384a128 128 0 01128-128v64a64 64 0 00-64 64v448a64 64 0 0064 64h448a64 64 0 0064-64h64z" }, null, -1); const _hoisted_3$3q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 128a64 64 0 00-64 64v448a64 64 0 0064 64h448a64 64 0 0064-64V192a64 64 0 00-64-64H384zm0-64h448a128 128 0 01128 128v448a128 128 0 01-128 128H384a128 128 0 01-128-128V192A128 128 0 01384 64z" }, null, -1); const _hoisted_4$Z = [ _hoisted_2$3r, _hoisted_3$3q ]; function _sfc_render$3t(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3s, _hoisted_4$Z); } var copyDocument = /* @__PURE__ */ _export_sfc$1(_sfc_main$3t, [["render", _sfc_render$3t]]); const _sfc_main$3s = defineComponent({ name: "Cpu" }); const _hoisted_1$3r = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M320 256a64 64 0 00-64 64v384a64 64 0 0064 64h384a64 64 0 0064-64V320a64 64 0 00-64-64H320zm0-64h384a128 128 0 01128 128v384a128 128 0 01-128 128H320a128 128 0 01-128-128V320a128 128 0 01128-128z" }, null, -1); const _hoisted_3$3p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a32 32 0 0132 32v128h-64V96a32 32 0 0132-32zm160 0a32 32 0 0132 32v128h-64V96a32 32 0 0132-32zm-320 0a32 32 0 0132 32v128h-64V96a32 32 0 0132-32zm160 896a32 32 0 01-32-32V800h64v128a32 32 0 01-32 32zm160 0a32 32 0 01-32-32V800h64v128a32 32 0 01-32 32zm-320 0a32 32 0 01-32-32V800h64v128a32 32 0 01-32 32zM64 512a32 32 0 0132-32h128v64H96a32 32 0 01-32-32zm0-160a32 32 0 0132-32h128v64H96a32 32 0 01-32-32zm0 320a32 32 0 0132-32h128v64H96a32 32 0 01-32-32zm896-160a32 32 0 01-32 32H800v-64h128a32 32 0 0132 32zm0-160a32 32 0 01-32 32H800v-64h128a32 32 0 0132 32zm0 320a32 32 0 01-32 32H800v-64h128a32 32 0 0132 32z" }, null, -1); const _hoisted_4$Y = [ _hoisted_2$3q, _hoisted_3$3p ]; function _sfc_render$3s(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3r, _hoisted_4$Y); } var cpu = /* @__PURE__ */ _export_sfc$1(_sfc_main$3s, [["render", _sfc_render$3s]]); const _sfc_main$3r = defineComponent({ name: "CreditCard" }); const _hoisted_1$3q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.352 52.352 0 00-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.352 52.352 0 00-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.352 52.352 0 0022.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.352 52.352 0 0022.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416V324.096zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448-20.864 11.136-41.6 17.088-98.56 17.088H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.288 116.288 0 01-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448 20.864-11.136 41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384 11.136 20.864 17.088 41.6 17.088 98.56z" }, null, -1); const _hoisted_3$3o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M64 320h896v64H64v-64zm0 128h896v64H64v-64zm128 192h256v64H192z" }, null, -1); const _hoisted_4$X = [ _hoisted_2$3p, _hoisted_3$3o ]; function _sfc_render$3r(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3q, _hoisted_4$X); } var creditCard = /* @__PURE__ */ _export_sfc$1(_sfc_main$3r, [["render", _sfc_render$3r]]); const _sfc_main$3q = defineComponent({ name: "Crop" }); const _hoisted_1$3p = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 768h672a32 32 0 110 64H224a32 32 0 01-32-32V96a32 32 0 0164 0v672z" }, null, -1); const _hoisted_3$3n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 224v704a32 32 0 11-64 0V256H96a32 32 0 010-64h704a32 32 0 0132 32z" }, null, -1); const _hoisted_4$W = [ _hoisted_2$3o, _hoisted_3$3n ]; function _sfc_render$3q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3p, _hoisted_4$W); } var crop = /* @__PURE__ */ _export_sfc$1(_sfc_main$3q, [["render", _sfc_render$3q]]); const _sfc_main$3p = defineComponent({ name: "DArrowLeft" }); const _hoisted_1$3o = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M529.408 149.376a29.12 29.12 0 0141.728 0 30.592 30.592 0 010 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 01-.512 43.264 29.12 29.12 0 01-41.216-.512L197.76 534.272a32 32 0 010-44.672l331.648-340.224zm256 0a29.12 29.12 0 0141.728 0 30.592 30.592 0 010 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 01-.512 43.264 29.12 29.12 0 01-41.216-.512L453.76 534.272a32 32 0 010-44.672l331.648-340.224z" }, null, -1); const _hoisted_3$3m = [ _hoisted_2$3n ]; function _sfc_render$3p(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3o, _hoisted_3$3m); } var dArrowLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$3p, [["render", _sfc_render$3p]]); const _sfc_main$3o = defineComponent({ name: "DArrowRight" }); const _hoisted_1$3n = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M452.864 149.312a29.12 29.12 0 0141.728.064L826.24 489.664a32 32 0 010 44.672L494.592 874.624a29.12 29.12 0 01-41.728 0 30.592 30.592 0 010-42.752L764.736 512 452.864 192a30.592 30.592 0 010-42.688zm-256 0a29.12 29.12 0 0141.728.064L570.24 489.664a32 32 0 010 44.672L238.592 874.624a29.12 29.12 0 01-41.728 0 30.592 30.592 0 010-42.752L508.736 512 196.864 192a30.592 30.592 0 010-42.688z" }, null, -1); const _hoisted_3$3l = [ _hoisted_2$3m ]; function _sfc_render$3o(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3n, _hoisted_3$3l); } var dArrowRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$3o, [["render", _sfc_render$3o]]); const _sfc_main$3n = defineComponent({ name: "DCaret" }); const _hoisted_1$3m = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 128l288 320H224l288-320zM224 576h576L512 896 224 576z" }, null, -1); const _hoisted_3$3k = [ _hoisted_2$3l ]; function _sfc_render$3n(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3m, _hoisted_3$3k); } var dCaret = /* @__PURE__ */ _export_sfc$1(_sfc_main$3n, [["render", _sfc_render$3n]]); const _sfc_main$3m = defineComponent({ name: "DataAnalysis" }); const _hoisted_1$3l = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3k = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M665.216 768l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 01-32-32V192H64a32 32 0 010-64h896a32 32 0 110 64h-64v544a32 32 0 01-32 32H665.216zM832 192H192v512h640V192zM352 448a32 32 0 0132 32v64a32 32 0 01-64 0v-64a32 32 0 0132-32zm160-64a32 32 0 0132 32v128a32 32 0 01-64 0V416a32 32 0 0132-32zm160-64a32 32 0 0132 32v192a32 32 0 11-64 0V352a32 32 0 0132-32z" }, null, -1); const _hoisted_3$3j = [ _hoisted_2$3k ]; function _sfc_render$3m(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3l, _hoisted_3$3j); } var dataAnalysis = /* @__PURE__ */ _export_sfc$1(_sfc_main$3m, [["render", _sfc_render$3m]]); const _sfc_main$3l = defineComponent({ name: "DataBoard" }); const _hoisted_1$3k = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M32 128h960v64H32z" }, null, -1); const _hoisted_3$3i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 192v512h640V192H192zm-64-64h768v608a32 32 0 01-32 32H160a32 32 0 01-32-32V128z" }, null, -1); const _hoisted_4$V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M322.176 960H248.32l144.64-250.56 55.424 32L322.176 960zm453.888 0h-73.856L576 741.44l55.424-32L776.064 960z" }, null, -1); const _hoisted_5$g = [ _hoisted_2$3j, _hoisted_3$3i, _hoisted_4$V ]; function _sfc_render$3l(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3k, _hoisted_5$g); } var dataBoard = /* @__PURE__ */ _export_sfc$1(_sfc_main$3l, [["render", _sfc_render$3l]]); const _sfc_main$3k = defineComponent({ name: "DataLine" }); const _hoisted_1$3j = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M359.168 768H160a32 32 0 01-32-32V192H64a32 32 0 010-64h896a32 32 0 110 64h-64v544a32 32 0 01-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192zM832 192H192v512h640V192zM342.656 534.656a32 32 0 11-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1149.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z" }, null, -1); const _hoisted_3$3h = [ _hoisted_2$3i ]; function _sfc_render$3k(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3j, _hoisted_3$3h); } var dataLine = /* @__PURE__ */ _export_sfc$1(_sfc_main$3k, [["render", _sfc_render$3k]]); const _sfc_main$3j = defineComponent({ name: "DeleteFilled" }); const _hoisted_1$3i = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3h = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 192V95.936a32 32 0 0132-32h256a32 32 0 0132 32V192h256a32 32 0 110 64H96a32 32 0 010-64h256zm64 0h192v-64H416v64zM192 960a32 32 0 01-32-32V256h704v672a32 32 0 01-32 32H192zm224-192a32 32 0 0032-32V416a32 32 0 00-64 0v320a32 32 0 0032 32zm192 0a32 32 0 0032-32V416a32 32 0 00-64 0v320a32 32 0 0032 32z" }, null, -1); const _hoisted_3$3g = [ _hoisted_2$3h ]; function _sfc_render$3j(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3i, _hoisted_3$3g); } var deleteFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$3j, [["render", _sfc_render$3j]]); const _sfc_main$3i = defineComponent({ name: "DeleteLocation" }); const _hoisted_1$3h = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_3$3f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M800 416a288 288 0 10-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 01704 0c0 149.312-117.312 330.688-352 544z" }, null, -1); const _hoisted_4$U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z" }, null, -1); const _hoisted_5$f = [ _hoisted_2$3g, _hoisted_3$3f, _hoisted_4$U ]; function _sfc_render$3i(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3h, _hoisted_5$f); } var deleteLocation = /* @__PURE__ */ _export_sfc$1(_sfc_main$3i, [["render", _sfc_render$3i]]); const _sfc_main$3h = defineComponent({ name: "Delete" }); const _hoisted_1$3g = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 256H96a32 32 0 010-64h256V95.936a32 32 0 0132-32h256a32 32 0 0132 32V192h256a32 32 0 110 64h-64v672a32 32 0 01-32 32H192a32 32 0 01-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 01-32-32V416a32 32 0 0164 0v320a32 32 0 01-32 32zm192 0a32 32 0 01-32-32V416a32 32 0 0164 0v320a32 32 0 01-32 32z" }, null, -1); const _hoisted_3$3e = [ _hoisted_2$3f ]; function _sfc_render$3h(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3g, _hoisted_3$3e); } var _delete = /* @__PURE__ */ _export_sfc$1(_sfc_main$3h, [["render", _sfc_render$3h]]); const _sfc_main$3g = defineComponent({ name: "Dessert" }); const _hoisted_1$3f = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 416v-48a144 144 0 01168.64-141.888 224.128 224.128 0 01430.72 0A144 144 0 01896 368v48a384 384 0 01-352 382.72V896h-64v-97.28A384 384 0 01128 416zm287.104-32.064h193.792a143.808 143.808 0 0158.88-132.736 160.064 160.064 0 00-311.552 0 143.808 143.808 0 0158.88 132.8zm-72.896 0a72 72 0 10-140.48 0h140.48zm339.584 0h140.416a72 72 0 10-140.48 0zM512 736a320 320 0 00318.4-288.064H193.6A320 320 0 00512 736zM384 896.064h256a32 32 0 110 64H384a32 32 0 110-64z" }, null, -1); const _hoisted_3$3d = [ _hoisted_2$3e ]; function _sfc_render$3g(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3f, _hoisted_3$3d); } var dessert = /* @__PURE__ */ _export_sfc$1(_sfc_main$3g, [["render", _sfc_render$3g]]); const _sfc_main$3f = defineComponent({ name: "Discount" }); const _hoisted_1$3e = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 704h576V318.336L552.512 115.84a64 64 0 00-81.024 0L224 318.336V704zm0 64v128h576V768H224zM593.024 66.304l259.2 212.096A32 32 0 01864 303.168V928a32 32 0 01-32 32H192a32 32 0 01-32-32V303.168a32 32 0 0111.712-24.768l259.2-212.096a128 128 0 01162.112 0z" }, null, -1); const _hoisted_3$3c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 448a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_4$T = [ _hoisted_2$3d, _hoisted_3$3c ]; function _sfc_render$3f(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3e, _hoisted_4$T); } var discount = /* @__PURE__ */ _export_sfc$1(_sfc_main$3f, [["render", _sfc_render$3f]]); const _sfc_main$3e = defineComponent({ name: "DishDot" }); const _hoisted_1$3d = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384.064 274.56l.064-50.688A128 128 0 01512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.192 448.192 0 01955.392 768H68.544A448.192 448.192 0 01384 274.56zM96 832h832a32 32 0 110 64H96a32 32 0 110-64zm32-128h768a384 384 0 10-768 0zm447.808-448v-32.32a63.68 63.68 0 00-63.68-63.68 64 64 0 00-64 63.936V256h127.68z" }, null, -1); const _hoisted_3$3b = [ _hoisted_2$3c ]; function _sfc_render$3e(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3d, _hoisted_3$3b); } var dishDot = /* @__PURE__ */ _export_sfc$1(_sfc_main$3e, [["render", _sfc_render$3e]]); const _sfc_main$3d = defineComponent({ name: "Dish" }); const _hoisted_1$3c = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 257.152V192h-96a32 32 0 010-64h256a32 32 0 110 64h-96v65.152A448 448 0 01955.52 768H68.48A448 448 0 01480 257.152zM128 704h768a384 384 0 10-768 0zM96 832h832a32 32 0 110 64H96a32 32 0 110-64z" }, null, -1); const _hoisted_3$3a = [ _hoisted_2$3b ]; function _sfc_render$3d(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3c, _hoisted_3$3a); } var dish = /* @__PURE__ */ _export_sfc$1(_sfc_main$3d, [["render", _sfc_render$3d]]); const _sfc_main$3c = defineComponent({ name: "DocumentAdd" }); const _hoisted_1$3b = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$3a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm320 512V448h64v128h128v64H544v128h-64V640H352v-64h128z" }, null, -1); const _hoisted_3$39 = [ _hoisted_2$3a ]; function _sfc_render$3c(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3b, _hoisted_3$39); } var documentAdd = /* @__PURE__ */ _export_sfc$1(_sfc_main$3c, [["render", _sfc_render$3c]]); const _sfc_main$3b = defineComponent({ name: "DocumentChecked" }); const _hoisted_1$3a = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$39 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M805.504 320L640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm318.4 582.144l180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312L478.4 646.144z" }, null, -1); const _hoisted_3$38 = [ _hoisted_2$39 ]; function _sfc_render$3b(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$3a, _hoisted_3$38); } var documentChecked = /* @__PURE__ */ _export_sfc$1(_sfc_main$3b, [["render", _sfc_render$3b]]); const _sfc_main$3a = defineComponent({ name: "DocumentCopy" }); const _hoisted_1$39 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$38 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 320v576h576V320H128zm-32-64h640a32 32 0 0132 32v640a32 32 0 01-32 32H96a32 32 0 01-32-32V288a32 32 0 0132-32zM960 96v704a32 32 0 01-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0132-32h576a32 32 0 0132 32zM256 672h320v64H256v-64zm0-192h320v64H256v-64z" }, null, -1); const _hoisted_3$37 = [ _hoisted_2$38 ]; function _sfc_render$3a(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$39, _hoisted_3$37); } var documentCopy = /* @__PURE__ */ _export_sfc$1(_sfc_main$3a, [["render", _sfc_render$3a]]); const _sfc_main$39 = defineComponent({ name: "DocumentDelete" }); const _hoisted_1$38 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$37 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M805.504 320L640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm308.992 546.304l-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248 90.496-90.496z" }, null, -1); const _hoisted_3$36 = [ _hoisted_2$37 ]; function _sfc_render$39(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$38, _hoisted_3$36); } var documentDelete = /* @__PURE__ */ _export_sfc$1(_sfc_main$39, [["render", _sfc_render$39]]); const _sfc_main$38 = defineComponent({ name: "DocumentRemove" }); const _hoisted_1$37 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$36 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M805.504 320L640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm192 512h320v64H352v-64z" }, null, -1); const _hoisted_3$35 = [ _hoisted_2$36 ]; function _sfc_render$38(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$37, _hoisted_3$35); } var documentRemove = /* @__PURE__ */ _export_sfc$1(_sfc_main$38, [["render", _sfc_render$38]]); const _sfc_main$37 = defineComponent({ name: "Document" }); const _hoisted_1$36 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$35 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z" }, null, -1); const _hoisted_3$34 = [ _hoisted_2$35 ]; function _sfc_render$37(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$36, _hoisted_3$34); } var document$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$37, [["render", _sfc_render$37]]); const _sfc_main$36 = defineComponent({ name: "Download" }); const _hoisted_1$35 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$34 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 832h704a32 32 0 110 64H160a32 32 0 110-64zm384-253.696l236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z" }, null, -1); const _hoisted_3$33 = [ _hoisted_2$34 ]; function _sfc_render$36(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$35, _hoisted_3$33); } var download = /* @__PURE__ */ _export_sfc$1(_sfc_main$36, [["render", _sfc_render$36]]); const _sfc_main$35 = defineComponent({ name: "Drizzling" }); const _hoisted_1$34 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$33 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M739.328 291.328l-35.2-6.592-12.8-33.408a192.064 192.064 0 00-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 00-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0035.776-380.672zM959.552 480a256 256 0 01-256 256h-400A239.808 239.808 0 0163.744 496.192a240.32 240.32 0 01199.488-236.8 256.128 256.128 0 01487.872-30.976A256.064 256.064 0 01959.552 480zM288 800h64v64h-64v-64zm192 0h64v64h-64v-64zm-96 96h64v64h-64v-64zm192 0h64v64h-64v-64zm96-96h64v64h-64v-64z" }, null, -1); const _hoisted_3$32 = [ _hoisted_2$33 ]; function _sfc_render$35(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$34, _hoisted_3$32); } var drizzling = /* @__PURE__ */ _export_sfc$1(_sfc_main$35, [["render", _sfc_render$35]]); const _sfc_main$34 = defineComponent({ name: "Edit" }); const _hoisted_1$33 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$32 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 512a32 32 0 1164 0v352a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h352a32 32 0 010 64H192v640h640V512z" }, null, -1); const _hoisted_3$31 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M469.952 554.24l52.8-7.552L847.104 222.4a32 32 0 10-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 010 135.808l-331.84 331.84a32 32 0 01-18.112 9.088L436.8 623.68a32 32 0 01-36.224-36.224l15.104-105.6a32 32 0 019.024-18.112l331.904-331.84a96 96 0 01135.744 0z" }, null, -1); const _hoisted_4$S = [ _hoisted_2$32, _hoisted_3$31 ]; function _sfc_render$34(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$33, _hoisted_4$S); } var edit = /* @__PURE__ */ _export_sfc$1(_sfc_main$34, [["render", _sfc_render$34]]); const _sfc_main$33 = defineComponent({ name: "ElemeFilled" }); const _hoisted_1$32 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$31 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 01-112 112H176A112 112 0 0164 848V176c0-61.824 50.176-112 112-112zm150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 00456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 004.224-24.32L700.352 724.8a47.552 47.552 0 00-65.536-14.272A234.56 234.56 0 01310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 01276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 00-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 006.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0016-76.48l-20.224-31.04a19.52 19.52 0 00-25.152-5.12z" }, null, -1); const _hoisted_3$30 = [ _hoisted_2$31 ]; function _sfc_render$33(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$32, _hoisted_3$30); } var elemeFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$33, [["render", _sfc_render$33]]); const _sfc_main$32 = defineComponent({ name: "Eleme" }); const _hoisted_1$31 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$30 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 01-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0116.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 00-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 00370.56 78.72 54.336 54.336 0 0174.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 01-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0128.8 5.76l23.04 35.52a63.232 63.232 0 01-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z" }, null, -1); const _hoisted_3$2$ = [ _hoisted_2$30 ]; function _sfc_render$32(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$31, _hoisted_3$2$); } var eleme = /* @__PURE__ */ _export_sfc$1(_sfc_main$32, [["render", _sfc_render$32]]); const _sfc_main$31 = defineComponent({ name: "Expand" }); const _hoisted_1$30 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352l192 160-192 128V352z" }, null, -1); const _hoisted_3$2_ = [ _hoisted_2$2$ ]; function _sfc_render$31(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$30, _hoisted_3$2_); } var expand = /* @__PURE__ */ _export_sfc$1(_sfc_main$31, [["render", _sfc_render$31]]); const _sfc_main$30 = defineComponent({ name: "Failed" }); const _hoisted_1$2$ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2_ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M557.248 608l135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384v-64zm-320 0V96h256v96H384z" }, null, -1); const _hoisted_3$2Z = [ _hoisted_2$2_ ]; function _sfc_render$30(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2$, _hoisted_3$2Z); } var failed = /* @__PURE__ */ _export_sfc$1(_sfc_main$30, [["render", _sfc_render$30]]); const _sfc_main$2$ = defineComponent({ name: "Female" }); const _hoisted_1$2_ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2Z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 640a256 256 0 100-512 256 256 0 000 512zm0 64a320 320 0 110-640 320 320 0 010 640z" }, null, -1); const _hoisted_3$2Y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32z" }, null, -1); const _hoisted_4$R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z" }, null, -1); const _hoisted_5$e = [ _hoisted_2$2Z, _hoisted_3$2Y, _hoisted_4$R ]; function _sfc_render$2$(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2_, _hoisted_5$e); } var female = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$, [["render", _sfc_render$2$]]); const _sfc_main$2_ = defineComponent({ name: "Files" }); const _hoisted_1$2Z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2Y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 384v448h768V384H128zm-32-64h832a32 32 0 0132 32v512a32 32 0 01-32 32H96a32 32 0 01-32-32V352a32 32 0 0132-32zM160 192h704v64H160zm96-128h512v64H256z" }, null, -1); const _hoisted_3$2X = [ _hoisted_2$2Y ]; function _sfc_render$2_(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2Z, _hoisted_3$2X); } var files = /* @__PURE__ */ _export_sfc$1(_sfc_main$2_, [["render", _sfc_render$2_]]); const _sfc_main$2Z = defineComponent({ name: "Film" }); const _hoisted_1$2Y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2X = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 160v704h704V160H160zm-32-64h768a32 32 0 0132 32v768a32 32 0 01-32 32H128a32 32 0 01-32-32V128a32 32 0 0132-32z" }, null, -1); const _hoisted_3$2W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64h192z" }, null, -1); const _hoisted_4$Q = [ _hoisted_2$2X, _hoisted_3$2W ]; function _sfc_render$2Z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2Y, _hoisted_4$Q); } var film = /* @__PURE__ */ _export_sfc$1(_sfc_main$2Z, [["render", _sfc_render$2Z]]); const _sfc_main$2Y = defineComponent({ name: "Filter" }); const _hoisted_1$2X = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 523.392V928a32 32 0 0046.336 28.608l192-96A32 32 0 00640 832V523.392l280.768-343.104a32 32 0 10-49.536-40.576l-288 352A32 32 0 00576 512v300.224l-128 64V512a32 32 0 00-7.232-20.288L195.52 192H704a32 32 0 100-64H128a32 32 0 00-24.768 52.288L384 523.392z" }, null, -1); const _hoisted_3$2V = [ _hoisted_2$2W ]; function _sfc_render$2Y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2X, _hoisted_3$2V); } var filter$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$2Y, [["render", _sfc_render$2Y]]); const _sfc_main$2X = defineComponent({ name: "Finished" }); const _hoisted_1$2W = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M280.768 753.728L691.456 167.04a32 32 0 1152.416 36.672L314.24 817.472a32 32 0 01-45.44 7.296l-230.4-172.8a32 32 0 0138.4-51.2l203.968 152.96zM736 448a32 32 0 110-64h192a32 32 0 110 64H736zM608 640a32 32 0 010-64h319.936a32 32 0 110 64H608zM480 832a32 32 0 110-64h447.936a32 32 0 110 64H480z" }, null, -1); const _hoisted_3$2U = [ _hoisted_2$2V ]; function _sfc_render$2X(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2W, _hoisted_3$2U); } var finished = /* @__PURE__ */ _export_sfc$1(_sfc_main$2X, [["render", _sfc_render$2X]]); const _sfc_main$2W = defineComponent({ name: "FirstAidKit" }); const _hoisted_1$2V = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 256a64 64 0 00-64 64v448a64 64 0 0064 64h640a64 64 0 0064-64V320a64 64 0 00-64-64H192zm0-64h640a128 128 0 01128 128v448a128 128 0 01-128 128H192A128 128 0 0164 768V320a128 128 0 01128-128z" }, null, -1); const _hoisted_3$2T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 512h96a32 32 0 010 64h-96v96a32 32 0 01-64 0v-96h-96a32 32 0 010-64h96v-96a32 32 0 0164 0v96zM352 128v64h320v-64H352zm-32-64h384a32 32 0 0132 32v128a32 32 0 01-32 32H320a32 32 0 01-32-32V96a32 32 0 0132-32z" }, null, -1); const _hoisted_4$P = [ _hoisted_2$2U, _hoisted_3$2T ]; function _sfc_render$2W(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2V, _hoisted_4$P); } var firstAidKit = /* @__PURE__ */ _export_sfc$1(_sfc_main$2W, [["render", _sfc_render$2W]]); const _sfc_main$2V = defineComponent({ name: "Flag" }); const _hoisted_1$2U = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 128h608L736 384l160 256H288v320h-96V64h96v64z" }, null, -1); const _hoisted_3$2S = [ _hoisted_2$2T ]; function _sfc_render$2V(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2U, _hoisted_3$2S); } var flag = /* @__PURE__ */ _export_sfc$1(_sfc_main$2V, [["render", _sfc_render$2V]]); const _sfc_main$2U = defineComponent({ name: "Fold" }); const _hoisted_1$2T = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2S = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M896 192H128v128h768V192zm0 256H384v128h512V448zm0 256H128v128h768V704zM320 384L128 512l192 128V384z" }, null, -1); const _hoisted_3$2R = [ _hoisted_2$2S ]; function _sfc_render$2U(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2T, _hoisted_3$2R); } var fold = /* @__PURE__ */ _export_sfc$1(_sfc_main$2U, [["render", _sfc_render$2U]]); const _sfc_main$2T = defineComponent({ name: "FolderAdd" }); const _hoisted_1$2S = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32zm384 416V416h64v128h128v64H544v128h-64V608H352v-64h128z" }, null, -1); const _hoisted_3$2Q = [ _hoisted_2$2R ]; function _sfc_render$2T(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2S, _hoisted_3$2Q); } var folderAdd = /* @__PURE__ */ _export_sfc$1(_sfc_main$2T, [["render", _sfc_render$2T]]); const _sfc_main$2S = defineComponent({ name: "FolderChecked" }); const _hoisted_1$2R = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2Q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32zm414.08 502.144l180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312L510.08 630.144z" }, null, -1); const _hoisted_3$2P = [ _hoisted_2$2Q ]; function _sfc_render$2S(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2R, _hoisted_3$2P); } var folderChecked = /* @__PURE__ */ _export_sfc$1(_sfc_main$2S, [["render", _sfc_render$2S]]); const _sfc_main$2R = defineComponent({ name: "FolderDelete" }); const _hoisted_1$2Q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2P = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32zm370.752 448l-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248L466.752 576z" }, null, -1); const _hoisted_3$2O = [ _hoisted_2$2P ]; function _sfc_render$2R(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2Q, _hoisted_3$2O); } var folderDelete = /* @__PURE__ */ _export_sfc$1(_sfc_main$2R, [["render", _sfc_render$2R]]); const _sfc_main$2Q = defineComponent({ name: "FolderOpened" }); const _hoisted_1$2P = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2O = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 01216.96 384H832zm-24.96 512H96a32 32 0 01-32-32V160a32 32 0 0132-32h287.872l128.384 128H864a32 32 0 0132 32v96h23.04a32 32 0 0131.04 39.744l-112 448A32 32 0 01807.04 896z" }, null, -1); const _hoisted_3$2N = [ _hoisted_2$2O ]; function _sfc_render$2Q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2P, _hoisted_3$2N); } var folderOpened = /* @__PURE__ */ _export_sfc$1(_sfc_main$2Q, [["render", _sfc_render$2Q]]); const _sfc_main$2P = defineComponent({ name: "FolderRemove" }); const _hoisted_1$2O = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2N = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32zm256 416h320v64H352v-64z" }, null, -1); const _hoisted_3$2M = [ _hoisted_2$2N ]; function _sfc_render$2P(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2O, _hoisted_3$2M); } var folderRemove = /* @__PURE__ */ _export_sfc$1(_sfc_main$2P, [["render", _sfc_render$2P]]); const _sfc_main$2O = defineComponent({ name: "Folder" }); const _hoisted_1$2N = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2M = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V160a32 32 0 0132-32z" }, null, -1); const _hoisted_3$2L = [ _hoisted_2$2M ]; function _sfc_render$2O(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2N, _hoisted_3$2L); } var folder = /* @__PURE__ */ _export_sfc$1(_sfc_main$2O, [["render", _sfc_render$2O]]); const _sfc_main$2N = defineComponent({ name: "Food" }); const _hoisted_1$2M = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2L = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 352.576V352a288 288 0 01491.072-204.224 192 192 0 01274.24 204.48 64 64 0 0157.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 01-96 96H384a96 96 0 01-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 01128 352.64zm64-.576h64a160 160 0 01320 0h64a224 224 0 00-448 0zm128 0h192a96 96 0 00-192 0zm439.424 0h68.544A128.256 128.256 0 00704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 01759.424 352zM672 768H352v32a32 32 0 0032 32h256a32 32 0 0032-32v-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288z" }, null, -1); const _hoisted_3$2K = [ _hoisted_2$2L ]; function _sfc_render$2N(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2M, _hoisted_3$2K); } var food = /* @__PURE__ */ _export_sfc$1(_sfc_main$2N, [["render", _sfc_render$2N]]); const _sfc_main$2M = defineComponent({ name: "Football" }); const _hoisted_1$2L = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 960a448 448 0 110-896 448 448 0 010 896zm0-64a384 384 0 100-768 384 384 0 000 768z" }, null, -1); const _hoisted_3$2J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a385.984 385.984 0 01-80.448-91.648zm653.696-5.312a385.92 385.92 0 01-83.776 96.96l-32.512-56.384a322.923 322.923 0 0068.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184zM465.984 445.248l11.136-63.104a323.584 323.584 0 0069.76 0l11.136 63.104a387.968 387.968 0 01-92.032 0zm-62.72-12.8A381.824 381.824 0 01320 396.544l32-55.424a319.885 319.885 0 0062.464 27.712l-11.2 63.488zm300.8-35.84a381.824 381.824 0 01-83.328 35.84l-11.2-63.552A319.885 319.885 0 00672 341.184l32 55.424zm-520.768 364.8a385.92 385.92 0 0183.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072zm657.536.128a1442.759 1442.759 0 01-49.024 43.072 321.408 321.408 0 00-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408zM465.92 578.752a387.968 387.968 0 0192.032 0l-11.136 63.104a323.584 323.584 0 00-69.76 0l-11.136-63.104zm-62.72 12.8l11.2 63.552a319.885 319.885 0 00-62.464 27.712L320 627.392a381.824 381.824 0 0183.264-35.84zm300.8 35.84l-32 55.424a318.272 318.272 0 00-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z" }, null, -1); const _hoisted_4$O = [ _hoisted_2$2K, _hoisted_3$2J ]; function _sfc_render$2M(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2L, _hoisted_4$O); } var football = /* @__PURE__ */ _export_sfc$1(_sfc_main$2M, [["render", _sfc_render$2M]]); const _sfc_main$2L = defineComponent({ name: "ForkSpoon" }); const _hoisted_1$2K = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 410.304V96a32 32 0 0164 0v314.304a96 96 0 0064-90.56V96a32 32 0 0164 0v223.744a160 160 0 01-128 156.8V928a32 32 0 11-64 0V476.544a160 160 0 01-128-156.8V96a32 32 0 0164 0v223.744a96 96 0 0064 90.56zM672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 11-64 0V572.48zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192z" }, null, -1); const _hoisted_3$2I = [ _hoisted_2$2J ]; function _sfc_render$2L(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2K, _hoisted_3$2I); } var forkSpoon = /* @__PURE__ */ _export_sfc$1(_sfc_main$2L, [["render", _sfc_render$2L]]); const _sfc_main$2K = defineComponent({ name: "Fries" }); const _hoisted_1$2J = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M608 224v-64a32 32 0 00-64 0v336h26.88A64 64 0 00608 484.096V224zm101.12 160A64 64 0 00672 395.904V384h64V224a32 32 0 10-64 0v160h37.12zm74.88 0a92.928 92.928 0 0191.328 110.08l-60.672 323.584A96 96 0 01720.32 896H303.68a96 96 0 01-94.336-78.336L148.672 494.08A92.928 92.928 0 01240 384h-16V224a96 96 0 01188.608-25.28A95.744 95.744 0 01480 197.44V160a96 96 0 01188.608-25.28A96 96 0 01800 224v160h-16zM670.784 512a128 128 0 01-99.904 48H453.12a128 128 0 01-99.84-48H352v-1.536a128.128 128.128 0 01-9.984-14.976L314.88 448H240a28.928 28.928 0 00-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 00784 448h-74.88l-27.136 47.488A132.405 132.405 0 01672 510.464V512h-1.216zM480 288a32 32 0 00-64 0v196.096A64 64 0 00453.12 496H480V288zm-128 96V224a32 32 0 00-64 0v160h64-37.12A64 64 0 01352 395.904zm-98.88 320l19.072 101.888A32 32 0 00303.68 832h416.64a32 32 0 0031.488-26.112L770.88 704H253.12z" }, null, -1); const _hoisted_3$2H = [ _hoisted_2$2I ]; function _sfc_render$2K(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2J, _hoisted_3$2H); } var fries = /* @__PURE__ */ _export_sfc$1(_sfc_main$2K, [["render", _sfc_render$2K]]); const _sfc_main$2J = defineComponent({ name: "FullScreen" }); const _hoisted_1$2I = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 96.064l192 .192a32 32 0 010 64l-192-.192V352a32 32 0 01-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1164 0v191.936l192-.192a32 32 0 110 64l-192 .192zM864 96.064V96h64v256a32 32 0 11-64 0V160.064l-192 .192a32 32 0 110-64l192-.192zm0 831.872l-192-.192a32 32 0 010-64l192 .192V672a32 32 0 1164 0v256h-64v-.064z" }, null, -1); const _hoisted_3$2G = [ _hoisted_2$2H ]; function _sfc_render$2J(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2I, _hoisted_3$2G); } var fullScreen = /* @__PURE__ */ _export_sfc$1(_sfc_main$2J, [["render", _sfc_render$2J]]); const _sfc_main$2I = defineComponent({ name: "GobletFull" }); const _hoisted_1$2H = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2G = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320zm503.936 64H264.064a256.128 256.128 0 00495.872 0zM544 638.4V896h96a32 32 0 110 64H384a32 32 0 110-64h96V638.4A320 320 0 01192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 01-288 318.4z" }, null, -1); const _hoisted_3$2F = [ _hoisted_2$2G ]; function _sfc_render$2I(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2H, _hoisted_3$2F); } var gobletFull = /* @__PURE__ */ _export_sfc$1(_sfc_main$2I, [["render", _sfc_render$2I]]); const _sfc_main$2H = defineComponent({ name: "GobletSquareFull" }); const _hoisted_1$2G = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2F = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 00114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256v142.912zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952.32 952.32 0 01-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0132-32h576a32 32 0 0132 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 110 64H384a32 32 0 110-64h96V638.848z" }, null, -1); const _hoisted_3$2E = [ _hoisted_2$2F ]; function _sfc_render$2H(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2G, _hoisted_3$2E); } var gobletSquareFull = /* @__PURE__ */ _export_sfc$1(_sfc_main$2H, [["render", _sfc_render$2H]]); const _sfc_main$2G = defineComponent({ name: "GobletSquare" }); const _hoisted_1$2F = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 638.912V896h96a32 32 0 110 64H384a32 32 0 110-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0132-32h576a32 32 0 0132 32v224c0 122.816-58.624 303.68-288 318.912zM256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256v191.68z" }, null, -1); const _hoisted_3$2D = [ _hoisted_2$2E ]; function _sfc_render$2G(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2F, _hoisted_3$2D); } var gobletSquare = /* @__PURE__ */ _export_sfc$1(_sfc_main$2G, [["render", _sfc_render$2G]]); const _sfc_main$2F = defineComponent({ name: "Goblet" }); const _hoisted_1$2E = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2D = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 638.4V896h96a32 32 0 110 64H384a32 32 0 110-64h96V638.4A320 320 0 01192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 01-288 318.4zM256 320a256 256 0 10512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320z" }, null, -1); const _hoisted_3$2C = [ _hoisted_2$2D ]; function _sfc_render$2F(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2E, _hoisted_3$2C); } var goblet = /* @__PURE__ */ _export_sfc$1(_sfc_main$2F, [["render", _sfc_render$2F]]); const _sfc_main$2E = defineComponent({ name: "GoodsFilled" }); const _hoisted_1$2D = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2C = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 352h640l64 544H128l64-544zm128 224h64V448h-64v128zm320 0h64V448h-64v128zM384 288h-64a192 192 0 11384 0h-64a128 128 0 10-256 0z" }, null, -1); const _hoisted_3$2B = [ _hoisted_2$2C ]; function _sfc_render$2E(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2D, _hoisted_3$2B); } var goodsFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$2E, [["render", _sfc_render$2E]]); const _sfc_main$2D = defineComponent({ name: "Goods" }); const _hoisted_1$2C = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2B = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0131.808 28.8l57.6 576a32 32 0 01-31.808 35.2H131.328a32 32 0 01-31.808-35.2l57.6-576a32 32 0 0131.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 11-64 0v-96H384v96a32 32 0 01-64 0v-96z" }, null, -1); const _hoisted_3$2A = [ _hoisted_2$2B ]; function _sfc_render$2D(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2C, _hoisted_3$2A); } var goods = /* @__PURE__ */ _export_sfc$1(_sfc_main$2D, [["render", _sfc_render$2D]]); const _sfc_main$2C = defineComponent({ name: "Grape" }); const _hoisted_1$2B = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2A = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 195.2a160 160 0 0196 60.8 160 160 0 11146.24 254.976 160 160 0 01-128 224 160 160 0 11-292.48 0 160 160 0 01-128-224A160 160 0 11384 256a160 160 0 0196-60.8V128h-64a32 32 0 010-64h192a32 32 0 010 64h-64v67.2zM512 448a96 96 0 100-192 96 96 0 000 192zm-256 0a96 96 0 100-192 96 96 0 000 192zm128 224a96 96 0 100-192 96 96 0 000 192zm128 224a96 96 0 100-192 96 96 0 000 192zm128-224a96 96 0 100-192 96 96 0 000 192zm128-224a96 96 0 100-192 96 96 0 000 192z" }, null, -1); const _hoisted_3$2z = [ _hoisted_2$2A ]; function _sfc_render$2C(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2B, _hoisted_3$2z); } var grape = /* @__PURE__ */ _export_sfc$1(_sfc_main$2C, [["render", _sfc_render$2C]]); const _sfc_main$2B = defineComponent({ name: "Grid" }); const _hoisted_1$2A = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 384v256H384V384h256zm64 0h192v256H704V384zm-64 512H384V704h256v192zm64 0V704h192v192H704zm-64-768v192H384V128h256zm64 0h192v192H704V128zM320 384v256H128V384h192zm0 512H128V704h192v192zm0-768v192H128V128h192z" }, null, -1); const _hoisted_3$2y = [ _hoisted_2$2z ]; function _sfc_render$2B(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2A, _hoisted_3$2y); } var grid = /* @__PURE__ */ _export_sfc$1(_sfc_main$2B, [["render", _sfc_render$2B]]); const _sfc_main$2A = defineComponent({ name: "Guide" }); const _hoisted_1$2z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 608h-64V416h64v192zm0 160v160a32 32 0 01-32 32H416a32 32 0 01-32-32V768h64v128h128V768h64zM384 608V416h64v192h-64zm256-352h-64V128H448v128h-64V96a32 32 0 0132-32h192a32 32 0 0132 32v160z" }, null, -1); const _hoisted_3$2x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M220.8 256l-71.232 80 71.168 80H768V256H220.8zm-14.4-64H800a32 32 0 0132 32v224a32 32 0 01-32 32H206.4a32 32 0 01-23.936-10.752l-99.584-112a32 32 0 010-42.496l99.584-112A32 32 0 01206.4 192zm678.784 496l-71.104 80H266.816V608h547.2l71.168 80zm-56.768-144H234.88a32 32 0 00-32 32v224a32 32 0 0032 32h593.6a32 32 0 0023.936-10.752l99.584-112a32 32 0 000-42.496l-99.584-112A32 32 0 00828.48 544z" }, null, -1); const _hoisted_4$N = [ _hoisted_2$2y, _hoisted_3$2x ]; function _sfc_render$2A(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2z, _hoisted_4$N); } var guide = /* @__PURE__ */ _export_sfc$1(_sfc_main$2A, [["render", _sfc_render$2A]]); const _sfc_main$2z = defineComponent({ name: "Headset" }); const _hoisted_1$2y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M896 529.152V512a384 384 0 10-768 0v17.152A128 128 0 01320 640v128a128 128 0 11-256 0V512a448 448 0 11896 0v256a128 128 0 11-256 0V640a128 128 0 01192-110.848zM896 640a64 64 0 00-128 0v128a64 64 0 00128 0V640zm-768 0v128a64 64 0 00128 0V640a64 64 0 10-128 0z" }, null, -1); const _hoisted_3$2w = [ _hoisted_2$2x ]; function _sfc_render$2z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2y, _hoisted_3$2w); } var headset = /* @__PURE__ */ _export_sfc$1(_sfc_main$2z, [["render", _sfc_render$2z]]); const _sfc_main$2y = defineComponent({ name: "HelpFilled" }); const _hoisted_1$2x = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M926.784 480H701.312A192.512 192.512 0 00544 322.688V97.216A416.064 416.064 0 01926.784 480zm0 64A416.064 416.064 0 01544 926.784V701.312A192.512 192.512 0 00701.312 544h225.472zM97.28 544h225.472A192.512 192.512 0 00480 701.312v225.472A416.064 416.064 0 0197.216 544zm0-64A416.064 416.064 0 01480 97.216v225.472A192.512 192.512 0 00322.688 480H97.216z" }, null, -1); const _hoisted_3$2v = [ _hoisted_2$2w ]; function _sfc_render$2y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2x, _hoisted_3$2v); } var helpFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$2y, [["render", _sfc_render$2y]]); const _sfc_main$2x = defineComponent({ name: "Help" }); const _hoisted_1$2w = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M759.936 805.248l-90.944-91.008A254.912 254.912 0 01512 768a254.912 254.912 0 01-156.992-53.76l-90.944 91.008A382.464 382.464 0 00512 896c94.528 0 181.12-34.176 247.936-90.752zm45.312-45.312A382.464 382.464 0 00896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 00512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 01512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 00128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 01256 512c0-59.136 20.096-113.6 53.76-156.992l-91.008-90.944zm417.28 394.496a194.56 194.56 0 0022.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 00-67.968-146.56A191.296 191.296 0 00512 320a191.232 191.232 0 00-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0067.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$2u = [ _hoisted_2$2v ]; function _sfc_render$2x(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2w, _hoisted_3$2u); } var help = /* @__PURE__ */ _export_sfc$1(_sfc_main$2x, [["render", _sfc_render$2x]]); const _sfc_main$2w = defineComponent({ name: "Histogram" }); const _hoisted_1$2v = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M416 896V128h192v768H416zm-288 0V448h192v448H128zm576 0V320h192v576H704z" }, null, -1); const _hoisted_3$2t = [ _hoisted_2$2u ]; function _sfc_render$2w(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2v, _hoisted_3$2t); } var histogram = /* @__PURE__ */ _export_sfc$1(_sfc_main$2w, [["render", _sfc_render$2w]]); const _sfc_main$2v = defineComponent({ name: "HomeFilled" }); const _hoisted_1$2u = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 128L128 447.936V896h255.936V640H640v256h255.936V447.936z" }, null, -1); const _hoisted_3$2s = [ _hoisted_2$2t ]; function _sfc_render$2v(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2u, _hoisted_3$2s); } var homeFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$2v, [["render", _sfc_render$2v]]); const _sfc_main$2u = defineComponent({ name: "HotWater" }); const _hoisted_1$2t = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M273.067 477.867h477.866V409.6H273.067v68.267zm0 68.266v51.2A187.733 187.733 0 00460.8 785.067h102.4a187.733 187.733 0 00187.733-187.734v-51.2H273.067zm-34.134-204.8h546.134a34.133 34.133 0 0134.133 34.134v221.866a256 256 0 01-256 256H460.8a256 256 0 01-256-256V375.467a34.133 34.133 0 0134.133-34.134zM512 34.133a34.133 34.133 0 0134.133 34.134v170.666a34.133 34.133 0 01-68.266 0V68.267A34.133 34.133 0 01512 34.133zM375.467 102.4a34.133 34.133 0 0134.133 34.133v102.4a34.133 34.133 0 01-68.267 0v-102.4a34.133 34.133 0 0134.134-34.133zm273.066 0a34.133 34.133 0 0134.134 34.133v102.4a34.133 34.133 0 11-68.267 0v-102.4a34.133 34.133 0 0134.133-34.133zM170.667 921.668h682.666a34.133 34.133 0 110 68.267H170.667a34.133 34.133 0 110-68.267z" }, null, -1); const _hoisted_3$2r = [ _hoisted_2$2s ]; function _sfc_render$2u(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2t, _hoisted_3$2r); } var hotWater = /* @__PURE__ */ _export_sfc$1(_sfc_main$2u, [["render", _sfc_render$2u]]); const _sfc_main$2t = defineComponent({ name: "House" }); const _hoisted_1$2s = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 413.952V896h640V413.952L512 147.328 192 413.952zM139.52 374.4l352-293.312a32 32 0 0140.96 0l352 293.312A32 32 0 01896 398.976V928a32 32 0 01-32 32H160a32 32 0 01-32-32V398.976a32 32 0 0111.52-24.576z" }, null, -1); const _hoisted_3$2q = [ _hoisted_2$2r ]; function _sfc_render$2t(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2s, _hoisted_3$2q); } var house = /* @__PURE__ */ _export_sfc$1(_sfc_main$2t, [["render", _sfc_render$2t]]); const _sfc_main$2s = defineComponent({ name: "IceCreamRound" }); const _hoisted_1$2r = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M308.352 489.344l226.304 226.304a32 32 0 0045.248 0L783.552 512A192 192 0 10512 240.448L308.352 444.16a32 32 0 000 45.248zm135.744 226.304L308.352 851.392a96 96 0 01-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 010-135.808L466.752 195.2A256 256 0 01828.8 557.248L625.152 760.96a96 96 0 01-135.808 0l-45.248-45.248zM398.848 670.4L353.6 625.152 217.856 760.896a32 32 0 0045.248 45.248L398.848 670.4zm248.96-384.64a32 32 0 010 45.248L466.624 512a32 32 0 11-45.184-45.248l180.992-181.056a32 32 0 0145.248 0zm90.496 90.496a32 32 0 010 45.248L557.248 602.496A32 32 0 11512 557.248l180.992-180.992a32 32 0 0145.312 0z" }, null, -1); const _hoisted_3$2p = [ _hoisted_2$2q ]; function _sfc_render$2s(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2r, _hoisted_3$2p); } var iceCreamRound = /* @__PURE__ */ _export_sfc$1(_sfc_main$2s, [["render", _sfc_render$2s]]); const _sfc_main$2r = defineComponent({ name: "IceCreamSquare" }); const _hoisted_1$2q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M416 640h256a32 32 0 0032-32V160a32 32 0 00-32-32H352a32 32 0 00-32 32v448a32 32 0 0032 32h64zm192 64v160a96 96 0 01-192 0V704h-64a96 96 0 01-96-96V160a96 96 0 0196-96h320a96 96 0 0196 96v448a96 96 0 01-96 96h-64zm-64 0h-64v160a32 32 0 1064 0V704z" }, null, -1); const _hoisted_3$2o = [ _hoisted_2$2p ]; function _sfc_render$2r(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2q, _hoisted_3$2o); } var iceCreamSquare = /* @__PURE__ */ _export_sfc$1(_sfc_main$2r, [["render", _sfc_render$2r]]); const _sfc_main$2q = defineComponent({ name: "IceCream" }); const _hoisted_1$2p = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128.64 448a208 208 0 01193.536-191.552 224 224 0 01445.248 15.488A208.128 208.128 0 01894.784 448H896L548.8 983.68a32 32 0 01-53.248.704L128 448h.64zm64.256 0h286.208a144 144 0 00-286.208 0zm351.36 0h286.272a144 144 0 00-286.272 0zm-294.848 64l271.808 396.608L778.24 512H249.408zM511.68 352.64a207.872 207.872 0 01189.184-96.192 160 160 0 00-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56z" }, null, -1); const _hoisted_3$2n = [ _hoisted_2$2o ]; function _sfc_render$2q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2p, _hoisted_3$2n); } var iceCream = /* @__PURE__ */ _export_sfc$1(_sfc_main$2q, [["render", _sfc_render$2q]]); const _sfc_main$2p = defineComponent({ name: "IceDrink" }); const _hoisted_1$2o = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 448v128h239.68l16.064-128H512zm-64 0H256.256l16.064 128H448V448zm64-255.36V384h247.744A256.128 256.128 0 00512 192.64zm-64 8.064A256.448 256.448 0 00264.256 384H448V200.704zm64-72.064A320.128 320.128 0 01825.472 384H896a32 32 0 110 64h-64v1.92l-56.96 454.016A64 64 0 01711.552 960H312.448a64 64 0 01-63.488-56.064L192 449.92V448h-64a32 32 0 010-64h70.528A320.384 320.384 0 01448 135.04V96a96 96 0 0196-96h128a32 32 0 110 64H544a32 32 0 00-32 32v32.64zM743.68 640H280.32l32.128 256h399.104l32.128-256z" }, null, -1); const _hoisted_3$2m = [ _hoisted_2$2n ]; function _sfc_render$2p(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2o, _hoisted_3$2m); } var iceDrink = /* @__PURE__ */ _export_sfc$1(_sfc_main$2p, [["render", _sfc_render$2p]]); const _sfc_main$2o = defineComponent({ name: "IceTea" }); const _hoisted_1$2n = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M197.696 259.648a320.128 320.128 0 01628.608 0A96 96 0 01896 352v64a96 96 0 01-71.616 92.864l-49.408 395.072A64 64 0 01711.488 960H312.512a64 64 0 01-63.488-56.064l-49.408-395.072A96 96 0 01128 416v-64a96 96 0 0169.696-92.352zM264.064 256h495.872a256.128 256.128 0 00-495.872 0zm495.424 256H264.512l48 384h398.976l48-384zM224 448h576a32 32 0 0032-32v-64a32 32 0 00-32-32H224a32 32 0 00-32 32v64a32 32 0 0032 32zm160 192h64v64h-64v-64zm192 64h64v64h-64v-64zm-128 64h64v64h-64v-64zm64-192h64v64h-64v-64z" }, null, -1); const _hoisted_3$2l = [ _hoisted_2$2m ]; function _sfc_render$2o(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2n, _hoisted_3$2l); } var iceTea = /* @__PURE__ */ _export_sfc$1(_sfc_main$2o, [["render", _sfc_render$2o]]); const _sfc_main$2n = defineComponent({ name: "InfoFilled" }); const _hoisted_1$2m = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896.064A448 448 0 01512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 01-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 017.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z" }, null, -1); const _hoisted_3$2k = [ _hoisted_2$2l ]; function _sfc_render$2n(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2m, _hoisted_3$2k); } var infoFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$2n, [["render", _sfc_render$2n]]); const _sfc_main$2m = defineComponent({ name: "Iphone" }); const _hoisted_1$2l = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2k = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 768v96.064a64 64 0 0064 64h448a64 64 0 0064-64V768H224zm0-64h576V160a64 64 0 00-64-64H288a64 64 0 00-64 64v544zm32 288a96 96 0 01-96-96V128a96 96 0 0196-96h512a96 96 0 0196 96v768a96 96 0 01-96 96H256zm304-144a48 48 0 11-96 0 48 48 0 0196 0z" }, null, -1); const _hoisted_3$2j = [ _hoisted_2$2k ]; function _sfc_render$2m(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2l, _hoisted_3$2j); } var iphone = /* @__PURE__ */ _export_sfc$1(_sfc_main$2m, [["render", _sfc_render$2m]]); const _sfc_main$2l = defineComponent({ name: "Key" }); const _hoisted_1$2k = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 456.064V96a32 32 0 0132-32.064L672 64a32 32 0 010 64H512v128h160a32 32 0 010 64H512v128a256 256 0 11-64 8.064zM512 896a192 192 0 100-384 192 192 0 000 384z" }, null, -1); const _hoisted_3$2i = [ _hoisted_2$2j ]; function _sfc_render$2l(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2k, _hoisted_3$2i); } var key = /* @__PURE__ */ _export_sfc$1(_sfc_main$2l, [["render", _sfc_render$2l]]); const _sfc_main$2k = defineComponent({ name: "KnifeFork" }); const _hoisted_1$2j = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 410.56V96a32 32 0 0164 0v314.56A96 96 0 00384 320V96a32 32 0 0164 0v224a160 160 0 01-128 156.8V928a32 32 0 11-64 0V476.8A160 160 0 01128 320V96a32 32 0 0164 0v224a96 96 0 0064 90.56zm384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 11-64 0V64h64c85.312 89.472 138.688 174.848 160 256 21.312 81.152 32 177.152 32 288H640z" }, null, -1); const _hoisted_3$2h = [ _hoisted_2$2i ]; function _sfc_render$2k(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2j, _hoisted_3$2h); } var knifeFork = /* @__PURE__ */ _export_sfc$1(_sfc_main$2k, [["render", _sfc_render$2k]]); const _sfc_main$2j = defineComponent({ name: "Lightning" }); const _hoisted_1$2i = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2h = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 671.36v64.128A239.808 239.808 0 0163.744 496.192a240.32 240.32 0 01199.488-236.8 256.128 256.128 0 01487.872-30.976A256.064 256.064 0 01736 734.016v-64.768a192 192 0 003.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 00-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 00-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z" }, null, -1); const _hoisted_3$2g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M416 736a32 32 0 01-27.776-47.872l128-224a32 32 0 1155.552 31.744L471.168 672H608a32 32 0 0127.776 47.872l-128 224a32 32 0 11-55.68-31.744L552.96 736H416z" }, null, -1); const _hoisted_4$M = [ _hoisted_2$2h, _hoisted_3$2g ]; function _sfc_render$2j(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2i, _hoisted_4$M); } var lightning = /* @__PURE__ */ _export_sfc$1(_sfc_main$2j, [["render", _sfc_render$2j]]); const _sfc_main$2i = defineComponent({ name: "Link" }); const _hoisted_1$2h = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M715.648 625.152L670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496l-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496 45.248 45.248zm0-362.048l45.248 45.248L398.848 670.4 353.6 625.152 625.152 353.6z" }, null, -1); const _hoisted_3$2f = [ _hoisted_2$2g ]; function _sfc_render$2i(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2h, _hoisted_3$2f); } var link = /* @__PURE__ */ _export_sfc$1(_sfc_main$2i, [["render", _sfc_render$2i]]); const _sfc_main$2h = defineComponent({ name: "List" }); const _hoisted_1$2g = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 192h160v736H160V192h160v64h384v-64zM288 512h448v-64H288v64zm0 256h448v-64H288v64zm96-576V96h256v96H384z" }, null, -1); const _hoisted_3$2e = [ _hoisted_2$2f ]; function _sfc_render$2h(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2g, _hoisted_3$2e); } var list = /* @__PURE__ */ _export_sfc$1(_sfc_main$2h, [["render", _sfc_render$2h]]); const _sfc_main$2g = defineComponent({ name: "Loading" }); const _hoisted_1$2f = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a32 32 0 0132 32v192a32 32 0 01-64 0V96a32 32 0 0132-32zm0 640a32 32 0 0132 32v192a32 32 0 11-64 0V736a32 32 0 0132-32zm448-192a32 32 0 01-32 32H736a32 32 0 110-64h192a32 32 0 0132 32zm-640 0a32 32 0 01-32 32H96a32 32 0 010-64h192a32 32 0 0132 32zM195.2 195.2a32 32 0 0145.248 0L376.32 331.008a32 32 0 01-45.248 45.248L195.2 240.448a32 32 0 010-45.248zm452.544 452.544a32 32 0 0145.248 0L828.8 783.552a32 32 0 01-45.248 45.248L647.744 692.992a32 32 0 010-45.248zM828.8 195.264a32 32 0 010 45.184L692.992 376.32a32 32 0 01-45.248-45.248l135.808-135.808a32 32 0 0145.248 0zm-452.544 452.48a32 32 0 010 45.248L240.448 828.8a32 32 0 01-45.248-45.248l135.808-135.808a32 32 0 0145.248 0z" }, null, -1); const _hoisted_3$2d = [ _hoisted_2$2e ]; function _sfc_render$2g(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2f, _hoisted_3$2d); } var loading = /* @__PURE__ */ _export_sfc$1(_sfc_main$2g, [["render", _sfc_render$2g]]); const _sfc_main$2f = defineComponent({ name: "LocationFilled" }); const _hoisted_1$2e = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928zm0-435.2a64 64 0 100-128 64 64 0 000 128zm0 140.8a204.8 204.8 0 110-409.6 204.8 204.8 0 010 409.6z" }, null, -1); const _hoisted_3$2c = [ _hoisted_2$2d ]; function _sfc_render$2f(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2e, _hoisted_3$2c); } var locationFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$2f, [["render", _sfc_render$2f]]); const _sfc_main$2e = defineComponent({ name: "LocationInformation" }); const _hoisted_1$2d = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_3$2b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M800 416a288 288 0 10-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 01704 0c0 149.312-117.312 330.688-352 544z" }, null, -1); const _hoisted_4$L = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 512a96 96 0 100-192 96 96 0 000 192zm0 64a160 160 0 110-320 160 160 0 010 320z" }, null, -1); const _hoisted_5$d = [ _hoisted_2$2c, _hoisted_3$2b, _hoisted_4$L ]; function _sfc_render$2e(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2d, _hoisted_5$d); } var locationInformation = /* @__PURE__ */ _export_sfc$1(_sfc_main$2e, [["render", _sfc_render$2e]]); const _sfc_main$2d = defineComponent({ name: "Location" }); const _hoisted_1$2c = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M800 416a288 288 0 10-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 01704 0c0 149.312-117.312 330.688-352 544z" }, null, -1); const _hoisted_3$2a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 512a96 96 0 100-192 96 96 0 000 192zm0 64a160 160 0 110-320 160 160 0 010 320z" }, null, -1); const _hoisted_4$K = [ _hoisted_2$2b, _hoisted_3$2a ]; function _sfc_render$2d(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2c, _hoisted_4$K); } var location = /* @__PURE__ */ _export_sfc$1(_sfc_main$2d, [["render", _sfc_render$2d]]); const _sfc_main$2c = defineComponent({ name: "Lock" }); const _hoisted_1$2b = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$2a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 448a32 32 0 00-32 32v384a32 32 0 0032 32h576a32 32 0 0032-32V480a32 32 0 00-32-32H224zm0-64h576a96 96 0 0196 96v384a96 96 0 01-96 96H224a96 96 0 01-96-96V480a96 96 0 0196-96z" }, null, -1); const _hoisted_3$29 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 544a32 32 0 0132 32v192a32 32 0 11-64 0V576a32 32 0 0132-32zM704 384v-64a192 192 0 10-384 0v64h384zM512 64a256 256 0 01256 256v128H256V320A256 256 0 01512 64z" }, null, -1); const _hoisted_4$J = [ _hoisted_2$2a, _hoisted_3$29 ]; function _sfc_render$2c(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2b, _hoisted_4$J); } var lock = /* @__PURE__ */ _export_sfc$1(_sfc_main$2c, [["render", _sfc_render$2c]]); const _sfc_main$2b = defineComponent({ name: "Lollipop" }); const _hoisted_1$2a = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$29 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M513.28 448a64 64 0 1176.544 49.728A96 96 0 00768 448h64a160 160 0 01-320 0h1.28zm-126.976-29.696a256 256 0 1043.52-180.48A256 256 0 01832 448h-64a192 192 0 00-381.696-29.696zm105.664 249.472L285.696 874.048a96 96 0 01-135.68-135.744l206.208-206.272a320 320 0 11135.744 135.744zm-54.464-36.032a321.92 321.92 0 01-45.248-45.248L195.2 783.552a32 32 0 1045.248 45.248l197.056-197.12z" }, null, -1); const _hoisted_3$28 = [ _hoisted_2$29 ]; function _sfc_render$2b(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$2a, _hoisted_3$28); } var lollipop = /* @__PURE__ */ _export_sfc$1(_sfc_main$2b, [["render", _sfc_render$2b]]); const _sfc_main$2a = defineComponent({ name: "MagicStick" }); const _hoisted_1$29 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$28 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64h64v192h-64V64zm0 576h64v192h-64V640zM160 480v-64h192v64H160zm576 0v-64h192v64H736zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248L657.152 606.4zM114.048 923.2L68.8 877.952l316.8-316.8 45.248 45.248-316.8 316.8zM702.4 334.848L657.152 289.6l135.744-135.744 45.248 45.248L702.4 334.848z" }, null, -1); const _hoisted_3$27 = [ _hoisted_2$28 ]; function _sfc_render$2a(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$29, _hoisted_3$27); } var magicStick = /* @__PURE__ */ _export_sfc$1(_sfc_main$2a, [["render", _sfc_render$2a]]); const _sfc_main$29 = defineComponent({ name: "Magnet" }); const _hoisted_1$28 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$27 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 320V192H704v320a192 192 0 11-384 0V192H192v128h128v64H192v128a320 320 0 00640 0V384H704v-64h128zM640 512V128h256v384a384 384 0 11-768 0V128h256v384a128 128 0 10256 0z" }, null, -1); const _hoisted_3$26 = [ _hoisted_2$27 ]; function _sfc_render$29(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$28, _hoisted_3$26); } var magnet = /* @__PURE__ */ _export_sfc$1(_sfc_main$29, [["render", _sfc_render$29]]); const _sfc_main$28 = defineComponent({ name: "Male" }); const _hoisted_1$27 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$26 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M399.5 849.5a225 225 0 100-450 225 225 0 000 450zm0 56.25a281.25 281.25 0 110-562.5 281.25 281.25 0 010 562.5zM652.625 118.25h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125z" }, null, -1); const _hoisted_3$25 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125z" }, null, -1); const _hoisted_4$I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M604.813 458.9L565.1 419.131l292.613-292.668 39.825 39.824z" }, null, -1); const _hoisted_5$c = [ _hoisted_2$26, _hoisted_3$25, _hoisted_4$I ]; function _sfc_render$28(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$27, _hoisted_5$c); } var male = /* @__PURE__ */ _export_sfc$1(_sfc_main$28, [["render", _sfc_render$28]]); const _sfc_main$27 = defineComponent({ name: "Management" }); const _hoisted_1$26 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$25 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M576 128v288l96-96 96 96V128h128v768H320V128h256zm-448 0h128v768H128V128z" }, null, -1); const _hoisted_3$24 = [ _hoisted_2$25 ]; function _sfc_render$27(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$26, _hoisted_3$24); } var management = /* @__PURE__ */ _export_sfc$1(_sfc_main$27, [["render", _sfc_render$27]]); const _sfc_main$26 = defineComponent({ name: "MapLocation" }); const _hoisted_1$25 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$24 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M800 416a288 288 0 10-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 01704 0c0 149.312-117.312 330.688-352 544z" }, null, -1); const _hoisted_3$23 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 448a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256zm345.6 192L960 960H672v-64H352v64H64l102.4-256h691.2zm-68.928 0H235.328l-76.8 192h706.944l-76.8-192z" }, null, -1); const _hoisted_4$H = [ _hoisted_2$24, _hoisted_3$23 ]; function _sfc_render$26(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$25, _hoisted_4$H); } var mapLocation = /* @__PURE__ */ _export_sfc$1(_sfc_main$26, [["render", _sfc_render$26]]); const _sfc_main$25 = defineComponent({ name: "Medal" }); const _hoisted_1$24 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$23 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a256 256 0 100-512 256 256 0 000 512zm0 64a320 320 0 110-640 320 320 0 010 640z" }, null, -1); const _hoisted_3$22 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M576 128H448v200a286.72 286.72 0 0164-8c19.52 0 40.832 2.688 64 8V128zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128H640zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92V128zM229.312 64h565.376a32 32 0 0131.616 36.864L768 480c-113.792-64-199.104-96-256-96-56.896 0-142.208 32-256 96l-58.304-379.136A32 32 0 01229.312 64z" }, null, -1); const _hoisted_4$G = [ _hoisted_2$23, _hoisted_3$22 ]; function _sfc_render$25(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$24, _hoisted_4$G); } var medal = /* @__PURE__ */ _export_sfc$1(_sfc_main$25, [["render", _sfc_render$25]]); const _sfc_main$24 = defineComponent({ name: "Menu" }); const _hoisted_1$23 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$22 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 448a32 32 0 01-32-32V160.064a32 32 0 0132-32h256a32 32 0 0132 32V416a32 32 0 01-32 32H160zm448 0a32 32 0 01-32-32V160.064a32 32 0 0132-32h255.936a32 32 0 0132 32V416a32 32 0 01-32 32H608zM160 896a32 32 0 01-32-32V608a32 32 0 0132-32h256a32 32 0 0132 32v256a32 32 0 01-32 32H160zm448 0a32 32 0 01-32-32V608a32 32 0 0132-32h255.936a32 32 0 0132 32v256a32 32 0 01-32 32H608z" }, null, -1); const _hoisted_3$21 = [ _hoisted_2$22 ]; function _sfc_render$24(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$23, _hoisted_3$21); } var menu = /* @__PURE__ */ _export_sfc$1(_sfc_main$24, [["render", _sfc_render$24]]); const _sfc_main$23 = defineComponent({ name: "MessageBox" }); const _hoisted_1$22 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$21 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 384h448v64H288v-64zm96-128h256v64H384v-64zM131.456 512H384v128h256V512h252.544L721.856 192H302.144L131.456 512zM896 576H704v128H320V576H128v256h768V576zM275.776 128h472.448a32 32 0 0128.608 17.664l179.84 359.552A32 32 0 01960 519.552V864a32 32 0 01-32 32H96a32 32 0 01-32-32V519.552a32 32 0 013.392-14.336l179.776-359.552A32 32 0 01275.776 128z" }, null, -1); const _hoisted_3$20 = [ _hoisted_2$21 ]; function _sfc_render$23(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$22, _hoisted_3$20); } var messageBox = /* @__PURE__ */ _export_sfc$1(_sfc_main$23, [["render", _sfc_render$23]]); const _sfc_main$22 = defineComponent({ name: "Message" }); const _hoisted_1$21 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$20 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 224v512a64 64 0 0064 64h640a64 64 0 0064-64V224H128zm0-64h768a64 64 0 0164 64v512a128 128 0 01-128 128H192A128 128 0 0164 736V224a64 64 0 0164-64z" }, null, -1); const _hoisted_3$1$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M904 224L656.512 506.88a192 192 0 01-289.024 0L120 224h784zm-698.944 0l210.56 240.704a128 128 0 00192.704 0L818.944 224H205.056z" }, null, -1); const _hoisted_4$F = [ _hoisted_2$20, _hoisted_3$1$ ]; function _sfc_render$22(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$21, _hoisted_4$F); } var message = /* @__PURE__ */ _export_sfc$1(_sfc_main$22, [["render", _sfc_render$22]]); const _sfc_main$21 = defineComponent({ name: "Mic" }); const _hoisted_1$20 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 704h160a64 64 0 0064-64v-32h-96a32 32 0 010-64h96v-96h-96a32 32 0 010-64h96v-96h-96a32 32 0 010-64h96v-32a64 64 0 00-64-64H384a64 64 0 00-64 64v32h96a32 32 0 010 64h-96v96h96a32 32 0 010 64h-96v96h96a32 32 0 010 64h-96v32a64 64 0 0064 64h96zm64 64v128h192a32 32 0 110 64H288a32 32 0 110-64h192V768h-96a128 128 0 01-128-128V192A128 128 0 01384 64h256a128 128 0 01128 128v448a128 128 0 01-128 128h-96z" }, null, -1); const _hoisted_3$1_ = [ _hoisted_2$1$ ]; function _sfc_render$21(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$20, _hoisted_3$1_); } var mic = /* @__PURE__ */ _export_sfc$1(_sfc_main$21, [["render", _sfc_render$21]]); const _sfc_main$20 = defineComponent({ name: "Microphone" }); const _hoisted_1$1$ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1_ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 128a128 128 0 00-128 128v256a128 128 0 10256 0V256a128 128 0 00-128-128zm0-64a192 192 0 01192 192v256a192 192 0 11-384 0V256A192 192 0 01512 64zm-32 832v-64a288 288 0 01-288-288v-32a32 32 0 0164 0v32a224 224 0 00224 224h64a224 224 0 00224-224v-32a32 32 0 1164 0v32a288 288 0 01-288 288v64h64a32 32 0 110 64H416a32 32 0 110-64h64z" }, null, -1); const _hoisted_3$1Z = [ _hoisted_2$1_ ]; function _sfc_render$20(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1$, _hoisted_3$1Z); } var microphone = /* @__PURE__ */ _export_sfc$1(_sfc_main$20, [["render", _sfc_render$20]]); const _sfc_main$1$ = defineComponent({ name: "MilkTea" }); const _hoisted_1$1_ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1Z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M416 128V96a96 96 0 0196-96h128a32 32 0 110 64H512a32 32 0 00-32 32v32h320a96 96 0 0111.712 191.296l-39.68 581.056A64 64 0 01708.224 960H315.776a64 64 0 01-63.872-59.648l-39.616-581.056A96 96 0 01224 128h192zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0130.016-439.808L747.52 320H276.48zM224 256h576a32 32 0 100-64H224a32 32 0 000 64zm493.44 503.872l21.12-309.12a160 160 0 00-21.12 309.12z" }, null, -1); const _hoisted_3$1Y = [ _hoisted_2$1Z ]; function _sfc_render$1$(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1_, _hoisted_3$1Y); } var milkTea = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$, [["render", _sfc_render$1$]]); const _sfc_main$1_ = defineComponent({ name: "Minus" }); const _hoisted_1$1Z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1Y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 544h768a32 32 0 100-64H128a32 32 0 000 64z" }, null, -1); const _hoisted_3$1X = [ _hoisted_2$1Y ]; function _sfc_render$1_(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1Z, _hoisted_3$1X); } var minus = /* @__PURE__ */ _export_sfc$1(_sfc_main$1_, [["render", _sfc_render$1_]]); const _sfc_main$1Z = defineComponent({ name: "Money" }); const _hoisted_1$1Y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1X = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0112.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 01-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 01-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z" }, null, -1); const _hoisted_3$1W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 01-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 01-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0112.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0112.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z" }, null, -1); const _hoisted_4$E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 576a160 160 0 110-320 160 160 0 010 320zm0-64a96 96 0 100-192 96 96 0 000 192z" }, null, -1); const _hoisted_5$b = [ _hoisted_2$1X, _hoisted_3$1W, _hoisted_4$E ]; function _sfc_render$1Z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1Y, _hoisted_5$b); } var money = /* @__PURE__ */ _export_sfc$1(_sfc_main$1Z, [["render", _sfc_render$1Z]]); const _sfc_main$1Y = defineComponent({ name: "Monitor" }); const _hoisted_1$1X = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 768v128h192a32 32 0 110 64H288a32 32 0 110-64h192V768H192A128 128 0 0164 640V256a128 128 0 01128-128h640a128 128 0 01128 128v384a128 128 0 01-128 128H544zM192 192a64 64 0 00-64 64v384a64 64 0 0064 64h640a64 64 0 0064-64V256a64 64 0 00-64-64H192z" }, null, -1); const _hoisted_3$1V = [ _hoisted_2$1W ]; function _sfc_render$1Y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1X, _hoisted_3$1V); } var monitor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1Y, [["render", _sfc_render$1Y]]); const _sfc_main$1X = defineComponent({ name: "MoonNight" }); const _hoisted_1$1W = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 512a448 448 0 01215.872-383.296A384 384 0 00213.76 640h188.8A448.256 448.256 0 01384 512zM171.136 704a448 448 0 01636.992-575.296A384 384 0 00499.328 704h-328.32z" }, null, -1); const _hoisted_3$1U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zM160 768h384a32 32 0 110 64H160a32 32 0 110-64zm160 127.68l224 .256a32 32 0 0132 32V928a32 32 0 01-32 32l-224-.384a32 32 0 01-32-32v-.064a32 32 0 0132-32z" }, null, -1); const _hoisted_4$D = [ _hoisted_2$1V, _hoisted_3$1U ]; function _sfc_render$1X(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1W, _hoisted_4$D); } var moonNight = /* @__PURE__ */ _export_sfc$1(_sfc_main$1X, [["render", _sfc_render$1X]]); const _sfc_main$1W = defineComponent({ name: "Moon" }); const _hoisted_1$1V = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M240.448 240.448a384 384 0 10559.424 525.696 448 448 0 01-542.016-542.08 390.592 390.592 0 00-17.408 16.384zm181.056 362.048a384 384 0 00525.632 16.384A448 448 0 11405.056 76.8a384 384 0 0016.448 525.696z" }, null, -1); const _hoisted_3$1T = [ _hoisted_2$1U ]; function _sfc_render$1W(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1V, _hoisted_3$1T); } var moon = /* @__PURE__ */ _export_sfc$1(_sfc_main$1W, [["render", _sfc_render$1W]]); const _sfc_main$1V = defineComponent({ name: "MoreFilled" }); const _hoisted_1$1U = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M176 416a112 112 0 110 224 112 112 0 010-224zm336 0a112 112 0 110 224 112 112 0 010-224zm336 0a112 112 0 110 224 112 112 0 010-224z" }, null, -1); const _hoisted_3$1S = [ _hoisted_2$1T ]; function _sfc_render$1V(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1U, _hoisted_3$1S); } var moreFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$1V, [["render", _sfc_render$1V]]); const _sfc_main$1U = defineComponent({ name: "More" }); const _hoisted_1$1T = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1S = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M176 416a112 112 0 100 224 112 112 0 000-224m0 64a48 48 0 110 96 48 48 0 010-96zm336-64a112 112 0 110 224 112 112 0 010-224zm0 64a48 48 0 100 96 48 48 0 000-96zm336-64a112 112 0 110 224 112 112 0 010-224zm0 64a48 48 0 100 96 48 48 0 000-96z" }, null, -1); const _hoisted_3$1R = [ _hoisted_2$1S ]; function _sfc_render$1U(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1T, _hoisted_3$1R); } var more = /* @__PURE__ */ _export_sfc$1(_sfc_main$1U, [["render", _sfc_render$1U]]); const _sfc_main$1T = defineComponent({ name: "MostlyCloudy" }); const _hoisted_1$1S = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M737.216 357.952L704 349.824l-11.776-32a192.064 192.064 0 00-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 00320 768h368a207.808 207.808 0 00207.808-208 208.32 208.32 0 00-158.592-202.048zm15.168-62.208A272.32 272.32 0 01959.744 560a271.808 271.808 0 01-271.552 272H320a256 256 0 01-57.536-505.536 256.128 256.128 0 01489.92-30.72z" }, null, -1); const _hoisted_3$1Q = [ _hoisted_2$1R ]; function _sfc_render$1T(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1S, _hoisted_3$1Q); } var mostlyCloudy = /* @__PURE__ */ _export_sfc$1(_sfc_main$1T, [["render", _sfc_render$1T]]); const _sfc_main$1S = defineComponent({ name: "Mouse" }); const _hoisted_1$1R = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1Q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 00-46.272-46.272C678.592 260.672 654.208 256 585.856 256H438.144zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 01-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 01-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0172.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z" }, null, -1); const _hoisted_3$1P = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32zM544 224a32 32 0 01-64 0v-64a32 32 0 00-32-32h-96a32 32 0 010-64h96a96 96 0 0196 96v64z" }, null, -1); const _hoisted_4$C = [ _hoisted_2$1Q, _hoisted_3$1P ]; function _sfc_render$1S(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1R, _hoisted_4$C); } var mouse = /* @__PURE__ */ _export_sfc$1(_sfc_main$1S, [["render", _sfc_render$1S]]); const _sfc_main$1R = defineComponent({ name: "Mug" }); const _hoisted_1$1Q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1P = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M736 800V160H160v640a64 64 0 0064 64h448a64 64 0 0064-64zm64-544h63.552a96 96 0 0196 96v224a96 96 0 01-96 96H800v128a128 128 0 01-128 128H224A128 128 0 0196 800V128a32 32 0 0132-32h640a32 32 0 0132 32v128zm0 64v288h63.552a32 32 0 0032-32V352a32 32 0 00-32-32H800z" }, null, -1); const _hoisted_3$1O = [ _hoisted_2$1P ]; function _sfc_render$1R(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1Q, _hoisted_3$1O); } var mug = /* @__PURE__ */ _export_sfc$1(_sfc_main$1R, [["render", _sfc_render$1R]]); const _sfc_main$1Q = defineComponent({ name: "MuteNotification" }); const _hoisted_1$1P = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1O = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M241.216 832l63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 110 64H241.216zm-90.24 0H96a32 32 0 110-64h96V448a320.128 320.128 0 01256-313.6V128a64 64 0 11128 0v6.4a319.552 319.552 0 01171.648 97.088l-45.184 45.44A256 256 0 00256 448v278.336L151.04 832zM448 896h128a64 64 0 01-128 0z" }, null, -1); const _hoisted_3$1N = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M150.72 859.072a32 32 0 01-45.44-45.056l704-708.544a32 32 0 0145.44 45.056l-704 708.544z" }, null, -1); const _hoisted_4$B = [ _hoisted_2$1O, _hoisted_3$1N ]; function _sfc_render$1Q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1P, _hoisted_4$B); } var muteNotification = /* @__PURE__ */ _export_sfc$1(_sfc_main$1Q, [["render", _sfc_render$1Q]]); const _sfc_main$1P = defineComponent({ name: "Mute" }); const _hoisted_1$1O = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1N = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M412.16 592.128l-45.44 45.44A191.232 191.232 0 01320 512V256a192 192 0 11384 0v44.352l-64 64V256a128 128 0 10-256 0v256c0 30.336 10.56 58.24 28.16 80.128zm51.968 38.592A128 128 0 00640 512v-57.152l64-64V512a192 192 0 01-287.68 166.528l47.808-47.808zM314.88 779.968l46.144-46.08A222.976 222.976 0 00480 768h64a224 224 0 00224-224v-32a32 32 0 1164 0v32a288 288 0 01-288 288v64h64a32 32 0 110 64H416a32 32 0 110-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032zM266.752 737.6A286.976 286.976 0 01192 544v-32a32 32 0 0164 0v32c0 56.832 21.184 108.8 56.064 148.288L266.752 737.6z" }, null, -1); const _hoisted_3$1M = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M150.72 859.072a32 32 0 01-45.44-45.056l704-708.544a32 32 0 0145.44 45.056l-704 708.544z" }, null, -1); const _hoisted_4$A = [ _hoisted_2$1N, _hoisted_3$1M ]; function _sfc_render$1P(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1O, _hoisted_4$A); } var mute = /* @__PURE__ */ _export_sfc$1(_sfc_main$1P, [["render", _sfc_render$1P]]); const _sfc_main$1O = defineComponent({ name: "NoSmoking" }); const _hoisted_1$1N = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1M = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M440.256 576H256v128h56.256l-64 64H224a32 32 0 01-32-32V544a32 32 0 0132-32h280.256l-64 64zm143.488 128H704V583.744L775.744 512H928a32 32 0 0132 32v192a32 32 0 01-32 32H519.744l64-64zM768 576v128h128V576H768zM738.304 368.448l45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z" }, null, -1); const _hoisted_3$1L = [ _hoisted_2$1M ]; function _sfc_render$1O(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1N, _hoisted_3$1L); } var noSmoking = /* @__PURE__ */ _export_sfc$1(_sfc_main$1O, [["render", _sfc_render$1O]]); const _sfc_main$1N = defineComponent({ name: "Notebook" }); const _hoisted_1$1M = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1L = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 128v768h640V128H192zm-32-64h704a32 32 0 0132 32v832a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32z" }, null, -1); const _hoisted_3$1K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zM96 384h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zM96 576h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zM96 768h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32z" }, null, -1); const _hoisted_4$z = [ _hoisted_2$1L, _hoisted_3$1K ]; function _sfc_render$1N(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1M, _hoisted_4$z); } var notebook = /* @__PURE__ */ _export_sfc$1(_sfc_main$1N, [["render", _sfc_render$1N]]); const _sfc_main$1M = defineComponent({ name: "Notification" }); const _hoisted_1$1L = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 128v64H256a64 64 0 00-64 64v512a64 64 0 0064 64h512a64 64 0 0064-64V512h64v256a128 128 0 01-128 128H256a128 128 0 01-128-128V256a128 128 0 01128-128h256z" }, null, -1); const _hoisted_3$1J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 384a128 128 0 100-256 128 128 0 000 256zm0 64a192 192 0 110-384 192 192 0 010 384z" }, null, -1); const _hoisted_4$y = [ _hoisted_2$1K, _hoisted_3$1J ]; function _sfc_render$1M(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1L, _hoisted_4$y); } var notification = /* @__PURE__ */ _export_sfc$1(_sfc_main$1M, [["render", _sfc_render$1M]]); const _sfc_main$1L = defineComponent({ name: "Odometer" }); const _hoisted_1$1K = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$1I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 512a320 320 0 11640 0 32 32 0 11-64 0 256 256 0 10-512 0 32 32 0 01-64 0z" }, null, -1); const _hoisted_4$x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M570.432 627.84A96 96 0 11509.568 608l60.992-187.776A32 32 0 11631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1019.84-60.928 32 32 0 00-19.84 60.928z" }, null, -1); const _hoisted_5$a = [ _hoisted_2$1J, _hoisted_3$1I, _hoisted_4$x ]; function _sfc_render$1L(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1K, _hoisted_5$a); } var odometer = /* @__PURE__ */ _export_sfc$1(_sfc_main$1L, [["render", _sfc_render$1L]]); const _sfc_main$1K = defineComponent({ name: "OfficeBuilding" }); const _hoisted_1$1J = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 128v704h384V128H192zm-32-64h448a32 32 0 0132 32v768a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32z" }, null, -1); const _hoisted_3$1H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 256h256v64H256v-64zm0 192h256v64H256v-64zm0 192h256v64H256v-64zm384-128h128v64H640v-64zm0 128h128v64H640v-64zM64 832h896v64H64v-64z" }, null, -1); const _hoisted_4$w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 384v448h192V384H640zm-32-64h256a32 32 0 0132 32v512a32 32 0 01-32 32H608a32 32 0 01-32-32V352a32 32 0 0132-32z" }, null, -1); const _hoisted_5$9 = [ _hoisted_2$1I, _hoisted_3$1H, _hoisted_4$w ]; function _sfc_render$1K(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1J, _hoisted_5$9); } var officeBuilding = /* @__PURE__ */ _export_sfc$1(_sfc_main$1K, [["render", _sfc_render$1K]]); const _sfc_main$1J = defineComponent({ name: "Open" }); const _hoisted_1$1I = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M329.956 257.138a254.862 254.862 0 000 509.724h364.088a254.862 254.862 0 000-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 110 655.36H329.956a327.68 327.68 0 110-655.36z" }, null, -1); const _hoisted_3$1G = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M694.044 621.227a109.227 109.227 0 100-218.454 109.227 109.227 0 000 218.454zm0 72.817a182.044 182.044 0 110-364.088 182.044 182.044 0 010 364.088z" }, null, -1); const _hoisted_4$v = [ _hoisted_2$1H, _hoisted_3$1G ]; function _sfc_render$1J(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1I, _hoisted_4$v); } var open = /* @__PURE__ */ _export_sfc$1(_sfc_main$1J, [["render", _sfc_render$1J]]); const _sfc_main$1I = defineComponent({ name: "Operation" }); const _hoisted_1$1H = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1G = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M389.44 768a96.064 96.064 0 01181.12 0H896v64H570.56a96.064 96.064 0 01-181.12 0H128v-64h261.44zm192-288a96.064 96.064 0 01181.12 0H896v64H762.56a96.064 96.064 0 01-181.12 0H128v-64h453.44zm-320-288a96.064 96.064 0 01181.12 0H896v64H442.56a96.064 96.064 0 01-181.12 0H128v-64h133.44z" }, null, -1); const _hoisted_3$1F = [ _hoisted_2$1G ]; function _sfc_render$1I(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1H, _hoisted_3$1F); } var operation = /* @__PURE__ */ _export_sfc$1(_sfc_main$1I, [["render", _sfc_render$1I]]); const _sfc_main$1H = defineComponent({ name: "Opportunity" }); const _hoisted_1$1G = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1F = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 960v-64h192.064v64H384zm448-544a350.656 350.656 0 01-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.552 351.552 0 01-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 01832 416zm-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288h64z" }, null, -1); const _hoisted_3$1E = [ _hoisted_2$1F ]; function _sfc_render$1H(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1G, _hoisted_3$1E); } var opportunity = /* @__PURE__ */ _export_sfc$1(_sfc_main$1H, [["render", _sfc_render$1H]]); const _sfc_main$1G = defineComponent({ name: "Orange" }); const _hoisted_1$1F = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 894.72a382.336 382.336 0 00215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.336 382.336 0 00894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024l182.976 182.912zM894.656 480a382.336 382.336 0 00-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024h258.688zm-134.72-261.248A382.336 382.336 0 00544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696l182.912-182.976zM480 129.344a382.336 382.336 0 00-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696V129.344zm-261.248 134.72A382.336 382.336 0 00129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024L218.752 264.064zM129.344 544a382.336 382.336 0 0089.408 215.936l182.976-182.912A127.232 127.232 0 01388.032 544H129.344zm134.72 261.248A382.336 382.336 0 00480 894.656V635.968a127.232 127.232 0 01-33.024-13.696L264.064 805.248zM512 960a448 448 0 110-896 448 448 0 010 896zm0-384a64 64 0 100-128 64 64 0 000 128z" }, null, -1); const _hoisted_3$1D = [ _hoisted_2$1E ]; function _sfc_render$1G(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1F, _hoisted_3$1D); } var orange = /* @__PURE__ */ _export_sfc$1(_sfc_main$1G, [["render", _sfc_render$1G]]); const _sfc_main$1F = defineComponent({ name: "Paperclip" }); const _hoisted_1$1E = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1D = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M602.496 240.448A192 192 0 11874.048 512l-316.8 316.8A256 256 0 01195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 00512 783.552l316.8-316.8a128 128 0 10-181.056-181.056L353.6 579.904a32 32 0 1045.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 11-135.744-135.744l294.144-294.208z" }, null, -1); const _hoisted_3$1C = [ _hoisted_2$1D ]; function _sfc_render$1F(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1E, _hoisted_3$1C); } var paperclip = /* @__PURE__ */ _export_sfc$1(_sfc_main$1F, [["render", _sfc_render$1F]]); const _sfc_main$1E = defineComponent({ name: "PartlyCloudy" }); const _hoisted_1$1D = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1C = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M598.4 895.872H328.192a256 256 0 01-34.496-510.528A352 352 0 11598.4 895.872zm-271.36-64h272.256a288 288 0 10-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0026.88 382.848z" }, null, -1); const _hoisted_3$1B = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M139.84 501.888a256 256 0 11417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 10189.12 460.48a6003.84 6003.84 0 00-49.28 41.408z" }, null, -1); const _hoisted_4$u = [ _hoisted_2$1C, _hoisted_3$1B ]; function _sfc_render$1E(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1D, _hoisted_4$u); } var partlyCloudy = /* @__PURE__ */ _export_sfc$1(_sfc_main$1E, [["render", _sfc_render$1E]]); const _sfc_main$1D = defineComponent({ name: "Pear" }); const _hoisted_1$1C = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1B = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M542.336 258.816a443.255 443.255 0 00-9.024 25.088 32 32 0 11-60.8-20.032l1.088-3.328a162.688 162.688 0 00-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.688 162.688 0 00-130.112-133.12zm-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1132.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a316.608 316.608 0 00-9.792 15.104 226.688 226.688 0 01164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 01213.76-189.184z" }, null, -1); const _hoisted_3$1A = [ _hoisted_2$1B ]; function _sfc_render$1D(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1C, _hoisted_3$1A); } var pear = /* @__PURE__ */ _export_sfc$1(_sfc_main$1D, [["render", _sfc_render$1D]]); const _sfc_main$1C = defineComponent({ name: "PhoneFilled" }); const _hoisted_1$1B = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1A = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M199.232 125.568L90.624 379.008a32 32 0 006.784 35.2l512.384 512.384a32 32 0 0035.2 6.784l253.44-108.608a32 32 0 0010.048-52.032L769.6 633.92a32 32 0 00-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 00-5.952-36.928L251.2 115.52a32 32 0 00-51.968 10.048z" }, null, -1); const _hoisted_3$1z = [ _hoisted_2$1A ]; function _sfc_render$1C(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1B, _hoisted_3$1z); } var phoneFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$1C, [["render", _sfc_render$1C]]); const _sfc_main$1B = defineComponent({ name: "Phone" }); const _hoisted_1$1A = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M79.36 432.256L591.744 944.64a32 32 0 0035.2 6.784l253.44-108.544a32 32 0 009.984-52.032l-153.856-153.92a32 32 0 00-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 00-5.952-36.928L233.152 133.568a32 32 0 00-52.032 10.048L72.512 397.056a32 32 0 006.784 35.2zm60.48-29.952l81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472L139.84 402.304zM512 320v-64a256 256 0 01256 256h-64a192 192 0 00-192-192zm0-192V64a448 448 0 01448 448h-64a384 384 0 00-384-384z" }, null, -1); const _hoisted_3$1y = [ _hoisted_2$1z ]; function _sfc_render$1B(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1A, _hoisted_3$1y); } var phone = /* @__PURE__ */ _export_sfc$1(_sfc_main$1B, [["render", _sfc_render$1B]]); const _sfc_main$1A = defineComponent({ name: "PictureFilled" }); const _hoisted_1$1z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M96 896a32 32 0 01-32-32V160a32 32 0 0132-32h832a32 32 0 0132 32v704a32 32 0 01-32 32H96zm315.52-228.48l-68.928-68.928a32 32 0 00-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 00-49.216 0L458.752 665.408a32 32 0 01-47.232 2.112zM256 384a96 96 0 10192.064-.064A96 96 0 00256 384z" }, null, -1); const _hoisted_3$1x = [ _hoisted_2$1y ]; function _sfc_render$1A(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1z, _hoisted_3$1x); } var pictureFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$1A, [["render", _sfc_render$1A]]); const _sfc_main$1z = defineComponent({ name: "PictureRounded" }); const _hoisted_1$1y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 128a384 384 0 100 768 384 384 0 000-768zm0-64a448 448 0 110 896 448 448 0 010-896z" }, null, -1); const _hoisted_3$1w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 01123.712-10.24l138.24 98.688a32 32 0 0039.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 01-119.808 6.592l-138.24-98.752a32 32 0 00-41.152 3.456l-185.664 185.6z" }, null, -1); const _hoisted_4$t = [ _hoisted_2$1x, _hoisted_3$1w ]; function _sfc_render$1z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1y, _hoisted_4$t); } var pictureRounded = /* @__PURE__ */ _export_sfc$1(_sfc_main$1z, [["render", _sfc_render$1z]]); const _sfc_main$1y = defineComponent({ name: "Picture" }); const _hoisted_1$1x = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 160v704h704V160H160zm-32-64h768a32 32 0 0132 32v768a32 32 0 01-32 32H128a32 32 0 01-32-32V128a32 32 0 0132-32z" }, null, -1); const _hoisted_3$1v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 01134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0044.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 01-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 00-44.8 5.952L185.408 876.992z" }, null, -1); const _hoisted_4$s = [ _hoisted_2$1w, _hoisted_3$1v ]; function _sfc_render$1y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1x, _hoisted_4$s); } var picture = /* @__PURE__ */ _export_sfc$1(_sfc_main$1y, [["render", _sfc_render$1y]]); const _sfc_main$1x = defineComponent({ name: "PieChart" }); const _hoisted_1$1w = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 68.48v64.832A384.128 384.128 0 00512 896a384.128 384.128 0 00378.688-320h64.768A448.128 448.128 0 0164 512 448.128 448.128 0 01448 68.48z" }, null, -1); const _hoisted_3$1u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M576 97.28V448h350.72A384.064 384.064 0 00576 97.28zM512 64V33.152A448 448 0 01990.848 512H512V64z" }, null, -1); const _hoisted_4$r = [ _hoisted_2$1v, _hoisted_3$1u ]; function _sfc_render$1x(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1w, _hoisted_4$r); } var pieChart = /* @__PURE__ */ _export_sfc$1(_sfc_main$1x, [["render", _sfc_render$1x]]); const _sfc_main$1w = defineComponent({ name: "Place" }); const _hoisted_1$1v = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 512a192 192 0 100-384 192 192 0 000 384zm0 64a256 256 0 110-512 256 256 0 010 512z" }, null, -1); const _hoisted_3$1t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 512a32 32 0 0132 32v256a32 32 0 11-64 0V544a32 32 0 0132-32z" }, null, -1); const _hoisted_4$q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912z" }, null, -1); const _hoisted_5$8 = [ _hoisted_2$1u, _hoisted_3$1t, _hoisted_4$q ]; function _sfc_render$1w(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1v, _hoisted_5$8); } var place = /* @__PURE__ */ _export_sfc$1(_sfc_main$1w, [["render", _sfc_render$1w]]); const _sfc_main$1v = defineComponent({ name: "Platform" }); const _hoisted_1$1u = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 832v-64h128v64h192v64H256v-64h192zM128 704V128h768v576H128z" }, null, -1); const _hoisted_3$1s = [ _hoisted_2$1t ]; function _sfc_render$1v(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1u, _hoisted_3$1s); } var platform$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$1v, [["render", _sfc_render$1v]]); const _sfc_main$1u = defineComponent({ name: "Plus" }); const _hoisted_1$1t = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 480V128a32 32 0 0164 0v352h352a32 32 0 110 64H544v352a32 32 0 11-64 0V544H128a32 32 0 010-64h352z" }, null, -1); const _hoisted_3$1r = [ _hoisted_2$1s ]; function _sfc_render$1u(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1t, _hoisted_3$1r); } var plus = /* @__PURE__ */ _export_sfc$1(_sfc_main$1u, [["render", _sfc_render$1u]]); const _sfc_main$1t = defineComponent({ name: "Pointer" }); const _hoisted_1$1s = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.272 94.272 0 00-112.896-3.456 44.416 44.416 0 00-8.96 62.208L332.8 870.4A64 64 0 00384 896h512V575.232a64 64 0 00-45.632-61.312l-205.952-61.76A96 96 0 01576 360.192V192.448C576 156.8 547.2 128 511.552 128zM359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 11256.832 0v167.744a32 32 0 0022.784 30.656l206.016 61.76A128 128 0 01960 575.232V896a64 64 0 01-64 64H384a128 128 0 01-102.4-51.2L101.056 668.032A108.416 108.416 0 01128 512.512a158.272 158.272 0 01185.984 8.32L359.04 556.8z" }, null, -1); const _hoisted_3$1q = [ _hoisted_2$1r ]; function _sfc_render$1t(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1s, _hoisted_3$1q); } var pointer = /* @__PURE__ */ _export_sfc$1(_sfc_main$1t, [["render", _sfc_render$1t]]); const _sfc_main$1s = defineComponent({ name: "Position" }); const _hoisted_1$1r = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M249.6 417.088l319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 01-7.68-61.44l777.792-311.04a32 32 0 0141.6 41.6l-310.336 775.68a32 32 0 01-61.44-7.808L512 516.992l-391.424-52.736z" }, null, -1); const _hoisted_3$1p = [ _hoisted_2$1q ]; function _sfc_render$1s(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1r, _hoisted_3$1p); } var position$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$1s, [["render", _sfc_render$1s]]); const _sfc_main$1r = defineComponent({ name: "Postcard" }); const _hoisted_1$1q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 224a32 32 0 00-32 32v512a32 32 0 0032 32h704a32 32 0 0032-32V256a32 32 0 00-32-32H160zm0-64h704a96 96 0 0196 96v512a96 96 0 01-96 96H160a96 96 0 01-96-96V256a96 96 0 0196-96z" }, null, -1); const _hoisted_3$1o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 320a64 64 0 110 128 64 64 0 010-128zM288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32zM288 576h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_4$p = [ _hoisted_2$1p, _hoisted_3$1o ]; function _sfc_render$1r(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1q, _hoisted_4$p); } var postcard = /* @__PURE__ */ _export_sfc$1(_sfc_main$1r, [["render", _sfc_render$1r]]); const _sfc_main$1q = defineComponent({ name: "Pouring" }); const _hoisted_1$1p = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M739.328 291.328l-35.2-6.592-12.8-33.408a192.064 192.064 0 00-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 00-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0035.776-380.672zM959.552 480a256 256 0 01-256 256h-400A239.808 239.808 0 0163.744 496.192a240.32 240.32 0 01199.488-236.8 256.128 256.128 0 01487.872-30.976A256.064 256.064 0 01959.552 480zM224 800a32 32 0 0132 32v96a32 32 0 11-64 0v-96a32 32 0 0132-32zm192 0a32 32 0 0132 32v96a32 32 0 11-64 0v-96a32 32 0 0132-32zm192 0a32 32 0 0132 32v96a32 32 0 11-64 0v-96a32 32 0 0132-32zm192 0a32 32 0 0132 32v96a32 32 0 11-64 0v-96a32 32 0 0132-32z" }, null, -1); const _hoisted_3$1n = [ _hoisted_2$1o ]; function _sfc_render$1q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1p, _hoisted_3$1n); } var pouring = /* @__PURE__ */ _export_sfc$1(_sfc_main$1q, [["render", _sfc_render$1q]]); const _sfc_main$1p = defineComponent({ name: "Present" }); const _hoisted_1$1o = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 896V640H192v-64h288V320H192v576h288zm64 0h288V320H544v256h288v64H544v256zM128 256h768v672a32 32 0 01-32 32H160a32 32 0 01-32-32V256z" }, null, -1); const _hoisted_3$1m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32z" }, null, -1); const _hoisted_4$o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M416 256a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_5$7 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M608 256a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_6$2 = [ _hoisted_2$1n, _hoisted_3$1m, _hoisted_4$o, _hoisted_5$7 ]; function _sfc_render$1p(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1o, _hoisted_6$2); } var present = /* @__PURE__ */ _export_sfc$1(_sfc_main$1p, [["render", _sfc_render$1p]]); const _sfc_main$1o = defineComponent({ name: "PriceTag" }); const _hoisted_1$1n = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 318.336V896h576V318.336L552.512 115.84a64 64 0 00-81.024 0L224 318.336zM593.024 66.304l259.2 212.096A32 32 0 01864 303.168V928a32 32 0 01-32 32H192a32 32 0 01-32-32V303.168a32 32 0 0111.712-24.768l259.2-212.096a128 128 0 01162.112 0z" }, null, -1); const _hoisted_3$1l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 448a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_4$n = [ _hoisted_2$1m, _hoisted_3$1l ]; function _sfc_render$1o(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1n, _hoisted_4$n); } var priceTag = /* @__PURE__ */ _export_sfc$1(_sfc_main$1o, [["render", _sfc_render$1o]]); const _sfc_main$1n = defineComponent({ name: "Printer" }); const _hoisted_1$1m = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 01-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 01-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256V768zm64-192v320h384V576H320zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.296 23.296 0 00-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.296 23.296 0 00-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704h128zm64-448h384V128H320v128zm-64 128h64v64h-64v-64zm128 0h64v64h-64v-64z" }, null, -1); const _hoisted_3$1k = [ _hoisted_2$1l ]; function _sfc_render$1n(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1m, _hoisted_3$1k); } var printer = /* @__PURE__ */ _export_sfc$1(_sfc_main$1n, [["render", _sfc_render$1n]]); const _sfc_main$1m = defineComponent({ name: "Promotion" }); const _hoisted_1$1l = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1k = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M64 448l832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z" }, null, -1); const _hoisted_3$1j = [ _hoisted_2$1k ]; function _sfc_render$1m(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1l, _hoisted_3$1j); } var promotion = /* @__PURE__ */ _export_sfc$1(_sfc_main$1m, [["render", _sfc_render$1m]]); const _sfc_main$1l = defineComponent({ name: "QuestionFilled" }); const _hoisted_1$1k = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 00-38.72 14.784 49.408 49.408 0 00-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 00523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0016.192-38.72 51.968 51.968 0 00-15.488-38.016 55.936 55.936 0 00-39.424-14.784z" }, null, -1); const _hoisted_3$1i = [ _hoisted_2$1j ]; function _sfc_render$1l(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1k, _hoisted_3$1i); } var questionFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$1l, [["render", _sfc_render$1l]]); const _sfc_main$1k = defineComponent({ name: "Rank" }); const _hoisted_1$1j = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M186.496 544l41.408 41.344a32 32 0 11-45.248 45.312l-96-96a32 32 0 010-45.312l96-96a32 32 0 1145.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 11-45.248-45.184l96-96.128a32 32 0 0145.312 0l96 96.064a32 32 0 01-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0145.248-45.312l96 96a32 32 0 010 45.312l-96 96a32 32 0 01-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1145.248 45.248l-96 96a32 32 0 01-45.312 0l-96-96a32 32 0 1145.312-45.248l41.408 41.408V544H186.496z" }, null, -1); const _hoisted_3$1h = [ _hoisted_2$1i ]; function _sfc_render$1k(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1j, _hoisted_3$1h); } var rank = /* @__PURE__ */ _export_sfc$1(_sfc_main$1k, [["render", _sfc_render$1k]]); const _sfc_main$1j = defineComponent({ name: "ReadingLamp" }); const _hoisted_1$1i = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1h = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zM307.328 128l-99.52 448h608.384l-99.52-448H307.328zm-25.6-64h460.608a32 32 0 0131.232 25.088l113.792 512A32 32 0 01856.128 640H167.872a32 32 0 01-31.232-38.912l113.792-512A32 32 0 01281.664 64z" }, null, -1); const _hoisted_3$1g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32zM480 575.936h64V960h-64z" }, null, -1); const _hoisted_4$m = [ _hoisted_2$1h, _hoisted_3$1g ]; function _sfc_render$1j(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1i, _hoisted_4$m); } var readingLamp = /* @__PURE__ */ _export_sfc$1(_sfc_main$1j, [["render", _sfc_render$1j]]); const _sfc_main$1i = defineComponent({ name: "Reading" }); const _hoisted_1$1h = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 863.36l384-54.848v-638.72L525.568 222.72a96 96 0 01-27.136 0L128 169.792v638.72l384 54.848zM137.024 106.432l370.432 52.928a32 32 0 009.088 0l370.432-52.928A64 64 0 01960 169.792v638.72a64 64 0 01-54.976 63.36l-388.48 55.488a32 32 0 01-9.088 0l-388.48-55.488A64 64 0 0164 808.512v-638.72a64 64 0 0173.024-63.36z" }, null, -1); const _hoisted_3$1f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 192h64v704h-64z" }, null, -1); const _hoisted_4$l = [ _hoisted_2$1g, _hoisted_3$1f ]; function _sfc_render$1i(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1h, _hoisted_4$l); } var reading = /* @__PURE__ */ _export_sfc$1(_sfc_main$1i, [["render", _sfc_render$1i]]); const _sfc_main$1h = defineComponent({ name: "RefreshLeft" }); const _hoisted_1$1g = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M289.088 296.704h92.992a32 32 0 010 64H232.96a32 32 0 01-32-32V179.712a32 32 0 0164 0v50.56a384 384 0 01643.84 282.88 384 384 0 01-383.936 384 384 384 0 01-384-384h64a320 320 0 10640 0 320 320 0 00-555.712-216.448z" }, null, -1); const _hoisted_3$1e = [ _hoisted_2$1f ]; function _sfc_render$1h(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1g, _hoisted_3$1e); } var refreshLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$1h, [["render", _sfc_render$1h]]); const _sfc_main$1g = defineComponent({ name: "RefreshRight" }); const _hoisted_1$1f = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M784.512 230.272v-50.56a32 32 0 1164 0v149.056a32 32 0 01-32 32H667.52a32 32 0 110-64h92.992A320 320 0 10524.8 833.152a320 320 0 00320-320h64a384 384 0 01-384 384 384 384 0 01-384-384 384 384 0 01643.712-282.88z" }, null, -1); const _hoisted_3$1d = [ _hoisted_2$1e ]; function _sfc_render$1g(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1f, _hoisted_3$1d); } var refreshRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$1g, [["render", _sfc_render$1g]]); const _sfc_main$1f = defineComponent({ name: "Refresh" }); const _hoisted_1$1e = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M771.776 794.88A384 384 0 01128 512h64a320 320 0 00555.712 216.448H654.72a32 32 0 110-64h149.056a32 32 0 0132 32v148.928a32 32 0 11-64 0v-50.56zM276.288 295.616h92.992a32 32 0 010 64H220.16a32 32 0 01-32-32V178.56a32 32 0 0164 0v50.56A384 384 0 01896.128 512h-64a320 320 0 00-555.776-216.384z" }, null, -1); const _hoisted_3$1c = [ _hoisted_2$1d ]; function _sfc_render$1f(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1e, _hoisted_3$1c); } var refresh = /* @__PURE__ */ _export_sfc$1(_sfc_main$1f, [["render", _sfc_render$1f]]); const _sfc_main$1e = defineComponent({ name: "Refrigerator" }); const _hoisted_1$1d = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 448h512V160a32 32 0 00-32-32H288a32 32 0 00-32 32v288zm0 64v352a32 32 0 0032 32h448a32 32 0 0032-32V512H256zm32-448h448a96 96 0 0196 96v704a96 96 0 01-96 96H288a96 96 0 01-96-96V160a96 96 0 0196-96zm32 224h64v96h-64v-96zm0 288h64v96h-64v-96z" }, null, -1); const _hoisted_3$1b = [ _hoisted_2$1c ]; function _sfc_render$1e(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1d, _hoisted_3$1b); } var refrigerator = /* @__PURE__ */ _export_sfc$1(_sfc_main$1e, [["render", _sfc_render$1e]]); const _sfc_main$1d = defineComponent({ name: "RemoveFilled" }); const _hoisted_1$1c = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zM288 512a38.4 38.4 0 0038.4 38.4h371.2a38.4 38.4 0 000-76.8H326.4A38.4 38.4 0 00288 512z" }, null, -1); const _hoisted_3$1a = [ _hoisted_2$1b ]; function _sfc_render$1d(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1c, _hoisted_3$1a); } var removeFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$1d, [["render", _sfc_render$1d]]); const _sfc_main$1c = defineComponent({ name: "Remove" }); const _hoisted_1$1b = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$1a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 480h320a32 32 0 110 64H352a32 32 0 010-64z" }, null, -1); const _hoisted_3$19 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_4$k = [ _hoisted_2$1a, _hoisted_3$19 ]; function _sfc_render$1c(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1b, _hoisted_4$k); } var remove$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$1c, [["render", _sfc_render$1c]]); const _sfc_main$1b = defineComponent({ name: "Right" }); const _hoisted_1$1a = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$19 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M754.752 480H160a32 32 0 100 64h594.752L521.344 777.344a32 32 0 0045.312 45.312l288-288a32 32 0 000-45.312l-288-288a32 32 0 10-45.312 45.312L754.752 480z" }, null, -1); const _hoisted_3$18 = [ _hoisted_2$19 ]; function _sfc_render$1b(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$1a, _hoisted_3$18); } var right = /* @__PURE__ */ _export_sfc$1(_sfc_main$1b, [["render", _sfc_render$1b]]); const _sfc_main$1a = defineComponent({ name: "ScaleToOriginal" }); const _hoisted_1$19 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$18 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M813.176 180.706a60.235 60.235 0 0160.236 60.235v481.883a60.235 60.235 0 01-60.236 60.235H210.824a60.235 60.235 0 01-60.236-60.235V240.94a60.235 60.235 0 0160.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0090.353 240.94v481.883a120.47 120.47 0 00120.47 120.47h602.353a120.47 120.47 0 00120.471-120.47V240.94a120.47 120.47 0 00-120.47-120.47zm-120.47 180.705a30.118 30.118 0 00-30.118 30.118v301.177a30.118 30.118 0 0060.236 0V331.294a30.118 30.118 0 00-30.118-30.118zm-361.412 0a30.118 30.118 0 00-30.118 30.118v301.177a30.118 30.118 0 1060.236 0V331.294a30.118 30.118 0 00-30.118-30.118zM512 361.412a30.118 30.118 0 00-30.118 30.117v30.118a30.118 30.118 0 0060.236 0V391.53A30.118 30.118 0 00512 361.412zM512 512a30.118 30.118 0 00-30.118 30.118v30.117a30.118 30.118 0 0060.236 0v-30.117A30.118 30.118 0 00512 512z" }, null, -1); const _hoisted_3$17 = [ _hoisted_2$18 ]; function _sfc_render$1a(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$19, _hoisted_3$17); } var scaleToOriginal = /* @__PURE__ */ _export_sfc$1(_sfc_main$1a, [["render", _sfc_render$1a]]); const _sfc_main$19 = defineComponent({ name: "School" }); const _hoisted_1$18 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$17 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 128v704h576V128H224zm-32-64h640a32 32 0 0132 32v768a32 32 0 01-32 32H192a32 32 0 01-32-32V96a32 32 0 0132-32z" }, null, -1); const _hoisted_3$16 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M64 832h896v64H64zm256-640h128v96H320z" }, null, -1); const _hoisted_4$j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 832h256v-64a128 128 0 10-256 0v64zm128-256a192 192 0 01192 192v128H320V768a192 192 0 01192-192zM320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z" }, null, -1); const _hoisted_5$6 = [ _hoisted_2$17, _hoisted_3$16, _hoisted_4$j ]; function _sfc_render$19(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$18, _hoisted_5$6); } var school = /* @__PURE__ */ _export_sfc$1(_sfc_main$19, [["render", _sfc_render$19]]); const _sfc_main$18 = defineComponent({ name: "Scissor" }); const _hoisted_1$17 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$16 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512.064 578.368l-106.88 152.768a160 160 0 11-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1152.48-36.736l393.024 561.344a160 160 0 11-23.36 78.208l-106.88-152.704zm54.4-189.248l208.384-297.6a32 32 0 0152.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 10110.144-157.248 96 96 0 00-110.08 157.248zm643.84 0a96 96 0 10-110.08-157.248 96 96 0 00110.08 157.248z" }, null, -1); const _hoisted_3$15 = [ _hoisted_2$16 ]; function _sfc_render$18(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$17, _hoisted_3$15); } var scissor = /* @__PURE__ */ _export_sfc$1(_sfc_main$18, [["render", _sfc_render$18]]); const _sfc_main$17 = defineComponent({ name: "Search" }); const _hoisted_1$16 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$15 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M795.904 750.72l124.992 124.928a32 32 0 01-45.248 45.248L750.656 795.904a416 416 0 1145.248-45.248zM480 832a352 352 0 100-704 352 352 0 000 704z" }, null, -1); const _hoisted_3$14 = [ _hoisted_2$15 ]; function _sfc_render$17(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$16, _hoisted_3$14); } var search = /* @__PURE__ */ _export_sfc$1(_sfc_main$17, [["render", _sfc_render$17]]); const _sfc_main$16 = defineComponent({ name: "Select" }); const _hoisted_1$15 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$14 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M77.248 415.04a64 64 0 0190.496 0l226.304 226.304L846.528 188.8a64 64 0 1190.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 010-90.496z" }, null, -1); const _hoisted_3$13 = [ _hoisted_2$14 ]; function _sfc_render$16(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$15, _hoisted_3$13); } var select = /* @__PURE__ */ _export_sfc$1(_sfc_main$16, [["render", _sfc_render$16]]); const _sfc_main$15 = defineComponent({ name: "Sell" }); const _hoisted_1$14 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$13 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 288h131.072a32 32 0 0131.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 11-64 0v-96H384v96a32 32 0 01-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 01-31.808-35.2l57.6-576a32 32 0 0131.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 11-64 0V698.496l-73.344 73.344a32 32 0 11-45.248-45.248l128-128a32 32 0 0145.248 0l128 128a32 32 0 11-45.248 45.248z" }, null, -1); const _hoisted_3$12 = [ _hoisted_2$13 ]; function _sfc_render$15(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$14, _hoisted_3$12); } var sell = /* @__PURE__ */ _export_sfc$1(_sfc_main$15, [["render", _sfc_render$15]]); const _sfc_main$14 = defineComponent({ name: "SemiSelect" }); const _hoisted_1$13 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$12 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64z" }, null, -1); const _hoisted_3$11 = [ _hoisted_2$12 ]; function _sfc_render$14(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$13, _hoisted_3$11); } var semiSelect = /* @__PURE__ */ _export_sfc$1(_sfc_main$14, [["render", _sfc_render$14]]); const _sfc_main$13 = defineComponent({ name: "Service" }); const _hoisted_1$12 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$11 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M864 409.6a192 192 0 01-37.888 349.44A256.064 256.064 0 01576 960h-96a32 32 0 110-64h96a192.064 192.064 0 00181.12-128H736a32 32 0 01-32-32V416a32 32 0 0132-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 00-573.056 0A193.235 193.235 0 01256 384h32a32 32 0 0132 32v320a32 32 0 01-32 32h-32a192 192 0 01-96-358.4 352 352 0 01704 0zM256 448a128 128 0 100 256V448zm640 128a128 128 0 00-128-128v256a128 128 0 00128-128z" }, null, -1); const _hoisted_3$10 = [ _hoisted_2$11 ]; function _sfc_render$13(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$12, _hoisted_3$10); } var service = /* @__PURE__ */ _export_sfc$1(_sfc_main$13, [["render", _sfc_render$13]]); const _sfc_main$12 = defineComponent({ name: "SetUp" }); const _hoisted_1$11 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$10 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 160a64 64 0 00-64 64v576a64 64 0 0064 64h576a64 64 0 0064-64V224a64 64 0 00-64-64H224zm0-64h576a128 128 0 01128 128v576a128 128 0 01-128 128H224A128 128 0 0196 800V224A128 128 0 01224 96z" }, null, -1); const _hoisted_3$$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 416a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_4$i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32zM640 736a64 64 0 100-128 64 64 0 000 128zm0 64a128 128 0 110-256 128 128 0 010 256z" }, null, -1); const _hoisted_5$5 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_6$1 = [ _hoisted_2$10, _hoisted_3$$, _hoisted_4$i, _hoisted_5$5 ]; function _sfc_render$12(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$11, _hoisted_6$1); } var setUp = /* @__PURE__ */ _export_sfc$1(_sfc_main$12, [["render", _sfc_render$12]]); const _sfc_main$11 = defineComponent({ name: "Setting" }); const _hoisted_1$10 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$$ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M600.704 64a32 32 0 0130.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0134.432 15.36L944.32 364.8a32 32 0 01-4.032 37.504l-77.12 85.12a357.12 357.12 0 010 49.024l77.12 85.248a32 32 0 014.032 37.504l-88.704 153.6a32 32 0 01-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 01600.704 960H423.296a32 32 0 01-30.464-22.208L357.696 828.48a351.616 351.616 0 01-42.56-24.64l-112.32 24.256a32 32 0 01-34.432-15.36L79.68 659.2a32 32 0 014.032-37.504l77.12-85.248a357.12 357.12 0 010-48.896l-77.12-85.248A32 32 0 0179.68 364.8l88.704-153.6a32 32 0 0134.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 01423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 00-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 000 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0034.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0034.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 000-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 00-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 110 384 192 192 0 010-384zm0 64a128 128 0 100 256 128 128 0 000-256z" }, null, -1); const _hoisted_3$_ = [ _hoisted_2$$ ]; function _sfc_render$11(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$10, _hoisted_3$_); } var setting = /* @__PURE__ */ _export_sfc$1(_sfc_main$11, [["render", _sfc_render$11]]); const _sfc_main$10 = defineComponent({ name: "Share" }); const _hoisted_1$$ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$_ = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M679.872 348.8l-301.76 188.608a127.808 127.808 0 015.12 52.16l279.936 104.96a128 128 0 11-22.464 59.904l-279.872-104.96a128 128 0 11-16.64-166.272l301.696-188.608a128 128 0 1133.92 54.272z" }, null, -1); const _hoisted_3$Z = [ _hoisted_2$_ ]; function _sfc_render$10(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$$, _hoisted_3$Z); } var share = /* @__PURE__ */ _export_sfc$1(_sfc_main$10, [["render", _sfc_render$10]]); const _sfc_main$$ = defineComponent({ name: "Ship" }); const _hoisted_1$_ = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$Z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 386.88V448h405.568a32 32 0 0130.72 40.768l-76.48 267.968A192 192 0 01687.168 896H336.832a192 192 0 01-184.64-139.264L75.648 488.768A32 32 0 01106.368 448H448V117.888a32 32 0 0147.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 01-2.048 57.216L512 386.88zm0-70.272l144.768-65.792L512 171.84v144.768zM512 512H148.864l18.24 64H856.96l18.24-64H512zM185.408 640l28.352 99.2A128 128 0 00336.832 832h350.336a128 128 0 00123.072-92.8l28.352-99.2H185.408z" }, null, -1); const _hoisted_3$Y = [ _hoisted_2$Z ]; function _sfc_render$$(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$_, _hoisted_3$Y); } var ship = /* @__PURE__ */ _export_sfc$1(_sfc_main$$, [["render", _sfc_render$$]]); const _sfc_main$_ = defineComponent({ name: "Shop" }); const _hoisted_1$Z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$Y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 704h64v192H256V704h64v64h384v-64zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 11-192 0 96 96 0 11-192 0 96 96 0 11-192 0 96 96 0 11-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640l60.544 423.808z" }, null, -1); const _hoisted_3$X = [ _hoisted_2$Y ]; function _sfc_render$_(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$Z, _hoisted_3$X); } var shop = /* @__PURE__ */ _export_sfc$1(_sfc_main$_, [["render", _sfc_render$_]]); const _sfc_main$Z = defineComponent({ name: "ShoppingBag" }); const _hoisted_1$Y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$X = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 320v96a32 32 0 01-32 32h-32V320H384v128h-32a32 32 0 01-32-32v-96H192v576h640V320H704zm-384-64a192 192 0 11384 0h160a32 32 0 0132 32v640a32 32 0 01-32 32H160a32 32 0 01-32-32V288a32 32 0 0132-32h160zm64 0h256a128 128 0 10-256 0z" }, null, -1); const _hoisted_3$W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 704h640v64H192z" }, null, -1); const _hoisted_4$h = [ _hoisted_2$X, _hoisted_3$W ]; function _sfc_render$Z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$Y, _hoisted_4$h); } var shoppingBag = /* @__PURE__ */ _export_sfc$1(_sfc_main$Z, [["render", _sfc_render$Z]]); const _sfc_main$Y = defineComponent({ name: "ShoppingCartFull" }); const _hoisted_1$X = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$W = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M432 928a48 48 0 110-96 48 48 0 010 96zm320 0a48 48 0 110-96 48 48 0 010 96zM96 128a32 32 0 010-64h160a32 32 0 0131.36 25.728L320.64 256H928a32 32 0 0131.296 38.72l-96 448A32 32 0 01832 768H384a32 32 0 01-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z" }, null, -1); const _hoisted_3$V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M699.648 256L608 145.984 516.352 256h183.296zm-140.8-151.04a64 64 0 0198.304 0L836.352 320H379.648l179.2-215.04z" }, null, -1); const _hoisted_4$g = [ _hoisted_2$W, _hoisted_3$V ]; function _sfc_render$Y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$X, _hoisted_4$g); } var shoppingCartFull = /* @__PURE__ */ _export_sfc$1(_sfc_main$Y, [["render", _sfc_render$Y]]); const _sfc_main$X = defineComponent({ name: "ShoppingCart" }); const _hoisted_1$W = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$V = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M432 928a48 48 0 110-96 48 48 0 010 96zm320 0a48 48 0 110-96 48 48 0 010 96zM96 128a32 32 0 010-64h160a32 32 0 0131.36 25.728L320.64 256H928a32 32 0 0131.296 38.72l-96 448A32 32 0 01832 768H384a32 32 0 01-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z" }, null, -1); const _hoisted_3$U = [ _hoisted_2$V ]; function _sfc_render$X(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$W, _hoisted_3$U); } var shoppingCart = /* @__PURE__ */ _export_sfc$1(_sfc_main$X, [["render", _sfc_render$X]]); const _sfc_main$W = defineComponent({ name: "Smoking" }); const _hoisted_1$V = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$U = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 576v128h640V576H256zm-32-64h704a32 32 0 0132 32v192a32 32 0 01-32 32H224a32 32 0 01-32-32V544a32 32 0 0132-32z" }, null, -1); const _hoisted_3$T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z" }, null, -1); const _hoisted_4$f = [ _hoisted_2$U, _hoisted_3$T ]; function _sfc_render$W(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$V, _hoisted_4$f); } var smoking = /* @__PURE__ */ _export_sfc$1(_sfc_main$W, [["render", _sfc_render$W]]); const _sfc_main$V = defineComponent({ name: "Soccer" }); const _hoisted_1$U = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$T = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M418.496 871.04L152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24zm72.32-18.176a573.056 573.056 0 00224.832-137.216 573.12 573.12 0 00137.216-224.832L533.888 171.84a578.56 578.56 0 00-227.52 138.496A567.68 567.68 0 00170.432 532.48l320.384 320.384zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536L871.04 418.496zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944-199.936 199.936-497.92 226.112-610.944 113.152zm452.544-497.792l22.656-22.656a32 32 0 0145.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 11647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 11-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 11-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 11-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 11376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1145.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0145.248-45.248l45.248 45.248z" }, null, -1); const _hoisted_3$S = [ _hoisted_2$T ]; function _sfc_render$V(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$U, _hoisted_3$S); } var soccer = /* @__PURE__ */ _export_sfc$1(_sfc_main$V, [["render", _sfc_render$V]]); const _sfc_main$U = defineComponent({ name: "SoldOut" }); const _hoisted_1$T = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$S = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 288h131.072a32 32 0 0131.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 11-64 0v-96H384v96a32 32 0 01-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 01-31.808-35.2l57.6-576a32 32 0 0131.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1145.248 45.184l-128 128a32 32 0 01-45.248 0l-128-128a32 32 0 1145.248-45.248L704 837.504V608a32 32 0 1164 0v229.504l73.408-73.408z" }, null, -1); const _hoisted_3$R = [ _hoisted_2$S ]; function _sfc_render$U(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$T, _hoisted_3$R); } var soldOut = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["render", _sfc_render$U]]); const _sfc_main$T = defineComponent({ name: "SortDown" }); const _hoisted_1$S = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$R = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M576 96v709.568L333.312 562.816A32 32 0 10288 608l297.408 297.344A32 32 0 00640 882.688V96a32 32 0 00-64 0z" }, null, -1); const _hoisted_3$Q = [ _hoisted_2$R ]; function _sfc_render$T(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$S, _hoisted_3$Q); } var sortDown = /* @__PURE__ */ _export_sfc$1(_sfc_main$T, [["render", _sfc_render$T]]); const _sfc_main$S = defineComponent({ name: "SortUp" }); const _hoisted_1$R = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$Q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 141.248V928a32 32 0 1064 0V218.56l242.688 242.688A32 32 0 10736 416L438.592 118.656A32 32 0 00384 141.248z" }, null, -1); const _hoisted_3$P = [ _hoisted_2$Q ]; function _sfc_render$S(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$R, _hoisted_3$P); } var sortUp = /* @__PURE__ */ _export_sfc$1(_sfc_main$S, [["render", _sfc_render$S]]); const _sfc_main$R = defineComponent({ name: "Sort" }); const _hoisted_1$Q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$P = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 96a32 32 0 0164 0v786.752a32 32 0 01-54.592 22.656L95.936 608a32 32 0 010-45.312h.128a32 32 0 0145.184 0L384 805.632V96zm192 45.248a32 32 0 0154.592-22.592L928.064 416a32 32 0 010 45.312h-.128a32 32 0 01-45.184 0L640 218.496V928a32 32 0 11-64 0V141.248z" }, null, -1); const _hoisted_3$O = [ _hoisted_2$P ]; function _sfc_render$R(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$Q, _hoisted_3$O); } var sort$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$R, [["render", _sfc_render$R]]); const _sfc_main$Q = defineComponent({ name: "Stamp" }); const _hoisted_1$P = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$O = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M624 475.968V640h144a128 128 0 01128 128H128a128 128 0 01128-128h144V475.968a192 192 0 11224 0zM128 896v-64h768v64H128z" }, null, -1); const _hoisted_3$N = [ _hoisted_2$O ]; function _sfc_render$Q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$P, _hoisted_3$N); } var stamp = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["render", _sfc_render$Q]]); const _sfc_main$P = defineComponent({ name: "StarFilled" }); const _hoisted_1$O = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$N = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M283.84 867.84L512 747.776l228.16 119.936a6.4 6.4 0 009.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 00-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 00-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 00-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 009.28 6.72z" }, null, -1); const _hoisted_3$M = [ _hoisted_2$N ]; function _sfc_render$P(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$O, _hoisted_3$M); } var starFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$P, [["render", _sfc_render$P]]); const _sfc_main$O = defineComponent({ name: "Star" }); const _hoisted_1$N = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$M = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 747.84l228.16 119.936a6.4 6.4 0 009.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 00-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 00-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 00-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 009.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 01-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 01128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 01126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0139.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 01-102.144 74.24L512 820.096l-198.4 104.32z" }, null, -1); const _hoisted_3$L = [ _hoisted_2$M ]; function _sfc_render$O(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$N, _hoisted_3$L); } var star = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["render", _sfc_render$O]]); const _sfc_main$N = defineComponent({ name: "Stopwatch" }); const _hoisted_1$M = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$L = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a384 384 0 100-768 384 384 0 000 768zm0 64a448 448 0 110-896 448 448 0 010 896z" }, null, -1); const _hoisted_3$K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z" }, null, -1); const _hoisted_4$e = [ _hoisted_2$L, _hoisted_3$K ]; function _sfc_render$N(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$M, _hoisted_4$e); } var stopwatch = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["render", _sfc_render$N]]); const _sfc_main$M = defineComponent({ name: "SuccessFilled" }); const _hoisted_1$L = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$K = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm-55.808 536.384l-99.52-99.584a38.4 38.4 0 10-54.336 54.336l126.72 126.72a38.272 38.272 0 0054.336 0l262.4-262.464a38.4 38.4 0 10-54.272-54.336L456.192 600.384z" }, null, -1); const _hoisted_3$J = [ _hoisted_2$K ]; function _sfc_render$M(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$L, _hoisted_3$J); } var successFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["render", _sfc_render$M]]); const _sfc_main$L = defineComponent({ name: "Sugar" }); const _hoisted_1$K = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$J = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M801.728 349.184l4.48 4.48a128 128 0 010 180.992L534.656 806.144a128 128 0 01-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 01-108.288 34.176L78.464 802.56a64 64 0 0134.176-108.288l109.76-19.328-4.544-4.544a128 128 0 010-181.056l271.488-271.488a128 128 0 01181.056 0l4.48 4.48 19.392-109.504a64 64 0 01108.352-34.048l142.592 143.04a64 64 0 01-34.24 108.16l-109.248 19.2zm-548.8 198.72h447.168v2.24l60.8-60.8a63.808 63.808 0 0018.752-44.416h-426.88l-89.664 89.728a64.064 64.064 0 00-10.24 13.248zm0 64c2.752 4.736 6.144 9.152 10.176 13.248l135.744 135.744a64 64 0 0090.496 0L638.4 611.904H252.928zm490.048-230.976L625.152 263.104a64 64 0 00-90.496 0L416.768 380.928h326.208zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 00-29.696-29.632l-137.6 24.256zm633.6-633.344l-24.32 137.472a25.6 25.6 0 0029.632 29.632l137.28-24.064-142.656-143.04z" }, null, -1); const _hoisted_3$I = [ _hoisted_2$J ]; function _sfc_render$L(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$K, _hoisted_3$I); } var sugar = /* @__PURE__ */ _export_sfc$1(_sfc_main$L, [["render", _sfc_render$L]]); const _sfc_main$K = defineComponent({ name: "Suitcase" }); const _hoisted_1$J = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$I = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 384h768v-64a64 64 0 00-64-64H192a64 64 0 00-64 64v64zm0 64v320a64 64 0 0064 64h640a64 64 0 0064-64V448H128zm64-256h640a128 128 0 01128 128v448a128 128 0 01-128 128H192A128 128 0 0164 768V320a128 128 0 01128-128z" }, null, -1); const _hoisted_3$H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M384 128v64h256v-64H384zm0-64h256a64 64 0 0164 64v64a64 64 0 01-64 64H384a64 64 0 01-64-64v-64a64 64 0 0164-64z" }, null, -1); const _hoisted_4$d = [ _hoisted_2$I, _hoisted_3$H ]; function _sfc_render$K(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$J, _hoisted_4$d); } var suitcase = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["render", _sfc_render$K]]); const _sfc_main$J = defineComponent({ name: "Sunny" }); const _hoisted_1$I = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$H = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 704a192 192 0 100-384 192 192 0 000 384zm0 64a256 256 0 110-512 256 256 0 010 512zM512 64a32 32 0 0132 32v64a32 32 0 01-64 0V96a32 32 0 0132-32zm0 768a32 32 0 0132 32v64a32 32 0 11-64 0v-64a32 32 0 0132-32zM195.2 195.2a32 32 0 0145.248 0l45.248 45.248a32 32 0 11-45.248 45.248L195.2 240.448a32 32 0 010-45.248zm543.104 543.104a32 32 0 0145.248 0l45.248 45.248a32 32 0 01-45.248 45.248l-45.248-45.248a32 32 0 010-45.248zM64 512a32 32 0 0132-32h64a32 32 0 010 64H96a32 32 0 01-32-32zm768 0a32 32 0 0132-32h64a32 32 0 110 64h-64a32 32 0 01-32-32zM195.2 828.8a32 32 0 010-45.248l45.248-45.248a32 32 0 0145.248 45.248L240.448 828.8a32 32 0 01-45.248 0zm543.104-543.104a32 32 0 010-45.248l45.248-45.248a32 32 0 0145.248 45.248l-45.248 45.248a32 32 0 01-45.248 0z" }, null, -1); const _hoisted_3$G = [ _hoisted_2$H ]; function _sfc_render$J(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$I, _hoisted_3$G); } var sunny = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["render", _sfc_render$J]]); const _sfc_main$I = defineComponent({ name: "Sunrise" }); const _hoisted_1$H = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$G = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M32 768h960a32 32 0 110 64H32a32 32 0 110-64zM161.408 672a352 352 0 01701.184 0h-64.32a288 288 0 00-572.544 0h-64.32zM512 128a32 32 0 0132 32v96a32 32 0 01-64 0v-96a32 32 0 0132-32zm407.296 168.704a32 32 0 010 45.248l-67.84 67.84a32 32 0 11-45.248-45.248l67.84-67.84a32 32 0 0145.248 0zm-814.592 0a32 32 0 0145.248 0l67.84 67.84a32 32 0 11-45.248 45.248l-67.84-67.84a32 32 0 010-45.248z" }, null, -1); const _hoisted_3$F = [ _hoisted_2$G ]; function _sfc_render$I(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$H, _hoisted_3$F); } var sunrise = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["render", _sfc_render$I]]); const _sfc_main$H = defineComponent({ name: "Sunset" }); const _hoisted_1$G = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$F = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M82.56 640a448 448 0 11858.88 0h-67.2a384 384 0 10-724.288 0H82.56zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zM288 832h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z" }, null, -1); const _hoisted_3$E = [ _hoisted_2$F ]; function _sfc_render$H(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$G, _hoisted_3$E); } var sunset = /* @__PURE__ */ _export_sfc$1(_sfc_main$H, [["render", _sfc_render$H]]); const _sfc_main$G = defineComponent({ name: "SwitchButton" }); const _hoisted_1$F = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$E = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M352 159.872V230.4a352 352 0 10320 0v-70.528A416.128 416.128 0 01512 960a416 416 0 01-160-800.128z" }, null, -1); const _hoisted_3$D = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32z" }, null, -1); const _hoisted_4$c = [ _hoisted_2$E, _hoisted_3$D ]; function _sfc_render$G(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$F, _hoisted_4$c); } var switchButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["render", _sfc_render$G]]); const _sfc_main$F = defineComponent({ name: "Switch" }); const _hoisted_1$E = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$D = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M118.656 438.656a32 32 0 010-45.248L416 96l4.48-3.776A32 32 0 01461.248 96l3.712 4.48a32.064 32.064 0 01-3.712 40.832L218.56 384H928a32 32 0 110 64H141.248a32 32 0 01-22.592-9.344zM64 608a32 32 0 0132-32h786.752a32 32 0 0122.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 01-40.832-49.024L805.632 640H96a32 32 0 01-32-32z" }, null, -1); const _hoisted_3$C = [ _hoisted_2$D ]; function _sfc_render$F(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$E, _hoisted_3$C); } var _switch = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["render", _sfc_render$F]]); const _sfc_main$E = defineComponent({ name: "TakeawayBox" }); const _hoisted_1$D = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$C = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 01-32 32H160a32 32 0 01-32-32V384H64a32 32 0 01-32-32V96a32 32 0 0132-32h896a32 32 0 0132 32v256a32 32 0 01-32 32h-64zM416 512h192a32 32 0 010 64H416a32 32 0 010-64z" }, null, -1); const _hoisted_3$B = [ _hoisted_2$C ]; function _sfc_render$E(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$D, _hoisted_3$B); } var takeawayBox = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["render", _sfc_render$E]]); const _sfc_main$D = defineComponent({ name: "Ticket" }); const _hoisted_1$C = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$B = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 832H64V640a128 128 0 100-256V192h576v160h64V192h256v192a128 128 0 100 256v192H704V672h-64v160zm0-416v192h64V416h-64z" }, null, -1); const _hoisted_3$A = [ _hoisted_2$B ]; function _sfc_render$D(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$C, _hoisted_3$A); } var ticket = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["render", _sfc_render$D]]); const _sfc_main$C = defineComponent({ name: "Tickets" }); const _hoisted_1$B = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$A = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M192 128v768h640V128H192zm-32-64h704a32 32 0 0132 32v832a32 32 0 01-32 32H160a32 32 0 01-32-32V96a32 32 0 0132-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z" }, null, -1); const _hoisted_3$z = [ _hoisted_2$A ]; function _sfc_render$C(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$B, _hoisted_3$z); } var tickets = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["render", _sfc_render$C]]); const _sfc_main$B = defineComponent({ name: "Timer" }); const _hoisted_1$A = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$z = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 896a320 320 0 100-640 320 320 0 000 640zm0 64a384 384 0 110-768 384 384 0 010 768z" }, null, -1); const _hoisted_3$y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 320a32 32 0 0132 32l-.512 224a32 32 0 11-64 0L480 352a32 32 0 0132-32z" }, null, -1); const _hoisted_4$b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M448 576a64 64 0 10128 0 64 64 0 10-128 0zM544 128v128h-64V128h-96a32 32 0 010-64h256a32 32 0 110 64h-96z" }, null, -1); const _hoisted_5$4 = [ _hoisted_2$z, _hoisted_3$y, _hoisted_4$b ]; function _sfc_render$B(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$A, _hoisted_5$4); } var timer = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["render", _sfc_render$B]]); const _sfc_main$A = defineComponent({ name: "ToiletPaper" }); const _hoisted_1$z = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$y = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M595.2 128H320a192 192 0 00-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224zM736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 01320 64h416zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224z" }, null, -1); const _hoisted_3$x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96z" }, null, -1); const _hoisted_4$a = [ _hoisted_2$y, _hoisted_3$x ]; function _sfc_render$A(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$z, _hoisted_4$a); } var toiletPaper = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["render", _sfc_render$A]]); const _sfc_main$z = defineComponent({ name: "Tools" }); const _hoisted_1$y = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$x = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M764.416 254.72a351.68 351.68 0 0186.336 149.184H960v192.064H850.752a351.68 351.68 0 01-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 01-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.68 351.68 0 01-86.336-149.312H64v-192h109.248a351.68 351.68 0 0186.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 01172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 10-384 0 192 192 0 00384 0z" }, null, -1); const _hoisted_3$w = [ _hoisted_2$x ]; function _sfc_render$z(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$y, _hoisted_3$w); } var tools = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["render", _sfc_render$z]]); const _sfc_main$y = defineComponent({ name: "TopLeft" }); const _hoisted_1$x = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$w = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M256 256h416a32 32 0 100-64H224a32 32 0 00-32 32v448a32 32 0 0064 0V256z" }, null, -1); const _hoisted_3$v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M246.656 201.344a32 32 0 00-45.312 45.312l544 544a32 32 0 0045.312-45.312l-544-544z" }, null, -1); const _hoisted_4$9 = [ _hoisted_2$w, _hoisted_3$v ]; function _sfc_render$y(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$x, _hoisted_4$9); } var topLeft = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["render", _sfc_render$y]]); const _sfc_main$x = defineComponent({ name: "TopRight" }); const _hoisted_1$w = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$v = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 256H353.6a32 32 0 110-64H800a32 32 0 0132 32v448a32 32 0 01-64 0V256z" }, null, -1); const _hoisted_3$u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M777.344 201.344a32 32 0 0145.312 45.312l-544 544a32 32 0 01-45.312-45.312l544-544z" }, null, -1); const _hoisted_4$8 = [ _hoisted_2$v, _hoisted_3$u ]; function _sfc_render$x(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$w, _hoisted_4$8); } var topRight = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["render", _sfc_render$x]]); const _sfc_main$w = defineComponent({ name: "Top" }); const _hoisted_1$v = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$u = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M572.235 205.282v600.365a30.118 30.118 0 11-60.235 0V205.282L292.382 438.633a28.913 28.913 0 01-42.646 0 33.43 33.43 0 010-45.236l271.058-288.045a28.913 28.913 0 0142.647 0L834.5 393.397a33.43 33.43 0 010 45.176 28.913 28.913 0 01-42.647 0l-219.618-233.23z" }, null, -1); const _hoisted_3$t = [ _hoisted_2$u ]; function _sfc_render$w(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$v, _hoisted_3$t); } var top = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["render", _sfc_render$w]]); const _sfc_main$v = defineComponent({ name: "TrendCharts" }); const _hoisted_1$u = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$t = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 896V128h768v768H128zm291.712-327.296l128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624 139.84-156.608zM816 352a48 48 0 10-96 0 48 48 0 0096 0z" }, null, -1); const _hoisted_3$s = [ _hoisted_2$t ]; function _sfc_render$v(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$u, _hoisted_3$s); } var trendCharts = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["render", _sfc_render$v]]); const _sfc_main$u = defineComponent({ name: "Trophy" }); const _hoisted_1$t = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$s = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 896V702.08A256.256 256.256 0 01264.064 512h-32.64a96 96 0 01-91.968-68.416L93.632 290.88a76.8 76.8 0 0173.6-98.88H256V96a32 32 0 0132-32h448a32 32 0 0132 32v96h88.768a76.8 76.8 0 0173.6 98.88L884.48 443.52A96 96 0 01792.576 512h-32.64A256.256 256.256 0 01544 702.08V896h128a32 32 0 110 64H352a32 32 0 110-64h128zm224-448V128H320v320a192 192 0 10384 0zm64 0h24.576a32 32 0 0030.656-22.784l45.824-152.768A12.8 12.8 0 00856.768 256H768v192zm-512 0V256h-88.768a12.8 12.8 0 00-12.288 16.448l45.824 152.768A32 32 0 00231.424 448H256z" }, null, -1); const _hoisted_3$r = [ _hoisted_2$s ]; function _sfc_render$u(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$t, _hoisted_3$r); } var trophy = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["render", _sfc_render$u]]); const _sfc_main$t = defineComponent({ name: "TurnOff" }); const _hoisted_1$s = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$r = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M329.956 257.138a254.862 254.862 0 000 509.724h364.088a254.862 254.862 0 000-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 110 655.36H329.956a327.68 327.68 0 110-655.36z" }, null, -1); const _hoisted_3$q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M329.956 621.227a109.227 109.227 0 100-218.454 109.227 109.227 0 000 218.454zm0 72.817a182.044 182.044 0 110-364.088 182.044 182.044 0 010 364.088z" }, null, -1); const _hoisted_4$7 = [ _hoisted_2$r, _hoisted_3$q ]; function _sfc_render$t(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$s, _hoisted_4$7); } var turnOff = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["render", _sfc_render$t]]); const _sfc_main$s = defineComponent({ name: "Umbrella" }); const _hoisted_1$r = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$q = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M320 768a32 32 0 1164 0 64 64 0 00128 0V512H64a448 448 0 11896 0H576v256a128 128 0 11-256 0zm570.688-320a384.128 384.128 0 00-757.376 0h757.376z" }, null, -1); const _hoisted_3$p = [ _hoisted_2$q ]; function _sfc_render$s(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$r, _hoisted_3$p); } var umbrella = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["render", _sfc_render$s]]); const _sfc_main$r = defineComponent({ name: "Unlock" }); const _hoisted_1$q = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$p = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M224 448a32 32 0 00-32 32v384a32 32 0 0032 32h576a32 32 0 0032-32V480a32 32 0 00-32-32H224zm0-64h576a96 96 0 0196 96v384a96 96 0 01-96 96H224a96 96 0 01-96-96V480a96 96 0 0196-96z" }, null, -1); const _hoisted_3$o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 544a32 32 0 0132 32v192a32 32 0 11-64 0V576a32 32 0 0132-32zM690.304 248.704A192.064 192.064 0 00320 320v64h352l96 38.4V448H256V320a256 256 0 01493.76-95.104l-59.456 23.808z" }, null, -1); const _hoisted_4$6 = [ _hoisted_2$p, _hoisted_3$o ]; function _sfc_render$r(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$q, _hoisted_4$6); } var unlock = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["render", _sfc_render$r]]); const _sfc_main$q = defineComponent({ name: "UploadFilled" }); const _hoisted_1$p = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$o = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0164 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 01512 192a239.872 239.872 0 01235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 01-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z" }, null, -1); const _hoisted_3$n = [ _hoisted_2$o ]; function _sfc_render$q(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$p, _hoisted_3$n); } var uploadFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["render", _sfc_render$q]]); const _sfc_main$p = defineComponent({ name: "Upload" }); const _hoisted_1$o = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$n = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 832h704a32 32 0 110 64H160a32 32 0 110-64zm384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248L544 253.696z" }, null, -1); const _hoisted_3$m = [ _hoisted_2$n ]; function _sfc_render$p(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$o, _hoisted_3$m); } var upload = /* @__PURE__ */ _export_sfc$1(_sfc_main$p, [["render", _sfc_render$p]]); const _sfc_main$o = defineComponent({ name: "UserFilled" }); const _hoisted_1$n = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$m = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M288 320a224 224 0 10448 0 224 224 0 10-448 0zm544 608H160a32 32 0 01-32-32v-96a160 160 0 01160-160h448a160 160 0 01160 160v96a32 32 0 01-32 32z" }, null, -1); const _hoisted_3$l = [ _hoisted_2$m ]; function _sfc_render$o(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$n, _hoisted_3$l); } var userFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["render", _sfc_render$o]]); const _sfc_main$n = defineComponent({ name: "User" }); const _hoisted_1$m = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$l = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 512a192 192 0 100-384 192 192 0 000 384zm0 64a256 256 0 110-512 256 256 0 010 512zm320 320v-96a96 96 0 00-96-96H288a96 96 0 00-96 96v96a32 32 0 11-64 0v-96a160 160 0 01160-160h448a160 160 0 01160 160v96a32 32 0 11-64 0z" }, null, -1); const _hoisted_3$k = [ _hoisted_2$l ]; function _sfc_render$n(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$m, _hoisted_3$k); } var user = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["render", _sfc_render$n]]); const _sfc_main$m = defineComponent({ name: "Van" }); const _hoisted_1$l = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$k = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128.896 736H96a32 32 0 01-32-32V224a32 32 0 0132-32h576a32 32 0 0132 32v96h164.544a32 32 0 0131.616 27.136l54.144 352A32 32 0 01922.688 736h-91.52a144 144 0 11-286.272 0H415.104a144 144 0 11-286.272 0zm23.36-64a143.872 143.872 0 01239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416h24.256zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 01807.744 672zm48.128-192l-14.72-96H704v96h151.872zM688 832a80 80 0 100-160 80 80 0 000 160zm-416 0a80 80 0 100-160 80 80 0 000 160z" }, null, -1); const _hoisted_3$j = [ _hoisted_2$k ]; function _sfc_render$m(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$l, _hoisted_3$j); } var van = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["render", _sfc_render$m]]); const _sfc_main$l = defineComponent({ name: "VideoCameraFilled" }); const _hoisted_1$k = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$j = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M768 576l192-64v320l-192-64v96a32 32 0 01-32 32H96a32 32 0 01-32-32V480a32 32 0 0132-32h640a32 32 0 0132 32v96zM192 768v64h384v-64H192zm192-480a160 160 0 01320 0 160 160 0 01-320 0zm64 0a96 96 0 10192.064-.064A96 96 0 00448 288zm-320 32a128 128 0 11256.064.064A128 128 0 01128 320zm64 0a64 64 0 10128 0 64 64 0 00-128 0z" }, null, -1); const _hoisted_3$i = [ _hoisted_2$j ]; function _sfc_render$l(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$k, _hoisted_3$i); } var videoCameraFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["render", _sfc_render$l]]); const _sfc_main$k = defineComponent({ name: "VideoCamera" }); const _hoisted_1$j = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$i = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 768V256H128v512h576zm64-416l192-96v512l-192-96v128a32 32 0 01-32 32H96a32 32 0 01-32-32V224a32 32 0 0132-32h640a32 32 0 0132 32v128zm0 71.552v176.896l128 64V359.552l-128 64zM192 320h192v64H192v-64z" }, null, -1); const _hoisted_3$h = [ _hoisted_2$i ]; function _sfc_render$k(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$j, _hoisted_3$h); } var videoCamera = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["render", _sfc_render$k]]); const _sfc_main$j = defineComponent({ name: "VideoPause" }); const _hoisted_1$i = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$h = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32zm192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32z" }, null, -1); const _hoisted_3$g = [ _hoisted_2$h ]; function _sfc_render$j(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$i, _hoisted_3$g); } var videoPause = /* @__PURE__ */ _export_sfc$1(_sfc_main$j, [["render", _sfc_render$j]]); const _sfc_main$i = defineComponent({ name: "VideoPlay" }); const _hoisted_1$h = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$g = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.624-342.656l249.472 166.336a48 48 0 010 79.872L474.624 718.272A48 48 0 01400 678.336V345.6a48 48 0 0174.624-39.936z" }, null, -1); const _hoisted_3$f = [ _hoisted_2$g ]; function _sfc_render$i(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$h, _hoisted_3$f); } var videoPlay = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["render", _sfc_render$i]]); const _sfc_main$h = defineComponent({ name: "View" }); const _hoisted_1$g = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$f = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 110 448 224 224 0 010-448zm0 64a160.192 160.192 0 00-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z" }, null, -1); const _hoisted_3$e = [ _hoisted_2$f ]; function _sfc_render$h(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$g, _hoisted_3$e); } var view = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["render", _sfc_render$h]]); const _sfc_main$g = defineComponent({ name: "WalletFilled" }); const _hoisted_1$f = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$e = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M688 512a112 112 0 100 224h208v160H128V352h768v160H688zm32 160h-32a48 48 0 010-96h32a48 48 0 010 96zm-80-544l128 160H384l256-160z" }, null, -1); const _hoisted_3$d = [ _hoisted_2$e ]; function _sfc_render$g(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$f, _hoisted_3$d); } var walletFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["render", _sfc_render$g]]); const _sfc_main$f = defineComponent({ name: "Wallet" }); const _hoisted_1$e = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$d = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M640 288h-64V128H128v704h384v32a32 32 0 0032 32H96a32 32 0 01-32-32V96a32 32 0 0132-32h512a32 32 0 0132 32v192z" }, null, -1); const _hoisted_3$c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M128 320v512h768V320H128zm-32-64h832a32 32 0 0132 32v576a32 32 0 01-32 32H96a32 32 0 01-32-32V288a32 32 0 0132-32z" }, null, -1); const _hoisted_4$5 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M704 640a64 64 0 110-128 64 64 0 010 128z" }, null, -1); const _hoisted_5$3 = [ _hoisted_2$d, _hoisted_3$c, _hoisted_4$5 ]; function _sfc_render$f(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$e, _hoisted_5$3); } var wallet = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["render", _sfc_render$f]]); const _sfc_main$e = defineComponent({ name: "WarningFilled" }); const _hoisted_1$d = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$c = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm0 192a58.432 58.432 0 00-58.24 63.744l23.36 256.384a35.072 35.072 0 0069.76 0l23.296-256.384A58.432 58.432 0 00512 256zm0 512a51.2 51.2 0 100-102.4 51.2 51.2 0 000 102.4z" }, null, -1); const _hoisted_3$b = [ _hoisted_2$c ]; function _sfc_render$e(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$d, _hoisted_3$b); } var warningFilled = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["render", _sfc_render$e]]); const _sfc_main$d = defineComponent({ name: "Warning" }); const _hoisted_1$c = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$b = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z" }, null, -1); const _hoisted_3$a = [ _hoisted_2$b ]; function _sfc_render$d(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$c, _hoisted_3$a); } var warning = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["render", _sfc_render$d]]); const _sfc_main$c = defineComponent({ name: "Watch" }); const _hoisted_1$b = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$a = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M512 768a256 256 0 100-512 256 256 0 000 512zm0 64a320 320 0 110-640 320 320 0 010 640z" }, null, -1); const _hoisted_3$9 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 352a32 32 0 0132 32v160a32 32 0 01-64 0V384a32 32 0 0132-32z" }, null, -1); const _hoisted_4$4 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32zM608 256V128H416v128h-64V64h320v192h-64zM416 768v128h192V768h64v192H352V768h64z" }, null, -1); const _hoisted_5$2 = [ _hoisted_2$a, _hoisted_3$9, _hoisted_4$4 ]; function _sfc_render$c(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$b, _hoisted_5$2); } var watch = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["render", _sfc_render$c]]); const _sfc_main$b = defineComponent({ name: "Watermelon" }); const _hoisted_1$a = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$9 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M683.072 600.32l-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 00824 741.248L683.072 600.32zm231.552 141.056a448 448 0 11-632-632l632 632z" }, null, -1); const _hoisted_3$8 = [ _hoisted_2$9 ]; function _sfc_render$b(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$a, _hoisted_3$8); } var watermelon = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["render", _sfc_render$b]]); const _sfc_main$a = defineComponent({ name: "WindPower" }); const _hoisted_1$9 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$8 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32zM576 418.624l128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 01960 215.68v144.64a96 96 0 01-87.296 95.616L256 512V224h64v217.92l192-17.472zm256-23.232l98.88-8.96A32 32 0 00896 360.32V215.68a32 32 0 00-29.12-31.872l-98.88-8.96v226.368z" }, null, -1); const _hoisted_3$7 = [ _hoisted_2$8 ]; function _sfc_render$a(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$9, _hoisted_3$7); } var windPower = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["render", _sfc_render$a]]); const _sfc_main$9 = defineComponent({ name: "ZoomIn" }); const _hoisted_1$8 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$7 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M795.904 750.72l124.992 124.928a32 32 0 01-45.248 45.248L750.656 795.904a416 416 0 1145.248-45.248zM480 832a352 352 0 100-704 352 352 0 000 704zm-32-384v-96a32 32 0 0164 0v96h96a32 32 0 010 64h-96v96a32 32 0 01-64 0v-96h-96a32 32 0 010-64h96z" }, null, -1); const _hoisted_3$6 = [ _hoisted_2$7 ]; function _sfc_render$9(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$8, _hoisted_3$6); } var zoomIn = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["render", _sfc_render$9]]); const _sfc_main$8 = defineComponent({ name: "ZoomOut" }); const _hoisted_1$7 = { class: "icon", width: "200", height: "200", viewBox: "0 0 1024 1024", xmlns: "http://www.w3.org/2000/svg" }; const _hoisted_2$6 = /* @__PURE__ */ createElementVNode("path", { fill: "currentColor", d: "M795.904 750.72l124.992 124.928a32 32 0 01-45.248 45.248L750.656 795.904a416 416 0 1145.248-45.248zM480 832a352 352 0 100-704 352 352 0 000 704zM352 448h256a32 32 0 010 64H352a32 32 0 010-64z" }, null, -1); const _hoisted_3$5 = [ _hoisted_2$6 ]; function _sfc_render$8(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("svg", _hoisted_1$7, _hoisted_3$5); } var zoomOut = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["render", _sfc_render$8]]); var Icons = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", AddLocation: addLocation, Aim: aim, AlarmClock: alarmClock, Apple: apple, ArrowDownBold: arrowDownBold, ArrowDown: arrowDown, ArrowLeftBold: arrowLeftBold, ArrowLeft: arrowLeft, ArrowRightBold: arrowRightBold, ArrowRight: arrowRight, ArrowUpBold: arrowUpBold, ArrowUp: arrowUp, Avatar: avatar, Back: back, Baseball: baseball, Basketball: basketball, BellFilled: bellFilled, Bell: bell, Bicycle: bicycle, BottomLeft: bottomLeft, BottomRight: bottomRight, Bottom: bottom, Bowl: bowl, Box: box$1, Briefcase: briefcase, BrushFilled: brushFilled, Brush: brush$1, Burger: burger, Calendar: calendar, CameraFilled: cameraFilled, Camera: camera, CaretBottom: caretBottom, CaretLeft: caretLeft, CaretRight: caretRight, CaretTop: caretTop, Cellphone: cellphone, ChatDotRound: chatDotRound, ChatDotSquare: chatDotSquare, ChatLineRound: chatLineRound, ChatLineSquare: chatLineSquare, ChatRound: chatRound, ChatSquare: chatSquare, Check: check, Checked: checked, Cherry: cherry, Chicken: chicken, CircleCheckFilled: circleCheckFilled, CircleCheck: circleCheck, CircleCloseFilled: circleCloseFilled, CircleClose: circleClose, CirclePlusFilled: circlePlusFilled, CirclePlus: circlePlus, Clock: clock, CloseBold: closeBold, Close: close, Cloudy: cloudy, CoffeeCup: coffeeCup, Coffee: coffee, Coin: coin, ColdDrink: coldDrink, CollectionTag: collectionTag, Collection: collection, Comment: comment, Compass: compass, Connection: connection, Coordinate: coordinate, CopyDocument: copyDocument, Cpu: cpu, CreditCard: creditCard, Crop: crop, DArrowLeft: dArrowLeft, DArrowRight: dArrowRight, DCaret: dCaret, DataAnalysis: dataAnalysis, DataBoard: dataBoard, DataLine: dataLine, DeleteFilled: deleteFilled, DeleteLocation: deleteLocation, Delete: _delete, Dessert: dessert, Discount: discount, DishDot: dishDot, Dish: dish, DocumentAdd: documentAdd, DocumentChecked: documentChecked, DocumentCopy: documentCopy, DocumentDelete: documentDelete, DocumentRemove: documentRemove, Document: document$1, Download: download, Drizzling: drizzling, Edit: edit, ElemeFilled: elemeFilled, Eleme: eleme, Expand: expand, Failed: failed, Female: female, Files: files, Film: film, Filter: filter$1, Finished: finished, FirstAidKit: firstAidKit, Flag: flag, Fold: fold, FolderAdd: folderAdd, FolderChecked: folderChecked, FolderDelete: folderDelete, FolderOpened: folderOpened, FolderRemove: folderRemove, Folder: folder, Food: food, Football: football, ForkSpoon: forkSpoon, Fries: fries, FullScreen: fullScreen, GobletFull: gobletFull, GobletSquareFull: gobletSquareFull, GobletSquare: gobletSquare, Goblet: goblet, GoodsFilled: goodsFilled, Goods: goods, Grape: grape, Grid: grid, Guide: guide, Headset: headset, HelpFilled: helpFilled, Help: help, Histogram: histogram, HomeFilled: homeFilled, HotWater: hotWater, House: house, IceCreamRound: iceCreamRound, IceCreamSquare: iceCreamSquare, IceCream: iceCream, IceDrink: iceDrink, IceTea: iceTea, InfoFilled: infoFilled, Iphone: iphone, Key: key, KnifeFork: knifeFork, Lightning: lightning, Link: link, List: list, Loading: loading, LocationFilled: locationFilled, LocationInformation: locationInformation, Location: location, Lock: lock, Lollipop: lollipop, MagicStick: magicStick, Magnet: magnet, Male: male, Management: management, MapLocation: mapLocation, Medal: medal, Menu: menu, MessageBox: messageBox, Message: message, Mic: mic, Microphone: microphone, MilkTea: milkTea, Minus: minus, Money: money, Monitor: monitor, MoonNight: moonNight, Moon: moon, MoreFilled: moreFilled, More: more, MostlyCloudy: mostlyCloudy, Mouse: mouse, Mug: mug, MuteNotification: muteNotification, Mute: mute, NoSmoking: noSmoking, Notebook: notebook, Notification: notification, Odometer: odometer, OfficeBuilding: officeBuilding, Open: open, Operation: operation, Opportunity: opportunity, Orange: orange, Paperclip: paperclip, PartlyCloudy: partlyCloudy, Pear: pear, PhoneFilled: phoneFilled, Phone: phone, PictureFilled: pictureFilled, PictureRounded: pictureRounded, Picture: picture, PieChart: pieChart, Place: place, Platform: platform$1, Plus: plus, Pointer: pointer, Position: position$2, Postcard: postcard, Pouring: pouring, Present: present, PriceTag: priceTag, Printer: printer, Promotion: promotion, QuestionFilled: questionFilled, Rank: rank, ReadingLamp: readingLamp, Reading: reading, RefreshLeft: refreshLeft, RefreshRight: refreshRight, Refresh: refresh, Refrigerator: refrigerator, RemoveFilled: removeFilled, Remove: remove$1, Right: right, ScaleToOriginal: scaleToOriginal, School: school, Scissor: scissor, Search: search, Select: select, Sell: sell, SemiSelect: semiSelect, Service: service, SetUp: setUp, Setting: setting, Share: share, Ship: ship, Shop: shop, ShoppingBag: shoppingBag, ShoppingCartFull: shoppingCartFull, ShoppingCart: shoppingCart, Smoking: smoking, Soccer: soccer, SoldOut: soldOut, SortDown: sortDown, SortUp: sortUp, Sort: sort$3, Stamp: stamp, StarFilled: starFilled, Star: star, Stopwatch: stopwatch, SuccessFilled: successFilled, Sugar: sugar, Suitcase: suitcase, Sunny: sunny, Sunrise: sunrise, Sunset: sunset, SwitchButton: switchButton, Switch: _switch, TakeawayBox: takeawayBox, Ticket: ticket, Tickets: tickets, Timer: timer, ToiletPaper: toiletPaper, Tools: tools, TopLeft: topLeft, TopRight: topRight, Top: top, TrendCharts: trendCharts, Trophy: trophy, TurnOff: turnOff, Umbrella: umbrella, Unlock: unlock, UploadFilled: uploadFilled, Upload: upload, UserFilled: userFilled, User: user, Van: van, VideoCameraFilled: videoCameraFilled, VideoCamera: videoCamera, VideoPause: videoPause, VideoPlay: videoPlay, View: view, WalletFilled: walletFilled, Wallet: wallet, WarningFilled: warningFilled, Warning: warning, Watch: watch, Watermelon: watermelon, WindPower: windPower, ZoomIn: zoomIn, ZoomOut: zoomOut }); var LazyCascader_vue_vue_type_style_index_0_lang = ""; var _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key2, val] of props) { target[key2] = val; } return target; }; const _sfc_main$7 = { props: { modelValue: { type: Array, default: () => { return []; } }, separator: { type: String, default: " > " }, placeholder: { type: String, default: "\u8BF7\u9009\u62E9" }, width: { type: String, default: "400px" }, filterable: Boolean, clearable: Boolean, disabled: Boolean, props: { type: Object, default: () => { return {}; } } }, setup(prop, { emit }) { let options = ref([]); let current = ref([]); let labelArray = ref(); let labelObject = ref({ label: [], value: [] }); const initOptions = () => { prop.props.lazyLoad(0, (list2) => { options.value = list2; if (prop.props.multiple) { current.value = [...prop.modelValue]; } else { current.value = prop.modelValue; } }); }; return { options, current, labelArray, labelObject, initOptions }; }, data() { return { currentProps: { multiple: this.props.multiple, checkStrictly: this.props.checkStrictly, value: this.props.value, label: this.props.label, leaf: this.props.leaf, lazy: true, lazyLoad: this.lazyLoad } }; }, computed: { placeholderVisible() { if (this.current) { return this.current.length === 0; } else { return true; } } }, watch: { current() { this.getLabelArray(); }, modelValue(v) { this.current = v; } }, created() { this.initOptions(); }, methods: { async getLabelArray() { if (this.props.multiple) { let array = []; for (let i = 0; i < this.current.length; i++) { let obj = await this.getObject(this.current[i]); array.push(obj); } this.labelArray = array; this.$emit("update:modelValue", this.current); } else { this.labelObject = await this.getObject(this.current || []); this.$emit("update:modelValue", this.current); } }, async getObject(id) { try { let options = this.options; let nameArray = []; for (let i = 0; i < id.length; i++) { let index = options.findIndex((item) => { return item[this.props.value] === id[i]; }); nameArray.push(options[index][this.props.label]); if (i < id.length - 1 && options[index].children === void 0) { let list2 = new Promise((resolve) => { this.props.lazyLoad(id[i], (list22) => { resolve(list22); }); }); options[index].children = await list2; options = options[index].children; } else { options = options[index].children; } } return { value: id, label: nameArray }; } catch (e2) { this.current = []; return { value: [], label: [] }; } }, async lazyLoad(node, resolve) { if (node.root) { resolve(); } else { this.props.lazyLoad(node.value, (list2) => { resolve(list2); }); } }, handleClose(item, i) { let index = this.current.findIndex((obj) => { return obj.join() == item.value.join(); }); if (index > -1) { this.labelArray.splice(index, 1); let arr = this.$refs["panel"].checkedNodes; this.$refs["panel"].handleCheckChange(arr[i], false, true); this.$emit("update:modelValue", this.current); } }, clearBtnClick() { this.$refs.panel.clearCheckedNodes(); this.current = []; this.$emit("update:modelValue", this.current); }, change() { this.$emit("update:modelValue", this.current); } } }; const _hoisted_1$6 = { key: 0, class: "el-input__inner lazy-cascader-input lazy-cascader-input-disabled" }; const _hoisted_2$5 = { key: 0, class: "lazy-cascader-tags" }; const _hoisted_3$4 = { key: 1, class: "lazy-cascader-label" }; const _hoisted_4$3 = { key: 0, class: "lazy-cascader-tags" }; const _hoisted_5$1 = { key: 0 }; const _hoisted_6 = { key: 1, class: "lazy-cascader-placeholder" }; const _hoisted_7 = { key: 1, class: "lazy-cascader-label" }; const _hoisted_8 = /* @__PURE__ */ createElementVNode("i", { class: "el-icon-close" }, null, -1); const _hoisted_9 = [ _hoisted_8 ]; const _hoisted_10 = { class: "lazy-cascader-panel" }; function _sfc_render$7(_ctx2, _cache, $props, $setup, $data, $options) { const _component_el_tag = resolveComponent("el-tag"); const _component_el_tooltip = resolveComponent("el-tooltip"); const _component_el_cascader_panel = resolveComponent("el-cascader-panel"); const _component_el_popover = resolveComponent("el-popover"); return openBlock(), createElementBlock("div", { class: "lazy-cascader", style: normalizeStyle$1({ width: $props.width }) }, [ $props.props.disabled ? (openBlock(), createElementBlock("div", _hoisted_1$6, [ withDirectives(createElementVNode("span", { class: "lazy-cascader-placeholder" }, toDisplayString($props.placeholder), 513), [ [vShow, $options.placeholderVisible] ]), $props.props.multiple ? (openBlock(), createElementBlock("div", _hoisted_2$5, [ (openBlock(true), createElementBlock(Fragment, null, renderList($setup.labelArray, (item, index) => { return openBlock(), createBlock(_component_el_tag, { key: index, class: "lazy-cascader-tag", type: "info", "disable-transitions": "", closable: "" }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(item.label.join($props.separator)), 1) ]), _: 2 }, 1024); }), 128)) ])) : (openBlock(), createElementBlock("div", _hoisted_3$4, [ createVNode(_component_el_tooltip, { placement: "top-start", content: $setup.labelObject.label.join($props.separator) }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString($setup.labelObject.label.join($props.separator)), 1) ]), _: 1 }, 8, ["content"]) ])) ])) : createCommentVNode("", true), createVNode(_component_el_popover, { ref: "popover", placement: "bottom-start", trigger: "click" }, { reference: withCtx(() => [ createElementVNode("div", { class: normalizeClass(["el-input__inner lazy-cascader-input", $props.props.disabled ? "lazy-cascader-input-disabled" : ""]) }, [ $props.props.multiple ? (openBlock(), createElementBlock("div", _hoisted_4$3, [ !$options.placeholderVisible ? (openBlock(), createElementBlock("div", _hoisted_5$1, [ (openBlock(true), createElementBlock(Fragment, null, renderList($setup.labelArray, (item, index) => { return openBlock(), createBlock(_component_el_tag, { key: index, class: "lazy-cascader-tag", type: "info", size: "small", "disable-transitions": "", closable: "", onClose: ($event) => $options.handleClose(item, index) }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(item.label.join($props.separator)), 1) ]), _: 2 }, 1032, ["onClose"]); }), 128)) ])) : (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString($props.placeholder), 1)) ])) : (openBlock(), createElementBlock("div", _hoisted_7, [ createVNode(_component_el_tooltip, { placement: "top-start", content: $setup.labelObject.label.join($props.separator) }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString($setup.labelObject.label.join($props.separator)), 1) ]), _: 1 }, 8, ["content"]) ])), $props.clearable && $setup.current.length > 0 ? (openBlock(), createElementBlock("span", { key: 2, class: "lazy-cascader-clear", onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.clearBtnClick && $options.clearBtnClick(...args), ["stop"])) }, _hoisted_9)) : createCommentVNode("", true) ], 2) ]), default: withCtx(() => [ createElementVNode("div", _hoisted_10, [ createVNode(_component_el_cascader_panel, { ref: "panel", modelValue: $setup.current, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $setup.current = $event), options: $setup.options, props: $data.currentProps, onChange: $options.change }, null, 8, ["modelValue", "options", "props", "onChange"]) ]) ]), _: 1 }, 512) ], 4); } var LazyCascader = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7]]); const DataIsNull = (value) => { if (value === 0) { return value; } if (!value && value !== void 0) { return " "; } if (value === void 0) { return "Loading..."; } if (value === "") { return "\u6682\u65E0\u6570\u636E"; } return value; }; var EsForm_vue_vue_type_style_index_0_scoped_true_lang = ""; var EsForm_vue_vue_type_style_index_1_scoped_true_lang = ""; var EsForm_vue_vue_type_style_index_2_lang = ""; const _sfc_main$6 = defineComponent({ name: "EsForm", components: { Edit: edit, LazyCascader }, props: { msg: String, listQuery: null, formItem: null, pcCol: Number, rules: Object, position: String, mBlock: Boolean, pcBlock: Boolean }, setup() { return { isPC: true }; }, created() { this.isPC = this.getIsPc(); }, methods: { getIsPc() { if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { return false; } else { return true; } }, canNull(val, isNull) { if (isNull) { if (val || val === 0) { return val; } else { return ""; } } else { return DataIsNull(val); } }, async submitForm(args) { let type = false; console.log("args", args); await this.$refs["ruleForm"].validate((valid) => { if (valid) { type = true; } else { type = false; } }); return type; }, async clearValidate() { this.$refs["ruleForm"].clearValidate(); }, async resetFields() { this.$refs["ruleForm"].resetFields(); } } }); const _withScopeId$2 = (n) => (pushScopeId("data-v-3d0f26c9"), n = n(), popScopeId(), n); const _hoisted_1$5 = ["textContent"]; const _hoisted_2$4 = ["innerHTML"]; const _hoisted_3$3 = { key: 15, style: { "text-align": "center" } }; const _hoisted_4$2 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("div", { class: "clearfix" }, null, -1)); function _sfc_render$6(_ctx2, _cache, $props, $setup, $data, $options) { const _component_el_input = resolveComponent("el-input"); const _component_el_input_number = resolveComponent("el-input-number"); const _component_el_autocomplete = resolveComponent("el-autocomplete"); const _component_el_radio = resolveComponent("el-radio"); const _component_el_radio_group = resolveComponent("el-radio-group"); const _component_el_radio_button = resolveComponent("el-radio-button"); const _component_el_rate = resolveComponent("el-rate"); const _component_el_option = resolveComponent("el-option"); const _component_el_select = resolveComponent("el-select"); const _component_el_select_v2 = resolveComponent("el-select-v2"); const _component_el_slider = resolveComponent("el-slider"); const _component_el_switch = resolveComponent("el-switch"); const _component_el_checkbox = resolveComponent("el-checkbox"); const _component_el_checkbox_group = resolveComponent("el-checkbox-group"); const _component_el_checkbox_button = resolveComponent("el-checkbox-button"); const _component_el_time_picker = resolveComponent("el-time-picker"); const _component_el_time_select = resolveComponent("el-time-select"); const _component_el_button = resolveComponent("el-button"); const _component_el_transfer = resolveComponent("el-transfer"); const _component_el_date_picker = resolveComponent("el-date-picker"); const _component_LazyCascader = resolveComponent("LazyCascader"); const _component_el_cascader = resolveComponent("el-cascader"); const _component_el_form_item = resolveComponent("el-form-item"); const _component_el_col = resolveComponent("el-col"); const _component_el_form = resolveComponent("el-form"); const _component_el_row = resolveComponent("el-row"); return openBlock(), createBlock(_component_el_row, { gutter: 20, class: normalizeClass(["EsForm", { pc: _ctx2.pcBlock, mobile: _ctx2.mBlock, p15: _ctx2.isPC }]) }, { default: withCtx(() => [ createVNode(_component_el_form, mergeProps({ ref: "ruleForm", model: _ctx2.listQuery }, _ctx2.$attrs, { rules: _ctx2.rules, "label-position": _ctx2.position }), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx2.formItem, (item) => { return openBlock(), createBlock(_component_el_col, { key: item.label || item.key, span: _ctx2.isPC ? item.col || _ctx2.pcCol : 24, class: normalizeClass(item.class) }, { default: withCtx(() => [ createVNode(_component_el_form_item, { ref_for: true, ref: item.ref, label: item.label, prop: item.key, "label-width": item.width, class: normalizeClass(item.class) }, { default: withCtx(() => [ item.type === "es-input" ? (openBlock(), createBlock(_component_el_input, mergeProps({ key: 0, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, modelModifiers: { trim: true } }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true), item.type === "es-input-number" ? (openBlock(), createBlock(_component_el_input_number, mergeProps({ key: 1, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, modelModifiers: { number: true } }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-span" ? (openBlock(), createElementBlock("span", mergeProps({ key: 2, style: { "padding-left": "10px", "color": "#333" } }, item.attrs || {}, { textContent: toDisplayString(_ctx2.canNull(_ctx2.listQuery[item.key], item.isNull)) }), null, 16, _hoisted_1$5)) : createCommentVNode("", true), item.type === "es-autocomplete" ? (openBlock(), createBlock(_component_el_autocomplete, mergeProps({ key: 3, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, modelModifiers: { trim: true } }, item.attrs || {}, toHandlers(item.listeners || {})), createSlots({ _: 2 }, [ item.slot ? { name: item.slot, fn: withCtx(() => [ createElementVNode("div", { innerHTML: item.template }, null, 8, _hoisted_2$4) ]) } : void 0 ]), 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-radio" ? (openBlock(), createBlock(_component_el_radio_group, mergeProps({ key: 4, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, toHandlers(item.listeners || {})), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.options, (sub2, index) => { return openBlock(), createBlock(_component_el_radio, mergeProps({ key: "radio-" + sub2.value + "-" + index, label: sub2.value, disabled: sub2.disabled }, item.tagAttrs || {}), { default: withCtx(() => [ createTextVNode(toDisplayString(sub2.label), 1) ]), _: 2 }, 1040, ["label", "disabled"]); }), 128)) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-radio-group" ? (openBlock(), createBlock(_component_el_radio_group, mergeProps({ key: 5, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, toHandlers(item.listeners || {})), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.options, (sub2, index) => { return openBlock(), createBlock(_component_el_radio_button, mergeProps({ key: "radio-" + sub2.value + "-" + index, label: sub2.value, disabled: sub2.disabled }, item.tagAttrs || {}), { default: withCtx(() => [ createTextVNode(toDisplayString(sub2.label), 1) ]), _: 2 }, 1040, ["label", "disabled"]); }), 128)) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true), item.type === "es-rate" ? (openBlock(), createBlock(_component_el_rate, mergeProps({ key: 6, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-select" ? (openBlock(), createBlock(_component_el_select, mergeProps({ key: 7, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, class: "el-selects" }, item.attrs || {}, toHandlers(item.listeners || {})), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.options, (sub2, index) => { return openBlock(), createBlock(_component_el_option, { key: "select-" + sub2.value + "-" + index, style: "max-width:700px", label: sub2.label, value: sub2.value, disabled: sub2.disabled }, null, 8, ["label", "value", "disabled"]); }), 128)) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-select-v2" ? (openBlock(), createBlock(_component_el_select_v2, mergeProps({ key: 8, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, options: item.options }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue", "options"])) : item.type === "es-slider" ? (openBlock(), createBlock(_component_el_slider, mergeProps({ key: 9, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-switch" ? (openBlock(), createBlock(_component_el_switch, mergeProps({ key: 10, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, toHandlers(item.listeners || {})), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-checkbox" ? (openBlock(), createBlock(_component_el_checkbox_group, mergeProps({ key: 11, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.tagAttrs || {}, toHandlers(item.listeners)), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.options, (sub2, index) => { return openBlock(), createBlock(_component_el_checkbox, mergeProps({ key: "checkbox-" + sub2.value + "-" + index, label: sub2.value, disabled: sub2.disabled }, item.tagAttrs || {}), { default: withCtx(() => [ createTextVNode(toDisplayString(sub2.label), 1) ]), _: 2 }, 1040, ["label", "disabled"]); }), 128)) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-checkbox-button" ? (openBlock(), createBlock(_component_el_checkbox_group, mergeProps({ key: 12, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.tagAttrs || {}, toHandlers(item.listeners)), { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.options, (sub2, index) => { return openBlock(), createBlock(_component_el_checkbox_button, mergeProps({ key: "checkbox-" + sub2.value + "-" + index, label: sub2.value, disabled: sub2.disabled }, item.tagAttrs || {}), { default: withCtx(() => [ createTextVNode(toDisplayString(sub2.label), 1) ]), _: 2 }, 1040, ["label", "disabled"]); }), 128)) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-time-picker" ? (openBlock(), createBlock(_component_el_time_picker, mergeProps({ key: 13, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.tagAttrs || {}, toHandlers(item.listeners)), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-time-select" ? (openBlock(), createBlock(_component_el_time_select, mergeProps({ key: 14, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.tagAttrs || {}, toHandlers(item.listeners)), null, 16, ["modelValue", "onUpdate:modelValue"])) : item.type === "es-transfer" ? (openBlock(), createElementBlock("div", _hoisted_3$3, [ createVNode(_component_el_transfer, mergeProps({ modelValue: _ctx2.listQuery[item.key].leftValue, "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key].leftValue = $event, style: { "text-align": "left", "display": "inline-block" } }, item.attrs || {}, toHandlers(item.listeners)), { "left-footer": withCtx(() => [ createVNode(_component_el_button, mergeProps({ class: "transfer-footer", size: "small" }, toHandlers(item.operationLeft)), { default: withCtx(() => [ createTextVNode(toDisplayString(item.operationLeftName), 1) ]), _: 2 }, 1040) ]), "right-footer": withCtx(() => [ createVNode(_component_el_button, mergeProps({ class: "transfer-footer", size: "small" }, toHandlers(item.operationRight)), { default: withCtx(() => [ createTextVNode(toDisplayString(item.operationRightName), 1) ]), _: 2 }, 1040) ]), _: 2 }, 1040, ["modelValue", "onUpdate:modelValue"]) ])) : item.type === "es-date-picker" ? (openBlock(), createBlock(_component_el_date_picker, mergeProps({ key: 16, modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.attrs || {}, { "value-format": item.format || "timestamp" }, toHandlers(item.listeners)), createSlots({ _: 2 }, [ item.attrs.slot ? { name: item.attrs.slot, fn: withCtx((cell) => [ renderSlot(_ctx2.$slots, item.attrs.slot, { cell: __spreadValues({}, cell) }, void 0, true) ]) } : void 0 ]), 1040, ["modelValue", "onUpdate:modelValue", "value-format"])) : item.type === "es-cascader-lazy" ? (openBlock(), createBlock(_component_LazyCascader, { key: 17, ref_for: true, ref: "LazyCascader", modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event, filterable: "", placeholder: item.tagAttrs.placeholder || "\u8BF7\u9009\u62E9", props: item.tagAttrs.props }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "props"])) : item.type === "es-cascader" ? (openBlock(), createBlock(_component_el_cascader, mergeProps({ key: 18, ref_for: true, ref: "LazyCascader", modelValue: _ctx2.listQuery[item.key], "onUpdate:modelValue": ($event) => _ctx2.listQuery[item.key] = $event }, item.tagAttrs || {}, { placeholder: item.tagAttrs.placeholder || "\u8BF7\u9009\u62E9" }), null, 16, ["modelValue", "onUpdate:modelValue", "placeholder"])) : item.slot ? renderSlot(_ctx2.$slots, item.type, { key: 19, row: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, item), _ctx2.listQuery), { key: item.key }), { attrs: item.attrs || {} }), { listeners: item.listeners }) }, void 0, true) : createCommentVNode("", true) ]), _: 2 }, 1032, ["label", "prop", "label-width", "class"]) ]), _: 2 }, 1032, ["span", "class"]); }), 128)), renderSlot(_ctx2.$slots, "btn", {}, void 0, true), _hoisted_4$2 ]), _: 3 }, 16, ["model", "rules", "label-position"]) ]), _: 3 }, 8, ["class"]); } var EsForm = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-3d0f26c9"]]); var EsItem_vue_vue_type_style_index_0_scope_true_lang = ""; var EsItem_vue_vue_type_style_index_1_scope_true_lang = ""; const _sfc_main$5 = { name: "EsItem", props: { name: { type: String, default: "" }, value: { type: null, default: "" }, type: { type: String, default: "" }, slot: { type: Boolean, default: false } }, setup(props) { let valueName = ref(""); watch$1(() => props.value, (val) => { if (!val) { if (typeof val === "number") { valueName = val; } else { valueName = "\u6682\u65E0\u6570\u636E"; } } else { valueName = val; } }, { deep: true, immediate: true }); return { isPC: true, valueName }; }, created() { this.isPC = this.getIsPc(); }, methods: { getIsPc() { if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { return false; } else { return true; } } } }; const _hoisted_1$4 = { class: "detail-title" }; const _hoisted_2$3 = { key: 1, class: "detail-value" }; const _hoisted_3$2 = { key: 2, class: "detail-value" }; const _hoisted_4$1 = { key: 0 }; function _sfc_render$5(_ctx2, _cache, $props, $setup, $data, $options) { const _component_el_image = resolveComponent("el-image"); return openBlock(), createElementBlock("div", { class: normalizeClass($setup.isPC ? "DetailItem" : "DetailItem-m") }, [ createElementVNode("div", _hoisted_1$4, toDisplayString($props.name), 1), $props.type === "image" && $setup.valueName ? (openBlock(), createBlock(_component_el_image, { key: 0, style: { "width": "100%" }, src: $setup.valueName, "preview-src-list": [$setup.valueName] }, null, 8, ["src", "preview-src-list"])) : $props.type === "YN" ? (openBlock(), createElementBlock("div", _hoisted_2$3, toDisplayString($setup.valueName === 1 ? "\u662F" : "\u5426"), 1)) : (openBlock(), createElementBlock("div", _hoisted_3$2, [ !$props.slot ? (openBlock(), createElementBlock("div", _hoisted_4$1, toDisplayString($setup.valueName), 1)) : renderSlot(_ctx2.$slots, $props.type, { key: 1, row: __spreadValues({}, $props.value) }) ])) ], 2); } var EsItem = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5]]); var EsTable_vue_vue_type_style_index_0_scoped_true_lang = ""; var EsTable_vue_vue_type_style_index_1_scoped_true_lang = ""; function disabledCheckBox(row, index) { if (row.disabled) return false; return true; } function tableHeight(row, index) { let otherHeight = 340; let isPC = true; if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { isPC = false; } else { isPC = true; } if (isPC) { otherHeight = 340; } else { otherHeight = 300; } return document.body.offsetHeight - otherHeight || document.documentElement.offsetHeight - otherHeight; } const _sfc_main$4 = { name: "EsTable", props: { tableData: { type: Array, default: [] }, columns: { type: Array, default: [] }, pageSize: { type: Array, default: [10, 20, 30, 40, 50] }, func: { type: Function, default: disabledCheckBox }, select: { type: Boolean, default: true }, indexes: { type: Boolean, default: false }, empty: { type: Boolean, default: false }, rowKey: { type: String, default: "" }, height: { type: Number, default: tableHeight || 340 }, operationList: { type: null, default: () => [] }, operationName: { type: String, default: "\u6279\u91CF\u64CD\u4F5C" }, page: { type: Object, default: { current: 1, size: 30, total: 0 } }, multipleSelection: { type: Array, default: [] } }, setup(props, context) { let multipleSelections = ref(""); watch$1(() => props.multipleSelection, (val) => { multipleSelections = val; }, { deep: true, immediate: true }); return { isPC: true, multipleSelections, handlePageSizeChange(key2) { context.emit("onPageSize", key2); }, handleOlClick(val) { context.emit("operationClick", val); } }; }, created() { this.setting(); }, methods: { setting() { if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { this.isPC = false; } else { this.isPC = true; } /iphone|ipod|ipad/i.test(navigator.appVersion) && document.addEventListener("blur", (e2) => { ["input", "textarea"].includes(e2.target.localName) && document.body.scrollIntoView(false); }, true); }, handleSelectionChange(val) { this.multipleSelections = val; }, toggleRowSelection(rows) { if (rows) { rows.forEach((row) => { this.$refs.multipleTable.toggleRowSelection(row); }); } else { this.$refs.multipleTable.clearSelection(); } } } }; const _withScopeId$1 = (n) => (pushScopeId("data-v-192bd36e"), n = n(), popScopeId(), n); const _hoisted_1$3 = { class: "EsTable" }; const _hoisted_2$2 = { class: "el-dropdown-link" }; const _hoisted_3$1 = { key: 2, slot: "empty" }; const _hoisted_4 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("p", { class: "emptyText" }, " \u8BF7\u7B5B\u9009\u7528\u6237~ ", -1)); const _hoisted_5 = [ _hoisted_4 ]; function _sfc_render$4(_ctx2, _cache, $props, $setup, $data, $options) { const _component_el_table_column = resolveComponent("el-table-column"); const _component_el_dropdown_item = resolveComponent("el-dropdown-item"); const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu"); const _component_el_dropdown = resolveComponent("el-dropdown"); const _component_el_table = resolveComponent("el-table"); const _component_Pagination = resolveComponent("Pagination"); return openBlock(), createElementBlock("div", _hoisted_1$3, [ createVNode(_component_el_table, mergeProps({ ref: "multipleTable" }, _ctx2.$attrs, { style: { "width": "100%" } }), { default: withCtx(() => [ $props.indexes ? (openBlock(), createBlock(_component_el_table_column, { key: 0, label: "\u5E8F\u53F7", type: "index", width: "50", align: "center" })) : createCommentVNode("", true), $props.select ? (openBlock(), createBlock(_component_el_table_column, { key: 1, "reserve-selection": true, type: "selection", width: "50", selectable: $props.func }, null, 8, ["selectable"])) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList($props.columns, (item) => { return openBlock(), createBlock(_component_el_table_column, mergeProps({ key: item.key, prop: item.key, align: item.align || "center", "min-width": item.width || 100, label: item.label, fixed: item.fixed }, item.attrs), createSlots({ _: 2 }, [ item.slot ? { name: "default", fn: withCtx((scope) => [ item.moreOp && item.moreOp.length > 0 ? (openBlock(), createBlock(_component_el_dropdown, { key: 0 }, { default: withCtx(() => [ createElementVNode("span", _hoisted_2$2, [ item.slot ? renderSlot(_ctx2.$slots, item.key, { key: 0, row: scope.row, $index: scope.$index }, void 0, true) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ createTextVNode(toDisplayString(scope.row[item.key]), 1) ], 64)) ]), createVNode(_component_el_dropdown_menu, { slot: "dropdown" }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.moreOp, (sub2, index) => { return openBlock(), createBlock(_component_el_dropdown_item, mergeProps({ key: "dropdown-" + sub2.value + index, command: sub2.value }, sub2.tagAttrs || {}), { default: withCtx(() => [ $setup.isPC ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ createTextVNode(toDisplayString(sub2.label), 1) ], 64)) : (openBlock(), createElementBlock("i", { key: 1, class: normalizeClass(sub2.icon) }, null, 2)) ]), _: 2 }, 1040, ["command"]); }), 128)) ]), _: 2 }, 1024) ]), _: 2 }, 1024)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ scope.$index >= 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ item.slot ? renderSlot(_ctx2.$slots, item.key, { key: 0, row: scope.row, index: scope.$index }, void 0, true) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ createTextVNode(toDisplayString(scope.row[item.key]), 1) ], 64)) ], 64)) : createCommentVNode("", true) ], 64)) ]) } : void 0 ]), 1040, ["prop", "align", "min-width", "label", "fixed"]); }), 128)), $props.empty ? (openBlock(), createElementBlock("div", _hoisted_3$1, _hoisted_5)) : createCommentVNode("", true) ]), _: 3 }, 16), withDirectives(createVNode(_component_Pagination, { isPC: $setup.isPC, "operation-list": $props.operationList, "operation-name": $props.operationName, total: $props.page.total, page: $props.page.page, "page-sizes": $props.pageSize, limit: $props.page.limit, onOlclick: $setup.handleOlClick, onPagination: $setup.handlePageSizeChange }, null, 8, ["isPC", "operation-list", "operation-name", "total", "page", "page-sizes", "limit", "onOlclick", "onPagination"]), [ [vShow, $props.page.total > 0] ]) ]); } var EsTable = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-192bd36e"]]); const easeInOutQuad = (t, b, c, d) => { t /= d / 2; if (t < 1) { return c / 2 * t * t + b; } t--; return -c / 2 * (t * (t - 2) - 1) + b; }; const requestAnimFrame = function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1e3 / 60); }; }(); const move = (amount) => { document.documentElement.scrollTop = amount; document.body.parentNode.scrollTop = amount; document.body.scrollTop = amount; }; const position$1 = () => { return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop; }; const scrollTo = (to, duration, callback) => { const start2 = position$1(); const change = to - start2; const increment = 20; let currentTime = 0; duration = typeof duration === "undefined" ? 500 : duration; const animateScroll = function() { currentTime += increment; const val = easeInOutQuad(currentTime, start2, change, duration); move(val); if (currentTime < duration) { requestAnimFrame(animateScroll); } else { if (callback && typeof callback === "function") { callback(); } } }; animateScroll(); }; var Operation_vue_vue_type_style_index_0_scoped_true_lang = ""; const _sfc_main$3 = { name: "Operation", props: { operationList: { type: Array, default: [] }, operationName: { type: String, default: "\u6279\u91CF\u64CD\u4F5C" } }, setup(props, context) { return { isPC: true, handlePageSizeChange(value) { context.emit("olclick", value); } }; }, data() { return { showList: false }; }, created() { this.isPC = this.getIsPc(); }, methods: { getIsPc() { if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { return false; } else { return true; } }, tap() { this.showList = !this.showList; } } }; const _withScopeId = (n) => (pushScopeId("data-v-274bbf9e"), n = n(), popScopeId(), n); const _hoisted_1$2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("i", { class: "el-icon-sort el-icon-left" }, null, -1)); const _hoisted_2$1 = { class: "operation-list" }; const _hoisted_3 = ["onClick"]; function _sfc_render$3(_ctx2, _cache, $props, $setup, $data, $options) { const _component_el_icon = resolveComponent("el-icon"); return $props.operationList.length ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass($setup.isPC ? "operation" : "operation-m") }, [ createElementVNode("div", { class: "operation-main", onClick: _cache[0] || (_cache[0] = (...args) => $options.tap && $options.tap(...args)) }, [ _hoisted_1$2, createElementVNode("span", null, toDisplayString($props.operationName), 1) ]), withDirectives(createElementVNode("div", _hoisted_2$1, [ (openBlock(true), createElementBlock(Fragment, null, renderList($props.operationList, (item) => { return openBlock(), createElementBlock("div", { key: item.name, class: "ol", onClick: ($event) => $setup.handlePageSizeChange(item) }, [ createElementVNode("div", { class: "ol-icon", style: normalizeStyle$1("background:" + item.color) }, [ createVNode(_component_el_icon, { size: item.iconSize, color: item.iconColor }, { default: withCtx(() => [ (openBlock(), createBlock(resolveDynamicComponent(item.icon))) ]), _: 2 }, 1032, ["size", "color"]) ], 4), createElementVNode("span", null, toDisplayString(item.name), 1) ], 8, _hoisted_3); }), 128)) ], 512), [ [vShow, $data.showList] ]) ], 2)) : createCommentVNode("", true); } var Operation = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-274bbf9e"]]); var Pagination_vue_vue_type_style_index_0_scoped_true_lang = ""; var Pagination_vue_vue_type_style_index_1_scoped_true_lang = ""; const _sfc_main$2 = { name: "Pagination", components: { Operation }, props: { total: { type: Number, default: 0, required: true }, page: { type: Number, default: 1 }, limit: { type: Number, default: 20 }, pageSizes: { type: Array, default: () => [10, 20, 30, 40, 50] }, layout: { type: String, default: "total, sizes, prev, pager, next, jumper" }, layoutmini: { type: String, default: "prev, pager, next" }, isPC: { type: Boolean, default: true }, background: { type: Boolean, default: true }, autoScroll: { type: Boolean, default: true }, hidden: { type: Boolean, default: false }, operationList: { type: Array, default: [] } }, setup(props, context) { const data = reactive({ showList: false, buttonArrayTem: [{}], currentPage: computed({ get() { return props.page; }, set(val) { context.emit("update:page", val); return props.page || []; } }), pageSize: computed({ get() { return props.limit; }, set(val) { context.emit("update:listQuery.limit", val); return props.limit || []; } }), handleSizeChange(value) { context.emit("pagination", { page: props.page, limit: value }); if (props.autoScroll) { scrollTo(0, 800); } }, handleCurrentChange(value) { context.emit("pagination", { page: value, limit: props.limit }); if (props.autoScroll) { scrollTo(0, 800); } }, olclick(value) { context.emit("olclick", value); } }); return __spreadValues({}, toRefs(data)); } }; function _sfc_render$2(_ctx2, _cache, $props, $setup, $data, $options) { const _component_Operation = resolveComponent("Operation"); const _component_el_pagination = resolveComponent("el-pagination"); return openBlock(), createElementBlock("div", { class: normalizeClass($props.isPC ? "pagination-container" : "pagination-container-m") }, [ $props.total > 0 ? (openBlock(), createBlock(_component_Operation, { key: 0, "operation-list": $props.operationList, onOlclick: _ctx2.olclick }, null, 8, ["operation-list", "onOlclick"])) : createCommentVNode("", true), createVNode(_component_el_pagination, mergeProps({ background: $props.background, "current-page": _ctx2.currentPage, "page-size": _ctx2.pageSize, "default-page-size": $props.limit, layout: $props.isPC ? $props.layout : $props.layoutmini, "page-sizes": $props.pageSizes, total: $props.total }, _ctx2.$attrs, { onSizeChange: _ctx2.handleSizeChange, onCurrentChange: _ctx2.handleCurrentChange }), null, 16, ["background", "current-page", "page-size", "default-page-size", "layout", "page-sizes", "total", "onSizeChange", "onCurrentChange"]) ], 2); } var Pagination = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-1845f4d4"]]); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ var extendStatics$1 = function(d, b) { extendStatics$1 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics$1(d, b); }; function __extends$1(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics$1(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign2(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || from); } var Browser = function() { function Browser2() { this.firefox = false; this.ie = false; this.edge = false; this.newEdge = false; this.weChat = false; } return Browser2; }(); var Env = function() { function Env2() { this.browser = new Browser(); this.node = false; this.wxa = false; this.worker = false; this.canvasSupported = false; this.svgSupported = false; this.touchEventsSupported = false; this.pointerEventsSupported = false; this.domSupported = false; this.transformSupported = false; this.transform3dSupported = false; } return Env2; }(); var env = new Env(); if (typeof wx === "object" && typeof wx.getSystemInfoSync === "function") { env.wxa = true; env.canvasSupported = true; env.touchEventsSupported = true; } else if (typeof document === "undefined" && typeof self !== "undefined") { env.worker = true; env.canvasSupported = true; } else if (typeof navigator === "undefined") { env.node = true; env.canvasSupported = true; env.svgSupported = true; } else { detect(navigator.userAgent, env); } function detect(ua, env2) { var browser = env2.browser; var firefox = ua.match(/Firefox\/([\d.]+)/); var ie = ua.match(/MSIE\s([\d.]+)/) || ua.match(/Trident\/.+?rv:(([\d.]+))/); var edge = ua.match(/Edge?\/([\d.]+)/); var weChat = /micromessenger/i.test(ua); if (firefox) { browser.firefox = true; browser.version = firefox[1]; } if (ie) { browser.ie = true; browser.version = ie[1]; } if (edge) { browser.edge = true; browser.version = edge[1]; browser.newEdge = +edge[1].split(".")[0] > 18; } if (weChat) { browser.weChat = true; } env2.canvasSupported = !!document.createElement("canvas").getContext; env2.svgSupported = typeof SVGRect !== "undefined"; env2.touchEventsSupported = "ontouchstart" in window && !browser.ie && !browser.edge; env2.pointerEventsSupported = "onpointerdown" in window && (browser.edge || browser.ie && +browser.version >= 11); env2.domSupported = typeof document !== "undefined"; var style = document.documentElement.style; env2.transform3dSupported = (browser.ie && "transition" in style || browser.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in style) && !("OTransition" in style); env2.transformSupported = env2.transform3dSupported || browser.ie && +browser.version >= 9; } var env$1 = env; var BUILTIN_OBJECT = { "[object Function]": true, "[object RegExp]": true, "[object Date]": true, "[object Error]": true, "[object CanvasGradient]": true, "[object CanvasPattern]": true, "[object Image]": true, "[object Canvas]": true }; var TYPED_ARRAY = { "[object Int8Array]": true, "[object Uint8Array]": true, "[object Uint8ClampedArray]": true, "[object Int16Array]": true, "[object Uint16Array]": true, "[object Int32Array]": true, "[object Uint32Array]": true, "[object Float32Array]": true, "[object Float64Array]": true }; var objToString = Object.prototype.toString; var arrayProto = Array.prototype; var nativeForEach = arrayProto.forEach; var nativeFilter = arrayProto.filter; var nativeSlice = arrayProto.slice; var nativeMap = arrayProto.map; var ctorFunction = function() { }.constructor; var protoFunction = ctorFunction ? ctorFunction.prototype : null; var protoKey = "__proto__"; var methods$1 = {}; function $override(name, fn) { methods$1[name] = fn; } var idStart = 2311; function guid() { return idStart++; } function logError() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (typeof console !== "undefined") { console.error.apply(console, args); } } function clone$4(source) { if (source == null || typeof source !== "object") { return source; } var result = source; var typeStr = objToString.call(source); if (typeStr === "[object Array]") { if (!isPrimitive(source)) { result = []; for (var i = 0, len2 = source.length; i < len2; i++) { result[i] = clone$4(source[i]); } } } else if (TYPED_ARRAY[typeStr]) { if (!isPrimitive(source)) { var Ctor = source.constructor; if (Ctor.from) { result = Ctor.from(source); } else { result = new Ctor(source.length); for (var i = 0, len2 = source.length; i < len2; i++) { result[i] = clone$4(source[i]); } } } } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) { result = {}; for (var key2 in source) { if (source.hasOwnProperty(key2) && key2 !== protoKey) { result[key2] = clone$4(source[key2]); } } } return result; } function merge(target, source, overwrite) { if (!isObject$3(source) || !isObject$3(target)) { return overwrite ? clone$4(source) : target; } for (var key2 in source) { if (source.hasOwnProperty(key2) && key2 !== protoKey) { var targetProp = target[key2]; var sourceProp = source[key2]; if (isObject$3(sourceProp) && isObject$3(targetProp) && !isArray$1(sourceProp) && !isArray$1(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) { merge(targetProp, sourceProp, overwrite); } else if (overwrite || !(key2 in target)) { target[key2] = clone$4(source[key2]); } } } return target; } function mergeAll(targetAndSources, overwrite) { var result = targetAndSources[0]; for (var i = 1, len2 = targetAndSources.length; i < len2; i++) { result = merge(result, targetAndSources[i], overwrite); } return result; } function extend(target, source) { if (Object.assign) { Object.assign(target, source); } else { for (var key2 in source) { if (source.hasOwnProperty(key2) && key2 !== protoKey) { target[key2] = source[key2]; } } } return target; } function defaults(target, source, overlay) { var keysArr = keys(source); for (var i = 0; i < keysArr.length; i++) { var key2 = keysArr[i]; if (overlay ? source[key2] != null : target[key2] == null) { target[key2] = source[key2]; } } return target; } var createCanvas = function() { return methods$1.createCanvas(); }; methods$1.createCanvas = function() { return document.createElement("canvas"); }; function indexOf(array, value) { if (array) { if (array.indexOf) { return array.indexOf(value); } for (var i = 0, len2 = array.length; i < len2; i++) { if (array[i] === value) { return i; } } } return -1; } function inherits(clazz, baseClazz) { var clazzPrototype = clazz.prototype; function F() { } F.prototype = baseClazz.prototype; clazz.prototype = new F(); for (var prop in clazzPrototype) { if (clazzPrototype.hasOwnProperty(prop)) { clazz.prototype[prop] = clazzPrototype[prop]; } } clazz.prototype.constructor = clazz; clazz.superClass = baseClazz; } function mixin(target, source, override) { target = "prototype" in target ? target.prototype : target; source = "prototype" in source ? source.prototype : source; if (Object.getOwnPropertyNames) { var keyList = Object.getOwnPropertyNames(source); for (var i = 0; i < keyList.length; i++) { var key2 = keyList[i]; if (key2 !== "constructor") { if (override ? source[key2] != null : target[key2] == null) { target[key2] = source[key2]; } } } } else { defaults(target, source, override); } } function isArrayLike(data) { if (!data) { return false; } if (typeof data === "string") { return false; } return typeof data.length === "number"; } function each$g(arr, cb, context) { if (!(arr && cb)) { return; } if (arr.forEach && arr.forEach === nativeForEach) { arr.forEach(cb, context); } else if (arr.length === +arr.length) { for (var i = 0, len2 = arr.length; i < len2; i++) { cb.call(context, arr[i], i, arr); } } else { for (var key2 in arr) { if (arr.hasOwnProperty(key2)) { cb.call(context, arr[key2], key2, arr); } } } } function map$1(arr, cb, context) { if (!arr) { return []; } if (!cb) { return slice(arr); } if (arr.map && arr.map === nativeMap) { return arr.map(cb, context); } else { var result = []; for (var i = 0, len2 = arr.length; i < len2; i++) { result.push(cb.call(context, arr[i], i, arr)); } return result; } } function reduce(arr, cb, memo, context) { if (!(arr && cb)) { return; } for (var i = 0, len2 = arr.length; i < len2; i++) { memo = cb.call(context, memo, arr[i], i, arr); } return memo; } function filter(arr, cb, context) { if (!arr) { return []; } if (!cb) { return slice(arr); } if (arr.filter && arr.filter === nativeFilter) { return arr.filter(cb, context); } else { var result = []; for (var i = 0, len2 = arr.length; i < len2; i++) { if (cb.call(context, arr[i], i, arr)) { result.push(arr[i]); } } return result; } } function find(arr, cb, context) { if (!(arr && cb)) { return; } for (var i = 0, len2 = arr.length; i < len2; i++) { if (cb.call(context, arr[i], i, arr)) { return arr[i]; } } } function keys(obj) { if (!obj) { return []; } if (Object.keys) { return Object.keys(obj); } var keyList = []; for (var key2 in obj) { if (obj.hasOwnProperty(key2)) { keyList.push(key2); } } return keyList; } function bindPolyfill(func, context) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } return function() { return func.apply(context, args.concat(nativeSlice.call(arguments))); }; } var bind$2 = protoFunction && isFunction(protoFunction.bind) ? protoFunction.call.bind(protoFunction.bind) : bindPolyfill; function curry$1(func) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return function() { return func.apply(this, args.concat(nativeSlice.call(arguments))); }; } function isArray$1(value) { if (Array.isArray) { return Array.isArray(value); } return objToString.call(value) === "[object Array]"; } function isFunction(value) { return typeof value === "function"; } function isString(value) { return typeof value === "string"; } function isStringSafe(value) { return objToString.call(value) === "[object String]"; } function isNumber(value) { return typeof value === "number"; } function isObject$3(value) { var type = typeof value; return type === "function" || !!value && type === "object"; } function isBuiltInObject(value) { return !!BUILTIN_OBJECT[objToString.call(value)]; } function isTypedArray(value) { return !!TYPED_ARRAY[objToString.call(value)]; } function isDom(value) { return typeof value === "object" && typeof value.nodeType === "number" && typeof value.ownerDocument === "object"; } function isGradientObject(value) { return value.colorStops != null; } function isImagePatternObject(value) { return value.image != null; } function isRegExp(value) { return objToString.call(value) === "[object RegExp]"; } function eqNaN(value) { return value !== value; } function retrieve() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } for (var i = 0, len2 = args.length; i < len2; i++) { if (args[i] != null) { return args[i]; } } } function retrieve2(value0, value1) { return value0 != null ? value0 : value1; } function retrieve3(value0, value1, value2) { return value0 != null ? value0 : value1 != null ? value1 : value2; } function slice(arr) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return nativeSlice.apply(arr, args); } function normalizeCssArray$1(val) { if (typeof val === "number") { return [val, val, val, val]; } var len2 = val.length; if (len2 === 2) { return [val[0], val[1], val[0], val[1]]; } else if (len2 === 3) { return [val[0], val[1], val[2], val[1]]; } return val; } function assert(condition, message2) { if (!condition) { throw new Error(message2); } } function trim$1(str) { if (str == null) { return null; } else if (typeof str.trim === "function") { return str.trim(); } else { return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); } } var primitiveKey = "__ec_primitive__"; function setAsPrimitive(obj) { obj[primitiveKey] = true; } function isPrimitive(obj) { return obj[primitiveKey]; } var HashMap = function() { function HashMap2(obj) { this.data = {}; var isArr = isArray$1(obj); this.data = {}; var thisMap = this; obj instanceof HashMap2 ? obj.each(visit) : obj && each$g(obj, visit); function visit(value, key2) { isArr ? thisMap.set(value, key2) : thisMap.set(key2, value); } } HashMap2.prototype.get = function(key2) { return this.data.hasOwnProperty(key2) ? this.data[key2] : null; }; HashMap2.prototype.set = function(key2, value) { return this.data[key2] = value; }; HashMap2.prototype.each = function(cb, context) { for (var key2 in this.data) { if (this.data.hasOwnProperty(key2)) { cb.call(context, this.data[key2], key2); } } }; HashMap2.prototype.keys = function() { return keys(this.data); }; HashMap2.prototype.removeKey = function(key2) { delete this.data[key2]; }; return HashMap2; }(); function createHashMap(obj) { return new HashMap(obj); } function concatArray(a, b) { var newArray = new a.constructor(a.length + b.length); for (var i = 0; i < a.length; i++) { newArray[i] = a[i]; } var offset = a.length; for (var i = 0; i < b.length; i++) { newArray[i + offset] = b[i]; } return newArray; } function createObject(proto2, properties) { var obj; if (Object.create) { obj = Object.create(proto2); } else { var StyleCtor = function() { }; StyleCtor.prototype = proto2; obj = new StyleCtor(); } if (properties) { extend(obj, properties); } return obj; } function hasOwn(own, prop) { return own.hasOwnProperty(prop); } function noop$1() { } var util$1 = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", $override, guid, logError, clone: clone$4, merge, mergeAll, extend, defaults, createCanvas, indexOf, inherits, mixin, isArrayLike, each: each$g, map: map$1, reduce, filter, find, keys, bind: bind$2, curry: curry$1, isArray: isArray$1, isFunction, isString, isStringSafe, isNumber, isObject: isObject$3, isBuiltInObject, isTypedArray, isDom, isGradientObject, isImagePatternObject, isRegExp, eqNaN, retrieve, retrieve2, retrieve3, slice, normalizeCssArray: normalizeCssArray$1, assert, trim: trim$1, setAsPrimitive, isPrimitive, HashMap, createHashMap, concatArray, createObject, hasOwn, noop: noop$1 }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics(d, b); }; function __extends(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } function create$2(x, y) { if (x == null) { x = 0; } if (y == null) { y = 0; } return [x, y]; } function copy$1(out2, v) { out2[0] = v[0]; out2[1] = v[1]; return out2; } function clone$3(v) { return [v[0], v[1]]; } function set$1(out2, a, b) { out2[0] = a; out2[1] = b; return out2; } function add(out2, v12, v22) { out2[0] = v12[0] + v22[0]; out2[1] = v12[1] + v22[1]; return out2; } function scaleAndAdd$1(out2, v12, v22, a) { out2[0] = v12[0] + v22[0] * a; out2[1] = v12[1] + v22[1] * a; return out2; } function sub(out2, v12, v22) { out2[0] = v12[0] - v22[0]; out2[1] = v12[1] - v22[1]; return out2; } function len(v) { return Math.sqrt(lenSquare(v)); } var length = len; function lenSquare(v) { return v[0] * v[0] + v[1] * v[1]; } var lengthSquare = lenSquare; function mul$1(out2, v12, v22) { out2[0] = v12[0] * v22[0]; out2[1] = v12[1] * v22[1]; return out2; } function div(out2, v12, v22) { out2[0] = v12[0] / v22[0]; out2[1] = v12[1] / v22[1]; return out2; } function dot(v12, v22) { return v12[0] * v22[0] + v12[1] * v22[1]; } function scale$2(out2, v, s) { out2[0] = v[0] * s; out2[1] = v[1] * s; return out2; } function normalize$3(out2, v) { var d = len(v); if (d === 0) { out2[0] = 0; out2[1] = 0; } else { out2[0] = v[0] / d; out2[1] = v[1] / d; } return out2; } function distance(v12, v22) { return Math.sqrt((v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1])); } var dist$1 = distance; function distanceSquare(v12, v22) { return (v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]); } var distSquare = distanceSquare; function negate(out2, v) { out2[0] = -v[0]; out2[1] = -v[1]; return out2; } function lerp$1(out2, v12, v22, t) { out2[0] = v12[0] + t * (v22[0] - v12[0]); out2[1] = v12[1] + t * (v22[1] - v12[1]); return out2; } function applyTransform$1(out2, v, m2) { var x = v[0]; var y = v[1]; out2[0] = m2[0] * x + m2[2] * y + m2[4]; out2[1] = m2[1] * x + m2[3] * y + m2[5]; return out2; } function min$1(out2, v12, v22) { out2[0] = Math.min(v12[0], v22[0]); out2[1] = Math.min(v12[1], v22[1]); return out2; } function max$1(out2, v12, v22) { out2[0] = Math.max(v12[0], v22[0]); out2[1] = Math.max(v12[1], v22[1]); return out2; } var vector = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", create: create$2, copy: copy$1, clone: clone$3, set: set$1, add, scaleAndAdd: scaleAndAdd$1, sub, len, length, lenSquare, lengthSquare, mul: mul$1, div, dot, scale: scale$2, normalize: normalize$3, distance, dist: dist$1, distanceSquare, distSquare, negate, lerp: lerp$1, applyTransform: applyTransform$1, min: min$1, max: max$1 }); var Param = function() { function Param2(target, e2) { this.target = target; this.topTarget = e2 && e2.topTarget; } return Param2; }(); var Draggable = function() { function Draggable2(handler) { this.handler = handler; handler.on("mousedown", this._dragStart, this); handler.on("mousemove", this._drag, this); handler.on("mouseup", this._dragEnd, this); } Draggable2.prototype._dragStart = function(e2) { var draggingTarget = e2.target; while (draggingTarget && !draggingTarget.draggable) { draggingTarget = draggingTarget.parent; } if (draggingTarget) { this._draggingTarget = draggingTarget; draggingTarget.dragging = true; this._x = e2.offsetX; this._y = e2.offsetY; this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragstart", e2.event); } }; Draggable2.prototype._drag = function(e2) { var draggingTarget = this._draggingTarget; if (draggingTarget) { var x = e2.offsetX; var y = e2.offsetY; var dx = x - this._x; var dy = y - this._y; this._x = x; this._y = y; draggingTarget.drift(dx, dy, e2); this.handler.dispatchToElement(new Param(draggingTarget, e2), "drag", e2.event); var dropTarget = this.handler.findHover(x, y, draggingTarget).target; var lastDropTarget = this._dropTarget; this._dropTarget = dropTarget; if (draggingTarget !== dropTarget) { if (lastDropTarget && dropTarget !== lastDropTarget) { this.handler.dispatchToElement(new Param(lastDropTarget, e2), "dragleave", e2.event); } if (dropTarget && dropTarget !== lastDropTarget) { this.handler.dispatchToElement(new Param(dropTarget, e2), "dragenter", e2.event); } } } }; Draggable2.prototype._dragEnd = function(e2) { var draggingTarget = this._draggingTarget; if (draggingTarget) { draggingTarget.dragging = false; } this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragend", e2.event); if (this._dropTarget) { this.handler.dispatchToElement(new Param(this._dropTarget, e2), "drop", e2.event); } this._draggingTarget = null; this._dropTarget = null; }; return Draggable2; }(); var Draggable$1 = Draggable; var Eventful = function() { function Eventful2(eventProcessors) { if (eventProcessors) { this._$eventProcessor = eventProcessors; } } Eventful2.prototype.on = function(event, query, handler, context) { if (!this._$handlers) { this._$handlers = {}; } var _h = this._$handlers; if (typeof query === "function") { context = handler; handler = query; query = null; } if (!handler || !event) { return this; } var eventProcessor = this._$eventProcessor; if (query != null && eventProcessor && eventProcessor.normalizeQuery) { query = eventProcessor.normalizeQuery(query); } if (!_h[event]) { _h[event] = []; } for (var i = 0; i < _h[event].length; i++) { if (_h[event][i].h === handler) { return this; } } var wrap = { h: handler, query, ctx: context || this, callAtLast: handler.zrEventfulCallAtLast }; var lastIndex = _h[event].length - 1; var lastWrap = _h[event][lastIndex]; lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap); return this; }; Eventful2.prototype.isSilent = function(eventName) { var _h = this._$handlers; return !_h || !_h[eventName] || !_h[eventName].length; }; Eventful2.prototype.off = function(eventType, handler) { var _h = this._$handlers; if (!_h) { return this; } if (!eventType) { this._$handlers = {}; return this; } if (handler) { if (_h[eventType]) { var newList = []; for (var i = 0, l = _h[eventType].length; i < l; i++) { if (_h[eventType][i].h !== handler) { newList.push(_h[eventType][i]); } } _h[eventType] = newList; } if (_h[eventType] && _h[eventType].length === 0) { delete _h[eventType]; } } else { delete _h[eventType]; } return this; }; Eventful2.prototype.trigger = function(eventType) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (!this._$handlers) { return this; } var _h = this._$handlers[eventType]; var eventProcessor = this._$eventProcessor; if (_h) { var argLen = args.length; var len2 = _h.length; for (var i = 0; i < len2; i++) { var hItem = _h[i]; if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(eventType, hItem.query)) { continue; } switch (argLen) { case 0: hItem.h.call(hItem.ctx); break; case 1: hItem.h.call(hItem.ctx, args[0]); break; case 2: hItem.h.call(hItem.ctx, args[0], args[1]); break; default: hItem.h.apply(hItem.ctx, args); break; } } } eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(eventType); return this; }; Eventful2.prototype.triggerWithContext = function(type) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (!this._$handlers) { return this; } var _h = this._$handlers[type]; var eventProcessor = this._$eventProcessor; if (_h) { var argLen = args.length; var ctx = args[argLen - 1]; var len2 = _h.length; for (var i = 0; i < len2; i++) { var hItem = _h[i]; if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) { continue; } switch (argLen) { case 0: hItem.h.call(ctx); break; case 1: hItem.h.call(ctx, args[0]); break; case 2: hItem.h.call(ctx, args[0], args[1]); break; default: hItem.h.apply(ctx, args.slice(1, argLen - 1)); break; } } } eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type); return this; }; return Eventful2; }(); var Eventful$1 = Eventful; var LN2 = Math.log(2); function determinant(rows, rank2, rowStart, rowMask, colMask, detCache) { var cacheKey = rowMask + "-" + colMask; var fullRank = rows.length; if (detCache.hasOwnProperty(cacheKey)) { return detCache[cacheKey]; } if (rank2 === 1) { var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2); return rows[rowStart][colStart]; } var subRowMask = rowMask | 1 << rowStart; var subRowStart = rowStart + 1; while (rowMask & 1 << subRowStart) { subRowStart++; } var sum2 = 0; for (var j = 0, colLocalIdx = 0; j < fullRank; j++) { var colTag = 1 << j; if (!(colTag & colMask)) { sum2 += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] * determinant(rows, rank2 - 1, subRowStart, subRowMask, colMask | colTag, detCache); colLocalIdx++; } } detCache[cacheKey] = sum2; return sum2; } function buildTransformer(src, dest) { var mA = [ [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]] ]; var detCache = {}; var det = determinant(mA, 8, 0, 0, 0, detCache); if (det === 0) { return; } var vh = []; for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) { vh[j] == null && (vh[j] = 0); vh[j] += ((i + j) % 2 ? -1 : 1) * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i]; } } return function(out2, srcPointX, srcPointY) { var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1; out2[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk; out2[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk; }; } var EVENT_SAVED_PROP = "___zrEVENTSAVED"; var _calcOut$1 = []; function transformLocalCoord(out2, elFrom, elTarget, inX, inY) { return transformCoordWithViewport(_calcOut$1, elFrom, inX, inY, true) && transformCoordWithViewport(out2, elTarget, _calcOut$1[0], _calcOut$1[1]); } function transformCoordWithViewport(out2, el, inX, inY, inverse) { if (el.getBoundingClientRect && env$1.domSupported && !isCanvasEl(el)) { var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {}); var markers = prepareCoordMarkers(el, saved); var transformer = preparePointerTransformer(markers, saved, inverse); if (transformer) { transformer(out2, inX, inY); return true; } } return false; } function prepareCoordMarkers(el, saved) { var markers = saved.markers; if (markers) { return markers; } markers = saved.markers = []; var propLR = ["left", "right"]; var propTB = ["top", "bottom"]; for (var i = 0; i < 4; i++) { var marker = document.createElement("div"); var stl = marker.style; var idxLR = i % 2; var idxTB = (i >> 1) % 2; stl.cssText = [ "position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", propLR[idxLR] + ":0", propTB[idxTB] + ":0", propLR[1 - idxLR] + ":auto", propTB[1 - idxTB] + ":auto", "" ].join("!important;"); el.appendChild(marker); markers.push(marker); } return markers; } function preparePointerTransformer(markers, saved, inverse) { var transformerName = inverse ? "invTrans" : "trans"; var transformer = saved[transformerName]; var oldSrcCoords = saved.srcCoords; var srcCoords = []; var destCoords = []; var oldCoordTheSame = true; for (var i = 0; i < 4; i++) { var rect = markers[i].getBoundingClientRect(); var ii = 2 * i; var x = rect.left; var y = rect.top; srcCoords.push(x, y); oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1]; destCoords.push(markers[i].offsetLeft, markers[i].offsetTop); } return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords)); } function isCanvasEl(el) { return el.nodeName.toUpperCase() === "CANVAS"; } var isDomLevel2 = typeof window !== "undefined" && !!window.addEventListener; var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/; var _calcOut = []; function clientToLocal(el, e2, out2, calculate) { out2 = out2 || {}; if (calculate || !env$1.canvasSupported) { calculateZrXY(el, e2, out2); } else if (env$1.browser.firefox && env$1.browser.version < "39" && e2.layerX != null && e2.layerX !== e2.offsetX) { out2.zrX = e2.layerX; out2.zrY = e2.layerY; } else if (e2.offsetX != null) { out2.zrX = e2.offsetX; out2.zrY = e2.offsetY; } else { calculateZrXY(el, e2, out2); } return out2; } function calculateZrXY(el, e2, out2) { if (env$1.domSupported && el.getBoundingClientRect) { var ex = e2.clientX; var ey = e2.clientY; if (isCanvasEl(el)) { var box2 = el.getBoundingClientRect(); out2.zrX = ex - box2.left; out2.zrY = ey - box2.top; return; } else { if (transformCoordWithViewport(_calcOut, el, ex, ey)) { out2.zrX = _calcOut[0]; out2.zrY = _calcOut[1]; return; } } } out2.zrX = out2.zrY = 0; } function getNativeEvent(e2) { return e2 || window.event; } function normalizeEvent(el, e2, calculate) { e2 = getNativeEvent(e2); if (e2.zrX != null) { return e2; } var eventType = e2.type; var isTouch = eventType && eventType.indexOf("touch") >= 0; if (!isTouch) { clientToLocal(el, e2, e2, calculate); var wheelDelta = getWheelDeltaMayPolyfill(e2); e2.zrDelta = wheelDelta ? wheelDelta / 120 : -(e2.detail || 0) / 3; } else { var touch = eventType !== "touchend" ? e2.targetTouches[0] : e2.changedTouches[0]; touch && clientToLocal(el, touch, e2, calculate); } var button = e2.button; if (e2.which == null && button !== void 0 && MOUSE_EVENT_REG.test(e2.type)) { e2.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0; } return e2; } function getWheelDeltaMayPolyfill(e2) { var rawWheelDelta = e2.wheelDelta; if (rawWheelDelta) { return rawWheelDelta; } var deltaX = e2.deltaX; var deltaY = e2.deltaY; if (deltaX == null || deltaY == null) { return rawWheelDelta; } var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX); var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1; return 3 * delta * sign; } function addEventListener(el, name, handler, opt) { if (isDomLevel2) { el.addEventListener(name, handler, opt); } else { el.attachEvent("on" + name, handler); } } function removeEventListener(el, name, handler, opt) { if (isDomLevel2) { el.removeEventListener(name, handler, opt); } else { el.detachEvent("on" + name, handler); } } var stop = isDomLevel2 ? function(e2) { e2.preventDefault(); e2.stopPropagation(); e2.cancelBubble = true; } : function(e2) { e2.returnValue = false; e2.cancelBubble = true; }; function isMiddleOrRightButtonOnMouseUpDown(e2) { return e2.which === 2 || e2.which === 3; } var GestureMgr = function() { function GestureMgr2() { this._track = []; } GestureMgr2.prototype.recognize = function(event, target, root) { this._doTrack(event, target, root); return this._recognize(event); }; GestureMgr2.prototype.clear = function() { this._track.length = 0; return this; }; GestureMgr2.prototype._doTrack = function(event, target, root) { var touches = event.touches; if (!touches) { return; } var trackItem = { points: [], touches: [], target, event }; for (var i = 0, len2 = touches.length; i < len2; i++) { var touch = touches[i]; var pos = clientToLocal(root, touch, {}); trackItem.points.push([pos.zrX, pos.zrY]); trackItem.touches.push(touch); } this._track.push(trackItem); }; GestureMgr2.prototype._recognize = function(event) { for (var eventName in recognizers) { if (recognizers.hasOwnProperty(eventName)) { var gestureInfo = recognizers[eventName](this._track, event); if (gestureInfo) { return gestureInfo; } } } }; return GestureMgr2; }(); function dist(pointPair) { var dx = pointPair[1][0] - pointPair[0][0]; var dy = pointPair[1][1] - pointPair[0][1]; return Math.sqrt(dx * dx + dy * dy); } function center$1(pointPair) { return [ (pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2 ]; } var recognizers = { pinch: function(tracks, event) { var trackLen = tracks.length; if (!trackLen) { return; } var pinchEnd = (tracks[trackLen - 1] || {}).points; var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd; if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) { var pinchScale = dist(pinchEnd) / dist(pinchPre); !isFinite(pinchScale) && (pinchScale = 1); event.pinchScale = pinchScale; var pinchCenter = center$1(pinchEnd); event.pinchX = pinchCenter[0]; event.pinchY = pinchCenter[1]; return { type: "pinch", target: tracks[0].target, event }; } } }; var SILENT = "silent"; function makeEventPacket(eveType, targetInfo, event) { return { type: eveType, event, target: targetInfo.target, topTarget: targetInfo.topTarget, cancelBubble: false, offsetX: event.zrX, offsetY: event.zrY, gestureEvent: event.gestureEvent, pinchX: event.pinchX, pinchY: event.pinchY, pinchScale: event.pinchScale, wheelDelta: event.zrDelta, zrByTouch: event.zrByTouch, which: event.which, stop: stopEvent }; } function stopEvent() { stop(this.event); } var EmptyProxy = function(_super) { __extends(EmptyProxy2, _super); function EmptyProxy2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.handler = null; return _this; } EmptyProxy2.prototype.dispose = function() { }; EmptyProxy2.prototype.setCursor = function() { }; return EmptyProxy2; }(Eventful$1); var HoveredResult = function() { function HoveredResult2(x, y) { this.x = x; this.y = y; } return HoveredResult2; }(); var handlerNames = [ "click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ]; var Handler = function(_super) { __extends(Handler2, _super); function Handler2(storage2, painter, proxy, painterRoot) { var _this = _super.call(this) || this; _this._hovered = new HoveredResult(0, 0); _this.storage = storage2; _this.painter = painter; _this.painterRoot = painterRoot; proxy = proxy || new EmptyProxy(); _this.proxy = null; _this.setHandlerProxy(proxy); _this._draggingMgr = new Draggable$1(_this); return _this; } Handler2.prototype.setHandlerProxy = function(proxy) { if (this.proxy) { this.proxy.dispose(); } if (proxy) { each$g(handlerNames, function(name) { proxy.on && proxy.on(name, this[name], this); }, this); proxy.handler = this; } this.proxy = proxy; }; Handler2.prototype.mousemove = function(event) { var x = event.zrX; var y = event.zrY; var isOutside = isOutsideBoundary(this, x, y); var lastHovered = this._hovered; var lastHoveredTarget = lastHovered.target; if (lastHoveredTarget && !lastHoveredTarget.__zr) { lastHovered = this.findHover(lastHovered.x, lastHovered.y); lastHoveredTarget = lastHovered.target; } var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y); var hoveredTarget = hovered.target; var proxy = this.proxy; proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : "default"); if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) { this.dispatchToElement(lastHovered, "mouseout", event); } this.dispatchToElement(hovered, "mousemove", event); if (hoveredTarget && hoveredTarget !== lastHoveredTarget) { this.dispatchToElement(hovered, "mouseover", event); } }; Handler2.prototype.mouseout = function(event) { var eventControl = event.zrEventControl; if (eventControl !== "only_globalout") { this.dispatchToElement(this._hovered, "mouseout", event); } if (eventControl !== "no_globalout") { this.trigger("globalout", { type: "globalout", event }); } }; Handler2.prototype.resize = function() { this._hovered = new HoveredResult(0, 0); }; Handler2.prototype.dispatch = function(eventName, eventArgs) { var handler = this[eventName]; handler && handler.call(this, eventArgs); }; Handler2.prototype.dispose = function() { this.proxy.dispose(); this.storage = null; this.proxy = null; this.painter = null; }; Handler2.prototype.setCursorStyle = function(cursorStyle) { var proxy = this.proxy; proxy.setCursor && proxy.setCursor(cursorStyle); }; Handler2.prototype.dispatchToElement = function(targetInfo, eventName, event) { targetInfo = targetInfo || {}; var el = targetInfo.target; if (el && el.silent) { return; } var eventKey = "on" + eventName; var eventPacket = makeEventPacket(eventName, targetInfo, event); while (el) { el[eventKey] && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket)); el.trigger(eventName, eventPacket); el = el.__hostTarget ? el.__hostTarget : el.parent; if (eventPacket.cancelBubble) { break; } } if (!eventPacket.cancelBubble) { this.trigger(eventName, eventPacket); if (this.painter && this.painter.eachOtherLayer) { this.painter.eachOtherLayer(function(layer) { if (typeof layer[eventKey] === "function") { layer[eventKey].call(layer, eventPacket); } if (layer.trigger) { layer.trigger(eventName, eventPacket); } }); } } }; Handler2.prototype.findHover = function(x, y, exclude) { var list2 = this.storage.getDisplayList(); var out2 = new HoveredResult(x, y); for (var i = list2.length - 1; i >= 0; i--) { var hoverCheckResult = void 0; if (list2[i] !== exclude && !list2[i].ignore && (hoverCheckResult = isHover(list2[i], x, y))) { !out2.topTarget && (out2.topTarget = list2[i]); if (hoverCheckResult !== SILENT) { out2.target = list2[i]; break; } } } return out2; }; Handler2.prototype.processGesture = function(event, stage) { if (!this._gestureMgr) { this._gestureMgr = new GestureMgr(); } var gestureMgr = this._gestureMgr; stage === "start" && gestureMgr.clear(); var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom); stage === "end" && gestureMgr.clear(); if (gestureInfo) { var type = gestureInfo.type; event.gestureEvent = type; var res = new HoveredResult(); res.target = gestureInfo.target; this.dispatchToElement(res, type, gestureInfo.event); } }; return Handler2; }(Eventful$1); each$g(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(name) { Handler.prototype[name] = function(event) { var x = event.zrX; var y = event.zrY; var isOutside = isOutsideBoundary(this, x, y); var hovered; var hoveredTarget; if (name !== "mouseup" || !isOutside) { hovered = this.findHover(x, y); hoveredTarget = hovered.target; } if (name === "mousedown") { this._downEl = hoveredTarget; this._downPoint = [event.zrX, event.zrY]; this._upEl = hoveredTarget; } else if (name === "mouseup") { this._upEl = hoveredTarget; } else if (name === "click") { if (this._downEl !== this._upEl || !this._downPoint || dist$1(this._downPoint, [event.zrX, event.zrY]) > 4) { return; } this._downPoint = null; } this.dispatchToElement(hovered, name, event); }; }); function isHover(displayable, x, y) { if (displayable[displayable.rectHover ? "rectContain" : "contain"](x, y)) { var el = displayable; var isSilent = void 0; var ignoreClip = false; while (el) { if (el.ignoreClip) { ignoreClip = true; } if (!ignoreClip) { var clipPath = el.getClipPath(); if (clipPath && !clipPath.contain(x, y)) { return false; } if (el.silent) { isSilent = true; } } var hostEl = el.__hostTarget; el = hostEl ? hostEl : el.parent; } return isSilent ? SILENT : true; } return false; } function isOutsideBoundary(handlerInstance, x, y) { var painter = handlerInstance.painter; return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight(); } var Handler$1 = Handler; var DEFAULT_MIN_MERGE = 32; var DEFAULT_MIN_GALLOPING = 7; function minRunLength(n) { var r = 0; while (n >= DEFAULT_MIN_MERGE) { r |= n & 1; n >>= 1; } return n + r; } function makeAscendingRun(array, lo, hi, compare2) { var runHi = lo + 1; if (runHi === hi) { return 1; } if (compare2(array[runHi++], array[lo]) < 0) { while (runHi < hi && compare2(array[runHi], array[runHi - 1]) < 0) { runHi++; } reverseRun(array, lo, runHi); } else { while (runHi < hi && compare2(array[runHi], array[runHi - 1]) >= 0) { runHi++; } } return runHi - lo; } function reverseRun(array, lo, hi) { hi--; while (lo < hi) { var t = array[lo]; array[lo++] = array[hi]; array[hi--] = t; } } function binaryInsertionSort(array, lo, hi, start2, compare2) { if (start2 === lo) { start2++; } for (; start2 < hi; start2++) { var pivot = array[start2]; var left = lo; var right2 = start2; var mid; while (left < right2) { mid = left + right2 >>> 1; if (compare2(pivot, array[mid]) < 0) { right2 = mid; } else { left = mid + 1; } } var n = start2 - left; switch (n) { case 3: array[left + 3] = array[left + 2]; case 2: array[left + 2] = array[left + 1]; case 1: array[left + 1] = array[left]; break; default: while (n > 0) { array[left + n] = array[left + n - 1]; n--; } } array[left] = pivot; } } function gallopLeft(value, array, start2, length2, hint, compare2) { var lastOffset = 0; var maxOffset = 0; var offset = 1; if (compare2(value, array[start2 + hint]) > 0) { maxOffset = length2 - hint; while (offset < maxOffset && compare2(value, array[start2 + hint + offset]) > 0) { lastOffset = offset; offset = (offset << 1) + 1; if (offset <= 0) { offset = maxOffset; } } if (offset > maxOffset) { offset = maxOffset; } lastOffset += hint; offset += hint; } else { maxOffset = hint + 1; while (offset < maxOffset && compare2(value, array[start2 + hint - offset]) <= 0) { lastOffset = offset; offset = (offset << 1) + 1; if (offset <= 0) { offset = maxOffset; } } if (offset > maxOffset) { offset = maxOffset; } var tmp = lastOffset; lastOffset = hint - offset; offset = hint - tmp; } lastOffset++; while (lastOffset < offset) { var m2 = lastOffset + (offset - lastOffset >>> 1); if (compare2(value, array[start2 + m2]) > 0) { lastOffset = m2 + 1; } else { offset = m2; } } return offset; } function gallopRight(value, array, start2, length2, hint, compare2) { var lastOffset = 0; var maxOffset = 0; var offset = 1; if (compare2(value, array[start2 + hint]) < 0) { maxOffset = hint + 1; while (offset < maxOffset && compare2(value, array[start2 + hint - offset]) < 0) { lastOffset = offset; offset = (offset << 1) + 1; if (offset <= 0) { offset = maxOffset; } } if (offset > maxOffset) { offset = maxOffset; } var tmp = lastOffset; lastOffset = hint - offset; offset = hint - tmp; } else { maxOffset = length2 - hint; while (offset < maxOffset && compare2(value, array[start2 + hint + offset]) >= 0) { lastOffset = offset; offset = (offset << 1) + 1; if (offset <= 0) { offset = maxOffset; } } if (offset > maxOffset) { offset = maxOffset; } lastOffset += hint; offset += hint; } lastOffset++; while (lastOffset < offset) { var m2 = lastOffset + (offset - lastOffset >>> 1); if (compare2(value, array[start2 + m2]) < 0) { offset = m2; } else { lastOffset = m2 + 1; } } return offset; } function TimSort(array, compare2) { var minGallop = DEFAULT_MIN_GALLOPING; var runStart; var runLength; var stackSize = 0; var tmp = []; runStart = []; runLength = []; function pushRun(_runStart, _runLength) { runStart[stackSize] = _runStart; runLength[stackSize] = _runLength; stackSize += 1; } function mergeRuns() { while (stackSize > 1) { var n = stackSize - 2; if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) { if (runLength[n - 1] < runLength[n + 1]) { n--; } } else if (runLength[n] > runLength[n + 1]) { break; } mergeAt(n); } } function forceMergeRuns() { while (stackSize > 1) { var n = stackSize - 2; if (n > 0 && runLength[n - 1] < runLength[n + 1]) { n--; } mergeAt(n); } } function mergeAt(i) { var start1 = runStart[i]; var length1 = runLength[i]; var start2 = runStart[i + 1]; var length2 = runLength[i + 1]; runLength[i] = length1 + length2; if (i === stackSize - 3) { runStart[i + 1] = runStart[i + 2]; runLength[i + 1] = runLength[i + 2]; } stackSize--; var k = gallopRight(array[start2], array, start1, length1, 0, compare2); start1 += k; length1 -= k; if (length1 === 0) { return; } length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare2); if (length2 === 0) { return; } if (length1 <= length2) { mergeLow(start1, length1, start2, length2); } else { mergeHigh(start1, length1, start2, length2); } } function mergeLow(start1, length1, start2, length2) { var i = 0; for (i = 0; i < length1; i++) { tmp[i] = array[start1 + i]; } var cursor1 = 0; var cursor2 = start2; var dest = start1; array[dest++] = array[cursor2++]; if (--length2 === 0) { for (i = 0; i < length1; i++) { array[dest + i] = tmp[cursor1 + i]; } return; } if (length1 === 1) { for (i = 0; i < length2; i++) { array[dest + i] = array[cursor2 + i]; } array[dest + length2] = tmp[cursor1]; return; } var _minGallop = minGallop; var count1; var count2; var exit; while (1) { count1 = 0; count2 = 0; exit = false; do { if (compare2(array[cursor2], tmp[cursor1]) < 0) { array[dest++] = array[cursor2++]; count2++; count1 = 0; if (--length2 === 0) { exit = true; break; } } else { array[dest++] = tmp[cursor1++]; count1++; count2 = 0; if (--length1 === 1) { exit = true; break; } } } while ((count1 | count2) < _minGallop); if (exit) { break; } do { count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare2); if (count1 !== 0) { for (i = 0; i < count1; i++) { array[dest + i] = tmp[cursor1 + i]; } dest += count1; cursor1 += count1; length1 -= count1; if (length1 <= 1) { exit = true; break; } } array[dest++] = array[cursor2++]; if (--length2 === 0) { exit = true; break; } count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare2); if (count2 !== 0) { for (i = 0; i < count2; i++) { array[dest + i] = array[cursor2 + i]; } dest += count2; cursor2 += count2; length2 -= count2; if (length2 === 0) { exit = true; break; } } array[dest++] = tmp[cursor1++]; if (--length1 === 1) { exit = true; break; } _minGallop--; } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); if (exit) { break; } if (_minGallop < 0) { _minGallop = 0; } _minGallop += 2; } minGallop = _minGallop; minGallop < 1 && (minGallop = 1); if (length1 === 1) { for (i = 0; i < length2; i++) { array[dest + i] = array[cursor2 + i]; } array[dest + length2] = tmp[cursor1]; } else if (length1 === 0) { throw new Error(); } else { for (i = 0; i < length1; i++) { array[dest + i] = tmp[cursor1 + i]; } } } function mergeHigh(start1, length1, start2, length2) { var i = 0; for (i = 0; i < length2; i++) { tmp[i] = array[start2 + i]; } var cursor1 = start1 + length1 - 1; var cursor2 = length2 - 1; var dest = start2 + length2 - 1; var customCursor = 0; var customDest = 0; array[dest--] = array[cursor1--]; if (--length1 === 0) { customCursor = dest - (length2 - 1); for (i = 0; i < length2; i++) { array[customCursor + i] = tmp[i]; } return; } if (length2 === 1) { dest -= length1; cursor1 -= length1; customDest = dest + 1; customCursor = cursor1 + 1; for (i = length1 - 1; i >= 0; i--) { array[customDest + i] = array[customCursor + i]; } array[dest] = tmp[cursor2]; return; } var _minGallop = minGallop; while (true) { var count1 = 0; var count2 = 0; var exit = false; do { if (compare2(tmp[cursor2], array[cursor1]) < 0) { array[dest--] = array[cursor1--]; count1++; count2 = 0; if (--length1 === 0) { exit = true; break; } } else { array[dest--] = tmp[cursor2--]; count2++; count1 = 0; if (--length2 === 1) { exit = true; break; } } } while ((count1 | count2) < _minGallop); if (exit) { break; } do { count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare2); if (count1 !== 0) { dest -= count1; cursor1 -= count1; length1 -= count1; customDest = dest + 1; customCursor = cursor1 + 1; for (i = count1 - 1; i >= 0; i--) { array[customDest + i] = array[customCursor + i]; } if (length1 === 0) { exit = true; break; } } array[dest--] = tmp[cursor2--]; if (--length2 === 1) { exit = true; break; } count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare2); if (count2 !== 0) { dest -= count2; cursor2 -= count2; length2 -= count2; customDest = dest + 1; customCursor = cursor2 + 1; for (i = 0; i < count2; i++) { array[customDest + i] = tmp[customCursor + i]; } if (length2 <= 1) { exit = true; break; } } array[dest--] = array[cursor1--]; if (--length1 === 0) { exit = true; break; } _minGallop--; } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); if (exit) { break; } if (_minGallop < 0) { _minGallop = 0; } _minGallop += 2; } minGallop = _minGallop; if (minGallop < 1) { minGallop = 1; } if (length2 === 1) { dest -= length1; cursor1 -= length1; customDest = dest + 1; customCursor = cursor1 + 1; for (i = length1 - 1; i >= 0; i--) { array[customDest + i] = array[customCursor + i]; } array[dest] = tmp[cursor2]; } else if (length2 === 0) { throw new Error(); } else { customCursor = dest - (length2 - 1); for (i = 0; i < length2; i++) { array[customCursor + i] = tmp[i]; } } } return { mergeRuns, forceMergeRuns, pushRun }; } function sort$2(array, compare2, lo, hi) { if (!lo) { lo = 0; } if (!hi) { hi = array.length; } var remaining = hi - lo; if (remaining < 2) { return; } var runLength = 0; if (remaining < DEFAULT_MIN_MERGE) { runLength = makeAscendingRun(array, lo, hi, compare2); binaryInsertionSort(array, lo, hi, lo + runLength, compare2); return; } var ts = TimSort(array, compare2); var minRun = minRunLength(remaining); do { runLength = makeAscendingRun(array, lo, hi, compare2); if (runLength < minRun) { var force = remaining; if (force > minRun) { force = minRun; } binaryInsertionSort(array, lo, lo + force, lo + runLength, compare2); runLength = force; } ts.pushRun(lo, runLength); ts.mergeRuns(); remaining -= runLength; lo += runLength; } while (remaining !== 0); ts.forceMergeRuns(); } var REDRAW_BIT = 1; var STYLE_CHANGED_BIT = 2; var SHAPE_CHANGED_BIT = 4; var invalidZErrorLogged = false; function logInvalidZError() { if (invalidZErrorLogged) { return; } invalidZErrorLogged = true; console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"); } function shapeCompareFunc(a, b) { if (a.zlevel === b.zlevel) { if (a.z === b.z) { return a.z2 - b.z2; } return a.z - b.z; } return a.zlevel - b.zlevel; } var Storage = function() { function Storage2() { this._roots = []; this._displayList = []; this._displayListLen = 0; this.displayableSortFunc = shapeCompareFunc; } Storage2.prototype.traverse = function(cb, context) { for (var i = 0; i < this._roots.length; i++) { this._roots[i].traverse(cb, context); } }; Storage2.prototype.getDisplayList = function(update, includeIgnore) { includeIgnore = includeIgnore || false; var displayList = this._displayList; if (update || !displayList.length) { this.updateDisplayList(includeIgnore); } return displayList; }; Storage2.prototype.updateDisplayList = function(includeIgnore) { this._displayListLen = 0; var roots2 = this._roots; var displayList = this._displayList; for (var i = 0, len2 = roots2.length; i < len2; i++) { this._updateAndAddDisplayable(roots2[i], null, includeIgnore); } displayList.length = this._displayListLen; env$1.canvasSupported && sort$2(displayList, shapeCompareFunc); }; Storage2.prototype._updateAndAddDisplayable = function(el, clipPaths, includeIgnore) { if (el.ignore && !includeIgnore) { return; } el.beforeUpdate(); el.update(); el.afterUpdate(); var userSetClipPath = el.getClipPath(); if (el.ignoreClip) { clipPaths = null; } else if (userSetClipPath) { if (clipPaths) { clipPaths = clipPaths.slice(); } else { clipPaths = []; } var currentClipPath = userSetClipPath; var parentClipPath = el; while (currentClipPath) { currentClipPath.parent = parentClipPath; currentClipPath.updateTransform(); clipPaths.push(currentClipPath); parentClipPath = currentClipPath; currentClipPath = currentClipPath.getClipPath(); } } if (el.childrenRef) { var children = el.childrenRef(); for (var i = 0; i < children.length; i++) { var child = children[i]; if (el.__dirty) { child.__dirty |= REDRAW_BIT; } this._updateAndAddDisplayable(child, clipPaths, includeIgnore); } el.__dirty = 0; } else { var disp = el; if (clipPaths && clipPaths.length) { disp.__clipPaths = clipPaths; } else if (disp.__clipPaths && disp.__clipPaths.length > 0) { disp.__clipPaths = []; } if (isNaN(disp.z)) { logInvalidZError(); disp.z = 0; } if (isNaN(disp.z2)) { logInvalidZError(); disp.z2 = 0; } if (isNaN(disp.zlevel)) { logInvalidZError(); disp.zlevel = 0; } this._displayList[this._displayListLen++] = disp; } var decalEl = el.getDecalElement && el.getDecalElement(); if (decalEl) { this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore); } var textGuide = el.getTextGuideLine(); if (textGuide) { this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore); } var textEl = el.getTextContent(); if (textEl) { this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore); } }; Storage2.prototype.addRoot = function(el) { if (el.__zr && el.__zr.storage === this) { return; } this._roots.push(el); }; Storage2.prototype.delRoot = function(el) { if (el instanceof Array) { for (var i = 0, l = el.length; i < l; i++) { this.delRoot(el[i]); } return; } var idx = indexOf(this._roots, el); if (idx >= 0) { this._roots.splice(idx, 1); } }; Storage2.prototype.delAllRoots = function() { this._roots = []; this._displayList = []; this._displayListLen = 0; return; }; Storage2.prototype.getRoots = function() { return this._roots; }; Storage2.prototype.dispose = function() { this._displayList = null; this._roots = null; }; return Storage2; }(); var Storage$1 = Storage; var requestAnimationFrame; requestAnimationFrame = typeof window !== "undefined" && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(func) { return setTimeout(func, 16); }; var requestAnimationFrame$1 = requestAnimationFrame; var easing = { linear: function(k) { return k; }, quadraticIn: function(k) { return k * k; }, quadraticOut: function(k) { return k * (2 - k); }, quadraticInOut: function(k) { if ((k *= 2) < 1) { return 0.5 * k * k; } return -0.5 * (--k * (k - 2) - 1); }, cubicIn: function(k) { return k * k * k; }, cubicOut: function(k) { return --k * k * k + 1; }, cubicInOut: function(k) { if ((k *= 2) < 1) { return 0.5 * k * k * k; } return 0.5 * ((k -= 2) * k * k + 2); }, quarticIn: function(k) { return k * k * k * k; }, quarticOut: function(k) { return 1 - --k * k * k * k; }, quarticInOut: function(k) { if ((k *= 2) < 1) { return 0.5 * k * k * k * k; } return -0.5 * ((k -= 2) * k * k * k - 2); }, quinticIn: function(k) { return k * k * k * k * k; }, quinticOut: function(k) { return --k * k * k * k * k + 1; }, quinticInOut: function(k) { if ((k *= 2) < 1) { return 0.5 * k * k * k * k * k; } return 0.5 * ((k -= 2) * k * k * k * k + 2); }, sinusoidalIn: function(k) { return 1 - Math.cos(k * Math.PI / 2); }, sinusoidalOut: function(k) { return Math.sin(k * Math.PI / 2); }, sinusoidalInOut: function(k) { return 0.5 * (1 - Math.cos(Math.PI * k)); }, exponentialIn: function(k) { return k === 0 ? 0 : Math.pow(1024, k - 1); }, exponentialOut: function(k) { return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); }, exponentialInOut: function(k) { if (k === 0) { return 0; } if (k === 1) { return 1; } if ((k *= 2) < 1) { return 0.5 * Math.pow(1024, k - 1); } return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); }, circularIn: function(k) { return 1 - Math.sqrt(1 - k * k); }, circularOut: function(k) { return Math.sqrt(1 - --k * k); }, circularInOut: function(k) { if ((k *= 2) < 1) { return -0.5 * (Math.sqrt(1 - k * k) - 1); } return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); }, elasticIn: function(k) { var s; var a = 0.1; var p = 0.4; if (k === 0) { return 0; } if (k === 1) { return 1; } if (!a || a < 1) { a = 1; s = p / 4; } else { s = p * Math.asin(1 / a) / (2 * Math.PI); } return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); }, elasticOut: function(k) { var s; var a = 0.1; var p = 0.4; if (k === 0) { return 0; } if (k === 1) { return 1; } if (!a || a < 1) { a = 1; s = p / 4; } else { s = p * Math.asin(1 / a) / (2 * Math.PI); } return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1; }, elasticInOut: function(k) { var s; var a = 0.1; var p = 0.4; if (k === 0) { return 0; } if (k === 1) { return 1; } if (!a || a < 1) { a = 1; s = p / 4; } else { s = p * Math.asin(1 / a) / (2 * Math.PI); } if ((k *= 2) < 1) { return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); } return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1; }, backIn: function(k) { var s = 1.70158; return k * k * ((s + 1) * k - s); }, backOut: function(k) { var s = 1.70158; return --k * k * ((s + 1) * k + s) + 1; }, backInOut: function(k) { var s = 1.70158 * 1.525; if ((k *= 2) < 1) { return 0.5 * (k * k * ((s + 1) * k - s)); } return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); }, bounceIn: function(k) { return 1 - easing.bounceOut(1 - k); }, bounceOut: function(k) { if (k < 1 / 2.75) { return 7.5625 * k * k; } else if (k < 2 / 2.75) { return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75; } else if (k < 2.5 / 2.75) { return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375; } else { return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375; } }, bounceInOut: function(k) { if (k < 0.5) { return easing.bounceIn(k * 2) * 0.5; } return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5; } }; var easingFuncs = easing; var Clip = function() { function Clip2(opts) { this._initialized = false; this._startTime = 0; this._pausedTime = 0; this._paused = false; this._life = opts.life || 1e3; this._delay = opts.delay || 0; this.loop = opts.loop == null ? false : opts.loop; this.gap = opts.gap || 0; this.easing = opts.easing || "linear"; this.onframe = opts.onframe; this.ondestroy = opts.ondestroy; this.onrestart = opts.onrestart; } Clip2.prototype.step = function(globalTime, deltaTime) { if (!this._initialized) { this._startTime = globalTime + this._delay; this._initialized = true; } if (this._paused) { this._pausedTime += deltaTime; return; } var percent = (globalTime - this._startTime - this._pausedTime) / this._life; if (percent < 0) { percent = 0; } percent = Math.min(percent, 1); var easing2 = this.easing; var easingFunc = typeof easing2 === "string" ? easingFuncs[easing2] : easing2; var schedule = typeof easingFunc === "function" ? easingFunc(percent) : percent; this.onframe && this.onframe(schedule); if (percent === 1) { if (this.loop) { this._restart(globalTime); this.onrestart && this.onrestart(); } else { return true; } } return false; }; Clip2.prototype._restart = function(globalTime) { var remainder = (globalTime - this._startTime - this._pausedTime) % this._life; this._startTime = globalTime - remainder + this.gap; this._pausedTime = 0; }; Clip2.prototype.pause = function() { this._paused = true; }; Clip2.prototype.resume = function() { this._paused = false; }; return Clip2; }(); var Clip$1 = Clip; var Entry = function() { function Entry2(val) { this.value = val; } return Entry2; }(); var LinkedList = function() { function LinkedList2() { this._len = 0; } LinkedList2.prototype.insert = function(val) { var entry = new Entry(val); this.insertEntry(entry); return entry; }; LinkedList2.prototype.insertEntry = function(entry) { if (!this.head) { this.head = this.tail = entry; } else { this.tail.next = entry; entry.prev = this.tail; entry.next = null; this.tail = entry; } this._len++; }; LinkedList2.prototype.remove = function(entry) { var prev = entry.prev; var next = entry.next; if (prev) { prev.next = next; } else { this.head = next; } if (next) { next.prev = prev; } else { this.tail = prev; } entry.next = entry.prev = null; this._len--; }; LinkedList2.prototype.len = function() { return this._len; }; LinkedList2.prototype.clear = function() { this.head = this.tail = null; this._len = 0; }; return LinkedList2; }(); var LRU = function() { function LRU2(maxSize) { this._list = new LinkedList(); this._maxSize = 10; this._map = {}; this._maxSize = maxSize; } LRU2.prototype.put = function(key2, value) { var list2 = this._list; var map2 = this._map; var removed = null; if (map2[key2] == null) { var len2 = list2.len(); var entry = this._lastRemovedEntry; if (len2 >= this._maxSize && len2 > 0) { var leastUsedEntry = list2.head; list2.remove(leastUsedEntry); delete map2[leastUsedEntry.key]; removed = leastUsedEntry.value; this._lastRemovedEntry = leastUsedEntry; } if (entry) { entry.value = value; } else { entry = new Entry(value); } entry.key = key2; list2.insertEntry(entry); map2[key2] = entry; } return removed; }; LRU2.prototype.get = function(key2) { var entry = this._map[key2]; var list2 = this._list; if (entry != null) { if (entry !== list2.tail) { list2.remove(entry); list2.insertEntry(entry); } return entry.value; } }; LRU2.prototype.clear = function() { this._list.clear(); this._map = {}; }; LRU2.prototype.len = function() { return this._list.len(); }; return LRU2; }(); var LRU$1 = LRU; var kCSSColorTable = { "transparent": [0, 0, 0, 0], "aliceblue": [240, 248, 255, 1], "antiquewhite": [250, 235, 215, 1], "aqua": [0, 255, 255, 1], "aquamarine": [127, 255, 212, 1], "azure": [240, 255, 255, 1], "beige": [245, 245, 220, 1], "bisque": [255, 228, 196, 1], "black": [0, 0, 0, 1], "blanchedalmond": [255, 235, 205, 1], "blue": [0, 0, 255, 1], "blueviolet": [138, 43, 226, 1], "brown": [165, 42, 42, 1], "burlywood": [222, 184, 135, 1], "cadetblue": [95, 158, 160, 1], "chartreuse": [127, 255, 0, 1], "chocolate": [210, 105, 30, 1], "coral": [255, 127, 80, 1], "cornflowerblue": [100, 149, 237, 1], "cornsilk": [255, 248, 220, 1], "crimson": [220, 20, 60, 1], "cyan": [0, 255, 255, 1], "darkblue": [0, 0, 139, 1], "darkcyan": [0, 139, 139, 1], "darkgoldenrod": [184, 134, 11, 1], "darkgray": [169, 169, 169, 1], "darkgreen": [0, 100, 0, 1], "darkgrey": [169, 169, 169, 1], "darkkhaki": [189, 183, 107, 1], "darkmagenta": [139, 0, 139, 1], "darkolivegreen": [85, 107, 47, 1], "darkorange": [255, 140, 0, 1], "darkorchid": [153, 50, 204, 1], "darkred": [139, 0, 0, 1], "darksalmon": [233, 150, 122, 1], "darkseagreen": [143, 188, 143, 1], "darkslateblue": [72, 61, 139, 1], "darkslategray": [47, 79, 79, 1], "darkslategrey": [47, 79, 79, 1], "darkturquoise": [0, 206, 209, 1], "darkviolet": [148, 0, 211, 1], "deeppink": [255, 20, 147, 1], "deepskyblue": [0, 191, 255, 1], "dimgray": [105, 105, 105, 1], "dimgrey": [105, 105, 105, 1], "dodgerblue": [30, 144, 255, 1], "firebrick": [178, 34, 34, 1], "floralwhite": [255, 250, 240, 1], "forestgreen": [34, 139, 34, 1], "fuchsia": [255, 0, 255, 1], "gainsboro": [220, 220, 220, 1], "ghostwhite": [248, 248, 255, 1], "gold": [255, 215, 0, 1], "goldenrod": [218, 165, 32, 1], "gray": [128, 128, 128, 1], "green": [0, 128, 0, 1], "greenyellow": [173, 255, 47, 1], "grey": [128, 128, 128, 1], "honeydew": [240, 255, 240, 1], "hotpink": [255, 105, 180, 1], "indianred": [205, 92, 92, 1], "indigo": [75, 0, 130, 1], "ivory": [255, 255, 240, 1], "khaki": [240, 230, 140, 1], "lavender": [230, 230, 250, 1], "lavenderblush": [255, 240, 245, 1], "lawngreen": [124, 252, 0, 1], "lemonchiffon": [255, 250, 205, 1], "lightblue": [173, 216, 230, 1], "lightcoral": [240, 128, 128, 1], "lightcyan": [224, 255, 255, 1], "lightgoldenrodyellow": [250, 250, 210, 1], "lightgray": [211, 211, 211, 1], "lightgreen": [144, 238, 144, 1], "lightgrey": [211, 211, 211, 1], "lightpink": [255, 182, 193, 1], "lightsalmon": [255, 160, 122, 1], "lightseagreen": [32, 178, 170, 1], "lightskyblue": [135, 206, 250, 1], "lightslategray": [119, 136, 153, 1], "lightslategrey": [119, 136, 153, 1], "lightsteelblue": [176, 196, 222, 1], "lightyellow": [255, 255, 224, 1], "lime": [0, 255, 0, 1], "limegreen": [50, 205, 50, 1], "linen": [250, 240, 230, 1], "magenta": [255, 0, 255, 1], "maroon": [128, 0, 0, 1], "mediumaquamarine": [102, 205, 170, 1], "mediumblue": [0, 0, 205, 1], "mediumorchid": [186, 85, 211, 1], "mediumpurple": [147, 112, 219, 1], "mediumseagreen": [60, 179, 113, 1], "mediumslateblue": [123, 104, 238, 1], "mediumspringgreen": [0, 250, 154, 1], "mediumturquoise": [72, 209, 204, 1], "mediumvioletred": [199, 21, 133, 1], "midnightblue": [25, 25, 112, 1], "mintcream": [245, 255, 250, 1], "mistyrose": [255, 228, 225, 1], "moccasin": [255, 228, 181, 1], "navajowhite": [255, 222, 173, 1], "navy": [0, 0, 128, 1], "oldlace": [253, 245, 230, 1], "olive": [128, 128, 0, 1], "olivedrab": [107, 142, 35, 1], "orange": [255, 165, 0, 1], "orangered": [255, 69, 0, 1], "orchid": [218, 112, 214, 1], "palegoldenrod": [238, 232, 170, 1], "palegreen": [152, 251, 152, 1], "paleturquoise": [175, 238, 238, 1], "palevioletred": [219, 112, 147, 1], "papayawhip": [255, 239, 213, 1], "peachpuff": [255, 218, 185, 1], "peru": [205, 133, 63, 1], "pink": [255, 192, 203, 1], "plum": [221, 160, 221, 1], "powderblue": [176, 224, 230, 1], "purple": [128, 0, 128, 1], "red": [255, 0, 0, 1], "rosybrown": [188, 143, 143, 1], "royalblue": [65, 105, 225, 1], "saddlebrown": [139, 69, 19, 1], "salmon": [250, 128, 114, 1], "sandybrown": [244, 164, 96, 1], "seagreen": [46, 139, 87, 1], "seashell": [255, 245, 238, 1], "sienna": [160, 82, 45, 1], "silver": [192, 192, 192, 1], "skyblue": [135, 206, 235, 1], "slateblue": [106, 90, 205, 1], "slategray": [112, 128, 144, 1], "slategrey": [112, 128, 144, 1], "snow": [255, 250, 250, 1], "springgreen": [0, 255, 127, 1], "steelblue": [70, 130, 180, 1], "tan": [210, 180, 140, 1], "teal": [0, 128, 128, 1], "thistle": [216, 191, 216, 1], "tomato": [255, 99, 71, 1], "turquoise": [64, 224, 208, 1], "violet": [238, 130, 238, 1], "wheat": [245, 222, 179, 1], "white": [255, 255, 255, 1], "whitesmoke": [245, 245, 245, 1], "yellow": [255, 255, 0, 1], "yellowgreen": [154, 205, 50, 1] }; function clampCssByte(i) { i = Math.round(i); return i < 0 ? 0 : i > 255 ? 255 : i; } function clampCssAngle(i) { i = Math.round(i); return i < 0 ? 0 : i > 360 ? 360 : i; } function clampCssFloat(f) { return f < 0 ? 0 : f > 1 ? 1 : f; } function parseCssInt(val) { var str = val; if (str.length && str.charAt(str.length - 1) === "%") { return clampCssByte(parseFloat(str) / 100 * 255); } return clampCssByte(parseInt(str, 10)); } function parseCssFloat(val) { var str = val; if (str.length && str.charAt(str.length - 1) === "%") { return clampCssFloat(parseFloat(str) / 100); } return clampCssFloat(parseFloat(str)); } function cssHueToRgb(m1, m2, h) { if (h < 0) { h += 1; } else if (h > 1) { h -= 1; } if (h * 6 < 1) { return m1 + (m2 - m1) * h * 6; } if (h * 2 < 1) { return m2; } if (h * 3 < 2) { return m1 + (m2 - m1) * (2 / 3 - h) * 6; } return m1; } function lerpNumber(a, b, p) { return a + (b - a) * p; } function setRgba(out2, r, g, b, a) { out2[0] = r; out2[1] = g; out2[2] = b; out2[3] = a; return out2; } function copyRgba(out2, a) { out2[0] = a[0]; out2[1] = a[1]; out2[2] = a[2]; out2[3] = a[3]; return out2; } var colorCache = new LRU$1(20); var lastRemovedArr = null; function putToCache(colorStr, rgbaArr) { if (lastRemovedArr) { copyRgba(lastRemovedArr, rgbaArr); } lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice()); } function parse(colorStr, rgbaArr) { if (!colorStr) { return; } rgbaArr = rgbaArr || []; var cached = colorCache.get(colorStr); if (cached) { return copyRgba(rgbaArr, cached); } colorStr = colorStr + ""; var str = colorStr.replace(/ /g, "").toLowerCase(); if (str in kCSSColorTable) { copyRgba(rgbaArr, kCSSColorTable[str]); putToCache(colorStr, rgbaArr); return rgbaArr; } var strLen = str.length; if (str.charAt(0) === "#") { if (strLen === 4 || strLen === 5) { var iv = parseInt(str.slice(1, 4), 16); if (!(iv >= 0 && iv <= 4095)) { setRgba(rgbaArr, 0, 0, 0, 1); return; } setRgba(rgbaArr, (iv & 3840) >> 4 | (iv & 3840) >> 8, iv & 240 | (iv & 240) >> 4, iv & 15 | (iv & 15) << 4, strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1); putToCache(colorStr, rgbaArr); return rgbaArr; } else if (strLen === 7 || strLen === 9) { var iv = parseInt(str.slice(1, 7), 16); if (!(iv >= 0 && iv <= 16777215)) { setRgba(rgbaArr, 0, 0, 0, 1); return; } setRgba(rgbaArr, (iv & 16711680) >> 16, (iv & 65280) >> 8, iv & 255, strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1); putToCache(colorStr, rgbaArr); return rgbaArr; } return; } var op = str.indexOf("("); var ep = str.indexOf(")"); if (op !== -1 && ep + 1 === strLen) { var fname = str.substr(0, op); var params = str.substr(op + 1, ep - (op + 1)).split(","); var alpha = 1; switch (fname) { case "rgba": if (params.length !== 4) { return params.length === 3 ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1); } alpha = parseCssFloat(params.pop()); case "rgb": if (params.length !== 3) { setRgba(rgbaArr, 0, 0, 0, 1); return; } setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha); putToCache(colorStr, rgbaArr); return rgbaArr; case "hsla": if (params.length !== 4) { setRgba(rgbaArr, 0, 0, 0, 1); return; } params[3] = parseCssFloat(params[3]); hsla2rgba(params, rgbaArr); putToCache(colorStr, rgbaArr); return rgbaArr; case "hsl": if (params.length !== 3) { setRgba(rgbaArr, 0, 0, 0, 1); return; } hsla2rgba(params, rgbaArr); putToCache(colorStr, rgbaArr); return rgbaArr; default: return; } } setRgba(rgbaArr, 0, 0, 0, 1); return; } function hsla2rgba(hsla, rgba) { var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; var s = parseCssFloat(hsla[1]); var l = parseCssFloat(hsla[2]); var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; var m1 = l * 2 - m2; rgba = rgba || []; setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1); if (hsla.length === 4) { rgba[3] = hsla[3]; } return rgba; } function rgba2hsla(rgba) { if (!rgba) { return; } var R = rgba[0] / 255; var G = rgba[1] / 255; var B = rgba[2] / 255; var vMin = Math.min(R, G, B); var vMax = Math.max(R, G, B); var delta = vMax - vMin; var L = (vMax + vMin) / 2; var H; var S; if (delta === 0) { H = 0; S = 0; } else { if (L < 0.5) { S = delta / (vMax + vMin); } else { S = delta / (2 - vMax - vMin); } var deltaR = ((vMax - R) / 6 + delta / 2) / delta; var deltaG = ((vMax - G) / 6 + delta / 2) / delta; var deltaB = ((vMax - B) / 6 + delta / 2) / delta; if (R === vMax) { H = deltaB - deltaG; } else if (G === vMax) { H = 1 / 3 + deltaR - deltaB; } else if (B === vMax) { H = 2 / 3 + deltaG - deltaR; } if (H < 0) { H += 1; } if (H > 1) { H -= 1; } } var hsla = [H * 360, S, L]; if (rgba[3] != null) { hsla.push(rgba[3]); } return hsla; } function lift(color2, level) { var colorArr = parse(color2); if (colorArr) { for (var i = 0; i < 3; i++) { if (level < 0) { colorArr[i] = colorArr[i] * (1 - level) | 0; } else { colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0; } if (colorArr[i] > 255) { colorArr[i] = 255; } else if (colorArr[i] < 0) { colorArr[i] = 0; } } return stringify(colorArr, colorArr.length === 4 ? "rgba" : "rgb"); } } function toHex(color2) { var colorArr = parse(color2); if (colorArr) { return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1); } } function fastLerp(normalizedValue, colors, out2) { if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { return; } out2 = out2 || []; var value = normalizedValue * (colors.length - 1); var leftIndex = Math.floor(value); var rightIndex = Math.ceil(value); var leftColor = colors[leftIndex]; var rightColor = colors[rightIndex]; var dv = value - leftIndex; out2[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)); out2[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)); out2[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)); out2[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)); return out2; } var fastMapToColor = fastLerp; function lerp(normalizedValue, colors, fullOutput) { if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { return; } var value = normalizedValue * (colors.length - 1); var leftIndex = Math.floor(value); var rightIndex = Math.ceil(value); var leftColor = parse(colors[leftIndex]); var rightColor = parse(colors[rightIndex]); var dv = value - leftIndex; var color2 = stringify([ clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)) ], "rgba"); return fullOutput ? { color: color2, leftIndex, rightIndex, value } : color2; } var mapToColor = lerp; function modifyHSL(color2, h, s, l) { var colorArr = parse(color2); if (color2) { colorArr = rgba2hsla(colorArr); h != null && (colorArr[0] = clampCssAngle(h)); s != null && (colorArr[1] = parseCssFloat(s)); l != null && (colorArr[2] = parseCssFloat(l)); return stringify(hsla2rgba(colorArr), "rgba"); } } function modifyAlpha(color2, alpha) { var colorArr = parse(color2); if (colorArr && alpha != null) { colorArr[3] = clampCssFloat(alpha); return stringify(colorArr, "rgba"); } } function stringify(arrColor, type) { if (!arrColor || !arrColor.length) { return; } var colorStr = arrColor[0] + "," + arrColor[1] + "," + arrColor[2]; if (type === "rgba" || type === "hsva" || type === "hsla") { colorStr += "," + arrColor[3]; } return type + "(" + colorStr + ")"; } function lum(color2, backgroundLum) { var arr = parse(color2); return arr ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + (1 - arr[3]) * backgroundLum : 0; } function random() { var r = Math.round(Math.random() * 255); var g = Math.round(Math.random() * 255); var b = Math.round(Math.random() * 255); return "rgb(" + r + "," + g + "," + b + ")"; } var color = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", parse, lift, toHex, fastLerp, fastMapToColor, lerp, mapToColor, modifyHSL, modifyAlpha, stringify, lum, random }); var arraySlice = Array.prototype.slice; function interpolateNumber(p0, p1, percent) { return (p1 - p0) * percent + p0; } function step(p0, p1, percent) { return percent > 0.5 ? p1 : p0; } function interpolate1DArray(out2, p0, p1, percent) { var len2 = p0.length; for (var i = 0; i < len2; i++) { out2[i] = interpolateNumber(p0[i], p1[i], percent); } } function interpolate2DArray(out2, p0, p1, percent) { var len2 = p0.length; var len22 = len2 && p0[0].length; for (var i = 0; i < len2; i++) { if (!out2[i]) { out2[i] = []; } for (var j = 0; j < len22; j++) { out2[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent); } } } function add1DArray(out2, p0, p1, sign) { var len2 = p0.length; for (var i = 0; i < len2; i++) { out2[i] = p0[i] + p1[i] * sign; } return out2; } function add2DArray(out2, p0, p1, sign) { var len2 = p0.length; var len22 = len2 && p0[0].length; for (var i = 0; i < len2; i++) { if (!out2[i]) { out2[i] = []; } for (var j = 0; j < len22; j++) { out2[i][j] = p0[i][j] + p1[i][j] * sign; } } return out2; } function fillArray(val0, val1, arrDim) { var arr0 = val0; var arr1 = val1; if (!arr0.push || !arr1.push) { return; } var arr0Len = arr0.length; var arr1Len = arr1.length; if (arr0Len !== arr1Len) { var isPreviousLarger = arr0Len > arr1Len; if (isPreviousLarger) { arr0.length = arr1Len; } else { for (var i = arr0Len; i < arr1Len; i++) { arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i])); } } } var len2 = arr0[0] && arr0[0].length; for (var i = 0; i < arr0.length; i++) { if (arrDim === 1) { if (isNaN(arr0[i])) { arr0[i] = arr1[i]; } } else { for (var j = 0; j < len2; j++) { if (isNaN(arr0[i][j])) { arr0[i][j] = arr1[i][j]; } } } } } function is1DArraySame(arr0, arr1) { var len2 = arr0.length; if (len2 !== arr1.length) { return false; } for (var i = 0; i < len2; i++) { if (arr0[i] !== arr1[i]) { return false; } } return true; } function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) { var v0 = (p2 - p0) * 0.5; var v12 = (p3 - p1) * 0.5; return (2 * (p1 - p2) + v0 + v12) * t3 + (-3 * (p1 - p2) - 2 * v0 - v12) * t2 + v0 * t + p1; } function catmullRomInterpolate1DArray(out2, p0, p1, p2, p3, t, t2, t3) { var len2 = p0.length; for (var i = 0; i < len2; i++) { out2[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3); } } function catmullRomInterpolate2DArray(out2, p0, p1, p2, p3, t, t2, t3) { var len2 = p0.length; var len22 = p0[0].length; for (var i = 0; i < len2; i++) { if (!out2[i]) { out2[1] = []; } for (var j = 0; j < len22; j++) { out2[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3); } } } function cloneValue(value) { if (isArrayLike(value)) { var len2 = value.length; if (isArrayLike(value[0])) { var ret = []; for (var i = 0; i < len2; i++) { ret.push(arraySlice.call(value[i])); } return ret; } return arraySlice.call(value); } return value; } function rgba2String(rgba) { rgba[0] = Math.floor(rgba[0]); rgba[1] = Math.floor(rgba[1]); rgba[2] = Math.floor(rgba[2]); return "rgba(" + rgba.join(",") + ")"; } function guessArrayDim(value) { return isArrayLike(value && value[0]) ? 2 : 1; } var tmpRgba = [0, 0, 0, 0]; var Track = function() { function Track2(propName) { this.keyframes = []; this.maxTime = 0; this.arrDim = 0; this.interpolable = true; this._needsSort = false; this._isAllValueEqual = true; this._lastFrame = 0; this._lastFramePercent = 0; this.propName = propName; } Track2.prototype.isFinished = function() { return this._finished; }; Track2.prototype.setFinished = function() { this._finished = true; if (this._additiveTrack) { this._additiveTrack.setFinished(); } }; Track2.prototype.needsAnimate = function() { return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable && this.maxTime > 0; }; Track2.prototype.getAdditiveTrack = function() { return this._additiveTrack; }; Track2.prototype.addKeyframe = function(time2, value) { if (time2 >= this.maxTime) { this.maxTime = time2; } else { this._needsSort = true; } var keyframes = this.keyframes; var len2 = keyframes.length; if (this.interpolable) { if (isArrayLike(value)) { var arrayDim = guessArrayDim(value); if (len2 > 0 && this.arrDim !== arrayDim) { this.interpolable = false; return; } if (arrayDim === 1 && typeof value[0] !== "number" || arrayDim === 2 && typeof value[0][0] !== "number") { this.interpolable = false; return; } if (len2 > 0) { var lastFrame = keyframes[len2 - 1]; if (this._isAllValueEqual) { if (arrayDim === 1) { if (!is1DArraySame(value, lastFrame.value)) { this._isAllValueEqual = false; } } else { this._isAllValueEqual = false; } } } this.arrDim = arrayDim; } else { if (this.arrDim > 0) { this.interpolable = false; return; } if (typeof value === "string") { var colorArray = parse(value); if (colorArray) { value = colorArray; this.isValueColor = true; } else { this.interpolable = false; } } else if (typeof value !== "number" || isNaN(value)) { this.interpolable = false; return; } if (this._isAllValueEqual && len2 > 0) { var lastFrame = keyframes[len2 - 1]; if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) { this._isAllValueEqual = false; } else if (lastFrame.value !== value) { this._isAllValueEqual = false; } } } } var kf = { time: time2, value, percent: 0 }; this.keyframes.push(kf); return kf; }; Track2.prototype.prepare = function(additiveTrack) { var kfs = this.keyframes; if (this._needsSort) { kfs.sort(function(a, b) { return a.time - b.time; }); } var arrDim = this.arrDim; var kfsLen = kfs.length; var lastKf = kfs[kfsLen - 1]; for (var i = 0; i < kfsLen; i++) { kfs[i].percent = kfs[i].time / this.maxTime; if (arrDim > 0 && i !== kfsLen - 1) { fillArray(kfs[i].value, lastKf.value, arrDim); } } if (additiveTrack && this.needsAnimate() && additiveTrack.needsAnimate() && arrDim === additiveTrack.arrDim && this.isValueColor === additiveTrack.isValueColor && !additiveTrack._finished) { this._additiveTrack = additiveTrack; var startValue = kfs[0].value; for (var i = 0; i < kfsLen; i++) { if (arrDim === 0) { if (this.isValueColor) { kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1); } else { kfs[i].additiveValue = kfs[i].value - startValue; } } else if (arrDim === 1) { kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1); } else if (arrDim === 2) { kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1); } } } }; Track2.prototype.step = function(target, percent) { if (this._finished) { return; } if (this._additiveTrack && this._additiveTrack._finished) { this._additiveTrack = null; } var isAdditive = this._additiveTrack != null; var valueKey = isAdditive ? "additiveValue" : "value"; var keyframes = this.keyframes; var kfsNum = this.keyframes.length; var propName = this.propName; var arrDim = this.arrDim; var isValueColor = this.isValueColor; var frameIdx; if (percent < 0) { frameIdx = 0; } else if (percent < this._lastFramePercent) { var start2 = Math.min(this._lastFrame + 1, kfsNum - 1); for (frameIdx = start2; frameIdx >= 0; frameIdx--) { if (keyframes[frameIdx].percent <= percent) { break; } } frameIdx = Math.min(frameIdx, kfsNum - 2); } else { for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) { if (keyframes[frameIdx].percent > percent) { break; } } frameIdx = Math.min(frameIdx - 1, kfsNum - 2); } var nextFrame = keyframes[frameIdx + 1]; var frame = keyframes[frameIdx]; if (!(frame && nextFrame)) { return; } this._lastFrame = frameIdx; this._lastFramePercent = percent; var range = nextFrame.percent - frame.percent; if (range === 0) { return; } var w = (percent - frame.percent) / range; var targetArr = isAdditive ? this._additiveValue : isValueColor ? tmpRgba : target[propName]; if ((arrDim > 0 || isValueColor) && !targetArr) { targetArr = this._additiveValue = []; } if (this.useSpline) { var p1 = keyframes[frameIdx][valueKey]; var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey]; var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey]; var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey]; if (arrDim > 0) { arrDim === 1 ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w) : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w); } else if (isValueColor) { catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w); if (!isAdditive) { target[propName] = rgba2String(targetArr); } } else { var value = void 0; if (!this.interpolable) { value = p2; } else { value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w); } if (isAdditive) { this._additiveValue = value; } else { target[propName] = value; } } } else { if (arrDim > 0) { arrDim === 1 ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w) : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); } else if (isValueColor) { interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); if (!isAdditive) { target[propName] = rgba2String(targetArr); } } else { var value = void 0; if (!this.interpolable) { value = step(frame[valueKey], nextFrame[valueKey], w); } else { value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w); } if (isAdditive) { this._additiveValue = value; } else { target[propName] = value; } } } if (isAdditive) { this._addToTarget(target); } }; Track2.prototype._addToTarget = function(target) { var arrDim = this.arrDim; var propName = this.propName; var additiveValue = this._additiveValue; if (arrDim === 0) { if (this.isValueColor) { parse(target[propName], tmpRgba); add1DArray(tmpRgba, tmpRgba, additiveValue, 1); target[propName] = rgba2String(tmpRgba); } else { target[propName] = target[propName] + additiveValue; } } else if (arrDim === 1) { add1DArray(target[propName], target[propName], additiveValue, 1); } else if (arrDim === 2) { add2DArray(target[propName], target[propName], additiveValue, 1); } }; return Track2; }(); var Animator = function() { function Animator2(target, loop, additiveTo) { this._tracks = {}; this._trackKeys = []; this._delay = 0; this._maxTime = 0; this._paused = false; this._started = 0; this._clip = null; this._target = target; this._loop = loop; if (loop && additiveTo) { logError("Can' use additive animation on looped animation."); return; } this._additiveAnimators = additiveTo; } Animator2.prototype.getTarget = function() { return this._target; }; Animator2.prototype.changeTarget = function(target) { this._target = target; }; Animator2.prototype.when = function(time2, props) { return this.whenWithKeys(time2, props, keys(props)); }; Animator2.prototype.whenWithKeys = function(time2, props, propNames) { var tracks = this._tracks; for (var i = 0; i < propNames.length; i++) { var propName = propNames[i]; var track = tracks[propName]; if (!track) { track = tracks[propName] = new Track(propName); var initialValue = void 0; var additiveTrack = this._getAdditiveTrack(propName); if (additiveTrack) { var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1]; initialValue = lastFinalKf && lastFinalKf.value; if (additiveTrack.isValueColor && initialValue) { initialValue = rgba2String(initialValue); } } else { initialValue = this._target[propName]; } if (initialValue == null) { continue; } if (time2 !== 0) { track.addKeyframe(0, cloneValue(initialValue)); } this._trackKeys.push(propName); } track.addKeyframe(time2, cloneValue(props[propName])); } this._maxTime = Math.max(this._maxTime, time2); return this; }; Animator2.prototype.pause = function() { this._clip.pause(); this._paused = true; }; Animator2.prototype.resume = function() { this._clip.resume(); this._paused = false; }; Animator2.prototype.isPaused = function() { return !!this._paused; }; Animator2.prototype._doneCallback = function() { this._setTracksFinished(); this._clip = null; var doneList = this._doneCbs; if (doneList) { var len2 = doneList.length; for (var i = 0; i < len2; i++) { doneList[i].call(this); } } }; Animator2.prototype._abortedCallback = function() { this._setTracksFinished(); var animation = this.animation; var abortedList = this._abortedCbs; if (animation) { animation.removeClip(this._clip); } this._clip = null; if (abortedList) { for (var i = 0; i < abortedList.length; i++) { abortedList[i].call(this); } } }; Animator2.prototype._setTracksFinished = function() { var tracks = this._tracks; var tracksKeys = this._trackKeys; for (var i = 0; i < tracksKeys.length; i++) { tracks[tracksKeys[i]].setFinished(); } }; Animator2.prototype._getAdditiveTrack = function(trackName) { var additiveTrack; var additiveAnimators = this._additiveAnimators; if (additiveAnimators) { for (var i = 0; i < additiveAnimators.length; i++) { var track = additiveAnimators[i].getTrack(trackName); if (track) { additiveTrack = track; } } } return additiveTrack; }; Animator2.prototype.start = function(easing2, forceAnimate) { if (this._started > 0) { return; } this._started = 1; var self2 = this; var tracks = []; for (var i = 0; i < this._trackKeys.length; i++) { var propName = this._trackKeys[i]; var track = this._tracks[propName]; var additiveTrack = this._getAdditiveTrack(propName); var kfs = track.keyframes; track.prepare(additiveTrack); if (track.needsAnimate()) { tracks.push(track); } else if (!track.interpolable) { var lastKf = kfs[kfs.length - 1]; if (lastKf) { self2._target[track.propName] = lastKf.value; } } } if (tracks.length || forceAnimate) { var clip2 = new Clip$1({ life: this._maxTime, loop: this._loop, delay: this._delay, onframe: function(percent) { self2._started = 2; var additiveAnimators = self2._additiveAnimators; if (additiveAnimators) { var stillHasAdditiveAnimator = false; for (var i2 = 0; i2 < additiveAnimators.length; i2++) { if (additiveAnimators[i2]._clip) { stillHasAdditiveAnimator = true; break; } } if (!stillHasAdditiveAnimator) { self2._additiveAnimators = null; } } for (var i2 = 0; i2 < tracks.length; i2++) { tracks[i2].step(self2._target, percent); } var onframeList = self2._onframeCbs; if (onframeList) { for (var i2 = 0; i2 < onframeList.length; i2++) { onframeList[i2](self2._target, percent); } } }, ondestroy: function() { self2._doneCallback(); } }); this._clip = clip2; if (this.animation) { this.animation.addClip(clip2); } if (easing2 && easing2 !== "spline") { clip2.easing = easing2; } } else { this._doneCallback(); } return this; }; Animator2.prototype.stop = function(forwardToLast) { if (!this._clip) { return; } var clip2 = this._clip; if (forwardToLast) { clip2.onframe(1); } this._abortedCallback(); }; Animator2.prototype.delay = function(time2) { this._delay = time2; return this; }; Animator2.prototype.during = function(cb) { if (cb) { if (!this._onframeCbs) { this._onframeCbs = []; } this._onframeCbs.push(cb); } return this; }; Animator2.prototype.done = function(cb) { if (cb) { if (!this._doneCbs) { this._doneCbs = []; } this._doneCbs.push(cb); } return this; }; Animator2.prototype.aborted = function(cb) { if (cb) { if (!this._abortedCbs) { this._abortedCbs = []; } this._abortedCbs.push(cb); } return this; }; Animator2.prototype.getClip = function() { return this._clip; }; Animator2.prototype.getTrack = function(propName) { return this._tracks[propName]; }; Animator2.prototype.stopTracks = function(propNames, forwardToLast) { if (!propNames.length || !this._clip) { return true; } var tracks = this._tracks; var tracksKeys = this._trackKeys; for (var i = 0; i < propNames.length; i++) { var track = tracks[propNames[i]]; if (track) { if (forwardToLast) { track.step(this._target, 1); } else if (this._started === 1) { track.step(this._target, 0); } track.setFinished(); } } var allAborted = true; for (var i = 0; i < tracksKeys.length; i++) { if (!tracks[tracksKeys[i]].isFinished()) { allAborted = false; break; } } if (allAborted) { this._abortedCallback(); } return allAborted; }; Animator2.prototype.saveFinalToTarget = function(target, trackKeys) { if (!target) { return; } trackKeys = trackKeys || this._trackKeys; for (var i = 0; i < trackKeys.length; i++) { var propName = trackKeys[i]; var track = this._tracks[propName]; if (!track || track.isFinished()) { continue; } var kfs = track.keyframes; var lastKf = kfs[kfs.length - 1]; if (lastKf) { var val = cloneValue(lastKf.value); if (track.isValueColor) { val = rgba2String(val); } target[propName] = val; } } }; Animator2.prototype.__changeFinalValue = function(finalProps, trackKeys) { trackKeys = trackKeys || keys(finalProps); for (var i = 0; i < trackKeys.length; i++) { var propName = trackKeys[i]; var track = this._tracks[propName]; if (!track) { continue; } var kfs = track.keyframes; if (kfs.length > 1) { var lastKf = kfs.pop(); track.addKeyframe(lastKf.time, finalProps[propName]); track.prepare(track.getAdditiveTrack()); } } }; return Animator2; }(); var Animator$1 = Animator; var Animation = function(_super) { __extends(Animation2, _super); function Animation2(opts) { var _this = _super.call(this) || this; _this._running = false; _this._time = 0; _this._pausedTime = 0; _this._pauseStart = 0; _this._paused = false; opts = opts || {}; _this.stage = opts.stage || {}; _this.onframe = opts.onframe || function() { }; return _this; } Animation2.prototype.addClip = function(clip2) { if (clip2.animation) { this.removeClip(clip2); } if (!this._clipsHead) { this._clipsHead = this._clipsTail = clip2; } else { this._clipsTail.next = clip2; clip2.prev = this._clipsTail; clip2.next = null; this._clipsTail = clip2; } clip2.animation = this; }; Animation2.prototype.addAnimator = function(animator) { animator.animation = this; var clip2 = animator.getClip(); if (clip2) { this.addClip(clip2); } }; Animation2.prototype.removeClip = function(clip2) { if (!clip2.animation) { return; } var prev = clip2.prev; var next = clip2.next; if (prev) { prev.next = next; } else { this._clipsHead = next; } if (next) { next.prev = prev; } else { this._clipsTail = prev; } clip2.next = clip2.prev = clip2.animation = null; }; Animation2.prototype.removeAnimator = function(animator) { var clip2 = animator.getClip(); if (clip2) { this.removeClip(clip2); } animator.animation = null; }; Animation2.prototype.update = function(notTriggerFrameAndStageUpdate) { var time2 = new Date().getTime() - this._pausedTime; var delta = time2 - this._time; var clip2 = this._clipsHead; while (clip2) { var nextClip = clip2.next; var finished2 = clip2.step(time2, delta); if (finished2) { clip2.ondestroy && clip2.ondestroy(); this.removeClip(clip2); clip2 = nextClip; } else { clip2 = nextClip; } } this._time = time2; if (!notTriggerFrameAndStageUpdate) { this.onframe(delta); this.trigger("frame", delta); this.stage.update && this.stage.update(); } }; Animation2.prototype._startLoop = function() { var self2 = this; this._running = true; function step2() { if (self2._running) { requestAnimationFrame$1(step2); !self2._paused && self2.update(); } } requestAnimationFrame$1(step2); }; Animation2.prototype.start = function() { if (this._running) { return; } this._time = new Date().getTime(); this._pausedTime = 0; this._startLoop(); }; Animation2.prototype.stop = function() { this._running = false; }; Animation2.prototype.pause = function() { if (!this._paused) { this._pauseStart = new Date().getTime(); this._paused = true; } }; Animation2.prototype.resume = function() { if (this._paused) { this._pausedTime += new Date().getTime() - this._pauseStart; this._paused = false; } }; Animation2.prototype.clear = function() { var clip2 = this._clipsHead; while (clip2) { var nextClip = clip2.next; clip2.prev = clip2.next = clip2.animation = null; clip2 = nextClip; } this._clipsHead = this._clipsTail = null; }; Animation2.prototype.isFinished = function() { return this._clipsHead == null; }; Animation2.prototype.animate = function(target, options) { options = options || {}; this.start(); var animator = new Animator$1(target, options.loop); this.addAnimator(animator); return animator; }; return Animation2; }(Eventful$1); var Animation$1 = Animation; var TOUCH_CLICK_DELAY = 300; var globalEventSupported = env$1.domSupported; var localNativeListenerNames = function() { var mouseHandlerNames = [ "click", "dblclick", "mousewheel", "wheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ]; var touchHandlerNames = [ "touchstart", "touchend", "touchmove" ]; var pointerEventNameMap = { pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 }; var pointerHandlerNames = map$1(mouseHandlerNames, function(name) { var nm = name.replace("mouse", "pointer"); return pointerEventNameMap.hasOwnProperty(nm) ? nm : name; }); return { mouse: mouseHandlerNames, touch: touchHandlerNames, pointer: pointerHandlerNames }; }(); var globalNativeListenerNames = { mouse: ["mousemove", "mouseup"], pointer: ["pointermove", "pointerup"] }; var wheelEventSupported = false; function isPointerFromTouch(event) { var pointerType = event.pointerType; return pointerType === "pen" || pointerType === "touch"; } function setTouchTimer(scope) { scope.touching = true; if (scope.touchTimer != null) { clearTimeout(scope.touchTimer); scope.touchTimer = null; } scope.touchTimer = setTimeout(function() { scope.touching = false; scope.touchTimer = null; }, 700); } function markTouch(event) { event && (event.zrByTouch = true); } function normalizeGlobalEvent(instance, event) { return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true); } function isLocalEl(instance, el) { var elTmp = el; var isLocal = false; while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) { elTmp = elTmp.parentNode; } return isLocal; } var FakeGlobalEvent = function() { function FakeGlobalEvent2(instance, event) { this.stopPropagation = noop$1; this.stopImmediatePropagation = noop$1; this.preventDefault = noop$1; this.type = event.type; this.target = this.currentTarget = instance.dom; this.pointerType = event.pointerType; this.clientX = event.clientX; this.clientY = event.clientY; } return FakeGlobalEvent2; }(); var localDOMHandlers = { mousedown: function(event) { event = normalizeEvent(this.dom, event); this.__mayPointerCapture = [event.zrX, event.zrY]; this.trigger("mousedown", event); }, mousemove: function(event) { event = normalizeEvent(this.dom, event); var downPoint = this.__mayPointerCapture; if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) { this.__togglePointerCapture(true); } this.trigger("mousemove", event); }, mouseup: function(event) { event = normalizeEvent(this.dom, event); this.__togglePointerCapture(false); this.trigger("mouseup", event); }, mouseout: function(event) { event = normalizeEvent(this.dom, event); var element = event.toElement || event.relatedTarget; if (!isLocalEl(this, element)) { if (this.__pointerCapturing) { event.zrEventControl = "no_globalout"; } this.trigger("mouseout", event); } }, wheel: function(event) { wheelEventSupported = true; event = normalizeEvent(this.dom, event); this.trigger("mousewheel", event); }, mousewheel: function(event) { if (wheelEventSupported) { return; } event = normalizeEvent(this.dom, event); this.trigger("mousewheel", event); }, touchstart: function(event) { event = normalizeEvent(this.dom, event); markTouch(event); this.__lastTouchMoment = new Date(); this.handler.processGesture(event, "start"); localDOMHandlers.mousemove.call(this, event); localDOMHandlers.mousedown.call(this, event); }, touchmove: function(event) { event = normalizeEvent(this.dom, event); markTouch(event); this.handler.processGesture(event, "change"); localDOMHandlers.mousemove.call(this, event); }, touchend: function(event) { event = normalizeEvent(this.dom, event); markTouch(event); this.handler.processGesture(event, "end"); localDOMHandlers.mouseup.call(this, event); if (+new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY) { localDOMHandlers.click.call(this, event); } }, pointerdown: function(event) { localDOMHandlers.mousedown.call(this, event); }, pointermove: function(event) { if (!isPointerFromTouch(event)) { localDOMHandlers.mousemove.call(this, event); } }, pointerup: function(event) { localDOMHandlers.mouseup.call(this, event); }, pointerout: function(event) { if (!isPointerFromTouch(event)) { localDOMHandlers.mouseout.call(this, event); } } }; each$g(["click", "dblclick", "contextmenu"], function(name) { localDOMHandlers[name] = function(event) { event = normalizeEvent(this.dom, event); this.trigger(name, event); }; }); var globalDOMHandlers = { pointermove: function(event) { if (!isPointerFromTouch(event)) { globalDOMHandlers.mousemove.call(this, event); } }, pointerup: function(event) { globalDOMHandlers.mouseup.call(this, event); }, mousemove: function(event) { this.trigger("mousemove", event); }, mouseup: function(event) { var pointerCaptureReleasing = this.__pointerCapturing; this.__togglePointerCapture(false); this.trigger("mouseup", event); if (pointerCaptureReleasing) { event.zrEventControl = "only_globalout"; this.trigger("mouseout", event); } } }; function mountLocalDOMEventListeners(instance, scope) { var domHandlers = scope.domHandlers; if (env$1.pointerEventsSupported) { each$g(localNativeListenerNames.pointer, function(nativeEventName) { mountSingleDOMEventListener(scope, nativeEventName, function(event) { domHandlers[nativeEventName].call(instance, event); }); }); } else { if (env$1.touchEventsSupported) { each$g(localNativeListenerNames.touch, function(nativeEventName) { mountSingleDOMEventListener(scope, nativeEventName, function(event) { domHandlers[nativeEventName].call(instance, event); setTouchTimer(scope); }); }); } each$g(localNativeListenerNames.mouse, function(nativeEventName) { mountSingleDOMEventListener(scope, nativeEventName, function(event) { event = getNativeEvent(event); if (!scope.touching) { domHandlers[nativeEventName].call(instance, event); } }); }); } } function mountGlobalDOMEventListeners(instance, scope) { if (env$1.pointerEventsSupported) { each$g(globalNativeListenerNames.pointer, mount); } else if (!env$1.touchEventsSupported) { each$g(globalNativeListenerNames.mouse, mount); } function mount(nativeEventName) { function nativeEventListener(event) { event = getNativeEvent(event); if (!isLocalEl(instance, event.target)) { event = normalizeGlobalEvent(instance, event); scope.domHandlers[nativeEventName].call(instance, event); } } mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true }); } } function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) { scope.mounted[nativeEventName] = listener; scope.listenerOpts[nativeEventName] = opt; addEventListener(scope.domTarget, nativeEventName, listener, opt); } function unmountDOMEventListeners(scope) { var mounted = scope.mounted; for (var nativeEventName in mounted) { if (mounted.hasOwnProperty(nativeEventName)) { removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]); } } scope.mounted = {}; } var DOMHandlerScope = function() { function DOMHandlerScope2(domTarget, domHandlers) { this.mounted = {}; this.listenerOpts = {}; this.touching = false; this.domTarget = domTarget; this.domHandlers = domHandlers; } return DOMHandlerScope2; }(); var HandlerDomProxy = function(_super) { __extends(HandlerDomProxy2, _super); function HandlerDomProxy2(dom, painterRoot) { var _this = _super.call(this) || this; _this.__pointerCapturing = false; _this.dom = dom; _this.painterRoot = painterRoot; _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers); if (globalEventSupported) { _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers); } mountLocalDOMEventListeners(_this, _this._localHandlerScope); return _this; } HandlerDomProxy2.prototype.dispose = function() { unmountDOMEventListeners(this._localHandlerScope); if (globalEventSupported) { unmountDOMEventListeners(this._globalHandlerScope); } }; HandlerDomProxy2.prototype.setCursor = function(cursorStyle) { this.dom.style && (this.dom.style.cursor = cursorStyle || "default"); }; HandlerDomProxy2.prototype.__togglePointerCapture = function(isPointerCapturing) { this.__mayPointerCapture = null; if (globalEventSupported && +this.__pointerCapturing ^ +isPointerCapturing) { this.__pointerCapturing = isPointerCapturing; var globalHandlerScope = this._globalHandlerScope; isPointerCapturing ? mountGlobalDOMEventListeners(this, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope); } }; return HandlerDomProxy2; }(Eventful$1); var HandlerProxy = HandlerDomProxy; var dpr = 1; if (typeof window !== "undefined") { dpr = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1); } var devicePixelRatio = dpr; var DARK_MODE_THRESHOLD = 0.4; var DARK_LABEL_COLOR = "#333"; var LIGHT_LABEL_COLOR = "#ccc"; var LIGHTER_LABEL_COLOR = "#eee"; function create$1() { return [1, 0, 0, 1, 0, 0]; } function identity(out2) { out2[0] = 1; out2[1] = 0; out2[2] = 0; out2[3] = 1; out2[4] = 0; out2[5] = 0; return out2; } function copy(out2, m2) { out2[0] = m2[0]; out2[1] = m2[1]; out2[2] = m2[2]; out2[3] = m2[3]; out2[4] = m2[4]; out2[5] = m2[5]; return out2; } function mul(out2, m1, m2) { var out0 = m1[0] * m2[0] + m1[2] * m2[1]; var out1 = m1[1] * m2[0] + m1[3] * m2[1]; var out22 = m1[0] * m2[2] + m1[2] * m2[3]; var out3 = m1[1] * m2[2] + m1[3] * m2[3]; var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]; var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]; out2[0] = out0; out2[1] = out1; out2[2] = out22; out2[3] = out3; out2[4] = out4; out2[5] = out5; return out2; } function translate(out2, a, v) { out2[0] = a[0]; out2[1] = a[1]; out2[2] = a[2]; out2[3] = a[3]; out2[4] = a[4] + v[0]; out2[5] = a[5] + v[1]; return out2; } function rotate(out2, a, rad) { var aa = a[0]; var ac = a[2]; var atx = a[4]; var ab = a[1]; var ad = a[3]; var aty = a[5]; var st = Math.sin(rad); var ct = Math.cos(rad); out2[0] = aa * ct + ab * st; out2[1] = -aa * st + ab * ct; out2[2] = ac * ct + ad * st; out2[3] = -ac * st + ct * ad; out2[4] = ct * atx + st * aty; out2[5] = ct * aty - st * atx; return out2; } function scale$1(out2, a, v) { var vx = v[0]; var vy = v[1]; out2[0] = a[0] * vx; out2[1] = a[1] * vy; out2[2] = a[2] * vx; out2[3] = a[3] * vy; out2[4] = a[4] * vx; out2[5] = a[5] * vy; return out2; } function invert(out2, a) { var aa = a[0]; var ac = a[2]; var atx = a[4]; var ab = a[1]; var ad = a[3]; var aty = a[5]; var det = aa * ad - ab * ac; if (!det) { return null; } det = 1 / det; out2[0] = ad * det; out2[1] = -ab * det; out2[2] = -ac * det; out2[3] = aa * det; out2[4] = (ac * aty - ad * atx) * det; out2[5] = (ab * atx - aa * aty) * det; return out2; } function clone$2(a) { var b = create$1(); copy(b, a); return b; } var matrix = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", create: create$1, identity, copy, mul, translate, rotate, scale: scale$1, invert, clone: clone$2 }); var mIdentity = identity; var EPSILON$4 = 5e-5; function isNotAroundZero$1(val) { return val > EPSILON$4 || val < -EPSILON$4; } var scaleTmp = []; var tmpTransform = []; var originTransform = create$1(); var abs = Math.abs; var Transformable = function() { function Transformable2() { } Transformable2.prototype.getLocalTransform = function(m2) { return Transformable2.getLocalTransform(this, m2); }; Transformable2.prototype.setPosition = function(arr) { this.x = arr[0]; this.y = arr[1]; }; Transformable2.prototype.setScale = function(arr) { this.scaleX = arr[0]; this.scaleY = arr[1]; }; Transformable2.prototype.setSkew = function(arr) { this.skewX = arr[0]; this.skewY = arr[1]; }; Transformable2.prototype.setOrigin = function(arr) { this.originX = arr[0]; this.originY = arr[1]; }; Transformable2.prototype.needLocalTransform = function() { return isNotAroundZero$1(this.rotation) || isNotAroundZero$1(this.x) || isNotAroundZero$1(this.y) || isNotAroundZero$1(this.scaleX - 1) || isNotAroundZero$1(this.scaleY - 1); }; Transformable2.prototype.updateTransform = function() { var parentTransform = this.parent && this.parent.transform; var needLocalTransform = this.needLocalTransform(); var m2 = this.transform; if (!(needLocalTransform || parentTransform)) { m2 && mIdentity(m2); return; } m2 = m2 || create$1(); if (needLocalTransform) { this.getLocalTransform(m2); } else { mIdentity(m2); } if (parentTransform) { if (needLocalTransform) { mul(m2, parentTransform, m2); } else { copy(m2, parentTransform); } } this.transform = m2; this._resolveGlobalScaleRatio(m2); }; Transformable2.prototype._resolveGlobalScaleRatio = function(m2) { var globalScaleRatio = this.globalScaleRatio; if (globalScaleRatio != null && globalScaleRatio !== 1) { this.getGlobalScale(scaleTmp); var relX = scaleTmp[0] < 0 ? -1 : 1; var relY = scaleTmp[1] < 0 ? -1 : 1; var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0; var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0; m2[0] *= sx; m2[1] *= sx; m2[2] *= sy; m2[3] *= sy; } this.invTransform = this.invTransform || create$1(); invert(this.invTransform, m2); }; Transformable2.prototype.getComputedTransform = function() { var transformNode = this; var ancestors = []; while (transformNode) { ancestors.push(transformNode); transformNode = transformNode.parent; } while (transformNode = ancestors.pop()) { transformNode.updateTransform(); } return this.transform; }; Transformable2.prototype.setLocalTransform = function(m2) { if (!m2) { return; } var sx = m2[0] * m2[0] + m2[1] * m2[1]; var sy = m2[2] * m2[2] + m2[3] * m2[3]; var rotation = Math.atan2(m2[1], m2[0]); var shearX = Math.PI / 2 + rotation - Math.atan2(m2[3], m2[2]); sy = Math.sqrt(sy) * Math.cos(shearX); sx = Math.sqrt(sx); this.skewX = shearX; this.skewY = 0; this.rotation = -rotation; this.x = +m2[4]; this.y = +m2[5]; this.scaleX = sx; this.scaleY = sy; this.originX = 0; this.originY = 0; }; Transformable2.prototype.decomposeTransform = function() { if (!this.transform) { return; } var parent = this.parent; var m2 = this.transform; if (parent && parent.transform) { mul(tmpTransform, parent.invTransform, m2); m2 = tmpTransform; } var ox = this.originX; var oy = this.originY; if (ox || oy) { originTransform[4] = ox; originTransform[5] = oy; mul(tmpTransform, m2, originTransform); tmpTransform[4] -= ox; tmpTransform[5] -= oy; m2 = tmpTransform; } this.setLocalTransform(m2); }; Transformable2.prototype.getGlobalScale = function(out2) { var m2 = this.transform; out2 = out2 || []; if (!m2) { out2[0] = 1; out2[1] = 1; return out2; } out2[0] = Math.sqrt(m2[0] * m2[0] + m2[1] * m2[1]); out2[1] = Math.sqrt(m2[2] * m2[2] + m2[3] * m2[3]); if (m2[0] < 0) { out2[0] = -out2[0]; } if (m2[3] < 0) { out2[1] = -out2[1]; } return out2; }; Transformable2.prototype.transformCoordToLocal = function(x, y) { var v22 = [x, y]; var invTransform = this.invTransform; if (invTransform) { applyTransform$1(v22, v22, invTransform); } return v22; }; Transformable2.prototype.transformCoordToGlobal = function(x, y) { var v22 = [x, y]; var transform2 = this.transform; if (transform2) { applyTransform$1(v22, v22, transform2); } return v22; }; Transformable2.prototype.getLineScale = function() { var m2 = this.transform; return m2 && abs(m2[0] - 1) > 1e-10 && abs(m2[3] - 1) > 1e-10 ? Math.sqrt(abs(m2[0] * m2[3] - m2[2] * m2[1])) : 1; }; Transformable2.prototype.copyTransform = function(source) { var target = this; for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) { var propName = TRANSFORMABLE_PROPS[i]; target[propName] = source[propName]; } }; Transformable2.getLocalTransform = function(target, m2) { m2 = m2 || []; var ox = target.originX || 0; var oy = target.originY || 0; var sx = target.scaleX; var sy = target.scaleY; var rotation = target.rotation || 0; var x = target.x; var y = target.y; var skewX = target.skewX ? Math.tan(target.skewX) : 0; var skewY = target.skewY ? Math.tan(-target.skewY) : 0; if (ox || oy) { m2[4] = -ox * sx - skewX * oy * sy; m2[5] = -oy * sy - skewY * ox * sx; } else { m2[4] = m2[5] = 0; } m2[0] = sx; m2[3] = sy; m2[1] = skewY * sx; m2[2] = skewX * sy; rotation && rotate(m2, m2, rotation); m2[4] += ox + x; m2[5] += oy + y; return m2; }; Transformable2.initDefaultProps = function() { var proto2 = Transformable2.prototype; proto2.x = 0; proto2.y = 0; proto2.scaleX = 1; proto2.scaleY = 1; proto2.originX = 0; proto2.originY = 0; proto2.skewX = 0; proto2.skewY = 0; proto2.rotation = 0; proto2.globalScaleRatio = 1; }(); return Transformable2; }(); var TRANSFORMABLE_PROPS = [ "x", "y", "originX", "originY", "rotation", "scaleX", "scaleY", "skewX", "skewY" ]; var Transformable$1 = Transformable; var Point = function() { function Point2(x, y) { this.x = x || 0; this.y = y || 0; } Point2.prototype.copy = function(other) { this.x = other.x; this.y = other.y; return this; }; Point2.prototype.clone = function() { return new Point2(this.x, this.y); }; Point2.prototype.set = function(x, y) { this.x = x; this.y = y; return this; }; Point2.prototype.equal = function(other) { return other.x === this.x && other.y === this.y; }; Point2.prototype.add = function(other) { this.x += other.x; this.y += other.y; return this; }; Point2.prototype.scale = function(scalar) { this.x *= scalar; this.y *= scalar; }; Point2.prototype.scaleAndAdd = function(other, scalar) { this.x += other.x * scalar; this.y += other.y * scalar; }; Point2.prototype.sub = function(other) { this.x -= other.x; this.y -= other.y; return this; }; Point2.prototype.dot = function(other) { return this.x * other.x + this.y * other.y; }; Point2.prototype.len = function() { return Math.sqrt(this.x * this.x + this.y * this.y); }; Point2.prototype.lenSquare = function() { return this.x * this.x + this.y * this.y; }; Point2.prototype.normalize = function() { var len2 = this.len(); this.x /= len2; this.y /= len2; return this; }; Point2.prototype.distance = function(other) { var dx = this.x - other.x; var dy = this.y - other.y; return Math.sqrt(dx * dx + dy * dy); }; Point2.prototype.distanceSquare = function(other) { var dx = this.x - other.x; var dy = this.y - other.y; return dx * dx + dy * dy; }; Point2.prototype.negate = function() { this.x = -this.x; this.y = -this.y; return this; }; Point2.prototype.transform = function(m2) { if (!m2) { return; } var x = this.x; var y = this.y; this.x = m2[0] * x + m2[2] * y + m2[4]; this.y = m2[1] * x + m2[3] * y + m2[5]; return this; }; Point2.prototype.toArray = function(out2) { out2[0] = this.x; out2[1] = this.y; return out2; }; Point2.prototype.fromArray = function(input) { this.x = input[0]; this.y = input[1]; }; Point2.set = function(p, x, y) { p.x = x; p.y = y; }; Point2.copy = function(p, p2) { p.x = p2.x; p.y = p2.y; }; Point2.len = function(p) { return Math.sqrt(p.x * p.x + p.y * p.y); }; Point2.lenSquare = function(p) { return p.x * p.x + p.y * p.y; }; Point2.dot = function(p0, p1) { return p0.x * p1.x + p0.y * p1.y; }; Point2.add = function(out2, p0, p1) { out2.x = p0.x + p1.x; out2.y = p0.y + p1.y; }; Point2.sub = function(out2, p0, p1) { out2.x = p0.x - p1.x; out2.y = p0.y - p1.y; }; Point2.scale = function(out2, p0, scalar) { out2.x = p0.x * scalar; out2.y = p0.y * scalar; }; Point2.scaleAndAdd = function(out2, p0, p1, scalar) { out2.x = p0.x + p1.x * scalar; out2.y = p0.y + p1.y * scalar; }; Point2.lerp = function(out2, p0, p1, t) { var onet = 1 - t; out2.x = onet * p0.x + t * p1.x; out2.y = onet * p0.y + t * p1.y; }; return Point2; }(); var Point$1 = Point; var mathMin$a = Math.min; var mathMax$a = Math.max; var lt = new Point$1(); var rb = new Point$1(); var lb = new Point$1(); var rt = new Point$1(); var minTv$1 = new Point$1(); var maxTv$1 = new Point$1(); var BoundingRect = function() { function BoundingRect2(x, y, width, height) { if (width < 0) { x = x + width; width = -width; } if (height < 0) { y = y + height; height = -height; } this.x = x; this.y = y; this.width = width; this.height = height; } BoundingRect2.prototype.union = function(other) { var x = mathMin$a(other.x, this.x); var y = mathMin$a(other.y, this.y); if (isFinite(this.x) && isFinite(this.width)) { this.width = mathMax$a(other.x + other.width, this.x + this.width) - x; } else { this.width = other.width; } if (isFinite(this.y) && isFinite(this.height)) { this.height = mathMax$a(other.y + other.height, this.y + this.height) - y; } else { this.height = other.height; } this.x = x; this.y = y; }; BoundingRect2.prototype.applyTransform = function(m2) { BoundingRect2.applyTransform(this, this, m2); }; BoundingRect2.prototype.calculateTransform = function(b) { var a = this; var sx = b.width / a.width; var sy = b.height / a.height; var m2 = create$1(); translate(m2, m2, [-a.x, -a.y]); scale$1(m2, m2, [sx, sy]); translate(m2, m2, [b.x, b.y]); return m2; }; BoundingRect2.prototype.intersect = function(b, mtv) { if (!b) { return false; } if (!(b instanceof BoundingRect2)) { b = BoundingRect2.create(b); } var a = this; var ax0 = a.x; var ax1 = a.x + a.width; var ay0 = a.y; var ay1 = a.y + a.height; var bx0 = b.x; var bx1 = b.x + b.width; var by0 = b.y; var by1 = b.y + b.height; var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0); if (mtv) { var dMin = Infinity; var dMax = 0; var d0 = Math.abs(ax1 - bx0); var d1 = Math.abs(bx1 - ax0); var d2 = Math.abs(ay1 - by0); var d3 = Math.abs(by1 - ay0); var dx = Math.min(d0, d1); var dy = Math.min(d2, d3); if (ax1 < bx0 || bx1 < ax0) { if (dx > dMax) { dMax = dx; if (d0 < d1) { Point$1.set(maxTv$1, -d0, 0); } else { Point$1.set(maxTv$1, d1, 0); } } } else { if (dx < dMin) { dMin = dx; if (d0 < d1) { Point$1.set(minTv$1, d0, 0); } else { Point$1.set(minTv$1, -d1, 0); } } } if (ay1 < by0 || by1 < ay0) { if (dy > dMax) { dMax = dy; if (d2 < d3) { Point$1.set(maxTv$1, 0, -d2); } else { Point$1.set(maxTv$1, 0, d3); } } } else { if (dx < dMin) { dMin = dx; if (d2 < d3) { Point$1.set(minTv$1, 0, d2); } else { Point$1.set(minTv$1, 0, -d3); } } } } if (mtv) { Point$1.copy(mtv, overlap ? minTv$1 : maxTv$1); } return overlap; }; BoundingRect2.prototype.contain = function(x, y) { var rect = this; return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height; }; BoundingRect2.prototype.clone = function() { return new BoundingRect2(this.x, this.y, this.width, this.height); }; BoundingRect2.prototype.copy = function(other) { BoundingRect2.copy(this, other); }; BoundingRect2.prototype.plain = function() { return { x: this.x, y: this.y, width: this.width, height: this.height }; }; BoundingRect2.prototype.isFinite = function() { return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height); }; BoundingRect2.prototype.isZero = function() { return this.width === 0 || this.height === 0; }; BoundingRect2.create = function(rect) { return new BoundingRect2(rect.x, rect.y, rect.width, rect.height); }; BoundingRect2.copy = function(target, source) { target.x = source.x; target.y = source.y; target.width = source.width; target.height = source.height; }; BoundingRect2.applyTransform = function(target, source, m2) { if (!m2) { if (target !== source) { BoundingRect2.copy(target, source); } return; } if (m2[1] < 1e-5 && m2[1] > -1e-5 && m2[2] < 1e-5 && m2[2] > -1e-5) { var sx = m2[0]; var sy = m2[3]; var tx = m2[4]; var ty = m2[5]; target.x = source.x * sx + tx; target.y = source.y * sy + ty; target.width = source.width * sx; target.height = source.height * sy; if (target.width < 0) { target.x += target.width; target.width = -target.width; } if (target.height < 0) { target.y += target.height; target.height = -target.height; } return; } lt.x = lb.x = source.x; lt.y = rt.y = source.y; rb.x = rt.x = source.x + source.width; rb.y = lb.y = source.y + source.height; lt.transform(m2); rt.transform(m2); rb.transform(m2); lb.transform(m2); target.x = mathMin$a(lt.x, rb.x, lb.x, rt.x); target.y = mathMin$a(lt.y, rb.y, lb.y, rt.y); var maxX = mathMax$a(lt.x, rb.x, lb.x, rt.x); var maxY = mathMax$a(lt.y, rb.y, lb.y, rt.y); target.width = maxX - target.x; target.height = maxY - target.y; }; return BoundingRect2; }(); var BoundingRect$1 = BoundingRect; var textWidthCache = {}; var DEFAULT_FONT = "12px sans-serif"; var _ctx; var _cachedFont; function defaultMeasureText(text, font) { if (!_ctx) { _ctx = createCanvas().getContext("2d"); } if (_cachedFont !== font) { _cachedFont = _ctx.font = font || DEFAULT_FONT; } return _ctx.measureText(text); } var methods = { measureText: defaultMeasureText }; function getWidth(text, font) { font = font || DEFAULT_FONT; var cacheOfFont = textWidthCache[font]; if (!cacheOfFont) { cacheOfFont = textWidthCache[font] = new LRU$1(500); } var width = cacheOfFont.get(text); if (width == null) { width = methods.measureText(text, font).width; cacheOfFont.put(text, width); } return width; } function innerGetBoundingRect(text, font, textAlign, textBaseline) { var width = getWidth(text, font); var height = getLineHeight(font); var x = adjustTextX(0, width, textAlign); var y = adjustTextY$1(0, height, textBaseline); var rect = new BoundingRect$1(x, y, width, height); return rect; } function getBoundingRect(text, font, textAlign, textBaseline) { var textLines = ((text || "") + "").split("\n"); var len2 = textLines.length; if (len2 === 1) { return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline); } else { var uniondRect = new BoundingRect$1(0, 0, 0, 0); for (var i = 0; i < textLines.length; i++) { var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline); i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect); } return uniondRect; } } function adjustTextX(x, width, textAlign) { if (textAlign === "right") { x -= width; } else if (textAlign === "center") { x -= width / 2; } return x; } function adjustTextY$1(y, height, verticalAlign) { if (verticalAlign === "middle") { y -= height / 2; } else if (verticalAlign === "bottom") { y -= height; } return y; } function getLineHeight(font) { return getWidth("\u56FD", font); } function parsePercent$2(value, maxValue) { if (typeof value === "string") { if (value.lastIndexOf("%") >= 0) { return parseFloat(value) / 100 * maxValue; } return parseFloat(value); } return value; } function calculateTextPosition(out2, opts, rect) { var textPosition = opts.position || "inside"; var distance2 = opts.distance != null ? opts.distance : 5; var height = rect.height; var width = rect.width; var halfHeight = height / 2; var x = rect.x; var y = rect.y; var textAlign = "left"; var textVerticalAlign = "top"; if (textPosition instanceof Array) { x += parsePercent$2(textPosition[0], rect.width); y += parsePercent$2(textPosition[1], rect.height); textAlign = null; textVerticalAlign = null; } else { switch (textPosition) { case "left": x -= distance2; y += halfHeight; textAlign = "right"; textVerticalAlign = "middle"; break; case "right": x += distance2 + width; y += halfHeight; textVerticalAlign = "middle"; break; case "top": x += width / 2; y -= distance2; textAlign = "center"; textVerticalAlign = "bottom"; break; case "bottom": x += width / 2; y += height + distance2; textAlign = "center"; break; case "inside": x += width / 2; y += halfHeight; textAlign = "center"; textVerticalAlign = "middle"; break; case "insideLeft": x += distance2; y += halfHeight; textVerticalAlign = "middle"; break; case "insideRight": x += width - distance2; y += halfHeight; textAlign = "right"; textVerticalAlign = "middle"; break; case "insideTop": x += width / 2; y += distance2; textAlign = "center"; break; case "insideBottom": x += width / 2; y += height - distance2; textAlign = "center"; textVerticalAlign = "bottom"; break; case "insideTopLeft": x += distance2; y += distance2; break; case "insideTopRight": x += width - distance2; y += distance2; textAlign = "right"; break; case "insideBottomLeft": x += distance2; y += height - distance2; textVerticalAlign = "bottom"; break; case "insideBottomRight": x += width - distance2; y += height - distance2; textAlign = "right"; textVerticalAlign = "bottom"; break; } } out2 = out2 || {}; out2.x = x; out2.y = y; out2.align = textAlign; out2.verticalAlign = textVerticalAlign; return out2; } var PRESERVED_NORMAL_STATE = "__zr_normal__"; var PRIMARY_STATES_KEYS$1 = ["x", "y", "scaleX", "scaleY", "originX", "originY", "rotation", "ignore"]; var DEFAULT_ANIMATABLE_MAP = { x: true, y: true, scaleX: true, scaleY: true, originX: true, originY: true, rotation: true, ignore: false }; var tmpTextPosCalcRes = {}; var tmpBoundingRect = new BoundingRect$1(0, 0, 0, 0); var Element = function() { function Element2(props) { this.id = guid(); this.animators = []; this.currentStates = []; this.states = {}; this._init(props); } Element2.prototype._init = function(props) { this.attr(props); }; Element2.prototype.drift = function(dx, dy, e2) { switch (this.draggable) { case "horizontal": dy = 0; break; case "vertical": dx = 0; break; } var m2 = this.transform; if (!m2) { m2 = this.transform = [1, 0, 0, 1, 0, 0]; } m2[4] += dx; m2[5] += dy; this.decomposeTransform(); this.markRedraw(); }; Element2.prototype.beforeUpdate = function() { }; Element2.prototype.afterUpdate = function() { }; Element2.prototype.update = function() { this.updateTransform(); if (this.__dirty) { this.updateInnerText(); } }; Element2.prototype.updateInnerText = function(forceUpdate) { var textEl = this._textContent; if (textEl && (!textEl.ignore || forceUpdate)) { if (!this.textConfig) { this.textConfig = {}; } var textConfig = this.textConfig; var isLocal = textConfig.local; var innerTransformable = textEl.innerTransformable; var textAlign = void 0; var textVerticalAlign = void 0; var textStyleChanged = false; innerTransformable.parent = isLocal ? this : null; var innerOrigin = false; innerTransformable.copyTransform(textEl); if (textConfig.position != null) { var layoutRect = tmpBoundingRect; if (textConfig.layoutRect) { layoutRect.copy(textConfig.layoutRect); } else { layoutRect.copy(this.getBoundingRect()); } if (!isLocal) { layoutRect.applyTransform(this.transform); } if (this.calculateTextPosition) { this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); } else { calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); } innerTransformable.x = tmpTextPosCalcRes.x; innerTransformable.y = tmpTextPosCalcRes.y; textAlign = tmpTextPosCalcRes.align; textVerticalAlign = tmpTextPosCalcRes.verticalAlign; var textOrigin = textConfig.origin; if (textOrigin && textConfig.rotation != null) { var relOriginX = void 0; var relOriginY = void 0; if (textOrigin === "center") { relOriginX = layoutRect.width * 0.5; relOriginY = layoutRect.height * 0.5; } else { relOriginX = parsePercent$2(textOrigin[0], layoutRect.width); relOriginY = parsePercent$2(textOrigin[1], layoutRect.height); } innerOrigin = true; innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x); innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y); } } if (textConfig.rotation != null) { innerTransformable.rotation = textConfig.rotation; } var textOffset = textConfig.offset; if (textOffset) { innerTransformable.x += textOffset[0]; innerTransformable.y += textOffset[1]; if (!innerOrigin) { innerTransformable.originX = -textOffset[0]; innerTransformable.originY = -textOffset[1]; } } var isInside = textConfig.inside == null ? typeof textConfig.position === "string" && textConfig.position.indexOf("inside") >= 0 : textConfig.inside; var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}); var textFill = void 0; var textStroke = void 0; var autoStroke = void 0; if (isInside && this.canBeInsideText()) { textFill = textConfig.insideFill; textStroke = textConfig.insideStroke; if (textFill == null || textFill === "auto") { textFill = this.getInsideTextFill(); } if (textStroke == null || textStroke === "auto") { textStroke = this.getInsideTextStroke(textFill); autoStroke = true; } } else { textFill = textConfig.outsideFill; textStroke = textConfig.outsideStroke; if (textFill == null || textFill === "auto") { textFill = this.getOutsideFill(); } if (textStroke == null || textStroke === "auto") { textStroke = this.getOutsideStroke(textFill); autoStroke = true; } } textFill = textFill || "#000"; if (textFill !== innerTextDefaultStyle.fill || textStroke !== innerTextDefaultStyle.stroke || autoStroke !== innerTextDefaultStyle.autoStroke || textAlign !== innerTextDefaultStyle.align || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) { textStyleChanged = true; innerTextDefaultStyle.fill = textFill; innerTextDefaultStyle.stroke = textStroke; innerTextDefaultStyle.autoStroke = autoStroke; innerTextDefaultStyle.align = textAlign; innerTextDefaultStyle.verticalAlign = textVerticalAlign; textEl.setDefaultTextStyle(innerTextDefaultStyle); } textEl.__dirty |= REDRAW_BIT; if (textStyleChanged) { textEl.dirtyStyle(true); } } }; Element2.prototype.canBeInsideText = function() { return true; }; Element2.prototype.getInsideTextFill = function() { return "#fff"; }; Element2.prototype.getInsideTextStroke = function(textFill) { return "#000"; }; Element2.prototype.getOutsideFill = function() { return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR; }; Element2.prototype.getOutsideStroke = function(textFill) { var backgroundColor2 = this.__zr && this.__zr.getBackgroundColor(); var colorArr = typeof backgroundColor2 === "string" && parse(backgroundColor2); if (!colorArr) { colorArr = [255, 255, 255, 1]; } var alpha = colorArr[3]; var isDark = this.__zr.isDarkMode(); for (var i = 0; i < 3; i++) { colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha); } colorArr[3] = 1; return stringify(colorArr, "rgba"); }; Element2.prototype.traverse = function(cb, context) { }; Element2.prototype.attrKV = function(key2, value) { if (key2 === "textConfig") { this.setTextConfig(value); } else if (key2 === "textContent") { this.setTextContent(value); } else if (key2 === "clipPath") { this.setClipPath(value); } else if (key2 === "extra") { this.extra = this.extra || {}; extend(this.extra, value); } else { this[key2] = value; } }; Element2.prototype.hide = function() { this.ignore = true; this.markRedraw(); }; Element2.prototype.show = function() { this.ignore = false; this.markRedraw(); }; Element2.prototype.attr = function(keyOrObj, value) { if (typeof keyOrObj === "string") { this.attrKV(keyOrObj, value); } else if (isObject$3(keyOrObj)) { var obj = keyOrObj; var keysArr = keys(obj); for (var i = 0; i < keysArr.length; i++) { var key2 = keysArr[i]; this.attrKV(key2, keyOrObj[key2]); } } this.markRedraw(); return this; }; Element2.prototype.saveCurrentToNormalState = function(toState) { this._innerSaveToNormal(toState); var normalState = this._normalState; for (var i = 0; i < this.animators.length; i++) { var animator = this.animators[i]; var fromStateTransition = animator.__fromStateTransition; if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) { continue; } var targetName = animator.targetName; var target = targetName ? normalState[targetName] : normalState; animator.saveFinalToTarget(target); } }; Element2.prototype._innerSaveToNormal = function(toState) { var normalState = this._normalState; if (!normalState) { normalState = this._normalState = {}; } if (toState.textConfig && !normalState.textConfig) { normalState.textConfig = this.textConfig; } this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1); }; Element2.prototype._savePrimaryToNormal = function(toState, normalState, primaryKeys) { for (var i = 0; i < primaryKeys.length; i++) { var key2 = primaryKeys[i]; if (toState[key2] != null && !(key2 in normalState)) { normalState[key2] = this[key2]; } } }; Element2.prototype.hasState = function() { return this.currentStates.length > 0; }; Element2.prototype.getState = function(name) { return this.states[name]; }; Element2.prototype.ensureState = function(name) { var states = this.states; if (!states[name]) { states[name] = {}; } return states[name]; }; Element2.prototype.clearStates = function(noAnimation) { this.useState(PRESERVED_NORMAL_STATE, false, noAnimation); }; Element2.prototype.useState = function(stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) { var toNormalState = stateName === PRESERVED_NORMAL_STATE; var hasStates = this.hasState(); if (!hasStates && toNormalState) { return; } var currentStates = this.currentStates; var animationCfg = this.stateTransition; if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) { return; } var state; if (this.stateProxy && !toNormalState) { state = this.stateProxy(stateName); } if (!state) { state = this.states && this.states[stateName]; } if (!state && !toNormalState) { logError("State " + stateName + " not exists."); return; } if (!toNormalState) { this.saveCurrentToNormalState(state); } var useHoverLayer = !!(state && state.hoverLayer || forceUseHoverLayer); if (useHoverLayer) { this._toggleHoverLayerFlag(true); } this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); var textContent = this._textContent; var textGuide = this._textGuide; if (textContent) { textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); } if (textGuide) { textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); } if (toNormalState) { this.currentStates = []; this._normalState = {}; } else { if (!keepCurrentStates) { this.currentStates = [stateName]; } else { this.currentStates.push(stateName); } } this._updateAnimationTargets(); this.markRedraw(); if (!useHoverLayer && this.__inHover) { this._toggleHoverLayerFlag(false); this.__dirty &= ~REDRAW_BIT; } return state; }; Element2.prototype.useStates = function(states, noAnimation, forceUseHoverLayer) { if (!states.length) { this.clearStates(); } else { var stateObjects = []; var currentStates = this.currentStates; var len2 = states.length; var notChange = len2 === currentStates.length; if (notChange) { for (var i = 0; i < len2; i++) { if (states[i] !== currentStates[i]) { notChange = false; break; } } } if (notChange) { return; } for (var i = 0; i < len2; i++) { var stateName = states[i]; var stateObj = void 0; if (this.stateProxy) { stateObj = this.stateProxy(stateName, states); } if (!stateObj) { stateObj = this.states[stateName]; } if (stateObj) { stateObjects.push(stateObj); } } var lastStateObj = stateObjects[len2 - 1]; var useHoverLayer = !!(lastStateObj && lastStateObj.hoverLayer || forceUseHoverLayer); if (useHoverLayer) { this._toggleHoverLayerFlag(true); } var mergedState = this._mergeStates(stateObjects); var animationCfg = this.stateTransition; this.saveCurrentToNormalState(mergedState); this._applyStateObj(states.join(","), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); var textContent = this._textContent; var textGuide = this._textGuide; if (textContent) { textContent.useStates(states, noAnimation, useHoverLayer); } if (textGuide) { textGuide.useStates(states, noAnimation, useHoverLayer); } this._updateAnimationTargets(); this.currentStates = states.slice(); this.markRedraw(); if (!useHoverLayer && this.__inHover) { this._toggleHoverLayerFlag(false); this.__dirty &= ~REDRAW_BIT; } } }; Element2.prototype._updateAnimationTargets = function() { for (var i = 0; i < this.animators.length; i++) { var animator = this.animators[i]; if (animator.targetName) { animator.changeTarget(this[animator.targetName]); } } }; Element2.prototype.removeState = function(state) { var idx = indexOf(this.currentStates, state); if (idx >= 0) { var currentStates = this.currentStates.slice(); currentStates.splice(idx, 1); this.useStates(currentStates); } }; Element2.prototype.replaceState = function(oldState, newState, forceAdd) { var currentStates = this.currentStates.slice(); var idx = indexOf(currentStates, oldState); var newStateExists = indexOf(currentStates, newState) >= 0; if (idx >= 0) { if (!newStateExists) { currentStates[idx] = newState; } else { currentStates.splice(idx, 1); } } else if (forceAdd && !newStateExists) { currentStates.push(newState); } this.useStates(currentStates); }; Element2.prototype.toggleState = function(state, enable) { if (enable) { this.useState(state, true); } else { this.removeState(state); } }; Element2.prototype._mergeStates = function(states) { var mergedState = {}; var mergedTextConfig; for (var i = 0; i < states.length; i++) { var state = states[i]; extend(mergedState, state); if (state.textConfig) { mergedTextConfig = mergedTextConfig || {}; extend(mergedTextConfig, state.textConfig); } } if (mergedTextConfig) { mergedState.textConfig = mergedTextConfig; } return mergedState; }; Element2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { var needsRestoreToNormal = !(state && keepCurrentStates); if (state && state.textConfig) { this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig); extend(this.textConfig, state.textConfig); } else if (needsRestoreToNormal) { if (normalState.textConfig) { this.textConfig = normalState.textConfig; } } var transitionTarget = {}; var hasTransition = false; for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) { var key2 = PRIMARY_STATES_KEYS$1[i]; var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key2]; if (state && state[key2] != null) { if (propNeedsTransition) { hasTransition = true; transitionTarget[key2] = state[key2]; } else { this[key2] = state[key2]; } } else if (needsRestoreToNormal) { if (normalState[key2] != null) { if (propNeedsTransition) { hasTransition = true; transitionTarget[key2] = normalState[key2]; } else { this[key2] = normalState[key2]; } } } } if (!transition) { for (var i = 0; i < this.animators.length; i++) { var animator = this.animators[i]; var targetName = animator.targetName; animator.__changeFinalValue(targetName ? (state || normalState)[targetName] : state || normalState); } } if (hasTransition) { this._transitionState(stateName, transitionTarget, animationCfg); } }; Element2.prototype._attachComponent = function(componentEl) { if (componentEl.__zr && !componentEl.__hostTarget) { throw new Error("Text element has been added to zrender."); } if (componentEl === this) { throw new Error("Recursive component attachment."); } var zr = this.__zr; if (zr) { componentEl.addSelfToZr(zr); } componentEl.__zr = zr; componentEl.__hostTarget = this; }; Element2.prototype._detachComponent = function(componentEl) { if (componentEl.__zr) { componentEl.removeSelfFromZr(componentEl.__zr); } componentEl.__zr = null; componentEl.__hostTarget = null; }; Element2.prototype.getClipPath = function() { return this._clipPath; }; Element2.prototype.setClipPath = function(clipPath) { if (this._clipPath && this._clipPath !== clipPath) { this.removeClipPath(); } this._attachComponent(clipPath); this._clipPath = clipPath; this.markRedraw(); }; Element2.prototype.removeClipPath = function() { var clipPath = this._clipPath; if (clipPath) { this._detachComponent(clipPath); this._clipPath = null; this.markRedraw(); } }; Element2.prototype.getTextContent = function() { return this._textContent; }; Element2.prototype.setTextContent = function(textEl) { var previousTextContent = this._textContent; if (previousTextContent === textEl) { return; } if (previousTextContent && previousTextContent !== textEl) { this.removeTextContent(); } if (textEl.__zr && !textEl.__hostTarget) { throw new Error("Text element has been added to zrender."); } textEl.innerTransformable = new Transformable$1(); this._attachComponent(textEl); this._textContent = textEl; this.markRedraw(); }; Element2.prototype.setTextConfig = function(cfg) { if (!this.textConfig) { this.textConfig = {}; } extend(this.textConfig, cfg); this.markRedraw(); }; Element2.prototype.removeTextConfig = function() { this.textConfig = null; this.markRedraw(); }; Element2.prototype.removeTextContent = function() { var textEl = this._textContent; if (textEl) { textEl.innerTransformable = null; this._detachComponent(textEl); this._textContent = null; this._innerTextDefaultStyle = null; this.markRedraw(); } }; Element2.prototype.getTextGuideLine = function() { return this._textGuide; }; Element2.prototype.setTextGuideLine = function(guideLine) { if (this._textGuide && this._textGuide !== guideLine) { this.removeTextGuideLine(); } this._attachComponent(guideLine); this._textGuide = guideLine; this.markRedraw(); }; Element2.prototype.removeTextGuideLine = function() { var textGuide = this._textGuide; if (textGuide) { this._detachComponent(textGuide); this._textGuide = null; this.markRedraw(); } }; Element2.prototype.markRedraw = function() { this.__dirty |= REDRAW_BIT; var zr = this.__zr; if (zr) { if (this.__inHover) { zr.refreshHover(); } else { zr.refresh(); } } if (this.__hostTarget) { this.__hostTarget.markRedraw(); } }; Element2.prototype.dirty = function() { this.markRedraw(); }; Element2.prototype._toggleHoverLayerFlag = function(inHover) { this.__inHover = inHover; var textContent = this._textContent; var textGuide = this._textGuide; if (textContent) { textContent.__inHover = inHover; } if (textGuide) { textGuide.__inHover = inHover; } }; Element2.prototype.addSelfToZr = function(zr) { if (this.__zr === zr) { return; } this.__zr = zr; var animators = this.animators; if (animators) { for (var i = 0; i < animators.length; i++) { zr.animation.addAnimator(animators[i]); } } if (this._clipPath) { this._clipPath.addSelfToZr(zr); } if (this._textContent) { this._textContent.addSelfToZr(zr); } if (this._textGuide) { this._textGuide.addSelfToZr(zr); } }; Element2.prototype.removeSelfFromZr = function(zr) { if (!this.__zr) { return; } this.__zr = null; var animators = this.animators; if (animators) { for (var i = 0; i < animators.length; i++) { zr.animation.removeAnimator(animators[i]); } } if (this._clipPath) { this._clipPath.removeSelfFromZr(zr); } if (this._textContent) { this._textContent.removeSelfFromZr(zr); } if (this._textGuide) { this._textGuide.removeSelfFromZr(zr); } }; Element2.prototype.animate = function(key2, loop) { var target = key2 ? this[key2] : this; if (!target) { logError('Property "' + key2 + '" is not existed in element ' + this.id); return; } var animator = new Animator$1(target, loop); this.addAnimator(animator, key2); return animator; }; Element2.prototype.addAnimator = function(animator, key2) { var zr = this.__zr; var el = this; animator.during(function() { el.updateDuringAnimation(key2); }).done(function() { var animators = el.animators; var idx = indexOf(animators, animator); if (idx >= 0) { animators.splice(idx, 1); } }); this.animators.push(animator); if (zr) { zr.animation.addAnimator(animator); } zr && zr.wakeUp(); }; Element2.prototype.updateDuringAnimation = function(key2) { this.markRedraw(); }; Element2.prototype.stopAnimation = function(scope, forwardToLast) { var animators = this.animators; var len2 = animators.length; var leftAnimators = []; for (var i = 0; i < len2; i++) { var animator = animators[i]; if (!scope || scope === animator.scope) { animator.stop(forwardToLast); } else { leftAnimators.push(animator); } } this.animators = leftAnimators; return this; }; Element2.prototype.animateTo = function(target, cfg, animationProps) { animateTo(this, target, cfg, animationProps); }; Element2.prototype.animateFrom = function(target, cfg, animationProps) { animateTo(this, target, cfg, animationProps, true); }; Element2.prototype._transitionState = function(stateName, target, cfg, animationProps) { var animators = animateTo(this, target, cfg, animationProps); for (var i = 0; i < animators.length; i++) { animators[i].__fromStateTransition = stateName; } }; Element2.prototype.getBoundingRect = function() { return null; }; Element2.prototype.getPaintRect = function() { return null; }; Element2.initDefaultProps = function() { var elProto = Element2.prototype; elProto.type = "element"; elProto.name = ""; elProto.ignore = false; elProto.silent = false; elProto.isGroup = false; elProto.draggable = false; elProto.dragging = false; elProto.ignoreClip = false; elProto.__inHover = false; elProto.__dirty = REDRAW_BIT; var logs = {}; function logDeprecatedError(key2, xKey, yKey) { if (!logs[key2 + xKey + yKey]) { console.warn("DEPRECATED: '" + key2 + "' has been deprecated. use '" + xKey + "', '" + yKey + "' instead"); logs[key2 + xKey + yKey] = true; } } function createLegacyProperty(key2, privateKey, xKey, yKey) { Object.defineProperty(elProto, key2, { get: function() { logDeprecatedError(key2, xKey, yKey); if (!this[privateKey]) { var pos = this[privateKey] = []; enhanceArray(this, pos); } return this[privateKey]; }, set: function(pos) { logDeprecatedError(key2, xKey, yKey); this[xKey] = pos[0]; this[yKey] = pos[1]; this[privateKey] = pos; enhanceArray(this, pos); } }); function enhanceArray(self2, pos) { Object.defineProperty(pos, 0, { get: function() { return self2[xKey]; }, set: function(val) { self2[xKey] = val; } }); Object.defineProperty(pos, 1, { get: function() { return self2[yKey]; }, set: function(val) { self2[yKey] = val; } }); } } if (Object.defineProperty && (!env$1.browser.ie || env$1.browser.version > 8)) { createLegacyProperty("position", "_legacyPos", "x", "y"); createLegacyProperty("scale", "_legacyScale", "scaleX", "scaleY"); createLegacyProperty("origin", "_legacyOrigin", "originX", "originY"); } }(); return Element2; }(); mixin(Element, Eventful$1); mixin(Element, Transformable$1); function animateTo(animatable, target, cfg, animationProps, reverse2) { cfg = cfg || {}; var animators = []; animateToShallow(animatable, "", animatable, target, cfg, animationProps, animators, reverse2); var finishCount = animators.length; var doneHappened = false; var cfgDone = cfg.done; var cfgAborted = cfg.aborted; var doneCb = function() { doneHappened = true; finishCount--; if (finishCount <= 0) { doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); } }; var abortedCb = function() { finishCount--; if (finishCount <= 0) { doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); } }; if (!finishCount) { cfgDone && cfgDone(); } if (animators.length > 0 && cfg.during) { animators[0].during(function(target2, percent) { cfg.during(percent); }); } for (var i = 0; i < animators.length; i++) { var animator = animators[i]; if (doneCb) { animator.done(doneCb); } if (abortedCb) { animator.aborted(abortedCb); } animator.start(cfg.easing, cfg.force); } return animators; } function copyArrShallow(source, target, len2) { for (var i = 0; i < len2; i++) { source[i] = target[i]; } } function is2DArray(value) { return isArrayLike(value[0]); } function copyValue(target, source, key2) { if (isArrayLike(source[key2])) { if (!isArrayLike(target[key2])) { target[key2] = []; } if (isTypedArray(source[key2])) { var len2 = source[key2].length; if (target[key2].length !== len2) { target[key2] = new source[key2].constructor(len2); copyArrShallow(target[key2], source[key2], len2); } } else { var sourceArr = source[key2]; var targetArr = target[key2]; var len0 = sourceArr.length; if (is2DArray(sourceArr)) { var len1 = sourceArr[0].length; for (var i = 0; i < len0; i++) { if (!targetArr[i]) { targetArr[i] = Array.prototype.slice.call(sourceArr[i]); } else { copyArrShallow(targetArr[i], sourceArr[i], len1); } } } else { copyArrShallow(targetArr, sourceArr, len0); } targetArr.length = sourceArr.length; } } else { target[key2] = source[key2]; } } function animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse2) { var animatableKeys = []; var changedKeys = []; var targetKeys = keys(target); var duration = cfg.duration; var delay = cfg.delay; var additive = cfg.additive; var setToFinal = cfg.setToFinal; var animateAll = !isObject$3(animationProps); for (var k = 0; k < targetKeys.length; k++) { var innerKey = targetKeys[k]; if (source[innerKey] != null && target[innerKey] != null && (animateAll || animationProps[innerKey])) { if (isObject$3(target[innerKey]) && !isArrayLike(target[innerKey])) { if (topKey) { if (!reverse2) { source[innerKey] = target[innerKey]; animatable.updateDuringAnimation(topKey); } continue; } animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse2); } else { animatableKeys.push(innerKey); changedKeys.push(innerKey); } } else if (!reverse2) { source[innerKey] = target[innerKey]; animatable.updateDuringAnimation(topKey); changedKeys.push(innerKey); } } var keyLen = animatableKeys.length; if (keyLen > 0 || cfg.force && !animators.length) { var existsAnimators = animatable.animators; var existsAnimatorsOnSameTarget = []; for (var i = 0; i < existsAnimators.length; i++) { if (existsAnimators[i].targetName === topKey) { existsAnimatorsOnSameTarget.push(existsAnimators[i]); } } if (!additive && existsAnimatorsOnSameTarget.length) { for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) { var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys); if (allAborted) { var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]); existsAnimators.splice(idx, 1); } } } var revertedSource = void 0; var reversedTarget = void 0; var sourceClone = void 0; if (reverse2) { reversedTarget = {}; if (setToFinal) { revertedSource = {}; } for (var i = 0; i < keyLen; i++) { var innerKey = animatableKeys[i]; reversedTarget[innerKey] = source[innerKey]; if (setToFinal) { revertedSource[innerKey] = target[innerKey]; } else { source[innerKey] = target[innerKey]; } } } else if (setToFinal) { sourceClone = {}; for (var i = 0; i < keyLen; i++) { var innerKey = animatableKeys[i]; sourceClone[innerKey] = cloneValue(source[innerKey]); copyValue(source, target, innerKey); } } var animator = new Animator$1(source, false, additive ? existsAnimatorsOnSameTarget : null); animator.targetName = topKey; if (cfg.scope) { animator.scope = cfg.scope; } if (setToFinal && revertedSource) { animator.whenWithKeys(0, revertedSource, animatableKeys); } if (sourceClone) { animator.whenWithKeys(0, sourceClone, animatableKeys); } animator.whenWithKeys(duration == null ? 500 : duration, reverse2 ? reversedTarget : target, animatableKeys).delay(delay || 0); animatable.addAnimator(animator, topKey); animators.push(animator); } } var Element$1 = Element; var Group$3 = function(_super) { __extends(Group2, _super); function Group2(opts) { var _this = _super.call(this) || this; _this.isGroup = true; _this._children = []; _this.attr(opts); return _this; } Group2.prototype.childrenRef = function() { return this._children; }; Group2.prototype.children = function() { return this._children.slice(); }; Group2.prototype.childAt = function(idx) { return this._children[idx]; }; Group2.prototype.childOfName = function(name) { var children = this._children; for (var i = 0; i < children.length; i++) { if (children[i].name === name) { return children[i]; } } }; Group2.prototype.childCount = function() { return this._children.length; }; Group2.prototype.add = function(child) { if (child) { if (child !== this && child.parent !== this) { this._children.push(child); this._doAdd(child); } if (child.__hostTarget) { throw "This elemenet has been used as an attachment"; } } return this; }; Group2.prototype.addBefore = function(child, nextSibling) { if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) { var children = this._children; var idx = children.indexOf(nextSibling); if (idx >= 0) { children.splice(idx, 0, child); this._doAdd(child); } } return this; }; Group2.prototype.replace = function(oldChild, newChild) { var idx = indexOf(this._children, oldChild); if (idx >= 0) { this.replaceAt(newChild, idx); } return this; }; Group2.prototype.replaceAt = function(child, index) { var children = this._children; var old = children[index]; if (child && child !== this && child.parent !== this && child !== old) { children[index] = child; old.parent = null; var zr = this.__zr; if (zr) { old.removeSelfFromZr(zr); } this._doAdd(child); } return this; }; Group2.prototype._doAdd = function(child) { if (child.parent) { child.parent.remove(child); } child.parent = this; var zr = this.__zr; if (zr && zr !== child.__zr) { child.addSelfToZr(zr); } zr && zr.refresh(); }; Group2.prototype.remove = function(child) { var zr = this.__zr; var children = this._children; var idx = indexOf(children, child); if (idx < 0) { return this; } children.splice(idx, 1); child.parent = null; if (zr) { child.removeSelfFromZr(zr); } zr && zr.refresh(); return this; }; Group2.prototype.removeAll = function() { var children = this._children; var zr = this.__zr; for (var i = 0; i < children.length; i++) { var child = children[i]; if (zr) { child.removeSelfFromZr(zr); } child.parent = null; } children.length = 0; return this; }; Group2.prototype.eachChild = function(cb, context) { var children = this._children; for (var i = 0; i < children.length; i++) { var child = children[i]; cb.call(context, child, i); } return this; }; Group2.prototype.traverse = function(cb, context) { for (var i = 0; i < this._children.length; i++) { var child = this._children[i]; var stopped = cb.call(context, child); if (child.isGroup && !stopped) { child.traverse(cb, context); } } return this; }; Group2.prototype.addSelfToZr = function(zr) { _super.prototype.addSelfToZr.call(this, zr); for (var i = 0; i < this._children.length; i++) { var child = this._children[i]; child.addSelfToZr(zr); } }; Group2.prototype.removeSelfFromZr = function(zr) { _super.prototype.removeSelfFromZr.call(this, zr); for (var i = 0; i < this._children.length; i++) { var child = this._children[i]; child.removeSelfFromZr(zr); } }; Group2.prototype.getBoundingRect = function(includeChildren) { var tmpRect2 = new BoundingRect$1(0, 0, 0, 0); var children = includeChildren || this._children; var tmpMat = []; var rect = null; for (var i = 0; i < children.length; i++) { var child = children[i]; if (child.ignore || child.invisible) { continue; } var childRect = child.getBoundingRect(); var transform2 = child.getLocalTransform(tmpMat); if (transform2) { BoundingRect$1.applyTransform(tmpRect2, childRect, transform2); rect = rect || tmpRect2.clone(); rect.union(tmpRect2); } else { rect = rect || childRect.clone(); rect.union(childRect); } } return rect || tmpRect2; }; return Group2; }(Element$1); Group$3.prototype.type = "group"; var Group$4 = Group$3; /*! * ZRender, a high performance 2d drawing library. * * Copyright (c) 2013, Baidu Inc. * All rights reserved. * * LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt */ var useVML = !env$1.canvasSupported; var painterCtors = {}; var instances$1 = {}; function delInstance(id) { delete instances$1[id]; } function isDarkMode(backgroundColor2) { if (!backgroundColor2) { return false; } if (typeof backgroundColor2 === "string") { return lum(backgroundColor2, 1) < DARK_MODE_THRESHOLD; } else if (backgroundColor2.colorStops) { var colorStops = backgroundColor2.colorStops; var totalLum = 0; var len2 = colorStops.length; for (var i = 0; i < len2; i++) { totalLum += lum(colorStops[i].color, 1); } totalLum /= len2; return totalLum < DARK_MODE_THRESHOLD; } return false; } var ZRender = function() { function ZRender2(id, dom, opts) { var _this = this; this._sleepAfterStill = 10; this._stillFrameAccum = 0; this._needsRefresh = true; this._needsRefreshHover = true; this._darkMode = false; opts = opts || {}; this.dom = dom; this.id = id; var storage2 = new Storage$1(); var rendererType = opts.renderer || "canvas"; if (useVML) { throw new Error("IE8 support has been dropped since 5.0"); } if (!painterCtors[rendererType]) { rendererType = keys(painterCtors)[0]; } if (!painterCtors[rendererType]) { throw new Error("Renderer '" + rendererType + "' is not imported. Please import it first."); } opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect; var painter = new painterCtors[rendererType](dom, storage2, opts, id); this.storage = storage2; this.painter = painter; var handerProxy = !env$1.node && !env$1.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null; this.handler = new Handler$1(storage2, painter, handerProxy, painter.root); this.animation = new Animation$1({ stage: { update: function() { return _this._flush(true); } } }); this.animation.start(); } ZRender2.prototype.add = function(el) { if (!el) { return; } this.storage.addRoot(el); el.addSelfToZr(this); this.refresh(); }; ZRender2.prototype.remove = function(el) { if (!el) { return; } this.storage.delRoot(el); el.removeSelfFromZr(this); this.refresh(); }; ZRender2.prototype.configLayer = function(zLevel, config) { if (this.painter.configLayer) { this.painter.configLayer(zLevel, config); } this.refresh(); }; ZRender2.prototype.setBackgroundColor = function(backgroundColor2) { if (this.painter.setBackgroundColor) { this.painter.setBackgroundColor(backgroundColor2); } this.refresh(); this._backgroundColor = backgroundColor2; this._darkMode = isDarkMode(backgroundColor2); }; ZRender2.prototype.getBackgroundColor = function() { return this._backgroundColor; }; ZRender2.prototype.setDarkMode = function(darkMode) { this._darkMode = darkMode; }; ZRender2.prototype.isDarkMode = function() { return this._darkMode; }; ZRender2.prototype.refreshImmediately = function(fromInside) { if (!fromInside) { this.animation.update(true); } this._needsRefresh = false; this.painter.refresh(); this._needsRefresh = false; }; ZRender2.prototype.refresh = function() { this._needsRefresh = true; this.animation.start(); }; ZRender2.prototype.flush = function() { this._flush(false); }; ZRender2.prototype._flush = function(fromInside) { var triggerRendered; var start2 = new Date().getTime(); if (this._needsRefresh) { triggerRendered = true; this.refreshImmediately(fromInside); } if (this._needsRefreshHover) { triggerRendered = true; this.refreshHoverImmediately(); } var end2 = new Date().getTime(); if (triggerRendered) { this._stillFrameAccum = 0; this.trigger("rendered", { elapsedTime: end2 - start2 }); } else if (this._sleepAfterStill > 0) { this._stillFrameAccum++; if (this._stillFrameAccum > this._sleepAfterStill) { this.animation.stop(); } } }; ZRender2.prototype.setSleepAfterStill = function(stillFramesCount) { this._sleepAfterStill = stillFramesCount; }; ZRender2.prototype.wakeUp = function() { this.animation.start(); this._stillFrameAccum = 0; }; ZRender2.prototype.addHover = function(el) { }; ZRender2.prototype.removeHover = function(el) { }; ZRender2.prototype.clearHover = function() { }; ZRender2.prototype.refreshHover = function() { this._needsRefreshHover = true; }; ZRender2.prototype.refreshHoverImmediately = function() { this._needsRefreshHover = false; if (this.painter.refreshHover && this.painter.getType() === "canvas") { this.painter.refreshHover(); } }; ZRender2.prototype.resize = function(opts) { opts = opts || {}; this.painter.resize(opts.width, opts.height); this.handler.resize(); }; ZRender2.prototype.clearAnimation = function() { this.animation.clear(); }; ZRender2.prototype.getWidth = function() { return this.painter.getWidth(); }; ZRender2.prototype.getHeight = function() { return this.painter.getHeight(); }; ZRender2.prototype.pathToImage = function(e2, dpr2) { if (this.painter.pathToImage) { return this.painter.pathToImage(e2, dpr2); } }; ZRender2.prototype.setCursorStyle = function(cursorStyle) { this.handler.setCursorStyle(cursorStyle); }; ZRender2.prototype.findHover = function(x, y) { return this.handler.findHover(x, y); }; ZRender2.prototype.on = function(eventName, eventHandler, context) { this.handler.on(eventName, eventHandler, context); return this; }; ZRender2.prototype.off = function(eventName, eventHandler) { this.handler.off(eventName, eventHandler); }; ZRender2.prototype.trigger = function(eventName, event) { this.handler.trigger(eventName, event); }; ZRender2.prototype.clear = function() { var roots2 = this.storage.getRoots(); for (var i = 0; i < roots2.length; i++) { if (roots2[i] instanceof Group$4) { roots2[i].removeSelfFromZr(this); } } this.storage.delAllRoots(); this.painter.clear(); }; ZRender2.prototype.dispose = function() { this.animation.stop(); this.clear(); this.storage.dispose(); this.painter.dispose(); this.handler.dispose(); this.animation = this.storage = this.painter = this.handler = null; delInstance(this.id); }; return ZRender2; }(); function init$2(dom, opts) { var zr = new ZRender(guid(), dom, opts); instances$1[zr.id] = zr; return zr; } function dispose$1(zr) { zr.dispose(); } function disposeAll() { for (var key2 in instances$1) { if (instances$1.hasOwnProperty(key2)) { instances$1[key2].dispose(); } } instances$1 = {}; } function getInstance(id) { return instances$1[id]; } function registerPainter(name, Ctor) { painterCtors[name] = Ctor; } var version$1 = "5.2.1"; var zrender = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", init: init$2, dispose: dispose$1, disposeAll, getInstance, registerPainter, version: version$1 }); var RADIAN_EPSILON = 1e-4; var ROUND_SUPPORTED_PRECISION_MAX = 20; function _trim(str) { return str.replace(/^\s+|\s+$/g, ""); } function linearMap$2(val, domain, range, clamp2) { var d0 = domain[0]; var d1 = domain[1]; var r0 = range[0]; var r1 = range[1]; var subDomain = d1 - d0; var subRange = r1 - r0; if (subDomain === 0) { return subRange === 0 ? r0 : (r0 + r1) / 2; } if (clamp2) { if (subDomain > 0) { if (val <= d0) { return r0; } else if (val >= d1) { return r1; } } else { if (val >= d0) { return r0; } else if (val <= d1) { return r1; } } } else { if (val === d0) { return r0; } if (val === d1) { return r1; } } return (val - d0) / subDomain * subRange + r0; } function parsePercent$1(percent, all) { switch (percent) { case "center": case "middle": percent = "50%"; break; case "left": case "top": percent = "0%"; break; case "right": case "bottom": percent = "100%"; break; } if (typeof percent === "string") { if (_trim(percent).match(/%$/)) { return parseFloat(percent) / 100 * all; } return parseFloat(percent); } return percent == null ? NaN : +percent; } function round$2(x, precision, returnStr) { if (precision == null) { precision = 10; } precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX); x = (+x).toFixed(precision); return returnStr ? x : +x; } function asc$2(arr) { arr.sort(function(a, b) { return a - b; }); return arr; } function getPrecision(val) { val = +val; if (isNaN(val)) { return 0; } if (val > 1e-14) { var e2 = 1; for (var i = 0; i < 15; i++, e2 *= 10) { if (Math.round(val * e2) / e2 === val) { return i; } } } return getPrecisionSafe(val); } function getPrecisionSafe(val) { var str = val.toString().toLowerCase(); var eIndex = str.indexOf("e"); var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0; var significandPartLen = eIndex > 0 ? eIndex : str.length; var dotIndex = str.indexOf("."); var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex; return Math.max(0, decimalPartLen - exp); } function getPixelPrecision(dataExtent, pixelExtent) { var log = Math.log; var LN10 = Math.LN10; var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10); var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20); return !isFinite(precision) ? 20 : precision; } function getPercentWithPrecision(valueList, idx, precision) { if (!valueList[idx]) { return 0; } var sum2 = reduce(valueList, function(acc, val) { return acc + (isNaN(val) ? 0 : val); }, 0); if (sum2 === 0) { return 0; } var digits = Math.pow(10, precision); var votesPerQuota = map$1(valueList, function(val) { return (isNaN(val) ? 0 : val) / sum2 * digits * 100; }); var targetSeats = digits * 100; var seats = map$1(votesPerQuota, function(votes) { return Math.floor(votes); }); var currentSum = reduce(seats, function(acc, val) { return acc + val; }, 0); var remainder = map$1(votesPerQuota, function(votes, idx2) { return votes - seats[idx2]; }); while (currentSum < targetSeats) { var max3 = Number.NEGATIVE_INFINITY; var maxId = null; for (var i = 0, len2 = remainder.length; i < len2; ++i) { if (remainder[i] > max3) { max3 = remainder[i]; maxId = i; } } ++seats[maxId]; remainder[maxId] = 0; ++currentSum; } return seats[idx] / digits; } function addSafe(val0, val1) { var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1)); var sum2 = val0 + val1; return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum2 : round$2(sum2, maxPrecision); } var MAX_SAFE_INTEGER = 9007199254740991; function remRadian(radian) { var pi2 = Math.PI * 2; return (radian % pi2 + pi2) % pi2; } function isRadianAroundZero(val) { return val > -RADIAN_EPSILON && val < RADIAN_EPSILON; } var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/; function parseDate(value) { if (value instanceof Date) { return value; } else if (typeof value === "string") { var match = TIME_REG.exec(value); if (!match) { return new Date(NaN); } if (!match[8]) { return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0); } else { var hour = +match[4] || 0; if (match[8].toUpperCase() !== "Z") { hour -= +match[8].slice(0, 3); } return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0)); } } else if (value == null) { return new Date(NaN); } return new Date(Math.round(value)); } function quantity(val) { return Math.pow(10, quantityExponent(val)); } function quantityExponent(val) { if (val === 0) { return 0; } var exp = Math.floor(Math.log(val) / Math.LN10); if (val / Math.pow(10, exp) >= 10) { exp++; } return exp; } function nice(val, round2) { var exponent = quantityExponent(val); var exp10 = Math.pow(10, exponent); var f = val / exp10; var nf; if (round2) { if (f < 1.5) { nf = 1; } else if (f < 2.5) { nf = 2; } else if (f < 4) { nf = 3; } else if (f < 7) { nf = 5; } else { nf = 10; } } else { if (f < 1) { nf = 1; } else if (f < 2) { nf = 2; } else if (f < 3) { nf = 3; } else if (f < 5) { nf = 5; } else { nf = 10; } } val = nf * exp10; return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val; } function quantile(ascArr, p) { var H = (ascArr.length - 1) * p + 1; var h = Math.floor(H); var v = +ascArr[h - 1]; var e2 = H - h; return e2 ? v + e2 * (ascArr[h] - v) : v; } function reformIntervals(list2) { list2.sort(function(a, b) { return littleThan2(a, b, 0) ? -1 : 1; }); var curr = -Infinity; var currClose = 1; for (var i = 0; i < list2.length; ) { var interval = list2[i].interval; var close_1 = list2[i].close; for (var lg = 0; lg < 2; lg++) { if (interval[lg] <= curr) { interval[lg] = curr; close_1[lg] = !lg ? 1 - currClose : 1; } curr = interval[lg]; currClose = close_1[lg]; } if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) { list2.splice(i, 1); } else { i++; } } return list2; function littleThan2(a, b, lg2) { return a.interval[lg2] < b.interval[lg2] || a.interval[lg2] === b.interval[lg2] && (a.close[lg2] - b.close[lg2] === (!lg2 ? 1 : -1) || !lg2 && littleThan2(a, b, 1)); } } function numericToNumber(val) { var valFloat = parseFloat(val); return valFloat == val && (valFloat !== 0 || typeof val !== "string" || val.indexOf("x") <= 0) ? valFloat : NaN; } function isNumeric(val) { return !isNaN(numericToNumber(val)); } function getRandomIdBase() { return Math.round(Math.random() * 9); } function getGreatestCommonDividor(a, b) { if (b === 0) { return a; } return getGreatestCommonDividor(b, a % b); } function getLeastCommonMultiple(a, b) { if (a == null) { return b; } if (b == null) { return a; } return a * b / getGreatestCommonDividor(a, b); } function throwError(msg) { throw new Error(msg); } var DUMMY_COMPONENT_NAME_PREFIX = "series\0"; var INTERNAL_COMPONENT_ID_PREFIX = "\0_ec_\0"; function normalizeToArray(value) { return value instanceof Array ? value : value == null ? [] : [value]; } function defaultEmphasis(opt, key2, subOpts) { if (opt) { opt[key2] = opt[key2] || {}; opt.emphasis = opt.emphasis || {}; opt.emphasis[key2] = opt.emphasis[key2] || {}; for (var i = 0, len2 = subOpts.length; i < len2; i++) { var subOptName = subOpts[i]; if (!opt.emphasis[key2].hasOwnProperty(subOptName) && opt[key2].hasOwnProperty(subOptName)) { opt.emphasis[key2][subOptName] = opt[key2][subOptName]; } } } } var TEXT_STYLE_OPTIONS = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"]; function getDataItemValue(dataItem) { return isObject$3(dataItem) && !isArray$1(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem; } function isDataItemOption(dataItem) { return isObject$3(dataItem) && !(dataItem instanceof Array); } function mappingToExists(existings, newCmptOptions, mode) { var isNormalMergeMode = mode === "normalMerge"; var isReplaceMergeMode = mode === "replaceMerge"; var isReplaceAllMode = mode === "replaceAll"; existings = existings || []; newCmptOptions = (newCmptOptions || []).slice(); var existingIdIdxMap = createHashMap(); each$g(newCmptOptions, function(cmptOption, index) { if (!isObject$3(cmptOption)) { newCmptOptions[index] = null; return; } }); var result = prepareResult(existings, existingIdIdxMap, mode); if (isNormalMergeMode || isReplaceMergeMode) { mappingById(result, existings, existingIdIdxMap, newCmptOptions); } if (isNormalMergeMode) { mappingByName(result, newCmptOptions); } if (isNormalMergeMode || isReplaceMergeMode) { mappingByIndex(result, newCmptOptions, isReplaceMergeMode); } else if (isReplaceAllMode) { mappingInReplaceAllMode(result, newCmptOptions); } makeIdAndName(result); return result; } function prepareResult(existings, existingIdIdxMap, mode) { var result = []; if (mode === "replaceAll") { return result; } for (var index = 0; index < existings.length; index++) { var existing = existings[index]; if (existing && existing.id != null) { existingIdIdxMap.set(existing.id, index); } result.push({ existing: mode === "replaceMerge" || isComponentIdInternal(existing) ? null : existing, newOption: null, keyInfo: null, brandNew: null }); } return result; } function mappingById(result, existings, existingIdIdxMap, newCmptOptions) { each$g(newCmptOptions, function(cmptOption, index) { if (!cmptOption || cmptOption.id == null) { return; } var optionId = makeComparableKey(cmptOption.id); var existingIdx = existingIdIdxMap.get(optionId); if (existingIdx != null) { var resultItem = result[existingIdx]; assert(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".'); resultItem.newOption = cmptOption; resultItem.existing = existings[existingIdx]; newCmptOptions[index] = null; } }); } function mappingByName(result, newCmptOptions) { each$g(newCmptOptions, function(cmptOption, index) { if (!cmptOption || cmptOption.name == null) { return; } for (var i = 0; i < result.length; i++) { var existing = result[i].existing; if (!result[i].newOption && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual("name", existing, cmptOption)) { result[i].newOption = cmptOption; newCmptOptions[index] = null; return; } } }); } function mappingByIndex(result, newCmptOptions, brandNew) { each$g(newCmptOptions, function(cmptOption) { if (!cmptOption) { return; } var resultItem; var nextIdx = 0; while ((resultItem = result[nextIdx]) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) || resultItem.existing && cmptOption.id != null && !keyExistAndEqual("id", cmptOption, resultItem.existing))) { nextIdx++; } if (resultItem) { resultItem.newOption = cmptOption; resultItem.brandNew = brandNew; } else { result.push({ newOption: cmptOption, brandNew, existing: null, keyInfo: null }); } nextIdx++; }); } function mappingInReplaceAllMode(result, newCmptOptions) { each$g(newCmptOptions, function(cmptOption) { result.push({ newOption: cmptOption, brandNew: true, existing: null, keyInfo: null }); }); } function makeIdAndName(mapResult) { var idMap = createHashMap(); each$g(mapResult, function(item) { var existing = item.existing; existing && idMap.set(existing.id, item); }); each$g(mapResult, function(item) { var opt = item.newOption; assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, "id duplicates: " + (opt && opt.id)); opt && opt.id != null && idMap.set(opt.id, item); !item.keyInfo && (item.keyInfo = {}); }); each$g(mapResult, function(item, index) { var existing = item.existing; var opt = item.newOption; var keyInfo = item.keyInfo; if (!isObject$3(opt)) { return; } keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name : DUMMY_COMPONENT_NAME_PREFIX + index; if (existing) { keyInfo.id = makeComparableKey(existing.id); } else if (opt.id != null) { keyInfo.id = makeComparableKey(opt.id); } else { var idNum = 0; do { keyInfo.id = "\0" + keyInfo.name + "\0" + idNum++; } while (idMap.get(keyInfo.id)); } idMap.set(keyInfo.id, item); }); } function keyExistAndEqual(attr2, obj1, obj2) { var key1 = convertOptionIdName(obj1[attr2], null); var key2 = convertOptionIdName(obj2[attr2], null); return key1 != null && key2 != null && key1 === key2; } function makeComparableKey(val) { return convertOptionIdName(val, ""); } function convertOptionIdName(idOrName, defaultValue) { if (idOrName == null) { return defaultValue; } var type = typeof idOrName; return type === "string" ? idOrName : type === "number" || isStringSafe(idOrName) ? idOrName + "" : defaultValue; } function isNameSpecified(componentModel) { var name = componentModel.name; return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX)); } function isComponentIdInternal(cmptOption) { return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0; } function makeInternalComponentId(idSuffix) { return INTERNAL_COMPONENT_ID_PREFIX + idSuffix; } function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) { each$g(mappingResult, function(item) { var newOption = item.newOption; if (isObject$3(newOption)) { item.keyInfo.mainType = mainType; item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor); } }); } function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) { var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType : componentModelCtor.determineSubType(mainType, newCmptOption); return subType; } function compressBatches(batchA, batchB) { var mapA = {}; var mapB = {}; makeMap(batchA || [], mapA); makeMap(batchB || [], mapB, mapA); return [mapToArray(mapA), mapToArray(mapB)]; function makeMap(sourceBatch, map2, otherMap) { for (var i = 0, len2 = sourceBatch.length; i < len2; i++) { var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null); if (seriesId == null) { return; } var dataIndices = normalizeToArray(sourceBatch[i].dataIndex); var otherDataIndices = otherMap && otherMap[seriesId]; for (var j = 0, lenj = dataIndices.length; j < lenj; j++) { var dataIndex = dataIndices[j]; if (otherDataIndices && otherDataIndices[dataIndex]) { otherDataIndices[dataIndex] = null; } else { (map2[seriesId] || (map2[seriesId] = {}))[dataIndex] = 1; } } } } function mapToArray(map2, isData) { var result = []; for (var i in map2) { if (map2.hasOwnProperty(i) && map2[i] != null) { if (isData) { result.push(+i); } else { var dataIndices = mapToArray(map2[i], true); dataIndices.length && result.push({ seriesId: i, dataIndex: dataIndices }); } } } return result; } } function queryDataIndex(data, payload) { if (payload.dataIndexInside != null) { return payload.dataIndexInside; } else if (payload.dataIndex != null) { return isArray$1(payload.dataIndex) ? map$1(payload.dataIndex, function(value) { return data.indexOfRawIndex(value); }) : data.indexOfRawIndex(payload.dataIndex); } else if (payload.name != null) { return isArray$1(payload.name) ? map$1(payload.name, function(value) { return data.indexOfName(value); }) : data.indexOfName(payload.name); } } function makeInner() { var key2 = "__ec_inner_" + innerUniqueIndex++; return function(hostObj) { return hostObj[key2] || (hostObj[key2] = {}); }; } var innerUniqueIndex = getRandomIdBase(); function parseFinder$1(ecModel, finderInput, opt) { var _a2 = preParseFinder(finderInput, opt), mainTypeSpecified = _a2.mainTypeSpecified, queryOptionMap = _a2.queryOptionMap, others = _a2.others; var result = others; var defaultMainType = opt ? opt.defaultMainType : null; if (!mainTypeSpecified && defaultMainType) { queryOptionMap.set(defaultMainType, {}); } queryOptionMap.each(function(queryOption, mainType) { var queryResult = queryReferringComponents(ecModel, mainType, queryOption, { useDefault: defaultMainType === mainType, enableAll: opt && opt.enableAll != null ? opt.enableAll : true, enableNone: opt && opt.enableNone != null ? opt.enableNone : true }); result[mainType + "Models"] = queryResult.models; result[mainType + "Model"] = queryResult.models[0]; }); return result; } function preParseFinder(finderInput, opt) { var finder; if (isString(finderInput)) { var obj = {}; obj[finderInput + "Index"] = 0; finder = obj; } else { finder = finderInput; } var queryOptionMap = createHashMap(); var others = {}; var mainTypeSpecified = false; each$g(finder, function(value, key2) { if (key2 === "dataIndex" || key2 === "dataIndexInside") { others[key2] = value; return; } var parsedKey = key2.match(/^(\w+)(Index|Id|Name)$/) || []; var mainType = parsedKey[1]; var queryType = (parsedKey[2] || "").toLowerCase(); if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) { return; } mainTypeSpecified = mainTypeSpecified || !!mainType; var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {}); queryOption[queryType] = value; }); return { mainTypeSpecified, queryOptionMap, others }; } var SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false }; var MULTIPLE_REFERRING = { useDefault: false, enableAll: true, enableNone: true }; function queryReferringComponents(ecModel, mainType, userOption, opt) { opt = opt || SINGLE_REFERRING; var indexOption = userOption.index; var idOption = userOption.id; var nameOption = userOption.name; var result = { models: null, specified: indexOption != null || idOption != null || nameOption != null }; if (!result.specified) { var firstCmpt = void 0; result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : []; return result; } if (indexOption === "none" || indexOption === false) { assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'); result.models = []; return result; } if (indexOption === "all") { assert(opt.enableAll, '`"all"` is not a valid value on index option.'); indexOption = idOption = nameOption = null; } result.models = ecModel.queryComponents({ mainType, index: indexOption, id: idOption, name: nameOption }); return result; } function setAttribute(dom, key2, value) { dom.setAttribute ? dom.setAttribute(key2, value) : dom[key2] = value; } function getAttribute(dom, key2) { return dom.getAttribute ? dom.getAttribute(key2) : dom[key2]; } function getTooltipRenderMode(renderModeOption) { if (renderModeOption === "auto") { return env$1.domSupported ? "html" : "richText"; } else { return renderModeOption || "html"; } } function groupData(array, getKey2) { var buckets = createHashMap(); var keys2 = []; each$g(array, function(item) { var key2 = getKey2(item); (buckets.get(key2) || (keys2.push(key2), buckets.set(key2, []))).push(item); }); return { keys: keys2, buckets }; } function interpolateRawValues(data, precision, sourceValue, targetValue, percent) { var isAutoPrecision = precision == null || precision === "auto"; if (targetValue == null) { return targetValue; } if (typeof targetValue === "number") { var value = interpolateNumber(sourceValue || 0, targetValue, percent); return round$2(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision); } else if (typeof targetValue === "string") { return percent < 1 ? sourceValue : targetValue; } else { var interpolated = []; var leftArr = sourceValue; var rightArr = targetValue; var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length); for (var i = 0; i < length_1; ++i) { var info = data.getDimensionInfo(i); if (info && info.type === "ordinal") { interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i]; } else { var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0; var rightVal = rightArr[i]; var value = interpolateNumber(leftVal, rightVal, percent); interpolated[i] = round$2(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision); } } return interpolated; } } var TYPE_DELIMITER = "."; var IS_CONTAINER = "___EC__COMPONENT__CONTAINER___"; var IS_EXTENDED_CLASS = "___EC__EXTENDED_CLASS___"; function parseClassType(componentType) { var ret = { main: "", sub: "" }; if (componentType) { var typeArr = componentType.split(TYPE_DELIMITER); ret.main = typeArr[0] || ""; ret.sub = typeArr[1] || ""; } return ret; } function checkClassType(componentType) { assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal'); } function isExtendedClass(clz) { return !!(clz && clz[IS_EXTENDED_CLASS]); } function enableClassExtend(rootClz, mandatoryMethods) { rootClz.$constructor = rootClz; rootClz.extend = function(proto2) { var superClass = this; function ExtendedClass() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!proto2.$constructor) { if (!isESClass(superClass)) { superClass.apply(this, arguments); } else { var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArray([void 0], args)))()); return ins; } } else { proto2.$constructor.apply(this, arguments); } } ExtendedClass[IS_EXTENDED_CLASS] = true; extend(ExtendedClass.prototype, proto2); ExtendedClass.extend = this.extend; ExtendedClass.superCall = superCall; ExtendedClass.superApply = superApply; inherits(ExtendedClass, this); ExtendedClass.superClass = superClass; return ExtendedClass; }; } function isESClass(fn) { return typeof fn === "function" && /^class\s/.test(Function.prototype.toString.call(fn)); } function mountExtend(SubClz, SupperClz) { SubClz.extend = SupperClz.extend; } var classBase = Math.round(Math.random() * 10); function enableClassCheck(target) { var classAttr = ["__\0is_clz", classBase++].join("_"); target.prototype[classAttr] = true; target.isInstance = function(obj) { return !!(obj && obj[classAttr]); }; } function superCall(context, methodName) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } return this.superClass.prototype[methodName].apply(context, args); } function superApply(context, methodName, args) { return this.superClass.prototype[methodName].apply(context, args); } function enableClassManagement(target) { var storage2 = {}; target.registerClass = function(clz) { var componentFullType = clz.type || clz.prototype.type; if (componentFullType) { checkClassType(componentFullType); clz.prototype.type = componentFullType; var componentTypeInfo = parseClassType(componentFullType); if (!componentTypeInfo.sub) { storage2[componentTypeInfo.main] = clz; } else if (componentTypeInfo.sub !== IS_CONTAINER) { var container = makeContainer(componentTypeInfo); container[componentTypeInfo.sub] = clz; } } return clz; }; target.getClass = function(mainType, subType, throwWhenNotFound) { var clz = storage2[mainType]; if (clz && clz[IS_CONTAINER]) { clz = subType ? clz[subType] : null; } if (throwWhenNotFound && !clz) { throw new Error(!subType ? mainType + ".type should be specified." : "Component " + mainType + "." + (subType || "") + " is used but not imported."); } return clz; }; target.getClassesByMainType = function(componentType) { var componentTypeInfo = parseClassType(componentType); var result = []; var obj = storage2[componentTypeInfo.main]; if (obj && obj[IS_CONTAINER]) { each$g(obj, function(o, type) { type !== IS_CONTAINER && result.push(o); }); } else { result.push(obj); } return result; }; target.hasClass = function(componentType) { var componentTypeInfo = parseClassType(componentType); return !!storage2[componentTypeInfo.main]; }; target.getAllClassMainTypes = function() { var types = []; each$g(storage2, function(obj, type) { types.push(type); }); return types; }; target.hasSubTypes = function(componentType) { var componentTypeInfo = parseClassType(componentType); var obj = storage2[componentTypeInfo.main]; return obj && obj[IS_CONTAINER]; }; function makeContainer(componentTypeInfo) { var container = storage2[componentTypeInfo.main]; if (!container || !container[IS_CONTAINER]) { container = storage2[componentTypeInfo.main] = {}; container[IS_CONTAINER] = true; } return container; } } function makeStyleMapper(properties, ignoreParent) { for (var i = 0; i < properties.length; i++) { if (!properties[i][1]) { properties[i][1] = properties[i][0]; } } ignoreParent = ignoreParent || false; return function(model, excludes, includes) { var style = {}; for (var i2 = 0; i2 < properties.length; i2++) { var propName = properties[i2][1]; if (excludes && indexOf(excludes, propName) >= 0 || includes && indexOf(includes, propName) < 0) { continue; } var val = model.getShallow(propName, ignoreParent); if (val != null) { style[properties[i2][0]] = val; } } return style; }; } var AREA_STYLE_KEY_MAP = [ ["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"] ]; var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP); var AreaStyleMixin = function() { function AreaStyleMixin2() { } AreaStyleMixin2.prototype.getAreaStyle = function(excludes, includes) { return getAreaStyle(this, excludes, includes); }; return AreaStyleMixin2; }(); var globalImageCache = new LRU$1(50); function findExistImage(newImageOrSrc) { if (typeof newImageOrSrc === "string") { var cachedImgObj = globalImageCache.get(newImageOrSrc); return cachedImgObj && cachedImgObj.image; } else { return newImageOrSrc; } } function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) { if (!newImageOrSrc) { return image; } else if (typeof newImageOrSrc === "string") { if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) { return image; } var cachedImgObj = globalImageCache.get(newImageOrSrc); var pendingWrap = { hostEl, cb: onload, cbPayload }; if (cachedImgObj) { image = cachedImgObj.image; !isImageReady(image) && cachedImgObj.pending.push(pendingWrap); } else { image = new Image(); image.onload = image.onerror = imageOnLoad; globalImageCache.put(newImageOrSrc, image.__cachedImgObj = { image, pending: [pendingWrap] }); image.src = image.__zrImageSrc = newImageOrSrc; } return image; } else { return newImageOrSrc; } } function imageOnLoad() { var cachedImgObj = this.__cachedImgObj; this.onload = this.onerror = this.__cachedImgObj = null; for (var i = 0; i < cachedImgObj.pending.length; i++) { var pendingWrap = cachedImgObj.pending[i]; var cb = pendingWrap.cb; cb && cb(this, pendingWrap.cbPayload); pendingWrap.hostEl.dirty(); } cachedImgObj.pending.length = 0; } function isImageReady(image) { return image && image.width && image.height; } var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g; function truncateText(text, containerWidth, font, ellipsis, options) { if (!containerWidth) { return ""; } var textLines = (text + "").split("\n"); options = prepareTruncateOptions(containerWidth, font, ellipsis, options); for (var i = 0, len2 = textLines.length; i < len2; i++) { textLines[i] = truncateSingleLine(textLines[i], options); } return textLines.join("\n"); } function prepareTruncateOptions(containerWidth, font, ellipsis, options) { options = options || {}; var preparedOpts = extend({}, options); preparedOpts.font = font; ellipsis = retrieve2(ellipsis, "..."); preparedOpts.maxIterations = retrieve2(options.maxIterations, 2); var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0); preparedOpts.cnCharWidth = getWidth("\u56FD", font); var ascCharWidth = preparedOpts.ascCharWidth = getWidth("a", font); preparedOpts.placeholder = retrieve2(options.placeholder, ""); var contentWidth = containerWidth = Math.max(0, containerWidth - 1); for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) { contentWidth -= ascCharWidth; } var ellipsisWidth = getWidth(ellipsis, font); if (ellipsisWidth > contentWidth) { ellipsis = ""; ellipsisWidth = 0; } contentWidth = containerWidth - ellipsisWidth; preparedOpts.ellipsis = ellipsis; preparedOpts.ellipsisWidth = ellipsisWidth; preparedOpts.contentWidth = contentWidth; preparedOpts.containerWidth = containerWidth; return preparedOpts; } function truncateSingleLine(textLine, options) { var containerWidth = options.containerWidth; var font = options.font; var contentWidth = options.contentWidth; if (!containerWidth) { return ""; } var lineWidth = getWidth(textLine, font); if (lineWidth <= containerWidth) { return textLine; } for (var j = 0; ; j++) { if (lineWidth <= contentWidth || j >= options.maxIterations) { textLine += options.ellipsis; break; } var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0; textLine = textLine.substr(0, subLength); lineWidth = getWidth(textLine, font); } if (textLine === "") { textLine = options.placeholder; } return textLine; } function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) { var width = 0; var i = 0; for (var len2 = text.length; i < len2 && width < contentWidth; i++) { var charCode = text.charCodeAt(i); width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth; } return i; } function parsePlainText(text, style) { text != null && (text += ""); var overflow = style.overflow; var padding = style.padding; var font = style.font; var truncate = overflow === "truncate"; var calculatedLineHeight = getLineHeight(font); var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight); var truncateLineOverflow = style.lineOverflow === "truncate"; var width = style.width; var lines; if (width != null && overflow === "break" || overflow === "breakAll") { lines = text ? wrapText(text, style.font, width, overflow === "breakAll", 0).lines : []; } else { lines = text ? text.split("\n") : []; } var contentHeight = lines.length * lineHeight; var height = retrieve2(style.height, contentHeight); if (contentHeight > height && truncateLineOverflow) { var lineCount = Math.floor(height / lineHeight); lines = lines.slice(0, lineCount); } var outerHeight = height; var outerWidth = width; if (padding) { outerHeight += padding[0] + padding[2]; if (outerWidth != null) { outerWidth += padding[1] + padding[3]; } } if (text && truncate && outerWidth != null) { var options = prepareTruncateOptions(width, font, style.ellipsis, { minChar: style.truncateMinChar, placeholder: style.placeholder }); for (var i = 0; i < lines.length; i++) { lines[i] = truncateSingleLine(lines[i], options); } } if (width == null) { var maxWidth = 0; for (var i = 0; i < lines.length; i++) { maxWidth = Math.max(getWidth(lines[i], font), maxWidth); } width = maxWidth; } return { lines, height, outerHeight, lineHeight, calculatedLineHeight, contentHeight, width }; } var RichTextToken = function() { function RichTextToken2() { } return RichTextToken2; }(); var RichTextLine = function() { function RichTextLine2(tokens) { this.tokens = []; if (tokens) { this.tokens = tokens; } } return RichTextLine2; }(); var RichTextContentBlock = function() { function RichTextContentBlock2() { this.width = 0; this.height = 0; this.contentWidth = 0; this.contentHeight = 0; this.outerWidth = 0; this.outerHeight = 0; this.lines = []; } return RichTextContentBlock2; }(); function parseRichText(text, style) { var contentBlock = new RichTextContentBlock(); text != null && (text += ""); if (!text) { return contentBlock; } var topWidth = style.width; var topHeight = style.height; var overflow = style.overflow; var wrapInfo = (overflow === "break" || overflow === "breakAll") && topWidth != null ? { width: topWidth, accumWidth: 0, breakAll: overflow === "breakAll" } : null; var lastIndex = STYLE_REG.lastIndex = 0; var result; while ((result = STYLE_REG.exec(text)) != null) { var matchedIndex = result.index; if (matchedIndex > lastIndex) { pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo); } pushTokens(contentBlock, result[2], style, wrapInfo, result[1]); lastIndex = STYLE_REG.lastIndex; } if (lastIndex < text.length) { pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo); } var pendingList = []; var calculatedHeight = 0; var calculatedWidth = 0; var stlPadding = style.padding; var truncate = overflow === "truncate"; var truncateLine = style.lineOverflow === "truncate"; function finishLine(line2, lineWidth2, lineHeight2) { line2.width = lineWidth2; line2.lineHeight = lineHeight2; calculatedHeight += lineHeight2; calculatedWidth = Math.max(calculatedWidth, lineWidth2); } outer: for (var i = 0; i < contentBlock.lines.length; i++) { var line = contentBlock.lines[i]; var lineHeight = 0; var lineWidth = 0; for (var j = 0; j < line.tokens.length; j++) { var token = line.tokens[j]; var tokenStyle = token.styleName && style.rich[token.styleName] || {}; var textPadding = token.textPadding = tokenStyle.padding; var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0; var font = token.font = tokenStyle.font || style.font; token.contentHeight = getLineHeight(font); var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight); token.innerHeight = tokenHeight; textPadding && (tokenHeight += textPadding[0] + textPadding[2]); token.height = tokenHeight; token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight); token.align = tokenStyle && tokenStyle.align || style.align; token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || "middle"; if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) { if (j > 0) { line.tokens = line.tokens.slice(0, j); finishLine(line, lineWidth, lineHeight); contentBlock.lines = contentBlock.lines.slice(0, i + 1); } else { contentBlock.lines = contentBlock.lines.slice(0, i); } break outer; } var styleTokenWidth = tokenStyle.width; var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === "auto"; if (typeof styleTokenWidth === "string" && styleTokenWidth.charAt(styleTokenWidth.length - 1) === "%") { token.percentWidth = styleTokenWidth; pendingList.push(token); token.contentWidth = getWidth(token.text, font); } else { if (tokenWidthNotSpecified) { var textBackgroundColor = tokenStyle.backgroundColor; var bgImg = textBackgroundColor && textBackgroundColor.image; if (bgImg) { bgImg = findExistImage(bgImg); if (isImageReady(bgImg)) { token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height); } } } var remainTruncWidth = truncate && topWidth != null ? topWidth - lineWidth : null; if (remainTruncWidth != null && remainTruncWidth < token.width) { if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) { token.text = ""; token.width = token.contentWidth = 0; } else { token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar }); token.width = token.contentWidth = getWidth(token.text, font); } } else { token.contentWidth = getWidth(token.text, font); } } token.width += paddingH; lineWidth += token.width; tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight)); } finishLine(line, lineWidth, lineHeight); } contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth); contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight); contentBlock.contentHeight = calculatedHeight; contentBlock.contentWidth = calculatedWidth; if (stlPadding) { contentBlock.outerWidth += stlPadding[1] + stlPadding[3]; contentBlock.outerHeight += stlPadding[0] + stlPadding[2]; } for (var i = 0; i < pendingList.length; i++) { var token = pendingList[i]; var percentWidth = token.percentWidth; token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width; } return contentBlock; } function pushTokens(block, str, style, wrapInfo, styleName) { var isEmptyStr = str === ""; var tokenStyle = styleName && style.rich[styleName] || {}; var lines = block.lines; var font = tokenStyle.font || style.font; var newLine = false; var strLines; var linesWidths; if (wrapInfo) { var tokenPadding = tokenStyle.padding; var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0; if (tokenStyle.width != null && tokenStyle.width !== "auto") { var outerWidth_1 = parsePercent$2(tokenStyle.width, wrapInfo.width) + tokenPaddingH; if (lines.length > 0) { if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) { strLines = str.split("\n"); newLine = true; } } wrapInfo.accumWidth = outerWidth_1; } else { var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth); wrapInfo.accumWidth = res.accumWidth + tokenPaddingH; linesWidths = res.linesWidths; strLines = res.lines; } } else { strLines = str.split("\n"); } for (var i = 0; i < strLines.length; i++) { var text = strLines[i]; var token = new RichTextToken(); token.styleName = styleName; token.text = text; token.isLineHolder = !text && !isEmptyStr; if (typeof tokenStyle.width === "number") { token.width = tokenStyle.width; } else { token.width = linesWidths ? linesWidths[i] : getWidth(text, font); } if (!i && !newLine) { var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens; var tokensLen = tokens.length; tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : (text || !tokensLen || isEmptyStr) && tokens.push(token); } else { lines.push(new RichTextLine([token])); } } } function isLatin(ch) { var code = ch.charCodeAt(0); return code >= 33 && code <= 255; } var breakCharMap = reduce(",&?/;] ".split(""), function(obj, ch) { obj[ch] = true; return obj; }, {}); function isWordBreakChar(ch) { if (isLatin(ch)) { if (breakCharMap[ch]) { return true; } return false; } return true; } function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) { var lines = []; var linesWidths = []; var line = ""; var currentWord = ""; var currentWordWidth = 0; var accumWidth = 0; for (var i = 0; i < text.length; i++) { var ch = text.charAt(i); if (ch === "\n") { if (currentWord) { line += currentWord; accumWidth += currentWordWidth; } lines.push(line); linesWidths.push(accumWidth); line = ""; currentWord = ""; currentWordWidth = 0; accumWidth = 0; continue; } var chWidth = getWidth(ch, font); var inWord = isBreakAll ? false : !isWordBreakChar(ch); if (!lines.length ? lastAccumWidth + accumWidth + chWidth > lineWidth : accumWidth + chWidth > lineWidth) { if (!accumWidth) { if (inWord) { lines.push(currentWord); linesWidths.push(currentWordWidth); currentWord = ch; currentWordWidth = chWidth; } else { lines.push(ch); linesWidths.push(chWidth); } } else if (line || currentWord) { if (inWord) { if (!line) { line = currentWord; currentWord = ""; currentWordWidth = 0; accumWidth = currentWordWidth; } lines.push(line); linesWidths.push(accumWidth - currentWordWidth); currentWord += ch; currentWordWidth += chWidth; line = ""; accumWidth = currentWordWidth; } else { if (currentWord) { line += currentWord; accumWidth += currentWordWidth; currentWord = ""; currentWordWidth = 0; } lines.push(line); linesWidths.push(accumWidth); line = ch; accumWidth = chWidth; } } continue; } accumWidth += chWidth; if (inWord) { currentWord += ch; currentWordWidth += chWidth; } else { if (currentWord) { line += currentWord; currentWord = ""; currentWordWidth = 0; } line += ch; } } if (!lines.length && !line) { line = text; currentWord = ""; currentWordWidth = 0; } if (currentWord) { line += currentWord; } if (line) { lines.push(line); linesWidths.push(accumWidth); } if (lines.length === 1) { accumWidth += lastAccumWidth; } return { accumWidth, lines, linesWidths }; } var STYLE_MAGIC_KEY = "__zr_style_" + Math.round(Math.random() * 10); var DEFAULT_COMMON_STYLE = { shadowBlur: 0, shadowOffsetX: 0, shadowOffsetY: 0, shadowColor: "#000", opacity: 1, blend: "source-over" }; var DEFAULT_COMMON_ANIMATION_PROPS = { style: { shadowBlur: true, shadowOffsetX: true, shadowOffsetY: true, shadowColor: true, opacity: true } }; DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true; var PRIMARY_STATES_KEYS = ["z", "z2", "invisible"]; var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ["invisible"]; var Displayable = function(_super) { __extends(Displayable2, _super); function Displayable2(props) { return _super.call(this, props) || this; } Displayable2.prototype._init = function(props) { var keysArr = keys(props); for (var i = 0; i < keysArr.length; i++) { var key2 = keysArr[i]; if (key2 === "style") { this.useStyle(props[key2]); } else { _super.prototype.attrKV.call(this, key2, props[key2]); } } if (!this.style) { this.useStyle({}); } }; Displayable2.prototype.beforeBrush = function() { }; Displayable2.prototype.afterBrush = function() { }; Displayable2.prototype.innerBeforeBrush = function() { }; Displayable2.prototype.innerAfterBrush = function() { }; Displayable2.prototype.shouldBePainted = function(viewWidth, viewHeight, considerClipPath, considerAncestors) { var m2 = this.transform; if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && isDisplayableCulled(this, viewWidth, viewHeight) || m2 && !m2[0] && !m2[3]) { return false; } if (considerClipPath && this.__clipPaths) { for (var i = 0; i < this.__clipPaths.length; ++i) { if (this.__clipPaths[i].isZeroArea()) { return false; } } } if (considerAncestors && this.parent) { var parent_1 = this.parent; while (parent_1) { if (parent_1.ignore) { return false; } parent_1 = parent_1.parent; } } return true; }; Displayable2.prototype.contain = function(x, y) { return this.rectContain(x, y); }; Displayable2.prototype.traverse = function(cb, context) { cb.call(context, this); }; Displayable2.prototype.rectContain = function(x, y) { var coord = this.transformCoordToLocal(x, y); var rect = this.getBoundingRect(); return rect.contain(coord[0], coord[1]); }; Displayable2.prototype.getPaintRect = function() { var rect = this._paintRect; if (!this._paintRect || this.__dirty) { var transform2 = this.transform; var elRect = this.getBoundingRect(); var style = this.style; var shadowSize = style.shadowBlur || 0; var shadowOffsetX = style.shadowOffsetX || 0; var shadowOffsetY = style.shadowOffsetY || 0; rect = this._paintRect || (this._paintRect = new BoundingRect$1(0, 0, 0, 0)); if (transform2) { BoundingRect$1.applyTransform(rect, elRect, transform2); } else { rect.copy(elRect); } if (shadowSize || shadowOffsetX || shadowOffsetY) { rect.width += shadowSize * 2 + Math.abs(shadowOffsetX); rect.height += shadowSize * 2 + Math.abs(shadowOffsetY); rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize); rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize); } var tolerance = this.dirtyRectTolerance; if (!rect.isZero()) { rect.x = Math.floor(rect.x - tolerance); rect.y = Math.floor(rect.y - tolerance); rect.width = Math.ceil(rect.width + 1 + tolerance * 2); rect.height = Math.ceil(rect.height + 1 + tolerance * 2); } } return rect; }; Displayable2.prototype.setPrevPaintRect = function(paintRect) { if (paintRect) { this._prevPaintRect = this._prevPaintRect || new BoundingRect$1(0, 0, 0, 0); this._prevPaintRect.copy(paintRect); } else { this._prevPaintRect = null; } }; Displayable2.prototype.getPrevPaintRect = function() { return this._prevPaintRect; }; Displayable2.prototype.animateStyle = function(loop) { return this.animate("style", loop); }; Displayable2.prototype.updateDuringAnimation = function(targetKey) { if (targetKey === "style") { this.dirtyStyle(); } else { this.markRedraw(); } }; Displayable2.prototype.attrKV = function(key2, value) { if (key2 !== "style") { _super.prototype.attrKV.call(this, key2, value); } else { if (!this.style) { this.useStyle(value); } else { this.setStyle(value); } } }; Displayable2.prototype.setStyle = function(keyOrObj, value) { if (typeof keyOrObj === "string") { this.style[keyOrObj] = value; } else { extend(this.style, keyOrObj); } this.dirtyStyle(); return this; }; Displayable2.prototype.dirtyStyle = function(notRedraw) { if (!notRedraw) { this.markRedraw(); } this.__dirty |= STYLE_CHANGED_BIT; if (this._rect) { this._rect = null; } }; Displayable2.prototype.dirty = function() { this.dirtyStyle(); }; Displayable2.prototype.styleChanged = function() { return !!(this.__dirty & STYLE_CHANGED_BIT); }; Displayable2.prototype.styleUpdated = function() { this.__dirty &= ~STYLE_CHANGED_BIT; }; Displayable2.prototype.createStyle = function(obj) { return createObject(DEFAULT_COMMON_STYLE, obj); }; Displayable2.prototype.useStyle = function(obj) { if (!obj[STYLE_MAGIC_KEY]) { obj = this.createStyle(obj); } if (this.__inHover) { this.__hoverStyle = obj; } else { this.style = obj; } this.dirtyStyle(); }; Displayable2.prototype.isStyleObject = function(obj) { return obj[STYLE_MAGIC_KEY]; }; Displayable2.prototype._innerSaveToNormal = function(toState) { _super.prototype._innerSaveToNormal.call(this, toState); var normalState = this._normalState; if (toState.style && !normalState.style) { normalState.style = this._mergeStyle(this.createStyle(), this.style); } this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS); }; Displayable2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); var needsRestoreToNormal = !(state && keepCurrentStates); var targetStyle; if (state && state.style) { if (transition) { if (keepCurrentStates) { targetStyle = state.style; } else { targetStyle = this._mergeStyle(this.createStyle(), normalState.style); this._mergeStyle(targetStyle, state.style); } } else { targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style); this._mergeStyle(targetStyle, state.style); } } else if (needsRestoreToNormal) { targetStyle = normalState.style; } if (targetStyle) { if (transition) { var sourceStyle = this.style; this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle); if (needsRestoreToNormal) { var changedKeys = keys(sourceStyle); for (var i = 0; i < changedKeys.length; i++) { var key2 = changedKeys[i]; if (key2 in targetStyle) { targetStyle[key2] = targetStyle[key2]; this.style[key2] = sourceStyle[key2]; } } } var targetKeys = keys(targetStyle); for (var i = 0; i < targetKeys.length; i++) { var key2 = targetKeys[i]; this.style[key2] = this.style[key2]; } this._transitionState(stateName, { style: targetStyle }, animationCfg, this.getAnimationStyleProps()); } else { this.useStyle(targetStyle); } } var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS; for (var i = 0; i < statesKeys.length; i++) { var key2 = statesKeys[i]; if (state && state[key2] != null) { this[key2] = state[key2]; } else if (needsRestoreToNormal) { if (normalState[key2] != null) { this[key2] = normalState[key2]; } } } }; Displayable2.prototype._mergeStates = function(states) { var mergedState = _super.prototype._mergeStates.call(this, states); var mergedStyle; for (var i = 0; i < states.length; i++) { var state = states[i]; if (state.style) { mergedStyle = mergedStyle || {}; this._mergeStyle(mergedStyle, state.style); } } if (mergedStyle) { mergedState.style = mergedStyle; } return mergedState; }; Displayable2.prototype._mergeStyle = function(targetStyle, sourceStyle) { extend(targetStyle, sourceStyle); return targetStyle; }; Displayable2.prototype.getAnimationStyleProps = function() { return DEFAULT_COMMON_ANIMATION_PROPS; }; Displayable2.initDefaultProps = function() { var dispProto = Displayable2.prototype; dispProto.type = "displayable"; dispProto.invisible = false; dispProto.z = 0; dispProto.z2 = 0; dispProto.zlevel = 0; dispProto.culling = false; dispProto.cursor = "pointer"; dispProto.rectHover = false; dispProto.incremental = false; dispProto._rect = null; dispProto.dirtyRectTolerance = 0; dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT; }(); return Displayable2; }(Element$1); var tmpRect = new BoundingRect$1(0, 0, 0, 0); var viewRect = new BoundingRect$1(0, 0, 0, 0); function isDisplayableCulled(el, width, height) { tmpRect.copy(el.getBoundingRect()); if (el.transform) { tmpRect.applyTransform(el.transform); } viewRect.width = width; viewRect.height = height; return !tmpRect.intersect(viewRect); } var Displayable$1 = Displayable; var mathPow$2 = Math.pow; var mathSqrt$4 = Math.sqrt; var EPSILON$3 = 1e-8; var EPSILON_NUMERIC = 1e-4; var THREE_SQRT = mathSqrt$4(3); var ONE_THIRD = 1 / 3; var _v0 = create$2(); var _v1 = create$2(); var _v2 = create$2(); function isAroundZero$1(val) { return val > -EPSILON$3 && val < EPSILON$3; } function isNotAroundZero(val) { return val > EPSILON$3 || val < -EPSILON$3; } function cubicAt(p0, p1, p2, p3, t) { var onet = 1 - t; return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2); } function cubicDerivativeAt(p0, p1, p2, p3, t) { var onet = 1 - t; return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t); } function cubicRootAt(p0, p1, p2, p3, val, roots2) { var a = p3 + 3 * (p1 - p2) - p0; var b = 3 * (p2 - p1 * 2 + p0); var c = 3 * (p1 - p0); var d = p0 - val; var A = b * b - 3 * a * c; var B = b * c - 9 * a * d; var C = c * c - 3 * b * d; var n = 0; if (isAroundZero$1(A) && isAroundZero$1(B)) { if (isAroundZero$1(b)) { roots2[0] = 0; } else { var t1 = -c / b; if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } } } else { var disc = B * B - 4 * A * C; if (isAroundZero$1(disc)) { var K = B / A; var t1 = -b / a + K; var t2 = -K / 2; if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } if (t2 >= 0 && t2 <= 1) { roots2[n++] = t2; } } else if (disc > 0) { var discSqrt = mathSqrt$4(disc); var Y1 = A * b + 1.5 * a * (-B + discSqrt); var Y2 = A * b + 1.5 * a * (-B - discSqrt); if (Y1 < 0) { Y1 = -mathPow$2(-Y1, ONE_THIRD); } else { Y1 = mathPow$2(Y1, ONE_THIRD); } if (Y2 < 0) { Y2 = -mathPow$2(-Y2, ONE_THIRD); } else { Y2 = mathPow$2(Y2, ONE_THIRD); } var t1 = (-b - (Y1 + Y2)) / (3 * a); if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } } else { var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt$4(A * A * A)); var theta = Math.acos(T) / 3; var ASqrt = mathSqrt$4(A); var tmp = Math.cos(theta); var t1 = (-b - 2 * ASqrt * tmp) / (3 * a); var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a); var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a); if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } if (t2 >= 0 && t2 <= 1) { roots2[n++] = t2; } if (t3 >= 0 && t3 <= 1) { roots2[n++] = t3; } } } return n; } function cubicExtrema(p0, p1, p2, p3, extrema2) { var b = 6 * p2 - 12 * p1 + 6 * p0; var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2; var c = 3 * p1 - 3 * p0; var n = 0; if (isAroundZero$1(a)) { if (isNotAroundZero(b)) { var t1 = -c / b; if (t1 >= 0 && t1 <= 1) { extrema2[n++] = t1; } } } else { var disc = b * b - 4 * a * c; if (isAroundZero$1(disc)) { extrema2[0] = -b / (2 * a); } else if (disc > 0) { var discSqrt = mathSqrt$4(disc); var t1 = (-b + discSqrt) / (2 * a); var t2 = (-b - discSqrt) / (2 * a); if (t1 >= 0 && t1 <= 1) { extrema2[n++] = t1; } if (t2 >= 0 && t2 <= 1) { extrema2[n++] = t2; } } } return n; } function cubicSubdivide(p0, p1, p2, p3, t, out2) { var p01 = (p1 - p0) * t + p0; var p12 = (p2 - p1) * t + p1; var p23 = (p3 - p2) * t + p2; var p012 = (p12 - p01) * t + p01; var p123 = (p23 - p12) * t + p12; var p0123 = (p123 - p012) * t + p012; out2[0] = p0; out2[1] = p01; out2[2] = p012; out2[3] = p0123; out2[4] = p0123; out2[5] = p123; out2[6] = p23; out2[7] = p3; } function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out2) { var t; var interval = 5e-3; var d = Infinity; var prev; var next; var d1; var d2; _v0[0] = x; _v0[1] = y; for (var _t = 0; _t < 1; _t += 0.05) { _v1[0] = cubicAt(x0, x1, x2, x3, _t); _v1[1] = cubicAt(y0, y1, y2, y3, _t); d1 = distSquare(_v0, _v1); if (d1 < d) { t = _t; d = d1; } } d = Infinity; for (var i = 0; i < 32; i++) { if (interval < EPSILON_NUMERIC) { break; } prev = t - interval; next = t + interval; _v1[0] = cubicAt(x0, x1, x2, x3, prev); _v1[1] = cubicAt(y0, y1, y2, y3, prev); d1 = distSquare(_v1, _v0); if (prev >= 0 && d1 < d) { t = prev; d = d1; } else { _v2[0] = cubicAt(x0, x1, x2, x3, next); _v2[1] = cubicAt(y0, y1, y2, y3, next); d2 = distSquare(_v2, _v0); if (next <= 1 && d2 < d) { t = next; d = d2; } else { interval *= 0.5; } } } if (out2) { out2[0] = cubicAt(x0, x1, x2, x3, t); out2[1] = cubicAt(y0, y1, y2, y3, t); } return mathSqrt$4(d); } function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) { var px = x0; var py = y0; var d = 0; var step2 = 1 / iteration; for (var i = 1; i <= iteration; i++) { var t = i * step2; var x = cubicAt(x0, x1, x2, x3, t); var y = cubicAt(y0, y1, y2, y3, t); var dx = x - px; var dy = y - py; d += Math.sqrt(dx * dx + dy * dy); px = x; py = y; } return d; } function quadraticAt$1(p0, p1, p2, t) { var onet = 1 - t; return onet * (onet * p0 + 2 * t * p1) + t * t * p2; } function quadraticDerivativeAt(p0, p1, p2, t) { return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1)); } function quadraticRootAt(p0, p1, p2, val, roots2) { var a = p0 - 2 * p1 + p2; var b = 2 * (p1 - p0); var c = p0 - val; var n = 0; if (isAroundZero$1(a)) { if (isNotAroundZero(b)) { var t1 = -c / b; if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } } } else { var disc = b * b - 4 * a * c; if (isAroundZero$1(disc)) { var t1 = -b / (2 * a); if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } } else if (disc > 0) { var discSqrt = mathSqrt$4(disc); var t1 = (-b + discSqrt) / (2 * a); var t2 = (-b - discSqrt) / (2 * a); if (t1 >= 0 && t1 <= 1) { roots2[n++] = t1; } if (t2 >= 0 && t2 <= 1) { roots2[n++] = t2; } } } return n; } function quadraticExtremum(p0, p1, p2) { var divider = p0 + p2 - 2 * p1; if (divider === 0) { return 0.5; } else { return (p0 - p1) / divider; } } function quadraticSubdivide(p0, p1, p2, t, out2) { var p01 = (p1 - p0) * t + p0; var p12 = (p2 - p1) * t + p1; var p012 = (p12 - p01) * t + p01; out2[0] = p0; out2[1] = p01; out2[2] = p012; out2[3] = p012; out2[4] = p12; out2[5] = p2; } function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out2) { var t; var interval = 5e-3; var d = Infinity; _v0[0] = x; _v0[1] = y; for (var _t = 0; _t < 1; _t += 0.05) { _v1[0] = quadraticAt$1(x0, x1, x2, _t); _v1[1] = quadraticAt$1(y0, y1, y2, _t); var d1 = distSquare(_v0, _v1); if (d1 < d) { t = _t; d = d1; } } d = Infinity; for (var i = 0; i < 32; i++) { if (interval < EPSILON_NUMERIC) { break; } var prev = t - interval; var next = t + interval; _v1[0] = quadraticAt$1(x0, x1, x2, prev); _v1[1] = quadraticAt$1(y0, y1, y2, prev); var d1 = distSquare(_v1, _v0); if (prev >= 0 && d1 < d) { t = prev; d = d1; } else { _v2[0] = quadraticAt$1(x0, x1, x2, next); _v2[1] = quadraticAt$1(y0, y1, y2, next); var d2 = distSquare(_v2, _v0); if (next <= 1 && d2 < d) { t = next; d = d2; } else { interval *= 0.5; } } } if (out2) { out2[0] = quadraticAt$1(x0, x1, x2, t); out2[1] = quadraticAt$1(y0, y1, y2, t); } return mathSqrt$4(d); } function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) { var px = x0; var py = y0; var d = 0; var step2 = 1 / iteration; for (var i = 1; i <= iteration; i++) { var t = i * step2; var x = quadraticAt$1(x0, x1, x2, t); var y = quadraticAt$1(y0, y1, y2, t); var dx = x - px; var dy = y - py; d += Math.sqrt(dx * dx + dy * dy); px = x; py = y; } return d; } var mathMin$9 = Math.min; var mathMax$9 = Math.max; var mathSin$4 = Math.sin; var mathCos$4 = Math.cos; var PI2$9 = Math.PI * 2; var start = create$2(); var end = create$2(); var extremity = create$2(); function fromPoints(points2, min3, max3) { if (points2.length === 0) { return; } var p = points2[0]; var left = p[0]; var right2 = p[0]; var top2 = p[1]; var bottom2 = p[1]; for (var i = 1; i < points2.length; i++) { p = points2[i]; left = mathMin$9(left, p[0]); right2 = mathMax$9(right2, p[0]); top2 = mathMin$9(top2, p[1]); bottom2 = mathMax$9(bottom2, p[1]); } min3[0] = left; min3[1] = top2; max3[0] = right2; max3[1] = bottom2; } function fromLine(x0, y0, x1, y1, min3, max3) { min3[0] = mathMin$9(x0, x1); min3[1] = mathMin$9(y0, y1); max3[0] = mathMax$9(x0, x1); max3[1] = mathMax$9(y0, y1); } var xDim = []; var yDim = []; function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min3, max3) { var cubicExtrema$1 = cubicExtrema; var cubicAt$1 = cubicAt; var n = cubicExtrema$1(x0, x1, x2, x3, xDim); min3[0] = Infinity; min3[1] = Infinity; max3[0] = -Infinity; max3[1] = -Infinity; for (var i = 0; i < n; i++) { var x = cubicAt$1(x0, x1, x2, x3, xDim[i]); min3[0] = mathMin$9(x, min3[0]); max3[0] = mathMax$9(x, max3[0]); } n = cubicExtrema$1(y0, y1, y2, y3, yDim); for (var i = 0; i < n; i++) { var y = cubicAt$1(y0, y1, y2, y3, yDim[i]); min3[1] = mathMin$9(y, min3[1]); max3[1] = mathMax$9(y, max3[1]); } min3[0] = mathMin$9(x0, min3[0]); max3[0] = mathMax$9(x0, max3[0]); min3[0] = mathMin$9(x3, min3[0]); max3[0] = mathMax$9(x3, max3[0]); min3[1] = mathMin$9(y0, min3[1]); max3[1] = mathMax$9(y0, max3[1]); min3[1] = mathMin$9(y3, min3[1]); max3[1] = mathMax$9(y3, max3[1]); } function fromQuadratic(x0, y0, x1, y1, x2, y2, min3, max3) { var quadraticExtremum$1 = quadraticExtremum; var quadraticAt2 = quadraticAt$1; var tx = mathMax$9(mathMin$9(quadraticExtremum$1(x0, x1, x2), 1), 0); var ty = mathMax$9(mathMin$9(quadraticExtremum$1(y0, y1, y2), 1), 0); var x = quadraticAt2(x0, x1, x2, tx); var y = quadraticAt2(y0, y1, y2, ty); min3[0] = mathMin$9(x0, x2, x); min3[1] = mathMin$9(y0, y2, y); max3[0] = mathMax$9(x0, x2, x); max3[1] = mathMax$9(y0, y2, y); } function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min3, max3) { var vec2Min = min$1; var vec2Max = max$1; var diff2 = Math.abs(startAngle - endAngle); if (diff2 % PI2$9 < 1e-4 && diff2 > 1e-4) { min3[0] = x - rx; min3[1] = y - ry; max3[0] = x + rx; max3[1] = y + ry; return; } start[0] = mathCos$4(startAngle) * rx + x; start[1] = mathSin$4(startAngle) * ry + y; end[0] = mathCos$4(endAngle) * rx + x; end[1] = mathSin$4(endAngle) * ry + y; vec2Min(min3, start, end); vec2Max(max3, start, end); startAngle = startAngle % PI2$9; if (startAngle < 0) { startAngle = startAngle + PI2$9; } endAngle = endAngle % PI2$9; if (endAngle < 0) { endAngle = endAngle + PI2$9; } if (startAngle > endAngle && !anticlockwise) { endAngle += PI2$9; } else if (startAngle < endAngle && anticlockwise) { startAngle += PI2$9; } if (anticlockwise) { var tmp = endAngle; endAngle = startAngle; startAngle = tmp; } for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { if (angle > startAngle) { extremity[0] = mathCos$4(angle) * rx + x; extremity[1] = mathSin$4(angle) * ry + y; vec2Min(min3, extremity, min3); vec2Max(max3, extremity, max3); } } } var CMD$4 = { M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7 }; var tmpOutX = []; var tmpOutY = []; var min = []; var max = []; var min2 = []; var max2 = []; var mathMin$8 = Math.min; var mathMax$8 = Math.max; var mathCos$3 = Math.cos; var mathSin$3 = Math.sin; var mathSqrt$3 = Math.sqrt; var mathAbs$2 = Math.abs; var PI$8 = Math.PI; var PI2$8 = PI$8 * 2; var hasTypedArray = typeof Float32Array !== "undefined"; var tmpAngles = []; function modPI2(radian) { var n = Math.round(radian / PI$8 * 1e8) / 1e8; return n % 2 * PI$8; } function normalizeArcAngles(angles, anticlockwise) { var newStartAngle = modPI2(angles[0]); if (newStartAngle < 0) { newStartAngle += PI2$8; } var delta = newStartAngle - angles[0]; var newEndAngle = angles[1]; newEndAngle += delta; if (!anticlockwise && newEndAngle - newStartAngle >= PI2$8) { newEndAngle = newStartAngle + PI2$8; } else if (anticlockwise && newStartAngle - newEndAngle >= PI2$8) { newEndAngle = newStartAngle - PI2$8; } else if (!anticlockwise && newStartAngle > newEndAngle) { newEndAngle = newStartAngle + (PI2$8 - modPI2(newStartAngle - newEndAngle)); } else if (anticlockwise && newStartAngle < newEndAngle) { newEndAngle = newStartAngle - (PI2$8 - modPI2(newEndAngle - newStartAngle)); } angles[0] = newStartAngle; angles[1] = newEndAngle; } var PathProxy = function() { function PathProxy2(notSaveData) { this.dpr = 1; this._xi = 0; this._yi = 0; this._x0 = 0; this._y0 = 0; this._len = 0; if (notSaveData) { this._saveData = false; } if (this._saveData) { this.data = []; } } PathProxy2.prototype.increaseVersion = function() { this._version++; }; PathProxy2.prototype.getVersion = function() { return this._version; }; PathProxy2.prototype.setScale = function(sx, sy, segmentIgnoreThreshold) { segmentIgnoreThreshold = segmentIgnoreThreshold || 0; if (segmentIgnoreThreshold > 0) { this._ux = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sx) || 0; this._uy = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sy) || 0; } }; PathProxy2.prototype.setDPR = function(dpr2) { this.dpr = dpr2; }; PathProxy2.prototype.setContext = function(ctx) { this._ctx = ctx; }; PathProxy2.prototype.getContext = function() { return this._ctx; }; PathProxy2.prototype.beginPath = function() { this._ctx && this._ctx.beginPath(); this.reset(); return this; }; PathProxy2.prototype.reset = function() { if (this._saveData) { this._len = 0; } if (this._lineDash) { this._lineDash = null; this._dashOffset = 0; } if (this._pathSegLen) { this._pathSegLen = null; this._pathLen = 0; } this._version++; }; PathProxy2.prototype.moveTo = function(x, y) { this._drawPendingPt(); this.addData(CMD$4.M, x, y); this._ctx && this._ctx.moveTo(x, y); this._x0 = x; this._y0 = y; this._xi = x; this._yi = y; return this; }; PathProxy2.prototype.lineTo = function(x, y) { var dx = mathAbs$2(x - this._xi); var dy = mathAbs$2(y - this._yi); var exceedUnit = dx > this._ux || dy > this._uy; this.addData(CMD$4.L, x, y); if (this._ctx && exceedUnit) { this._needsDash ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y); } if (exceedUnit) { this._xi = x; this._yi = y; this._pendingPtDist = 0; } else { var d2 = dx * dx + dy * dy; if (d2 > this._pendingPtDist) { this._pendingPtX = x; this._pendingPtY = y; this._pendingPtDist = d2; } } return this; }; PathProxy2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) { this._drawPendingPt(); this.addData(CMD$4.C, x1, y1, x2, y2, x3, y3); if (this._ctx) { this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); } this._xi = x3; this._yi = y3; return this; }; PathProxy2.prototype.quadraticCurveTo = function(x1, y1, x2, y2) { this._drawPendingPt(); this.addData(CMD$4.Q, x1, y1, x2, y2); if (this._ctx) { this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2); } this._xi = x2; this._yi = y2; return this; }; PathProxy2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { this._drawPendingPt(); tmpAngles[0] = startAngle; tmpAngles[1] = endAngle; normalizeArcAngles(tmpAngles, anticlockwise); startAngle = tmpAngles[0]; endAngle = tmpAngles[1]; var delta = endAngle - startAngle; this.addData(CMD$4.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1); this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); this._xi = mathCos$3(endAngle) * r + cx; this._yi = mathSin$3(endAngle) * r + cy; return this; }; PathProxy2.prototype.arcTo = function(x1, y1, x2, y2, radius) { this._drawPendingPt(); if (this._ctx) { this._ctx.arcTo(x1, y1, x2, y2, radius); } return this; }; PathProxy2.prototype.rect = function(x, y, w, h) { this._drawPendingPt(); this._ctx && this._ctx.rect(x, y, w, h); this.addData(CMD$4.R, x, y, w, h); return this; }; PathProxy2.prototype.closePath = function() { this._drawPendingPt(); this.addData(CMD$4.Z); var ctx = this._ctx; var x0 = this._x0; var y0 = this._y0; if (ctx) { this._needsDash && this._dashedLineTo(x0, y0); ctx.closePath(); } this._xi = x0; this._yi = y0; return this; }; PathProxy2.prototype.fill = function(ctx) { ctx && ctx.fill(); this.toStatic(); }; PathProxy2.prototype.stroke = function(ctx) { ctx && ctx.stroke(); this.toStatic(); }; PathProxy2.prototype.setLineDash = function(lineDash) { if (lineDash instanceof Array) { this._lineDash = lineDash; this._dashIdx = 0; var lineDashSum = 0; for (var i = 0; i < lineDash.length; i++) { lineDashSum += lineDash[i]; } this._dashSum = lineDashSum; this._needsDash = true; } else { this._lineDash = null; this._needsDash = false; } return this; }; PathProxy2.prototype.setLineDashOffset = function(offset) { this._dashOffset = offset; return this; }; PathProxy2.prototype.len = function() { return this._len; }; PathProxy2.prototype.setData = function(data) { var len2 = data.length; if (!(this.data && this.data.length === len2) && hasTypedArray) { this.data = new Float32Array(len2); } for (var i = 0; i < len2; i++) { this.data[i] = data[i]; } this._len = len2; }; PathProxy2.prototype.appendPath = function(path) { if (!(path instanceof Array)) { path = [path]; } var len2 = path.length; var appendSize = 0; var offset = this._len; for (var i = 0; i < len2; i++) { appendSize += path[i].len(); } if (hasTypedArray && this.data instanceof Float32Array) { this.data = new Float32Array(offset + appendSize); } for (var i = 0; i < len2; i++) { var appendPathData = path[i].data; for (var k = 0; k < appendPathData.length; k++) { this.data[offset++] = appendPathData[k]; } } this._len = offset; }; PathProxy2.prototype.addData = function(cmd, a, b, c, d, e2, f, g, h) { if (!this._saveData) { return; } var data = this.data; if (this._len + arguments.length > data.length) { this._expandData(); data = this.data; } for (var i = 0; i < arguments.length; i++) { data[this._len++] = arguments[i]; } }; PathProxy2.prototype._drawPendingPt = function() { if (this._pendingPtDist > 0) { this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY); this._pendingPtDist = 0; } }; PathProxy2.prototype._expandData = function() { if (!(this.data instanceof Array)) { var newData = []; for (var i = 0; i < this._len; i++) { newData[i] = this.data[i]; } this.data = newData; } }; PathProxy2.prototype._dashedLineTo = function(x1, y1) { var dashSum = this._dashSum; var lineDash = this._lineDash; var ctx = this._ctx; var offset = this._dashOffset; var x0 = this._xi; var y0 = this._yi; var dx = x1 - x0; var dy = y1 - y0; var dist2 = mathSqrt$3(dx * dx + dy * dy); var x = x0; var y = y0; var nDash = lineDash.length; var dash; var idx; dx /= dist2; dy /= dist2; if (offset < 0) { offset = dashSum + offset; } offset %= dashSum; x -= offset * dx; y -= offset * dy; while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) { idx = this._dashIdx; dash = lineDash[idx]; x += dx * dash; y += dy * dash; this._dashIdx = (idx + 1) % nDash; if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) { continue; } ctx[idx % 2 ? "moveTo" : "lineTo"](dx >= 0 ? mathMin$8(x, x1) : mathMax$8(x, x1), dy >= 0 ? mathMin$8(y, y1) : mathMax$8(y, y1)); } dx = x - x1; dy = y - y1; this._dashOffset = -mathSqrt$3(dx * dx + dy * dy); }; PathProxy2.prototype._dashedBezierTo = function(x1, y1, x2, y2, x3, y3) { var ctx = this._ctx; var dashSum = this._dashSum; var offset = this._dashOffset; var lineDash = this._lineDash; var x0 = this._xi; var y0 = this._yi; var bezierLen = 0; var idx = this._dashIdx; var nDash = lineDash.length; var t; var dx; var dy; var x; var y; var tmpLen = 0; if (offset < 0) { offset = dashSum + offset; } offset %= dashSum; for (t = 0; t < 1; t += 0.1) { dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t); dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t); bezierLen += mathSqrt$3(dx * dx + dy * dy); } for (; idx < nDash; idx++) { tmpLen += lineDash[idx]; if (tmpLen > offset) { break; } } t = (tmpLen - offset) / bezierLen; while (t <= 1) { x = cubicAt(x0, x1, x2, x3, t); y = cubicAt(y0, y1, y2, y3, t); idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y); t += lineDash[idx] / bezierLen; idx = (idx + 1) % nDash; } idx % 2 !== 0 && ctx.lineTo(x3, y3); dx = x3 - x; dy = y3 - y; this._dashOffset = -mathSqrt$3(dx * dx + dy * dy); }; PathProxy2.prototype._dashedQuadraticTo = function(x1, y1, x2, y2) { var x3 = x2; var y3 = y2; x2 = (x2 + 2 * x1) / 3; y2 = (y2 + 2 * y1) / 3; x1 = (this._xi + 2 * x1) / 3; y1 = (this._yi + 2 * y1) / 3; this._dashedBezierTo(x1, y1, x2, y2, x3, y3); }; PathProxy2.prototype.toStatic = function() { if (!this._saveData) { return; } this._drawPendingPt(); var data = this.data; if (data instanceof Array) { data.length = this._len; if (hasTypedArray && this._len > 11) { this.data = new Float32Array(data); } } }; PathProxy2.prototype.getBoundingRect = function() { min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE; max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE; var data = this.data; var xi = 0; var yi = 0; var x0 = 0; var y0 = 0; var i; for (i = 0; i < this._len; ) { var cmd = data[i++]; var isFirst = i === 1; if (isFirst) { xi = data[i]; yi = data[i + 1]; x0 = xi; y0 = yi; } switch (cmd) { case CMD$4.M: xi = x0 = data[i++]; yi = y0 = data[i++]; min2[0] = x0; min2[1] = y0; max2[0] = x0; max2[1] = y0; break; case CMD$4.L: fromLine(xi, yi, data[i], data[i + 1], min2, max2); xi = data[i++]; yi = data[i++]; break; case CMD$4.C: fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2); xi = data[i++]; yi = data[i++]; break; case CMD$4.Q: fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2); xi = data[i++]; yi = data[i++]; break; case CMD$4.A: var cx = data[i++]; var cy = data[i++]; var rx = data[i++]; var ry = data[i++]; var startAngle = data[i++]; var endAngle = data[i++] + startAngle; i += 1; var anticlockwise = !data[i++]; if (isFirst) { x0 = mathCos$3(startAngle) * rx + cx; y0 = mathSin$3(startAngle) * ry + cy; } fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2); xi = mathCos$3(endAngle) * rx + cx; yi = mathSin$3(endAngle) * ry + cy; break; case CMD$4.R: x0 = xi = data[i++]; y0 = yi = data[i++]; var width = data[i++]; var height = data[i++]; fromLine(x0, y0, x0 + width, y0 + height, min2, max2); break; case CMD$4.Z: xi = x0; yi = y0; break; } min$1(min, min, min2); max$1(max, max, max2); } if (i === 0) { min[0] = min[1] = max[0] = max[1] = 0; } return new BoundingRect$1(min[0], min[1], max[0] - min[0], max[1] - min[1]); }; PathProxy2.prototype._calculateLength = function() { var data = this.data; var len2 = this._len; var ux = this._ux; var uy = this._uy; var xi = 0; var yi = 0; var x0 = 0; var y0 = 0; if (!this._pathSegLen) { this._pathSegLen = []; } var pathSegLen = this._pathSegLen; var pathTotalLen = 0; var segCount = 0; for (var i = 0; i < len2; ) { var cmd = data[i++]; var isFirst = i === 1; if (isFirst) { xi = data[i]; yi = data[i + 1]; x0 = xi; y0 = yi; } var l = -1; switch (cmd) { case CMD$4.M: xi = x0 = data[i++]; yi = y0 = data[i++]; break; case CMD$4.L: { var x2 = data[i++]; var y2 = data[i++]; var dx = x2 - xi; var dy = y2 - yi; if (mathAbs$2(dx) > ux || mathAbs$2(dy) > uy || i === len2 - 1) { l = Math.sqrt(dx * dx + dy * dy); xi = x2; yi = y2; } break; } case CMD$4.C: { var x1 = data[i++]; var y1 = data[i++]; var x2 = data[i++]; var y2 = data[i++]; var x3 = data[i++]; var y3 = data[i++]; l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10); xi = x3; yi = y3; break; } case CMD$4.Q: { var x1 = data[i++]; var y1 = data[i++]; var x2 = data[i++]; var y2 = data[i++]; l = quadraticLength(xi, yi, x1, y1, x2, y2, 10); xi = x2; yi = y2; break; } case CMD$4.A: var cx = data[i++]; var cy = data[i++]; var rx = data[i++]; var ry = data[i++]; var startAngle = data[i++]; var delta = data[i++]; var endAngle = delta + startAngle; i += 1; !data[i++]; if (isFirst) { x0 = mathCos$3(startAngle) * rx + cx; y0 = mathSin$3(startAngle) * ry + cy; } l = mathMax$8(rx, ry) * mathMin$8(PI2$8, Math.abs(delta)); xi = mathCos$3(endAngle) * rx + cx; yi = mathSin$3(endAngle) * ry + cy; break; case CMD$4.R: { x0 = xi = data[i++]; y0 = yi = data[i++]; var width = data[i++]; var height = data[i++]; l = width * 2 + height * 2; break; } case CMD$4.Z: { var dx = x0 - xi; var dy = y0 - yi; l = Math.sqrt(dx * dx + dy * dy); xi = x0; yi = y0; break; } } if (l >= 0) { pathSegLen[segCount++] = l; pathTotalLen += l; } } this._pathLen = pathTotalLen; return pathTotalLen; }; PathProxy2.prototype.rebuildPath = function(ctx, percent) { var d = this.data; var ux = this._ux; var uy = this._uy; var len2 = this._len; var x0; var y0; var xi; var yi; var x; var y; var drawPart = percent < 1; var pathSegLen; var pathTotalLen; var accumLength = 0; var segCount = 0; var displayedLength; var pendingPtDist = 0; var pendingPtX; var pendingPtY; if (drawPart) { if (!this._pathSegLen) { this._calculateLength(); } pathSegLen = this._pathSegLen; pathTotalLen = this._pathLen; displayedLength = percent * pathTotalLen; if (!displayedLength) { return; } } lo: for (var i = 0; i < len2; ) { var cmd = d[i++]; var isFirst = i === 1; if (isFirst) { xi = d[i]; yi = d[i + 1]; x0 = xi; y0 = yi; } if (cmd !== CMD$4.L && pendingPtDist > 0) { ctx.lineTo(pendingPtX, pendingPtY); pendingPtDist = 0; } switch (cmd) { case CMD$4.M: x0 = xi = d[i++]; y0 = yi = d[i++]; ctx.moveTo(xi, yi); break; case CMD$4.L: { x = d[i++]; y = d[i++]; var dx = mathAbs$2(x - xi); var dy = mathAbs$2(y - yi); if (dx > ux || dy > uy) { if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { var t = (displayedLength - accumLength) / l; ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t); break lo; } accumLength += l; } ctx.lineTo(x, y); xi = x; yi = y; pendingPtDist = 0; } else { var d2 = dx * dx + dy * dy; if (d2 > pendingPtDist) { pendingPtX = x; pendingPtY = y; pendingPtDist = d2; } } break; } case CMD$4.C: { var x1 = d[i++]; var y1 = d[i++]; var x2 = d[i++]; var y2 = d[i++]; var x3 = d[i++]; var y3 = d[i++]; if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { var t = (displayedLength - accumLength) / l; cubicSubdivide(xi, x1, x2, x3, t, tmpOutX); cubicSubdivide(yi, y1, y2, y3, t, tmpOutY); ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]); break lo; } accumLength += l; } ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); xi = x3; yi = y3; break; } case CMD$4.Q: { var x1 = d[i++]; var y1 = d[i++]; var x2 = d[i++]; var y2 = d[i++]; if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { var t = (displayedLength - accumLength) / l; quadraticSubdivide(xi, x1, x2, t, tmpOutX); quadraticSubdivide(yi, y1, y2, t, tmpOutY); ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]); break lo; } accumLength += l; } ctx.quadraticCurveTo(x1, y1, x2, y2); xi = x2; yi = y2; break; } case CMD$4.A: var cx = d[i++]; var cy = d[i++]; var rx = d[i++]; var ry = d[i++]; var startAngle = d[i++]; var delta = d[i++]; var psi = d[i++]; var anticlockwise = !d[i++]; var r = rx > ry ? rx : ry; var isEllipse = mathAbs$2(rx - ry) > 1e-3; var endAngle = startAngle + delta; var breakBuild = false; if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { endAngle = startAngle + delta * (displayedLength - accumLength) / l; breakBuild = true; } accumLength += l; } if (isEllipse && ctx.ellipse) { ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise); } else { ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); } if (breakBuild) { break lo; } if (isFirst) { x0 = mathCos$3(startAngle) * rx + cx; y0 = mathSin$3(startAngle) * ry + cy; } xi = mathCos$3(endAngle) * rx + cx; yi = mathSin$3(endAngle) * ry + cy; break; case CMD$4.R: x0 = xi = d[i]; y0 = yi = d[i + 1]; x = d[i++]; y = d[i++]; var width = d[i++]; var height = d[i++]; if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { var d_1 = displayedLength - accumLength; ctx.moveTo(x, y); ctx.lineTo(x + mathMin$8(d_1, width), y); d_1 -= width; if (d_1 > 0) { ctx.lineTo(x + width, y + mathMin$8(d_1, height)); } d_1 -= height; if (d_1 > 0) { ctx.lineTo(x + mathMax$8(width - d_1, 0), y + height); } d_1 -= width; if (d_1 > 0) { ctx.lineTo(x, y + mathMax$8(height - d_1, 0)); } break lo; } accumLength += l; } ctx.rect(x, y, width, height); break; case CMD$4.Z: if (drawPart) { var l = pathSegLen[segCount++]; if (accumLength + l > displayedLength) { var t = (displayedLength - accumLength) / l; ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t); break lo; } accumLength += l; } ctx.closePath(); xi = x0; yi = y0; } } }; PathProxy2.prototype.clone = function() { var newProxy = new PathProxy2(); var data = this.data; newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data); newProxy._len = this._len; return newProxy; }; PathProxy2.CMD = CMD$4; PathProxy2.initDefaultProps = function() { var proto2 = PathProxy2.prototype; proto2._saveData = true; proto2._needsDash = false; proto2._dashOffset = 0; proto2._dashIdx = 0; proto2._dashSum = 0; proto2._ux = 0; proto2._uy = 0; proto2._pendingPtDist = 0; proto2._version = 0; }(); return PathProxy2; }(); var PathProxy$1 = PathProxy; function containStroke$4(x0, y0, x1, y1, lineWidth, x, y) { if (lineWidth === 0) { return false; } var _l = lineWidth; var _a2 = 0; var _b2 = x0; if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) { return false; } if (x0 !== x1) { _a2 = (y0 - y1) / (x0 - x1); _b2 = (x0 * y1 - x1 * y0) / (x0 - x1); } else { return Math.abs(x - x0) <= _l / 2; } var tmp = _a2 * x - y + _b2; var _s = tmp * tmp / (_a2 * _a2 + 1); return _s <= _l / 2 * _l / 2; } function containStroke$3(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) { if (lineWidth === 0) { return false; } var _l = lineWidth; if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) { return false; } var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null); return d <= _l / 2; } function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) { if (lineWidth === 0) { return false; } var _l = lineWidth; if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) { return false; } var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null); return d <= _l / 2; } var PI2$7 = Math.PI * 2; function normalizeRadian(angle) { angle %= PI2$7; if (angle < 0) { angle += PI2$7; } return angle; } var PI2$6 = Math.PI * 2; function containStroke$1(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) { if (lineWidth === 0) { return false; } var _l = lineWidth; x -= cx; y -= cy; var d = Math.sqrt(x * x + y * y); if (d - _l > r || d + _l < r) { return false; } if (Math.abs(startAngle - endAngle) % PI2$6 < 1e-4) { return true; } if (anticlockwise) { var tmp = startAngle; startAngle = normalizeRadian(endAngle); endAngle = normalizeRadian(tmp); } else { startAngle = normalizeRadian(startAngle); endAngle = normalizeRadian(endAngle); } if (startAngle > endAngle) { endAngle += PI2$6; } var angle = Math.atan2(y, x); if (angle < 0) { angle += PI2$6; } return angle >= startAngle && angle <= endAngle || angle + PI2$6 >= startAngle && angle + PI2$6 <= endAngle; } function windingLine(x0, y0, x1, y1, x, y) { if (y > y0 && y > y1 || y < y0 && y < y1) { return 0; } if (y1 === y0) { return 0; } var t = (y - y0) / (y1 - y0); var dir3 = y1 < y0 ? 1 : -1; if (t === 1 || t === 0) { dir3 = y1 < y0 ? 0.5 : -0.5; } var x_ = t * (x1 - x0) + x0; return x_ === x ? Infinity : x_ > x ? dir3 : 0; } var CMD$3 = PathProxy$1.CMD; var PI2$5 = Math.PI * 2; var EPSILON$2 = 1e-4; function isAroundEqual$1(a, b) { return Math.abs(a - b) < EPSILON$2; } var roots = [-1, -1, -1]; var extrema = [-1, -1]; function swapExtrema() { var tmp = extrema[0]; extrema[0] = extrema[1]; extrema[1] = tmp; } function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) { if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) { return 0; } var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots); if (nRoots === 0) { return 0; } else { var w = 0; var nExtrema = -1; var y0_ = void 0; var y1_ = void 0; for (var i = 0; i < nRoots; i++) { var t = roots[i]; var unit = t === 0 || t === 1 ? 0.5 : 1; var x_ = cubicAt(x0, x1, x2, x3, t); if (x_ < x) { continue; } if (nExtrema < 0) { nExtrema = cubicExtrema(y0, y1, y2, y3, extrema); if (extrema[1] < extrema[0] && nExtrema > 1) { swapExtrema(); } y0_ = cubicAt(y0, y1, y2, y3, extrema[0]); if (nExtrema > 1) { y1_ = cubicAt(y0, y1, y2, y3, extrema[1]); } } if (nExtrema === 2) { if (t < extrema[0]) { w += y0_ < y0 ? unit : -unit; } else if (t < extrema[1]) { w += y1_ < y0_ ? unit : -unit; } else { w += y3 < y1_ ? unit : -unit; } } else { if (t < extrema[0]) { w += y0_ < y0 ? unit : -unit; } else { w += y3 < y0_ ? unit : -unit; } } } return w; } } function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) { if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) { return 0; } var nRoots = quadraticRootAt(y0, y1, y2, y, roots); if (nRoots === 0) { return 0; } else { var t = quadraticExtremum(y0, y1, y2); if (t >= 0 && t <= 1) { var w = 0; var y_ = quadraticAt$1(y0, y1, y2, t); for (var i = 0; i < nRoots; i++) { var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1; var x_ = quadraticAt$1(x0, x1, x2, roots[i]); if (x_ < x) { continue; } if (roots[i] < t) { w += y_ < y0 ? unit : -unit; } else { w += y2 < y_ ? unit : -unit; } } return w; } else { var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1; var x_ = quadraticAt$1(x0, x1, x2, roots[0]); if (x_ < x) { return 0; } return y2 < y0 ? unit : -unit; } } } function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) { y -= cy; if (y > r || y < -r) { return 0; } var tmp = Math.sqrt(r * r - y * y); roots[0] = -tmp; roots[1] = tmp; var dTheta = Math.abs(startAngle - endAngle); if (dTheta < 1e-4) { return 0; } if (dTheta >= PI2$5 - 1e-4) { startAngle = 0; endAngle = PI2$5; var dir3 = anticlockwise ? 1 : -1; if (x >= roots[0] + cx && x <= roots[1] + cx) { return dir3; } else { return 0; } } if (startAngle > endAngle) { var tmp_1 = startAngle; startAngle = endAngle; endAngle = tmp_1; } if (startAngle < 0) { startAngle += PI2$5; endAngle += PI2$5; } var w = 0; for (var i = 0; i < 2; i++) { var x_ = roots[i]; if (x_ + cx > x) { var angle = Math.atan2(y, x_); var dir3 = anticlockwise ? 1 : -1; if (angle < 0) { angle = PI2$5 + angle; } if (angle >= startAngle && angle <= endAngle || angle + PI2$5 >= startAngle && angle + PI2$5 <= endAngle) { if (angle > Math.PI / 2 && angle < Math.PI * 1.5) { dir3 = -dir3; } w += dir3; } } } return w; } function containPath(path, lineWidth, isStroke, x, y) { var data = path.data; var len2 = path.len(); var w = 0; var xi = 0; var yi = 0; var x0 = 0; var y0 = 0; var x1; var y1; for (var i = 0; i < len2; ) { var cmd = data[i++]; var isFirst = i === 1; if (cmd === CMD$3.M && i > 1) { if (!isStroke) { w += windingLine(xi, yi, x0, y0, x, y); } } if (isFirst) { xi = data[i]; yi = data[i + 1]; x0 = xi; y0 = yi; } switch (cmd) { case CMD$3.M: x0 = data[i++]; y0 = data[i++]; xi = x0; yi = y0; break; case CMD$3.L: if (isStroke) { if (containStroke$4(xi, yi, data[i], data[i + 1], lineWidth, x, y)) { return true; } } else { w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0; } xi = data[i++]; yi = data[i++]; break; case CMD$3.C: if (isStroke) { if (containStroke$3(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { return true; } } else { w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0; } xi = data[i++]; yi = data[i++]; break; case CMD$3.Q: if (isStroke) { if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { return true; } } else { w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0; } xi = data[i++]; yi = data[i++]; break; case CMD$3.A: var cx = data[i++]; var cy = data[i++]; var rx = data[i++]; var ry = data[i++]; var theta = data[i++]; var dTheta = data[i++]; i += 1; var anticlockwise = !!(1 - data[i++]); x1 = Math.cos(theta) * rx + cx; y1 = Math.sin(theta) * ry + cy; if (!isFirst) { w += windingLine(xi, yi, x1, y1, x, y); } else { x0 = x1; y0 = y1; } var _x = (x - cx) * ry / rx + cx; if (isStroke) { if (containStroke$1(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) { return true; } } else { w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y); } xi = Math.cos(theta + dTheta) * rx + cx; yi = Math.sin(theta + dTheta) * ry + cy; break; case CMD$3.R: x0 = xi = data[i++]; y0 = yi = data[i++]; var width = data[i++]; var height = data[i++]; x1 = x0 + width; y1 = y0 + height; if (isStroke) { if (containStroke$4(x0, y0, x1, y0, lineWidth, x, y) || containStroke$4(x1, y0, x1, y1, lineWidth, x, y) || containStroke$4(x1, y1, x0, y1, lineWidth, x, y) || containStroke$4(x0, y1, x0, y0, lineWidth, x, y)) { return true; } } else { w += windingLine(x1, y0, x1, y1, x, y); w += windingLine(x0, y1, x0, y0, x, y); } break; case CMD$3.Z: if (isStroke) { if (containStroke$4(xi, yi, x0, y0, lineWidth, x, y)) { return true; } } else { w += windingLine(xi, yi, x0, y0, x, y); } xi = x0; yi = y0; break; } } if (!isStroke && !isAroundEqual$1(yi, y0)) { w += windingLine(xi, yi, x0, y0, x, y) || 0; } return w !== 0; } function contain$2(pathProxy, x, y) { return containPath(pathProxy, 0, false, x, y); } function containStroke(pathProxy, lineWidth, x, y) { return containPath(pathProxy, lineWidth, true, x, y); } var DEFAULT_PATH_STYLE = defaults({ fill: "#000", stroke: null, strokePercent: 1, fillOpacity: 1, strokeOpacity: 1, lineDashOffset: 0, lineWidth: 1, lineCap: "butt", miterLimit: 10, strokeNoScale: false, strokeFirst: false }, DEFAULT_COMMON_STYLE); var DEFAULT_PATH_ANIMATION_PROPS = { style: defaults({ fill: true, stroke: true, strokePercent: true, fillOpacity: true, strokeOpacity: true, lineDashOffset: true, lineWidth: true, miterLimit: true }, DEFAULT_COMMON_ANIMATION_PROPS.style) }; var pathCopyParams = [ "x", "y", "rotation", "scaleX", "scaleY", "originX", "originY", "invisible", "culling", "z", "z2", "zlevel", "parent" ]; var Path = function(_super) { __extends(Path2, _super); function Path2(opts) { return _super.call(this, opts) || this; } Path2.prototype.update = function() { var _this = this; _super.prototype.update.call(this); var style = this.style; if (style.decal) { var decalEl = this._decalEl = this._decalEl || new Path2(); if (decalEl.buildPath === Path2.prototype.buildPath) { decalEl.buildPath = function(ctx) { _this.buildPath(ctx, _this.shape); }; } decalEl.silent = true; var decalElStyle = decalEl.style; for (var key2 in style) { if (decalElStyle[key2] !== style[key2]) { decalElStyle[key2] = style[key2]; } } decalElStyle.fill = style.fill ? style.decal : null; decalElStyle.decal = null; decalElStyle.shadowColor = null; style.strokeFirst && (decalElStyle.stroke = null); for (var i = 0; i < pathCopyParams.length; ++i) { decalEl[pathCopyParams[i]] = this[pathCopyParams[i]]; } decalEl.__dirty |= REDRAW_BIT; } else if (this._decalEl) { this._decalEl = null; } }; Path2.prototype.getDecalElement = function() { return this._decalEl; }; Path2.prototype._init = function(props) { var keysArr = keys(props); this.shape = this.getDefaultShape(); var defaultStyle = this.getDefaultStyle(); if (defaultStyle) { this.useStyle(defaultStyle); } for (var i = 0; i < keysArr.length; i++) { var key2 = keysArr[i]; var value = props[key2]; if (key2 === "style") { if (!this.style) { this.useStyle(value); } else { extend(this.style, value); } } else if (key2 === "shape") { extend(this.shape, value); } else { _super.prototype.attrKV.call(this, key2, value); } } if (!this.style) { this.useStyle({}); } }; Path2.prototype.getDefaultStyle = function() { return null; }; Path2.prototype.getDefaultShape = function() { return {}; }; Path2.prototype.canBeInsideText = function() { return this.hasFill(); }; Path2.prototype.getInsideTextFill = function() { var pathFill = this.style.fill; if (pathFill !== "none") { if (isString(pathFill)) { var fillLum = lum(pathFill, 0); if (fillLum > 0.5) { return DARK_LABEL_COLOR; } else if (fillLum > 0.2) { return LIGHTER_LABEL_COLOR; } return LIGHT_LABEL_COLOR; } else if (pathFill) { return LIGHT_LABEL_COLOR; } } return DARK_LABEL_COLOR; }; Path2.prototype.getInsideTextStroke = function(textFill) { var pathFill = this.style.fill; if (isString(pathFill)) { var zr = this.__zr; var isDarkMode2 = !!(zr && zr.isDarkMode()); var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD; if (isDarkMode2 === isDarkLabel) { return pathFill; } } }; Path2.prototype.buildPath = function(ctx, shapeCfg, inBatch) { }; Path2.prototype.pathUpdated = function() { this.__dirty &= ~SHAPE_CHANGED_BIT; }; Path2.prototype.getUpdatedPathProxy = function(inBatch) { !this.path && this.createPathProxy(); this.path.beginPath(); this.buildPath(this.path, this.shape, inBatch); return this.path; }; Path2.prototype.createPathProxy = function() { this.path = new PathProxy$1(false); }; Path2.prototype.hasStroke = function() { var style = this.style; var stroke = style.stroke; return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); }; Path2.prototype.hasFill = function() { var style = this.style; var fill = style.fill; return fill != null && fill !== "none"; }; Path2.prototype.getBoundingRect = function() { var rect = this._rect; var style = this.style; var needsUpdateRect = !rect; if (needsUpdateRect) { var firstInvoke = false; if (!this.path) { firstInvoke = true; this.createPathProxy(); } var path = this.path; if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT) { path.beginPath(); this.buildPath(path, this.shape, false); this.pathUpdated(); } rect = path.getBoundingRect(); } this._rect = rect; if (this.hasStroke() && this.path && this.path.len() > 0) { var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone()); if (this.__dirty || needsUpdateRect) { rectWithStroke.copy(rect); var lineScale = style.strokeNoScale ? this.getLineScale() : 1; var w = style.lineWidth; if (!this.hasFill()) { var strokeContainThreshold = this.strokeContainThreshold; w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold); } if (lineScale > 1e-10) { rectWithStroke.width += w / lineScale; rectWithStroke.height += w / lineScale; rectWithStroke.x -= w / lineScale / 2; rectWithStroke.y -= w / lineScale / 2; } } return rectWithStroke; } return rect; }; Path2.prototype.contain = function(x, y) { var localPos = this.transformCoordToLocal(x, y); var rect = this.getBoundingRect(); var style = this.style; x = localPos[0]; y = localPos[1]; if (rect.contain(x, y)) { var pathProxy = this.path; if (this.hasStroke()) { var lineWidth = style.lineWidth; var lineScale = style.strokeNoScale ? this.getLineScale() : 1; if (lineScale > 1e-10) { if (!this.hasFill()) { lineWidth = Math.max(lineWidth, this.strokeContainThreshold); } if (containStroke(pathProxy, lineWidth / lineScale, x, y)) { return true; } } } if (this.hasFill()) { return contain$2(pathProxy, x, y); } } return false; }; Path2.prototype.dirtyShape = function() { this.__dirty |= SHAPE_CHANGED_BIT; if (this._rect) { this._rect = null; } if (this._decalEl) { this._decalEl.dirtyShape(); } this.markRedraw(); }; Path2.prototype.dirty = function() { this.dirtyStyle(); this.dirtyShape(); }; Path2.prototype.animateShape = function(loop) { return this.animate("shape", loop); }; Path2.prototype.updateDuringAnimation = function(targetKey) { if (targetKey === "style") { this.dirtyStyle(); } else if (targetKey === "shape") { this.dirtyShape(); } else { this.markRedraw(); } }; Path2.prototype.attrKV = function(key2, value) { if (key2 === "shape") { this.setShape(value); } else { _super.prototype.attrKV.call(this, key2, value); } }; Path2.prototype.setShape = function(keyOrObj, value) { var shape = this.shape; if (!shape) { shape = this.shape = {}; } if (typeof keyOrObj === "string") { shape[keyOrObj] = value; } else { extend(shape, keyOrObj); } this.dirtyShape(); return this; }; Path2.prototype.shapeChanged = function() { return !!(this.__dirty & SHAPE_CHANGED_BIT); }; Path2.prototype.createStyle = function(obj) { return createObject(DEFAULT_PATH_STYLE, obj); }; Path2.prototype._innerSaveToNormal = function(toState) { _super.prototype._innerSaveToNormal.call(this, toState); var normalState = this._normalState; if (toState.shape && !normalState.shape) { normalState.shape = extend({}, this.shape); } }; Path2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); var needsRestoreToNormal = !(state && keepCurrentStates); var targetShape; if (state && state.shape) { if (transition) { if (keepCurrentStates) { targetShape = state.shape; } else { targetShape = extend({}, normalState.shape); extend(targetShape, state.shape); } } else { targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape); extend(targetShape, state.shape); } } else if (needsRestoreToNormal) { targetShape = normalState.shape; } if (targetShape) { if (transition) { this.shape = extend({}, this.shape); var targetShapePrimaryProps = {}; var shapeKeys = keys(targetShape); for (var i = 0; i < shapeKeys.length; i++) { var key2 = shapeKeys[i]; if (typeof targetShape[key2] === "object") { this.shape[key2] = targetShape[key2]; } else { targetShapePrimaryProps[key2] = targetShape[key2]; } } this._transitionState(stateName, { shape: targetShapePrimaryProps }, animationCfg); } else { this.shape = targetShape; this.dirtyShape(); } } }; Path2.prototype._mergeStates = function(states) { var mergedState = _super.prototype._mergeStates.call(this, states); var mergedShape; for (var i = 0; i < states.length; i++) { var state = states[i]; if (state.shape) { mergedShape = mergedShape || {}; this._mergeStyle(mergedShape, state.shape); } } if (mergedShape) { mergedState.shape = mergedShape; } return mergedState; }; Path2.prototype.getAnimationStyleProps = function() { return DEFAULT_PATH_ANIMATION_PROPS; }; Path2.prototype.isZeroArea = function() { return false; }; Path2.extend = function(defaultProps) { var Sub = function(_super2) { __extends(Sub2, _super2); function Sub2(opts) { var _this = _super2.call(this, opts) || this; defaultProps.init && defaultProps.init.call(_this, opts); return _this; } Sub2.prototype.getDefaultStyle = function() { return clone$4(defaultProps.style); }; Sub2.prototype.getDefaultShape = function() { return clone$4(defaultProps.shape); }; return Sub2; }(Path2); for (var key2 in defaultProps) { if (typeof defaultProps[key2] === "function") { Sub.prototype[key2] = defaultProps[key2]; } } return Sub; }; Path2.initDefaultProps = function() { var pathProto = Path2.prototype; pathProto.type = "path"; pathProto.strokeContainThreshold = 5; pathProto.segmentIgnoreThreshold = 0; pathProto.subPixelOptimize = false; pathProto.autoBatch = false; pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT; }(); return Path2; }(Displayable$1); var Path$1 = Path; var DEFAULT_TSPAN_STYLE = defaults({ strokeFirst: true, font: DEFAULT_FONT, x: 0, y: 0, textAlign: "left", textBaseline: "top", miterLimit: 2 }, DEFAULT_PATH_STYLE); var TSpan = function(_super) { __extends(TSpan2, _super); function TSpan2() { return _super !== null && _super.apply(this, arguments) || this; } TSpan2.prototype.hasStroke = function() { var style = this.style; var stroke = style.stroke; return stroke != null && stroke !== "none" && style.lineWidth > 0; }; TSpan2.prototype.hasFill = function() { var style = this.style; var fill = style.fill; return fill != null && fill !== "none"; }; TSpan2.prototype.createStyle = function(obj) { return createObject(DEFAULT_TSPAN_STYLE, obj); }; TSpan2.prototype.setBoundingRect = function(rect) { this._rect = rect; }; TSpan2.prototype.getBoundingRect = function() { var style = this.style; if (!this._rect) { var text = style.text; text != null ? text += "" : text = ""; var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline); rect.x += style.x || 0; rect.y += style.y || 0; if (this.hasStroke()) { var w = style.lineWidth; rect.x -= w / 2; rect.y -= w / 2; rect.width += w; rect.height += w; } this._rect = rect; } return this._rect; }; TSpan2.initDefaultProps = function() { var tspanProto = TSpan2.prototype; tspanProto.dirtyRectTolerance = 10; }(); return TSpan2; }(Displayable$1); TSpan.prototype.type = "tspan"; var TSpan$1 = TSpan; var DEFAULT_IMAGE_STYLE = defaults({ x: 0, y: 0 }, DEFAULT_COMMON_STYLE); var DEFAULT_IMAGE_ANIMATION_PROPS = { style: defaults({ x: true, y: true, width: true, height: true, sx: true, sy: true, sWidth: true, sHeight: true }, DEFAULT_COMMON_ANIMATION_PROPS.style) }; function isImageLike(source) { return !!(source && typeof source !== "string" && source.width && source.height); } var ZRImage = function(_super) { __extends(ZRImage2, _super); function ZRImage2() { return _super !== null && _super.apply(this, arguments) || this; } ZRImage2.prototype.createStyle = function(obj) { return createObject(DEFAULT_IMAGE_STYLE, obj); }; ZRImage2.prototype._getSize = function(dim) { var style = this.style; var size = style[dim]; if (size != null) { return size; } var imageSource = isImageLike(style.image) ? style.image : this.__image; if (!imageSource) { return 0; } var otherDim = dim === "width" ? "height" : "width"; var otherDimSize = style[otherDim]; if (otherDimSize == null) { return imageSource[dim]; } else { return imageSource[dim] / imageSource[otherDim] * otherDimSize; } }; ZRImage2.prototype.getWidth = function() { return this._getSize("width"); }; ZRImage2.prototype.getHeight = function() { return this._getSize("height"); }; ZRImage2.prototype.getAnimationStyleProps = function() { return DEFAULT_IMAGE_ANIMATION_PROPS; }; ZRImage2.prototype.getBoundingRect = function() { var style = this.style; if (!this._rect) { this._rect = new BoundingRect$1(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); } return this._rect; }; return ZRImage2; }(Displayable$1); ZRImage.prototype.type = "image"; var ZRImage$1 = ZRImage; function buildPath$2(ctx, shape) { var x = shape.x; var y = shape.y; var width = shape.width; var height = shape.height; var r = shape.r; var r1; var r2; var r3; var r4; if (width < 0) { x = x + width; width = -width; } if (height < 0) { y = y + height; height = -height; } if (typeof r === "number") { r1 = r2 = r3 = r4 = r; } else if (r instanceof Array) { if (r.length === 1) { r1 = r2 = r3 = r4 = r[0]; } else if (r.length === 2) { r1 = r3 = r[0]; r2 = r4 = r[1]; } else if (r.length === 3) { r1 = r[0]; r2 = r4 = r[1]; r3 = r[2]; } else { r1 = r[0]; r2 = r[1]; r3 = r[2]; r4 = r[3]; } } else { r1 = r2 = r3 = r4 = 0; } var total; if (r1 + r2 > width) { total = r1 + r2; r1 *= width / total; r2 *= width / total; } if (r3 + r4 > width) { total = r3 + r4; r3 *= width / total; r4 *= width / total; } if (r2 + r3 > height) { total = r2 + r3; r2 *= height / total; r3 *= height / total; } if (r1 + r4 > height) { total = r1 + r4; r1 *= height / total; r4 *= height / total; } ctx.moveTo(x + r1, y); ctx.lineTo(x + width - r2, y); r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0); ctx.lineTo(x + width, y + height - r3); r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2); ctx.lineTo(x + r4, y + height); r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI); ctx.lineTo(x, y + r1); r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5); } var round$1 = Math.round; function subPixelOptimizeLine$1(outputShape, inputShape, style) { if (!inputShape) { return; } var x1 = inputShape.x1; var x2 = inputShape.x2; var y1 = inputShape.y1; var y2 = inputShape.y2; outputShape.x1 = x1; outputShape.x2 = x2; outputShape.y1 = y1; outputShape.y2 = y2; var lineWidth = style && style.lineWidth; if (!lineWidth) { return outputShape; } if (round$1(x1 * 2) === round$1(x2 * 2)) { outputShape.x1 = outputShape.x2 = subPixelOptimize$1(x1, lineWidth, true); } if (round$1(y1 * 2) === round$1(y2 * 2)) { outputShape.y1 = outputShape.y2 = subPixelOptimize$1(y1, lineWidth, true); } return outputShape; } function subPixelOptimizeRect$1(outputShape, inputShape, style) { if (!inputShape) { return; } var originX = inputShape.x; var originY = inputShape.y; var originWidth = inputShape.width; var originHeight = inputShape.height; outputShape.x = originX; outputShape.y = originY; outputShape.width = originWidth; outputShape.height = originHeight; var lineWidth = style && style.lineWidth; if (!lineWidth) { return outputShape; } outputShape.x = subPixelOptimize$1(originX, lineWidth, true); outputShape.y = subPixelOptimize$1(originY, lineWidth, true); outputShape.width = Math.max(subPixelOptimize$1(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1); outputShape.height = Math.max(subPixelOptimize$1(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1); return outputShape; } function subPixelOptimize$1(position2, lineWidth, positiveOrNegative) { if (!lineWidth) { return position2; } var doubledPosition = round$1(position2 * 2); return (doubledPosition + round$1(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2; } var RectShape = function() { function RectShape2() { this.x = 0; this.y = 0; this.width = 0; this.height = 0; } return RectShape2; }(); var subPixelOptimizeOutputShape$1 = {}; var Rect$2 = function(_super) { __extends(Rect2, _super); function Rect2(opts) { return _super.call(this, opts) || this; } Rect2.prototype.getDefaultShape = function() { return new RectShape(); }; Rect2.prototype.buildPath = function(ctx, shape) { var x; var y; var width; var height; if (this.subPixelOptimize) { var optimizedShape = subPixelOptimizeRect$1(subPixelOptimizeOutputShape$1, shape, this.style); x = optimizedShape.x; y = optimizedShape.y; width = optimizedShape.width; height = optimizedShape.height; optimizedShape.r = shape.r; shape = optimizedShape; } else { x = shape.x; y = shape.y; width = shape.width; height = shape.height; } if (!shape.r) { ctx.rect(x, y, width, height); } else { buildPath$2(ctx, shape); } }; Rect2.prototype.isZeroArea = function() { return !this.shape.width || !this.shape.height; }; return Rect2; }(Path$1); Rect$2.prototype.type = "rect"; var Rect$3 = Rect$2; var DEFAULT_RICH_TEXT_COLOR = { fill: "#000" }; var DEFAULT_STROKE_LINE_WIDTH = 2; var DEFAULT_TEXT_ANIMATION_PROPS = { style: defaults({ fill: true, stroke: true, fillOpacity: true, strokeOpacity: true, lineWidth: true, fontSize: true, lineHeight: true, width: true, height: true, textShadowColor: true, textShadowBlur: true, textShadowOffsetX: true, textShadowOffsetY: true, backgroundColor: true, padding: true, borderColor: true, borderWidth: true, borderRadius: true }, DEFAULT_COMMON_ANIMATION_PROPS.style) }; var ZRText = function(_super) { __extends(ZRText2, _super); function ZRText2(opts) { var _this = _super.call(this) || this; _this.type = "text"; _this._children = []; _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR; _this.attr(opts); return _this; } ZRText2.prototype.childrenRef = function() { return this._children; }; ZRText2.prototype.update = function() { _super.prototype.update.call(this); if (this.styleChanged()) { this._updateSubTexts(); } for (var i = 0; i < this._children.length; i++) { var child = this._children[i]; child.zlevel = this.zlevel; child.z = this.z; child.z2 = this.z2; child.culling = this.culling; child.cursor = this.cursor; child.invisible = this.invisible; } }; ZRText2.prototype.updateTransform = function() { var innerTransformable = this.innerTransformable; if (innerTransformable) { innerTransformable.updateTransform(); if (innerTransformable.transform) { this.transform = innerTransformable.transform; } } else { _super.prototype.updateTransform.call(this); } }; ZRText2.prototype.getLocalTransform = function(m2) { var innerTransformable = this.innerTransformable; return innerTransformable ? innerTransformable.getLocalTransform(m2) : _super.prototype.getLocalTransform.call(this, m2); }; ZRText2.prototype.getComputedTransform = function() { if (this.__hostTarget) { this.__hostTarget.getComputedTransform(); this.__hostTarget.updateInnerText(true); } return _super.prototype.getComputedTransform.call(this); }; ZRText2.prototype._updateSubTexts = function() { this._childCursor = 0; normalizeTextStyle(this.style); this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(); this._children.length = this._childCursor; this.styleUpdated(); }; ZRText2.prototype.addSelfToZr = function(zr) { _super.prototype.addSelfToZr.call(this, zr); for (var i = 0; i < this._children.length; i++) { this._children[i].__zr = zr; } }; ZRText2.prototype.removeSelfFromZr = function(zr) { _super.prototype.removeSelfFromZr.call(this, zr); for (var i = 0; i < this._children.length; i++) { this._children[i].__zr = null; } }; ZRText2.prototype.getBoundingRect = function() { if (this.styleChanged()) { this._updateSubTexts(); } if (!this._rect) { var tmpRect2 = new BoundingRect$1(0, 0, 0, 0); var children = this._children; var tmpMat = []; var rect = null; for (var i = 0; i < children.length; i++) { var child = children[i]; var childRect = child.getBoundingRect(); var transform2 = child.getLocalTransform(tmpMat); if (transform2) { tmpRect2.copy(childRect); tmpRect2.applyTransform(transform2); rect = rect || tmpRect2.clone(); rect.union(tmpRect2); } else { rect = rect || childRect.clone(); rect.union(childRect); } } this._rect = rect || tmpRect2; } return this._rect; }; ZRText2.prototype.setDefaultTextStyle = function(defaultTextStyle) { this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR; }; ZRText2.prototype.setTextContent = function(textContent) { throw new Error("Can't attach text on another text"); }; ZRText2.prototype._mergeStyle = function(targetStyle, sourceStyle) { if (!sourceStyle) { return targetStyle; } var sourceRich = sourceStyle.rich; var targetRich = targetStyle.rich || sourceRich && {}; extend(targetStyle, sourceStyle); if (sourceRich && targetRich) { this._mergeRich(targetRich, sourceRich); targetStyle.rich = targetRich; } else if (targetRich) { targetStyle.rich = targetRich; } return targetStyle; }; ZRText2.prototype._mergeRich = function(targetRich, sourceRich) { var richNames = keys(sourceRich); for (var i = 0; i < richNames.length; i++) { var richName = richNames[i]; targetRich[richName] = targetRich[richName] || {}; extend(targetRich[richName], sourceRich[richName]); } }; ZRText2.prototype.getAnimationStyleProps = function() { return DEFAULT_TEXT_ANIMATION_PROPS; }; ZRText2.prototype._getOrCreateChild = function(Ctor) { var child = this._children[this._childCursor]; if (!child || !(child instanceof Ctor)) { child = new Ctor(); } this._children[this._childCursor++] = child; child.__zr = this.__zr; child.parent = this; return child; }; ZRText2.prototype._updatePlainTexts = function() { var style = this.style; var textFont = style.font || DEFAULT_FONT; var textPadding = style.padding; var text = getStyleText(style); var contentBlock = parsePlainText(text, style); var needDrawBg = needDrawBackground(style); var bgColorDrawn = !!style.backgroundColor; var outerHeight = contentBlock.outerHeight; var textLines = contentBlock.lines; var lineHeight = contentBlock.lineHeight; var defaultStyle = this._defaultStyle; var baseX = style.x || 0; var baseY = style.y || 0; var textAlign = style.align || defaultStyle.align || "left"; var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || "top"; var textX = baseX; var textY = adjustTextY$1(baseY, contentBlock.contentHeight, verticalAlign); if (needDrawBg || textPadding) { var outerWidth_1 = contentBlock.width; textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]); var boxX = adjustTextX(baseX, outerWidth_1, textAlign); var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight); } textY += lineHeight / 2; if (textPadding) { textX = getTextXForPadding(baseX, textAlign, textPadding); if (verticalAlign === "top") { textY += textPadding[0]; } else if (verticalAlign === "bottom") { textY -= textPadding[2]; } } var defaultLineWidth = 0; var useDefaultFill = false; var textFill = getFill("fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); var textStroke = getStroke("stroke" in style ? style.stroke : !bgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null); var hasShadow2 = style.textShadowBlur > 0; var fixedBoundingRect = style.width != null && (style.overflow === "truncate" || style.overflow === "break" || style.overflow === "breakAll"); var calculatedLineHeight = contentBlock.calculatedLineHeight; for (var i = 0; i < textLines.length; i++) { var el = this._getOrCreateChild(TSpan$1); var subElStyle = el.createStyle(); el.useStyle(subElStyle); subElStyle.text = textLines[i]; subElStyle.x = textX; subElStyle.y = textY; if (textAlign) { subElStyle.textAlign = textAlign; } subElStyle.textBaseline = "middle"; subElStyle.opacity = style.opacity; subElStyle.strokeFirst = true; if (hasShadow2) { subElStyle.shadowBlur = style.textShadowBlur || 0; subElStyle.shadowColor = style.textShadowColor || "transparent"; subElStyle.shadowOffsetX = style.textShadowOffsetX || 0; subElStyle.shadowOffsetY = style.textShadowOffsetY || 0; } if (textStroke) { subElStyle.stroke = textStroke; subElStyle.lineWidth = style.lineWidth || defaultLineWidth; subElStyle.lineDash = style.lineDash; subElStyle.lineDashOffset = style.lineDashOffset || 0; } if (textFill) { subElStyle.fill = textFill; } subElStyle.font = textFont; textY += lineHeight; if (fixedBoundingRect) { el.setBoundingRect(new BoundingRect$1(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY$1(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight)); } } }; ZRText2.prototype._updateRichTexts = function() { var style = this.style; var text = getStyleText(style); var contentBlock = parseRichText(text, style); var contentWidth = contentBlock.width; var outerWidth = contentBlock.outerWidth; var outerHeight = contentBlock.outerHeight; var textPadding = style.padding; var baseX = style.x || 0; var baseY = style.y || 0; var defaultStyle = this._defaultStyle; var textAlign = style.align || defaultStyle.align; var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign; var boxX = adjustTextX(baseX, outerWidth, textAlign); var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); var xLeft = boxX; var lineTop = boxY; if (textPadding) { xLeft += textPadding[3]; lineTop += textPadding[0]; } var xRight = xLeft + contentWidth; if (needDrawBackground(style)) { this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); } var bgColorDrawn = !!style.backgroundColor; for (var i = 0; i < contentBlock.lines.length; i++) { var line = contentBlock.lines[i]; var tokens = line.tokens; var tokenCount = tokens.length; var lineHeight = line.lineHeight; var remainedWidth = line.width; var leftIndex = 0; var lineXLeft = xLeft; var lineXRight = xRight; var rightIndex = tokenCount - 1; var token = void 0; while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.align || token.align === "left")) { this._placeToken(token, style, lineHeight, lineTop, lineXLeft, "left", bgColorDrawn); remainedWidth -= token.width; lineXLeft += token.width; leftIndex++; } while (rightIndex >= 0 && (token = tokens[rightIndex], token.align === "right")) { this._placeToken(token, style, lineHeight, lineTop, lineXRight, "right", bgColorDrawn); remainedWidth -= token.width; lineXRight -= token.width; rightIndex--; } lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2; while (leftIndex <= rightIndex) { token = tokens[leftIndex]; this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, "center", bgColorDrawn); lineXLeft += token.width; leftIndex++; } lineTop += lineHeight; } }; ZRText2.prototype._placeToken = function(token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) { var tokenStyle = style.rich[token.styleName] || {}; tokenStyle.text = token.text; var verticalAlign = token.verticalAlign; var y = lineTop + lineHeight / 2; if (verticalAlign === "top") { y = lineTop + token.height / 2; } else if (verticalAlign === "bottom") { y = lineTop + lineHeight - token.height / 2; } var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle); needDrawBg && this._renderBackground(tokenStyle, style, textAlign === "right" ? x - token.width : textAlign === "center" ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height); var bgColorDrawn = !!tokenStyle.backgroundColor; var textPadding = token.textPadding; if (textPadding) { x = getTextXForPadding(x, textAlign, textPadding); y -= token.height / 2 - textPadding[0] - token.innerHeight / 2; } var el = this._getOrCreateChild(TSpan$1); var subElStyle = el.createStyle(); el.useStyle(subElStyle); var defaultStyle = this._defaultStyle; var useDefaultFill = false; var defaultLineWidth = 0; var textFill = getFill("fill" in tokenStyle ? tokenStyle.fill : "fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); var textStroke = getStroke("stroke" in tokenStyle ? tokenStyle.stroke : "stroke" in style ? style.stroke : !bgColorDrawn && !parentBgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null); var hasShadow2 = tokenStyle.textShadowBlur > 0 || style.textShadowBlur > 0; subElStyle.text = token.text; subElStyle.x = x; subElStyle.y = y; if (hasShadow2) { subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0; subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || "transparent"; subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0; subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0; } subElStyle.textAlign = textAlign; subElStyle.textBaseline = "middle"; subElStyle.font = token.font || DEFAULT_FONT; subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1); if (textStroke) { subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth); subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash); subElStyle.lineDashOffset = style.lineDashOffset || 0; subElStyle.stroke = textStroke; } if (textFill) { subElStyle.fill = textFill; } var textWidth = token.contentWidth; var textHeight = token.contentHeight; el.setBoundingRect(new BoundingRect$1(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY$1(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight)); }; ZRText2.prototype._renderBackground = function(style, topStyle, x, y, width, height) { var textBackgroundColor = style.backgroundColor; var textBorderWidth = style.borderWidth; var textBorderColor = style.borderColor; var isImageBg = textBackgroundColor && textBackgroundColor.image; var isPlainOrGradientBg = textBackgroundColor && !isImageBg; var textBorderRadius = style.borderRadius; var self2 = this; var rectEl; var imgEl; if (isPlainOrGradientBg || style.lineHeight || textBorderWidth && textBorderColor) { rectEl = this._getOrCreateChild(Rect$3); rectEl.useStyle(rectEl.createStyle()); rectEl.style.fill = null; var rectShape = rectEl.shape; rectShape.x = x; rectShape.y = y; rectShape.width = width; rectShape.height = height; rectShape.r = textBorderRadius; rectEl.dirtyShape(); } if (isPlainOrGradientBg) { var rectStyle = rectEl.style; rectStyle.fill = textBackgroundColor || null; rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1); } else if (isImageBg) { imgEl = this._getOrCreateChild(ZRImage$1); imgEl.onload = function() { self2.dirtyStyle(); }; var imgStyle = imgEl.style; imgStyle.image = textBackgroundColor.image; imgStyle.x = x; imgStyle.y = y; imgStyle.width = width; imgStyle.height = height; } if (textBorderWidth && textBorderColor) { var rectStyle = rectEl.style; rectStyle.lineWidth = textBorderWidth; rectStyle.stroke = textBorderColor; rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1); rectStyle.lineDash = style.borderDash; rectStyle.lineDashOffset = style.borderDashOffset || 0; rectEl.strokeContainThreshold = 0; if (rectEl.hasFill() && rectEl.hasStroke()) { rectStyle.strokeFirst = true; rectStyle.lineWidth *= 2; } } var commonStyle = (rectEl || imgEl).style; commonStyle.shadowBlur = style.shadowBlur || 0; commonStyle.shadowColor = style.shadowColor || "transparent"; commonStyle.shadowOffsetX = style.shadowOffsetX || 0; commonStyle.shadowOffsetY = style.shadowOffsetY || 0; commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1); }; ZRText2.makeFont = function(style) { var font = ""; if (style.fontSize || style.fontFamily || style.fontWeight) { var fontSize = ""; if (typeof style.fontSize === "string" && (style.fontSize.indexOf("px") !== -1 || style.fontSize.indexOf("rem") !== -1 || style.fontSize.indexOf("em") !== -1)) { fontSize = style.fontSize; } else if (!isNaN(+style.fontSize)) { fontSize = style.fontSize + "px"; } else { fontSize = "12px"; } font = [ style.fontStyle, style.fontWeight, fontSize, style.fontFamily || "sans-serif" ].join(" "); } return font && trim$1(font) || style.textFont || style.font; }; return ZRText2; }(Displayable$1); var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 }; var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 }; function normalizeTextStyle(style) { normalizeStyle(style); each$g(style.rich, normalizeStyle); return style; } function normalizeStyle(style) { if (style) { style.font = ZRText.makeFont(style); var textAlign = style.align; textAlign === "middle" && (textAlign = "center"); style.align = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : "left"; var verticalAlign = style.verticalAlign; verticalAlign === "center" && (verticalAlign = "middle"); style.verticalAlign = verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign] ? verticalAlign : "top"; var textPadding = style.padding; if (textPadding) { style.padding = normalizeCssArray$1(style.padding); } } } function getStroke(stroke, lineWidth) { return stroke == null || lineWidth <= 0 || stroke === "transparent" || stroke === "none" ? null : stroke.image || stroke.colorStops ? "#000" : stroke; } function getFill(fill) { return fill == null || fill === "none" ? null : fill.image || fill.colorStops ? "#000" : fill; } function getTextXForPadding(x, textAlign, textPadding) { return textAlign === "right" ? x - textPadding[1] : textAlign === "center" ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3]; } function getStyleText(style) { var text = style.text; text != null && (text += ""); return text; } function needDrawBackground(style) { return !!(style.backgroundColor || style.lineHeight || style.borderWidth && style.borderColor); } var ZRText$1 = ZRText; var getECData = makeInner(); var setCommonECData = function(seriesIndex, dataType, dataIdx, el) { if (el) { var ecData = getECData(el); ecData.dataIndex = dataIdx; ecData.dataType = dataType; ecData.seriesIndex = seriesIndex; if (el.type === "group") { el.traverse(function(child) { var childECData = getECData(child); childECData.seriesIndex = seriesIndex; childECData.dataIndex = dataIdx; childECData.dataType = dataType; }); } } }; var _highlightNextDigit = 1; var _highlightKeyMap = {}; var getSavedStates = makeInner(); var HOVER_STATE_NORMAL = 0; var HOVER_STATE_BLUR = 1; var HOVER_STATE_EMPHASIS = 2; var SPECIAL_STATES = ["emphasis", "blur", "select"]; var DISPLAY_STATES = ["normal", "emphasis", "blur", "select"]; var Z2_EMPHASIS_LIFT = 10; var Z2_SELECT_LIFT = 9; var HIGHLIGHT_ACTION_TYPE = "highlight"; var DOWNPLAY_ACTION_TYPE = "downplay"; var SELECT_ACTION_TYPE = "select"; var UNSELECT_ACTION_TYPE = "unselect"; var TOGGLE_SELECT_ACTION_TYPE = "toggleSelect"; function hasFillOrStroke(fillOrStroke) { return fillOrStroke != null && fillOrStroke !== "none"; } var liftedColorCache = new LRU$1(100); function liftColor(color$1) { if (typeof color$1 !== "string") { return color$1; } var liftedColor = liftedColorCache.get(color$1); if (!liftedColor) { liftedColor = lift(color$1, -0.1); liftedColorCache.put(color$1, liftedColor); } return liftedColor; } function doChangeHoverState(el, stateName, hoverStateEnum) { if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) { el.onHoverStateChange(stateName); } el.hoverState = hoverStateEnum; } function singleEnterEmphasis(el) { doChangeHoverState(el, "emphasis", HOVER_STATE_EMPHASIS); } function singleLeaveEmphasis(el) { if (el.hoverState === HOVER_STATE_EMPHASIS) { doChangeHoverState(el, "normal", HOVER_STATE_NORMAL); } } function singleEnterBlur(el) { doChangeHoverState(el, "blur", HOVER_STATE_BLUR); } function singleLeaveBlur(el) { if (el.hoverState === HOVER_STATE_BLUR) { doChangeHoverState(el, "normal", HOVER_STATE_NORMAL); } } function singleEnterSelect(el) { el.selected = true; } function singleLeaveSelect(el) { el.selected = false; } function updateElementState(el, updater, commonParam) { updater(el, commonParam); } function traverseUpdateState(el, updater, commonParam) { updateElementState(el, updater, commonParam); el.isGroup && el.traverse(function(child) { updateElementState(child, updater, commonParam); }); } function setStatesFlag(el, stateName) { switch (stateName) { case "emphasis": el.hoverState = HOVER_STATE_EMPHASIS; break; case "normal": el.hoverState = HOVER_STATE_NORMAL; break; case "blur": el.hoverState = HOVER_STATE_BLUR; break; case "select": el.selected = true; } } function getFromStateStyle(el, props, toStateName, defaultValue) { var style = el.style; var fromState = {}; for (var i = 0; i < props.length; i++) { var propName = props[i]; var val = style[propName]; fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val; } for (var i = 0; i < el.animators.length; i++) { var animator = el.animators[i]; if (animator.__fromStateTransition && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === "style") { animator.saveFinalToTarget(fromState, props); } } return fromState; } function createEmphasisDefaultState(el, stateName, targetStates, state) { var hasSelect = targetStates && indexOf(targetStates, "select") >= 0; var cloned = false; if (el instanceof Path$1) { var store = getSavedStates(el); var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill; var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke; if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) { state = state || {}; var emphasisStyle = state.style || {}; if (emphasisStyle.fill === "inherit") { cloned = true; state = extend({}, state); emphasisStyle = extend({}, emphasisStyle); emphasisStyle.fill = fromFill; } else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) { cloned = true; state = extend({}, state); emphasisStyle = extend({}, emphasisStyle); emphasisStyle.fill = liftColor(fromFill); } else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) { if (!cloned) { state = extend({}, state); emphasisStyle = extend({}, emphasisStyle); } emphasisStyle.stroke = liftColor(fromStroke); } state.style = emphasisStyle; } } if (state) { if (state.z2 == null) { if (!cloned) { state = extend({}, state); } var z2EmphasisLift = el.z2EmphasisLift; state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT); } } return state; } function createSelectDefaultState(el, stateName, state) { if (state) { if (state.z2 == null) { state = extend({}, state); var z2SelectLift = el.z2SelectLift; state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT); } } return state; } function createBlurDefaultState(el, stateName, state) { var hasBlur = indexOf(el.currentStates, stateName) >= 0; var currentOpacity = el.style.opacity; var fromState = !hasBlur ? getFromStateStyle(el, ["opacity"], stateName, { opacity: 1 }) : null; state = state || {}; var blurStyle = state.style || {}; if (blurStyle.opacity == null) { state = extend({}, state); blurStyle = extend({ opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1 }, blurStyle); state.style = blurStyle; } return state; } function elementStateProxy(stateName, targetStates) { var state = this.states[stateName]; if (this.style) { if (stateName === "emphasis") { return createEmphasisDefaultState(this, stateName, targetStates, state); } else if (stateName === "blur") { return createBlurDefaultState(this, stateName, state); } else if (stateName === "select") { return createSelectDefaultState(this, stateName, state); } } return state; } function setDefaultStateProxy(el) { el.stateProxy = elementStateProxy; var textContent = el.getTextContent(); var textGuide = el.getTextGuideLine(); if (textContent) { textContent.stateProxy = elementStateProxy; } if (textGuide) { textGuide.stateProxy = elementStateProxy; } } function enterEmphasisWhenMouseOver(el, e2) { !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis); } function leaveEmphasisWhenMouseOut(el, e2) { !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis); } function enterEmphasis(el, highlightDigit) { el.__highByOuter |= 1 << (highlightDigit || 0); traverseUpdateState(el, singleEnterEmphasis); } function leaveEmphasis(el, highlightDigit) { !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis); } function enterBlur(el) { traverseUpdateState(el, singleEnterBlur); } function leaveBlur(el) { traverseUpdateState(el, singleLeaveBlur); } function enterSelect(el) { traverseUpdateState(el, singleEnterSelect); } function leaveSelect(el) { traverseUpdateState(el, singleLeaveSelect); } function shouldSilent(el, e2) { return el.__highDownSilentOnTouch && e2.zrByTouch; } function allLeaveBlur(api) { var model = api.getModel(); model.eachComponent(function(componentType, componentModel) { var view2 = componentType === "series" ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel); view2.group.traverse(function(child) { singleLeaveBlur(child); }); }); } function blurSeries(targetSeriesIndex, focus, blurScope, api) { var ecModel = api.getModel(); blurScope = blurScope || "coordinateSystem"; function leaveBlurOfIndices(data, dataIndices) { for (var i = 0; i < dataIndices.length; i++) { var itemEl = data.getItemGraphicEl(dataIndices[i]); itemEl && leaveBlur(itemEl); } } if (targetSeriesIndex == null) { return; } if (!focus || focus === "none") { return; } var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex); var targetCoordSys = targetSeriesModel.coordinateSystem; if (targetCoordSys && targetCoordSys.master) { targetCoordSys = targetCoordSys.master; } var blurredSeries = []; ecModel.eachSeries(function(seriesModel) { var sameSeries = targetSeriesModel === seriesModel; var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.master) { coordSys = coordSys.master; } var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; if (!(blurScope === "series" && !sameSeries || blurScope === "coordinateSystem" && !sameCoordSys || focus === "series" && sameSeries)) { var view2 = api.getViewOfSeriesModel(seriesModel); view2.group.traverse(function(child) { singleEnterBlur(child); }); if (isArrayLike(focus)) { leaveBlurOfIndices(seriesModel.getData(), focus); } else if (isObject$3(focus)) { var dataTypes = keys(focus); for (var d = 0; d < dataTypes.length; d++) { leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]); } } blurredSeries.push(seriesModel); } }); ecModel.eachComponent(function(componentType, componentModel) { if (componentType === "series") { return; } var view2 = api.getViewOfComponentModel(componentModel); if (view2 && view2.blurSeries) { view2.blurSeries(blurredSeries, ecModel); } }); } function blurComponent(componentMainType, componentIndex, api) { if (componentMainType == null || componentIndex == null) { return; } var componentModel = api.getModel().getComponent(componentMainType, componentIndex); if (!componentModel) { return; } var view2 = api.getViewOfComponentModel(componentModel); if (!view2 || !view2.focusBlurEnabled) { return; } view2.group.traverse(function(child) { singleEnterBlur(child); }); } function blurSeriesFromHighlightPayload(seriesModel, payload, api) { var seriesIndex = seriesModel.seriesIndex; var data = seriesModel.getData(payload.dataType); var dataIndex = queryDataIndex(data, payload); dataIndex = (isArray$1(dataIndex) ? dataIndex[0] : dataIndex) || 0; var el = data.getItemGraphicEl(dataIndex); if (!el) { var count2 = data.count(); var current = 0; while (!el && current < count2) { el = data.getItemGraphicEl(current++); } } if (el) { var ecData = getECData(el); blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api); } else { var focus_1 = seriesModel.get(["emphasis", "focus"]); var blurScope = seriesModel.get(["emphasis", "blurScope"]); if (focus_1 != null) { blurSeries(seriesIndex, focus_1, blurScope, api); } } } function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) { var ret = { focusSelf: false, dispatchers: null }; if (componentMainType == null || componentMainType === "series" || componentIndex == null || name == null) { return ret; } var componentModel = api.getModel().getComponent(componentMainType, componentIndex); if (!componentModel) { return ret; } var view2 = api.getViewOfComponentModel(componentModel); if (!view2 || !view2.findHighDownDispatchers) { return ret; } var dispatchers = view2.findHighDownDispatchers(name); var focusSelf; for (var i = 0; i < dispatchers.length; i++) { if (getECData(dispatchers[i]).focus === "self") { focusSelf = true; break; } } return { focusSelf, dispatchers }; } function handleGlobalMouseOverForHighDown(dispatcher, e2, api) { var ecData = getECData(dispatcher); var _a2 = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), dispatchers = _a2.dispatchers, focusSelf = _a2.focusSelf; if (dispatchers) { if (focusSelf) { blurComponent(ecData.componentMainType, ecData.componentIndex, api); } each$g(dispatchers, function(dispatcher2) { return enterEmphasisWhenMouseOver(dispatcher2, e2); }); } else { blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api); if (ecData.focus === "self") { blurComponent(ecData.componentMainType, ecData.componentIndex, api); } enterEmphasisWhenMouseOver(dispatcher, e2); } } function handleGlboalMouseOutForHighDown(dispatcher, e2, api) { allLeaveBlur(api); var ecData = getECData(dispatcher); var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers; if (dispatchers) { each$g(dispatchers, function(dispatcher2) { return leaveEmphasisWhenMouseOut(dispatcher2, e2); }); } else { leaveEmphasisWhenMouseOut(dispatcher, e2); } } function toggleSelectionFromPayload(seriesModel, payload, api) { if (!isSelectChangePayload(payload)) { return; } var dataType = payload.dataType; var data = seriesModel.getData(dataType); var dataIndex = queryDataIndex(data, payload); if (!isArray$1(dataIndex)) { dataIndex = [dataIndex]; } seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? "toggleSelect" : payload.type === SELECT_ACTION_TYPE ? "select" : "unselect"](dataIndex, dataType); } function updateSeriesElementSelection(seriesModel) { var allData = seriesModel.getAllData(); each$g(allData, function(_a2) { var data = _a2.data, type = _a2.type; data.eachItemGraphicEl(function(el, idx) { seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el); }); }); } function getAllSelectedIndices(ecModel) { var ret = []; ecModel.eachSeries(function(seriesModel) { var allData = seriesModel.getAllData(); each$g(allData, function(_a2) { _a2.data; var type = _a2.type; var dataIndices = seriesModel.getSelectedDataIndices(); if (dataIndices.length > 0) { var item = { dataIndex: dataIndices, seriesIndex: seriesModel.seriesIndex }; if (type != null) { item.dataType = type; } ret.push(item); } }); }); return ret; } function enableHoverEmphasis(el, focus, blurScope) { setAsHighDownDispatcher(el, true); traverseUpdateState(el, setDefaultStateProxy); enableHoverFocus(el, focus, blurScope); } function enableHoverFocus(el, focus, blurScope) { var ecData = getECData(el); if (focus != null) { ecData.focus = focus; ecData.blurScope = blurScope; } else if (ecData.focus) { ecData.focus = null; } } var OTHER_STATES = ["emphasis", "blur", "select"]; var defaultStyleGetterMap = { itemStyle: "getItemStyle", lineStyle: "getLineStyle", areaStyle: "getAreaStyle" }; function setStatesStylesFromModel(el, itemModel, styleType, getter) { styleType = styleType || "itemStyle"; for (var i = 0; i < OTHER_STATES.length; i++) { var stateName = OTHER_STATES[i]; var model = itemModel.getModel([stateName, styleType]); var state = el.ensureState(stateName); state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]](); } } function setAsHighDownDispatcher(el, asDispatcher) { var disable = asDispatcher === false; var extendedEl = el; if (el.highDownSilentOnTouch) { extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch; } if (!disable || extendedEl.__highDownDispatcher) { extendedEl.__highByOuter = extendedEl.__highByOuter || 0; extendedEl.__highDownDispatcher = !disable; } } function isHighDownDispatcher(el) { return !!(el && el.__highDownDispatcher); } function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) { var ecData = getECData(el); ecData.componentMainType = componentModel.mainType; ecData.componentIndex = componentModel.componentIndex; ecData.componentHighDownName = componentHighDownName; } function getHighlightDigit(highlightKey) { var highlightDigit = _highlightKeyMap[highlightKey]; if (highlightDigit == null && _highlightNextDigit <= 32) { highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++; } return highlightDigit; } function isSelectChangePayload(payload) { var payloadType = payload.type; return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE; } function isHighDownPayload(payload) { var payloadType = payload.type; return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE; } function savePathStates(el) { var store = getSavedStates(el); store.normalFill = el.style.fill; store.normalStroke = el.style.stroke; var selectState = el.states.select || {}; store.selectFill = selectState.style && selectState.style.fill || null; store.selectStroke = selectState.style && selectState.style.stroke || null; } var CMD$2 = PathProxy$1.CMD; var points$2 = [[], [], []]; var mathSqrt$2 = Math.sqrt; var mathAtan2 = Math.atan2; function transformPath(path, m2) { if (!m2) { return; } var data = path.data; var len2 = path.len(); var cmd; var nPoint; var i; var j; var k; var p; var M = CMD$2.M; var C = CMD$2.C; var L = CMD$2.L; var R = CMD$2.R; var A = CMD$2.A; var Q = CMD$2.Q; for (i = 0, j = 0; i < len2; ) { cmd = data[i++]; j = i; nPoint = 0; switch (cmd) { case M: nPoint = 1; break; case L: nPoint = 1; break; case C: nPoint = 3; break; case Q: nPoint = 2; break; case A: var x = m2[4]; var y = m2[5]; var sx = mathSqrt$2(m2[0] * m2[0] + m2[1] * m2[1]); var sy = mathSqrt$2(m2[2] * m2[2] + m2[3] * m2[3]); var angle = mathAtan2(-m2[1] / sy, m2[0] / sx); data[i] *= sx; data[i++] += x; data[i] *= sy; data[i++] += y; data[i++] *= sx; data[i++] *= sy; data[i++] += angle; data[i++] += angle; i += 2; j = i; break; case R: p[0] = data[i++]; p[1] = data[i++]; applyTransform$1(p, p, m2); data[j++] = p[0]; data[j++] = p[1]; p[0] += data[i++]; p[1] += data[i++]; applyTransform$1(p, p, m2); data[j++] = p[0]; data[j++] = p[1]; } for (k = 0; k < nPoint; k++) { var p_1 = points$2[k]; p_1[0] = data[i++]; p_1[1] = data[i++]; applyTransform$1(p_1, p_1, m2); data[j++] = p_1[0]; data[j++] = p_1[1]; } } path.increaseVersion(); } var mathSqrt$1 = Math.sqrt; var mathSin$2 = Math.sin; var mathCos$2 = Math.cos; var PI$7 = Math.PI; function vMag(v) { return Math.sqrt(v[0] * v[0] + v[1] * v[1]); } function vRatio(u, v) { return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)); } function vAngle(u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v)); } function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) { var psi = psiDeg * (PI$7 / 180); var xp = mathCos$2(psi) * (x1 - x2) / 2 + mathSin$2(psi) * (y1 - y2) / 2; var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2 + mathCos$2(psi) * (y1 - y2) / 2; var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry); if (lambda > 1) { rx *= mathSqrt$1(lambda); ry *= mathSqrt$1(lambda); } var f = (fa === fs ? -1 : 1) * mathSqrt$1((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0; var cxp = f * rx * yp / ry; var cyp = f * -ry * xp / rx; var cx = (x1 + x2) / 2 + mathCos$2(psi) * cxp - mathSin$2(psi) * cyp; var cy = (y1 + y2) / 2 + mathSin$2(psi) * cxp + mathCos$2(psi) * cyp; var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]); var u = [(xp - cxp) / rx, (yp - cyp) / ry]; var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry]; var dTheta = vAngle(u, v); if (vRatio(u, v) <= -1) { dTheta = PI$7; } if (vRatio(u, v) >= 1) { dTheta = 0; } if (dTheta < 0) { var n = Math.round(dTheta / PI$7 * 1e6) / 1e6; dTheta = PI$7 * 2 + n % 2 * PI$7; } path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs); } var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; var numberReg$1 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; function createPathProxyFromString(data) { var path = new PathProxy$1(); if (!data) { return path; } var cpx = 0; var cpy = 0; var subpathX = cpx; var subpathY = cpy; var prevCmd; var CMD2 = PathProxy$1.CMD; var cmdList = data.match(commandReg); if (!cmdList) { return path; } for (var l = 0; l < cmdList.length; l++) { var cmdText = cmdList[l]; var cmdStr = cmdText.charAt(0); var cmd = void 0; var p = cmdText.match(numberReg$1) || []; var pLen = p.length; for (var i = 0; i < pLen; i++) { p[i] = parseFloat(p[i]); } var off = 0; while (off < pLen) { var ctlPtx = void 0; var ctlPty = void 0; var rx = void 0; var ry = void 0; var psi = void 0; var fa = void 0; var fs = void 0; var x1 = cpx; var y1 = cpy; var len2 = void 0; var pathData = void 0; switch (cmdStr) { case "l": cpx += p[off++]; cpy += p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "L": cpx = p[off++]; cpy = p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "m": cpx += p[off++]; cpy += p[off++]; cmd = CMD2.M; path.addData(cmd, cpx, cpy); subpathX = cpx; subpathY = cpy; cmdStr = "l"; break; case "M": cpx = p[off++]; cpy = p[off++]; cmd = CMD2.M; path.addData(cmd, cpx, cpy); subpathX = cpx; subpathY = cpy; cmdStr = "L"; break; case "h": cpx += p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "H": cpx = p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "v": cpy += p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "V": cpy = p[off++]; cmd = CMD2.L; path.addData(cmd, cpx, cpy); break; case "C": cmd = CMD2.C; path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]); cpx = p[off - 2]; cpy = p[off - 1]; break; case "c": cmd = CMD2.C; path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy); cpx += p[off - 2]; cpy += p[off - 1]; break; case "S": ctlPtx = cpx; ctlPty = cpy; len2 = path.len(); pathData = path.data; if (prevCmd === CMD2.C) { ctlPtx += cpx - pathData[len2 - 4]; ctlPty += cpy - pathData[len2 - 3]; } cmd = CMD2.C; x1 = p[off++]; y1 = p[off++]; cpx = p[off++]; cpy = p[off++]; path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); break; case "s": ctlPtx = cpx; ctlPty = cpy; len2 = path.len(); pathData = path.data; if (prevCmd === CMD2.C) { ctlPtx += cpx - pathData[len2 - 4]; ctlPty += cpy - pathData[len2 - 3]; } cmd = CMD2.C; x1 = cpx + p[off++]; y1 = cpy + p[off++]; cpx += p[off++]; cpy += p[off++]; path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); break; case "Q": x1 = p[off++]; y1 = p[off++]; cpx = p[off++]; cpy = p[off++]; cmd = CMD2.Q; path.addData(cmd, x1, y1, cpx, cpy); break; case "q": x1 = p[off++] + cpx; y1 = p[off++] + cpy; cpx += p[off++]; cpy += p[off++]; cmd = CMD2.Q; path.addData(cmd, x1, y1, cpx, cpy); break; case "T": ctlPtx = cpx; ctlPty = cpy; len2 = path.len(); pathData = path.data; if (prevCmd === CMD2.Q) { ctlPtx += cpx - pathData[len2 - 4]; ctlPty += cpy - pathData[len2 - 3]; } cpx = p[off++]; cpy = p[off++]; cmd = CMD2.Q; path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); break; case "t": ctlPtx = cpx; ctlPty = cpy; len2 = path.len(); pathData = path.data; if (prevCmd === CMD2.Q) { ctlPtx += cpx - pathData[len2 - 4]; ctlPty += cpy - pathData[len2 - 3]; } cpx += p[off++]; cpy += p[off++]; cmd = CMD2.Q; path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); break; case "A": rx = p[off++]; ry = p[off++]; psi = p[off++]; fa = p[off++]; fs = p[off++]; x1 = cpx, y1 = cpy; cpx = p[off++]; cpy = p[off++]; cmd = CMD2.A; processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); break; case "a": rx = p[off++]; ry = p[off++]; psi = p[off++]; fa = p[off++]; fs = p[off++]; x1 = cpx, y1 = cpy; cpx += p[off++]; cpy += p[off++]; cmd = CMD2.A; processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); break; } } if (cmdStr === "z" || cmdStr === "Z") { cmd = CMD2.Z; path.addData(cmd); cpx = subpathX; cpy = subpathY; } prevCmd = cmd; } path.toStatic(); return path; } var SVGPath = function(_super) { __extends(SVGPath2, _super); function SVGPath2() { return _super !== null && _super.apply(this, arguments) || this; } SVGPath2.prototype.applyTransform = function(m2) { }; return SVGPath2; }(Path$1); function isPathProxy(path) { return path.setData != null; } function createPathOptions(str, opts) { var pathProxy = createPathProxyFromString(str); var innerOpts = extend({}, opts); innerOpts.buildPath = function(path) { if (isPathProxy(path)) { path.setData(pathProxy.data); var ctx = path.getContext(); if (ctx) { path.rebuildPath(ctx, 1); } } else { var ctx = path; pathProxy.rebuildPath(ctx, 1); } }; innerOpts.applyTransform = function(m2) { transformPath(pathProxy, m2); this.dirtyShape(); }; return innerOpts; } function createFromString(str, opts) { return new SVGPath(createPathOptions(str, opts)); } function extendFromString(str, defaultOpts) { var innerOpts = createPathOptions(str, defaultOpts); var Sub = function(_super) { __extends(Sub2, _super); function Sub2(opts) { var _this = _super.call(this, opts) || this; _this.applyTransform = innerOpts.applyTransform; _this.buildPath = innerOpts.buildPath; return _this; } return Sub2; }(SVGPath); return Sub; } function mergePath$1(pathEls, opts) { var pathList = []; var len2 = pathEls.length; for (var i = 0; i < len2; i++) { var pathEl = pathEls[i]; pathList.push(pathEl.getUpdatedPathProxy(true)); } var pathBundle = new Path$1(opts); pathBundle.createPathProxy(); pathBundle.buildPath = function(path) { if (isPathProxy(path)) { path.appendPath(pathList); var ctx = path.getContext(); if (ctx) { path.rebuildPath(ctx, 1); } } }; return pathBundle; } function clonePath$1(sourcePath, opts) { opts = opts || {}; var path = new Path$1(); if (sourcePath.shape) { path.setShape(sourcePath.shape); } path.setStyle(sourcePath.style); if (opts.bakeTransform) { transformPath(path.path, sourcePath.getComputedTransform()); } else { if (opts.toLocal) { path.setLocalTransform(sourcePath.getComputedTransform()); } else { path.copyTransform(sourcePath); } } path.buildPath = sourcePath.buildPath; path.applyTransform = path.applyTransform; path.z = sourcePath.z; path.z2 = sourcePath.z2; path.zlevel = sourcePath.zlevel; return path; } var CircleShape = function() { function CircleShape2() { this.cx = 0; this.cy = 0; this.r = 0; } return CircleShape2; }(); var Circle = function(_super) { __extends(Circle2, _super); function Circle2(opts) { return _super.call(this, opts) || this; } Circle2.prototype.getDefaultShape = function() { return new CircleShape(); }; Circle2.prototype.buildPath = function(ctx, shape, inBundle) { if (inBundle) { ctx.moveTo(shape.cx + shape.r, shape.cy); } ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2); }; return Circle2; }(Path$1); Circle.prototype.type = "circle"; var Circle$1 = Circle; var EllipseShape = function() { function EllipseShape2() { this.cx = 0; this.cy = 0; this.rx = 0; this.ry = 0; } return EllipseShape2; }(); var Ellipse = function(_super) { __extends(Ellipse2, _super); function Ellipse2(opts) { return _super.call(this, opts) || this; } Ellipse2.prototype.getDefaultShape = function() { return new EllipseShape(); }; Ellipse2.prototype.buildPath = function(ctx, shape) { var k = 0.5522848; var x = shape.cx; var y = shape.cy; var a = shape.rx; var b = shape.ry; var ox = a * k; var oy = b * k; ctx.moveTo(x - a, y); ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b); ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y); ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b); ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y); ctx.closePath(); }; return Ellipse2; }(Path$1); Ellipse.prototype.type = "ellipse"; var Ellipse$1 = Ellipse; var PI$6 = Math.PI; var PI2$4 = PI$6 * 2; var mathSin$1 = Math.sin; var mathCos$1 = Math.cos; var mathACos = Math.acos; var mathATan2 = Math.atan2; var mathAbs$1 = Math.abs; var mathSqrt = Math.sqrt; var mathMax$7 = Math.max; var mathMin$7 = Math.min; var e = 1e-4; function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { var x10 = x1 - x0; var y10 = y1 - y0; var x32 = x3 - x2; var y32 = y3 - y2; var t = y32 * x10 - x32 * y10; if (t * t < e) { return; } t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; return [x0 + t * x10, y0 + t * y10]; } function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) { var x01 = x0 - x1; var y01 = y0 - y1; var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01); var ox = lo * y01; var oy = -lo * x01; var x11 = x0 + ox; var y11 = y0 + oy; var x10 = x1 + ox; var y10 = y1 + oy; var x00 = (x11 + x10) / 2; var y00 = (y11 + y10) / 2; var dx = x10 - x11; var dy = y10 - y11; var d2 = dx * dx + dy * dy; var r = radius - cr; var s = x11 * y10 - x10 * y11; var d = (dy < 0 ? -1 : 1) * mathSqrt(mathMax$7(0, r * r * d2 - s * s)); var cx0 = (s * dy - dx * d) / d2; var cy0 = (-s * dx - dy * d) / d2; var cx1 = (s * dy + dx * d) / d2; var cy1 = (-s * dx + dy * d) / d2; var dx0 = cx0 - x00; var dy0 = cy0 - y00; var dx1 = cx1 - x00; var dy1 = cy1 - y00; if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) { cx0 = cx1; cy0 = cy1; } return { cx: cx0, cy: cy0, x01: -ox, y01: -oy, x11: cx0 * (radius / r - 1), y11: cy0 * (radius / r - 1) }; } function buildPath$1(ctx, shape) { var radius = mathMax$7(shape.r, 0); var innerRadius = mathMax$7(shape.r0 || 0, 0); var hasRadius = radius > 0; var hasInnerRadius = innerRadius > 0; if (!hasRadius && !hasInnerRadius) { return; } if (!hasRadius) { radius = innerRadius; innerRadius = 0; } if (innerRadius > radius) { var tmp = radius; radius = innerRadius; innerRadius = tmp; } var clockwise = !!shape.clockwise; var startAngle = shape.startAngle; var endAngle = shape.endAngle; var arc; if (startAngle === endAngle) { arc = 0; } else { var tmpAngles2 = [startAngle, endAngle]; normalizeArcAngles(tmpAngles2, !clockwise); arc = mathAbs$1(tmpAngles2[0] - tmpAngles2[1]); } var x = shape.cx; var y = shape.cy; var cornerRadius = shape.cornerRadius || 0; var innerCornerRadius = shape.innerCornerRadius || 0; if (!(radius > e)) { ctx.moveTo(x, y); } else if (arc > PI2$4 - e) { ctx.moveTo(x + radius * mathCos$1(startAngle), y + radius * mathSin$1(startAngle)); ctx.arc(x, y, radius, startAngle, endAngle, !clockwise); if (innerRadius > e) { ctx.moveTo(x + innerRadius * mathCos$1(endAngle), y + innerRadius * mathSin$1(endAngle)); ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise); } } else { var halfRd = mathAbs$1(radius - innerRadius) / 2; var cr = mathMin$7(halfRd, cornerRadius); var icr = mathMin$7(halfRd, innerCornerRadius); var cr0 = icr; var cr1 = cr; var xrs = radius * mathCos$1(startAngle); var yrs = radius * mathSin$1(startAngle); var xire = innerRadius * mathCos$1(endAngle); var yire = innerRadius * mathSin$1(endAngle); var xre = void 0; var yre = void 0; var xirs = void 0; var yirs = void 0; if (cr > e || icr > e) { xre = radius * mathCos$1(endAngle); yre = radius * mathSin$1(endAngle); xirs = innerRadius * mathCos$1(startAngle); yirs = innerRadius * mathSin$1(startAngle); if (arc < PI$6) { var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire); if (it_1) { var x0 = xrs - it_1[0]; var y0 = yrs - it_1[1]; var x1 = xre - it_1[0]; var y1 = yre - it_1[1]; var a = 1 / mathSin$1(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2); var b = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]); cr0 = mathMin$7(icr, (innerRadius - b) / (a - 1)); cr1 = mathMin$7(cr, (radius - b) / (a + 1)); } } } if (!(arc > e)) { ctx.moveTo(x + xrs, y + yrs); } else if (cr1 > e) { var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise); var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise); ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01); if (cr1 < cr) { ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise); } else { ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise); ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise); ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise); } } else { ctx.moveTo(x + xrs, y + yrs); ctx.arc(x, y, radius, startAngle, endAngle, !clockwise); } if (!(innerRadius > e) || !(arc > e)) { ctx.lineTo(x + xire, y + yire); } else if (cr0 > e) { var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise); var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise); ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01); if (cr0 < icr) { ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise); } else { ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise); ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise); ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise); } } else { ctx.lineTo(x + xire, y + yire); ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise); } } ctx.closePath(); } var SectorShape = function() { function SectorShape2() { this.cx = 0; this.cy = 0; this.r0 = 0; this.r = 0; this.startAngle = 0; this.endAngle = Math.PI * 2; this.clockwise = true; this.cornerRadius = 0; this.innerCornerRadius = 0; } return SectorShape2; }(); var Sector = function(_super) { __extends(Sector2, _super); function Sector2(opts) { return _super.call(this, opts) || this; } Sector2.prototype.getDefaultShape = function() { return new SectorShape(); }; Sector2.prototype.buildPath = function(ctx, shape) { buildPath$1(ctx, shape); }; Sector2.prototype.isZeroArea = function() { return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0; }; return Sector2; }(Path$1); Sector.prototype.type = "sector"; var Sector$1 = Sector; var RingShape = function() { function RingShape2() { this.cx = 0; this.cy = 0; this.r = 0; this.r0 = 0; } return RingShape2; }(); var Ring = function(_super) { __extends(Ring2, _super); function Ring2(opts) { return _super.call(this, opts) || this; } Ring2.prototype.getDefaultShape = function() { return new RingShape(); }; Ring2.prototype.buildPath = function(ctx, shape) { var x = shape.cx; var y = shape.cy; var PI22 = Math.PI * 2; ctx.moveTo(x + shape.r, y); ctx.arc(x, y, shape.r, 0, PI22, false); ctx.moveTo(x + shape.r0, y); ctx.arc(x, y, shape.r0, 0, PI22, true); }; return Ring2; }(Path$1); Ring.prototype.type = "ring"; var Ring$1 = Ring; function interpolate(p0, p1, p2, p3, t, t2, t3) { var v0 = (p2 - p0) * 0.5; var v12 = (p3 - p1) * 0.5; return (2 * (p1 - p2) + v0 + v12) * t3 + (-3 * (p1 - p2) - 2 * v0 - v12) * t2 + v0 * t + p1; } function smoothSpline(points2, isLoop) { var len2 = points2.length; var ret = []; var distance$1 = 0; for (var i = 1; i < len2; i++) { distance$1 += distance(points2[i - 1], points2[i]); } var segs = distance$1 / 2; segs = segs < len2 ? len2 : segs; for (var i = 0; i < segs; i++) { var pos = i / (segs - 1) * (isLoop ? len2 : len2 - 1); var idx = Math.floor(pos); var w = pos - idx; var p0 = void 0; var p1 = points2[idx % len2]; var p2 = void 0; var p3 = void 0; if (!isLoop) { p0 = points2[idx === 0 ? idx : idx - 1]; p2 = points2[idx > len2 - 2 ? len2 - 1 : idx + 1]; p3 = points2[idx > len2 - 3 ? len2 - 1 : idx + 2]; } else { p0 = points2[(idx - 1 + len2) % len2]; p2 = points2[(idx + 1) % len2]; p3 = points2[(idx + 2) % len2]; } var w2 = w * w; var w3 = w * w2; ret.push([ interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3) ]); } return ret; } function smoothBezier(points2, smooth, isLoop, constraint) { var cps = []; var v = []; var v12 = []; var v22 = []; var prevPoint; var nextPoint; var min3; var max3; if (constraint) { min3 = [Infinity, Infinity]; max3 = [-Infinity, -Infinity]; for (var i = 0, len2 = points2.length; i < len2; i++) { min$1(min3, min3, points2[i]); max$1(max3, max3, points2[i]); } min$1(min3, min3, constraint[0]); max$1(max3, max3, constraint[1]); } for (var i = 0, len2 = points2.length; i < len2; i++) { var point = points2[i]; if (isLoop) { prevPoint = points2[i ? i - 1 : len2 - 1]; nextPoint = points2[(i + 1) % len2]; } else { if (i === 0 || i === len2 - 1) { cps.push(clone$3(points2[i])); continue; } else { prevPoint = points2[i - 1]; nextPoint = points2[i + 1]; } } sub(v, nextPoint, prevPoint); scale$2(v, v, smooth); var d0 = distance(point, prevPoint); var d1 = distance(point, nextPoint); var sum2 = d0 + d1; if (sum2 !== 0) { d0 /= sum2; d1 /= sum2; } scale$2(v12, v, -d0); scale$2(v22, v, d1); var cp0 = add([], point, v12); var cp1 = add([], point, v22); if (constraint) { max$1(cp0, cp0, min3); min$1(cp0, cp0, max3); max$1(cp1, cp1, min3); min$1(cp1, cp1, max3); } cps.push(cp0); cps.push(cp1); } if (isLoop) { cps.push(cps.shift()); } return cps; } function buildPath(ctx, shape, closePath) { var smooth = shape.smooth; var points2 = shape.points; if (points2 && points2.length >= 2) { if (smooth && smooth !== "spline") { var controlPoints = smoothBezier(points2, smooth, closePath, shape.smoothConstraint); ctx.moveTo(points2[0][0], points2[0][1]); var len2 = points2.length; for (var i = 0; i < (closePath ? len2 : len2 - 1); i++) { var cp1 = controlPoints[i * 2]; var cp2 = controlPoints[i * 2 + 1]; var p = points2[(i + 1) % len2]; ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]); } } else { if (smooth === "spline") { points2 = smoothSpline(points2, closePath); } ctx.moveTo(points2[0][0], points2[0][1]); for (var i = 1, l = points2.length; i < l; i++) { ctx.lineTo(points2[i][0], points2[i][1]); } } closePath && ctx.closePath(); } } var PolygonShape = function() { function PolygonShape2() { this.points = null; this.smooth = 0; this.smoothConstraint = null; } return PolygonShape2; }(); var Polygon = function(_super) { __extends(Polygon2, _super); function Polygon2(opts) { return _super.call(this, opts) || this; } Polygon2.prototype.getDefaultShape = function() { return new PolygonShape(); }; Polygon2.prototype.buildPath = function(ctx, shape) { buildPath(ctx, shape, true); }; return Polygon2; }(Path$1); Polygon.prototype.type = "polygon"; var Polygon$1 = Polygon; var PolylineShape = function() { function PolylineShape2() { this.points = null; this.percent = 1; this.smooth = 0; this.smoothConstraint = null; } return PolylineShape2; }(); var Polyline$2 = function(_super) { __extends(Polyline2, _super); function Polyline2(opts) { return _super.call(this, opts) || this; } Polyline2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; Polyline2.prototype.getDefaultShape = function() { return new PolylineShape(); }; Polyline2.prototype.buildPath = function(ctx, shape) { buildPath(ctx, shape, false); }; return Polyline2; }(Path$1); Polyline$2.prototype.type = "polyline"; var Polyline$3 = Polyline$2; var subPixelOptimizeOutputShape = {}; var LineShape = function() { function LineShape2() { this.x1 = 0; this.y1 = 0; this.x2 = 0; this.y2 = 0; this.percent = 1; } return LineShape2; }(); var Line$2 = function(_super) { __extends(Line2, _super); function Line2(opts) { return _super.call(this, opts) || this; } Line2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; Line2.prototype.getDefaultShape = function() { return new LineShape(); }; Line2.prototype.buildPath = function(ctx, shape) { var x1; var y1; var x2; var y2; if (this.subPixelOptimize) { var optimizedShape = subPixelOptimizeLine$1(subPixelOptimizeOutputShape, shape, this.style); x1 = optimizedShape.x1; y1 = optimizedShape.y1; x2 = optimizedShape.x2; y2 = optimizedShape.y2; } else { x1 = shape.x1; y1 = shape.y1; x2 = shape.x2; y2 = shape.y2; } var percent = shape.percent; if (percent === 0) { return; } ctx.moveTo(x1, y1); if (percent < 1) { x2 = x1 * (1 - percent) + x2 * percent; y2 = y1 * (1 - percent) + y2 * percent; } ctx.lineTo(x2, y2); }; Line2.prototype.pointAt = function(p) { var shape = this.shape; return [ shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p ]; }; return Line2; }(Path$1); Line$2.prototype.type = "line"; var Line$3 = Line$2; var out = []; var BezierCurveShape = function() { function BezierCurveShape2() { this.x1 = 0; this.y1 = 0; this.x2 = 0; this.y2 = 0; this.cpx1 = 0; this.cpy1 = 0; this.percent = 1; } return BezierCurveShape2; }(); function someVectorAt(shape, t, isTangent) { var cpx2 = shape.cpx2; var cpy2 = shape.cpy2; if (cpx2 === null || cpy2 === null) { return [ (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t) ]; } else { return [ (isTangent ? quadraticDerivativeAt : quadraticAt$1)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt$1)(shape.y1, shape.cpy1, shape.y2, t) ]; } } var BezierCurve = function(_super) { __extends(BezierCurve2, _super); function BezierCurve2(opts) { return _super.call(this, opts) || this; } BezierCurve2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; BezierCurve2.prototype.getDefaultShape = function() { return new BezierCurveShape(); }; BezierCurve2.prototype.buildPath = function(ctx, shape) { var x1 = shape.x1; var y1 = shape.y1; var x2 = shape.x2; var y2 = shape.y2; var cpx1 = shape.cpx1; var cpy1 = shape.cpy1; var cpx2 = shape.cpx2; var cpy2 = shape.cpy2; var percent = shape.percent; if (percent === 0) { return; } ctx.moveTo(x1, y1); if (cpx2 == null || cpy2 == null) { if (percent < 1) { quadraticSubdivide(x1, cpx1, x2, percent, out); cpx1 = out[1]; x2 = out[2]; quadraticSubdivide(y1, cpy1, y2, percent, out); cpy1 = out[1]; y2 = out[2]; } ctx.quadraticCurveTo(cpx1, cpy1, x2, y2); } else { if (percent < 1) { cubicSubdivide(x1, cpx1, cpx2, x2, percent, out); cpx1 = out[1]; cpx2 = out[2]; x2 = out[3]; cubicSubdivide(y1, cpy1, cpy2, y2, percent, out); cpy1 = out[1]; cpy2 = out[2]; y2 = out[3]; } ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); } }; BezierCurve2.prototype.pointAt = function(t) { return someVectorAt(this.shape, t, false); }; BezierCurve2.prototype.tangentAt = function(t) { var p = someVectorAt(this.shape, t, true); return normalize$3(p, p); }; return BezierCurve2; }(Path$1); BezierCurve.prototype.type = "bezier-curve"; var BezierCurve$1 = BezierCurve; var ArcShape = function() { function ArcShape2() { this.cx = 0; this.cy = 0; this.r = 0; this.startAngle = 0; this.endAngle = Math.PI * 2; this.clockwise = true; } return ArcShape2; }(); var Arc = function(_super) { __extends(Arc2, _super); function Arc2(opts) { return _super.call(this, opts) || this; } Arc2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; Arc2.prototype.getDefaultShape = function() { return new ArcShape(); }; Arc2.prototype.buildPath = function(ctx, shape) { var x = shape.cx; var y = shape.cy; var r = Math.max(shape.r, 0); var startAngle = shape.startAngle; var endAngle = shape.endAngle; var clockwise = shape.clockwise; var unitX = Math.cos(startAngle); var unitY = Math.sin(startAngle); ctx.moveTo(unitX * r + x, unitY * r + y); ctx.arc(x, y, r, startAngle, endAngle, !clockwise); }; return Arc2; }(Path$1); Arc.prototype.type = "arc"; var Arc$1 = Arc; var CompoundPath = function(_super) { __extends(CompoundPath2, _super); function CompoundPath2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "compound"; return _this; } CompoundPath2.prototype._updatePathDirty = function() { var paths = this.shape.paths; var dirtyPath = this.shapeChanged(); for (var i = 0; i < paths.length; i++) { dirtyPath = dirtyPath || paths[i].shapeChanged(); } if (dirtyPath) { this.dirtyShape(); } }; CompoundPath2.prototype.beforeBrush = function() { this._updatePathDirty(); var paths = this.shape.paths || []; var scale2 = this.getGlobalScale(); for (var i = 0; i < paths.length; i++) { if (!paths[i].path) { paths[i].createPathProxy(); } paths[i].path.setScale(scale2[0], scale2[1], paths[i].segmentIgnoreThreshold); } }; CompoundPath2.prototype.buildPath = function(ctx, shape) { var paths = shape.paths || []; for (var i = 0; i < paths.length; i++) { paths[i].buildPath(ctx, paths[i].shape, true); } }; CompoundPath2.prototype.afterBrush = function() { var paths = this.shape.paths || []; for (var i = 0; i < paths.length; i++) { paths[i].pathUpdated(); } }; CompoundPath2.prototype.getBoundingRect = function() { this._updatePathDirty.call(this); return Path$1.prototype.getBoundingRect.call(this); }; return CompoundPath2; }(Path$1); var CompoundPath$1 = CompoundPath; var Gradient = function() { function Gradient2(colorStops) { this.colorStops = colorStops || []; } Gradient2.prototype.addColorStop = function(offset, color2) { this.colorStops.push({ offset, color: color2 }); }; return Gradient2; }(); var Gradient$1 = Gradient; var LinearGradient = function(_super) { __extends(LinearGradient2, _super); function LinearGradient2(x, y, x2, y2, colorStops, globalCoord) { var _this = _super.call(this, colorStops) || this; _this.x = x == null ? 0 : x; _this.y = y == null ? 0 : y; _this.x2 = x2 == null ? 1 : x2; _this.y2 = y2 == null ? 0 : y2; _this.type = "linear"; _this.global = globalCoord || false; return _this; } return LinearGradient2; }(Gradient$1); var LinearGradient$1 = LinearGradient; var RadialGradient = function(_super) { __extends(RadialGradient2, _super); function RadialGradient2(x, y, r, colorStops, globalCoord) { var _this = _super.call(this, colorStops) || this; _this.x = x == null ? 0.5 : x; _this.y = y == null ? 0.5 : y; _this.r = r == null ? 0.5 : r; _this.type = "radial"; _this.global = globalCoord || false; return _this; } return RadialGradient2; }(Gradient$1); var RadialGradient$1 = RadialGradient; var extent = [0, 0]; var extent2 = [0, 0]; var minTv = new Point$1(); var maxTv = new Point$1(); var OrientedBoundingRect = function() { function OrientedBoundingRect2(rect, transform2) { this._corners = []; this._axes = []; this._origin = [0, 0]; for (var i = 0; i < 4; i++) { this._corners[i] = new Point$1(); } for (var i = 0; i < 2; i++) { this._axes[i] = new Point$1(); } if (rect) { this.fromBoundingRect(rect, transform2); } } OrientedBoundingRect2.prototype.fromBoundingRect = function(rect, transform2) { var corners = this._corners; var axes = this._axes; var x = rect.x; var y = rect.y; var x2 = x + rect.width; var y2 = y + rect.height; corners[0].set(x, y); corners[1].set(x2, y); corners[2].set(x2, y2); corners[3].set(x, y2); if (transform2) { for (var i = 0; i < 4; i++) { corners[i].transform(transform2); } } Point$1.sub(axes[0], corners[1], corners[0]); Point$1.sub(axes[1], corners[3], corners[0]); axes[0].normalize(); axes[1].normalize(); for (var i = 0; i < 2; i++) { this._origin[i] = axes[i].dot(corners[0]); } }; OrientedBoundingRect2.prototype.intersect = function(other, mtv) { var overlapped = true; var noMtv = !mtv; minTv.set(Infinity, Infinity); maxTv.set(0, 0); if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) { overlapped = false; if (noMtv) { return overlapped; } } if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) { overlapped = false; if (noMtv) { return overlapped; } } if (!noMtv) { Point$1.copy(mtv, overlapped ? minTv : maxTv); } return overlapped; }; OrientedBoundingRect2.prototype._intersectCheckOneSide = function(self2, other, minTv2, maxTv2, noMtv, inverse) { var overlapped = true; for (var i = 0; i < 2; i++) { var axis = this._axes[i]; this._getProjMinMaxOnAxis(i, self2._corners, extent); this._getProjMinMaxOnAxis(i, other._corners, extent2); if (extent[1] < extent2[0] || extent[0] > extent2[1]) { overlapped = false; if (noMtv) { return overlapped; } var dist0 = Math.abs(extent2[0] - extent[1]); var dist1 = Math.abs(extent[0] - extent2[1]); if (Math.min(dist0, dist1) > maxTv2.len()) { if (dist0 < dist1) { Point$1.scale(maxTv2, axis, -dist0 * inverse); } else { Point$1.scale(maxTv2, axis, dist1 * inverse); } } } else if (minTv2) { var dist0 = Math.abs(extent2[0] - extent[1]); var dist1 = Math.abs(extent[0] - extent2[1]); if (Math.min(dist0, dist1) < minTv2.len()) { if (dist0 < dist1) { Point$1.scale(minTv2, axis, dist0 * inverse); } else { Point$1.scale(minTv2, axis, -dist1 * inverse); } } } } return overlapped; }; OrientedBoundingRect2.prototype._getProjMinMaxOnAxis = function(dim, corners, out2) { var axis = this._axes[dim]; var origin = this._origin; var proj = corners[0].dot(axis) + origin[dim]; var min3 = proj; var max3 = proj; for (var i = 1; i < corners.length; i++) { var proj_1 = corners[i].dot(axis) + origin[dim]; min3 = Math.min(proj_1, min3); max3 = Math.max(proj_1, max3); } out2[0] = min3; out2[1] = max3; }; return OrientedBoundingRect2; }(); var OrientedBoundingRect$1 = OrientedBoundingRect; var m = []; var IncrementalDisplayable = function(_super) { __extends(IncrementalDisplayable2, _super); function IncrementalDisplayable2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.notClear = true; _this.incremental = true; _this._displayables = []; _this._temporaryDisplayables = []; _this._cursor = 0; return _this; } IncrementalDisplayable2.prototype.traverse = function(cb, context) { cb.call(context, this); }; IncrementalDisplayable2.prototype.useStyle = function() { this.style = {}; }; IncrementalDisplayable2.prototype.getCursor = function() { return this._cursor; }; IncrementalDisplayable2.prototype.innerAfterBrush = function() { this._cursor = this._displayables.length; }; IncrementalDisplayable2.prototype.clearDisplaybles = function() { this._displayables = []; this._temporaryDisplayables = []; this._cursor = 0; this.markRedraw(); this.notClear = false; }; IncrementalDisplayable2.prototype.clearTemporalDisplayables = function() { this._temporaryDisplayables = []; }; IncrementalDisplayable2.prototype.addDisplayable = function(displayable, notPersistent) { if (notPersistent) { this._temporaryDisplayables.push(displayable); } else { this._displayables.push(displayable); } this.markRedraw(); }; IncrementalDisplayable2.prototype.addDisplayables = function(displayables, notPersistent) { notPersistent = notPersistent || false; for (var i = 0; i < displayables.length; i++) { this.addDisplayable(displayables[i], notPersistent); } }; IncrementalDisplayable2.prototype.getDisplayables = function() { return this._displayables; }; IncrementalDisplayable2.prototype.getTemporalDisplayables = function() { return this._temporaryDisplayables; }; IncrementalDisplayable2.prototype.eachPendingDisplayable = function(cb) { for (var i = this._cursor; i < this._displayables.length; i++) { cb && cb(this._displayables[i]); } for (var i = 0; i < this._temporaryDisplayables.length; i++) { cb && cb(this._temporaryDisplayables[i]); } }; IncrementalDisplayable2.prototype.update = function() { this.updateTransform(); for (var i = this._cursor; i < this._displayables.length; i++) { var displayable = this._displayables[i]; displayable.parent = this; displayable.update(); displayable.parent = null; } for (var i = 0; i < this._temporaryDisplayables.length; i++) { var displayable = this._temporaryDisplayables[i]; displayable.parent = this; displayable.update(); displayable.parent = null; } }; IncrementalDisplayable2.prototype.getBoundingRect = function() { if (!this._rect) { var rect = new BoundingRect$1(Infinity, Infinity, -Infinity, -Infinity); for (var i = 0; i < this._displayables.length; i++) { var displayable = this._displayables[i]; var childRect = displayable.getBoundingRect().clone(); if (displayable.needLocalTransform()) { childRect.applyTransform(displayable.getLocalTransform(m)); } rect.union(childRect); } this._rect = rect; } return this._rect; }; IncrementalDisplayable2.prototype.contain = function(x, y) { var localPos = this.transformCoordToLocal(x, y); var rect = this.getBoundingRect(); if (rect.contain(localPos[0], localPos[1])) { for (var i = 0; i < this._displayables.length; i++) { var displayable = this._displayables[i]; if (displayable.contain(x, y)) { return true; } } } return false; }; return IncrementalDisplayable2; }(Displayable$1); var IncrementalDisplayable$1 = IncrementalDisplayable; var transitionStore = makeInner(); function getAnimationConfig(animationType, animatableModel, dataIndex, extraOpts, extraDelayParams) { var animationPayload; if (animatableModel && animatableModel.ecModel) { var updatePayload = animatableModel.ecModel.getUpdatePayload(); animationPayload = updatePayload && updatePayload.animation; } var animationEnabled = animatableModel && animatableModel.isAnimationEnabled(); var isUpdate = animationType === "update"; if (animationEnabled) { var duration = void 0; var easing2 = void 0; var delay = void 0; if (extraOpts) { duration = retrieve2(extraOpts.duration, 200); easing2 = retrieve2(extraOpts.easing, "cubicOut"); delay = 0; } else { duration = animatableModel.getShallow(isUpdate ? "animationDurationUpdate" : "animationDuration"); easing2 = animatableModel.getShallow(isUpdate ? "animationEasingUpdate" : "animationEasing"); delay = animatableModel.getShallow(isUpdate ? "animationDelayUpdate" : "animationDelay"); } if (animationPayload) { animationPayload.duration != null && (duration = animationPayload.duration); animationPayload.easing != null && (easing2 = animationPayload.easing); animationPayload.delay != null && (delay = animationPayload.delay); } if (typeof delay === "function") { delay = delay(dataIndex, extraDelayParams); } if (typeof duration === "function") { duration = duration(dataIndex); } var config = { duration: duration || 0, delay, easing: easing2 }; return config; } else { return null; } } function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) { var isFrom = false; var removeOpt; if (typeof dataIndex === "function") { during = cb; cb = dataIndex; dataIndex = null; } else if (isObject$3(dataIndex)) { cb = dataIndex.cb; during = dataIndex.during; isFrom = dataIndex.isFrom; removeOpt = dataIndex.removeOpt; dataIndex = dataIndex.dataIndex; } var isRemove = animationType === "remove"; if (!isRemove) { el.stopAnimation("remove"); } var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null); if (animationConfig && animationConfig.duration > 0) { var duration = animationConfig.duration; var animationDelay = animationConfig.delay; var animationEasing = animationConfig.easing; var animateConfig = { duration, delay: animationDelay || 0, easing: animationEasing, done: cb, force: !!cb || !!during, setToFinal: !isRemove, scope: animationType, during }; isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig); } else { el.stopAnimation(); !isFrom && el.attr(props); during && during(1); cb && cb(); } } function updateProps$1(el, props, animatableModel, dataIndex, cb, during) { animateOrSetProps("update", el, props, animatableModel, dataIndex, cb, during); } function initProps(el, props, animatableModel, dataIndex, cb, during) { animateOrSetProps("init", el, props, animatableModel, dataIndex, cb, during); } function isElementRemoved(el) { if (!el.__zr) { return true; } for (var i = 0; i < el.animators.length; i++) { var animator = el.animators[i]; if (animator.scope === "remove") { return true; } } return false; } function removeElement(el, props, animatableModel, dataIndex, cb, during) { if (isElementRemoved(el)) { return; } animateOrSetProps("remove", el, props, animatableModel, dataIndex, cb, during); } function fadeOutDisplayable(el, animatableModel, dataIndex, done) { el.removeTextContent(); el.removeTextGuideLine(); removeElement(el, { style: { opacity: 0 } }, animatableModel, dataIndex, done); } function removeElementWithFadeOut(el, animatableModel, dataIndex) { function doRemove() { el.parent && el.parent.remove(el); } if (!el.isGroup) { fadeOutDisplayable(el, animatableModel, dataIndex, doRemove); } else { el.traverse(function(disp) { if (!disp.isGroup) { fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove); } }); } } function saveOldStyle(el) { transitionStore(el).oldStyle = el.style; } function getOldStyle(el) { return transitionStore(el).oldStyle; } var mathMax$6 = Math.max; var mathMin$6 = Math.min; var _customShapeMap = {}; function extendShape(opts) { return Path$1.extend(opts); } var extendPathFromString = extendFromString; function extendPath(pathData, opts) { return extendPathFromString(pathData, opts); } function registerShape(name, ShapeClass) { _customShapeMap[name] = ShapeClass; } function getShapeClass(name) { if (_customShapeMap.hasOwnProperty(name)) { return _customShapeMap[name]; } } function makePath(pathData, opts, rect, layout2) { var path = createFromString(pathData, opts); if (rect) { if (layout2 === "center") { rect = centerGraphic(rect, path.getBoundingRect()); } resizePath(path, rect); } return path; } function makeImage(imageUrl, rect, layout2) { var zrImg = new ZRImage$1({ style: { image: imageUrl, x: rect.x, y: rect.y, width: rect.width, height: rect.height }, onload: function(img) { if (layout2 === "center") { var boundingRect = { width: img.width, height: img.height }; zrImg.setStyle(centerGraphic(rect, boundingRect)); } } }); return zrImg; } function centerGraphic(rect, boundingRect) { var aspect = boundingRect.width / boundingRect.height; var width = rect.height * aspect; var height; if (width <= rect.width) { height = rect.height; } else { width = rect.width; height = width / aspect; } var cx = rect.x + rect.width / 2; var cy = rect.y + rect.height / 2; return { x: cx - width / 2, y: cy - height / 2, width, height }; } var mergePath = mergePath$1; function resizePath(path, rect) { if (!path.applyTransform) { return; } var pathRect = path.getBoundingRect(); var m2 = pathRect.calculateTransform(rect); path.applyTransform(m2); } function subPixelOptimizeLine(param) { subPixelOptimizeLine$1(param.shape, param.shape, param.style); return param; } function subPixelOptimizeRect(param) { subPixelOptimizeRect$1(param.shape, param.shape, param.style); return param; } var subPixelOptimize = subPixelOptimize$1; function getTransform$1(target, ancestor) { var mat = identity([]); while (target && target !== ancestor) { mul(mat, target.getLocalTransform(), mat); target = target.parent; } return mat; } function applyTransform(target, transform2, invert$1) { if (transform2 && !isArrayLike(transform2)) { transform2 = Transformable$1.getLocalTransform(transform2); } if (invert$1) { transform2 = invert([], transform2); } return applyTransform$1([], target, transform2); } function transformDirection(direction, transform2, invert2) { var hBase = transform2[4] === 0 || transform2[5] === 0 || transform2[0] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[0]); var vBase = transform2[4] === 0 || transform2[5] === 0 || transform2[2] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[2]); var vertex = [direction === "left" ? -hBase : direction === "right" ? hBase : 0, direction === "top" ? -vBase : direction === "bottom" ? vBase : 0]; vertex = applyTransform(vertex, transform2, invert2); return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? "right" : "left" : vertex[1] > 0 ? "bottom" : "top"; } function isNotGroup(el) { return !el.isGroup; } function isPath$1(el) { return el.shape != null; } function groupTransition(g1, g2, animatableModel) { if (!g1 || !g2) { return; } function getElMap(g) { var elMap = {}; g.traverse(function(el) { if (isNotGroup(el) && el.anid) { elMap[el.anid] = el; } }); return elMap; } function getAnimatableProps(el) { var obj = { x: el.x, y: el.y, rotation: el.rotation }; if (isPath$1(el)) { obj.shape = extend({}, el.shape); } return obj; } var elMap1 = getElMap(g1); g2.traverse(function(el) { if (isNotGroup(el) && el.anid) { var oldEl = elMap1[el.anid]; if (oldEl) { var newProp = getAnimatableProps(el); el.attr(getAnimatableProps(oldEl)); updateProps$1(el, newProp, animatableModel, getECData(el).dataIndex); } } }); } function clipPointsByRect(points2, rect) { return map$1(points2, function(point) { var x = point[0]; x = mathMax$6(x, rect.x); x = mathMin$6(x, rect.x + rect.width); var y = point[1]; y = mathMax$6(y, rect.y); y = mathMin$6(y, rect.y + rect.height); return [x, y]; }); } function clipRectByRect(targetRect, rect) { var x = mathMax$6(targetRect.x, rect.x); var x2 = mathMin$6(targetRect.x + targetRect.width, rect.x + rect.width); var y = mathMax$6(targetRect.y, rect.y); var y2 = mathMin$6(targetRect.y + targetRect.height, rect.y + rect.height); if (x2 >= x && y2 >= y) { return { x, y, width: x2 - x, height: y2 - y }; } } function createIcon(iconStr, opt, rect) { var innerOpts = extend({ rectHover: true }, opt); var style = innerOpts.style = { strokeNoScale: true }; rect = rect || { x: -1, y: -1, width: 2, height: 2 }; if (iconStr) { return iconStr.indexOf("image://") === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new ZRImage$1(innerOpts)) : makePath(iconStr.replace("path://", ""), innerOpts, rect, "center"); } } function linePolygonIntersect(a1x, a1y, a2x, a2y, points2) { for (var i = 0, p2 = points2[points2.length - 1]; i < points2.length; i++) { var p = points2[i]; if (lineLineIntersect$1(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) { return true; } p2 = p; } } function lineLineIntersect$1(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { var mx = a2x - a1x; var my = a2y - a1y; var nx = b2x - b1x; var ny = b2y - b1y; var nmCrossProduct = crossProduct2d$1(nx, ny, mx, my); if (nearZero(nmCrossProduct)) { return false; } var b1a1x = a1x - b1x; var b1a1y = a1y - b1y; var q = crossProduct2d$1(b1a1x, b1a1y, mx, my) / nmCrossProduct; if (q < 0 || q > 1) { return false; } var p = crossProduct2d$1(b1a1x, b1a1y, nx, ny) / nmCrossProduct; if (p < 0 || p > 1) { return false; } return true; } function crossProduct2d$1(x1, y1, x2, y2) { return x1 * y2 - x2 * y1; } function nearZero(val) { return val <= 1e-6 && val >= -1e-6; } function setTooltipConfig(opt) { var itemTooltipOption = opt.itemTooltipOption; var componentModel = opt.componentModel; var itemName = opt.itemName; var itemTooltipOptionObj = isString(itemTooltipOption) ? { formatter: itemTooltipOption } : itemTooltipOption; var mainType = componentModel.mainType; var componentIndex = componentModel.componentIndex; var formatterParams = { componentType: mainType, name: itemName, $vars: ["name"] }; formatterParams[mainType + "Index"] = componentIndex; var formatterParamsExtra = opt.formatterParamsExtra; if (formatterParamsExtra) { each$g(keys(formatterParamsExtra), function(key2) { if (!hasOwn(formatterParams, key2)) { formatterParams[key2] = formatterParamsExtra[key2]; formatterParams.$vars.push(key2); } }); } var ecData = getECData(opt.el); ecData.componentMainType = mainType; ecData.componentIndex = componentIndex; ecData.tooltipConfig = { name: itemName, option: defaults({ content: itemName, formatterParams }, itemTooltipOptionObj) }; } registerShape("circle", Circle$1); registerShape("ellipse", Ellipse$1); registerShape("sector", Sector$1); registerShape("ring", Ring$1); registerShape("polygon", Polygon$1); registerShape("polyline", Polyline$3); registerShape("rect", Rect$3); registerShape("line", Line$3); registerShape("bezierCurve", BezierCurve$1); registerShape("arc", Arc$1); var graphic$1 = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", updateProps: updateProps$1, initProps, removeElement, removeElementWithFadeOut, isElementRemoved, extendShape, extendPath, registerShape, getShapeClass, makePath, makeImage, mergePath, resizePath, subPixelOptimizeLine, subPixelOptimizeRect, subPixelOptimize, getTransform: getTransform$1, applyTransform, transformDirection, groupTransition, clipPointsByRect, clipRectByRect, createIcon, linePolygonIntersect, lineLineIntersect: lineLineIntersect$1, setTooltipConfig, Group: Group$4, Image: ZRImage$1, Text: ZRText$1, Circle: Circle$1, Ellipse: Ellipse$1, Sector: Sector$1, Ring: Ring$1, Polygon: Polygon$1, Polyline: Polyline$3, Rect: Rect$3, Line: Line$3, BezierCurve: BezierCurve$1, Arc: Arc$1, IncrementalDisplayable: IncrementalDisplayable$1, CompoundPath: CompoundPath$1, LinearGradient: LinearGradient$1, RadialGradient: RadialGradient$1, BoundingRect: BoundingRect$1, OrientedBoundingRect: OrientedBoundingRect$1, Point: Point$1, Path: Path$1 }); var EMPTY_OBJ = {}; function setLabelText(label, labelTexts) { for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; var text = labelTexts[stateName]; var state = label.ensureState(stateName); state.style = state.style || {}; state.style.text = text; } var oldStates = label.currentStates.slice(); label.clearStates(true); label.setStyle({ text: labelTexts.normal }); label.useStates(oldStates, true); } function getLabelText(opt, stateModels, interpolatedValue) { var labelFetcher = opt.labelFetcher; var labelDataIndex = opt.labelDataIndex; var labelDimIndex = opt.labelDimIndex; var normalModel = stateModels.normal; var baseText; if (labelFetcher) { baseText = labelFetcher.getFormattedLabel(labelDataIndex, "normal", null, labelDimIndex, normalModel && normalModel.get("formatter"), interpolatedValue != null ? { interpolatedValue } : null); } if (baseText == null) { baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText; } var statesText = { normal: baseText }; for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; var stateModel = stateModels[stateName]; statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get("formatter")) : null, baseText); } return statesText; } function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) { opt = opt || EMPTY_OBJ; var isSetOnText = targetEl instanceof ZRText$1; var needsCreateText = false; for (var i = 0; i < DISPLAY_STATES.length; i++) { var stateModel = labelStatesModels[DISPLAY_STATES[i]]; if (stateModel && stateModel.getShallow("show")) { needsCreateText = true; break; } } var textContent = isSetOnText ? targetEl : targetEl.getTextContent(); if (needsCreateText) { if (!isSetOnText) { if (!textContent) { textContent = new ZRText$1(); targetEl.setTextContent(textContent); } if (targetEl.stateProxy) { textContent.stateProxy = targetEl.stateProxy; } } var labelStatesTexts = getLabelText(opt, labelStatesModels); var normalModel = labelStatesModels.normal; var showNormal = !!normalModel.getShallow("show"); var normalStyle = createTextStyle$1(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText); normalStyle.text = labelStatesTexts.normal; if (!isSetOnText) { targetEl.setTextConfig(createTextConfig(normalModel, opt, false)); } for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; var stateModel = labelStatesModels[stateName]; if (stateModel) { var stateObj = textContent.ensureState(stateName); var stateShow = !!retrieve2(stateModel.getShallow("show"), showNormal); if (stateShow !== showNormal) { stateObj.ignore = !stateShow; } stateObj.style = createTextStyle$1(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText); stateObj.style.text = labelStatesTexts[stateName]; if (!isSetOnText) { var targetElEmphasisState = targetEl.ensureState(stateName); targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true); } } } textContent.silent = !!normalModel.getShallow("silent"); if (textContent.style.x != null) { normalStyle.x = textContent.style.x; } if (textContent.style.y != null) { normalStyle.y = textContent.style.y; } textContent.ignore = !showNormal; textContent.useStyle(normalStyle); textContent.dirty(); if (opt.enableTextSetter) { labelInner(textContent).setLabelText = function(interpolatedValue) { var labelStatesTexts2 = getLabelText(opt, labelStatesModels, interpolatedValue); setLabelText(textContent, labelStatesTexts2); }; } } else if (textContent) { textContent.ignore = true; } targetEl.dirty(); } function getLabelStatesModels(itemModel, labelName) { labelName = labelName || "label"; var statesModels = { normal: itemModel.getModel(labelName) }; for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; statesModels[stateName] = itemModel.getModel([stateName, labelName]); } return statesModels; } function createTextStyle$1(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) { var textStyle = {}; setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached); specifiedTextStyle && extend(textStyle, specifiedTextStyle); return textStyle; } function createTextConfig(textStyleModel, opt, isNotNormal) { opt = opt || {}; var textConfig = {}; var labelPosition; var labelRotate = textStyleModel.getShallow("rotate"); var labelDistance = retrieve2(textStyleModel.getShallow("distance"), isNotNormal ? null : 5); var labelOffset = textStyleModel.getShallow("offset"); labelPosition = textStyleModel.getShallow("position") || (isNotNormal ? null : "inside"); labelPosition === "outside" && (labelPosition = opt.defaultOutsidePosition || "top"); if (labelPosition != null) { textConfig.position = labelPosition; } if (labelOffset != null) { textConfig.offset = labelOffset; } if (labelRotate != null) { labelRotate *= Math.PI / 180; textConfig.rotation = labelRotate; } if (labelDistance != null) { textConfig.distance = labelDistance; } textConfig.outsideFill = textStyleModel.get("color") === "inherit" ? opt.inheritColor || null : "auto"; return textConfig; } function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) { opt = opt || EMPTY_OBJ; var ecModel = textStyleModel.ecModel; var globalTextStyle = ecModel && ecModel.option.textStyle; var richItemNames = getRichItemNames(textStyleModel); var richResult; if (richItemNames) { richResult = {}; for (var name_1 in richItemNames) { if (richItemNames.hasOwnProperty(name_1)) { var richTextStyle = textStyleModel.getModel(["rich", name_1]); setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true); } } } if (richResult) { textStyle.rich = richResult; } var overflow = textStyleModel.get("overflow"); if (overflow) { textStyle.overflow = overflow; } var margin = textStyleModel.get("minMargin"); if (margin != null) { textStyle.margin = margin; } setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false); } function getRichItemNames(textStyleModel) { var richItemNameMap; while (textStyleModel && textStyleModel !== textStyleModel.ecModel) { var rich = (textStyleModel.option || EMPTY_OBJ).rich; if (rich) { richItemNameMap = richItemNameMap || {}; var richKeys = keys(rich); for (var i = 0; i < richKeys.length; i++) { var richKey = richKeys[i]; richItemNameMap[richKey] = 1; } } textStyleModel = textStyleModel.parentModel; } return richItemNameMap; } var TEXT_PROPS_WITH_GLOBAL = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"]; var TEXT_PROPS_SELF = ["align", "lineHeight", "width", "height", "tag", "verticalAlign"]; var TEXT_PROPS_BOX = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) { globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ; var inheritColor = opt && opt.inheritColor; var fillColor = textStyleModel.getShallow("color"); var strokeColor = textStyleModel.getShallow("textBorderColor"); var opacity = retrieve2(textStyleModel.getShallow("opacity"), globalTextStyle.opacity); if (fillColor === "inherit" || fillColor === "auto") { if (inheritColor) { fillColor = inheritColor; } else { fillColor = null; } } if (strokeColor === "inherit" || strokeColor === "auto") { if (inheritColor) { strokeColor = inheritColor; } else { strokeColor = null; } } if (!isAttached) { fillColor = fillColor || globalTextStyle.color; strokeColor = strokeColor || globalTextStyle.textBorderColor; } if (fillColor != null) { textStyle.fill = fillColor; } if (strokeColor != null) { textStyle.stroke = strokeColor; } var textBorderWidth = retrieve2(textStyleModel.getShallow("textBorderWidth"), globalTextStyle.textBorderWidth); if (textBorderWidth != null) { textStyle.lineWidth = textBorderWidth; } var textBorderType = retrieve2(textStyleModel.getShallow("textBorderType"), globalTextStyle.textBorderType); if (textBorderType != null) { textStyle.lineDash = textBorderType; } var textBorderDashOffset = retrieve2(textStyleModel.getShallow("textBorderDashOffset"), globalTextStyle.textBorderDashOffset); if (textBorderDashOffset != null) { textStyle.lineDashOffset = textBorderDashOffset; } if (!isNotNormal && opacity == null && !inRich) { opacity = opt && opt.defaultOpacity; } if (opacity != null) { textStyle.opacity = opacity; } if (!isNotNormal && !isAttached) { if (textStyle.fill == null && opt.inheritColor) { textStyle.fill = opt.inheritColor; } } for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) { var key2 = TEXT_PROPS_WITH_GLOBAL[i]; var val = retrieve2(textStyleModel.getShallow(key2), globalTextStyle[key2]); if (val != null) { textStyle[key2] = val; } } for (var i = 0; i < TEXT_PROPS_SELF.length; i++) { var key2 = TEXT_PROPS_SELF[i]; var val = textStyleModel.getShallow(key2); if (val != null) { textStyle[key2] = val; } } if (textStyle.verticalAlign == null) { var baseline = textStyleModel.getShallow("baseline"); if (baseline != null) { textStyle.verticalAlign = baseline; } } if (!isBlock || !opt.disableBox) { for (var i = 0; i < TEXT_PROPS_BOX.length; i++) { var key2 = TEXT_PROPS_BOX[i]; var val = textStyleModel.getShallow(key2); if (val != null) { textStyle[key2] = val; } } var borderType = textStyleModel.getShallow("borderType"); if (borderType != null) { textStyle.borderDash = borderType; } if ((textStyle.backgroundColor === "auto" || textStyle.backgroundColor === "inherit") && inheritColor) { textStyle.backgroundColor = inheritColor; } if ((textStyle.borderColor === "auto" || textStyle.borderColor === "inherit") && inheritColor) { textStyle.borderColor = inheritColor; } } } function getFont(opt, ecModel) { var gTextStyleModel = ecModel && ecModel.getModel("textStyle"); return trim$1([ opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow("fontStyle") || "", opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow("fontWeight") || "", (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow("fontSize") || 12) + "px", opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow("fontFamily") || "sans-serif" ].join(" ")); } var labelInner = makeInner(); function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) { if (!label) { return; } var obj = labelInner(label); obj.prevValue = obj.value; obj.value = value; var normalLabelModel = labelStatesModels.normal; obj.valueAnimation = normalLabelModel.get("valueAnimation"); if (obj.valueAnimation) { obj.precision = normalLabelModel.get("precision"); obj.defaultInterpolatedText = getDefaultText; obj.statesModels = labelStatesModels; } } function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) { var labelInnerStore = labelInner(textEl); if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) { return; } var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue); var targetValue = labelInnerStore.value; function during(percent) { var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent); labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated; var labelText = getLabelText({ labelDataIndex: dataIndex, labelFetcher, defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + "" }, labelInnerStore.statesModels, interpolated); setLabelText(textEl, labelText); } textEl.percent = 0; (labelInnerStore.prevValue == null ? initProps : updateProps$1)(textEl, { percent: 1 }, animatableModel, dataIndex, null, during); } var PATH_COLOR = ["textStyle", "color"]; var tmpRichText = new ZRText$1(); var TextStyleMixin = function() { function TextStyleMixin2() { } TextStyleMixin2.prototype.getTextColor = function(isEmphasis) { var ecModel = this.ecModel; return this.getShallow("color") || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null); }; TextStyleMixin2.prototype.getFont = function() { return getFont({ fontStyle: this.getShallow("fontStyle"), fontWeight: this.getShallow("fontWeight"), fontSize: this.getShallow("fontSize"), fontFamily: this.getShallow("fontFamily") }, this.ecModel); }; TextStyleMixin2.prototype.getTextRect = function(text) { tmpRichText.useStyle({ text, fontStyle: this.getShallow("fontStyle"), fontWeight: this.getShallow("fontWeight"), fontSize: this.getShallow("fontSize"), fontFamily: this.getShallow("fontFamily"), verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline"), padding: this.getShallow("padding"), lineHeight: this.getShallow("lineHeight"), rich: this.getShallow("rich") }); tmpRichText.update(); return tmpRichText.getBoundingRect(); }; return TextStyleMixin2; }(); var TextStyleMixin$1 = TextStyleMixin; var LINE_STYLE_KEY_MAP = [ ["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["lineDash", "type"], ["lineDashOffset", "dashOffset"], ["lineCap", "cap"], ["lineJoin", "join"], ["miterLimit"] ]; var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP); var LineStyleMixin = function() { function LineStyleMixin2() { } LineStyleMixin2.prototype.getLineStyle = function(excludes) { return getLineStyle(this, excludes); }; return LineStyleMixin2; }(); var ITEM_STYLE_KEY_MAP = [ ["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["lineDash", "borderType"], ["lineDashOffset", "borderDashOffset"], ["lineCap", "borderCap"], ["lineJoin", "borderJoin"], ["miterLimit", "borderMiterLimit"] ]; var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP); var ItemStyleMixin = function() { function ItemStyleMixin2() { } ItemStyleMixin2.prototype.getItemStyle = function(excludes, includes) { return getItemStyle(this, excludes, includes); }; return ItemStyleMixin2; }(); var Model = function() { function Model2(option, parentModel, ecModel) { this.parentModel = parentModel; this.ecModel = ecModel; this.option = option; } Model2.prototype.init = function(option, parentModel, ecModel) { var rest = []; for (var _i = 3; _i < arguments.length; _i++) { rest[_i - 3] = arguments[_i]; } }; Model2.prototype.mergeOption = function(option, ecModel) { merge(this.option, option, true); }; Model2.prototype.get = function(path, ignoreParent) { if (path == null) { return this.option; } return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel); }; Model2.prototype.getShallow = function(key2, ignoreParent) { var option = this.option; var val = option == null ? option : option[key2]; if (val == null && !ignoreParent) { var parentModel = this.parentModel; if (parentModel) { val = parentModel.getShallow(key2); } } return val; }; Model2.prototype.getModel = function(path, parentModel) { var hasPath = path != null; var pathFinal = hasPath ? this.parsePath(path) : null; var obj = hasPath ? this._doGet(pathFinal) : this.option; parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal)); return new Model2(obj, parentModel, this.ecModel); }; Model2.prototype.isEmpty = function() { return this.option == null; }; Model2.prototype.restoreData = function() { }; Model2.prototype.clone = function() { var Ctor = this.constructor; return new Ctor(clone$4(this.option)); }; Model2.prototype.parsePath = function(path) { if (typeof path === "string") { return path.split("."); } return path; }; Model2.prototype.resolveParentPath = function(path) { return path; }; Model2.prototype.isAnimationEnabled = function() { if (!env$1.node && this.option) { if (this.option.animation != null) { return !!this.option.animation; } else if (this.parentModel) { return this.parentModel.isAnimationEnabled(); } } }; Model2.prototype._doGet = function(pathArr, parentModel) { var obj = this.option; if (!pathArr) { return obj; } for (var i = 0; i < pathArr.length; i++) { if (!pathArr[i]) { continue; } obj = obj && typeof obj === "object" ? obj[pathArr[i]] : null; if (obj == null) { break; } } if (obj == null && parentModel) { obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel); } return obj; }; return Model2; }(); enableClassExtend(Model); enableClassCheck(Model); mixin(Model, LineStyleMixin); mixin(Model, ItemStyleMixin); mixin(Model, AreaStyleMixin); mixin(Model, TextStyleMixin$1); var Model$1 = Model; var base = Math.round(Math.random() * 10); function getUID(type) { return [type || "", base++].join("_"); } function enableSubTypeDefaulter(target) { var subTypeDefaulters = {}; target.registerSubTypeDefaulter = function(componentType, defaulter) { var componentTypeInfo = parseClassType(componentType); subTypeDefaulters[componentTypeInfo.main] = defaulter; }; target.determineSubType = function(componentType, option) { var type = option.type; if (!type) { var componentTypeMain = parseClassType(componentType).main; if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) { type = subTypeDefaulters[componentTypeMain](option); } } return type; }; } function enableTopologicalTravel(entity, dependencyGetter) { entity.topologicalTravel = function(targetNameList, fullNameList, callback, context) { if (!targetNameList.length) { return; } var result = makeDepndencyGraph(fullNameList); var graph = result.graph; var noEntryList = result.noEntryList; var targetNameSet = {}; each$g(targetNameList, function(name) { targetNameSet[name] = true; }); while (noEntryList.length) { var currComponentType = noEntryList.pop(); var currVertex = graph[currComponentType]; var isInTargetNameSet = !!targetNameSet[currComponentType]; if (isInTargetNameSet) { callback.call(context, currComponentType, currVertex.originalDeps.slice()); delete targetNameSet[currComponentType]; } each$g(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge); } each$g(targetNameSet, function() { var errMsg = ""; throw new Error(errMsg); }); function removeEdge(succComponentType) { graph[succComponentType].entryCount--; if (graph[succComponentType].entryCount === 0) { noEntryList.push(succComponentType); } } function removeEdgeAndAdd(succComponentType) { targetNameSet[succComponentType] = true; removeEdge(succComponentType); } }; function makeDepndencyGraph(fullNameList) { var graph = {}; var noEntryList = []; each$g(fullNameList, function(name) { var thisItem = createDependencyGraphItem(graph, name); var originalDeps = thisItem.originalDeps = dependencyGetter(name); var availableDeps = getAvailableDependencies(originalDeps, fullNameList); thisItem.entryCount = availableDeps.length; if (thisItem.entryCount === 0) { noEntryList.push(name); } each$g(availableDeps, function(dependentName) { if (indexOf(thisItem.predecessor, dependentName) < 0) { thisItem.predecessor.push(dependentName); } var thatItem = createDependencyGraphItem(graph, dependentName); if (indexOf(thatItem.successor, dependentName) < 0) { thatItem.successor.push(name); } }); }); return { graph, noEntryList }; } function createDependencyGraphItem(graph, name) { if (!graph[name]) { graph[name] = { predecessor: [], successor: [] }; } return graph[name]; } function getAvailableDependencies(originalDeps, fullNameList) { var availableDeps = []; each$g(originalDeps, function(dep) { indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep); }); return availableDeps; } } function inheritDefaultOption(superOption, subOption) { return merge(merge({}, superOption, true), subOption, true); } var langEN = { time: { month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] }, legend: { selector: { all: "All", inverse: "Inv" } }, toolbox: { brush: { title: { rect: "Box Select", polygon: "Lasso Select", lineX: "Horizontally Select", lineY: "Vertically Select", keep: "Keep Selections", clear: "Clear Selections" } }, dataView: { title: "Data View", lang: ["Data View", "Close", "Refresh"] }, dataZoom: { title: { zoom: "Zoom", back: "Zoom Reset" } }, magicType: { title: { line: "Switch to Line Chart", bar: "Switch to Bar Chart", stack: "Stack", tiled: "Tile" } }, restore: { title: "Restore" }, saveAsImage: { title: "Save as Image", lang: ["Right Click to Save Image"] } }, series: { typeNames: { pie: "Pie chart", bar: "Bar chart", line: "Line chart", scatter: "Scatter plot", effectScatter: "Ripple scatter plot", radar: "Radar chart", tree: "Tree", treemap: "Treemap", boxplot: "Boxplot", candlestick: "Candlestick", k: "K line chart", heatmap: "Heat map", map: "Map", parallel: "Parallel coordinate map", lines: "Line graph", graph: "Relationship graph", sankey: "Sankey diagram", funnel: "Funnel chart", gauge: "Gauge", pictorialBar: "Pictorial bar", themeRiver: "Theme River Map", sunburst: "Sunburst" } }, aria: { general: { withTitle: 'This is a chart about "{title}"', withoutTitle: "This is a chart" }, series: { single: { prefix: "", withName: " with type {seriesType} named {seriesName}.", withoutName: " with type {seriesType}." }, multiple: { prefix: ". It consists of {seriesCount} series count.", withName: " The {seriesId} series is a {seriesType} representing {seriesName}.", withoutName: " The {seriesId} series is a {seriesType}.", separator: { middle: "", end: "" } } }, data: { allData: "The data is as follows: ", partialData: "The first {displayCnt} items are: ", withName: "the data for {name} is {value}", withoutName: "{value}", separator: { middle: ", ", end: ". " } } } }; var langZH = { time: { month: ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"], monthAbbr: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], dayOfWeek: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"], dayOfWeekAbbr: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"] }, legend: { selector: { all: "\u5168\u9009", inverse: "\u53CD\u9009" } }, toolbox: { brush: { title: { rect: "\u77E9\u5F62\u9009\u62E9", polygon: "\u5708\u9009", lineX: "\u6A2A\u5411\u9009\u62E9", lineY: "\u7EB5\u5411\u9009\u62E9", keep: "\u4FDD\u6301\u9009\u62E9", clear: "\u6E05\u9664\u9009\u62E9" } }, dataView: { title: "\u6570\u636E\u89C6\u56FE", lang: ["\u6570\u636E\u89C6\u56FE", "\u5173\u95ED", "\u5237\u65B0"] }, dataZoom: { title: { zoom: "\u533A\u57DF\u7F29\u653E", back: "\u533A\u57DF\u7F29\u653E\u8FD8\u539F" } }, magicType: { title: { line: "\u5207\u6362\u4E3A\u6298\u7EBF\u56FE", bar: "\u5207\u6362\u4E3A\u67F1\u72B6\u56FE", stack: "\u5207\u6362\u4E3A\u5806\u53E0", tiled: "\u5207\u6362\u4E3A\u5E73\u94FA" } }, restore: { title: "\u8FD8\u539F" }, saveAsImage: { title: "\u4FDD\u5B58\u4E3A\u56FE\u7247", lang: ["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"] } }, series: { typeNames: { pie: "\u997C\u56FE", bar: "\u67F1\u72B6\u56FE", line: "\u6298\u7EBF\u56FE", scatter: "\u6563\u70B9\u56FE", effectScatter: "\u6D9F\u6F2A\u6563\u70B9\u56FE", radar: "\u96F7\u8FBE\u56FE", tree: "\u6811\u56FE", treemap: "\u77E9\u5F62\u6811\u56FE", boxplot: "\u7BB1\u578B\u56FE", candlestick: "K\u7EBF\u56FE", k: "K\u7EBF\u56FE", heatmap: "\u70ED\u529B\u56FE", map: "\u5730\u56FE", parallel: "\u5E73\u884C\u5750\u6807\u56FE", lines: "\u7EBF\u56FE", graph: "\u5173\u7CFB\u56FE", sankey: "\u6851\u57FA\u56FE", funnel: "\u6F0F\u6597\u56FE", gauge: "\u4EEA\u8868\u76D8\u56FE", pictorialBar: "\u8C61\u5F62\u67F1\u56FE", themeRiver: "\u4E3B\u9898\u6CB3\u6D41\u56FE", sunburst: "\u65ED\u65E5\u56FE" } }, aria: { general: { withTitle: "\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002", withoutTitle: "\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C" }, series: { single: { prefix: "", withName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002", withoutName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002" }, multiple: { prefix: "\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002", withName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C", withoutName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C", separator: { middle: "\uFF1B", end: "\u3002" } } }, data: { allData: "\u5176\u6570\u636E\u662F\u2014\u2014", partialData: "\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014", withName: "{name}\u7684\u6570\u636E\u662F{value}", withoutName: "{value}", separator: { middle: "\uFF0C", end: "" } } } }; var LOCALE_ZH = "ZH"; var LOCALE_EN = "EN"; var DEFAULT_LOCALE = LOCALE_EN; var localeStorage = {}; var localeModels = {}; var SYSTEM_LANG = !env$1.domSupported ? DEFAULT_LOCALE : function() { var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase(); return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE; }(); function registerLocale(locale, localeObj) { locale = locale.toUpperCase(); localeModels[locale] = new Model$1(localeObj); localeStorage[locale] = localeObj; } function createLocaleObject(locale) { if (isString(locale)) { var localeObj = localeStorage[locale.toUpperCase()] || {}; if (locale === LOCALE_ZH || locale === LOCALE_EN) { return clone$4(localeObj); } else { return merge(clone$4(localeObj), clone$4(localeStorage[DEFAULT_LOCALE]), false); } } else { return merge(clone$4(locale), clone$4(localeStorage[DEFAULT_LOCALE]), false); } } function getLocaleModel(lang) { return localeModels[lang]; } function getDefaultLocaleModel() { return localeModels[DEFAULT_LOCALE]; } registerLocale(LOCALE_EN, langEN); registerLocale(LOCALE_ZH, langZH); var ONE_SECOND = 1e3; var ONE_MINUTE = ONE_SECOND * 60; var ONE_HOUR = ONE_MINUTE * 60; var ONE_DAY = ONE_HOUR * 24; var ONE_YEAR = ONE_DAY * 365; var defaultLeveledFormatter = { year: "{yyyy}", month: "{MMM}", day: "{d}", hour: "{HH}:{mm}", minute: "{HH}:{mm}", second: "{HH}:{mm}:{ss}", millisecond: "{HH}:{mm}:{ss} {SSS}", none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}" }; var fullDayFormatter = "{yyyy}-{MM}-{dd}"; var fullLeveledFormatter = { year: "{yyyy}", month: "{yyyy}-{MM}", day: fullDayFormatter, hour: fullDayFormatter + " " + defaultLeveledFormatter.hour, minute: fullDayFormatter + " " + defaultLeveledFormatter.minute, second: fullDayFormatter + " " + defaultLeveledFormatter.second, millisecond: defaultLeveledFormatter.none }; var primaryTimeUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; var timeUnits = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"]; function pad(str, len2) { str += ""; return "0000".substr(0, len2 - str.length) + str; } function getPrimaryTimeUnit(timeUnit) { switch (timeUnit) { case "half-year": case "quarter": return "month"; case "week": case "half-week": return "day"; case "half-day": case "quarter-day": return "hour"; default: return timeUnit; } } function isPrimaryTimeUnit(timeUnit) { return timeUnit === getPrimaryTimeUnit(timeUnit); } function getDefaultFormatPrecisionOfInterval(timeUnit) { switch (timeUnit) { case "year": case "month": return "day"; case "millisecond": return "millisecond"; default: return "second"; } } function format$1(time2, template, isUTC, lang) { var date = parseDate(time2); var y = date[fullYearGetterName(isUTC)](); var M = date[monthGetterName(isUTC)]() + 1; var q = Math.floor((M - 1) / 4) + 1; var d = date[dateGetterName(isUTC)](); var e2 = date["get" + (isUTC ? "UTC" : "") + "Day"](); var H = date[hoursGetterName(isUTC)](); var h = (H - 1) % 12 + 1; var m2 = date[minutesGetterName(isUTC)](); var s = date[secondsGetterName(isUTC)](); var S = date[millisecondsGetterName(isUTC)](); var localeModel = lang instanceof Model$1 ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel(); var timeModel = localeModel.getModel("time"); var month = timeModel.get("month"); var monthAbbr = timeModel.get("monthAbbr"); var dayOfWeek = timeModel.get("dayOfWeek"); var dayOfWeekAbbr = timeModel.get("dayOfWeekAbbr"); return (template || "").replace(/{yyyy}/g, y + "").replace(/{yy}/g, y % 100 + "").replace(/{Q}/g, q + "").replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + "").replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + "").replace(/{eeee}/g, dayOfWeek[e2]).replace(/{ee}/g, dayOfWeekAbbr[e2]).replace(/{e}/g, e2 + "").replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + "").replace(/{hh}/g, pad(h + "", 2)).replace(/{h}/g, h + "").replace(/{mm}/g, pad(m2, 2)).replace(/{m}/g, m2 + "").replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + "").replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + ""); } function leveledFormat(tick, idx, formatter, lang, isUTC) { var template = null; if (typeof formatter === "string") { template = formatter; } else if (typeof formatter === "function") { template = formatter(tick.value, idx, { level: tick.level }); } else { var defaults$1 = extend({}, defaultLeveledFormatter); if (tick.level > 0) { for (var i = 0; i < primaryTimeUnits.length; ++i) { defaults$1[primaryTimeUnits[i]] = "{primary|" + defaults$1[primaryTimeUnits[i]] + "}"; } } var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults(formatter, defaults$1) : defaults$1; var unit = getUnitFromValue(tick.value, isUTC); if (mergedFormatter[unit]) { template = mergedFormatter[unit]; } else if (mergedFormatter.inherit) { var targetId = timeUnits.indexOf(unit); for (var i = targetId - 1; i >= 0; --i) { if (mergedFormatter[unit]) { template = mergedFormatter[unit]; break; } } template = template || defaults$1.none; } if (isArray$1(template)) { var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level; levelId = Math.min(levelId, template.length - 1); template = template[levelId]; } } return format$1(new Date(tick.value), template, isUTC, lang); } function getUnitFromValue(value, isUTC) { var date = parseDate(value); var M = date[monthGetterName(isUTC)]() + 1; var d = date[dateGetterName(isUTC)](); var h = date[hoursGetterName(isUTC)](); var m2 = date[minutesGetterName(isUTC)](); var s = date[secondsGetterName(isUTC)](); var S = date[millisecondsGetterName(isUTC)](); var isSecond = S === 0; var isMinute = isSecond && s === 0; var isHour = isMinute && m2 === 0; var isDay = isHour && h === 0; var isMonth = isDay && d === 1; var isYear = isMonth && M === 1; if (isYear) { return "year"; } else if (isMonth) { return "month"; } else if (isDay) { return "day"; } else if (isHour) { return "hour"; } else if (isMinute) { return "minute"; } else if (isSecond) { return "second"; } else { return "millisecond"; } } function getUnitValue(value, unit, isUTC) { var date = typeof value === "number" ? parseDate(value) : value; unit = unit || getUnitFromValue(value, isUTC); switch (unit) { case "year": return date[fullYearGetterName(isUTC)](); case "half-year": return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0; case "quarter": return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4); case "month": return date[monthGetterName(isUTC)](); case "day": return date[dateGetterName(isUTC)](); case "half-day": return date[hoursGetterName(isUTC)]() / 24; case "hour": return date[hoursGetterName(isUTC)](); case "minute": return date[minutesGetterName(isUTC)](); case "second": return date[secondsGetterName(isUTC)](); case "millisecond": return date[millisecondsGetterName(isUTC)](); } } function fullYearGetterName(isUTC) { return isUTC ? "getUTCFullYear" : "getFullYear"; } function monthGetterName(isUTC) { return isUTC ? "getUTCMonth" : "getMonth"; } function dateGetterName(isUTC) { return isUTC ? "getUTCDate" : "getDate"; } function hoursGetterName(isUTC) { return isUTC ? "getUTCHours" : "getHours"; } function minutesGetterName(isUTC) { return isUTC ? "getUTCMinutes" : "getMinutes"; } function secondsGetterName(isUTC) { return isUTC ? "getUTCSeconds" : "getSeconds"; } function millisecondsGetterName(isUTC) { return isUTC ? "getUTCMilliseconds" : "getMilliseconds"; } function fullYearSetterName(isUTC) { return isUTC ? "setUTCFullYear" : "setFullYear"; } function monthSetterName(isUTC) { return isUTC ? "setUTCMonth" : "setMonth"; } function dateSetterName(isUTC) { return isUTC ? "setUTCDate" : "setDate"; } function hoursSetterName(isUTC) { return isUTC ? "setUTCHours" : "setHours"; } function minutesSetterName(isUTC) { return isUTC ? "setUTCMinutes" : "setMinutes"; } function secondsSetterName(isUTC) { return isUTC ? "setUTCSeconds" : "setSeconds"; } function millisecondsSetterName(isUTC) { return isUTC ? "setUTCMilliseconds" : "setMilliseconds"; } function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) { var textEl = new ZRText$1({ style: { text, font, align, verticalAlign, padding, rich, overflow: truncate ? "truncate" : null, lineHeight } }); return textEl.getBoundingRect(); } function addCommas(x) { if (!isNumeric(x)) { return isString(x) ? x : "-"; } var parts = (x + "").split("."); return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (parts.length > 1 ? "." + parts[1] : ""); } function toCamelCase(str, upperCaseFirst) { str = (str || "").toLowerCase().replace(/-(.)/g, function(match, group1) { return group1.toUpperCase(); }); if (upperCaseFirst && str) { str = str.charAt(0).toUpperCase() + str.slice(1); } return str; } var normalizeCssArray = normalizeCssArray$1; var replaceReg = /([&<>"'])/g; var replaceMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }; function encodeHTML(source) { return source == null ? "" : (source + "").replace(replaceReg, function(str, c) { return replaceMap[c]; }); } function makeValueReadable(value, valueType, useUTC) { var USER_READABLE_DEFUALT_TIME_PATTERN = "{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}"; function stringToUserReadable(str) { return str && trim$1(str) ? str : "-"; } function isNumberUserReadable(num) { return !!(num != null && !isNaN(num) && isFinite(num)); } var isTypeTime = valueType === "time"; var isValueDate = value instanceof Date; if (isTypeTime || isValueDate) { var date = isTypeTime ? parseDate(value) : value; if (!isNaN(+date)) { return format$1(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC); } else if (isValueDate) { return "-"; } } if (valueType === "ordinal") { return isStringSafe(value) ? stringToUserReadable(value) : isNumber(value) ? isNumberUserReadable(value) ? value + "" : "-" : "-"; } var numericResult = numericToNumber(value); return isNumberUserReadable(numericResult) ? addCommas(numericResult) : isStringSafe(value) ? stringToUserReadable(value) : typeof value === "boolean" ? value + "" : "-"; } var TPL_VAR_ALIAS = ["a", "b", "c", "d", "e", "f", "g"]; var wrapVar = function(varName, seriesIdx) { return "{" + varName + (seriesIdx == null ? "" : seriesIdx) + "}"; }; function formatTpl(tpl, paramsList, encode) { if (!isArray$1(paramsList)) { paramsList = [paramsList]; } var seriesLen = paramsList.length; if (!seriesLen) { return ""; } var $vars = paramsList[0].$vars || []; for (var i = 0; i < $vars.length; i++) { var alias = TPL_VAR_ALIAS[i]; tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0)); } for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { for (var k = 0; k < $vars.length; k++) { var val = paramsList[seriesIdx][$vars[k]]; tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val); } } return tpl; } function formatTplSimple(tpl, param, encode) { each$g(param, function(value, key2) { tpl = tpl.replace("{" + key2 + "}", encode ? encodeHTML(value) : value); }); return tpl; } function getTooltipMarker(inOpt, extraCssText) { var opt = isString(inOpt) ? { color: inOpt, extraCssText } : inOpt || {}; var color2 = opt.color; var type = opt.type; extraCssText = opt.extraCssText; var renderMode = opt.renderMode || "html"; if (!color2) { return ""; } if (renderMode === "html") { return type === "subItem" ? '' : ''; } else { var markerId = opt.markerId || "markerX"; return { renderMode, content: "{" + markerId + "|} ", style: type === "subItem" ? { width: 4, height: 4, borderRadius: 2, backgroundColor: color2 } : { width: 10, height: 10, borderRadius: 5, backgroundColor: color2 } }; } } function formatTime(tpl, value, isUTC) { if (tpl === "week" || tpl === "month" || tpl === "quarter" || tpl === "half-year" || tpl === "year") { tpl = "MM-dd\nyyyy"; } var date = parseDate(value); var utc = isUTC ? "UTC" : ""; var y = date["get" + utc + "FullYear"](); var M = date["get" + utc + "Month"]() + 1; var d = date["get" + utc + "Date"](); var h = date["get" + utc + "Hours"](); var m2 = date["get" + utc + "Minutes"](); var s = date["get" + utc + "Seconds"](); var S = date["get" + utc + "Milliseconds"](); tpl = tpl.replace("MM", pad(M, 2)).replace("M", M).replace("yyyy", y).replace("yy", y % 100 + "").replace("dd", pad(d, 2)).replace("d", d).replace("hh", pad(h, 2)).replace("h", h).replace("mm", pad(m2, 2)).replace("m", m2).replace("ss", pad(s, 2)).replace("s", s).replace("SSS", pad(S, 3)); return tpl; } function capitalFirst(str) { return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; } function convertToColorString(color2, defaultColor) { defaultColor = defaultColor || "transparent"; return isString(color2) ? color2 : isObject$3(color2) ? color2.colorStops && (color2.colorStops[0] || {}).color || defaultColor : defaultColor; } function windowOpen(link2, target) { if (target === "_blank" || target === "blank") { var blank = window.open(); blank.opener = null; blank.location.href = link2; } else { window.open(link2, target); } } var each$f = each$g; var LOCATION_PARAMS = ["left", "right", "top", "bottom", "width", "height"]; var HV_NAMES = [["width", "left", "right"], ["height", "top", "bottom"]]; function boxLayout(orient, group, gap, maxWidth, maxHeight) { var x = 0; var y = 0; if (maxWidth == null) { maxWidth = Infinity; } if (maxHeight == null) { maxHeight = Infinity; } var currentLineMaxSize = 0; group.eachChild(function(child, idx) { var rect = child.getBoundingRect(); var nextChild = group.childAt(idx + 1); var nextChildRect = nextChild && nextChild.getBoundingRect(); var nextX; var nextY; if (orient === "horizontal") { var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0); nextX = x + moveX; if (nextX > maxWidth || child.newline) { x = 0; nextX = moveX; y += currentLineMaxSize + gap; currentLineMaxSize = rect.height; } else { currentLineMaxSize = Math.max(currentLineMaxSize, rect.height); } } else { var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0); nextY = y + moveY; if (nextY > maxHeight || child.newline) { x += currentLineMaxSize + gap; y = 0; nextY = moveY; currentLineMaxSize = rect.width; } else { currentLineMaxSize = Math.max(currentLineMaxSize, rect.width); } } if (child.newline) { return; } child.x = x; child.y = y; child.markRedraw(); orient === "horizontal" ? x = nextX + gap : y = nextY + gap; }); } var box = boxLayout; curry$1(boxLayout, "vertical"); curry$1(boxLayout, "horizontal"); function getAvailableSize(positionInfo, containerRect, margin) { var containerWidth = containerRect.width; var containerHeight = containerRect.height; var x = parsePercent$1(positionInfo.left, containerWidth); var y = parsePercent$1(positionInfo.top, containerHeight); var x2 = parsePercent$1(positionInfo.right, containerWidth); var y2 = parsePercent$1(positionInfo.bottom, containerHeight); (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0); (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth); (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0); (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight); margin = normalizeCssArray(margin || 0); return { width: Math.max(x2 - x - margin[1] - margin[3], 0), height: Math.max(y2 - y - margin[0] - margin[2], 0) }; } function getLayoutRect(positionInfo, containerRect, margin) { margin = normalizeCssArray(margin || 0); var containerWidth = containerRect.width; var containerHeight = containerRect.height; var left = parsePercent$1(positionInfo.left, containerWidth); var top2 = parsePercent$1(positionInfo.top, containerHeight); var right2 = parsePercent$1(positionInfo.right, containerWidth); var bottom2 = parsePercent$1(positionInfo.bottom, containerHeight); var width = parsePercent$1(positionInfo.width, containerWidth); var height = parsePercent$1(positionInfo.height, containerHeight); var verticalMargin = margin[2] + margin[0]; var horizontalMargin = margin[1] + margin[3]; var aspect = positionInfo.aspect; if (isNaN(width)) { width = containerWidth - right2 - horizontalMargin - left; } if (isNaN(height)) { height = containerHeight - bottom2 - verticalMargin - top2; } if (aspect != null) { if (isNaN(width) && isNaN(height)) { if (aspect > containerWidth / containerHeight) { width = containerWidth * 0.8; } else { height = containerHeight * 0.8; } } if (isNaN(width)) { width = aspect * height; } if (isNaN(height)) { height = width / aspect; } } if (isNaN(left)) { left = containerWidth - right2 - width - horizontalMargin; } if (isNaN(top2)) { top2 = containerHeight - bottom2 - height - verticalMargin; } switch (positionInfo.left || positionInfo.right) { case "center": left = containerWidth / 2 - width / 2 - margin[3]; break; case "right": left = containerWidth - width - horizontalMargin; break; } switch (positionInfo.top || positionInfo.bottom) { case "middle": case "center": top2 = containerHeight / 2 - height / 2 - margin[0]; break; case "bottom": top2 = containerHeight - height - verticalMargin; break; } left = left || 0; top2 = top2 || 0; if (isNaN(width)) { width = containerWidth - horizontalMargin - left - (right2 || 0); } if (isNaN(height)) { height = containerHeight - verticalMargin - top2 - (bottom2 || 0); } var rect = new BoundingRect$1(left + margin[3], top2 + margin[0], width, height); rect.margin = margin; return rect; } function positionElement(el, positionInfo, containerRect, margin, opt) { var h = !opt || !opt.hv || opt.hv[0]; var v = !opt || !opt.hv || opt.hv[1]; var boundingMode = opt && opt.boundingMode || "all"; if (!h && !v) { return; } var rect; if (boundingMode === "raw") { rect = el.type === "group" ? new BoundingRect$1(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect(); } else { rect = el.getBoundingRect(); if (el.needLocalTransform()) { var transform2 = el.getLocalTransform(); rect = rect.clone(); rect.applyTransform(transform2); } } var layoutRect = getLayoutRect(defaults({ width: rect.width, height: rect.height }, positionInfo), containerRect, margin); var dx = h ? layoutRect.x - rect.x : 0; var dy = v ? layoutRect.y - rect.y : 0; if (boundingMode === "raw") { el.x = dx; el.y = dy; } else { el.x += dx; el.y += dy; } el.markRedraw(); } function sizeCalculable(option, hvIdx) { return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null; } function fetchLayoutMode(ins) { var layoutMode = ins.layoutMode || ins.constructor.layoutMode; return isObject$3(layoutMode) ? layoutMode : layoutMode ? { type: layoutMode } : null; } function mergeLayoutParam(targetOption, newOption, opt) { var ignoreSize = opt && opt.ignoreSize; !isArray$1(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]); var hResult = merge2(HV_NAMES[0], 0); var vResult = merge2(HV_NAMES[1], 1); copy2(HV_NAMES[0], targetOption, hResult); copy2(HV_NAMES[1], targetOption, vResult); function merge2(names, hvIdx) { var newParams = {}; var newValueCount = 0; var merged = {}; var mergedValueCount = 0; var enoughParamNumber = 2; each$f(names, function(name) { merged[name] = targetOption[name]; }); each$f(names, function(name) { hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]); hasValue(newParams, name) && newValueCount++; hasValue(merged, name) && mergedValueCount++; }); if (ignoreSize[hvIdx]) { if (hasValue(newOption, names[1])) { merged[names[2]] = null; } else if (hasValue(newOption, names[2])) { merged[names[1]] = null; } return merged; } if (mergedValueCount === enoughParamNumber || !newValueCount) { return merged; } else if (newValueCount >= enoughParamNumber) { return newParams; } else { for (var i = 0; i < names.length; i++) { var name_1 = names[i]; if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) { newParams[name_1] = targetOption[name_1]; break; } } return newParams; } } function hasProp(obj, name) { return obj.hasOwnProperty(name); } function hasValue(obj, name) { return obj[name] != null && obj[name] !== "auto"; } function copy2(names, target, source) { each$f(names, function(name) { target[name] = source[name]; }); } } function getLayoutParams(source) { return copyLayoutParams({}, source); } function copyLayoutParams(target, source) { source && target && each$f(LOCATION_PARAMS, function(name) { source.hasOwnProperty(name) && (target[name] = source[name]); }); return target; } var inner$l = makeInner(); var ComponentModel = function(_super) { __extends$1(ComponentModel2, _super); function ComponentModel2(option, parentModel, ecModel) { var _this = _super.call(this, option, parentModel, ecModel) || this; _this.uid = getUID("ec_cpt_model"); return _this; } ComponentModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); }; ComponentModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { var layoutMode = fetchLayoutMode(this); var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; var themeModel = ecModel.getTheme(); merge(option, themeModel.get(this.mainType)); merge(option, this.getDefaultOption()); if (layoutMode) { mergeLayoutParam(option, inputPositionParams, layoutMode); } }; ComponentModel2.prototype.mergeOption = function(option, ecModel) { merge(this.option, option, true); var layoutMode = fetchLayoutMode(this); if (layoutMode) { mergeLayoutParam(this.option, option, layoutMode); } }; ComponentModel2.prototype.optionUpdated = function(newCptOption, isInit) { }; ComponentModel2.prototype.getDefaultOption = function() { var ctor = this.constructor; if (!isExtendedClass(ctor)) { return ctor.defaultOption; } var fields = inner$l(this); if (!fields.defaultOption) { var optList = []; var clz = ctor; while (clz) { var opt = clz.prototype.defaultOption; opt && optList.push(opt); clz = clz.superClass; } var defaultOption2 = {}; for (var i = optList.length - 1; i >= 0; i--) { defaultOption2 = merge(defaultOption2, optList[i], true); } fields.defaultOption = defaultOption2; } return fields.defaultOption; }; ComponentModel2.prototype.getReferringComponents = function(mainType, opt) { var indexKey = mainType + "Index"; var idKey = mainType + "Id"; return queryReferringComponents(this.ecModel, mainType, { index: this.get(indexKey, true), id: this.get(idKey, true) }, opt); }; ComponentModel2.prototype.getBoxLayoutParams = function() { var boxLayoutModel = this; return { left: boxLayoutModel.get("left"), top: boxLayoutModel.get("top"), right: boxLayoutModel.get("right"), bottom: boxLayoutModel.get("bottom"), width: boxLayoutModel.get("width"), height: boxLayoutModel.get("height") }; }; ComponentModel2.protoInitialize = function() { var proto2 = ComponentModel2.prototype; proto2.type = "component"; proto2.id = ""; proto2.name = ""; proto2.mainType = ""; proto2.subType = ""; proto2.componentIndex = 0; }(); return ComponentModel2; }(Model$1); mountExtend(ComponentModel, Model$1); enableClassManagement(ComponentModel); enableSubTypeDefaulter(ComponentModel); enableTopologicalTravel(ComponentModel, getDependencies); function getDependencies(componentType) { var deps = []; each$g(ComponentModel.getClassesByMainType(componentType), function(clz) { deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []); }); deps = map$1(deps, function(type) { return parseClassType(type).main; }); if (componentType !== "dataset" && indexOf(deps, "dataset") <= 0) { deps.unshift("dataset"); } return deps; } var ComponentModel$1 = ComponentModel; var platform = ""; if (typeof navigator !== "undefined") { platform = navigator.platform || ""; } var decalColor = "rgba(0, 0, 0, 0.2)"; var globalDefault = { darkMode: "auto", colorBy: "series", color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"], gradientColor: ["#f6efa6", "#d88273", "#bf444c"], aria: { decal: { decals: [{ color: decalColor, dashArrayX: [1, 0], dashArrayY: [2, 5], symbolSize: 1, rotation: Math.PI / 6 }, { color: decalColor, symbol: "circle", dashArrayX: [[8, 8], [0, 8, 8, 0]], dashArrayY: [6, 0], symbolSize: 0.8 }, { color: decalColor, dashArrayX: [1, 0], dashArrayY: [4, 3], rotation: -Math.PI / 4 }, { color: decalColor, dashArrayX: [[6, 6], [0, 6, 6, 0]], dashArrayY: [6, 0] }, { color: decalColor, dashArrayX: [[1, 0], [1, 6]], dashArrayY: [1, 0, 6, 0], rotation: Math.PI / 4 }, { color: decalColor, symbol: "triangle", dashArrayX: [[9, 9], [0, 9, 9, 0]], dashArrayY: [7, 2], symbolSize: 0.75 }] } }, textStyle: { fontFamily: platform.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", fontSize: 12, fontStyle: "normal", fontWeight: "normal" }, blendMode: null, stateAnimation: { duration: 300, easing: "cubicOut" }, animation: "auto", animationDuration: 1e3, animationDurationUpdate: 500, animationEasing: "cubicInOut", animationEasingUpdate: "cubicInOut", animationThreshold: 2e3, progressiveThreshold: 3e3, progressive: 400, hoverLayerThreshold: 3e3, useUTC: false }; var VISUAL_DIMENSIONS = createHashMap(["tooltip", "label", "itemName", "itemId", "itemGroupId", "seriesName"]); var SOURCE_FORMAT_ORIGINAL = "original"; var SOURCE_FORMAT_ARRAY_ROWS = "arrayRows"; var SOURCE_FORMAT_OBJECT_ROWS = "objectRows"; var SOURCE_FORMAT_KEYED_COLUMNS = "keyedColumns"; var SOURCE_FORMAT_TYPED_ARRAY = "typedArray"; var SOURCE_FORMAT_UNKNOWN = "unknown"; var SERIES_LAYOUT_BY_COLUMN = "column"; var SERIES_LAYOUT_BY_ROW = "row"; var BE_ORDINAL = { Must: 1, Might: 2, Not: 3 }; var innerGlobalModel = makeInner(); function resetSourceDefaulter(ecModel) { innerGlobalModel(ecModel).datasetMap = createHashMap(); } function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) { var encode = {}; var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); if (!datasetModel || !coordDimensions) { return encode; } var encodeItemName = []; var encodeSeriesName = []; var ecModel = seriesModel.ecModel; var datasetMap = innerGlobalModel(ecModel).datasetMap; var key2 = datasetModel.uid + "_" + source.seriesLayoutBy; var baseCategoryDimIndex; var categoryWayValueDimStart; coordDimensions = coordDimensions.slice(); each$g(coordDimensions, function(coordDimInfoLoose, coordDimIdx) { var coordDimInfo = isObject$3(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = { name: coordDimInfoLoose }; if (coordDimInfo.type === "ordinal" && baseCategoryDimIndex == null) { baseCategoryDimIndex = coordDimIdx; categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo); } encode[coordDimInfo.name] = []; }); var datasetRecord = datasetMap.get(key2) || datasetMap.set(key2, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 }); each$g(coordDimensions, function(coordDimInfo, coordDimIdx) { var coordDimName = coordDimInfo.name; var count2 = getDataDimCountOnCoordDim(coordDimInfo); if (baseCategoryDimIndex == null) { var start2 = datasetRecord.valueWayDim; pushDim(encode[coordDimName], start2, count2); pushDim(encodeSeriesName, start2, count2); datasetRecord.valueWayDim += count2; } else if (baseCategoryDimIndex === coordDimIdx) { pushDim(encode[coordDimName], 0, count2); pushDim(encodeItemName, 0, count2); } else { var start2 = datasetRecord.categoryWayDim; pushDim(encode[coordDimName], start2, count2); pushDim(encodeSeriesName, start2, count2); datasetRecord.categoryWayDim += count2; } }); function pushDim(dimIdxArr, idxFrom, idxCount) { for (var i = 0; i < idxCount; i++) { dimIdxArr.push(idxFrom + i); } } function getDataDimCountOnCoordDim(coordDimInfo) { var dimsDef = coordDimInfo.dimsDef; return dimsDef ? dimsDef.length : 1; } encodeItemName.length && (encode.itemName = encodeItemName); encodeSeriesName.length && (encode.seriesName = encodeSeriesName); return encode; } function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) { var encode = {}; var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); if (!datasetModel) { return encode; } var sourceFormat = source.sourceFormat; var dimensionsDefine = source.dimensionsDefine; var potentialNameDimIndex; if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { each$g(dimensionsDefine, function(dim, idx) { if ((isObject$3(dim) ? dim.name : dim) === "name") { potentialNameDimIndex = idx; } }); } var idxResult = function() { var idxRes0 = {}; var idxRes1 = {}; var guessRecords = []; for (var i = 0, len2 = Math.min(5, dimCount); i < len2; i++) { var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i); guessRecords.push(guessResult); var isPureNumber = guessResult === BE_ORDINAL.Not; if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) { idxRes0.v = i; } if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) { idxRes0.n = i; } if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) { return idxRes0; } if (!isPureNumber) { if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) { idxRes1.v = i; } if (idxRes1.n == null || idxRes1.n === idxRes1.v) { idxRes1.n = i; } } } function fulfilled(idxResult2) { return idxResult2.v != null && idxResult2.n != null; } return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null; }(); if (idxResult) { encode.value = [idxResult.v]; var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; encode.itemName = [nameDimIndex]; encode.seriesName = [nameDimIndex]; } return encode; } function querySeriesUpstreamDatasetModel(seriesModel) { var thisData = seriesModel.get("data", true); if (!thisData) { return queryReferringComponents(seriesModel.ecModel, "dataset", { index: seriesModel.get("datasetIndex", true), id: seriesModel.get("datasetId", true) }, SINGLE_REFERRING).models[0]; } } function queryDatasetUpstreamDatasetModels(datasetModel) { if (!datasetModel.get("transform", true) && !datasetModel.get("fromTransformResult", true)) { return []; } return queryReferringComponents(datasetModel.ecModel, "dataset", { index: datasetModel.get("fromDatasetIndex", true), id: datasetModel.get("fromDatasetId", true) }, SINGLE_REFERRING).models; } function guessOrdinal(source, dimIndex) { return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex); } function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) { var result; var maxLoop = 5; if (isTypedArray(data)) { return BE_ORDINAL.Not; } var dimName; var dimType; if (dimensionsDefine) { var dimDefItem = dimensionsDefine[dimIndex]; if (isObject$3(dimDefItem)) { dimName = dimDefItem.name; dimType = dimDefItem.type; } else if (isString(dimDefItem)) { dimName = dimDefItem; } } if (dimType != null) { return dimType === "ordinal" ? BE_ORDINAL.Must : BE_ORDINAL.Not; } if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { var dataArrayRows = data; if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { var sample = dataArrayRows[dimIndex]; for (var i = 0; i < (sample || []).length && i < maxLoop; i++) { if ((result = detectValue(sample[startIndex + i])) != null) { return result; } } } else { for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) { var row = dataArrayRows[startIndex + i]; if (row && (result = detectValue(row[dimIndex])) != null) { return result; } } } } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { var dataObjectRows = data; if (!dimName) { return BE_ORDINAL.Not; } for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) { var item = dataObjectRows[i]; if (item && (result = detectValue(item[dimName])) != null) { return result; } } } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { var dataKeyedColumns = data; if (!dimName) { return BE_ORDINAL.Not; } var sample = dataKeyedColumns[dimName]; if (!sample || isTypedArray(sample)) { return BE_ORDINAL.Not; } for (var i = 0; i < sample.length && i < maxLoop; i++) { if ((result = detectValue(sample[i])) != null) { return result; } } } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { var dataOriginal = data; for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) { var item = dataOriginal[i]; var val = getDataItemValue(item); if (!isArray$1(val)) { return BE_ORDINAL.Not; } if ((result = detectValue(val[dimIndex])) != null) { return result; } } } function detectValue(val2) { var beStr = isString(val2); if (val2 != null && isFinite(val2) && val2 !== "") { return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not; } else if (beStr && val2 !== "-") { return BE_ORDINAL.Must; } } return BE_ORDINAL.Not; } var internalOptionCreatorMap = createHashMap(); function registerInternalOptionCreator(mainType, creator) { assert(internalOptionCreatorMap.get(mainType) == null && creator); internalOptionCreatorMap.set(mainType, creator); } function concatInternalOptions(ecModel, mainType, newCmptOptionList) { var internalOptionCreator = internalOptionCreatorMap.get(mainType); if (!internalOptionCreator) { return newCmptOptionList; } var internalOptions = internalOptionCreator(ecModel); if (!internalOptions) { return newCmptOptionList; } return newCmptOptionList.concat(internalOptions); } var innerColor = makeInner(); var innerDecal = makeInner(); var PaletteMixin = function() { function PaletteMixin2() { } PaletteMixin2.prototype.getColorFromPalette = function(name, scope, requestNum) { var defaultPalette = normalizeToArray(this.get("color", true)); var layeredPalette = this.get("colorLayer", true); return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum); }; PaletteMixin2.prototype.clearColorPalette = function() { clearPalette(this, innerColor); }; return PaletteMixin2; }(); function getDecalFromPalette(ecModel, name, scope, requestNum) { var defaultDecals = normalizeToArray(ecModel.get(["aria", "decal", "decals"])); return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum); } function getNearestPalette(palettes, requestColorNum) { var paletteNum = palettes.length; for (var i = 0; i < paletteNum; i++) { if (palettes[i].length > requestColorNum) { return palettes[i]; } } return palettes[paletteNum - 1]; } function getFromPalette(that, inner2, defaultPalette, layeredPalette, name, scope, requestNum) { scope = scope || that; var scopeFields = inner2(scope); var paletteIdx = scopeFields.paletteIdx || 0; var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {}; if (paletteNameMap.hasOwnProperty(name)) { return paletteNameMap[name]; } var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum); palette = palette || defaultPalette; if (!palette || !palette.length) { return; } var pickedPaletteItem = palette[paletteIdx]; if (name) { paletteNameMap[name] = pickedPaletteItem; } scopeFields.paletteIdx = (paletteIdx + 1) % palette.length; return pickedPaletteItem; } function clearPalette(that, inner2) { inner2(that).paletteIdx = 0; inner2(that).paletteNameMap = {}; } var reCreateSeriesIndices; var assertSeriesInitialized; var initBase; var OPTION_INNER_KEY = "\0_ec_inner"; var OPTION_INNER_VALUE = 1; var GlobalModel = function(_super) { __extends$1(GlobalModel2, _super); function GlobalModel2() { return _super !== null && _super.apply(this, arguments) || this; } GlobalModel2.prototype.init = function(option, parentModel, ecModel, theme2, locale, optionManager) { theme2 = theme2 || {}; this.option = null; this._theme = new Model$1(theme2); this._locale = new Model$1(locale); this._optionManager = optionManager; }; GlobalModel2.prototype.setOption = function(option, opts, optionPreprocessorFuncs2) { var innerOpt = normalizeSetOptionInput(opts); this._optionManager.setOption(option, optionPreprocessorFuncs2, innerOpt); this._resetOption(null, innerOpt); }; GlobalModel2.prototype.resetOption = function(type, opt) { return this._resetOption(type, normalizeSetOptionInput(opt)); }; GlobalModel2.prototype._resetOption = function(type, opt) { var optionChanged = false; var optionManager = this._optionManager; if (!type || type === "recreate") { var baseOption = optionManager.mountOption(type === "recreate"); if (!this.option || type === "recreate") { initBase(this, baseOption); } else { this.restoreData(); this._mergeOption(baseOption, opt); } optionChanged = true; } if (type === "timeline" || type === "media") { this.restoreData(); } if (!type || type === "recreate" || type === "timeline") { var timelineOption = optionManager.getTimelineOption(this); if (timelineOption) { optionChanged = true; this._mergeOption(timelineOption, opt); } } if (!type || type === "recreate" || type === "media") { var mediaOptions = optionManager.getMediaOption(this); if (mediaOptions.length) { each$g(mediaOptions, function(mediaOption) { optionChanged = true; this._mergeOption(mediaOption, opt); }, this); } } return optionChanged; }; GlobalModel2.prototype.mergeOption = function(option) { this._mergeOption(option, null); }; GlobalModel2.prototype._mergeOption = function(newOption, opt) { var option = this.option; var componentsMap = this._componentsMap; var componentsCount = this._componentsCount; var newCmptTypes = []; var newCmptTypeMap = createHashMap(); var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap; resetSourceDefaulter(this); each$g(newOption, function(componentOption, mainType) { if (componentOption == null) { return; } if (!ComponentModel$1.hasClass(mainType)) { option[mainType] = option[mainType] == null ? clone$4(componentOption) : merge(option[mainType], componentOption, true); } else if (mainType) { newCmptTypes.push(mainType); newCmptTypeMap.set(mainType, true); } }); if (replaceMergeMainTypeMap) { replaceMergeMainTypeMap.each(function(val, mainTypeInReplaceMerge) { if (ComponentModel$1.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) { newCmptTypes.push(mainTypeInReplaceMerge); newCmptTypeMap.set(mainTypeInReplaceMerge, true); } }); } ComponentModel$1.topologicalTravel(newCmptTypes, ComponentModel$1.getAllClassMainTypes(), visitComponent, this); function visitComponent(mainType) { var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType])); var oldCmptList = componentsMap.get(mainType); var mergeMode = !oldCmptList ? "replaceAll" : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? "replaceMerge" : "normalMerge"; var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode); setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel$1); option[mainType] = null; componentsMap.set(mainType, null); componentsCount.set(mainType, 0); var optionsByMainType = []; var cmptsByMainType = []; var cmptsCountByMainType = 0; each$g(mappingResult, function(resultItem, index) { var componentModel = resultItem.existing; var newCmptOption = resultItem.newOption; if (!newCmptOption) { if (componentModel) { componentModel.mergeOption({}, this); componentModel.optionUpdated({}, false); } } else { var isSeriesType = mainType === "series"; var ComponentModelClass = ComponentModel$1.getClass(mainType, resultItem.keyInfo.subType, !isSeriesType); if (!ComponentModelClass) { return; } if (componentModel && componentModel.constructor === ComponentModelClass) { componentModel.name = resultItem.keyInfo.name; componentModel.mergeOption(newCmptOption, this); componentModel.optionUpdated(newCmptOption, false); } else { var extraOpt = extend({ componentIndex: index }, resultItem.keyInfo); componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt); extend(componentModel, extraOpt); if (resultItem.brandNew) { componentModel.__requireNewView = true; } componentModel.init(newCmptOption, this, this); componentModel.optionUpdated(null, true); } } if (componentModel) { optionsByMainType.push(componentModel.option); cmptsByMainType.push(componentModel); cmptsCountByMainType++; } else { optionsByMainType.push(void 0); cmptsByMainType.push(void 0); } }, this); option[mainType] = optionsByMainType; componentsMap.set(mainType, cmptsByMainType); componentsCount.set(mainType, cmptsCountByMainType); if (mainType === "series") { reCreateSeriesIndices(this); } } if (!this._seriesIndices) { reCreateSeriesIndices(this); } }; GlobalModel2.prototype.getOption = function() { var option = clone$4(this.option); each$g(option, function(optInMainType, mainType) { if (ComponentModel$1.hasClass(mainType)) { var opts = normalizeToArray(optInMainType); var realLen = opts.length; var metNonInner = false; for (var i = realLen - 1; i >= 0; i--) { if (opts[i] && !isComponentIdInternal(opts[i])) { metNonInner = true; } else { opts[i] = null; !metNonInner && realLen--; } } opts.length = realLen; option[mainType] = opts; } }); delete option[OPTION_INNER_KEY]; return option; }; GlobalModel2.prototype.getTheme = function() { return this._theme; }; GlobalModel2.prototype.getLocaleModel = function() { return this._locale; }; GlobalModel2.prototype.setUpdatePayload = function(payload) { this._payload = payload; }; GlobalModel2.prototype.getUpdatePayload = function() { return this._payload; }; GlobalModel2.prototype.getComponent = function(mainType, idx) { var list2 = this._componentsMap.get(mainType); if (list2) { var cmpt = list2[idx || 0]; if (cmpt) { return cmpt; } else if (idx == null) { for (var i = 0; i < list2.length; i++) { if (list2[i]) { return list2[i]; } } } } }; GlobalModel2.prototype.queryComponents = function(condition) { var mainType = condition.mainType; if (!mainType) { return []; } var index = condition.index; var id = condition.id; var name = condition.name; var cmpts = this._componentsMap.get(mainType); if (!cmpts || !cmpts.length) { return []; } var result; if (index != null) { result = []; each$g(normalizeToArray(index), function(idx) { cmpts[idx] && result.push(cmpts[idx]); }); } else if (id != null) { result = queryByIdOrName("id", id, cmpts); } else if (name != null) { result = queryByIdOrName("name", name, cmpts); } else { result = filter(cmpts, function(cmpt) { return !!cmpt; }); } return filterBySubType(result, condition); }; GlobalModel2.prototype.findComponents = function(condition) { var query = condition.query; var mainType = condition.mainType; var queryCond = getQueryCond(query); var result = queryCond ? this.queryComponents(queryCond) : filter(this._componentsMap.get(mainType), function(cmpt) { return !!cmpt; }); return doFilter(filterBySubType(result, condition)); function getQueryCond(q) { var indexAttr = mainType + "Index"; var idAttr = mainType + "Id"; var nameAttr = mainType + "Name"; return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? { mainType, index: q[indexAttr], id: q[idAttr], name: q[nameAttr] } : null; } function doFilter(res) { return condition.filter ? filter(res, condition.filter) : res; } }; GlobalModel2.prototype.eachComponent = function(mainType, cb, context) { var componentsMap = this._componentsMap; if (isFunction(mainType)) { var ctxForAll_1 = cb; var cbForAll_1 = mainType; componentsMap.each(function(cmpts2, componentType) { for (var i2 = 0; cmpts2 && i2 < cmpts2.length; i2++) { var cmpt2 = cmpts2[i2]; cmpt2 && cbForAll_1.call(ctxForAll_1, componentType, cmpt2, cmpt2.componentIndex); } }); } else { var cmpts = isString(mainType) ? componentsMap.get(mainType) : isObject$3(mainType) ? this.findComponents(mainType) : null; for (var i = 0; cmpts && i < cmpts.length; i++) { var cmpt = cmpts[i]; cmpt && cb.call(context, cmpt, cmpt.componentIndex); } } }; GlobalModel2.prototype.getSeriesByName = function(name) { var nameStr = convertOptionIdName(name, null); return filter(this._componentsMap.get("series"), function(oneSeries) { return !!oneSeries && nameStr != null && oneSeries.name === nameStr; }); }; GlobalModel2.prototype.getSeriesByIndex = function(seriesIndex) { return this._componentsMap.get("series")[seriesIndex]; }; GlobalModel2.prototype.getSeriesByType = function(subType) { return filter(this._componentsMap.get("series"), function(oneSeries) { return !!oneSeries && oneSeries.subType === subType; }); }; GlobalModel2.prototype.getSeries = function() { return filter(this._componentsMap.get("series"), function(oneSeries) { return !!oneSeries; }); }; GlobalModel2.prototype.getSeriesCount = function() { return this._componentsCount.get("series"); }; GlobalModel2.prototype.eachSeries = function(cb, context) { assertSeriesInitialized(this); each$g(this._seriesIndices, function(rawSeriesIndex) { var series = this._componentsMap.get("series")[rawSeriesIndex]; cb.call(context, series, rawSeriesIndex); }, this); }; GlobalModel2.prototype.eachRawSeries = function(cb, context) { each$g(this._componentsMap.get("series"), function(series) { series && cb.call(context, series, series.componentIndex); }); }; GlobalModel2.prototype.eachSeriesByType = function(subType, cb, context) { assertSeriesInitialized(this); each$g(this._seriesIndices, function(rawSeriesIndex) { var series = this._componentsMap.get("series")[rawSeriesIndex]; if (series.subType === subType) { cb.call(context, series, rawSeriesIndex); } }, this); }; GlobalModel2.prototype.eachRawSeriesByType = function(subType, cb, context) { return each$g(this.getSeriesByType(subType), cb, context); }; GlobalModel2.prototype.isSeriesFiltered = function(seriesModel) { assertSeriesInitialized(this); return this._seriesIndicesMap.get(seriesModel.componentIndex) == null; }; GlobalModel2.prototype.getCurrentSeriesIndices = function() { return (this._seriesIndices || []).slice(); }; GlobalModel2.prototype.filterSeries = function(cb, context) { assertSeriesInitialized(this); var newSeriesIndices = []; each$g(this._seriesIndices, function(seriesRawIdx) { var series = this._componentsMap.get("series")[seriesRawIdx]; cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx); }, this); this._seriesIndices = newSeriesIndices; this._seriesIndicesMap = createHashMap(newSeriesIndices); }; GlobalModel2.prototype.restoreData = function(payload) { reCreateSeriesIndices(this); var componentsMap = this._componentsMap; var componentTypes = []; componentsMap.each(function(components, componentType) { if (ComponentModel$1.hasClass(componentType)) { componentTypes.push(componentType); } }); ComponentModel$1.topologicalTravel(componentTypes, ComponentModel$1.getAllClassMainTypes(), function(componentType) { each$g(componentsMap.get(componentType), function(component) { if (component && (componentType !== "series" || !isNotTargetSeries(component, payload))) { component.restoreData(); } }); }); }; GlobalModel2.internalField = function() { reCreateSeriesIndices = function(ecModel) { var seriesIndices = ecModel._seriesIndices = []; each$g(ecModel._componentsMap.get("series"), function(series) { series && seriesIndices.push(series.componentIndex); }); ecModel._seriesIndicesMap = createHashMap(seriesIndices); }; assertSeriesInitialized = function(ecModel) { }; initBase = function(ecModel, baseOption) { ecModel.option = {}; ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE; ecModel._componentsMap = createHashMap({ series: [] }); ecModel._componentsCount = createHashMap(); var airaOption = baseOption.aria; if (isObject$3(airaOption) && airaOption.enabled == null) { airaOption.enabled = true; } mergeTheme(baseOption, ecModel._theme.option); merge(baseOption, globalDefault, false); ecModel._mergeOption(baseOption, null); }; }(); return GlobalModel2; }(Model$1); function isNotTargetSeries(seriesModel, payload) { if (payload) { var index = payload.seriesIndex; var id = payload.seriesId; var name_1 = payload.seriesName; return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1; } } function mergeTheme(option, theme2) { var notMergeColorLayer = option.color && !option.colorLayer; each$g(theme2, function(themeItem, name) { if (name === "colorLayer" && notMergeColorLayer) { return; } if (!ComponentModel$1.hasClass(name)) { if (typeof themeItem === "object") { option[name] = !option[name] ? clone$4(themeItem) : merge(option[name], themeItem, false); } else { if (option[name] == null) { option[name] = themeItem; } } } }); } function queryByIdOrName(attr2, idOrName, cmpts) { if (isArray$1(idOrName)) { var keyMap_1 = createHashMap(); each$g(idOrName, function(idOrNameItem) { if (idOrNameItem != null) { var idName = convertOptionIdName(idOrNameItem, null); idName != null && keyMap_1.set(idOrNameItem, true); } }); return filter(cmpts, function(cmpt) { return cmpt && keyMap_1.get(cmpt[attr2]); }); } else { var idName_1 = convertOptionIdName(idOrName, null); return filter(cmpts, function(cmpt) { return cmpt && idName_1 != null && cmpt[attr2] === idName_1; }); } } function filterBySubType(components, condition) { return condition.hasOwnProperty("subType") ? filter(components, function(cmpt) { return cmpt && cmpt.subType === condition.subType; }) : components; } function normalizeSetOptionInput(opts) { var replaceMergeMainTypeMap = createHashMap(); opts && each$g(normalizeToArray(opts.replaceMerge), function(mainType) { replaceMergeMainTypeMap.set(mainType, true); }); return { replaceMergeMainTypeMap }; } mixin(GlobalModel, PaletteMixin); var GlobalModel$1 = GlobalModel; var availableMethods = [ "getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getOption", "getId", "updateLabelLayout" ]; var ExtensionAPI = function() { function ExtensionAPI2(ecInstance) { each$g(availableMethods, function(methodName) { this[methodName] = bind$2(ecInstance[methodName], ecInstance); }, this); } return ExtensionAPI2; }(); var ExtensionAPI$1 = ExtensionAPI; var coordinateSystemCreators = {}; var CoordinateSystemManager = function() { function CoordinateSystemManager2() { this._coordinateSystems = []; } CoordinateSystemManager2.prototype.create = function(ecModel, api) { var coordinateSystems = []; each$g(coordinateSystemCreators, function(creater, type) { var list2 = creater.create(ecModel, api); coordinateSystems = coordinateSystems.concat(list2 || []); }); this._coordinateSystems = coordinateSystems; }; CoordinateSystemManager2.prototype.update = function(ecModel, api) { each$g(this._coordinateSystems, function(coordSys) { coordSys.update && coordSys.update(ecModel, api); }); }; CoordinateSystemManager2.prototype.getCoordinateSystems = function() { return this._coordinateSystems.slice(); }; CoordinateSystemManager2.register = function(type, creator) { coordinateSystemCreators[type] = creator; }; CoordinateSystemManager2.get = function(type) { return coordinateSystemCreators[type]; }; return CoordinateSystemManager2; }(); var CoordinateSystem = CoordinateSystemManager; var QUERY_REG = /^(min|max)?(.+)$/; var OptionManager = function() { function OptionManager2(api) { this._timelineOptions = []; this._mediaList = []; this._currentMediaIndices = []; this._api = api; } OptionManager2.prototype.setOption = function(rawOption, optionPreprocessorFuncs2, opt) { if (rawOption) { each$g(normalizeToArray(rawOption.series), function(series) { series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data); }); each$g(normalizeToArray(rawOption.dataset), function(dataset) { dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source); }); } rawOption = clone$4(rawOption); var optionBackup = this._optionBackup; var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs2, !optionBackup); this._newBaseOption = newParsedOption.baseOption; if (optionBackup) { if (newParsedOption.timelineOptions.length) { optionBackup.timelineOptions = newParsedOption.timelineOptions; } if (newParsedOption.mediaList.length) { optionBackup.mediaList = newParsedOption.mediaList; } if (newParsedOption.mediaDefault) { optionBackup.mediaDefault = newParsedOption.mediaDefault; } } else { this._optionBackup = newParsedOption; } }; OptionManager2.prototype.mountOption = function(isRecreate) { var optionBackup = this._optionBackup; this._timelineOptions = optionBackup.timelineOptions; this._mediaList = optionBackup.mediaList; this._mediaDefault = optionBackup.mediaDefault; this._currentMediaIndices = []; return clone$4(isRecreate ? optionBackup.baseOption : this._newBaseOption); }; OptionManager2.prototype.getTimelineOption = function(ecModel) { var option; var timelineOptions = this._timelineOptions; if (timelineOptions.length) { var timelineModel = ecModel.getComponent("timeline"); if (timelineModel) { option = clone$4(timelineOptions[timelineModel.getCurrentIndex()]); } } return option; }; OptionManager2.prototype.getMediaOption = function(ecModel) { var ecWidth = this._api.getWidth(); var ecHeight = this._api.getHeight(); var mediaList = this._mediaList; var mediaDefault = this._mediaDefault; var indices = []; var result = []; if (!mediaList.length && !mediaDefault) { return result; } for (var i = 0, len2 = mediaList.length; i < len2; i++) { if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) { indices.push(i); } } if (!indices.length && mediaDefault) { indices = [-1]; } if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) { result = map$1(indices, function(index) { return clone$4(index === -1 ? mediaDefault.option : mediaList[index].option); }); } this._currentMediaIndices = indices; return result; }; return OptionManager2; }(); function parseRawOption(rawOption, optionPreprocessorFuncs2, isNew) { var mediaList = []; var mediaDefault; var baseOption; var declaredBaseOption = rawOption.baseOption; var timelineOnRoot = rawOption.timeline; var timelineOptionsOnRoot = rawOption.options; var mediaOnRoot = rawOption.media; var hasMedia = !!rawOption.media; var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline); if (declaredBaseOption) { baseOption = declaredBaseOption; if (!baseOption.timeline) { baseOption.timeline = timelineOnRoot; } } else { if (hasTimeline || hasMedia) { rawOption.options = rawOption.media = null; } baseOption = rawOption; } if (hasMedia) { if (isArray$1(mediaOnRoot)) { each$g(mediaOnRoot, function(singleMedia) { if (singleMedia && singleMedia.option) { if (singleMedia.query) { mediaList.push(singleMedia); } else if (!mediaDefault) { mediaDefault = singleMedia; } } }); } } doPreprocess(baseOption); each$g(timelineOptionsOnRoot, function(option) { return doPreprocess(option); }); each$g(mediaList, function(media) { return doPreprocess(media.option); }); function doPreprocess(option) { each$g(optionPreprocessorFuncs2, function(preProcess) { preProcess(option, isNew); }); } return { baseOption, timelineOptions: timelineOptionsOnRoot || [], mediaDefault, mediaList }; } function applyMediaQuery(query, ecWidth, ecHeight) { var realMap = { width: ecWidth, height: ecHeight, aspectratio: ecWidth / ecHeight }; var applicatable = true; each$g(query, function(value, attr2) { var matched = attr2.match(QUERY_REG); if (!matched || !matched[1] || !matched[2]) { return; } var operator = matched[1]; var realAttr = matched[2].toLowerCase(); if (!compare(realMap[realAttr], value, operator)) { applicatable = false; } }); return applicatable; } function compare(real, expect, operator) { if (operator === "min") { return real >= expect; } else if (operator === "max") { return real <= expect; } else { return real === expect; } } function indicesEquals(indices1, indices2) { return indices1.join(",") === indices2.join(","); } var OptionManager$1 = OptionManager; var each$e = each$g; var isObject$2 = isObject$3; var POSSIBLE_STYLES = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"]; function compatEC2ItemStyle(opt) { var itemStyleOpt = opt && opt.itemStyle; if (!itemStyleOpt) { return; } for (var i = 0, len2 = POSSIBLE_STYLES.length; i < len2; i++) { var styleName = POSSIBLE_STYLES[i]; var normalItemStyleOpt = itemStyleOpt.normal; var emphasisItemStyleOpt = itemStyleOpt.emphasis; if (normalItemStyleOpt && normalItemStyleOpt[styleName]) { opt[styleName] = opt[styleName] || {}; if (!opt[styleName].normal) { opt[styleName].normal = normalItemStyleOpt[styleName]; } else { merge(opt[styleName].normal, normalItemStyleOpt[styleName]); } normalItemStyleOpt[styleName] = null; } if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) { opt[styleName] = opt[styleName] || {}; if (!opt[styleName].emphasis) { opt[styleName].emphasis = emphasisItemStyleOpt[styleName]; } else { merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]); } emphasisItemStyleOpt[styleName] = null; } } } function convertNormalEmphasis(opt, optType, useExtend) { if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) { var normalOpt = opt[optType].normal; var emphasisOpt = opt[optType].emphasis; if (normalOpt) { if (useExtend) { opt[optType].normal = opt[optType].emphasis = null; defaults(opt[optType], normalOpt); } else { opt[optType] = normalOpt; } } if (emphasisOpt) { opt.emphasis = opt.emphasis || {}; opt.emphasis[optType] = emphasisOpt; if (emphasisOpt.focus) { opt.emphasis.focus = emphasisOpt.focus; } if (emphasisOpt.blurScope) { opt.emphasis.blurScope = emphasisOpt.blurScope; } } } } function removeEC3NormalStatus(opt) { convertNormalEmphasis(opt, "itemStyle"); convertNormalEmphasis(opt, "lineStyle"); convertNormalEmphasis(opt, "areaStyle"); convertNormalEmphasis(opt, "label"); convertNormalEmphasis(opt, "labelLine"); convertNormalEmphasis(opt, "upperLabel"); convertNormalEmphasis(opt, "edgeLabel"); } function compatTextStyle(opt, propName) { var labelOptSingle = isObject$2(opt) && opt[propName]; var textStyle = isObject$2(labelOptSingle) && labelOptSingle.textStyle; if (textStyle) { for (var i = 0, len2 = TEXT_STYLE_OPTIONS.length; i < len2; i++) { var textPropName = TEXT_STYLE_OPTIONS[i]; if (textStyle.hasOwnProperty(textPropName)) { labelOptSingle[textPropName] = textStyle[textPropName]; } } } } function compatEC3CommonStyles(opt) { if (opt) { removeEC3NormalStatus(opt); compatTextStyle(opt, "label"); opt.emphasis && compatTextStyle(opt.emphasis, "label"); } } function processSeries(seriesOpt) { if (!isObject$2(seriesOpt)) { return; } compatEC2ItemStyle(seriesOpt); removeEC3NormalStatus(seriesOpt); compatTextStyle(seriesOpt, "label"); compatTextStyle(seriesOpt, "upperLabel"); compatTextStyle(seriesOpt, "edgeLabel"); if (seriesOpt.emphasis) { compatTextStyle(seriesOpt.emphasis, "label"); compatTextStyle(seriesOpt.emphasis, "upperLabel"); compatTextStyle(seriesOpt.emphasis, "edgeLabel"); } var markPoint = seriesOpt.markPoint; if (markPoint) { compatEC2ItemStyle(markPoint); compatEC3CommonStyles(markPoint); } var markLine = seriesOpt.markLine; if (markLine) { compatEC2ItemStyle(markLine); compatEC3CommonStyles(markLine); } var markArea = seriesOpt.markArea; if (markArea) { compatEC3CommonStyles(markArea); } var data = seriesOpt.data; if (seriesOpt.type === "graph") { data = data || seriesOpt.nodes; var edgeData = seriesOpt.links || seriesOpt.edges; if (edgeData && !isTypedArray(edgeData)) { for (var i = 0; i < edgeData.length; i++) { compatEC3CommonStyles(edgeData[i]); } } each$g(seriesOpt.categories, function(opt) { removeEC3NormalStatus(opt); }); } if (data && !isTypedArray(data)) { for (var i = 0; i < data.length; i++) { compatEC3CommonStyles(data[i]); } } markPoint = seriesOpt.markPoint; if (markPoint && markPoint.data) { var mpData = markPoint.data; for (var i = 0; i < mpData.length; i++) { compatEC3CommonStyles(mpData[i]); } } markLine = seriesOpt.markLine; if (markLine && markLine.data) { var mlData = markLine.data; for (var i = 0; i < mlData.length; i++) { if (isArray$1(mlData[i])) { compatEC3CommonStyles(mlData[i][0]); compatEC3CommonStyles(mlData[i][1]); } else { compatEC3CommonStyles(mlData[i]); } } } if (seriesOpt.type === "gauge") { compatTextStyle(seriesOpt, "axisLabel"); compatTextStyle(seriesOpt, "title"); compatTextStyle(seriesOpt, "detail"); } else if (seriesOpt.type === "treemap") { convertNormalEmphasis(seriesOpt.breadcrumb, "itemStyle"); each$g(seriesOpt.levels, function(opt) { removeEC3NormalStatus(opt); }); } else if (seriesOpt.type === "tree") { removeEC3NormalStatus(seriesOpt.leaves); } } function toArr(o) { return isArray$1(o) ? o : o ? [o] : []; } function toObj(o) { return (isArray$1(o) ? o[0] : o) || {}; } function globalCompatStyle(option, isTheme) { each$e(toArr(option.series), function(seriesOpt) { isObject$2(seriesOpt) && processSeries(seriesOpt); }); var axes = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; isTheme && axes.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"); each$e(axes, function(axisName) { each$e(toArr(option[axisName]), function(axisOpt) { if (axisOpt) { compatTextStyle(axisOpt, "axisLabel"); compatTextStyle(axisOpt.axisPointer, "label"); } }); }); each$e(toArr(option.parallel), function(parallelOpt) { var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault; compatTextStyle(parallelAxisDefault, "axisLabel"); compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, "label"); }); each$e(toArr(option.calendar), function(calendarOpt) { convertNormalEmphasis(calendarOpt, "itemStyle"); compatTextStyle(calendarOpt, "dayLabel"); compatTextStyle(calendarOpt, "monthLabel"); compatTextStyle(calendarOpt, "yearLabel"); }); each$e(toArr(option.radar), function(radarOpt) { compatTextStyle(radarOpt, "name"); if (radarOpt.name && radarOpt.axisName == null) { radarOpt.axisName = radarOpt.name; delete radarOpt.name; } if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) { radarOpt.axisNameGap = radarOpt.nameGap; delete radarOpt.nameGap; } }); each$e(toArr(option.geo), function(geoOpt) { if (isObject$2(geoOpt)) { compatEC3CommonStyles(geoOpt); each$e(toArr(geoOpt.regions), function(regionObj) { compatEC3CommonStyles(regionObj); }); } }); each$e(toArr(option.timeline), function(timelineOpt) { compatEC3CommonStyles(timelineOpt); convertNormalEmphasis(timelineOpt, "label"); convertNormalEmphasis(timelineOpt, "itemStyle"); convertNormalEmphasis(timelineOpt, "controlStyle", true); var data = timelineOpt.data; isArray$1(data) && each$g(data, function(item) { if (isObject$3(item)) { convertNormalEmphasis(item, "label"); convertNormalEmphasis(item, "itemStyle"); } }); }); each$e(toArr(option.toolbox), function(toolboxOpt) { convertNormalEmphasis(toolboxOpt, "iconStyle"); each$e(toolboxOpt.feature, function(featureOpt) { convertNormalEmphasis(featureOpt, "iconStyle"); }); }); compatTextStyle(toObj(option.axisPointer), "label"); compatTextStyle(toObj(option.tooltip).axisPointer, "label"); } function get(opt, path) { var pathArr = path.split(","); var obj = opt; for (var i = 0; i < pathArr.length; i++) { obj = obj && obj[pathArr[i]]; if (obj == null) { break; } } return obj; } function set(opt, path, val, overwrite) { var pathArr = path.split(","); var obj = opt; var key2; var i = 0; for (; i < pathArr.length - 1; i++) { key2 = pathArr[i]; if (obj[key2] == null) { obj[key2] = {}; } obj = obj[key2]; } if (overwrite || obj[pathArr[i]] == null) { obj[pathArr[i]] = val; } } function compatLayoutProperties(option) { option && each$g(LAYOUT_PROPERTIES, function(prop) { if (prop[0] in option && !(prop[1] in option)) { option[prop[1]] = option[prop[0]]; } }); } var LAYOUT_PROPERTIES = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]]; var COMPATITABLE_COMPONENTS = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"]; var BAR_ITEM_STYLE_MAP = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]]; function compatBarItemStyle(option) { var itemStyle = option && option.itemStyle; if (itemStyle) { for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) { var oldName = BAR_ITEM_STYLE_MAP[i][1]; var newName = BAR_ITEM_STYLE_MAP[i][0]; if (itemStyle[oldName] != null) { itemStyle[newName] = itemStyle[oldName]; } } } } function compatPieLabel(option) { if (!option) { return; } if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) { option.edgeDistance = option.margin; } } function compatSunburstState(option) { if (!option) { return; } if (option.downplay && !option.blur) { option.blur = option.downplay; } } function compatGraphFocus(option) { if (!option) { return; } if (option.focusNodeAdjacency != null) { option.emphasis = option.emphasis || {}; if (option.emphasis.focus == null) { option.emphasis.focus = "adjacency"; } } } function traverseTree(data, cb) { if (data) { for (var i = 0; i < data.length; i++) { cb(data[i]); data[i] && traverseTree(data[i].children, cb); } } } function globalBackwardCompat(option, isTheme) { globalCompatStyle(option, isTheme); option.series = normalizeToArray(option.series); each$g(option.series, function(seriesOpt) { if (!isObject$3(seriesOpt)) { return; } var seriesType2 = seriesOpt.type; if (seriesType2 === "line") { if (seriesOpt.clipOverflow != null) { seriesOpt.clip = seriesOpt.clipOverflow; } } else if (seriesType2 === "pie" || seriesType2 === "gauge") { if (seriesOpt.clockWise != null) { seriesOpt.clockwise = seriesOpt.clockWise; } compatPieLabel(seriesOpt.label); var data = seriesOpt.data; if (data && !isTypedArray(data)) { for (var i = 0; i < data.length; i++) { compatPieLabel(data[i]); } } if (seriesOpt.hoverOffset != null) { seriesOpt.emphasis = seriesOpt.emphasis || {}; if (seriesOpt.emphasis.scaleSize = null) { seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset; } } } else if (seriesType2 === "gauge") { var pointerColor = get(seriesOpt, "pointer.color"); pointerColor != null && set(seriesOpt, "itemStyle.color", pointerColor); } else if (seriesType2 === "bar") { compatBarItemStyle(seriesOpt); compatBarItemStyle(seriesOpt.backgroundStyle); compatBarItemStyle(seriesOpt.emphasis); var data = seriesOpt.data; if (data && !isTypedArray(data)) { for (var i = 0; i < data.length; i++) { if (typeof data[i] === "object") { compatBarItemStyle(data[i]); compatBarItemStyle(data[i] && data[i].emphasis); } } } } else if (seriesType2 === "sunburst") { var highlightPolicy = seriesOpt.highlightPolicy; if (highlightPolicy) { seriesOpt.emphasis = seriesOpt.emphasis || {}; if (!seriesOpt.emphasis.focus) { seriesOpt.emphasis.focus = highlightPolicy; } } compatSunburstState(seriesOpt); traverseTree(seriesOpt.data, compatSunburstState); } else if (seriesType2 === "graph" || seriesType2 === "sankey") { compatGraphFocus(seriesOpt); } else if (seriesType2 === "map") { if (seriesOpt.mapType && !seriesOpt.map) { seriesOpt.map = seriesOpt.mapType; } if (seriesOpt.mapLocation) { defaults(seriesOpt, seriesOpt.mapLocation); } } if (seriesOpt.hoverAnimation != null) { seriesOpt.emphasis = seriesOpt.emphasis || {}; if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) { seriesOpt.emphasis.scale = seriesOpt.hoverAnimation; } } compatLayoutProperties(seriesOpt); }); if (option.dataRange) { option.visualMap = option.dataRange; } each$g(COMPATITABLE_COMPONENTS, function(componentName) { var options = option[componentName]; if (options) { if (!isArray$1(options)) { options = [options]; } each$g(options, function(option2) { compatLayoutProperties(option2); }); } }); } function dataStack$1(ecModel) { var stackInfoMap = createHashMap(); ecModel.eachSeries(function(seriesModel) { var stack = seriesModel.get("stack"); if (stack) { var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []); var data = seriesModel.getData(); var stackInfo = { stackResultDimension: data.getCalculationInfo("stackResultDimension"), stackedOverDimension: data.getCalculationInfo("stackedOverDimension"), stackedDimension: data.getCalculationInfo("stackedDimension"), stackedByDimension: data.getCalculationInfo("stackedByDimension"), isStackedByIndex: data.getCalculationInfo("isStackedByIndex"), data, seriesModel }; if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) { return; } stackInfoList.length && data.setCalculationInfo("stackedOnSeries", stackInfoList[stackInfoList.length - 1].seriesModel); stackInfoList.push(stackInfo); } }); stackInfoMap.each(calculateStack); } function calculateStack(stackInfoList) { each$g(stackInfoList, function(targetStackInfo, idxInStack) { var resultVal = []; var resultNaN = [NaN, NaN]; var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension]; var targetData = targetStackInfo.data; var isStackedByIndex = targetStackInfo.isStackedByIndex; targetData.modify(dims, function(v0, v12, dataIndex) { var sum2 = targetData.get(targetStackInfo.stackedDimension, dataIndex); if (isNaN(sum2)) { return resultNaN; } var byValue; var stackedDataRawIndex; if (isStackedByIndex) { stackedDataRawIndex = targetData.getRawIndex(dataIndex); } else { byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex); } var stackedOver = NaN; for (var j = idxInStack - 1; j >= 0; j--) { var stackInfo = stackInfoList[j]; if (!isStackedByIndex) { stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue); } if (stackedDataRawIndex >= 0) { var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); if (sum2 >= 0 && val > 0 || sum2 <= 0 && val < 0) { sum2 = addSafe(sum2, val); stackedOver = val; break; } } } resultVal[0] = sum2; resultVal[1] = stackedOver; return resultVal; }); }); } var SourceImpl = function() { function SourceImpl2(fields) { this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []); this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN; this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN; this.startIndex = fields.startIndex || 0; this.dimensionsDetectedCount = fields.dimensionsDetectedCount; this.metaRawOption = fields.metaRawOption; var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine; if (dimensionsDefine) { for (var i = 0; i < dimensionsDefine.length; i++) { var dim = dimensionsDefine[i]; if (dim.type == null) { if (guessOrdinal(this, i) === BE_ORDINAL.Must) { dim.type = "ordinal"; } } } } } return SourceImpl2; }(); function isSourceInstance(val) { return val instanceof SourceImpl; } function createSource(sourceData, thisMetaRawOption, sourceFormat) { sourceFormat = sourceFormat || detectSourceFormat(sourceData); var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy; var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions); var source = new SourceImpl({ data: sourceData, sourceFormat, seriesLayoutBy, dimensionsDefine: determined.dimensionsDefine, startIndex: determined.startIndex, dimensionsDetectedCount: determined.dimensionsDetectedCount, metaRawOption: clone$4(thisMetaRawOption) }); return source; } function createSourceFromSeriesDataOption(data) { return new SourceImpl({ data, sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL }); } function cloneSourceShallow(source) { return new SourceImpl({ data: source.data, sourceFormat: source.sourceFormat, seriesLayoutBy: source.seriesLayoutBy, dimensionsDefine: clone$4(source.dimensionsDefine), startIndex: source.startIndex, dimensionsDetectedCount: source.dimensionsDetectedCount }); } function detectSourceFormat(data) { var sourceFormat = SOURCE_FORMAT_UNKNOWN; if (isTypedArray(data)) { sourceFormat = SOURCE_FORMAT_TYPED_ARRAY; } else if (isArray$1(data)) { if (data.length === 0) { sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; } for (var i = 0, len2 = data.length; i < len2; i++) { var item = data[i]; if (item == null) { continue; } else if (isArray$1(item)) { sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; break; } else if (isObject$3(item)) { sourceFormat = SOURCE_FORMAT_OBJECT_ROWS; break; } } } else if (isObject$3(data)) { for (var key2 in data) { if (hasOwn(data, key2) && isArrayLike(data[key2])) { sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS; break; } } } return sourceFormat; } function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) { var dimensionsDetectedCount; var startIndex; if (!data) { return { dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), startIndex, dimensionsDetectedCount }; } if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { var dataArrayRows = data; if (sourceHeader === "auto" || sourceHeader == null) { arrayRowsTravelFirst(function(val) { if (val != null && val !== "-") { if (isString(val)) { startIndex == null && (startIndex = 1); } else { startIndex = 0; } } }, seriesLayoutBy, dataArrayRows, 10); } else { startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0; } if (!dimensionsDefine && startIndex === 1) { dimensionsDefine = []; arrayRowsTravelFirst(function(val, index) { dimensionsDefine[index] = val != null ? val + "" : ""; }, seriesLayoutBy, dataArrayRows, Infinity); } dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null; } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { if (!dimensionsDefine) { dimensionsDefine = objectRowsCollectDimensions(data); } } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { if (!dimensionsDefine) { dimensionsDefine = []; each$g(data, function(colArr, key2) { dimensionsDefine.push(key2); }); } } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { var value0 = getDataItemValue(data[0]); dimensionsDetectedCount = isArray$1(value0) && value0.length || 1; } else ; return { startIndex, dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), dimensionsDetectedCount }; } function objectRowsCollectDimensions(data) { var firstIndex = 0; var obj; while (firstIndex < data.length && !(obj = data[firstIndex++])) { } if (obj) { var dimensions_1 = []; each$g(obj, function(value, key2) { dimensions_1.push(key2); }); return dimensions_1; } } function normalizeDimensionsOption(dimensionsDefine) { if (!dimensionsDefine) { return; } var nameMap = createHashMap(); return map$1(dimensionsDefine, function(rawItem, index) { rawItem = isObject$3(rawItem) ? rawItem : { name: rawItem }; var item = { name: rawItem.name, displayName: rawItem.displayName, type: rawItem.type }; if (item.name == null) { return item; } item.name += ""; if (item.displayName == null) { item.displayName = item.name; } var exist = nameMap.get(item.name); if (!exist) { nameMap.set(item.name, { count: 1 }); } else { item.name += "-" + exist.count++; } return item; }); } function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) { if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { for (var i = 0; i < data.length && i < maxLoop; i++) { cb(data[i] ? data[i][0] : null, i); } } else { var value0 = data[0] || []; for (var i = 0; i < value0.length && i < maxLoop; i++) { cb(value0[i], i); } } } function shouldRetrieveDataByName(source) { var sourceFormat = source.sourceFormat; return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS; } var _a, _b, _c; var providerMethods; var mountMethods; var DefaultDataProvider = function() { function DefaultDataProvider2(sourceParam, dimSize) { var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam; this._source = source; var data = this._data = source.data; if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { this._offset = 0; this._dimSize = dimSize; this._data = data; } mountMethods(this, data, source); } DefaultDataProvider2.prototype.getSource = function() { return this._source; }; DefaultDataProvider2.prototype.count = function() { return 0; }; DefaultDataProvider2.prototype.getItem = function(idx, out2) { return; }; DefaultDataProvider2.prototype.appendData = function(newData) { }; DefaultDataProvider2.prototype.clean = function() { }; DefaultDataProvider2.protoInitialize = function() { var proto2 = DefaultDataProvider2.prototype; proto2.pure = false; proto2.persistent = true; }(); DefaultDataProvider2.internalField = function() { var _a2; mountMethods = function(provider, data, source) { var sourceFormat = source.sourceFormat; var seriesLayoutBy = source.seriesLayoutBy; var startIndex = source.startIndex; var dimsDef = source.dimensionsDefine; var methods2 = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)]; extend(provider, methods2); if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { provider.getItem = getItemForTypedArray; provider.count = countForTypedArray; provider.fillStorage = fillStorageForTypedArray; } else { var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy); provider.getItem = bind$2(rawItemGetter, null, data, startIndex, dimsDef); var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy); provider.count = bind$2(rawCounter, null, data, startIndex, dimsDef); } }; var getItemForTypedArray = function(idx, out2) { idx = idx - this._offset; out2 = out2 || []; var data = this._data; var dimSize = this._dimSize; var offset = dimSize * idx; for (var i = 0; i < dimSize; i++) { out2[i] = data[offset + i]; } return out2; }; var fillStorageForTypedArray = function(start2, end2, storage2, extent3) { var data = this._data; var dimSize = this._dimSize; for (var dim = 0; dim < dimSize; dim++) { var dimExtent = extent3[dim]; var min3 = dimExtent[0] == null ? Infinity : dimExtent[0]; var max3 = dimExtent[1] == null ? -Infinity : dimExtent[1]; var count2 = end2 - start2; var arr = storage2[dim]; for (var i = 0; i < count2; i++) { var val = data[i * dimSize + dim]; arr[start2 + i] = val; val < min3 && (min3 = val); val > max3 && (max3 = val); } dimExtent[0] = min3; dimExtent[1] = max3; } }; var countForTypedArray = function() { return this._data ? this._data.length / this._dimSize : 0; }; providerMethods = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = { pure: true, appendData: appendDataSimply }, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = { pure: true, appendData: function() { throw new Error('Do not support appendData when set seriesLayoutBy: "row".'); } }, _a2[SOURCE_FORMAT_OBJECT_ROWS] = { pure: true, appendData: appendDataSimply }, _a2[SOURCE_FORMAT_KEYED_COLUMNS] = { pure: true, appendData: function(newData) { var data = this._data; each$g(newData, function(newCol, key2) { var oldCol = data[key2] || (data[key2] = []); for (var i = 0; i < (newCol || []).length; i++) { oldCol.push(newCol[i]); } }); } }, _a2[SOURCE_FORMAT_ORIGINAL] = { appendData: appendDataSimply }, _a2[SOURCE_FORMAT_TYPED_ARRAY] = { persistent: false, pure: true, appendData: function(newData) { this._data = newData; }, clean: function() { this._offset += this.count(); this._data = null; } }, _a2); function appendDataSimply(newData) { for (var i = 0; i < newData.length; i++) { this._data.push(newData[i]); } } }(); return DefaultDataProvider2; }(); var getItemSimply = function(rawData, startIndex, dimsDef, idx) { return rawData[idx]; }; var rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef, idx) { return rawData[idx + startIndex]; }, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef, idx, out2) { idx += startIndex; var item = out2 || []; var data = rawData; for (var i = 0; i < data.length; i++) { var row = data[i]; item[i] = row ? row[idx] : null; } return item; }, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef, idx, out2) { var item = out2 || []; for (var i = 0; i < dimsDef.length; i++) { var dimName = dimsDef[i].name; var col = rawData[dimName]; item[i] = col ? col[idx] : null; } return item; }, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a); function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) { var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; return method; } var countSimply = function(rawData, startIndex, dimsDef) { return rawData.length; }; var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef) { return Math.max(0, rawData.length - startIndex); }, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef) { var row = rawData[0]; return row ? Math.max(0, row.length - startIndex) : 0; }, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef) { var dimName = dimsDef[0].name; var col = rawData[dimName]; return col ? col.length : 0; }, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b); function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) { var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; return method; } var getRawValueSimply = function(dataItem, dimIndex, property) { return dataItem[dimIndex]; }; var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function(dataItem, dimIndex, property) { return dataItem[property]; }, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function(dataItem, dimIndex, property) { var value = getDataItemValue(dataItem); return !(value instanceof Array) ? value : value[dimIndex]; }, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c); function getRawSourceValueGetter(sourceFormat) { var method = rawSourceValueGetterMap[sourceFormat]; return method; } function getMethodMapKey(sourceFormat, seriesLayoutBy) { return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + "_" + seriesLayoutBy : sourceFormat; } function retrieveRawValue(data, dataIndex, dim) { if (!data) { return; } var dataItem = data.getRawDataItem(dataIndex); if (dataItem == null) { return; } var store = data.getStore(); var sourceFormat = store.getSource().sourceFormat; if (dim != null) { var dimIndex = data.getDimensionIndex(dim); var property = store.getDimensionProperty(dimIndex); return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property); } else { var result = dataItem; if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { result = getDataItemValue(dataItem); } return result; } } var DIMENSION_LABEL_REG = /\{@(.+?)\}/g; var DataFormatMixin = function() { function DataFormatMixin2() { } DataFormatMixin2.prototype.getDataParams = function(dataIndex, dataType) { var data = this.getData(dataType); var rawValue = this.getRawValue(dataIndex, dataType); var rawDataIndex = data.getRawIndex(dataIndex); var name = data.getName(dataIndex); var itemOpt = data.getRawDataItem(dataIndex); var style = data.getItemVisual(dataIndex, "style"); var color2 = style && style[data.getItemVisual(dataIndex, "drawType") || "fill"]; var borderColor = style && style.stroke; var mainType = this.mainType; var isSeries2 = mainType === "series"; var userOutput = data.userOutput && data.userOutput.get(); return { componentType: mainType, componentSubType: this.subType, componentIndex: this.componentIndex, seriesType: isSeries2 ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: isSeries2 ? this.id : null, seriesName: isSeries2 ? this.name : null, name, dataIndex: rawDataIndex, data: itemOpt, dataType, value: rawValue, color: color2, borderColor, dimensionNames: userOutput ? userOutput.fullDimensions : null, encode: userOutput ? userOutput.encode : null, $vars: ["seriesName", "name", "value"] }; }; DataFormatMixin2.prototype.getFormattedLabel = function(dataIndex, status, dataType, labelDimIndex, formatter, extendParams) { status = status || "normal"; var data = this.getData(dataType); var params = this.getDataParams(dataIndex, dataType); if (extendParams) { params.value = extendParams.interpolatedValue; } if (labelDimIndex != null && isArray$1(params.value)) { params.value = params.value[labelDimIndex]; } if (!formatter) { var itemModel = data.getItemModel(dataIndex); formatter = itemModel.get(status === "normal" ? ["label", "formatter"] : [status, "label", "formatter"]); } if (typeof formatter === "function") { params.status = status; params.dimensionIndex = labelDimIndex; return formatter(params); } else if (typeof formatter === "string") { var str = formatTpl(formatter, params); return str.replace(DIMENSION_LABEL_REG, function(origin, dimStr) { var len2 = dimStr.length; var dimLoose = dimStr; if (dimLoose.charAt(0) === "[" && dimLoose.charAt(len2 - 1) === "]") { dimLoose = +dimLoose.slice(1, len2 - 1); } var val = retrieveRawValue(data, dataIndex, dimLoose); if (extendParams && isArray$1(extendParams.interpolatedValue)) { var dimIndex = data.getDimensionIndex(dimLoose); if (dimIndex >= 0) { val = extendParams.interpolatedValue[dimIndex]; } } return val != null ? val + "" : ""; }); } }; DataFormatMixin2.prototype.getRawValue = function(idx, dataType) { return retrieveRawValue(this.getData(dataType), idx); }; DataFormatMixin2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { return; }; return DataFormatMixin2; }(); function normalizeTooltipFormatResult(result) { var markupText; var markupFragment; if (isObject$3(result)) { if (result.type) { markupFragment = result; } } else { markupText = result; } return { markupText, markupFragment }; } function createTask(define) { return new Task(define); } var Task = function() { function Task2(define) { define = define || {}; this._reset = define.reset; this._plan = define.plan; this._count = define.count; this._onDirty = define.onDirty; this._dirty = true; } Task2.prototype.perform = function(performArgs) { var upTask = this._upstream; var skip = performArgs && performArgs.skip; if (this._dirty && upTask) { var context = this.context; context.data = context.outputData = upTask.context.outputData; } if (this.__pipeline) { this.__pipeline.currentTask = this; } var planResult; if (this._plan && !skip) { planResult = this._plan(this.context); } var lastModBy = normalizeModBy(this._modBy); var lastModDataCount = this._modDataCount || 0; var modBy = normalizeModBy(performArgs && performArgs.modBy); var modDataCount = performArgs && performArgs.modDataCount || 0; if (lastModBy !== modBy || lastModDataCount !== modDataCount) { planResult = "reset"; } function normalizeModBy(val) { !(val >= 1) && (val = 1); return val; } var forceFirstProgress; if (this._dirty || planResult === "reset") { this._dirty = false; forceFirstProgress = this._doReset(skip); } this._modBy = modBy; this._modDataCount = modDataCount; var step2 = performArgs && performArgs.step; if (upTask) { this._dueEnd = upTask._outputDueEnd; } else { this._dueEnd = this._count ? this._count(this.context) : Infinity; } if (this._progress) { var start2 = this._dueIndex; var end2 = Math.min(step2 != null ? this._dueIndex + step2 : Infinity, this._dueEnd); if (!skip && (forceFirstProgress || start2 < end2)) { var progress = this._progress; if (isArray$1(progress)) { for (var i = 0; i < progress.length; i++) { this._doProgress(progress[i], start2, end2, modBy, modDataCount); } } else { this._doProgress(progress, start2, end2, modBy, modDataCount); } } this._dueIndex = end2; var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end2; this._outputDueEnd = outputDueEnd; } else { this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd; } return this.unfinished(); }; Task2.prototype.dirty = function() { this._dirty = true; this._onDirty && this._onDirty(this.context); }; Task2.prototype._doProgress = function(progress, start2, end2, modBy, modDataCount) { iterator.reset(start2, end2, modBy, modDataCount); this._callingProgress = progress; this._callingProgress({ start: start2, end: end2, count: end2 - start2, next: iterator.next }, this.context); }; Task2.prototype._doReset = function(skip) { this._dueIndex = this._outputDueEnd = this._dueEnd = 0; this._settedOutputEnd = null; var progress; var forceFirstProgress; if (!skip && this._reset) { progress = this._reset(this.context); if (progress && progress.progress) { forceFirstProgress = progress.forceFirstProgress; progress = progress.progress; } if (isArray$1(progress) && !progress.length) { progress = null; } } this._progress = progress; this._modBy = this._modDataCount = null; var downstream = this._downstream; downstream && downstream.dirty(); return forceFirstProgress; }; Task2.prototype.unfinished = function() { return this._progress && this._dueIndex < this._dueEnd; }; Task2.prototype.pipe = function(downTask) { if (this._downstream !== downTask || this._dirty) { this._downstream = downTask; downTask._upstream = this; downTask.dirty(); } }; Task2.prototype.dispose = function() { if (this._disposed) { return; } this._upstream && (this._upstream._downstream = null); this._downstream && (this._downstream._upstream = null); this._dirty = false; this._disposed = true; }; Task2.prototype.getUpstream = function() { return this._upstream; }; Task2.prototype.getDownstream = function() { return this._downstream; }; Task2.prototype.setOutputEnd = function(end2) { this._outputDueEnd = this._settedOutputEnd = end2; }; return Task2; }(); var iterator = function() { var end2; var current; var modBy; var modDataCount; var winCount; var it = { reset: function(s, e2, sStep, sCount) { current = s; end2 = e2; modBy = sStep; modDataCount = sCount; winCount = Math.ceil(modDataCount / modBy); it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext; } }; return it; function sequentialNext() { return current < end2 ? current++ : null; } function modNext() { var dataIndex = current % winCount * modBy + Math.ceil(current / winCount); var result = current >= end2 ? null : dataIndex < modDataCount ? dataIndex : current; current++; return result; } }(); function parseDataValue(value, opt) { var dimType = opt && opt.type; if (dimType === "ordinal") { return value; } if (dimType === "time" && typeof value !== "number" && value != null && value !== "-") { value = +parseDate(value); } return value == null || value === "" ? NaN : +value; } var valueParserMap = createHashMap({ "number": function(val) { return parseFloat(val); }, "time": function(val) { return +parseDate(val); }, "trim": function(val) { return typeof val === "string" ? trim$1(val) : val; } }); function getRawValueParser(type) { return valueParserMap.get(type); } var ORDER_COMPARISON_OP_MAP = { lt: function(lval, rval) { return lval < rval; }, lte: function(lval, rval) { return lval <= rval; }, gt: function(lval, rval) { return lval > rval; }, gte: function(lval, rval) { return lval >= rval; } }; var FilterOrderComparator = function() { function FilterOrderComparator2(op, rval) { if (typeof rval !== "number") { var errMsg = ""; throwError(errMsg); } this._opFn = ORDER_COMPARISON_OP_MAP[op]; this._rvalFloat = numericToNumber(rval); } FilterOrderComparator2.prototype.evaluate = function(lval) { return typeof lval === "number" ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat); }; return FilterOrderComparator2; }(); var SortOrderComparator = function() { function SortOrderComparator2(order, incomparable) { var isDesc = order === "desc"; this._resultLT = isDesc ? 1 : -1; if (incomparable == null) { incomparable = isDesc ? "min" : "max"; } this._incomparable = incomparable === "min" ? -Infinity : Infinity; } SortOrderComparator2.prototype.evaluate = function(lval, rval) { var lvalTypeof = typeof lval; var rvalTypeof = typeof rval; var lvalFloat = lvalTypeof === "number" ? lval : numericToNumber(lval); var rvalFloat = rvalTypeof === "number" ? rval : numericToNumber(rval); var lvalNotNumeric = isNaN(lvalFloat); var rvalNotNumeric = isNaN(rvalFloat); if (lvalNotNumeric) { lvalFloat = this._incomparable; } if (rvalNotNumeric) { rvalFloat = this._incomparable; } if (lvalNotNumeric && rvalNotNumeric) { var lvalIsStr = lvalTypeof === "string"; var rvalIsStr = rvalTypeof === "string"; if (lvalIsStr) { lvalFloat = rvalIsStr ? lval : 0; } if (rvalIsStr) { rvalFloat = lvalIsStr ? rval : 0; } } return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0; }; return SortOrderComparator2; }(); var FilterEqualityComparator = function() { function FilterEqualityComparator2(isEq, rval) { this._rval = rval; this._isEQ = isEq; this._rvalTypeof = typeof rval; this._rvalFloat = numericToNumber(rval); } FilterEqualityComparator2.prototype.evaluate = function(lval) { var eqResult = lval === this._rval; if (!eqResult) { var lvalTypeof = typeof lval; if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) { eqResult = numericToNumber(lval) === this._rvalFloat; } } return this._isEQ ? eqResult : !eqResult; }; return FilterEqualityComparator2; }(); function createFilterComparator(op, rval) { return op === "eq" || op === "ne" ? new FilterEqualityComparator(op === "eq", rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null; } var ExternalSource = function() { function ExternalSource2() { } ExternalSource2.prototype.getRawData = function() { throw new Error("not supported"); }; ExternalSource2.prototype.getRawDataItem = function(dataIndex) { throw new Error("not supported"); }; ExternalSource2.prototype.cloneRawData = function() { return; }; ExternalSource2.prototype.getDimensionInfo = function(dim) { return; }; ExternalSource2.prototype.cloneAllDimensionInfo = function() { return; }; ExternalSource2.prototype.count = function() { return; }; ExternalSource2.prototype.retrieveValue = function(dataIndex, dimIndex) { return; }; ExternalSource2.prototype.retrieveValueFromItem = function(dataItem, dimIndex) { return; }; ExternalSource2.prototype.convertValue = function(rawVal, dimInfo) { return parseDataValue(rawVal, dimInfo); }; return ExternalSource2; }(); function createExternalSource(internalSource, externalTransform) { var extSource = new ExternalSource(); var data = internalSource.data; var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat; var sourceHeaderCount = internalSource.startIndex; var errMsg = ""; if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) { throwError(errMsg); } var dimensions = []; var dimsByName = {}; var dimsDef = internalSource.dimensionsDefine; if (dimsDef) { each$g(dimsDef, function(dimDef, idx) { var name = dimDef.name; var dimDefExt = { index: idx, name, displayName: dimDef.displayName }; dimensions.push(dimDefExt); if (name != null) { var errMsg_1 = ""; if (hasOwn(dimsByName, name)) { throwError(errMsg_1); } dimsByName[name] = dimDefExt; } }); } else { for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) { dimensions.push({ index: i }); } } var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); if (externalTransform.__isBuiltIn) { extSource.getRawDataItem = function(dataIndex) { return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); }; extSource.getRawData = bind$2(getRawData, null, internalSource); } extSource.cloneRawData = bind$2(cloneRawData, null, internalSource); var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); extSource.count = bind$2(rawCounter, null, data, sourceHeaderCount, dimensions); var rawValueGetter = getRawSourceValueGetter(sourceFormat); extSource.retrieveValue = function(dataIndex, dimIndex) { var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); return retrieveValueFromItem(rawItem, dimIndex); }; var retrieveValueFromItem = extSource.retrieveValueFromItem = function(dataItem, dimIndex) { if (dataItem == null) { return; } var dimDef = dimensions[dimIndex]; if (dimDef) { return rawValueGetter(dataItem, dimIndex, dimDef.name); } }; extSource.getDimensionInfo = bind$2(getDimensionInfo, null, dimensions, dimsByName); extSource.cloneAllDimensionInfo = bind$2(cloneAllDimensionInfo, null, dimensions); return extSource; } function getRawData(upstream) { var sourceFormat = upstream.sourceFormat; if (!isSupportedSourceFormat(sourceFormat)) { var errMsg = ""; throwError(errMsg); } return upstream.data; } function cloneRawData(upstream) { var sourceFormat = upstream.sourceFormat; var data = upstream.data; if (!isSupportedSourceFormat(sourceFormat)) { var errMsg = ""; throwError(errMsg); } if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { var result = []; for (var i = 0, len2 = data.length; i < len2; i++) { result.push(data[i].slice()); } return result; } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { var result = []; for (var i = 0, len2 = data.length; i < len2; i++) { result.push(extend({}, data[i])); } return result; } } function getDimensionInfo(dimensions, dimsByName, dim) { if (dim == null) { return; } if (typeof dim === "number" || !isNaN(dim) && !hasOwn(dimsByName, dim)) { return dimensions[dim]; } else if (hasOwn(dimsByName, dim)) { return dimsByName[dim]; } } function cloneAllDimensionInfo(dimensions) { return clone$4(dimensions); } var externalTransformMap = createHashMap(); function registerExternalTransform(externalTransform) { externalTransform = clone$4(externalTransform); var type = externalTransform.type; var errMsg = ""; if (!type) { throwError(errMsg); } var typeParsed = type.split(":"); if (typeParsed.length !== 2) { throwError(errMsg); } var isBuiltIn = false; if (typeParsed[0] === "echarts") { type = typeParsed[1]; isBuiltIn = true; } externalTransform.__isBuiltIn = isBuiltIn; externalTransformMap.set(type, externalTransform); } function applyDataTransform(rawTransOption, sourceList, infoForPrint) { var pipedTransOption = normalizeToArray(rawTransOption); var pipeLen = pipedTransOption.length; var errMsg = ""; if (!pipeLen) { throwError(errMsg); } for (var i = 0, len2 = pipeLen; i < len2; i++) { var transOption = pipedTransOption[i]; sourceList = applySingleDataTransform(transOption, sourceList); if (i !== len2 - 1) { sourceList.length = Math.max(sourceList.length, 1); } } return sourceList; } function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) { var errMsg = ""; if (!upSourceList.length) { throwError(errMsg); } if (!isObject$3(transOption)) { throwError(errMsg); } var transType = transOption.type; var externalTransform = externalTransformMap.get(transType); if (!externalTransform) { throwError(errMsg); } var extUpSourceList = map$1(upSourceList, function(upSource) { return createExternalSource(upSource, externalTransform); }); var resultList = normalizeToArray(externalTransform.transform({ upstream: extUpSourceList[0], upstreamList: extUpSourceList, config: clone$4(transOption.config) })); return map$1(resultList, function(result, resultIndex) { var errMsg2 = ""; if (!isObject$3(result)) { throwError(errMsg2); } if (!result.data) { throwError(errMsg2); } var sourceFormat = detectSourceFormat(result.data); if (!isSupportedSourceFormat(sourceFormat)) { throwError(errMsg2); } var resultMetaRawOption; var firstUpSource = upSourceList[0]; if (firstUpSource && resultIndex === 0 && !result.dimensions) { var startIndex = firstUpSource.startIndex; if (startIndex) { result.data = firstUpSource.data.slice(0, startIndex).concat(result.data); } resultMetaRawOption = { seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, sourceHeader: startIndex, dimensions: firstUpSource.metaRawOption.dimensions }; } else { resultMetaRawOption = { seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, sourceHeader: 0, dimensions: result.dimensions }; } return createSource(result.data, resultMetaRawOption, null); }); } function isSupportedSourceFormat(sourceFormat) { return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS; } var UNDEFINED = "undefined"; var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array; var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array; var CtorInt32Array$1 = typeof Int32Array === UNDEFINED ? Array : Int32Array; var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array; var dataCtors = { "float": CtorFloat64Array, "int": CtorInt32Array$1, "ordinal": Array, "number": Array, "time": CtorFloat64Array }; var defaultDimValueGetters; function getIndicesCtor(rawCount) { return rawCount > 65535 ? CtorUint32Array : CtorUint16Array; } function getInitialExtent() { return [Infinity, -Infinity]; } function cloneChunk(originalChunk) { var Ctor = originalChunk.constructor; return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk); } function prepareStore(store, dimIdx, dimType, end2, append) { var DataCtor = dataCtors[dimType || "float"]; if (append) { var oldStore = store[dimIdx]; var oldLen = oldStore && oldStore.length; if (!(oldLen === end2)) { var newStore = new DataCtor(end2); for (var j = 0; j < oldLen; j++) { newStore[j] = oldStore[j]; } store[dimIdx] = newStore; } } else { store[dimIdx] = new DataCtor(end2); } } var DataStore = function() { function DataStore2() { this._chunks = []; this._rawExtent = []; this._extent = []; this._count = 0; this._rawCount = 0; this._calcDimNameToIdx = createHashMap(); } DataStore2.prototype.initData = function(provider, inputDimensions, dimValueGetter) { this._provider = provider; this._chunks = []; this._indices = null; this.getRawIndex = this._getRawIdxIdentity; var source = provider.getSource(); var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat]; this._dimValueGetter = dimValueGetter || defaultGetter; this._rawExtent = []; shouldRetrieveDataByName(source); this._dimensions = map$1(inputDimensions, function(dim) { return { type: dim.type, property: dim.property }; }); this._initDataFromProvider(0, provider.count()); }; DataStore2.prototype.getProvider = function() { return this._provider; }; DataStore2.prototype.getSource = function() { return this._provider.getSource(); }; DataStore2.prototype.ensureCalculationDimension = function(dimName, type) { var calcDimNameToIdx = this._calcDimNameToIdx; var dimensions = this._dimensions; var calcDimIdx = calcDimNameToIdx.get(dimName); if (calcDimIdx != null) { if (dimensions[calcDimIdx].type === type) { return calcDimIdx; } } else { calcDimIdx = dimensions.length; } dimensions[calcDimIdx] = { type }; calcDimNameToIdx.set(dimName, calcDimIdx); this._chunks[calcDimIdx] = new dataCtors[type || "float"](this._rawCount); this._rawExtent[calcDimIdx] = getInitialExtent(); return calcDimIdx; }; DataStore2.prototype.collectOrdinalMeta = function(dimIdx, ordinalMeta) { var chunk = this._chunks[dimIdx]; var dim = this._dimensions[dimIdx]; var rawExtents = this._rawExtent; var offset = dim.ordinalOffset || 0; var len2 = chunk.length; if (offset === 0) { rawExtents[dimIdx] = getInitialExtent(); } var dimRawExtent = rawExtents[dimIdx]; for (var i = offset; i < len2; i++) { var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]); dimRawExtent[0] = Math.min(val, dimRawExtent[0]); dimRawExtent[1] = Math.max(val, dimRawExtent[1]); } dim.ordinalMeta = ordinalMeta; dim.ordinalOffset = len2; dim.type = "ordinal"; }; DataStore2.prototype.getOrdinalMeta = function(dimIdx) { var dimInfo = this._dimensions[dimIdx]; var ordinalMeta = dimInfo.ordinalMeta; return ordinalMeta; }; DataStore2.prototype.getDimensionProperty = function(dimIndex) { var item = this._dimensions[dimIndex]; return item && item.property; }; DataStore2.prototype.appendData = function(data) { var provider = this._provider; var start2 = this.count(); provider.appendData(data); var end2 = provider.count(); if (!provider.persistent) { end2 += start2; } if (start2 < end2) { this._initDataFromProvider(start2, end2, true); } return [start2, end2]; }; DataStore2.prototype.appendValues = function(values, minFillLen) { var chunks = this._chunks; var dimensions = this._dimensions; var dimLen = dimensions.length; var rawExtent = this._rawExtent; var start2 = this.count(); var end2 = start2 + Math.max(values.length, minFillLen || 0); for (var i = 0; i < dimLen; i++) { var dim = dimensions[i]; prepareStore(chunks, i, dim.type, end2, true); } var emptyDataItem = []; for (var idx = start2; idx < end2; idx++) { var sourceIdx = idx - start2; for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { var dim = dimensions[dimIdx]; var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx); chunks[dimIdx][idx] = val; var dimRawExtent = rawExtent[dimIdx]; val < dimRawExtent[0] && (dimRawExtent[0] = val); val > dimRawExtent[1] && (dimRawExtent[1] = val); } } this._rawCount = this._count = end2; return { start: start2, end: end2 }; }; DataStore2.prototype._initDataFromProvider = function(start2, end2, append) { var provider = this._provider; var chunks = this._chunks; var dimensions = this._dimensions; var dimLen = dimensions.length; var rawExtent = this._rawExtent; var dimNames = map$1(dimensions, function(dim2) { return dim2.property; }); for (var i = 0; i < dimLen; i++) { var dim = dimensions[i]; if (!rawExtent[i]) { rawExtent[i] = getInitialExtent(); } prepareStore(chunks, i, dim.type, end2, append); } if (provider.fillStorage) { provider.fillStorage(start2, end2, chunks, rawExtent); } else { var dataItem = []; for (var idx = start2; idx < end2; idx++) { dataItem = provider.getItem(idx, dataItem); for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { var dimStorage = chunks[dimIdx]; var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx); dimStorage[idx] = val; var dimRawExtent = rawExtent[dimIdx]; val < dimRawExtent[0] && (dimRawExtent[0] = val); val > dimRawExtent[1] && (dimRawExtent[1] = val); } } } if (!provider.persistent && provider.clean) { provider.clean(); } this._rawCount = this._count = end2; this._extent = []; }; DataStore2.prototype.count = function() { return this._count; }; DataStore2.prototype.get = function(dim, idx) { if (!(idx >= 0 && idx < this._count)) { return NaN; } var dimStore = this._chunks[dim]; return dimStore ? dimStore[this.getRawIndex(idx)] : NaN; }; DataStore2.prototype.getValues = function(dimensions, idx) { var values = []; var dimArr = []; if (idx == null) { idx = dimensions; dimensions = []; for (var i = 0; i < this._dimensions.length; i++) { dimArr.push(i); } } else { dimArr = dimensions; } for (var i = 0, len2 = dimArr.length; i < len2; i++) { values.push(this.get(dimArr[i], idx)); } return values; }; DataStore2.prototype.getByRawIndex = function(dim, rawIdx) { if (!(rawIdx >= 0 && rawIdx < this._rawCount)) { return NaN; } var dimStore = this._chunks[dim]; return dimStore ? dimStore[rawIdx] : NaN; }; DataStore2.prototype.getSum = function(dim) { var dimData = this._chunks[dim]; var sum2 = 0; if (dimData) { for (var i = 0, len2 = this.count(); i < len2; i++) { var value = this.get(dim, i); if (!isNaN(value)) { sum2 += value; } } } return sum2; }; DataStore2.prototype.getMedian = function(dim) { var dimDataArray = []; this.each([dim], function(val) { if (!isNaN(val)) { dimDataArray.push(val); } }); var sortedDimDataArray = dimDataArray.sort(function(a, b) { return a - b; }); var len2 = this.count(); return len2 === 0 ? 0 : len2 % 2 === 1 ? sortedDimDataArray[(len2 - 1) / 2] : (sortedDimDataArray[len2 / 2] + sortedDimDataArray[len2 / 2 - 1]) / 2; }; DataStore2.prototype.indexOfRawIndex = function(rawIndex) { if (rawIndex >= this._rawCount || rawIndex < 0) { return -1; } if (!this._indices) { return rawIndex; } var indices = this._indices; var rawDataIndex = indices[rawIndex]; if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) { return rawIndex; } var left = 0; var right2 = this._count - 1; while (left <= right2) { var mid = (left + right2) / 2 | 0; if (indices[mid] < rawIndex) { left = mid + 1; } else if (indices[mid] > rawIndex) { right2 = mid - 1; } else { return mid; } } return -1; }; DataStore2.prototype.indicesOfNearest = function(dim, value, maxDistance) { var chunks = this._chunks; var dimData = chunks[dim]; var nearestIndices = []; if (!dimData) { return nearestIndices; } if (maxDistance == null) { maxDistance = Infinity; } var minDist = Infinity; var minDiff = -1; var nearestIndicesLen = 0; for (var i = 0, len2 = this.count(); i < len2; i++) { var dataIndex = this.getRawIndex(i); var diff2 = value - dimData[dataIndex]; var dist2 = Math.abs(diff2); if (dist2 <= maxDistance) { if (dist2 < minDist || dist2 === minDist && diff2 >= 0 && minDiff < 0) { minDist = dist2; minDiff = diff2; nearestIndicesLen = 0; } if (diff2 === minDiff) { nearestIndices[nearestIndicesLen++] = i; } } } nearestIndices.length = nearestIndicesLen; return nearestIndices; }; DataStore2.prototype.getIndices = function() { var newIndices; var indices = this._indices; if (indices) { var Ctor = indices.constructor; var thisCount = this._count; if (Ctor === Array) { newIndices = new Ctor(thisCount); for (var i = 0; i < thisCount; i++) { newIndices[i] = indices[i]; } } else { newIndices = new Ctor(indices.buffer, 0, thisCount); } } else { var Ctor = getIndicesCtor(this._rawCount); newIndices = new Ctor(this.count()); for (var i = 0; i < newIndices.length; i++) { newIndices[i] = i; } } return newIndices; }; DataStore2.prototype.filter = function(dims, cb) { if (!this._count) { return this; } var newStore = this.clone(); var count2 = newStore.count(); var Ctor = getIndicesCtor(newStore._rawCount); var newIndices = new Ctor(count2); var value = []; var dimSize = dims.length; var offset = 0; var dim0 = dims[0]; var chunks = newStore._chunks; for (var i = 0; i < count2; i++) { var keep = void 0; var rawIdx = newStore.getRawIndex(i); if (dimSize === 0) { keep = cb(i); } else if (dimSize === 1) { var val = chunks[dim0][rawIdx]; keep = cb(val, i); } else { var k = 0; for (; k < dimSize; k++) { value[k] = chunks[dims[k]][rawIdx]; } value[k] = i; keep = cb.apply(null, value); } if (keep) { newIndices[offset++] = rawIdx; } } if (offset < count2) { newStore._indices = newIndices; } newStore._count = offset; newStore._extent = []; newStore._updateGetRawIdx(); return newStore; }; DataStore2.prototype.selectRange = function(range) { var newStore = this.clone(); var len2 = newStore._count; if (!len2) { return this; } var dims = keys(range); var dimSize = dims.length; if (!dimSize) { return this; } var originalCount = newStore.count(); var Ctor = getIndicesCtor(newStore._rawCount); var newIndices = new Ctor(originalCount); var offset = 0; var dim0 = dims[0]; var min3 = range[dim0][0]; var max3 = range[dim0][1]; var storeArr = newStore._chunks; var quickFinished = false; if (!newStore._indices) { var idx = 0; if (dimSize === 1) { var dimStorage = storeArr[dims[0]]; for (var i = 0; i < len2; i++) { var val = dimStorage[i]; if (val >= min3 && val <= max3 || isNaN(val)) { newIndices[offset++] = idx; } idx++; } quickFinished = true; } else if (dimSize === 2) { var dimStorage = storeArr[dims[0]]; var dimStorage2 = storeArr[dims[1]]; var min22 = range[dims[1]][0]; var max22 = range[dims[1]][1]; for (var i = 0; i < len2; i++) { var val = dimStorage[i]; var val2 = dimStorage2[i]; if ((val >= min3 && val <= max3 || isNaN(val)) && (val2 >= min22 && val2 <= max22 || isNaN(val2))) { newIndices[offset++] = idx; } idx++; } quickFinished = true; } } if (!quickFinished) { if (dimSize === 1) { for (var i = 0; i < originalCount; i++) { var rawIndex = newStore.getRawIndex(i); var val = storeArr[dims[0]][rawIndex]; if (val >= min3 && val <= max3 || isNaN(val)) { newIndices[offset++] = rawIndex; } } } else { for (var i = 0; i < originalCount; i++) { var keep = true; var rawIndex = newStore.getRawIndex(i); for (var k = 0; k < dimSize; k++) { var dimk = dims[k]; var val = storeArr[dimk][rawIndex]; if (val < range[dimk][0] || val > range[dimk][1]) { keep = false; } } if (keep) { newIndices[offset++] = newStore.getRawIndex(i); } } } } if (offset < originalCount) { newStore._indices = newIndices; } newStore._count = offset; newStore._extent = []; newStore._updateGetRawIdx(); return newStore; }; DataStore2.prototype.map = function(dims, cb) { var target = this.clone(dims); this._updateDims(target, dims, cb); return target; }; DataStore2.prototype.modify = function(dims, cb) { this._updateDims(this, dims, cb); }; DataStore2.prototype._updateDims = function(target, dims, cb) { var targetChunks = target._chunks; var tmpRetValue = []; var dimSize = dims.length; var dataCount = target.count(); var values = []; var rawExtent = target._rawExtent; for (var i = 0; i < dims.length; i++) { rawExtent[dims[i]] = getInitialExtent(); } for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) { var rawIndex = target.getRawIndex(dataIndex); for (var k = 0; k < dimSize; k++) { values[k] = targetChunks[dims[k]][rawIndex]; } values[dimSize] = dataIndex; var retValue = cb && cb.apply(null, values); if (retValue != null) { if (typeof retValue !== "object") { tmpRetValue[0] = retValue; retValue = tmpRetValue; } for (var i = 0; i < retValue.length; i++) { var dim = dims[i]; var val = retValue[i]; var rawExtentOnDim = rawExtent[dim]; var dimStore = targetChunks[dim]; if (dimStore) { dimStore[rawIndex] = val; } if (val < rawExtentOnDim[0]) { rawExtentOnDim[0] = val; } if (val > rawExtentOnDim[1]) { rawExtentOnDim[1] = val; } } } } }; DataStore2.prototype.lttbDownSample = function(valueDimension, rate) { var target = this.clone([valueDimension], true); var targetStorage = target._chunks; var dimStore = targetStorage[valueDimension]; var len2 = this.count(); var sampledIndex = 0; var frameSize = Math.floor(1 / rate); var currentRawIndex = this.getRawIndex(0); var maxArea; var area; var nextRawIndex; var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize) + 2); newIndices[sampledIndex++] = currentRawIndex; for (var i = 1; i < len2 - 1; i += frameSize) { var nextFrameStart = Math.min(i + frameSize, len2 - 1); var nextFrameEnd = Math.min(i + frameSize * 2, len2); var avgX = (nextFrameEnd + nextFrameStart) / 2; var avgY = 0; for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) { var rawIndex = this.getRawIndex(idx); var y = dimStore[rawIndex]; if (isNaN(y)) { continue; } avgY += y; } avgY /= nextFrameEnd - nextFrameStart; var frameStart = i; var frameEnd = Math.min(i + frameSize, len2); var pointAX = i - 1; var pointAY = dimStore[currentRawIndex]; maxArea = -1; nextRawIndex = frameStart; for (var idx = frameStart; idx < frameEnd; idx++) { var rawIndex = this.getRawIndex(idx); var y = dimStore[rawIndex]; if (isNaN(y)) { continue; } area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY)); if (area > maxArea) { maxArea = area; nextRawIndex = rawIndex; } } newIndices[sampledIndex++] = nextRawIndex; currentRawIndex = nextRawIndex; } newIndices[sampledIndex++] = this.getRawIndex(len2 - 1); target._count = sampledIndex; target._indices = newIndices; target.getRawIndex = this._getRawIdx; return target; }; DataStore2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { var target = this.clone([dimension], true); var targetStorage = target._chunks; var frameValues = []; var frameSize = Math.floor(1 / rate); var dimStore = targetStorage[dimension]; var len2 = this.count(); var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent(); var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize)); var offset = 0; for (var i = 0; i < len2; i += frameSize) { if (frameSize > len2 - i) { frameSize = len2 - i; frameValues.length = frameSize; } for (var k = 0; k < frameSize; k++) { var dataIdx = this.getRawIndex(i + k); frameValues[k] = dimStore[dataIdx]; } var value = sampleValue(frameValues); var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len2 - 1)); dimStore[sampleFrameIdx] = value; if (value < rawExtentOnDim[0]) { rawExtentOnDim[0] = value; } if (value > rawExtentOnDim[1]) { rawExtentOnDim[1] = value; } newIndices[offset++] = sampleFrameIdx; } target._count = offset; target._indices = newIndices; target._updateGetRawIdx(); return target; }; DataStore2.prototype.each = function(dims, cb) { if (!this._count) { return; } var dimSize = dims.length; var chunks = this._chunks; for (var i = 0, len2 = this.count(); i < len2; i++) { var rawIdx = this.getRawIndex(i); switch (dimSize) { case 0: cb(i); break; case 1: cb(chunks[dims[0]][rawIdx], i); break; case 2: cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i); break; default: var k = 0; var value = []; for (; k < dimSize; k++) { value[k] = chunks[dims[k]][rawIdx]; } value[k] = i; cb.apply(null, value); } } }; DataStore2.prototype.getDataExtent = function(dim) { var dimData = this._chunks[dim]; var initialExtent = getInitialExtent(); if (!dimData) { return initialExtent; } var currEnd = this.count(); var useRaw = !this._indices; var dimExtent; if (useRaw) { return this._rawExtent[dim].slice(); } dimExtent = this._extent[dim]; if (dimExtent) { return dimExtent.slice(); } dimExtent = initialExtent; var min3 = dimExtent[0]; var max3 = dimExtent[1]; for (var i = 0; i < currEnd; i++) { var rawIdx = this.getRawIndex(i); var value = dimData[rawIdx]; value < min3 && (min3 = value); value > max3 && (max3 = value); } dimExtent = [min3, max3]; this._extent[dim] = dimExtent; return dimExtent; }; DataStore2.prototype.getRawDataItem = function(idx) { var rawIdx = this.getRawIndex(idx); if (!this._provider.persistent) { var val = []; var chunks = this._chunks; for (var i = 0; i < chunks.length; i++) { val.push(chunks[i][rawIdx]); } return val; } else { return this._provider.getItem(rawIdx); } }; DataStore2.prototype.clone = function(clonedDims, ignoreIndices) { var target = new DataStore2(); var chunks = this._chunks; var clonedDimsMap = clonedDims && reduce(clonedDims, function(obj, dimIdx) { obj[dimIdx] = true; return obj; }, {}); if (clonedDimsMap) { for (var i = 0; i < chunks.length; i++) { target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]); } } else { target._chunks = chunks; } this._copyCommonProps(target); if (!ignoreIndices) { target._indices = this._cloneIndices(); } target._updateGetRawIdx(); return target; }; DataStore2.prototype._copyCommonProps = function(target) { target._count = this._count; target._rawCount = this._rawCount; target._provider = this._provider; target._dimensions = this._dimensions; target._extent = clone$4(this._extent); target._rawExtent = clone$4(this._rawExtent); }; DataStore2.prototype._cloneIndices = function() { if (this._indices) { var Ctor = this._indices.constructor; var indices = void 0; if (Ctor === Array) { var thisCount = this._indices.length; indices = new Ctor(thisCount); for (var i = 0; i < thisCount; i++) { indices[i] = this._indices[i]; } } else { indices = new Ctor(this._indices); } return indices; } return null; }; DataStore2.prototype._getRawIdxIdentity = function(idx) { return idx; }; DataStore2.prototype._getRawIdx = function(idx) { if (idx < this._count && idx >= 0) { return this._indices[idx]; } return -1; }; DataStore2.prototype._updateGetRawIdx = function() { this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity; }; DataStore2.internalField = function() { function getDimValueSimply(dataItem, property, dataIndex, dimIndex) { return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]); } defaultDimValueGetters = { arrayRows: getDimValueSimply, objectRows: function(dataItem, property, dataIndex, dimIndex) { return parseDataValue(dataItem[property], this._dimensions[dimIndex]); }, keyedColumns: getDimValueSimply, original: function(dataItem, property, dataIndex, dimIndex) { var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); return parseDataValue(value instanceof Array ? value[dimIndex] : value, this._dimensions[dimIndex]); }, typedArray: function(dataItem, property, dataIndex, dimIndex) { return dataItem[dimIndex]; } }; }(); return DataStore2; }(); var DataStore$1 = DataStore; var SourceManager = function() { function SourceManager2(sourceHost) { this._sourceList = []; this._storeList = []; this._upstreamSignList = []; this._versionSignBase = 0; this._dirty = true; this._sourceHost = sourceHost; } SourceManager2.prototype.dirty = function() { this._setLocalSource([], []); this._storeList = []; this._dirty = true; }; SourceManager2.prototype._setLocalSource = function(sourceList, upstreamSignList) { this._sourceList = sourceList; this._upstreamSignList = upstreamSignList; this._versionSignBase++; if (this._versionSignBase > 9e10) { this._versionSignBase = 0; } }; SourceManager2.prototype._getVersionSign = function() { return this._sourceHost.uid + "_" + this._versionSignBase; }; SourceManager2.prototype.prepareSource = function() { if (this._isDirty()) { this._createSource(); this._dirty = false; } }; SourceManager2.prototype._createSource = function() { this._setLocalSource([], []); var sourceHost = this._sourceHost; var upSourceMgrList = this._getUpstreamSourceManagers(); var hasUpstream = !!upSourceMgrList.length; var resultSourceList; var upstreamSignList; if (isSeries(sourceHost)) { var seriesModel = sourceHost; var data = void 0; var sourceFormat = void 0; var upSource = void 0; if (hasUpstream) { var upSourceMgr = upSourceMgrList[0]; upSourceMgr.prepareSource(); upSource = upSourceMgr.getSource(); data = upSource.data; sourceFormat = upSource.sourceFormat; upstreamSignList = [upSourceMgr._getVersionSign()]; } else { data = seriesModel.get("data", true); sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL; upstreamSignList = []; } var newMetaRawOption = this._getSourceMetaRawOption() || {}; var upMetaRawOption = upSource && upSource.metaRawOption || {}; var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null; var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader) || null; var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions); var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions; resultSourceList = needsCreateSource ? [createSource(data, { seriesLayoutBy, sourceHeader, dimensions }, sourceFormat)] : []; } else { var datasetModel = sourceHost; if (hasUpstream) { var result = this._applyTransform(upSourceMgrList); resultSourceList = result.sourceList; upstreamSignList = result.upstreamSignList; } else { var sourceData = datasetModel.get("source", true); resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)]; upstreamSignList = []; } } this._setLocalSource(resultSourceList, upstreamSignList); }; SourceManager2.prototype._applyTransform = function(upMgrList) { var datasetModel = this._sourceHost; var transformOption = datasetModel.get("transform", true); var fromTransformResult = datasetModel.get("fromTransformResult", true); if (fromTransformResult != null) { var errMsg = ""; if (upMgrList.length !== 1) { doThrow(errMsg); } } var sourceList; var upSourceList = []; var upstreamSignList = []; each$g(upMgrList, function(upMgr) { upMgr.prepareSource(); var upSource = upMgr.getSource(fromTransformResult || 0); var errMsg2 = ""; if (fromTransformResult != null && !upSource) { doThrow(errMsg2); } upSourceList.push(upSource); upstreamSignList.push(upMgr._getVersionSign()); }); if (transformOption) { sourceList = applyDataTransform(transformOption, upSourceList, { datasetIndex: datasetModel.componentIndex }); } else if (fromTransformResult != null) { sourceList = [cloneSourceShallow(upSourceList[0])]; } return { sourceList, upstreamSignList }; }; SourceManager2.prototype._isDirty = function() { if (this._dirty) { return true; } var upSourceMgrList = this._getUpstreamSourceManagers(); for (var i = 0; i < upSourceMgrList.length; i++) { var upSrcMgr = upSourceMgrList[i]; if (upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) { return true; } } }; SourceManager2.prototype.getSource = function(sourceIndex) { sourceIndex = sourceIndex || 0; var source = this._sourceList[sourceIndex]; if (!source) { var upSourceMgrList = this._getUpstreamSourceManagers(); return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex); } return source; }; SourceManager2.prototype.getSharedDataStore = function(seriesDimRequest) { var schema = seriesDimRequest.makeStoreSchema(); return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash); }; SourceManager2.prototype._innerGetDataStore = function(storeDims, seriesSource, sourceReadKey) { var sourceIndex = 0; var storeList = this._storeList; var cachedStoreMap = storeList[sourceIndex]; if (!cachedStoreMap) { cachedStoreMap = storeList[sourceIndex] = {}; } var cachedStore = cachedStoreMap[sourceReadKey]; if (!cachedStore) { var upSourceMgr = this._getUpstreamSourceManagers()[0]; if (isSeries(this._sourceHost) && upSourceMgr) { cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey); } else { cachedStore = new DataStore$1(); cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims); } cachedStoreMap[sourceReadKey] = cachedStore; } return cachedStore; }; SourceManager2.prototype._getUpstreamSourceManagers = function() { var sourceHost = this._sourceHost; if (isSeries(sourceHost)) { var datasetModel = querySeriesUpstreamDatasetModel(sourceHost); return !datasetModel ? [] : [datasetModel.getSourceManager()]; } else { return map$1(queryDatasetUpstreamDatasetModels(sourceHost), function(datasetModel2) { return datasetModel2.getSourceManager(); }); } }; SourceManager2.prototype._getSourceMetaRawOption = function() { var sourceHost = this._sourceHost; var seriesLayoutBy; var sourceHeader; var dimensions; if (isSeries(sourceHost)) { seriesLayoutBy = sourceHost.get("seriesLayoutBy", true); sourceHeader = sourceHost.get("sourceHeader", true); dimensions = sourceHost.get("dimensions", true); } else if (!this._getUpstreamSourceManagers().length) { var model = sourceHost; seriesLayoutBy = model.get("seriesLayoutBy", true); sourceHeader = model.get("sourceHeader", true); dimensions = model.get("dimensions", true); } return { seriesLayoutBy, sourceHeader, dimensions }; }; return SourceManager2; }(); function disableTransformOptionMerge(datasetModel) { var transformOption = datasetModel.option.transform; transformOption && setAsPrimitive(datasetModel.option.transform); } function isSeries(sourceHost) { return sourceHost.mainType === "series"; } function doThrow(errMsg) { throw new Error(errMsg); } var TOOLTIP_LINE_HEIGHT_CSS = "line-height:1"; function getTooltipTextStyle(textStyle, renderMode) { var nameFontColor = textStyle.color || "#6e7079"; var nameFontSize = textStyle.fontSize || 12; var nameFontWeight = textStyle.fontWeight || "400"; var valueFontColor = textStyle.color || "#464646"; var valueFontSize = textStyle.fontSize || 14; var valueFontWeight = textStyle.fontWeight || "900"; if (renderMode === "html") { return { nameStyle: "font-size:" + encodeHTML(nameFontSize + "") + "px;color:" + encodeHTML(nameFontColor) + ";font-weight:" + encodeHTML(nameFontWeight + ""), valueStyle: "font-size:" + encodeHTML(valueFontSize + "") + "px;color:" + encodeHTML(valueFontColor) + ";font-weight:" + encodeHTML(valueFontWeight + "") }; } else { return { nameStyle: { fontSize: nameFontSize, fill: nameFontColor, fontWeight: nameFontWeight }, valueStyle: { fontSize: valueFontSize, fill: valueFontColor, fontWeight: valueFontWeight } }; } } var HTML_GAPS = [0, 10, 20, 30]; var RICH_TEXT_GAPS = ["", "\n", "\n\n", "\n\n\n"]; function createTooltipMarkup(type, option) { option.type = type; return option; } function getBuilder(fragment) { return hasOwn(builderMap, fragment.type) && builderMap[fragment.type]; } var builderMap = { section: { planLayout: function(fragment) { var subBlockLen = fragment.blocks.length; var thisBlockHasInnerGap = subBlockLen > 1 || subBlockLen > 0 && !fragment.noHeader; var thisGapLevelBetweenSubBlocks = 0; each$g(fragment.blocks, function(subBlock) { getBuilder(subBlock).planLayout(subBlock); var subGapLevel = subBlock.__gapLevelBetweenSubBlocks; if (subGapLevel >= thisGapLevelBetweenSubBlocks) { thisGapLevelBetweenSubBlocks = subGapLevel + (thisBlockHasInnerGap && (!subGapLevel || subBlock.type === "section" && !subBlock.noHeader) ? 1 : 0); } }); fragment.__gapLevelBetweenSubBlocks = thisGapLevelBetweenSubBlocks; }, build: function(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { var noHeader = fragment.noHeader; var gaps = getGap(fragment); var subMarkupText = buildSubBlocks(ctx, fragment, noHeader ? topMarginForOuterGap : gaps.html, toolTipTextStyle); if (noHeader) { return subMarkupText; } var displayableHeader = makeValueReadable(fragment.header, "ordinal", ctx.useUTC); var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle; if (ctx.renderMode === "richText") { return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText; } else { return wrapBlockHTML('
' + encodeHTML(displayableHeader) + "
" + subMarkupText, topMarginForOuterGap); } } }, nameValue: { planLayout: function(fragment) { fragment.__gapLevelBetweenSubBlocks = 0; }, build: function(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { var renderMode = ctx.renderMode; var noName = fragment.noName; var noValue = fragment.noValue; var noMarker = !fragment.markerType; var name = fragment.name; var value = fragment.value; var useUTC = ctx.useUTC; if (noName && noValue) { return; } var markerStr = noMarker ? "" : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || "#333", renderMode); var readableName = noName ? "" : makeValueReadable(name, "ordinal", useUTC); var valueTypeOption = fragment.valueType; var readableValueList = noValue ? [] : isArray$1(value) ? map$1(value, function(val, idx) { return makeValueReadable(val, isArray$1(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); }) : [makeValueReadable(value, isArray$1(valueTypeOption) ? valueTypeOption[0] : valueTypeOption, useUTC)]; var valueAlignRight = !noMarker || !noName; var valueCloseToMarker = !noMarker && noName; var _a2 = getTooltipTextStyle(toolTipTextStyle, renderMode), nameStyle = _a2.nameStyle, valueStyle = _a2.valueStyle; return renderMode === "richText" ? (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameRichText(ctx, readableName, nameStyle)) + (noValue ? "" : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML((noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? "" : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap); } } }; function buildSubBlocks(ctx, fragment, topMarginForOuterGap, tooltipTextStyle) { var subMarkupTextList = []; var subBlocks = fragment.blocks || []; assert(!subBlocks || isArray$1(subBlocks)); subBlocks = subBlocks || []; var orderMode = ctx.orderMode; if (fragment.sortBlocks && orderMode) { subBlocks = subBlocks.slice(); var orderMap = { valueAsc: "asc", valueDesc: "desc" }; if (hasOwn(orderMap, orderMode)) { var comparator_1 = new SortOrderComparator(orderMap[orderMode], null); subBlocks.sort(function(a, b) { return comparator_1.evaluate(a.sortParam, b.sortParam); }); } else if (orderMode === "seriesDesc") { subBlocks.reverse(); } } var gaps = getGap(fragment); each$g(subBlocks, function(subBlock, idx) { var subMarkupText = getBuilder(subBlock).build(ctx, subBlock, idx > 0 ? gaps.html : 0, tooltipTextStyle); subMarkupText != null && subMarkupTextList.push(subMarkupText); }); if (!subMarkupTextList.length) { return; } return ctx.renderMode === "richText" ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(subMarkupTextList.join(""), topMarginForOuterGap); } function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) { if (!fragment) { return; } var builder = getBuilder(fragment); builder.planLayout(fragment); var ctx = { useUTC, renderMode, orderMode, markupStyleCreator }; return builder.build(ctx, fragment, 0, toolTipTextStyle); } function getGap(fragment) { var gapLevelBetweenSubBlocks = fragment.__gapLevelBetweenSubBlocks; return { html: HTML_GAPS[gapLevelBetweenSubBlocks], richText: RICH_TEXT_GAPS[gapLevelBetweenSubBlocks] }; } function wrapBlockHTML(encodedContent, topGap) { var clearfix = '
'; var marginCSS = "margin: " + topGap + "px 0 0"; return '
' + encodedContent + clearfix + "
"; } function wrapInlineNameHTML(name, leftHasMarker, style) { var marginCss = leftHasMarker ? "margin-left:2px" : ""; return '' + encodeHTML(name) + ""; } function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style) { var paddingStr = valueCloseToMarker ? "10px" : "20px"; var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : ""; return '' + map$1(valueList, function(value) { return encodeHTML(value); }).join("  ") + ""; } function wrapInlineNameRichText(ctx, name, style) { return ctx.markupStyleCreator.wrapRichTextStyle(name, style); } function wrapInlineValueRichText(ctx, valueList, alignRight, valueCloseToMarker, style) { var styles = [style]; var paddingLeft = valueCloseToMarker ? 10 : 20; alignRight && styles.push({ padding: [0, 0, 0, paddingLeft], align: "right" }); return ctx.markupStyleCreator.wrapRichTextStyle(valueList.join(" "), styles); } function retrieveVisualColorForTooltipMarker(series, dataIndex) { var style = series.getData().getItemVisual(dataIndex, "style"); var color2 = style[series.visualDrawType]; return convertToColorString(color2); } function getPaddingFromTooltipModel(model, renderMode) { var padding = model.get("padding"); return padding != null ? padding : renderMode === "richText" ? [8, 10] : 10; } var TooltipMarkupStyleCreator = function() { function TooltipMarkupStyleCreator2() { this.richTextStyles = {}; this._nextStyleNameId = getRandomIdBase(); } TooltipMarkupStyleCreator2.prototype._generateStyleName = function() { return "__EC_aUTo_" + this._nextStyleNameId++; }; TooltipMarkupStyleCreator2.prototype.makeTooltipMarker = function(markerType, colorStr, renderMode) { var markerId = renderMode === "richText" ? this._generateStyleName() : null; var marker = getTooltipMarker({ color: colorStr, type: markerType, renderMode, markerId }); if (isString(marker)) { return marker; } else { this.richTextStyles[markerId] = marker.style; return marker.content; } }; TooltipMarkupStyleCreator2.prototype.wrapRichTextStyle = function(text, styles) { var finalStl = {}; if (isArray$1(styles)) { each$g(styles, function(stl) { return extend(finalStl, stl); }); } else { extend(finalStl, styles); } var styleName = this._generateStyleName(); this.richTextStyles[styleName] = finalStl; return "{" + styleName + "|" + text + "}"; }; return TooltipMarkupStyleCreator2; }(); function defaultSeriesFormatTooltip(opt) { var series = opt.series; var dataIndex = opt.dataIndex; var multipleSeries = opt.multipleSeries; var data = series.getData(); var tooltipDims = data.mapDimensionsAll("defaultedTooltip"); var tooltipDimLen = tooltipDims.length; var value = series.getRawValue(dataIndex); var isValueArr = isArray$1(value); var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex); var inlineValue; var inlineValueType; var subBlocks; var sortParam; if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) { var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor); inlineValue = formatArrResult.inlineValues; inlineValueType = formatArrResult.inlineValueTypes; subBlocks = formatArrResult.blocks; sortParam = formatArrResult.inlineValues[0]; } else if (tooltipDimLen) { var dimInfo = data.getDimensionInfo(tooltipDims[0]); sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]); inlineValueType = dimInfo.type; } else { sortParam = inlineValue = isValueArr ? value[0] : value; } var seriesNameSpecified = isNameSpecified(series); var seriesName = seriesNameSpecified && series.name || ""; var itemName = data.getName(dataIndex); var inlineName = multipleSeries ? seriesName : itemName; return createTooltipMarkup("section", { header: seriesName, noHeader: multipleSeries || !seriesNameSpecified, sortParam, blocks: [createTooltipMarkup("nameValue", { markerType: "item", markerColor, name: inlineName, noName: !trim$1(inlineName), value: inlineValue, valueType: inlineValueType })].concat(subBlocks || []) }); } function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) { var data = series.getData(); var isValueMultipleLine = reduce(value, function(isValueMultipleLine2, val, idx) { var dimItem = data.getDimensionInfo(idx); return isValueMultipleLine2 = isValueMultipleLine2 || dimItem && dimItem.tooltip !== false && dimItem.displayName != null; }, false); var inlineValues = []; var inlineValueTypes = []; var blocks = []; tooltipDims.length ? each$g(tooltipDims, function(dim) { setEachItem(retrieveRawValue(data, dataIndex, dim), dim); }) : each$g(value, setEachItem); function setEachItem(val, dim) { var dimInfo = data.getDimensionInfo(dim); if (!dimInfo || dimInfo.otherDims.tooltip === false) { return; } if (isValueMultipleLine) { blocks.push(createTooltipMarkup("nameValue", { markerType: "subItem", markerColor: colorStr, name: dimInfo.displayName, value: val, valueType: dimInfo.type })); } else { inlineValues.push(val); inlineValueTypes.push(dimInfo.type); } } return { inlineValues, inlineValueTypes, blocks }; } var inner$k = makeInner(); function getSelectionKey(data, dataIndex) { return data.getName(dataIndex) || data.getId(dataIndex); } var SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled"; var SeriesModel = function(_super) { __extends$1(SeriesModel2, _super); function SeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this._selectedDataIndicesMap = {}; return _this; } SeriesModel2.prototype.init = function(option, parentModel, ecModel) { this.seriesIndex = this.componentIndex; this.dataTask = createTask({ count: dataTaskCount, reset: dataTaskReset }); this.dataTask.context = { model: this }; this.mergeDefaultAndTheme(option, ecModel); var sourceManager = inner$k(this).sourceManager = new SourceManager(this); sourceManager.prepareSource(); var data = this.getInitialData(option, ecModel); wrapData(data, this); this.dataTask.context.data = data; inner$k(this).dataBeforeProcessed = data; autoSeriesName(this); this._initSelectedMapFromData(data); }; SeriesModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { var layoutMode = fetchLayoutMode(this); var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; var themeSubType = this.subType; if (ComponentModel$1.hasClass(themeSubType)) { themeSubType += "Series"; } merge(option, ecModel.getTheme().get(this.subType)); merge(option, this.getDefaultOption()); defaultEmphasis(option, "label", ["show"]); this.fillDataTextStyle(option.data); if (layoutMode) { mergeLayoutParam(option, inputPositionParams, layoutMode); } }; SeriesModel2.prototype.mergeOption = function(newSeriesOption, ecModel) { newSeriesOption = merge(this.option, newSeriesOption, true); this.fillDataTextStyle(newSeriesOption.data); var layoutMode = fetchLayoutMode(this); if (layoutMode) { mergeLayoutParam(this.option, newSeriesOption, layoutMode); } var sourceManager = inner$k(this).sourceManager; sourceManager.dirty(); sourceManager.prepareSource(); var data = this.getInitialData(newSeriesOption, ecModel); wrapData(data, this); this.dataTask.dirty(); this.dataTask.context.data = data; inner$k(this).dataBeforeProcessed = data; autoSeriesName(this); this._initSelectedMapFromData(data); }; SeriesModel2.prototype.fillDataTextStyle = function(data) { if (data && !isTypedArray(data)) { var props = ["show"]; for (var i = 0; i < data.length; i++) { if (data[i] && data[i].label) { defaultEmphasis(data[i], "label", props); } } } }; SeriesModel2.prototype.getInitialData = function(option, ecModel) { return; }; SeriesModel2.prototype.appendData = function(params) { var data = this.getRawData(); data.appendData(params.data); }; SeriesModel2.prototype.getData = function(dataType) { var task = getCurrentTask(this); if (task) { var data = task.context.data; return dataType == null ? data : data.getLinkedData(dataType); } else { return inner$k(this).data; } }; SeriesModel2.prototype.getAllData = function() { var mainData = this.getData(); return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{ data: mainData }]; }; SeriesModel2.prototype.setData = function(data) { var task = getCurrentTask(this); if (task) { var context = task.context; context.outputData = data; if (task !== this.dataTask) { context.data = data; } } inner$k(this).data = data; }; SeriesModel2.prototype.getEncode = function() { var encode = this.get("encode", true); if (encode) { return createHashMap(encode); } }; SeriesModel2.prototype.getSourceManager = function() { return inner$k(this).sourceManager; }; SeriesModel2.prototype.getSource = function() { return this.getSourceManager().getSource(); }; SeriesModel2.prototype.getRawData = function() { return inner$k(this).dataBeforeProcessed; }; SeriesModel2.prototype.getColorBy = function() { var colorBy = this.get("colorBy"); return colorBy || "series"; }; SeriesModel2.prototype.isColorBySeries = function() { return this.getColorBy() === "series"; }; SeriesModel2.prototype.getBaseAxis = function() { var coordSys = this.coordinateSystem; return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis(); }; SeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { return defaultSeriesFormatTooltip({ series: this, dataIndex, multipleSeries }); }; SeriesModel2.prototype.isAnimationEnabled = function() { if (env$1.node) { return false; } var animationEnabled = this.getShallow("animation"); if (animationEnabled) { if (this.getData().count() > this.getShallow("animationThreshold")) { animationEnabled = false; } } return !!animationEnabled; }; SeriesModel2.prototype.restoreData = function() { this.dataTask.dirty(); }; SeriesModel2.prototype.getColorFromPalette = function(name, scope, requestColorNum) { var ecModel = this.ecModel; var color2 = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum); if (!color2) { color2 = ecModel.getColorFromPalette(name, scope, requestColorNum); } return color2; }; SeriesModel2.prototype.coordDimToDataDim = function(coordDim) { return this.getRawData().mapDimensionsAll(coordDim); }; SeriesModel2.prototype.getProgressive = function() { return this.get("progressive"); }; SeriesModel2.prototype.getProgressiveThreshold = function() { return this.get("progressiveThreshold"); }; SeriesModel2.prototype.select = function(innerDataIndices, dataType) { this._innerSelect(this.getData(dataType), innerDataIndices); }; SeriesModel2.prototype.unselect = function(innerDataIndices, dataType) { var selectedMap = this.option.selectedMap; if (!selectedMap) { return; } var data = this.getData(dataType); for (var i = 0; i < innerDataIndices.length; i++) { var dataIndex = innerDataIndices[i]; var nameOrId = getSelectionKey(data, dataIndex); selectedMap[nameOrId] = false; this._selectedDataIndicesMap[nameOrId] = -1; } }; SeriesModel2.prototype.toggleSelect = function(innerDataIndices, dataType) { var tmpArr2 = []; for (var i = 0; i < innerDataIndices.length; i++) { tmpArr2[0] = innerDataIndices[i]; this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr2, dataType) : this.select(tmpArr2, dataType); } }; SeriesModel2.prototype.getSelectedDataIndices = function() { var selectedDataIndicesMap = this._selectedDataIndicesMap; var nameOrIds = keys(selectedDataIndicesMap); var dataIndices = []; for (var i = 0; i < nameOrIds.length; i++) { var dataIndex = selectedDataIndicesMap[nameOrIds[i]]; if (dataIndex >= 0) { dataIndices.push(dataIndex); } } return dataIndices; }; SeriesModel2.prototype.isSelected = function(dataIndex, dataType) { var selectedMap = this.option.selectedMap; if (!selectedMap) { return false; } var data = this.getData(dataType); var nameOrId = getSelectionKey(data, dataIndex); return selectedMap[nameOrId] || false; }; SeriesModel2.prototype.isUniversalTransitionEnabled = function() { if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) { return true; } var universalTransitionOpt = this.option.universalTransition; if (!universalTransitionOpt) { return false; } if (universalTransitionOpt === true) { return true; } return universalTransitionOpt && universalTransitionOpt.enabled; }; SeriesModel2.prototype._innerSelect = function(data, innerDataIndices) { var _a2, _b2; var selectedMode = this.option.selectedMode; var len2 = innerDataIndices.length; if (!selectedMode || !len2) { return; } if (selectedMode === "multiple") { var selectedMap = this.option.selectedMap || (this.option.selectedMap = {}); for (var i = 0; i < len2; i++) { var dataIndex = innerDataIndices[i]; var nameOrId = getSelectionKey(data, dataIndex); selectedMap[nameOrId] = true; this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex); } } else if (selectedMode === "single" || selectedMode === true) { var lastDataIndex = innerDataIndices[len2 - 1]; var nameOrId = getSelectionKey(data, lastDataIndex); this.option.selectedMap = (_a2 = {}, _a2[nameOrId] = true, _a2); this._selectedDataIndicesMap = (_b2 = {}, _b2[nameOrId] = data.getRawIndex(lastDataIndex), _b2); } }; SeriesModel2.prototype._initSelectedMapFromData = function(data) { if (this.option.selectedMap) { return; } var dataIndices = []; if (data.hasItemOption) { data.each(function(idx) { var rawItem = data.getRawDataItem(idx); if (rawItem && rawItem.selected) { dataIndices.push(idx); } }); } if (dataIndices.length > 0) { this._innerSelect(data, dataIndices); } }; SeriesModel2.registerClass = function(clz) { return ComponentModel$1.registerClass(clz); }; SeriesModel2.protoInitialize = function() { var proto2 = SeriesModel2.prototype; proto2.type = "series.__base__"; proto2.seriesIndex = 0; proto2.ignoreStyleOnData = false; proto2.hasSymbolVisual = false; proto2.defaultSymbol = "circle"; proto2.visualStyleAccessPath = "itemStyle"; proto2.visualDrawType = "fill"; }(); return SeriesModel2; }(ComponentModel$1); mixin(SeriesModel, DataFormatMixin); mixin(SeriesModel, PaletteMixin); mountExtend(SeriesModel, ComponentModel$1); function autoSeriesName(seriesModel) { var name = seriesModel.name; if (!isNameSpecified(seriesModel)) { seriesModel.name = getSeriesAutoName(seriesModel) || name; } } function getSeriesAutoName(seriesModel) { var data = seriesModel.getRawData(); var dataDims = data.mapDimensionsAll("seriesName"); var nameArr = []; each$g(dataDims, function(dataDim) { var dimInfo = data.getDimensionInfo(dataDim); dimInfo.displayName && nameArr.push(dimInfo.displayName); }); return nameArr.join(" "); } function dataTaskCount(context) { return context.model.getRawData().count(); } function dataTaskReset(context) { var seriesModel = context.model; seriesModel.setData(seriesModel.getRawData().cloneShallow()); return dataTaskProgress; } function dataTaskProgress(param, context) { if (context.outputData && param.end > context.outputData.count()) { context.model.getRawData().cloneShallow(context.outputData); } } function wrapData(data, seriesModel) { each$g(concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function(methodName) { data.wrapMethod(methodName, curry$1(onDataChange, seriesModel)); }); } function onDataChange(seriesModel, newList) { var task = getCurrentTask(seriesModel); if (task) { task.setOutputEnd((newList || this).count()); } return newList; } function getCurrentTask(seriesModel) { var scheduler = (seriesModel.ecModel || {}).scheduler; var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid); if (pipeline) { var task = pipeline.currentTask; if (task) { var agentStubMap = task.agentStubMap; if (agentStubMap) { task = agentStubMap.get(seriesModel.uid); } } return task; } } var SeriesModel$1 = SeriesModel; var ComponentView = function() { function ComponentView2() { this.group = new Group$4(); this.uid = getUID("viewComponent"); } ComponentView2.prototype.init = function(ecModel, api) { }; ComponentView2.prototype.render = function(model, ecModel, api, payload) { }; ComponentView2.prototype.dispose = function(ecModel, api) { }; ComponentView2.prototype.updateView = function(model, ecModel, api, payload) { }; ComponentView2.prototype.updateLayout = function(model, ecModel, api, payload) { }; ComponentView2.prototype.updateVisual = function(model, ecModel, api, payload) { }; ComponentView2.prototype.blurSeries = function(seriesModels, ecModel) { }; return ComponentView2; }(); enableClassExtend(ComponentView); enableClassManagement(ComponentView); var ComponentView$1 = ComponentView; function createRenderPlanner() { var inner2 = makeInner(); return function(seriesModel) { var fields = inner2(seriesModel); var pipelineContext = seriesModel.pipelineContext; var originalLarge = !!fields.large; var originalProgressive = !!fields.progressiveRender; var large = fields.large = !!(pipelineContext && pipelineContext.large); var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender); return !!(originalLarge !== large || originalProgressive !== progressive) && "reset"; }; } var inner$j = makeInner(); var renderPlanner = createRenderPlanner(); var ChartView = function() { function ChartView2() { this.group = new Group$4(); this.uid = getUID("viewChart"); this.renderTask = createTask({ plan: renderTaskPlan, reset: renderTaskReset }); this.renderTask.context = { view: this }; } ChartView2.prototype.init = function(ecModel, api) { }; ChartView2.prototype.render = function(seriesModel, ecModel, api, payload) { }; ChartView2.prototype.highlight = function(seriesModel, ecModel, api, payload) { toggleHighlight(seriesModel.getData(), payload, "emphasis"); }; ChartView2.prototype.downplay = function(seriesModel, ecModel, api, payload) { toggleHighlight(seriesModel.getData(), payload, "normal"); }; ChartView2.prototype.remove = function(ecModel, api) { this.group.removeAll(); }; ChartView2.prototype.dispose = function(ecModel, api) { }; ChartView2.prototype.updateView = function(seriesModel, ecModel, api, payload) { this.render(seriesModel, ecModel, api, payload); }; ChartView2.prototype.updateLayout = function(seriesModel, ecModel, api, payload) { this.render(seriesModel, ecModel, api, payload); }; ChartView2.prototype.updateVisual = function(seriesModel, ecModel, api, payload) { this.render(seriesModel, ecModel, api, payload); }; ChartView2.markUpdateMethod = function(payload, methodName) { inner$j(payload).updateMethod = methodName; }; ChartView2.protoInitialize = function() { var proto2 = ChartView2.prototype; proto2.type = "chart"; }(); return ChartView2; }(); function elSetState(el, state, highlightDigit) { if (el) { (state === "emphasis" ? enterEmphasis : leaveEmphasis)(el, highlightDigit); } } function toggleHighlight(data, payload, state) { var dataIndex = queryDataIndex(data, payload); var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null; if (dataIndex != null) { each$g(normalizeToArray(dataIndex), function(dataIdx) { elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit); }); } else { data.eachItemGraphicEl(function(el) { elSetState(el, state, highlightDigit); }); } } enableClassExtend(ChartView); enableClassManagement(ChartView); function renderTaskPlan(context) { return renderPlanner(context.model); } function renderTaskReset(context) { var seriesModel = context.model; var ecModel = context.ecModel; var api = context.api; var payload = context.payload; var progressiveRender = seriesModel.pipelineContext.progressiveRender; var view2 = context.view; var updateMethod = payload && inner$j(payload).updateMethod; var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view2[updateMethod] ? updateMethod : "render"; if (methodName !== "render") { view2[methodName](seriesModel, ecModel, api, payload); } return progressMethodMap[methodName]; } var progressMethodMap = { incrementalPrepareRender: { progress: function(params, context) { context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload); } }, render: { forceFirstProgress: true, progress: function(params, context) { context.view.render(context.model, context.ecModel, context.api, context.payload); } } }; var ChartView$1 = ChartView; var ORIGIN_METHOD = "\0__throttleOriginMethod"; var RATE = "\0__throttleRate"; var THROTTLE_TYPE = "\0__throttleType"; function throttle(fn, delay, debounce) { var currCall; var lastCall = 0; var lastExec = 0; var timer2 = null; var diff2; var scope; var args; var debounceNextCall; delay = delay || 0; function exec() { lastExec = new Date().getTime(); timer2 = null; fn.apply(scope, args || []); } var cb = function() { var cbArgs = []; for (var _i = 0; _i < arguments.length; _i++) { cbArgs[_i] = arguments[_i]; } currCall = new Date().getTime(); scope = this; args = cbArgs; var thisDelay = debounceNextCall || delay; var thisDebounce = debounceNextCall || debounce; debounceNextCall = null; diff2 = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay; clearTimeout(timer2); if (thisDebounce) { timer2 = setTimeout(exec, thisDelay); } else { if (diff2 >= 0) { exec(); } else { timer2 = setTimeout(exec, -diff2); } } lastCall = currCall; }; cb.clear = function() { if (timer2) { clearTimeout(timer2); timer2 = null; } }; cb.debounceNextCall = function(debounceDelay) { debounceNextCall = debounceDelay; }; return cb; } function createOrUpdate(obj, fnAttr, rate, throttleType) { var fn = obj[fnAttr]; if (!fn) { return; } var originFn = fn[ORIGIN_METHOD] || fn; var lastThrottleType = fn[THROTTLE_TYPE]; var lastRate = fn[RATE]; if (lastRate !== rate || lastThrottleType !== throttleType) { if (rate == null || !throttleType) { return obj[fnAttr] = originFn; } fn = obj[fnAttr] = throttle(originFn, rate, throttleType === "debounce"); fn[ORIGIN_METHOD] = originFn; fn[THROTTLE_TYPE] = throttleType; fn[RATE] = rate; } return fn; } function clear$1(obj, fnAttr) { var fn = obj[fnAttr]; if (fn && fn[ORIGIN_METHOD]) { obj[fnAttr] = fn[ORIGIN_METHOD]; } } var inner$i = makeInner(); var defaultStyleMappers = { itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true), lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true) }; var defaultColorKey = { lineStyle: "stroke", itemStyle: "fill" }; function getStyleMapper(seriesModel, stylePath) { var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath]; if (!styleMapper) { console.warn("Unkown style type '" + stylePath + "'."); return defaultStyleMappers.itemStyle; } return styleMapper; } function getDefaultColorKey(seriesModel, stylePath) { var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath]; if (!colorKey) { console.warn("Unkown style type '" + stylePath + "'."); return "fill"; } return colorKey; } var seriesStyleTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { var data = seriesModel.getData(); var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var styleModel = seriesModel.getModel(stylePath); var getStyle2 = getStyleMapper(seriesModel, stylePath); var globalStyle = getStyle2(styleModel); var decalOption = styleModel.getShallow("decal"); if (decalOption) { data.setVisual("decal", decalOption); decalOption.dirty = true; } var colorKey = getDefaultColorKey(seriesModel, stylePath); var color2 = globalStyle[colorKey]; var colorCallback = isFunction(color2) ? color2 : null; var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto"; if (!globalStyle[colorKey] || colorCallback || hasAutoColor) { var colorPalette2 = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount()); if (!globalStyle[colorKey]) { globalStyle[colorKey] = colorPalette2; data.setVisual("colorFromPalette", true); } globalStyle.fill = globalStyle.fill === "auto" || typeof globalStyle.fill === "function" ? colorPalette2 : globalStyle.fill; globalStyle.stroke = globalStyle.stroke === "auto" || typeof globalStyle.stroke === "function" ? colorPalette2 : globalStyle.stroke; } data.setVisual("style", globalStyle); data.setVisual("drawType", colorKey); if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) { data.setVisual("colorFromPalette", false); return { dataEach: function(data2, idx) { var dataParams = seriesModel.getDataParams(idx); var itemStyle = extend({}, globalStyle); itemStyle[colorKey] = colorCallback(dataParams); data2.setItemVisual(idx, "style", itemStyle); } }; } } }; var sharedModel = new Model$1(); var dataStyleTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) { return; } var data = seriesModel.getData(); var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var getStyle2 = getStyleMapper(seriesModel, stylePath); var colorKey = data.getVisual("drawType"); return { dataEach: data.hasItemOption ? function(data2, idx) { var rawItem = data2.getRawDataItem(idx); if (rawItem && rawItem[stylePath]) { sharedModel.option = rawItem[stylePath]; var style = getStyle2(sharedModel); var existsStyle = data2.ensureUniqueItemVisual(idx, "style"); extend(existsStyle, style); if (sharedModel.option.decal) { data2.setItemVisual(idx, "decal", sharedModel.option.decal); sharedModel.option.decal.dirty = true; } if (colorKey in style) { data2.setItemVisual(idx, "colorFromPalette", false); } } } : null }; } }; var dataColorPaletteTask = { performRawSeries: true, overallReset: function(ecModel) { var paletteScopeGroupByType = createHashMap(); ecModel.eachSeries(function(seriesModel) { var colorBy = seriesModel.getColorBy(); if (seriesModel.isColorBySeries()) { return; } var key2 = seriesModel.type + "-" + colorBy; var colorScope = paletteScopeGroupByType.get(key2); if (!colorScope) { colorScope = {}; paletteScopeGroupByType.set(key2, colorScope); } inner$i(seriesModel).scope = colorScope; }); ecModel.eachSeries(function(seriesModel) { if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) { return; } var dataAll = seriesModel.getRawData(); var idxMap = {}; var data = seriesModel.getData(); var colorScope = inner$i(seriesModel).scope; var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var colorKey = getDefaultColorKey(seriesModel, stylePath); data.each(function(idx) { var rawIdx = data.getRawIndex(idx); idxMap[rawIdx] = idx; }); dataAll.each(function(rawIdx) { var idx = idxMap[rawIdx]; var fromPalette = data.getItemVisual(idx, "colorFromPalette"); if (fromPalette) { var itemStyle = data.ensureUniqueItemVisual(idx, "style"); var name_1 = dataAll.getName(rawIdx) || rawIdx + ""; var dataCount = dataAll.count(); itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount); } }); }); } }; var PI$5 = Math.PI; function defaultLoading(api, opts) { opts = opts || {}; defaults(opts, { text: "loading", textColor: "#000", fontSize: 12, fontWeight: "normal", fontStyle: "normal", fontFamily: "sans-serif", maskColor: "rgba(255, 255, 255, 0.8)", showSpinner: true, color: "#5470c6", spinnerRadius: 10, lineWidth: 5, zlevel: 0 }); var group = new Group$4(); var mask = new Rect$3({ style: { fill: opts.maskColor }, zlevel: opts.zlevel, z: 1e4 }); group.add(mask); var textContent = new ZRText$1({ style: { text: opts.text, fill: opts.textColor, fontSize: opts.fontSize, fontWeight: opts.fontWeight, fontStyle: opts.fontStyle, fontFamily: opts.fontFamily }, zlevel: opts.zlevel, z: 10001 }); var labelRect = new Rect$3({ style: { fill: "none" }, textContent, textConfig: { position: "right", distance: 10 }, zlevel: opts.zlevel, z: 10001 }); group.add(labelRect); var arc; if (opts.showSpinner) { arc = new Arc$1({ shape: { startAngle: -PI$5 / 2, endAngle: -PI$5 / 2 + 0.1, r: opts.spinnerRadius }, style: { stroke: opts.color, lineCap: "round", lineWidth: opts.lineWidth }, zlevel: opts.zlevel, z: 10001 }); arc.animateShape(true).when(1e3, { endAngle: PI$5 * 3 / 2 }).start("circularInOut"); arc.animateShape(true).when(1e3, { startAngle: PI$5 * 3 / 2 }).delay(300).start("circularInOut"); group.add(arc); } group.resize = function() { var textWidth = textContent.getBoundingRect().width; var r = opts.showSpinner ? opts.spinnerRadius : 0; var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + (opts.showSpinner ? 0 : textWidth / 2) + (textWidth ? 0 : r); var cy = api.getHeight() / 2; opts.showSpinner && arc.setShape({ cx, cy }); labelRect.setShape({ x: cx - r, y: cy - r, width: r * 2, height: r * 2 }); mask.setShape({ x: 0, y: 0, width: api.getWidth(), height: api.getHeight() }); }; group.resize(); return group; } var Scheduler = function() { function Scheduler2(ecInstance, api, dataProcessorHandlers, visualHandlers) { this._stageTaskMap = createHashMap(); this.ecInstance = ecInstance; this.api = api; dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice(); visualHandlers = this._visualHandlers = visualHandlers.slice(); this._allHandlers = dataProcessorHandlers.concat(visualHandlers); } Scheduler2.prototype.restoreData = function(ecModel, payload) { ecModel.restoreData(payload); this._stageTaskMap.each(function(taskRecord) { var overallTask = taskRecord.overallTask; overallTask && overallTask.dirty(); }); }; Scheduler2.prototype.getPerformArgs = function(task, isBlock) { if (!task.__pipeline) { return; } var pipeline = this._pipelineMap.get(task.__pipeline.id); var pCtx = pipeline.context; var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex; var step2 = incremental ? pipeline.step : null; var modDataCount = pCtx && pCtx.modDataCount; var modBy = modDataCount != null ? Math.ceil(modDataCount / step2) : null; return { step: step2, modBy, modDataCount }; }; Scheduler2.prototype.getPipeline = function(pipelineId) { return this._pipelineMap.get(pipelineId); }; Scheduler2.prototype.updateStreamModes = function(seriesModel, view2) { var pipeline = this._pipelineMap.get(seriesModel.uid); var data = seriesModel.getData(); var dataLen = data.count(); var progressiveRender = pipeline.progressiveEnabled && view2.incrementalPrepareRender && dataLen >= pipeline.threshold; var large = seriesModel.get("large") && dataLen >= seriesModel.get("largeThreshold"); var modDataCount = seriesModel.get("progressiveChunkMode") === "mod" ? dataLen : null; seriesModel.pipelineContext = pipeline.context = { progressiveRender, modDataCount, large }; }; Scheduler2.prototype.restorePipelines = function(ecModel) { var scheduler = this; var pipelineMap = scheduler._pipelineMap = createHashMap(); ecModel.eachSeries(function(seriesModel) { var progressive = seriesModel.getProgressive(); var pipelineId = seriesModel.uid; pipelineMap.set(pipelineId, { id: pipelineId, head: null, tail: null, threshold: seriesModel.getProgressiveThreshold(), progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()), blockIndex: -1, step: Math.round(progressive || 700), count: 0 }); scheduler._pipe(seriesModel, seriesModel.dataTask); }); }; Scheduler2.prototype.prepareStageTasks = function() { var stageTaskMap = this._stageTaskMap; var ecModel = this.api.getModel(); var api = this.api; each$g(this._allHandlers, function(handler) { var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {}); var errMsg = ""; assert(!(handler.reset && handler.overallReset), errMsg); handler.reset && this._createSeriesStageTask(handler, record, ecModel, api); handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api); }, this); }; Scheduler2.prototype.prepareView = function(view2, model, ecModel, api) { var renderTask = view2.renderTask; var context = renderTask.context; context.model = model; context.ecModel = ecModel; context.api = api; renderTask.__block = !view2.incrementalPrepareRender; this._pipe(model, renderTask); }; Scheduler2.prototype.performDataProcessorTasks = function(ecModel, payload) { this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true }); }; Scheduler2.prototype.performVisualTasks = function(ecModel, payload, opt) { this._performStageTasks(this._visualHandlers, ecModel, payload, opt); }; Scheduler2.prototype._performStageTasks = function(stageHandlers, ecModel, payload, opt) { opt = opt || {}; var unfinished = false; var scheduler = this; each$g(stageHandlers, function(stageHandler, idx) { if (opt.visualType && opt.visualType !== stageHandler.visualType) { return; } var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid); var seriesTaskMap = stageHandlerRecord.seriesTaskMap; var overallTask = stageHandlerRecord.overallTask; if (overallTask) { var overallNeedDirty_1; var agentStubMap = overallTask.agentStubMap; agentStubMap.each(function(stub) { if (needSetDirty(opt, stub)) { stub.dirty(); overallNeedDirty_1 = true; } }); overallNeedDirty_1 && overallTask.dirty(); scheduler.updatePayload(overallTask, payload); var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block); agentStubMap.each(function(stub) { stub.perform(performArgs_1); }); if (overallTask.perform(performArgs_1)) { unfinished = true; } } else if (seriesTaskMap) { seriesTaskMap.each(function(task, pipelineId) { if (needSetDirty(opt, task)) { task.dirty(); } var performArgs = scheduler.getPerformArgs(task, opt.block); performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model); scheduler.updatePayload(task, payload); if (task.perform(performArgs)) { unfinished = true; } }); } }); function needSetDirty(opt2, task) { return opt2.setDirty && (!opt2.dirtyMap || opt2.dirtyMap.get(task.__pipeline.id)); } this.unfinished = unfinished || this.unfinished; }; Scheduler2.prototype.performSeriesTasks = function(ecModel) { var unfinished; ecModel.eachSeries(function(seriesModel) { unfinished = seriesModel.dataTask.perform() || unfinished; }); this.unfinished = unfinished || this.unfinished; }; Scheduler2.prototype.plan = function() { this._pipelineMap.each(function(pipeline) { var task = pipeline.tail; do { if (task.__block) { pipeline.blockIndex = task.__idxInPipeline; break; } task = task.getUpstream(); } while (task); }); }; Scheduler2.prototype.updatePayload = function(task, payload) { payload !== "remain" && (task.context.payload = payload); }; Scheduler2.prototype._createSeriesStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { var scheduler = this; var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap; var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap(); var seriesType2 = stageHandler.seriesType; var getTargetSeries = stageHandler.getTargetSeries; if (stageHandler.createOnAllSeries) { ecModel.eachRawSeries(create2); } else if (seriesType2) { ecModel.eachRawSeriesByType(seriesType2, create2); } else if (getTargetSeries) { getTargetSeries(ecModel, api).each(create2); } function create2(seriesModel) { var pipelineId = seriesModel.uid; var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({ plan: seriesTaskPlan, reset: seriesTaskReset, count: seriesTaskCount })); task.context = { model: seriesModel, ecModel, api, useClearVisual: stageHandler.isVisual && !stageHandler.isLayout, plan: stageHandler.plan, reset: stageHandler.reset, scheduler }; scheduler._pipe(seriesModel, task); } }; Scheduler2.prototype._createOverallStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { var scheduler = this; var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask || createTask({ reset: overallTaskReset }); overallTask.context = { ecModel, api, overallReset: stageHandler.overallReset, scheduler }; var oldAgentStubMap = overallTask.agentStubMap; var newAgentStubMap = overallTask.agentStubMap = createHashMap(); var seriesType2 = stageHandler.seriesType; var getTargetSeries = stageHandler.getTargetSeries; var overallProgress = true; var shouldOverallTaskDirty = false; var errMsg = ""; assert(!stageHandler.createOnAllSeries, errMsg); if (seriesType2) { ecModel.eachRawSeriesByType(seriesType2, createStub); } else if (getTargetSeries) { getTargetSeries(ecModel, api).each(createStub); } else { overallProgress = false; each$g(ecModel.getSeries(), createStub); } function createStub(seriesModel) { var pipelineId = seriesModel.uid; var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || (shouldOverallTaskDirty = true, createTask({ reset: stubReset, onDirty: stubOnDirty }))); stub.context = { model: seriesModel, overallProgress }; stub.agent = overallTask; stub.__block = overallProgress; scheduler._pipe(seriesModel, stub); } if (shouldOverallTaskDirty) { overallTask.dirty(); } }; Scheduler2.prototype._pipe = function(seriesModel, task) { var pipelineId = seriesModel.uid; var pipeline = this._pipelineMap.get(pipelineId); !pipeline.head && (pipeline.head = task); pipeline.tail && pipeline.tail.pipe(task); pipeline.tail = task; task.__idxInPipeline = pipeline.count++; task.__pipeline = pipeline; }; Scheduler2.wrapStageHandler = function(stageHandler, visualType) { if (isFunction(stageHandler)) { stageHandler = { overallReset: stageHandler, seriesType: detectSeriseType(stageHandler) }; } stageHandler.uid = getUID("stageHandler"); visualType && (stageHandler.visualType = visualType); return stageHandler; }; return Scheduler2; }(); function overallTaskReset(context) { context.overallReset(context.ecModel, context.api, context.payload); } function stubReset(context) { return context.overallProgress && stubProgress; } function stubProgress() { this.agent.dirty(); this.getDownstream().dirty(); } function stubOnDirty() { this.agent && this.agent.dirty(); } function seriesTaskPlan(context) { return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null; } function seriesTaskReset(context) { if (context.useClearVisual) { context.data.clearAllVisual(); } var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload)); return resetDefines.length > 1 ? map$1(resetDefines, function(v, idx) { return makeSeriesTaskProgress(idx); }) : singleSeriesTaskProgress; } var singleSeriesTaskProgress = makeSeriesTaskProgress(0); function makeSeriesTaskProgress(resetDefineIdx) { return function(params, context) { var data = context.data; var resetDefine = context.resetDefines[resetDefineIdx]; if (resetDefine && resetDefine.dataEach) { for (var i = params.start; i < params.end; i++) { resetDefine.dataEach(data, i); } } else if (resetDefine && resetDefine.progress) { resetDefine.progress(params, data); } }; } function seriesTaskCount(context) { return context.data.count(); } function detectSeriseType(legacyFunc) { seriesType = null; try { legacyFunc(ecModelMock, apiMock); } catch (e2) { } return seriesType; } var ecModelMock = {}; var apiMock = {}; var seriesType; mockMethods(ecModelMock, GlobalModel$1); mockMethods(apiMock, ExtensionAPI$1); ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function(type) { seriesType = type; }; ecModelMock.eachComponent = function(cond) { if (cond.mainType === "series" && cond.subType) { seriesType = cond.subType; } }; function mockMethods(target, Clz) { for (var name_1 in Clz.prototype) { target[name_1] = noop$1; } } var Scheduler$1 = Scheduler; var colorAll = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"]; var lightTheme = { color: colorAll, colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], colorAll] }; var contrastColor = "#B9B8CE"; var backgroundColor = "#100C2A"; var axisCommon = function() { return { axisLine: { lineStyle: { color: contrastColor } }, splitLine: { lineStyle: { color: "#484753" } }, splitArea: { areaStyle: { color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"] } }, minorSplitLine: { lineStyle: { color: "#20203B" } } }; }; var colorPalette = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"]; var theme = { darkMode: true, color: colorPalette, backgroundColor, axisPointer: { lineStyle: { color: "#817f91" }, crossStyle: { color: "#817f91" }, label: { color: "#fff" } }, legend: { textStyle: { color: contrastColor } }, textStyle: { color: contrastColor }, title: { textStyle: { color: "#EEF1FA" }, subtextStyle: { color: "#B9B8CE" } }, toolbox: { iconStyle: { borderColor: contrastColor } }, dataZoom: { borderColor: "#71708A", textStyle: { color: contrastColor }, brushStyle: { color: "rgba(135,163,206,0.3)" }, handleStyle: { color: "#353450", borderColor: "#C5CBE3" }, moveHandleStyle: { color: "#B0B6C3", opacity: 0.3 }, fillerColor: "rgba(135,163,206,0.2)", emphasis: { handleStyle: { borderColor: "#91B7F2", color: "#4D587D" }, moveHandleStyle: { color: "#636D9A", opacity: 0.7 } }, dataBackground: { lineStyle: { color: "#71708A", width: 1 }, areaStyle: { color: "#71708A" } }, selectedDataBackground: { lineStyle: { color: "#87A3CE" }, areaStyle: { color: "#87A3CE" } } }, visualMap: { textStyle: { color: contrastColor } }, timeline: { lineStyle: { color: contrastColor }, label: { color: contrastColor }, controlStyle: { color: contrastColor, borderColor: contrastColor } }, calendar: { itemStyle: { color: backgroundColor }, dayLabel: { color: contrastColor }, monthLabel: { color: contrastColor }, yearLabel: { color: contrastColor } }, timeAxis: axisCommon(), logAxis: axisCommon(), valueAxis: axisCommon(), categoryAxis: axisCommon(), line: { symbol: "circle" }, graph: { color: colorPalette }, gauge: { title: { color: contrastColor }, axisLine: { lineStyle: { color: [[1, "rgba(207,212,219,0.2)"]] } }, axisLabel: { color: contrastColor }, detail: { color: "#EEF1FA" } }, candlestick: { itemStyle: { color: "#f64e56", color0: "#54ea92", borderColor: "#f64e56", borderColor0: "#54ea92" } } }; theme.categoryAxis.splitLine.show = false; var darkTheme = theme; var ECEventProcessor = function() { function ECEventProcessor2() { } ECEventProcessor2.prototype.normalizeQuery = function(query) { var cptQuery = {}; var dataQuery = {}; var otherQuery = {}; if (isString(query)) { var condCptType = parseClassType(query); cptQuery.mainType = condCptType.main || null; cptQuery.subType = condCptType.sub || null; } else { var suffixes_1 = ["Index", "Name", "Id"]; var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 }; each$g(query, function(val, key2) { var reserved = false; for (var i = 0; i < suffixes_1.length; i++) { var propSuffix = suffixes_1[i]; var suffixPos = key2.lastIndexOf(propSuffix); if (suffixPos > 0 && suffixPos === key2.length - propSuffix.length) { var mainType = key2.slice(0, suffixPos); if (mainType !== "data") { cptQuery.mainType = mainType; cptQuery[propSuffix.toLowerCase()] = val; reserved = true; } } } if (dataKeys_1.hasOwnProperty(key2)) { dataQuery[key2] = val; reserved = true; } if (!reserved) { otherQuery[key2] = val; } }); } return { cptQuery, dataQuery, otherQuery }; }; ECEventProcessor2.prototype.filter = function(eventType, query) { var eventInfo = this.eventInfo; if (!eventInfo) { return true; } var targetEl = eventInfo.targetEl; var packedEvent = eventInfo.packedEvent; var model = eventInfo.model; var view2 = eventInfo.view; if (!model || !view2) { return true; } var cptQuery = query.cptQuery; var dataQuery = query.dataQuery; return check2(cptQuery, model, "mainType") && check2(cptQuery, model, "subType") && check2(cptQuery, model, "index", "componentIndex") && check2(cptQuery, model, "name") && check2(cptQuery, model, "id") && check2(dataQuery, packedEvent, "name") && check2(dataQuery, packedEvent, "dataIndex") && check2(dataQuery, packedEvent, "dataType") && (!view2.filterForExposedEvent || view2.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent)); function check2(query2, host, prop, propOnHost) { return query2[prop] == null || host[propOnHost || prop] === query2[prop]; } }; ECEventProcessor2.prototype.afterTrigger = function() { this.eventInfo = null; }; return ECEventProcessor2; }(); var seriesSymbolTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { var data = seriesModel.getData(); if (seriesModel.legendIcon) { data.setVisual("legendIcon", seriesModel.legendIcon); } if (!seriesModel.hasSymbolVisual) { return; } var symbolType = seriesModel.get("symbol"); var symbolSize = seriesModel.get("symbolSize"); var keepAspect = seriesModel.get("symbolKeepAspect"); var symbolRotate = seriesModel.get("symbolRotate"); var symbolOffset = seriesModel.get("symbolOffset"); var hasSymbolTypeCallback = isFunction(symbolType); var hasSymbolSizeCallback = isFunction(symbolSize); var hasSymbolRotateCallback = isFunction(symbolRotate); var hasSymbolOffsetCallback = isFunction(symbolOffset); var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback || hasSymbolOffsetCallback; var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : seriesModel.defaultSymbol; var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null; var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null; var seriesSymbolOffset = !hasSymbolOffsetCallback ? symbolOffset : null; data.setVisual({ legendIcon: seriesModel.legendIcon || seriesSymbol, symbol: seriesSymbol, symbolSize: seriesSymbolSize, symbolKeepAspect: keepAspect, symbolRotate: seriesSymbolRotate, symbolOffset: seriesSymbolOffset }); if (ecModel.isSeriesFiltered(seriesModel)) { return; } function dataEach(data2, idx) { var rawValue = seriesModel.getRawValue(idx); var params = seriesModel.getDataParams(idx); hasSymbolTypeCallback && data2.setItemVisual(idx, "symbol", symbolType(rawValue, params)); hasSymbolSizeCallback && data2.setItemVisual(idx, "symbolSize", symbolSize(rawValue, params)); hasSymbolRotateCallback && data2.setItemVisual(idx, "symbolRotate", symbolRotate(rawValue, params)); hasSymbolOffsetCallback && data2.setItemVisual(idx, "symbolOffset", symbolOffset(rawValue, params)); } return { dataEach: hasCallback ? dataEach : null }; } }; var dataSymbolTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { if (!seriesModel.hasSymbolVisual) { return; } if (ecModel.isSeriesFiltered(seriesModel)) { return; } var data = seriesModel.getData(); function dataEach(data2, idx) { var itemModel = data2.getItemModel(idx); var itemSymbolType = itemModel.getShallow("symbol", true); var itemSymbolSize = itemModel.getShallow("symbolSize", true); var itemSymbolRotate = itemModel.getShallow("symbolRotate", true); var itemSymbolOffset = itemModel.getShallow("symbolOffset", true); var itemSymbolKeepAspect = itemModel.getShallow("symbolKeepAspect", true); if (itemSymbolType != null) { data2.setItemVisual(idx, "symbol", itemSymbolType); } if (itemSymbolSize != null) { data2.setItemVisual(idx, "symbolSize", itemSymbolSize); } if (itemSymbolRotate != null) { data2.setItemVisual(idx, "symbolRotate", itemSymbolRotate); } if (itemSymbolOffset != null) { data2.setItemVisual(idx, "symbolOffset", itemSymbolOffset); } if (itemSymbolKeepAspect != null) { data2.setItemVisual(idx, "symbolKeepAspect", itemSymbolKeepAspect); } } return { dataEach: data.hasItemOption ? dataEach : null }; } }; function getItemVisualFromData(data, dataIndex, key2) { switch (key2) { case "color": var style = data.getItemVisual(dataIndex, "style"); return style[data.getVisual("drawType")]; case "opacity": return data.getItemVisual(dataIndex, "style").opacity; case "symbol": case "symbolSize": case "liftZ": return data.getItemVisual(dataIndex, key2); } } function getVisualFromData(data, key2) { switch (key2) { case "color": var style = data.getVisual("style"); return style[data.getVisual("drawType")]; case "opacity": return data.getVisual("style").opacity; case "symbol": case "symbolSize": case "liftZ": return data.getVisual(key2); } } function setItemVisualFromData(data, dataIndex, key2, value) { switch (key2) { case "color": var style = data.ensureUniqueItemVisual(dataIndex, "style"); style[data.getVisual("drawType")] = value; data.setItemVisual(dataIndex, "colorFromPalette", false); break; case "opacity": data.ensureUniqueItemVisual(dataIndex, "style").opacity = value; break; case "symbol": case "symbolSize": case "liftZ": data.setItemVisual(dataIndex, key2, value); break; } } function createLegacyDataSelectAction(seriesType2, ecRegisterAction) { function getSeriesIndices(ecModel, payload) { var seriesIndices = []; ecModel.eachComponent({ mainType: "series", subType: seriesType2, query: payload }, function(seriesModel) { seriesIndices.push(seriesModel.seriesIndex); }); return seriesIndices; } each$g([[seriesType2 + "ToggleSelect", "toggleSelect"], [seriesType2 + "Select", "select"], [seriesType2 + "UnSelect", "unselect"]], function(eventsMap) { ecRegisterAction(eventsMap[0], function(payload, ecModel, api) { payload = extend({}, payload); api.dispatchAction(extend(payload, { type: eventsMap[1], seriesIndex: getSeriesIndices(ecModel, payload) })); }); }); } function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) { var legacyEventName = type + eventPostfix; if (!ecIns.isSilent(legacyEventName)) { ecModel.eachComponent({ mainType: "series", subType: "pie" }, function(seriesModel) { var seriesIndex = seriesModel.seriesIndex; var selected = payload.selected; for (var i = 0; i < selected.length; i++) { if (selected[i].seriesIndex === seriesIndex) { var data = seriesModel.getData(); var dataIndex = queryDataIndex(data, payload.fromActionPayload); ecIns.trigger(legacyEventName, { type: legacyEventName, seriesId: seriesModel.id, name: isArray$1(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex), selected: extend({}, seriesModel.option.selectedMap) }); } } }); } } function handleLegacySelectEvents(messageCenter, ecIns, api) { messageCenter.on("selectchanged", function(params) { var ecModel = api.getModel(); if (params.isFromClick) { handleSeriesLegacySelectEvents("map", "selectchanged", ecIns, ecModel, params); handleSeriesLegacySelectEvents("pie", "selectchanged", ecIns, ecModel, params); } else if (params.fromAction === "select") { handleSeriesLegacySelectEvents("map", "selected", ecIns, ecModel, params); handleSeriesLegacySelectEvents("pie", "selected", ecIns, ecModel, params); } else if (params.fromAction === "unselect") { handleSeriesLegacySelectEvents("map", "unselected", ecIns, ecModel, params); handleSeriesLegacySelectEvents("pie", "unselected", ecIns, ecModel, params); } }); } function findEventDispatcher(target, det, returnFirstMatch) { var found; while (target) { if (det(target)) { found = target; if (returnFirstMatch) { break; } } target = target.__hostTarget || target.parent; } return found; } var wmUniqueIndex = Math.round(Math.random() * 9); var supportDefineProperty = typeof Object.defineProperty === "function"; var WeakMap = function() { function WeakMap2() { this._id = "__ec_inner_" + wmUniqueIndex++; } WeakMap2.prototype.get = function(key2) { return this._guard(key2)[this._id]; }; WeakMap2.prototype.set = function(key2, value) { var target = this._guard(key2); if (supportDefineProperty) { Object.defineProperty(target, this._id, { value, enumerable: false, configurable: true }); } else { target[this._id] = value; } return this; }; WeakMap2.prototype["delete"] = function(key2) { if (this.has(key2)) { delete this._guard(key2)[this._id]; return true; } return false; }; WeakMap2.prototype.has = function(key2) { return !!this._guard(key2)[this._id]; }; WeakMap2.prototype._guard = function(key2) { if (key2 !== Object(key2)) { throw TypeError("Value of WeakMap is not a non-null object."); } return key2; }; return WeakMap2; }(); var WeakMap$1 = WeakMap; var Triangle = Path$1.extend({ type: "triangle", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function(path, shape) { var cx = shape.cx; var cy = shape.cy; var width = shape.width / 2; var height = shape.height / 2; path.moveTo(cx, cy - height); path.lineTo(cx + width, cy + height); path.lineTo(cx - width, cy + height); path.closePath(); } }); var Diamond = Path$1.extend({ type: "diamond", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function(path, shape) { var cx = shape.cx; var cy = shape.cy; var width = shape.width / 2; var height = shape.height / 2; path.moveTo(cx, cy - height); path.lineTo(cx + width, cy); path.lineTo(cx, cy + height); path.lineTo(cx - width, cy); path.closePath(); } }); var Pin = Path$1.extend({ type: "pin", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function(path, shape) { var x = shape.x; var y = shape.y; var w = shape.width / 5 * 3; var h = Math.max(w, shape.height); var r = w / 2; var dy = r * r / (h - r); var cy = y - h + r + dy; var angle = Math.asin(dy / r); var dx = Math.cos(angle) * r; var tanX = Math.sin(angle); var tanY = Math.cos(angle); var cpLen = r * 0.6; var cpLen2 = r * 0.7; path.moveTo(x - dx, cy + dy); path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle); path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y); path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy); path.closePath(); } }); var Arrow = Path$1.extend({ type: "arrow", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function(ctx, shape) { var height = shape.height; var width = shape.width; var x = shape.x; var y = shape.y; var dx = width / 3 * 2; ctx.moveTo(x, y); ctx.lineTo(x + dx, y + height); ctx.lineTo(x, y + height / 4 * 3); ctx.lineTo(x - dx, y + height); ctx.lineTo(x, y); ctx.closePath(); } }); var symbolCtors = { line: Line$3, rect: Rect$3, roundRect: Rect$3, square: Rect$3, circle: Circle$1, diamond: Diamond, pin: Pin, arrow: Arrow, triangle: Triangle }; var symbolShapeMakers = { line: function(x, y, w, h, shape) { shape.x1 = x; shape.y1 = y + h / 2; shape.x2 = x + w; shape.y2 = y + h / 2; }, rect: function(x, y, w, h, shape) { shape.x = x; shape.y = y; shape.width = w; shape.height = h; }, roundRect: function(x, y, w, h, shape) { shape.x = x; shape.y = y; shape.width = w; shape.height = h; shape.r = Math.min(w, h) / 4; }, square: function(x, y, w, h, shape) { var size = Math.min(w, h); shape.x = x; shape.y = y; shape.width = size; shape.height = size; }, circle: function(x, y, w, h, shape) { shape.cx = x + w / 2; shape.cy = y + h / 2; shape.r = Math.min(w, h) / 2; }, diamond: function(x, y, w, h, shape) { shape.cx = x + w / 2; shape.cy = y + h / 2; shape.width = w; shape.height = h; }, pin: function(x, y, w, h, shape) { shape.x = x + w / 2; shape.y = y + h / 2; shape.width = w; shape.height = h; }, arrow: function(x, y, w, h, shape) { shape.x = x + w / 2; shape.y = y + h / 2; shape.width = w; shape.height = h; }, triangle: function(x, y, w, h, shape) { shape.cx = x + w / 2; shape.cy = y + h / 2; shape.width = w; shape.height = h; } }; var symbolBuildProxies = {}; each$g(symbolCtors, function(Ctor, name) { symbolBuildProxies[name] = new Ctor(); }); var SymbolClz$1 = Path$1.extend({ type: "symbol", shape: { symbolType: "", x: 0, y: 0, width: 0, height: 0 }, calculateTextPosition: function(out2, config, rect) { var res = calculateTextPosition(out2, config, rect); var shape = this.shape; if (shape && shape.symbolType === "pin" && config.position === "inside") { res.y = rect.y + rect.height * 0.4; } return res; }, buildPath: function(ctx, shape, inBundle) { var symbolType = shape.symbolType; if (symbolType !== "none") { var proxySymbol = symbolBuildProxies[symbolType]; if (!proxySymbol) { symbolType = "rect"; proxySymbol = symbolBuildProxies[symbolType]; } symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape); proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle); } } }); function symbolPathSetColor(color2, innerColor2) { if (this.type !== "image") { var symbolStyle = this.style; if (this.__isEmptyBrush) { symbolStyle.stroke = color2; symbolStyle.fill = innerColor2 || "#fff"; symbolStyle.lineWidth = 2; } else if (this.shape.symbolType === "line") { symbolStyle.stroke = color2; } else { symbolStyle.fill = color2; } this.markRedraw(); } } function createSymbol$1(symbolType, x, y, w, h, color2, keepAspect) { var isEmpty = symbolType.indexOf("empty") === 0; if (isEmpty) { symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); } var symbolPath; if (symbolType.indexOf("image://") === 0) { symbolPath = makeImage(symbolType.slice(8), new BoundingRect$1(x, y, w, h), keepAspect ? "center" : "cover"); } else if (symbolType.indexOf("path://") === 0) { symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect$1(x, y, w, h), keepAspect ? "center" : "cover"); } else { symbolPath = new SymbolClz$1({ shape: { symbolType, x, y, width: w, height: h } }); } symbolPath.__isEmptyBrush = isEmpty; symbolPath.setColor = symbolPathSetColor; if (color2) { symbolPath.setColor(color2); } return symbolPath; } function normalizeSymbolSize(symbolSize) { if (!isArray$1(symbolSize)) { symbolSize = [+symbolSize, +symbolSize]; } return [symbolSize[0] || 0, symbolSize[1] || 0]; } function normalizeSymbolOffset(symbolOffset, symbolSize) { if (symbolOffset == null) { return; } if (!isArray$1(symbolOffset)) { symbolOffset = [symbolOffset, symbolOffset]; } return [parsePercent$1(symbolOffset[0], symbolSize[0]) || 0, parsePercent$1(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0]; } function createLinearGradient(ctx, obj, rect) { var x = obj.x == null ? 0 : obj.x; var x2 = obj.x2 == null ? 1 : obj.x2; var y = obj.y == null ? 0 : obj.y; var y2 = obj.y2 == null ? 0 : obj.y2; if (!obj.global) { x = x * rect.width + rect.x; x2 = x2 * rect.width + rect.x; y = y * rect.height + rect.y; y2 = y2 * rect.height + rect.y; } x = isNaN(x) ? 0 : x; x2 = isNaN(x2) ? 1 : x2; y = isNaN(y) ? 0 : y; y2 = isNaN(y2) ? 0 : y2; var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); return canvasGradient; } function createRadialGradient(ctx, obj, rect) { var width = rect.width; var height = rect.height; var min3 = Math.min(width, height); var x = obj.x == null ? 0.5 : obj.x; var y = obj.y == null ? 0.5 : obj.y; var r = obj.r == null ? 0.5 : obj.r; if (!obj.global) { x = x * width + rect.x; y = y * height + rect.y; r = r * min3; } var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); return canvasGradient; } function getCanvasGradient(ctx, obj, rect) { var canvasGradient = obj.type === "radial" ? createRadialGradient(ctx, obj, rect) : createLinearGradient(ctx, obj, rect); var colorStops = obj.colorStops; for (var i = 0; i < colorStops.length; i++) { canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color); } return canvasGradient; } function isClipPathChanged(clipPaths, prevClipPaths) { if (clipPaths === prevClipPaths || !clipPaths && !prevClipPaths) { return false; } if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) { return true; } for (var i = 0; i < clipPaths.length; i++) { if (clipPaths[i] !== prevClipPaths[i]) { return true; } } return false; } function normalizeLineDash(lineType, lineWidth) { if (!lineType || lineType === "solid" || !(lineWidth > 0)) { return null; } lineWidth = lineWidth || 1; return lineType === "dashed" ? [4 * lineWidth, 2 * lineWidth] : lineType === "dotted" ? [lineWidth] : isNumber(lineType) ? [lineType] : isArray$1(lineType) ? lineType : null; } var pathProxyForDraw = new PathProxy$1(true); function styleHasStroke(style) { var stroke = style.stroke; return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); } function isValidStrokeFillStyle(strokeOrFill) { return typeof strokeOrFill === "string" && strokeOrFill !== "none"; } function styleHasFill(style) { var fill = style.fill; return fill != null && fill !== "none"; } function doFillPath(ctx, style) { if (style.fillOpacity != null && style.fillOpacity !== 1) { var originalGlobalAlpha = ctx.globalAlpha; ctx.globalAlpha = style.fillOpacity * style.opacity; ctx.fill(); ctx.globalAlpha = originalGlobalAlpha; } else { ctx.fill(); } } function doStrokePath(ctx, style) { if (style.strokeOpacity != null && style.strokeOpacity !== 1) { var originalGlobalAlpha = ctx.globalAlpha; ctx.globalAlpha = style.strokeOpacity * style.opacity; ctx.stroke(); ctx.globalAlpha = originalGlobalAlpha; } else { ctx.stroke(); } } function createCanvasPattern(ctx, pattern, el) { var image = createOrUpdateImage(pattern.image, pattern.__image, el); if (isImageReady(image)) { var canvasPattern = ctx.createPattern(image, pattern.repeat || "repeat"); if (typeof DOMMatrix === "function" && canvasPattern.setTransform) { var matrix2 = new DOMMatrix(); matrix2.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180); matrix2.scaleSelf(pattern.scaleX || 1, pattern.scaleY || 1); matrix2.translateSelf(pattern.x || 0, pattern.y || 0); canvasPattern.setTransform(matrix2); } return canvasPattern; } } function brushPath(ctx, el, style, inBatch) { var hasStroke = styleHasStroke(style); var hasFill = styleHasFill(style); var strokePercent = style.strokePercent; var strokePart = strokePercent < 1; var firstDraw = !el.path; if ((!el.silent || strokePart) && firstDraw) { el.createPathProxy(); } var path = el.path || pathProxyForDraw; if (!inBatch) { var fill = style.fill; var stroke = style.stroke; var hasFillGradient = hasFill && !!fill.colorStops; var hasStrokeGradient = hasStroke && !!stroke.colorStops; var hasFillPattern = hasFill && !!fill.image; var hasStrokePattern = hasStroke && !!stroke.image; var fillGradient = void 0; var strokeGradient = void 0; var fillPattern = void 0; var strokePattern = void 0; var rect = void 0; if (hasFillGradient || hasStrokeGradient) { rect = el.getBoundingRect(); } if (hasFillGradient) { fillGradient = el.__dirty ? getCanvasGradient(ctx, fill, rect) : el.__canvasFillGradient; el.__canvasFillGradient = fillGradient; } if (hasStrokeGradient) { strokeGradient = el.__dirty ? getCanvasGradient(ctx, stroke, rect) : el.__canvasStrokeGradient; el.__canvasStrokeGradient = strokeGradient; } if (hasFillPattern) { fillPattern = el.__dirty || !el.__canvasFillPattern ? createCanvasPattern(ctx, fill, el) : el.__canvasFillPattern; el.__canvasFillPattern = fillPattern; } if (hasStrokePattern) { strokePattern = el.__dirty || !el.__canvasStrokePattern ? createCanvasPattern(ctx, stroke, el) : el.__canvasStrokePattern; el.__canvasStrokePattern = fillPattern; } if (hasFillGradient) { ctx.fillStyle = fillGradient; } else if (hasFillPattern) { if (fillPattern) { ctx.fillStyle = fillPattern; } else { hasFill = false; } } if (hasStrokeGradient) { ctx.strokeStyle = strokeGradient; } else if (hasStrokePattern) { if (strokePattern) { ctx.strokeStyle = strokePattern; } else { hasStroke = false; } } } var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth); var lineDashOffset = style.lineDashOffset; var ctxLineDash = !!ctx.setLineDash; var scale2 = el.getGlobalScale(); path.setScale(scale2[0], scale2[1], el.segmentIgnoreThreshold); if (lineDash) { var lineScale_1 = style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1; if (lineScale_1 && lineScale_1 !== 1) { lineDash = map$1(lineDash, function(rawVal) { return rawVal / lineScale_1; }); lineDashOffset /= lineScale_1; } } var needsRebuild = true; if (firstDraw || el.__dirty & SHAPE_CHANGED_BIT || lineDash && !ctxLineDash && hasStroke) { path.setDPR(ctx.dpr); if (strokePart) { path.setContext(null); } else { path.setContext(ctx); needsRebuild = false; } path.reset(); if (lineDash && !ctxLineDash) { path.setLineDash(lineDash); path.setLineDashOffset(lineDashOffset); } el.buildPath(path, el.shape, inBatch); path.toStatic(); el.pathUpdated(); } if (needsRebuild) { path.rebuildPath(ctx, strokePart ? strokePercent : 1); } if (lineDash && ctxLineDash) { ctx.setLineDash(lineDash); ctx.lineDashOffset = lineDashOffset; } if (!inBatch) { if (style.strokeFirst) { if (hasStroke) { doStrokePath(ctx, style); } if (hasFill) { doFillPath(ctx, style); } } else { if (hasFill) { doFillPath(ctx, style); } if (hasStroke) { doStrokePath(ctx, style); } } } if (lineDash && ctxLineDash) { ctx.setLineDash([]); } } function brushImage(ctx, el, style) { var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload); if (!image || !isImageReady(image)) { return; } var x = style.x || 0; var y = style.y || 0; var width = el.getWidth(); var height = el.getHeight(); var aspect = image.width / image.height; if (width == null && height != null) { width = height * aspect; } else if (height == null && width != null) { height = width / aspect; } else if (width == null && height == null) { width = image.width; height = image.height; } if (style.sWidth && style.sHeight) { var sx = style.sx || 0; var sy = style.sy || 0; ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height); } else if (style.sx && style.sy) { var sx = style.sx; var sy = style.sy; var sWidth = width - sx; var sHeight = height - sy; ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height); } else { ctx.drawImage(image, x, y, width, height); } } function brushText(ctx, el, style) { var text = style.text; text != null && (text += ""); if (text) { ctx.font = style.font || DEFAULT_FONT; ctx.textAlign = style.textAlign; ctx.textBaseline = style.textBaseline; var hasLineDash = void 0; if (ctx.setLineDash) { var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth); var lineDashOffset = style.lineDashOffset; if (lineDash) { var lineScale_2 = style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1; if (lineScale_2 && lineScale_2 !== 1) { lineDash = map$1(lineDash, function(rawVal) { return rawVal / lineScale_2; }); lineDashOffset /= lineScale_2; } ctx.setLineDash(lineDash); ctx.lineDashOffset = lineDashOffset; hasLineDash = true; } } if (style.strokeFirst) { if (styleHasStroke(style)) { ctx.strokeText(text, style.x, style.y); } if (styleHasFill(style)) { ctx.fillText(text, style.x, style.y); } } else { if (styleHasFill(style)) { ctx.fillText(text, style.x, style.y); } if (styleHasStroke(style)) { ctx.strokeText(text, style.x, style.y); } } if (hasLineDash) { ctx.setLineDash([]); } } } var SHADOW_NUMBER_PROPS = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"]; var STROKE_PROPS = [ ["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10] ]; function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) { var styleChanged = false; if (!forceSetAll) { prevStyle = prevStyle || {}; if (style === prevStyle) { return false; } } if (forceSetAll || style.opacity !== prevStyle.opacity) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } var opacity = Math.max(Math.min(style.opacity, 1), 0); ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity; } if (forceSetAll || style.blend !== prevStyle.blend) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend; } for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) { var propName = SHADOW_NUMBER_PROPS[i]; if (forceSetAll || style[propName] !== prevStyle[propName]) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx[propName] = ctx.dpr * (style[propName] || 0); } } if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor; } return styleChanged; } function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) { var style = getStyle(el, scope.inHover); var prevStyle = forceSetAll ? null : prevEl && getStyle(prevEl, scope.inHover) || {}; if (style === prevStyle) { return false; } var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope); if (forceSetAll || style.fill !== prevStyle.fill) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill); } if (forceSetAll || style.stroke !== prevStyle.stroke) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke); } if (forceSetAll || style.opacity !== prevStyle.opacity) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; } if (el.hasStroke()) { var lineWidth = style.lineWidth; var newLineWidth = lineWidth / (style.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1); if (ctx.lineWidth !== newLineWidth) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx.lineWidth = newLineWidth; } } for (var i = 0; i < STROKE_PROPS.length; i++) { var prop = STROKE_PROPS[i]; var propName = prop[0]; if (forceSetAll || style[propName] !== prevStyle[propName]) { if (!styleChanged) { flushPathDrawn(ctx, scope); styleChanged = true; } ctx[propName] = style[propName] || prop[1]; } } return styleChanged; } function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) { return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope); } function setContextTransform(ctx, el) { var m2 = el.transform; var dpr2 = ctx.dpr || 1; if (m2) { ctx.setTransform(dpr2 * m2[0], dpr2 * m2[1], dpr2 * m2[2], dpr2 * m2[3], dpr2 * m2[4], dpr2 * m2[5]); } else { ctx.setTransform(dpr2, 0, 0, dpr2, 0, 0); } } function updateClipStatus(clipPaths, ctx, scope) { var allClipped = false; for (var i = 0; i < clipPaths.length; i++) { var clipPath = clipPaths[i]; allClipped = allClipped || clipPath.isZeroArea(); setContextTransform(ctx, clipPath); ctx.beginPath(); clipPath.buildPath(ctx, clipPath.shape); ctx.clip(); } scope.allClipped = allClipped; } function isTransformChanged(m0, m1) { if (m0 && m1) { return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5]; } else if (!m0 && !m1) { return false; } return true; } var DRAW_TYPE_PATH = 1; var DRAW_TYPE_IMAGE = 2; var DRAW_TYPE_TEXT = 3; var DRAW_TYPE_INCREMENTAL = 4; function canPathBatch(style) { var hasFill = styleHasFill(style); var hasStroke = styleHasStroke(style); return !(style.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style.fill !== "string" || hasStroke && typeof style.stroke !== "string" || style.strokePercent < 1 || style.strokeOpacity < 1 || style.fillOpacity < 1); } function flushPathDrawn(ctx, scope) { scope.batchFill && ctx.fill(); scope.batchStroke && ctx.stroke(); scope.batchFill = ""; scope.batchStroke = ""; } function getStyle(el, inHover) { return inHover ? el.__hoverStyle || el.style : el.style; } function brushSingle(ctx, el) { brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true); } function brush(ctx, el, scope, isLast) { var m2 = el.transform; if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) { el.__dirty &= ~REDRAW_BIT; el.__isRendered = false; return; } var clipPaths = el.__clipPaths; var prevElClipPaths = scope.prevElClipPaths; var forceSetTransform = false; var forceSetStyle = false; if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) { if (prevElClipPaths && prevElClipPaths.length) { flushPathDrawn(ctx, scope); ctx.restore(); forceSetStyle = forceSetTransform = true; scope.prevElClipPaths = null; scope.allClipped = false; scope.prevEl = null; } if (clipPaths && clipPaths.length) { flushPathDrawn(ctx, scope); ctx.save(); updateClipStatus(clipPaths, ctx, scope); forceSetTransform = true; } scope.prevElClipPaths = clipPaths; } if (scope.allClipped) { el.__isRendered = false; return; } el.beforeBrush && el.beforeBrush(); el.innerBeforeBrush(); var prevEl = scope.prevEl; if (!prevEl) { forceSetStyle = forceSetTransform = true; } var canBatchPath = el instanceof Path$1 && el.autoBatch && canPathBatch(el.style); if (forceSetTransform || isTransformChanged(m2, prevEl.transform)) { flushPathDrawn(ctx, scope); setContextTransform(ctx, el); } else if (!canBatchPath) { flushPathDrawn(ctx, scope); } var style = getStyle(el, scope.inHover); if (el instanceof Path$1) { if (scope.lastDrawType !== DRAW_TYPE_PATH) { forceSetStyle = true; scope.lastDrawType = DRAW_TYPE_PATH; } bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); if (!canBatchPath || !scope.batchFill && !scope.batchStroke) { ctx.beginPath(); } brushPath(ctx, el, style, canBatchPath); if (canBatchPath) { scope.batchFill = style.fill || ""; scope.batchStroke = style.stroke || ""; } } else { if (el instanceof TSpan$1) { if (scope.lastDrawType !== DRAW_TYPE_TEXT) { forceSetStyle = true; scope.lastDrawType = DRAW_TYPE_TEXT; } bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); brushText(ctx, el, style); } else if (el instanceof ZRImage$1) { if (scope.lastDrawType !== DRAW_TYPE_IMAGE) { forceSetStyle = true; scope.lastDrawType = DRAW_TYPE_IMAGE; } bindImageStyle(ctx, el, prevEl, forceSetStyle, scope); brushImage(ctx, el, style); } else if (el instanceof IncrementalDisplayable$1) { if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) { forceSetStyle = true; scope.lastDrawType = DRAW_TYPE_INCREMENTAL; } brushIncremental(ctx, el, scope); } } if (canBatchPath && isLast) { flushPathDrawn(ctx, scope); } el.innerAfterBrush(); el.afterBrush && el.afterBrush(); scope.prevEl = el; el.__dirty = 0; el.__isRendered = true; } function brushIncremental(ctx, el, scope) { var displayables = el.getDisplayables(); var temporalDisplayables = el.getTemporalDisplayables(); ctx.save(); var innerScope = { prevElClipPaths: null, prevEl: null, allClipped: false, viewWidth: scope.viewWidth, viewHeight: scope.viewHeight, inHover: scope.inHover }; var i; var len2; for (i = el.getCursor(), len2 = displayables.length; i < len2; i++) { var displayable = displayables[i]; displayable.beforeBrush && displayable.beforeBrush(); displayable.innerBeforeBrush(); brush(ctx, displayable, innerScope, i === len2 - 1); displayable.innerAfterBrush(); displayable.afterBrush && displayable.afterBrush(); innerScope.prevEl = displayable; } for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) { var displayable = temporalDisplayables[i_1]; displayable.beforeBrush && displayable.beforeBrush(); displayable.innerBeforeBrush(); brush(ctx, displayable, innerScope, i_1 === len_1 - 1); displayable.innerAfterBrush(); displayable.afterBrush && displayable.afterBrush(); innerScope.prevEl = displayable; } el.clearTemporalDisplayables(); el.notClear = true; ctx.restore(); } var decalMap = new WeakMap$1(); var decalCache = new LRU$1(100); var decalKeys = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"]; function createOrUpdatePatternFromDecal(decalObject, api) { if (decalObject === "none") { return null; } var dpr2 = api.getDevicePixelRatio(); var zr = api.getZr(); var isSVG = zr.painter.type === "svg"; if (decalObject.dirty) { decalMap["delete"](decalObject); } var oldPattern = decalMap.get(decalObject); if (oldPattern) { return oldPattern; } var decalOpt = defaults(decalObject, { symbol: "rect", symbolSize: 1, symbolKeepAspect: true, color: "rgba(0, 0, 0, 0.2)", backgroundColor: null, dashArrayX: 5, dashArrayY: 5, rotation: 0, maxTileWidth: 512, maxTileHeight: 512 }); if (decalOpt.backgroundColor === "none") { decalOpt.backgroundColor = null; } var pattern = { repeat: "repeat" }; setPatternnSource(pattern); pattern.rotation = decalOpt.rotation; pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr2; decalMap.set(decalObject, pattern); decalObject.dirty = false; return pattern; function setPatternnSource(pattern2) { var keys2 = [dpr2]; var isValidKey = true; for (var i = 0; i < decalKeys.length; ++i) { var value = decalOpt[decalKeys[i]]; var valueType = typeof value; if (value != null && !isArray$1(value) && valueType !== "string" && valueType !== "number" && valueType !== "boolean") { isValidKey = false; break; } keys2.push(value); } var cacheKey; if (isValidKey) { cacheKey = keys2.join(",") + (isSVG ? "-svg" : ""); var cache = decalCache.get(cacheKey); if (cache) { isSVG ? pattern2.svgElement = cache : pattern2.image = cache; } } var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX); var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY); var symbolArray = normalizeSymbolArray(decalOpt.symbol); var lineBlockLengthsX = getLineBlockLengthX(dashArrayX); var lineBlockLengthY = getLineBlockLengthY(dashArrayY); var canvas = !isSVG && createCanvas(); var svgRoot = isSVG && zr.painter.createSVGElement("g"); var pSize = getPatternSize(); var ctx; if (canvas) { canvas.width = pSize.width * dpr2; canvas.height = pSize.height * dpr2; ctx = canvas.getContext("2d"); } brushDecal(); if (isValidKey) { decalCache.put(cacheKey, canvas || svgRoot); } pattern2.image = canvas; pattern2.svgElement = svgRoot; pattern2.svgWidth = pSize.width; pattern2.svgHeight = pSize.height; function getPatternSize() { var width = 1; for (var i2 = 0, xlen = lineBlockLengthsX.length; i2 < xlen; ++i2) { width = getLeastCommonMultiple(width, lineBlockLengthsX[i2]); } var symbolRepeats = 1; for (var i2 = 0, xlen = symbolArray.length; i2 < xlen; ++i2) { symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i2].length); } width *= symbolRepeats; var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length; return { width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)), height: Math.max(1, Math.min(height, decalOpt.maxTileHeight)) }; } function brushDecal() { if (ctx) { ctx.clearRect(0, 0, canvas.width, canvas.height); if (decalOpt.backgroundColor) { ctx.fillStyle = decalOpt.backgroundColor; ctx.fillRect(0, 0, canvas.width, canvas.height); } } var ySum = 0; for (var i2 = 0; i2 < dashArrayY.length; ++i2) { ySum += dashArrayY[i2]; } if (ySum <= 0) { return; } var y = -lineBlockLengthY; var yId = 0; var yIdTotal = 0; var xId0 = 0; while (y < pSize.height) { if (yId % 2 === 0) { var symbolYId = yIdTotal / 2 % symbolArray.length; var x = 0; var xId1 = 0; var xId1Total = 0; while (x < pSize.width * 2) { var xSum = 0; for (var i2 = 0; i2 < dashArrayX[xId0].length; ++i2) { xSum += dashArrayX[xId0][i2]; } if (xSum <= 0) { break; } if (xId1 % 2 === 0) { var size = (1 - decalOpt.symbolSize) * 0.5; var left = x + dashArrayX[xId0][xId1] * size; var top_1 = y + dashArrayY[yId] * size; var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize; var height = dashArrayY[yId] * decalOpt.symbolSize; var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length; brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]); } x += dashArrayX[xId0][xId1]; ++xId1Total; ++xId1; if (xId1 === dashArrayX[xId0].length) { xId1 = 0; } } ++xId0; if (xId0 === dashArrayX.length) { xId0 = 0; } } y += dashArrayY[yId]; ++yIdTotal; ++yId; if (yId === dashArrayY.length) { yId = 0; } } function brushSymbol(x2, y2, width2, height2, symbolType) { var scale2 = isSVG ? 1 : dpr2; var symbol = createSymbol$1(symbolType, x2 * scale2, y2 * scale2, width2 * scale2, height2 * scale2, decalOpt.color, decalOpt.symbolKeepAspect); if (isSVG) { svgRoot.appendChild(zr.painter.paintOne(symbol)); } else { brushSingle(ctx, symbol); } } } } } function normalizeSymbolArray(symbol) { if (!symbol || symbol.length === 0) { return [["rect"]]; } if (typeof symbol === "string") { return [[symbol]]; } var isAllString = true; for (var i = 0; i < symbol.length; ++i) { if (typeof symbol[i] !== "string") { isAllString = false; break; } } if (isAllString) { return normalizeSymbolArray([symbol]); } var result = []; for (var i = 0; i < symbol.length; ++i) { if (typeof symbol[i] === "string") { result.push([symbol[i]]); } else { result.push(symbol[i]); } } return result; } function normalizeDashArrayX(dash) { if (!dash || dash.length === 0) { return [[0, 0]]; } if (typeof dash === "number") { var dashValue = Math.ceil(dash); return [[dashValue, dashValue]]; } var isAllNumber = true; for (var i = 0; i < dash.length; ++i) { if (typeof dash[i] !== "number") { isAllNumber = false; break; } } if (isAllNumber) { return normalizeDashArrayX([dash]); } var result = []; for (var i = 0; i < dash.length; ++i) { if (typeof dash[i] === "number") { var dashValue = Math.ceil(dash[i]); result.push([dashValue, dashValue]); } else { var dashValue = map$1(dash[i], function(n) { return Math.ceil(n); }); if (dashValue.length % 2 === 1) { result.push(dashValue.concat(dashValue)); } else { result.push(dashValue); } } } return result; } function normalizeDashArrayY(dash) { if (!dash || typeof dash === "object" && dash.length === 0) { return [0, 0]; } if (typeof dash === "number") { var dashValue_1 = Math.ceil(dash); return [dashValue_1, dashValue_1]; } var dashValue = map$1(dash, function(n) { return Math.ceil(n); }); return dash.length % 2 ? dashValue.concat(dashValue) : dashValue; } function getLineBlockLengthX(dash) { return map$1(dash, function(line) { return getLineBlockLengthY(line); }); } function getLineBlockLengthY(dash) { var blockLength = 0; for (var i = 0; i < dash.length; ++i) { blockLength += dash[i]; } if (dash.length % 2 === 1) { return blockLength * 2; } return blockLength; } function decalVisual(ecModel, api) { ecModel.eachRawSeries(function(seriesModel) { if (ecModel.isSeriesFiltered(seriesModel)) { return; } var data = seriesModel.getData(); if (data.hasItemVisual()) { data.each(function(idx) { var decal2 = data.getItemVisual(idx, "decal"); if (decal2) { var itemStyle = data.ensureUniqueItemVisual(idx, "style"); itemStyle.decal = createOrUpdatePatternFromDecal(decal2, api); } }); } var decal = data.getVisual("decal"); if (decal) { var style = data.getVisual("style"); style.decal = createOrUpdatePatternFromDecal(decal, api); } }); } function parseXML(svg) { if (isString(svg)) { var parser = new DOMParser(); svg = parser.parseFromString(svg, "text/xml"); } var svgNode = svg; if (svgNode.nodeType === 9) { svgNode = svgNode.firstChild; } while (svgNode.nodeName.toLowerCase() !== "svg" || svgNode.nodeType !== 1) { svgNode = svgNode.nextSibling; } return svgNode; } var nodeParsers; var INHERITABLE_STYLE_ATTRIBUTES_MAP = { "fill": "fill", "stroke": "stroke", "stroke-width": "lineWidth", "opacity": "opacity", "fill-opacity": "fillOpacity", "stroke-opacity": "strokeOpacity", "stroke-dasharray": "lineDash", "stroke-dashoffset": "lineDashOffset", "stroke-linecap": "lineCap", "stroke-linejoin": "lineJoin", "stroke-miterlimit": "miterLimit", "font-family": "fontFamily", "font-size": "fontSize", "font-style": "fontStyle", "font-weight": "fontWeight", "text-anchor": "textAlign", "visibility": "visibility", "display": "display" }; var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP); var SELF_STYLE_ATTRIBUTES_MAP = { "alignment-baseline": "textBaseline", "stop-color": "stopColor" }; var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP); var SVGParser = function() { function SVGParser2() { this._defs = {}; this._root = null; } SVGParser2.prototype.parse = function(xml, opt) { opt = opt || {}; var svg = parseXML(xml); if (!svg) { throw new Error("Illegal svg"); } this._defsUsePending = []; var root = new Group$4(); this._root = root; var named = []; var viewBox = svg.getAttribute("viewBox") || ""; var width = parseFloat(svg.getAttribute("width") || opt.width); var height = parseFloat(svg.getAttribute("height") || opt.height); isNaN(width) && (width = null); isNaN(height) && (height = null); parseAttributes(svg, root, null, true, false); var child = svg.firstChild; while (child) { this._parseNode(child, root, named, null, false, false); child = child.nextSibling; } applyDefs(this._defs, this._defsUsePending); this._defsUsePending = []; var viewBoxRect; var viewBoxTransform; if (viewBox) { var viewBoxArr = splitNumberSequence(viewBox); if (viewBoxArr.length >= 4) { viewBoxRect = { x: parseFloat(viewBoxArr[0] || 0), y: parseFloat(viewBoxArr[1] || 0), width: parseFloat(viewBoxArr[2]), height: parseFloat(viewBoxArr[3]) }; } } if (viewBoxRect && width != null && height != null) { viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width, height }); if (!opt.ignoreViewBox) { var elRoot = root; root = new Group$4(); root.add(elRoot); elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale; elRoot.x = viewBoxTransform.x; elRoot.y = viewBoxTransform.y; } } if (!opt.ignoreRootClip && width != null && height != null) { root.setClipPath(new Rect$3({ shape: { x: 0, y: 0, width, height } })); } return { root, width, height, viewBoxRect, viewBoxTransform, named }; }; SVGParser2.prototype._parseNode = function(xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) { var nodeName = xmlNode.nodeName.toLowerCase(); var el; var namedFromForSub = namedFrom; if (nodeName === "defs") { isInDefs = true; } if (nodeName === "text") { isInText = true; } if (nodeName === "defs" || nodeName === "switch") { el = parentGroup; } else { if (!isInDefs) { var parser_1 = nodeParsers[nodeName]; if (parser_1 && hasOwn(nodeParsers, nodeName)) { el = parser_1.call(this, xmlNode, parentGroup); var nameAttr = xmlNode.getAttribute("name"); if (nameAttr) { var newNamed = { name: nameAttr, namedFrom: null, svgNodeTagLower: nodeName, el }; named.push(newNamed); if (nodeName === "g") { namedFromForSub = newNamed; } } else if (namedFrom) { named.push({ name: namedFrom.name, namedFrom, svgNodeTagLower: nodeName, el }); } parentGroup.add(el); } } var parser = paintServerParsers[nodeName]; if (parser && hasOwn(paintServerParsers, nodeName)) { var def = parser.call(this, xmlNode); var id = xmlNode.getAttribute("id"); if (id) { this._defs[id] = def; } } } if (el && el.isGroup) { var child = xmlNode.firstChild; while (child) { if (child.nodeType === 1) { this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText); } else if (child.nodeType === 3 && isInText) { this._parseText(child, el); } child = child.nextSibling; } } }; SVGParser2.prototype._parseText = function(xmlNode, parentGroup) { var text = new TSpan$1({ style: { text: xmlNode.textContent }, silent: true, x: this._textX || 0, y: this._textY || 0 }); inheritStyle(parentGroup, text); parseAttributes(xmlNode, text, this._defsUsePending, false, false); applyTextAlignment(text, parentGroup); var textStyle = text.style; var fontSize = textStyle.fontSize; if (fontSize && fontSize < 9) { textStyle.fontSize = 9; text.scaleX *= fontSize / 9; text.scaleY *= fontSize / 9; } var font = (textStyle.fontSize || textStyle.fontFamily) && [ textStyle.fontStyle, textStyle.fontWeight, (textStyle.fontSize || 12) + "px", textStyle.fontFamily || "sans-serif" ].join(" "); textStyle.font = font; var rect = text.getBoundingRect(); this._textX += rect.width; parentGroup.add(text); return text; }; SVGParser2.internalField = function() { nodeParsers = { "g": function(xmlNode, parentGroup) { var g = new Group$4(); inheritStyle(parentGroup, g); parseAttributes(xmlNode, g, this._defsUsePending, false, false); return g; }, "rect": function(xmlNode, parentGroup) { var rect = new Rect$3(); inheritStyle(parentGroup, rect); parseAttributes(xmlNode, rect, this._defsUsePending, false, false); rect.setShape({ x: parseFloat(xmlNode.getAttribute("x") || "0"), y: parseFloat(xmlNode.getAttribute("y") || "0"), width: parseFloat(xmlNode.getAttribute("width") || "0"), height: parseFloat(xmlNode.getAttribute("height") || "0") }); rect.silent = true; return rect; }, "circle": function(xmlNode, parentGroup) { var circle = new Circle$1(); inheritStyle(parentGroup, circle); parseAttributes(xmlNode, circle, this._defsUsePending, false, false); circle.setShape({ cx: parseFloat(xmlNode.getAttribute("cx") || "0"), cy: parseFloat(xmlNode.getAttribute("cy") || "0"), r: parseFloat(xmlNode.getAttribute("r") || "0") }); circle.silent = true; return circle; }, "line": function(xmlNode, parentGroup) { var line = new Line$3(); inheritStyle(parentGroup, line); parseAttributes(xmlNode, line, this._defsUsePending, false, false); line.setShape({ x1: parseFloat(xmlNode.getAttribute("x1") || "0"), y1: parseFloat(xmlNode.getAttribute("y1") || "0"), x2: parseFloat(xmlNode.getAttribute("x2") || "0"), y2: parseFloat(xmlNode.getAttribute("y2") || "0") }); line.silent = true; return line; }, "ellipse": function(xmlNode, parentGroup) { var ellipse = new Ellipse$1(); inheritStyle(parentGroup, ellipse); parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false); ellipse.setShape({ cx: parseFloat(xmlNode.getAttribute("cx") || "0"), cy: parseFloat(xmlNode.getAttribute("cy") || "0"), rx: parseFloat(xmlNode.getAttribute("rx") || "0"), ry: parseFloat(xmlNode.getAttribute("ry") || "0") }); ellipse.silent = true; return ellipse; }, "polygon": function(xmlNode, parentGroup) { var pointsStr = xmlNode.getAttribute("points"); var pointsArr; if (pointsStr) { pointsArr = parsePoints(pointsStr); } var polygon = new Polygon$1({ shape: { points: pointsArr || [] }, silent: true }); inheritStyle(parentGroup, polygon); parseAttributes(xmlNode, polygon, this._defsUsePending, false, false); return polygon; }, "polyline": function(xmlNode, parentGroup) { var pointsStr = xmlNode.getAttribute("points"); var pointsArr; if (pointsStr) { pointsArr = parsePoints(pointsStr); } var polyline = new Polyline$3({ shape: { points: pointsArr || [] }, silent: true }); inheritStyle(parentGroup, polyline); parseAttributes(xmlNode, polyline, this._defsUsePending, false, false); return polyline; }, "image": function(xmlNode, parentGroup) { var img = new ZRImage$1(); inheritStyle(parentGroup, img); parseAttributes(xmlNode, img, this._defsUsePending, false, false); img.setStyle({ image: xmlNode.getAttribute("xlink:href") || xmlNode.getAttribute("href"), x: +xmlNode.getAttribute("x"), y: +xmlNode.getAttribute("y"), width: +xmlNode.getAttribute("width"), height: +xmlNode.getAttribute("height") }); img.silent = true; return img; }, "text": function(xmlNode, parentGroup) { var x = xmlNode.getAttribute("x") || "0"; var y = xmlNode.getAttribute("y") || "0"; var dx = xmlNode.getAttribute("dx") || "0"; var dy = xmlNode.getAttribute("dy") || "0"; this._textX = parseFloat(x) + parseFloat(dx); this._textY = parseFloat(y) + parseFloat(dy); var g = new Group$4(); inheritStyle(parentGroup, g); parseAttributes(xmlNode, g, this._defsUsePending, false, true); return g; }, "tspan": function(xmlNode, parentGroup) { var x = xmlNode.getAttribute("x"); var y = xmlNode.getAttribute("y"); if (x != null) { this._textX = parseFloat(x); } if (y != null) { this._textY = parseFloat(y); } var dx = xmlNode.getAttribute("dx") || "0"; var dy = xmlNode.getAttribute("dy") || "0"; var g = new Group$4(); inheritStyle(parentGroup, g); parseAttributes(xmlNode, g, this._defsUsePending, false, true); this._textX += parseFloat(dx); this._textY += parseFloat(dy); return g; }, "path": function(xmlNode, parentGroup) { var d = xmlNode.getAttribute("d") || ""; var path = createFromString(d); inheritStyle(parentGroup, path); parseAttributes(xmlNode, path, this._defsUsePending, false, false); path.silent = true; return path; } }; }(); return SVGParser2; }(); var paintServerParsers = { "lineargradient": function(xmlNode) { var x1 = parseInt(xmlNode.getAttribute("x1") || "0", 10); var y1 = parseInt(xmlNode.getAttribute("y1") || "0", 10); var x2 = parseInt(xmlNode.getAttribute("x2") || "10", 10); var y2 = parseInt(xmlNode.getAttribute("y2") || "0", 10); var gradient = new LinearGradient$1(x1, y1, x2, y2); parsePaintServerUnit(xmlNode, gradient); parseGradientColorStops(xmlNode, gradient); return gradient; }, "radialgradient": function(xmlNode) { var cx = parseInt(xmlNode.getAttribute("cx") || "0", 10); var cy = parseInt(xmlNode.getAttribute("cy") || "0", 10); var r = parseInt(xmlNode.getAttribute("r") || "0", 10); var gradient = new RadialGradient$1(cx, cy, r); parsePaintServerUnit(xmlNode, gradient); parseGradientColorStops(xmlNode, gradient); return gradient; } }; function parsePaintServerUnit(xmlNode, gradient) { var gradientUnits = xmlNode.getAttribute("gradientUnits"); if (gradientUnits === "userSpaceOnUse") { gradient.global = true; } } function parseGradientColorStops(xmlNode, gradient) { var stop2 = xmlNode.firstChild; while (stop2) { if (stop2.nodeType === 1 && stop2.nodeName.toLocaleLowerCase() === "stop") { var offsetStr = stop2.getAttribute("offset"); var offset = void 0; if (offsetStr && offsetStr.indexOf("%") > 0) { offset = parseInt(offsetStr, 10) / 100; } else if (offsetStr) { offset = parseFloat(offsetStr); } else { offset = 0; } var styleVals = {}; parseInlineStyle(stop2, styleVals, styleVals); var stopColor = styleVals.stopColor || stop2.getAttribute("stop-color") || "#000000"; gradient.colorStops.push({ offset, color: stopColor }); } stop2 = stop2.nextSibling; } } function inheritStyle(parent, child) { if (parent && parent.__inheritedStyle) { if (!child.__inheritedStyle) { child.__inheritedStyle = {}; } defaults(child.__inheritedStyle, parent.__inheritedStyle); } } function parsePoints(pointsString) { var list2 = splitNumberSequence(pointsString); var points2 = []; for (var i = 0; i < list2.length; i += 2) { var x = parseFloat(list2[i]); var y = parseFloat(list2[i + 1]); points2.push([x, y]); } return points2; } function parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) { var disp = el; var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {}; var selfStyle = {}; if (xmlNode.nodeType === 1) { parseTransformAttribute(xmlNode, el); parseInlineStyle(xmlNode, inheritedStyle, selfStyle); if (!onlyInlineStyle) { parseAttributeStyle(xmlNode, inheritedStyle, selfStyle); } } disp.style = disp.style || {}; if (inheritedStyle.fill != null) { disp.style.fill = getFillStrokeStyle(disp, "fill", inheritedStyle.fill, defsUsePending); } if (inheritedStyle.stroke != null) { disp.style.stroke = getFillStrokeStyle(disp, "stroke", inheritedStyle.stroke, defsUsePending); } each$g([ "lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize" ], function(propName) { if (inheritedStyle[propName] != null) { disp.style[propName] = parseFloat(inheritedStyle[propName]); } }); each$g([ "lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign" ], function(propName) { if (inheritedStyle[propName] != null) { disp.style[propName] = inheritedStyle[propName]; } }); if (isTextGroup) { disp.__selfStyle = selfStyle; } if (inheritedStyle.lineDash) { disp.style.lineDash = map$1(splitNumberSequence(inheritedStyle.lineDash), function(str) { return parseFloat(str); }); } if (inheritedStyle.visibility === "hidden" || inheritedStyle.visibility === "collapse") { disp.invisible = true; } if (inheritedStyle.display === "none") { disp.ignore = true; } } function applyTextAlignment(text, parentGroup) { var parentSelfStyle = parentGroup.__selfStyle; if (parentSelfStyle) { var textBaseline = parentSelfStyle.textBaseline; var zrTextBaseline = textBaseline; if (!textBaseline || textBaseline === "auto") { zrTextBaseline = "alphabetic"; } else if (textBaseline === "baseline") { zrTextBaseline = "alphabetic"; } else if (textBaseline === "before-edge" || textBaseline === "text-before-edge") { zrTextBaseline = "top"; } else if (textBaseline === "after-edge" || textBaseline === "text-after-edge") { zrTextBaseline = "bottom"; } else if (textBaseline === "central" || textBaseline === "mathematical") { zrTextBaseline = "middle"; } text.style.textBaseline = zrTextBaseline; } var parentInheritedStyle = parentGroup.__inheritedStyle; if (parentInheritedStyle) { var textAlign = parentInheritedStyle.textAlign; var zrTextAlign = textAlign; if (textAlign) { if (textAlign === "middle") { zrTextAlign = "center"; } text.style.textAlign = zrTextAlign; } } } var urlRegex = /^url\(\s*#(.*?)\)/; function getFillStrokeStyle(el, method, str, defsUsePending) { var urlMatch = str && str.match(urlRegex); if (urlMatch) { var url = trim$1(urlMatch[1]); defsUsePending.push([el, method, url]); return; } if (str === "none") { str = null; } return str; } function applyDefs(defs, defsUsePending) { for (var i = 0; i < defsUsePending.length; i++) { var item = defsUsePending[i]; item[0].style[item[1]] = defs[item[2]]; } } var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; function splitNumberSequence(rawStr) { return rawStr.match(numberReg) || []; } var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g; var DEGREE_TO_ANGLE = Math.PI / 180; function parseTransformAttribute(xmlNode, node) { var transform2 = xmlNode.getAttribute("transform"); if (transform2) { transform2 = transform2.replace(/,/g, " "); var transformOps_1 = []; var mt = null; transform2.replace(transformRegex, function(str, type2, value2) { transformOps_1.push(type2, value2); return ""; }); for (var i = transformOps_1.length - 1; i > 0; i -= 2) { var value = transformOps_1[i]; var type = transformOps_1[i - 1]; var valueArr = splitNumberSequence(value); mt = mt || create$1(); switch (type) { case "translate": translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || "0")]); break; case "scale": scale$1(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]); break; case "rotate": rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); break; case "skewX": var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); mul(mt, [1, 0, sx, 1, 0, 0], mt); break; case "skewY": var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); mul(mt, [1, sy, 0, 1, 0, 0], mt); break; case "matrix": mt[0] = parseFloat(valueArr[0]); mt[1] = parseFloat(valueArr[1]); mt[2] = parseFloat(valueArr[2]); mt[3] = parseFloat(valueArr[3]); mt[4] = parseFloat(valueArr[4]); mt[5] = parseFloat(valueArr[5]); break; } } node.setLocalTransform(mt); } } var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g; function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) { var style = xmlNode.getAttribute("style"); if (!style) { return; } styleRegex.lastIndex = 0; var styleRegResult; while ((styleRegResult = styleRegex.exec(style)) != null) { var svgStlAttr = styleRegResult[1]; var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null; if (zrInheritableStlAttr) { inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2]; } var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null; if (zrSelfStlAttr) { selfStyleResult[zrSelfStlAttr] = styleRegResult[2]; } } } function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) { for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i]; var attrValue = xmlNode.getAttribute(svgAttrName); if (attrValue != null) { inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; } } for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i]; var attrValue = xmlNode.getAttribute(svgAttrName); if (attrValue != null) { selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; } } } function makeViewBoxTransform(viewBoxRect, boundingRect) { var scaleX = boundingRect.width / viewBoxRect.width; var scaleY = boundingRect.height / viewBoxRect.height; var scale2 = Math.min(scaleX, scaleY); return { scale: scale2, x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale2 + (boundingRect.x + boundingRect.width / 2), y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale2 + (boundingRect.y + boundingRect.height / 2) }; } function parseSVG(xml, opt) { var parser = new SVGParser(); return parser.parse(xml, opt); } var EPSILON$1 = 1e-8; function isAroundEqual(a, b) { return Math.abs(a - b) < EPSILON$1; } function contain$1(points2, x, y) { var w = 0; var p = points2[0]; if (!p) { return false; } for (var i = 1; i < points2.length; i++) { var p2 = points2[i]; w += windingLine(p[0], p[1], p2[0], p2[1], x, y); p = p2; } var p0 = points2[0]; if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) { w += windingLine(p[0], p[1], p0[0], p0[1], x, y); } return w !== 0; } var TMP_TRANSFORM = []; var Region = function() { function Region2(name) { this.name = name; } Region2.prototype.getCenter = function() { return; }; return Region2; }(); var GeoJSONRegion = function(_super) { __extends$1(GeoJSONRegion2, _super); function GeoJSONRegion2(name, geometries, cp) { var _this = _super.call(this, name) || this; _this.type = "geoJSON"; _this.geometries = geometries; if (!cp) { var rect = _this.getBoundingRect(); cp = [rect.x + rect.width / 2, rect.y + rect.height / 2]; } else { cp = [cp[0], cp[1]]; } _this._center = cp; return _this; } GeoJSONRegion2.prototype.getBoundingRect = function() { var rect = this._rect; if (rect) { return rect; } var MAX_NUMBER = Number.MAX_VALUE; var min3 = [MAX_NUMBER, MAX_NUMBER]; var max3 = [-MAX_NUMBER, -MAX_NUMBER]; var min22 = []; var max22 = []; var geometries = this.geometries; var i = 0; for (; i < geometries.length; i++) { if (geometries[i].type !== "polygon") { continue; } var exterior = geometries[i].exterior; fromPoints(exterior, min22, max22); min$1(min3, min3, min22); max$1(max3, max3, max22); } if (i === 0) { min3[0] = min3[1] = max3[0] = max3[1] = 0; } return this._rect = new BoundingRect$1(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]); }; GeoJSONRegion2.prototype.contain = function(coord) { var rect = this.getBoundingRect(); var geometries = this.geometries; if (!rect.contain(coord[0], coord[1])) { return false; } loopGeo: for (var i = 0, len2 = geometries.length; i < len2; i++) { if (geometries[i].type !== "polygon") { continue; } var exterior = geometries[i].exterior; var interiors = geometries[i].interiors; if (contain$1(exterior, coord[0], coord[1])) { for (var k = 0; k < (interiors ? interiors.length : 0); k++) { if (contain$1(interiors[k], coord[0], coord[1])) { continue loopGeo; } } return true; } } return false; }; GeoJSONRegion2.prototype.transformTo = function(x, y, width, height) { var rect = this.getBoundingRect(); var aspect = rect.width / rect.height; if (!width) { width = aspect * height; } else if (!height) { height = width / aspect; } var target = new BoundingRect$1(x, y, width, height); var transform2 = rect.calculateTransform(target); var geometries = this.geometries; for (var i = 0; i < geometries.length; i++) { if (geometries[i].type !== "polygon") { continue; } var exterior = geometries[i].exterior; var interiors = geometries[i].interiors; for (var p = 0; p < exterior.length; p++) { applyTransform$1(exterior[p], exterior[p], transform2); } for (var h = 0; h < (interiors ? interiors.length : 0); h++) { for (var p = 0; p < interiors[h].length; p++) { applyTransform$1(interiors[h][p], interiors[h][p], transform2); } } } rect = this._rect; rect.copy(target); this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2]; }; GeoJSONRegion2.prototype.cloneShallow = function(name) { name == null && (name = this.name); var newRegion = new GeoJSONRegion2(name, this.geometries, this._center); newRegion._rect = this._rect; newRegion.transformTo = null; return newRegion; }; GeoJSONRegion2.prototype.getCenter = function() { return this._center; }; GeoJSONRegion2.prototype.setCenter = function(center2) { this._center = center2; }; return GeoJSONRegion2; }(Region); var GeoSVGRegion = function(_super) { __extends$1(GeoSVGRegion2, _super); function GeoSVGRegion2(name, elOnlyForCalculate) { var _this = _super.call(this, name) || this; _this.type = "geoSVG"; _this._elOnlyForCalculate = elOnlyForCalculate; return _this; } GeoSVGRegion2.prototype.getCenter = function() { var center2 = this._center; if (!center2) { center2 = this._center = this._calculateCenter(); } return center2; }; GeoSVGRegion2.prototype._calculateCenter = function() { var el = this._elOnlyForCalculate; var rect = el.getBoundingRect(); var center2 = [rect.x + rect.width / 2, rect.y + rect.height / 2]; var mat = identity(TMP_TRANSFORM); var target = el; while (target && !target.isGeoSVGGraphicRoot) { mul(mat, target.getLocalTransform(), mat); target = target.parent; } invert(mat, mat); applyTransform$1(center2, center2, mat); return center2; }; return GeoSVGRegion2; }(Region); var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([ "rect", "circle", "line", "ellipse", "polygon", "polyline", "path", "text", "tspan", "g" ]); var GeoSVGResource = function() { function GeoSVGResource2(mapName, svg) { this.type = "geoSVG"; this._usedGraphicMap = createHashMap(); this._freedGraphics = []; this._mapName = mapName; this._parsedXML = parseXML(svg); } GeoSVGResource2.prototype.load = function() { var firstGraphic = this._firstGraphic; if (!firstGraphic) { firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML); this._freedGraphics.push(firstGraphic); this._boundingRect = this._firstGraphic.boundingRect.clone(); var _a2 = createRegions(firstGraphic.named), regions = _a2.regions, regionsMap = _a2.regionsMap; this._regions = regions; this._regionsMap = regionsMap; } return { boundingRect: this._boundingRect, regions: this._regions, regionsMap: this._regionsMap }; }; GeoSVGResource2.prototype._buildGraphic = function(svgXML) { var result; var rootFromParse; try { result = svgXML && parseSVG(svgXML, { ignoreViewBox: true, ignoreRootClip: true }) || {}; rootFromParse = result.root; assert(rootFromParse != null); } catch (e2) { throw new Error("Invalid svg format\n" + e2.message); } var root = new Group$4(); root.add(rootFromParse); root.isGeoSVGGraphicRoot = true; var svgWidth = result.width; var svgHeight = result.height; var viewBoxRect = result.viewBoxRect; var boundingRect = this._boundingRect; if (!boundingRect) { var bRectX = void 0; var bRectY = void 0; var bRectWidth = void 0; var bRectHeight = void 0; if (svgWidth != null) { bRectX = 0; bRectWidth = svgWidth; } else if (viewBoxRect) { bRectX = viewBoxRect.x; bRectWidth = viewBoxRect.width; } if (svgHeight != null) { bRectY = 0; bRectHeight = svgHeight; } else if (viewBoxRect) { bRectY = viewBoxRect.y; bRectHeight = viewBoxRect.height; } if (bRectX == null || bRectY == null) { var calculatedBoundingRect = rootFromParse.getBoundingRect(); if (bRectX == null) { bRectX = calculatedBoundingRect.x; bRectWidth = calculatedBoundingRect.width; } if (bRectY == null) { bRectY = calculatedBoundingRect.y; bRectHeight = calculatedBoundingRect.height; } } boundingRect = this._boundingRect = new BoundingRect$1(bRectX, bRectY, bRectWidth, bRectHeight); } if (viewBoxRect) { var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect); rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale; rootFromParse.x = viewBoxTransform.x; rootFromParse.y = viewBoxTransform.y; } root.setClipPath(new Rect$3({ shape: boundingRect.plain() })); var named = []; each$g(result.named, function(namedItem) { if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) { named.push(namedItem); setSilent(namedItem.el); } }); return { root, boundingRect, named }; }; GeoSVGResource2.prototype.useGraphic = function(hostKey) { var usedRootMap = this._usedGraphicMap; var svgGraphic = usedRootMap.get(hostKey); if (svgGraphic) { return svgGraphic; } svgGraphic = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML); usedRootMap.set(hostKey, svgGraphic); return svgGraphic; }; GeoSVGResource2.prototype.freeGraphic = function(hostKey) { var usedRootMap = this._usedGraphicMap; var svgGraphic = usedRootMap.get(hostKey); if (svgGraphic) { usedRootMap.removeKey(hostKey); this._freedGraphics.push(svgGraphic); } }; return GeoSVGResource2; }(); function setSilent(el) { el.silent = false; if (el.isGroup) { el.traverse(function(child) { child.silent = false; }); } } function createRegions(named) { var regions = []; var regionsMap = createHashMap(); each$g(named, function(namedItem) { if (namedItem.namedFrom != null) { return; } var region = new GeoSVGRegion(namedItem.name, namedItem.el); regions.push(region); regionsMap.set(namedItem.name, region); }); return { regions, regionsMap }; } function decode(json) { if (!json.UTF8Encoding) { return json; } var jsonCompressed = json; var encodeScale = jsonCompressed.UTF8Scale; if (encodeScale == null) { encodeScale = 1024; } var features2 = jsonCompressed.features; for (var f = 0; f < features2.length; f++) { var feature = features2[f]; var geometry = feature.geometry; if (geometry.type === "Polygon") { var coordinates = geometry.coordinates; for (var c = 0; c < coordinates.length; c++) { coordinates[c] = decodePolygon(coordinates[c], geometry.encodeOffsets[c], encodeScale); } } else if (geometry.type === "MultiPolygon") { var coordinates = geometry.coordinates; for (var c = 0; c < coordinates.length; c++) { var coordinate2 = coordinates[c]; for (var c2 = 0; c2 < coordinate2.length; c2++) { coordinate2[c2] = decodePolygon(coordinate2[c2], geometry.encodeOffsets[c][c2], encodeScale); } } } } jsonCompressed.UTF8Encoding = false; return jsonCompressed; } function decodePolygon(coordinate2, encodeOffsets, encodeScale) { var result = []; var prevX = encodeOffsets[0]; var prevY = encodeOffsets[1]; for (var i = 0; i < coordinate2.length; i += 2) { var x = coordinate2.charCodeAt(i) - 64; var y = coordinate2.charCodeAt(i + 1) - 64; x = x >> 1 ^ -(x & 1); y = y >> 1 ^ -(y & 1); x += prevX; y += prevY; prevX = x; prevY = y; result.push([x / encodeScale, y / encodeScale]); } return result; } function parseGeoJSON(geoJson, nameProperty) { geoJson = decode(geoJson); return map$1(filter(geoJson.features, function(featureObj) { return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0; }), function(featureObj) { var properties = featureObj.properties; var geo = featureObj.geometry; var geometries = []; if (geo.type === "Polygon") { var coordinates = geo.coordinates; geometries.push({ type: "polygon", exterior: coordinates[0], interiors: coordinates.slice(1) }); } if (geo.type === "MultiPolygon") { var coordinates = geo.coordinates; each$g(coordinates, function(item) { if (item[0]) { geometries.push({ type: "polygon", exterior: item[0], interiors: item.slice(1) }); } }); } var region = new GeoJSONRegion(properties[nameProperty || "name"], geometries, properties.cp); region.properties = properties; return region; }); } var geoCoord = [126, 25]; var nanhaiName = "\u5357\u6D77\u8BF8\u5C9B"; var points$1 = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]]; for (var i = 0; i < points$1.length; i++) { for (var k = 0; k < points$1[i].length; k++) { points$1[i][k][0] /= 10.5; points$1[i][k][1] /= -10.5 / 0.75; points$1[i][k][0] += geoCoord[0]; points$1[i][k][1] += geoCoord[1]; } } function fixNanhai(mapType, regions) { if (mapType === "china") { for (var i = 0; i < regions.length; i++) { if (regions[i].name === nanhaiName) { return; } } regions.push(new GeoJSONRegion(nanhaiName, map$1(points$1, function(exterior) { return { type: "polygon", exterior }; }), geoCoord)); } } var coordsOffsetMap = { "\u5357\u6D77\u8BF8\u5C9B": [32, 80], "\u5E7F\u4E1C": [0, -10], "\u9999\u6E2F": [10, 5], "\u6FB3\u95E8": [-10, 10], "\u5929\u6D25": [5, 5] }; function fixTextCoords(mapType, region) { if (mapType === "china") { var coordFix = coordsOffsetMap[region.name]; if (coordFix) { var cp = region.getCenter(); cp[0] += coordFix[0] / 10.5; cp[1] += -coordFix[1] / (10.5 / 0.75); region.setCenter(cp); } } } var geoCoordMap = { "Russia": [100, 60], "United States": [-99, 38], "United States of America": [-99, 38] }; function fixGeoCoords(mapType, region) { if (mapType === "world") { var geoCoord2 = geoCoordMap[region.name]; if (geoCoord2) { var cp = [geoCoord2[0], geoCoord2[1]]; region.setCenter(cp); } } } var points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; function fixDiaoyuIsland(mapType, region) { if (mapType === "china" && region.name === "\u53F0\u6E7E") { region.geometries.push({ type: "polygon", exterior: points[0] }); } } var DEFAULT_NAME_PROPERTY = "name"; var GeoJSONResource = function() { function GeoJSONResource2(mapName, geoJSON, specialAreas) { this.type = "geoJSON"; this._parsedMap = createHashMap(); this._mapName = mapName; this._specialAreas = specialAreas; this._geoJSON = parseInput(geoJSON); } GeoJSONResource2.prototype.load = function(nameMap, nameProperty) { nameProperty = nameProperty || DEFAULT_NAME_PROPERTY; var parsed = this._parsedMap.get(nameProperty); if (!parsed) { var rawRegions = this._parseToRegions(nameProperty); parsed = this._parsedMap.set(nameProperty, { regions: rawRegions, boundingRect: calculateBoundingRect(rawRegions) }); } var regionsMap = createHashMap(); var finalRegions = []; each$g(parsed.regions, function(region) { var regionName = region.name; if (nameMap && nameMap.hasOwnProperty(regionName)) { region = region.cloneShallow(regionName = nameMap[regionName]); } finalRegions.push(region); regionsMap.set(regionName, region); }); return { regions: finalRegions, boundingRect: parsed.boundingRect || new BoundingRect$1(0, 0, 0, 0), regionsMap }; }; GeoJSONResource2.prototype._parseToRegions = function(nameProperty) { var mapName = this._mapName; var geoJSON = this._geoJSON; var rawRegions; try { rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : []; } catch (e2) { throw new Error("Invalid geoJson format\n" + e2.message); } fixNanhai(mapName, rawRegions); each$g(rawRegions, function(region) { var regionName = region.name; fixTextCoords(mapName, region); fixGeoCoords(mapName, region); fixDiaoyuIsland(mapName, region); var specialArea = this._specialAreas && this._specialAreas[regionName]; if (specialArea) { region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height); } }, this); return rawRegions; }; GeoJSONResource2.prototype.getMapForUser = function() { return { geoJson: this._geoJSON, geoJSON: this._geoJSON, specialAreas: this._specialAreas }; }; return GeoJSONResource2; }(); function calculateBoundingRect(regions) { var rect; for (var i = 0; i < regions.length; i++) { var regionRect = regions[i].getBoundingRect(); rect = rect || regionRect.clone(); rect.union(regionRect); } return rect; } function parseInput(source) { return !isString(source) ? source : typeof JSON !== "undefined" && JSON.parse ? JSON.parse(source) : new Function("return (" + source + ");")(); } var storage = createHashMap(); var geoSourceManager = { registerMap: function(mapName, rawDef, rawSpecialAreas) { if (rawDef.svg) { var resource = new GeoSVGResource(mapName, rawDef.svg); storage.set(mapName, resource); } else { var geoJSON = rawDef.geoJson || rawDef.geoJSON; if (geoJSON && !rawDef.features) { rawSpecialAreas = rawDef.specialAreas; } else { geoJSON = rawDef; } var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas); storage.set(mapName, resource); } }, getGeoResource: function(mapName) { return storage.get(mapName); }, getMapForUser: function(mapName) { var resource = storage.get(mapName); return resource && resource.type === "geoJSON" && resource.getMapForUser(); }, load: function(mapName, nameMap, nameProperty) { var resource = storage.get(mapName); if (!resource) { return; } return resource.load(nameMap, nameProperty); } }; var lifecycle = new Eventful$1(); var lifecycle$1 = lifecycle; var hasWindow = typeof window !== "undefined"; var version = "5.2.2"; var dependencies = { zrender: "5.2.1" }; var TEST_FRAME_REMAIN_TIME = 1; var PRIORITY_PROCESSOR_SERIES_FILTER = 800; var PRIORITY_PROCESSOR_DATASTACK = 900; var PRIORITY_PROCESSOR_FILTER = 1e3; var PRIORITY_PROCESSOR_DEFAULT = 2e3; var PRIORITY_PROCESSOR_STATISTIC = 5e3; var PRIORITY_VISUAL_LAYOUT = 1e3; var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100; var PRIORITY_VISUAL_GLOBAL = 2e3; var PRIORITY_VISUAL_CHART = 3e3; var PRIORITY_VISUAL_COMPONENT = 4e3; var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600; var PRIORITY_VISUAL_BRUSH = 5e3; var PRIORITY_VISUAL_ARIA = 6e3; var PRIORITY_VISUAL_DECAL = 7e3; var PRIORITY = { PROCESSOR: { FILTER: PRIORITY_PROCESSOR_FILTER, SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER, STATISTIC: PRIORITY_PROCESSOR_STATISTIC }, VISUAL: { LAYOUT: PRIORITY_VISUAL_LAYOUT, PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT, GLOBAL: PRIORITY_VISUAL_GLOBAL, CHART: PRIORITY_VISUAL_CHART, POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT, COMPONENT: PRIORITY_VISUAL_COMPONENT, BRUSH: PRIORITY_VISUAL_BRUSH, CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM, ARIA: PRIORITY_VISUAL_ARIA, DECAL: PRIORITY_VISUAL_DECAL } }; var IN_MAIN_PROCESS_KEY = "__flagInMainProcess"; var PENDING_UPDATE = "__pendingUpdate"; var STATUS_NEEDS_UPDATE_KEY = "__needsUpdateStatus"; var ACTION_REG = /^[a-zA-Z0-9_]+$/; var CONNECT_STATUS_KEY = "__connectUpdateStatus"; var CONNECT_STATUS_PENDING = 0; var CONNECT_STATUS_UPDATING = 1; var CONNECT_STATUS_UPDATED = 2; function createRegisterEventWithLowercaseECharts(method) { return function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.isDisposed()) { disposedWarning(this.id); return; } return toLowercaseNameAndCallEventful(this, method, args); }; } function createRegisterEventWithLowercaseMessageCenter(method) { return function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return toLowercaseNameAndCallEventful(this, method, args); }; } function toLowercaseNameAndCallEventful(host, method, args) { args[0] = args[0] && args[0].toLowerCase(); return Eventful$1.prototype[method].apply(host, args); } var MessageCenter = function(_super) { __extends$1(MessageCenter2, _super); function MessageCenter2() { return _super !== null && _super.apply(this, arguments) || this; } return MessageCenter2; }(Eventful$1); var messageCenterProto = MessageCenter.prototype; messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter("on"); messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter("off"); var prepare; var prepareView; var updateDirectly; var updateMethods; var doConvertPixel; var updateStreamModes; var doDispatchAction; var flushPendingActions; var triggerUpdatedEvent; var bindRenderedEvent; var bindMouseEvent; var clearColorPalette; var render; var renderComponents; var renderSeries; var createExtensionAPI; var enableConnect; var markStatusToUpdate; var applyChangedStates; var ECharts = function(_super) { __extends$1(ECharts2, _super); function ECharts2(dom, theme2, opts) { var _this = _super.call(this, new ECEventProcessor()) || this; _this._chartsViews = []; _this._chartsMap = {}; _this._componentsViews = []; _this._componentsMap = {}; _this._pendingActions = []; opts = opts || {}; if (typeof theme2 === "string") { theme2 = themeStorage[theme2]; } _this._dom = dom; var defaultRenderer = "canvas"; var defaultUseDirtyRect = false; var zr = _this._zr = init$2(dom, { renderer: opts.renderer || defaultRenderer, devicePixelRatio: opts.devicePixelRatio, width: opts.width, height: opts.height, useDirtyRect: opts.useDirtyRect == null ? defaultUseDirtyRect : opts.useDirtyRect }); _this._throttledZrFlush = throttle(bind$2(zr.flush, zr), 17); theme2 = clone$4(theme2); theme2 && globalBackwardCompat(theme2, true); _this._theme = theme2; _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG); _this._coordSysMgr = new CoordinateSystem(); var api = _this._api = createExtensionAPI(_this); function prioritySortFunc(a, b) { return a.__prio - b.__prio; } sort$2(visualFuncs, prioritySortFunc); sort$2(dataProcessorFuncs, prioritySortFunc); _this._scheduler = new Scheduler$1(_this, api, dataProcessorFuncs, visualFuncs); _this._messageCenter = new MessageCenter(); _this._initEvents(); _this.resize = bind$2(_this.resize, _this); zr.animation.on("frame", _this._onframe, _this); bindRenderedEvent(zr, _this); bindMouseEvent(zr, _this); setAsPrimitive(_this); return _this; } ECharts2.prototype._onframe = function() { if (this._disposed) { return; } applyChangedStates(this); var scheduler = this._scheduler; if (this[PENDING_UPDATE]) { var silent = this[PENDING_UPDATE].silent; this[IN_MAIN_PROCESS_KEY] = true; prepare(this); updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams); this._zr.flush(); this[IN_MAIN_PROCESS_KEY] = false; this[PENDING_UPDATE] = null; flushPendingActions.call(this, silent); triggerUpdatedEvent.call(this, silent); } else if (scheduler.unfinished) { var remainTime = TEST_FRAME_REMAIN_TIME; var ecModel = this._model; var api = this._api; scheduler.unfinished = false; do { var startTime = +new Date(); scheduler.performSeriesTasks(ecModel); scheduler.performDataProcessorTasks(ecModel); updateStreamModes(this, ecModel); scheduler.performVisualTasks(ecModel); renderSeries(this, this._model, api, "remain", {}); remainTime -= +new Date() - startTime; } while (remainTime > 0 && scheduler.unfinished); if (!scheduler.unfinished) { this._zr.flush(); } } }; ECharts2.prototype.getDom = function() { return this._dom; }; ECharts2.prototype.getId = function() { return this.id; }; ECharts2.prototype.getZr = function() { return this._zr; }; ECharts2.prototype.setOption = function(option, notMerge, lazyUpdate) { if (this._disposed) { disposedWarning(this.id); return; } var silent; var replaceMerge; var transitionOpt; if (isObject$3(notMerge)) { lazyUpdate = notMerge.lazyUpdate; silent = notMerge.silent; replaceMerge = notMerge.replaceMerge; transitionOpt = notMerge.transition; notMerge = notMerge.notMerge; } this[IN_MAIN_PROCESS_KEY] = true; if (!this._model || notMerge) { var optionManager = new OptionManager$1(this._api); var theme2 = this._theme; var ecModel = this._model = new GlobalModel$1(); ecModel.scheduler = this._scheduler; ecModel.init(null, null, null, theme2, this._locale, optionManager); } this._model.setOption(option, { replaceMerge }, optionPreprocessorFuncs); var updateParams = { seriesTransition: transitionOpt, optionChanged: true }; if (lazyUpdate) { this[PENDING_UPDATE] = { silent, updateParams }; this[IN_MAIN_PROCESS_KEY] = false; this.getZr().wakeUp(); } else { prepare(this); updateMethods.update.call(this, null, updateParams); this._zr.flush(); this[PENDING_UPDATE] = null; this[IN_MAIN_PROCESS_KEY] = false; flushPendingActions.call(this, silent); triggerUpdatedEvent.call(this, silent); } }; ECharts2.prototype.setTheme = function() { console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0"); }; ECharts2.prototype.getModel = function() { return this._model; }; ECharts2.prototype.getOption = function() { return this._model && this._model.getOption(); }; ECharts2.prototype.getWidth = function() { return this._zr.getWidth(); }; ECharts2.prototype.getHeight = function() { return this._zr.getHeight(); }; ECharts2.prototype.getDevicePixelRatio = function() { return this._zr.painter.dpr || hasWindow && window.devicePixelRatio || 1; }; ECharts2.prototype.getRenderedCanvas = function(opts) { if (!env$1.canvasSupported) { return; } opts = opts || {}; return this._zr.painter.getRenderedCanvas({ backgroundColor: opts.backgroundColor || this._model.get("backgroundColor"), pixelRatio: opts.pixelRatio || this.getDevicePixelRatio() }); }; ECharts2.prototype.getSvgDataURL = function() { if (!env$1.svgSupported) { return; } var zr = this._zr; var list2 = zr.storage.getDisplayList(); each$g(list2, function(el) { el.stopAnimation(null, true); }); return zr.painter.toDataURL(); }; ECharts2.prototype.getDataURL = function(opts) { if (this._disposed) { disposedWarning(this.id); return; } opts = opts || {}; var excludeComponents = opts.excludeComponents; var ecModel = this._model; var excludesComponentViews = []; var self2 = this; each$g(excludeComponents, function(componentType) { ecModel.eachComponent({ mainType: componentType }, function(component) { var view2 = self2._componentsMap[component.__viewId]; if (!view2.group.ignore) { excludesComponentViews.push(view2); view2.group.ignore = true; } }); }); var url = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL("image/" + (opts && opts.type || "png")); each$g(excludesComponentViews, function(view2) { view2.group.ignore = false; }); return url; }; ECharts2.prototype.getConnectedDataURL = function(opts) { if (this._disposed) { disposedWarning(this.id); return; } if (!env$1.canvasSupported) { return; } var isSvg = opts.type === "svg"; var groupId = this.group; var mathMin2 = Math.min; var mathMax2 = Math.max; var MAX_NUMBER = Infinity; if (connectedGroups[groupId]) { var left_1 = MAX_NUMBER; var top_1 = MAX_NUMBER; var right_1 = -MAX_NUMBER; var bottom_1 = -MAX_NUMBER; var canvasList_1 = []; var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio(); each$g(instances, function(chart, id) { if (chart.group === groupId) { var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(clone$4(opts)); var boundingRect = chart.getDom().getBoundingClientRect(); left_1 = mathMin2(boundingRect.left, left_1); top_1 = mathMin2(boundingRect.top, top_1); right_1 = mathMax2(boundingRect.right, right_1); bottom_1 = mathMax2(boundingRect.bottom, bottom_1); canvasList_1.push({ dom: canvas, left: boundingRect.left, top: boundingRect.top }); } }); left_1 *= dpr_1; top_1 *= dpr_1; right_1 *= dpr_1; bottom_1 *= dpr_1; var width = right_1 - left_1; var height = bottom_1 - top_1; var targetCanvas = createCanvas(); var zr_1 = init$2(targetCanvas, { renderer: isSvg ? "svg" : "canvas" }); zr_1.resize({ width, height }); if (isSvg) { var content_1 = ""; each$g(canvasList_1, function(item) { var x = item.left - left_1; var y = item.top - top_1; content_1 += '' + item.dom + ""; }); zr_1.painter.getSvgRoot().innerHTML = content_1; if (opts.connectedBackgroundColor) { zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor); } zr_1.refreshImmediately(); return zr_1.painter.toDataURL(); } else { if (opts.connectedBackgroundColor) { zr_1.add(new Rect$3({ shape: { x: 0, y: 0, width, height }, style: { fill: opts.connectedBackgroundColor } })); } each$g(canvasList_1, function(item) { var img = new ZRImage$1({ style: { x: item.left * dpr_1 - left_1, y: item.top * dpr_1 - top_1, image: item.dom } }); zr_1.add(img); }); zr_1.refreshImmediately(); return targetCanvas.toDataURL("image/" + (opts && opts.type || "png")); } } else { return this.getDataURL(opts); } }; ECharts2.prototype.convertToPixel = function(finder, value) { return doConvertPixel(this, "convertToPixel", finder, value); }; ECharts2.prototype.convertFromPixel = function(finder, value) { return doConvertPixel(this, "convertFromPixel", finder, value); }; ECharts2.prototype.containPixel = function(finder, value) { if (this._disposed) { disposedWarning(this.id); return; } var ecModel = this._model; var result; var findResult = parseFinder$1(ecModel, finder); each$g(findResult, function(models, key2) { key2.indexOf("Models") >= 0 && each$g(models, function(model) { var coordSys = model.coordinateSystem; if (coordSys && coordSys.containPoint) { result = result || !!coordSys.containPoint(value); } else if (key2 === "seriesModels") { var view2 = this._chartsMap[model.__viewId]; if (view2 && view2.containPoint) { result = result || view2.containPoint(value, model); } } else ; }, this); }, this); return !!result; }; ECharts2.prototype.getVisual = function(finder, visualType) { var ecModel = this._model; var parsedFinder = parseFinder$1(ecModel, finder, { defaultMainType: "series" }); var seriesModel = parsedFinder.seriesModel; var data = seriesModel.getData(); var dataIndexInside = parsedFinder.hasOwnProperty("dataIndexInside") ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty("dataIndex") ? data.indexOfRawIndex(parsedFinder.dataIndex) : null; return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType); }; ECharts2.prototype.getViewOfComponentModel = function(componentModel) { return this._componentsMap[componentModel.__viewId]; }; ECharts2.prototype.getViewOfSeriesModel = function(seriesModel) { return this._chartsMap[seriesModel.__viewId]; }; ECharts2.prototype._initEvents = function() { var _this = this; each$g(MOUSE_EVENT_NAMES, function(eveName) { var handler = function(e2) { var ecModel = _this.getModel(); var el = e2.target; var params; var isGlobalOut = eveName === "globalout"; if (isGlobalOut) { params = {}; } else { el && findEventDispatcher(el, function(parent) { var ecData = getECData(parent); if (ecData && ecData.dataIndex != null) { var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex); params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {}; return true; } else if (ecData.eventData) { params = extend({}, ecData.eventData); return true; } }, true); } if (params) { var componentType = params.componentType; var componentIndex = params.componentIndex; if (componentType === "markLine" || componentType === "markPoint" || componentType === "markArea") { componentType = "series"; componentIndex = params.seriesIndex; } var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex); var view2 = model && _this[model.mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]; params.event = e2; params.type = eveName; _this._$eventProcessor.eventInfo = { targetEl: el, packedEvent: params, model, view: view2 }; _this.trigger(eveName, params); } }; handler.zrEventfulCallAtLast = true; _this._zr.on(eveName, handler, _this); }); each$g(eventActionMap, function(actionType, eventType) { _this._messageCenter.on(eventType, function(event) { this.trigger(eventType, event); }, _this); }); each$g(["selectchanged"], function(eventType) { _this._messageCenter.on(eventType, function(event) { this.trigger(eventType, event); }, _this); }); handleLegacySelectEvents(this._messageCenter, this, this._api); }; ECharts2.prototype.isDisposed = function() { return this._disposed; }; ECharts2.prototype.clear = function() { if (this._disposed) { disposedWarning(this.id); return; } this.setOption({ series: [] }, true); }; ECharts2.prototype.dispose = function() { if (this._disposed) { disposedWarning(this.id); return; } this._disposed = true; setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, ""); var chart = this; var api = chart._api; var ecModel = chart._model; each$g(chart._componentsViews, function(component) { component.dispose(ecModel, api); }); each$g(chart._chartsViews, function(chart2) { chart2.dispose(ecModel, api); }); chart._zr.dispose(); chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null; delete instances[chart.id]; }; ECharts2.prototype.resize = function(opts) { if (this._disposed) { disposedWarning(this.id); return; } this._zr.resize(opts); var ecModel = this._model; this._loadingFX && this._loadingFX.resize(); if (!ecModel) { return; } var needPrepare = ecModel.resetOption("media"); var silent = opts && opts.silent; if (this[PENDING_UPDATE]) { if (silent == null) { silent = this[PENDING_UPDATE].silent; } needPrepare = true; this[PENDING_UPDATE] = null; } this[IN_MAIN_PROCESS_KEY] = true; needPrepare && prepare(this); updateMethods.update.call(this, { type: "resize", animation: extend({ duration: 0 }, opts && opts.animation) }); this[IN_MAIN_PROCESS_KEY] = false; flushPendingActions.call(this, silent); triggerUpdatedEvent.call(this, silent); }; ECharts2.prototype.showLoading = function(name, cfg) { if (this._disposed) { disposedWarning(this.id); return; } if (isObject$3(name)) { cfg = name; name = ""; } name = name || "default"; this.hideLoading(); if (!loadingEffects[name]) { return; } var el = loadingEffects[name](this._api, cfg); var zr = this._zr; this._loadingFX = el; zr.add(el); }; ECharts2.prototype.hideLoading = function() { if (this._disposed) { disposedWarning(this.id); return; } this._loadingFX && this._zr.remove(this._loadingFX); this._loadingFX = null; }; ECharts2.prototype.makeActionFromEvent = function(eventObj) { var payload = extend({}, eventObj); payload.type = eventActionMap[eventObj.type]; return payload; }; ECharts2.prototype.dispatchAction = function(payload, opt) { if (this._disposed) { disposedWarning(this.id); return; } if (!isObject$3(opt)) { opt = { silent: !!opt }; } if (!actions[payload.type]) { return; } if (!this._model) { return; } if (this[IN_MAIN_PROCESS_KEY]) { this._pendingActions.push(payload); return; } var silent = opt.silent; doDispatchAction.call(this, payload, silent); var flush = opt.flush; if (flush) { this._zr.flush(); } else if (flush !== false && env$1.browser.weChat) { this._throttledZrFlush(); } flushPendingActions.call(this, silent); triggerUpdatedEvent.call(this, silent); }; ECharts2.prototype.updateLabelLayout = function() { lifecycle$1.trigger("series:layoutlabels", this._model, this._api, { updatedSeries: [] }); }; ECharts2.prototype.appendData = function(params) { if (this._disposed) { disposedWarning(this.id); return; } var seriesIndex = params.seriesIndex; var ecModel = this.getModel(); var seriesModel = ecModel.getSeriesByIndex(seriesIndex); seriesModel.appendData(params); this._scheduler.unfinished = true; this.getZr().wakeUp(); }; ECharts2.internalField = function() { prepare = function(ecIns) { var scheduler = ecIns._scheduler; scheduler.restorePipelines(ecIns._model); scheduler.prepareStageTasks(); prepareView(ecIns, true); prepareView(ecIns, false); scheduler.plan(); }; prepareView = function(ecIns, isComponent) { var ecModel = ecIns._model; var scheduler = ecIns._scheduler; var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews; var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap; var zr = ecIns._zr; var api = ecIns._api; for (var i = 0; i < viewList.length; i++) { viewList[i].__alive = false; } isComponent ? ecModel.eachComponent(function(componentType, model) { componentType !== "series" && doPrepare(model); }) : ecModel.eachSeries(doPrepare); function doPrepare(model) { var requireNewView = model.__requireNewView; model.__requireNewView = false; var viewId = "_ec_" + model.id + "_" + model.type; var view3 = !requireNewView && viewMap[viewId]; if (!view3) { var classType = parseClassType(model.type); var Clazz = isComponent ? ComponentView$1.getClass(classType.main, classType.sub) : ChartView$1.getClass(classType.sub); view3 = new Clazz(); view3.init(ecModel, api); viewMap[viewId] = view3; viewList.push(view3); zr.add(view3.group); } model.__viewId = view3.__id = viewId; view3.__alive = true; view3.__model = model; view3.group.__ecComponentInfo = { mainType: model.mainType, index: model.componentIndex }; !isComponent && scheduler.prepareView(view3, model, ecModel, api); } for (var i = 0; i < viewList.length; ) { var view2 = viewList[i]; if (!view2.__alive) { !isComponent && view2.renderTask.dispose(); zr.remove(view2.group); view2.dispose(ecModel, api); viewList.splice(i, 1); if (viewMap[view2.__id] === view2) { delete viewMap[view2.__id]; } view2.__id = view2.group.__ecComponentInfo = null; } else { i++; } } }; updateDirectly = function(ecIns, method, payload, mainType, subType) { var ecModel = ecIns._model; ecModel.setUpdatePayload(payload); if (!mainType) { each$g([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView); return; } var query = {}; query[mainType + "Id"] = payload[mainType + "Id"]; query[mainType + "Index"] = payload[mainType + "Index"]; query[mainType + "Name"] = payload[mainType + "Name"]; var condition = { mainType, query }; subType && (condition.subType = subType); var excludeSeriesId = payload.excludeSeriesId; var excludeSeriesIdMap; if (excludeSeriesId != null) { excludeSeriesIdMap = createHashMap(); each$g(normalizeToArray(excludeSeriesId), function(id) { var modelId = convertOptionIdName(id, null); if (modelId != null) { excludeSeriesIdMap.set(modelId, true); } }); } if (isHighDownPayload(payload)) { allLeaveBlur(ecIns._api); } ecModel && ecModel.eachComponent(condition, function(model) { var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) !== null; if (isExcluded) { return; } if (isHighDownPayload(payload)) { if (model instanceof SeriesModel$1) { if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur) { blurSeriesFromHighlightPayload(model, payload, ecIns._api); } } else { var _a2 = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api), focusSelf = _a2.focusSelf, dispatchers = _a2.dispatchers; if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) { blurComponent(model.mainType, model.componentIndex, ecIns._api); } if (dispatchers) { each$g(dispatchers, function(dispatcher) { payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher); }); } } } else if (isSelectChangePayload(payload)) { if (model instanceof SeriesModel$1) { toggleSelectionFromPayload(model, payload, ecIns._api); updateSeriesElementSelection(model); markStatusToUpdate(ecIns); } } }, ecIns); ecModel && ecModel.eachComponent(condition, function(model) { var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) !== null; if (isExcluded) { return; } callView(ecIns[mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]); }, ecIns); function callView(view2) { view2 && view2.__alive && view2[method] && view2[method](view2.__model, ecModel, ecIns._api, payload); } }; updateMethods = { prepareAndUpdate: function(payload) { prepare(this); updateMethods.update.call(this, payload, { optionChanged: payload.newOption != null }); }, update: function(payload, updateParams) { var ecModel = this._model; var api = this._api; var zr = this._zr; var coordSysMgr = this._coordSysMgr; var scheduler = this._scheduler; if (!ecModel) { return; } ecModel.setUpdatePayload(payload); scheduler.restoreData(ecModel, payload); scheduler.performSeriesTasks(ecModel); coordSysMgr.create(ecModel, api); scheduler.performDataProcessorTasks(ecModel, payload); updateStreamModes(this, ecModel); coordSysMgr.update(ecModel, api); clearColorPalette(ecModel); scheduler.performVisualTasks(ecModel, payload); render(this, ecModel, api, payload, updateParams); var backgroundColor2 = ecModel.get("backgroundColor") || "transparent"; var darkMode = ecModel.get("darkMode"); if (!env$1.canvasSupported) { var colorArr = parse(backgroundColor2); backgroundColor2 = stringify(colorArr, "rgb"); if (colorArr[3] === 0) { backgroundColor2 = "transparent"; } } else { zr.setBackgroundColor(backgroundColor2); if (darkMode != null && darkMode !== "auto") { zr.setDarkMode(darkMode); } } lifecycle$1.trigger("afterupdate", ecModel, api); }, updateTransform: function(payload) { var _this = this; var ecModel = this._model; var api = this._api; if (!ecModel) { return; } ecModel.setUpdatePayload(payload); var componentDirtyList = []; ecModel.eachComponent(function(componentType, componentModel) { if (componentType === "series") { return; } var componentView = _this.getViewOfComponentModel(componentModel); if (componentView && componentView.__alive) { if (componentView.updateTransform) { var result = componentView.updateTransform(componentModel, ecModel, api, payload); result && result.update && componentDirtyList.push(componentView); } else { componentDirtyList.push(componentView); } } }); var seriesDirtyMap = createHashMap(); ecModel.eachSeries(function(seriesModel) { var chartView = _this._chartsMap[seriesModel.__viewId]; if (chartView.updateTransform) { var result = chartView.updateTransform(seriesModel, ecModel, api, payload); result && result.update && seriesDirtyMap.set(seriesModel.uid, 1); } else { seriesDirtyMap.set(seriesModel.uid, 1); } }); clearColorPalette(ecModel); this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap }); renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap); lifecycle$1.trigger("afterupdate", ecModel, api); }, updateView: function(payload) { var ecModel = this._model; if (!ecModel) { return; } ecModel.setUpdatePayload(payload); ChartView$1.markUpdateMethod(payload, "updateView"); clearColorPalette(ecModel); this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true }); render(this, ecModel, this._api, payload, {}); lifecycle$1.trigger("afterupdate", ecModel, this._api); }, updateVisual: function(payload) { var _this = this; var ecModel = this._model; if (!ecModel) { return; } ecModel.setUpdatePayload(payload); ecModel.eachSeries(function(seriesModel) { seriesModel.getData().clearAllVisual(); }); ChartView$1.markUpdateMethod(payload, "updateVisual"); clearColorPalette(ecModel); this._scheduler.performVisualTasks(ecModel, payload, { visualType: "visual", setDirty: true }); ecModel.eachComponent(function(componentType, componentModel) { if (componentType !== "series") { var componentView = _this.getViewOfComponentModel(componentModel); componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload); } }); ecModel.eachSeries(function(seriesModel) { var chartView = _this._chartsMap[seriesModel.__viewId]; chartView.updateVisual(seriesModel, ecModel, _this._api, payload); }); lifecycle$1.trigger("afterupdate", ecModel, this._api); }, updateLayout: function(payload) { updateMethods.update.call(this, payload); } }; doConvertPixel = function(ecIns, methodName, finder, value) { if (ecIns._disposed) { disposedWarning(ecIns.id); return; } var ecModel = ecIns._model; var coordSysList = ecIns._coordSysMgr.getCoordinateSystems(); var result; var parsedFinder = parseFinder$1(ecModel, finder); for (var i = 0; i < coordSysList.length; i++) { var coordSys = coordSysList[i]; if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) { return result; } } }; updateStreamModes = function(ecIns, ecModel) { var chartsMap = ecIns._chartsMap; var scheduler = ecIns._scheduler; ecModel.eachSeries(function(seriesModel) { scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]); }); }; doDispatchAction = function(payload, silent) { var _this = this; var ecModel = this.getModel(); var payloadType = payload.type; var escapeConnect = payload.escapeConnect; var actionWrap = actions[payloadType]; var actionInfo2 = actionWrap.actionInfo; var cptTypeTmp = (actionInfo2.update || "update").split(":"); var updateMethod = cptTypeTmp.pop(); var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]); this[IN_MAIN_PROCESS_KEY] = true; var payloads = [payload]; var batched = false; if (payload.batch) { batched = true; payloads = map$1(payload.batch, function(item) { item = defaults(extend({}, item), payload); item.batch = null; return item; }); } var eventObjBatch = []; var eventObj; var isSelectChange = isSelectChangePayload(payload); var isHighDown = isHighDownPayload(payload); each$g(payloads, function(batchItem) { eventObj = actionWrap.action(batchItem, _this._model, _this._api); eventObj = eventObj || extend({}, batchItem); eventObj.type = actionInfo2.event || eventObj.type; eventObjBatch.push(eventObj); if (isHighDown) { var _a2 = preParseFinder(payload), queryOptionMap = _a2.queryOptionMap, mainTypeSpecified = _a2.mainTypeSpecified; var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : "series"; updateDirectly(_this, updateMethod, batchItem, componentMainType); markStatusToUpdate(_this); } else if (isSelectChange) { updateDirectly(_this, updateMethod, batchItem, "series"); markStatusToUpdate(_this); } else if (cptType) { updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub); } }); if (updateMethod !== "none" && !isHighDown && !isSelectChange && !cptType) { if (this[PENDING_UPDATE]) { prepare(this); updateMethods.update.call(this, payload); this[PENDING_UPDATE] = null; } else { updateMethods[updateMethod].call(this, payload); } } if (batched) { eventObj = { type: actionInfo2.event || payloadType, escapeConnect, batch: eventObjBatch }; } else { eventObj = eventObjBatch[0]; } this[IN_MAIN_PROCESS_KEY] = false; if (!silent) { var messageCenter = this._messageCenter; messageCenter.trigger(eventObj.type, eventObj); if (isSelectChange) { var newObj = { type: "selectchanged", escapeConnect, selected: getAllSelectedIndices(ecModel), isFromClick: payload.isFromClick || false, fromAction: payload.type, fromActionPayload: payload }; messageCenter.trigger(newObj.type, newObj); } } }; flushPendingActions = function(silent) { var pendingActions = this._pendingActions; while (pendingActions.length) { var payload = pendingActions.shift(); doDispatchAction.call(this, payload, silent); } }; triggerUpdatedEvent = function(silent) { !silent && this.trigger("updated"); }; bindRenderedEvent = function(zr, ecIns) { zr.on("rendered", function(params) { ecIns.trigger("rendered", params); if (zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) { ecIns.trigger("finished"); } }); }; bindMouseEvent = function(zr, ecIns) { zr.on("mouseover", function(e2) { var el = e2.target; var dispatcher = findEventDispatcher(el, isHighDownDispatcher); if (dispatcher) { handleGlobalMouseOverForHighDown(dispatcher, e2, ecIns._api); markStatusToUpdate(ecIns); } }).on("mouseout", function(e2) { var el = e2.target; var dispatcher = findEventDispatcher(el, isHighDownDispatcher); if (dispatcher) { handleGlboalMouseOutForHighDown(dispatcher, e2, ecIns._api); markStatusToUpdate(ecIns); } }).on("click", function(e2) { var el = e2.target; var dispatcher = findEventDispatcher(el, function(target) { return getECData(target).dataIndex != null; }, true); if (dispatcher) { var actionType = dispatcher.selected ? "unselect" : "select"; var ecData = getECData(dispatcher); ecIns._api.dispatchAction({ type: actionType, dataType: ecData.dataType, dataIndexInside: ecData.dataIndex, seriesIndex: ecData.seriesIndex, isFromClick: true }); } }); }; clearColorPalette = function(ecModel) { ecModel.clearColorPalette(); ecModel.eachSeries(function(seriesModel) { seriesModel.clearColorPalette(); }); }; render = function(ecIns, ecModel, api, payload, updateParams) { renderComponents(ecIns, ecModel, api, payload, updateParams); each$g(ecIns._chartsViews, function(chart) { chart.__alive = false; }); renderSeries(ecIns, ecModel, api, payload, updateParams); each$g(ecIns._chartsViews, function(chart) { if (!chart.__alive) { chart.remove(ecModel, api); } }); }; renderComponents = function(ecIns, ecModel, api, payload, updateParams, dirtyList) { each$g(dirtyList || ecIns._componentsViews, function(componentView) { var componentModel = componentView.__model; clearStates(componentModel, componentView); componentView.render(componentModel, ecModel, api, payload); updateZ2(componentModel, componentView); updateStates(componentModel, componentView); }); }; renderSeries = function(ecIns, ecModel, api, payload, updateParams, dirtyMap) { var scheduler = ecIns._scheduler; updateParams = extend(updateParams || {}, { updatedSeries: ecModel.getSeries() }); lifecycle$1.trigger("series:beforeupdate", ecModel, api, updateParams); var unfinished = false; ecModel.eachSeries(function(seriesModel) { var chartView = ecIns._chartsMap[seriesModel.__viewId]; chartView.__alive = true; var renderTask = chartView.renderTask; scheduler.updatePayload(renderTask, payload); clearStates(seriesModel, chartView); if (dirtyMap && dirtyMap.get(seriesModel.uid)) { renderTask.dirty(); } if (renderTask.perform(scheduler.getPerformArgs(renderTask))) { unfinished = true; } chartView.group.silent = !!seriesModel.get("silent"); updateBlend(seriesModel, chartView); updateSeriesElementSelection(seriesModel); }); scheduler.unfinished = unfinished || scheduler.unfinished; lifecycle$1.trigger("series:layoutlabels", ecModel, api, updateParams); lifecycle$1.trigger("series:transition", ecModel, api, updateParams); ecModel.eachSeries(function(seriesModel) { var chartView = ecIns._chartsMap[seriesModel.__viewId]; updateZ2(seriesModel, chartView); updateStates(seriesModel, chartView); }); updateHoverLayerStatus(ecIns, ecModel); lifecycle$1.trigger("series:afterupdate", ecModel, api, updateParams); }; markStatusToUpdate = function(ecIns) { ecIns[STATUS_NEEDS_UPDATE_KEY] = true; ecIns.getZr().wakeUp(); }; applyChangedStates = function(ecIns) { if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) { return; } ecIns.getZr().storage.traverse(function(el) { if (isElementRemoved(el)) { return; } applyElementStates(el); }); ecIns[STATUS_NEEDS_UPDATE_KEY] = false; }; function applyElementStates(el) { var newStates = []; var oldStates = el.currentStates; for (var i = 0; i < oldStates.length; i++) { var stateName = oldStates[i]; if (!(stateName === "emphasis" || stateName === "blur" || stateName === "select")) { newStates.push(stateName); } } if (el.selected && el.states.select) { newStates.push("select"); } if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) { newStates.push("emphasis"); } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) { newStates.push("blur"); } el.useStates(newStates); } function updateHoverLayerStatus(ecIns, ecModel) { var zr = ecIns._zr; var storage2 = zr.storage; var elCount = 0; storage2.traverse(function(el) { if (!el.isGroup) { elCount++; } }); if (elCount > ecModel.get("hoverLayerThreshold") && !env$1.node && !env$1.worker) { ecModel.eachSeries(function(seriesModel) { if (seriesModel.preventUsingHoverLayer) { return; } var chartView = ecIns._chartsMap[seriesModel.__viewId]; if (chartView.__alive) { chartView.group.traverse(function(el) { if (el.states.emphasis) { el.states.emphasis.hoverLayer = true; } }); } }); } } function updateBlend(seriesModel, chartView) { var blendMode = seriesModel.get("blendMode") || null; chartView.group.traverse(function(el) { if (!el.isGroup) { el.style.blend = blendMode; } if (el.eachPendingDisplayable) { el.eachPendingDisplayable(function(displayable) { displayable.style.blend = blendMode; }); } }); } function updateZ2(model, view2) { if (model.preventAutoZ) { return; } _updateZ(view2.group, model.get("z") || 0, model.get("zlevel") || 0, -Infinity); } function _updateZ(el, z, zlevel, maxZ2) { var label = el.getTextContent(); var labelLine = el.getTextGuideLine(); var isGroup = el.isGroup; if (isGroup) { var children = el.childrenRef(); for (var i = 0; i < children.length; i++) { maxZ2 = Math.max(_updateZ(children[i], z, zlevel, maxZ2), maxZ2); } } else { el.z = z; el.zlevel = zlevel; maxZ2 = Math.max(el.z2, maxZ2); } if (label) { label.z = z; label.zlevel = zlevel; isFinite(maxZ2) && (label.z2 = maxZ2 + 2); } if (labelLine) { var textGuideLineConfig = el.textGuideLineConfig; labelLine.z = z; labelLine.zlevel = zlevel; isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1)); } return maxZ2; } function clearStates(model, view2) { view2.group.traverse(function(el) { if (isElementRemoved(el)) { return; } var textContent = el.getTextContent(); var textGuide = el.getTextGuideLine(); if (el.stateTransition) { el.stateTransition = null; } if (textContent && textContent.stateTransition) { textContent.stateTransition = null; } if (textGuide && textGuide.stateTransition) { textGuide.stateTransition = null; } if (el.hasState()) { el.prevStates = el.currentStates; el.clearStates(); } else if (el.prevStates) { el.prevStates = null; } }); } function updateStates(model, view2) { var stateAnimationModel = model.getModel("stateAnimation"); var enableAnimation = model.isAnimationEnabled(); var duration = stateAnimationModel.get("duration"); var stateTransition = duration > 0 ? { duration, delay: stateAnimationModel.get("delay"), easing: stateAnimationModel.get("easing") } : null; view2.group.traverse(function(el) { if (el.states && el.states.emphasis) { if (isElementRemoved(el)) { return; } if (el instanceof Path$1) { savePathStates(el); } if (el.__dirty) { var prevStates = el.prevStates; if (prevStates) { el.useStates(prevStates); } } if (enableAnimation) { el.stateTransition = stateTransition; var textContent = el.getTextContent(); var textGuide = el.getTextGuideLine(); if (textContent) { textContent.stateTransition = stateTransition; } if (textGuide) { textGuide.stateTransition = stateTransition; } } if (el.__dirty) { applyElementStates(el); } } }); } createExtensionAPI = function(ecIns) { return new (function(_super2) { __extends$1(class_1, _super2); function class_1() { return _super2 !== null && _super2.apply(this, arguments) || this; } class_1.prototype.getCoordinateSystems = function() { return ecIns._coordSysMgr.getCoordinateSystems(); }; class_1.prototype.getComponentByElement = function(el) { while (el) { var modelInfo = el.__ecComponentInfo; if (modelInfo != null) { return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index); } el = el.parent; } }; class_1.prototype.enterEmphasis = function(el, highlightDigit) { enterEmphasis(el, highlightDigit); markStatusToUpdate(ecIns); }; class_1.prototype.leaveEmphasis = function(el, highlightDigit) { leaveEmphasis(el, highlightDigit); markStatusToUpdate(ecIns); }; class_1.prototype.enterBlur = function(el) { enterBlur(el); markStatusToUpdate(ecIns); }; class_1.prototype.leaveBlur = function(el) { leaveBlur(el); markStatusToUpdate(ecIns); }; class_1.prototype.enterSelect = function(el) { enterSelect(el); markStatusToUpdate(ecIns); }; class_1.prototype.leaveSelect = function(el) { leaveSelect(el); markStatusToUpdate(ecIns); }; class_1.prototype.getModel = function() { return ecIns.getModel(); }; class_1.prototype.getViewOfComponentModel = function(componentModel) { return ecIns.getViewOfComponentModel(componentModel); }; class_1.prototype.getViewOfSeriesModel = function(seriesModel) { return ecIns.getViewOfSeriesModel(seriesModel); }; return class_1; }(ExtensionAPI$1))(ecIns); }; enableConnect = function(chart) { function updateConnectedChartsStatus(charts, status) { for (var i = 0; i < charts.length; i++) { var otherChart = charts[i]; otherChart[CONNECT_STATUS_KEY] = status; } } each$g(eventActionMap, function(actionType, eventType) { chart._messageCenter.on(eventType, function(event) { if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) { if (event && event.escapeConnect) { return; } var action_1 = chart.makeActionFromEvent(event); var otherCharts_1 = []; each$g(instances, function(otherChart) { if (otherChart !== chart && otherChart.group === chart.group) { otherCharts_1.push(otherChart); } }); updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING); each$g(otherCharts_1, function(otherChart) { if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) { otherChart.dispatchAction(action_1); } }); updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED); } }); }); }; }(); return ECharts2; }(Eventful$1); var echartsProto = ECharts.prototype; echartsProto.on = createRegisterEventWithLowercaseECharts("on"); echartsProto.off = createRegisterEventWithLowercaseECharts("off"); echartsProto.one = function(eventName, cb, ctx) { var self2 = this; function wrapped() { var args2 = []; for (var _i = 0; _i < arguments.length; _i++) { args2[_i] = arguments[_i]; } cb && cb.apply && cb.apply(this, args2); self2.off(eventName, wrapped); } this.on.call(this, eventName, wrapped, ctx); }; var MOUSE_EVENT_NAMES = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"]; function disposedWarning(id) { } var actions = {}; var eventActionMap = {}; var dataProcessorFuncs = []; var optionPreprocessorFuncs = []; var visualFuncs = []; var themeStorage = {}; var loadingEffects = {}; var instances = {}; var connectedGroups = {}; var idBase = +new Date() - 0; var groupIdBase = +new Date() - 0; var DOM_ATTRIBUTE_KEY = "_echarts_instance_"; function init$1(dom, theme2, opts) { var existInstance = getInstanceByDom(dom); if (existInstance) { return existInstance; } var chart = new ECharts(dom, theme2, opts); chart.id = "ec_" + idBase++; instances[chart.id] = chart; setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id); enableConnect(chart); lifecycle$1.trigger("afterinit", chart); return chart; } function connect(groupId) { if (isArray$1(groupId)) { var charts = groupId; groupId = null; each$g(charts, function(chart) { if (chart.group != null) { groupId = chart.group; } }); groupId = groupId || "g_" + groupIdBase++; each$g(charts, function(chart) { chart.group = groupId; }); } connectedGroups[groupId] = true; return groupId; } function disConnect(groupId) { connectedGroups[groupId] = false; } var disconnect = disConnect; function dispose(chart) { if (typeof chart === "string") { chart = instances[chart]; } else if (!(chart instanceof ECharts)) { chart = getInstanceByDom(chart); } if (chart instanceof ECharts && !chart.isDisposed()) { chart.dispose(); } } function getInstanceByDom(dom) { return instances[getAttribute(dom, DOM_ATTRIBUTE_KEY)]; } function getInstanceById(key2) { return instances[key2]; } function registerTheme(name, theme2) { themeStorage[name] = theme2; } function registerPreprocessor(preprocessorFunc) { if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) { optionPreprocessorFuncs.push(preprocessorFunc); } } function registerProcessor(priority, processor) { normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT); } function registerPostInit(postInitFunc) { registerUpdateLifecycle("afterinit", postInitFunc); } function registerPostUpdate(postUpdateFunc) { registerUpdateLifecycle("afterupdate", postUpdateFunc); } function registerUpdateLifecycle(name, cb) { lifecycle$1.on(name, cb); } function registerAction(actionInfo2, eventName, action) { if (typeof eventName === "function") { action = eventName; eventName = ""; } var actionType = isObject$3(actionInfo2) ? actionInfo2.type : [actionInfo2, actionInfo2 = { event: eventName }][0]; actionInfo2.event = (actionInfo2.event || actionType).toLowerCase(); eventName = actionInfo2.event; if (eventActionMap[eventName]) { return; } assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName)); if (!actions[actionType]) { actions[actionType] = { action, actionInfo: actionInfo2 }; } eventActionMap[eventName] = actionType; } function registerCoordinateSystem(type, coordSysCreator) { CoordinateSystem.register(type, coordSysCreator); } function getCoordinateSystemDimensions(type) { var coordSysCreator = CoordinateSystem.get(type); if (coordSysCreator) { return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice(); } } function registerLayout(priority, layoutTask) { normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, "layout"); } function registerVisual(priority, visualTask) { normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, "visual"); } var registeredTasks = []; function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) { if (isFunction(priority) || isObject$3(priority)) { fn = priority; priority = defaultPriority; } if (indexOf(registeredTasks, fn) >= 0) { return; } registeredTasks.push(fn); var stageHandler = Scheduler$1.wrapStageHandler(fn, visualType); stageHandler.__prio = priority; stageHandler.__raw = fn; targetList.push(stageHandler); } function registerLoading(name, loadingFx) { loadingEffects[name] = loadingFx; } function setCanvasCreator(creator) { $override("createCanvas", creator); } function registerMap(mapName, geoJson, specialAreas) { geoSourceManager.registerMap(mapName, geoJson, specialAreas); } function getMap(mapName) { return geoSourceManager.getMapForUser(mapName); } var registerTransform = registerExternalTransform; registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask); registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask); registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask); registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask); registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask); registerVisual(PRIORITY_VISUAL_DECAL, decalVisual); registerPreprocessor(globalBackwardCompat); registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack$1); registerLoading("default", defaultLoading); registerAction({ type: HIGHLIGHT_ACTION_TYPE, event: HIGHLIGHT_ACTION_TYPE, update: HIGHLIGHT_ACTION_TYPE }, noop$1); registerAction({ type: DOWNPLAY_ACTION_TYPE, event: DOWNPLAY_ACTION_TYPE, update: DOWNPLAY_ACTION_TYPE }, noop$1); registerAction({ type: SELECT_ACTION_TYPE, event: SELECT_ACTION_TYPE, update: SELECT_ACTION_TYPE }, noop$1); registerAction({ type: UNSELECT_ACTION_TYPE, event: UNSELECT_ACTION_TYPE, update: UNSELECT_ACTION_TYPE }, noop$1); registerAction({ type: TOGGLE_SELECT_ACTION_TYPE, event: TOGGLE_SELECT_ACTION_TYPE, update: TOGGLE_SELECT_ACTION_TYPE }, noop$1); registerTheme("light", lightTheme); registerTheme("dark", darkTheme); var dataTool = {}; var extensions = []; var extensionRegisters = { registerPreprocessor, registerProcessor, registerPostInit, registerPostUpdate, registerUpdateLifecycle, registerAction, registerCoordinateSystem, registerLayout, registerVisual, registerTransform, registerLoading, registerMap, PRIORITY, ComponentModel: ComponentModel$1, ComponentView: ComponentView$1, SeriesModel: SeriesModel$1, ChartView: ChartView$1, registerComponentModel: function(ComponentModelClass) { ComponentModel$1.registerClass(ComponentModelClass); }, registerComponentView: function(ComponentViewClass) { ComponentView$1.registerClass(ComponentViewClass); }, registerSeriesModel: function(SeriesModelClass) { SeriesModel$1.registerClass(SeriesModelClass); }, registerChartView: function(ChartViewClass) { ChartView$1.registerClass(ChartViewClass); }, registerSubTypeDefaulter: function(componentType, defaulter) { ComponentModel$1.registerSubTypeDefaulter(componentType, defaulter); }, registerPainter: function(painterType, PainterCtor) { registerPainter(painterType, PainterCtor); } }; function use(ext) { if (isArray$1(ext)) { each$g(ext, function(singleExt) { use(singleExt); }); return; } if (indexOf(extensions, ext) >= 0) { return; } extensions.push(ext); if (isFunction(ext)) { ext = { install: ext }; } ext.install(extensionRegisters); } function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) { return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1; } function defaultKeyGetter(item) { return item; } var DataDiffer = function() { function DataDiffer2(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) { this._old = oldArr; this._new = newArr; this._oldKeyGetter = oldKeyGetter || defaultKeyGetter; this._newKeyGetter = newKeyGetter || defaultKeyGetter; this.context = context; this._diffModeMultiple = diffMode === "multiple"; } DataDiffer2.prototype.add = function(func) { this._add = func; return this; }; DataDiffer2.prototype.update = function(func) { this._update = func; return this; }; DataDiffer2.prototype.updateManyToOne = function(func) { this._updateManyToOne = func; return this; }; DataDiffer2.prototype.updateOneToMany = function(func) { this._updateOneToMany = func; return this; }; DataDiffer2.prototype.updateManyToMany = function(func) { this._updateManyToMany = func; return this; }; DataDiffer2.prototype.remove = function(func) { this._remove = func; return this; }; DataDiffer2.prototype.execute = function() { this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"](); }; DataDiffer2.prototype._executeOneToOne = function() { var oldArr = this._old; var newArr = this._new; var newDataIndexMap = {}; var oldDataKeyArr = new Array(oldArr.length); var newDataKeyArr = new Array(newArr.length); this._initIndexMap(oldArr, null, oldDataKeyArr, "_oldKeyGetter"); this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); for (var i = 0; i < oldArr.length; i++) { var oldKey = oldDataKeyArr[i]; var newIdxMapVal = newDataIndexMap[oldKey]; var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); if (newIdxMapValLen > 1) { var newIdx = newIdxMapVal.shift(); if (newIdxMapVal.length === 1) { newDataIndexMap[oldKey] = newIdxMapVal[0]; } this._update && this._update(newIdx, i); } else if (newIdxMapValLen === 1) { newDataIndexMap[oldKey] = null; this._update && this._update(newIdxMapVal, i); } else { this._remove && this._remove(i); } } this._performRestAdd(newDataKeyArr, newDataIndexMap); }; DataDiffer2.prototype._executeMultiple = function() { var oldArr = this._old; var newArr = this._new; var oldDataIndexMap = {}; var newDataIndexMap = {}; var oldDataKeyArr = []; var newDataKeyArr = []; this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, "_oldKeyGetter"); this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); for (var i = 0; i < oldDataKeyArr.length; i++) { var oldKey = oldDataKeyArr[i]; var oldIdxMapVal = oldDataIndexMap[oldKey]; var newIdxMapVal = newDataIndexMap[oldKey]; var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal); var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) { this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal); newDataIndexMap[oldKey] = null; } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) { this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal); newDataIndexMap[oldKey] = null; } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) { this._update && this._update(newIdxMapVal, oldIdxMapVal); newDataIndexMap[oldKey] = null; } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) { this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal); newDataIndexMap[oldKey] = null; } else if (oldIdxMapValLen > 1) { for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) { this._remove && this._remove(oldIdxMapVal[i_1]); } } else { this._remove && this._remove(oldIdxMapVal); } } this._performRestAdd(newDataKeyArr, newDataIndexMap); }; DataDiffer2.prototype._performRestAdd = function(newDataKeyArr, newDataIndexMap) { for (var i = 0; i < newDataKeyArr.length; i++) { var newKey = newDataKeyArr[i]; var newIdxMapVal = newDataIndexMap[newKey]; var idxMapValLen = dataIndexMapValueLength(newIdxMapVal); if (idxMapValLen > 1) { for (var j = 0; j < idxMapValLen; j++) { this._add && this._add(newIdxMapVal[j]); } } else if (idxMapValLen === 1) { this._add && this._add(newIdxMapVal); } newDataIndexMap[newKey] = null; } }; DataDiffer2.prototype._initIndexMap = function(arr, map2, keyArr, keyGetterName) { var cbModeMultiple = this._diffModeMultiple; for (var i = 0; i < arr.length; i++) { var key2 = "_ec_" + this[keyGetterName](arr[i], i); if (!cbModeMultiple) { keyArr[i] = key2; } if (!map2) { continue; } var idxMapVal = map2[key2]; var idxMapValLen = dataIndexMapValueLength(idxMapVal); if (idxMapValLen === 0) { map2[key2] = i; if (cbModeMultiple) { keyArr.push(key2); } } else if (idxMapValLen === 1) { map2[key2] = [idxMapVal, i]; } else { idxMapVal.push(i); } } }; return DataDiffer2; }(); var DataDiffer$1 = DataDiffer; var DimensionUserOuput = function() { function DimensionUserOuput2(encode, dimRequest) { this._encode = encode; this._schema = dimRequest; } DimensionUserOuput2.prototype.get = function() { return { fullDimensions: this._getFullDimensionNames(), encode: this._encode }; }; DimensionUserOuput2.prototype._getFullDimensionNames = function() { if (!this._cachedDimNames) { this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []; } return this._cachedDimNames; }; return DimensionUserOuput2; }(); function summarizeDimensions(data, schema) { var summary = {}; var encode = summary.encode = {}; var notExtraCoordDimMap = createHashMap(); var defaultedLabel = []; var defaultedTooltip = []; var userOutputEncode = {}; each$g(data.dimensions, function(dimName) { var dimItem = data.getDimensionInfo(dimName); var coordDim = dimItem.coordDim; if (coordDim) { var coordDimIndex = dimItem.coordDimIndex; getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName; if (!dimItem.isExtraCoord) { notExtraCoordDimMap.set(coordDim, 1); if (mayLabelDimType(dimItem.type)) { defaultedLabel[0] = dimName; } getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name); } if (dimItem.defaultTooltip) { defaultedTooltip.push(dimName); } } VISUAL_DIMENSIONS.each(function(v, otherDim) { var encodeArr = getOrCreateEncodeArr(encode, otherDim); var dimIndex = dimItem.otherDims[otherDim]; if (dimIndex != null && dimIndex !== false) { encodeArr[dimIndex] = dimItem.name; } }); }); var dataDimsOnCoord = []; var encodeFirstDimNotExtra = {}; notExtraCoordDimMap.each(function(v, coordDim) { var dimArr = encode[coordDim]; encodeFirstDimNotExtra[coordDim] = dimArr[0]; dataDimsOnCoord = dataDimsOnCoord.concat(dimArr); }); summary.dataDimsOnCoord = dataDimsOnCoord; summary.dataDimIndicesOnCoord = map$1(dataDimsOnCoord, function(dimName) { return data.getDimensionInfo(dimName).storeDimIndex; }); summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra; var encodeLabel = encode.label; if (encodeLabel && encodeLabel.length) { defaultedLabel = encodeLabel.slice(); } var encodeTooltip = encode.tooltip; if (encodeTooltip && encodeTooltip.length) { defaultedTooltip = encodeTooltip.slice(); } else if (!defaultedTooltip.length) { defaultedTooltip = defaultedLabel.slice(); } encode.defaultedLabel = defaultedLabel; encode.defaultedTooltip = defaultedTooltip; summary.userOutput = new DimensionUserOuput(userOutputEncode, schema); return summary; } function getOrCreateEncodeArr(encode, dim) { if (!encode.hasOwnProperty(dim)) { encode[dim] = []; } return encode[dim]; } function getDimensionTypeByAxis(axisType) { return axisType === "category" ? "ordinal" : axisType === "time" ? "time" : "float"; } function mayLabelDimType(dimType) { return !(dimType === "ordinal" || dimType === "time"); } var SeriesDimensionDefine = function() { function SeriesDimensionDefine2(opt) { this.otherDims = {}; if (opt != null) { extend(this, opt); } } return SeriesDimensionDefine2; }(); var SeriesDimensionDefine$1 = SeriesDimensionDefine; var inner$h = makeInner(); var dimTypeShort = { float: "f", int: "i", ordinal: "o", number: "n", time: "t" }; var SeriesDataSchema = function() { function SeriesDataSchema2(opt) { this.dimensions = opt.dimensions; this._dimOmitted = opt.dimensionOmitted; this.source = opt.source; this._fullDimCount = opt.fullDimensionCount; this._updateDimOmitted(opt.dimensionOmitted); } SeriesDataSchema2.prototype.isDimensionOmitted = function() { return this._dimOmitted; }; SeriesDataSchema2.prototype._updateDimOmitted = function(dimensionOmitted) { this._dimOmitted = dimensionOmitted; if (!dimensionOmitted) { return; } if (!this._dimNameMap) { this._dimNameMap = ensureSourceDimNameMap(this.source); } }; SeriesDataSchema2.prototype.getSourceDimensionIndex = function(dimName) { return retrieve2(this._dimNameMap.get(dimName), -1); }; SeriesDataSchema2.prototype.getSourceDimension = function(dimIndex) { var dimensionsDefine = this.source.dimensionsDefine; if (dimensionsDefine) { return dimensionsDefine[dimIndex]; } }; SeriesDataSchema2.prototype.makeStoreSchema = function() { var dimCount = this._fullDimCount; var willRetrieveDataByName = shouldRetrieveDataByName(this.source); var makeHashStrict = !shouldOmitUnusedDimensions(dimCount); var dimHash = ""; var dims = []; for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) { var property = void 0; var type = void 0; var ordinalMeta = void 0; var seriesDimDef = this.dimensions[seriesDimIdx]; if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { property = willRetrieveDataByName ? seriesDimDef.name : null; type = seriesDimDef.type; ordinalMeta = seriesDimDef.ordinalMeta; seriesDimIdx++; } else { var sourceDimDef = this.getSourceDimension(fullDimIdx); if (sourceDimDef) { property = willRetrieveDataByName ? sourceDimDef.name : null; type = sourceDimDef.type; } } dims.push({ property, type, ordinalMeta }); if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) { dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property; } dimHash += "$"; dimHash += dimTypeShort[type] || "f"; if (ordinalMeta) { dimHash += ordinalMeta.uid; } dimHash += "$"; } var source = this.source; var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$"); return { dimensions: dims, hash }; }; SeriesDataSchema2.prototype.makeOutputDimensionNames = function() { var result = []; for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) { var name_1 = void 0; var seriesDimDef = this.dimensions[seriesDimIdx]; if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { if (!seriesDimDef.isCalculationCoord) { name_1 = seriesDimDef.name; } seriesDimIdx++; } else { var sourceDimDef = this.getSourceDimension(fullDimIdx); if (sourceDimDef) { name_1 = sourceDimDef.name; } } result.push(name_1); } return result; }; SeriesDataSchema2.prototype.appendCalculationDimension = function(dimDef) { this.dimensions.push(dimDef); dimDef.isCalculationCoord = true; this._fullDimCount++; this._updateDimOmitted(true); }; return SeriesDataSchema2; }(); function isSeriesDataSchema(schema) { return schema instanceof SeriesDataSchema; } function createDimNameMap(dimsDef) { var dataDimNameMap = createHashMap(); for (var i = 0; i < (dimsDef || []).length; i++) { var dimDefItemRaw = dimsDef[i]; var userDimName = isObject$3(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw; if (userDimName != null && dataDimNameMap.get(userDimName) == null) { dataDimNameMap.set(userDimName, i); } } return dataDimNameMap; } function ensureSourceDimNameMap(source) { var innerSource = inner$h(source); return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine)); } function shouldOmitUnusedDimensions(dimCount) { return dimCount > 30; } var isObject$1 = isObject$3; var map = map$1; var CtorInt32Array = typeof Int32Array === "undefined" ? Array : Int32Array; var ID_PREFIX = "e\0\0"; var INDEX_NOT_FOUND = -1; var TRANSFERABLE_PROPERTIES = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"]; var CLONE_PROPERTIES = ["_approximateExtent"]; var prepareInvertedIndex; var getId; var getIdNameFromStore; var normalizeDimensions; var transferProperties; var cloneListForMapAndSample; var makeIdFromName; var SeriesData = function() { function SeriesData2(dimensionsInput, hostModel) { this.type = "list"; this._dimOmitted = false; this._nameList = []; this._idList = []; this._visual = {}; this._layout = {}; this._itemVisuals = []; this._itemLayouts = []; this._graphicEls = []; this._approximateExtent = {}; this._calculationInfo = {}; this.hasItemOption = false; this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "lttbDownSample", "map"]; this.CHANGABLE_METHODS = ["filterSelf", "selectRange"]; this.DOWNSAMPLE_METHODS = ["downSample", "lttbDownSample"]; var dimensions; var assignStoreDimIdx = false; if (isSeriesDataSchema(dimensionsInput)) { dimensions = dimensionsInput.dimensions; this._dimOmitted = dimensionsInput.isDimensionOmitted(); this._schema = dimensionsInput; } else { assignStoreDimIdx = true; dimensions = dimensionsInput; } dimensions = dimensions || ["x", "y"]; var dimensionInfos = {}; var dimensionNames = []; var invertedIndicesMap = {}; var needsHasOwn = false; var emptyObj = {}; for (var i = 0; i < dimensions.length; i++) { var dimInfoInput = dimensions[i]; var dimensionInfo = isString(dimInfoInput) ? new SeriesDimensionDefine$1({ name: dimInfoInput }) : !(dimInfoInput instanceof SeriesDimensionDefine$1) ? new SeriesDimensionDefine$1(dimInfoInput) : dimInfoInput; var dimensionName = dimensionInfo.name; dimensionInfo.type = dimensionInfo.type || "float"; if (!dimensionInfo.coordDim) { dimensionInfo.coordDim = dimensionName; dimensionInfo.coordDimIndex = 0; } var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {}; dimensionNames.push(dimensionName); dimensionInfos[dimensionName] = dimensionInfo; if (emptyObj[dimensionName] != null) { needsHasOwn = true; } if (dimensionInfo.createInvertedIndices) { invertedIndicesMap[dimensionName] = []; } if (otherDims.itemName === 0) { this._nameDimIdx = i; } if (otherDims.itemId === 0) { this._idDimIdx = i; } if (assignStoreDimIdx) { dimensionInfo.storeDimIndex = i; } } this.dimensions = dimensionNames; this._dimInfos = dimensionInfos; this._initGetDimensionInfo(needsHasOwn); this.hostModel = hostModel; this._invertedIndicesMap = invertedIndicesMap; if (this._dimOmitted) { var dimIdxToName_1 = this._dimIdxToName = createHashMap(); each$g(dimensionNames, function(dimName) { dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName); }); } } SeriesData2.prototype.getDimension = function(dim) { var dimIdx = this._recognizeDimIndex(dim); if (dimIdx == null) { return dim; } dimIdx = dim; if (!this._dimOmitted) { return this.dimensions[dimIdx]; } var dimName = this._dimIdxToName.get(dimIdx); if (dimName != null) { return dimName; } var sourceDimDef = this._schema.getSourceDimension(dimIdx); if (sourceDimDef) { return sourceDimDef.name; } }; SeriesData2.prototype.getDimensionIndex = function(dim) { var dimIdx = this._recognizeDimIndex(dim); if (dimIdx != null) { return dimIdx; } if (dim == null) { return -1; } var dimInfo = this._getDimInfo(dim); return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1; }; SeriesData2.prototype._recognizeDimIndex = function(dim) { if (typeof dim === "number" || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) { return +dim; } }; SeriesData2.prototype._getStoreDimIndex = function(dim) { var dimIdx = this.getDimensionIndex(dim); return dimIdx; }; SeriesData2.prototype.getDimensionInfo = function(dim) { return this._getDimInfo(this.getDimension(dim)); }; SeriesData2.prototype._initGetDimensionInfo = function(needsHasOwn) { var dimensionInfos = this._dimInfos; this._getDimInfo = needsHasOwn ? function(dimName) { return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : void 0; } : function(dimName) { return dimensionInfos[dimName]; }; }; SeriesData2.prototype.getDimensionsOnCoord = function() { return this._dimSummary.dataDimsOnCoord.slice(); }; SeriesData2.prototype.mapDimension = function(coordDim, idx) { var dimensionsSummary = this._dimSummary; if (idx == null) { return dimensionsSummary.encodeFirstDimNotExtra[coordDim]; } var dims = dimensionsSummary.encode[coordDim]; return dims ? dims[idx] : null; }; SeriesData2.prototype.mapDimensionsAll = function(coordDim) { var dimensionsSummary = this._dimSummary; var dims = dimensionsSummary.encode[coordDim]; return (dims || []).slice(); }; SeriesData2.prototype.getStore = function() { return this._store; }; SeriesData2.prototype.initData = function(data, nameList, dimValueGetter) { var _this = this; var store; if (data instanceof DataStore$1) { store = data; } if (!store) { var dimensions = this.dimensions; var provider = isSourceInstance(data) || isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data; store = new DataStore$1(); var dimensionInfos = map(dimensions, function(dimName) { return { type: _this._dimInfos[dimName].type, property: dimName }; }); store.initData(provider, dimensionInfos, dimValueGetter); } this._store = store; this._nameList = (nameList || []).slice(); this._idList = []; this._nameRepeatCount = {}; this._doInit(0, store.count()); this._dimSummary = summarizeDimensions(this, this._schema); this.userOutput = this._dimSummary.userOutput; }; SeriesData2.prototype.appendData = function(data) { var range = this._store.appendData(data); this._doInit(range[0], range[1]); }; SeriesData2.prototype.appendValues = function(values, names) { var _a2 = this._store.appendValues(values, names.length), start2 = _a2.start, end2 = _a2.end; var shouldMakeIdFromName = this._shouldMakeIdFromName(); this._updateOrdinalMeta(); if (names) { for (var idx = start2; idx < end2; idx++) { var sourceIdx = idx - start2; this._nameList[idx] = names[sourceIdx]; if (shouldMakeIdFromName) { makeIdFromName(this, idx); } } } }; SeriesData2.prototype._updateOrdinalMeta = function() { var store = this._store; var dimensions = this.dimensions; for (var i = 0; i < dimensions.length; i++) { var dimInfo = this._dimInfos[dimensions[i]]; if (dimInfo.ordinalMeta) { store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta); } } }; SeriesData2.prototype._shouldMakeIdFromName = function() { var provider = this._store.getProvider(); return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage; }; SeriesData2.prototype._doInit = function(start2, end2) { if (start2 >= end2) { return; } var store = this._store; var provider = store.getProvider(); this._updateOrdinalMeta(); var nameList = this._nameList; var idList = this._idList; var sourceFormat = provider.getSource().sourceFormat; var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL; if (isFormatOriginal && !provider.pure) { var sharedDataItem = []; for (var idx = start2; idx < end2; idx++) { var dataItem = provider.getItem(idx, sharedDataItem); if (!this.hasItemOption && isDataItemOption(dataItem)) { this.hasItemOption = true; } if (dataItem) { var itemName = dataItem.name; if (nameList[idx] == null && itemName != null) { nameList[idx] = convertOptionIdName(itemName, null); } var itemId = dataItem.id; if (idList[idx] == null && itemId != null) { idList[idx] = convertOptionIdName(itemId, null); } } } } if (this._shouldMakeIdFromName()) { for (var idx = start2; idx < end2; idx++) { makeIdFromName(this, idx); } } prepareInvertedIndex(this); }; SeriesData2.prototype.getApproximateExtent = function(dim) { return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim)); }; SeriesData2.prototype.setApproximateExtent = function(extent3, dim) { dim = this.getDimension(dim); this._approximateExtent[dim] = extent3.slice(); }; SeriesData2.prototype.getCalculationInfo = function(key2) { return this._calculationInfo[key2]; }; SeriesData2.prototype.setCalculationInfo = function(key2, value) { isObject$1(key2) ? extend(this._calculationInfo, key2) : this._calculationInfo[key2] = value; }; SeriesData2.prototype.getName = function(idx) { var rawIndex = this.getRawIndex(idx); var name = this._nameList[rawIndex]; if (name == null && this._nameDimIdx != null) { name = getIdNameFromStore(this, this._nameDimIdx, rawIndex); } if (name == null) { name = ""; } return name; }; SeriesData2.prototype._getCategory = function(dimIdx, idx) { var ordinal = this._store.get(dimIdx, idx); var ordinalMeta = this._store.getOrdinalMeta(dimIdx); if (ordinalMeta) { return ordinalMeta.categories[ordinal]; } return ordinal; }; SeriesData2.prototype.getId = function(idx) { return getId(this, this.getRawIndex(idx)); }; SeriesData2.prototype.count = function() { return this._store.count(); }; SeriesData2.prototype.get = function(dim, idx) { var store = this._store; var dimInfo = this._dimInfos[dim]; if (dimInfo) { return store.get(dimInfo.storeDimIndex, idx); } }; SeriesData2.prototype.getByRawIndex = function(dim, rawIdx) { var store = this._store; var dimInfo = this._dimInfos[dim]; if (dimInfo) { return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx); } }; SeriesData2.prototype.getIndices = function() { return this._store.getIndices(); }; SeriesData2.prototype.getDataExtent = function(dim) { return this._store.getDataExtent(this._getStoreDimIndex(dim)); }; SeriesData2.prototype.getSum = function(dim) { return this._store.getSum(this._getStoreDimIndex(dim)); }; SeriesData2.prototype.getMedian = function(dim) { return this._store.getMedian(this._getStoreDimIndex(dim)); }; SeriesData2.prototype.getValues = function(dimensions, idx) { var _this = this; var store = this._store; return isArray$1(dimensions) ? store.getValues(map(dimensions, function(dim) { return _this._getStoreDimIndex(dim); }), idx) : store.getValues(dimensions); }; SeriesData2.prototype.hasValue = function(idx) { var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord; for (var i = 0, len2 = dataDimIndicesOnCoord.length; i < len2; i++) { if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) { return false; } } return true; }; SeriesData2.prototype.indexOfName = function(name) { for (var i = 0, len2 = this._store.count(); i < len2; i++) { if (this.getName(i) === name) { return i; } } return -1; }; SeriesData2.prototype.getRawIndex = function(idx) { return this._store.getRawIndex(idx); }; SeriesData2.prototype.indexOfRawIndex = function(rawIndex) { return this._store.indexOfRawIndex(rawIndex); }; SeriesData2.prototype.rawIndexOf = function(dim, value) { var invertedIndices = dim && this._invertedIndicesMap[dim]; var rawIndex = invertedIndices[value]; if (rawIndex == null || isNaN(rawIndex)) { return INDEX_NOT_FOUND; } return rawIndex; }; SeriesData2.prototype.indicesOfNearest = function(dim, value, maxDistance) { return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance); }; SeriesData2.prototype.each = function(dims, cb, ctx) { if (typeof dims === "function") { ctx = cb; cb = dims; dims = []; } var fCtx = ctx || this; var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); this._store.each(dimIndices, fCtx ? bind$2(cb, fCtx) : cb); }; SeriesData2.prototype.filterSelf = function(dims, cb, ctx) { if (typeof dims === "function") { ctx = cb; cb = dims; dims = []; } var fCtx = ctx || this; var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); this._store = this._store.filter(dimIndices, fCtx ? bind$2(cb, fCtx) : cb); return this; }; SeriesData2.prototype.selectRange = function(range) { var _this = this; var innerRange = {}; var dims = keys(range); each$g(dims, function(dim) { var dimIdx = _this._getStoreDimIndex(dim); innerRange[dimIdx] = range[dim]; }); this._store = this._store.selectRange(innerRange); return this; }; SeriesData2.prototype.mapArray = function(dims, cb, ctx) { if (typeof dims === "function") { ctx = cb; cb = dims; dims = []; } ctx = ctx || this; var result = []; this.each(dims, function() { result.push(cb && cb.apply(this, arguments)); }, ctx); return result; }; SeriesData2.prototype.map = function(dims, cb, ctx, ctxCompat) { var fCtx = ctx || ctxCompat || this; var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); var list2 = cloneListForMapAndSample(this); list2._store = this._store.map(dimIndices, fCtx ? bind$2(cb, fCtx) : cb); return list2; }; SeriesData2.prototype.modify = function(dims, cb, ctx, ctxCompat) { var fCtx = ctx || ctxCompat || this; var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); this._store.modify(dimIndices, fCtx ? bind$2(cb, fCtx) : cb); }; SeriesData2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { var list2 = cloneListForMapAndSample(this); list2._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex); return list2; }; SeriesData2.prototype.lttbDownSample = function(valueDimension, rate) { var list2 = cloneListForMapAndSample(this); list2._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate); return list2; }; SeriesData2.prototype.getRawDataItem = function(idx) { return this._store.getRawDataItem(idx); }; SeriesData2.prototype.getItemModel = function(idx) { var hostModel = this.hostModel; var dataItem = this.getRawDataItem(idx); return new Model$1(dataItem, hostModel, hostModel && hostModel.ecModel); }; SeriesData2.prototype.diff = function(otherList) { var thisList = this; return new DataDiffer$1(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function(idx) { return getId(otherList, idx); }, function(idx) { return getId(thisList, idx); }); }; SeriesData2.prototype.getVisual = function(key2) { var visual = this._visual; return visual && visual[key2]; }; SeriesData2.prototype.setVisual = function(kvObj, val) { this._visual = this._visual || {}; if (isObject$1(kvObj)) { extend(this._visual, kvObj); } else { this._visual[kvObj] = val; } }; SeriesData2.prototype.getItemVisual = function(idx, key2) { var itemVisual = this._itemVisuals[idx]; var val = itemVisual && itemVisual[key2]; if (val == null) { return this.getVisual(key2); } return val; }; SeriesData2.prototype.hasItemVisual = function() { return this._itemVisuals.length > 0; }; SeriesData2.prototype.ensureUniqueItemVisual = function(idx, key2) { var itemVisuals = this._itemVisuals; var itemVisual = itemVisuals[idx]; if (!itemVisual) { itemVisual = itemVisuals[idx] = {}; } var val = itemVisual[key2]; if (val == null) { val = this.getVisual(key2); if (isArray$1(val)) { val = val.slice(); } else if (isObject$1(val)) { val = extend({}, val); } itemVisual[key2] = val; } return val; }; SeriesData2.prototype.setItemVisual = function(idx, key2, value) { var itemVisual = this._itemVisuals[idx] || {}; this._itemVisuals[idx] = itemVisual; if (isObject$1(key2)) { extend(itemVisual, key2); } else { itemVisual[key2] = value; } }; SeriesData2.prototype.clearAllVisual = function() { this._visual = {}; this._itemVisuals = []; }; SeriesData2.prototype.setLayout = function(key2, val) { if (isObject$1(key2)) { for (var name_1 in key2) { if (key2.hasOwnProperty(name_1)) { this.setLayout(name_1, key2[name_1]); } } return; } this._layout[key2] = val; }; SeriesData2.prototype.getLayout = function(key2) { return this._layout[key2]; }; SeriesData2.prototype.getItemLayout = function(idx) { return this._itemLayouts[idx]; }; SeriesData2.prototype.setItemLayout = function(idx, layout2, merge2) { this._itemLayouts[idx] = merge2 ? extend(this._itemLayouts[idx] || {}, layout2) : layout2; }; SeriesData2.prototype.clearItemLayouts = function() { this._itemLayouts.length = 0; }; SeriesData2.prototype.setItemGraphicEl = function(idx, el) { var seriesIndex = this.hostModel && this.hostModel.seriesIndex; setCommonECData(seriesIndex, this.dataType, idx, el); this._graphicEls[idx] = el; }; SeriesData2.prototype.getItemGraphicEl = function(idx) { return this._graphicEls[idx]; }; SeriesData2.prototype.eachItemGraphicEl = function(cb, context) { each$g(this._graphicEls, function(el, idx) { if (el) { cb && cb.call(context, el, idx); } }); }; SeriesData2.prototype.cloneShallow = function(list2) { if (!list2) { list2 = new SeriesData2(this._schema ? this._schema : map(this.dimensions, this._getDimInfo, this), this.hostModel); } transferProperties(list2, this); list2._store = this._store; return list2; }; SeriesData2.prototype.wrapMethod = function(methodName, injectFunction) { var originalMethod = this[methodName]; if (typeof originalMethod !== "function") { return; } this.__wrappedMethods = this.__wrappedMethods || []; this.__wrappedMethods.push(methodName); this[methodName] = function() { var res = originalMethod.apply(this, arguments); return injectFunction.apply(this, [res].concat(slice(arguments))); }; }; SeriesData2.internalField = function() { prepareInvertedIndex = function(data) { var invertedIndicesMap = data._invertedIndicesMap; each$g(invertedIndicesMap, function(invertedIndices, dim) { var dimInfo = data._dimInfos[dim]; var ordinalMeta = dimInfo.ordinalMeta; var store = data._store; if (ordinalMeta) { invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); for (var i = 0; i < invertedIndices.length; i++) { invertedIndices[i] = INDEX_NOT_FOUND; } for (var i = 0; i < store.count(); i++) { invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i; } } }); }; getIdNameFromStore = function(data, dimIdx, idx) { return convertOptionIdName(data._getCategory(dimIdx, idx), null); }; getId = function(data, rawIndex) { var id = data._idList[rawIndex]; if (id == null && data._idDimIdx != null) { id = getIdNameFromStore(data, data._idDimIdx, rawIndex); } if (id == null) { id = ID_PREFIX + rawIndex; } return id; }; normalizeDimensions = function(dimensions) { if (!isArray$1(dimensions)) { dimensions = dimensions != null ? [dimensions] : []; } return dimensions; }; cloneListForMapAndSample = function(original) { var list2 = new SeriesData2(original._schema ? original._schema : map(original.dimensions, original._getDimInfo, original), original.hostModel); transferProperties(list2, original); return list2; }; transferProperties = function(target, source) { each$g(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function(propName) { if (source.hasOwnProperty(propName)) { target[propName] = source[propName]; } }); target.__wrappedMethods = source.__wrappedMethods; each$g(CLONE_PROPERTIES, function(propName) { target[propName] = clone$4(source[propName]); }); target._calculationInfo = extend({}, source._calculationInfo); }; makeIdFromName = function(data, idx) { var nameList = data._nameList; var idList = data._idList; var nameDimIdx = data._nameDimIdx; var idDimIdx = data._idDimIdx; var name = nameList[idx]; var id = idList[idx]; if (name == null && nameDimIdx != null) { nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx); } if (id == null && idDimIdx != null) { idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx); } if (id == null && name != null) { var nameRepeatCount = data._nameRepeatCount; var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1; id = name; if (nmCnt > 1) { id += "__ec__" + nmCnt; } idList[idx] = id; } }; }(); return SeriesData2; }(); var SeriesData$1 = SeriesData; function createDimensions(source, opt) { return prepareSeriesDataSchema(source, opt).dimensions; } function prepareSeriesDataSchema(source, opt) { if (!isSourceInstance(source)) { source = createSourceFromSeriesDataOption(source); } opt = opt || {}; var sysDims = opt.coordDimensions || []; var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || []; var coordDimNameMap = createHashMap(); var resultList = []; var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount); var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount); var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine; var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef); var encodeDef = opt.encodeDefine; if (!encodeDef && opt.encodeDefaulter) { encodeDef = opt.encodeDefaulter(source, dimCount); } var encodeDefMap = createHashMap(encodeDef); var indicesMap = new CtorInt32Array$1(dimCount); for (var i = 0; i < indicesMap.length; i++) { indicesMap[i] = -1; } function getResultItem(dimIdx) { var idx = indicesMap[dimIdx]; if (idx < 0) { var dimDefItemRaw = dimsDef[dimIdx]; var dimDefItem = isObject$3(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw }; var resultItem2 = new SeriesDimensionDefine$1(); var userDimName = dimDefItem.name; if (userDimName != null && dataDimNameMap.get(userDimName) != null) { resultItem2.name = resultItem2.displayName = userDimName; } dimDefItem.type != null && (resultItem2.type = dimDefItem.type); dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName); var newIdx = resultList.length; indicesMap[dimIdx] = newIdx; resultItem2.storeDimIndex = dimIdx; resultList.push(resultItem2); return resultItem2; } return resultList[idx]; } if (!omitUnusedDimensions) { for (var i = 0; i < dimCount; i++) { getResultItem(i); } } encodeDefMap.each(function(dataDimsRaw, coordDim2) { var dataDims = normalizeToArray(dataDimsRaw).slice(); if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) { encodeDefMap.set(coordDim2, false); return; } var validDataDims = encodeDefMap.set(coordDim2, []); each$g(dataDims, function(resultDimIdxOrName, idx) { var resultDimIdx2 = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName; if (resultDimIdx2 != null && resultDimIdx2 < dimCount) { validDataDims[idx] = resultDimIdx2; applyDim(getResultItem(resultDimIdx2), coordDim2, idx); } }); }); var availDimIdx = 0; each$g(sysDims, function(sysDimItemRaw) { var coordDim2; var sysDimItemDimsDef; var sysDimItemOtherDims; var sysDimItem; if (isString(sysDimItemRaw)) { coordDim2 = sysDimItemRaw; sysDimItem = {}; } else { sysDimItem = sysDimItemRaw; coordDim2 = sysDimItem.name; var ordinalMeta = sysDimItem.ordinalMeta; sysDimItem.ordinalMeta = null; sysDimItem = extend({}, sysDimItem); sysDimItem.ordinalMeta = ordinalMeta; sysDimItemDimsDef = sysDimItem.dimsDef; sysDimItemOtherDims = sysDimItem.otherDims; sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null; } var dataDims = encodeDefMap.get(coordDim2); if (dataDims === false) { return; } dataDims = normalizeToArray(dataDims); if (!dataDims.length) { for (var i2 = 0; i2 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i2++) { while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) { availDimIdx++; } availDimIdx < dimCount && dataDims.push(availDimIdx++); } } each$g(dataDims, function(resultDimIdx2, coordDimIndex) { var resultItem2 = getResultItem(resultDimIdx2); if (isUsingSourceDimensionsDef && sysDimItem.type != null) { resultItem2.type = sysDimItem.type; } applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex); if (resultItem2.name == null && sysDimItemDimsDef) { var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex]; !isObject$3(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem }); resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name; resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip; } sysDimItemOtherDims && defaults(resultItem2.otherDims, sysDimItemOtherDims); }); }); function applyDim(resultItem2, coordDim2, coordDimIndex) { if (VISUAL_DIMENSIONS.get(coordDim2) != null) { resultItem2.otherDims[coordDim2] = coordDimIndex; } else { resultItem2.coordDim = coordDim2; resultItem2.coordDimIndex = coordDimIndex; coordDimNameMap.set(coordDim2, true); } } var generateCoord = opt.generateCoord; var generateCoordCount = opt.generateCoordCount; var fromZero = generateCoordCount != null; generateCoordCount = generateCoord ? generateCoordCount || 1 : 0; var extra = generateCoord || "value"; function ifNoNameFillWithCoordName(resultItem2) { if (resultItem2.name == null) { resultItem2.name = resultItem2.coordDim; } } if (!omitUnusedDimensions) { for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) { var resultItem = getResultItem(resultDimIdx); var coordDim = resultItem.coordDim; if (coordDim == null) { resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero); resultItem.coordDimIndex = 0; if (!generateCoord || generateCoordCount <= 0) { resultItem.isExtraCoord = true; } generateCoordCount--; } ifNoNameFillWithCoordName(resultItem); if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) { resultItem.type = "ordinal"; } } } else { each$g(resultList, function(resultItem2) { ifNoNameFillWithCoordName(resultItem2); }); resultList.sort(function(item0, item1) { return item0.storeDimIndex - item1.storeDimIndex; }); } removeDuplication(resultList); return new SeriesDataSchema({ source, dimensions: resultList, fullDimensionCount: dimCount, dimensionOmitted: omitUnusedDimensions }); } function removeDuplication(result) { var duplicationMap = createHashMap(); for (var i = 0; i < result.length; i++) { var dim = result[i]; var dimOriginalName = dim.name; var count2 = duplicationMap.get(dimOriginalName) || 0; if (count2 > 0) { dim.name = dimOriginalName + (count2 - 1); } count2++; duplicationMap.set(dimOriginalName, count2); } } function getDimCount(source, sysDims, dimsDef, optDimCount) { var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0); each$g(sysDims, function(sysDimItem) { var sysDimItemDimsDef; if (isObject$3(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) { dimCount = Math.max(dimCount, sysDimItemDimsDef.length); } }); return dimCount; } function genCoordDimName(name, map2, fromZero) { var mapData = map2.data; if (fromZero || mapData.hasOwnProperty(name)) { var i = 0; while (mapData.hasOwnProperty(name + i)) { i++; } name += i; } map2.set(name, true); return name; } var CoordSysInfo = function() { function CoordSysInfo2(coordSysName) { this.coordSysDims = []; this.axisMap = createHashMap(); this.categoryAxisMap = createHashMap(); this.coordSysName = coordSysName; } return CoordSysInfo2; }(); function getCoordSysInfoBySeries(seriesModel) { var coordSysName = seriesModel.get("coordinateSystem"); var result = new CoordSysInfo(coordSysName); var fetch = fetchers[coordSysName]; if (fetch) { fetch(seriesModel, result, result.axisMap, result.categoryAxisMap); return result; } } var fetchers = { cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) { var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0]; var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0]; result.coordSysDims = ["x", "y"]; axisMap.set("x", xAxisModel); axisMap.set("y", yAxisModel); if (isCategory(xAxisModel)) { categoryAxisMap.set("x", xAxisModel); result.firstCategoryDimIndex = 0; } if (isCategory(yAxisModel)) { categoryAxisMap.set("y", yAxisModel); result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); } }, singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) { var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; result.coordSysDims = ["single"]; axisMap.set("single", singleAxisModel); if (isCategory(singleAxisModel)) { categoryAxisMap.set("single", singleAxisModel); result.firstCategoryDimIndex = 0; } }, polar: function(seriesModel, result, axisMap, categoryAxisMap) { var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0]; var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); var angleAxisModel = polarModel.findAxisModel("angleAxis"); result.coordSysDims = ["radius", "angle"]; axisMap.set("radius", radiusAxisModel); axisMap.set("angle", angleAxisModel); if (isCategory(radiusAxisModel)) { categoryAxisMap.set("radius", radiusAxisModel); result.firstCategoryDimIndex = 0; } if (isCategory(angleAxisModel)) { categoryAxisMap.set("angle", angleAxisModel); result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); } }, geo: function(seriesModel, result, axisMap, categoryAxisMap) { result.coordSysDims = ["lng", "lat"]; }, parallel: function(seriesModel, result, axisMap, categoryAxisMap) { var ecModel = seriesModel.ecModel; var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice(); each$g(parallelModel.parallelAxisIndex, function(axisIndex, index) { var axisModel = ecModel.getComponent("parallelAxis", axisIndex); var axisDim = coordSysDims[index]; axisMap.set(axisDim, axisModel); if (isCategory(axisModel)) { categoryAxisMap.set(axisDim, axisModel); if (result.firstCategoryDimIndex == null) { result.firstCategoryDimIndex = index; } } }); } }; function isCategory(axisModel) { return axisModel.get("type") === "category"; } function enableDataStack(seriesModel, dimensionsInput, opt) { opt = opt || {}; var byIndex = opt.byIndex; var stackedCoordDimension = opt.stackedCoordDimension; var dimensionDefineList; var schema; var store; if (isLegacyDimensionsInput(dimensionsInput)) { dimensionDefineList = dimensionsInput; } else { schema = dimensionsInput.schema; dimensionDefineList = schema.dimensions; store = dimensionsInput.store; } var mayStack = !!(seriesModel && seriesModel.get("stack")); var stackedByDimInfo; var stackedDimInfo; var stackResultDimension; var stackedOverDimension; each$g(dimensionDefineList, function(dimensionInfo, index) { if (isString(dimensionInfo)) { dimensionDefineList[index] = dimensionInfo = { name: dimensionInfo }; } if (mayStack && !dimensionInfo.isExtraCoord) { if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { stackedByDimInfo = dimensionInfo; } if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) { stackedDimInfo = dimensionInfo; } } }); if (stackedDimInfo && !byIndex && !stackedByDimInfo) { byIndex = true; } if (stackedDimInfo) { stackResultDimension = "__\0ecstackresult_" + seriesModel.id; stackedOverDimension = "__\0ecstackedover_" + seriesModel.id; if (stackedByDimInfo) { stackedByDimInfo.createInvertedIndices = true; } var stackedDimCoordDim_1 = stackedDimInfo.coordDim; var stackedDimType = stackedDimInfo.type; var stackedDimCoordIndex_1 = 0; each$g(dimensionDefineList, function(dimensionInfo) { if (dimensionInfo.coordDim === stackedDimCoordDim_1) { stackedDimCoordIndex_1++; } }); var stackedOverDimensionDefine = { name: stackResultDimension, coordDim: stackedDimCoordDim_1, coordDimIndex: stackedDimCoordIndex_1, type: stackedDimType, isExtraCoord: true, isCalculationCoord: true, storeDimIndex: dimensionDefineList.length }; var stackResultDimensionDefine = { name: stackedOverDimension, coordDim: stackedOverDimension, coordDimIndex: stackedDimCoordIndex_1 + 1, type: stackedDimType, isExtraCoord: true, isCalculationCoord: true, storeDimIndex: dimensionDefineList.length + 1 }; if (schema) { if (store) { stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType); stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType); } schema.appendCalculationDimension(stackedOverDimensionDefine); schema.appendCalculationDimension(stackResultDimensionDefine); } else { dimensionDefineList.push(stackedOverDimensionDefine); dimensionDefineList.push(stackResultDimensionDefine); } } return { stackedDimension: stackedDimInfo && stackedDimInfo.name, stackedByDimension: stackedByDimInfo && stackedByDimInfo.name, isStackedByIndex: byIndex, stackedOverDimension, stackResultDimension }; } function isLegacyDimensionsInput(dimensionsInput) { return !isSeriesDataSchema(dimensionsInput.schema); } function isDimensionStacked(data, stackedDim) { return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension"); } function getStackedDimension(data, targetDim) { return isDimensionStacked(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim; } function getCoordSysDimDefs(seriesModel, coordSysInfo) { var coordSysName = seriesModel.get("coordinateSystem"); var registeredCoordSys = CoordinateSystem.get(coordSysName); var coordSysDimDefs; if (coordSysInfo && coordSysInfo.coordSysDims) { coordSysDimDefs = map$1(coordSysInfo.coordSysDims, function(dim) { var dimInfo = { name: dim }; var axisModel = coordSysInfo.axisMap.get(dim); if (axisModel) { var axisType = axisModel.get("type"); dimInfo.type = getDimensionTypeByAxis(axisType); } return dimInfo; }); } if (!coordSysDimDefs) { coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"]; } return coordSysDimDefs; } function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) { var firstCategoryDimIndex; var hasNameEncode; coordSysInfo && each$g(dimInfoList, function(dimInfo, dimIndex) { var coordDim = dimInfo.coordDim; var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim); if (categoryAxisModel) { if (firstCategoryDimIndex == null) { firstCategoryDimIndex = dimIndex; } dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta(); if (createInvertedIndices) { dimInfo.createInvertedIndices = true; } } if (dimInfo.otherDims.itemName != null) { hasNameEncode = true; } }); if (!hasNameEncode && firstCategoryDimIndex != null) { dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0; } return firstCategoryDimIndex; } function createSeriesData(sourceRaw, seriesModel, opt) { opt = opt || {}; var sourceManager = seriesModel.getSourceManager(); var source; var isOriginalSource = false; if (sourceRaw) { isOriginalSource = true; source = createSourceFromSeriesDataOption(sourceRaw); } else { source = sourceManager.getSource(); isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL; } var coordSysInfo = getCoordSysInfoBySeries(seriesModel); var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo); var useEncodeDefaulter = opt.useEncodeDefaulter; var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry$1(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null; var createDimensionOptions = { coordDimensions: coordSysDimDefs, generateCoord: opt.generateCoord, encodeDefine: seriesModel.getEncode(), encodeDefaulter, canOmitUnusedDimensions: !isOriginalSource }; var schema = prepareSeriesDataSchema(source, createDimensionOptions); var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo); var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null; var stackCalculationInfo = enableDataStack(seriesModel, { schema, store }); var data = new SeriesData$1(schema, seriesModel); data.setCalculationInfo(stackCalculationInfo); var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) { return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex); } : null; data.hasItemOption = false; data.initData(isOriginalSource ? source : store, null, dimValueGetter); return data; } function isNeedCompleteOrdinalData(source) { if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) { var sampleItem = firstDataNotNull(source.data || []); return sampleItem != null && !isArray$1(getDataItemValue(sampleItem)); } } function firstDataNotNull(arr) { var i = 0; while (i < arr.length && arr[i] == null) { i++; } return arr[i]; } var Scale = function() { function Scale2(setting2) { this._setting = setting2 || {}; this._extent = [Infinity, -Infinity]; } Scale2.prototype.getSetting = function(name) { return this._setting[name]; }; Scale2.prototype.unionExtent = function(other) { var extent3 = this._extent; other[0] < extent3[0] && (extent3[0] = other[0]); other[1] > extent3[1] && (extent3[1] = other[1]); }; Scale2.prototype.unionExtentFromData = function(data, dim) { this.unionExtent(data.getApproximateExtent(dim)); }; Scale2.prototype.getExtent = function() { return this._extent.slice(); }; Scale2.prototype.setExtent = function(start2, end2) { var thisExtent = this._extent; if (!isNaN(start2)) { thisExtent[0] = start2; } if (!isNaN(end2)) { thisExtent[1] = end2; } }; Scale2.prototype.isInExtentRange = function(value) { return this._extent[0] <= value && this._extent[1] >= value; }; Scale2.prototype.isBlank = function() { return this._isBlank; }; Scale2.prototype.setBlank = function(isBlank) { this._isBlank = isBlank; }; return Scale2; }(); enableClassManagement(Scale); var Scale$1 = Scale; var uidBase = 0; var OrdinalMeta = function() { function OrdinalMeta2(opt) { this.categories = opt.categories || []; this._needCollect = opt.needCollect; this._deduplication = opt.deduplication; this.uid = ++uidBase; } OrdinalMeta2.createByAxisModel = function(axisModel) { var option = axisModel.option; var data = option.data; var categories = data && map$1(data, getName); return new OrdinalMeta2({ categories, needCollect: !categories, deduplication: option.dedplication !== false }); }; OrdinalMeta2.prototype.getOrdinal = function(category) { return this._getOrCreateMap().get(category); }; OrdinalMeta2.prototype.parseAndCollect = function(category) { var index; var needCollect = this._needCollect; if (typeof category !== "string" && !needCollect) { return category; } if (needCollect && !this._deduplication) { index = this.categories.length; this.categories[index] = category; return index; } var map2 = this._getOrCreateMap(); index = map2.get(category); if (index == null) { if (needCollect) { index = this.categories.length; this.categories[index] = category; map2.set(category, index); } else { index = NaN; } } return index; }; OrdinalMeta2.prototype._getOrCreateMap = function() { return this._map || (this._map = createHashMap(this.categories)); }; return OrdinalMeta2; }(); function getName(obj) { if (isObject$3(obj) && obj.value != null) { return obj.value; } else { return obj + ""; } } var OrdinalMeta$1 = OrdinalMeta; var roundNumber$1 = round$2; function intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval) { var result = {}; var span = extent3[1] - extent3[0]; var interval = result.interval = nice(span / splitNumber, true); if (minInterval != null && interval < minInterval) { interval = result.interval = minInterval; } if (maxInterval != null && interval > maxInterval) { interval = result.interval = maxInterval; } var precision = result.intervalPrecision = getIntervalPrecision(interval); var niceTickExtent = result.niceTickExtent = [roundNumber$1(Math.ceil(extent3[0] / interval) * interval, precision), roundNumber$1(Math.floor(extent3[1] / interval) * interval, precision)]; fixExtent(niceTickExtent, extent3); return result; } function getIntervalPrecision(interval) { return getPrecision(interval) + 2; } function clamp(niceTickExtent, idx, extent3) { niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent3[1]), extent3[0]); } function fixExtent(niceTickExtent, extent3) { !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent3[0]); !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent3[1]); clamp(niceTickExtent, 0, extent3); clamp(niceTickExtent, 1, extent3); if (niceTickExtent[0] > niceTickExtent[1]) { niceTickExtent[0] = niceTickExtent[1]; } } function contain(val, extent3) { return val >= extent3[0] && val <= extent3[1]; } function normalize$2(val, extent3) { if (extent3[1] === extent3[0]) { return 0.5; } return (val - extent3[0]) / (extent3[1] - extent3[0]); } function scale(val, extent3) { return val * (extent3[1] - extent3[0]) + extent3[0]; } var OrdinalScale = function(_super) { __extends$1(OrdinalScale2, _super); function OrdinalScale2(setting2) { var _this = _super.call(this, setting2) || this; _this.type = "ordinal"; var ordinalMeta = _this.getSetting("ordinalMeta"); if (!ordinalMeta) { ordinalMeta = new OrdinalMeta$1({}); } if (isArray$1(ordinalMeta)) { ordinalMeta = new OrdinalMeta$1({ categories: map$1(ordinalMeta, function(item) { return isObject$3(item) ? item.value : item; }) }); } _this._ordinalMeta = ordinalMeta; _this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1]; return _this; } OrdinalScale2.prototype.parse = function(val) { return typeof val === "string" ? this._ordinalMeta.getOrdinal(val) : Math.round(val); }; OrdinalScale2.prototype.contain = function(rank2) { rank2 = this.parse(rank2); return contain(rank2, this._extent) && this._ordinalMeta.categories[rank2] != null; }; OrdinalScale2.prototype.normalize = function(val) { val = this._getTickNumber(this.parse(val)); return normalize$2(val, this._extent); }; OrdinalScale2.prototype.scale = function(val) { val = Math.round(scale(val, this._extent)); return this.getRawOrdinalNumber(val); }; OrdinalScale2.prototype.getTicks = function() { var ticks = []; var extent3 = this._extent; var rank2 = extent3[0]; while (rank2 <= extent3[1]) { ticks.push({ value: rank2 }); rank2++; } return ticks; }; OrdinalScale2.prototype.getMinorTicks = function(splitNumber) { return; }; OrdinalScale2.prototype.setSortInfo = function(info) { if (info == null) { this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null; return; } var infoOrdinalNumbers = info.ordinalNumbers; var ordinalsByTick = this._ordinalNumbersByTick = []; var ticksByOrdinal = this._ticksByOrdinalNumber = []; var tickNum = 0; var allCategoryLen = this._ordinalMeta.categories.length; for (var len2 = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len2; ++tickNum) { var ordinalNumber = infoOrdinalNumbers[tickNum]; ordinalsByTick[tickNum] = ordinalNumber; ticksByOrdinal[ordinalNumber] = tickNum; } var unusedOrdinal = 0; for (; tickNum < allCategoryLen; ++tickNum) { while (ticksByOrdinal[unusedOrdinal] != null) { unusedOrdinal++; } ordinalsByTick.push(unusedOrdinal); ticksByOrdinal[unusedOrdinal] = tickNum; } }; OrdinalScale2.prototype._getTickNumber = function(ordinal) { var ticksByOrdinalNumber = this._ticksByOrdinalNumber; return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal; }; OrdinalScale2.prototype.getRawOrdinalNumber = function(tickNumber) { var ordinalNumbersByTick = this._ordinalNumbersByTick; return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber; }; OrdinalScale2.prototype.getLabel = function(tick) { if (!this.isBlank()) { var ordinalNumber = this.getRawOrdinalNumber(tick.value); var cateogry = this._ordinalMeta.categories[ordinalNumber]; return cateogry == null ? "" : cateogry + ""; } }; OrdinalScale2.prototype.count = function() { return this._extent[1] - this._extent[0] + 1; }; OrdinalScale2.prototype.unionExtentFromData = function(data, dim) { this.unionExtent(data.getApproximateExtent(dim)); }; OrdinalScale2.prototype.isInExtentRange = function(value) { value = this._getTickNumber(value); return this._extent[0] <= value && this._extent[1] >= value; }; OrdinalScale2.prototype.getOrdinalMeta = function() { return this._ordinalMeta; }; OrdinalScale2.prototype.niceTicks = function() { }; OrdinalScale2.prototype.niceExtent = function() { }; OrdinalScale2.type = "ordinal"; return OrdinalScale2; }(Scale$1); Scale$1.registerClass(OrdinalScale); var OrdinalScale$1 = OrdinalScale; var roundNumber = round$2; var IntervalScale = function(_super) { __extends$1(IntervalScale2, _super); function IntervalScale2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "interval"; _this._interval = 0; _this._intervalPrecision = 2; return _this; } IntervalScale2.prototype.parse = function(val) { return val; }; IntervalScale2.prototype.contain = function(val) { return contain(val, this._extent); }; IntervalScale2.prototype.normalize = function(val) { return normalize$2(val, this._extent); }; IntervalScale2.prototype.scale = function(val) { return scale(val, this._extent); }; IntervalScale2.prototype.setExtent = function(start2, end2) { var thisExtent = this._extent; if (!isNaN(start2)) { thisExtent[0] = parseFloat(start2); } if (!isNaN(end2)) { thisExtent[1] = parseFloat(end2); } }; IntervalScale2.prototype.unionExtent = function(other) { var extent3 = this._extent; other[0] < extent3[0] && (extent3[0] = other[0]); other[1] > extent3[1] && (extent3[1] = other[1]); this.setExtent(extent3[0], extent3[1]); }; IntervalScale2.prototype.getInterval = function() { return this._interval; }; IntervalScale2.prototype.setInterval = function(interval) { this._interval = interval; this._niceExtent = this._extent.slice(); this._intervalPrecision = getIntervalPrecision(interval); }; IntervalScale2.prototype.getTicks = function(expandToNicedExtent) { var interval = this._interval; var extent3 = this._extent; var niceTickExtent = this._niceExtent; var intervalPrecision = this._intervalPrecision; var ticks = []; if (!interval) { return ticks; } var safeLimit = 1e4; if (extent3[0] < niceTickExtent[0]) { if (expandToNicedExtent) { ticks.push({ value: roundNumber(niceTickExtent[0] - interval, intervalPrecision) }); } else { ticks.push({ value: extent3[0] }); } } var tick = niceTickExtent[0]; while (tick <= niceTickExtent[1]) { ticks.push({ value: tick }); tick = roundNumber(tick + interval, intervalPrecision); if (tick === ticks[ticks.length - 1].value) { break; } if (ticks.length > safeLimit) { return []; } } var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1]; if (extent3[1] > lastNiceTick) { if (expandToNicedExtent) { ticks.push({ value: roundNumber(lastNiceTick + interval, intervalPrecision) }); } else { ticks.push({ value: extent3[1] }); } } return ticks; }; IntervalScale2.prototype.getMinorTicks = function(splitNumber) { var ticks = this.getTicks(true); var minorTicks = []; var extent3 = this.getExtent(); for (var i = 1; i < ticks.length; i++) { var nextTick2 = ticks[i]; var prevTick = ticks[i - 1]; var count2 = 0; var minorTicksGroup = []; var interval = nextTick2.value - prevTick.value; var minorInterval = interval / splitNumber; while (count2 < splitNumber - 1) { var minorTick = roundNumber(prevTick.value + (count2 + 1) * minorInterval); if (minorTick > extent3[0] && minorTick < extent3[1]) { minorTicksGroup.push(minorTick); } count2++; } minorTicks.push(minorTicksGroup); } return minorTicks; }; IntervalScale2.prototype.getLabel = function(data, opt) { if (data == null) { return ""; } var precision = opt && opt.precision; if (precision == null) { precision = getPrecision(data.value) || 0; } else if (precision === "auto") { precision = this._intervalPrecision; } var dataNum = roundNumber(data.value, precision, true); return addCommas(dataNum); }; IntervalScale2.prototype.niceTicks = function(splitNumber, minInterval, maxInterval) { splitNumber = splitNumber || 5; var extent3 = this._extent; var span = extent3[1] - extent3[0]; if (!isFinite(span)) { return; } if (span < 0) { span = -span; extent3.reverse(); } var result = intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval); this._intervalPrecision = result.intervalPrecision; this._interval = result.interval; this._niceExtent = result.niceTickExtent; }; IntervalScale2.prototype.niceExtent = function(opt) { var extent3 = this._extent; if (extent3[0] === extent3[1]) { if (extent3[0] !== 0) { var expandSize = extent3[0]; if (!opt.fixMax) { extent3[1] += expandSize / 2; extent3[0] -= expandSize / 2; } else { extent3[0] -= expandSize / 2; } } else { extent3[1] = 1; } } var span = extent3[1] - extent3[0]; if (!isFinite(span)) { extent3[0] = 0; extent3[1] = 1; } this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); var interval = this._interval; if (!opt.fixMin) { extent3[0] = roundNumber(Math.floor(extent3[0] / interval) * interval); } if (!opt.fixMax) { extent3[1] = roundNumber(Math.ceil(extent3[1] / interval) * interval); } }; IntervalScale2.type = "interval"; return IntervalScale2; }(Scale$1); Scale$1.registerClass(IntervalScale); var IntervalScale$1 = IntervalScale; var STACK_PREFIX = "__ec_stack_"; var LARGE_BAR_MIN_WIDTH = 0.5; var LargeArr$1 = typeof Float32Array !== "undefined" ? Float32Array : Array; function getSeriesStackId$1(seriesModel) { return seriesModel.get("stack") || STACK_PREFIX + seriesModel.seriesIndex; } function getAxisKey$1(axis) { return axis.dim + axis.index; } function getLayoutOnAxis(opt) { var params = []; var baseAxis = opt.axis; var axisKey = "axis0"; if (baseAxis.type !== "category") { return; } var bandWidth = baseAxis.getBandWidth(); for (var i = 0; i < opt.count || 0; i++) { params.push(defaults({ bandWidth, axisKey, stackId: STACK_PREFIX + i }, opt)); } var widthAndOffsets = doCalBarWidthAndOffset(params); var result = []; for (var i = 0; i < opt.count; i++) { var item = widthAndOffsets[axisKey][STACK_PREFIX + i]; item.offsetCenter = item.offset + item.width / 2; result.push(item); } return result; } function prepareLayoutBarSeries(seriesType2, ecModel) { var seriesModels = []; ecModel.eachSeriesByType(seriesType2, function(seriesModel) { if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) { seriesModels.push(seriesModel); } }); return seriesModels; } function getValueAxesMinGaps(barSeries) { var axisValues = {}; each$g(barSeries, function(seriesModel) { var cartesian = seriesModel.coordinateSystem; var baseAxis = cartesian.getBaseAxis(); if (baseAxis.type !== "time" && baseAxis.type !== "value") { return; } var data = seriesModel.getData(); var key3 = baseAxis.dim + "_" + baseAxis.index; var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); var store = data.getStore(); for (var i = 0, cnt = store.count(); i < cnt; ++i) { var value = store.get(dimIdx, i); if (!axisValues[key3]) { axisValues[key3] = [value]; } else { axisValues[key3].push(value); } } }); var axisMinGaps = {}; for (var key2 in axisValues) { if (axisValues.hasOwnProperty(key2)) { var valuesInAxis = axisValues[key2]; if (valuesInAxis) { valuesInAxis.sort(function(a, b) { return a - b; }); var min3 = null; for (var j = 1; j < valuesInAxis.length; ++j) { var delta = valuesInAxis[j] - valuesInAxis[j - 1]; if (delta > 0) { min3 = min3 === null ? delta : Math.min(min3, delta); } } axisMinGaps[key2] = min3; } } } return axisMinGaps; } function makeColumnLayout(barSeries) { var axisMinGaps = getValueAxesMinGaps(barSeries); var seriesInfoList = []; each$g(barSeries, function(seriesModel) { var cartesian = seriesModel.coordinateSystem; var baseAxis = cartesian.getBaseAxis(); var axisExtent = baseAxis.getExtent(); var bandWidth; if (baseAxis.type === "category") { bandWidth = baseAxis.getBandWidth(); } else if (baseAxis.type === "value" || baseAxis.type === "time") { var key2 = baseAxis.dim + "_" + baseAxis.index; var minGap = axisMinGaps[key2]; var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]); var scale2 = baseAxis.scale.getExtent(); var scaleSpan = Math.abs(scale2[1] - scale2[0]); bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; } else { var data = seriesModel.getData(); bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); } var barWidth = parsePercent$1(seriesModel.get("barWidth"), bandWidth); var barMaxWidth = parsePercent$1(seriesModel.get("barMaxWidth"), bandWidth); var barMinWidth = parsePercent$1(seriesModel.get("barMinWidth") || 1, bandWidth); var barGap = seriesModel.get("barGap"); var barCategoryGap = seriesModel.get("barCategoryGap"); seriesInfoList.push({ bandWidth, barWidth, barMaxWidth, barMinWidth, barGap, barCategoryGap, axisKey: getAxisKey$1(baseAxis), stackId: getSeriesStackId$1(seriesModel) }); }); return doCalBarWidthAndOffset(seriesInfoList); } function doCalBarWidthAndOffset(seriesInfoList) { var columnsMap = {}; each$g(seriesInfoList, function(seriesInfo, idx) { var axisKey = seriesInfo.axisKey; var bandWidth = seriesInfo.bandWidth; var columnsOnAxis = columnsMap[axisKey] || { bandWidth, remainedWidth: bandWidth, autoWidthCount: 0, categoryGap: null, gap: "20%", stacks: {} }; var stacks = columnsOnAxis.stacks; columnsMap[axisKey] = columnsOnAxis; var stackId = seriesInfo.stackId; if (!stacks[stackId]) { columnsOnAxis.autoWidthCount++; } stacks[stackId] = stacks[stackId] || { width: 0, maxWidth: 0 }; var barWidth = seriesInfo.barWidth; if (barWidth && !stacks[stackId].width) { stacks[stackId].width = barWidth; barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); columnsOnAxis.remainedWidth -= barWidth; } var barMaxWidth = seriesInfo.barMaxWidth; barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); var barMinWidth = seriesInfo.barMinWidth; barMinWidth && (stacks[stackId].minWidth = barMinWidth); var barGap = seriesInfo.barGap; barGap != null && (columnsOnAxis.gap = barGap); var barCategoryGap = seriesInfo.barCategoryGap; barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); }); var result = {}; each$g(columnsMap, function(columnsOnAxis, coordSysName) { result[coordSysName] = {}; var stacks = columnsOnAxis.stacks; var bandWidth = columnsOnAxis.bandWidth; var categoryGapPercent = columnsOnAxis.categoryGap; if (categoryGapPercent == null) { var columnCount = keys(stacks).length; categoryGapPercent = Math.max(35 - columnCount * 4, 15) + "%"; } var categoryGap = parsePercent$1(categoryGapPercent, bandWidth); var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); var remainedWidth = columnsOnAxis.remainedWidth; var autoWidthCount = columnsOnAxis.autoWidthCount; var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); autoWidth = Math.max(autoWidth, 0); each$g(stacks, function(column) { var maxWidth = column.maxWidth; var minWidth = column.minWidth; if (!column.width) { var finalWidth = autoWidth; if (maxWidth && maxWidth < finalWidth) { finalWidth = Math.min(maxWidth, remainedWidth); } if (minWidth && minWidth > finalWidth) { finalWidth = minWidth; } if (finalWidth !== autoWidth) { column.width = finalWidth; remainedWidth -= finalWidth + barGapPercent * finalWidth; autoWidthCount--; } } else { var finalWidth = column.width; if (maxWidth) { finalWidth = Math.min(finalWidth, maxWidth); } if (minWidth) { finalWidth = Math.max(finalWidth, minWidth); } column.width = finalWidth; remainedWidth -= finalWidth + barGapPercent * finalWidth; autoWidthCount--; } }); autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); autoWidth = Math.max(autoWidth, 0); var widthSum = 0; var lastColumn; each$g(stacks, function(column, idx) { if (!column.width) { column.width = autoWidth; } lastColumn = column; widthSum += column.width * (1 + barGapPercent); }); if (lastColumn) { widthSum -= lastColumn.width * barGapPercent; } var offset = -widthSum / 2; each$g(stacks, function(column, stackId) { result[coordSysName][stackId] = result[coordSysName][stackId] || { bandWidth, offset, width: column.width }; offset += column.width * (1 + barGapPercent); }); }); return result; } function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) { if (barWidthAndOffset && axis) { var result = barWidthAndOffset[getAxisKey$1(axis)]; if (result != null && seriesModel != null) { return result[getSeriesStackId$1(seriesModel)]; } return result; } } function layout$3(seriesType2, ecModel) { var seriesModels = prepareLayoutBarSeries(seriesType2, ecModel); var barWidthAndOffset = makeColumnLayout(seriesModels); var lastStackCoords = {}; each$g(seriesModels, function(seriesModel) { var data = seriesModel.getData(); var cartesian = seriesModel.coordinateSystem; var baseAxis = cartesian.getBaseAxis(); var stackId = getSeriesStackId$1(seriesModel); var columnLayoutInfo = barWidthAndOffset[getAxisKey$1(baseAxis)][stackId]; var columnOffset = columnLayoutInfo.offset; var columnWidth = columnLayoutInfo.width; var valueAxis2 = cartesian.getOtherAxis(baseAxis); var barMinHeight = seriesModel.get("barMinHeight") || 0; lastStackCoords[stackId] = lastStackCoords[stackId] || []; data.setLayout({ bandWidth: columnLayoutInfo.bandWidth, offset: columnOffset, size: columnWidth }); var valueDim = data.mapDimension(valueAxis2.dim); var baseDim = data.mapDimension(baseAxis.dim); var stacked = isDimensionStacked(data, valueDim); var isValueAxisH = valueAxis2.isHorizontal(); var valueAxisStart = getValueAxisStart(baseAxis, valueAxis2); var store = data.getStore(); var valueDimIdx = data.getDimensionIndex(valueDim); var baseDimIdx = data.getDimensionIndex(baseDim); for (var idx = 0, len2 = store.count(); idx < len2; idx++) { var value = store.get(valueDimIdx, idx); var baseValue = store.get(baseDimIdx, idx); var sign = value >= 0 ? "p" : "n"; var baseCoord = valueAxisStart; if (stacked) { if (!lastStackCoords[stackId][baseValue]) { lastStackCoords[stackId][baseValue] = { p: valueAxisStart, n: valueAxisStart }; } baseCoord = lastStackCoords[stackId][baseValue][sign]; } var x = void 0; var y = void 0; var width = void 0; var height = void 0; if (isValueAxisH) { var coord = cartesian.dataToPoint([value, baseValue]); x = baseCoord; y = coord[1] + columnOffset; width = coord[0] - valueAxisStart; height = columnWidth; if (Math.abs(width) < barMinHeight) { width = (width < 0 ? -1 : 1) * barMinHeight; } if (!isNaN(width)) { stacked && (lastStackCoords[stackId][baseValue][sign] += width); } } else { var coord = cartesian.dataToPoint([baseValue, value]); x = coord[0] + columnOffset; y = baseCoord; width = columnWidth; height = coord[1] - valueAxisStart; if (Math.abs(height) < barMinHeight) { height = (height <= 0 ? -1 : 1) * barMinHeight; } if (!isNaN(height)) { stacked && (lastStackCoords[stackId][baseValue][sign] += height); } } data.setItemLayout(idx, { x, y, width, height }); } }); } var largeLayout = { seriesType: "bar", plan: createRenderPlanner(), reset: function(seriesModel) { if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) { return; } var data = seriesModel.getData(); var cartesian = seriesModel.coordinateSystem; var coordLayout = cartesian.master.getRect(); var baseAxis = cartesian.getBaseAxis(); var valueAxis2 = cartesian.getOtherAxis(baseAxis); var valueDimI = data.getDimensionIndex(data.mapDimension(valueAxis2.dim)); var baseDimI = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); var valueAxisHorizontal = valueAxis2.isHorizontal(); var valueDimIdx = valueAxisHorizontal ? 0 : 1; var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width; if (!(barWidth > LARGE_BAR_MIN_WIDTH)) { barWidth = LARGE_BAR_MIN_WIDTH; } return { progress: function(params, data2) { var count2 = params.count; var largePoints = new LargeArr$1(count2 * 2); var largeBackgroundPoints = new LargeArr$1(count2 * 2); var largeDataIndices = new LargeArr$1(count2); var dataIndex; var coord = []; var valuePair = []; var pointsOffset = 0; var idxOffset = 0; var store = data2.getStore(); while ((dataIndex = params.next()) != null) { valuePair[valueDimIdx] = store.get(valueDimI, dataIndex); valuePair[1 - valueDimIdx] = store.get(baseDimI, dataIndex); coord = cartesian.dataToPoint(valuePair, null); largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0]; largePoints[pointsOffset++] = coord[0]; largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height; largePoints[pointsOffset++] = coord[1]; largeDataIndices[idxOffset++] = dataIndex; } data2.setLayout({ largePoints, largeDataIndices, largeBackgroundPoints, barWidth, valueAxisStart: getValueAxisStart(baseAxis, valueAxis2), backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y, valueAxisHorizontal }); } }; } }; function isOnCartesian(seriesModel) { return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "cartesian2d"; } function isInLargeMode(seriesModel) { return seriesModel.pipelineContext && seriesModel.pipelineContext.large; } function getValueAxisStart(baseAxis, valueAxis2, stacked) { return valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(valueAxis2.type === "log" ? 1 : 0)); } var bisect = function(a, x, lo, hi) { while (lo < hi) { var mid = lo + hi >>> 1; if (a[mid][1] < x) { lo = mid + 1; } else { hi = mid; } } return lo; }; var TimeScale = function(_super) { __extends$1(TimeScale2, _super); function TimeScale2(settings) { var _this = _super.call(this, settings) || this; _this.type = "time"; return _this; } TimeScale2.prototype.getLabel = function(tick) { var useUTC = this.getSetting("useUTC"); return format$1(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting("locale")); }; TimeScale2.prototype.getFormattedLabel = function(tick, idx, labelFormatter) { var isUTC = this.getSetting("useUTC"); var lang = this.getSetting("locale"); return leveledFormat(tick, idx, labelFormatter, lang, isUTC); }; TimeScale2.prototype.getTicks = function(expandToNicedExtent) { var interval = this._interval; var extent3 = this._extent; var ticks = []; if (!interval) { return ticks; } ticks.push({ value: extent3[0], level: 0 }); var useUTC = this.getSetting("useUTC"); var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent3); ticks = ticks.concat(innerTicks); ticks.push({ value: extent3[1], level: 0 }); return ticks; }; TimeScale2.prototype.niceExtent = function(opt) { var extent3 = this._extent; if (extent3[0] === extent3[1]) { extent3[0] -= ONE_DAY; extent3[1] += ONE_DAY; } if (extent3[1] === -Infinity && extent3[0] === Infinity) { var d = new Date(); extent3[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate()); extent3[0] = extent3[1] - ONE_DAY; } this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); }; TimeScale2.prototype.niceTicks = function(approxTickNum, minInterval, maxInterval) { approxTickNum = approxTickNum || 10; var extent3 = this._extent; var span = extent3[1] - extent3[0]; this._approxInterval = span / approxTickNum; if (minInterval != null && this._approxInterval < minInterval) { this._approxInterval = minInterval; } if (maxInterval != null && this._approxInterval > maxInterval) { this._approxInterval = maxInterval; } var scaleIntervalsLen = scaleIntervals.length; var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); this._interval = scaleIntervals[idx][1]; this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0]; }; TimeScale2.prototype.parse = function(val) { return typeof val === "number" ? val : +parseDate(val); }; TimeScale2.prototype.contain = function(val) { return contain(this.parse(val), this._extent); }; TimeScale2.prototype.normalize = function(val) { return normalize$2(this.parse(val), this._extent); }; TimeScale2.prototype.scale = function(val) { return scale(val, this._extent); }; TimeScale2.type = "time"; return TimeScale2; }(IntervalScale$1); var scaleIntervals = [ ["second", ONE_SECOND], ["minute", ONE_MINUTE], ["hour", ONE_HOUR], ["quarter-day", ONE_HOUR * 6], ["half-day", ONE_HOUR * 12], ["day", ONE_DAY * 1.2], ["half-week", ONE_DAY * 3.5], ["week", ONE_DAY * 7], ["month", ONE_DAY * 31], ["quarter", ONE_DAY * 95], ["half-year", ONE_YEAR / 2], ["year", ONE_YEAR] ]; function isUnitValueSame(unit, valueA, valueB, isUTC) { var dateA = parseDate(valueA); var dateB = parseDate(valueB); var isSame = function(unit2) { return getUnitValue(dateA, unit2, isUTC) === getUnitValue(dateB, unit2, isUTC); }; var isSameYear = function() { return isSame("year"); }; var isSameMonth = function() { return isSameYear() && isSame("month"); }; var isSameDay = function() { return isSameMonth() && isSame("day"); }; var isSameHour = function() { return isSameDay() && isSame("hour"); }; var isSameMinute = function() { return isSameHour() && isSame("minute"); }; var isSameSecond = function() { return isSameMinute() && isSame("second"); }; var isSameMilliSecond = function() { return isSameSecond() && isSame("millisecond"); }; switch (unit) { case "year": return isSameYear(); case "month": return isSameMonth(); case "day": return isSameDay(); case "hour": return isSameHour(); case "minute": return isSameMinute(); case "second": return isSameSecond(); case "millisecond": return isSameMilliSecond(); } } function getDateInterval(approxInterval, daysInMonth) { approxInterval /= ONE_DAY; return approxInterval > 16 ? 16 : approxInterval > 7.5 ? 7 : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1; } function getMonthInterval(approxInterval) { var APPROX_ONE_MONTH = 30 * ONE_DAY; approxInterval /= APPROX_ONE_MONTH; return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1; } function getHourInterval(approxInterval) { approxInterval /= ONE_HOUR; return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1; } function getMinutesAndSecondsInterval(approxInterval, isMinutes) { approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND; return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1; } function getMillisecondsInterval(approxInterval) { return nice(approxInterval, true); } function getFirstTimestampOfUnit(date, unitName, isUTC) { var outDate = new Date(date); switch (getPrimaryTimeUnit(unitName)) { case "year": case "month": outDate[monthSetterName(isUTC)](0); case "day": outDate[dateSetterName(isUTC)](1); case "hour": outDate[hoursSetterName(isUTC)](0); case "minute": outDate[minutesSetterName(isUTC)](0); case "second": outDate[secondsSetterName(isUTC)](0); outDate[millisecondsSetterName(isUTC)](0); } return outDate.getTime(); } function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent3) { var safeLimit = 1e4; var unitNames = timeUnits; var iter = 0; function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out2) { var date = new Date(minTimestamp); var dateTime = minTimestamp; var d = date[getMethodName](); while (dateTime < maxTimestamp && dateTime <= extent3[1]) { out2.push({ value: dateTime }); d += interval; date[setMethodName](d); dateTime = date.getTime(); } out2.push({ value: dateTime, notAdd: true }); } function addLevelTicks(unitName, lastLevelTicks, levelTicks2) { var newAddedTicks = []; var isFirstLevel = !lastLevelTicks.length; if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent3[0], extent3[1], isUTC)) { return; } if (isFirstLevel) { lastLevelTicks = [{ value: getFirstTimestampOfUnit(new Date(extent3[0]), unitName, isUTC) }, { value: extent3[1] }]; } for (var i2 = 0; i2 < lastLevelTicks.length - 1; i2++) { var startTick = lastLevelTicks[i2].value; var endTick = lastLevelTicks[i2 + 1].value; if (startTick === endTick) { continue; } var interval = void 0; var getterName = void 0; var setterName = void 0; var isDate = false; switch (unitName) { case "year": interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365)); getterName = fullYearGetterName(isUTC); setterName = fullYearSetterName(isUTC); break; case "half-year": case "quarter": case "month": interval = getMonthInterval(approxInterval); getterName = monthGetterName(isUTC); setterName = monthSetterName(isUTC); break; case "week": case "half-week": case "day": interval = getDateInterval(approxInterval); getterName = dateGetterName(isUTC); setterName = dateSetterName(isUTC); isDate = true; break; case "half-day": case "quarter-day": case "hour": interval = getHourInterval(approxInterval); getterName = hoursGetterName(isUTC); setterName = hoursSetterName(isUTC); break; case "minute": interval = getMinutesAndSecondsInterval(approxInterval, true); getterName = minutesGetterName(isUTC); setterName = minutesSetterName(isUTC); break; case "second": interval = getMinutesAndSecondsInterval(approxInterval, false); getterName = secondsGetterName(isUTC); setterName = secondsSetterName(isUTC); break; case "millisecond": interval = getMillisecondsInterval(approxInterval); getterName = millisecondsGetterName(isUTC); setterName = millisecondsSetterName(isUTC); break; } addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks); if (unitName === "year" && levelTicks2.length > 1 && i2 === 0) { levelTicks2.unshift({ value: levelTicks2[0].value - interval }); } } for (var i2 = 0; i2 < newAddedTicks.length; i2++) { levelTicks2.push(newAddedTicks[i2]); } return newAddedTicks; } var levelsTicks = []; var currentLevelTicks = []; var tickCount = 0; var lastLevelTickCount = 0; for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) { var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]); if (!isPrimaryTimeUnit(unitNames[i])) { continue; } addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks); var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null; if (primaryTimeUnit !== nextPrimaryTimeUnit) { if (currentLevelTicks.length) { lastLevelTickCount = tickCount; currentLevelTicks.sort(function(a, b) { return a.value - b.value; }); var levelTicksRemoveDuplicated = []; for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) { var tickValue = currentLevelTicks[i_1].value; if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) { levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]); if (tickValue >= extent3[0] && tickValue <= extent3[1]) { tickCount++; } } } var targetTickNum = (extent3[1] - extent3[0]) / approxInterval; if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) { break; } levelsTicks.push(levelTicksRemoveDuplicated); if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) { break; } } currentLevelTicks = []; } } var levelsTicksInExtent = filter(map$1(levelsTicks, function(levelTicks2) { return filter(levelTicks2, function(tick) { return tick.value >= extent3[0] && tick.value <= extent3[1] && !tick.notAdd; }); }), function(levelTicks2) { return levelTicks2.length > 0; }); var ticks = []; var maxLevel = levelsTicksInExtent.length - 1; for (var i = 0; i < levelsTicksInExtent.length; ++i) { var levelTicks = levelsTicksInExtent[i]; for (var k = 0; k < levelTicks.length; ++k) { ticks.push({ value: levelTicks[k].value, level: maxLevel - i }); } } ticks.sort(function(a, b) { return a.value - b.value; }); var result = []; for (var i = 0; i < ticks.length; ++i) { if (i === 0 || ticks[i].value !== ticks[i - 1].value) { result.push(ticks[i]); } } return result; } Scale$1.registerClass(TimeScale); var TimeScale$1 = TimeScale; var scaleProto = Scale$1.prototype; var intervalScaleProto = IntervalScale$1.prototype; var roundingErrorFix = round$2; var mathFloor$1 = Math.floor; var mathCeil$1 = Math.ceil; var mathPow$1 = Math.pow; var mathLog = Math.log; var LogScale = function(_super) { __extends$1(LogScale2, _super); function LogScale2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "log"; _this.base = 10; _this._originalScale = new IntervalScale$1(); _this._interval = 0; return _this; } LogScale2.prototype.getTicks = function(expandToNicedExtent) { var originalScale = this._originalScale; var extent3 = this._extent; var originalExtent = originalScale.getExtent(); var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent); return map$1(ticks, function(tick) { var val = tick.value; var powVal = round$2(mathPow$1(this.base, val)); powVal = val === extent3[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal; powVal = val === extent3[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal; return { value: powVal }; }, this); }; LogScale2.prototype.setExtent = function(start2, end2) { var base2 = this.base; start2 = mathLog(start2) / mathLog(base2); end2 = mathLog(end2) / mathLog(base2); intervalScaleProto.setExtent.call(this, start2, end2); }; LogScale2.prototype.getExtent = function() { var base2 = this.base; var extent3 = scaleProto.getExtent.call(this); extent3[0] = mathPow$1(base2, extent3[0]); extent3[1] = mathPow$1(base2, extent3[1]); var originalScale = this._originalScale; var originalExtent = originalScale.getExtent(); this._fixMin && (extent3[0] = fixRoundingError(extent3[0], originalExtent[0])); this._fixMax && (extent3[1] = fixRoundingError(extent3[1], originalExtent[1])); return extent3; }; LogScale2.prototype.unionExtent = function(extent3) { this._originalScale.unionExtent(extent3); var base2 = this.base; extent3[0] = mathLog(extent3[0]) / mathLog(base2); extent3[1] = mathLog(extent3[1]) / mathLog(base2); scaleProto.unionExtent.call(this, extent3); }; LogScale2.prototype.unionExtentFromData = function(data, dim) { this.unionExtent(data.getApproximateExtent(dim)); }; LogScale2.prototype.niceTicks = function(approxTickNum) { approxTickNum = approxTickNum || 10; var extent3 = this._extent; var span = extent3[1] - extent3[0]; if (span === Infinity || span <= 0) { return; } var interval = quantity(span); var err = approxTickNum / span * interval; if (err <= 0.5) { interval *= 10; } while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) { interval *= 10; } var niceExtent = [round$2(mathCeil$1(extent3[0] / interval) * interval), round$2(mathFloor$1(extent3[1] / interval) * interval)]; this._interval = interval; this._niceExtent = niceExtent; }; LogScale2.prototype.niceExtent = function(opt) { intervalScaleProto.niceExtent.call(this, opt); this._fixMin = opt.fixMin; this._fixMax = opt.fixMax; }; LogScale2.prototype.parse = function(val) { return val; }; LogScale2.prototype.contain = function(val) { val = mathLog(val) / mathLog(this.base); return contain(val, this._extent); }; LogScale2.prototype.normalize = function(val) { val = mathLog(val) / mathLog(this.base); return normalize$2(val, this._extent); }; LogScale2.prototype.scale = function(val) { val = scale(val, this._extent); return mathPow$1(this.base, val); }; LogScale2.type = "log"; return LogScale2; }(Scale$1); var proto = LogScale.prototype; proto.getMinorTicks = intervalScaleProto.getMinorTicks; proto.getLabel = intervalScaleProto.getLabel; function fixRoundingError(val, originalVal) { return roundingErrorFix(val, getPrecision(originalVal)); } Scale$1.registerClass(LogScale); var LogScale$1 = LogScale; var ScaleRawExtentInfo = function() { function ScaleRawExtentInfo2(scale2, model, originalExtent) { this._prepareParams(scale2, model, originalExtent); } ScaleRawExtentInfo2.prototype._prepareParams = function(scale2, model, dataExtent) { if (dataExtent[1] < dataExtent[0]) { dataExtent = [NaN, NaN]; } this._dataMin = dataExtent[0]; this._dataMax = dataExtent[1]; var isOrdinal = this._isOrdinal = scale2.type === "ordinal"; this._needCrossZero = model.getNeedCrossZero && model.getNeedCrossZero(); var modelMinRaw = this._modelMinRaw = model.get("min", true); if (isFunction(modelMinRaw)) { this._modelMinNum = parseAxisModelMinMax(scale2, modelMinRaw({ min: dataExtent[0], max: dataExtent[1] })); } else if (modelMinRaw !== "dataMin") { this._modelMinNum = parseAxisModelMinMax(scale2, modelMinRaw); } var modelMaxRaw = this._modelMaxRaw = model.get("max", true); if (isFunction(modelMaxRaw)) { this._modelMaxNum = parseAxisModelMinMax(scale2, modelMaxRaw({ min: dataExtent[0], max: dataExtent[1] })); } else if (modelMaxRaw !== "dataMax") { this._modelMaxNum = parseAxisModelMinMax(scale2, modelMaxRaw); } if (isOrdinal) { this._axisDataLen = model.getCategories().length; } else { var boundaryGap = model.get("boundaryGap"); var boundaryGapArr = isArray$1(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0]; if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") { this._boundaryGapInner = [0, 0]; } else { this._boundaryGapInner = [parsePercent$2(boundaryGapArr[0], 1), parsePercent$2(boundaryGapArr[1], 1)]; } } }; ScaleRawExtentInfo2.prototype.calculate = function() { var isOrdinal = this._isOrdinal; var dataMin = this._dataMin; var dataMax = this._dataMax; var axisDataLen = this._axisDataLen; var boundaryGapInner = this._boundaryGapInner; var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; var min3 = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum; var max3 = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum; var minFixed = min3 != null; var maxFixed = max3 != null; if (min3 == null) { min3 = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span; } if (max3 == null) { max3 = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span; } (min3 == null || !isFinite(min3)) && (min3 = NaN); (max3 == null || !isFinite(max3)) && (max3 = NaN); var isBlank = eqNaN(min3) || eqNaN(max3) || isOrdinal && !axisDataLen; if (this._needCrossZero) { if (min3 > 0 && max3 > 0 && !minFixed) { min3 = 0; } if (min3 < 0 && max3 < 0 && !maxFixed) { max3 = 0; } } var determinedMin = this._determinedMin; var determinedMax = this._determinedMax; if (determinedMin != null) { min3 = determinedMin; minFixed = true; } if (determinedMax != null) { max3 = determinedMax; maxFixed = true; } return { min: min3, max: max3, minFixed, maxFixed, isBlank }; }; ScaleRawExtentInfo2.prototype.modifyDataMinMax = function(minMaxName, val) { this[DATA_MIN_MAX_ATTR[minMaxName]] = val; }; ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function(minMaxName, val) { var attr2 = DETERMINED_MIN_MAX_ATTR[minMaxName]; this[attr2] = val; }; ScaleRawExtentInfo2.prototype.freeze = function() { this.frozen = true; }; return ScaleRawExtentInfo2; }(); var DETERMINED_MIN_MAX_ATTR = { min: "_determinedMin", max: "_determinedMax" }; var DATA_MIN_MAX_ATTR = { min: "_dataMin", max: "_dataMax" }; function ensureScaleRawExtentInfo(scale2, model, originalExtent) { var rawExtentInfo = scale2.rawExtentInfo; if (rawExtentInfo) { return rawExtentInfo; } rawExtentInfo = new ScaleRawExtentInfo(scale2, model, originalExtent); scale2.rawExtentInfo = rawExtentInfo; return rawExtentInfo; } function parseAxisModelMinMax(scale2, minMax) { return minMax == null ? null : eqNaN(minMax) ? NaN : scale2.parse(minMax); } function getScaleExtent(scale2, model) { var scaleType = scale2.type; var rawExtentResult = ensureScaleRawExtentInfo(scale2, model, scale2.getExtent()).calculate(); scale2.setBlank(rawExtentResult.isBlank); var min3 = rawExtentResult.min; var max3 = rawExtentResult.max; var ecModel = model.ecModel; if (ecModel && scaleType === "time") { var barSeriesModels = prepareLayoutBarSeries("bar", ecModel); var isBaseAxisAndHasBarSeries_1 = false; each$g(barSeriesModels, function(seriesModel) { isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis; }); if (isBaseAxisAndHasBarSeries_1) { var barWidthAndOffset = makeColumnLayout(barSeriesModels); var adjustedScale = adjustScaleForOverflow(min3, max3, model, barWidthAndOffset); min3 = adjustedScale.min; max3 = adjustedScale.max; } } return { extent: [min3, max3], fixMin: rawExtentResult.minFixed, fixMax: rawExtentResult.maxFixed }; } function adjustScaleForOverflow(min3, max3, model, barWidthAndOffset) { var axisExtent = model.axis.getExtent(); var axisLength = axisExtent[1] - axisExtent[0]; var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis); if (barsOnCurrentAxis === void 0) { return { min: min3, max: max3 }; } var minOverflow = Infinity; each$g(barsOnCurrentAxis, function(item) { minOverflow = Math.min(item.offset, minOverflow); }); var maxOverflow = -Infinity; each$g(barsOnCurrentAxis, function(item) { maxOverflow = Math.max(item.offset + item.width, maxOverflow); }); minOverflow = Math.abs(minOverflow); maxOverflow = Math.abs(maxOverflow); var totalOverFlow = minOverflow + maxOverflow; var oldRange = max3 - min3; var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength; var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange; max3 += overflowBuffer * (maxOverflow / totalOverFlow); min3 -= overflowBuffer * (minOverflow / totalOverFlow); return { min: min3, max: max3 }; } function niceScaleExtent(scale2, inModel) { var model = inModel; var extentInfo = getScaleExtent(scale2, model); var extent3 = extentInfo.extent; var splitNumber = model.get("splitNumber"); if (scale2 instanceof LogScale$1) { scale2.base = model.get("logBase"); } var scaleType = scale2.type; scale2.setExtent(extent3[0], extent3[1]); scale2.niceExtent({ splitNumber, fixMin: extentInfo.fixMin, fixMax: extentInfo.fixMax, minInterval: scaleType === "interval" || scaleType === "time" ? model.get("minInterval") : null, maxInterval: scaleType === "interval" || scaleType === "time" ? model.get("maxInterval") : null }); var interval = model.get("interval"); if (interval != null) { scale2.setInterval && scale2.setInterval(interval); } } function createScaleByModel$1(model, axisType) { axisType = axisType || model.get("type"); if (axisType) { switch (axisType) { case "category": return new OrdinalScale$1({ ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), extent: [Infinity, -Infinity] }); case "time": return new TimeScale$1({ locale: model.ecModel.getLocaleModel(), useUTC: model.ecModel.get("useUTC") }); default: return new (Scale$1.getClass(axisType) || IntervalScale$1)(); } } } function ifAxisCrossZero(axis) { var dataExtent = axis.scale.getExtent(); var min3 = dataExtent[0]; var max3 = dataExtent[1]; return !(min3 > 0 && max3 > 0 || min3 < 0 && max3 < 0); } function makeLabelFormatter(axis) { var labelFormatter = axis.getLabelModel().get("formatter"); var categoryTickStart = axis.type === "category" ? axis.scale.getExtent()[0] : null; if (axis.scale.type === "time") { return function(tpl) { return function(tick, idx) { return axis.scale.getFormattedLabel(tick, idx, tpl); }; }(labelFormatter); } else if (typeof labelFormatter === "string") { return function(tpl) { return function(tick) { var label = axis.scale.getLabel(tick); var text = tpl.replace("{value}", label != null ? label : ""); return text; }; }(labelFormatter); } else if (typeof labelFormatter === "function") { return function(cb) { return function(tick, idx) { if (categoryTickStart != null) { idx = tick.value - categoryTickStart; } return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? { level: tick.level } : null); }; }(labelFormatter); } else { return function(tick) { return axis.scale.getLabel(tick); }; } } function getAxisRawValue(axis, tick) { return axis.type === "category" ? axis.scale.getLabel(tick) : tick.value; } function estimateLabelUnionRect(axis) { var axisModel = axis.model; var scale2 = axis.scale; if (!axisModel.get(["axisLabel", "show"]) || scale2.isBlank()) { return; } var realNumberScaleTicks; var tickCount; var categoryScaleExtent = scale2.getExtent(); if (scale2 instanceof OrdinalScale$1) { tickCount = scale2.count(); } else { realNumberScaleTicks = scale2.getTicks(); tickCount = realNumberScaleTicks.length; } var axisLabelModel = axis.getLabelModel(); var labelFormatter = makeLabelFormatter(axis); var rect; var step2 = 1; if (tickCount > 40) { step2 = Math.ceil(tickCount / 40); } for (var i = 0; i < tickCount; i += step2) { var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : { value: categoryScaleExtent[0] + i }; var label = labelFormatter(tick, i); var unrotatedSingleRect = axisLabelModel.getTextRect(label); var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get("rotate") || 0); rect ? rect.union(singleRect) : rect = singleRect; } return rect; } function rotateTextRect(textRect, rotate2) { var rotateRadians = rotate2 * Math.PI / 180; var beforeWidth = textRect.width; var beforeHeight = textRect.height; var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians)); var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians)); var rotatedRect = new BoundingRect$1(textRect.x, textRect.y, afterWidth, afterHeight); return rotatedRect; } function getOptionCategoryInterval(model) { var interval = model.get("interval"); return interval == null ? "auto" : interval; } function shouldShowAllLabels(axis) { return axis.type === "category" && getOptionCategoryInterval(axis.getLabelModel()) === 0; } function getDataDimensionsOnAxis(data, axisDim) { var dataDimMap = {}; each$g(data.mapDimensionsAll(axisDim), function(dataDim) { dataDimMap[getStackedDimension(data, dataDim)] = true; }); return keys(dataDimMap); } function unionAxisExtentFromData(dataExtent, data, axisDim) { if (data) { each$g(getDataDimensionsOnAxis(data, axisDim), function(dim) { var seriesExtent = data.getApproximateExtent(dim); seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); }); } } var AxisModelCommonMixin = function() { function AxisModelCommonMixin2() { } AxisModelCommonMixin2.prototype.getNeedCrossZero = function() { var option = this.option; return !option.scale; }; AxisModelCommonMixin2.prototype.getCoordSysModel = function() { return; }; return AxisModelCommonMixin2; }(); function createList$2(seriesModel) { return createSeriesData(null, seriesModel); } var dataStack = { isDimensionStacked, enableDataStack, getStackedDimension }; function createScale(dataExtent, option) { var axisModel = option; if (!(option instanceof Model$1)) { axisModel = new Model$1(option); } var scale2 = createScaleByModel$1(axisModel); scale2.setExtent(dataExtent[0], dataExtent[1]); niceScaleExtent(scale2, axisModel); return scale2; } function mixinAxisModelCommonMethods(Model2) { mixin(Model2, AxisModelCommonMixin); } function createTextStyle(textStyleModel, opts) { opts = opts || {}; return createTextStyle$1(textStyleModel, null, null, opts.state !== "normal"); } var helper = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", createList: createList$2, getLayoutRect, dataStack, createScale, mixinAxisModelCommonMethods, getECData, createTextStyle, createDimensions, createSymbol: createSymbol$1, enableHoverEmphasis }); var number = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", linearMap: linearMap$2, round: round$2, asc: asc$2, getPrecision, getPrecisionSafe, getPixelPrecision, getPercentWithPrecision, MAX_SAFE_INTEGER, remRadian, isRadianAroundZero, parseDate, quantity, quantityExponent, nice, quantile, reformIntervals, isNumeric, numericToNumber }); var time = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", parse: parseDate, format: format$1 }); var graphic = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", extendShape, extendPath, makePath, makeImage, mergePath, resizePath, createIcon, updateProps: updateProps$1, initProps, getTransform: getTransform$1, clipPointsByRect, clipRectByRect, registerShape, getShapeClass, Group: Group$4, Image: ZRImage$1, Text: ZRText$1, Circle: Circle$1, Ellipse: Ellipse$1, Sector: Sector$1, Ring: Ring$1, Polygon: Polygon$1, Polyline: Polyline$3, Rect: Rect$3, Line: Line$3, BezierCurve: BezierCurve$1, Arc: Arc$1, IncrementalDisplayable: IncrementalDisplayable$1, CompoundPath: CompoundPath$1, LinearGradient: LinearGradient$1, RadialGradient: RadialGradient$1, BoundingRect: BoundingRect$1 }); var format = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", addCommas, toCamelCase, normalizeCssArray, encodeHTML, formatTpl, getTooltipMarker, formatTime, capitalFirst, truncateText, getTextRect }); var util = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", map: map$1, each: each$g, indexOf, inherits, reduce, filter, bind: bind$2, curry: curry$1, isArray: isArray$1, isString, isObject: isObject$3, isFunction, extend, defaults, clone: clone$4, merge }); var inner$g = makeInner(); function createAxisLabels(axis) { return axis.type === "category" ? makeCategoryLabels(axis) : makeRealNumberLabels(axis); } function createAxisTicks(axis, tickModel) { return axis.type === "category" ? makeCategoryTicks(axis, tickModel) : { ticks: map$1(axis.scale.getTicks(), function(tick) { return tick.value; }) }; } function makeCategoryLabels(axis) { var labelModel = axis.getLabelModel(); var result = makeCategoryLabelsActually(axis, labelModel); return !labelModel.get("show") || axis.scale.isBlank() ? { labels: [], labelCategoryInterval: result.labelCategoryInterval } : result; } function makeCategoryLabelsActually(axis, labelModel) { var labelsCache = getListCache(axis, "labels"); var optionLabelInterval = getOptionCategoryInterval(labelModel); var result = listCacheGet(labelsCache, optionLabelInterval); if (result) { return result; } var labels; var numericLabelInterval; if (isFunction(optionLabelInterval)) { labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval); } else { numericLabelInterval = optionLabelInterval === "auto" ? makeAutoCategoryInterval(axis) : optionLabelInterval; labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval); } return listCacheSet(labelsCache, optionLabelInterval, { labels, labelCategoryInterval: numericLabelInterval }); } function makeCategoryTicks(axis, tickModel) { var ticksCache = getListCache(axis, "ticks"); var optionTickInterval = getOptionCategoryInterval(tickModel); var result = listCacheGet(ticksCache, optionTickInterval); if (result) { return result; } var ticks; var tickCategoryInterval; if (!tickModel.get("show") || axis.scale.isBlank()) { ticks = []; } if (isFunction(optionTickInterval)) { ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true); } else if (optionTickInterval === "auto") { var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel()); tickCategoryInterval = labelsResult.labelCategoryInterval; ticks = map$1(labelsResult.labels, function(labelItem) { return labelItem.tickValue; }); } else { tickCategoryInterval = optionTickInterval; ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true); } return listCacheSet(ticksCache, optionTickInterval, { ticks, tickCategoryInterval }); } function makeRealNumberLabels(axis) { var ticks = axis.scale.getTicks(); var labelFormatter = makeLabelFormatter(axis); return { labels: map$1(ticks, function(tick, idx) { return { level: tick.level, formattedLabel: labelFormatter(tick, idx), rawLabel: axis.scale.getLabel(tick), tickValue: tick.value }; }) }; } function getListCache(axis, prop) { return inner$g(axis)[prop] || (inner$g(axis)[prop] = []); } function listCacheGet(cache, key2) { for (var i = 0; i < cache.length; i++) { if (cache[i].key === key2) { return cache[i].value; } } } function listCacheSet(cache, key2, value) { cache.push({ key: key2, value }); return value; } function makeAutoCategoryInterval(axis) { var result = inner$g(axis).autoInterval; return result != null ? result : inner$g(axis).autoInterval = axis.calculateCategoryInterval(); } function calculateCategoryInterval(axis) { var params = fetchAutoCategoryIntervalCalculationParams(axis); var labelFormatter = makeLabelFormatter(axis); var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI; var ordinalScale = axis.scale; var ordinalExtent = ordinalScale.getExtent(); var tickCount = ordinalScale.count(); if (ordinalExtent[1] - ordinalExtent[0] < 1) { return 0; } var step2 = 1; if (tickCount > 40) { step2 = Math.max(1, Math.floor(tickCount / 40)); } var tickValue = ordinalExtent[0]; var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); var unitW = Math.abs(unitSpan * Math.cos(rotation)); var unitH = Math.abs(unitSpan * Math.sin(rotation)); var maxW = 0; var maxH = 0; for (; tickValue <= ordinalExtent[1]; tickValue += step2) { var width = 0; var height = 0; var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, "center", "top"); width = rect.width * 1.3; height = rect.height * 1.3; maxW = Math.max(maxW, width, 7); maxH = Math.max(maxH, height, 7); } var dw = maxW / unitW; var dh = maxH / unitH; isNaN(dw) && (dw = Infinity); isNaN(dh) && (dh = Infinity); var interval = Math.max(0, Math.floor(Math.min(dw, dh))); var cache = inner$g(axis.model); var axisExtent = axis.getExtent(); var lastAutoInterval = cache.lastAutoInterval; var lastTickCount = cache.lastTickCount; if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) { interval = lastAutoInterval; } else { cache.lastTickCount = tickCount; cache.lastAutoInterval = interval; cache.axisExtent0 = axisExtent[0]; cache.axisExtent1 = axisExtent[1]; } return interval; } function fetchAutoCategoryIntervalCalculationParams(axis) { var labelModel = axis.getLabelModel(); return { axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0, labelRotate: labelModel.get("rotate") || 0, font: labelModel.getFont() }; } function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) { var labelFormatter = makeLabelFormatter(axis); var ordinalScale = axis.scale; var ordinalExtent = ordinalScale.getExtent(); var labelModel = axis.getLabelModel(); var result = []; var step2 = Math.max((categoryInterval || 0) + 1, 1); var startTick = ordinalExtent[0]; var tickCount = ordinalScale.count(); if (startTick !== 0 && step2 > 1 && tickCount / step2 > 2) { startTick = Math.round(Math.ceil(startTick / step2) * step2); } var showAllLabel = shouldShowAllLabels(axis); var includeMinLabel = labelModel.get("showMinLabel") || showAllLabel; var includeMaxLabel = labelModel.get("showMaxLabel") || showAllLabel; if (includeMinLabel && startTick !== ordinalExtent[0]) { addItem(ordinalExtent[0]); } var tickValue = startTick; for (; tickValue <= ordinalExtent[1]; tickValue += step2) { addItem(tickValue); } if (includeMaxLabel && tickValue - step2 !== ordinalExtent[1]) { addItem(ordinalExtent[1]); } function addItem(tickValue2) { var tickObj = { value: tickValue2 }; result.push(onlyTick ? tickValue2 : { formattedLabel: labelFormatter(tickObj), rawLabel: ordinalScale.getLabel(tickObj), tickValue: tickValue2 }); } return result; } function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) { var ordinalScale = axis.scale; var labelFormatter = makeLabelFormatter(axis); var result = []; each$g(ordinalScale.getTicks(), function(tick) { var rawLabel = ordinalScale.getLabel(tick); var tickValue = tick.value; if (categoryInterval(tick.value, rawLabel)) { result.push(onlyTick ? tickValue : { formattedLabel: labelFormatter(tick), rawLabel, tickValue }); } }); return result; } var NORMALIZED_EXTENT = [0, 1]; var Axis = function() { function Axis2(dim, scale2, extent3) { this.onBand = false; this.inverse = false; this.dim = dim; this.scale = scale2; this._extent = extent3 || [0, 0]; } Axis2.prototype.contain = function(coord) { var extent3 = this._extent; var min3 = Math.min(extent3[0], extent3[1]); var max3 = Math.max(extent3[0], extent3[1]); return coord >= min3 && coord <= max3; }; Axis2.prototype.containData = function(data) { return this.scale.contain(data); }; Axis2.prototype.getExtent = function() { return this._extent.slice(); }; Axis2.prototype.getPixelPrecision = function(dataExtent) { return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent); }; Axis2.prototype.setExtent = function(start2, end2) { var extent3 = this._extent; extent3[0] = start2; extent3[1] = end2; }; Axis2.prototype.dataToCoord = function(data, clamp2) { var extent3 = this._extent; var scale2 = this.scale; data = scale2.normalize(data); if (this.onBand && scale2.type === "ordinal") { extent3 = extent3.slice(); fixExtentWithBands(extent3, scale2.count()); } return linearMap$2(data, NORMALIZED_EXTENT, extent3, clamp2); }; Axis2.prototype.coordToData = function(coord, clamp2) { var extent3 = this._extent; var scale2 = this.scale; if (this.onBand && scale2.type === "ordinal") { extent3 = extent3.slice(); fixExtentWithBands(extent3, scale2.count()); } var t = linearMap$2(coord, extent3, NORMALIZED_EXTENT, clamp2); return this.scale.scale(t); }; Axis2.prototype.pointToData = function(point, clamp2) { return; }; Axis2.prototype.getTicksCoords = function(opt) { opt = opt || {}; var tickModel = opt.tickModel || this.getTickModel(); var result = createAxisTicks(this, tickModel); var ticks = result.ticks; var ticksCoords = map$1(ticks, function(tickVal) { return { coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(tickVal) : tickVal), tickValue: tickVal }; }, this); var alignWithLabel = tickModel.get("alignWithLabel"); fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp); return ticksCoords; }; Axis2.prototype.getMinorTicksCoords = function() { if (this.scale.type === "ordinal") { return []; } var minorTickModel = this.model.getModel("minorTick"); var splitNumber = minorTickModel.get("splitNumber"); if (!(splitNumber > 0 && splitNumber < 100)) { splitNumber = 5; } var minorTicks = this.scale.getMinorTicks(splitNumber); var minorTicksCoords = map$1(minorTicks, function(minorTicksGroup) { return map$1(minorTicksGroup, function(minorTick) { return { coord: this.dataToCoord(minorTick), tickValue: minorTick }; }, this); }, this); return minorTicksCoords; }; Axis2.prototype.getViewLabels = function() { return createAxisLabels(this).labels; }; Axis2.prototype.getLabelModel = function() { return this.model.getModel("axisLabel"); }; Axis2.prototype.getTickModel = function() { return this.model.getModel("axisTick"); }; Axis2.prototype.getBandWidth = function() { var axisExtent = this._extent; var dataExtent = this.scale.getExtent(); var len2 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); len2 === 0 && (len2 = 1); var size = Math.abs(axisExtent[1] - axisExtent[0]); return Math.abs(size) / len2; }; Axis2.prototype.calculateCategoryInterval = function() { return calculateCategoryInterval(this); }; return Axis2; }(); function fixExtentWithBands(extent3, nTick) { var size = extent3[1] - extent3[0]; var len2 = nTick; var margin = size / len2 / 2; extent3[0] += margin; extent3[1] -= margin; } function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp2) { var ticksLen = ticksCoords.length; if (!axis.onBand || alignWithLabel || !ticksLen) { return; } var axisExtent = axis.getExtent(); var last; var diffSize; if (ticksLen === 1) { ticksCoords[0].coord = axisExtent[0]; last = ticksCoords[1] = { coord: axisExtent[0] }; } else { var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue; var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen; each$g(ticksCoords, function(ticksItem) { ticksItem.coord -= shift_1 / 2; }); var dataExtent = axis.scale.getExtent(); diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue; last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize }; ticksCoords.push(last); } var inverse = axisExtent[0] > axisExtent[1]; if (littleThan2(ticksCoords[0].coord, axisExtent[0])) { clamp2 ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift(); } if (clamp2 && littleThan2(axisExtent[0], ticksCoords[0].coord)) { ticksCoords.unshift({ coord: axisExtent[0] }); } if (littleThan2(axisExtent[1], last.coord)) { clamp2 ? last.coord = axisExtent[1] : ticksCoords.pop(); } if (clamp2 && littleThan2(last.coord, axisExtent[1])) { ticksCoords.push({ coord: axisExtent[1] }); } function littleThan2(a, b) { a = round$2(a); b = round$2(b); return inverse ? a > b : a < b; } } var Axis$1 = Axis; function extendComponentModel(proto2) { var Model2 = ComponentModel$1.extend(proto2); ComponentModel$1.registerClass(Model2); return Model2; } function extendComponentView(proto2) { var View2 = ComponentView$1.extend(proto2); ComponentView$1.registerClass(View2); return View2; } function extendSeriesModel(proto2) { var Model2 = SeriesModel$1.extend(proto2); SeriesModel$1.registerClass(Model2); return Model2; } function extendChartView(proto2) { var View2 = ChartView$1.extend(proto2); ChartView$1.registerClass(View2); return View2; } var PI2$3 = Math.PI * 2; var CMD$1 = PathProxy$1.CMD; var DEFAULT_SEARCH_SPACE = ["top", "right", "bottom", "left"]; function getCandidateAnchor(pos, distance2, rect, outPt, outDir) { var width = rect.width; var height = rect.height; switch (pos) { case "top": outPt.set(rect.x + width / 2, rect.y - distance2); outDir.set(0, -1); break; case "bottom": outPt.set(rect.x + width / 2, rect.y + height + distance2); outDir.set(0, 1); break; case "left": outPt.set(rect.x - distance2, rect.y + height / 2); outDir.set(-1, 0); break; case "right": outPt.set(rect.x + width + distance2, rect.y + height / 2); outDir.set(1, 0); break; } } function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out2) { x -= cx; y -= cy; var d = Math.sqrt(x * x + y * y); x /= d; y /= d; var ox = x * r + cx; var oy = y * r + cy; if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) { out2[0] = ox; out2[1] = oy; return d - r; } if (anticlockwise) { var tmp = startAngle; startAngle = normalizeRadian(endAngle); endAngle = normalizeRadian(tmp); } else { startAngle = normalizeRadian(startAngle); endAngle = normalizeRadian(endAngle); } if (startAngle > endAngle) { endAngle += PI2$3; } var angle = Math.atan2(y, x); if (angle < 0) { angle += PI2$3; } if (angle >= startAngle && angle <= endAngle || angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle) { out2[0] = ox; out2[1] = oy; return d - r; } var x1 = r * Math.cos(startAngle) + cx; var y1 = r * Math.sin(startAngle) + cy; var x2 = r * Math.cos(endAngle) + cx; var y2 = r * Math.sin(endAngle) + cy; var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y); var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y); if (d1 < d2) { out2[0] = x1; out2[1] = y1; return Math.sqrt(d1); } else { out2[0] = x2; out2[1] = y2; return Math.sqrt(d2); } } function projectPointToLine(x1, y1, x2, y2, x, y, out2, limitToEnds) { var dx = x - x1; var dy = y - y1; var dx1 = x2 - x1; var dy1 = y2 - y1; var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1); dx1 /= lineLen; dy1 /= lineLen; var projectedLen = dx * dx1 + dy * dy1; var t = projectedLen / lineLen; if (limitToEnds) { t = Math.min(Math.max(t, 0), 1); } t *= lineLen; var ox = out2[0] = x1 + t * dx1; var oy = out2[1] = y1 + t * dy1; return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); } function projectPointToRect(x1, y1, width, height, x, y, out2) { if (width < 0) { x1 = x1 + width; width = -width; } if (height < 0) { y1 = y1 + height; height = -height; } var x2 = x1 + width; var y2 = y1 + height; var ox = out2[0] = Math.min(Math.max(x, x1), x2); var oy = out2[1] = Math.min(Math.max(y, y1), y2); return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); } var tmpPt = []; function nearestPointOnRect(pt, rect, out2) { var dist2 = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt); out2.set(tmpPt[0], tmpPt[1]); return dist2; } function nearestPointOnPath(pt, path, out2) { var xi = 0; var yi = 0; var x0 = 0; var y0 = 0; var x1; var y1; var minDist = Infinity; var data = path.data; var x = pt.x; var y = pt.y; for (var i = 0; i < data.length; ) { var cmd = data[i++]; if (i === 1) { xi = data[i]; yi = data[i + 1]; x0 = xi; y0 = yi; } var d = minDist; switch (cmd) { case CMD$1.M: x0 = data[i++]; y0 = data[i++]; xi = x0; yi = y0; break; case CMD$1.L: d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true); xi = data[i++]; yi = data[i++]; break; case CMD$1.C: d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); xi = data[i++]; yi = data[i++]; break; case CMD$1.Q: d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); xi = data[i++]; yi = data[i++]; break; case CMD$1.A: var cx = data[i++]; var cy = data[i++]; var rx = data[i++]; var ry = data[i++]; var theta = data[i++]; var dTheta = data[i++]; i += 1; var anticlockwise = !!(1 - data[i++]); x1 = Math.cos(theta) * rx + cx; y1 = Math.sin(theta) * ry + cy; if (i <= 1) { x0 = x1; y0 = y1; } var _x = (x - cx) * ry / rx + cx; d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt); xi = Math.cos(theta + dTheta) * rx + cx; yi = Math.sin(theta + dTheta) * ry + cy; break; case CMD$1.R: x0 = xi = data[i++]; y0 = yi = data[i++]; var width = data[i++]; var height = data[i++]; d = projectPointToRect(x0, y0, width, height, x, y, tmpPt); break; case CMD$1.Z: d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true); xi = x0; yi = y0; break; } if (d < minDist) { minDist = d; out2.set(tmpPt[0], tmpPt[1]); } } return minDist; } var pt0 = new Point$1(); var pt1 = new Point$1(); var pt2 = new Point$1(); var dir = new Point$1(); var dir2 = new Point$1(); function updateLabelLinePoints(target, labelLineModel) { if (!target) { return; } var labelLine = target.getTextGuideLine(); var label = target.getTextContent(); if (!(label && labelLine)) { return; } var labelGuideConfig = target.textGuideLineConfig || {}; var points2 = [[0, 0], [0, 0], [0, 0]]; var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE; var labelRect = label.getBoundingRect().clone(); labelRect.applyTransform(label.getComputedTransform()); var minDist = Infinity; var anchorPoint = labelGuideConfig.anchor; var targetTransform = target.getComputedTransform(); var targetInversedTransform = targetTransform && invert([], targetTransform); var len2 = labelLineModel.get("length2") || 0; if (anchorPoint) { pt2.copy(anchorPoint); } for (var i = 0; i < searchSpace.length; i++) { var candidate = searchSpace[i]; getCandidateAnchor(candidate, 0, labelRect, pt0, dir); Point$1.scaleAndAdd(pt1, pt0, dir, len2); pt1.transform(targetInversedTransform); var boundingRect = target.getBoundingRect(); var dist2 = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path$1 ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); if (dist2 < minDist) { minDist = dist2; pt1.transform(targetTransform); pt2.transform(targetTransform); pt2.toArray(points2[0]); pt1.toArray(points2[1]); pt0.toArray(points2[2]); } } limitTurnAngle(points2, labelLineModel.get("minTurnAngle")); labelLine.setShape({ points: points2 }); } var tmpArr = []; var tmpProjPoint = new Point$1(); function limitTurnAngle(linePoints, minTurnAngle) { if (!(minTurnAngle <= 180 && minTurnAngle > 0)) { return; } minTurnAngle = minTurnAngle / 180 * Math.PI; pt0.fromArray(linePoints[0]); pt1.fromArray(linePoints[1]); pt2.fromArray(linePoints[2]); Point$1.sub(dir, pt0, pt1); Point$1.sub(dir2, pt2, pt1); var len1 = dir.len(); var len2 = dir2.len(); if (len1 < 1e-3 || len2 < 1e-3) { return; } dir.scale(1 / len1); dir2.scale(1 / len2); var angleCos = dir.dot(dir2); var minTurnAngleCos = Math.cos(minTurnAngle); if (minTurnAngleCos < angleCos) { var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); tmpProjPoint.fromArray(tmpArr); tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); if (isNaN(t)) { return; } if (t < 0) { Point$1.copy(tmpProjPoint, pt1); } else if (t > 1) { Point$1.copy(tmpProjPoint, pt2); } tmpProjPoint.toArray(linePoints[1]); } } function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) { if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) { return; } maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI; pt0.fromArray(linePoints[0]); pt1.fromArray(linePoints[1]); pt2.fromArray(linePoints[2]); Point$1.sub(dir, pt1, pt0); Point$1.sub(dir2, pt2, pt1); var len1 = dir.len(); var len2 = dir2.len(); if (len1 < 1e-3 || len2 < 1e-3) { return; } dir.scale(1 / len1); dir2.scale(1 / len2); var angleCos = dir.dot(surfaceNormal); var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle); if (angleCos < maxSurfaceAngleCos) { var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); tmpProjPoint.fromArray(tmpArr); var HALF_PI = Math.PI / 2; var angle2 = Math.acos(dir2.dot(surfaceNormal)); var newAngle = HALF_PI + angle2 - maxSurfaceAngle; if (newAngle >= HALF_PI) { Point$1.copy(tmpProjPoint, pt2); } else { tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); if (isNaN(t)) { return; } if (t < 0) { Point$1.copy(tmpProjPoint, pt1); } else if (t > 1) { Point$1.copy(tmpProjPoint, pt2); } } tmpProjPoint.toArray(linePoints[1]); } } function setLabelLineState(labelLine, ignore, stateName, stateModel) { var isNormal = stateName === "normal"; var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); stateObj.ignore = ignore; var smooth = stateModel.get("smooth"); if (smooth && smooth === true) { smooth = 0.3; } stateObj.shape = stateObj.shape || {}; if (smooth > 0) { stateObj.shape.smooth = smooth; } var styleObj = stateModel.getModel("lineStyle").getLineStyle(); isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj; } function buildLabelLinePath(path, shape) { var smooth = shape.smooth; var points2 = shape.points; if (!points2) { return; } path.moveTo(points2[0][0], points2[0][1]); if (smooth > 0 && points2.length >= 3) { var len1 = dist$1(points2[0], points2[1]); var len2 = dist$1(points2[1], points2[2]); if (!len1 || !len2) { path.lineTo(points2[1][0], points2[1][1]); path.lineTo(points2[2][0], points2[2][1]); return; } var moveLen = Math.min(len1, len2) * smooth; var midPoint0 = lerp$1([], points2[1], points2[0], moveLen / len1); var midPoint2 = lerp$1([], points2[1], points2[2], moveLen / len2); var midPoint1 = lerp$1([], midPoint0, midPoint2, 0.5); path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]); path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points2[2][0], points2[2][1]); } else { for (var i = 1; i < points2.length; i++) { path.lineTo(points2[i][0], points2[i][1]); } } } function setLabelLineStyle(targetEl, statesModels, defaultStyle) { var labelLine = targetEl.getTextGuideLine(); var label = targetEl.getTextContent(); if (!label) { if (labelLine) { targetEl.removeTextGuideLine(); } return; } var normalModel = statesModels.normal; var showNormal = normalModel.get("show"); var labelIgnoreNormal = label.ignore; for (var i = 0; i < DISPLAY_STATES.length; i++) { var stateName = DISPLAY_STATES[i]; var stateModel = statesModels[stateName]; var isNormal = stateName === "normal"; if (stateModel) { var stateShow = stateModel.get("show"); var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal); if (isLabelIgnored || !retrieve2(stateShow, showNormal)) { var stateObj = isNormal ? labelLine : labelLine && labelLine.states.normal; if (stateObj) { stateObj.ignore = true; } continue; } if (!labelLine) { labelLine = new Polyline$3(); targetEl.setTextGuideLine(labelLine); if (!isNormal && (labelIgnoreNormal || !showNormal)) { setLabelLineState(labelLine, true, "normal", statesModels.normal); } if (targetEl.stateProxy) { labelLine.stateProxy = targetEl.stateProxy; } } setLabelLineState(labelLine, false, stateName, stateModel); } } if (labelLine) { defaults(labelLine.style, defaultStyle); labelLine.style.fill = null; var showAbove = normalModel.get("showAbove"); var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {}; labelLineConfig.showAbove = showAbove || false; labelLine.buildPath = buildLabelLinePath; } } function getLabelLineStatesModels(itemModel, labelLineName) { labelLineName = labelLineName || "labelLine"; var statesModels = { normal: itemModel.getModel(labelLineName) }; for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; statesModels[stateName] = itemModel.getModel([stateName, labelLineName]); } return statesModels; } function prepareLayoutList(input) { var list2 = []; for (var i = 0; i < input.length; i++) { var rawItem = input[i]; if (rawItem.defaultAttr.ignore) { continue; } var label = rawItem.label; var transform2 = label.getComputedTransform(); var localRect = label.getBoundingRect(); var isAxisAligned = !transform2 || transform2[1] < 1e-5 && transform2[2] < 1e-5; var minMargin = label.style.margin || 0; var globalRect = localRect.clone(); globalRect.applyTransform(transform2); globalRect.x -= minMargin / 2; globalRect.y -= minMargin / 2; globalRect.width += minMargin; globalRect.height += minMargin; var obb = isAxisAligned ? new OrientedBoundingRect$1(localRect, transform2) : null; list2.push({ label, labelLine: rawItem.labelLine, rect: globalRect, localRect, obb, priority: rawItem.priority, defaultAttr: rawItem.defaultAttr, layoutOption: rawItem.computedLayoutOption, axisAligned: isAxisAligned, transform: transform2 }); } return list2; } function shiftLayout(list2, xyDim, sizeDim, minBound, maxBound, balanceShift) { var len2 = list2.length; if (len2 < 2) { return; } list2.sort(function(a, b) { return a.rect[xyDim] - b.rect[xyDim]; }); var lastPos = 0; var delta; var adjusted = false; var totalShifts = 0; for (var i = 0; i < len2; i++) { var item = list2[i]; var rect = item.rect; delta = rect[xyDim] - lastPos; if (delta < 0) { rect[xyDim] -= delta; item.label[xyDim] -= delta; adjusted = true; } var shift = Math.max(-delta, 0); totalShifts += shift; lastPos = rect[xyDim] + rect[sizeDim]; } if (totalShifts > 0 && balanceShift) { shiftList(-totalShifts / len2, 0, len2); } var first = list2[0]; var last = list2[len2 - 1]; var minGap; var maxGap; updateMinMaxGap(); minGap < 0 && squeezeGaps(-minGap, 0.8); maxGap < 0 && squeezeGaps(maxGap, 0.8); updateMinMaxGap(); takeBoundsGap(minGap, maxGap, 1); takeBoundsGap(maxGap, minGap, -1); updateMinMaxGap(); if (minGap < 0) { squeezeWhenBailout(-minGap); } if (maxGap < 0) { squeezeWhenBailout(maxGap); } function updateMinMaxGap() { minGap = first.rect[xyDim] - minBound; maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim]; } function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) { if (gapThisBound < 0) { var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound); if (moveFromMaxGap > 0) { shiftList(moveFromMaxGap * moveDir, 0, len2); var remained = moveFromMaxGap + gapThisBound; if (remained < 0) { squeezeGaps(-remained * moveDir, 1); } } else { squeezeGaps(-gapThisBound * moveDir, 1); } } } function shiftList(delta2, start2, end2) { if (delta2 !== 0) { adjusted = true; } for (var i2 = start2; i2 < end2; i2++) { var item2 = list2[i2]; var rect2 = item2.rect; rect2[xyDim] += delta2; item2.label[xyDim] += delta2; } } function squeezeGaps(delta2, maxSqeezePercent) { var gaps = []; var totalGaps = 0; for (var i2 = 1; i2 < len2; i2++) { var prevItemRect = list2[i2 - 1].rect; var gap = Math.max(list2[i2].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0); gaps.push(gap); totalGaps += gap; } if (!totalGaps) { return; } var squeezePercent = Math.min(Math.abs(delta2) / totalGaps, maxSqeezePercent); if (delta2 > 0) { for (var i2 = 0; i2 < len2 - 1; i2++) { var movement = gaps[i2] * squeezePercent; shiftList(movement, 0, i2 + 1); } } else { for (var i2 = len2 - 1; i2 > 0; i2--) { var movement = gaps[i2 - 1] * squeezePercent; shiftList(-movement, i2, len2); } } } function squeezeWhenBailout(delta2) { var dir3 = delta2 < 0 ? -1 : 1; delta2 = Math.abs(delta2); var moveForEachLabel = Math.ceil(delta2 / (len2 - 1)); for (var i2 = 0; i2 < len2 - 1; i2++) { if (dir3 > 0) { shiftList(moveForEachLabel, 0, i2 + 1); } else { shiftList(-moveForEachLabel, len2 - i2 - 1, len2); } delta2 -= moveForEachLabel; if (delta2 <= 0) { return; } } } return adjusted; } function shiftLayoutOnX(list2, leftBound, rightBound, balanceShift) { return shiftLayout(list2, "x", "width", leftBound, rightBound, balanceShift); } function shiftLayoutOnY(list2, topBound, bottomBound, balanceShift) { return shiftLayout(list2, "y", "height", topBound, bottomBound, balanceShift); } function hideOverlap(labelList) { var displayedLabels = []; labelList.sort(function(a, b) { return b.priority - a.priority; }); var globalRect = new BoundingRect$1(0, 0, 0, 0); function hideEl(el) { if (!el.ignore) { var emphasisState = el.ensureState("emphasis"); if (emphasisState.ignore == null) { emphasisState.ignore = false; } } el.ignore = true; } for (var i = 0; i < labelList.length; i++) { var labelItem = labelList[i]; var isAxisAligned = labelItem.axisAligned; var localRect = labelItem.localRect; var transform2 = labelItem.transform; var label = labelItem.label; var labelLine = labelItem.labelLine; globalRect.copy(labelItem.rect); globalRect.width -= 0.1; globalRect.height -= 0.1; globalRect.x += 0.05; globalRect.y += 0.05; var obb = labelItem.obb; var overlapped = false; for (var j = 0; j < displayedLabels.length; j++) { var existsTextCfg = displayedLabels[j]; if (!globalRect.intersect(existsTextCfg.rect)) { continue; } if (isAxisAligned && existsTextCfg.axisAligned) { overlapped = true; break; } if (!existsTextCfg.obb) { existsTextCfg.obb = new OrientedBoundingRect$1(existsTextCfg.localRect, existsTextCfg.transform); } if (!obb) { obb = new OrientedBoundingRect$1(localRect, transform2); } if (obb.intersect(existsTextCfg.obb)) { overlapped = true; break; } } if (overlapped) { hideEl(label); labelLine && hideEl(labelLine); } else { label.attr("ignore", labelItem.defaultAttr.ignore); labelLine && labelLine.attr("ignore", labelItem.defaultAttr.labelGuideIgnore); displayedLabels.push(labelItem); } } } function cloneArr(points2) { if (points2) { var newPoints = []; for (var i = 0; i < points2.length; i++) { newPoints.push(points2[i].slice()); } return newPoints; } } function prepareLayoutCallbackParams(labelItem, hostEl) { var label = labelItem.label; var labelLine = hostEl && hostEl.getTextGuideLine(); return { dataIndex: labelItem.dataIndex, dataType: labelItem.dataType, seriesIndex: labelItem.seriesModel.seriesIndex, text: labelItem.label.style.text, rect: labelItem.hostRect, labelRect: labelItem.rect, align: label.style.align, verticalAlign: label.style.verticalAlign, labelLinePoints: cloneArr(labelLine && labelLine.shape.points) }; } var LABEL_OPTION_TO_STYLE_KEYS = ["align", "verticalAlign", "width", "height", "fontSize"]; var dummyTransformable = new Transformable$1(); var labelLayoutInnerStore = makeInner(); var labelLineAnimationStore = makeInner(); function extendWithKeys(target, source, keys2) { for (var i = 0; i < keys2.length; i++) { var key2 = keys2[i]; if (source[key2] != null) { target[key2] = source[key2]; } } } var LABEL_LAYOUT_PROPS = ["x", "y", "rotation"]; var LabelManager = function() { function LabelManager2() { this._labelList = []; this._chartViewList = []; } LabelManager2.prototype.clearLabels = function() { this._labelList = []; this._chartViewList = []; }; LabelManager2.prototype._addLabel = function(dataIndex, dataType, seriesModel, label, layoutOption) { var labelStyle = label.style; var hostEl = label.__hostTarget; var textConfig = hostEl.textConfig || {}; var labelTransform = label.getComputedTransform(); var labelRect = label.getBoundingRect().plain(); BoundingRect$1.applyTransform(labelRect, labelRect, labelTransform); if (labelTransform) { dummyTransformable.setLocalTransform(labelTransform); } else { dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0; dummyTransformable.scaleX = dummyTransformable.scaleY = 1; } var host = label.__hostTarget; var hostRect; if (host) { hostRect = host.getBoundingRect().plain(); var transform2 = host.getComputedTransform(); BoundingRect$1.applyTransform(hostRect, hostRect, transform2); } var labelGuide = hostRect && host.getTextGuideLine(); this._labelList.push({ label, labelLine: labelGuide, seriesModel, dataIndex, dataType, layoutOption, computedLayoutOption: null, rect: labelRect, hostRect, priority: hostRect ? hostRect.width * hostRect.height : 0, defaultAttr: { ignore: label.ignore, labelGuideIgnore: labelGuide && labelGuide.ignore, x: dummyTransformable.x, y: dummyTransformable.y, scaleX: dummyTransformable.scaleX, scaleY: dummyTransformable.scaleY, rotation: dummyTransformable.rotation, style: { x: labelStyle.x, y: labelStyle.y, align: labelStyle.align, verticalAlign: labelStyle.verticalAlign, width: labelStyle.width, height: labelStyle.height, fontSize: labelStyle.fontSize }, cursor: label.cursor, attachedPos: textConfig.position, attachedRot: textConfig.rotation } }); }; LabelManager2.prototype.addLabelsOfSeries = function(chartView) { var _this = this; this._chartViewList.push(chartView); var seriesModel = chartView.__model; var layoutOption = seriesModel.get("labelLayout"); if (!(isFunction(layoutOption) || keys(layoutOption).length)) { return; } chartView.group.traverse(function(child) { if (child.ignore) { return true; } var textEl = child.getTextContent(); var ecData = getECData(child); if (textEl && !textEl.disableLabelLayout) { _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption); } }); }; LabelManager2.prototype.updateLayoutConfig = function(api) { var width = api.getWidth(); var height = api.getHeight(); function createDragHandler(el, labelLineModel) { return function() { updateLabelLinePoints(el, labelLineModel); }; } for (var i = 0; i < this._labelList.length; i++) { var labelItem = this._labelList[i]; var label = labelItem.label; var hostEl = label.__hostTarget; var defaultLabelAttr = labelItem.defaultAttr; var layoutOption = void 0; if (typeof labelItem.layoutOption === "function") { layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl)); } else { layoutOption = labelItem.layoutOption; } layoutOption = layoutOption || {}; labelItem.computedLayoutOption = layoutOption; var degreeToRadian = Math.PI / 180; if (hostEl) { hostEl.setTextConfig({ local: false, position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos, rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot, offset: [layoutOption.dx || 0, layoutOption.dy || 0] }); } var needsUpdateLabelLine = false; if (layoutOption.x != null) { label.x = parsePercent$1(layoutOption.x, width); label.setStyle("x", 0); needsUpdateLabelLine = true; } else { label.x = defaultLabelAttr.x; label.setStyle("x", defaultLabelAttr.style.x); } if (layoutOption.y != null) { label.y = parsePercent$1(layoutOption.y, height); label.setStyle("y", 0); needsUpdateLabelLine = true; } else { label.y = defaultLabelAttr.y; label.setStyle("y", defaultLabelAttr.style.y); } if (layoutOption.labelLinePoints) { var guideLine = hostEl.getTextGuideLine(); if (guideLine) { guideLine.setShape({ points: layoutOption.labelLinePoints }); needsUpdateLabelLine = false; } } var labelLayoutStore = labelLayoutInnerStore(label); labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine; label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation; label.scaleX = defaultLabelAttr.scaleX; label.scaleY = defaultLabelAttr.scaleY; for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) { var key2 = LABEL_OPTION_TO_STYLE_KEYS[k]; label.setStyle(key2, layoutOption[key2] != null ? layoutOption[key2] : defaultLabelAttr.style[key2]); } if (layoutOption.draggable) { label.draggable = true; label.cursor = "move"; if (hostEl) { var hostModel = labelItem.seriesModel; if (labelItem.dataIndex != null) { var data = labelItem.seriesModel.getData(labelItem.dataType); hostModel = data.getItemModel(labelItem.dataIndex); } label.on("drag", createDragHandler(hostEl, hostModel.getModel("labelLine"))); } } else { label.off("drag"); label.cursor = defaultLabelAttr.cursor; } } }; LabelManager2.prototype.layout = function(api) { var width = api.getWidth(); var height = api.getHeight(); var labelList = prepareLayoutList(this._labelList); var labelsNeedsAdjustOnX = filter(labelList, function(item) { return item.layoutOption.moveOverlap === "shiftX"; }); var labelsNeedsAdjustOnY = filter(labelList, function(item) { return item.layoutOption.moveOverlap === "shiftY"; }); shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width); shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height); var labelsNeedsHideOverlap = filter(labelList, function(item) { return item.layoutOption.hideOverlap; }); hideOverlap(labelsNeedsHideOverlap); }; LabelManager2.prototype.processLabelsOverall = function() { var _this = this; each$g(this._chartViewList, function(chartView) { var seriesModel = chartView.__model; var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate; var animationEnabled = seriesModel.isAnimationEnabled(); chartView.group.traverse(function(child) { if (child.ignore && !child.forceLabelAnimation) { return true; } var needsUpdateLabelLine = !ignoreLabelLineUpdate; var label = child.getTextContent(); if (!needsUpdateLabelLine && label) { needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine; } if (needsUpdateLabelLine) { _this._updateLabelLine(child, seriesModel); } if (animationEnabled) { _this._animateLabels(child, seriesModel); } }); }); }; LabelManager2.prototype._updateLabelLine = function(el, seriesModel) { var textEl = el.getTextContent(); var ecData = getECData(el); var dataIndex = ecData.dataIndex; if (textEl && dataIndex != null) { var data = seriesModel.getData(ecData.dataType); var itemModel = data.getItemModel(dataIndex); var defaultStyle = {}; var visualStyle = data.getItemVisual(dataIndex, "style"); var visualType = data.getVisual("drawType"); defaultStyle.stroke = visualStyle[visualType]; var labelLineModel = itemModel.getModel("labelLine"); setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle); updateLabelLinePoints(el, labelLineModel); } }; LabelManager2.prototype._animateLabels = function(el, seriesModel) { var textEl = el.getTextContent(); var guideLine = el.getTextGuideLine(); if (textEl && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) { var layoutStore = labelLayoutInnerStore(textEl); var oldLayout = layoutStore.oldLayout; var ecData = getECData(el); var dataIndex = ecData.dataIndex; var newProps = { x: textEl.x, y: textEl.y, rotation: textEl.rotation }; var data = seriesModel.getData(ecData.dataType); if (!oldLayout) { textEl.attr(newProps); if (!labelInner(textEl).valueAnimation) { var oldOpacity = retrieve2(textEl.style.opacity, 1); textEl.style.opacity = 0; initProps(textEl, { style: { opacity: oldOpacity } }, seriesModel, dataIndex); } } else { textEl.attr(oldLayout); var prevStates = el.prevStates; if (prevStates) { if (indexOf(prevStates, "select") >= 0) { textEl.attr(layoutStore.oldLayoutSelect); } if (indexOf(prevStates, "emphasis") >= 0) { textEl.attr(layoutStore.oldLayoutEmphasis); } } updateProps$1(textEl, newProps, seriesModel, dataIndex); } layoutStore.oldLayout = newProps; if (textEl.states.select) { var layoutSelect = layoutStore.oldLayoutSelect = {}; extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS); extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS); } if (textEl.states.emphasis) { var layoutEmphasis = layoutStore.oldLayoutEmphasis = {}; extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS); extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS); } animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel); } if (guideLine && !guideLine.ignore && !guideLine.invisible) { var layoutStore = labelLineAnimationStore(guideLine); var oldLayout = layoutStore.oldLayout; var newLayout = { points: guideLine.shape.points }; if (!oldLayout) { guideLine.setShape(newLayout); guideLine.style.strokePercent = 0; initProps(guideLine, { style: { strokePercent: 1 } }, seriesModel); } else { guideLine.attr({ shape: oldLayout }); updateProps$1(guideLine, { shape: newLayout }, seriesModel); } layoutStore.oldLayout = newLayout; } }; return LabelManager2; }(); var LabelManager$1 = LabelManager; var getLabelManager = makeInner(); function installLabelLayout(registers) { registers.registerUpdateLifecycle("series:beforeupdate", function(ecModel, api, params) { var labelManager = getLabelManager(api).labelManager; if (!labelManager) { labelManager = getLabelManager(api).labelManager = new LabelManager$1(); } labelManager.clearLabels(); }); registers.registerUpdateLifecycle("series:layoutlabels", function(ecModel, api, params) { var labelManager = getLabelManager(api).labelManager; params.updatedSeries.forEach(function(series) { labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series)); }); labelManager.updateLayoutConfig(api); labelManager.layout(api); labelManager.processLabelsOverall(); }); } function createElement(name) { return document.createElementNS("http://www.w3.org/2000/svg", name); } function normalizeColor(color2) { var opacity; if (!color2 || color2 === "transparent") { color2 = "none"; } else if (typeof color2 === "string" && color2.indexOf("rgba") > -1) { var arr = parse(color2); if (arr) { color2 = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")"; opacity = arr[3]; } } return { color: color2, opacity: opacity == null ? 1 : opacity }; } function diff(oldArr, newArr, equals) { if (!equals) { equals = function(a, b) { return a === b; }; } oldArr = oldArr.slice(); newArr = newArr.slice(); var newLen = newArr.length; var oldLen = oldArr.length; var editLength = 1; var maxEditLength = newLen + oldLen; var bestPath = [{ newPos: -1, components: [] }]; var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals); if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { var indices = []; for (var i = 0; i < newArr.length; i++) { indices.push(i); } return [{ indices, count: newArr.length, added: false, removed: false }]; } function execEditLength() { for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { var basePath; var addPath = bestPath[diagonalPath - 1]; var removePath = bestPath[diagonalPath + 1]; var oldPos2 = (removePath ? removePath.newPos : 0) - diagonalPath; if (addPath) { bestPath[diagonalPath - 1] = void 0; } var canAdd = addPath && addPath.newPos + 1 < newLen; var canRemove = removePath && 0 <= oldPos2 && oldPos2 < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { basePath = clonePath(removePath); pushComponent(basePath.components, false, true); } else { basePath = addPath; basePath.newPos++; pushComponent(basePath.components, true, false); } oldPos2 = extractCommon(basePath, newArr, oldArr, diagonalPath, equals); if (basePath.newPos + 1 >= newLen && oldPos2 + 1 >= oldLen) { return buildValues(basePath.components); } else { bestPath[diagonalPath] = basePath; } } editLength++; } while (editLength <= maxEditLength) { var ret = execEditLength(); if (ret) { return ret; } } } function extractCommon(basePath, newArr, oldArr, diagonalPath, equals) { var newLen = newArr.length; var oldLen = oldArr.length; var newPos = basePath.newPos; var oldPos = newPos - diagonalPath; var commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos + 1], oldArr[oldPos + 1])) { newPos++; oldPos++; commonCount++; } if (commonCount) { basePath.components.push({ count: commonCount, added: false, removed: false, indices: [] }); } basePath.newPos = newPos; return oldPos; } function pushComponent(components, added, removed) { var last = components[components.length - 1]; if (last && last.added === added && last.removed === removed) { components[components.length - 1] = { count: last.count + 1, added, removed, indices: [] }; } else { components.push({ count: 1, added, removed, indices: [] }); } } function buildValues(components) { var componentPos = 0; var componentLen = components.length; var newPos = 0; var oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; if (!component.removed) { var indices = []; for (var i = newPos; i < newPos + component.count; i++) { indices.push(i); } component.indices = indices; newPos += component.count; if (!component.added) { oldPos += component.count; } } else { for (var i = oldPos; i < oldPos + component.count; i++) { component.indices.push(i); } oldPos += component.count; } } return components; } function clonePath(path) { return { newPos: path.newPos, components: path.components.slice(0) }; } function arrayDiff(oldArr, newArr, equal) { return diff(oldArr, newArr, equal); } var NONE = "none"; var mathRound = Math.round; var mathSin = Math.sin; var mathCos = Math.cos; var PI$4 = Math.PI; var PI2$2 = Math.PI * 2; var degree = 180 / PI$4; var EPSILON = 1e-4; function round3(val) { return mathRound(val * 1e3) / 1e3; } function round4(val) { return mathRound(val * 1e4) / 1e4; } function isAroundZero(val) { return val < EPSILON && val > -EPSILON; } function pathHasFill(style) { var fill = style.fill; return fill != null && fill !== NONE; } function pathHasStroke(style) { var stroke = style.stroke; return stroke != null && stroke !== NONE; } function setTransform(svgEl, m2) { if (m2) { attr(svgEl, "transform", "matrix(" + round3(m2[0]) + "," + round3(m2[1]) + "," + round3(m2[2]) + "," + round3(m2[3]) + "," + round4(m2[4]) + "," + round4(m2[5]) + ")"); } } function attr(el, key2, val) { if (!val || val.type !== "linear" && val.type !== "radial") { el.setAttribute(key2, val); } } function attrXLink(el, key2, val) { el.setAttributeNS("http://www.w3.org/1999/xlink", key2, val); } function attrXML(el, key2, val) { el.setAttributeNS("http://www.w3.org/XML/1998/namespace", key2, val); } function bindStyle(svgEl, style, el) { var opacity = style.opacity == null ? 1 : style.opacity; if (el instanceof ZRImage$1) { attr(svgEl, "opacity", opacity + ""); return; } if (pathHasFill(style)) { var fill = normalizeColor(style.fill); attr(svgEl, "fill", fill.color); attr(svgEl, "fill-opacity", (style.fillOpacity != null ? style.fillOpacity * fill.opacity * opacity : fill.opacity * opacity) + ""); } else { attr(svgEl, "fill", NONE); } if (pathHasStroke(style)) { var stroke = normalizeColor(style.stroke); attr(svgEl, "stroke", stroke.color); var strokeWidth = style.lineWidth; var strokeScale_1 = style.strokeNoScale ? el.getLineScale() : 1; attr(svgEl, "stroke-width", (strokeScale_1 ? strokeWidth / strokeScale_1 : 0) + ""); attr(svgEl, "paint-order", style.strokeFirst ? "stroke" : "fill"); attr(svgEl, "stroke-opacity", (style.strokeOpacity != null ? style.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity) + ""); var lineDash = style.lineDash && strokeWidth > 0 && normalizeLineDash(style.lineDash, strokeWidth); if (lineDash) { var lineDashOffset = style.lineDashOffset; if (strokeScale_1 && strokeScale_1 !== 1) { lineDash = map$1(lineDash, function(rawVal) { return rawVal / strokeScale_1; }); if (lineDashOffset) { lineDashOffset /= strokeScale_1; lineDashOffset = mathRound(lineDashOffset); } } attr(svgEl, "stroke-dasharray", lineDash.join(",")); attr(svgEl, "stroke-dashoffset", (lineDashOffset || 0) + ""); } else { attr(svgEl, "stroke-dasharray", NONE); } style.lineCap && attr(svgEl, "stroke-linecap", style.lineCap); style.lineJoin && attr(svgEl, "stroke-linejoin", style.lineJoin); style.miterLimit && attr(svgEl, "stroke-miterlimit", style.miterLimit + ""); } else { attr(svgEl, "stroke", NONE); } } var SVGPathRebuilder = function() { function SVGPathRebuilder2() { } SVGPathRebuilder2.prototype.reset = function() { this._d = []; this._str = ""; }; SVGPathRebuilder2.prototype.moveTo = function(x, y) { this._add("M", x, y); }; SVGPathRebuilder2.prototype.lineTo = function(x, y) { this._add("L", x, y); }; SVGPathRebuilder2.prototype.bezierCurveTo = function(x, y, x2, y2, x3, y3) { this._add("C", x, y, x2, y2, x3, y3); }; SVGPathRebuilder2.prototype.quadraticCurveTo = function(x, y, x2, y2) { this._add("Q", x, y, x2, y2); }; SVGPathRebuilder2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise); }; SVGPathRebuilder2.prototype.ellipse = function(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) { var firstCmd = this._d.length === 0; var dTheta = endAngle - startAngle; var clockwise = !anticlockwise; var dThetaPositive = Math.abs(dTheta); var isCircle = isAroundZero(dThetaPositive - PI2$2) || (clockwise ? dTheta >= PI2$2 : -dTheta >= PI2$2); var unifiedTheta = dTheta > 0 ? dTheta % PI2$2 : dTheta % PI2$2 + PI2$2; var large = false; if (isCircle) { large = true; } else if (isAroundZero(dThetaPositive)) { large = false; } else { large = unifiedTheta >= PI$4 === !!clockwise; } var x0 = round4(cx + rx * mathCos(startAngle)); var y0 = round4(cy + ry * mathSin(startAngle)); if (isCircle) { if (clockwise) { dTheta = PI2$2 - 1e-4; } else { dTheta = -PI2$2 + 1e-4; } large = true; if (firstCmd) { this._d.push("M", x0, y0); } } var x = round4(cx + rx * mathCos(startAngle + dTheta)); var y = round4(cy + ry * mathSin(startAngle + dTheta)); if (isNaN(x0) || isNaN(y0) || isNaN(rx) || isNaN(ry) || isNaN(psi) || isNaN(degree) || isNaN(x) || isNaN(y)) { return ""; } this._d.push("A", round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y); }; SVGPathRebuilder2.prototype.rect = function(x, y, w, h) { this._add("M", x, y); this._add("L", x + w, y); this._add("L", x + w, y + h); this._add("L", x, y + h); this._add("L", x, y); this._add("Z"); }; SVGPathRebuilder2.prototype.closePath = function() { if (this._d.length > 0) { this._add("Z"); } }; SVGPathRebuilder2.prototype._add = function(cmd, a, b, c, d, e2, f, g, h) { this._d.push(cmd); for (var i = 1; i < arguments.length; i++) { var val = arguments[i]; if (isNaN(val)) { this._invalid = true; return; } this._d.push(round4(val)); } }; SVGPathRebuilder2.prototype.generateStr = function() { this._str = this._invalid ? "" : this._d.join(" "); this._d = []; }; SVGPathRebuilder2.prototype.getStr = function() { return this._str; }; return SVGPathRebuilder2; }(); var svgPath = { brush: function(el) { var style = el.style; var svgEl = el.__svgEl; if (!svgEl) { svgEl = createElement("path"); el.__svgEl = svgEl; } if (!el.path) { el.createPathProxy(); } var path = el.path; if (el.shapeChanged()) { path.beginPath(); el.buildPath(path, el.shape); el.pathUpdated(); } var pathVersion = path.getVersion(); var elExt = el; var svgPathBuilder = elExt.__svgPathBuilder; if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || el.style.strokePercent < 1) { if (!svgPathBuilder) { svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder(); } svgPathBuilder.reset(); path.rebuildPath(svgPathBuilder, el.style.strokePercent); svgPathBuilder.generateStr(); elExt.__svgPathVersion = pathVersion; } attr(svgEl, "d", svgPathBuilder.getStr()); bindStyle(svgEl, style, el); setTransform(svgEl, el.transform); } }; var svgImage = { brush: function(el) { var style = el.style; var image = style.image; if (image instanceof HTMLImageElement) { image = image.src; } else if (image instanceof HTMLCanvasElement) { image = image.toDataURL(); } if (!image) { return; } var x = style.x || 0; var y = style.y || 0; var dw = style.width; var dh = style.height; var svgEl = el.__svgEl; if (!svgEl) { svgEl = createElement("image"); el.__svgEl = svgEl; } if (image !== el.__imageSrc) { attrXLink(svgEl, "href", image); el.__imageSrc = image; } attr(svgEl, "width", dw + ""); attr(svgEl, "height", dh + ""); attr(svgEl, "x", x + ""); attr(svgEl, "y", y + ""); bindStyle(svgEl, style, el); setTransform(svgEl, el.transform); } }; var TEXT_ALIGN_TO_ANCHOR = { left: "start", right: "end", center: "middle", middle: "middle" }; function adjustTextY(y, lineHeight, textBaseline) { if (textBaseline === "top") { y += lineHeight / 2; } else if (textBaseline === "bottom") { y -= lineHeight / 2; } return y; } var svgText = { brush: function(el) { var style = el.style; var text = style.text; text != null && (text += ""); if (!text || isNaN(style.x) || isNaN(style.y)) { return; } var textSvgEl = el.__svgEl; if (!textSvgEl) { textSvgEl = createElement("text"); attrXML(textSvgEl, "xml:space", "preserve"); el.__svgEl = textSvgEl; } var font = style.font || DEFAULT_FONT; var textSvgElStyle = textSvgEl.style; textSvgElStyle.font = font; textSvgEl.textContent = text; bindStyle(textSvgEl, style, el); setTransform(textSvgEl, el.transform); var x = style.x || 0; var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline); var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign] || style.textAlign; attr(textSvgEl, "dominant-baseline", "central"); attr(textSvgEl, "text-anchor", textAlign); attr(textSvgEl, "x", x + ""); attr(textSvgEl, "y", y + ""); } }; var MARK_UNUSED = "0"; var MARK_USED = "1"; var Definable = function() { function Definable2(zrId, svgRoot, tagNames, markLabel, domName) { this.nextId = 0; this._domName = "_dom"; this.createElement = createElement; this._zrId = zrId; this._svgRoot = svgRoot; this._tagNames = typeof tagNames === "string" ? [tagNames] : tagNames; this._markLabel = markLabel; if (domName) { this._domName = domName; } } Definable2.prototype.getDefs = function(isForceCreating) { var svgRoot = this._svgRoot; var defs = this._svgRoot.getElementsByTagName("defs"); if (defs.length === 0) { if (isForceCreating) { var defs_1 = svgRoot.insertBefore(this.createElement("defs"), svgRoot.firstChild); if (!defs_1.contains) { defs_1.contains = function(el) { var children = defs_1.children; if (!children) { return false; } for (var i = children.length - 1; i >= 0; --i) { if (children[i] === el) { return true; } } return false; }; } return defs_1; } else { return null; } } else { return defs[0]; } }; Definable2.prototype.doUpdate = function(target, onUpdate) { if (!target) { return; } var defs = this.getDefs(false); if (target[this._domName] && defs.contains(target[this._domName])) { if (typeof onUpdate === "function") { onUpdate(target); } } else { var dom = this.add(target); if (dom) { target[this._domName] = dom; } } }; Definable2.prototype.add = function(target) { return null; }; Definable2.prototype.addDom = function(dom) { var defs = this.getDefs(true); if (dom.parentNode !== defs) { defs.appendChild(dom); } }; Definable2.prototype.removeDom = function(target) { var defs = this.getDefs(false); if (defs && target[this._domName]) { defs.removeChild(target[this._domName]); target[this._domName] = null; } }; Definable2.prototype.getDoms = function() { var defs = this.getDefs(false); if (!defs) { return []; } var doms = []; each$g(this._tagNames, function(tagName) { var tags = defs.getElementsByTagName(tagName); for (var i = 0; i < tags.length; i++) { doms.push(tags[i]); } }); return doms; }; Definable2.prototype.markAllUnused = function() { var doms = this.getDoms(); var that = this; each$g(doms, function(dom) { dom[that._markLabel] = MARK_UNUSED; }); }; Definable2.prototype.markDomUsed = function(dom) { dom && (dom[this._markLabel] = MARK_USED); }; Definable2.prototype.markDomUnused = function(dom) { dom && (dom[this._markLabel] = MARK_UNUSED); }; Definable2.prototype.isDomUnused = function(dom) { return dom && dom[this._markLabel] !== MARK_USED; }; Definable2.prototype.removeUnused = function() { var _this = this; var defs = this.getDefs(false); if (!defs) { return; } var doms = this.getDoms(); each$g(doms, function(dom) { if (_this.isDomUnused(dom)) { defs.removeChild(dom); } }); }; Definable2.prototype.getSvgProxy = function(displayable) { if (displayable instanceof Path$1) { return svgPath; } else if (displayable instanceof ZRImage$1) { return svgImage; } else if (displayable instanceof TSpan$1) { return svgText; } else { return svgPath; } }; Definable2.prototype.getSvgElement = function(displayable) { return displayable.__svgEl; }; return Definable2; }(); var Definable$1 = Definable; function isLinearGradient(value) { return value.type === "linear"; } function isRadialGradient(value) { return value.type === "radial"; } function isGradient(value) { return value && (value.type === "linear" || value.type === "radial"); } var GradientManager = function(_super) { __extends(GradientManager2, _super); function GradientManager2(zrId, svgRoot) { return _super.call(this, zrId, svgRoot, ["linearGradient", "radialGradient"], "__gradient_in_use__") || this; } GradientManager2.prototype.addWithoutUpdate = function(svgElement, displayable) { if (displayable && displayable.style) { var that_1 = this; each$g(["fill", "stroke"], function(fillOrStroke) { var value = displayable.style[fillOrStroke]; if (isGradient(value)) { var gradient = value; var defs = that_1.getDefs(true); var dom = void 0; if (gradient.__dom) { dom = gradient.__dom; if (!defs.contains(gradient.__dom)) { that_1.addDom(dom); } } else { dom = that_1.add(gradient); } that_1.markUsed(displayable); var id = dom.getAttribute("id"); svgElement.setAttribute(fillOrStroke, "url(#" + id + ")"); } }); } }; GradientManager2.prototype.add = function(gradient) { var dom; if (isLinearGradient(gradient)) { dom = this.createElement("linearGradient"); } else if (isRadialGradient(gradient)) { dom = this.createElement("radialGradient"); } else { logError("Illegal gradient type."); return null; } gradient.id = gradient.id || this.nextId++; dom.setAttribute("id", "zr" + this._zrId + "-gradient-" + gradient.id); this.updateDom(gradient, dom); this.addDom(dom); return dom; }; GradientManager2.prototype.update = function(gradient) { if (!isGradient(gradient)) { return; } var that = this; this.doUpdate(gradient, function() { var dom = gradient.__dom; if (!dom) { return; } var tagName = dom.tagName; var type = gradient.type; if (type === "linear" && tagName === "linearGradient" || type === "radial" && tagName === "radialGradient") { that.updateDom(gradient, gradient.__dom); } else { that.removeDom(gradient); that.add(gradient); } }); }; GradientManager2.prototype.updateDom = function(gradient, dom) { if (isLinearGradient(gradient)) { dom.setAttribute("x1", gradient.x + ""); dom.setAttribute("y1", gradient.y + ""); dom.setAttribute("x2", gradient.x2 + ""); dom.setAttribute("y2", gradient.y2 + ""); } else if (isRadialGradient(gradient)) { dom.setAttribute("cx", gradient.x + ""); dom.setAttribute("cy", gradient.y + ""); dom.setAttribute("r", gradient.r + ""); } else { logError("Illegal gradient type."); return; } if (gradient.global) { dom.setAttribute("gradientUnits", "userSpaceOnUse"); } else { dom.setAttribute("gradientUnits", "objectBoundingBox"); } dom.innerHTML = ""; var colors = gradient.colorStops; for (var i = 0, len2 = colors.length; i < len2; ++i) { var stop_1 = this.createElement("stop"); stop_1.setAttribute("offset", colors[i].offset * 100 + "%"); var color$1 = colors[i].color; if (color$1.indexOf("rgba") > -1) { var opacity = parse(color$1)[3]; var hex = toHex(color$1); stop_1.setAttribute("stop-color", "#" + hex); stop_1.setAttribute("stop-opacity", opacity + ""); } else { stop_1.setAttribute("stop-color", colors[i].color); } dom.appendChild(stop_1); } gradient.__dom = dom; }; GradientManager2.prototype.markUsed = function(displayable) { if (displayable.style) { var gradient = displayable.style.fill; if (gradient && gradient.__dom) { _super.prototype.markDomUsed.call(this, gradient.__dom); } gradient = displayable.style.stroke; if (gradient && gradient.__dom) { _super.prototype.markDomUsed.call(this, gradient.__dom); } } }; return GradientManager2; }(Definable$1); var GradientManager$1 = GradientManager; function isPattern(value) { return value && (!!value.image || !!value.svgElement); } var patternDomMap = new WeakMap$1(); var PatternManager = function(_super) { __extends(PatternManager2, _super); function PatternManager2(zrId, svgRoot) { return _super.call(this, zrId, svgRoot, ["pattern"], "__pattern_in_use__") || this; } PatternManager2.prototype.addWithoutUpdate = function(svgElement, displayable) { if (displayable && displayable.style) { var that_1 = this; each$g(["fill", "stroke"], function(fillOrStroke) { var pattern = displayable.style[fillOrStroke]; if (isPattern(pattern)) { var defs = that_1.getDefs(true); var dom = patternDomMap.get(pattern); if (dom) { if (!defs.contains(dom)) { that_1.addDom(dom); } } else { dom = that_1.add(pattern); } that_1.markUsed(displayable); var id = dom.getAttribute("id"); svgElement.setAttribute(fillOrStroke, "url(#" + id + ")"); } }); } }; PatternManager2.prototype.add = function(pattern) { if (!isPattern(pattern)) { return; } var dom = this.createElement("pattern"); pattern.id = pattern.id == null ? this.nextId++ : pattern.id; dom.setAttribute("id", "zr" + this._zrId + "-pattern-" + pattern.id); dom.setAttribute("x", "0"); dom.setAttribute("y", "0"); dom.setAttribute("patternUnits", "userSpaceOnUse"); this.updateDom(pattern, dom); this.addDom(dom); return dom; }; PatternManager2.prototype.update = function(pattern) { if (!isPattern(pattern)) { return; } var that = this; this.doUpdate(pattern, function() { var dom = patternDomMap.get(pattern); that.updateDom(pattern, dom); }); }; PatternManager2.prototype.updateDom = function(pattern, patternDom) { var svgElement = pattern.svgElement; if (svgElement instanceof SVGElement) { if (svgElement.parentNode !== patternDom) { patternDom.innerHTML = ""; patternDom.appendChild(svgElement); patternDom.setAttribute("width", pattern.svgWidth + ""); patternDom.setAttribute("height", pattern.svgHeight + ""); } } else { var img = void 0; var prevImage = patternDom.getElementsByTagName("image"); if (prevImage.length) { if (pattern.image) { img = prevImage[0]; } else { patternDom.removeChild(prevImage[0]); return; } } else if (pattern.image) { img = this.createElement("image"); } if (img) { var imageSrc = void 0; var patternImage = pattern.image; if (typeof patternImage === "string") { imageSrc = patternImage; } else if (patternImage instanceof HTMLImageElement) { imageSrc = patternImage.src; } else if (patternImage instanceof HTMLCanvasElement) { imageSrc = patternImage.toDataURL(); } if (imageSrc) { img.setAttribute("href", imageSrc); img.setAttribute("x", "0"); img.setAttribute("y", "0"); var hostEl = { dirty: function() { } }; var createdImage = createOrUpdateImage(imageSrc, img, hostEl, function(img2) { patternDom.setAttribute("width", img2.width + ""); patternDom.setAttribute("height", img2.height + ""); }); if (createdImage && createdImage.width && createdImage.height) { patternDom.setAttribute("width", createdImage.width + ""); patternDom.setAttribute("height", createdImage.height + ""); } patternDom.appendChild(img); } } } var x = pattern.x || 0; var y = pattern.y || 0; var rotation = (pattern.rotation || 0) / Math.PI * 180; var scaleX = pattern.scaleX || 1; var scaleY = pattern.scaleY || 1; var transform2 = "translate(" + x + ", " + y + ") rotate(" + rotation + ") scale(" + scaleX + ", " + scaleY + ")"; patternDom.setAttribute("patternTransform", transform2); patternDomMap.set(pattern, patternDom); }; PatternManager2.prototype.markUsed = function(displayable) { if (displayable.style) { if (isPattern(displayable.style.fill)) { _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.fill)); } if (isPattern(displayable.style.stroke)) { _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.stroke)); } } }; return PatternManager2; }(Definable$1); var PatternManager$1 = PatternManager; function generateClipPathsKey(clipPaths) { var key2 = []; if (clipPaths) { for (var i = 0; i < clipPaths.length; i++) { var clipPath = clipPaths[i]; key2.push(clipPath.id); } } return key2.join(","); } function hasClipPath(displayable) { var clipPaths = displayable.__clipPaths; return clipPaths && clipPaths.length > 0; } var ClippathManager = function(_super) { __extends(ClippathManager2, _super); function ClippathManager2(zrId, svgRoot) { var _this = _super.call(this, zrId, svgRoot, "clipPath", "__clippath_in_use__") || this; _this._refGroups = {}; _this._keyDuplicateCount = {}; return _this; } ClippathManager2.prototype.markAllUnused = function() { _super.prototype.markAllUnused.call(this); var refGroups = this._refGroups; for (var key2 in refGroups) { if (refGroups.hasOwnProperty(key2)) { this.markDomUnused(refGroups[key2]); } } this._keyDuplicateCount = {}; }; ClippathManager2.prototype._getClipPathGroup = function(displayable, prevDisplayable) { if (!hasClipPath(displayable)) { return; } var clipPaths = displayable.__clipPaths; var keyDuplicateCount = this._keyDuplicateCount; var clipPathKey = generateClipPathsKey(clipPaths); if (isClipPathChanged(clipPaths, prevDisplayable && prevDisplayable.__clipPaths)) { keyDuplicateCount[clipPathKey] = keyDuplicateCount[clipPathKey] || 0; keyDuplicateCount[clipPathKey] && (clipPathKey += "-" + keyDuplicateCount[clipPathKey]); keyDuplicateCount[clipPathKey]++; } return this._refGroups[clipPathKey] || (this._refGroups[clipPathKey] = this.createElement("g")); }; ClippathManager2.prototype.update = function(displayable, prevDisplayable) { var clipGroup = this._getClipPathGroup(displayable, prevDisplayable); if (clipGroup) { this.markDomUsed(clipGroup); this.updateDom(clipGroup, displayable.__clipPaths); } return clipGroup; }; ClippathManager2.prototype.updateDom = function(parentEl, clipPaths) { if (clipPaths && clipPaths.length > 0) { var defs = this.getDefs(true); var clipPath = clipPaths[0]; var clipPathEl = void 0; var id = void 0; if (clipPath._dom) { id = clipPath._dom.getAttribute("id"); clipPathEl = clipPath._dom; if (!defs.contains(clipPathEl)) { defs.appendChild(clipPathEl); } } else { id = "zr" + this._zrId + "-clip-" + this.nextId; ++this.nextId; clipPathEl = this.createElement("clipPath"); clipPathEl.setAttribute("id", id); defs.appendChild(clipPathEl); clipPath._dom = clipPathEl; } var svgProxy = this.getSvgProxy(clipPath); svgProxy.brush(clipPath); var pathEl = this.getSvgElement(clipPath); clipPathEl.innerHTML = ""; clipPathEl.appendChild(pathEl); parentEl.setAttribute("clip-path", "url(#" + id + ")"); if (clipPaths.length > 1) { this.updateDom(clipPathEl, clipPaths.slice(1)); } } else { if (parentEl) { parentEl.setAttribute("clip-path", "none"); } } }; ClippathManager2.prototype.markUsed = function(displayable) { var _this = this; if (displayable.__clipPaths) { each$g(displayable.__clipPaths, function(clipPath) { if (clipPath._dom) { _super.prototype.markDomUsed.call(_this, clipPath._dom); } }); } }; ClippathManager2.prototype.removeUnused = function() { _super.prototype.removeUnused.call(this); var newRefGroupsMap = {}; var refGroups = this._refGroups; for (var key2 in refGroups) { if (refGroups.hasOwnProperty(key2)) { var group = refGroups[key2]; if (!this.isDomUnused(group)) { newRefGroupsMap[key2] = group; } else if (group.parentNode) { group.parentNode.removeChild(group); } } } this._refGroups = newRefGroupsMap; }; return ClippathManager2; }(Definable$1); var ShadowManager = function(_super) { __extends(ShadowManager2, _super); function ShadowManager2(zrId, svgRoot) { var _this = _super.call(this, zrId, svgRoot, ["filter"], "__filter_in_use__", "_shadowDom") || this; _this._shadowDomMap = {}; _this._shadowDomPool = []; return _this; } ShadowManager2.prototype._getFromPool = function() { var shadowDom = this._shadowDomPool.pop(); if (!shadowDom) { shadowDom = this.createElement("filter"); shadowDom.setAttribute("id", "zr" + this._zrId + "-shadow-" + this.nextId++); var domChild = this.createElement("feDropShadow"); shadowDom.appendChild(domChild); this.addDom(shadowDom); } return shadowDom; }; ShadowManager2.prototype.update = function(svgElement, displayable) { var style = displayable.style; if (hasShadow(style)) { var shadowKey = getShadowKey(displayable); var shadowDom = displayable._shadowDom = this._shadowDomMap[shadowKey]; if (!shadowDom) { shadowDom = this._getFromPool(); this._shadowDomMap[shadowKey] = shadowDom; } this.updateDom(svgElement, displayable, shadowDom); } else { this.remove(svgElement, displayable); } }; ShadowManager2.prototype.remove = function(svgElement, displayable) { if (displayable._shadowDom != null) { displayable._shadowDom = null; svgElement.removeAttribute("filter"); } }; ShadowManager2.prototype.updateDom = function(svgElement, displayable, shadowDom) { var domChild = shadowDom.children[0]; var style = displayable.style; var globalScale = displayable.getGlobalScale(); var scaleX = globalScale[0]; var scaleY = globalScale[1]; if (!scaleX || !scaleY) { return; } var offsetX = style.shadowOffsetX || 0; var offsetY = style.shadowOffsetY || 0; var blur = style.shadowBlur; var normalizedColor = normalizeColor(style.shadowColor); domChild.setAttribute("dx", offsetX / scaleX + ""); domChild.setAttribute("dy", offsetY / scaleY + ""); domChild.setAttribute("flood-color", normalizedColor.color); domChild.setAttribute("flood-opacity", normalizedColor.opacity + ""); var stdDx = blur / 2 / scaleX; var stdDy = blur / 2 / scaleY; var stdDeviation = stdDx + " " + stdDy; domChild.setAttribute("stdDeviation", stdDeviation); shadowDom.setAttribute("x", "-100%"); shadowDom.setAttribute("y", "-100%"); shadowDom.setAttribute("width", "300%"); shadowDom.setAttribute("height", "300%"); displayable._shadowDom = shadowDom; var id = shadowDom.getAttribute("id"); svgElement.setAttribute("filter", "url(#" + id + ")"); }; ShadowManager2.prototype.removeUnused = function() { var defs = this.getDefs(false); if (!defs) { return; } var shadowDomsPool = this._shadowDomPool; var shadowDomMap = this._shadowDomMap; for (var key2 in shadowDomMap) { if (shadowDomMap.hasOwnProperty(key2)) { shadowDomsPool.push(shadowDomMap[key2]); } } this._shadowDomMap = {}; }; return ShadowManager2; }(Definable$1); var ShadowManager$1 = ShadowManager; function hasShadow(style) { return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY); } function getShadowKey(displayable) { var style = displayable.style; var globalScale = displayable.getGlobalScale(); return [ style.shadowColor, (style.shadowBlur || 0).toFixed(2), (style.shadowOffsetX || 0).toFixed(2), (style.shadowOffsetY || 0).toFixed(2), globalScale[0], globalScale[1] ].join(","); } function parseInt10$1(val) { return parseInt(val, 10); } function getSvgProxy(el) { if (el instanceof Path$1) { return svgPath; } else if (el instanceof ZRImage$1) { return svgImage; } else if (el instanceof TSpan$1) { return svgText; } else { return svgPath; } } function checkParentAvailable(parent, child) { return child && parent && child.parentNode !== parent; } function insertAfter(parent, child, prevSibling) { if (checkParentAvailable(parent, child) && prevSibling) { var nextSibling = prevSibling.nextSibling; nextSibling ? parent.insertBefore(child, nextSibling) : parent.appendChild(child); } } function prepend(parent, child) { if (checkParentAvailable(parent, child)) { var firstChild = parent.firstChild; firstChild ? parent.insertBefore(child, firstChild) : parent.appendChild(child); } } function remove(parent, child) { if (child && parent && child.parentNode === parent) { parent.removeChild(child); } } function removeFromMyParent(child) { if (child && child.parentNode) { child.parentNode.removeChild(child); } } function getSvgElement(displayable) { return displayable.__svgEl; } var SVGPainter = function() { function SVGPainter2(root, storage2, opts, zrId) { this.type = "svg"; this.refreshHover = createMethodNotSupport("refreshHover"); this.pathToImage = createMethodNotSupport("pathToImage"); this.configLayer = createMethodNotSupport("configLayer"); this.root = root; this.storage = storage2; this._opts = opts = extend({}, opts || {}); var svgDom = createElement("svg"); svgDom.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.w3.org/2000/svg"); svgDom.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); svgDom.setAttribute("version", "1.1"); svgDom.setAttribute("baseProfile", "full"); svgDom.style.cssText = "user-select:none;position:absolute;left:0;top:0;"; var bgRoot = createElement("g"); svgDom.appendChild(bgRoot); var svgRoot = createElement("g"); svgDom.appendChild(svgRoot); this._gradientManager = new GradientManager$1(zrId, svgRoot); this._patternManager = new PatternManager$1(zrId, svgRoot); this._clipPathManager = new ClippathManager(zrId, svgRoot); this._shadowManager = new ShadowManager$1(zrId, svgRoot); var viewport = document.createElement("div"); viewport.style.cssText = "overflow:hidden;position:relative"; this._svgDom = svgDom; this._svgRoot = svgRoot; this._backgroundRoot = bgRoot; this._viewport = viewport; root.appendChild(viewport); viewport.appendChild(svgDom); this.resize(opts.width, opts.height); this._visibleList = []; } SVGPainter2.prototype.getType = function() { return "svg"; }; SVGPainter2.prototype.getViewportRoot = function() { return this._viewport; }; SVGPainter2.prototype.getSvgDom = function() { return this._svgDom; }; SVGPainter2.prototype.getSvgRoot = function() { return this._svgRoot; }; SVGPainter2.prototype.getViewportRootOffset = function() { var viewportRoot = this.getViewportRoot(); if (viewportRoot) { return { offsetLeft: viewportRoot.offsetLeft || 0, offsetTop: viewportRoot.offsetTop || 0 }; } }; SVGPainter2.prototype.refresh = function() { var list2 = this.storage.getDisplayList(true); this._paintList(list2); }; SVGPainter2.prototype.setBackgroundColor = function(backgroundColor2) { if (this._backgroundRoot && this._backgroundNode) { this._backgroundRoot.removeChild(this._backgroundNode); } var bgNode = createElement("rect"); bgNode.setAttribute("width", this.getWidth()); bgNode.setAttribute("height", this.getHeight()); bgNode.setAttribute("x", 0); bgNode.setAttribute("y", 0); bgNode.setAttribute("id", 0); var _a2 = normalizeColor(backgroundColor2), color2 = _a2.color, opacity = _a2.opacity; bgNode.setAttribute("fill", color2); bgNode.setAttribute("fill-opacity", opacity); this._backgroundRoot.appendChild(bgNode); this._backgroundNode = bgNode; }; SVGPainter2.prototype.createSVGElement = function(tag) { return createElement(tag); }; SVGPainter2.prototype.paintOne = function(el) { var svgProxy = getSvgProxy(el); svgProxy && svgProxy.brush(el); return getSvgElement(el); }; SVGPainter2.prototype._paintList = function(list2) { var gradientManager = this._gradientManager; var patternManager = this._patternManager; var clipPathManager = this._clipPathManager; var shadowManager = this._shadowManager; gradientManager.markAllUnused(); patternManager.markAllUnused(); clipPathManager.markAllUnused(); shadowManager.markAllUnused(); var svgRoot = this._svgRoot; var visibleList = this._visibleList; var listLen = list2.length; var newVisibleList = []; for (var i = 0; i < listLen; i++) { var displayable = list2[i]; var svgProxy = getSvgProxy(displayable); var svgElement = getSvgElement(displayable); if (!displayable.invisible) { if (displayable.__dirty || !svgElement) { svgProxy && svgProxy.brush(displayable); svgElement = getSvgElement(displayable); if (svgElement && displayable.style) { gradientManager.update(displayable.style.fill); gradientManager.update(displayable.style.stroke); patternManager.update(displayable.style.fill); patternManager.update(displayable.style.stroke); shadowManager.update(svgElement, displayable); } displayable.__dirty = 0; } if (svgElement) { newVisibleList.push(displayable); } } } var diff2 = arrayDiff(visibleList, newVisibleList); var prevSvgElement; var topPrevSvgElement; for (var i = 0; i < diff2.length; i++) { var item = diff2[i]; if (item.removed) { for (var k = 0; k < item.count; k++) { var displayable = visibleList[item.indices[k]]; var svgElement = getSvgElement(displayable); hasClipPath(displayable) ? removeFromMyParent(svgElement) : remove(svgRoot, svgElement); } } } var prevDisplayable; var currentClipGroup; for (var i = 0; i < diff2.length; i++) { var item = diff2[i]; if (item.removed) { continue; } for (var k = 0; k < item.count; k++) { var displayable = newVisibleList[item.indices[k]]; var clipGroup = clipPathManager.update(displayable, prevDisplayable); if (clipGroup !== currentClipGroup) { prevSvgElement = topPrevSvgElement; if (clipGroup) { prevSvgElement ? insertAfter(svgRoot, clipGroup, prevSvgElement) : prepend(svgRoot, clipGroup); topPrevSvgElement = clipGroup; prevSvgElement = null; } currentClipGroup = clipGroup; } var svgElement = getSvgElement(displayable); prevSvgElement ? insertAfter(currentClipGroup || svgRoot, svgElement, prevSvgElement) : prepend(currentClipGroup || svgRoot, svgElement); prevSvgElement = svgElement || prevSvgElement; if (!currentClipGroup) { topPrevSvgElement = prevSvgElement; } gradientManager.markUsed(displayable); gradientManager.addWithoutUpdate(svgElement, displayable); patternManager.markUsed(displayable); patternManager.addWithoutUpdate(svgElement, displayable); clipPathManager.markUsed(displayable); prevDisplayable = displayable; } } gradientManager.removeUnused(); patternManager.removeUnused(); clipPathManager.removeUnused(); shadowManager.removeUnused(); this._visibleList = newVisibleList; }; SVGPainter2.prototype.resize = function(width, height) { var viewport = this._viewport; viewport.style.display = "none"; var opts = this._opts; width != null && (opts.width = width); height != null && (opts.height = height); width = this._getSize(0); height = this._getSize(1); viewport.style.display = ""; if (this._width !== width || this._height !== height) { this._width = width; this._height = height; var viewportStyle = viewport.style; viewportStyle.width = width + "px"; viewportStyle.height = height + "px"; var svgRoot = this._svgDom; svgRoot.setAttribute("width", width + ""); svgRoot.setAttribute("height", height + ""); } if (this._backgroundNode) { this._backgroundNode.setAttribute("width", width); this._backgroundNode.setAttribute("height", height); } }; SVGPainter2.prototype.getWidth = function() { return this._width; }; SVGPainter2.prototype.getHeight = function() { return this._height; }; SVGPainter2.prototype._getSize = function(whIdx) { var opts = this._opts; var wh = ["width", "height"][whIdx]; var cwh = ["clientWidth", "clientHeight"][whIdx]; var plt = ["paddingLeft", "paddingTop"][whIdx]; var prb = ["paddingRight", "paddingBottom"][whIdx]; if (opts[wh] != null && opts[wh] !== "auto") { return parseFloat(opts[wh]); } var root = this.root; var stl = document.defaultView.getComputedStyle(root); return (root[cwh] || parseInt10$1(stl[wh]) || parseInt10$1(root.style[wh])) - (parseInt10$1(stl[plt]) || 0) - (parseInt10$1(stl[prb]) || 0) | 0; }; SVGPainter2.prototype.dispose = function() { this.root.innerHTML = ""; this._svgRoot = this._backgroundRoot = this._svgDom = this._backgroundNode = this._viewport = this.storage = null; }; SVGPainter2.prototype.clear = function() { var viewportNode = this._viewport; if (viewportNode && viewportNode.parentNode) { viewportNode.parentNode.removeChild(viewportNode); } }; SVGPainter2.prototype.toDataURL = function() { this.refresh(); var svgDom = this._svgDom; var outerHTML = svgDom.outerHTML || (svgDom.parentNode && svgDom.parentNode).innerHTML; var html = encodeURIComponent(outerHTML.replace(/>\n\r<")); return "data:image/svg+xml;charset=UTF-8," + html; }; return SVGPainter2; }(); function createMethodNotSupport(method) { return function() { logError('In SVG mode painter not support method "' + method + '"'); }; } var SVGPainter$1 = SVGPainter; function install$S(registers) { registers.registerPainter("svg", SVGPainter$1); } function returnFalse() { return false; } function createDom(id, painter, dpr2) { var newDom = createCanvas(); var width = painter.getWidth(); var height = painter.getHeight(); var newDomStyle = newDom.style; if (newDomStyle) { newDomStyle.position = "absolute"; newDomStyle.left = "0"; newDomStyle.top = "0"; newDomStyle.width = width + "px"; newDomStyle.height = height + "px"; newDom.setAttribute("data-zr-dom-id", id); } newDom.width = width * dpr2; newDom.height = height * dpr2; return newDom; } var Layer = function(_super) { __extends(Layer2, _super); function Layer2(id, painter, dpr2) { var _this = _super.call(this) || this; _this.motionBlur = false; _this.lastFrameAlpha = 0.7; _this.dpr = 1; _this.virtual = false; _this.config = {}; _this.incremental = false; _this.zlevel = 0; _this.maxRepaintRectCount = 5; _this.__dirty = true; _this.__firstTimePaint = true; _this.__used = false; _this.__drawIndex = 0; _this.__startIndex = 0; _this.__endIndex = 0; _this.__prevStartIndex = null; _this.__prevEndIndex = null; var dom; dpr2 = dpr2 || devicePixelRatio; if (typeof id === "string") { dom = createDom(id, painter, dpr2); } else if (isObject$3(id)) { dom = id; id = dom.id; } _this.id = id; _this.dom = dom; var domStyle = dom.style; if (domStyle) { dom.onselectstart = returnFalse; domStyle.webkitUserSelect = "none"; domStyle.userSelect = "none"; domStyle.webkitTapHighlightColor = "rgba(0,0,0,0)"; domStyle["-webkit-touch-callout"] = "none"; domStyle.padding = "0"; domStyle.margin = "0"; domStyle.borderWidth = "0"; } _this.domBack = null; _this.ctxBack = null; _this.painter = painter; _this.config = null; _this.dpr = dpr2; return _this; } Layer2.prototype.getElementCount = function() { return this.__endIndex - this.__startIndex; }; Layer2.prototype.afterBrush = function() { this.__prevStartIndex = this.__startIndex; this.__prevEndIndex = this.__endIndex; }; Layer2.prototype.initContext = function() { this.ctx = this.dom.getContext("2d"); this.ctx.dpr = this.dpr; }; Layer2.prototype.setUnpainted = function() { this.__firstTimePaint = true; }; Layer2.prototype.createBackBuffer = function() { var dpr2 = this.dpr; this.domBack = createDom("back-" + this.id, this.painter, dpr2); this.ctxBack = this.domBack.getContext("2d"); if (dpr2 !== 1) { this.ctxBack.scale(dpr2, dpr2); } }; Layer2.prototype.createRepaintRects = function(displayList, prevList, viewWidth, viewHeight) { if (this.__firstTimePaint) { this.__firstTimePaint = false; return null; } var mergedRepaintRects = []; var maxRepaintRectCount = this.maxRepaintRectCount; var full = false; var pendingRect = new BoundingRect$1(0, 0, 0, 0); function addRectToMergePool(rect) { if (!rect.isFinite() || rect.isZero()) { return; } if (mergedRepaintRects.length === 0) { var boundingRect = new BoundingRect$1(0, 0, 0, 0); boundingRect.copy(rect); mergedRepaintRects.push(boundingRect); } else { var isMerged = false; var minDeltaArea = Infinity; var bestRectToMergeIdx = 0; for (var i2 = 0; i2 < mergedRepaintRects.length; ++i2) { var mergedRect = mergedRepaintRects[i2]; if (mergedRect.intersect(rect)) { var pendingRect_1 = new BoundingRect$1(0, 0, 0, 0); pendingRect_1.copy(mergedRect); pendingRect_1.union(rect); mergedRepaintRects[i2] = pendingRect_1; isMerged = true; break; } else if (full) { pendingRect.copy(rect); pendingRect.union(mergedRect); var aArea = rect.width * rect.height; var bArea = mergedRect.width * mergedRect.height; var pendingArea = pendingRect.width * pendingRect.height; var deltaArea = pendingArea - aArea - bArea; if (deltaArea < minDeltaArea) { minDeltaArea = deltaArea; bestRectToMergeIdx = i2; } } } if (full) { mergedRepaintRects[bestRectToMergeIdx].union(rect); isMerged = true; } if (!isMerged) { var boundingRect = new BoundingRect$1(0, 0, 0, 0); boundingRect.copy(rect); mergedRepaintRects.push(boundingRect); } if (!full) { full = mergedRepaintRects.length >= maxRepaintRectCount; } } } for (var i = this.__startIndex; i < this.__endIndex; ++i) { var el = displayList[i]; if (el) { var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true); var prevRect = el.__isRendered && (el.__dirty & REDRAW_BIT || !shouldPaint) ? el.getPrevPaintRect() : null; if (prevRect) { addRectToMergePool(prevRect); } var curRect = shouldPaint && (el.__dirty & REDRAW_BIT || !el.__isRendered) ? el.getPaintRect() : null; if (curRect) { addRectToMergePool(curRect); } } } for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) { var el = prevList[i]; var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true); if (el && (!shouldPaint || !el.__zr) && el.__isRendered) { var prevRect = el.getPrevPaintRect(); if (prevRect) { addRectToMergePool(prevRect); } } } var hasIntersections; do { hasIntersections = false; for (var i = 0; i < mergedRepaintRects.length; ) { if (mergedRepaintRects[i].isZero()) { mergedRepaintRects.splice(i, 1); continue; } for (var j = i + 1; j < mergedRepaintRects.length; ) { if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) { hasIntersections = true; mergedRepaintRects[i].union(mergedRepaintRects[j]); mergedRepaintRects.splice(j, 1); } else { j++; } } i++; } } while (hasIntersections); this._paintRects = mergedRepaintRects; return mergedRepaintRects; }; Layer2.prototype.debugGetPaintRects = function() { return (this._paintRects || []).slice(); }; Layer2.prototype.resize = function(width, height) { var dpr2 = this.dpr; var dom = this.dom; var domStyle = dom.style; var domBack = this.domBack; if (domStyle) { domStyle.width = width + "px"; domStyle.height = height + "px"; } dom.width = width * dpr2; dom.height = height * dpr2; if (domBack) { domBack.width = width * dpr2; domBack.height = height * dpr2; if (dpr2 !== 1) { this.ctxBack.scale(dpr2, dpr2); } } }; Layer2.prototype.clear = function(clearAll, clearColor, repaintRects) { var dom = this.dom; var ctx = this.ctx; var width = dom.width; var height = dom.height; clearColor = clearColor || this.clearColor; var haveMotionBLur = this.motionBlur && !clearAll; var lastFrameAlpha = this.lastFrameAlpha; var dpr2 = this.dpr; var self2 = this; if (haveMotionBLur) { if (!this.domBack) { this.createBackBuffer(); } this.ctxBack.globalCompositeOperation = "copy"; this.ctxBack.drawImage(dom, 0, 0, width / dpr2, height / dpr2); } var domBack = this.domBack; function doClear(x, y, width2, height2) { ctx.clearRect(x, y, width2, height2); if (clearColor && clearColor !== "transparent") { var clearColorGradientOrPattern = void 0; if (isGradientObject(clearColor)) { clearColorGradientOrPattern = clearColor.__canvasGradient || getCanvasGradient(ctx, clearColor, { x: 0, y: 0, width: width2, height: height2 }); clearColor.__canvasGradient = clearColorGradientOrPattern; } else if (isImagePatternObject(clearColor)) { clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, { dirty: function() { self2.setUnpainted(); self2.__painter.refresh(); } }); } ctx.save(); ctx.fillStyle = clearColorGradientOrPattern || clearColor; ctx.fillRect(x, y, width2, height2); ctx.restore(); } if (haveMotionBLur) { ctx.save(); ctx.globalAlpha = lastFrameAlpha; ctx.drawImage(domBack, x, y, width2, height2); ctx.restore(); } } if (!repaintRects || haveMotionBLur) { doClear(0, 0, width, height); } else if (repaintRects.length) { each$g(repaintRects, function(rect) { doClear(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2); }); } }; return Layer2; }(Eventful$1); var Layer$1 = Layer; var HOVER_LAYER_ZLEVEL = 1e5; var CANVAS_ZLEVEL = 314159; var EL_AFTER_INCREMENTAL_INC = 0.01; var INCREMENTAL_INC = 1e-3; function parseInt10(val) { return parseInt(val, 10); } function isLayerValid(layer) { if (!layer) { return false; } if (layer.__builtin__) { return true; } if (typeof layer.resize !== "function" || typeof layer.refresh !== "function") { return false; } return true; } function createRoot(width, height) { var domRoot = document.createElement("div"); domRoot.style.cssText = [ "position:relative", "width:" + width + "px", "height:" + height + "px", "padding:0", "margin:0", "border-width:0" ].join(";") + ";"; return domRoot; } var CanvasPainter = function() { function CanvasPainter2(root, storage2, opts, id) { this.type = "canvas"; this._zlevelList = []; this._prevDisplayList = []; this._layers = {}; this._layerConfig = {}; this._needsManuallyCompositing = false; this.type = "canvas"; var singleCanvas = !root.nodeName || root.nodeName.toUpperCase() === "CANVAS"; this._opts = opts = extend({}, opts || {}); this.dpr = opts.devicePixelRatio || devicePixelRatio; this._singleCanvas = singleCanvas; this.root = root; var rootStyle = root.style; if (rootStyle) { rootStyle.webkitTapHighlightColor = "transparent"; rootStyle.webkitUserSelect = "none"; rootStyle.userSelect = "none"; rootStyle["-webkit-touch-callout"] = "none"; root.innerHTML = ""; } this.storage = storage2; var zlevelList = this._zlevelList; this._prevDisplayList = []; var layers = this._layers; if (!singleCanvas) { this._width = this._getSize(0); this._height = this._getSize(1); var domRoot = this._domRoot = createRoot(this._width, this._height); root.appendChild(domRoot); } else { var rootCanvas = root; var width = rootCanvas.width; var height = rootCanvas.height; if (opts.width != null) { width = opts.width; } if (opts.height != null) { height = opts.height; } this.dpr = opts.devicePixelRatio || 1; rootCanvas.width = width * this.dpr; rootCanvas.height = height * this.dpr; this._width = width; this._height = height; var mainLayer = new Layer$1(rootCanvas, this, this.dpr); mainLayer.__builtin__ = true; mainLayer.initContext(); layers[CANVAS_ZLEVEL] = mainLayer; mainLayer.zlevel = CANVAS_ZLEVEL; zlevelList.push(CANVAS_ZLEVEL); this._domRoot = root; } } CanvasPainter2.prototype.getType = function() { return "canvas"; }; CanvasPainter2.prototype.isSingleCanvas = function() { return this._singleCanvas; }; CanvasPainter2.prototype.getViewportRoot = function() { return this._domRoot; }; CanvasPainter2.prototype.getViewportRootOffset = function() { var viewportRoot = this.getViewportRoot(); if (viewportRoot) { return { offsetLeft: viewportRoot.offsetLeft || 0, offsetTop: viewportRoot.offsetTop || 0 }; } }; CanvasPainter2.prototype.refresh = function(paintAll) { var list2 = this.storage.getDisplayList(true); var prevList = this._prevDisplayList; var zlevelList = this._zlevelList; this._redrawId = Math.random(); this._paintList(list2, prevList, paintAll, this._redrawId); for (var i = 0; i < zlevelList.length; i++) { var z = zlevelList[i]; var layer = this._layers[z]; if (!layer.__builtin__ && layer.refresh) { var clearColor = i === 0 ? this._backgroundColor : null; layer.refresh(clearColor); } } if (this._opts.useDirtyRect) { this._prevDisplayList = list2.slice(); } return this; }; CanvasPainter2.prototype.refreshHover = function() { this._paintHoverList(this.storage.getDisplayList(false)); }; CanvasPainter2.prototype._paintHoverList = function(list2) { var len2 = list2.length; var hoverLayer = this._hoverlayer; hoverLayer && hoverLayer.clear(); if (!len2) { return; } var scope = { inHover: true, viewWidth: this._width, viewHeight: this._height }; var ctx; for (var i = 0; i < len2; i++) { var el = list2[i]; if (el.__inHover) { if (!hoverLayer) { hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL); } if (!ctx) { ctx = hoverLayer.ctx; ctx.save(); } brush(ctx, el, scope, i === len2 - 1); } } if (ctx) { ctx.restore(); } }; CanvasPainter2.prototype.getHoverLayer = function() { return this.getLayer(HOVER_LAYER_ZLEVEL); }; CanvasPainter2.prototype.paintOne = function(ctx, el) { brushSingle(ctx, el); }; CanvasPainter2.prototype._paintList = function(list2, prevList, paintAll, redrawId) { if (this._redrawId !== redrawId) { return; } paintAll = paintAll || false; this._updateLayerStatus(list2); var _a2 = this._doPaintList(list2, prevList, paintAll), finished2 = _a2.finished, needsRefreshHover = _a2.needsRefreshHover; if (this._needsManuallyCompositing) { this._compositeManually(); } if (needsRefreshHover) { this._paintHoverList(list2); } if (!finished2) { var self_1 = this; requestAnimationFrame$1(function() { self_1._paintList(list2, prevList, paintAll, redrawId); }); } else { this.eachLayer(function(layer) { layer.afterBrush && layer.afterBrush(); }); } }; CanvasPainter2.prototype._compositeManually = function() { var ctx = this.getLayer(CANVAS_ZLEVEL).ctx; var width = this._domRoot.width; var height = this._domRoot.height; ctx.clearRect(0, 0, width, height); this.eachBuiltinLayer(function(layer) { if (layer.virtual) { ctx.drawImage(layer.dom, 0, 0, width, height); } }); }; CanvasPainter2.prototype._doPaintList = function(list2, prevList, paintAll) { var _this = this; var layerList = []; var useDirtyRect = this._opts.useDirtyRect; for (var zi = 0; zi < this._zlevelList.length; zi++) { var zlevel = this._zlevelList[zi]; var layer = this._layers[zlevel]; if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) { layerList.push(layer); } } var finished2 = true; var needsRefreshHover = false; var _loop_1 = function(k2) { var layer2 = layerList[k2]; var ctx = layer2.ctx; var repaintRects = useDirtyRect && layer2.createRepaintRects(list2, prevList, this_1._width, this_1._height); var start2 = paintAll ? layer2.__startIndex : layer2.__drawIndex; var useTimer = !paintAll && layer2.incremental && Date.now; var startTime = useTimer && Date.now(); var clearColor = layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null; if (layer2.__startIndex === layer2.__endIndex) { layer2.clear(false, clearColor, repaintRects); } else if (start2 === layer2.__startIndex) { var firstEl = list2[start2]; if (!firstEl.incremental || !firstEl.notClear || paintAll) { layer2.clear(false, clearColor, repaintRects); } } if (start2 === -1) { console.error("For some unknown reason. drawIndex is -1"); start2 = layer2.__startIndex; } var i; var repaint = function(repaintRect) { var scope = { inHover: false, allClipped: false, prevEl: null, viewWidth: _this._width, viewHeight: _this._height }; for (i = start2; i < layer2.__endIndex; i++) { var el = list2[i]; if (el.__inHover) { needsRefreshHover = true; } _this._doPaintEl(el, layer2, useDirtyRect, repaintRect, scope, i === layer2.__endIndex - 1); if (useTimer) { var dTime = Date.now() - startTime; if (dTime > 15) { break; } } } if (scope.prevElClipPaths) { ctx.restore(); } }; if (repaintRects) { if (repaintRects.length === 0) { i = layer2.__endIndex; } else { var dpr2 = this_1.dpr; for (var r = 0; r < repaintRects.length; ++r) { var rect = repaintRects[r]; ctx.save(); ctx.beginPath(); ctx.rect(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2); ctx.clip(); repaint(rect); ctx.restore(); } } } else { ctx.save(); repaint(); ctx.restore(); } layer2.__drawIndex = i; if (layer2.__drawIndex < layer2.__endIndex) { finished2 = false; } }; var this_1 = this; for (var k = 0; k < layerList.length; k++) { _loop_1(k); } if (env$1.wxa) { each$g(this._layers, function(layer2) { if (layer2 && layer2.ctx && layer2.ctx.draw) { layer2.ctx.draw(); } }); } return { finished: finished2, needsRefreshHover }; }; CanvasPainter2.prototype._doPaintEl = function(el, currentLayer, useDirtyRect, repaintRect, scope, isLast) { var ctx = currentLayer.ctx; if (useDirtyRect) { var paintRect = el.getPaintRect(); if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) { brush(ctx, el, scope, isLast); el.setPrevPaintRect(paintRect); } } else { brush(ctx, el, scope, isLast); } }; CanvasPainter2.prototype.getLayer = function(zlevel, virtual) { if (this._singleCanvas && !this._needsManuallyCompositing) { zlevel = CANVAS_ZLEVEL; } var layer = this._layers[zlevel]; if (!layer) { layer = new Layer$1("zr_" + zlevel, this, this.dpr); layer.zlevel = zlevel; layer.__builtin__ = true; if (this._layerConfig[zlevel]) { merge(layer, this._layerConfig[zlevel], true); } else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) { merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true); } if (virtual) { layer.virtual = virtual; } this.insertLayer(zlevel, layer); layer.initContext(); } return layer; }; CanvasPainter2.prototype.insertLayer = function(zlevel, layer) { var layersMap = this._layers; var zlevelList = this._zlevelList; var len2 = zlevelList.length; var domRoot = this._domRoot; var prevLayer = null; var i = -1; if (layersMap[zlevel]) { logError("ZLevel " + zlevel + " has been used already"); return; } if (!isLayerValid(layer)) { logError("Layer of zlevel " + zlevel + " is not valid"); return; } if (len2 > 0 && zlevel > zlevelList[0]) { for (i = 0; i < len2 - 1; i++) { if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) { break; } } prevLayer = layersMap[zlevelList[i]]; } zlevelList.splice(i + 1, 0, zlevel); layersMap[zlevel] = layer; if (!layer.virtual) { if (prevLayer) { var prevDom = prevLayer.dom; if (prevDom.nextSibling) { domRoot.insertBefore(layer.dom, prevDom.nextSibling); } else { domRoot.appendChild(layer.dom); } } else { if (domRoot.firstChild) { domRoot.insertBefore(layer.dom, domRoot.firstChild); } else { domRoot.appendChild(layer.dom); } } } layer.__painter = this; }; CanvasPainter2.prototype.eachLayer = function(cb, context) { var zlevelList = this._zlevelList; for (var i = 0; i < zlevelList.length; i++) { var z = zlevelList[i]; cb.call(context, this._layers[z], z); } }; CanvasPainter2.prototype.eachBuiltinLayer = function(cb, context) { var zlevelList = this._zlevelList; for (var i = 0; i < zlevelList.length; i++) { var z = zlevelList[i]; var layer = this._layers[z]; if (layer.__builtin__) { cb.call(context, layer, z); } } }; CanvasPainter2.prototype.eachOtherLayer = function(cb, context) { var zlevelList = this._zlevelList; for (var i = 0; i < zlevelList.length; i++) { var z = zlevelList[i]; var layer = this._layers[z]; if (!layer.__builtin__) { cb.call(context, layer, z); } } }; CanvasPainter2.prototype.getLayers = function() { return this._layers; }; CanvasPainter2.prototype._updateLayerStatus = function(list2) { this.eachBuiltinLayer(function(layer2, z) { layer2.__dirty = layer2.__used = false; }); function updatePrevLayer(idx) { if (prevLayer) { if (prevLayer.__endIndex !== idx) { prevLayer.__dirty = true; } prevLayer.__endIndex = idx; } } if (this._singleCanvas) { for (var i_1 = 1; i_1 < list2.length; i_1++) { var el = list2[i_1]; if (el.zlevel !== list2[i_1 - 1].zlevel || el.incremental) { this._needsManuallyCompositing = true; break; } } } var prevLayer = null; var incrementalLayerCount = 0; var prevZlevel; var i; for (i = 0; i < list2.length; i++) { var el = list2[i]; var zlevel = el.zlevel; var layer = void 0; if (prevZlevel !== zlevel) { prevZlevel = zlevel; incrementalLayerCount = 0; } if (el.incremental) { layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing); layer.incremental = true; incrementalLayerCount = 1; } else { layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing); } if (!layer.__builtin__) { logError("ZLevel " + zlevel + " has been used by unkown layer " + layer.id); } if (layer !== prevLayer) { layer.__used = true; if (layer.__startIndex !== i) { layer.__dirty = true; } layer.__startIndex = i; if (!layer.incremental) { layer.__drawIndex = i; } else { layer.__drawIndex = -1; } updatePrevLayer(i); prevLayer = layer; } if (el.__dirty & REDRAW_BIT && !el.__inHover) { layer.__dirty = true; if (layer.incremental && layer.__drawIndex < 0) { layer.__drawIndex = i; } } } updatePrevLayer(i); this.eachBuiltinLayer(function(layer2, z) { if (!layer2.__used && layer2.getElementCount() > 0) { layer2.__dirty = true; layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0; } if (layer2.__dirty && layer2.__drawIndex < 0) { layer2.__drawIndex = layer2.__startIndex; } }); }; CanvasPainter2.prototype.clear = function() { this.eachBuiltinLayer(this._clearLayer); return this; }; CanvasPainter2.prototype._clearLayer = function(layer) { layer.clear(); }; CanvasPainter2.prototype.setBackgroundColor = function(backgroundColor2) { this._backgroundColor = backgroundColor2; each$g(this._layers, function(layer) { layer.setUnpainted(); }); }; CanvasPainter2.prototype.configLayer = function(zlevel, config) { if (config) { var layerConfig = this._layerConfig; if (!layerConfig[zlevel]) { layerConfig[zlevel] = config; } else { merge(layerConfig[zlevel], config, true); } for (var i = 0; i < this._zlevelList.length; i++) { var _zlevel = this._zlevelList[i]; if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) { var layer = this._layers[_zlevel]; merge(layer, layerConfig[zlevel], true); } } } }; CanvasPainter2.prototype.delLayer = function(zlevel) { var layers = this._layers; var zlevelList = this._zlevelList; var layer = layers[zlevel]; if (!layer) { return; } layer.dom.parentNode.removeChild(layer.dom); delete layers[zlevel]; zlevelList.splice(indexOf(zlevelList, zlevel), 1); }; CanvasPainter2.prototype.resize = function(width, height) { if (!this._domRoot.style) { if (width == null || height == null) { return; } this._width = width; this._height = height; this.getLayer(CANVAS_ZLEVEL).resize(width, height); } else { var domRoot = this._domRoot; domRoot.style.display = "none"; var opts = this._opts; width != null && (opts.width = width); height != null && (opts.height = height); width = this._getSize(0); height = this._getSize(1); domRoot.style.display = ""; if (this._width !== width || height !== this._height) { domRoot.style.width = width + "px"; domRoot.style.height = height + "px"; for (var id in this._layers) { if (this._layers.hasOwnProperty(id)) { this._layers[id].resize(width, height); } } this.refresh(true); } this._width = width; this._height = height; } return this; }; CanvasPainter2.prototype.clearLayer = function(zlevel) { var layer = this._layers[zlevel]; if (layer) { layer.clear(); } }; CanvasPainter2.prototype.dispose = function() { this.root.innerHTML = ""; this.root = this.storage = this._domRoot = this._layers = null; }; CanvasPainter2.prototype.getRenderedCanvas = function(opts) { opts = opts || {}; if (this._singleCanvas && !this._compositeManually) { return this._layers[CANVAS_ZLEVEL].dom; } var imageLayer = new Layer$1("image", this, opts.pixelRatio || this.dpr); imageLayer.initContext(); imageLayer.clear(false, opts.backgroundColor || this._backgroundColor); var ctx = imageLayer.ctx; if (opts.pixelRatio <= this.dpr) { this.refresh(); var width_1 = imageLayer.dom.width; var height_1 = imageLayer.dom.height; this.eachLayer(function(layer) { if (layer.__builtin__) { ctx.drawImage(layer.dom, 0, 0, width_1, height_1); } else if (layer.renderToCanvas) { ctx.save(); layer.renderToCanvas(ctx); ctx.restore(); } }); } else { var scope = { inHover: false, viewWidth: this._width, viewHeight: this._height }; var displayList = this.storage.getDisplayList(true); for (var i = 0, len2 = displayList.length; i < len2; i++) { var el = displayList[i]; brush(ctx, el, scope, i === len2 - 1); } } return imageLayer.dom; }; CanvasPainter2.prototype.getWidth = function() { return this._width; }; CanvasPainter2.prototype.getHeight = function() { return this._height; }; CanvasPainter2.prototype._getSize = function(whIdx) { var opts = this._opts; var wh = ["width", "height"][whIdx]; var cwh = ["clientWidth", "clientHeight"][whIdx]; var plt = ["paddingLeft", "paddingTop"][whIdx]; var prb = ["paddingRight", "paddingBottom"][whIdx]; if (opts[wh] != null && opts[wh] !== "auto") { return parseFloat(opts[wh]); } var root = this.root; var stl = document.defaultView.getComputedStyle(root); return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0; }; CanvasPainter2.prototype.pathToImage = function(path, dpr2) { dpr2 = dpr2 || this.dpr; var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); var rect = path.getBoundingRect(); var style = path.style; var shadowBlurSize = style.shadowBlur * dpr2; var shadowOffsetX = style.shadowOffsetX * dpr2; var shadowOffsetY = style.shadowOffsetY * dpr2; var lineWidth = path.hasStroke() ? style.lineWidth : 0; var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize); var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize); var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize); var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize); var width = rect.width + leftMargin + rightMargin; var height = rect.height + topMargin + bottomMargin; canvas.width = width * dpr2; canvas.height = height * dpr2; ctx.scale(dpr2, dpr2); ctx.clearRect(0, 0, width, height); ctx.dpr = dpr2; var pathTransform = { x: path.x, y: path.y, scaleX: path.scaleX, scaleY: path.scaleY, rotation: path.rotation, originX: path.originX, originY: path.originY }; path.x = leftMargin - rect.x; path.y = topMargin - rect.y; path.rotation = 0; path.scaleX = 1; path.scaleY = 1; path.updateTransform(); if (path) { brush(ctx, path, { inHover: false, viewWidth: this._width, viewHeight: this._height }, true); } var imgShape = new ZRImage$1({ style: { x: 0, y: 0, image: canvas } }); extend(path, pathTransform); return imgShape; }; return CanvasPainter2; }(); var CanvasPainter$1 = CanvasPainter; function install$R(registers) { registers.registerPainter("canvas", CanvasPainter$1); } var LineSeriesModel = function(_super) { __extends$1(LineSeriesModel2, _super); function LineSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LineSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } LineSeriesModel2.prototype.getInitialData = function(option) { return createSeriesData(null, this, { useEncodeDefaulter: true }); }; LineSeriesModel2.prototype.getLegendIcon = function(opt) { var group = new Group$4(); var line = createSymbol$1("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false); group.add(line); line.setStyle(opt.lineStyle); var visualType = this.getData().getVisual("symbol"); var visualRotate = this.getData().getVisual("symbolRotate"); var symbolType = visualType === "none" ? "circle" : visualType; var size = opt.itemHeight * 0.8; var symbol = createSymbol$1(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill); group.add(symbol); symbol.setStyle(opt.itemStyle); var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0; symbol.rotation = symbolRotate * Math.PI / 180; symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); if (symbolType.indexOf("empty") > -1) { symbol.style.stroke = symbol.style.fill; symbol.style.fill = "#fff"; symbol.style.lineWidth = 2; } return group; }; LineSeriesModel2.type = "series.line"; LineSeriesModel2.dependencies = ["grid", "polar"]; LineSeriesModel2.defaultOption = { zlevel: 0, z: 3, coordinateSystem: "cartesian2d", legendHoverLink: true, clip: true, label: { position: "top" }, endLabel: { show: false, valueAnimation: true, distance: 8 }, lineStyle: { width: 2, type: "solid" }, emphasis: { scale: true, lineStyle: { width: "bolder" } }, step: false, smooth: false, smoothMonotone: null, symbol: "emptyCircle", symbolSize: 4, symbolRotate: null, showSymbol: true, showAllSymbol: "auto", connectNulls: false, sampling: "none", animationEasing: "linear", progressive: 0, hoverLayerThreshold: Infinity, universalTransition: { divideShape: "clone" }, triggerLineEvent: false }; return LineSeriesModel2; }(SeriesModel$1); var LineSeries = LineSeriesModel; function getDefaultLabel(data, dataIndex) { var labelDims = data.mapDimensionsAll("defaultedLabel"); var len2 = labelDims.length; if (len2 === 1) { var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]); return rawVal != null ? rawVal + "" : null; } else if (len2) { var vals = []; for (var i = 0; i < labelDims.length; i++) { vals.push(retrieveRawValue(data, dataIndex, labelDims[i])); } return vals.join(" "); } } function getDefaultInterpolatedLabel(data, interpolatedValue) { var labelDims = data.mapDimensionsAll("defaultedLabel"); if (!isArray$1(interpolatedValue)) { return interpolatedValue + ""; } var vals = []; for (var i = 0; i < labelDims.length; i++) { var dimIndex = data.getDimensionIndex(labelDims[i]); if (dimIndex >= 0) { vals.push(interpolatedValue[dimIndex]); } } return vals.join(" "); } var Symbol$1 = function(_super) { __extends$1(Symbol2, _super); function Symbol2(data, idx, seriesScope, opts) { var _this = _super.call(this) || this; _this.updateData(data, idx, seriesScope, opts); return _this; } Symbol2.prototype._createSymbol = function(symbolType, data, idx, symbolSize, keepAspect) { this.removeAll(); var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2, null, keepAspect); symbolPath.attr({ z2: 100, culling: true, scaleX: symbolSize[0] / 2, scaleY: symbolSize[1] / 2 }); symbolPath.drift = driftSymbol; this._symbolType = symbolType; this.add(symbolPath); }; Symbol2.prototype.stopSymbolAnimation = function(toLastFrame) { this.childAt(0).stopAnimation(null, toLastFrame); }; Symbol2.prototype.getSymbolType = function() { return this._symbolType; }; Symbol2.prototype.getSymbolPath = function() { return this.childAt(0); }; Symbol2.prototype.highlight = function() { enterEmphasis(this.childAt(0)); }; Symbol2.prototype.downplay = function() { leaveEmphasis(this.childAt(0)); }; Symbol2.prototype.setZ = function(zlevel, z) { var symbolPath = this.childAt(0); symbolPath.zlevel = zlevel; symbolPath.z = z; }; Symbol2.prototype.setDraggable = function(draggable) { var symbolPath = this.childAt(0); symbolPath.draggable = draggable; symbolPath.cursor = draggable ? "move" : symbolPath.cursor; }; Symbol2.prototype.updateData = function(data, idx, seriesScope, opts) { this.silent = false; var symbolType = data.getItemVisual(idx, "symbol") || "circle"; var seriesModel = data.hostModel; var symbolSize = Symbol2.getSymbolSize(data, idx); var isInit = symbolType !== this._symbolType; var disableAnimation = opts && opts.disableAnimation; if (isInit) { var keepAspect = data.getItemVisual(idx, "symbolKeepAspect"); this._createSymbol(symbolType, data, idx, symbolSize, keepAspect); } else { var symbolPath = this.childAt(0); symbolPath.silent = false; var target = { scaleX: symbolSize[0] / 2, scaleY: symbolSize[1] / 2 }; disableAnimation ? symbolPath.attr(target) : updateProps$1(symbolPath, target, seriesModel, idx); saveOldStyle(symbolPath); } this._updateCommon(data, idx, symbolSize, seriesScope, opts); if (isInit) { var symbolPath = this.childAt(0); if (!disableAnimation) { var target = { scaleX: this._sizeX, scaleY: this._sizeY, style: { opacity: symbolPath.style.opacity } }; symbolPath.scaleX = symbolPath.scaleY = 0; symbolPath.style.opacity = 0; initProps(symbolPath, target, seriesModel, idx); } } if (disableAnimation) { this.childAt(0).stopAnimation("remove"); } this._seriesModel = seriesModel; }; Symbol2.prototype._updateCommon = function(data, idx, symbolSize, seriesScope, opts) { var symbolPath = this.childAt(0); var seriesModel = data.hostModel; var emphasisItemStyle; var blurItemStyle; var selectItemStyle; var focus; var blurScope; var labelStatesModels; var hoverScale; var cursorStyle; if (seriesScope) { emphasisItemStyle = seriesScope.emphasisItemStyle; blurItemStyle = seriesScope.blurItemStyle; selectItemStyle = seriesScope.selectItemStyle; focus = seriesScope.focus; blurScope = seriesScope.blurScope; labelStatesModels = seriesScope.labelStatesModels; hoverScale = seriesScope.hoverScale; cursorStyle = seriesScope.cursorStyle; } if (!seriesScope || data.hasItemOption) { var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); var emphasisModel = itemModel.getModel("emphasis"); emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle(); selectItemStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); blurItemStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); focus = emphasisModel.get("focus"); blurScope = emphasisModel.get("blurScope"); labelStatesModels = getLabelStatesModels(itemModel); hoverScale = emphasisModel.getShallow("scale"); cursorStyle = itemModel.getShallow("cursor"); } var symbolRotate = data.getItemVisual(idx, "symbolRotate"); symbolPath.attr("rotation", (symbolRotate || 0) * Math.PI / 180 || 0); var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize); if (symbolOffset) { symbolPath.x = symbolOffset[0]; symbolPath.y = symbolOffset[1]; } cursorStyle && symbolPath.attr("cursor", cursorStyle); var symbolStyle = data.getItemVisual(idx, "style"); var visualColor = symbolStyle.fill; if (symbolPath instanceof ZRImage$1) { var pathStyle = symbolPath.style; symbolPath.useStyle(extend({ image: pathStyle.image, x: pathStyle.x, y: pathStyle.y, width: pathStyle.width, height: pathStyle.height }, symbolStyle)); } else { if (symbolPath.__isEmptyBrush) { symbolPath.useStyle(extend({}, symbolStyle)); } else { symbolPath.useStyle(symbolStyle); } symbolPath.style.decal = null; symbolPath.setColor(visualColor, opts && opts.symbolInnerColor); symbolPath.style.strokeNoScale = true; } var liftZ = data.getItemVisual(idx, "liftZ"); var z2Origin = this._z2; if (liftZ != null) { if (z2Origin == null) { this._z2 = symbolPath.z2; symbolPath.z2 += liftZ; } } else if (z2Origin != null) { symbolPath.z2 = z2Origin; this._z2 = null; } var useNameLabel = opts && opts.useNameLabel; setLabelStyle(symbolPath, labelStatesModels, { labelFetcher: seriesModel, labelDataIndex: idx, defaultText: getLabelDefaultText, inheritColor: visualColor, defaultOpacity: symbolStyle.opacity }); function getLabelDefaultText(idx2) { return useNameLabel ? data.getName(idx2) : getDefaultLabel(data, idx2); } this._sizeX = symbolSize[0] / 2; this._sizeY = symbolSize[1] / 2; var emphasisState = symbolPath.ensureState("emphasis"); emphasisState.style = emphasisItemStyle; symbolPath.ensureState("select").style = selectItemStyle; symbolPath.ensureState("blur").style = blurItemStyle; if (hoverScale) { var scaleRatio = Math.max(1.1, 3 / this._sizeY); emphasisState.scaleX = this._sizeX * scaleRatio; emphasisState.scaleY = this._sizeY * scaleRatio; } this.setSymbolScale(1); enableHoverEmphasis(this, focus, blurScope); }; Symbol2.prototype.setSymbolScale = function(scale2) { this.scaleX = this.scaleY = scale2; }; Symbol2.prototype.fadeOut = function(cb, opt) { var symbolPath = this.childAt(0); var seriesModel = this._seriesModel; var dataIndex = getECData(this).dataIndex; var animationOpt = opt && opt.animation; this.silent = symbolPath.silent = true; if (opt && opt.fadeLabel) { var textContent = symbolPath.getTextContent(); if (textContent) { removeElement(textContent, { style: { opacity: 0 } }, seriesModel, { dataIndex, removeOpt: animationOpt, cb: function() { symbolPath.removeTextContent(); } }); } } else { symbolPath.removeTextContent(); } removeElement(symbolPath, { style: { opacity: 0 }, scaleX: 0, scaleY: 0 }, seriesModel, { dataIndex, cb, removeOpt: animationOpt }); }; Symbol2.getSymbolSize = function(data, idx) { return normalizeSymbolSize(data.getItemVisual(idx, "symbolSize")); }; return Symbol2; }(Group$4); function driftSymbol(dx, dy) { this.parent.drift(dx, dy); } var SymbolClz = Symbol$1; function symbolNeedsDraw$1(data, point, idx, opt) { return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, "symbol") !== "none"; } function normalizeUpdateOpt(opt) { if (opt != null && !isObject$3(opt)) { opt = { isIgnore: opt }; } return opt || {}; } function makeSeriesScope$2(data) { var seriesModel = data.hostModel; var emphasisModel = seriesModel.getModel("emphasis"); return { emphasisItemStyle: emphasisModel.getModel("itemStyle").getItemStyle(), blurItemStyle: seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(), selectItemStyle: seriesModel.getModel(["select", "itemStyle"]).getItemStyle(), focus: emphasisModel.get("focus"), blurScope: emphasisModel.get("blurScope"), hoverScale: emphasisModel.get("scale"), labelStatesModels: getLabelStatesModels(seriesModel), cursorStyle: seriesModel.get("cursor") }; } var SymbolDraw = function() { function SymbolDraw2(SymbolCtor) { this.group = new Group$4(); this._SymbolCtor = SymbolCtor || SymbolClz; } SymbolDraw2.prototype.updateData = function(data, opt) { opt = normalizeUpdateOpt(opt); var group = this.group; var seriesModel = data.hostModel; var oldData = this._data; var SymbolCtor = this._SymbolCtor; var disableAnimation = opt.disableAnimation; var seriesScope = makeSeriesScope$2(data); var symbolUpdateOpt = { disableAnimation }; var getSymbolPoint = opt.getSymbolPoint || function(idx) { return data.getItemLayout(idx); }; if (!oldData) { group.removeAll(); } data.diff(oldData).add(function(newIdx) { var point = getSymbolPoint(newIdx); if (symbolNeedsDraw$1(data, point, newIdx, opt)) { var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); symbolEl.setPosition(point); data.setItemGraphicEl(newIdx, symbolEl); group.add(symbolEl); } }).update(function(newIdx, oldIdx) { var symbolEl = oldData.getItemGraphicEl(oldIdx); var point = getSymbolPoint(newIdx); if (!symbolNeedsDraw$1(data, point, newIdx, opt)) { group.remove(symbolEl); return; } var newSymbolType = data.getItemVisual(newIdx, "symbol") || "circle"; var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType(); if (!symbolEl || oldSymbolType && oldSymbolType !== newSymbolType) { group.remove(symbolEl); symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); symbolEl.setPosition(point); } else { symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt); var target = { x: point[0], y: point[1] }; disableAnimation ? symbolEl.attr(target) : updateProps$1(symbolEl, target, seriesModel); } group.add(symbolEl); data.setItemGraphicEl(newIdx, symbolEl); }).remove(function(oldIdx) { var el = oldData.getItemGraphicEl(oldIdx); el && el.fadeOut(function() { group.remove(el); }); }).execute(); this._getSymbolPoint = getSymbolPoint; this._data = data; }; SymbolDraw2.prototype.isPersistent = function() { return true; }; SymbolDraw2.prototype.updateLayout = function() { var _this = this; var data = this._data; if (data) { data.eachItemGraphicEl(function(el, idx) { var point = _this._getSymbolPoint(idx); el.setPosition(point); el.markRedraw(); }); } }; SymbolDraw2.prototype.incrementalPrepareUpdate = function(data) { this._seriesScope = makeSeriesScope$2(data); this._data = null; this.group.removeAll(); }; SymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) { opt = normalizeUpdateOpt(opt); function updateIncrementalAndHover(el2) { if (!el2.isGroup) { el2.incremental = true; el2.ensureState("emphasis").hoverLayer = true; } } for (var idx = taskParams.start; idx < taskParams.end; idx++) { var point = data.getItemLayout(idx); if (symbolNeedsDraw$1(data, point, idx, opt)) { var el = new this._SymbolCtor(data, idx, this._seriesScope); el.traverse(updateIncrementalAndHover); el.setPosition(point); this.group.add(el); data.setItemGraphicEl(idx, el); } } }; SymbolDraw2.prototype.remove = function(enableAnimation) { var group = this.group; var data = this._data; if (data && enableAnimation) { data.eachItemGraphicEl(function(el) { el.fadeOut(function() { group.remove(el); }); }); } else { group.removeAll(); } }; return SymbolDraw2; }(); var SymbolDraw$1 = SymbolDraw; function prepareDataCoordInfo(coordSys, data, valueOrigin) { var baseAxis = coordSys.getBaseAxis(); var valueAxis2 = coordSys.getOtherAxis(baseAxis); var valueStart = getValueStart(valueAxis2, valueOrigin); var baseAxisDim = baseAxis.dim; var valueAxisDim = valueAxis2.dim; var valueDim = data.mapDimension(valueAxisDim); var baseDim = data.mapDimension(baseAxisDim); var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; var dims = map$1(coordSys.dimensions, function(coordDim) { return data.mapDimension(coordDim); }); var stacked = false; var stackResultDim = data.getCalculationInfo("stackResultDimension"); if (isDimensionStacked(data, dims[0])) { stacked = true; dims[0] = stackResultDim; } if (isDimensionStacked(data, dims[1])) { stacked = true; dims[1] = stackResultDim; } return { dataDimsForPoint: dims, valueStart, valueAxisDim, baseAxisDim, stacked: !!stacked, valueDim, baseDim, baseDataOffset, stackedOverDimension: data.getCalculationInfo("stackedOverDimension") }; } function getValueStart(valueAxis2, valueOrigin) { var valueStart = 0; var extent3 = valueAxis2.scale.getExtent(); if (valueOrigin === "start") { valueStart = extent3[0]; } else if (valueOrigin === "end") { valueStart = extent3[1]; } else { if (extent3[0] > 0) { valueStart = extent3[0]; } else if (extent3[1] < 0) { valueStart = extent3[1]; } } return valueStart; } function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) { var value = NaN; if (dataCoordInfo.stacked) { value = data.get(data.getCalculationInfo("stackedOverDimension"), idx); } if (isNaN(value)) { value = dataCoordInfo.valueStart; } var baseDataOffset = dataCoordInfo.baseDataOffset; var stackedData = []; stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx); stackedData[1 - baseDataOffset] = value; return coordSys.dataToPoint(stackedData); } var supportFloat32Array = typeof Float32Array !== "undefined"; var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array; function createFloat32Array(arg) { if (isArray$1(arg)) { return supportFloat32Array ? new Float32Array(arg) : arg; } return new Float32ArrayCtor(arg); } function diffData(oldData, newData) { var diffResult = []; newData.diff(oldData).add(function(idx) { diffResult.push({ cmd: "+", idx }); }).update(function(newIdx, oldIdx) { diffResult.push({ cmd: "=", idx: oldIdx, idx1: newIdx }); }).remove(function(idx) { diffResult.push({ cmd: "-", idx }); }).execute(); return diffResult; } function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) { var diff2 = diffData(oldData, newData); var currPoints = []; var nextPoints = []; var currStackedPoints = []; var nextStackedPoints = []; var status = []; var sortedIndices = []; var rawIndices = []; var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin); var oldPoints = oldData.getLayout("points") || []; var newPoints = newData.getLayout("points") || []; for (var i = 0; i < diff2.length; i++) { var diffItem = diff2[i]; var pointAdded = true; var oldIdx2 = void 0; var newIdx2 = void 0; switch (diffItem.cmd) { case "=": oldIdx2 = diffItem.idx * 2; newIdx2 = diffItem.idx1 * 2; var currentX = oldPoints[oldIdx2]; var currentY = oldPoints[oldIdx2 + 1]; var nextX = newPoints[newIdx2]; var nextY = newPoints[newIdx2 + 1]; if (isNaN(currentX) || isNaN(currentY)) { currentX = nextX; currentY = nextY; } currPoints.push(currentX, currentY); nextPoints.push(nextX, nextY); currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]); nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); rawIndices.push(newData.getRawIndex(diffItem.idx1)); break; case "+": var newIdx = diffItem.idx; var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint; var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]); newIdx2 = newIdx * 2; currPoints.push(oldPt[0], oldPt[1]); nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]); var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx); currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]); nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); rawIndices.push(newData.getRawIndex(newIdx)); break; case "-": pointAdded = false; } if (pointAdded) { status.push(diffItem); sortedIndices.push(sortedIndices.length); } } sortedIndices.sort(function(a, b) { return rawIndices[a] - rawIndices[b]; }); var len2 = currPoints.length; var sortedCurrPoints = createFloat32Array(len2); var sortedNextPoints = createFloat32Array(len2); var sortedCurrStackedPoints = createFloat32Array(len2); var sortedNextStackedPoints = createFloat32Array(len2); var sortedStatus = []; for (var i = 0; i < sortedIndices.length; i++) { var idx = sortedIndices[i]; var i2 = i * 2; var idx2 = idx * 2; sortedCurrPoints[i2] = currPoints[idx2]; sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1]; sortedNextPoints[i2] = nextPoints[idx2]; sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1]; sortedCurrStackedPoints[i2] = currStackedPoints[idx2]; sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1]; sortedNextStackedPoints[i2] = nextStackedPoints[idx2]; sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1]; sortedStatus[i] = status[idx]; } return { current: sortedCurrPoints, next: sortedNextPoints, stackedOnCurrent: sortedCurrStackedPoints, stackedOnNext: sortedNextStackedPoints, status: sortedStatus }; } var mathMin$5 = Math.min; var mathMax$5 = Math.max; function isPointNull$1(x, y) { return isNaN(x) || isNaN(y); } function drawSegment(ctx, points2, start2, segLen, allLen, dir3, smooth, smoothMonotone, connectNulls) { var prevX; var prevY; var cpx0; var cpy0; var cpx1; var cpy1; var idx = start2; var k = 0; for (; k < segLen; k++) { var x = points2[idx * 2]; var y = points2[idx * 2 + 1]; if (idx >= allLen || idx < 0) { break; } if (isPointNull$1(x, y)) { if (connectNulls) { idx += dir3; continue; } break; } if (idx === start2) { ctx[dir3 > 0 ? "moveTo" : "lineTo"](x, y); cpx0 = x; cpy0 = y; } else { var dx = x - prevX; var dy = y - prevY; if (dx * dx + dy * dy < 0.5) { idx += dir3; continue; } if (smooth > 0) { var nextIdx = idx + dir3; var nextX = points2[nextIdx * 2]; var nextY = points2[nextIdx * 2 + 1]; while (nextX === x && nextY === y && k < segLen) { k++; nextIdx += dir3; idx += dir3; nextX = points2[nextIdx * 2]; nextY = points2[nextIdx * 2 + 1]; x = points2[idx * 2]; y = points2[idx * 2 + 1]; dx = x - prevX; dy = y - prevY; } var tmpK = k + 1; if (connectNulls) { while (isPointNull$1(nextX, nextY) && tmpK < segLen) { tmpK++; nextIdx += dir3; nextX = points2[nextIdx * 2]; nextY = points2[nextIdx * 2 + 1]; } } var ratioNextSeg = 0.5; var vx = 0; var vy = 0; var nextCpx0 = void 0; var nextCpy0 = void 0; if (tmpK >= segLen || isPointNull$1(nextX, nextY)) { cpx1 = x; cpy1 = y; } else { vx = nextX - prevX; vy = nextY - prevY; var dx0 = x - prevX; var dx1 = nextX - x; var dy0 = y - prevY; var dy1 = nextY - y; var lenPrevSeg = void 0; var lenNextSeg = void 0; if (smoothMonotone === "x") { lenPrevSeg = Math.abs(dx0); lenNextSeg = Math.abs(dx1); cpx1 = x - lenPrevSeg * smooth; cpy1 = y; nextCpx0 = x + lenPrevSeg * smooth; nextCpy0 = y; } else if (smoothMonotone === "y") { lenPrevSeg = Math.abs(dy0); lenNextSeg = Math.abs(dy1); cpx1 = x; cpy1 = y - lenPrevSeg * smooth; nextCpx0 = x; nextCpy0 = y + lenPrevSeg * smooth; } else { lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0); lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg); cpx1 = x - vx * smooth * (1 - ratioNextSeg); cpy1 = y - vy * smooth * (1 - ratioNextSeg); nextCpx0 = x + vx * smooth * ratioNextSeg; nextCpy0 = y + vy * smooth * ratioNextSeg; nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x)); nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y)); nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x)); nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y)); vx = nextCpx0 - x; vy = nextCpy0 - y; cpx1 = x - vx * lenPrevSeg / lenNextSeg; cpy1 = y - vy * lenPrevSeg / lenNextSeg; cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x)); cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y)); cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x)); cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y)); vx = x - cpx1; vy = y - cpy1; nextCpx0 = x + vx * lenNextSeg / lenPrevSeg; nextCpy0 = y + vy * lenNextSeg / lenPrevSeg; } } ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y); cpx0 = nextCpx0; cpy0 = nextCpy0; } else { ctx.lineTo(x, y); } } prevX = x; prevY = y; idx += dir3; } return k; } var ECPolylineShape = function() { function ECPolylineShape2() { this.smooth = 0; this.smoothConstraint = true; } return ECPolylineShape2; }(); var ECPolyline = function(_super) { __extends$1(ECPolyline2, _super); function ECPolyline2(opts) { var _this = _super.call(this, opts) || this; _this.type = "ec-polyline"; return _this; } ECPolyline2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; ECPolyline2.prototype.getDefaultShape = function() { return new ECPolylineShape(); }; ECPolyline2.prototype.buildPath = function(ctx, shape) { var points2 = shape.points; var i = 0; var len2 = points2.length / 2; if (shape.connectNulls) { for (; len2 > 0; len2--) { if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) { break; } } for (; i < len2; i++) { if (!isPointNull$1(points2[i * 2], points2[i * 2 + 1])) { break; } } } while (i < len2) { i += drawSegment(ctx, points2, i, len2, len2, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1; } }; ECPolyline2.prototype.getPointOn = function(xOrY, dim) { if (!this.path) { this.createPathProxy(); this.buildPath(this.path, this.shape); } var path = this.path; var data = path.data; var CMD2 = PathProxy$1.CMD; var x0; var y0; var isDimX = dim === "x"; var roots2 = []; for (var i = 0; i < data.length; ) { var cmd = data[i++]; var x = void 0; var y = void 0; var x2 = void 0; var y2 = void 0; var x3 = void 0; var y3 = void 0; var t = void 0; switch (cmd) { case CMD2.M: x0 = data[i++]; y0 = data[i++]; break; case CMD2.L: x = data[i++]; y = data[i++]; t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0); if (t <= 1 && t >= 0) { var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0; return isDimX ? [xOrY, val] : [val, xOrY]; } x0 = x; y0 = y; break; case CMD2.C: x = data[i++]; y = data[i++]; x2 = data[i++]; y2 = data[i++]; x3 = data[i++]; y3 = data[i++]; var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots2) : cubicRootAt(y0, y, y2, y3, xOrY, roots2); if (nRoot > 0) { for (var i_1 = 0; i_1 < nRoot; i_1++) { var t_1 = roots2[i_1]; if (t_1 <= 1 && t_1 >= 0) { var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1); return isDimX ? [xOrY, val] : [val, xOrY]; } } } x0 = x3; y0 = y3; break; } } }; return ECPolyline2; }(Path$1); var ECPolygonShape = function(_super) { __extends$1(ECPolygonShape2, _super); function ECPolygonShape2() { return _super !== null && _super.apply(this, arguments) || this; } return ECPolygonShape2; }(ECPolylineShape); var ECPolygon = function(_super) { __extends$1(ECPolygon2, _super); function ECPolygon2(opts) { var _this = _super.call(this, opts) || this; _this.type = "ec-polygon"; return _this; } ECPolygon2.prototype.getDefaultShape = function() { return new ECPolygonShape(); }; ECPolygon2.prototype.buildPath = function(ctx, shape) { var points2 = shape.points; var stackedOnPoints = shape.stackedOnPoints; var i = 0; var len2 = points2.length / 2; var smoothMonotone = shape.smoothMonotone; if (shape.connectNulls) { for (; len2 > 0; len2--) { if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) { break; } } for (; i < len2; i++) { if (!isPointNull$1(points2[i * 2], points2[i * 2 + 1])) { break; } } } while (i < len2) { var k = drawSegment(ctx, points2, i, len2, len2, 1, shape.smooth, smoothMonotone, shape.connectNulls); drawSegment(ctx, stackedOnPoints, i + k - 1, k, len2, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls); i += k + 1; ctx.closePath(); } }; return ECPolygon2; }(Path$1); function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) { var rect = cartesian.getArea(); var x = rect.x; var y = rect.y; var width = rect.width; var height = rect.height; var lineWidth = seriesModel.get(["lineStyle", "width"]) || 2; x -= lineWidth / 2; y -= lineWidth / 2; width += lineWidth; height += lineWidth; x = Math.floor(x); width = Math.round(width); var clipPath = new Rect$3({ shape: { x, y, width, height } }); if (hasAnimation) { var baseAxis = cartesian.getBaseAxis(); var isHorizontal = baseAxis.isHorizontal(); var isAxisInversed = baseAxis.inverse; if (isHorizontal) { if (isAxisInversed) { clipPath.shape.x += width; } clipPath.shape.width = 0; } else { if (!isAxisInversed) { clipPath.shape.y += height; } clipPath.shape.height = 0; } var duringCb = typeof during === "function" ? function(percent) { during(percent, clipPath); } : null; initProps(clipPath, { shape: { width, height, x, y } }, seriesModel, null, done, duringCb); } return clipPath; } function createPolarClipPath(polar, hasAnimation, seriesModel) { var sectorArea = polar.getArea(); var r0 = round$2(sectorArea.r0, 1); var r = round$2(sectorArea.r, 1); var clipPath = new Sector$1({ shape: { cx: round$2(polar.cx, 1), cy: round$2(polar.cy, 1), r0, r, startAngle: sectorArea.startAngle, endAngle: sectorArea.endAngle, clockwise: sectorArea.clockwise } }); if (hasAnimation) { var isRadial = polar.getBaseAxis().dim === "angle"; if (isRadial) { clipPath.shape.endAngle = sectorArea.startAngle; } else { clipPath.shape.r = r0; } initProps(clipPath, { shape: { endAngle: sectorArea.endAngle, r } }, seriesModel); } return clipPath; } function createClipPath(coordSys, hasAnimation, seriesModel, done, during) { if (!coordSys) { return null; } else if (coordSys.type === "polar") { return createPolarClipPath(coordSys, hasAnimation, seriesModel); } else if (coordSys.type === "cartesian2d") { return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during); } return null; } function isCoordinateSystemType(coordSys, type) { return coordSys.type === type; } function isPointsSame(points1, points2) { if (points1.length !== points2.length) { return; } for (var i = 0; i < points1.length; i++) { if (points1[i] !== points2[i]) { return; } } return true; } function bboxFromPoints(points2) { var minX = Infinity; var minY = Infinity; var maxX = -Infinity; var maxY = -Infinity; for (var i = 0; i < points2.length; ) { var x = points2[i++]; var y = points2[i++]; if (!isNaN(x)) { minX = Math.min(x, minX); maxX = Math.max(x, maxX); } if (!isNaN(y)) { minY = Math.min(y, minY); maxY = Math.max(y, maxY); } } return [[minX, minY], [maxX, maxY]]; } function getBoundingDiff(points1, points2) { var _a2 = bboxFromPoints(points1), min1 = _a2[0], max1 = _a2[1]; var _b2 = bboxFromPoints(points2), min22 = _b2[0], max22 = _b2[1]; return Math.max(Math.abs(min1[0] - min22[0]), Math.abs(min1[1] - min22[1]), Math.abs(max1[0] - max22[0]), Math.abs(max1[1] - max22[1])); } function getSmooth(smooth) { return typeof smooth === "number" ? smooth : smooth ? 0.5 : 0; } function getStackedOnPoints(coordSys, data, dataCoordInfo) { if (!dataCoordInfo.valueDim) { return []; } var len2 = data.count(); var points2 = createFloat32Array(len2 * 2); for (var idx = 0; idx < len2; idx++) { var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx); points2[idx * 2] = pt[0]; points2[idx * 2 + 1] = pt[1]; } return points2; } function turnPointsIntoStep(points2, coordSys, stepTurnAt) { var baseAxis = coordSys.getBaseAxis(); var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1; var stepPoints = []; var i = 0; var stepPt = []; var pt = []; var nextPt = []; for (; i < points2.length - 2; i += 2) { nextPt[0] = points2[i + 2]; nextPt[1] = points2[i + 3]; pt[0] = points2[i]; pt[1] = points2[i + 1]; stepPoints.push(pt[0], pt[1]); switch (stepTurnAt) { case "end": stepPt[baseIndex] = nextPt[baseIndex]; stepPt[1 - baseIndex] = pt[1 - baseIndex]; stepPoints.push(stepPt[0], stepPt[1]); break; case "middle": var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2; var stepPt2 = []; stepPt[baseIndex] = stepPt2[baseIndex] = middle; stepPt[1 - baseIndex] = pt[1 - baseIndex]; stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]; stepPoints.push(stepPt[0], stepPt[1]); stepPoints.push(stepPt2[0], stepPt2[1]); break; default: stepPt[baseIndex] = pt[baseIndex]; stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; stepPoints.push(stepPt[0], stepPt[1]); } } stepPoints.push(points2[i++], points2[i++]); return stepPoints; } function clipColorStops(colorStops, maxSize) { var newColorStops = []; var len2 = colorStops.length; var prevOutOfRangeColorStop; var prevInRangeColorStop; function lerpStop(stop0, stop1, clippedCoord) { var coord0 = stop0.coord; var p = (clippedCoord - coord0) / (stop1.coord - coord0); var color2 = lerp(p, [stop0.color, stop1.color]); return { coord: clippedCoord, color: color2 }; } for (var i = 0; i < len2; i++) { var stop_1 = colorStops[i]; var coord = stop_1.coord; if (coord < 0) { prevOutOfRangeColorStop = stop_1; } else if (coord > maxSize) { if (prevInRangeColorStop) { newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize)); } else if (prevOutOfRangeColorStop) { newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize)); } break; } else { if (prevOutOfRangeColorStop) { newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); prevOutOfRangeColorStop = null; } newColorStops.push(stop_1); prevInRangeColorStop = stop_1; } } return newColorStops; } function getVisualGradient(data, coordSys, api) { var visualMetaList = data.getVisual("visualMeta"); if (!visualMetaList || !visualMetaList.length || !data.count()) { return; } if (coordSys.type !== "cartesian2d") { return; } var coordDim; var visualMeta; for (var i = visualMetaList.length - 1; i >= 0; i--) { var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension); coordDim = dimInfo && dimInfo.coordDim; if (coordDim === "x" || coordDim === "y") { visualMeta = visualMetaList[i]; break; } } if (!visualMeta) { return; } var axis = coordSys.getAxis(coordDim); var colorStops = map$1(visualMeta.stops, function(stop2) { return { coord: axis.toGlobalCoord(axis.dataToCoord(stop2.value)), color: stop2.color }; }); var stopLen = colorStops.length; var outerColors = visualMeta.outerColors.slice(); if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) { colorStops.reverse(); outerColors.reverse(); } var colorStopsInRange = clipColorStops(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight()); var inRangeStopLen = colorStopsInRange.length; if (!inRangeStopLen && stopLen) { return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color; } var tinyExtent = 10; var minCoord = colorStopsInRange[0].coord - tinyExtent; var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent; var coordSpan = maxCoord - minCoord; if (coordSpan < 1e-3) { return "transparent"; } each$g(colorStopsInRange, function(stop2) { stop2.offset = (stop2.coord - minCoord) / coordSpan; }); colorStopsInRange.push({ offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5, color: outerColors[1] || "transparent" }); colorStopsInRange.unshift({ offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5, color: outerColors[0] || "transparent" }); var gradient = new LinearGradient$1(0, 0, 0, 0, colorStopsInRange, true); gradient[coordDim] = minCoord; gradient[coordDim + "2"] = maxCoord; return gradient; } function getIsIgnoreFunc(seriesModel, data, coordSys) { var showAllSymbol = seriesModel.get("showAllSymbol"); var isAuto = showAllSymbol === "auto"; if (showAllSymbol && !isAuto) { return; } var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0]; if (!categoryAxis2) { return; } if (isAuto && canShowAllSymbolForCategory(categoryAxis2, data)) { return; } var categoryDataDim = data.mapDimension(categoryAxis2.dim); var labelMap = {}; each$g(categoryAxis2.getViewLabels(), function(labelItem) { var ordinalNumber = categoryAxis2.scale.getRawOrdinalNumber(labelItem.tickValue); labelMap[ordinalNumber] = 1; }); return function(dataIndex) { return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex)); }; } function canShowAllSymbolForCategory(categoryAxis2, data) { var axisExtent = categoryAxis2.getExtent(); var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis2.scale.count(); isNaN(availSize) && (availSize = 0); var dataLen = data.count(); var step2 = Math.max(1, Math.round(dataLen / 5)); for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step2) { if (SymbolClz.getSymbolSize(data, dataIndex)[categoryAxis2.isHorizontal() ? 1 : 0] * 1.5 > availSize) { return false; } } return true; } function isPointNull(x, y) { return isNaN(x) || isNaN(y); } function getLastIndexNotNull(points2) { var len2 = points2.length / 2; for (; len2 > 0; len2--) { if (!isPointNull(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) { break; } } return len2 - 1; } function getPointAtIndex(points2, idx) { return [points2[idx * 2], points2[idx * 2 + 1]]; } function getIndexRange(points2, xOrY, dim) { var len2 = points2.length / 2; var dimIdx = dim === "x" ? 0 : 1; var a; var b; var prevIndex = 0; var nextIndex = -1; for (var i = 0; i < len2; i++) { b = points2[i * 2 + dimIdx]; if (isNaN(b) || isNaN(points2[i * 2 + 1 - dimIdx])) { continue; } if (i === 0) { a = b; continue; } if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) { nextIndex = i; break; } prevIndex = i; a = b; } return { range: [prevIndex, nextIndex], t: (xOrY - a) / (b - a) }; } function anyStateShowEndLabel(seriesModel) { if (seriesModel.get(["endLabel", "show"])) { return true; } for (var i = 0; i < SPECIAL_STATES.length; i++) { if (seriesModel.get([SPECIAL_STATES[i], "endLabel", "show"])) { return true; } } return false; } function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) { if (isCoordinateSystemType(coordSys, "cartesian2d")) { var endLabelModel_1 = seriesModel.getModel("endLabel"); var valueAnimation_1 = endLabelModel_1.get("valueAnimation"); var data_1 = seriesModel.getData(); var labelAnimationRecord_1 = { lastFrameIndex: 0 }; var during = anyStateShowEndLabel(seriesModel) ? function(percent, clipRect) { lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys); } : null; var isHorizontal = coordSys.getBaseAxis().isHorizontal(); var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function() { var endLabel = lineView._endLabel; if (endLabel && hasAnimation) { if (labelAnimationRecord_1.originalX != null) { endLabel.attr({ x: labelAnimationRecord_1.originalX, y: labelAnimationRecord_1.originalY }); } } }, during); if (!seriesModel.get("clip", true)) { var rectShape = clipPath.shape; var expandSize = Math.max(rectShape.width, rectShape.height); if (isHorizontal) { rectShape.y -= expandSize; rectShape.height += expandSize * 2; } else { rectShape.x -= expandSize; rectShape.width += expandSize * 2; } } if (during) { during(1, clipPath); } return clipPath; } else { return createPolarClipPath(coordSys, hasAnimation, seriesModel); } } function getEndLabelStateSpecified(endLabelModel, coordSys) { var baseAxis = coordSys.getBaseAxis(); var isHorizontal = baseAxis.isHorizontal(); var isBaseInversed = baseAxis.inverse; var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center"; var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom"; return { normal: { align: endLabelModel.get("align") || align, verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign } }; } var LineView = function(_super) { __extends$1(LineView2, _super); function LineView2() { return _super !== null && _super.apply(this, arguments) || this; } LineView2.prototype.init = function() { var lineGroup = new Group$4(); var symbolDraw = new SymbolDraw$1(); this.group.add(symbolDraw.group); this._symbolDraw = symbolDraw; this._lineGroup = lineGroup; }; LineView2.prototype.render = function(seriesModel, ecModel, api) { var _this = this; var coordSys = seriesModel.coordinateSystem; var group = this.group; var data = seriesModel.getData(); var lineStyleModel = seriesModel.getModel("lineStyle"); var areaStyleModel = seriesModel.getModel("areaStyle"); var points2 = data.getLayout("points") || []; var isCoordSysPolar = coordSys.type === "polar"; var prevCoordSys = this._coordSys; var symbolDraw = this._symbolDraw; var polyline = this._polyline; var polygon = this._polygon; var lineGroup = this._lineGroup; var hasAnimation = seriesModel.get("animation"); var isAreaChart = !areaStyleModel.isEmpty(); var valueOrigin = areaStyleModel.get("origin"); var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin); var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo); var showSymbol = seriesModel.get("showSymbol"); var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); var oldData = this._data; oldData && oldData.eachItemGraphicEl(function(el, idx) { if (el.__temp) { group.remove(el); oldData.setItemGraphicEl(idx, null); } }); if (!showSymbol) { symbolDraw.remove(); } group.add(lineGroup); var step2 = !isCoordSysPolar ? seriesModel.get("step") : false; var clipShapeForSymbol; if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) { clipShapeForSymbol = coordSys.getArea(); if (clipShapeForSymbol.width != null) { clipShapeForSymbol.x -= 0.1; clipShapeForSymbol.y -= 0.1; clipShapeForSymbol.width += 0.2; clipShapeForSymbol.height += 0.2; } else if (clipShapeForSymbol.r0) { clipShapeForSymbol.r0 -= 0.5; clipShapeForSymbol.r += 0.5; } } this._clipShapeForSymbol = clipShapeForSymbol; var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")]; if (!(polyline && prevCoordSys.type === coordSys.type && step2 === this._step)) { showSymbol && symbolDraw.updateData(data, { isIgnore: isIgnoreFunc, clipShape: clipShapeForSymbol, disableAnimation: true, getSymbolPoint: function(idx) { return [points2[idx * 2], points2[idx * 2 + 1]]; } }); hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol); if (step2) { points2 = turnPointsIntoStep(points2, coordSys, step2); if (stackedOnPoints) { stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step2); } } polyline = this._newPolyline(points2); if (isAreaChart) { polygon = this._newPolygon(points2, stackedOnPoints); } if (!isCoordSysPolar) { this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); } lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); } else { if (isAreaChart && !polygon) { polygon = this._newPolygon(points2, stackedOnPoints); } else if (polygon && !isAreaChart) { lineGroup.remove(polygon); polygon = this._polygon = null; } if (!isCoordSysPolar) { this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); } var oldClipPath = lineGroup.getClipPath(); if (oldClipPath) { var newClipPath = createLineClipPath(this, coordSys, false, seriesModel); initProps(oldClipPath, { shape: newClipPath.shape }, seriesModel); } else { lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); } showSymbol && symbolDraw.updateData(data, { isIgnore: isIgnoreFunc, clipShape: clipShapeForSymbol, disableAnimation: true, getSymbolPoint: function(idx) { return [points2[idx * 2], points2[idx * 2 + 1]]; } }); if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points2)) { if (hasAnimation) { this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step2, valueOrigin); } else { if (step2) { points2 = turnPointsIntoStep(points2, coordSys, step2); if (stackedOnPoints) { stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step2); } } polyline.setShape({ points: points2 }); polygon && polygon.setShape({ points: points2, stackedOnPoints }); } } } var focus = seriesModel.get(["emphasis", "focus"]); var blurScope = seriesModel.get(["emphasis", "blurScope"]); polyline.useStyle(defaults(lineStyleModel.getLineStyle(), { fill: "none", stroke: visualColor, lineJoin: "bevel" })); setStatesStylesFromModel(polyline, seriesModel, "lineStyle"); if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") { var emphasisLineStyle = polyline.getState("emphasis").style; emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1; } getECData(polyline).seriesIndex = seriesModel.seriesIndex; enableHoverEmphasis(polyline, focus, blurScope); var smooth = getSmooth(seriesModel.get("smooth")); var smoothMonotone = seriesModel.get("smoothMonotone"); var connectNulls = seriesModel.get("connectNulls"); polyline.setShape({ smooth, smoothMonotone, connectNulls }); if (polygon) { var stackedOnSeries = data.getCalculationInfo("stackedOnSeries"); var stackedOnSmooth = 0; polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { fill: visualColor, opacity: 0.7, lineJoin: "bevel", decal: data.getVisual("style").decal })); if (stackedOnSeries) { stackedOnSmooth = getSmooth(stackedOnSeries.get("smooth")); } polygon.setShape({ smooth, stackedOnSmooth, smoothMonotone, connectNulls }); setStatesStylesFromModel(polygon, seriesModel, "areaStyle"); getECData(polygon).seriesIndex = seriesModel.seriesIndex; enableHoverEmphasis(polygon, focus, blurScope); } var changePolyState = function(toState) { _this._changePolyState(toState); }; data.eachItemGraphicEl(function(el) { el && (el.onHoverStateChange = changePolyState); }); this._polyline.onHoverStateChange = changePolyState; this._data = data; this._coordSys = coordSys; this._stackedOnPoints = stackedOnPoints; this._points = points2; this._step = step2; this._valueOrigin = valueOrigin; if (seriesModel.get("triggerLineEvent")) { this.packEventData(seriesModel, polyline); polygon && this.packEventData(seriesModel, polygon); } }; LineView2.prototype.packEventData = function(seriesModel, el) { getECData(el).eventData = { componentType: "series", componentSubType: "line", componentIndex: seriesModel.componentIndex, seriesIndex: seriesModel.seriesIndex, seriesName: seriesModel.name, seriesType: "line" }; }; LineView2.prototype.highlight = function(seriesModel, ecModel, api, payload) { var data = seriesModel.getData(); var dataIndex = queryDataIndex(data, payload); this._changePolyState("emphasis"); if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) { var points2 = data.getLayout("points"); var symbol = data.getItemGraphicEl(dataIndex); if (!symbol) { var x = points2[dataIndex * 2]; var y = points2[dataIndex * 2 + 1]; if (isNaN(x) || isNaN(y)) { return; } if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) { return; } var zlevel = seriesModel.get("zlevel"); var z = seriesModel.get("z"); symbol = new SymbolClz(data, dataIndex); symbol.x = x; symbol.y = y; symbol.setZ(zlevel, z); var symbolLabel = symbol.getSymbolPath().getTextContent(); if (symbolLabel) { symbolLabel.zlevel = zlevel; symbolLabel.z = z; symbolLabel.z2 = this._polyline.z2 + 1; } symbol.__temp = true; data.setItemGraphicEl(dataIndex, symbol); symbol.stopSymbolAnimation(true); this.group.add(symbol); } symbol.highlight(); } else { ChartView$1.prototype.highlight.call(this, seriesModel, ecModel, api, payload); } }; LineView2.prototype.downplay = function(seriesModel, ecModel, api, payload) { var data = seriesModel.getData(); var dataIndex = queryDataIndex(data, payload); this._changePolyState("normal"); if (dataIndex != null && dataIndex >= 0) { var symbol = data.getItemGraphicEl(dataIndex); if (symbol) { if (symbol.__temp) { data.setItemGraphicEl(dataIndex, null); this.group.remove(symbol); } else { symbol.downplay(); } } } else { ChartView$1.prototype.downplay.call(this, seriesModel, ecModel, api, payload); } }; LineView2.prototype._changePolyState = function(toState) { var polygon = this._polygon; setStatesFlag(this._polyline, toState); polygon && setStatesFlag(polygon, toState); }; LineView2.prototype._newPolyline = function(points2) { var polyline = this._polyline; if (polyline) { this._lineGroup.remove(polyline); } polyline = new ECPolyline({ shape: { points: points2 }, segmentIgnoreThreshold: 2, z2: 10 }); this._lineGroup.add(polyline); this._polyline = polyline; return polyline; }; LineView2.prototype._newPolygon = function(points2, stackedOnPoints) { var polygon = this._polygon; if (polygon) { this._lineGroup.remove(polygon); } polygon = new ECPolygon({ shape: { points: points2, stackedOnPoints }, segmentIgnoreThreshold: 2 }); this._lineGroup.add(polygon); this._polygon = polygon; return polygon; }; LineView2.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) { var isHorizontalOrRadial; var isCoordSysPolar; var baseAxis = coordSys.getBaseAxis(); var isAxisInverse = baseAxis.inverse; if (coordSys.type === "cartesian2d") { isHorizontalOrRadial = baseAxis.isHorizontal(); isCoordSysPolar = false; } else if (coordSys.type === "polar") { isHorizontalOrRadial = baseAxis.dim === "angle"; isCoordSysPolar = true; } var seriesModel = data.hostModel; var seriesDuration = seriesModel.get("animationDuration"); if (typeof seriesDuration === "function") { seriesDuration = seriesDuration(null); } var seriesDalay = seriesModel.get("animationDelay") || 0; var seriesDalayValue = typeof seriesDalay === "function" ? seriesDalay(null) : seriesDalay; data.eachItemGraphicEl(function(symbol, idx) { var el = symbol; if (el) { var point = [symbol.x, symbol.y]; var start2 = void 0; var end2 = void 0; var current = void 0; if (clipShape) { if (isCoordSysPolar) { var polarClip = clipShape; var coord = coordSys.pointToCoord(point); if (isHorizontalOrRadial) { start2 = polarClip.startAngle; end2 = polarClip.endAngle; current = -coord[1] / 180 * Math.PI; } else { start2 = polarClip.r0; end2 = polarClip.r; current = coord[0]; } } else { var gridClip = clipShape; if (isHorizontalOrRadial) { start2 = gridClip.x; end2 = gridClip.x + gridClip.width; current = symbol.x; } else { start2 = gridClip.y + gridClip.height; end2 = gridClip.y; current = symbol.y; } } } var ratio = end2 === start2 ? 0 : (current - start2) / (end2 - start2); if (isAxisInverse) { ratio = 1 - ratio; } var delay = typeof seriesDalay === "function" ? seriesDalay(idx) : seriesDuration * ratio + seriesDalayValue; var symbolPath = el.getSymbolPath(); var text = symbolPath.getTextContent(); el.attr({ scaleX: 0, scaleY: 0 }); el.animateTo({ scaleX: 1, scaleY: 1 }, { duration: 200, setToFinal: true, delay }); if (text) { text.animateFrom({ style: { opacity: 0 } }, { duration: 300, delay }); } symbolPath.disableLabelAnimation = true; } }); }; LineView2.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) { var endLabelModel = seriesModel.getModel("endLabel"); if (anyStateShowEndLabel(seriesModel)) { var data_2 = seriesModel.getData(); var polyline = this._polyline; var endLabel = this._endLabel; if (!endLabel) { endLabel = this._endLabel = new ZRText$1({ z2: 200 }); endLabel.ignoreClip = true; polyline.setTextContent(this._endLabel); polyline.disableLabelAnimation = true; } var dataIndex = getLastIndexNotNull(data_2.getLayout("points")); if (dataIndex >= 0) { setLabelStyle(polyline, getLabelStatesModels(seriesModel, "endLabel"), { inheritColor, labelFetcher: seriesModel, labelDataIndex: dataIndex, defaultText: function(dataIndex2, opt, interpolatedValue) { return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex2); }, enableTextSetter: true }, getEndLabelStateSpecified(endLabelModel, coordSys)); polyline.textConfig.position = null; } } else if (this._endLabel) { this._polyline.removeTextContent(); this._endLabel = null; } }; LineView2.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) { var endLabel = this._endLabel; var polyline = this._polyline; if (endLabel) { if (percent < 1 && animationRecord.originalX == null) { animationRecord.originalX = endLabel.x; animationRecord.originalY = endLabel.y; } var points2 = data.getLayout("points"); var seriesModel = data.hostModel; var connectNulls = seriesModel.get("connectNulls"); var precision = endLabelModel.get("precision"); var distance2 = endLabelModel.get("distance") || 0; var baseAxis = coordSys.getBaseAxis(); var isHorizontal = baseAxis.isHorizontal(); var isBaseInversed = baseAxis.inverse; var clipShape = clipRect.shape; var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y; var distanceX = (isHorizontal ? distance2 : 0) * (isBaseInversed ? -1 : 1); var distanceY = (isHorizontal ? 0 : -distance2) * (isBaseInversed ? -1 : 1); var dim = isHorizontal ? "x" : "y"; var dataIndexRange = getIndexRange(points2, xOrY, dim); var indices = dataIndexRange.range; var diff2 = indices[1] - indices[0]; var value = void 0; if (diff2 >= 1) { if (diff2 > 1 && !connectNulls) { var pt = getPointAtIndex(points2, indices[0]); endLabel.attr({ x: pt[0] + distanceX, y: pt[1] + distanceY }); valueAnimation && (value = seriesModel.getRawValue(indices[0])); } else { var pt = polyline.getPointOn(xOrY, dim); pt && endLabel.attr({ x: pt[0] + distanceX, y: pt[1] + distanceY }); var startValue = seriesModel.getRawValue(indices[0]); var endValue = seriesModel.getRawValue(indices[1]); valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t)); } animationRecord.lastFrameIndex = indices[0]; } else { var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0; var pt = getPointAtIndex(points2, idx); valueAnimation && (value = seriesModel.getRawValue(idx)); endLabel.attr({ x: pt[0] + distanceX, y: pt[1] + distanceY }); } if (valueAnimation) { labelInner(endLabel).setLabelText(value); } } }; LineView2.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step2, valueOrigin) { var polyline = this._polyline; var polygon = this._polygon; var seriesModel = data.hostModel; var diff2 = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin); var current = diff2.current; var stackedOnCurrent = diff2.stackedOnCurrent; var next = diff2.next; var stackedOnNext = diff2.stackedOnNext; if (step2) { current = turnPointsIntoStep(diff2.current, coordSys, step2); stackedOnCurrent = turnPointsIntoStep(diff2.stackedOnCurrent, coordSys, step2); next = turnPointsIntoStep(diff2.next, coordSys, step2); stackedOnNext = turnPointsIntoStep(diff2.stackedOnNext, coordSys, step2); } if (getBoundingDiff(current, next) > 3e3 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3) { polyline.stopAnimation(); polyline.setShape({ points: next }); if (polygon) { polygon.stopAnimation(); polygon.setShape({ points: next, stackedOnPoints: stackedOnNext }); } return; } polyline.shape.__points = diff2.current; polyline.shape.points = current; var target = { shape: { points: next } }; if (diff2.current !== current) { target.shape.__points = diff2.next; } polyline.stopAnimation(); updateProps$1(polyline, target, seriesModel); if (polygon) { polygon.setShape({ points: current, stackedOnPoints: stackedOnCurrent }); polygon.stopAnimation(); updateProps$1(polygon, { shape: { stackedOnPoints: stackedOnNext } }, seriesModel); if (polyline.shape.points !== polygon.shape.points) { polygon.shape.points = polyline.shape.points; } } var updatedDataInfo = []; var diffStatus = diff2.status; for (var i = 0; i < diffStatus.length; i++) { var cmd = diffStatus[i].cmd; if (cmd === "=") { var el = data.getItemGraphicEl(diffStatus[i].idx1); if (el) { updatedDataInfo.push({ el, ptIdx: i }); } } } if (polyline.animators && polyline.animators.length) { polyline.animators[0].during(function() { polygon && polygon.dirtyShape(); var points2 = polyline.shape.__points; for (var i2 = 0; i2 < updatedDataInfo.length; i2++) { var el2 = updatedDataInfo[i2].el; var offset = updatedDataInfo[i2].ptIdx * 2; el2.x = points2[offset]; el2.y = points2[offset + 1]; el2.markRedraw(); } }); } }; LineView2.prototype.remove = function(ecModel) { var group = this.group; var oldData = this._data; this._lineGroup.removeAll(); this._symbolDraw.remove(true); oldData && oldData.eachItemGraphicEl(function(el, idx) { if (el.__temp) { group.remove(el); oldData.setItemGraphicEl(idx, null); } }); this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null; }; LineView2.type = "line"; return LineView2; }(ChartView$1); var LineView$1 = LineView; function pointsLayout(seriesType2, forceStoreInTypedArray) { return { seriesType: seriesType2, plan: createRenderPlanner(), reset: function(seriesModel) { var data = seriesModel.getData(); var coordSys = seriesModel.coordinateSystem; var pipelineContext = seriesModel.pipelineContext; var useTypedArray = forceStoreInTypedArray || pipelineContext.large; if (!coordSys) { return; } var dims = map$1(coordSys.dimensions, function(dim) { return data.mapDimension(dim); }).slice(0, 2); var dimLen = dims.length; var stackResultDim = data.getCalculationInfo("stackResultDimension"); if (isDimensionStacked(data, dims[0])) { dims[0] = stackResultDim; } if (isDimensionStacked(data, dims[1])) { dims[1] = stackResultDim; } var store = data.getStore(); var dimIdx0 = data.getDimensionIndex(dims[0]); var dimIdx1 = data.getDimensionIndex(dims[1]); return dimLen && { progress: function(params, data2) { var segCount = params.end - params.start; var points2 = useTypedArray && createFloat32Array(segCount * dimLen); var tmpIn = []; var tmpOut = []; for (var i = params.start, offset = 0; i < params.end; i++) { var point = void 0; if (dimLen === 1) { var x = store.get(dimIdx0, i); point = coordSys.dataToPoint(x, null, tmpOut); } else { tmpIn[0] = store.get(dimIdx0, i); tmpIn[1] = store.get(dimIdx1, i); point = coordSys.dataToPoint(tmpIn, null, tmpOut); } if (useTypedArray) { points2[offset++] = point[0]; points2[offset++] = point[1]; } else { data2.setItemLayout(i, point.slice()); } } useTypedArray && data2.setLayout("points", points2); } }; } }; } var samplers = { average: function(frame) { var sum2 = 0; var count2 = 0; for (var i = 0; i < frame.length; i++) { if (!isNaN(frame[i])) { sum2 += frame[i]; count2++; } } return count2 === 0 ? NaN : sum2 / count2; }, sum: function(frame) { var sum2 = 0; for (var i = 0; i < frame.length; i++) { sum2 += frame[i] || 0; } return sum2; }, max: function(frame) { var max3 = -Infinity; for (var i = 0; i < frame.length; i++) { frame[i] > max3 && (max3 = frame[i]); } return isFinite(max3) ? max3 : NaN; }, min: function(frame) { var min3 = Infinity; for (var i = 0; i < frame.length; i++) { frame[i] < min3 && (min3 = frame[i]); } return isFinite(min3) ? min3 : NaN; }, nearest: function(frame) { return frame[0]; } }; var indexSampler = function(frame) { return Math.round(frame.length / 2); }; function dataSample(seriesType2) { return { seriesType: seriesType2, reset: function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var sampling = seriesModel.get("sampling"); var coordSys = seriesModel.coordinateSystem; var count2 = data.count(); if (count2 > 10 && coordSys.type === "cartesian2d" && sampling) { var baseAxis = coordSys.getBaseAxis(); var valueAxis2 = coordSys.getOtherAxis(baseAxis); var extent3 = baseAxis.getExtent(); var dpr2 = api.getDevicePixelRatio(); var size = Math.abs(extent3[1] - extent3[0]) * (dpr2 || 1); var rate = Math.round(count2 / size); if (rate > 1) { if (sampling === "lttb") { seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis2.dim), 1 / rate)); } var sampler = void 0; if (typeof sampling === "string") { sampler = samplers[sampling]; } else if (typeof sampling === "function") { sampler = sampling; } if (sampler) { seriesModel.setData(data.downSample(data.mapDimension(valueAxis2.dim), 1 / rate, sampler, indexSampler)); } } } } }; } function install$Q(registers) { registers.registerChartView(LineView$1); registers.registerSeriesModel(LineSeries); registers.registerLayout(pointsLayout("line", true)); registers.registerVisual({ seriesType: "line", reset: function(seriesModel) { var data = seriesModel.getData(); var lineStyle = seriesModel.getModel("lineStyle").getLineStyle(); if (lineStyle && !lineStyle.stroke) { lineStyle.stroke = data.getVisual("style").fill; } data.setVisual("legendLineStyle", lineStyle); } }); registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("line")); } var BaseBarSeriesModel = function(_super) { __extends$1(BaseBarSeriesModel2, _super); function BaseBarSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BaseBarSeriesModel2.type; return _this; } BaseBarSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this, { useEncodeDefaulter: true }); }; BaseBarSeriesModel2.prototype.getMarkerPosition = function(value) { var coordSys = this.coordinateSystem; if (coordSys && coordSys.clampData) { var pt = coordSys.dataToPoint(coordSys.clampData(value)); var data = this.getData(); var offset = data.getLayout("offset"); var size = data.getLayout("size"); var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1; pt[offsetIndex] += offset + size / 2; return pt; } return [NaN, NaN]; }; BaseBarSeriesModel2.type = "series.__base_bar__"; BaseBarSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: true, barMinHeight: 0, barMinAngle: 0, large: false, largeThreshold: 400, progressive: 3e3, progressiveChunkMode: "mod" }; return BaseBarSeriesModel2; }(SeriesModel$1); SeriesModel$1.registerClass(BaseBarSeriesModel); var BaseBarSeriesModel$1 = BaseBarSeriesModel; var BarSeriesModel = function(_super) { __extends$1(BarSeriesModel2, _super); function BarSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BarSeriesModel2.type; return _this; } BarSeriesModel2.prototype.getInitialData = function() { return createSeriesData(null, this, { useEncodeDefaulter: true, createInvertedIndices: !!this.get("realtimeSort", true) || null }); }; BarSeriesModel2.prototype.getProgressive = function() { return this.get("large") ? this.get("progressive") : false; }; BarSeriesModel2.prototype.getProgressiveThreshold = function() { var progressiveThreshold = this.get("progressiveThreshold"); var largeThreshold = this.get("largeThreshold"); if (largeThreshold > progressiveThreshold) { progressiveThreshold = largeThreshold; } return progressiveThreshold; }; BarSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { return selectors.rect(data.getItemLayout(dataIndex)); }; BarSeriesModel2.type = "series.bar"; BarSeriesModel2.dependencies = ["grid", "polar"]; BarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeriesModel$1.defaultOption, { clip: true, roundCap: false, showBackground: false, backgroundStyle: { color: "rgba(180, 180, 180, 0.2)", borderColor: null, borderWidth: 0, borderType: "solid", borderRadius: 0, shadowBlur: 0, shadowColor: null, shadowOffsetX: 0, shadowOffsetY: 0, opacity: 1 }, select: { itemStyle: { borderColor: "#212121" } }, realtimeSort: false }); return BarSeriesModel2; }(BaseBarSeriesModel$1); var BarSeries = BarSeriesModel; var SausageShape = function() { function SausageShape2() { this.cx = 0; this.cy = 0; this.r0 = 0; this.r = 0; this.startAngle = 0; this.endAngle = Math.PI * 2; this.clockwise = true; } return SausageShape2; }(); var SausagePath = function(_super) { __extends$1(SausagePath2, _super); function SausagePath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "sausage"; return _this; } SausagePath2.prototype.getDefaultShape = function() { return new SausageShape(); }; SausagePath2.prototype.buildPath = function(ctx, shape) { var x = shape.cx; var y = shape.cy; var r0 = Math.max(shape.r0 || 0, 0); var r = Math.max(shape.r, 0); var dr = (r - r0) * 0.5; var rCenter = r0 + dr; var startAngle = shape.startAngle; var endAngle = shape.endAngle; var clockwise = shape.clockwise; var unitStartX = Math.cos(startAngle); var unitStartY = Math.sin(startAngle); var unitEndX = Math.cos(endAngle); var unitEndY = Math.sin(endAngle); var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2; if (lessThanCircle) { ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y); ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise); } ctx.arc(x, y, r, startAngle, endAngle, !clockwise); ctx.moveTo(unitEndX * r + x, unitEndY * r + y); ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise); if (r0 !== 0) { ctx.arc(x, y, r0, endAngle, startAngle, clockwise); ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y); } ctx.closePath(); }; return SausagePath2; }(Path$1); var Sausage = SausagePath; function createSectorCalculateTextPosition(positionMapping, opts) { opts = opts || {}; var isRoundCap = opts.isRoundCap; return function(out2, opts2, boundingRect) { var textPosition = opts2.position; if (!textPosition || textPosition instanceof Array) { return calculateTextPosition(out2, opts2, boundingRect); } var mappedSectorPosition = positionMapping(textPosition); var distance2 = opts2.distance != null ? opts2.distance : 5; var sector = this.shape; var cx = sector.cx; var cy = sector.cy; var r = sector.r; var r0 = sector.r0; var middleR = (r + r0) / 2; var startAngle = sector.startAngle; var endAngle = sector.endAngle; var middleAngle = (startAngle + endAngle) / 2; var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0; var mathCos2 = Math.cos; var mathSin2 = Math.sin; var x = cx + r * mathCos2(startAngle); var y = cy + r * mathSin2(startAngle); var textAlign = "left"; var textVerticalAlign = "top"; switch (mappedSectorPosition) { case "startArc": x = cx + (r0 - distance2) * mathCos2(middleAngle); y = cy + (r0 - distance2) * mathSin2(middleAngle); textAlign = "center"; textVerticalAlign = "top"; break; case "insideStartArc": x = cx + (r0 + distance2) * mathCos2(middleAngle); y = cy + (r0 + distance2) * mathSin2(middleAngle); textAlign = "center"; textVerticalAlign = "bottom"; break; case "startAngle": x = cx + middleR * mathCos2(startAngle) + adjustAngleDistanceX(startAngle, distance2 + extraDist, false); y = cy + middleR * mathSin2(startAngle) + adjustAngleDistanceY(startAngle, distance2 + extraDist, false); textAlign = "right"; textVerticalAlign = "middle"; break; case "insideStartAngle": x = cx + middleR * mathCos2(startAngle) + adjustAngleDistanceX(startAngle, -distance2 + extraDist, false); y = cy + middleR * mathSin2(startAngle) + adjustAngleDistanceY(startAngle, -distance2 + extraDist, false); textAlign = "left"; textVerticalAlign = "middle"; break; case "middle": x = cx + middleR * mathCos2(middleAngle); y = cy + middleR * mathSin2(middleAngle); textAlign = "center"; textVerticalAlign = "middle"; break; case "endArc": x = cx + (r + distance2) * mathCos2(middleAngle); y = cy + (r + distance2) * mathSin2(middleAngle); textAlign = "center"; textVerticalAlign = "bottom"; break; case "insideEndArc": x = cx + (r - distance2) * mathCos2(middleAngle); y = cy + (r - distance2) * mathSin2(middleAngle); textAlign = "center"; textVerticalAlign = "top"; break; case "endAngle": x = cx + middleR * mathCos2(endAngle) + adjustAngleDistanceX(endAngle, distance2 + extraDist, true); y = cy + middleR * mathSin2(endAngle) + adjustAngleDistanceY(endAngle, distance2 + extraDist, true); textAlign = "left"; textVerticalAlign = "middle"; break; case "insideEndAngle": x = cx + middleR * mathCos2(endAngle) + adjustAngleDistanceX(endAngle, -distance2 + extraDist, true); y = cy + middleR * mathSin2(endAngle) + adjustAngleDistanceY(endAngle, -distance2 + extraDist, true); textAlign = "right"; textVerticalAlign = "middle"; break; default: return calculateTextPosition(out2, opts2, boundingRect); } out2 = out2 || {}; out2.x = x; out2.y = y; out2.align = textAlign; out2.verticalAlign = textVerticalAlign; return out2; }; } function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) { if (typeof rotateType === "number") { sector.setTextConfig({ rotation: rotateType }); return; } else if (isArray$1(textPosition)) { sector.setTextConfig({ rotation: 0 }); return; } var shape = sector.shape; var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle; var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle; var middleAngle = (startAngle + endAngle) / 2; var anchorAngle; var mappedSectorPosition = positionMapping(textPosition); switch (mappedSectorPosition) { case "startArc": case "insideStartArc": case "middle": case "insideEndArc": case "endArc": anchorAngle = middleAngle; break; case "startAngle": case "insideStartAngle": anchorAngle = startAngle; break; case "endAngle": case "insideEndAngle": anchorAngle = endAngle; break; default: sector.setTextConfig({ rotation: 0 }); return; } var rotate2 = Math.PI * 1.5 - anchorAngle; if (mappedSectorPosition === "middle" && rotate2 > Math.PI / 2 && rotate2 < Math.PI * 1.5) { rotate2 -= Math.PI; } sector.setTextConfig({ rotation: rotate2 }); } function adjustAngleDistanceX(angle, distance2, isEnd) { return distance2 * Math.sin(angle) * (isEnd ? -1 : 1); } function adjustAngleDistanceY(angle, distance2, isEnd) { return distance2 * Math.cos(angle) * (isEnd ? 1 : -1); } var _eventPos = [0, 0]; var mathMax$4 = Math.max; var mathMin$4 = Math.min; function getClipArea(coord, data) { var coordSysClipArea = coord.getArea && coord.getArea(); if (isCoordinateSystemType(coord, "cartesian2d")) { var baseAxis = coord.getBaseAxis(); if (baseAxis.type !== "category" || !baseAxis.onBand) { var expandWidth = data.getLayout("bandWidth"); if (baseAxis.isHorizontal()) { coordSysClipArea.x -= expandWidth; coordSysClipArea.width += expandWidth * 2; } else { coordSysClipArea.y -= expandWidth; coordSysClipArea.height += expandWidth * 2; } } } return coordSysClipArea; } var BarView = function(_super) { __extends$1(BarView2, _super); function BarView2() { var _this = _super.call(this) || this; _this.type = BarView2.type; _this._isFirstFrame = true; return _this; } BarView2.prototype.render = function(seriesModel, ecModel, api, payload) { this._model = seriesModel; this._removeOnRenderedListener(api); this._updateDrawMode(seriesModel); var coordinateSystemType = seriesModel.get("coordinateSystem"); if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") { this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload); } }; BarView2.prototype.incrementalPrepareRender = function(seriesModel) { this._clear(); this._updateDrawMode(seriesModel); this._updateLargeClip(seriesModel); }; BarView2.prototype.incrementalRender = function(params, seriesModel) { this._incrementalRenderLarge(params, seriesModel); }; BarView2.prototype._updateDrawMode = function(seriesModel) { var isLargeDraw = seriesModel.pipelineContext.large; if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { this._isLargeDraw = isLargeDraw; this._clear(); } }; BarView2.prototype._renderNormal = function(seriesModel, ecModel, api, payload) { var group = this.group; var data = seriesModel.getData(); var oldData = this._data; var coord = seriesModel.coordinateSystem; var baseAxis = coord.getBaseAxis(); var isHorizontalOrRadial; if (coord.type === "cartesian2d") { isHorizontalOrRadial = baseAxis.isHorizontal(); } else if (coord.type === "polar") { isHorizontalOrRadial = baseAxis.dim === "angle"; } var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord); if (realtimeSortCfg) { this._enableRealtimeSort(realtimeSortCfg, data, api); } var needsClip = seriesModel.get("clip", true) || realtimeSortCfg; var coordSysClipArea = getClipArea(coord, data); group.removeClipPath(); var roundCap = seriesModel.get("roundCap", true); var drawBackground = seriesModel.get("showBackground", true); var backgroundModel = seriesModel.getModel("backgroundStyle"); var barBorderRadius = backgroundModel.get("borderRadius") || 0; var bgEls = []; var oldBgEls = this._backgroundEls; var isInitSort = payload && payload.isInitSort; var isChangeOrder = payload && payload.type === "changeAxisOrder"; function createBackground(dataIndex) { var bgLayout = getLayout[coord.type](data, dataIndex); var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout); bgEl.useStyle(backgroundModel.getItemStyle()); if (coord.type === "cartesian2d") { bgEl.setShape("r", barBorderRadius); } bgEls[dataIndex] = bgEl; return bgEl; } data.diff(oldData).add(function(dataIndex) { var itemModel = data.getItemModel(dataIndex); var layout2 = getLayout[coord.type](data, dataIndex, itemModel); if (drawBackground) { createBackground(dataIndex); } if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout2)) { return; } var isClipped = false; if (needsClip) { isClipped = clip[coord.type](coordSysClipArea, layout2); } var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap); if (realtimeSortCfg) { el.forceLabelAnimation = true; } updateStyle(el, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar"); if (isInitSort) { el.attr({ shape: layout2 }); } else if (realtimeSortCfg) { updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout2, dataIndex, isHorizontalOrRadial, false, false); } else { initProps(el, { shape: layout2 }, seriesModel, dataIndex); } data.setItemGraphicEl(dataIndex, el); group.add(el); el.ignore = isClipped; }).update(function(newIndex, oldIndex) { var itemModel = data.getItemModel(newIndex); var layout2 = getLayout[coord.type](data, newIndex, itemModel); if (drawBackground) { var bgEl = void 0; if (oldBgEls.length === 0) { bgEl = createBackground(oldIndex); } else { bgEl = oldBgEls[oldIndex]; bgEl.useStyle(backgroundModel.getItemStyle()); if (coord.type === "cartesian2d") { bgEl.setShape("r", barBorderRadius); } bgEls[newIndex] = bgEl; } var bgLayout = getLayout[coord.type](data, newIndex); var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord); updateProps$1(bgEl, { shape }, animationModel, newIndex); } var el = oldData.getItemGraphicEl(oldIndex); if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout2)) { group.remove(el); return; } var isClipped = false; if (needsClip) { isClipped = clip[coord.type](coordSysClipArea, layout2); if (isClipped) { group.remove(el); } } if (!el) { el = elementCreator[coord.type](seriesModel, data, newIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap); } else { saveOldStyle(el); } if (realtimeSortCfg) { el.forceLabelAnimation = true; } if (isChangeOrder) { var textEl = el.getTextContent(); if (textEl) { var labelInnerStore = labelInner(textEl); if (labelInnerStore.prevValue != null) { labelInnerStore.prevValue = labelInnerStore.value; } } } if (!isChangeOrder) { updateStyle(el, data, newIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar"); } if (isInitSort) { el.attr({ shape: layout2 }); } else if (realtimeSortCfg) { updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout2, newIndex, isHorizontalOrRadial, true, isChangeOrder); } else { updateProps$1(el, { shape: layout2 }, seriesModel, newIndex, null); } data.setItemGraphicEl(newIndex, el); el.ignore = isClipped; group.add(el); }).remove(function(dataIndex) { var el = oldData.getItemGraphicEl(dataIndex); el && removeElementWithFadeOut(el, seriesModel, dataIndex); }).execute(); var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group$4()); bgGroup.removeAll(); for (var i = 0; i < bgEls.length; ++i) { bgGroup.add(bgEls[i]); } group.add(bgGroup); this._backgroundEls = bgEls; this._data = data; }; BarView2.prototype._renderLarge = function(seriesModel, ecModel, api) { this._clear(); createLarge$1(seriesModel, this.group); this._updateLargeClip(seriesModel); }; BarView2.prototype._incrementalRenderLarge = function(params, seriesModel) { this._removeBackground(); createLarge$1(seriesModel, this.group, true); }; BarView2.prototype._updateLargeClip = function(seriesModel) { var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; if (clipPath) { this.group.setClipPath(clipPath); } else { this.group.removeClipPath(); } }; BarView2.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) { var _this = this; if (!data.count()) { return; } var baseAxis = realtimeSortCfg.baseAxis; if (this._isFirstFrame) { this._dispatchInitSort(data, realtimeSortCfg, api); this._isFirstFrame = false; } else { var orderMapping_1 = function(idx) { var el = data.getItemGraphicEl(idx); if (el) { var shape = el.shape; return (baseAxis.isHorizontal() ? Math.abs(shape.height) : Math.abs(shape.width)) || 0; } else { return 0; } }; this._onRendered = function() { _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api); }; api.getZr().on("rendered", this._onRendered); } }; BarView2.prototype._dataSort = function(data, baseAxis, orderMapping) { var info = []; data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) { var mappedValue = orderMapping(dataIdx); mappedValue = mappedValue == null ? NaN : mappedValue; info.push({ dataIndex: dataIdx, mappedValue, ordinalNumber }); }); info.sort(function(a, b) { return b.mappedValue - a.mappedValue; }); return { ordinalNumbers: map$1(info, function(item) { return item.ordinalNumber; }) }; }; BarView2.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) { var scale2 = baseAxis.scale; var ordinalDataDim = data.mapDimension(baseAxis.dim); var lastValue = Number.MAX_VALUE; for (var tickNum = 0, len2 = scale2.getOrdinalMeta().categories.length; tickNum < len2; ++tickNum) { var rawIdx = data.rawIndexOf(ordinalDataDim, scale2.getRawOrdinalNumber(tickNum)); var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx)); if (value > lastValue) { return true; } lastValue = value; } return false; }; BarView2.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) { var scale2 = baseAxis.scale; var extent3 = scale2.getExtent(); var tickNum = Math.max(0, extent3[0]); var tickMax = Math.min(extent3[1], scale2.getOrdinalMeta().categories.length - 1); for (; tickNum <= tickMax; ++tickNum) { if (orderInfo.ordinalNumbers[tickNum] !== scale2.getRawOrdinalNumber(tickNum)) { return true; } } }; BarView2.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) { if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) { return; } var sortInfo = this._dataSort(data, baseAxis, orderMapping); if (this._isOrderDifferentInView(sortInfo, baseAxis)) { this._removeOnRenderedListener(api); api.dispatchAction({ type: "changeAxisOrder", componentType: baseAxis.dim + "Axis", axisId: baseAxis.index, sortInfo }); } }; BarView2.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) { var baseAxis = realtimeSortCfg.baseAxis; var sortResult = this._dataSort(data, baseAxis, function(dataIdx) { return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx); }); api.dispatchAction({ type: "changeAxisOrder", componentType: baseAxis.dim + "Axis", isInitSort: true, axisId: baseAxis.index, sortInfo: sortResult }); }; BarView2.prototype.remove = function(ecModel, api) { this._clear(this._model); this._removeOnRenderedListener(api); }; BarView2.prototype.dispose = function(ecModel, api) { this._removeOnRenderedListener(api); }; BarView2.prototype._removeOnRenderedListener = function(api) { if (this._onRendered) { api.getZr().off("rendered", this._onRendered); this._onRendered = null; } }; BarView2.prototype._clear = function(model) { var group = this.group; var data = this._data; if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) { this._removeBackground(); this._backgroundEls = []; data.eachItemGraphicEl(function(el) { removeElementWithFadeOut(el, model, getECData(el).dataIndex); }); } else { group.removeAll(); } this._data = null; this._isFirstFrame = true; }; BarView2.prototype._removeBackground = function() { this.group.remove(this._backgroundGroup); this._backgroundGroup = null; }; BarView2.type = "bar"; return BarView2; }(ChartView$1); var clip = { cartesian2d: function(coordSysBoundingRect, layout2) { var signWidth = layout2.width < 0 ? -1 : 1; var signHeight = layout2.height < 0 ? -1 : 1; if (signWidth < 0) { layout2.x += layout2.width; layout2.width = -layout2.width; } if (signHeight < 0) { layout2.y += layout2.height; layout2.height = -layout2.height; } var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width; var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height; var x = mathMax$4(layout2.x, coordSysBoundingRect.x); var x2 = mathMin$4(layout2.x + layout2.width, coordSysX2); var y = mathMax$4(layout2.y, coordSysBoundingRect.y); var y2 = mathMin$4(layout2.y + layout2.height, coordSysY2); var xClipped = x2 < x; var yClipped = y2 < y; layout2.x = xClipped && x > coordSysX2 ? x2 : x; layout2.y = yClipped && y > coordSysY2 ? y2 : y; layout2.width = xClipped ? 0 : x2 - x; layout2.height = yClipped ? 0 : y2 - y; if (signWidth < 0) { layout2.x += layout2.width; layout2.width = -layout2.width; } if (signHeight < 0) { layout2.y += layout2.height; layout2.height = -layout2.height; } return xClipped || yClipped; }, polar: function(coordSysClipArea, layout2) { var signR = layout2.r0 <= layout2.r ? 1 : -1; if (signR < 0) { var tmp = layout2.r; layout2.r = layout2.r0; layout2.r0 = tmp; } var r = mathMin$4(layout2.r, coordSysClipArea.r); var r0 = mathMax$4(layout2.r0, coordSysClipArea.r0); layout2.r = r; layout2.r0 = r0; var clipped = r - r0 < 0; if (signR < 0) { var tmp = layout2.r; layout2.r = layout2.r0; layout2.r0 = tmp; } return clipped; } }; var elementCreator = { cartesian2d: function(seriesModel, data, newIndex, layout2, isHorizontal, animationModel, axisModel, isUpdate, roundCap) { var rect = new Rect$3({ shape: extend({}, layout2), z2: 1 }); rect.__dataIndex = newIndex; rect.name = "item"; if (animationModel) { var rectShape = rect.shape; var animateProperty = isHorizontal ? "height" : "width"; rectShape[animateProperty] = 0; } return rect; }, polar: function(seriesModel, data, newIndex, layout2, isRadial, animationModel, axisModel, isUpdate, roundCap) { var ShapeClass = !isRadial && roundCap ? Sausage : Sector$1; var sector = new ShapeClass({ shape: layout2, z2: 1 }); sector.name = "item"; var positionMap = createPolarPositionMapping(isRadial); sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, { isRoundCap: ShapeClass === Sausage }); if (animationModel) { var sectorShape = sector.shape; var animateProperty = isRadial ? "r" : "endAngle"; var animateTarget = {}; sectorShape[animateProperty] = isRadial ? 0 : layout2.startAngle; animateTarget[animateProperty] = layout2[animateProperty]; (isUpdate ? updateProps$1 : initProps)(sector, { shape: animateTarget }, animationModel); } return sector; } }; function shouldRealtimeSort(seriesModel, coordSys) { var realtimeSortOption = seriesModel.get("realtimeSort", true); var baseAxis = coordSys.getBaseAxis(); if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") { return { baseAxis, otherAxis: coordSys.getOtherAxis(baseAxis) }; } } function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout2, newIndex, isHorizontal, isUpdate, isChangeOrder) { var seriesTarget; var axisTarget; if (isHorizontal) { axisTarget = { x: layout2.x, width: layout2.width }; seriesTarget = { y: layout2.y, height: layout2.height }; } else { axisTarget = { y: layout2.y, height: layout2.height }; seriesTarget = { x: layout2.x, width: layout2.width }; } if (!isChangeOrder) { (isUpdate ? updateProps$1 : initProps)(el, { shape: seriesTarget }, seriesAnimationModel, newIndex, null); } var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null; (isUpdate ? updateProps$1 : initProps)(el, { shape: axisTarget }, axisAnimationModel, newIndex); } function checkPropertiesNotValid(obj, props) { for (var i = 0; i < props.length; i++) { if (!isFinite(obj[props[i]])) { return true; } } return false; } var rectPropties = ["x", "y", "width", "height"]; var polarPropties = ["cx", "cy", "r", "startAngle", "endAngle"]; var isValidLayout = { cartesian2d: function(layout2) { return !checkPropertiesNotValid(layout2, rectPropties); }, polar: function(layout2) { return !checkPropertiesNotValid(layout2, polarPropties); } }; var getLayout = { cartesian2d: function(data, dataIndex, itemModel) { var layout2 = data.getItemLayout(dataIndex); var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout2) : 0; var signX = layout2.width > 0 ? 1 : -1; var signY = layout2.height > 0 ? 1 : -1; return { x: layout2.x + signX * fixedLineWidth / 2, y: layout2.y + signY * fixedLineWidth / 2, width: layout2.width - signX * fixedLineWidth, height: layout2.height - signY * fixedLineWidth }; }, polar: function(data, dataIndex, itemModel) { var layout2 = data.getItemLayout(dataIndex); return { cx: layout2.cx, cy: layout2.cy, r0: layout2.r0, r: layout2.r, startAngle: layout2.startAngle, endAngle: layout2.endAngle, clockwise: layout2.clockwise }; } }; function isZeroOnPolar(layout2) { return layout2.startAngle != null && layout2.endAngle != null && layout2.startAngle === layout2.endAngle; } function createPolarPositionMapping(isRadial) { return function(isRadial2) { var arcOrAngle = isRadial2 ? "Arc" : "Angle"; return function(position2) { switch (position2) { case "start": case "insideStart": case "end": case "insideEnd": return position2 + arcOrAngle; default: return position2; } }; }(isRadial); } function updateStyle(el, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, isPolar) { var style = data.getItemVisual(dataIndex, "style"); if (!isPolar) { el.setShape("r", itemModel.get(["itemStyle", "borderRadius"]) || 0); } el.useStyle(style); var cursorStyle = itemModel.getShallow("cursor"); cursorStyle && el.attr("cursor", cursorStyle); var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout2.r >= layout2.r0 ? "endArc" : "startArc" : layout2.endAngle >= layout2.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout2.height >= 0 ? "bottom" : "top" : layout2.width >= 0 ? "right" : "left"; var labelStatesModels = getLabelStatesModels(itemModel); setLabelStyle(el, labelStatesModels, { labelFetcher: seriesModel, labelDataIndex: dataIndex, defaultText: getDefaultLabel(seriesModel.getData(), dataIndex), inheritColor: style.fill, defaultOpacity: style.opacity, defaultOutsidePosition: labelPositionOutside }); var label = el.getTextContent(); if (isPolar && label) { var position2 = itemModel.get(["label", "position"]); el.textConfig.inside = position2 === "middle" ? true : null; setSectorTextRotation(el, position2 === "outside" ? labelPositionOutside : position2, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(["label", "rotate"])); } setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) { return getDefaultInterpolatedLabel(data, value); }); var emphasisModel = itemModel.getModel(["emphasis"]); enableHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope")); setStatesStylesFromModel(el, itemModel); if (isZeroOnPolar(layout2)) { el.style.fill = "none"; el.style.stroke = "none"; each$g(el.states, function(state) { if (state.style) { state.style.fill = state.style.stroke = "none"; } }); } } function getLineWidth(itemModel, rawLayout) { var borderColor = itemModel.get(["itemStyle", "borderColor"]); if (!borderColor || borderColor === "none") { return 0; } var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0; var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width); var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height); return Math.min(lineWidth, width, height); } var LagePathShape = function() { function LagePathShape2() { } return LagePathShape2; }(); var LargePath = function(_super) { __extends$1(LargePath2, _super); function LargePath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "largeBar"; return _this; } LargePath2.prototype.getDefaultShape = function() { return new LagePathShape(); }; LargePath2.prototype.buildPath = function(ctx, shape) { var points2 = shape.points; var startPoint = this.__startPoint; var baseDimIdx = this.__baseDimIdx; for (var i = 0; i < points2.length; i += 2) { startPoint[baseDimIdx] = points2[i + baseDimIdx]; ctx.moveTo(startPoint[0], startPoint[1]); ctx.lineTo(points2[i], points2[i + 1]); } }; return LargePath2; }(Path$1); function createLarge$1(seriesModel, group, incremental) { var data = seriesModel.getData(); var startPoint = []; var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0; startPoint[1 - baseDimIdx] = data.getLayout("valueAxisStart"); var largeDataIndices = data.getLayout("largeDataIndices"); var barWidth = data.getLayout("barWidth"); var backgroundModel = seriesModel.getModel("backgroundStyle"); var drawBackground = seriesModel.get("showBackground", true); if (drawBackground) { var points2 = data.getLayout("largeBackgroundPoints"); var backgroundStartPoint = []; backgroundStartPoint[1 - baseDimIdx] = data.getLayout("backgroundStart"); var bgEl = new LargePath({ shape: { points: points2 }, incremental: !!incremental, silent: true, z2: 0 }); bgEl.__startPoint = backgroundStartPoint; bgEl.__baseDimIdx = baseDimIdx; bgEl.__largeDataIndices = largeDataIndices; bgEl.__barWidth = barWidth; setLargeBackgroundStyle(bgEl, backgroundModel, data); group.add(bgEl); } var el = new LargePath({ shape: { points: data.getLayout("largePoints") }, incremental: !!incremental }); el.__startPoint = startPoint; el.__baseDimIdx = baseDimIdx; el.__largeDataIndices = largeDataIndices; el.__barWidth = barWidth; group.add(el); setLargeStyle$1(el, seriesModel, data); getECData(el).seriesIndex = seriesModel.seriesIndex; if (!seriesModel.get("silent")) { el.on("mousedown", largePathUpdateDataIndex); el.on("mousemove", largePathUpdateDataIndex); } } var largePathUpdateDataIndex = throttle(function(event) { var largePath = this; var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY); getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null; }, 30, false); function largePathFindDataIndex(largePath, x, y) { var baseDimIdx = largePath.__baseDimIdx; var valueDimIdx = 1 - baseDimIdx; var points2 = largePath.shape.points; var largeDataIndices = largePath.__largeDataIndices; var barWidthHalf = Math.abs(largePath.__barWidth / 2); var startValueVal = largePath.__startPoint[valueDimIdx]; _eventPos[0] = x; _eventPos[1] = y; var pointerBaseVal = _eventPos[baseDimIdx]; var pointerValueVal = _eventPos[1 - baseDimIdx]; var baseLowerBound = pointerBaseVal - barWidthHalf; var baseUpperBound = pointerBaseVal + barWidthHalf; for (var i = 0, len2 = points2.length / 2; i < len2; i++) { var ii = i * 2; var barBaseVal = points2[ii + baseDimIdx]; var barValueVal = points2[ii + valueDimIdx]; if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) { return largeDataIndices[i]; } } return -1; } function setLargeStyle$1(el, seriesModel, data) { var globalStyle = data.getVisual("style"); el.useStyle(extend({}, globalStyle)); el.style.fill = null; el.style.stroke = globalStyle.fill; el.style.lineWidth = data.getLayout("barWidth"); } function setLargeBackgroundStyle(el, backgroundModel, data) { var borderColor = backgroundModel.get("borderColor") || backgroundModel.get("color"); var itemStyle = backgroundModel.getItemStyle(); el.useStyle(itemStyle); el.style.fill = null; el.style.stroke = borderColor; el.style.lineWidth = data.getLayout("barWidth"); } function createBackgroundShape(isHorizontalOrRadial, layout2, coord) { if (isCoordinateSystemType(coord, "cartesian2d")) { var rectShape = layout2; var coordLayout = coord.getArea(); return { x: isHorizontalOrRadial ? rectShape.x : coordLayout.x, y: isHorizontalOrRadial ? coordLayout.y : rectShape.y, width: isHorizontalOrRadial ? rectShape.width : coordLayout.width, height: isHorizontalOrRadial ? coordLayout.height : rectShape.height }; } else { var coordLayout = coord.getArea(); var sectorShape = layout2; return { cx: coordLayout.cx, cy: coordLayout.cy, r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0, r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r, startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0, endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2 }; } } function createBackgroundEl(coord, isHorizontalOrRadial, layout2) { var ElementClz = coord.type === "polar" ? Sector$1 : Rect$3; return new ElementClz({ shape: createBackgroundShape(isHorizontalOrRadial, layout2, coord), silent: true, z2: 0 }); } var BarView$1 = BarView; function install$P(registers) { registers.registerChartView(BarView$1); registers.registerSeriesModel(BarSeries); registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry$1(layout$3, "bar")); registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout); registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("bar")); registers.registerAction({ type: "changeAxisOrder", event: "changeAxisOrder", update: "update" }, function(payload, ecModel) { var componentType = payload.componentType || "series"; ecModel.eachComponent({ mainType: componentType, query: payload }, function(componentModel) { if (payload.sortInfo) { componentModel.axis.setCategorySortInfo(payload.sortInfo); } }); }); } var PI2$1 = Math.PI * 2; var RADIAN$2 = Math.PI / 180; function getViewRect$5(seriesModel, api) { return getLayoutRect(seriesModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); } function getBasicPieLayout(seriesModel, api) { var viewRect2 = getViewRect$5(seriesModel, api); var center2 = seriesModel.get("center"); var radius = seriesModel.get("radius"); if (!isArray$1(radius)) { radius = [0, radius]; } if (!isArray$1(center2)) { center2 = [center2, center2]; } var width = parsePercent$1(viewRect2.width, api.getWidth()); var height = parsePercent$1(viewRect2.height, api.getHeight()); var size = Math.min(width, height); var cx = parsePercent$1(center2[0], width) + viewRect2.x; var cy = parsePercent$1(center2[1], height) + viewRect2.y; var r0 = parsePercent$1(radius[0], size / 2); var r = parsePercent$1(radius[1], size / 2); return { cx, cy, r0, r }; } function pieLayout(seriesType2, ecModel, api) { ecModel.eachSeriesByType(seriesType2, function(seriesModel) { var data = seriesModel.getData(); var valueDim = data.mapDimension("value"); var viewRect2 = getViewRect$5(seriesModel, api); var _a2 = getBasicPieLayout(seriesModel, api), cx = _a2.cx, cy = _a2.cy, r = _a2.r, r0 = _a2.r0; var startAngle = -seriesModel.get("startAngle") * RADIAN$2; var minAngle = seriesModel.get("minAngle") * RADIAN$2; var validDataCount = 0; data.each(valueDim, function(value) { !isNaN(value) && validDataCount++; }); var sum2 = data.getSum(valueDim); var unitRadian = Math.PI / (sum2 || validDataCount) * 2; var clockwise = seriesModel.get("clockwise"); var roseType = seriesModel.get("roseType"); var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); var extent3 = data.getDataExtent(valueDim); extent3[0] = 0; var restAngle = PI2$1; var valueSumLargerThanMinAngle = 0; var currentAngle = startAngle; var dir3 = clockwise ? 1 : -1; data.setLayout({ viewRect: viewRect2, r }); data.each(valueDim, function(value, idx) { var angle; if (isNaN(value)) { data.setItemLayout(idx, { angle: NaN, startAngle: NaN, endAngle: NaN, clockwise, cx, cy, r0, r: roseType ? NaN : r }); return; } if (roseType !== "area") { angle = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; } else { angle = PI2$1 / validDataCount; } if (angle < minAngle) { angle = minAngle; restAngle -= minAngle; } else { valueSumLargerThanMinAngle += value; } var endAngle = currentAngle + dir3 * angle; data.setItemLayout(idx, { angle, startAngle: currentAngle, endAngle, clockwise, cx, cy, r0, r: roseType ? linearMap$2(value, extent3, [r0, r]) : r }); currentAngle = endAngle; }); if (restAngle < PI2$1 && validDataCount) { if (restAngle <= 1e-3) { var angle_1 = PI2$1 / validDataCount; data.each(valueDim, function(value, idx) { if (!isNaN(value)) { var layout_1 = data.getItemLayout(idx); layout_1.angle = angle_1; layout_1.startAngle = startAngle + dir3 * idx * angle_1; layout_1.endAngle = startAngle + dir3 * (idx + 1) * angle_1; } }); } else { unitRadian = restAngle / valueSumLargerThanMinAngle; currentAngle = startAngle; data.each(valueDim, function(value, idx) { if (!isNaN(value)) { var layout_2 = data.getItemLayout(idx); var angle = layout_2.angle === minAngle ? minAngle : value * unitRadian; layout_2.startAngle = currentAngle; layout_2.endAngle = currentAngle + dir3 * angle; currentAngle += dir3 * angle; } }); } } }); } function dataFilter$1(seriesType2) { return { seriesType: seriesType2, reset: function(seriesModel, ecModel) { var legendModels = ecModel.findComponents({ mainType: "legend" }); if (!legendModels || !legendModels.length) { return; } var data = seriesModel.getData(); data.filterSelf(function(idx) { var name = data.getName(idx); for (var i = 0; i < legendModels.length; i++) { if (!legendModels[i].isSelected(name)) { return false; } } return true; }); } }; } var RADIAN$1 = Math.PI / 180; function adjustSingleSide(list2, cx, cy, r, dir3, viewWidth, viewHeight, viewLeft, viewTop, farthestX) { if (list2.length < 2) { return; } function recalculateXOnSemiToAlignOnEllipseCurve(semi) { var rB = semi.rB; var rB2 = rB * rB; for (var i2 = 0; i2 < semi.list.length; i2++) { var item = semi.list[i2]; var dy = Math.abs(item.label.y - cy); var rA = r + item.len; var rA2 = rA * rA; var dx2 = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2); item.label.x = cx + (dx2 + item.len2) * dir3; } } function recalculateX(items) { var topSemi = { list: [], maxY: 0 }; var bottomSemi = { list: [], maxY: 0 }; for (var i2 = 0; i2 < items.length; i2++) { if (items[i2].labelAlignTo !== "none") { continue; } var item = items[i2]; var semi = item.label.y > cy ? bottomSemi : topSemi; var dy = Math.abs(item.label.y - cy); if (dy > semi.maxY) { var dx2 = item.label.x - cx - item.len2 * dir3; var rA = r + item.len; var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA; semi.rB = rB; semi.maxY = dy; } semi.list.push(item); } recalculateXOnSemiToAlignOnEllipseCurve(topSemi); recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi); } var len2 = list2.length; for (var i = 0; i < len2; i++) { if (list2[i].position === "outer" && list2[i].labelAlignTo === "labelLine") { var dx = list2[i].label.x - farthestX; list2[i].linePoints[1][0] += dx; list2[i].label.x = farthestX; } } if (shiftLayoutOnY(list2, viewTop, viewTop + viewHeight)) { recalculateX(list2); } } function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) { var leftList = []; var rightList = []; var leftmostX = Number.MAX_VALUE; var rightmostX = -Number.MAX_VALUE; for (var i = 0; i < labelLayoutList.length; i++) { var label = labelLayoutList[i].label; if (isPositionCenter(labelLayoutList[i])) { continue; } if (label.x < cx) { leftmostX = Math.min(leftmostX, label.x); leftList.push(labelLayoutList[i]); } else { rightmostX = Math.max(rightmostX, label.x); rightList.push(labelLayoutList[i]); } } adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX); adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX); for (var i = 0; i < labelLayoutList.length; i++) { var layout2 = labelLayoutList[i]; var label = layout2.label; if (isPositionCenter(layout2)) { continue; } var linePoints = layout2.linePoints; if (linePoints) { var isAlignToEdge = layout2.labelAlignTo === "edge"; var realTextWidth = layout2.rect.width; var targetTextWidth = void 0; if (isAlignToEdge) { if (label.x < cx) { targetTextWidth = linePoints[2][0] - layout2.labelDistance - viewLeft - layout2.edgeDistance; } else { targetTextWidth = viewLeft + viewWidth - layout2.edgeDistance - linePoints[2][0] - layout2.labelDistance; } } else { if (label.x < cx) { targetTextWidth = label.x - viewLeft - layout2.bleedMargin; } else { targetTextWidth = viewLeft + viewWidth - label.x - layout2.bleedMargin; } } if (targetTextWidth < layout2.rect.width) { layout2.label.style.width = targetTextWidth; if (layout2.labelAlignTo === "edge") { realTextWidth = targetTextWidth; } } var dist2 = linePoints[1][0] - linePoints[2][0]; if (isAlignToEdge) { if (label.x < cx) { linePoints[2][0] = viewLeft + layout2.edgeDistance + realTextWidth + layout2.labelDistance; } else { linePoints[2][0] = viewLeft + viewWidth - layout2.edgeDistance - realTextWidth - layout2.labelDistance; } } else { if (label.x < cx) { linePoints[2][0] = label.x + layout2.labelDistance; } else { linePoints[2][0] = label.x - layout2.labelDistance; } linePoints[1][0] = linePoints[2][0] + dist2; } linePoints[1][1] = linePoints[2][1] = label.y; } } } function isPositionCenter(sectorShape) { return sectorShape.position === "center"; } function pieLabelLayout(seriesModel) { var data = seriesModel.getData(); var labelLayoutList = []; var cx; var cy; var hasLabelRotate = false; var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN$1; var viewRect2 = data.getLayout("viewRect"); var r = data.getLayout("r"); var viewWidth = viewRect2.width; var viewLeft = viewRect2.x; var viewTop = viewRect2.y; var viewHeight = viewRect2.height; function setNotShow(el) { el.ignore = true; } function isLabelShown(label2) { if (!label2.ignore) { return true; } for (var key2 in label2.states) { if (label2.states[key2].ignore === false) { return true; } } return false; } data.each(function(idx) { var sector = data.getItemGraphicEl(idx); var sectorShape = sector.shape; var label2 = sector.getTextContent(); var labelLine2 = sector.getTextGuideLine(); var itemModel = data.getItemModel(idx); var labelModel = itemModel.getModel("label"); var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]); var labelDistance = labelModel.get("distanceToLabelLine"); var labelAlignTo = labelModel.get("alignTo"); var edgeDistance = parsePercent$1(labelModel.get("edgeDistance"), viewWidth); var bleedMargin = labelModel.get("bleedMargin"); var labelLineModel = itemModel.getModel("labelLine"); var labelLineLen = labelLineModel.get("length"); labelLineLen = parsePercent$1(labelLineLen, viewWidth); var labelLineLen2 = labelLineModel.get("length2"); labelLineLen2 = parsePercent$1(labelLineLen2, viewWidth); if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) { each$g(label2.states, setNotShow); label2.ignore = true; return; } if (!isLabelShown(label2)) { return; } var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2; var nx = Math.cos(midAngle); var ny = Math.sin(midAngle); var textX; var textY; var linePoints2; var textAlign; cx = sectorShape.cx; cy = sectorShape.cy; var isLabelInside = labelPosition === "inside" || labelPosition === "inner"; if (labelPosition === "center") { textX = sectorShape.cx; textY = sectorShape.cy; textAlign = "center"; } else { var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx; var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy; textX = x1 + nx * 3; textY = y1 + ny * 3; if (!isLabelInside) { var x2 = x1 + nx * (labelLineLen + r - sectorShape.r); var y2 = y1 + ny * (labelLineLen + r - sectorShape.r); var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2; var y3 = y2; if (labelAlignTo === "edge") { textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance; } else { textX = x3 + (nx < 0 ? -labelDistance : labelDistance); } textY = y3; linePoints2 = [[x1, y1], [x2, y2], [x3, y3]]; } textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right"; } var labelRotate; var rotate2 = labelModel.get("rotate"); if (typeof rotate2 === "number") { labelRotate = rotate2 * (Math.PI / 180); } else if (labelPosition === "center") { labelRotate = 0; } else { var radialAngle = nx < 0 ? -midAngle + Math.PI : -midAngle; if (rotate2 === "radial" || rotate2 === true) { labelRotate = radialAngle; } else if (rotate2 === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") { labelRotate = radialAngle + Math.PI / 2; if (labelRotate > Math.PI / 2) { labelRotate -= Math.PI; } } else { labelRotate = 0; } } hasLabelRotate = !!labelRotate; label2.x = textX; label2.y = textY; label2.rotation = labelRotate; label2.setStyle({ verticalAlign: "middle" }); if (!isLabelInside) { var textRect = label2.getBoundingRect().clone(); textRect.applyTransform(label2.getComputedTransform()); var margin = (label2.style.margin || 0) + 2.1; textRect.y -= margin / 2; textRect.height += margin; labelLayoutList.push({ label: label2, labelLine: labelLine2, position: labelPosition, len: labelLineLen, len2: labelLineLen2, minTurnAngle: labelLineModel.get("minTurnAngle"), maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"), surfaceNormal: new Point$1(nx, ny), linePoints: linePoints2, textAlign, labelDistance, labelAlignTo, edgeDistance, bleedMargin, rect: textRect }); } else { label2.setStyle({ align: textAlign }); var selectState2 = label2.states.select; if (selectState2) { selectState2.x += label2.x; selectState2.y += label2.y; } } sector.setTextConfig({ inside: isLabelInside }); }); if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) { avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop); } for (var i = 0; i < labelLayoutList.length; i++) { var layout2 = labelLayoutList[i]; var label = layout2.label; var labelLine = layout2.labelLine; var notShowLabel = isNaN(label.x) || isNaN(label.y); if (label) { label.setStyle({ align: layout2.textAlign }); if (notShowLabel) { each$g(label.states, setNotShow); label.ignore = true; } var selectState = label.states.select; if (selectState) { selectState.x += label.x; selectState.y += label.y; } } if (labelLine) { var linePoints = layout2.linePoints; if (notShowLabel || !linePoints) { each$g(labelLine.states, setNotShow); labelLine.ignore = true; } else { limitTurnAngle(linePoints, layout2.minTurnAngle); limitSurfaceAngle(linePoints, layout2.surfaceNormal, layout2.maxSurfaceAngle); labelLine.setShape({ points: linePoints }); label.__hostTarget.textGuideLineConfig = { anchor: new Point$1(linePoints[0][0], linePoints[0][1]) }; } } } } function getSectorCornerRadius(model, shape, zeroIfNull) { var cornerRadius = model.get("borderRadius"); if (cornerRadius == null) { return zeroIfNull ? { innerCornerRadius: 0, cornerRadius: 0 } : null; } if (!isArray$1(cornerRadius)) { cornerRadius = [cornerRadius, cornerRadius]; } return { innerCornerRadius: parsePercent$2(cornerRadius[0], shape.r0), cornerRadius: parsePercent$2(cornerRadius[1], shape.r) }; } var PiePiece = function(_super) { __extends$1(PiePiece2, _super); function PiePiece2(data, idx, startAngle) { var _this = _super.call(this) || this; _this.z2 = 2; var text = new ZRText$1(); _this.setTextContent(text); _this.updateData(data, idx, startAngle, true); return _this; } PiePiece2.prototype.updateData = function(data, idx, startAngle, firstCreate) { var sector = this; var seriesModel = data.hostModel; var itemModel = data.getItemModel(idx); var emphasisModel = itemModel.getModel("emphasis"); var layout2 = data.getItemLayout(idx); var sectorShape = extend(getSectorCornerRadius(itemModel.getModel("itemStyle"), layout2, true), layout2); if (isNaN(sectorShape.startAngle)) { sector.setShape(sectorShape); return; } if (firstCreate) { sector.setShape(sectorShape); var animationType = seriesModel.getShallow("animationType"); if (animationType === "scale") { sector.shape.r = layout2.r0; initProps(sector, { shape: { r: layout2.r } }, seriesModel, idx); } else { if (startAngle != null) { sector.setShape({ startAngle, endAngle: startAngle }); initProps(sector, { shape: { startAngle: layout2.startAngle, endAngle: layout2.endAngle } }, seriesModel, idx); } else { sector.shape.endAngle = layout2.startAngle; updateProps$1(sector, { shape: { endAngle: layout2.endAngle } }, seriesModel, idx); } } } else { saveOldStyle(sector); updateProps$1(sector, { shape: sectorShape }, seriesModel, idx); } sector.useStyle(data.getItemVisual(idx, "style")); setStatesStylesFromModel(sector, itemModel); var midAngle = (layout2.startAngle + layout2.endAngle) / 2; var offset = seriesModel.get("selectedOffset"); var dx = Math.cos(midAngle) * offset; var dy = Math.sin(midAngle) * offset; var cursorStyle = itemModel.getShallow("cursor"); cursorStyle && sector.attr("cursor", cursorStyle); this._updateLabel(seriesModel, data, idx); sector.ensureState("emphasis").shape = __assign({ r: layout2.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0) }, getSectorCornerRadius(emphasisModel.getModel("itemStyle"), layout2)); extend(sector.ensureState("select"), { x: dx, y: dy, shape: getSectorCornerRadius(itemModel.getModel(["select", "itemStyle"]), layout2) }); extend(sector.ensureState("blur"), { shape: getSectorCornerRadius(itemModel.getModel(["blur", "itemStyle"]), layout2) }); var labelLine = sector.getTextGuideLine(); var labelText = sector.getTextContent(); labelLine && extend(labelLine.ensureState("select"), { x: dx, y: dy }); extend(labelText.ensureState("select"), { x: dx, y: dy }); enableHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope")); }; PiePiece2.prototype._updateLabel = function(seriesModel, data, idx) { var sector = this; var itemModel = data.getItemModel(idx); var labelLineModel = itemModel.getModel("labelLine"); var style = data.getItemVisual(idx, "style"); var visualColor = style && style.fill; var visualOpacity = style && style.opacity; setLabelStyle(sector, getLabelStatesModels(itemModel), { labelFetcher: data.hostModel, labelDataIndex: idx, inheritColor: visualColor, defaultOpacity: visualOpacity, defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx) }); var labelText = sector.getTextContent(); sector.setTextConfig({ position: null, rotation: null }); labelText.attr({ z2: 10 }); var labelPosition = seriesModel.get(["label", "position"]); if (labelPosition !== "outside" && labelPosition !== "outer") { sector.removeTextGuideLine(); } else { var polyline = this.getTextGuideLine(); if (!polyline) { polyline = new Polyline$3(); this.setTextGuideLine(polyline); } setLabelLineStyle(this, getLabelLineStatesModels(itemModel), { stroke: visualColor, opacity: retrieve3(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1) }); } }; return PiePiece2; }(Sector$1); var PieView = function(_super) { __extends$1(PieView2, _super); function PieView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.ignoreLabelLineUpdate = true; return _this; } PieView2.prototype.init = function() { var sectorGroup = new Group$4(); this._sectorGroup = sectorGroup; }; PieView2.prototype.render = function(seriesModel, ecModel, api, payload) { var data = seriesModel.getData(); var oldData = this._data; var group = this.group; var startAngle; if (!oldData && data.count() > 0) { var shape = data.getItemLayout(0); for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) { shape = data.getItemLayout(s); } if (shape) { startAngle = shape.startAngle; } } if (this._emptyCircleSector) { group.remove(this._emptyCircleSector); } if (data.count() === 0 && seriesModel.get("showEmptyCircle")) { var sector = new Sector$1({ shape: getBasicPieLayout(seriesModel, api) }); sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle()); this._emptyCircleSector = sector; group.add(sector); } data.diff(oldData).add(function(idx) { var piePiece = new PiePiece(data, idx, startAngle); data.setItemGraphicEl(idx, piePiece); group.add(piePiece); }).update(function(newIdx, oldIdx) { var piePiece = oldData.getItemGraphicEl(oldIdx); piePiece.updateData(data, newIdx, startAngle); piePiece.off("click"); group.add(piePiece); data.setItemGraphicEl(newIdx, piePiece); }).remove(function(idx) { var piePiece = oldData.getItemGraphicEl(idx); removeElementWithFadeOut(piePiece, seriesModel, idx); }).execute(); pieLabelLayout(seriesModel); if (seriesModel.get("animationTypeUpdate") !== "expansion") { this._data = data; } }; PieView2.prototype.dispose = function() { }; PieView2.prototype.containPoint = function(point, seriesModel) { var data = seriesModel.getData(); var itemLayout = data.getItemLayout(0); if (itemLayout) { var dx = point[0] - itemLayout.cx; var dy = point[1] - itemLayout.cy; var radius = Math.sqrt(dx * dx + dy * dy); return radius <= itemLayout.r && radius >= itemLayout.r0; } }; PieView2.type = "pie"; return PieView2; }(ChartView$1); var PieView$1 = PieView; function createSeriesDataSimply(seriesModel, opt, nameList) { opt = isArray$1(opt) && { coordDimensions: opt } || extend({ encodeDefine: seriesModel.getEncode() }, opt); var source = seriesModel.getSource(); var dimensions = prepareSeriesDataSchema(source, opt).dimensions; var list2 = new SeriesData$1(dimensions, seriesModel); list2.initData(source, nameList); return list2; } var LegendVisualProvider = function() { function LegendVisualProvider2(getDataWithEncodedVisual, getRawData2) { this._getDataWithEncodedVisual = getDataWithEncodedVisual; this._getRawData = getRawData2; } LegendVisualProvider2.prototype.getAllNames = function() { var rawData = this._getRawData(); return rawData.mapArray(rawData.getName); }; LegendVisualProvider2.prototype.containName = function(name) { var rawData = this._getRawData(); return rawData.indexOfName(name) >= 0; }; LegendVisualProvider2.prototype.indexOfName = function(name) { var dataWithEncodedVisual = this._getDataWithEncodedVisual(); return dataWithEncodedVisual.indexOfName(name); }; LegendVisualProvider2.prototype.getItemVisual = function(dataIndex, key2) { var dataWithEncodedVisual = this._getDataWithEncodedVisual(); return dataWithEncodedVisual.getItemVisual(dataIndex, key2); }; return LegendVisualProvider2; }(); var LegendVisualProvider$1 = LegendVisualProvider; var PieSeriesModel = function(_super) { __extends$1(PieSeriesModel2, _super); function PieSeriesModel2() { return _super !== null && _super.apply(this, arguments) || this; } PieSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); this.legendVisualProvider = new LegendVisualProvider$1(bind$2(this.getData, this), bind$2(this.getRawData, this)); this._defaultLabelLine(option); }; PieSeriesModel2.prototype.mergeOption = function() { _super.prototype.mergeOption.apply(this, arguments); }; PieSeriesModel2.prototype.getInitialData = function() { return createSeriesDataSimply(this, { coordDimensions: ["value"], encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this) }); }; PieSeriesModel2.prototype.getDataParams = function(dataIndex) { var data = this.getData(); var params = _super.prototype.getDataParams.call(this, dataIndex); var valueList = []; data.each(data.mapDimension("value"), function(value) { valueList.push(value); }); params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get("percentPrecision")); params.$vars.push("percent"); return params; }; PieSeriesModel2.prototype._defaultLabelLine = function(option) { defaultEmphasis(option, "labelLine", ["show"]); var labelLineNormalOpt = option.labelLine; var labelLineEmphasisOpt = option.emphasis.labelLine; labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; }; PieSeriesModel2.type = "series.pie"; PieSeriesModel2.defaultOption = { zlevel: 0, z: 2, legendHoverLink: true, colorBy: "data", center: ["50%", "50%"], radius: [0, "75%"], clockwise: true, startAngle: 90, minAngle: 0, minShowLabelAngle: 0, selectedOffset: 10, percentPrecision: 2, stillShowZeroSum: true, left: 0, top: 0, right: 0, bottom: 0, width: null, height: null, label: { rotate: 0, show: true, overflow: "truncate", position: "outer", alignTo: "none", edgeDistance: "25%", bleedMargin: 10, distanceToLabelLine: 5 }, labelLine: { show: true, length: 15, length2: 15, smooth: false, minTurnAngle: 90, maxSurfaceAngle: 90, lineStyle: { width: 1, type: "solid" } }, itemStyle: { borderWidth: 1, borderJoin: "round" }, showEmptyCircle: true, emptyCircleStyle: { color: "lightgray", opacity: 1 }, labelLayout: { hideOverlap: true }, emphasis: { scale: true, scaleSize: 5 }, avoidLabelOverlap: true, animationType: "expansion", animationDuration: 1e3, animationTypeUpdate: "transition", animationEasingUpdate: "cubicInOut", animationDurationUpdate: 500, animationEasing: "cubicInOut" }; return PieSeriesModel2; }(SeriesModel$1); var PieSeriesModel$1 = PieSeriesModel; function negativeDataFilter(seriesType2) { return { seriesType: seriesType2, reset: function(seriesModel, ecModel) { var data = seriesModel.getData(); data.filterSelf(function(idx) { var valueDim = data.mapDimension("value"); var curValue = data.get(valueDim, idx); if (typeof curValue === "number" && !isNaN(curValue) && curValue < 0) { return false; } return true; }); } }; } function install$O(registers) { registers.registerChartView(PieView$1); registers.registerSeriesModel(PieSeriesModel$1); createLegacyDataSelectAction("pie", registers.registerAction); registers.registerLayout(curry$1(pieLayout, "pie")); registers.registerProcessor(dataFilter$1("pie")); registers.registerProcessor(negativeDataFilter("pie")); } var ScatterSeriesModel = function(_super) { __extends$1(ScatterSeriesModel2, _super); function ScatterSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ScatterSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } ScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this, { useEncodeDefaulter: true }); }; ScatterSeriesModel2.prototype.getProgressive = function() { var progressive = this.option.progressive; if (progressive == null) { return this.option.large ? 5e3 : this.get("progressive"); } return progressive; }; ScatterSeriesModel2.prototype.getProgressiveThreshold = function() { var progressiveThreshold = this.option.progressiveThreshold; if (progressiveThreshold == null) { return this.option.large ? 1e4 : this.get("progressiveThreshold"); } return progressiveThreshold; }; ScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { return selectors.point(data.getItemLayout(dataIndex)); }; ScatterSeriesModel2.type = "series.scatter"; ScatterSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; ScatterSeriesModel2.defaultOption = { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, legendHoverLink: true, symbolSize: 10, large: false, largeThreshold: 2e3, itemStyle: { opacity: 0.8 }, emphasis: { scale: true }, clip: true, select: { itemStyle: { borderColor: "#212121" } }, universalTransition: { divideShape: "clone" } }; return ScatterSeriesModel2; }(SeriesModel$1); var ScatterSeriesModel$1 = ScatterSeriesModel; var BOOST_SIZE_THRESHOLD = 4; var LargeSymbolPathShape = function() { function LargeSymbolPathShape2() { } return LargeSymbolPathShape2; }(); var LargeSymbolPath = function(_super) { __extends$1(LargeSymbolPath2, _super); function LargeSymbolPath2(opts) { return _super.call(this, opts) || this; } LargeSymbolPath2.prototype.getDefaultShape = function() { return new LargeSymbolPathShape(); }; LargeSymbolPath2.prototype.buildPath = function(path, shape) { var points2 = shape.points; var size = shape.size; var symbolProxy = this.symbolProxy; var symbolProxyShape = symbolProxy.shape; var ctx = path.getContext ? path.getContext() : path; var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; if (canBoost) { this._ctx = ctx; return; } this._ctx = null; for (var i = 0; i < points2.length; ) { var x = points2[i++]; var y = points2[i++]; if (isNaN(x) || isNaN(y)) { continue; } if (this.softClipShape && !this.softClipShape.contain(x, y)) { continue; } symbolProxyShape.x = x - size[0] / 2; symbolProxyShape.y = y - size[1] / 2; symbolProxyShape.width = size[0]; symbolProxyShape.height = size[1]; symbolProxy.buildPath(path, symbolProxyShape, true); } }; LargeSymbolPath2.prototype.afterBrush = function() { var shape = this.shape; var points2 = shape.points; var size = shape.size; var ctx = this._ctx; if (!ctx) { return; } for (var i = 0; i < points2.length; ) { var x = points2[i++]; var y = points2[i++]; if (isNaN(x) || isNaN(y)) { continue; } if (this.softClipShape && !this.softClipShape.contain(x, y)) { continue; } ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]); } }; LargeSymbolPath2.prototype.findDataIndex = function(x, y) { var shape = this.shape; var points2 = shape.points; var size = shape.size; var w = Math.max(size[0], 4); var h = Math.max(size[1], 4); for (var idx = points2.length / 2 - 1; idx >= 0; idx--) { var i = idx * 2; var x0 = points2[i] - w / 2; var y0 = points2[i + 1] - h / 2; if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) { return idx; } } return -1; }; return LargeSymbolPath2; }(Path$1); var LargeSymbolDraw = function() { function LargeSymbolDraw2() { this.group = new Group$4(); } LargeSymbolDraw2.prototype.isPersistent = function() { return !this._incremental; }; LargeSymbolDraw2.prototype.updateData = function(data, opt) { this.group.removeAll(); var symbolEl = new LargeSymbolPath({ rectHover: true, cursor: "default" }); symbolEl.setShape({ points: data.getLayout("points") }); this._setCommon(symbolEl, data, false, opt); this.group.add(symbolEl); this._incremental = null; }; LargeSymbolDraw2.prototype.updateLayout = function(data) { if (this._incremental) { return; } var points2 = data.getLayout("points"); this.group.eachChild(function(child) { if (child.startIndex != null) { var len2 = (child.endIndex - child.startIndex) * 2; var byteOffset = child.startIndex * 4 * 2; points2 = new Float32Array(points2.buffer, byteOffset, len2); } child.setShape("points", points2); }); }; LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function(data) { this.group.removeAll(); this._clearIncremental(); if (data.count() > 2e6) { if (!this._incremental) { this._incremental = new IncrementalDisplayable$1({ silent: true }); } this.group.add(this._incremental); } else { this._incremental = null; } }; LargeSymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) { var symbolEl; if (this._incremental) { symbolEl = new LargeSymbolPath(); this._incremental.addDisplayable(symbolEl, true); } else { symbolEl = new LargeSymbolPath({ rectHover: true, cursor: "default", startIndex: taskParams.start, endIndex: taskParams.end }); symbolEl.incremental = true; this.group.add(symbolEl); } symbolEl.setShape({ points: data.getLayout("points") }); this._setCommon(symbolEl, data, !!this._incremental, opt); }; LargeSymbolDraw2.prototype._setCommon = function(symbolEl, data, isIncremental, opt) { var hostModel = data.hostModel; opt = opt || {}; var size = data.getVisual("symbolSize"); symbolEl.setShape("size", size instanceof Array ? size : [size, size]); symbolEl.softClipShape = opt.clipShape || null; symbolEl.symbolProxy = createSymbol$1(data.getVisual("symbol"), 0, 0, 0, 0); symbolEl.setColor = symbolEl.symbolProxy.setColor; var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD; symbolEl.useStyle(hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"])); var globalStyle = data.getVisual("style"); var visualColor = globalStyle && globalStyle.fill; if (visualColor) { symbolEl.setColor(visualColor); } if (!isIncremental) { var ecData_1 = getECData(symbolEl); ecData_1.seriesIndex = hostModel.seriesIndex; symbolEl.on("mousemove", function(e2) { ecData_1.dataIndex = null; var dataIndex = symbolEl.findDataIndex(e2.offsetX, e2.offsetY); if (dataIndex >= 0) { ecData_1.dataIndex = dataIndex + (symbolEl.startIndex || 0); } }); } }; LargeSymbolDraw2.prototype.remove = function() { this._clearIncremental(); this._incremental = null; this.group.removeAll(); }; LargeSymbolDraw2.prototype._clearIncremental = function() { var incremental = this._incremental; if (incremental) { incremental.clearDisplaybles(); } }; return LargeSymbolDraw2; }(); var LargeSymbolDraw$1 = LargeSymbolDraw; var ScatterView = function(_super) { __extends$1(ScatterView2, _super); function ScatterView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ScatterView2.type; return _this; } ScatterView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var symbolDraw = this._updateSymbolDraw(data, seriesModel); symbolDraw.updateData(data, { clipShape: this._getClipShape(seriesModel) }); this._finished = true; }; ScatterView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var symbolDraw = this._updateSymbolDraw(data, seriesModel); symbolDraw.incrementalPrepareUpdate(data); this._finished = false; }; ScatterView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), { clipShape: this._getClipShape(seriesModel) }); this._finished = taskParams.end === seriesModel.getData().count(); }; ScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); this.group.dirty(); if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) { return { update: true }; } else { var res = pointsLayout("").reset(seriesModel, ecModel, api); if (res.progress) { res.progress({ start: 0, end: data.count(), count: data.count() }, data); } this._symbolDraw.updateLayout(data); } }; ScatterView2.prototype._getClipShape = function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); return seriesModel.get("clip", true) ? clipArea : null; }; ScatterView2.prototype._updateSymbolDraw = function(data, seriesModel) { var symbolDraw = this._symbolDraw; var pipelineContext = seriesModel.pipelineContext; var isLargeDraw = pipelineContext.large; if (!symbolDraw || isLargeDraw !== this._isLargeDraw) { symbolDraw && symbolDraw.remove(); symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw$1() : new SymbolDraw$1(); this._isLargeDraw = isLargeDraw; this.group.removeAll(); } this.group.add(symbolDraw.group); return symbolDraw; }; ScatterView2.prototype.remove = function(ecModel, api) { this._symbolDraw && this._symbolDraw.remove(true); this._symbolDraw = null; }; ScatterView2.prototype.dispose = function() { }; ScatterView2.type = "scatter"; return ScatterView2; }(ChartView$1); var ScatterView$1 = ScatterView; var GridModel = function(_super) { __extends$1(GridModel2, _super); function GridModel2() { return _super !== null && _super.apply(this, arguments) || this; } GridModel2.type = "grid"; GridModel2.dependencies = ["xAxis", "yAxis"]; GridModel2.layoutMode = "box"; GridModel2.defaultOption = { show: false, zlevel: 0, z: 0, left: "10%", top: 60, right: "10%", bottom: 70, containLabel: false, backgroundColor: "rgba(0,0,0,0)", borderWidth: 1, borderColor: "#ccc" }; return GridModel2; }(ComponentModel$1); var GridModel$1 = GridModel; var CartesianAxisModel = function(_super) { __extends$1(CartesianAxisModel2, _super); function CartesianAxisModel2() { return _super !== null && _super.apply(this, arguments) || this; } CartesianAxisModel2.prototype.getCoordSysModel = function() { return this.getReferringComponents("grid", SINGLE_REFERRING).models[0]; }; CartesianAxisModel2.type = "cartesian2dAxis"; return CartesianAxisModel2; }(ComponentModel$1); mixin(CartesianAxisModel, AxisModelCommonMixin); var defaultOption$1 = { show: true, zlevel: 0, z: 0, inverse: false, name: "", nameLocation: "end", nameRotate: null, nameTruncate: { maxWidth: null, ellipsis: "...", placeholder: "." }, nameTextStyle: {}, nameGap: 15, silent: false, triggerEvent: false, tooltip: { show: false }, axisPointer: {}, axisLine: { show: true, onZero: true, onZeroAxisIndex: null, lineStyle: { color: "#6E7079", width: 1, type: "solid" }, symbol: ["none", "none"], symbolSize: [10, 15] }, axisTick: { show: true, inside: false, length: 5, lineStyle: { width: 1 } }, axisLabel: { show: true, inside: false, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12 }, splitLine: { show: true, lineStyle: { color: ["#E0E6F1"], width: 1, type: "solid" } }, splitArea: { show: false, areaStyle: { color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"] } } }; var categoryAxis = merge({ boundaryGap: true, deduplication: null, splitLine: { show: false }, axisTick: { alignWithLabel: false, interval: "auto" }, axisLabel: { interval: "auto" } }, defaultOption$1); var valueAxis = merge({ boundaryGap: [0, 0], axisLine: { show: "auto" }, axisTick: { show: "auto" }, splitNumber: 5, minorTick: { show: false, splitNumber: 5, length: 3, lineStyle: {} }, minorSplitLine: { show: false, lineStyle: { color: "#F4F7FD", width: 1 } } }, defaultOption$1); var timeAxis = merge({ scale: true, splitNumber: 6, axisLabel: { showMinLabel: false, showMaxLabel: false, rich: { primary: { fontWeight: "bold" } } }, splitLine: { show: false } }, valueAxis); var logAxis = defaults({ scale: true, logBase: 10 }, valueAxis); var axisDefault = { category: categoryAxis, value: valueAxis, time: timeAxis, log: logAxis }; var AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 }; function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) { each$g(AXIS_TYPES, function(v, axisType) { var defaultOption2 = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true); var AxisModel = function(_super) { __extends$1(AxisModel2, _super); function AxisModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = axisName + "Axis." + axisType; return _this; } AxisModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { var layoutMode = fetchLayoutMode(this); var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; var themeModel = ecModel.getTheme(); merge(option, themeModel.get(axisType + "Axis")); merge(option, this.getDefaultOption()); option.type = getAxisType(option); if (layoutMode) { mergeLayoutParam(option, inputPositionParams, layoutMode); } }; AxisModel2.prototype.optionUpdated = function() { var thisOption = this.option; if (thisOption.type === "category") { this.__ordinalMeta = OrdinalMeta$1.createByAxisModel(this); } }; AxisModel2.prototype.getCategories = function(rawData) { var option = this.option; if (option.type === "category") { if (rawData) { return option.data; } return this.__ordinalMeta.categories; } }; AxisModel2.prototype.getOrdinalMeta = function() { return this.__ordinalMeta; }; AxisModel2.type = axisName + "Axis." + axisType; AxisModel2.defaultOption = defaultOption2; return AxisModel2; }(BaseAxisModelClass); registers.registerComponentModel(AxisModel); }); registers.registerSubTypeDefaulter(axisName + "Axis", getAxisType); } function getAxisType(option) { return option.type || (option.data ? "category" : "value"); } var Cartesian = function() { function Cartesian2(name) { this.type = "cartesian"; this._dimList = []; this._axes = {}; this.name = name || ""; } Cartesian2.prototype.getAxis = function(dim) { return this._axes[dim]; }; Cartesian2.prototype.getAxes = function() { return map$1(this._dimList, function(dim) { return this._axes[dim]; }, this); }; Cartesian2.prototype.getAxesByScale = function(scaleType) { scaleType = scaleType.toLowerCase(); return filter(this.getAxes(), function(axis) { return axis.scale.type === scaleType; }); }; Cartesian2.prototype.addAxis = function(axis) { var dim = axis.dim; this._axes[dim] = axis; this._dimList.push(dim); }; return Cartesian2; }(); var Cartesian$1 = Cartesian; var cartesian2DDimensions = ["x", "y"]; function canCalculateAffineTransform(scale2) { return scale2.type === "interval" || scale2.type === "time"; } var Cartesian2D = function(_super) { __extends$1(Cartesian2D2, _super); function Cartesian2D2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "cartesian2d"; _this.dimensions = cartesian2DDimensions; return _this; } Cartesian2D2.prototype.calcAffineTransform = function() { this._transform = this._invTransform = null; var xAxisScale = this.getAxis("x").scale; var yAxisScale = this.getAxis("y").scale; if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) { return; } var xScaleExtent = xAxisScale.getExtent(); var yScaleExtent = yAxisScale.getExtent(); var start2 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]); var end2 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]); var xScaleSpan = xScaleExtent[1] - xScaleExtent[0]; var yScaleSpan = yScaleExtent[1] - yScaleExtent[0]; if (!xScaleSpan || !yScaleSpan) { return; } var scaleX = (end2[0] - start2[0]) / xScaleSpan; var scaleY = (end2[1] - start2[1]) / yScaleSpan; var translateX = start2[0] - xScaleExtent[0] * scaleX; var translateY = start2[1] - yScaleExtent[0] * scaleY; var m2 = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY]; this._invTransform = invert([], m2); }; Cartesian2D2.prototype.getBaseAxis = function() { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x"); }; Cartesian2D2.prototype.containPoint = function(point) { var axisX = this.getAxis("x"); var axisY = this.getAxis("y"); return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1])); }; Cartesian2D2.prototype.containData = function(data) { return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]); }; Cartesian2D2.prototype.dataToPoint = function(data, clamp2, out2) { out2 = out2 || []; var xVal = data[0]; var yVal = data[1]; if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) { return applyTransform$1(out2, data, this._transform); } var xAxis = this.getAxis("x"); var yAxis = this.getAxis("y"); out2[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp2)); out2[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp2)); return out2; }; Cartesian2D2.prototype.clampData = function(data, out2) { var xScale = this.getAxis("x").scale; var yScale = this.getAxis("y").scale; var xAxisExtent = xScale.getExtent(); var yAxisExtent = yScale.getExtent(); var x = xScale.parse(data[0]); var y = yScale.parse(data[1]); out2 = out2 || []; out2[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1])); out2[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1])); return out2; }; Cartesian2D2.prototype.pointToData = function(point, clamp2) { var out2 = []; if (this._invTransform) { return applyTransform$1(out2, point, this._invTransform); } var xAxis = this.getAxis("x"); var yAxis = this.getAxis("y"); out2[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp2); out2[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp2); return out2; }; Cartesian2D2.prototype.getOtherAxis = function(axis) { return this.getAxis(axis.dim === "x" ? "y" : "x"); }; Cartesian2D2.prototype.getArea = function() { var xExtent = this.getAxis("x").getGlobalExtent(); var yExtent = this.getAxis("y").getGlobalExtent(); var x = Math.min(xExtent[0], xExtent[1]); var y = Math.min(yExtent[0], yExtent[1]); var width = Math.max(xExtent[0], xExtent[1]) - x; var height = Math.max(yExtent[0], yExtent[1]) - y; return new BoundingRect$1(x, y, width, height); }; return Cartesian2D2; }(Cartesian$1); var Cartesian2D$1 = Cartesian2D; var Axis2D = function(_super) { __extends$1(Axis2D2, _super); function Axis2D2(dim, scale2, coordExtent, axisType, position2) { var _this = _super.call(this, dim, scale2, coordExtent) || this; _this.index = 0; _this.type = axisType || "value"; _this.position = position2 || "bottom"; return _this; } Axis2D2.prototype.isHorizontal = function() { var position2 = this.position; return position2 === "top" || position2 === "bottom"; }; Axis2D2.prototype.getGlobalExtent = function(asc2) { var ret = this.getExtent(); ret[0] = this.toGlobalCoord(ret[0]); ret[1] = this.toGlobalCoord(ret[1]); asc2 && ret[0] > ret[1] && ret.reverse(); return ret; }; Axis2D2.prototype.pointToData = function(point, clamp2) { return this.coordToData(this.toLocalCoord(point[this.dim === "x" ? 0 : 1]), clamp2); }; Axis2D2.prototype.setCategorySortInfo = function(info) { if (this.type !== "category") { return false; } this.model.option.categorySortInfo = info; this.scale.setSortInfo(info); }; return Axis2D2; }(Axis$1); var Axis2D$1 = Axis2D; function layout$2(gridModel, axisModel, opt) { opt = opt || {}; var grid2 = gridModel.coordinateSystem; var axis = axisModel.axis; var layout2 = {}; var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0]; var rawAxisPosition = axis.position; var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition; var axisDim = axis.dim; var rect = grid2.getRect(); var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 }; var axisOffset = axisModel.get("offset") || 0; var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset]; if (otherAxisOnZeroOf) { var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0)); posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]); } layout2.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]]; layout2.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1); var dirMap = { top: -1, bottom: 1, left: -1, right: 1 }; layout2.labelDirection = layout2.tickDirection = layout2.nameDirection = dirMap[rawAxisPosition]; layout2.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0; if (axisModel.get(["axisTick", "inside"])) { layout2.tickDirection = -layout2.tickDirection; } if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { layout2.labelDirection = -layout2.labelDirection; } var labelRotate = axisModel.get(["axisLabel", "rotate"]); layout2.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate; layout2.z2 = 1; return layout2; } function isCartesian2DSeries(seriesModel) { return seriesModel.get("coordinateSystem") === "cartesian2d"; } function findAxisModels(seriesModel) { var axisModelMap = { xAxisModel: null, yAxisModel: null }; each$g(axisModelMap, function(v, key2) { var axisType = key2.replace(/Model$/, ""); var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; axisModelMap[key2] = axisModel; }); return axisModelMap; } var Grid = function() { function Grid2(gridModel, ecModel, api) { this.type = "grid"; this._coordsMap = {}; this._coordsList = []; this._axesMap = {}; this._axesList = []; this.axisPointerEnabled = true; this.dimensions = cartesian2DDimensions; this._initCartesian(gridModel, ecModel, api); this.model = gridModel; } Grid2.prototype.getRect = function() { return this._rect; }; Grid2.prototype.update = function(ecModel, api) { var axesMap = this._axesMap; this._updateScale(ecModel, this.model); each$g(axesMap.x, function(xAxis) { niceScaleExtent(xAxis.scale, xAxis.model); }); each$g(axesMap.y, function(yAxis) { niceScaleExtent(yAxis.scale, yAxis.model); }); var onZeroRecords = {}; each$g(axesMap.x, function(xAxis) { fixAxisOnZero(axesMap, "y", xAxis, onZeroRecords); }); each$g(axesMap.y, function(yAxis) { fixAxisOnZero(axesMap, "x", yAxis, onZeroRecords); }); this.resize(this.model, api); }; Grid2.prototype.resize = function(gridModel, api, ignoreContainLabel) { var boxLayoutParams = gridModel.getBoxLayoutParams(); var isContainLabel = !ignoreContainLabel && gridModel.get("containLabel"); var gridRect = getLayoutRect(boxLayoutParams, { width: api.getWidth(), height: api.getHeight() }); this._rect = gridRect; var axesList = this._axesList; adjustAxes(); if (isContainLabel) { each$g(axesList, function(axis) { if (!axis.model.get(["axisLabel", "inside"])) { var labelUnionRect = estimateLabelUnionRect(axis); if (labelUnionRect) { var dim = axis.isHorizontal() ? "height" : "width"; var margin = axis.model.get(["axisLabel", "margin"]); gridRect[dim] -= labelUnionRect[dim] + margin; if (axis.position === "top") { gridRect.y += labelUnionRect.height + margin; } else if (axis.position === "left") { gridRect.x += labelUnionRect.width + margin; } } } }); adjustAxes(); } each$g(this._coordsList, function(coord) { coord.calcAffineTransform(); }); function adjustAxes() { each$g(axesList, function(axis) { var isHorizontal = axis.isHorizontal(); var extent3 = isHorizontal ? [0, gridRect.width] : [0, gridRect.height]; var idx = axis.inverse ? 1 : 0; axis.setExtent(extent3[idx], extent3[1 - idx]); updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y); }); } }; Grid2.prototype.getAxis = function(dim, axisIndex) { var axesMapOnDim = this._axesMap[dim]; if (axesMapOnDim != null) { return axesMapOnDim[axisIndex || 0]; } }; Grid2.prototype.getAxes = function() { return this._axesList.slice(); }; Grid2.prototype.getCartesian = function(xAxisIndex, yAxisIndex) { if (xAxisIndex != null && yAxisIndex != null) { var key2 = "x" + xAxisIndex + "y" + yAxisIndex; return this._coordsMap[key2]; } if (isObject$3(xAxisIndex)) { yAxisIndex = xAxisIndex.yAxisIndex; xAxisIndex = xAxisIndex.xAxisIndex; } for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) { if (coordList[i].getAxis("x").index === xAxisIndex || coordList[i].getAxis("y").index === yAxisIndex) { return coordList[i]; } } }; Grid2.prototype.getCartesians = function() { return this._coordsList.slice(); }; Grid2.prototype.convertToPixel = function(ecModel, finder, value) { var target = this._findConvertTarget(finder); return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null; }; Grid2.prototype.convertFromPixel = function(ecModel, finder, value) { var target = this._findConvertTarget(finder); return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null; }; Grid2.prototype._findConvertTarget = function(finder) { var seriesModel = finder.seriesModel; var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0]; var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0]; var gridModel = finder.gridModel; var coordsList = this._coordsList; var cartesian; var axis; if (seriesModel) { cartesian = seriesModel.coordinateSystem; indexOf(coordsList, cartesian) < 0 && (cartesian = null); } else if (xAxisModel && yAxisModel) { cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); } else if (xAxisModel) { axis = this.getAxis("x", xAxisModel.componentIndex); } else if (yAxisModel) { axis = this.getAxis("y", yAxisModel.componentIndex); } else if (gridModel) { var grid2 = gridModel.coordinateSystem; if (grid2 === this) { cartesian = this._coordsList[0]; } } return { cartesian, axis }; }; Grid2.prototype.containPoint = function(point) { var coord = this._coordsList[0]; if (coord) { return coord.containPoint(point); } }; Grid2.prototype._initCartesian = function(gridModel, ecModel, api) { var _this = this; var grid2 = this; var axisPositionUsed = { left: false, right: false, top: false, bottom: false }; var axesMap = { x: {}, y: {} }; var axesCount = { x: 0, y: 0 }; ecModel.eachComponent("xAxis", createAxisCreator("x"), this); ecModel.eachComponent("yAxis", createAxisCreator("y"), this); if (!axesCount.x || !axesCount.y) { this._axesMap = {}; this._axesList = []; return; } this._axesMap = axesMap; each$g(axesMap.x, function(xAxis, xAxisIndex) { each$g(axesMap.y, function(yAxis, yAxisIndex) { var key2 = "x" + xAxisIndex + "y" + yAxisIndex; var cartesian = new Cartesian2D$1(key2); cartesian.master = _this; cartesian.model = gridModel; _this._coordsMap[key2] = cartesian; _this._coordsList.push(cartesian); cartesian.addAxis(xAxis); cartesian.addAxis(yAxis); }); }); function createAxisCreator(dimName) { return function(axisModel, idx) { if (!isAxisUsedInTheGrid(axisModel, gridModel)) { return; } var axisPosition = axisModel.get("position"); if (dimName === "x") { if (axisPosition !== "top" && axisPosition !== "bottom") { axisPosition = axisPositionUsed.bottom ? "top" : "bottom"; } } else { if (axisPosition !== "left" && axisPosition !== "right") { axisPosition = axisPositionUsed.left ? "right" : "left"; } } axisPositionUsed[axisPosition] = true; var axis = new Axis2D$1(dimName, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisPosition); var isCategory2 = axis.type === "category"; axis.onBand = isCategory2 && axisModel.get("boundaryGap"); axis.inverse = axisModel.get("inverse"); axisModel.axis = axis; axis.model = axisModel; axis.grid = grid2; axis.index = idx; grid2._axesList.push(axis); axesMap[dimName][idx] = axis; axesCount[dimName]++; }; } }; Grid2.prototype._updateScale = function(ecModel, gridModel) { each$g(this._axesList, function(axis) { axis.scale.setExtent(Infinity, -Infinity); if (axis.type === "category") { var categorySortInfo = axis.model.get("categorySortInfo"); axis.scale.setSortInfo(categorySortInfo); } }); ecModel.eachSeries(function(seriesModel) { if (isCartesian2DSeries(seriesModel)) { var axesModelMap = findAxisModels(seriesModel); var xAxisModel = axesModelMap.xAxisModel; var yAxisModel = axesModelMap.yAxisModel; if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) { return; } var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); var data = seriesModel.getData(); var xAxis = cartesian.getAxis("x"); var yAxis = cartesian.getAxis("y"); if (data.type === "list") { unionExtent(data, xAxis); unionExtent(data, yAxis); } } }, this); function unionExtent(data, axis) { each$g(getDataDimensionsOnAxis(data, axis.dim), function(dim) { axis.scale.unionExtentFromData(data, dim); }); } }; Grid2.prototype.getTooltipAxes = function(dim) { var baseAxes = []; var otherAxes = []; each$g(this.getCartesians(), function(cartesian) { var baseAxis = dim != null && dim !== "auto" ? cartesian.getAxis(dim) : cartesian.getBaseAxis(); var otherAxis = cartesian.getOtherAxis(baseAxis); indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis); indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis); }); return { baseAxes, otherAxes }; }; Grid2.create = function(ecModel, api) { var grids = []; ecModel.eachComponent("grid", function(gridModel, idx) { var grid2 = new Grid2(gridModel, ecModel, api); grid2.name = "grid_" + idx; grid2.resize(gridModel, api, true); gridModel.coordinateSystem = grid2; grids.push(grid2); }); ecModel.eachSeries(function(seriesModel) { if (!isCartesian2DSeries(seriesModel)) { return; } var axesModelMap = findAxisModels(seriesModel); var xAxisModel = axesModelMap.xAxisModel; var yAxisModel = axesModelMap.yAxisModel; var gridModel = xAxisModel.getCoordSysModel(); var grid2 = gridModel.coordinateSystem; seriesModel.coordinateSystem = grid2.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); }); return grids; }; Grid2.dimensions = cartesian2DDimensions; return Grid2; }(); function isAxisUsedInTheGrid(axisModel, gridModel) { return axisModel.getCoordSysModel() === gridModel; } function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) { axis.getAxesOnZeroOf = function() { return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : []; }; var otherAxes = axesMap[otherAxisDim]; var otherAxisOnZeroOf; var axisModel = axis.model; var onZero = axisModel.get(["axisLine", "onZero"]); var onZeroAxisIndex = axisModel.get(["axisLine", "onZeroAxisIndex"]); if (!onZero) { return; } if (onZeroAxisIndex != null) { if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) { otherAxisOnZeroOf = otherAxes[onZeroAxisIndex]; } } else { for (var idx in otherAxes) { if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) { otherAxisOnZeroOf = otherAxes[idx]; break; } } } if (otherAxisOnZeroOf) { onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true; } function getOnZeroRecordKey(axis2) { return axis2.dim + "_" + axis2.index; } } function canOnZeroToAxis(axis) { return axis && axis.type !== "category" && axis.type !== "time" && ifAxisCrossZero(axis); } function updateAxisTransform(axis, coordBase) { var axisExtent = axis.getExtent(); var axisExtentSum = axisExtent[0] + axisExtent[1]; axis.toGlobalCoord = axis.dim === "x" ? function(coord) { return coord + coordBase; } : function(coord) { return axisExtentSum - coord + coordBase; }; axis.toLocalCoord = axis.dim === "x" ? function(coord) { return coord - coordBase; } : function(coord) { return axisExtentSum - coord + coordBase; }; } var Grid$1 = Grid; var PI$3 = Math.PI; var AxisBuilder = function() { function AxisBuilder2(axisModel, opt) { this.group = new Group$4(); this.opt = opt; this.axisModel = axisModel; defaults(opt, { labelOffset: 0, nameDirection: 1, tickDirection: 1, labelDirection: 1, silent: true, handleAutoShown: function() { return true; } }); var transformGroup = new Group$4({ x: opt.position[0], y: opt.position[1], rotation: opt.rotation }); transformGroup.updateTransform(); this._transformGroup = transformGroup; } AxisBuilder2.prototype.hasBuilder = function(name) { return !!builders[name]; }; AxisBuilder2.prototype.add = function(name) { builders[name](this.opt, this.axisModel, this.group, this._transformGroup); }; AxisBuilder2.prototype.getGroup = function() { return this.group; }; AxisBuilder2.innerTextLayout = function(axisRotation, textRotation, direction) { var rotationDiff = remRadian(textRotation - axisRotation); var textAlign; var textVerticalAlign; if (isRadianAroundZero(rotationDiff)) { textVerticalAlign = direction > 0 ? "top" : "bottom"; textAlign = "center"; } else if (isRadianAroundZero(rotationDiff - PI$3)) { textVerticalAlign = direction > 0 ? "bottom" : "top"; textAlign = "center"; } else { textVerticalAlign = "middle"; if (rotationDiff > 0 && rotationDiff < PI$3) { textAlign = direction > 0 ? "right" : "left"; } else { textAlign = direction > 0 ? "left" : "right"; } } return { rotation: rotationDiff, textAlign, textVerticalAlign }; }; AxisBuilder2.makeAxisEventDataBase = function(axisModel) { var eventData = { componentType: axisModel.mainType, componentIndex: axisModel.componentIndex }; eventData[axisModel.mainType + "Index"] = axisModel.componentIndex; return eventData; }; AxisBuilder2.isLabelSilent = function(axisModel) { var tooltipOpt = axisModel.get("tooltip"); return axisModel.get("silent") || !(axisModel.get("triggerEvent") || tooltipOpt && tooltipOpt.show); }; return AxisBuilder2; }(); var builders = { axisLine: function(opt, axisModel, group, transformGroup) { var shown = axisModel.get(["axisLine", "show"]); if (shown === "auto" && opt.handleAutoShown) { shown = opt.handleAutoShown("axisLine"); } if (!shown) { return; } var extent3 = axisModel.axis.getExtent(); var matrix2 = transformGroup.transform; var pt12 = [extent3[0], 0]; var pt22 = [extent3[1], 0]; if (matrix2) { applyTransform$1(pt12, pt12, matrix2); applyTransform$1(pt22, pt22, matrix2); } var lineStyle = extend({ lineCap: "round" }, axisModel.getModel(["axisLine", "lineStyle"]).getLineStyle()); var line = new Line$3({ subPixelOptimize: true, shape: { x1: pt12[0], y1: pt12[1], x2: pt22[0], y2: pt22[1] }, style: lineStyle, strokeContainThreshold: opt.strokeContainThreshold || 5, silent: true, z2: 1 }); line.anid = "line"; group.add(line); var arrows = axisModel.get(["axisLine", "symbol"]); if (arrows != null) { var arrowSize = axisModel.get(["axisLine", "symbolSize"]); if (typeof arrows === "string") { arrows = [arrows, arrows]; } if (typeof arrowSize === "string" || typeof arrowSize === "number") { arrowSize = [arrowSize, arrowSize]; } var arrowOffset = normalizeSymbolOffset(axisModel.get(["axisLine", "symbolOffset"]) || 0, arrowSize); var symbolWidth_1 = arrowSize[0]; var symbolHeight_1 = arrowSize[1]; each$g([{ rotate: opt.rotation + Math.PI / 2, offset: arrowOffset[0], r: 0 }, { rotate: opt.rotation - Math.PI / 2, offset: arrowOffset[1], r: Math.sqrt((pt12[0] - pt22[0]) * (pt12[0] - pt22[0]) + (pt12[1] - pt22[1]) * (pt12[1] - pt22[1])) }], function(point, index) { if (arrows[index] !== "none" && arrows[index] != null) { var symbol = createSymbol$1(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); var r = point.r + point.offset; symbol.attr({ rotation: point.rotate, x: pt12[0] + r * Math.cos(opt.rotation), y: pt12[1] - r * Math.sin(opt.rotation), silent: true, z2: 11 }); group.add(symbol); } }); } }, axisTickLabel: function(opt, axisModel, group, transformGroup) { var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt); var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt); fixMinMaxLabelShow(axisModel, labelEls, ticksEls); buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); if (axisModel.get(["axisLabel", "hideOverlap"])) { var labelList = prepareLayoutList(map$1(labelEls, function(label) { return { label, priority: label.z2, defaultAttr: { ignore: label.ignore } }; })); hideOverlap(labelList); } }, axisName: function(opt, axisModel, group, transformGroup) { var name = retrieve(opt.axisName, axisModel.get("name")); if (!name) { return; } var nameLocation = axisModel.get("nameLocation"); var nameDirection = opt.nameDirection; var textStyleModel = axisModel.getModel("nameTextStyle"); var gap = axisModel.get("nameGap") || 0; var extent3 = axisModel.axis.getExtent(); var gapSignal = extent3[0] > extent3[1] ? -1 : 1; var pos = [ nameLocation === "start" ? extent3[0] - gapSignal * gap : nameLocation === "end" ? extent3[1] + gapSignal * gap : (extent3[0] + extent3[1]) / 2, isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0 ]; var labelLayout2; var nameRotation = axisModel.get("nameRotate"); if (nameRotation != null) { nameRotation = nameRotation * PI$3 / 180; } var axisNameAvailableWidth; if (isNameLocationCenter(nameLocation)) { labelLayout2 = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection); } else { labelLayout2 = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent3); axisNameAvailableWidth = opt.axisNameAvailableWidth; if (axisNameAvailableWidth != null) { axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout2.rotation)); !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null); } } var textFont = textStyleModel.getFont(); var truncateOpt = axisModel.get("nameTruncate", true) || {}; var ellipsis = truncateOpt.ellipsis; var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); var textEl = new ZRText$1({ x: pos[0], y: pos[1], rotation: labelLayout2.rotation, silent: AxisBuilder.isLabelSilent(axisModel), style: createTextStyle$1(textStyleModel, { text: name, font: textFont, overflow: "truncate", width: maxWidth, ellipsis, fill: textStyleModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]), align: textStyleModel.get("align") || labelLayout2.textAlign, verticalAlign: textStyleModel.get("verticalAlign") || labelLayout2.textVerticalAlign }), z2: 1 }); setTooltipConfig({ el: textEl, componentModel: axisModel, itemName: name }); textEl.__fullText = name; textEl.anid = "name"; if (axisModel.get("triggerEvent")) { var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); eventData.targetType = "axisName"; eventData.name = name; getECData(textEl).eventData = eventData; } transformGroup.add(textEl); textEl.updateTransform(); group.add(textEl); textEl.decomposeTransform(); } }; function endTextLayout(rotation, textPosition, textRotate, extent3) { var rotationDiff = remRadian(textRotate - rotation); var textAlign; var textVerticalAlign; var inverse = extent3[0] > extent3[1]; var onLeft = textPosition === "start" && !inverse || textPosition !== "start" && inverse; if (isRadianAroundZero(rotationDiff - PI$3 / 2)) { textVerticalAlign = onLeft ? "bottom" : "top"; textAlign = "center"; } else if (isRadianAroundZero(rotationDiff - PI$3 * 1.5)) { textVerticalAlign = onLeft ? "top" : "bottom"; textAlign = "center"; } else { textVerticalAlign = "middle"; if (rotationDiff < PI$3 * 1.5 && rotationDiff > PI$3 / 2) { textAlign = onLeft ? "left" : "right"; } else { textAlign = onLeft ? "right" : "left"; } } return { rotation: rotationDiff, textAlign, textVerticalAlign }; } function fixMinMaxLabelShow(axisModel, labelEls, tickEls) { if (shouldShowAllLabels(axisModel.axis)) { return; } var showMinLabel = axisModel.get(["axisLabel", "showMinLabel"]); var showMaxLabel = axisModel.get(["axisLabel", "showMaxLabel"]); labelEls = labelEls || []; tickEls = tickEls || []; var firstLabel = labelEls[0]; var nextLabel = labelEls[1]; var lastLabel = labelEls[labelEls.length - 1]; var prevLabel = labelEls[labelEls.length - 2]; var firstTick = tickEls[0]; var nextTick2 = tickEls[1]; var lastTick = tickEls[tickEls.length - 1]; var prevTick = tickEls[tickEls.length - 2]; if (showMinLabel === false) { ignoreEl(firstLabel); ignoreEl(firstTick); } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) { if (showMinLabel) { ignoreEl(nextLabel); ignoreEl(nextTick2); } else { ignoreEl(firstLabel); ignoreEl(firstTick); } } if (showMaxLabel === false) { ignoreEl(lastLabel); ignoreEl(lastTick); } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) { if (showMaxLabel) { ignoreEl(prevLabel); ignoreEl(prevTick); } else { ignoreEl(lastLabel); ignoreEl(lastTick); } } } function ignoreEl(el) { el && (el.ignore = true); } function isTwoLabelOverlapped(current, next) { var firstRect = current && current.getBoundingRect().clone(); var nextRect = next && next.getBoundingRect().clone(); if (!firstRect || !nextRect) { return; } var mRotationBack = identity([]); rotate(mRotationBack, mRotationBack, -current.rotation); firstRect.applyTransform(mul([], mRotationBack, current.getLocalTransform())); nextRect.applyTransform(mul([], mRotationBack, next.getLocalTransform())); return firstRect.intersect(nextRect); } function isNameLocationCenter(nameLocation) { return nameLocation === "middle" || nameLocation === "center"; } function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) { var tickEls = []; var pt12 = []; var pt22 = []; for (var i = 0; i < ticksCoords.length; i++) { var tickCoord = ticksCoords[i].coord; pt12[0] = tickCoord; pt12[1] = 0; pt22[0] = tickCoord; pt22[1] = tickEndCoord; if (tickTransform) { applyTransform$1(pt12, pt12, tickTransform); applyTransform$1(pt22, pt22, tickTransform); } var tickEl = new Line$3({ subPixelOptimize: true, shape: { x1: pt12[0], y1: pt12[1], x2: pt22[0], y2: pt22[1] }, style: tickLineStyle, z2: 2, autoBatch: true, silent: true }); tickEl.anid = anidPrefix + "_" + ticksCoords[i].tickValue; tickEls.push(tickEl); } return tickEls; } function buildAxisMajorTicks(group, transformGroup, axisModel, opt) { var axis = axisModel.axis; var tickModel = axisModel.getModel("axisTick"); var shown = tickModel.get("show"); if (shown === "auto" && opt.handleAutoShown) { shown = opt.handleAutoShown("axisTick"); } if (!shown || axis.scale.isBlank()) { return; } var lineStyleModel = tickModel.getModel("lineStyle"); var tickEndCoord = opt.tickDirection * tickModel.get("length"); var ticksCoords = axis.getTicksCoords(); var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), { stroke: axisModel.get(["axisLine", "lineStyle", "color"]) }), "ticks"); for (var i = 0; i < ticksEls.length; i++) { group.add(ticksEls[i]); } return ticksEls; } function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) { var axis = axisModel.axis; var minorTickModel = axisModel.getModel("minorTick"); if (!minorTickModel.get("show") || axis.scale.isBlank()) { return; } var minorTicksCoords = axis.getMinorTicksCoords(); if (!minorTicksCoords.length) { return; } var lineStyleModel = minorTickModel.getModel("lineStyle"); var tickEndCoord = tickDirection * minorTickModel.get("length"); var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel("axisTick").getLineStyle(), { stroke: axisModel.get(["axisLine", "lineStyle", "color"]) })); for (var i = 0; i < minorTicksCoords.length; i++) { var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, "minorticks_" + i); for (var k = 0; k < minorTicksEls.length; k++) { group.add(minorTicksEls[k]); } } } function buildAxisLabel(group, transformGroup, axisModel, opt) { var axis = axisModel.axis; var show = retrieve(opt.axisLabelShow, axisModel.get(["axisLabel", "show"])); if (!show || axis.scale.isBlank()) { return; } var labelModel = axisModel.getModel("axisLabel"); var labelMargin = labelModel.get("margin"); var labels = axis.getViewLabels(); var labelRotation = (retrieve(opt.labelRotate, labelModel.get("rotate")) || 0) * PI$3 / 180; var labelLayout2 = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection); var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true); var labelEls = []; var silent = AxisBuilder.isLabelSilent(axisModel); var triggerEvent = axisModel.get("triggerEvent"); each$g(labels, function(labelItem, index) { var tickValue = axis.scale.type === "ordinal" ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; var formattedLabel = labelItem.formattedLabel; var rawLabel = labelItem.rawLabel; var itemLabelModel = labelModel; if (rawCategoryData && rawCategoryData[tickValue]) { var rawCategoryItem = rawCategoryData[tickValue]; if (isObject$3(rawCategoryItem) && rawCategoryItem.textStyle) { itemLabelModel = new Model$1(rawCategoryItem.textStyle, labelModel, axisModel.ecModel); } } var textColor = itemLabelModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]); var tickCoord = axis.dataToCoord(tickValue); var textEl = new ZRText$1({ x: tickCoord, y: opt.labelOffset + opt.labelDirection * labelMargin, rotation: labelLayout2.rotation, silent, z2: 10 + (labelItem.level || 0), style: createTextStyle$1(itemLabelModel, { text: formattedLabel, align: itemLabelModel.getShallow("align", true) || labelLayout2.textAlign, verticalAlign: itemLabelModel.getShallow("verticalAlign", true) || itemLabelModel.getShallow("baseline", true) || labelLayout2.textVerticalAlign, fill: typeof textColor === "function" ? textColor(axis.type === "category" ? rawLabel : axis.type === "value" ? tickValue + "" : tickValue, index) : textColor }) }); textEl.anid = "label_" + tickValue; if (triggerEvent) { var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); eventData.targetType = "axisLabel"; eventData.value = rawLabel; getECData(textEl).eventData = eventData; } transformGroup.add(textEl); textEl.updateTransform(); labelEls.push(textEl); group.add(textEl); textEl.decomposeTransform(); }); return labelEls; } var AxisBuilder$1 = AxisBuilder; function collect(ecModel, api) { var result = { axesInfo: {}, seriesInvolved: false, coordSysAxesInfo: {}, coordSysMap: {} }; collectAxesInfo(result, ecModel, api); result.seriesInvolved && collectSeriesInfo(result, ecModel); return result; } function collectAxesInfo(result, ecModel, api) { var globalTooltipModel = ecModel.getComponent("tooltip"); var globalAxisPointerModel = ecModel.getComponent("axisPointer"); var linksOption = globalAxisPointerModel.get("link", true) || []; var linkGroups = []; each$g(api.getCoordinateSystems(), function(coordSys) { if (!coordSys.axisPointerEnabled) { return; } var coordSysKey = makeKey(coordSys.model); var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {}; result.coordSysMap[coordSysKey] = coordSys; var coordSysModel = coordSys.model; var baseTooltipModel = coordSysModel.getModel("tooltip", globalTooltipModel); each$g(coordSys.getAxes(), curry$1(saveTooltipAxisInfo, false, null)); if (coordSys.getTooltipAxes && globalTooltipModel && baseTooltipModel.get("show")) { var triggerAxis = baseTooltipModel.get("trigger") === "axis"; var cross = baseTooltipModel.get(["axisPointer", "type"]) === "cross"; var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(["axisPointer", "axis"])); if (triggerAxis || cross) { each$g(tooltipAxes.baseAxes, curry$1(saveTooltipAxisInfo, cross ? "cross" : true, triggerAxis)); } if (cross) { each$g(tooltipAxes.otherAxes, curry$1(saveTooltipAxisInfo, "cross", false)); } } function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) { var axisPointerModel = axis.model.getModel("axisPointer", globalAxisPointerModel); var axisPointerShow = axisPointerModel.get("show"); if (!axisPointerShow || axisPointerShow === "auto" && !fromTooltip && !isHandleTrigger(axisPointerModel)) { return; } if (triggerTooltip == null) { triggerTooltip = axisPointerModel.get("triggerTooltip"); } axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel; var snap = axisPointerModel.get("snap"); var axisKey = makeKey(axis.model); var involveSeries = triggerTooltip || snap || axis.type === "category"; var axisInfo = result.axesInfo[axisKey] = { key: axisKey, axis, coordSys, axisPointerModel, triggerTooltip, involveSeries, snap, useHandle: isHandleTrigger(axisPointerModel), seriesModels: [], linkGroup: null }; axesInfoInCoordSys[axisKey] = axisInfo; result.seriesInvolved = result.seriesInvolved || involveSeries; var groupIndex = getLinkGroupIndex(linksOption, axis); if (groupIndex != null) { var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = { axesInfo: {} }); linkGroup.axesInfo[axisKey] = axisInfo; linkGroup.mapper = linksOption[groupIndex].mapper; axisInfo.linkGroup = linkGroup; } } }); } function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) { var tooltipAxisPointerModel = baseTooltipModel.getModel("axisPointer"); var fields = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"]; var volatileOption = {}; each$g(fields, function(field) { volatileOption[field] = clone$4(tooltipAxisPointerModel.get(field)); }); volatileOption.snap = axis.type !== "category" && !!triggerTooltip; if (tooltipAxisPointerModel.get("type") === "cross") { volatileOption.type = "line"; } var labelOption = volatileOption.label || (volatileOption.label = {}); labelOption.show == null && (labelOption.show = false); if (fromTooltip === "cross") { var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(["label", "show"]); labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; if (!triggerTooltip) { var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get("crossStyle"); crossStyle && defaults(labelOption, crossStyle.textStyle); } } return axis.model.getModel("axisPointer", new Model$1(volatileOption, globalAxisPointerModel, ecModel)); } function collectSeriesInfo(result, ecModel) { ecModel.eachSeries(function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var seriesTooltipTrigger = seriesModel.get(["tooltip", "trigger"], true); var seriesTooltipShow = seriesModel.get(["tooltip", "show"], true); if (!coordSys || seriesTooltipTrigger === "none" || seriesTooltipTrigger === false || seriesTooltipTrigger === "item" || seriesTooltipShow === false || seriesModel.get(["axisPointer", "show"], true) === false) { return; } each$g(result.coordSysAxesInfo[makeKey(coordSys.model)], function(axisInfo) { var axis = axisInfo.axis; if (coordSys.getAxis(axis.dim) === axis) { axisInfo.seriesModels.push(seriesModel); axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0); axisInfo.seriesDataCount += seriesModel.getData().count(); } }); }); } function getLinkGroupIndex(linksOption, axis) { var axisModel = axis.model; var dim = axis.dim; for (var i = 0; i < linksOption.length; i++) { var linkOption = linksOption[i] || {}; if (checkPropInLink(linkOption[dim + "AxisId"], axisModel.id) || checkPropInLink(linkOption[dim + "AxisIndex"], axisModel.componentIndex) || checkPropInLink(linkOption[dim + "AxisName"], axisModel.name)) { return i; } } } function checkPropInLink(linkPropValue, axisPropValue) { return linkPropValue === "all" || isArray$1(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue; } function fixValue(axisModel) { var axisInfo = getAxisInfo$1(axisModel); if (!axisInfo) { return; } var axisPointerModel = axisInfo.axisPointerModel; var scale2 = axisInfo.axis.scale; var option = axisPointerModel.option; var status = axisPointerModel.get("status"); var value = axisPointerModel.get("value"); if (value != null) { value = scale2.parse(value); } var useHandle = isHandleTrigger(axisPointerModel); if (status == null) { option.status = useHandle ? "show" : "hide"; } var extent3 = scale2.getExtent().slice(); extent3[0] > extent3[1] && extent3.reverse(); if (value == null || value > extent3[1]) { value = extent3[1]; } if (value < extent3[0]) { value = extent3[0]; } option.value = value; if (useHandle) { option.status = axisInfo.axis.scale.isBlank() ? "hide" : "show"; } } function getAxisInfo$1(axisModel) { var coordSysAxesInfo = (axisModel.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]; } function getAxisPointerModel(axisModel) { var axisInfo = getAxisInfo$1(axisModel); return axisInfo && axisInfo.axisPointerModel; } function isHandleTrigger(axisPointerModel) { return !!axisPointerModel.get(["handle", "show"]); } function makeKey(model) { return model.type + "||" + model.id; } var axisPointerClazz = {}; var AxisView = function(_super) { __extends$1(AxisView2, _super); function AxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = AxisView2.type; return _this; } AxisView2.prototype.render = function(axisModel, ecModel, api, payload) { this.axisPointerClass && fixValue(axisModel); _super.prototype.render.apply(this, arguments); this._doUpdateAxisPointerClass(axisModel, api, true); }; AxisView2.prototype.updateAxisPointer = function(axisModel, ecModel, api, payload) { this._doUpdateAxisPointerClass(axisModel, api, false); }; AxisView2.prototype.remove = function(ecModel, api) { var axisPointer = this._axisPointer; axisPointer && axisPointer.remove(api); }; AxisView2.prototype.dispose = function(ecModel, api) { this._disposeAxisPointer(api); _super.prototype.dispose.apply(this, arguments); }; AxisView2.prototype._doUpdateAxisPointerClass = function(axisModel, api, forceRender) { var Clazz = AxisView2.getAxisPointerClass(this.axisPointerClass); if (!Clazz) { return; } var axisPointerModel = getAxisPointerModel(axisModel); axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api); }; AxisView2.prototype._disposeAxisPointer = function(api) { this._axisPointer && this._axisPointer.dispose(api); this._axisPointer = null; }; AxisView2.registerAxisPointerClass = function(type, clazz) { axisPointerClazz[type] = clazz; }; AxisView2.getAxisPointerClass = function(type) { return type && axisPointerClazz[type]; }; AxisView2.type = "axis"; return AxisView2; }(ComponentView$1); var AxisView$1 = AxisView; var inner$f = makeInner(); function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) { var axis = axisModel.axis; if (axis.scale.isBlank()) { return; } var splitAreaModel = axisModel.getModel("splitArea"); var areaStyleModel = splitAreaModel.getModel("areaStyle"); var areaColors = areaStyleModel.get("color"); var gridRect = gridModel.coordinateSystem.getRect(); var ticksCoords = axis.getTicksCoords({ tickModel: splitAreaModel, clamp: true }); if (!ticksCoords.length) { return; } var areaColorsLen = areaColors.length; var lastSplitAreaColors = inner$f(axisView).splitAreaColors; var newSplitAreaColors = createHashMap(); var colorIndex = 0; if (lastSplitAreaColors) { for (var i = 0; i < ticksCoords.length; i++) { var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue); if (cIndex != null) { colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen; break; } } } var prev = axis.toGlobalCoord(ticksCoords[0].coord); var areaStyle = areaStyleModel.getAreaStyle(); areaColors = isArray$1(areaColors) ? areaColors : [areaColors]; for (var i = 1; i < ticksCoords.length; i++) { var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); var x = void 0; var y = void 0; var width = void 0; var height = void 0; if (axis.isHorizontal()) { x = prev; y = gridRect.y; width = tickCoord - x; height = gridRect.height; prev = x + width; } else { x = gridRect.x; y = prev; width = gridRect.width; height = tickCoord - y; prev = y + height; } var tickValue = ticksCoords[i - 1].tickValue; tickValue != null && newSplitAreaColors.set(tickValue, colorIndex); axisGroup.add(new Rect$3({ anid: tickValue != null ? "area_" + tickValue : null, shape: { x, y, width, height }, style: defaults({ fill: areaColors[colorIndex] }, areaStyle), autoBatch: true, silent: true })); colorIndex = (colorIndex + 1) % areaColorsLen; } inner$f(axisView).splitAreaColors = newSplitAreaColors; } function rectCoordAxisHandleRemove(axisView) { inner$f(axisView).splitAreaColors = null; } var axisBuilderAttrs$3 = ["axisLine", "axisTickLabel", "axisName"]; var selfBuilderAttrs$2 = ["splitArea", "splitLine", "minorSplitLine"]; var CartesianAxisView = function(_super) { __extends$1(CartesianAxisView2, _super); function CartesianAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CartesianAxisView2.type; _this.axisPointerClass = "CartesianAxisPointer"; return _this; } CartesianAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { this.group.removeAll(); var oldAxisGroup = this._axisGroup; this._axisGroup = new Group$4(); this.group.add(this._axisGroup); if (!axisModel.get("show")) { return; } var gridModel = axisModel.getCoordSysModel(); var layout2 = layout$2(gridModel, axisModel); var axisBuilder = new AxisBuilder$1(axisModel, extend({ handleAutoShown: function(elementType) { var cartesians = gridModel.coordinateSystem.getCartesians(); for (var i = 0; i < cartesians.length; i++) { var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type; if (otherAxisType === "value" || otherAxisType === "log") { return true; } } return false; } }, layout2)); each$g(axisBuilderAttrs$3, axisBuilder.add, axisBuilder); this._axisGroup.add(axisBuilder.getGroup()); each$g(selfBuilderAttrs$2, function(name) { if (axisModel.get([name, "show"])) { axisElementBuilders$2[name](this, this._axisGroup, axisModel, gridModel); } }, this); var isInitialSortFromBarRacing = payload && payload.type === "changeAxisOrder" && payload.isInitSort; if (!isInitialSortFromBarRacing) { groupTransition(oldAxisGroup, this._axisGroup, axisModel); } _super.prototype.render.call(this, axisModel, ecModel, api, payload); }; CartesianAxisView2.prototype.remove = function() { rectCoordAxisHandleRemove(this); }; CartesianAxisView2.type = "cartesianAxis"; return CartesianAxisView2; }(AxisView$1); var axisElementBuilders$2 = { splitLine: function(axisView, axisGroup, axisModel, gridModel) { var axis = axisModel.axis; if (axis.scale.isBlank()) { return; } var splitLineModel = axisModel.getModel("splitLine"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var lineColors = lineStyleModel.get("color"); lineColors = isArray$1(lineColors) ? lineColors : [lineColors]; var gridRect = gridModel.coordinateSystem.getRect(); var isHorizontal = axis.isHorizontal(); var lineCount = 0; var ticksCoords = axis.getTicksCoords({ tickModel: splitLineModel }); var p1 = []; var p2 = []; var lineStyle = lineStyleModel.getLineStyle(); for (var i = 0; i < ticksCoords.length; i++) { var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); if (isHorizontal) { p1[0] = tickCoord; p1[1] = gridRect.y; p2[0] = tickCoord; p2[1] = gridRect.y + gridRect.height; } else { p1[0] = gridRect.x; p1[1] = tickCoord; p2[0] = gridRect.x + gridRect.width; p2[1] = tickCoord; } var colorIndex = lineCount++ % lineColors.length; var tickValue = ticksCoords[i].tickValue; axisGroup.add(new Line$3({ anid: tickValue != null ? "line_" + ticksCoords[i].tickValue : null, subPixelOptimize: true, autoBatch: true, shape: { x1: p1[0], y1: p1[1], x2: p2[0], y2: p2[1] }, style: defaults({ stroke: lineColors[colorIndex] }, lineStyle), silent: true })); } }, minorSplitLine: function(axisView, axisGroup, axisModel, gridModel) { var axis = axisModel.axis; var minorSplitLineModel = axisModel.getModel("minorSplitLine"); var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); var gridRect = gridModel.coordinateSystem.getRect(); var isHorizontal = axis.isHorizontal(); var minorTicksCoords = axis.getMinorTicksCoords(); if (!minorTicksCoords.length) { return; } var p1 = []; var p2 = []; var lineStyle = lineStyleModel.getLineStyle(); for (var i = 0; i < minorTicksCoords.length; i++) { for (var k = 0; k < minorTicksCoords[i].length; k++) { var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord); if (isHorizontal) { p1[0] = tickCoord; p1[1] = gridRect.y; p2[0] = tickCoord; p2[1] = gridRect.y + gridRect.height; } else { p1[0] = gridRect.x; p1[1] = tickCoord; p2[0] = gridRect.x + gridRect.width; p2[1] = tickCoord; } axisGroup.add(new Line$3({ anid: "minor_line_" + minorTicksCoords[i][k].tickValue, subPixelOptimize: true, autoBatch: true, shape: { x1: p1[0], y1: p1[1], x2: p2[0], y2: p2[1] }, style: lineStyle, silent: true })); } } }, splitArea: function(axisView, axisGroup, axisModel, gridModel) { rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel); } }; var CartesianXAxisView = function(_super) { __extends$1(CartesianXAxisView2, _super); function CartesianXAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CartesianXAxisView2.type; return _this; } CartesianXAxisView2.type = "xAxis"; return CartesianXAxisView2; }(CartesianAxisView); var CartesianYAxisView = function(_super) { __extends$1(CartesianYAxisView2, _super); function CartesianYAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CartesianXAxisView.type; return _this; } CartesianYAxisView2.type = "yAxis"; return CartesianYAxisView2; }(CartesianAxisView); var GridView = function(_super) { __extends$1(GridView2, _super); function GridView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "grid"; return _this; } GridView2.prototype.render = function(gridModel, ecModel) { this.group.removeAll(); if (gridModel.get("show")) { this.group.add(new Rect$3({ shape: gridModel.coordinateSystem.getRect(), style: defaults({ fill: gridModel.get("backgroundColor") }, gridModel.getItemStyle()), silent: true, z2: -1 })); } }; GridView2.type = "grid"; return GridView2; }(ComponentView$1); var extraOption = { offset: 0 }; function install$N(registers) { registers.registerComponentView(GridView); registers.registerComponentModel(GridModel$1); registers.registerCoordinateSystem("cartesian2d", Grid$1); axisModelCreator(registers, "x", CartesianAxisModel, extraOption); axisModelCreator(registers, "y", CartesianAxisModel, extraOption); registers.registerComponentView(CartesianXAxisView); registers.registerComponentView(CartesianYAxisView); registers.registerPreprocessor(function(option) { if (option.xAxis && option.yAxis && !option.grid) { option.grid = {}; } }); } function install$M(registers) { use(install$N); registers.registerSeriesModel(ScatterSeriesModel$1); registers.registerChartView(ScatterView$1); registers.registerLayout(pointsLayout("scatter")); } function radarLayout(ecModel) { ecModel.eachSeriesByType("radar", function(seriesModel) { var data = seriesModel.getData(); var points2 = []; var coordSys = seriesModel.coordinateSystem; if (!coordSys) { return; } var axes = coordSys.getIndicatorAxes(); each$g(axes, function(axis, axisIndex) { data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) { points2[dataIndex] = points2[dataIndex] || []; var point = coordSys.dataToPoint(val, axisIndex); points2[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys); }); }); data.each(function(idx) { var firstPoint = find(points2[idx], function(point) { return isValidPoint(point); }) || getValueMissingPoint(coordSys); points2[idx].push(firstPoint.slice()); data.setItemLayout(idx, points2[idx]); }); }); } function isValidPoint(point) { return !isNaN(point[0]) && !isNaN(point[1]); } function getValueMissingPoint(coordSys) { return [coordSys.cx, coordSys.cy]; } function radarBackwardCompat(option) { var polarOptArr = option.polar; if (polarOptArr) { if (!isArray$1(polarOptArr)) { polarOptArr = [polarOptArr]; } var polarNotRadar_1 = []; each$g(polarOptArr, function(polarOpt, idx) { if (polarOpt.indicator) { if (polarOpt.type && !polarOpt.shape) { polarOpt.shape = polarOpt.type; } option.radar = option.radar || []; if (!isArray$1(option.radar)) { option.radar = [option.radar]; } option.radar.push(polarOpt); } else { polarNotRadar_1.push(polarOpt); } }); option.polar = polarNotRadar_1; } each$g(option.series, function(seriesOpt) { if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) { seriesOpt.radarIndex = seriesOpt.polarIndex; } }); } var RadarView$2 = function(_super) { __extends$1(RadarView2, _super); function RadarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadarView2.type; return _this; } RadarView2.prototype.render = function(seriesModel, ecModel, api) { var polar = seriesModel.coordinateSystem; var group = this.group; var data = seriesModel.getData(); var oldData = this._data; function createSymbol2(data2, idx) { var symbolType = data2.getItemVisual(idx, "symbol") || "circle"; if (symbolType === "none") { return; } var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, "symbolSize")); var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2); var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0; symbolPath.attr({ style: { strokeNoScale: true }, z2: 100, scaleX: symbolSize[0] / 2, scaleY: symbolSize[1] / 2, rotation: symbolRotate * Math.PI / 180 || 0 }); return symbolPath; } function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) { symbolGroup.removeAll(); for (var i = 0; i < newPoints.length - 1; i++) { var symbolPath = createSymbol2(data2, idx); if (symbolPath) { symbolPath.__dimIdx = i; if (oldPoints[i]) { symbolPath.setPosition(oldPoints[i]); graphic$1[isInit ? "initProps" : "updateProps"](symbolPath, { x: newPoints[i][0], y: newPoints[i][1] }, seriesModel, idx); } else { symbolPath.setPosition(newPoints[i]); } symbolGroup.add(symbolPath); } } } function getInitialPoints(points2) { return map$1(points2, function(pt) { return [polar.cx, polar.cy]; }); } data.diff(oldData).add(function(idx) { var points2 = data.getItemLayout(idx); if (!points2) { return; } var polygon = new Polygon$1(); var polyline = new Polyline$3(); var target = { shape: { points: points2 } }; polygon.shape.points = getInitialPoints(points2); polyline.shape.points = getInitialPoints(points2); initProps(polygon, target, seriesModel, idx); initProps(polyline, target, seriesModel, idx); var itemGroup = new Group$4(); var symbolGroup = new Group$4(); itemGroup.add(polyline); itemGroup.add(polygon); itemGroup.add(symbolGroup); updateSymbols(polyline.shape.points, points2, symbolGroup, data, idx, true); data.setItemGraphicEl(idx, itemGroup); }).update(function(newIdx, oldIdx) { var itemGroup = oldData.getItemGraphicEl(oldIdx); var polyline = itemGroup.childAt(0); var polygon = itemGroup.childAt(1); var symbolGroup = itemGroup.childAt(2); var target = { shape: { points: data.getItemLayout(newIdx) } }; if (!target.shape.points) { return; } updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false); saveOldStyle(polygon); saveOldStyle(polyline); updateProps$1(polyline, target, seriesModel); updateProps$1(polygon, target, seriesModel); data.setItemGraphicEl(newIdx, itemGroup); }).remove(function(idx) { group.remove(oldData.getItemGraphicEl(idx)); }).execute(); data.eachItemGraphicEl(function(itemGroup, idx) { var itemModel = data.getItemModel(idx); var polyline = itemGroup.childAt(0); var polygon = itemGroup.childAt(1); var symbolGroup = itemGroup.childAt(2); var itemStyle = data.getItemVisual(idx, "style"); var color2 = itemStyle.fill; group.add(itemGroup); polyline.useStyle(defaults(itemModel.getModel("lineStyle").getLineStyle(), { fill: "none", stroke: color2 })); setStatesStylesFromModel(polyline, itemModel, "lineStyle"); setStatesStylesFromModel(polygon, itemModel, "areaStyle"); var areaStyleModel = itemModel.getModel("areaStyle"); var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty(); polygon.ignore = polygonIgnore; each$g(["emphasis", "select", "blur"], function(stateName) { var stateModel = itemModel.getModel([stateName, "areaStyle"]); var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty(); polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore; }); polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { fill: color2, opacity: 0.7, decal: itemStyle.decal })); var emphasisModel = itemModel.getModel("emphasis"); var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle(); symbolGroup.eachChild(function(symbolPath) { if (symbolPath instanceof ZRImage$1) { var pathStyle = symbolPath.style; symbolPath.useStyle(extend({ image: pathStyle.image, x: pathStyle.x, y: pathStyle.y, width: pathStyle.width, height: pathStyle.height }, itemStyle)); } else { symbolPath.useStyle(itemStyle); symbolPath.setColor(color2); symbolPath.style.strokeNoScale = true; } var pathEmphasisState = symbolPath.ensureState("emphasis"); pathEmphasisState.style = clone$4(itemHoverStyle); var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx); (defaultText == null || isNaN(defaultText)) && (defaultText = ""); setLabelStyle(symbolPath, getLabelStatesModels(itemModel), { labelFetcher: data.hostModel, labelDataIndex: idx, labelDimIndex: symbolPath.__dimIdx, defaultText, inheritColor: color2, defaultOpacity: itemStyle.opacity }); }); enableHoverEmphasis(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope")); }); this._data = data; }; RadarView2.prototype.remove = function() { this.group.removeAll(); this._data = null; }; RadarView2.type = "radar"; return RadarView2; }(ChartView$1); var RadarView$3 = RadarView$2; var RadarSeriesModel = function(_super) { __extends$1(RadarSeriesModel2, _super); function RadarSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadarSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } RadarSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); this.legendVisualProvider = new LegendVisualProvider$1(bind$2(this.getData, this), bind$2(this.getRawData, this)); }; RadarSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesDataSimply(this, { generateCoord: "indicator_", generateCoordCount: Infinity }); }; RadarSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var coordSys = this.coordinateSystem; var indicatorAxes = coordSys.getIndicatorAxes(); var name = this.getData().getName(dataIndex); var nameToDisplay = name === "" ? this.name : name; var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex); return createTooltipMarkup("section", { header: nameToDisplay, sortBlocks: true, blocks: map$1(indicatorAxes, function(axis) { var val = data.get(data.mapDimension(axis.dim), dataIndex); return createTooltipMarkup("nameValue", { markerType: "subItem", markerColor, name: axis.name, value: val, sortParam: val }); }) }); }; RadarSeriesModel2.prototype.getTooltipPosition = function(dataIndex) { if (dataIndex != null) { var data_1 = this.getData(); var coordSys = this.coordinateSystem; var values = data_1.getValues(map$1(coordSys.dimensions, function(dim) { return data_1.mapDimension(dim); }), dataIndex); for (var i = 0, len2 = values.length; i < len2; i++) { if (!isNaN(values[i])) { var indicatorAxes = coordSys.getIndicatorAxes(); return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i); } } } }; RadarSeriesModel2.type = "series.radar"; RadarSeriesModel2.dependencies = ["radar"]; RadarSeriesModel2.defaultOption = { zlevel: 0, z: 2, colorBy: "data", coordinateSystem: "radar", legendHoverLink: true, radarIndex: 0, lineStyle: { width: 2, type: "solid", join: "round" }, label: { position: "top" }, symbolSize: 8 }; return RadarSeriesModel2; }(SeriesModel$1); var RadarSeriesModel$1 = RadarSeriesModel; var valueAxisDefault = axisDefault.value; function defaultsShow(opt, show) { return defaults({ show }, opt); } var RadarModel = function(_super) { __extends$1(RadarModel2, _super); function RadarModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadarModel2.type; return _this; } RadarModel2.prototype.optionUpdated = function() { var boundaryGap = this.get("boundaryGap"); var splitNumber = this.get("splitNumber"); var scale2 = this.get("scale"); var axisLine = this.get("axisLine"); var axisTick = this.get("axisTick"); var axisLabel = this.get("axisLabel"); var nameTextStyle = this.get("axisName"); var showName = this.get(["axisName", "show"]); var nameFormatter = this.get(["axisName", "formatter"]); var nameGap = this.get("axisNameGap"); var triggerEvent = this.get("triggerEvent"); var indicatorModels = map$1(this.get("indicator") || [], function(indicatorOpt) { if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) { indicatorOpt.min = 0; } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) { indicatorOpt.max = 0; } var iNameTextStyle = nameTextStyle; if (indicatorOpt.color != null) { iNameTextStyle = defaults({ color: indicatorOpt.color }, nameTextStyle); } var innerIndicatorOpt = merge(clone$4(indicatorOpt), { boundaryGap, splitNumber, scale: scale2, axisLine, axisTick, axisLabel, name: indicatorOpt.text, nameLocation: "end", nameGap, nameTextStyle: iNameTextStyle, triggerEvent }, false); if (!showName) { innerIndicatorOpt.name = ""; } if (typeof nameFormatter === "string") { var indName = innerIndicatorOpt.name; innerIndicatorOpt.name = nameFormatter.replace("{value}", indName != null ? indName : ""); } else if (typeof nameFormatter === "function") { innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt); } var model = new Model$1(innerIndicatorOpt, null, this.ecModel); mixin(model, AxisModelCommonMixin.prototype); model.mainType = "radar"; model.componentIndex = this.componentIndex; return model; }, this); this._indicatorModels = indicatorModels; }; RadarModel2.prototype.getIndicatorModels = function() { return this._indicatorModels; }; RadarModel2.type = "radar"; RadarModel2.defaultOption = { zlevel: 0, z: 0, center: ["50%", "50%"], radius: "75%", startAngle: 90, axisName: { show: true }, boundaryGap: [0, 0], splitNumber: 5, axisNameGap: 15, scale: false, shape: "polygon", axisLine: merge({ lineStyle: { color: "#bbb" } }, valueAxisDefault.axisLine), axisLabel: defaultsShow(valueAxisDefault.axisLabel, false), axisTick: defaultsShow(valueAxisDefault.axisTick, false), splitLine: defaultsShow(valueAxisDefault.splitLine, true), splitArea: defaultsShow(valueAxisDefault.splitArea, true), indicator: [] }; return RadarModel2; }(ComponentModel$1); var RadarModel$1 = RadarModel; var axisBuilderAttrs$2 = ["axisLine", "axisTickLabel", "axisName"]; var RadarView = function(_super) { __extends$1(RadarView2, _super); function RadarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadarView2.type; return _this; } RadarView2.prototype.render = function(radarModel, ecModel, api) { var group = this.group; group.removeAll(); this._buildAxes(radarModel); this._buildSplitLineAndArea(radarModel); }; RadarView2.prototype._buildAxes = function(radarModel) { var radar = radarModel.coordinateSystem; var indicatorAxes = radar.getIndicatorAxes(); var axisBuilders = map$1(indicatorAxes, function(indicatorAxis) { var axisBuilder = new AxisBuilder$1(indicatorAxis.model, { position: [radar.cx, radar.cy], rotation: indicatorAxis.angle, labelDirection: -1, tickDirection: -1, nameDirection: 1 }); return axisBuilder; }); each$g(axisBuilders, function(axisBuilder) { each$g(axisBuilderAttrs$2, axisBuilder.add, axisBuilder); this.group.add(axisBuilder.getGroup()); }, this); }; RadarView2.prototype._buildSplitLineAndArea = function(radarModel) { var radar = radarModel.coordinateSystem; var indicatorAxes = radar.getIndicatorAxes(); if (!indicatorAxes.length) { return; } var shape = radarModel.get("shape"); var splitLineModel = radarModel.getModel("splitLine"); var splitAreaModel = radarModel.getModel("splitArea"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var areaStyleModel = splitAreaModel.getModel("areaStyle"); var showSplitLine = splitLineModel.get("show"); var showSplitArea = splitAreaModel.get("show"); var splitLineColors = lineStyleModel.get("color"); var splitAreaColors = areaStyleModel.get("color"); var splitLineColorsArr = isArray$1(splitLineColors) ? splitLineColors : [splitLineColors]; var splitAreaColorsArr = isArray$1(splitAreaColors) ? splitAreaColors : [splitAreaColors]; var splitLines = []; var splitAreas = []; function getColorIndex(areaOrLine, areaOrLineColorList, idx) { var colorIndex2 = idx % areaOrLineColorList.length; areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || []; return colorIndex2; } if (shape === "circle") { var ticksRadius = indicatorAxes[0].getTicksCoords(); var cx = radar.cx; var cy = radar.cy; for (var i = 0; i < ticksRadius.length; i++) { if (showSplitLine) { var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); splitLines[colorIndex].push(new Circle$1({ shape: { cx, cy, r: ticksRadius[i].coord } })); } if (showSplitArea && i < ticksRadius.length - 1) { var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i); splitAreas[colorIndex].push(new Ring$1({ shape: { cx, cy, r0: ticksRadius[i].coord, r: ticksRadius[i + 1].coord } })); } } } else { var realSplitNumber_1; var axesTicksPoints = map$1(indicatorAxes, function(indicatorAxis, idx) { var ticksCoords = indicatorAxis.getTicksCoords(); realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1); return map$1(ticksCoords, function(tickCoord) { return radar.coordToPoint(tickCoord.coord, idx); }); }); var prevPoints = []; for (var i = 0; i <= realSplitNumber_1; i++) { var points2 = []; for (var j = 0; j < indicatorAxes.length; j++) { points2.push(axesTicksPoints[j][i]); } if (points2[0]) { points2.push(points2[0].slice()); } if (showSplitLine) { var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); splitLines[colorIndex].push(new Polyline$3({ shape: { points: points2 } })); } if (showSplitArea && prevPoints) { var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1); splitAreas[colorIndex].push(new Polygon$1({ shape: { points: points2.concat(prevPoints) } })); } prevPoints = points2.slice().reverse(); } } var lineStyle = lineStyleModel.getLineStyle(); var areaStyle = areaStyleModel.getAreaStyle(); each$g(splitAreas, function(splitAreas2, idx) { this.group.add(mergePath(splitAreas2, { style: defaults({ stroke: "none", fill: splitAreaColorsArr[idx % splitAreaColorsArr.length] }, areaStyle), silent: true })); }, this); each$g(splitLines, function(splitLines2, idx) { this.group.add(mergePath(splitLines2, { style: defaults({ fill: "none", stroke: splitLineColorsArr[idx % splitLineColorsArr.length] }, lineStyle), silent: true })); }, this); }; RadarView2.type = "radar"; return RadarView2; }(ComponentView$1); var RadarView$1 = RadarView; var IndicatorAxis = function(_super) { __extends$1(IndicatorAxis2, _super); function IndicatorAxis2(dim, scale2, radiusExtent) { var _this = _super.call(this, dim, scale2, radiusExtent) || this; _this.type = "value"; _this.angle = 0; _this.name = ""; return _this; } return IndicatorAxis2; }(Axis$1); var IndicatorAxis$1 = IndicatorAxis; var Radar = function() { function Radar2(radarModel, ecModel, api) { this.dimensions = []; this._model = radarModel; this._indicatorAxes = map$1(radarModel.getIndicatorModels(), function(indicatorModel, idx) { var dim = "indicator_" + idx; var indicatorAxis = new IndicatorAxis$1(dim, new IntervalScale$1()); indicatorAxis.name = indicatorModel.get("name"); indicatorAxis.model = indicatorModel; indicatorModel.axis = indicatorAxis; this.dimensions.push(dim); return indicatorAxis; }, this); this.resize(radarModel, api); } Radar2.prototype.getIndicatorAxes = function() { return this._indicatorAxes; }; Radar2.prototype.dataToPoint = function(value, indicatorIndex) { var indicatorAxis = this._indicatorAxes[indicatorIndex]; return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex); }; Radar2.prototype.coordToPoint = function(coord, indicatorIndex) { var indicatorAxis = this._indicatorAxes[indicatorIndex]; var angle = indicatorAxis.angle; var x = this.cx + coord * Math.cos(angle); var y = this.cy - coord * Math.sin(angle); return [x, y]; }; Radar2.prototype.pointToData = function(pt) { var dx = pt[0] - this.cx; var dy = pt[1] - this.cy; var radius = Math.sqrt(dx * dx + dy * dy); dx /= radius; dy /= radius; var radian = Math.atan2(-dy, dx); var minRadianDiff = Infinity; var closestAxis; var closestAxisIdx = -1; for (var i = 0; i < this._indicatorAxes.length; i++) { var indicatorAxis = this._indicatorAxes[i]; var diff2 = Math.abs(radian - indicatorAxis.angle); if (diff2 < minRadianDiff) { closestAxis = indicatorAxis; closestAxisIdx = i; minRadianDiff = diff2; } } return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]; }; Radar2.prototype.resize = function(radarModel, api) { var center2 = radarModel.get("center"); var viewWidth = api.getWidth(); var viewHeight = api.getHeight(); var viewSize = Math.min(viewWidth, viewHeight) / 2; this.cx = parsePercent$1(center2[0], viewWidth); this.cy = parsePercent$1(center2[1], viewHeight); this.startAngle = radarModel.get("startAngle") * Math.PI / 180; var radius = radarModel.get("radius"); if (typeof radius === "string" || typeof radius === "number") { radius = [0, radius]; } this.r0 = parsePercent$1(radius[0], viewSize); this.r = parsePercent$1(radius[1], viewSize); each$g(this._indicatorAxes, function(indicatorAxis, idx) { indicatorAxis.setExtent(this.r0, this.r); var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; angle = Math.atan2(Math.sin(angle), Math.cos(angle)); indicatorAxis.angle = angle; }, this); }; Radar2.prototype.update = function(ecModel, api) { var indicatorAxes = this._indicatorAxes; var radarModel = this._model; each$g(indicatorAxes, function(indicatorAxis) { indicatorAxis.scale.setExtent(Infinity, -Infinity); }); ecModel.eachSeriesByType("radar", function(radarSeries, idx) { if (radarSeries.get("coordinateSystem") !== "radar" || ecModel.getComponent("radar", radarSeries.get("radarIndex")) !== radarModel) { return; } var data = radarSeries.getData(); each$g(indicatorAxes, function(indicatorAxis) { indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim)); }); }, this); var splitNumber = radarModel.get("splitNumber"); function increaseInterval(interval) { var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); var f = interval / exp10; if (f === 2) { f = 5; } else { f *= 2; } return f * exp10; } each$g(indicatorAxes, function(indicatorAxis, idx) { var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent; niceScaleExtent(indicatorAxis.scale, indicatorAxis.model); var axisModel = indicatorAxis.model; var scale2 = indicatorAxis.scale; var fixedMin = parseAxisModelMinMax(scale2, axisModel.get("min", true)); var fixedMax = parseAxisModelMinMax(scale2, axisModel.get("max", true)); var interval = scale2.getInterval(); if (fixedMin != null && fixedMax != null) { scale2.setExtent(+fixedMin, +fixedMax); scale2.setInterval((fixedMax - fixedMin) / splitNumber); } else if (fixedMin != null) { var max3 = void 0; do { max3 = fixedMin + interval * splitNumber; scale2.setExtent(+fixedMin, max3); scale2.setInterval(interval); interval = increaseInterval(interval); } while (max3 < rawExtent[1] && isFinite(max3) && isFinite(rawExtent[1])); } else if (fixedMax != null) { var min3 = void 0; do { min3 = fixedMax - interval * splitNumber; scale2.setExtent(min3, +fixedMax); scale2.setInterval(interval); interval = increaseInterval(interval); } while (min3 > rawExtent[0] && isFinite(min3) && isFinite(rawExtent[0])); } else { var nicedSplitNumber = scale2.getTicks().length - 1; if (nicedSplitNumber > splitNumber) { interval = increaseInterval(interval); } var max3 = Math.ceil(rawExtent[1] / interval) * interval; var min3 = round$2(max3 - interval * splitNumber); scale2.setExtent(min3, max3); scale2.setInterval(interval); } }); }; Radar2.prototype.convertToPixel = function(ecModel, finder, value) { console.warn("Not implemented."); return null; }; Radar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { console.warn("Not implemented."); return null; }; Radar2.prototype.containPoint = function(point) { console.warn("Not implemented."); return false; }; Radar2.create = function(ecModel, api) { var radarList = []; ecModel.eachComponent("radar", function(radarModel) { var radar = new Radar2(radarModel, ecModel, api); radarList.push(radar); radarModel.coordinateSystem = radar; }); ecModel.eachSeriesByType("radar", function(radarSeries) { if (radarSeries.get("coordinateSystem") === "radar") { radarSeries.coordinateSystem = radarList[radarSeries.get("radarIndex") || 0]; } }); return radarList; }; Radar2.dimensions = []; return Radar2; }(); var Radar$1 = Radar; function install$L(registers) { registers.registerCoordinateSystem("radar", Radar$1); registers.registerComponentModel(RadarModel$1); registers.registerComponentView(RadarView$1); registers.registerVisual({ seriesType: "radar", reset: function(seriesModel) { var data = seriesModel.getData(); data.each(function(idx) { data.setItemVisual(idx, "legendIcon", "roundRect"); }); data.setVisual("legendIcon", "roundRect"); } }); } function install$K(registers) { use(install$L); registers.registerChartView(RadarView$3); registers.registerSeriesModel(RadarSeriesModel$1); registers.registerLayout(radarLayout); registers.registerProcessor(dataFilter$1("radar")); registers.registerPreprocessor(radarBackwardCompat); } var ATTR = "\0_ec_interaction_mutex"; function take(zr, resourceKey, userKey) { var store = getStore(zr); store[resourceKey] = userKey; } function release(zr, resourceKey, userKey) { var store = getStore(zr); var uKey = store[resourceKey]; if (uKey === userKey) { store[resourceKey] = null; } } function isTaken(zr, resourceKey) { return !!getStore(zr)[resourceKey]; } function getStore(zr) { return zr[ATTR] || (zr[ATTR] = {}); } registerAction({ type: "takeGlobalCursor", event: "globalCursorTaken", update: "update" }, function() { }); var RoamController = function(_super) { __extends$1(RoamController2, _super); function RoamController2(zr) { var _this = _super.call(this) || this; _this._zr = zr; var mousedownHandler = bind$2(_this._mousedownHandler, _this); var mousemoveHandler = bind$2(_this._mousemoveHandler, _this); var mouseupHandler = bind$2(_this._mouseupHandler, _this); var mousewheelHandler = bind$2(_this._mousewheelHandler, _this); var pinchHandler = bind$2(_this._pinchHandler, _this); _this.enable = function(controlType, opt) { this.disable(); this._opt = defaults(clone$4(opt) || {}, { zoomOnMouseWheel: true, moveOnMouseMove: true, moveOnMouseWheel: false, preventDefaultMouseMove: true }); if (controlType == null) { controlType = true; } if (controlType === true || controlType === "move" || controlType === "pan") { zr.on("mousedown", mousedownHandler); zr.on("mousemove", mousemoveHandler); zr.on("mouseup", mouseupHandler); } if (controlType === true || controlType === "scale" || controlType === "zoom") { zr.on("mousewheel", mousewheelHandler); zr.on("pinch", pinchHandler); } }; _this.disable = function() { zr.off("mousedown", mousedownHandler); zr.off("mousemove", mousemoveHandler); zr.off("mouseup", mouseupHandler); zr.off("mousewheel", mousewheelHandler); zr.off("pinch", pinchHandler); }; return _this; } RoamController2.prototype.isDragging = function() { return this._dragging; }; RoamController2.prototype.isPinching = function() { return this._pinching; }; RoamController2.prototype.setPointerChecker = function(pointerChecker) { this.pointerChecker = pointerChecker; }; RoamController2.prototype.dispose = function() { this.disable(); }; RoamController2.prototype._mousedownHandler = function(e2) { if (isMiddleOrRightButtonOnMouseUpDown(e2) || e2.target && e2.target.draggable) { return; } var x = e2.offsetX; var y = e2.offsetY; if (this.pointerChecker && this.pointerChecker(e2, x, y)) { this._x = x; this._y = y; this._dragging = true; } }; RoamController2.prototype._mousemoveHandler = function(e2) { if (!this._dragging || !isAvailableBehavior("moveOnMouseMove", e2, this._opt) || e2.gestureEvent === "pinch" || isTaken(this._zr, "globalPan")) { return; } var x = e2.offsetX; var y = e2.offsetY; var oldX = this._x; var oldY = this._y; var dx = x - oldX; var dy = y - oldY; this._x = x; this._y = y; this._opt.preventDefaultMouseMove && stop(e2.event); trigger$1(this, "pan", "moveOnMouseMove", e2, { dx, dy, oldX, oldY, newX: x, newY: y, isAvailableBehavior: null }); }; RoamController2.prototype._mouseupHandler = function(e2) { if (!isMiddleOrRightButtonOnMouseUpDown(e2)) { this._dragging = false; } }; RoamController2.prototype._mousewheelHandler = function(e2) { var shouldZoom = isAvailableBehavior("zoomOnMouseWheel", e2, this._opt); var shouldMove = isAvailableBehavior("moveOnMouseWheel", e2, this._opt); var wheelDelta = e2.wheelDelta; var absWheelDeltaDelta = Math.abs(wheelDelta); var originX = e2.offsetX; var originY = e2.offsetY; if (wheelDelta === 0 || !shouldZoom && !shouldMove) { return; } if (shouldZoom) { var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1; var scale2 = wheelDelta > 0 ? factor : 1 / factor; checkPointerAndTrigger(this, "zoom", "zoomOnMouseWheel", e2, { scale: scale2, originX, originY, isAvailableBehavior: null }); } if (shouldMove) { var absDelta = Math.abs(wheelDelta); var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05); checkPointerAndTrigger(this, "scrollMove", "moveOnMouseWheel", e2, { scrollDelta, originX, originY, isAvailableBehavior: null }); } }; RoamController2.prototype._pinchHandler = function(e2) { if (isTaken(this._zr, "globalPan")) { return; } var scale2 = e2.pinchScale > 1 ? 1.1 : 1 / 1.1; checkPointerAndTrigger(this, "zoom", null, e2, { scale: scale2, originX: e2.pinchX, originY: e2.pinchY, isAvailableBehavior: null }); }; return RoamController2; }(Eventful$1); function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e2, contollerEvent) { if (controller.pointerChecker && controller.pointerChecker(e2, contollerEvent.originX, contollerEvent.originY)) { stop(e2.event); trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent); } } function trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent) { contollerEvent.isAvailableBehavior = bind$2(isAvailableBehavior, null, behaviorToCheck, e2); controller.trigger(eventName, contollerEvent); } function isAvailableBehavior(behaviorToCheck, e2, settings) { var setting2 = settings[behaviorToCheck]; return !behaviorToCheck || setting2 && (!isString(setting2) || e2.event[setting2 + "Key"]); } var RoamController$1 = RoamController; function updateViewOnPan(controllerHost, dx, dy) { var target = controllerHost.target; target.x += dx; target.y += dy; target.dirty(); } function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) { var target = controllerHost.target; var zoomLimit = controllerHost.zoomLimit; var newZoom = controllerHost.zoom = controllerHost.zoom || 1; newZoom *= zoomDelta; if (zoomLimit) { var zoomMin = zoomLimit.min || 0; var zoomMax = zoomLimit.max || Infinity; newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); } var zoomScale = newZoom / controllerHost.zoom; controllerHost.zoom = newZoom; target.x -= (zoomX - target.x) * (zoomScale - 1); target.y -= (zoomY - target.y) * (zoomScale - 1); target.scaleX *= zoomScale; target.scaleY *= zoomScale; target.dirty(); } var IRRELEVANT_EXCLUDES = { "axisPointer": 1, "tooltip": 1, "brush": 1 }; function onIrrelevantElement(e2, api, targetCoordSysModel) { var model = api.getComponentByElement(e2.topTarget); var coordSys = model && model.coordinateSystem; return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel; } var OPTION_STYLE_ENABLED_TAGS = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"]; var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS); var STATE_TRIGGER_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"])); var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"])); var mapLabelRaw = makeInner(); function getFixedItemStyle(model) { var itemStyle = model.getItemStyle(); var areaColor = model.get("areaColor"); if (areaColor != null) { itemStyle.fill = areaColor; } return itemStyle; } var MapDraw = function() { function MapDraw2(api) { var group = new Group$4(); this.uid = getUID("ec_map_draw"); this._controller = new RoamController$1(api.getZr()); this._controllerHost = { target: group }; this.group = group; group.add(this._regionsGroup = new Group$4()); group.add(this._svgGroup = new Group$4()); } MapDraw2.prototype.draw = function(mapOrGeoModel, ecModel, api, fromView, payload) { var isGeo = mapOrGeoModel.mainType === "geo"; var data = mapOrGeoModel.getData && mapOrGeoModel.getData(); isGeo && ecModel.eachComponent({ mainType: "series", subType: "map" }, function(mapSeries) { if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) { data = mapSeries.getData(); } }); var geo = mapOrGeoModel.coordinateSystem; var regionsGroup = this._regionsGroup; var group = this.group; var transformInfo = geo.getTransformInfo(); var transformInfoRaw = transformInfo.raw; var transformInfoRoam = transformInfo.roam; var isFirstDraw = !regionsGroup.childAt(0) || payload; if (isFirstDraw) { group.x = transformInfoRoam.x; group.y = transformInfoRoam.y; group.scaleX = transformInfoRoam.scaleX; group.scaleY = transformInfoRoam.scaleY; group.dirty(); } else { updateProps$1(group, transformInfoRoam, mapOrGeoModel); } var isVisualEncodedByVisualMap = data && data.getVisual("visualMeta") && data.getVisual("visualMeta").length > 0; var viewBuildCtx = { api, geo, mapOrGeoModel, data, isVisualEncodedByVisualMap, isGeo, transformInfoRaw }; if (geo.resourceType === "geoJSON") { this._buildGeoJSON(viewBuildCtx); } else if (geo.resourceType === "geoSVG") { this._buildSVG(viewBuildCtx); } this._updateController(mapOrGeoModel, ecModel, api); this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView); }; MapDraw2.prototype._buildGeoJSON = function(viewBuildCtx) { var regionsGroupByName = this._regionsGroupByName = createHashMap(); var regionsInfoByName = createHashMap(); var regionsGroup = this._regionsGroup; var transformInfoRaw = viewBuildCtx.transformInfoRaw; var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; var data = viewBuildCtx.data; var transformPoint = function(point) { return [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y]; }; regionsGroup.removeAll(); each$g(viewBuildCtx.geo.regions, function(region) { var regionName = region.name; var regionGroup = regionsGroupByName.get(regionName); var _a2 = regionsInfoByName.get(regionName) || {}, dataIdx = _a2.dataIdx, regionModel = _a2.regionModel; if (!regionGroup) { regionGroup = regionsGroupByName.set(regionName, new Group$4()); regionsGroup.add(regionGroup); dataIdx = data ? data.indexOfName(regionName) : null; regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null; regionsInfoByName.set(regionName, { dataIdx, regionModel }); } var compoundPath = new CompoundPath$1({ segmentIgnoreThreshold: 1, shape: { paths: [] } }); regionGroup.add(compoundPath); each$g(region.geometries, function(geometry) { if (geometry.type !== "polygon") { return; } var points2 = []; for (var i = 0; i < geometry.exterior.length; ++i) { points2.push(transformPoint(geometry.exterior[i])); } compoundPath.shape.paths.push(new Polygon$1({ segmentIgnoreThreshold: 1, shape: { points: points2 } })); for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) { var interior = geometry.interiors[i]; var points_1 = []; for (var j = 0; j < interior.length; ++j) { points_1.push(transformPoint(interior[j])); } compoundPath.shape.paths.push(new Polygon$1({ segmentIgnoreThreshold: 1, shape: { points: points_1 } })); } }); applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel); if (compoundPath instanceof Displayable$1) { compoundPath.culling = true; } var centerPt = transformPoint(region.getCenter()); resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt); }); regionsGroupByName.each(function(regionGroup, regionName) { var _a2 = regionsInfoByName.get(regionName), dataIdx = _a2.dataIdx, regionModel = _a2.regionModel; resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx); resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); }, this); }; MapDraw2.prototype._buildSVG = function(viewBuildCtx) { var mapName = viewBuildCtx.geo.map; var transformInfoRaw = viewBuildCtx.transformInfoRaw; this._svgGroup.x = transformInfoRaw.x; this._svgGroup.y = transformInfoRaw.y; this._svgGroup.scaleX = transformInfoRaw.scaleX; this._svgGroup.scaleY = transformInfoRaw.scaleY; if (this._svgResourceChanged(mapName)) { this._freeSVG(); this._useSVG(mapName); } var svgDispatcherMap = this._svgDispatcherMap = createHashMap(); var focusSelf = false; each$g(this._svgGraphicRecord.named, function(namedItem) { var regionName = namedItem.name; var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; var data = viewBuildCtx.data; var svgNodeTagLower = namedItem.svgNodeTagLower; var el = namedItem.el; var dataIdx = data ? data.indexOfName(regionName) : null; var regionModel = mapOrGeoModel.getRegionModel(regionName); if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el instanceof Displayable$1) { applyOptionStyleForRegion(viewBuildCtx, el, dataIdx, regionModel); } if (el instanceof Displayable$1) { el.culling = true; } el.z2EmphasisLift = 0; if (!namedItem.namedFrom) { if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) { resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null); } resetEventTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx); resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) { var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); if (focus_1 === "self") { focusSelf = true; } var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []); els.push(el); } } }, this); this._enableBlurEntireSVG(focusSelf, viewBuildCtx); }; MapDraw2.prototype._enableBlurEntireSVG = function(focusSelf, viewBuildCtx) { if (focusSelf && viewBuildCtx.isGeo) { var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(); var opacity_1 = blurStyle.opacity; this._svgGraphicRecord.root.traverse(function(el) { if (!el.isGroup) { setDefaultStateProxy(el); var style = el.ensureState("blur").style || {}; if (style.opacity == null && opacity_1 != null) { style.opacity = opacity_1; } el.ensureState("emphasis"); } }); } }; MapDraw2.prototype.remove = function() { this._regionsGroup.removeAll(); this._regionsGroupByName = null; this._svgGroup.removeAll(); this._freeSVG(); this._controller.dispose(); this._controllerHost = null; }; MapDraw2.prototype.findHighDownDispatchers = function(name, geoModel) { if (name == null) { return []; } var geo = geoModel.coordinateSystem; if (geo.resourceType === "geoJSON") { var regionsGroupByName = this._regionsGroupByName; if (regionsGroupByName) { var regionGroup = regionsGroupByName.get(name); return regionGroup ? [regionGroup] : []; } } else if (geo.resourceType === "geoSVG") { return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || []; } }; MapDraw2.prototype._svgResourceChanged = function(mapName) { return this._svgMapName !== mapName; }; MapDraw2.prototype._useSVG = function(mapName) { var resource = geoSourceManager.getGeoResource(mapName); if (resource && resource.type === "geoSVG") { var svgGraphic = resource.useGraphic(this.uid); this._svgGroup.add(svgGraphic.root); this._svgGraphicRecord = svgGraphic; this._svgMapName = mapName; } }; MapDraw2.prototype._freeSVG = function() { var mapName = this._svgMapName; if (mapName == null) { return; } var resource = geoSourceManager.getGeoResource(mapName); if (resource && resource.type === "geoSVG") { resource.freeGraphic(this.uid); } this._svgGraphicRecord = null; this._svgDispatcherMap = null; this._svgGroup.removeAll(); this._svgMapName = null; }; MapDraw2.prototype._updateController = function(mapOrGeoModel, ecModel, api) { var geo = mapOrGeoModel.coordinateSystem; var controller = this._controller; var controllerHost = this._controllerHost; controllerHost.zoomLimit = mapOrGeoModel.get("scaleLimit"); controllerHost.zoom = geo.getZoom(); controller.enable(mapOrGeoModel.get("roam") || false); var mainType = mapOrGeoModel.mainType; function makeActionBase() { var action = { type: "geoRoam", componentType: mainType }; action[mainType + "Id"] = mapOrGeoModel.id; return action; } controller.off("pan").on("pan", function(e2) { this._mouseDownFlag = false; updateViewOnPan(controllerHost, e2.dx, e2.dy); api.dispatchAction(extend(makeActionBase(), { dx: e2.dx, dy: e2.dy })); }, this); controller.off("zoom").on("zoom", function(e2) { this._mouseDownFlag = false; updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); api.dispatchAction(extend(makeActionBase(), { zoom: e2.scale, originX: e2.originX, originY: e2.originY })); }, this); controller.setPointerChecker(function(e2, x, y) { return geo.containPoint([x, y]) && !onIrrelevantElement(e2, api, mapOrGeoModel); }); }; MapDraw2.prototype.resetForLabelLayout = function() { this.group.traverse(function(el) { var label = el.getTextContent(); if (label) { label.ignore = mapLabelRaw(label).ignore; } }); }; MapDraw2.prototype._updateMapSelectHandler = function(mapOrGeoModel, regionsGroup, api, fromView) { var mapDraw = this; regionsGroup.off("mousedown"); regionsGroup.off("click"); if (mapOrGeoModel.get("selectedMode")) { regionsGroup.on("mousedown", function() { mapDraw._mouseDownFlag = true; }); regionsGroup.on("click", function(e2) { if (!mapDraw._mouseDownFlag) { return; } mapDraw._mouseDownFlag = false; }); } }; return MapDraw2; }(); function applyOptionStyleForRegion(viewBuildCtx, el, dataIndex, regionModel) { var normalStyleModel = regionModel.getModel("itemStyle"); var emphasisStyleModel = regionModel.getModel(["emphasis", "itemStyle"]); var blurStyleModel = regionModel.getModel(["blur", "itemStyle"]); var selectStyleModel = regionModel.getModel(["select", "itemStyle"]); var normalStyle = getFixedItemStyle(normalStyleModel); var emphasisStyle = getFixedItemStyle(emphasisStyleModel); var selectStyle = getFixedItemStyle(selectStyleModel); var blurStyle = getFixedItemStyle(blurStyleModel); var data = viewBuildCtx.data; if (data) { var style = data.getItemVisual(dataIndex, "style"); var decal = data.getItemVisual(dataIndex, "decal"); if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) { normalStyle.fill = style.fill; } if (decal) { normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api); } } el.setStyle(normalStyle); el.style.strokeNoScale = true; el.ensureState("emphasis").style = emphasisStyle; el.ensureState("select").style = selectStyle; el.ensureState("blur").style = blurStyle; setDefaultStateProxy(el); } function resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, labelXY) { var data = viewBuildCtx.data; var isGeo = viewBuildCtx.isGeo; var isDataNaN = data && isNaN(data.get(data.mapDimension("value"), dataIdx)); var itemLayout = data && data.getItemLayout(dataIdx); if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) { var query = !isGeo ? dataIdx : regionName; var labelFetcher = void 0; if (!data || dataIdx >= 0) { labelFetcher = mapOrGeoModel; } var specifiedTextOpt = labelXY ? { normal: { align: "center", verticalAlign: "middle" } } : null; setLabelStyle(el, getLabelStatesModels(regionModel), { labelFetcher, labelDataIndex: query, defaultText: regionName }, specifiedTextOpt); var textEl = el.getTextContent(); if (textEl) { mapLabelRaw(textEl).ignore = textEl.ignore; if (el.textConfig && labelXY) { var rect = el.getBoundingRect().clone(); el.textConfig.layoutRect = rect; el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + "%", (labelXY[1] - rect.y) / rect.height * 100 + "%"]; } } el.disableLabelAnimation = true; } else { el.removeTextContent(); el.removeTextConfig(); el.disableLabelAnimation = null; } } function resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, dataIdx) { if (viewBuildCtx.data) { viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger); } else { getECData(eventTrigger).eventData = { componentType: "geo", componentIndex: mapOrGeoModel.componentIndex, geoIndex: mapOrGeoModel.componentIndex, name: regionName, region: regionModel && regionModel.option || {} }; } } function resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { if (!viewBuildCtx.data) { setTooltipConfig({ el, componentModel: mapOrGeoModel, itemName: regionName, itemTooltipOption: regionModel.get("tooltip") }); } } function resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { el.highDownSilentOnTouch = !!mapOrGeoModel.get("selectedMode"); var emphasisModel = regionModel.getModel("emphasis"); var focus = emphasisModel.get("focus"); enableHoverEmphasis(el, focus, emphasisModel.get("blurScope")); if (viewBuildCtx.isGeo) { enableComponentHighDownFeatures(el, mapOrGeoModel, regionName); } return focus; } var MapDraw$1 = MapDraw; var MapView = function(_super) { __extends$1(MapView2, _super); function MapView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MapView2.type; return _this; } MapView2.prototype.render = function(mapModel, ecModel, api, payload) { if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) { return; } var group = this.group; group.removeAll(); if (mapModel.getHostGeoModel()) { return; } if (this._mapDraw && payload && payload.type === "geoRoam") { this._mapDraw.resetForLabelLayout(); } if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) { if (mapModel.needsDrawMap) { var mapDraw = this._mapDraw || new MapDraw$1(api); group.add(mapDraw.group); mapDraw.draw(mapModel, ecModel, api, this, payload); this._mapDraw = mapDraw; } else { this._mapDraw && this._mapDraw.remove(); this._mapDraw = null; } } else { var mapDraw = this._mapDraw; mapDraw && group.add(mapDraw.group); } mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api); }; MapView2.prototype.remove = function() { this._mapDraw && this._mapDraw.remove(); this._mapDraw = null; this.group.removeAll(); }; MapView2.prototype.dispose = function() { this._mapDraw && this._mapDraw.remove(); this._mapDraw = null; }; MapView2.prototype._renderSymbols = function(mapModel, ecModel, api) { var originalData = mapModel.originalData; var group = this.group; originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) { if (isNaN(value)) { return; } var layout2 = originalData.getItemLayout(originalDataIndex); if (!layout2 || !layout2.point) { return; } var point = layout2.point; var offset = layout2.offset; var circle = new Circle$1({ style: { fill: mapModel.getData().getVisual("style").fill }, shape: { cx: point[0] + offset * 9, cy: point[1], r: 3 }, silent: true, z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0) }); if (!offset) { var fullData = mapModel.mainSeries.getData(); var name_1 = originalData.getName(originalDataIndex); var fullIndex_1 = fullData.indexOfName(name_1); var itemModel = originalData.getItemModel(originalDataIndex); var labelModel = itemModel.getModel("label"); var regionGroup = fullData.getItemGraphicEl(fullIndex_1); setLabelStyle(circle, getLabelStatesModels(itemModel), { labelFetcher: { getFormattedLabel: function(idx, state) { return mapModel.getFormattedLabel(fullIndex_1, state); } } }); circle.disableLabelAnimation = true; if (!labelModel.get("position")) { circle.setTextConfig({ position: "bottom" }); } regionGroup.onHoverStateChange = function(toState) { setStatesFlag(circle, toState); }; } group.add(circle); }); }; MapView2.type = "map"; return MapView2; }(ChartView$1); var MapView$1 = MapView; var MapSeries = function(_super) { __extends$1(MapSeries2, _super); function MapSeries2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MapSeries2.type; _this.needsDrawMap = false; _this.seriesGroup = []; _this.getTooltipPosition = function(dataIndex) { if (dataIndex != null) { var name_1 = this.getData().getName(dataIndex); var geo = this.coordinateSystem; var region = geo.getRegion(name_1); return region && geo.dataToPoint(region.getCenter()); } }; return _this; } MapSeries2.prototype.getInitialData = function(option) { var data = createSeriesDataSimply(this, { coordDimensions: ["value"], encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this) }); var dataNameMap = createHashMap(); var toAppendNames = []; for (var i = 0, len2 = data.count(); i < len2; i++) { var name_2 = data.getName(i); dataNameMap.set(name_2, true); } var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty); each$g(geoSource.regions, function(region) { var name = region.name; if (!dataNameMap.get(name)) { toAppendNames.push(name); } }); data.appendValues([], toAppendNames); return data; }; MapSeries2.prototype.getHostGeoModel = function() { var geoIndex = this.option.geoIndex; return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null; }; MapSeries2.prototype.getMapType = function() { return (this.getHostGeoModel() || this).option.map; }; MapSeries2.prototype.getRawValue = function(dataIndex) { var data = this.getData(); return data.get(data.mapDimension("value"), dataIndex); }; MapSeries2.prototype.getRegionModel = function(regionName) { var data = this.getData(); return data.getItemModel(data.indexOfName(regionName)); }; MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var value = this.getRawValue(dataIndex); var name = data.getName(dataIndex); var seriesGroup = this.seriesGroup; var seriesNames = []; for (var i = 0; i < seriesGroup.length; i++) { var otherIndex = seriesGroup[i].originalData.indexOfName(name); var valueDim = data.mapDimension("value"); if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) { seriesNames.push(seriesGroup[i].name); } } return createTooltipMarkup("section", { header: seriesNames.join(", "), noHeader: !seriesNames.length, blocks: [createTooltipMarkup("nameValue", { name, value })] }); }; MapSeries2.prototype.setZoom = function(zoom) { this.option.zoom = zoom; }; MapSeries2.prototype.setCenter = function(center2) { this.option.center = center2; }; MapSeries2.prototype.getLegendIcon = function(opt) { var iconType = opt.icon || "roundRect"; var icon = createSymbol$1(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill); icon.setStyle(opt.itemStyle); icon.style.stroke = "none"; if (iconType.indexOf("empty") > -1) { icon.style.stroke = icon.style.fill; icon.style.fill = "#fff"; icon.style.lineWidth = 2; } return icon; }; MapSeries2.type = "series.map"; MapSeries2.dependencies = ["geo"]; MapSeries2.layoutMode = "box"; MapSeries2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "geo", map: "", left: "center", top: "center", aspectScale: null, showLegendSymbol: true, boundingCoords: null, center: null, zoom: 1, scaleLimit: null, selectedMode: true, label: { show: false, color: "#000" }, itemStyle: { borderWidth: 0.5, borderColor: "#444", areaColor: "#eee" }, emphasis: { label: { show: true, color: "rgb(100,0,0)" }, itemStyle: { areaColor: "rgba(255,215,0,0.8)" } }, select: { label: { show: true, color: "rgb(100,0,0)" }, itemStyle: { color: "rgba(255,215,0,0.8)" } }, nameProperty: "name" }; return MapSeries2; }(SeriesModel$1); var MapSeries$1 = MapSeries; function dataStatistics(datas, statisticType) { var dataNameMap = {}; each$g(datas, function(data) { data.each(data.mapDimension("value"), function(value, idx) { var mapKey = "ec-" + data.getName(idx); dataNameMap[mapKey] = dataNameMap[mapKey] || []; if (!isNaN(value)) { dataNameMap[mapKey].push(value); } }); }); return datas[0].map(datas[0].mapDimension("value"), function(value, idx) { var mapKey = "ec-" + datas[0].getName(idx); var sum2 = 0; var min3 = Infinity; var max3 = -Infinity; var len2 = dataNameMap[mapKey].length; for (var i = 0; i < len2; i++) { min3 = Math.min(min3, dataNameMap[mapKey][i]); max3 = Math.max(max3, dataNameMap[mapKey][i]); sum2 += dataNameMap[mapKey][i]; } var result; if (statisticType === "min") { result = min3; } else if (statisticType === "max") { result = max3; } else if (statisticType === "average") { result = sum2 / len2; } else { result = sum2; } return len2 === 0 ? NaN : result; }); } function mapDataStatistic(ecModel) { var seriesGroups = {}; ecModel.eachSeriesByType("map", function(seriesModel) { var hostGeoModel = seriesModel.getHostGeoModel(); var key2 = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType(); (seriesGroups[key2] = seriesGroups[key2] || []).push(seriesModel); }); each$g(seriesGroups, function(seriesList, key2) { var data = dataStatistics(map$1(seriesList, function(seriesModel) { return seriesModel.getData(); }), seriesList[0].get("mapValueCalculation")); for (var i = 0; i < seriesList.length; i++) { seriesList[i].originalData = seriesList[i].getData(); } for (var i = 0; i < seriesList.length; i++) { seriesList[i].seriesGroup = seriesList; seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel(); seriesList[i].setData(data.cloneShallow()); seriesList[i].mainSeries = seriesList[0]; } }); } function mapSymbolLayout(ecModel) { var processedMapType = {}; ecModel.eachSeriesByType("map", function(mapSeries) { var mapType = mapSeries.getMapType(); if (mapSeries.getHostGeoModel() || processedMapType[mapType]) { return; } var mapSymbolOffsets = {}; each$g(mapSeries.seriesGroup, function(subMapSeries) { var geo = subMapSeries.coordinateSystem; var data2 = subMapSeries.originalData; if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) { data2.each(data2.mapDimension("value"), function(value, idx) { var name = data2.getName(idx); var region = geo.getRegion(name); if (!region || isNaN(value)) { return; } var offset = mapSymbolOffsets[name] || 0; var point = geo.dataToPoint(region.getCenter()); mapSymbolOffsets[name] = offset + 1; data2.setItemLayout(idx, { point, offset }); }); } }); var data = mapSeries.getData(); data.each(function(idx) { var name = data.getName(idx); var layout2 = data.getItemLayout(idx) || {}; layout2.showLabel = !mapSymbolOffsets[name]; data.setItemLayout(idx, layout2); }); processedMapType[mapType] = true; }); } var v2ApplyTransform = applyTransform$1; var View = function(_super) { __extends$1(View2, _super); function View2(name) { var _this = _super.call(this) || this; _this.type = "view"; _this.dimensions = ["x", "y"]; _this._roamTransformable = new Transformable$1(); _this._rawTransformable = new Transformable$1(); _this.name = name; return _this; } View2.prototype.setBoundingRect = function(x, y, width, height) { this._rect = new BoundingRect$1(x, y, width, height); return this._rect; }; View2.prototype.getBoundingRect = function() { return this._rect; }; View2.prototype.setViewRect = function(x, y, width, height) { this._transformTo(x, y, width, height); this._viewRect = new BoundingRect$1(x, y, width, height); }; View2.prototype._transformTo = function(x, y, width, height) { var rect = this.getBoundingRect(); var rawTransform = this._rawTransformable; rawTransform.transform = rect.calculateTransform(new BoundingRect$1(x, y, width, height)); var rawParent = rawTransform.parent; rawTransform.parent = null; rawTransform.decomposeTransform(); rawTransform.parent = rawParent; this._updateTransform(); }; View2.prototype.setCenter = function(centerCoord) { if (!centerCoord) { return; } this._center = centerCoord; this._updateCenterAndZoom(); }; View2.prototype.setZoom = function(zoom) { zoom = zoom || 1; var zoomLimit = this.zoomLimit; if (zoomLimit) { if (zoomLimit.max != null) { zoom = Math.min(zoomLimit.max, zoom); } if (zoomLimit.min != null) { zoom = Math.max(zoomLimit.min, zoom); } } this._zoom = zoom; this._updateCenterAndZoom(); }; View2.prototype.getDefaultCenter = function() { var rawRect = this.getBoundingRect(); var cx = rawRect.x + rawRect.width / 2; var cy = rawRect.y + rawRect.height / 2; return [cx, cy]; }; View2.prototype.getCenter = function() { return this._center || this.getDefaultCenter(); }; View2.prototype.getZoom = function() { return this._zoom || 1; }; View2.prototype.getRoamTransform = function() { return this._roamTransformable.getLocalTransform(); }; View2.prototype._updateCenterAndZoom = function() { var rawTransformMatrix = this._rawTransformable.getLocalTransform(); var roamTransform = this._roamTransformable; var defaultCenter = this.getDefaultCenter(); var center2 = this.getCenter(); var zoom = this.getZoom(); center2 = applyTransform$1([], center2, rawTransformMatrix); defaultCenter = applyTransform$1([], defaultCenter, rawTransformMatrix); roamTransform.originX = center2[0]; roamTransform.originY = center2[1]; roamTransform.x = defaultCenter[0] - center2[0]; roamTransform.y = defaultCenter[1] - center2[1]; roamTransform.scaleX = roamTransform.scaleY = zoom; this._updateTransform(); }; View2.prototype._updateTransform = function() { var roamTransformable = this._roamTransformable; var rawTransformable = this._rawTransformable; rawTransformable.parent = roamTransformable; roamTransformable.updateTransform(); rawTransformable.updateTransform(); copy(this.transform || (this.transform = []), rawTransformable.transform || create$1()); this._rawTransform = rawTransformable.getLocalTransform(); this.invTransform = this.invTransform || []; invert(this.invTransform, this.transform); this.decomposeTransform(); }; View2.prototype.getTransformInfo = function() { var rawTransformable = this._rawTransformable; var roamTransformable = this._roamTransformable; var dummyTransformable2 = new Transformable$1(); dummyTransformable2.transform = roamTransformable.transform; dummyTransformable2.decomposeTransform(); return { roam: { x: dummyTransformable2.x, y: dummyTransformable2.y, scaleX: dummyTransformable2.scaleX, scaleY: dummyTransformable2.scaleY }, raw: { x: rawTransformable.x, y: rawTransformable.y, scaleX: rawTransformable.scaleX, scaleY: rawTransformable.scaleY } }; }; View2.prototype.getViewRect = function() { return this._viewRect; }; View2.prototype.getViewRectAfterRoam = function() { var rect = this.getBoundingRect().clone(); rect.applyTransform(this.transform); return rect; }; View2.prototype.dataToPoint = function(data, noRoam, out2) { var transform2 = noRoam ? this._rawTransform : this.transform; out2 = out2 || []; return transform2 ? v2ApplyTransform(out2, data, transform2) : copy$1(out2, data); }; View2.prototype.pointToData = function(point) { var invTransform = this.invTransform; return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]]; }; View2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys$4(finder); return coordSys === this ? coordSys.dataToPoint(value) : null; }; View2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys$4(finder); return coordSys === this ? coordSys.pointToData(pixel) : null; }; View2.prototype.containPoint = function(point) { return this.getViewRectAfterRoam().contain(point[0], point[1]); }; View2.dimensions = ["x", "y"]; return View2; }(Transformable$1); function getCoordSys$4(finder) { var seriesModel = finder.seriesModel; return seriesModel ? seriesModel.coordinateSystem : null; } var View$1 = View; var GEO_DEFAULT_PARAMS = { "geoJSON": { aspectScale: 0.75, invertLongitute: true }, "geoSVG": { aspectScale: 1, invertLongitute: false } }; var geo2DDimensions = ["lng", "lat"]; var Geo = function(_super) { __extends$1(Geo2, _super); function Geo2(name, map2, opt) { var _this = _super.call(this, name) || this; _this.dimensions = geo2DDimensions; _this.type = "geo"; _this._nameCoordMap = createHashMap(); _this.map = map2; var source = geoSourceManager.load(map2, opt.nameMap, opt.nameProperty); var resource = geoSourceManager.getGeoResource(map2); _this.resourceType = resource ? resource.type : null; var defaultParmas = GEO_DEFAULT_PARAMS[resource.type]; _this._regionsMap = source.regionsMap; _this._invertLongitute = defaultParmas.invertLongitute; _this.regions = source.regions; _this.aspectScale = retrieve2(opt.aspectScale, defaultParmas.aspectScale); var boundingRect = source.boundingRect; _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height); return _this; } Geo2.prototype._transformTo = function(x, y, width, height) { var rect = this.getBoundingRect(); var invertLongitute = this._invertLongitute; rect = rect.clone(); if (invertLongitute) { rect.y = -rect.y - rect.height; } var rawTransformable = this._rawTransformable; rawTransformable.transform = rect.calculateTransform(new BoundingRect$1(x, y, width, height)); var rawParent = rawTransformable.parent; rawTransformable.parent = null; rawTransformable.decomposeTransform(); rawTransformable.parent = rawParent; if (invertLongitute) { rawTransformable.scaleY = -rawTransformable.scaleY; } this._updateTransform(); }; Geo2.prototype.getRegion = function(name) { return this._regionsMap.get(name); }; Geo2.prototype.getRegionByCoord = function(coord) { var regions = this.regions; for (var i = 0; i < regions.length; i++) { var region = regions[i]; if (region.type === "geoJSON" && region.contain(coord)) { return regions[i]; } } }; Geo2.prototype.addGeoCoord = function(name, geoCoord2) { this._nameCoordMap.set(name, geoCoord2); }; Geo2.prototype.getGeoCoord = function(name) { var region = this._regionsMap.get(name); return this._nameCoordMap.get(name) || region && region.getCenter(); }; Geo2.prototype.dataToPoint = function(data, noRoam, out2) { if (typeof data === "string") { data = this.getGeoCoord(data); } if (data) { return View$1.prototype.dataToPoint.call(this, data, noRoam, out2); } }; Geo2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys$3(finder); return coordSys === this ? coordSys.dataToPoint(value) : null; }; Geo2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys$3(finder); return coordSys === this ? coordSys.pointToData(pixel) : null; }; return Geo2; }(View$1); mixin(Geo, View$1); function getCoordSys$3(finder) { var geoModel = finder.geoModel; var seriesModel = finder.seriesModel; return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING).models[0] || {}).coordinateSystem : null; } var Geo$1 = Geo; function resizeGeo(geoModel, api) { var boundingCoords = geoModel.get("boundingCoords"); if (boundingCoords != null) { var leftTop = boundingCoords[0]; var rightBottom = boundingCoords[1]; if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) ; else { this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]); } } var rect = this.getBoundingRect(); var centerOption = geoModel.get("layoutCenter"); var sizeOption = geoModel.get("layoutSize"); var viewWidth = api.getWidth(); var viewHeight = api.getHeight(); var aspect = rect.width / rect.height * this.aspectScale; var useCenterAndSize = false; var center2; var size; if (centerOption && sizeOption) { center2 = [parsePercent$1(centerOption[0], viewWidth), parsePercent$1(centerOption[1], viewHeight)]; size = parsePercent$1(sizeOption, Math.min(viewWidth, viewHeight)); if (!isNaN(center2[0]) && !isNaN(center2[1]) && !isNaN(size)) { useCenterAndSize = true; } } var viewRect2; if (useCenterAndSize) { viewRect2 = {}; if (aspect > 1) { viewRect2.width = size; viewRect2.height = size / aspect; } else { viewRect2.height = size; viewRect2.width = size * aspect; } viewRect2.y = center2[1] - viewRect2.height / 2; viewRect2.x = center2[0] - viewRect2.width / 2; } else { var boxLayoutOption = geoModel.getBoxLayoutParams(); boxLayoutOption.aspect = aspect; viewRect2 = getLayoutRect(boxLayoutOption, { width: viewWidth, height: viewHeight }); } this.setViewRect(viewRect2.x, viewRect2.y, viewRect2.width, viewRect2.height); this.setCenter(geoModel.get("center")); this.setZoom(geoModel.get("zoom")); } function setGeoCoords(geo, model) { each$g(model.get("geoCoord"), function(geoCoord2, name) { geo.addGeoCoord(name, geoCoord2); }); } var GeoCreator = function() { function GeoCreator2() { this.dimensions = geo2DDimensions; } GeoCreator2.prototype.create = function(ecModel, api) { var geoList = []; ecModel.eachComponent("geo", function(geoModel, idx) { var name = geoModel.get("map"); var geo = new Geo$1(name + idx, name, { nameMap: geoModel.get("nameMap"), nameProperty: geoModel.get("nameProperty"), aspectScale: geoModel.get("aspectScale") }); geo.zoomLimit = geoModel.get("scaleLimit"); geoList.push(geo); geoModel.coordinateSystem = geo; geo.model = geoModel; geo.resize = resizeGeo; geo.resize(geoModel, api); }); ecModel.eachSeries(function(seriesModel) { var coordSys = seriesModel.get("coordinateSystem"); if (coordSys === "geo") { var geoIndex = seriesModel.get("geoIndex") || 0; seriesModel.coordinateSystem = geoList[geoIndex]; } }); var mapModelGroupBySeries = {}; ecModel.eachSeriesByType("map", function(seriesModel) { if (!seriesModel.getHostGeoModel()) { var mapType = seriesModel.getMapType(); mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []; mapModelGroupBySeries[mapType].push(seriesModel); } }); each$g(mapModelGroupBySeries, function(mapSeries, mapType) { var nameMapList = map$1(mapSeries, function(singleMapSeries) { return singleMapSeries.get("nameMap"); }); var geo = new Geo$1(mapType, mapType, { nameMap: mergeAll(nameMapList), nameProperty: mapSeries[0].get("nameProperty"), aspectScale: mapSeries[0].get("aspectScale") }); geo.zoomLimit = retrieve.apply(null, map$1(mapSeries, function(singleMapSeries) { return singleMapSeries.get("scaleLimit"); })); geoList.push(geo); geo.resize = resizeGeo; geo.resize(mapSeries[0], api); each$g(mapSeries, function(singleMapSeries) { singleMapSeries.coordinateSystem = geo; setGeoCoords(geo, singleMapSeries); }); }); return geoList; }; GeoCreator2.prototype.getFilledRegions = function(originRegionArr, mapName, nameMap, nameProperty) { var regionsArr = (originRegionArr || []).slice(); var dataNameMap = createHashMap(); for (var i = 0; i < regionsArr.length; i++) { dataNameMap.set(regionsArr[i].name, regionsArr[i]); } var source = geoSourceManager.load(mapName, nameMap, nameProperty); each$g(source.regions, function(region) { var name = region.name; !dataNameMap.get(name) && regionsArr.push({ name }); }); return regionsArr; }; return GeoCreator2; }(); var geoCreator = new GeoCreator(); var geoCreator$1 = geoCreator; var GeoModel = function(_super) { __extends$1(GeoModel2, _super); function GeoModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GeoModel2.type; return _this; } GeoModel2.prototype.init = function(option, parentModel, ecModel) { var source = geoSourceManager.getGeoResource(option.map); if (source && source.type === "geoJSON") { var itemStyle = option.itemStyle = option.itemStyle || {}; if (!("color" in itemStyle)) { itemStyle.color = "#eee"; } } this.mergeDefaultAndTheme(option, ecModel); defaultEmphasis(option, "label", ["show"]); }; GeoModel2.prototype.optionUpdated = function() { var _this = this; var option = this.option; option.regions = geoCreator$1.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty); var selectedMap = {}; this._optionModelMap = reduce(option.regions || [], function(optionModelMap, regionOpt) { var regionName = regionOpt.name; if (regionName) { optionModelMap.set(regionName, new Model$1(regionOpt, _this, _this.ecModel)); if (regionOpt.selected) { selectedMap[regionName] = true; } } return optionModelMap; }, createHashMap()); if (!option.selectedMap) { option.selectedMap = selectedMap; } }; GeoModel2.prototype.getRegionModel = function(name) { return this._optionModelMap.get(name) || new Model$1(null, this, this.ecModel); }; GeoModel2.prototype.getFormattedLabel = function(name, status) { var regionModel = this.getRegionModel(name); var formatter = status === "normal" ? regionModel.get(["label", "formatter"]) : regionModel.get(["emphasis", "label", "formatter"]); var params = { name }; if (typeof formatter === "function") { params.status = status; return formatter(params); } else if (typeof formatter === "string") { return formatter.replace("{a}", name != null ? name : ""); } }; GeoModel2.prototype.setZoom = function(zoom) { this.option.zoom = zoom; }; GeoModel2.prototype.setCenter = function(center2) { this.option.center = center2; }; GeoModel2.prototype.select = function(name) { var option = this.option; var selectedMode = option.selectedMode; if (!selectedMode) { return; } if (selectedMode !== "multiple") { option.selectedMap = null; } var selectedMap = option.selectedMap || (option.selectedMap = {}); selectedMap[name] = true; }; GeoModel2.prototype.unSelect = function(name) { var selectedMap = this.option.selectedMap; if (selectedMap) { selectedMap[name] = false; } }; GeoModel2.prototype.toggleSelected = function(name) { this[this.isSelected(name) ? "unSelect" : "select"](name); }; GeoModel2.prototype.isSelected = function(name) { var selectedMap = this.option.selectedMap; return !!(selectedMap && selectedMap[name]); }; GeoModel2.type = "geo"; GeoModel2.layoutMode = "box"; GeoModel2.defaultOption = { zlevel: 0, z: 0, show: true, left: "center", top: "center", aspectScale: null, silent: false, map: "", boundingCoords: null, center: null, zoom: 1, scaleLimit: null, label: { show: false, color: "#000" }, itemStyle: { borderWidth: 0.5, borderColor: "#444" }, emphasis: { label: { show: true, color: "rgb(100,0,0)" }, itemStyle: { color: "rgba(255,215,0,0.8)" } }, select: { label: { show: true, color: "rgb(100,0,0)" }, itemStyle: { color: "rgba(255,215,0,0.8)" } }, regions: [] }; return GeoModel2; }(ComponentModel$1); var GeoModel$1 = GeoModel; function updateCenterAndZoom(view2, payload, zoomLimit) { var previousZoom = view2.getZoom(); var center2 = view2.getCenter(); var zoom = payload.zoom; var point = view2.dataToPoint(center2); if (payload.dx != null && payload.dy != null) { point[0] -= payload.dx; point[1] -= payload.dy; view2.setCenter(view2.pointToData(point)); } if (zoom != null) { if (zoomLimit) { var zoomMin = zoomLimit.min || 0; var zoomMax = zoomLimit.max || Infinity; zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom; } view2.scaleX *= zoom; view2.scaleY *= zoom; var fixX = (payload.originX - view2.x) * (zoom - 1); var fixY = (payload.originY - view2.y) * (zoom - 1); view2.x -= fixX; view2.y -= fixY; view2.updateTransform(); view2.setCenter(view2.pointToData(point)); view2.setZoom(zoom * previousZoom); } return { center: view2.getCenter(), zoom: view2.getZoom() }; } var GeoView = function(_super) { __extends$1(GeoView2, _super); function GeoView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GeoView2.type; _this.focusBlurEnabled = true; return _this; } GeoView2.prototype.init = function(ecModel, api) { this._api = api; }; GeoView2.prototype.render = function(geoModel, ecModel, api, payload) { this._model = geoModel; if (!geoModel.get("show")) { this._mapDraw && this._mapDraw.remove(); this._mapDraw = null; return; } if (!this._mapDraw) { this._mapDraw = new MapDraw$1(api); } var mapDraw = this._mapDraw; mapDraw.draw(geoModel, ecModel, api, this, payload); mapDraw.group.on("click", this._handleRegionClick, this); mapDraw.group.silent = geoModel.get("silent"); this.group.add(mapDraw.group); this.updateSelectStatus(geoModel, ecModel, api); }; GeoView2.prototype._handleRegionClick = function(e2) { var eventData; findEventDispatcher(e2.target, function(current) { return (eventData = getECData(current).eventData) != null; }, true); if (eventData) { this._api.dispatchAction({ type: "geoToggleSelect", geoId: this._model.id, name: eventData.name }); } }; GeoView2.prototype.updateSelectStatus = function(model, ecModel, api) { var _this = this; this._mapDraw.group.traverse(function(node) { var eventData = getECData(node).eventData; if (eventData) { _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node); return true; } }); }; GeoView2.prototype.findHighDownDispatchers = function(name) { return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model); }; GeoView2.prototype.dispose = function() { this._mapDraw && this._mapDraw.remove(); }; GeoView2.type = "geo"; return GeoView2; }(ComponentView$1); var GeoView$1 = GeoView; function install$J(registers) { registers.registerCoordinateSystem("geo", geoCreator$1); registers.registerComponentModel(GeoModel$1); registers.registerComponentView(GeoView$1); function makeAction(method, actionInfo2) { actionInfo2.update = "geo:updateSelectStatus"; registers.registerAction(actionInfo2, function(payload, ecModel) { var selected = {}; var allSelected = []; ecModel.eachComponent({ mainType: "geo", query: payload }, function(geoModel) { geoModel[method](payload.name); var geo = geoModel.coordinateSystem; each$g(geo.regions, function(region) { selected[region.name] = geoModel.isSelected(region.name) || false; }); var names = []; each$g(selected, function(v, name) { selected[name] && names.push(name); }); allSelected.push({ geoIndex: geoModel.componentIndex, name: names }); }); return { selected, allSelected, name: payload.name }; }); } makeAction("toggleSelected", { type: "geoToggleSelect", event: "geoselectchanged" }); makeAction("select", { type: "geoSelect", event: "geoselected" }); makeAction("unSelect", { type: "geoUnSelect", event: "geounselected" }); registers.registerAction({ type: "geoRoam", event: "geoRoam", update: "updateTransform" }, function(payload, ecModel) { var componentType = payload.componentType || "series"; ecModel.eachComponent({ mainType: componentType, query: payload }, function(componentModel) { var geo = componentModel.coordinateSystem; if (geo.type !== "geo") { return; } var res = updateCenterAndZoom(geo, payload, componentModel.get("scaleLimit")); componentModel.setCenter && componentModel.setCenter(res.center); componentModel.setZoom && componentModel.setZoom(res.zoom); if (componentType === "series") { each$g(componentModel.seriesGroup, function(seriesModel) { seriesModel.setCenter(res.center); seriesModel.setZoom(res.zoom); }); } }); }); } function install$I(registers) { use(install$J); registers.registerChartView(MapView$1); registers.registerSeriesModel(MapSeries$1); registers.registerLayout(mapSymbolLayout); registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic); createLegacyDataSelectAction("map", registers.registerAction); } function init(inRoot) { var root = inRoot; root.hierNode = { defaultAncestor: null, ancestor: root, prelim: 0, modifier: 0, change: 0, shift: 0, i: 0, thread: null }; var nodes = [root]; var node; var children; while (node = nodes.pop()) { children = node.children; if (node.isExpand && children.length) { var n = children.length; for (var i = n - 1; i >= 0; i--) { var child = children[i]; child.hierNode = { defaultAncestor: null, ancestor: child, prelim: 0, modifier: 0, change: 0, shift: 0, i, thread: null }; nodes.push(child); } } } } function firstWalk(node, separation2) { var children = node.isExpand ? node.children : []; var siblings = node.parentNode.children; var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null; if (children.length) { executeShifts(node); var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2; if (subtreeW) { node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW); node.hierNode.modifier = node.hierNode.prelim - midPoint; } else { node.hierNode.prelim = midPoint; } } else if (subtreeW) { node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW); } node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation2); } function secondWalk(node) { var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier; node.setLayout({ x: nodeX }, true); node.hierNode.modifier += node.parentNode.hierNode.modifier; } function separation(cb) { return arguments.length ? cb : defaultSeparation; } function radialCoordinate(rad, r) { rad -= Math.PI / 2; return { x: r * Math.cos(rad), y: r * Math.sin(rad) }; } function getViewRect$4(seriesModel, api) { return getLayoutRect(seriesModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); } function executeShifts(node) { var children = node.children; var n = children.length; var shift = 0; var change = 0; while (--n >= 0) { var child = children[n]; child.hierNode.prelim += shift; child.hierNode.modifier += shift; change += child.hierNode.change; shift += child.hierNode.shift + change; } } function apportion(subtreeV, subtreeW, ancestor, separation2) { if (subtreeW) { var nodeOutRight = subtreeV; var nodeInRight = subtreeV; var nodeOutLeft = nodeInRight.parentNode.children[0]; var nodeInLeft = subtreeW; var sumOutRight = nodeOutRight.hierNode.modifier; var sumInRight = nodeInRight.hierNode.modifier; var sumOutLeft = nodeOutLeft.hierNode.modifier; var sumInLeft = nodeInLeft.hierNode.modifier; while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) { nodeOutRight = nextRight(nodeOutRight); nodeOutLeft = nextLeft(nodeOutLeft); nodeOutRight.hierNode.ancestor = subtreeV; var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation2(nodeInLeft, nodeInRight); if (shift > 0) { moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift); sumInRight += shift; sumOutRight += shift; } sumInLeft += nodeInLeft.hierNode.modifier; sumInRight += nodeInRight.hierNode.modifier; sumOutRight += nodeOutRight.hierNode.modifier; sumOutLeft += nodeOutLeft.hierNode.modifier; } if (nodeInLeft && !nextRight(nodeOutRight)) { nodeOutRight.hierNode.thread = nodeInLeft; nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight; } if (nodeInRight && !nextLeft(nodeOutLeft)) { nodeOutLeft.hierNode.thread = nodeInRight; nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft; ancestor = subtreeV; } } return ancestor; } function nextRight(node) { var children = node.children; return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread; } function nextLeft(node) { var children = node.children; return children.length && node.isExpand ? children[0] : node.hierNode.thread; } function nextAncestor(nodeInLeft, node, ancestor) { return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor; } function moveSubtree(wl, wr, shift) { var change = shift / (wr.hierNode.i - wl.hierNode.i); wr.hierNode.change -= change; wr.hierNode.shift += shift; wr.hierNode.modifier += shift; wr.hierNode.prelim += shift; wl.hierNode.change += change; } function defaultSeparation(node1, node2) { return node1.parentNode === node2.parentNode ? 1 : 2; } var TreeEdgeShape = function() { function TreeEdgeShape2() { this.parentPoint = []; this.childPoints = []; } return TreeEdgeShape2; }(); var TreePath = function(_super) { __extends$1(TreePath2, _super); function TreePath2(opts) { return _super.call(this, opts) || this; } TreePath2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; TreePath2.prototype.getDefaultShape = function() { return new TreeEdgeShape(); }; TreePath2.prototype.buildPath = function(ctx, shape) { var childPoints = shape.childPoints; var childLen = childPoints.length; var parentPoint = shape.parentPoint; var firstChildPos = childPoints[0]; var lastChildPos = childPoints[childLen - 1]; if (childLen === 1) { ctx.moveTo(parentPoint[0], parentPoint[1]); ctx.lineTo(firstChildPos[0], firstChildPos[1]); return; } var orient = shape.orient; var forkDim = orient === "TB" || orient === "BT" ? 0 : 1; var otherDim = 1 - forkDim; var forkPosition = parsePercent$1(shape.forkPosition, 1); var tmpPoint = []; tmpPoint[forkDim] = parentPoint[forkDim]; tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition; ctx.moveTo(parentPoint[0], parentPoint[1]); ctx.lineTo(tmpPoint[0], tmpPoint[1]); ctx.moveTo(firstChildPos[0], firstChildPos[1]); tmpPoint[forkDim] = firstChildPos[forkDim]; ctx.lineTo(tmpPoint[0], tmpPoint[1]); tmpPoint[forkDim] = lastChildPos[forkDim]; ctx.lineTo(tmpPoint[0], tmpPoint[1]); ctx.lineTo(lastChildPos[0], lastChildPos[1]); for (var i = 1; i < childLen - 1; i++) { var point = childPoints[i]; ctx.moveTo(point[0], point[1]); tmpPoint[forkDim] = point[forkDim]; ctx.lineTo(tmpPoint[0], tmpPoint[1]); } }; return TreePath2; }(Path$1); var TreeView = function(_super) { __extends$1(TreeView2, _super); function TreeView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TreeView2.type; _this._mainGroup = new Group$4(); return _this; } TreeView2.prototype.init = function(ecModel, api) { this._controller = new RoamController$1(api.getZr()); this._controllerHost = { target: this.group }; this.group.add(this._mainGroup); }; TreeView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var layoutInfo = seriesModel.layoutInfo; var group = this._mainGroup; var layout2 = seriesModel.get("layout"); if (layout2 === "radial") { group.x = layoutInfo.x + layoutInfo.width / 2; group.y = layoutInfo.y + layoutInfo.height / 2; } else { group.x = layoutInfo.x; group.y = layoutInfo.y; } this._updateViewCoordSys(seriesModel); this._updateController(seriesModel, ecModel, api); var oldData = this._data; data.diff(oldData).add(function(newIdx) { if (symbolNeedsDraw(data, newIdx)) { updateNode(data, newIdx, null, group, seriesModel); } }).update(function(newIdx, oldIdx) { var symbolEl = oldData.getItemGraphicEl(oldIdx); if (!symbolNeedsDraw(data, newIdx)) { symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel); return; } updateNode(data, newIdx, symbolEl, group, seriesModel); }).remove(function(oldIdx) { var symbolEl = oldData.getItemGraphicEl(oldIdx); if (symbolEl) { removeNode(oldData, oldIdx, symbolEl, group, seriesModel); } }).execute(); this._nodeScaleRatio = seriesModel.get("nodeScaleRatio"); this._updateNodeAndLinkScale(seriesModel); if (seriesModel.get("expandAndCollapse") === true) { data.eachItemGraphicEl(function(el, dataIndex) { el.off("click").on("click", function() { api.dispatchAction({ type: "treeExpandAndCollapse", seriesId: seriesModel.id, dataIndex }); }); }); } this._data = data; }; TreeView2.prototype._updateViewCoordSys = function(seriesModel) { var data = seriesModel.getData(); var points2 = []; data.each(function(idx) { var layout2 = data.getItemLayout(idx); if (layout2 && !isNaN(layout2.x) && !isNaN(layout2.y)) { points2.push([+layout2.x, +layout2.y]); } }); var min3 = []; var max3 = []; fromPoints(points2, min3, max3); var oldMin = this._min; var oldMax = this._max; if (max3[0] - min3[0] === 0) { min3[0] = oldMin ? oldMin[0] : min3[0] - 1; max3[0] = oldMax ? oldMax[0] : max3[0] + 1; } if (max3[1] - min3[1] === 0) { min3[1] = oldMin ? oldMin[1] : min3[1] - 1; max3[1] = oldMax ? oldMax[1] : max3[1] + 1; } var viewCoordSys = seriesModel.coordinateSystem = new View$1(); viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); viewCoordSys.setBoundingRect(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]); viewCoordSys.setCenter(seriesModel.get("center")); viewCoordSys.setZoom(seriesModel.get("zoom")); this.group.attr({ x: viewCoordSys.x, y: viewCoordSys.y, scaleX: viewCoordSys.scaleX, scaleY: viewCoordSys.scaleY }); this._min = min3; this._max = max3; }; TreeView2.prototype._updateController = function(seriesModel, ecModel, api) { var _this = this; var controller = this._controller; var controllerHost = this._controllerHost; var group = this.group; controller.setPointerChecker(function(e2, x, y) { var rect = group.getBoundingRect(); rect.applyTransform(group.transform); return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel); }); controller.enable(seriesModel.get("roam")); controllerHost.zoomLimit = seriesModel.get("scaleLimit"); controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); controller.off("pan").off("zoom").on("pan", function(e2) { updateViewOnPan(controllerHost, e2.dx, e2.dy); api.dispatchAction({ seriesId: seriesModel.id, type: "treeRoam", dx: e2.dx, dy: e2.dy }); }).on("zoom", function(e2) { updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); api.dispatchAction({ seriesId: seriesModel.id, type: "treeRoam", zoom: e2.scale, originX: e2.originX, originY: e2.originY }); _this._updateNodeAndLinkScale(seriesModel); api.updateLabelLayout(); }); }; TreeView2.prototype._updateNodeAndLinkScale = function(seriesModel) { var data = seriesModel.getData(); var nodeScale = this._getNodeGlobalScale(seriesModel); data.eachItemGraphicEl(function(el, idx) { el.setSymbolScale(nodeScale); }); }; TreeView2.prototype._getNodeGlobalScale = function(seriesModel) { var coordSys = seriesModel.coordinateSystem; if (coordSys.type !== "view") { return 1; } var nodeScaleRatio = this._nodeScaleRatio; var groupZoom = coordSys.scaleX || 1; var roamZoom = coordSys.getZoom(); var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; return nodeScale / groupZoom; }; TreeView2.prototype.dispose = function() { this._controller && this._controller.dispose(); this._controllerHost = null; }; TreeView2.prototype.remove = function() { this._mainGroup.removeAll(); this._data = null; }; TreeView2.type = "tree"; return TreeView2; }(ChartView$1); function symbolNeedsDraw(data, dataIndex) { var layout2 = data.getItemLayout(dataIndex); return layout2 && !isNaN(layout2.x) && !isNaN(layout2.y); } function updateNode(data, dataIndex, symbolEl, group, seriesModel) { var isInit = !symbolEl; var node = data.tree.getNodeByDataIndex(dataIndex); var itemModel = node.getModel(); var visualColor = node.getVisual("style").fill; var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : "#fff"; var virtualRoot = data.tree.root; var source = node.parentNode === virtualRoot ? node : node.parentNode || node; var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); var sourceLayout = source.getLayout(); var sourceOldLayout = sourceSymbolEl ? { x: sourceSymbolEl.__oldX, y: sourceSymbolEl.__oldY, rawX: sourceSymbolEl.__radialOldRawX, rawY: sourceSymbolEl.__radialOldRawY } : sourceLayout; var targetLayout = node.getLayout(); if (isInit) { symbolEl = new SymbolClz(data, dataIndex, null, { symbolInnerColor, useNameLabel: true }); symbolEl.x = sourceOldLayout.x; symbolEl.y = sourceOldLayout.y; } else { symbolEl.updateData(data, dataIndex, null, { symbolInnerColor, useNameLabel: true }); } symbolEl.__radialOldRawX = symbolEl.__radialRawX; symbolEl.__radialOldRawY = symbolEl.__radialRawY; symbolEl.__radialRawX = targetLayout.rawX; symbolEl.__radialRawY = targetLayout.rawY; group.add(symbolEl); data.setItemGraphicEl(dataIndex, symbolEl); symbolEl.__oldX = symbolEl.x; symbolEl.__oldY = symbolEl.y; updateProps$1(symbolEl, { x: targetLayout.x, y: targetLayout.y }, seriesModel); var symbolPath = symbolEl.getSymbolPath(); if (seriesModel.get("layout") === "radial") { var realRoot = virtualRoot.children[0]; var rootLayout = realRoot.getLayout(); var length_1 = realRoot.children.length; var rad = void 0; var isLeft = void 0; if (targetLayout.x === rootLayout.x && node.isExpand === true) { var center2 = { x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2, y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2 }; rad = Math.atan2(center2.y - rootLayout.y, center2.x - rootLayout.x); if (rad < 0) { rad = Math.PI * 2 + rad; } isLeft = center2.x < rootLayout.x; if (isLeft) { rad = rad - Math.PI; } } else { rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x); if (rad < 0) { rad = Math.PI * 2 + rad; } if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) { isLeft = targetLayout.x < rootLayout.x; if (isLeft) { rad = rad - Math.PI; } } else { isLeft = targetLayout.x > rootLayout.x; if (!isLeft) { rad = rad - Math.PI; } } } var textPosition = isLeft ? "left" : "right"; var normalLabelModel = itemModel.getModel("label"); var rotate2 = normalLabelModel.get("rotate"); var labelRotateRadian = rotate2 * (Math.PI / 180); var textContent = symbolPath.getTextContent(); if (textContent) { symbolPath.setTextConfig({ position: normalLabelModel.get("position") || textPosition, rotation: rotate2 == null ? -rad : labelRotateRadian, origin: "center" }); textContent.setStyle("verticalAlign", "middle"); } } var focus = itemModel.get(["emphasis", "focus"]); var focusDataIndices = focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : null; if (focusDataIndices) { getECData(symbolEl).focus = focusDataIndices; } drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group); if (symbolEl.__edge) { symbolEl.onHoverStateChange = function(toState) { if (toState !== "blur") { var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex); if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) { setStatesFlag(symbolEl.__edge, toState); } } }; } } function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) { var itemModel = node.getModel(); var edgeShape = seriesModel.get("edgeShape"); var layout2 = seriesModel.get("layout"); var orient = seriesModel.getOrient(); var curvature = seriesModel.get(["lineStyle", "curveness"]); var edgeForkPosition = seriesModel.get("edgeForkPosition"); var lineStyle = itemModel.getModel("lineStyle").getLineStyle(); var edge = symbolEl.__edge; if (edgeShape === "curve") { if (node.parentNode && node.parentNode !== virtualRoot) { if (!edge) { edge = symbolEl.__edge = new BezierCurve$1({ shape: getEdgeShape(layout2, orient, curvature, sourceOldLayout, sourceOldLayout) }); } updateProps$1(edge, { shape: getEdgeShape(layout2, orient, curvature, sourceLayout, targetLayout) }, seriesModel); } } else if (edgeShape === "polyline") { if (layout2 === "orthogonal") { if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) { var children = node.children; var childPoints = []; for (var i = 0; i < children.length; i++) { var childLayout = children[i].getLayout(); childPoints.push([childLayout.x, childLayout.y]); } if (!edge) { edge = symbolEl.__edge = new TreePath({ shape: { parentPoint: [targetLayout.x, targetLayout.y], childPoints: [[targetLayout.x, targetLayout.y]], orient, forkPosition: edgeForkPosition } }); } updateProps$1(edge, { shape: { parentPoint: [targetLayout.x, targetLayout.y], childPoints } }, seriesModel); } } } if (edge) { edge.useStyle(defaults({ strokeNoScale: true, fill: null }, lineStyle)); setStatesStylesFromModel(edge, itemModel, "lineStyle"); setDefaultStateProxy(edge); group.add(edge); } } function removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) { var virtualRoot = data.tree.root; var _a2 = getSourceNode(virtualRoot, node), source = _a2.source, sourceLayout = _a2.sourceLayout; var symbolEl = data.getItemGraphicEl(node.dataIndex); if (!symbolEl) { return; } var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); var sourceEdge = sourceSymbolEl.__edge; var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0); var edgeShape = seriesModel.get("edgeShape"); var layoutOpt = seriesModel.get("layout"); var orient = seriesModel.get("orient"); var curvature = seriesModel.get(["lineStyle", "curveness"]); if (edge) { if (edgeShape === "curve") { removeElement(edge, { shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout), style: { opacity: 0 } }, seriesModel, { cb: function() { group.remove(edge); }, removeOpt: removeAnimationOpt }); } else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") { removeElement(edge, { shape: { parentPoint: [sourceLayout.x, sourceLayout.y], childPoints: [[sourceLayout.x, sourceLayout.y]] }, style: { opacity: 0 } }, seriesModel, { cb: function() { group.remove(edge); }, removeOpt: removeAnimationOpt }); } } } function getSourceNode(virtualRoot, node) { var source = node.parentNode === virtualRoot ? node : node.parentNode || node; var sourceLayout; while (sourceLayout = source.getLayout(), sourceLayout == null) { source = source.parentNode === virtualRoot ? source : source.parentNode || source; } return { source, sourceLayout }; } function removeNode(data, dataIndex, symbolEl, group, seriesModel) { var node = data.tree.getNodeByDataIndex(dataIndex); var virtualRoot = data.tree.root; var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout; var removeAnimationOpt = { duration: seriesModel.get("animationDurationUpdate"), easing: seriesModel.get("animationEasingUpdate") }; removeElement(symbolEl, { x: sourceLayout.x + 1, y: sourceLayout.y + 1 }, seriesModel, { cb: function() { group.remove(symbolEl); data.setItemGraphicEl(dataIndex, null); }, removeOpt: removeAnimationOpt }); symbolEl.fadeOut(null, { fadeLabel: true, animation: removeAnimationOpt }); node.children.forEach(function(childNode) { removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt); }); removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt); } function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) { var cpx1; var cpy1; var cpx2; var cpy2; var x1; var x2; var y1; var y2; if (layoutOpt === "radial") { x1 = sourceLayout.rawX; y1 = sourceLayout.rawY; x2 = targetLayout.rawX; y2 = targetLayout.rawY; var radialCoor1 = radialCoordinate(x1, y1); var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature); var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature); var radialCoor4 = radialCoordinate(x2, y2); return { x1: radialCoor1.x || 0, y1: radialCoor1.y || 0, x2: radialCoor4.x || 0, y2: radialCoor4.y || 0, cpx1: radialCoor2.x || 0, cpy1: radialCoor2.y || 0, cpx2: radialCoor3.x || 0, cpy2: radialCoor3.y || 0 }; } else { x1 = sourceLayout.x; y1 = sourceLayout.y; x2 = targetLayout.x; y2 = targetLayout.y; if (orient === "LR" || orient === "RL") { cpx1 = x1 + (x2 - x1) * curvature; cpy1 = y1; cpx2 = x2 + (x1 - x2) * curvature; cpy2 = y2; } if (orient === "TB" || orient === "BT") { cpx1 = x1; cpy1 = y1 + (y2 - y1) * curvature; cpx2 = x2; cpy2 = y2 + (y1 - y2) * curvature; } } return { x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2 }; } var TreeView$1 = TreeView; var inner$e = makeInner(); function linkSeriesData(opt) { var mainData = opt.mainData; var datas = opt.datas; if (!datas) { datas = { main: mainData }; opt.datasAttr = { main: "data" }; } opt.datas = opt.mainData = null; linkAll(mainData, datas, opt); each$g(datas, function(data) { each$g(mainData.TRANSFERABLE_METHODS, function(methodName) { data.wrapMethod(methodName, curry$1(transferInjection, opt)); }); }); mainData.wrapMethod("cloneShallow", curry$1(cloneShallowInjection, opt)); each$g(mainData.CHANGABLE_METHODS, function(methodName) { mainData.wrapMethod(methodName, curry$1(changeInjection, opt)); }); assert(datas[mainData.dataType] === mainData); } function transferInjection(opt, res) { if (isMainData(this)) { var datas = extend({}, inner$e(this).datas); datas[this.dataType] = res; linkAll(res, datas, opt); } else { linkSingle(res, this.dataType, inner$e(this).mainData, opt); } return res; } function changeInjection(opt, res) { opt.struct && opt.struct.update(); return res; } function cloneShallowInjection(opt, res) { each$g(inner$e(res).datas, function(data, dataType) { data !== res && linkSingle(data.cloneShallow(), dataType, res, opt); }); return res; } function getLinkedData(dataType) { var mainData = inner$e(this).mainData; return dataType == null || mainData == null ? mainData : inner$e(mainData).datas[dataType]; } function getLinkedDataAll() { var mainData = inner$e(this).mainData; return mainData == null ? [{ data: mainData }] : map$1(keys(inner$e(mainData).datas), function(type) { return { type, data: inner$e(mainData).datas[type] }; }); } function isMainData(data) { return inner$e(data).mainData === data; } function linkAll(mainData, datas, opt) { inner$e(mainData).datas = {}; each$g(datas, function(data, dataType) { linkSingle(data, dataType, mainData, opt); }); } function linkSingle(data, dataType, mainData, opt) { inner$e(mainData).datas[dataType] = data; inner$e(data).mainData = mainData; data.dataType = dataType; if (opt.struct) { data[opt.structAttr] = opt.struct; opt.struct[opt.datasAttr[dataType]] = data; } data.getLinkedData = getLinkedData; data.getLinkedDataAll = getLinkedDataAll; } var TreeNode = function() { function TreeNode2(name, hostTree) { this.depth = 0; this.height = 0; this.dataIndex = -1; this.children = []; this.viewChildren = []; this.isExpand = false; this.name = name || ""; this.hostTree = hostTree; } TreeNode2.prototype.isRemoved = function() { return this.dataIndex < 0; }; TreeNode2.prototype.eachNode = function(options, cb, context) { if (typeof options === "function") { context = cb; cb = options; options = null; } options = options || {}; if (isString(options)) { options = { order: options }; } var order = options.order || "preorder"; var children = this[options.attr || "children"]; var suppressVisitSub; order === "preorder" && (suppressVisitSub = cb.call(context, this)); for (var i = 0; !suppressVisitSub && i < children.length; i++) { children[i].eachNode(options, cb, context); } order === "postorder" && cb.call(context, this); }; TreeNode2.prototype.updateDepthAndHeight = function(depth) { var height = 0; this.depth = depth; for (var i = 0; i < this.children.length; i++) { var child = this.children[i]; child.updateDepthAndHeight(depth + 1); if (child.height > height) { height = child.height; } } this.height = height + 1; }; TreeNode2.prototype.getNodeById = function(id) { if (this.getId() === id) { return this; } for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) { var res = children[i].getNodeById(id); if (res) { return res; } } }; TreeNode2.prototype.contains = function(node) { if (node === this) { return true; } for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) { var res = children[i].contains(node); if (res) { return res; } } }; TreeNode2.prototype.getAncestors = function(includeSelf) { var ancestors = []; var node = includeSelf ? this : this.parentNode; while (node) { ancestors.push(node); node = node.parentNode; } ancestors.reverse(); return ancestors; }; TreeNode2.prototype.getAncestorsIndices = function() { var indices = []; var currNode = this; while (currNode) { indices.push(currNode.dataIndex); currNode = currNode.parentNode; } indices.reverse(); return indices; }; TreeNode2.prototype.getDescendantIndices = function() { var indices = []; this.eachNode(function(childNode) { indices.push(childNode.dataIndex); }); return indices; }; TreeNode2.prototype.getValue = function(dimension) { var data = this.hostTree.data; return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); }; TreeNode2.prototype.setLayout = function(layout2, merge2) { this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout2, merge2); }; TreeNode2.prototype.getLayout = function() { return this.hostTree.data.getItemLayout(this.dataIndex); }; TreeNode2.prototype.getModel = function(path) { if (this.dataIndex < 0) { return; } var hostTree = this.hostTree; var itemModel = hostTree.data.getItemModel(this.dataIndex); return itemModel.getModel(path); }; TreeNode2.prototype.getLevelModel = function() { return (this.hostTree.levelModels || [])[this.depth]; }; TreeNode2.prototype.setVisual = function(key2, value) { this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key2, value); }; TreeNode2.prototype.getVisual = function(key2) { return this.hostTree.data.getItemVisual(this.dataIndex, key2); }; TreeNode2.prototype.getRawIndex = function() { return this.hostTree.data.getRawIndex(this.dataIndex); }; TreeNode2.prototype.getId = function() { return this.hostTree.data.getId(this.dataIndex); }; TreeNode2.prototype.getChildIndex = function() { if (this.parentNode) { var children = this.parentNode.children; for (var i = 0; i < children.length; ++i) { if (children[i] === this) { return i; } } return -1; } return -1; }; TreeNode2.prototype.isAncestorOf = function(node) { var parent = node.parentNode; while (parent) { if (parent === this) { return true; } parent = parent.parentNode; } return false; }; TreeNode2.prototype.isDescendantOf = function(node) { return node !== this && node.isAncestorOf(this); }; return TreeNode2; }(); var Tree = function() { function Tree2(hostModel) { this.type = "tree"; this._nodes = []; this.hostModel = hostModel; } Tree2.prototype.eachNode = function(options, cb, context) { this.root.eachNode(options, cb, context); }; Tree2.prototype.getNodeByDataIndex = function(dataIndex) { var rawIndex = this.data.getRawIndex(dataIndex); return this._nodes[rawIndex]; }; Tree2.prototype.getNodeById = function(name) { return this.root.getNodeById(name); }; Tree2.prototype.update = function() { var data = this.data; var nodes = this._nodes; for (var i = 0, len2 = nodes.length; i < len2; i++) { nodes[i].dataIndex = -1; } for (var i = 0, len2 = data.count(); i < len2; i++) { nodes[data.getRawIndex(i)].dataIndex = i; } }; Tree2.prototype.clearLayouts = function() { this.data.clearItemLayouts(); }; Tree2.createTree = function(dataRoot, hostModel, beforeLink) { var tree = new Tree2(hostModel); var listData = []; var dimMax = 1; buildHierarchy(dataRoot); function buildHierarchy(dataNode, parentNode) { var value = dataNode.value; dimMax = Math.max(dimMax, isArray$1(value) ? value.length : 1); listData.push(dataNode); var node = new TreeNode(convertOptionIdName(dataNode.name, ""), tree); parentNode ? addChild(node, parentNode) : tree.root = node; tree._nodes.push(node); var children = dataNode.children; if (children) { for (var i = 0; i < children.length; i++) { buildHierarchy(children[i], node); } } } tree.root.updateDepthAndHeight(0); var dimensions = prepareSeriesDataSchema(listData, { coordDimensions: ["value"], dimensionsCount: dimMax }).dimensions; var list2 = new SeriesData$1(dimensions, hostModel); list2.initData(listData); beforeLink && beforeLink(list2); linkSeriesData({ mainData: list2, struct: tree, structAttr: "tree" }); tree.update(); return tree; }; return Tree2; }(); function addChild(child, node) { var children = node.children; if (child.parentNode === node) { return; } children.push(child); child.parentNode = node; } var Tree$1 = Tree; function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) { if (payload && indexOf(validPayloadTypes, payload.type) >= 0) { var root = seriesModel.getData().tree.root; var targetNode = payload.targetNode; if (typeof targetNode === "string") { targetNode = root.getNodeById(targetNode); } if (targetNode && root.contains(targetNode)) { return { node: targetNode }; } var targetNodeId = payload.targetNodeId; if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) { return { node: targetNode }; } } } function getPathToRoot(node) { var path = []; while (node) { node = node.parentNode; node && path.push(node); } return path.reverse(); } function aboveViewRoot(viewRoot, node) { var viewPath = getPathToRoot(viewRoot); return indexOf(viewPath, node) >= 0; } function wrapTreePathInfo(node, seriesModel) { var treePathInfo = []; while (node) { var nodeDataIndex = node.dataIndex; treePathInfo.push({ name: node.name, dataIndex: nodeDataIndex, value: seriesModel.getRawValue(nodeDataIndex) }); node = node.parentNode; } treePathInfo.reverse(); return treePathInfo; } var TreeSeriesModel = function(_super) { __extends$1(TreeSeriesModel2, _super); function TreeSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.hasSymbolVisual = true; _this.ignoreStyleOnData = true; return _this; } TreeSeriesModel2.prototype.getInitialData = function(option) { var root = { name: option.name, children: option.data }; var leaves = option.leaves || {}; var leavesModel = new Model$1(leaves, this, this.ecModel); var tree = Tree$1.createTree(root, this, beforeLink); function beforeLink(nodeData) { nodeData.wrapMethod("getItemModel", function(model, idx) { var node = tree.getNodeByDataIndex(idx); if (!(node && node.children.length && node.isExpand)) { model.parentModel = leavesModel; } return model; }); } var treeDepth = 0; tree.eachNode("preorder", function(node) { if (node.depth > treeDepth) { treeDepth = node.depth; } }); var expandAndCollapse = option.expandAndCollapse; var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth; tree.root.eachNode("preorder", function(node) { var item = node.hostTree.data.getRawDataItem(node.dataIndex); node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth; }); return tree.data; }; TreeSeriesModel2.prototype.getOrient = function() { var orient = this.get("orient"); if (orient === "horizontal") { orient = "LR"; } else if (orient === "vertical") { orient = "TB"; } return orient; }; TreeSeriesModel2.prototype.setZoom = function(zoom) { this.option.zoom = zoom; }; TreeSeriesModel2.prototype.setCenter = function(center2) { this.option.center = center2; }; TreeSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var tree = this.getData().tree; var realRoot = tree.root.children[0]; var node = tree.getNodeByDataIndex(dataIndex); var value = node.getValue(); var name = node.name; while (node && node !== realRoot) { name = node.parentNode.name + "." + name; node = node.parentNode; } return createTooltipMarkup("nameValue", { name, value, noValue: isNaN(value) || value == null }); }; TreeSeriesModel2.prototype.getDataParams = function(dataIndex) { var params = _super.prototype.getDataParams.apply(this, arguments); var node = this.getData().tree.getNodeByDataIndex(dataIndex); params.treeAncestors = wrapTreePathInfo(node, this); return params; }; TreeSeriesModel2.type = "series.tree"; TreeSeriesModel2.layoutMode = "box"; TreeSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "view", left: "12%", top: "12%", right: "12%", bottom: "12%", layout: "orthogonal", edgeShape: "curve", edgeForkPosition: "50%", roam: false, nodeScaleRatio: 0.4, center: null, zoom: 1, orient: "LR", symbol: "emptyCircle", symbolSize: 7, expandAndCollapse: true, initialTreeDepth: 2, lineStyle: { color: "#ccc", width: 1.5, curveness: 0.5 }, itemStyle: { color: "lightsteelblue", borderWidth: 1.5 }, label: { show: true }, animationEasing: "linear", animationDuration: 700, animationDurationUpdate: 500 }; return TreeSeriesModel2; }(SeriesModel$1); var TreeSeriesModel$1 = TreeSeriesModel; function eachAfter(root, callback, separation2) { var nodes = [root]; var next = []; var node; while (node = nodes.pop()) { next.push(node); if (node.isExpand) { var children = node.children; if (children.length) { for (var i = 0; i < children.length; i++) { nodes.push(children[i]); } } } } while (node = next.pop()) { callback(node, separation2); } } function eachBefore(root, callback) { var nodes = [root]; var node; while (node = nodes.pop()) { callback(node); if (node.isExpand) { var children = node.children; if (children.length) { for (var i = children.length - 1; i >= 0; i--) { nodes.push(children[i]); } } } } } function treeLayout(ecModel, api) { ecModel.eachSeriesByType("tree", function(seriesModel) { commonLayout(seriesModel, api); }); } function commonLayout(seriesModel, api) { var layoutInfo = getViewRect$4(seriesModel, api); seriesModel.layoutInfo = layoutInfo; var layout2 = seriesModel.get("layout"); var width = 0; var height = 0; var separation$1 = null; if (layout2 === "radial") { width = 2 * Math.PI; height = Math.min(layoutInfo.height, layoutInfo.width) / 2; separation$1 = separation(function(node1, node2) { return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth; }); } else { width = layoutInfo.width; height = layoutInfo.height; separation$1 = separation(); } var virtualRoot = seriesModel.getData().tree.root; var realRoot = virtualRoot.children[0]; if (realRoot) { init(virtualRoot); eachAfter(realRoot, firstWalk, separation$1); virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim; eachBefore(realRoot, secondWalk); var left_1 = realRoot; var right_1 = realRoot; var bottom_1 = realRoot; eachBefore(realRoot, function(node) { var x = node.getLayout().x; if (x < left_1.getLayout().x) { left_1 = node; } if (x > right_1.getLayout().x) { right_1 = node; } if (node.depth > bottom_1.depth) { bottom_1 = node; } }); var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2; var tx_1 = delta - left_1.getLayout().x; var kx_1 = 0; var ky_1 = 0; var coorX_1 = 0; var coorY_1 = 0; if (layout2 === "radial") { kx_1 = width / (right_1.getLayout().x + delta + tx_1); ky_1 = height / (bottom_1.depth - 1 || 1); eachBefore(realRoot, function(node) { coorX_1 = (node.getLayout().x + tx_1) * kx_1; coorY_1 = (node.depth - 1) * ky_1; var finalCoor = radialCoordinate(coorX_1, coorY_1); node.setLayout({ x: finalCoor.x, y: finalCoor.y, rawX: coorX_1, rawY: coorY_1 }, true); }); } else { var orient_1 = seriesModel.getOrient(); if (orient_1 === "RL" || orient_1 === "LR") { ky_1 = height / (right_1.getLayout().x + delta + tx_1); kx_1 = width / (bottom_1.depth - 1 || 1); eachBefore(realRoot, function(node) { coorY_1 = (node.getLayout().x + tx_1) * ky_1; coorX_1 = orient_1 === "LR" ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1; node.setLayout({ x: coorX_1, y: coorY_1 }, true); }); } else if (orient_1 === "TB" || orient_1 === "BT") { kx_1 = width / (right_1.getLayout().x + delta + tx_1); ky_1 = height / (bottom_1.depth - 1 || 1); eachBefore(realRoot, function(node) { coorX_1 = (node.getLayout().x + tx_1) * kx_1; coorY_1 = orient_1 === "TB" ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1; node.setLayout({ x: coorX_1, y: coorY_1 }, true); }); } } } } function treeVisual(ecModel) { ecModel.eachSeriesByType("tree", function(seriesModel) { var data = seriesModel.getData(); var tree = data.tree; tree.eachNode(function(node) { var model = node.getModel(); var style = model.getModel("itemStyle").getItemStyle(); var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); extend(existsStyle, style); }); }); } function installTreeAction(registers) { registers.registerAction({ type: "treeExpandAndCollapse", event: "treeExpandAndCollapse", update: "update" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", subType: "tree", query: payload }, function(seriesModel) { var dataIndex = payload.dataIndex; var tree = seriesModel.getData().tree; var node = tree.getNodeByDataIndex(dataIndex); node.isExpand = !node.isExpand; }); }); registers.registerAction({ type: "treeRoam", event: "treeRoam", update: "none" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", subType: "tree", query: payload }, function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var res = updateCenterAndZoom(coordSys, payload); seriesModel.setCenter && seriesModel.setCenter(res.center); seriesModel.setZoom && seriesModel.setZoom(res.zoom); }); }); } function install$H(registers) { registers.registerChartView(TreeView$1); registers.registerSeriesModel(TreeSeriesModel$1); registers.registerLayout(treeLayout); registers.registerVisual(treeVisual); installTreeAction(registers); } var noop = function() { }; var actionTypes = ["treemapZoomToNode", "treemapRender", "treemapMove"]; function installTreemapAction(registers) { for (var i = 0; i < actionTypes.length; i++) { registers.registerAction({ type: actionTypes[i], update: "updateView" }, noop); } registers.registerAction({ type: "treemapRootToNode", update: "updateView" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", subType: "treemap", query: payload }, handleRootToNode); function handleRootToNode(model, index) { var types = ["treemapZoomToNode", "treemapRootToNode"]; var targetInfo = retrieveTargetInfo(payload, types, model); if (targetInfo) { var originViewRoot = model.getViewRoot(); if (originViewRoot) { payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; } model.resetViewRoot(targetInfo.node); } } }); } function enableAriaDecalForTree(seriesModel) { var data = seriesModel.getData(); var tree = data.tree; var decalPaletteScope2 = {}; tree.eachNode(function(node) { var current = node; while (current && current.depth > 1) { current = current.parentNode; } var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope2); node.setVisual("decal", decal); }); } var TreemapSeriesModel = function(_super) { __extends$1(TreemapSeriesModel2, _super); function TreemapSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TreemapSeriesModel2.type; _this.preventUsingHoverLayer = true; return _this; } TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) { var root = { name: option.name, children: option.data }; completeTreeValue$1(root); var levels = option.levels || []; var designatedVisualItemStyle = this.designatedVisualItemStyle = {}; var designatedVisualModel = new Model$1({ itemStyle: designatedVisualItemStyle }, this, ecModel); levels = option.levels = setDefault(levels, ecModel); var levelModels = map$1(levels || [], function(levelDefine) { return new Model$1(levelDefine, designatedVisualModel, ecModel); }, this); var tree = Tree$1.createTree(root, this, beforeLink); function beforeLink(nodeData) { nodeData.wrapMethod("getItemModel", function(model, idx) { var node = tree.getNodeByDataIndex(idx); var levelModel = node ? levelModels[node.depth] : null; model.parentModel = levelModel || designatedVisualModel; return model; }); } return tree.data; }; TreemapSeriesModel2.prototype.optionUpdated = function() { this.resetViewRoot(); }; TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var value = this.getRawValue(dataIndex); var name = data.getName(dataIndex); return createTooltipMarkup("nameValue", { name, value }); }; TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) { var params = _super.prototype.getDataParams.apply(this, arguments); var node = this.getData().tree.getNodeByDataIndex(dataIndex); params.treeAncestors = wrapTreePathInfo(node, this); params.treePathInfo = params.treeAncestors; return params; }; TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) { this.layoutInfo = this.layoutInfo || {}; extend(this.layoutInfo, layoutInfo); }; TreemapSeriesModel2.prototype.mapIdToIndex = function(id) { var idIndexMap = this._idIndexMap; if (!idIndexMap) { idIndexMap = this._idIndexMap = createHashMap(); this._idIndexMapCount = 0; } var index = idIndexMap.get(id); if (index == null) { idIndexMap.set(id, index = this._idIndexMapCount++); } return index; }; TreemapSeriesModel2.prototype.getViewRoot = function() { return this._viewRoot; }; TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) { viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; var root = this.getRawData().tree.root; if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { this._viewRoot = root; } }; TreemapSeriesModel2.prototype.enableAriaDecal = function() { enableAriaDecalForTree(this); }; TreemapSeriesModel2.type = "series.treemap"; TreemapSeriesModel2.layoutMode = "box"; TreemapSeriesModel2.defaultOption = { progressive: 0, left: "center", top: "middle", width: "80%", height: "80%", sort: true, clipWindow: "origin", squareRatio: 0.5 * (1 + Math.sqrt(5)), leafDepth: null, drillDownIcon: "\u25B6", zoomToNodeRatio: 0.32 * 0.32, roam: true, nodeClick: "zoomToNode", animation: true, animationDurationUpdate: 900, animationEasing: "quinticInOut", breadcrumb: { show: true, height: 22, left: "center", top: "bottom", emptyItemWidth: 25, itemStyle: { color: "rgba(0,0,0,0.7)", textStyle: { color: "#fff" } } }, label: { show: true, distance: 0, padding: 5, position: "inside", color: "#fff", overflow: "truncate" }, upperLabel: { show: false, position: [0, "50%"], height: 20, overflow: "truncate", verticalAlign: "middle" }, itemStyle: { color: null, colorAlpha: null, colorSaturation: null, borderWidth: 0, gapWidth: 0, borderColor: "#fff", borderColorSaturation: null }, emphasis: { upperLabel: { show: true, position: [0, "50%"], ellipsis: true, verticalAlign: "middle" } }, visualDimension: 0, visualMin: null, visualMax: null, color: [], colorAlpha: null, colorSaturation: null, colorMappingBy: "index", visibleMin: 10, childrenVisibleMin: null, levels: [] }; return TreemapSeriesModel2; }(SeriesModel$1); function completeTreeValue$1(dataNode) { var sum2 = 0; each$g(dataNode.children, function(child) { completeTreeValue$1(child); var childValue = child.value; isArray$1(childValue) && (childValue = childValue[0]); sum2 += childValue; }); var thisValue = dataNode.value; if (isArray$1(thisValue)) { thisValue = thisValue[0]; } if (thisValue == null || isNaN(thisValue)) { thisValue = sum2; } if (thisValue < 0) { thisValue = 0; } isArray$1(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; } function setDefault(levels, ecModel) { var globalColorList = normalizeToArray(ecModel.get("color")); var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"])); if (!globalColorList) { return; } levels = levels || []; var hasColorDefine; var hasDecalDefine; each$g(levels, function(levelDefine) { var model = new Model$1(levelDefine); var modelColor = model.get("color"); var modelDecal = model.get("decal"); if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") { hasColorDefine = true; } if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") { hasDecalDefine = true; } }); var level0 = levels[0] || (levels[0] = {}); if (!hasColorDefine) { level0.color = globalColorList.slice(); } if (!hasDecalDefine && globalDecalList) { level0.decal = globalDecalList.slice(); } return levels; } var TreemapSeriesModel$1 = TreemapSeriesModel; var TEXT_PADDING = 8; var ITEM_GAP = 8; var ARRAY_LENGTH = 5; var Breadcrumb = function() { function Breadcrumb2(containerGroup) { this.group = new Group$4(); containerGroup.add(this.group); } Breadcrumb2.prototype.render = function(seriesModel, api, targetNode, onSelect) { var model = seriesModel.getModel("breadcrumb"); var thisGroup = this.group; thisGroup.removeAll(); if (!model.get("show") || !targetNode) { return; } var normalStyleModel = model.getModel("itemStyle"); var textStyleModel = normalStyleModel.getModel("textStyle"); var layoutParam = { pos: { left: model.get("left"), right: model.get("right"), top: model.get("top"), bottom: model.get("bottom") }, box: { width: api.getWidth(), height: api.getHeight() }, emptyItemWidth: model.get("emptyItemWidth"), totalWidth: 0, renderList: [] }; this._prepare(targetNode, layoutParam, textStyleModel); this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect); positionElement(thisGroup, layoutParam.pos, layoutParam.box); }; Breadcrumb2.prototype._prepare = function(targetNode, layoutParam, textStyleModel) { for (var node = targetNode; node; node = node.parentNode) { var text = convertOptionIdName(node.getModel().get("name"), ""); var textRect = textStyleModel.getTextRect(text); var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth); layoutParam.totalWidth += itemWidth + ITEM_GAP; layoutParam.renderList.push({ node, text, width: itemWidth }); } }; Breadcrumb2.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) { var lastX = 0; var emptyItemWidth = layoutParam.emptyItemWidth; var height = seriesModel.get(["breadcrumb", "height"]); var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box); var totalWidth = layoutParam.totalWidth; var renderList2 = layoutParam.renderList; for (var i = renderList2.length - 1; i >= 0; i--) { var item = renderList2[i]; var itemNode = item.node; var itemWidth = item.width; var text = item.text; if (totalWidth > availableSize.width) { totalWidth -= itemWidth - emptyItemWidth; itemWidth = emptyItemWidth; text = null; } var el = new Polygon$1({ shape: { points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList2.length - 1, i === 0) }, style: defaults(normalStyleModel.getItemStyle(), { lineJoin: "bevel" }), textContent: new ZRText$1({ style: { text, fill: textStyleModel.getTextColor(), font: textStyleModel.getFont() } }), textConfig: { position: "inside" }, z2: Z2_EMPHASIS_LIFT * 1e4, onclick: curry$1(onSelect, itemNode) }); el.disableLabelAnimation = true; this.group.add(el); packEventData(el, seriesModel, itemNode); lastX += itemWidth + ITEM_GAP; } }; Breadcrumb2.prototype.remove = function() { this.group.removeAll(); }; return Breadcrumb2; }(); function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) { var points2 = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]]; !tail && points2.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]); !head && points2.push([x, y + itemHeight / 2]); return points2; } function packEventData(el, seriesModel, itemNode) { getECData(el).eventData = { componentType: "series", componentSubType: "treemap", componentIndex: seriesModel.componentIndex, seriesIndex: seriesModel.seriesIndex, seriesName: seriesModel.name, seriesType: "treemap", selfType: "breadcrumb", nodeData: { dataIndex: itemNode && itemNode.dataIndex, name: itemNode && itemNode.name }, treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel) }; } var Breadcrumb$1 = Breadcrumb; var AnimationWrap = function() { function AnimationWrap2() { this._storage = []; this._elExistsMap = {}; } AnimationWrap2.prototype.add = function(el, target, duration, delay, easing2) { if (this._elExistsMap[el.id]) { return false; } this._elExistsMap[el.id] = true; this._storage.push({ el, target, duration, delay, easing: easing2 }); return true; }; AnimationWrap2.prototype.finished = function(callback) { this._finishedCallback = callback; return this; }; AnimationWrap2.prototype.start = function() { var _this = this; var count2 = this._storage.length; var checkTerminate = function() { count2--; if (count2 <= 0) { _this._storage.length = 0; _this._elExistsMap = {}; _this._finishedCallback && _this._finishedCallback(); } }; for (var i = 0, len2 = this._storage.length; i < len2; i++) { var item = this._storage[i]; item.el.animateTo(item.target, { duration: item.duration, delay: item.delay, easing: item.easing, setToFinal: true, done: checkTerminate, aborted: checkTerminate }); } return this; }; return AnimationWrap2; }(); function createWrap() { return new AnimationWrap(); } var Group$2 = Group$4; var Rect$1 = Rect$3; var DRAG_THRESHOLD = 3; var PATH_LABEL_NOAMAL = "label"; var PATH_UPPERLABEL_NORMAL = "upperLabel"; var Z2_BASE = Z2_EMPHASIS_LIFT * 10; var Z2_BG = Z2_EMPHASIS_LIFT * 2; var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3; var getStateItemStyle = makeStyleMapper([ ["fill", "color"], ["stroke", "strokeColor"], ["lineWidth", "strokeWidth"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"] ]); var getItemStyleNormal = function(model) { var itemStyle = getStateItemStyle(model); itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null; return itemStyle; }; var inner$d = makeInner(); var TreemapView = function(_super) { __extends$1(TreemapView2, _super); function TreemapView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TreemapView2.type; _this._state = "ready"; _this._storage = createStorage(); return _this; } TreemapView2.prototype.render = function(seriesModel, ecModel, api, payload) { var models = ecModel.findComponents({ mainType: "series", subType: "treemap", query: payload }); if (indexOf(models, seriesModel) < 0) { return; } this.seriesModel = seriesModel; this.api = api; this.ecModel = ecModel; var types = ["treemapZoomToNode", "treemapRootToNode"]; var targetInfo = retrieveTargetInfo(payload, types, seriesModel); var payloadType = payload && payload.type; var layoutInfo = seriesModel.layoutInfo; var isInit = !this._oldTree; var thisStorage = this._storage; var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? { rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()], direction: payload.direction } : null; var containerGroup = this._giveContainerGroup(layoutInfo); var hasAnimation = seriesModel.get("animation"); var renderResult = this._doRender(containerGroup, seriesModel, reRoot); hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally(); this._resetController(api); this._renderBreadcrumb(seriesModel, api, targetInfo); }; TreemapView2.prototype._giveContainerGroup = function(layoutInfo) { var containerGroup = this._containerGroup; if (!containerGroup) { containerGroup = this._containerGroup = new Group$2(); this._initEvents(containerGroup); this.group.add(containerGroup); } containerGroup.x = layoutInfo.x; containerGroup.y = layoutInfo.y; return containerGroup; }; TreemapView2.prototype._doRender = function(containerGroup, seriesModel, reRoot) { var thisTree = seriesModel.getData().tree; var oldTree = this._oldTree; var lastsForAnimation = createStorage(); var thisStorage = createStorage(); var oldStorage = this._storage; var willInvisibleEls = []; function doRenderNode(thisNode, oldNode, parentGroup, depth) { return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth); } dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); var willDeleteEls = clearStorage(oldStorage); this._oldTree = thisTree; this._storage = thisStorage; return { lastsForAnimation, willDeleteEls, renderFinally }; function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) { if (sameTree) { oldViewChildren = thisViewChildren; each$g(thisViewChildren, function(child, index) { !child.isRemoved() && processNode(index, index); }); } else { new DataDiffer$1(oldViewChildren, thisViewChildren, getKey2, getKey2).add(processNode).update(processNode).remove(curry$1(processNode, null)).execute(); } function getKey2(node) { return node.getId(); } function processNode(newIndex, oldIndex) { var thisNode = newIndex != null ? thisViewChildren[newIndex] : null; var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null; var group = doRenderNode(thisNode, oldNode, parentGroup, depth); group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1); } } function clearStorage(storage2) { var willDeleteEls2 = createStorage(); storage2 && each$g(storage2, function(store, storageName) { var delEls = willDeleteEls2[storageName]; each$g(store, function(el) { el && (delEls.push(el), inner$d(el).willDelete = true); }); }); return willDeleteEls2; } function renderFinally() { each$g(willDeleteEls, function(els) { each$g(els, function(el) { el.parent && el.parent.remove(el); }); }); each$g(willInvisibleEls, function(el) { el.invisible = true; el.dirty(); }); } }; TreemapView2.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) { var durationOption = seriesModel.get("animationDurationUpdate"); var easingOption = seriesModel.get("animationEasing"); var duration = (isFunction(durationOption) ? 0 : durationOption) || 0; var easing2 = (isFunction(easingOption) ? null : easingOption) || "cubicOut"; var animationWrap = createWrap(); each$g(renderResult.willDeleteEls, function(store, storageName) { each$g(store, function(el, rawIndex) { if (el.invisible) { return; } var parent = el.parent; var target; var innerStore = inner$d(parent); if (reRoot && reRoot.direction === "drillDown") { target = parent === reRoot.rootNodeGroup ? { shape: { x: 0, y: 0, width: innerStore.nodeWidth, height: innerStore.nodeHeight }, style: { opacity: 0 } } : { style: { opacity: 0 } }; } else { var targetX = 0; var targetY = 0; if (!innerStore.willDelete) { targetX = innerStore.nodeWidth / 2; targetY = innerStore.nodeHeight / 2; } target = storageName === "nodeGroup" ? { x: targetX, y: targetY, style: { opacity: 0 } } : { shape: { x: targetX, y: targetY, width: 0, height: 0 }, style: { opacity: 0 } }; } target && animationWrap.add(el, target, duration, 0, easing2); }); }); each$g(this._storage, function(store, storageName) { each$g(store, function(el, rawIndex) { var last = renderResult.lastsForAnimation[storageName][rawIndex]; var target = {}; if (!last) { return; } if (el instanceof Group$4) { if (last.oldX != null) { target.x = el.x; target.y = el.y; el.x = last.oldX; el.y = last.oldY; } } else { if (last.oldShape) { target.shape = extend({}, el.shape); el.setShape(last.oldShape); } if (last.fadein) { el.setStyle("opacity", 0); target.style = { opacity: 1 }; } else if (el.style.opacity !== 1) { target.style = { opacity: 1 }; } } animationWrap.add(el, target, duration, 0, easing2); }); }, this); this._state = "animating"; animationWrap.finished(bind$2(function() { this._state = "ready"; renderResult.renderFinally(); }, this)).start(); }; TreemapView2.prototype._resetController = function(api) { var controller = this._controller; if (!controller) { controller = this._controller = new RoamController$1(api.getZr()); controller.enable(this.seriesModel.get("roam")); controller.on("pan", bind$2(this._onPan, this)); controller.on("zoom", bind$2(this._onZoom, this)); } var rect = new BoundingRect$1(0, 0, api.getWidth(), api.getHeight()); controller.setPointerChecker(function(e2, x, y) { return rect.contain(x, y); }); }; TreemapView2.prototype._clearController = function() { var controller = this._controller; if (controller) { controller.dispose(); controller = null; } }; TreemapView2.prototype._onPan = function(e2) { if (this._state !== "animating" && (Math.abs(e2.dx) > DRAG_THRESHOLD || Math.abs(e2.dy) > DRAG_THRESHOLD)) { var root = this.seriesModel.getData().tree.root; if (!root) { return; } var rootLayout = root.getLayout(); if (!rootLayout) { return; } this.api.dispatchAction({ type: "treemapMove", from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: rootLayout.x + e2.dx, y: rootLayout.y + e2.dy, width: rootLayout.width, height: rootLayout.height } }); } }; TreemapView2.prototype._onZoom = function(e2) { var mouseX = e2.originX; var mouseY = e2.originY; if (this._state !== "animating") { var root = this.seriesModel.getData().tree.root; if (!root) { return; } var rootLayout = root.getLayout(); if (!rootLayout) { return; } var rect = new BoundingRect$1(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height); var layoutInfo = this.seriesModel.layoutInfo; mouseX -= layoutInfo.x; mouseY -= layoutInfo.y; var m2 = create$1(); translate(m2, m2, [-mouseX, -mouseY]); scale$1(m2, m2, [e2.scale, e2.scale]); translate(m2, m2, [mouseX, mouseY]); rect.applyTransform(m2); this.api.dispatchAction({ type: "treemapRender", from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height } }); } }; TreemapView2.prototype._initEvents = function(containerGroup) { var _this = this; containerGroup.on("click", function(e2) { if (_this._state !== "ready") { return; } var nodeClick = _this.seriesModel.get("nodeClick", true); if (!nodeClick) { return; } var targetInfo = _this.findTarget(e2.offsetX, e2.offsetY); if (!targetInfo) { return; } var node = targetInfo.node; if (node.getLayout().isLeafRoot) { _this._rootToNode(targetInfo); } else { if (nodeClick === "zoomToNode") { _this._zoomToNode(targetInfo); } else if (nodeClick === "link") { var itemModel = node.hostTree.data.getItemModel(node.dataIndex); var link2 = itemModel.get("link", true); var linkTarget = itemModel.get("target", true) || "blank"; link2 && windowOpen(link2, linkTarget); } } }, this); }; TreemapView2.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) { var _this = this; if (!targetInfo) { targetInfo = seriesModel.get("leafDepth", true) != null ? { node: seriesModel.getViewRoot() } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2); if (!targetInfo) { targetInfo = { node: seriesModel.getData().tree.root }; } } (this._breadcrumb || (this._breadcrumb = new Breadcrumb$1(this.group))).render(seriesModel, api, targetInfo.node, function(node) { if (_this._state !== "animating") { aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({ node }) : _this._zoomToNode({ node }); } }); }; TreemapView2.prototype.remove = function() { this._clearController(); this._containerGroup && this._containerGroup.removeAll(); this._storage = createStorage(); this._state = "ready"; this._breadcrumb && this._breadcrumb.remove(); }; TreemapView2.prototype.dispose = function() { this._clearController(); }; TreemapView2.prototype._zoomToNode = function(targetInfo) { this.api.dispatchAction({ type: "treemapZoomToNode", from: this.uid, seriesId: this.seriesModel.id, targetNode: targetInfo.node }); }; TreemapView2.prototype._rootToNode = function(targetInfo) { this.api.dispatchAction({ type: "treemapRootToNode", from: this.uid, seriesId: this.seriesModel.id, targetNode: targetInfo.node }); }; TreemapView2.prototype.findTarget = function(x, y) { var targetInfo; var viewRoot = this.seriesModel.getViewRoot(); viewRoot.eachNode({ attr: "viewChildren", order: "preorder" }, function(node) { var bgEl = this._storage.background[node.getRawIndex()]; if (bgEl) { var point = bgEl.transformCoordToLocal(x, y); var shape = bgEl.shape; if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) { targetInfo = { node, offsetX: point[0], offsetY: point[1] }; } else { return false; } } }, this); return targetInfo; }; TreemapView2.type = "treemap"; return TreemapView2; }(ChartView$1); function createStorage() { return { nodeGroup: [], background: [], content: [] }; } function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) { if (!thisNode) { return; } var thisLayout = thisNode.getLayout(); var data = seriesModel.getData(); var nodeModel = thisNode.getModel(); data.setItemGraphicEl(thisNode.dataIndex, null); if (!thisLayout || !thisLayout.isInView) { return; } var thisWidth = thisLayout.width; var thisHeight = thisLayout.height; var borderWidth = thisLayout.borderWidth; var thisInvisible = thisLayout.invisible; var thisRawIndex = thisNode.getRawIndex(); var oldRawIndex = oldNode && oldNode.getRawIndex(); var thisViewChildren = thisNode.viewChildren; var upperHeight = thisLayout.upperHeight; var isParent = thisViewChildren && thisViewChildren.length; var itemStyleNormalModel = nodeModel.getModel("itemStyle"); var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]); var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]); var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]); var borderRadius = itemStyleNormalModel.get("borderRadius") || 0; var group = giveGraphic("nodeGroup", Group$2); if (!group) { return; } parentGroup.add(group); group.x = thisLayout.x || 0; group.y = thisLayout.y || 0; group.markRedraw(); inner$d(group).nodeWidth = thisWidth; inner$d(group).nodeHeight = thisHeight; if (thisLayout.isAboveViewRoot) { return group; } var bg = giveGraphic("background", Rect$1, depth, Z2_BG); bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); var focus = nodeModel.get(["emphasis", "focus"]); var blurScope = nodeModel.get(["emphasis", "blurScope"]); var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus; if (isParent) { if (isHighDownDispatcher(group)) { setAsHighDownDispatcher(group, false); } if (bg) { setAsHighDownDispatcher(bg, true); data.setItemGraphicEl(thisNode.dataIndex, bg); enableHoverFocus(bg, focusOrIndices, blurScope); } } else { var content = giveGraphic("content", Rect$1, depth, Z2_CONTENT); content && renderContent(group, content); bg.disableMorphing = true; if (bg && isHighDownDispatcher(bg)) { setAsHighDownDispatcher(bg, false); } setAsHighDownDispatcher(group, true); data.setItemGraphicEl(thisNode.dataIndex, group); enableHoverFocus(group, focusOrIndices, blurScope); } return group; function renderBackground(group2, bg2, useUpperLabel) { var ecData = getECData(bg2); ecData.dataIndex = thisNode.dataIndex; ecData.seriesIndex = seriesModel.seriesIndex; bg2.setShape({ x: 0, y: 0, width: thisWidth, height: thisHeight, r: borderRadius }); if (thisInvisible) { processInvisible(bg2); } else { bg2.invisible = false; var style = thisNode.getVisual("style"); var visualBorderColor = style.stroke; var normalStyle = getItemStyleNormal(itemStyleNormalModel); normalStyle.fill = visualBorderColor; var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor"); var blurStyle = getStateItemStyle(itemStyleBlurModel); blurStyle.fill = itemStyleBlurModel.get("borderColor"); var selectStyle = getStateItemStyle(itemStyleSelectModel); selectStyle.fill = itemStyleSelectModel.get("borderColor"); if (useUpperLabel) { var upperLabelWidth = thisWidth - 2 * borderWidth; prepareText(bg2, visualBorderColor, style.opacity, { x: borderWidth, y: 0, width: upperLabelWidth, height: upperHeight }); } else { bg2.removeTextContent(); } bg2.setStyle(normalStyle); bg2.ensureState("emphasis").style = emphasisStyle; bg2.ensureState("blur").style = blurStyle; bg2.ensureState("select").style = selectStyle; setDefaultStateProxy(bg2); } group2.add(bg2); } function renderContent(group2, content2) { var ecData = getECData(content2); ecData.dataIndex = thisNode.dataIndex; ecData.seriesIndex = seriesModel.seriesIndex; var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0); var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0); content2.culling = true; content2.setShape({ x: borderWidth, y: borderWidth, width: contentWidth, height: contentHeight, r: borderRadius }); if (thisInvisible) { processInvisible(content2); } else { content2.invisible = false; var nodeStyle = thisNode.getVisual("style"); var visualColor = nodeStyle.fill; var normalStyle = getItemStyleNormal(itemStyleNormalModel); normalStyle.fill = visualColor; normalStyle.decal = nodeStyle.decal; var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); var blurStyle = getStateItemStyle(itemStyleBlurModel); var selectStyle = getStateItemStyle(itemStyleSelectModel); prepareText(content2, visualColor, nodeStyle.opacity, null); content2.setStyle(normalStyle); content2.ensureState("emphasis").style = emphasisStyle; content2.ensureState("blur").style = blurStyle; content2.ensureState("select").style = selectStyle; setDefaultStateProxy(content2); } group2.add(content2); } function processInvisible(element) { !element.invisible && willInvisibleEls.push(element); } function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) { var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL); var defaultText = convertOptionIdName(nodeModel.get("name"), null); var isShow = normalLabelModel.getShallow("show"); setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), { defaultText: isShow ? defaultText : null, inheritColor: visualColor, defaultOpacity: visualOpacity, labelFetcher: seriesModel, labelDataIndex: thisNode.dataIndex }); var textEl = rectEl.getTextContent(); if (!textEl) { return; } var textStyle = textEl.style; var textPadding = normalizeCssArray$1(textStyle.padding || 0); if (upperLabelRect) { rectEl.setTextConfig({ layoutRect: upperLabelRect }); textEl.disableLabelLayout = true; } textEl.beforeUpdate = function() { var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0); var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0); if (textStyle.width !== width || textStyle.height !== height) { textEl.setStyle({ width, height }); } }; textStyle.truncateMinChar = 2; textStyle.lineOverflow = "truncate"; addDrillDownIcon(textStyle, upperLabelRect, thisLayout); var textEmphasisState = textEl.getState("emphasis"); addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout); } function addDrillDownIcon(style, upperLabelRect, thisLayout2) { var text = style ? style.text : null; if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) { var iconChar = seriesModel.get("drillDownIcon", true); style.text = iconChar ? iconChar + " " + text : text; } } function giveGraphic(storageName, Ctor, depth2, z) { var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]; var lasts = lastsForAnimation[storageName]; if (element) { oldStorage[storageName][oldRawIndex] = null; prepareAnimationWhenHasOld(lasts, element); } else if (!thisInvisible) { element = new Ctor(); if (element instanceof Displayable$1) { element.z2 = calculateZ2(depth2, z); } prepareAnimationWhenNoOld(lasts, element); } return thisStorage[storageName][thisRawIndex] = element; } function prepareAnimationWhenHasOld(lasts, element) { var lastCfg = lasts[thisRawIndex] = {}; if (element instanceof Group$2) { lastCfg.oldX = element.x; lastCfg.oldY = element.y; } else { lastCfg.oldShape = extend({}, element.shape); } } function prepareAnimationWhenNoOld(lasts, element) { var lastCfg = lasts[thisRawIndex] = {}; var parentNode = thisNode.parentNode; var isGroup = element instanceof Group$4; if (parentNode && (!reRoot || reRoot.direction === "drillDown")) { var parentOldX = 0; var parentOldY = 0; var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()]; if (!reRoot && parentOldBg && parentOldBg.oldShape) { parentOldX = parentOldBg.oldShape.width; parentOldY = parentOldBg.oldShape.height; } if (isGroup) { lastCfg.oldX = 0; lastCfg.oldY = parentOldY; } else { lastCfg.oldShape = { x: parentOldX, y: parentOldY, width: 0, height: 0 }; } } lastCfg.fadein = !isGroup; } } function calculateZ2(depth, z2InLevel) { return depth * Z2_BASE + z2InLevel; } var TreemapView$1 = TreemapView; var each$d = each$g; var isObject = isObject$3; var CATEGORY_DEFAULT_VISUAL_INDEX = -1; var VisualMapping = function() { function VisualMapping2(option) { var mappingMethod = option.mappingMethod; var visualType = option.type; var thisOption = this.option = clone$4(option); this.type = visualType; this.mappingMethod = mappingMethod; this._normalizeData = normalizers[mappingMethod]; var visualHandler = VisualMapping2.visualHandlers[visualType]; this.applyVisual = visualHandler.applyVisual; this.getColorMapper = visualHandler.getColorMapper; this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod]; if (mappingMethod === "piecewise") { normalizeVisualRange(thisOption); preprocessForPiecewise(thisOption); } else if (mappingMethod === "category") { thisOption.categories ? preprocessForSpecifiedCategory(thisOption) : normalizeVisualRange(thisOption, true); } else { assert(mappingMethod !== "linear" || thisOption.dataExtent); normalizeVisualRange(thisOption); } } VisualMapping2.prototype.mapValueToVisual = function(value) { var normalized = this._normalizeData(value); return this._normalizedToVisual(normalized, value); }; VisualMapping2.prototype.getNormalizer = function() { return bind$2(this._normalizeData, this); }; VisualMapping2.listVisualTypes = function() { return keys(VisualMapping2.visualHandlers); }; VisualMapping2.isValidType = function(visualType) { return VisualMapping2.visualHandlers.hasOwnProperty(visualType); }; VisualMapping2.eachVisual = function(visual, callback, context) { if (isObject$3(visual)) { each$g(visual, callback, context); } else { callback.call(context, visual); } }; VisualMapping2.mapVisual = function(visual, callback, context) { var isPrimary; var newVisual = isArray$1(visual) ? [] : isObject$3(visual) ? {} : (isPrimary = true, null); VisualMapping2.eachVisual(visual, function(v, key2) { var newVal = callback.call(context, v, key2); isPrimary ? newVisual = newVal : newVisual[key2] = newVal; }); return newVisual; }; VisualMapping2.retrieveVisuals = function(obj) { var ret = {}; var hasVisual; obj && each$d(VisualMapping2.visualHandlers, function(h, visualType) { if (obj.hasOwnProperty(visualType)) { ret[visualType] = obj[visualType]; hasVisual = true; } }); return hasVisual ? ret : null; }; VisualMapping2.prepareVisualTypes = function(visualTypes) { if (isArray$1(visualTypes)) { visualTypes = visualTypes.slice(); } else if (isObject(visualTypes)) { var types_1 = []; each$d(visualTypes, function(item, type) { types_1.push(type); }); visualTypes = types_1; } else { return []; } visualTypes.sort(function(type1, type2) { return type2 === "color" && type1 !== "color" && type1.indexOf("color") === 0 ? 1 : -1; }); return visualTypes; }; VisualMapping2.dependsOn = function(visualType1, visualType2) { return visualType2 === "color" ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2; }; VisualMapping2.findPieceIndex = function(value, pieceList, findClosestWhenOutside) { var possibleI; var abs2 = Infinity; for (var i = 0, len2 = pieceList.length; i < len2; i++) { var pieceValue = pieceList[i].value; if (pieceValue != null) { if (pieceValue === value || typeof pieceValue === "string" && pieceValue === value + "") { return i; } findClosestWhenOutside && updatePossible(pieceValue, i); } } for (var i = 0, len2 = pieceList.length; i < len2; i++) { var piece = pieceList[i]; var interval = piece.interval; var close_1 = piece.close; if (interval) { if (interval[0] === -Infinity) { if (littleThan(close_1[1], value, interval[1])) { return i; } } else if (interval[1] === Infinity) { if (littleThan(close_1[0], interval[0], value)) { return i; } } else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) { return i; } findClosestWhenOutside && updatePossible(interval[0], i); findClosestWhenOutside && updatePossible(interval[1], i); } } if (findClosestWhenOutside) { return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI; } function updatePossible(val, index) { var newAbs = Math.abs(val - value); if (newAbs < abs2) { abs2 = newAbs; possibleI = index; } } }; VisualMapping2.visualHandlers = { color: { applyVisual: makeApplyVisual("color"), getColorMapper: function() { var thisOption = this.option; return bind$2(thisOption.mappingMethod === "category" ? function(value, isNormalized) { !isNormalized && (value = this._normalizeData(value)); return doMapCategory.call(this, value); } : function(value, isNormalized, out2) { var returnRGBArray = !!out2; !isNormalized && (value = this._normalizeData(value)); out2 = fastLerp(value, thisOption.parsedVisual, out2); return returnRGBArray ? out2 : stringify(out2, "rgba"); }, this); }, _normalizedToVisual: { linear: function(normalized) { return stringify(fastLerp(normalized, this.option.parsedVisual), "rgba"); }, category: doMapCategory, piecewise: function(normalized, value) { var result = getSpecifiedVisual.call(this, value); if (result == null) { result = stringify(fastLerp(normalized, this.option.parsedVisual), "rgba"); } return result; }, fixed: doMapFixed } }, colorHue: makePartialColorVisualHandler(function(color$1, value) { return modifyHSL(color$1, value); }), colorSaturation: makePartialColorVisualHandler(function(color$1, value) { return modifyHSL(color$1, null, value); }), colorLightness: makePartialColorVisualHandler(function(color$1, value) { return modifyHSL(color$1, null, null, value); }), colorAlpha: makePartialColorVisualHandler(function(color$1, value) { return modifyAlpha(color$1, value); }), decal: { applyVisual: makeApplyVisual("decal"), _normalizedToVisual: { linear: null, category: doMapCategory, piecewise: null, fixed: null } }, opacity: { applyVisual: makeApplyVisual("opacity"), _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) }, liftZ: { applyVisual: makeApplyVisual("liftZ"), _normalizedToVisual: { linear: doMapFixed, category: doMapFixed, piecewise: doMapFixed, fixed: doMapFixed } }, symbol: { applyVisual: function(value, getter, setter) { var symbolCfg = this.mapValueToVisual(value); setter("symbol", symbolCfg); }, _normalizedToVisual: { linear: doMapToArray, category: doMapCategory, piecewise: function(normalized, value) { var result = getSpecifiedVisual.call(this, value); if (result == null) { result = doMapToArray.call(this, normalized); } return result; }, fixed: doMapFixed } }, symbolSize: { applyVisual: makeApplyVisual("symbolSize"), _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) } }; return VisualMapping2; }(); function preprocessForPiecewise(thisOption) { var pieceList = thisOption.pieceList; thisOption.hasSpecialVisual = false; each$g(pieceList, function(piece, index) { piece.originIndex = index; if (piece.visual != null) { thisOption.hasSpecialVisual = true; } }); } function preprocessForSpecifiedCategory(thisOption) { var categories = thisOption.categories; var categoryMap = thisOption.categoryMap = {}; var visual = thisOption.visual; each$d(categories, function(cate, index) { categoryMap[cate] = index; }); if (!isArray$1(visual)) { var visualArr_1 = []; if (isObject$3(visual)) { each$d(visual, function(v, cate) { var index = categoryMap[cate]; visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v; }); } else { visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual; } visual = setVisualToOption(thisOption, visualArr_1); } for (var i = categories.length - 1; i >= 0; i--) { if (visual[i] == null) { delete categoryMap[categories[i]]; categories.pop(); } } } function normalizeVisualRange(thisOption, isCategory2) { var visual = thisOption.visual; var visualArr = []; if (isObject$3(visual)) { each$d(visual, function(v) { visualArr.push(v); }); } else if (visual != null) { visualArr.push(visual); } var doNotNeedPair = { color: 1, symbol: 1 }; if (!isCategory2 && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) { visualArr[1] = visualArr[0]; } setVisualToOption(thisOption, visualArr); } function makePartialColorVisualHandler(applyValue) { return { applyVisual: function(value, getter, setter) { var colorChannel = this.mapValueToVisual(value); setter("color", applyValue(getter("color"), colorChannel)); }, _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) }; } function doMapToArray(normalized) { var visual = this.option.visual; return visual[Math.round(linearMap$2(normalized, [0, 1], [0, visual.length - 1], true))] || {}; } function makeApplyVisual(visualType) { return function(value, getter, setter) { setter(visualType, this.mapValueToVisual(value)); }; } function doMapCategory(normalized) { var visual = this.option.visual; return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized]; } function doMapFixed() { return this.option.visual[0]; } function createNormalizedToNumericVisual(sourceExtent) { return { linear: function(normalized) { return linearMap$2(normalized, sourceExtent, this.option.visual, true); }, category: doMapCategory, piecewise: function(normalized, value) { var result = getSpecifiedVisual.call(this, value); if (result == null) { result = linearMap$2(normalized, sourceExtent, this.option.visual, true); } return result; }, fixed: doMapFixed }; } function getSpecifiedVisual(value) { var thisOption = this.option; var pieceList = thisOption.pieceList; if (thisOption.hasSpecialVisual) { var pieceIndex = VisualMapping.findPieceIndex(value, pieceList); var piece = pieceList[pieceIndex]; if (piece && piece.visual) { return piece.visual[this.type]; } } } function setVisualToOption(thisOption, visualArr) { thisOption.visual = visualArr; if (thisOption.type === "color") { thisOption.parsedVisual = map$1(visualArr, function(item) { return parse(item); }); } return visualArr; } var normalizers = { linear: function(value) { return linearMap$2(value, this.option.dataExtent, [0, 1], true); }, piecewise: function(value) { var pieceList = this.option.pieceList; var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true); if (pieceIndex != null) { return linearMap$2(pieceIndex, [0, pieceList.length - 1], [0, 1], true); } }, category: function(value) { var index = this.option.categories ? this.option.categoryMap[value] : value; return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index; }, fixed: noop$1 }; function littleThan(close2, a, b) { return close2 ? a <= b : a < b; } var VisualMapping$1 = VisualMapping; var ITEM_STYLE_NORMAL = "itemStyle"; var inner$c = makeInner(); var treemapVisual = { seriesType: "treemap", reset: function(seriesModel) { var tree = seriesModel.getData().tree; var root = tree.root; if (root.isRemoved()) { return; } travelTree(root, {}, seriesModel.getViewRoot().getAncestors(), seriesModel); } }; function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) { var nodeModel = node.getModel(); var nodeLayout = node.getLayout(); var data = node.hostTree.data; if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) { return; } var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL); var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); var borderColor = nodeItemStyleModel.get("borderColor"); var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation"); var thisNodeColor; if (borderColorSaturation != null) { thisNodeColor = calculateColor(visuals); borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor); } existsStyle.stroke = borderColor; var viewChildren = node.viewChildren; if (!viewChildren || !viewChildren.length) { thisNodeColor = calculateColor(visuals); existsStyle.fill = thisNodeColor; } else { var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); each$g(viewChildren, function(child, index) { if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) { var childVisual = mapVisual$1(nodeModel, visuals, child, index, mapping_1, seriesModel); travelTree(child, childVisual, viewRootAncestors, seriesModel); } }); } } function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) { var visuals = extend({}, designatedVisual); var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle; each$g(["color", "colorAlpha", "colorSaturation"], function(visualName) { designatedVisualItemStyle[visualName] = designatedVisual[visualName]; var val = nodeItemStyleModel.get(visualName); designatedVisualItemStyle[visualName] = null; val != null && (visuals[visualName] = val); }); return visuals; } function calculateColor(visuals) { var color2 = getValueVisualDefine(visuals, "color"); if (color2) { var colorAlpha = getValueVisualDefine(visuals, "colorAlpha"); var colorSaturation = getValueVisualDefine(visuals, "colorSaturation"); if (colorSaturation) { color2 = modifyHSL(color2, null, null, colorSaturation); } if (colorAlpha) { color2 = modifyAlpha(color2, colorAlpha); } return color2; } } function calculateBorderColor(borderColorSaturation, thisNodeColor) { return thisNodeColor != null ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null; } function getValueVisualDefine(visuals, name) { var value = visuals[name]; if (value != null && value !== "none") { return value; } } function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) { if (!viewChildren || !viewChildren.length) { return; } var rangeVisual = getRangeVisual(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual(nodeModel, "colorAlpha") || getRangeVisual(nodeModel, "colorSaturation")); if (!rangeVisual) { return; } var visualMin = nodeModel.get("visualMin"); var visualMax = nodeModel.get("visualMax"); var dataExtent = nodeLayout.dataExtent.slice(); visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin); visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax); var colorMappingBy = nodeModel.get("colorMappingBy"); var opt = { type: rangeVisual.name, dataExtent, visual: rangeVisual.range }; if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) { opt.mappingMethod = "category"; opt.loop = true; } else { opt.mappingMethod = "linear"; } var mapping = new VisualMapping$1(opt); inner$c(mapping).drColorMappingBy = colorMappingBy; return mapping; } function getRangeVisual(nodeModel, name) { var range = nodeModel.get(name); return isArray$1(range) && range.length ? { name, range } : null; } function mapVisual$1(nodeModel, visuals, child, index, mapping, seriesModel) { var childVisuals = extend({}, visuals); if (mapping) { var mappingType = mapping.type; var colorMappingBy = mappingType === "color" && inner$c(mapping).drColorMappingBy; var value = colorMappingBy === "index" ? index : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension")); childVisuals[mappingType] = mapping.mapValueToVisual(value); } return childVisuals; } var mathMax$3 = Math.max; var mathMin$3 = Math.min; var retrieveValue = retrieve; var each$c = each$g; var PATH_BORDER_WIDTH = ["itemStyle", "borderWidth"]; var PATH_GAP_WIDTH = ["itemStyle", "gapWidth"]; var PATH_UPPER_LABEL_SHOW = ["upperLabel", "show"]; var PATH_UPPER_LABEL_HEIGHT = ["upperLabel", "height"]; var treemapLayout = { seriesType: "treemap", reset: function(seriesModel, ecModel, api, payload) { var ecWidth = api.getWidth(); var ecHeight = api.getHeight(); var seriesOption = seriesModel.option; var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); var size = seriesOption.size || []; var containerWidth = parsePercent$1(retrieveValue(layoutInfo.width, size[0]), ecWidth); var containerHeight = parsePercent$1(retrieveValue(layoutInfo.height, size[1]), ecHeight); var payloadType = payload && payload.type; var types = ["treemapZoomToNode", "treemapRootToNode"]; var targetInfo = retrieveTargetInfo(payload, types, seriesModel); var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null; var viewRoot = seriesModel.getViewRoot(); var viewAbovePath = getPathToRoot(viewRoot); if (payloadType !== "treemapMove") { var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight]; var sort_1 = seriesOption.sort; if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") { sort_1 = "desc"; } var options = { squareRatio: seriesOption.squareRatio, sort: sort_1, leafDepth: seriesOption.leafDepth }; viewRoot.hostTree.clearLayouts(); var viewRootLayout_1 = { x: 0, y: 0, width: rootSize[0], height: rootSize[1], area: rootSize[0] * rootSize[1] }; viewRoot.setLayout(viewRootLayout_1); squarify(viewRoot, options, false, 0); viewRootLayout_1 = viewRoot.getLayout(); each$c(viewAbovePath, function(node, index) { var childValue = (viewAbovePath[index + 1] || viewRoot).getValue(); node.setLayout(extend({ dataExtent: [childValue, childValue], borderWidth: 0, upperHeight: 0 }, viewRootLayout_1)); }); } var treeRoot = seriesModel.getData().tree.root; treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true); seriesModel.setLayoutInfo(layoutInfo); prunning(treeRoot, new BoundingRect$1(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0); } }; function squarify(node, options, hideChildren, depth) { var width; var height; if (node.isRemoved()) { return; } var thisLayout = node.getLayout(); width = thisLayout.width; height = thisLayout.height; var nodeModel = node.getModel(); var borderWidth = nodeModel.get(PATH_BORDER_WIDTH); var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2; var upperLabelHeight = getUpperLabelHeight(nodeModel); var upperHeight = Math.max(borderWidth, upperLabelHeight); var layoutOffset = borderWidth - halfGapWidth; var layoutOffsetUpper = upperHeight - halfGapWidth; node.setLayout({ borderWidth, upperHeight, upperLabelHeight }, true); width = mathMax$3(width - 2 * layoutOffset, 0); height = mathMax$3(height - layoutOffset - layoutOffsetUpper, 0); var totalArea = width * height; var viewChildren = initChildren$1(node, nodeModel, totalArea, options, hideChildren, depth); if (!viewChildren.length) { return; } var rect = { x: layoutOffset, y: layoutOffsetUpper, width, height }; var rowFixedLength = mathMin$3(width, height); var best = Infinity; var row = []; row.area = 0; for (var i = 0, len2 = viewChildren.length; i < len2; ) { var child = viewChildren[i]; row.push(child); row.area += child.getLayout().area; var score = worst(row, rowFixedLength, options.squareRatio); if (score <= best) { i++; best = score; } else { row.area -= row.pop().getLayout().area; position(row, rowFixedLength, rect, halfGapWidth, false); rowFixedLength = mathMin$3(rect.width, rect.height); row.length = row.area = 0; best = Infinity; } } if (row.length) { position(row, rowFixedLength, rect, halfGapWidth, true); } if (!hideChildren) { var childrenVisibleMin = nodeModel.get("childrenVisibleMin"); if (childrenVisibleMin != null && totalArea < childrenVisibleMin) { hideChildren = true; } } for (var i = 0, len2 = viewChildren.length; i < len2; i++) { squarify(viewChildren[i], options, hideChildren, depth + 1); } } function initChildren$1(node, nodeModel, totalArea, options, hideChildren, depth) { var viewChildren = node.children || []; var orderBy = options.sort; orderBy !== "asc" && orderBy !== "desc" && (orderBy = null); var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; if (hideChildren && !overLeafDepth) { return node.viewChildren = []; } viewChildren = filter(viewChildren, function(child) { return !child.isRemoved(); }); sort$1(viewChildren, orderBy); var info = statistic(nodeModel, viewChildren, orderBy); if (info.sum === 0) { return node.viewChildren = []; } info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren); if (info.sum === 0) { return node.viewChildren = []; } for (var i = 0, len2 = viewChildren.length; i < len2; i++) { var area = viewChildren[i].getValue() / info.sum * totalArea; viewChildren[i].setLayout({ area }); } if (overLeafDepth) { viewChildren.length && node.setLayout({ isLeafRoot: true }, true); viewChildren.length = 0; } node.viewChildren = viewChildren; node.setLayout({ dataExtent: info.dataExtent }, true); return viewChildren; } function filterByThreshold(nodeModel, totalArea, sum2, orderBy, orderedChildren) { if (!orderBy) { return sum2; } var visibleMin = nodeModel.get("visibleMin"); var len2 = orderedChildren.length; var deletePoint = len2; for (var i = len2 - 1; i >= 0; i--) { var value = orderedChildren[orderBy === "asc" ? len2 - i - 1 : i].getValue(); if (value / sum2 * totalArea < visibleMin) { deletePoint = i; sum2 -= value; } } orderBy === "asc" ? orderedChildren.splice(0, len2 - deletePoint) : orderedChildren.splice(deletePoint, len2 - deletePoint); return sum2; } function sort$1(viewChildren, orderBy) { if (orderBy) { viewChildren.sort(function(a, b) { var diff2 = orderBy === "asc" ? a.getValue() - b.getValue() : b.getValue() - a.getValue(); return diff2 === 0 ? orderBy === "asc" ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff2; }); } return viewChildren; } function statistic(nodeModel, children, orderBy) { var sum2 = 0; for (var i = 0, len2 = children.length; i < len2; i++) { sum2 += children[i].getValue(); } var dimension = nodeModel.get("visualDimension"); var dataExtent; if (!children || !children.length) { dataExtent = [NaN, NaN]; } else if (dimension === "value" && orderBy) { dataExtent = [children[children.length - 1].getValue(), children[0].getValue()]; orderBy === "asc" && dataExtent.reverse(); } else { dataExtent = [Infinity, -Infinity]; each$c(children, function(child) { var value = child.getValue(dimension); value < dataExtent[0] && (dataExtent[0] = value); value > dataExtent[1] && (dataExtent[1] = value); }); } return { sum: sum2, dataExtent }; } function worst(row, rowFixedLength, ratio) { var areaMax = 0; var areaMin = Infinity; for (var i = 0, area = void 0, len2 = row.length; i < len2; i++) { area = row[i].getLayout().area; if (area) { area < areaMin && (areaMin = area); area > areaMax && (areaMax = area); } } var squareArea = row.area * row.area; var f = rowFixedLength * rowFixedLength * ratio; return squareArea ? mathMax$3(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity; } function position(row, rowFixedLength, rect, halfGapWidth, flush) { var idx0WhenH = rowFixedLength === rect.width ? 0 : 1; var idx1WhenH = 1 - idx0WhenH; var xy = ["x", "y"]; var wh = ["width", "height"]; var last = rect[xy[idx0WhenH]]; var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0; if (flush || rowOtherLength > rect[wh[idx1WhenH]]) { rowOtherLength = rect[wh[idx1WhenH]]; } for (var i = 0, rowLen = row.length; i < rowLen; i++) { var node = row[i]; var nodeLayout = {}; var step2 = rowOtherLength ? node.getLayout().area / rowOtherLength : 0; var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax$3(rowOtherLength - 2 * halfGapWidth, 0); var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last; var modWH = i === rowLen - 1 || remain < step2 ? remain : step2; var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax$3(modWH - 2 * halfGapWidth, 0); nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$3(halfGapWidth, wh1 / 2); nodeLayout[xy[idx0WhenH]] = last + mathMin$3(halfGapWidth, wh0 / 2); last += modWH; node.setLayout(nodeLayout, true); } rect[xy[idx1WhenH]] += rowOtherLength; rect[wh[idx1WhenH]] -= rowOtherLength; } function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) { var currNode = (targetInfo || {}).node; var defaultSize = [containerWidth, containerHeight]; if (!currNode || currNode === viewRoot) { return defaultSize; } var parent; var viewArea = containerWidth * containerHeight; var area = viewArea * seriesModel.option.zoomToNodeRatio; while (parent = currNode.parentNode) { var sum2 = 0; var siblings = parent.children; for (var i = 0, len2 = siblings.length; i < len2; i++) { sum2 += siblings[i].getValue(); } var currNodeValue = currNode.getValue(); if (currNodeValue === 0) { return defaultSize; } area *= sum2 / currNodeValue; var parentModel = parent.getModel(); var borderWidth = parentModel.get(PATH_BORDER_WIDTH); var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel)); area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5); area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER); currNode = parent; } area < viewArea && (area = viewArea); var scale2 = Math.pow(area / viewArea, 0.5); return [containerWidth * scale2, containerHeight * scale2]; } function calculateRootPosition(layoutInfo, rootRect, targetInfo) { if (rootRect) { return { x: rootRect.x, y: rootRect.y }; } var defaultPosition = { x: 0, y: 0 }; if (!targetInfo) { return defaultPosition; } var targetNode = targetInfo.node; var layout2 = targetNode.getLayout(); if (!layout2) { return defaultPosition; } var targetCenter = [layout2.width / 2, layout2.height / 2]; var node = targetNode; while (node) { var nodeLayout = node.getLayout(); targetCenter[0] += nodeLayout.x; targetCenter[1] += nodeLayout.y; node = node.parentNode; } return { x: layoutInfo.width / 2 - targetCenter[0], y: layoutInfo.height / 2 - targetCenter[1] }; } function prunning(node, clipRect, viewAbovePath, viewRoot, depth) { var nodeLayout = node.getLayout(); var nodeInViewAbovePath = viewAbovePath[depth]; var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node; if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) { return; } node.setLayout({ isInView: true, invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout), isAboveViewRoot }, true); var childClipRect = new BoundingRect$1(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height); each$c(node.viewChildren || [], function(child) { prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1); }); } function getUpperLabelHeight(model) { return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0; } function install$G(registers) { registers.registerSeriesModel(TreemapSeriesModel$1); registers.registerChartView(TreemapView$1); registers.registerVisual(treemapVisual); registers.registerLayout(treemapLayout); installTreemapAction(registers); } function categoryFilter(ecModel) { var legendModels = ecModel.findComponents({ mainType: "legend" }); if (!legendModels || !legendModels.length) { return; } ecModel.eachSeriesByType("graph", function(graphSeries) { var categoriesData = graphSeries.getCategoriesData(); var graph = graphSeries.getGraph(); var data = graph.data; var categoryNames = categoriesData.mapArray(categoriesData.getName); data.filterSelf(function(idx) { var model = data.getItemModel(idx); var category = model.getShallow("category"); if (category != null) { if (typeof category === "number") { category = categoryNames[category]; } for (var i = 0; i < legendModels.length; i++) { if (!legendModels[i].isSelected(category)) { return false; } } } return true; }); }); } function categoryVisual(ecModel) { var paletteScope = {}; ecModel.eachSeriesByType("graph", function(seriesModel) { var categoriesData = seriesModel.getCategoriesData(); var data = seriesModel.getData(); var categoryNameIdxMap = {}; categoriesData.each(function(idx) { var name = categoriesData.getName(idx); categoryNameIdxMap["ec-" + name] = idx; var itemModel = categoriesData.getItemModel(idx); var style = itemModel.getModel("itemStyle").getItemStyle(); if (!style.fill) { style.fill = seriesModel.getColorFromPalette(name, paletteScope); } categoriesData.setItemVisual(idx, "style", style); var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"]; for (var i = 0; i < symbolVisualList.length; i++) { var symbolVisual = itemModel.getShallow(symbolVisualList[i], true); if (symbolVisual != null) { categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual); } } }); if (categoriesData.count()) { data.each(function(idx) { var model = data.getItemModel(idx); var categoryIdx = model.getShallow("category"); if (categoryIdx != null) { if (typeof categoryIdx === "string") { categoryIdx = categoryNameIdxMap["ec-" + categoryIdx]; } var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style"); var style = data.ensureUniqueItemVisual(idx, "style"); extend(style, categoryStyle); var visualList = ["symbol", "symbolSize", "symbolKeepAspect"]; for (var i = 0; i < visualList.length; i++) { data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i])); } } }); } }); } function normalize$1(a) { if (!(a instanceof Array)) { a = [a, a]; } return a; } function graphEdgeVisual(ecModel) { ecModel.eachSeriesByType("graph", function(seriesModel) { var graph = seriesModel.getGraph(); var edgeData = seriesModel.getEdgeData(); var symbolType = normalize$1(seriesModel.get("edgeSymbol")); var symbolSize = normalize$1(seriesModel.get("edgeSymbolSize")); edgeData.setVisual("fromSymbol", symbolType && symbolType[0]); edgeData.setVisual("toSymbol", symbolType && symbolType[1]); edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]); edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle()); edgeData.each(function(idx) { var itemModel = edgeData.getItemModel(idx); var edge = graph.getEdgeByIndex(idx); var symbolType2 = normalize$1(itemModel.getShallow("symbol", true)); var symbolSize2 = normalize$1(itemModel.getShallow("symbolSize", true)); var style = itemModel.getModel("lineStyle").getLineStyle(); var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style"); extend(existsStyle, style); switch (existsStyle.stroke) { case "source": { var nodeStyle = edge.node1.getVisual("style"); existsStyle.stroke = nodeStyle && nodeStyle.fill; break; } case "target": { var nodeStyle = edge.node2.getVisual("style"); existsStyle.stroke = nodeStyle && nodeStyle.fill; break; } } symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]); symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]); symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]); symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]); }); }); } var KEY_DELIMITER = "-->"; var getAutoCurvenessParams = function(seriesModel) { return seriesModel.get("autoCurveness") || null; }; var createCurveness = function(seriesModel, appendLength) { var autoCurvenessParmas = getAutoCurvenessParams(seriesModel); var length2 = 20; var curvenessList = []; if (typeof autoCurvenessParmas === "number") { length2 = autoCurvenessParmas; } else if (isArray$1(autoCurvenessParmas)) { seriesModel.__curvenessList = autoCurvenessParmas; return; } if (appendLength > length2) { length2 = appendLength; } var len2 = length2 % 2 ? length2 + 2 : length2 + 3; curvenessList = []; for (var i = 0; i < len2; i++) { curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1)); } seriesModel.__curvenessList = curvenessList; }; var getKeyOfEdges = function(n1, n2, seriesModel) { var source = [n1.id, n1.dataIndex].join("."); var target = [n2.id, n2.dataIndex].join("."); return [seriesModel.uid, source, target].join(KEY_DELIMITER); }; var getOppositeKey = function(key2) { var keys2 = key2.split(KEY_DELIMITER); return [keys2[0], keys2[2], keys2[1]].join(KEY_DELIMITER); }; var getEdgeFromMap = function(edge, seriesModel) { var key2 = getKeyOfEdges(edge.node1, edge.node2, seriesModel); return seriesModel.__edgeMap[key2]; }; var getTotalLengthBetweenNodes = function(edge, seriesModel) { var len2 = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel); var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel); return len2 + lenV; }; var getEdgeMapLengthWithKey = function(key2, seriesModel) { var edgeMap = seriesModel.__edgeMap; return edgeMap[key2] ? edgeMap[key2].length : 0; }; function initCurvenessList(seriesModel) { if (!getAutoCurvenessParams(seriesModel)) { return; } seriesModel.__curvenessList = []; seriesModel.__edgeMap = {}; createCurveness(seriesModel); } function createEdgeMapForCurveness(n1, n2, seriesModel, index) { if (!getAutoCurvenessParams(seriesModel)) { return; } var key2 = getKeyOfEdges(n1, n2, seriesModel); var edgeMap = seriesModel.__edgeMap; var oppositeEdges = edgeMap[getOppositeKey(key2)]; if (edgeMap[key2] && !oppositeEdges) { edgeMap[key2].isForward = true; } else if (oppositeEdges && edgeMap[key2]) { oppositeEdges.isForward = true; edgeMap[key2].isForward = false; } edgeMap[key2] = edgeMap[key2] || []; edgeMap[key2].push(index); } function getCurvenessForEdge(edge, seriesModel, index, needReverse) { var autoCurvenessParams = getAutoCurvenessParams(seriesModel); var isArrayParam = isArray$1(autoCurvenessParams); if (!autoCurvenessParams) { return null; } var edgeArray = getEdgeFromMap(edge, seriesModel); if (!edgeArray) { return null; } var edgeIndex = -1; for (var i = 0; i < edgeArray.length; i++) { if (edgeArray[i] === index) { edgeIndex = i; break; } } var totalLen = getTotalLengthBetweenNodes(edge, seriesModel); createCurveness(seriesModel, totalLen); edge.lineStyle = edge.lineStyle || {}; var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel); var curvenessList = seriesModel.__curvenessList; var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1; if (!edgeArray.isForward) { var oppositeKey = getOppositeKey(curKey); var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel); var resValue = curvenessList[edgeIndex + len2 + parityCorrection]; if (needReverse) { if (isArrayParam) { if (autoCurvenessParams && autoCurvenessParams[0] === 0) { return (len2 + parityCorrection) % 2 ? resValue : -resValue; } else { return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue; } } else { return (len2 + parityCorrection) % 2 ? resValue : -resValue; } } else { return curvenessList[edgeIndex + len2 + parityCorrection]; } } else { return curvenessList[parityCorrection + edgeIndex]; } } function simpleLayout(seriesModel) { var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.type !== "view") { return; } var graph = seriesModel.getGraph(); graph.eachNode(function(node) { var model = node.getModel(); node.setLayout([+model.get("x"), +model.get("y")]); }); simpleLayoutEdge(graph, seriesModel); } function simpleLayoutEdge(graph, seriesModel) { graph.eachEdge(function(edge, index) { var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, seriesModel, index, true), 0); var p1 = clone$3(edge.node1.getLayout()); var p2 = clone$3(edge.node2.getLayout()); var points2 = [p1, p2]; if (+curveness) { points2.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]); } edge.setLayout(points2); }); } function graphSimpleLayout(ecModel, api) { ecModel.eachSeriesByType("graph", function(seriesModel) { var layout2 = seriesModel.get("layout"); var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.type !== "view") { var data_1 = seriesModel.getData(); var dimensions_1 = []; each$g(coordSys.dimensions, function(coordDim) { dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim)); }); for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) { var value = []; var hasValue = false; for (var i = 0; i < dimensions_1.length; i++) { var val = data_1.get(dimensions_1[i], dataIndex); if (!isNaN(val)) { hasValue = true; } value.push(val); } if (hasValue) { data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value)); } else { data_1.setItemLayout(dataIndex, [NaN, NaN]); } } simpleLayoutEdge(data_1.graph, seriesModel); } else if (!layout2 || layout2 === "none") { simpleLayout(seriesModel); } }); } function getNodeGlobalScale(seriesModel) { var coordSys = seriesModel.coordinateSystem; if (coordSys.type !== "view") { return 1; } var nodeScaleRatio = seriesModel.option.nodeScaleRatio; var groupZoom = coordSys.scaleX; var roamZoom = coordSys.getZoom(); var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; return nodeScale / groupZoom; } function getSymbolSize(node) { var symbolSize = node.getVisual("symbolSize"); if (symbolSize instanceof Array) { symbolSize = (symbolSize[0] + symbolSize[1]) / 2; } return +symbolSize; } var PI$2 = Math.PI; var _symbolRadiansHalf = []; function circularLayout(seriesModel, basedOn) { var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.type !== "view") { return; } var rect = coordSys.getBoundingRect(); var nodeData = seriesModel.getData(); var graph = nodeData.graph; var cx = rect.width / 2 + rect.x; var cy = rect.height / 2 + rect.y; var r = Math.min(rect.width, rect.height) / 2; var count2 = nodeData.count(); nodeData.setLayout({ cx, cy }); if (!count2) { return; } _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count2); graph.eachEdge(function(edge, index) { var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge(edge, seriesModel, index), 0); var p1 = clone$3(edge.node1.getLayout()); var p2 = clone$3(edge.node2.getLayout()); var cp1; var x12 = (p1[0] + p2[0]) / 2; var y12 = (p1[1] + p2[1]) / 2; if (+curveness) { curveness *= 3; cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)]; } edge.setLayout([p1, p2, cp1]); }); } var _layoutNodesBasedOn = { value: function(seriesModel, graph, nodeData, r, cx, cy, count2) { var angle = 0; var sum2 = nodeData.getSum("value"); var unitAngle = Math.PI * 2 / (sum2 || count2); graph.eachNode(function(node) { var value = node.getValue("value"); var radianHalf = unitAngle * (sum2 ? value : 1) / 2; angle += radianHalf; node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); angle += radianHalf; }); }, symbolSize: function(seriesModel, graph, nodeData, r, cx, cy, count2) { var sumRadian = 0; _symbolRadiansHalf.length = count2; var nodeScale = getNodeGlobalScale(seriesModel); graph.eachNode(function(node) { var symbolSize = getSymbolSize(node); isNaN(symbolSize) && (symbolSize = 2); symbolSize < 0 && (symbolSize = 0); symbolSize *= nodeScale; var symbolRadianHalf = Math.asin(symbolSize / 2 / r); isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$2 / 2); _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf; sumRadian += symbolRadianHalf * 2; }); var halfRemainRadian = (2 * PI$2 - sumRadian) / count2 / 2; var angle = 0; graph.eachNode(function(node) { var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex]; angle += radianHalf; node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); angle += radianHalf; }); } }; function graphCircularLayout(ecModel) { ecModel.eachSeriesByType("graph", function(seriesModel) { if (seriesModel.get("layout") === "circular") { circularLayout(seriesModel, "symbolSize"); } }); } var scaleAndAdd = scaleAndAdd$1; function forceLayout(inNodes, inEdges, opts) { var nodes = inNodes; var edges = inEdges; var rect = opts.rect; var width = rect.width; var height = rect.height; var center2 = [rect.x + width / 2, rect.y + height / 2]; var gravity = opts.gravity == null ? 0.1 : opts.gravity; for (var i = 0; i < nodes.length; i++) { var n = nodes[i]; if (!n.p) { n.p = create$2(width * (Math.random() - 0.5) + center2[0], height * (Math.random() - 0.5) + center2[1]); } n.pp = clone$3(n.p); n.edges = null; } var initialFriction = opts.friction == null ? 0.6 : opts.friction; var friction = initialFriction; var beforeStepCallback; var afterStepCallback; return { warmUp: function() { friction = initialFriction * 0.8; }, setFixed: function(idx) { nodes[idx].fixed = true; }, setUnfixed: function(idx) { nodes[idx].fixed = false; }, beforeStep: function(cb) { beforeStepCallback = cb; }, afterStep: function(cb) { afterStepCallback = cb; }, step: function(cb) { beforeStepCallback && beforeStepCallback(nodes, edges); var v12 = []; var nLen = nodes.length; for (var i2 = 0; i2 < edges.length; i2++) { var e2 = edges[i2]; if (e2.ignoreForceLayout) { continue; } var n1 = e2.n1; var n2 = e2.n2; sub(v12, n2.p, n1.p); var d = len(v12) - e2.d; var w = n2.w / (n1.w + n2.w); if (isNaN(w)) { w = 0; } normalize$3(v12, v12); !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction); !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction); } for (var i2 = 0; i2 < nLen; i2++) { var n3 = nodes[i2]; if (!n3.fixed) { sub(v12, center2, n3.p); scaleAndAdd(n3.p, n3.p, v12, gravity * friction); } } for (var i2 = 0; i2 < nLen; i2++) { var n1 = nodes[i2]; for (var j = i2 + 1; j < nLen; j++) { var n2 = nodes[j]; sub(v12, n2.p, n1.p); var d = len(v12); if (d === 0) { set$1(v12, Math.random() - 0.5, Math.random() - 0.5); d = 1; } var repFact = (n1.rep + n2.rep) / d / d; !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact); !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact); } } var v = []; for (var i2 = 0; i2 < nLen; i2++) { var n3 = nodes[i2]; if (!n3.fixed) { sub(v, n3.p, n3.pp); scaleAndAdd(n3.p, n3.p, v, friction); copy$1(n3.pp, n3.p); } } friction = friction * 0.992; var finished2 = friction < 0.01; afterStepCallback && afterStepCallback(nodes, edges, finished2); cb && cb(finished2); } }; } function graphForceLayout(ecModel) { ecModel.eachSeriesByType("graph", function(graphSeries) { var coordSys = graphSeries.coordinateSystem; if (coordSys && coordSys.type !== "view") { return; } if (graphSeries.get("layout") === "force") { var preservedPoints_1 = graphSeries.preservedPoints || {}; var graph_1 = graphSeries.getGraph(); var nodeData_1 = graph_1.data; var edgeData = graph_1.edgeData; var forceModel = graphSeries.getModel("force"); var initLayout = forceModel.get("initLayout"); if (graphSeries.preservedPoints) { nodeData_1.each(function(idx) { var id = nodeData_1.getId(idx); nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]); }); } else if (!initLayout || initLayout === "none") { simpleLayout(graphSeries); } else if (initLayout === "circular") { circularLayout(graphSeries, "value"); } var nodeDataExtent_1 = nodeData_1.getDataExtent("value"); var edgeDataExtent_1 = edgeData.getDataExtent("value"); var repulsion = forceModel.get("repulsion"); var edgeLength = forceModel.get("edgeLength"); var repulsionArr_1 = isArray$1(repulsion) ? repulsion : [repulsion, repulsion]; var edgeLengthArr_1 = isArray$1(edgeLength) ? edgeLength : [edgeLength, edgeLength]; edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]]; var nodes_1 = nodeData_1.mapArray("value", function(value, idx) { var point = nodeData_1.getItemLayout(idx); var rep = linearMap$2(value, nodeDataExtent_1, repulsionArr_1); if (isNaN(rep)) { rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2; } return { w: rep, rep, fixed: nodeData_1.getItemModel(idx).get("fixed"), p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point }; }); var edges = edgeData.mapArray("value", function(value, idx) { var edge = graph_1.getEdgeByIndex(idx); var d = linearMap$2(value, edgeDataExtent_1, edgeLengthArr_1); if (isNaN(d)) { d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2; } var edgeModel = edge.getModel(); var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, graphSeries, idx, true), 0); return { n1: nodes_1[edge.node1.dataIndex], n2: nodes_1[edge.node2.dataIndex], d, curveness, ignoreForceLayout: edgeModel.get("ignoreForceLayout") }; }); var rect = coordSys.getBoundingRect(); var forceInstance = forceLayout(nodes_1, edges, { rect, gravity: forceModel.get("gravity"), friction: forceModel.get("friction") }); forceInstance.beforeStep(function(nodes, edges2) { for (var i = 0, l = nodes.length; i < l; i++) { if (nodes[i].fixed) { copy$1(nodes[i].p, graph_1.getNodeByIndex(i).getLayout()); } } }); forceInstance.afterStep(function(nodes, edges2, stopped) { for (var i = 0, l = nodes.length; i < l; i++) { if (!nodes[i].fixed) { graph_1.getNodeByIndex(i).setLayout(nodes[i].p); } preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p; } for (var i = 0, l = edges2.length; i < l; i++) { var e2 = edges2[i]; var edge = graph_1.getEdgeByIndex(i); var p1 = e2.n1.p; var p2 = e2.n2.p; var points2 = edge.getLayout(); points2 = points2 ? points2.slice() : []; points2[0] = points2[0] || []; points2[1] = points2[1] || []; copy$1(points2[0], p1); copy$1(points2[1], p2); if (+e2.curveness) { points2[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e2.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e2.curveness]; } edge.setLayout(points2); } }); graphSeries.forceLayout = forceInstance; graphSeries.preservedPoints = preservedPoints_1; forceInstance.step(); } else { graphSeries.forceLayout = null; } }); } function getViewRect$3(seriesModel, api, aspect) { var option = extend(seriesModel.getBoxLayoutParams(), { aspect }); return getLayoutRect(option, { width: api.getWidth(), height: api.getHeight() }); } function createViewCoordSys(ecModel, api) { var viewList = []; ecModel.eachSeriesByType("graph", function(seriesModel) { var coordSysType = seriesModel.get("coordinateSystem"); if (!coordSysType || coordSysType === "view") { var data_1 = seriesModel.getData(); var positions = data_1.mapArray(function(idx) { var itemModel = data_1.getItemModel(idx); return [+itemModel.get("x"), +itemModel.get("y")]; }); var min3 = []; var max3 = []; fromPoints(positions, min3, max3); if (max3[0] - min3[0] === 0) { max3[0] += 1; min3[0] -= 1; } if (max3[1] - min3[1] === 0) { max3[1] += 1; min3[1] -= 1; } var aspect = (max3[0] - min3[0]) / (max3[1] - min3[1]); var viewRect2 = getViewRect$3(seriesModel, api, aspect); if (isNaN(aspect)) { min3 = [viewRect2.x, viewRect2.y]; max3 = [viewRect2.x + viewRect2.width, viewRect2.y + viewRect2.height]; } var bbWidth = max3[0] - min3[0]; var bbHeight = max3[1] - min3[1]; var viewWidth = viewRect2.width; var viewHeight = viewRect2.height; var viewCoordSys = seriesModel.coordinateSystem = new View$1(); viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); viewCoordSys.setBoundingRect(min3[0], min3[1], bbWidth, bbHeight); viewCoordSys.setViewRect(viewRect2.x, viewRect2.y, viewWidth, viewHeight); viewCoordSys.setCenter(seriesModel.get("center")); viewCoordSys.setZoom(seriesModel.get("zoom")); viewList.push(viewCoordSys); } }); return viewList; } var straightLineProto = Line$3.prototype; var bezierCurveProto = BezierCurve$1.prototype; var StraightLineShape = function() { function StraightLineShape2() { this.x1 = 0; this.y1 = 0; this.x2 = 0; this.y2 = 0; this.percent = 1; } return StraightLineShape2; }(); (function(_super) { __extends$1(CurveShape, _super); function CurveShape() { return _super !== null && _super.apply(this, arguments) || this; } return CurveShape; })(StraightLineShape); function isStraightLine(shape) { return isNaN(+shape.cpx1) || isNaN(+shape.cpy1); } var ECLinePath = function(_super) { __extends$1(ECLinePath2, _super); function ECLinePath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "ec-line"; return _this; } ECLinePath2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; ECLinePath2.prototype.getDefaultShape = function() { return new StraightLineShape(); }; ECLinePath2.prototype.buildPath = function(ctx, shape) { if (isStraightLine(shape)) { straightLineProto.buildPath.call(this, ctx, shape); } else { bezierCurveProto.buildPath.call(this, ctx, shape); } }; ECLinePath2.prototype.pointAt = function(t) { if (isStraightLine(this.shape)) { return straightLineProto.pointAt.call(this, t); } else { return bezierCurveProto.pointAt.call(this, t); } }; ECLinePath2.prototype.tangentAt = function(t) { var shape = this.shape; var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t); return normalize$3(p, p); }; return ECLinePath2; }(Path$1); var ECLinePath$1 = ECLinePath; var SYMBOL_CATEGORIES = ["fromSymbol", "toSymbol"]; function makeSymbolTypeKey(symbolCategory) { return "_" + symbolCategory + "Type"; } function createSymbol(name, lineData, idx) { var symbolType = lineData.getItemVisual(idx, name); if (!symbolType || symbolType === "none") { return; } var symbolSize = lineData.getItemVisual(idx, name + "Size"); var symbolRotate = lineData.getItemVisual(idx, name + "Rotate"); var symbolOffset = lineData.getItemVisual(idx, name + "Offset"); var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect"); var symbolSizeArr = normalizeSymbolSize(symbolSize); var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr); var symbolPath = createSymbol$1(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect); symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0; symbolPath.name = name; return symbolPath; } function createLine(points2) { var line = new ECLinePath$1({ name: "line", subPixelOptimize: true }); setLinePoints(line.shape, points2); return line; } function setLinePoints(targetShape, points2) { targetShape.x1 = points2[0][0]; targetShape.y1 = points2[0][1]; targetShape.x2 = points2[1][0]; targetShape.y2 = points2[1][1]; targetShape.percent = 1; var cp1 = points2[2]; if (cp1) { targetShape.cpx1 = cp1[0]; targetShape.cpy1 = cp1[1]; } else { targetShape.cpx1 = NaN; targetShape.cpy1 = NaN; } } var Line = function(_super) { __extends$1(Line2, _super); function Line2(lineData, idx, seriesScope) { var _this = _super.call(this) || this; _this._createLine(lineData, idx, seriesScope); return _this; } Line2.prototype._createLine = function(lineData, idx, seriesScope) { var seriesModel = lineData.hostModel; var linePoints = lineData.getItemLayout(idx); var line = createLine(linePoints); line.shape.percent = 0; initProps(line, { shape: { percent: 1 } }, seriesModel, idx); this.add(line); each$g(SYMBOL_CATEGORIES, function(symbolCategory) { var symbol = createSymbol(symbolCategory, lineData, idx); this.add(symbol); this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory); }, this); this._updateCommonStl(lineData, idx, seriesScope); }; Line2.prototype.updateData = function(lineData, idx, seriesScope) { var seriesModel = lineData.hostModel; var line = this.childOfName("line"); var linePoints = lineData.getItemLayout(idx); var target = { shape: {} }; setLinePoints(target.shape, linePoints); updateProps$1(line, target, seriesModel, idx); each$g(SYMBOL_CATEGORIES, function(symbolCategory) { var symbolType = lineData.getItemVisual(idx, symbolCategory); var key2 = makeSymbolTypeKey(symbolCategory); if (this[key2] !== symbolType) { this.remove(this.childOfName(symbolCategory)); var symbol = createSymbol(symbolCategory, lineData, idx); this.add(symbol); } this[key2] = symbolType; }, this); this._updateCommonStl(lineData, idx, seriesScope); }; Line2.prototype.getLinePath = function() { return this.childAt(0); }; Line2.prototype._updateCommonStl = function(lineData, idx, seriesScope) { var seriesModel = lineData.hostModel; var line = this.childOfName("line"); var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; var blurLineStyle = seriesScope && seriesScope.blurLineStyle; var selectLineStyle = seriesScope && seriesScope.selectLineStyle; var labelStatesModels = seriesScope && seriesScope.labelStatesModels; if (!seriesScope || lineData.hasItemOption) { var itemModel = lineData.getItemModel(idx); emphasisLineStyle = itemModel.getModel(["emphasis", "lineStyle"]).getLineStyle(); blurLineStyle = itemModel.getModel(["blur", "lineStyle"]).getLineStyle(); selectLineStyle = itemModel.getModel(["select", "lineStyle"]).getLineStyle(); labelStatesModels = getLabelStatesModels(itemModel); } var lineStyle = lineData.getItemVisual(idx, "style"); var visualColor = lineStyle.stroke; line.useStyle(lineStyle); line.style.fill = null; line.style.strokeNoScale = true; line.ensureState("emphasis").style = emphasisLineStyle; line.ensureState("blur").style = blurLineStyle; line.ensureState("select").style = selectLineStyle; each$g(SYMBOL_CATEGORIES, function(symbolCategory) { var symbol = this.childOfName(symbolCategory); if (symbol) { symbol.setColor(visualColor); symbol.style.opacity = lineStyle.opacity; for (var i = 0; i < SPECIAL_STATES.length; i++) { var stateName = SPECIAL_STATES[i]; var lineState = line.getState(stateName); if (lineState) { var lineStateStyle = lineState.style || {}; var state = symbol.ensureState(stateName); var stateStyle = state.style || (state.style = {}); if (lineStateStyle.stroke != null) { stateStyle[symbol.__isEmptyBrush ? "stroke" : "fill"] = lineStateStyle.stroke; } if (lineStateStyle.opacity != null) { stateStyle.opacity = lineStateStyle.opacity; } } } symbol.markRedraw(); } }, this); var rawVal = seriesModel.getRawValue(idx); setLabelStyle(this, labelStatesModels, { labelDataIndex: idx, labelFetcher: { getFormattedLabel: function(dataIndex, stateName) { return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType); } }, inheritColor: visualColor || "#000", defaultOpacity: lineStyle.opacity, defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round$2(rawVal) : rawVal) + "" }); var label = this.getTextContent(); if (label) { var labelNormalModel = labelStatesModels.normal; label.__align = label.style.align; label.__verticalAlign = label.style.verticalAlign; label.__position = labelNormalModel.get("position") || "middle"; var distance2 = labelNormalModel.get("distance"); if (!isArray$1(distance2)) { distance2 = [distance2, distance2]; } label.__labelDistance = distance2; } this.setTextConfig({ position: null, local: true, inside: false }); enableHoverEmphasis(this); }; Line2.prototype.highlight = function() { enterEmphasis(this); }; Line2.prototype.downplay = function() { leaveEmphasis(this); }; Line2.prototype.updateLayout = function(lineData, idx) { this.setLinePoints(lineData.getItemLayout(idx)); }; Line2.prototype.setLinePoints = function(points2) { var linePath = this.childOfName("line"); setLinePoints(linePath.shape, points2); linePath.dirty(); }; Line2.prototype.beforeUpdate = function() { var lineGroup = this; var symbolFrom = lineGroup.childOfName("fromSymbol"); var symbolTo = lineGroup.childOfName("toSymbol"); var label = lineGroup.getTextContent(); if (!symbolFrom && !symbolTo && (!label || label.ignore)) { return; } var invScale = 1; var parentNode = this.parent; while (parentNode) { if (parentNode.scaleX) { invScale /= parentNode.scaleX; } parentNode = parentNode.parent; } var line = lineGroup.childOfName("line"); if (!this.__dirty && !line.__dirty) { return; } var percent = line.shape.percent; var fromPos = line.pointAt(0); var toPos = line.pointAt(percent); var d = sub([], toPos, fromPos); normalize$3(d, d); function setSymbolRotation(symbol, percent2) { var specifiedRotation = symbol.__specifiedRotation; if (specifiedRotation == null) { var tangent2 = line.tangentAt(percent2); symbol.attr("rotation", (percent2 === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent2[1], tangent2[0])); } else { symbol.attr("rotation", specifiedRotation); } } if (symbolFrom) { symbolFrom.setPosition(fromPos); setSymbolRotation(symbolFrom, 0); symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent; symbolFrom.markRedraw(); } if (symbolTo) { symbolTo.setPosition(toPos); setSymbolRotation(symbolTo, 1); symbolTo.scaleX = symbolTo.scaleY = invScale * percent; symbolTo.markRedraw(); } if (label && !label.ignore) { label.x = label.y = 0; label.originX = label.originY = 0; var textAlign = void 0; var textVerticalAlign = void 0; var distance2 = label.__labelDistance; var distanceX = distance2[0] * invScale; var distanceY = distance2[1] * invScale; var halfPercent = percent / 2; var tangent = line.tangentAt(halfPercent); var n = [tangent[1], -tangent[0]]; var cp = line.pointAt(halfPercent); if (n[1] > 0) { n[0] = -n[0]; n[1] = -n[1]; } var dir3 = tangent[0] < 0 ? -1 : 1; if (label.__position !== "start" && label.__position !== "end") { var rotation = -Math.atan2(tangent[1], tangent[0]); if (toPos[0] < fromPos[0]) { rotation = Math.PI + rotation; } label.rotation = rotation; } var dy = void 0; switch (label.__position) { case "insideStartTop": case "insideMiddleTop": case "insideEndTop": case "middle": dy = -distanceY; textVerticalAlign = "bottom"; break; case "insideStartBottom": case "insideMiddleBottom": case "insideEndBottom": dy = distanceY; textVerticalAlign = "top"; break; default: dy = 0; textVerticalAlign = "middle"; } switch (label.__position) { case "end": label.x = d[0] * distanceX + toPos[0]; label.y = d[1] * distanceY + toPos[1]; textAlign = d[0] > 0.8 ? "left" : d[0] < -0.8 ? "right" : "center"; textVerticalAlign = d[1] > 0.8 ? "top" : d[1] < -0.8 ? "bottom" : "middle"; break; case "start": label.x = -d[0] * distanceX + fromPos[0]; label.y = -d[1] * distanceY + fromPos[1]; textAlign = d[0] > 0.8 ? "right" : d[0] < -0.8 ? "left" : "center"; textVerticalAlign = d[1] > 0.8 ? "bottom" : d[1] < -0.8 ? "top" : "middle"; break; case "insideStartTop": case "insideStart": case "insideStartBottom": label.x = distanceX * dir3 + fromPos[0]; label.y = fromPos[1] + dy; textAlign = tangent[0] < 0 ? "right" : "left"; label.originX = -distanceX * dir3; label.originY = -dy; break; case "insideMiddleTop": case "insideMiddle": case "insideMiddleBottom": case "middle": label.x = cp[0]; label.y = cp[1] + dy; textAlign = "center"; label.originY = -dy; break; case "insideEndTop": case "insideEnd": case "insideEndBottom": label.x = -distanceX * dir3 + toPos[0]; label.y = toPos[1] + dy; textAlign = tangent[0] >= 0 ? "right" : "left"; label.originX = distanceX * dir3; label.originY = -dy; break; } label.scaleX = label.scaleY = invScale; label.setStyle({ verticalAlign: label.__verticalAlign || textVerticalAlign, align: label.__align || textAlign }); } }; return Line2; }(Group$4); var Line$1 = Line; var LineDraw = function() { function LineDraw2(LineCtor) { this.group = new Group$4(); this._LineCtor = LineCtor || Line$1; } LineDraw2.prototype.isPersistent = function() { return true; }; LineDraw2.prototype.updateData = function(lineData) { var _this = this; var lineDraw = this; var group = lineDraw.group; var oldLineData = lineDraw._lineData; lineDraw._lineData = lineData; if (!oldLineData) { group.removeAll(); } var seriesScope = makeSeriesScope$1(lineData); lineData.diff(oldLineData).add(function(idx) { _this._doAdd(lineData, idx, seriesScope); }).update(function(newIdx, oldIdx) { _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope); }).remove(function(idx) { group.remove(oldLineData.getItemGraphicEl(idx)); }).execute(); }; LineDraw2.prototype.updateLayout = function() { var lineData = this._lineData; if (!lineData) { return; } lineData.eachItemGraphicEl(function(el, idx) { el.updateLayout(lineData, idx); }, this); }; LineDraw2.prototype.incrementalPrepareUpdate = function(lineData) { this._seriesScope = makeSeriesScope$1(lineData); this._lineData = null; this.group.removeAll(); }; LineDraw2.prototype.incrementalUpdate = function(taskParams, lineData) { function updateIncrementalAndHover(el2) { if (!el2.isGroup && !isEffectObject(el2)) { el2.incremental = true; el2.ensureState("emphasis").hoverLayer = true; } } for (var idx = taskParams.start; idx < taskParams.end; idx++) { var itemLayout = lineData.getItemLayout(idx); if (lineNeedsDraw(itemLayout)) { var el = new this._LineCtor(lineData, idx, this._seriesScope); el.traverse(updateIncrementalAndHover); this.group.add(el); lineData.setItemGraphicEl(idx, el); } } }; LineDraw2.prototype.remove = function() { this.group.removeAll(); }; LineDraw2.prototype._doAdd = function(lineData, idx, seriesScope) { var itemLayout = lineData.getItemLayout(idx); if (!lineNeedsDraw(itemLayout)) { return; } var el = new this._LineCtor(lineData, idx, seriesScope); lineData.setItemGraphicEl(idx, el); this.group.add(el); }; LineDraw2.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) { var itemEl = oldLineData.getItemGraphicEl(oldIdx); if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) { this.group.remove(itemEl); return; } if (!itemEl) { itemEl = new this._LineCtor(newLineData, newIdx, seriesScope); } else { itemEl.updateData(newLineData, newIdx, seriesScope); } newLineData.setItemGraphicEl(newIdx, itemEl); this.group.add(itemEl); }; return LineDraw2; }(); function isEffectObject(el) { return el.animators && el.animators.length > 0; } function makeSeriesScope$1(lineData) { var hostModel = lineData.hostModel; return { lineStyle: hostModel.getModel("lineStyle").getLineStyle(), emphasisLineStyle: hostModel.getModel(["emphasis", "lineStyle"]).getLineStyle(), blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(), selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(), labelStatesModels: getLabelStatesModels(hostModel) }; } function isPointNaN(pt) { return isNaN(pt[0]) || isNaN(pt[1]); } function lineNeedsDraw(pts) { return !isPointNaN(pts[0]) && !isPointNaN(pts[1]); } var LineDraw$1 = LineDraw; var v1 = []; var v2 = []; var v3 = []; var quadraticAt = quadraticAt$1; var v2DistSquare = distSquare; var mathAbs = Math.abs; function intersectCurveCircle(curvePoints, center2, radius) { var p0 = curvePoints[0]; var p1 = curvePoints[1]; var p2 = curvePoints[2]; var d = Infinity; var t; var radiusSquare = radius * radius; var interval = 0.1; for (var _t = 0.1; _t <= 0.9; _t += 0.1) { v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t); v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t); var diff2 = mathAbs(v2DistSquare(v1, center2) - radiusSquare); if (diff2 < d) { d = diff2; t = _t; } } for (var i = 0; i < 32; i++) { var next = t + interval; v2[0] = quadraticAt(p0[0], p1[0], p2[0], t); v2[1] = quadraticAt(p0[1], p1[1], p2[1], t); v3[0] = quadraticAt(p0[0], p1[0], p2[0], next); v3[1] = quadraticAt(p0[1], p1[1], p2[1], next); var diff2 = v2DistSquare(v2, center2) - radiusSquare; if (mathAbs(diff2) < 0.01) { break; } var nextDiff = v2DistSquare(v3, center2) - radiusSquare; interval /= 2; if (diff2 < 0) { if (nextDiff >= 0) { t = t + interval; } else { t = t - interval; } } else { if (nextDiff >= 0) { t = t - interval; } else { t = t + interval; } } } return t; } function adjustEdge(graph, scale2) { var tmp0 = []; var quadraticSubdivide$1 = quadraticSubdivide; var pts = [[], [], []]; var pts2 = [[], []]; var v = []; scale2 /= 2; graph.eachEdge(function(edge, idx) { var linePoints = edge.getLayout(); var fromSymbol = edge.getVisual("fromSymbol"); var toSymbol = edge.getVisual("toSymbol"); if (!linePoints.__original) { linePoints.__original = [clone$3(linePoints[0]), clone$3(linePoints[1])]; if (linePoints[2]) { linePoints.__original.push(clone$3(linePoints[2])); } } var originalPoints = linePoints.__original; if (linePoints[2] != null) { copy$1(pts[0], originalPoints[0]); copy$1(pts[1], originalPoints[2]); copy$1(pts[2], originalPoints[1]); if (fromSymbol && fromSymbol !== "none") { var symbolSize = getSymbolSize(edge.node1); var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale2); quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); pts[0][0] = tmp0[3]; pts[1][0] = tmp0[4]; quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); pts[0][1] = tmp0[3]; pts[1][1] = tmp0[4]; } if (toSymbol && toSymbol !== "none") { var symbolSize = getSymbolSize(edge.node2); var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale2); quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); pts[1][0] = tmp0[1]; pts[2][0] = tmp0[2]; quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); pts[1][1] = tmp0[1]; pts[2][1] = tmp0[2]; } copy$1(linePoints[0], pts[0]); copy$1(linePoints[1], pts[2]); copy$1(linePoints[2], pts[1]); } else { copy$1(pts2[0], originalPoints[0]); copy$1(pts2[1], originalPoints[1]); sub(v, pts2[1], pts2[0]); normalize$3(v, v); if (fromSymbol && fromSymbol !== "none") { var symbolSize = getSymbolSize(edge.node1); scaleAndAdd$1(pts2[0], pts2[0], v, symbolSize * scale2); } if (toSymbol && toSymbol !== "none") { var symbolSize = getSymbolSize(edge.node2); scaleAndAdd$1(pts2[1], pts2[1], v, -symbolSize * scale2); } copy$1(linePoints[0], pts2[0]); copy$1(linePoints[1], pts2[1]); } }); } function isViewCoordSys(coordSys) { return coordSys.type === "view"; } var GraphView = function(_super) { __extends$1(GraphView2, _super); function GraphView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GraphView2.type; return _this; } GraphView2.prototype.init = function(ecModel, api) { var symbolDraw = new SymbolDraw$1(); var lineDraw = new LineDraw$1(); var group = this.group; this._controller = new RoamController$1(api.getZr()); this._controllerHost = { target: group }; group.add(symbolDraw.group); group.add(lineDraw.group); this._symbolDraw = symbolDraw; this._lineDraw = lineDraw; this._firstRender = true; }; GraphView2.prototype.render = function(seriesModel, ecModel, api) { var _this = this; var coordSys = seriesModel.coordinateSystem; this._model = seriesModel; var symbolDraw = this._symbolDraw; var lineDraw = this._lineDraw; var group = this.group; if (isViewCoordSys(coordSys)) { var groupNewProp = { x: coordSys.x, y: coordSys.y, scaleX: coordSys.scaleX, scaleY: coordSys.scaleY }; if (this._firstRender) { group.attr(groupNewProp); } else { updateProps$1(group, groupNewProp, seriesModel); } } adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); var data = seriesModel.getData(); symbolDraw.updateData(data); var edgeData = seriesModel.getEdgeData(); lineDraw.updateData(edgeData); this._updateNodeAndLinkScale(); this._updateController(seriesModel, ecModel, api); clearTimeout(this._layoutTimeout); var forceLayout2 = seriesModel.forceLayout; var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]); if (forceLayout2) { this._startForceLayoutIteration(forceLayout2, layoutAnimation); } data.graph.eachNode(function(node) { var idx = node.dataIndex; var el = node.getGraphicEl(); var itemModel = node.getModel(); el.off("drag").off("dragend"); var draggable = itemModel.get("draggable"); if (draggable) { el.on("drag", function() { if (forceLayout2) { forceLayout2.warmUp(); !_this._layouting && _this._startForceLayoutIteration(forceLayout2, layoutAnimation); forceLayout2.setFixed(idx); data.setItemLayout(idx, [el.x, el.y]); } }).on("dragend", function() { if (forceLayout2) { forceLayout2.setUnfixed(idx); } }); } el.setDraggable(draggable && !!forceLayout2); var focus = itemModel.get(["emphasis", "focus"]); if (focus === "adjacency") { getECData(el).focus = node.getAdjacentDataIndices(); } }); data.graph.eachEdge(function(edge) { var el = edge.getGraphicEl(); var focus = edge.getModel().get(["emphasis", "focus"]); if (focus === "adjacency") { getECData(el).focus = { edge: [edge.dataIndex], node: [edge.node1.dataIndex, edge.node2.dataIndex] }; } }); var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]); var cx = data.getLayout("cx"); var cy = data.getLayout("cy"); data.eachItemGraphicEl(function(el, idx) { var itemModel = data.getItemModel(idx); var labelRotate = itemModel.get(["label", "rotate"]) || 0; var symbolPath = el.getSymbolPath(); if (circularRotateLabel) { var pos = data.getItemLayout(idx); var rad = Math.atan2(pos[1] - cy, pos[0] - cx); if (rad < 0) { rad = Math.PI * 2 + rad; } var isLeft = pos[0] < cx; if (isLeft) { rad = rad - Math.PI; } var textPosition = isLeft ? "left" : "right"; symbolPath.setTextConfig({ rotation: -rad, position: textPosition, origin: "center" }); var emphasisState = symbolPath.ensureState("emphasis"); extend(emphasisState.textConfig || (emphasisState.textConfig = {}), { position: textPosition }); } else { symbolPath.setTextConfig({ rotation: labelRotate *= Math.PI / 180 }); } }); this._firstRender = false; }; GraphView2.prototype.dispose = function() { this._controller && this._controller.dispose(); this._controllerHost = null; }; GraphView2.prototype._startForceLayoutIteration = function(forceLayout2, layoutAnimation) { var self2 = this; (function step2() { forceLayout2.step(function(stopped) { self2.updateLayout(self2._model); (self2._layouting = !stopped) && (layoutAnimation ? self2._layoutTimeout = setTimeout(step2, 16) : step2()); }); })(); }; GraphView2.prototype._updateController = function(seriesModel, ecModel, api) { var _this = this; var controller = this._controller; var controllerHost = this._controllerHost; var group = this.group; controller.setPointerChecker(function(e2, x, y) { var rect = group.getBoundingRect(); rect.applyTransform(group.transform); return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel); }); if (!isViewCoordSys(seriesModel.coordinateSystem)) { controller.disable(); return; } controller.enable(seriesModel.get("roam")); controllerHost.zoomLimit = seriesModel.get("scaleLimit"); controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); controller.off("pan").off("zoom").on("pan", function(e2) { updateViewOnPan(controllerHost, e2.dx, e2.dy); api.dispatchAction({ seriesId: seriesModel.id, type: "graphRoam", dx: e2.dx, dy: e2.dy }); }).on("zoom", function(e2) { updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); api.dispatchAction({ seriesId: seriesModel.id, type: "graphRoam", zoom: e2.scale, originX: e2.originX, originY: e2.originY }); _this._updateNodeAndLinkScale(); adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); _this._lineDraw.updateLayout(); api.updateLabelLayout(); }); }; GraphView2.prototype._updateNodeAndLinkScale = function() { var seriesModel = this._model; var data = seriesModel.getData(); var nodeScale = getNodeGlobalScale(seriesModel); data.eachItemGraphicEl(function(el, idx) { el.setSymbolScale(nodeScale); }); }; GraphView2.prototype.updateLayout = function(seriesModel) { adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); this._symbolDraw.updateLayout(); this._lineDraw.updateLayout(); }; GraphView2.prototype.remove = function(ecModel, api) { this._symbolDraw && this._symbolDraw.remove(); this._lineDraw && this._lineDraw.remove(); }; GraphView2.type = "graph"; return GraphView2; }(ChartView$1); var GraphView$1 = GraphView; function generateNodeKey(id) { return "_EC_" + id; } var Graph = function() { function Graph2(directed) { this.type = "graph"; this.nodes = []; this.edges = []; this._nodesMap = {}; this._edgesMap = {}; this._directed = directed || false; } Graph2.prototype.isDirected = function() { return this._directed; }; Graph2.prototype.addNode = function(id, dataIndex) { id = id == null ? "" + dataIndex : "" + id; var nodesMap = this._nodesMap; if (nodesMap[generateNodeKey(id)]) { return; } var node = new GraphNode(id, dataIndex); node.hostGraph = this; this.nodes.push(node); nodesMap[generateNodeKey(id)] = node; return node; }; Graph2.prototype.getNodeByIndex = function(dataIndex) { var rawIdx = this.data.getRawIndex(dataIndex); return this.nodes[rawIdx]; }; Graph2.prototype.getNodeById = function(id) { return this._nodesMap[generateNodeKey(id)]; }; Graph2.prototype.addEdge = function(n1, n2, dataIndex) { var nodesMap = this._nodesMap; var edgesMap = this._edgesMap; if (typeof n1 === "number") { n1 = this.nodes[n1]; } if (typeof n2 === "number") { n2 = this.nodes[n2]; } if (!(n1 instanceof GraphNode)) { n1 = nodesMap[generateNodeKey(n1)]; } if (!(n2 instanceof GraphNode)) { n2 = nodesMap[generateNodeKey(n2)]; } if (!n1 || !n2) { return; } var key2 = n1.id + "-" + n2.id; var edge = new GraphEdge(n1, n2, dataIndex); edge.hostGraph = this; if (this._directed) { n1.outEdges.push(edge); n2.inEdges.push(edge); } n1.edges.push(edge); if (n1 !== n2) { n2.edges.push(edge); } this.edges.push(edge); edgesMap[key2] = edge; return edge; }; Graph2.prototype.getEdgeByIndex = function(dataIndex) { var rawIdx = this.edgeData.getRawIndex(dataIndex); return this.edges[rawIdx]; }; Graph2.prototype.getEdge = function(n1, n2) { if (n1 instanceof GraphNode) { n1 = n1.id; } if (n2 instanceof GraphNode) { n2 = n2.id; } var edgesMap = this._edgesMap; if (this._directed) { return edgesMap[n1 + "-" + n2]; } else { return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1]; } }; Graph2.prototype.eachNode = function(cb, context) { var nodes = this.nodes; var len2 = nodes.length; for (var i = 0; i < len2; i++) { if (nodes[i].dataIndex >= 0) { cb.call(context, nodes[i], i); } } }; Graph2.prototype.eachEdge = function(cb, context) { var edges = this.edges; var len2 = edges.length; for (var i = 0; i < len2; i++) { if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) { cb.call(context, edges[i], i); } } }; Graph2.prototype.breadthFirstTraverse = function(cb, startNode, direction, context) { if (!(startNode instanceof GraphNode)) { startNode = this._nodesMap[generateNodeKey(startNode)]; } if (!startNode) { return; } var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges"; for (var i = 0; i < this.nodes.length; i++) { this.nodes[i].__visited = false; } if (cb.call(context, startNode, null)) { return; } var queue = [startNode]; while (queue.length) { var currentNode = queue.shift(); var edges = currentNode[edgeType]; for (var i = 0; i < edges.length; i++) { var e2 = edges[i]; var otherNode = e2.node1 === currentNode ? e2.node2 : e2.node1; if (!otherNode.__visited) { if (cb.call(context, otherNode, currentNode)) { return; } queue.push(otherNode); otherNode.__visited = true; } } } }; Graph2.prototype.update = function() { var data = this.data; var edgeData = this.edgeData; var nodes = this.nodes; var edges = this.edges; for (var i = 0, len2 = nodes.length; i < len2; i++) { nodes[i].dataIndex = -1; } for (var i = 0, len2 = data.count(); i < len2; i++) { nodes[data.getRawIndex(i)].dataIndex = i; } edgeData.filterSelf(function(idx) { var edge = edges[edgeData.getRawIndex(idx)]; return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0; }); for (var i = 0, len2 = edges.length; i < len2; i++) { edges[i].dataIndex = -1; } for (var i = 0, len2 = edgeData.count(); i < len2; i++) { edges[edgeData.getRawIndex(i)].dataIndex = i; } }; Graph2.prototype.clone = function() { var graph = new Graph2(this._directed); var nodes = this.nodes; var edges = this.edges; for (var i = 0; i < nodes.length; i++) { graph.addNode(nodes[i].id, nodes[i].dataIndex); } for (var i = 0; i < edges.length; i++) { var e2 = edges[i]; graph.addEdge(e2.node1.id, e2.node2.id, e2.dataIndex); } return graph; }; return Graph2; }(); var GraphNode = function() { function GraphNode2(id, dataIndex) { this.inEdges = []; this.outEdges = []; this.edges = []; this.dataIndex = -1; this.id = id == null ? "" : id; this.dataIndex = dataIndex == null ? -1 : dataIndex; } GraphNode2.prototype.degree = function() { return this.edges.length; }; GraphNode2.prototype.inDegree = function() { return this.inEdges.length; }; GraphNode2.prototype.outDegree = function() { return this.outEdges.length; }; GraphNode2.prototype.getModel = function(path) { if (this.dataIndex < 0) { return; } var graph = this.hostGraph; var itemModel = graph.data.getItemModel(this.dataIndex); return itemModel.getModel(path); }; GraphNode2.prototype.getAdjacentDataIndices = function() { var dataIndices = { edge: [], node: [] }; for (var i = 0; i < this.edges.length; i++) { var adjacentEdge = this.edges[i]; if (adjacentEdge.dataIndex < 0) { continue; } dataIndices.edge.push(adjacentEdge.dataIndex); dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex); } return dataIndices; }; return GraphNode2; }(); var GraphEdge = function() { function GraphEdge2(n1, n2, dataIndex) { this.dataIndex = -1; this.node1 = n1; this.node2 = n2; this.dataIndex = dataIndex == null ? -1 : dataIndex; } GraphEdge2.prototype.getModel = function(path) { if (this.dataIndex < 0) { return; } var graph = this.hostGraph; var itemModel = graph.edgeData.getItemModel(this.dataIndex); return itemModel.getModel(path); }; GraphEdge2.prototype.getAdjacentDataIndices = function() { return { edge: [this.dataIndex], node: [this.node1.dataIndex, this.node2.dataIndex] }; }; return GraphEdge2; }(); function createGraphDataProxyMixin(hostName, dataName) { return { getValue: function(dimension) { var data = this[hostName][dataName]; return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); }, setVisual: function(key2, value) { this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key2, value); }, getVisual: function(key2) { return this[hostName][dataName].getItemVisual(this.dataIndex, key2); }, setLayout: function(layout2, merge2) { this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout2, merge2); }, getLayout: function() { return this[hostName][dataName].getItemLayout(this.dataIndex); }, getGraphicEl: function() { return this[hostName][dataName].getItemGraphicEl(this.dataIndex); }, getRawIndex: function() { return this[hostName][dataName].getRawIndex(this.dataIndex); } }; } mixin(GraphNode, createGraphDataProxyMixin("hostGraph", "data")); mixin(GraphEdge, createGraphDataProxyMixin("hostGraph", "edgeData")); var Graph$1 = Graph; function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) { var graph = new Graph$1(directed); for (var i = 0; i < nodes.length; i++) { graph.addNode(retrieve(nodes[i].id, nodes[i].name, i), i); } var linkNameList = []; var validEdges = []; var linkCount = 0; for (var i = 0; i < edges.length; i++) { var link2 = edges[i]; var source = link2.source; var target = link2.target; if (graph.addEdge(source, target, linkCount)) { validEdges.push(link2); linkNameList.push(retrieve(convertOptionIdName(link2.id, null), source + " > " + target)); linkCount++; } } var coordSys = seriesModel.get("coordinateSystem"); var nodeData; if (coordSys === "cartesian2d" || coordSys === "polar") { nodeData = createSeriesData(nodes, seriesModel); } else { var coordSysCtor = CoordinateSystem.get(coordSys); var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; if (indexOf(coordDimensions, "value") < 0) { coordDimensions.concat(["value"]); } var dimensions = prepareSeriesDataSchema(nodes, { coordDimensions, encodeDefine: seriesModel.getEncode() }).dimensions; nodeData = new SeriesData$1(dimensions, seriesModel); nodeData.initData(nodes); } var edgeData = new SeriesData$1(["value"], seriesModel); edgeData.initData(validEdges, linkNameList); beforeLink && beforeLink(nodeData, edgeData); linkSeriesData({ mainData: nodeData, struct: graph, structAttr: "graph", datas: { node: nodeData, edge: edgeData }, datasAttr: { node: "data", edge: "edgeData" } }); graph.update(); return graph; } var GraphSeriesModel = function(_super) { __extends$1(GraphSeriesModel2, _super); function GraphSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GraphSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } GraphSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); var self2 = this; function getCategoriesData() { return self2._categoriesData; } this.legendVisualProvider = new LegendVisualProvider$1(getCategoriesData, getCategoriesData); this.fillDataTextStyle(option.edges || option.links); this._updateCategoriesData(); }; GraphSeriesModel2.prototype.mergeOption = function(option) { _super.prototype.mergeOption.apply(this, arguments); this.fillDataTextStyle(option.edges || option.links); this._updateCategoriesData(); }; GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) { _super.prototype.mergeDefaultAndTheme.apply(this, arguments); defaultEmphasis(option, "edgeLabel", ["show"]); }; GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) { var edges = option.edges || option.links || []; var nodes = option.data || option.nodes || []; var self2 = this; if (nodes && edges) { initCurvenessList(this); var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink); each$g(graph.edges, function(edge) { createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex); }, this); return graph.data; } function beforeLink(nodeData, edgeData) { nodeData.wrapMethod("getItemModel", function(model) { var categoriesModels = self2._categoriesModels; var categoryIdx = model.getShallow("category"); var categoryModel = categoriesModels[categoryIdx]; if (categoryModel) { categoryModel.parentModel = model.parentModel; model.parentModel = categoryModel; } return model; }); var oldGetModel = Model$1.prototype.getModel; function newGetModel(path, parentModel) { var model = oldGetModel.call(this, path, parentModel); model.resolveParentPath = resolveParentPath; return model; } edgeData.wrapMethod("getItemModel", function(model) { model.resolveParentPath = resolveParentPath; model.getModel = newGetModel; return model; }); function resolveParentPath(pathArr) { if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) { var newPathArr = pathArr.slice(); if (pathArr[0] === "label") { newPathArr[0] = "edgeLabel"; } else if (pathArr[1] === "label") { newPathArr[1] = "edgeLabel"; } return newPathArr; } return pathArr; } } }; GraphSeriesModel2.prototype.getGraph = function() { return this.getData().graph; }; GraphSeriesModel2.prototype.getEdgeData = function() { return this.getGraph().edgeData; }; GraphSeriesModel2.prototype.getCategoriesData = function() { return this._categoriesData; }; GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { if (dataType === "edge") { var nodeData = this.getData(); var params = this.getDataParams(dataIndex, dataType); var edge = nodeData.graph.getEdgeByIndex(dataIndex); var sourceName = nodeData.getName(edge.node1.dataIndex); var targetName = nodeData.getName(edge.node2.dataIndex); var nameArr = []; sourceName != null && nameArr.push(sourceName); targetName != null && nameArr.push(targetName); return createTooltipMarkup("nameValue", { name: nameArr.join(" > "), value: params.value, noValue: params.value == null }); } var nodeMarkup = defaultSeriesFormatTooltip({ series: this, dataIndex, multipleSeries }); return nodeMarkup; }; GraphSeriesModel2.prototype._updateCategoriesData = function() { var categories = map$1(this.option.categories || [], function(category) { return category.value != null ? category : extend({ value: 0 }, category); }); var categoriesData = new SeriesData$1(["value"], this); categoriesData.initData(categories); this._categoriesData = categoriesData; this._categoriesModels = categoriesData.mapArray(function(idx) { return categoriesData.getItemModel(idx); }); }; GraphSeriesModel2.prototype.setZoom = function(zoom) { this.option.zoom = zoom; }; GraphSeriesModel2.prototype.setCenter = function(center2) { this.option.center = center2; }; GraphSeriesModel2.prototype.isAnimationEnabled = function() { return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"])); }; GraphSeriesModel2.type = "series.graph"; GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; GraphSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "view", legendHoverLink: true, layout: null, circular: { rotateLabel: false }, force: { initLayout: null, repulsion: [0, 50], gravity: 0.1, friction: 0.6, edgeLength: 30, layoutAnimation: true }, left: "center", top: "center", symbol: "circle", symbolSize: 10, edgeSymbol: ["none", "none"], edgeSymbolSize: 10, edgeLabel: { position: "middle", distance: 5 }, draggable: false, roam: false, center: null, zoom: 1, nodeScaleRatio: 0.6, label: { show: false, formatter: "{b}" }, itemStyle: {}, lineStyle: { color: "#aaa", width: 1, opacity: 0.5 }, emphasis: { scale: true, label: { show: true } }, select: { itemStyle: { borderColor: "#212121" } } }; return GraphSeriesModel2; }(SeriesModel$1); var GraphSeriesModel$1 = GraphSeriesModel; var actionInfo$1 = { type: "graphRoam", event: "graphRoam", update: "none" }; function install$F(registers) { registers.registerChartView(GraphView$1); registers.registerSeriesModel(GraphSeriesModel$1); registers.registerProcessor(categoryFilter); registers.registerVisual(categoryVisual); registers.registerVisual(graphEdgeVisual); registers.registerLayout(graphSimpleLayout); registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout); registers.registerLayout(graphForceLayout); registers.registerCoordinateSystem("graphView", { dimensions: View$1.dimensions, create: createViewCoordSys }); registers.registerAction({ type: "focusNodeAdjacency", event: "focusNodeAdjacency", update: "series:focusNodeAdjacency" }, function() { }); registers.registerAction({ type: "unfocusNodeAdjacency", event: "unfocusNodeAdjacency", update: "series:unfocusNodeAdjacency" }, function() { }); registers.registerAction(actionInfo$1, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", query: payload }, function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var res = updateCenterAndZoom(coordSys, payload); seriesModel.setCenter && seriesModel.setCenter(res.center); seriesModel.setZoom && seriesModel.setZoom(res.zoom); }); }); } var PointerShape = function() { function PointerShape2() { this.angle = 0; this.width = 10; this.r = 10; this.x = 0; this.y = 0; } return PointerShape2; }(); var PointerPath = function(_super) { __extends$1(PointerPath2, _super); function PointerPath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "pointer"; return _this; } PointerPath2.prototype.getDefaultShape = function() { return new PointerShape(); }; PointerPath2.prototype.buildPath = function(ctx, shape) { var mathCos2 = Math.cos; var mathSin2 = Math.sin; var r = shape.r; var width = shape.width; var angle = shape.angle; var x = shape.x - mathCos2(angle) * width * (width >= r / 3 ? 1 : 2); var y = shape.y - mathSin2(angle) * width * (width >= r / 3 ? 1 : 2); angle = shape.angle - Math.PI / 2; ctx.moveTo(x, y); ctx.lineTo(shape.x + mathCos2(angle) * width, shape.y + mathSin2(angle) * width); ctx.lineTo(shape.x + mathCos2(shape.angle) * r, shape.y + mathSin2(shape.angle) * r); ctx.lineTo(shape.x - mathCos2(angle) * width, shape.y - mathSin2(angle) * width); ctx.lineTo(x, y); }; return PointerPath2; }(Path$1); var PointerPath$1 = PointerPath; function parsePosition(seriesModel, api) { var center2 = seriesModel.get("center"); var width = api.getWidth(); var height = api.getHeight(); var size = Math.min(width, height); var cx = parsePercent$1(center2[0], api.getWidth()); var cy = parsePercent$1(center2[1], api.getHeight()); var r = parsePercent$1(seriesModel.get("radius"), size / 2); return { cx, cy, r }; } function formatLabel(value, labelFormatter) { var label = value == null ? "" : value + ""; if (labelFormatter) { if (typeof labelFormatter === "string") { label = labelFormatter.replace("{value}", label); } else if (typeof labelFormatter === "function") { label = labelFormatter(value); } } return label; } var PI2 = Math.PI * 2; var GaugeView = function(_super) { __extends$1(GaugeView2, _super); function GaugeView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GaugeView2.type; return _this; } GaugeView2.prototype.render = function(seriesModel, ecModel, api) { this.group.removeAll(); var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]); var posInfo = parsePosition(seriesModel, api); this._renderMain(seriesModel, ecModel, api, colorList, posInfo); this._data = seriesModel.getData(); }; GaugeView2.prototype.dispose = function() { }; GaugeView2.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) { var group = this.group; var clockwise = seriesModel.get("clockwise"); var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI; var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI; var axisLineModel = seriesModel.getModel("axisLine"); var roundCap = axisLineModel.get("roundCap"); var MainPath = roundCap ? Sausage : Sector$1; var showAxis = axisLineModel.get("show"); var lineStyleModel = axisLineModel.getModel("lineStyle"); var axisLineWidth = lineStyleModel.get("width"); var angleRangeSpan = !((endAngle - startAngle) % PI2) && endAngle !== startAngle ? PI2 : (endAngle - startAngle) % PI2; var prevEndAngle = startAngle; for (var i = 0; showAxis && i < colorList.length; i++) { var percent = Math.min(Math.max(colorList[i][0], 0), 1); endAngle = startAngle + angleRangeSpan * percent; var sector = new MainPath({ shape: { startAngle: prevEndAngle, endAngle, cx: posInfo.cx, cy: posInfo.cy, clockwise, r0: posInfo.r - axisLineWidth, r: posInfo.r }, silent: true }); sector.setStyle({ fill: colorList[i][1] }); sector.setStyle(lineStyleModel.getLineStyle(["color", "width"])); group.add(sector); prevEndAngle = endAngle; } var getColor = function(percent2) { if (percent2 <= 0) { return colorList[0][1]; } var i2; for (i2 = 0; i2 < colorList.length; i2++) { if (colorList[i2][0] >= percent2 && (i2 === 0 ? 0 : colorList[i2 - 1][0]) < percent2) { return colorList[i2][1]; } } return colorList[i2 - 1][1]; }; if (!clockwise) { var tmp = startAngle; startAngle = endAngle; endAngle = tmp; } this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth); this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo); this._renderAnchor(seriesModel, posInfo); this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth); }; GaugeView2.prototype._renderTicks = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { var group = this.group; var cx = posInfo.cx; var cy = posInfo.cy; var r = posInfo.r; var minVal = +seriesModel.get("min"); var maxVal = +seriesModel.get("max"); var splitLineModel = seriesModel.getModel("splitLine"); var tickModel = seriesModel.getModel("axisTick"); var labelModel = seriesModel.getModel("axisLabel"); var splitNumber = seriesModel.get("splitNumber"); var subSplitNumber = tickModel.get("splitNumber"); var splitLineLen = parsePercent$1(splitLineModel.get("length"), r); var tickLen = parsePercent$1(tickModel.get("length"), r); var angle = startAngle; var step2 = (endAngle - startAngle) / splitNumber; var subStep = step2 / subSplitNumber; var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle(); var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle(); var splitLineDistance = splitLineModel.get("distance"); var unitX; var unitY; for (var i = 0; i <= splitNumber; i++) { unitX = Math.cos(angle); unitY = Math.sin(angle); if (splitLineModel.get("show")) { var distance2 = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth; var splitLine = new Line$3({ shape: { x1: unitX * (r - distance2) + cx, y1: unitY * (r - distance2) + cy, x2: unitX * (r - splitLineLen - distance2) + cx, y2: unitY * (r - splitLineLen - distance2) + cy }, style: splitLineStyle, silent: true }); if (splitLineStyle.stroke === "auto") { splitLine.setStyle({ stroke: getColor(i / splitNumber) }); } group.add(splitLine); } if (labelModel.get("show")) { var distance2 = labelModel.get("distance") + splitLineDistance; var label = formatLabel(round$2(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter")); var autoColor = getColor(i / splitNumber); group.add(new ZRText$1({ style: createTextStyle$1(labelModel, { text: label, x: unitX * (r - splitLineLen - distance2) + cx, y: unitY * (r - splitLineLen - distance2) + cy, verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle", align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center" }, { inheritColor: autoColor }), silent: true })); } if (tickModel.get("show") && i !== splitNumber) { var distance2 = tickModel.get("distance"); distance2 = distance2 ? distance2 + axisLineWidth : axisLineWidth; for (var j = 0; j <= subSplitNumber; j++) { unitX = Math.cos(angle); unitY = Math.sin(angle); var tickLine = new Line$3({ shape: { x1: unitX * (r - distance2) + cx, y1: unitY * (r - distance2) + cy, x2: unitX * (r - tickLen - distance2) + cx, y2: unitY * (r - tickLen - distance2) + cy }, silent: true, style: tickLineStyle }); if (tickLineStyle.stroke === "auto") { tickLine.setStyle({ stroke: getColor((i + j / subSplitNumber) / splitNumber) }); } group.add(tickLine); angle += subStep; } angle -= subStep; } else { angle += step2; } } }; GaugeView2.prototype._renderPointer = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { var group = this.group; var oldData = this._data; var oldProgressData = this._progressEls; var progressList = []; var showPointer2 = seriesModel.get(["pointer", "show"]); var progressModel = seriesModel.getModel("progress"); var showProgress = progressModel.get("show"); var data = seriesModel.getData(); var valueDim = data.mapDimension("value"); var minVal = +seriesModel.get("min"); var maxVal = +seriesModel.get("max"); var valueExtent = [minVal, maxVal]; var angleExtent = [startAngle, endAngle]; function createPointer(idx, angle) { var itemModel = data.getItemModel(idx); var pointerModel = itemModel.getModel("pointer"); var pointerWidth = parsePercent$1(pointerModel.get("width"), posInfo.r); var pointerLength = parsePercent$1(pointerModel.get("length"), posInfo.r); var pointerStr = seriesModel.get(["pointer", "icon"]); var pointerOffset = pointerModel.get("offsetCenter"); var pointerOffsetX = parsePercent$1(pointerOffset[0], posInfo.r); var pointerOffsetY = parsePercent$1(pointerOffset[1], posInfo.r); var pointerKeepAspect = pointerModel.get("keepAspect"); var pointer2; if (pointerStr) { pointer2 = createSymbol$1(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect); } else { pointer2 = new PointerPath$1({ shape: { angle: -Math.PI / 2, width: pointerWidth, r: pointerLength, x: pointerOffsetX, y: pointerOffsetY } }); } pointer2.rotation = -(angle + Math.PI / 2); pointer2.x = posInfo.cx; pointer2.y = posInfo.cy; return pointer2; } function createProgress(idx, endAngle2) { var roundCap = progressModel.get("roundCap"); var ProgressPath = roundCap ? Sausage : Sector$1; var isOverlap = progressModel.get("overlap"); var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count(); var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth; var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth; var progress = new ProgressPath({ shape: { startAngle, endAngle: endAngle2, cx: posInfo.cx, cy: posInfo.cy, clockwise, r0, r } }); isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal); return progress; } if (showProgress || showPointer2) { data.diff(oldData).add(function(idx) { if (showPointer2) { var pointer2 = createPointer(idx, startAngle); initProps(pointer2, { rotation: -(linearMap$2(data.get(valueDim, idx), valueExtent, angleExtent, true) + Math.PI / 2) }, seriesModel); group.add(pointer2); data.setItemGraphicEl(idx, pointer2); } if (showProgress) { var progress = createProgress(idx, startAngle); var isClip = progressModel.get("clip"); initProps(progress, { shape: { endAngle: linearMap$2(data.get(valueDim, idx), valueExtent, angleExtent, isClip) } }, seriesModel); group.add(progress); setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress); progressList[idx] = progress; } }).update(function(newIdx, oldIdx) { if (showPointer2) { var previousPointer = oldData.getItemGraphicEl(oldIdx); var previousRotate = previousPointer ? previousPointer.rotation : startAngle; var pointer2 = createPointer(newIdx, previousRotate); pointer2.rotation = previousRotate; updateProps$1(pointer2, { rotation: -(linearMap$2(data.get(valueDim, newIdx), valueExtent, angleExtent, true) + Math.PI / 2) }, seriesModel); group.add(pointer2); data.setItemGraphicEl(newIdx, pointer2); } if (showProgress) { var previousProgress = oldProgressData[oldIdx]; var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle; var progress = createProgress(newIdx, previousEndAngle); var isClip = progressModel.get("clip"); updateProps$1(progress, { shape: { endAngle: linearMap$2(data.get(valueDim, newIdx), valueExtent, angleExtent, isClip) } }, seriesModel); group.add(progress); setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress); progressList[newIdx] = progress; } }).execute(); data.each(function(idx) { var itemModel = data.getItemModel(idx); var emphasisModel = itemModel.getModel("emphasis"); if (showPointer2) { var pointer2 = data.getItemGraphicEl(idx); var symbolStyle = data.getItemVisual(idx, "style"); var visualColor = symbolStyle.fill; if (pointer2 instanceof ZRImage$1) { var pathStyle = pointer2.style; pointer2.useStyle(extend({ image: pathStyle.image, x: pathStyle.x, y: pathStyle.y, width: pathStyle.width, height: pathStyle.height }, symbolStyle)); } else { pointer2.useStyle(symbolStyle); pointer2.type !== "pointer" && pointer2.setColor(visualColor); } pointer2.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle()); if (pointer2.style.fill === "auto") { pointer2.setStyle("fill", getColor(linearMap$2(data.get(valueDim, idx), valueExtent, [0, 1], true))); } pointer2.z2EmphasisLift = 0; setStatesStylesFromModel(pointer2, itemModel); enableHoverEmphasis(pointer2, emphasisModel.get("focus"), emphasisModel.get("blurScope")); } if (showProgress) { var progress = progressList[idx]; progress.useStyle(data.getItemVisual(idx, "style")); progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle()); progress.z2EmphasisLift = 0; setStatesStylesFromModel(progress, itemModel); enableHoverEmphasis(progress, emphasisModel.get("focus"), emphasisModel.get("blurScope")); } }); this._progressEls = progressList; } }; GaugeView2.prototype._renderAnchor = function(seriesModel, posInfo) { var anchorModel = seriesModel.getModel("anchor"); var showAnchor = anchorModel.get("show"); if (showAnchor) { var anchorSize = anchorModel.get("size"); var anchorType = anchorModel.get("icon"); var offsetCenter = anchorModel.get("offsetCenter"); var anchorKeepAspect = anchorModel.get("keepAspect"); var anchor = createSymbol$1(anchorType, posInfo.cx - anchorSize / 2 + parsePercent$1(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent$1(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect); anchor.z2 = anchorModel.get("showAbove") ? 1 : 0; anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle()); this.group.add(anchor); } }; GaugeView2.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor, posInfo) { var _this = this; var data = seriesModel.getData(); var valueDim = data.mapDimension("value"); var minVal = +seriesModel.get("min"); var maxVal = +seriesModel.get("max"); var contentGroup = new Group$4(); var newTitleEls = []; var newDetailEls = []; var hasAnimation = seriesModel.isAnimationEnabled(); var showPointerAbove = seriesModel.get(["pointer", "showAbove"]); data.diff(this._data).add(function(idx) { newTitleEls[idx] = new ZRText$1({ silent: true }); newDetailEls[idx] = new ZRText$1({ silent: true }); }).update(function(idx, oldIdx) { newTitleEls[idx] = _this._titleEls[oldIdx]; newDetailEls[idx] = _this._detailEls[oldIdx]; }).execute(); data.each(function(idx) { var itemModel = data.getItemModel(idx); var value = data.get(valueDim, idx); var itemGroup = new Group$4(); var autoColor = getColor(linearMap$2(value, [minVal, maxVal], [0, 1], true)); var itemTitleModel = itemModel.getModel("title"); if (itemTitleModel.get("show")) { var titleOffsetCenter = itemTitleModel.get("offsetCenter"); var titleX = posInfo.cx + parsePercent$1(titleOffsetCenter[0], posInfo.r); var titleY = posInfo.cy + parsePercent$1(titleOffsetCenter[1], posInfo.r); var labelEl = newTitleEls[idx]; labelEl.attr({ z2: showPointerAbove ? 0 : 2, style: createTextStyle$1(itemTitleModel, { x: titleX, y: titleY, text: data.getName(idx), align: "center", verticalAlign: "middle" }, { inheritColor: autoColor }) }); itemGroup.add(labelEl); } var itemDetailModel = itemModel.getModel("detail"); if (itemDetailModel.get("show")) { var detailOffsetCenter = itemDetailModel.get("offsetCenter"); var detailX = posInfo.cx + parsePercent$1(detailOffsetCenter[0], posInfo.r); var detailY = posInfo.cy + parsePercent$1(detailOffsetCenter[1], posInfo.r); var width = parsePercent$1(itemDetailModel.get("width"), posInfo.r); var height = parsePercent$1(itemDetailModel.get("height"), posInfo.r); var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor; var labelEl = newDetailEls[idx]; var formatter_1 = itemDetailModel.get("formatter"); labelEl.attr({ z2: showPointerAbove ? 0 : 2, style: createTextStyle$1(itemDetailModel, { x: detailX, y: detailY, text: formatLabel(value, formatter_1), width: isNaN(width) ? null : width, height: isNaN(height) ? null : height, align: "center", verticalAlign: "middle" }, { inheritColor: detailColor }) }); setLabelValueAnimation(labelEl, { normal: itemDetailModel }, value, function(value2) { return formatLabel(value2, formatter_1); }); hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, { getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) { return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1); } }); itemGroup.add(labelEl); } contentGroup.add(itemGroup); }); this.group.add(contentGroup); this._titleEls = newTitleEls; this._detailEls = newDetailEls; }; GaugeView2.type = "gauge"; return GaugeView2; }(ChartView$1); var GaugeView$1 = GaugeView; var GaugeSeriesModel = function(_super) { __extends$1(GaugeSeriesModel2, _super); function GaugeSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GaugeSeriesModel2.type; _this.visualStyleAccessPath = "itemStyle"; return _this; } GaugeSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesDataSimply(this, ["value"]); }; GaugeSeriesModel2.type = "series.gauge"; GaugeSeriesModel2.defaultOption = { zlevel: 0, z: 2, colorBy: "data", center: ["50%", "50%"], legendHoverLink: true, radius: "75%", startAngle: 225, endAngle: -45, clockwise: true, min: 0, max: 100, splitNumber: 10, axisLine: { show: true, roundCap: false, lineStyle: { color: [[1, "#E6EBF8"]], width: 10 } }, progress: { show: false, overlap: true, width: 10, roundCap: false, clip: true }, splitLine: { show: true, length: 10, distance: 10, lineStyle: { color: "#63677A", width: 3, type: "solid" } }, axisTick: { show: true, splitNumber: 5, length: 6, distance: 10, lineStyle: { color: "#63677A", width: 1, type: "solid" } }, axisLabel: { show: true, distance: 15, color: "#464646", fontSize: 12 }, pointer: { icon: null, offsetCenter: [0, 0], show: true, showAbove: true, length: "60%", width: 6, keepAspect: false }, anchor: { show: false, showAbove: false, size: 6, icon: "circle", offsetCenter: [0, 0], keepAspect: false, itemStyle: { color: "#fff", borderWidth: 0, borderColor: "#5470c6" } }, title: { show: true, offsetCenter: [0, "20%"], color: "#464646", fontSize: 16, valueAnimation: false }, detail: { show: true, backgroundColor: "rgba(0,0,0,0)", borderWidth: 0, borderColor: "#ccc", width: 100, height: null, padding: [5, 10], offsetCenter: [0, "40%"], color: "#464646", fontSize: 30, fontWeight: "bold", lineHeight: 30, valueAnimation: false } }; return GaugeSeriesModel2; }(SeriesModel$1); var GaugeSeriesModel$1 = GaugeSeriesModel; function install$E(registers) { registers.registerChartView(GaugeView$1); registers.registerSeriesModel(GaugeSeriesModel$1); } var opacityAccessPath$1 = ["itemStyle", "opacity"]; var FunnelPiece = function(_super) { __extends$1(FunnelPiece2, _super); function FunnelPiece2(data, idx) { var _this = _super.call(this) || this; var polygon = _this; var labelLine = new Polyline$3(); var text = new ZRText$1(); polygon.setTextContent(text); _this.setTextGuideLine(labelLine); _this.updateData(data, idx, true); return _this; } FunnelPiece2.prototype.updateData = function(data, idx, firstCreate) { var polygon = this; var seriesModel = data.hostModel; var itemModel = data.getItemModel(idx); var layout2 = data.getItemLayout(idx); var emphasisModel = itemModel.getModel("emphasis"); var opacity = itemModel.get(opacityAccessPath$1); opacity = opacity == null ? 1 : opacity; if (!firstCreate) { saveOldStyle(polygon); } polygon.useStyle(data.getItemVisual(idx, "style")); polygon.style.lineJoin = "round"; if (firstCreate) { polygon.setShape({ points: layout2.points }); polygon.style.opacity = 0; initProps(polygon, { style: { opacity } }, seriesModel, idx); } else { updateProps$1(polygon, { style: { opacity }, shape: { points: layout2.points } }, seriesModel, idx); } setStatesStylesFromModel(polygon, itemModel); this._updateLabel(data, idx); enableHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope")); }; FunnelPiece2.prototype._updateLabel = function(data, idx) { var polygon = this; var labelLine = this.getTextGuideLine(); var labelText = polygon.getTextContent(); var seriesModel = data.hostModel; var itemModel = data.getItemModel(idx); var layout2 = data.getItemLayout(idx); var labelLayout2 = layout2.label; var style = data.getItemVisual(idx, "style"); var visualColor = style.fill; setLabelStyle(labelText, getLabelStatesModels(itemModel), { labelFetcher: data.hostModel, labelDataIndex: idx, defaultOpacity: style.opacity, defaultText: data.getName(idx) }, { normal: { align: labelLayout2.textAlign, verticalAlign: labelLayout2.verticalAlign } }); polygon.setTextConfig({ local: true, inside: !!labelLayout2.inside, insideStroke: visualColor, outsideFill: visualColor }); var linePoints = labelLayout2.linePoints; labelLine.setShape({ points: linePoints }); polygon.textGuideLineConfig = { anchor: linePoints ? new Point$1(linePoints[0][0], linePoints[0][1]) : null }; updateProps$1(labelText, { style: { x: labelLayout2.x, y: labelLayout2.y } }, seriesModel, idx); labelText.attr({ rotation: labelLayout2.rotation, originX: labelLayout2.x, originY: labelLayout2.y, z2: 10 }); setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), { stroke: visualColor }); }; return FunnelPiece2; }(Polygon$1); var FunnelView = function(_super) { __extends$1(FunnelView2, _super); function FunnelView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = FunnelView2.type; _this.ignoreLabelLineUpdate = true; return _this; } FunnelView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var oldData = this._data; var group = this.group; data.diff(oldData).add(function(idx) { var funnelPiece = new FunnelPiece(data, idx); data.setItemGraphicEl(idx, funnelPiece); group.add(funnelPiece); }).update(function(newIdx, oldIdx) { var piece = oldData.getItemGraphicEl(oldIdx); piece.updateData(data, newIdx); group.add(piece); data.setItemGraphicEl(newIdx, piece); }).remove(function(idx) { var piece = oldData.getItemGraphicEl(idx); removeElementWithFadeOut(piece, seriesModel, idx); }).execute(); this._data = data; }; FunnelView2.prototype.remove = function() { this.group.removeAll(); this._data = null; }; FunnelView2.prototype.dispose = function() { }; FunnelView2.type = "funnel"; return FunnelView2; }(ChartView$1); var FunnelView$1 = FunnelView; var FunnelSeriesModel = function(_super) { __extends$1(FunnelSeriesModel2, _super); function FunnelSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = FunnelSeriesModel2.type; return _this; } FunnelSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); this.legendVisualProvider = new LegendVisualProvider$1(bind$2(this.getData, this), bind$2(this.getRawData, this)); this._defaultLabelLine(option); }; FunnelSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesDataSimply(this, { coordDimensions: ["value"], encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this) }); }; FunnelSeriesModel2.prototype._defaultLabelLine = function(option) { defaultEmphasis(option, "labelLine", ["show"]); var labelLineNormalOpt = option.labelLine; var labelLineEmphasisOpt = option.emphasis.labelLine; labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; }; FunnelSeriesModel2.prototype.getDataParams = function(dataIndex) { var data = this.getData(); var params = _super.prototype.getDataParams.call(this, dataIndex); var valueDim = data.mapDimension("value"); var sum2 = data.getSum(valueDim); params.percent = !sum2 ? 0 : +(data.get(valueDim, dataIndex) / sum2 * 100).toFixed(2); params.$vars.push("percent"); return params; }; FunnelSeriesModel2.type = "series.funnel"; FunnelSeriesModel2.defaultOption = { zlevel: 0, z: 2, legendHoverLink: true, colorBy: "data", left: 80, top: 60, right: 80, bottom: 60, minSize: "0%", maxSize: "100%", sort: "descending", orient: "vertical", gap: 0, funnelAlign: "center", label: { show: true, position: "outer" }, labelLine: { show: true, length: 20, lineStyle: { width: 1 } }, itemStyle: { borderColor: "#fff", borderWidth: 1 }, emphasis: { label: { show: true } }, select: { itemStyle: { borderColor: "#212121" } } }; return FunnelSeriesModel2; }(SeriesModel$1); var FunnelSeriesModel$1 = FunnelSeriesModel; function getViewRect$2(seriesModel, api) { return getLayoutRect(seriesModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); } function getSortedIndices(data, sort2) { var valueDim = data.mapDimension("value"); var valueArr = data.mapArray(valueDim, function(val) { return val; }); var indices = []; var isAscending = sort2 === "ascending"; for (var i = 0, len2 = data.count(); i < len2; i++) { indices[i] = i; } if (typeof sort2 === "function") { indices.sort(sort2); } else if (sort2 !== "none") { indices.sort(function(a, b) { return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a]; }); } return indices; } function labelLayout(data) { var seriesModel = data.hostModel; var orient = seriesModel.get("orient"); data.each(function(idx) { var itemModel = data.getItemModel(idx); var labelModel = itemModel.getModel("label"); var labelPosition = labelModel.get("position"); var labelLineModel = itemModel.getModel("labelLine"); var layout2 = data.getItemLayout(idx); var points2 = layout2.points; var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight"; var textAlign; var textX; var textY; var linePoints; if (isLabelInside) { if (labelPosition === "insideLeft") { textX = (points2[0][0] + points2[3][0]) / 2 + 5; textY = (points2[0][1] + points2[3][1]) / 2; textAlign = "left"; } else if (labelPosition === "insideRight") { textX = (points2[1][0] + points2[2][0]) / 2 - 5; textY = (points2[1][1] + points2[2][1]) / 2; textAlign = "right"; } else { textX = (points2[0][0] + points2[1][0] + points2[2][0] + points2[3][0]) / 4; textY = (points2[0][1] + points2[1][1] + points2[2][1] + points2[3][1]) / 4; textAlign = "center"; } linePoints = [[textX, textY], [textX, textY]]; } else { var x1 = void 0; var y1 = void 0; var x2 = void 0; var y2 = void 0; var labelLineLen = labelLineModel.get("length"); if (labelPosition === "left") { x1 = (points2[3][0] + points2[0][0]) / 2; y1 = (points2[3][1] + points2[0][1]) / 2; x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = "right"; } else if (labelPosition === "right") { x1 = (points2[1][0] + points2[2][0]) / 2; y1 = (points2[1][1] + points2[2][1]) / 2; x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = "left"; } else if (labelPosition === "top") { x1 = (points2[3][0] + points2[0][0]) / 2; y1 = (points2[3][1] + points2[0][1]) / 2; y2 = y1 - labelLineLen; textY = y2 - 5; textAlign = "center"; } else if (labelPosition === "bottom") { x1 = (points2[1][0] + points2[2][0]) / 2; y1 = (points2[1][1] + points2[2][1]) / 2; y2 = y1 + labelLineLen; textY = y2 + 5; textAlign = "center"; } else if (labelPosition === "rightTop") { x1 = orient === "horizontal" ? points2[3][0] : points2[1][0]; y1 = orient === "horizontal" ? points2[3][1] : points2[1][1]; if (orient === "horizontal") { y2 = y1 - labelLineLen; textY = y2 - 5; textAlign = "center"; } else { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = "top"; } } else if (labelPosition === "rightBottom") { x1 = points2[2][0]; y1 = points2[2][1]; if (orient === "horizontal") { y2 = y1 + labelLineLen; textY = y2 + 5; textAlign = "center"; } else { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = "bottom"; } } else if (labelPosition === "leftTop") { x1 = points2[0][0]; y1 = orient === "horizontal" ? points2[0][1] : points2[1][1]; if (orient === "horizontal") { y2 = y1 - labelLineLen; textY = y2 - 5; textAlign = "center"; } else { x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = "right"; } } else if (labelPosition === "leftBottom") { x1 = orient === "horizontal" ? points2[1][0] : points2[3][0]; y1 = orient === "horizontal" ? points2[1][1] : points2[2][1]; if (orient === "horizontal") { y2 = y1 + labelLineLen; textY = y2 + 5; textAlign = "center"; } else { x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = "right"; } } else { x1 = (points2[1][0] + points2[2][0]) / 2; y1 = (points2[1][1] + points2[2][1]) / 2; if (orient === "horizontal") { y2 = y1 + labelLineLen; textY = y2 + 5; textAlign = "center"; } else { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = "left"; } } if (orient === "horizontal") { x2 = x1; textX = x2; } else { y2 = y1; textY = y2; } linePoints = [[x1, y1], [x2, y2]]; } layout2.label = { linePoints, x: textX, y: textY, verticalAlign: "middle", textAlign, inside: isLabelInside }; }); } function funnelLayout(ecModel, api) { ecModel.eachSeriesByType("funnel", function(seriesModel) { var data = seriesModel.getData(); var valueDim = data.mapDimension("value"); var sort2 = seriesModel.get("sort"); var viewRect2 = getViewRect$2(seriesModel, api); var orient = seriesModel.get("orient"); var viewWidth = viewRect2.width; var viewHeight = viewRect2.height; var indices = getSortedIndices(data, sort2); var x = viewRect2.x; var y = viewRect2.y; var sizeExtent = orient === "horizontal" ? [parsePercent$1(seriesModel.get("minSize"), viewHeight), parsePercent$1(seriesModel.get("maxSize"), viewHeight)] : [parsePercent$1(seriesModel.get("minSize"), viewWidth), parsePercent$1(seriesModel.get("maxSize"), viewWidth)]; var dataExtent = data.getDataExtent(valueDim); var min3 = seriesModel.get("min"); var max3 = seriesModel.get("max"); if (min3 == null) { min3 = Math.min(dataExtent[0], 0); } if (max3 == null) { max3 = dataExtent[1]; } var funnelAlign = seriesModel.get("funnelAlign"); var gap = seriesModel.get("gap"); var viewSize = orient === "horizontal" ? viewWidth : viewHeight; var itemSize = (viewSize - gap * (data.count() - 1)) / data.count(); var getLinePoints = function(idx2, offset) { if (orient === "horizontal") { var val_1 = data.get(valueDim, idx2) || 0; var itemHeight = linearMap$2(val_1, [min3, max3], sizeExtent, true); var y0 = void 0; switch (funnelAlign) { case "top": y0 = y; break; case "center": y0 = y + (viewHeight - itemHeight) / 2; break; case "bottom": y0 = y + (viewHeight - itemHeight); break; } return [[offset, y0], [offset, y0 + itemHeight]]; } var val = data.get(valueDim, idx2) || 0; var itemWidth = linearMap$2(val, [min3, max3], sizeExtent, true); var x0; switch (funnelAlign) { case "left": x0 = x; break; case "center": x0 = x + (viewWidth - itemWidth) / 2; break; case "right": x0 = x + viewWidth - itemWidth; break; } return [[x0, offset], [x0 + itemWidth, offset]]; }; if (sort2 === "ascending") { itemSize = -itemSize; gap = -gap; if (orient === "horizontal") { x += viewWidth; } else { y += viewHeight; } indices = indices.reverse(); } for (var i = 0; i < indices.length; i++) { var idx = indices[i]; var nextIdx = indices[i + 1]; var itemModel = data.getItemModel(idx); if (orient === "horizontal") { var width = itemModel.get(["itemStyle", "width"]); if (width == null) { width = itemSize; } else { width = parsePercent$1(width, viewWidth); if (sort2 === "ascending") { width = -width; } } var start2 = getLinePoints(idx, x); var end2 = getLinePoints(nextIdx, x + width); x += width + gap; data.setItemLayout(idx, { points: start2.concat(end2.slice().reverse()) }); } else { var height = itemModel.get(["itemStyle", "height"]); if (height == null) { height = itemSize; } else { height = parsePercent$1(height, viewHeight); if (sort2 === "ascending") { height = -height; } } var start2 = getLinePoints(idx, y); var end2 = getLinePoints(nextIdx, y + height); y += height + gap; data.setItemLayout(idx, { points: start2.concat(end2.slice().reverse()) }); } } labelLayout(data); }); } function install$D(registers) { registers.registerChartView(FunnelView$1); registers.registerSeriesModel(FunnelSeriesModel$1); registers.registerLayout(funnelLayout); registers.registerProcessor(dataFilter$1("funnel")); } var DEFAULT_SMOOTH = 0.3; var ParallelView$2 = function(_super) { __extends$1(ParallelView2, _super); function ParallelView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelView2.type; _this._dataGroup = new Group$4(); _this._initialized = false; return _this; } ParallelView2.prototype.init = function() { this.group.add(this._dataGroup); }; ParallelView2.prototype.render = function(seriesModel, ecModel, api, payload) { var dataGroup = this._dataGroup; var data = seriesModel.getData(); var oldData = this._data; var coordSys = seriesModel.coordinateSystem; var dimensions = coordSys.dimensions; var seriesScope = makeSeriesScope(seriesModel); data.diff(oldData).add(add2).update(update).remove(remove2).execute(); function add2(newDataIndex) { var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys); updateElCommon(line, data, newDataIndex, seriesScope); } function update(newDataIndex, oldDataIndex) { var line = oldData.getItemGraphicEl(oldDataIndex); var points2 = createLinePoints(data, newDataIndex, dimensions, coordSys); data.setItemGraphicEl(newDataIndex, line); updateProps$1(line, { shape: { points: points2 } }, seriesModel, newDataIndex); saveOldStyle(line); updateElCommon(line, data, newDataIndex, seriesScope); } function remove2(oldDataIndex) { var line = oldData.getItemGraphicEl(oldDataIndex); dataGroup.remove(line); } if (!this._initialized) { this._initialized = true; var clipPath = createGridClipShape$2(coordSys, seriesModel, function() { setTimeout(function() { dataGroup.removeClipPath(); }); }); dataGroup.setClipPath(clipPath); } this._data = data; }; ParallelView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { this._initialized = true; this._data = null; this._dataGroup.removeAll(); }; ParallelView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { var data = seriesModel.getData(); var coordSys = seriesModel.coordinateSystem; var dimensions = coordSys.dimensions; var seriesScope = makeSeriesScope(seriesModel); for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) { var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys); line.incremental = true; updateElCommon(line, data, dataIndex, seriesScope); } }; ParallelView2.prototype.remove = function() { this._dataGroup && this._dataGroup.removeAll(); this._data = null; }; ParallelView2.type = "parallel"; return ParallelView2; }(ChartView$1); function createGridClipShape$2(coordSys, seriesModel, cb) { var parallelModel = coordSys.model; var rect = coordSys.getRect(); var rectEl = new Rect$3({ shape: { x: rect.x, y: rect.y, width: rect.width, height: rect.height } }); var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height"; rectEl.setShape(dim, 0); initProps(rectEl, { shape: { width: rect.width, height: rect.height } }, seriesModel, cb); return rectEl; } function createLinePoints(data, dataIndex, dimensions, coordSys) { var points2 = []; for (var i = 0; i < dimensions.length; i++) { var dimName = dimensions[i]; var value = data.get(data.mapDimension(dimName), dataIndex); if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) { points2.push(coordSys.dataToPoint(value, dimName)); } } return points2; } function addEl(data, dataGroup, dataIndex, dimensions, coordSys) { var points2 = createLinePoints(data, dataIndex, dimensions, coordSys); var line = new Polyline$3({ shape: { points: points2 }, z2: 10 }); dataGroup.add(line); data.setItemGraphicEl(dataIndex, line); return line; } function makeSeriesScope(seriesModel) { var smooth = seriesModel.get("smooth", true); smooth === true && (smooth = DEFAULT_SMOOTH); smooth = numericToNumber(smooth); eqNaN(smooth) && (smooth = 0); return { smooth }; } function updateElCommon(el, data, dataIndex, seriesScope) { el.useStyle(data.getItemVisual(dataIndex, "style")); el.style.fill = null; el.setShape("smooth", seriesScope.smooth); var itemModel = data.getItemModel(dataIndex); var emphasisModel = itemModel.getModel("emphasis"); setStatesStylesFromModel(el, itemModel, "lineStyle"); enableHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope")); } function isEmptyValue(val, axisType) { return axisType === "category" ? val == null : val == null || isNaN(val); } var ParallelView$3 = ParallelView$2; var ParallelSeriesModel = function(_super) { __extends$1(ParallelSeriesModel2, _super); function ParallelSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelSeriesModel2.type; _this.visualStyleAccessPath = "lineStyle"; _this.visualDrawType = "stroke"; return _this; } ParallelSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this, { useEncodeDefaulter: bind$2(makeDefaultEncode, null, this) }); }; ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function(activeState) { var coordSys = this.coordinateSystem; var data = this.getData(); var indices = []; coordSys.eachActiveState(data, function(theActiveState, dataIndex) { if (activeState === theActiveState) { indices.push(data.getRawIndex(dataIndex)); } }); return indices; }; ParallelSeriesModel2.type = "series.parallel"; ParallelSeriesModel2.dependencies = ["parallel"]; ParallelSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "parallel", parallelIndex: 0, label: { show: false }, inactiveOpacity: 0.05, activeOpacity: 1, lineStyle: { width: 1, opacity: 0.45, type: "solid" }, emphasis: { label: { show: false } }, progressive: 500, smooth: false, animationEasing: "linear" }; return ParallelSeriesModel2; }(SeriesModel$1); function makeDefaultEncode(seriesModel) { var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); if (!parallelModel) { return; } var encodeDefine = {}; each$g(parallelModel.dimensions, function(axisDim) { var dataDimIndex = convertDimNameToNumber(axisDim); encodeDefine[axisDim] = dataDimIndex; }); return encodeDefine; } function convertDimNameToNumber(dimName) { return +dimName.replace("dim", ""); } var ParallelSeriesModel$1 = ParallelSeriesModel; var opacityAccessPath = ["lineStyle", "opacity"]; var parallelVisual = { seriesType: "parallel", reset: function(seriesModel, ecModel) { var coordSys = seriesModel.coordinateSystem; var opacityMap = { normal: seriesModel.get(["lineStyle", "opacity"]), active: seriesModel.get("activeOpacity"), inactive: seriesModel.get("inactiveOpacity") }; return { progress: function(params, data) { coordSys.eachActiveState(data, function(activeState, dataIndex) { var opacity = opacityMap[activeState]; if (activeState === "normal" && data.hasItemOption) { var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true); itemOpacity != null && (opacity = itemOpacity); } var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); existsStyle.opacity = opacity; }, params.start, params.end); } }; } }; var parallelVisual$1 = parallelVisual; function parallelPreprocessor(option) { createParallelIfNeeded(option); mergeAxisOptionFromParallel(option); } function createParallelIfNeeded(option) { if (option.parallel) { return; } var hasParallelSeries = false; each$g(option.series, function(seriesOpt) { if (seriesOpt && seriesOpt.type === "parallel") { hasParallelSeries = true; } }); if (hasParallelSeries) { option.parallel = [{}]; } } function mergeAxisOptionFromParallel(option) { var axes = normalizeToArray(option.parallelAxis); each$g(axes, function(axisOption) { if (!isObject$3(axisOption)) { return; } var parallelIndex = axisOption.parallelIndex || 0; var parallelOption = normalizeToArray(option.parallel)[parallelIndex]; if (parallelOption && parallelOption.parallelAxisDefault) { merge(axisOption, parallelOption.parallelAxisDefault, false); } }); } var CLICK_THRESHOLD = 5; var ParallelView = function(_super) { __extends$1(ParallelView2, _super); function ParallelView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelView2.type; return _this; } ParallelView2.prototype.render = function(parallelModel, ecModel, api) { this._model = parallelModel; this._api = api; if (!this._handlers) { this._handlers = {}; each$g(handlers$1, function(handler, eventName) { api.getZr().on(eventName, this._handlers[eventName] = bind$2(handler, this)); }, this); } createOrUpdate(this, "_throttledDispatchExpand", parallelModel.get("axisExpandRate"), "fixRate"); }; ParallelView2.prototype.dispose = function(ecModel, api) { each$g(this._handlers, function(handler, eventName) { api.getZr().off(eventName, handler); }); this._handlers = null; }; ParallelView2.prototype._throttledDispatchExpand = function(opt) { this._dispatchExpand(opt); }; ParallelView2.prototype._dispatchExpand = function(opt) { opt && this._api.dispatchAction(extend({ type: "parallelAxisExpand" }, opt)); }; ParallelView2.type = "parallel"; return ParallelView2; }(ComponentView$1); var handlers$1 = { mousedown: function(e2) { if (checkTrigger(this, "click")) { this._mouseDownPoint = [e2.offsetX, e2.offsetY]; } }, mouseup: function(e2) { var mouseDownPoint = this._mouseDownPoint; if (checkTrigger(this, "click") && mouseDownPoint) { var point = [e2.offsetX, e2.offsetY]; var dist2 = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2); if (dist2 > CLICK_THRESHOLD) { return; } var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]); result.behavior !== "none" && this._dispatchExpand({ axisExpandWindow: result.axisExpandWindow }); } this._mouseDownPoint = null; }, mousemove: function(e2) { if (this._mouseDownPoint || !checkTrigger(this, "mousemove")) { return; } var model = this._model; var result = model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]); var behavior = result.behavior; behavior === "jump" && this._throttledDispatchExpand.debounceNextCall(model.get("axisExpandDebounce")); this._throttledDispatchExpand(behavior === "none" ? null : { axisExpandWindow: result.axisExpandWindow, animation: behavior === "jump" ? null : { duration: 0 } }); } }; function checkTrigger(view2, triggerOn) { var model = view2._model; return model.get("axisExpandable") && model.get("axisExpandTriggerOn") === triggerOn; } var ParallelView$1 = ParallelView; var ParallelModel = function(_super) { __extends$1(ParallelModel2, _super); function ParallelModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelModel2.type; return _this; } ParallelModel2.prototype.init = function() { _super.prototype.init.apply(this, arguments); this.mergeOption({}); }; ParallelModel2.prototype.mergeOption = function(newOption) { var thisOption = this.option; newOption && merge(thisOption, newOption, true); this._initDimensions(); }; ParallelModel2.prototype.contains = function(model, ecModel) { var parallelIndex = model.get("parallelIndex"); return parallelIndex != null && ecModel.getComponent("parallel", parallelIndex) === this; }; ParallelModel2.prototype.setAxisExpand = function(opt) { each$g(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(name) { if (opt.hasOwnProperty(name)) { this.option[name] = opt[name]; } }, this); }; ParallelModel2.prototype._initDimensions = function() { var dimensions = this.dimensions = []; var parallelAxisIndex = this.parallelAxisIndex = []; var axisModels = filter(this.ecModel.queryComponents({ mainType: "parallelAxis" }), function(axisModel) { return (axisModel.get("parallelIndex") || 0) === this.componentIndex; }, this); each$g(axisModels, function(axisModel) { dimensions.push("dim" + axisModel.get("dim")); parallelAxisIndex.push(axisModel.componentIndex); }); }; ParallelModel2.type = "parallel"; ParallelModel2.dependencies = ["parallelAxis"]; ParallelModel2.layoutMode = "box"; ParallelModel2.defaultOption = { zlevel: 0, z: 0, left: 80, top: 60, right: 80, bottom: 60, layout: "horizontal", axisExpandable: false, axisExpandCenter: null, axisExpandCount: 0, axisExpandWidth: 50, axisExpandRate: 17, axisExpandDebounce: 50, axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], axisExpandTriggerOn: "click", parallelAxisDefault: null }; return ParallelModel2; }(ComponentModel$1); var ParallelModel$1 = ParallelModel; var ParallelAxis = function(_super) { __extends$1(ParallelAxis2, _super); function ParallelAxis2(dim, scale2, coordExtent, axisType, axisIndex) { var _this = _super.call(this, dim, scale2, coordExtent) || this; _this.type = axisType || "value"; _this.axisIndex = axisIndex; return _this; } ParallelAxis2.prototype.isHorizontal = function() { return this.coordinateSystem.getModel().get("layout") !== "horizontal"; }; return ParallelAxis2; }(Axis$1); var ParallelAxis$1 = ParallelAxis; function sliderMove(delta, handleEnds, extent3, handleIndex, minSpan, maxSpan) { delta = delta || 0; var extentSpan = extent3[1] - extent3[0]; if (minSpan != null) { minSpan = restrict$1(minSpan, [0, extentSpan]); } if (maxSpan != null) { maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0); } if (handleIndex === "all") { var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]); handleSpan = restrict$1(handleSpan, [0, extentSpan]); minSpan = maxSpan = restrict$1(handleSpan, [minSpan, maxSpan]); handleIndex = 0; } handleEnds[0] = restrict$1(handleEnds[0], extent3); handleEnds[1] = restrict$1(handleEnds[1], extent3); var originalDistSign = getSpanSign(handleEnds, handleIndex); handleEnds[handleIndex] += delta; var extentMinSpan = minSpan || 0; var realExtent = extent3.slice(); originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan; handleEnds[handleIndex] = restrict$1(handleEnds[handleIndex], realExtent); var currDistSign; currDistSign = getSpanSign(handleEnds, handleIndex); if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) { handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan; } currDistSign = getSpanSign(handleEnds, handleIndex); if (maxSpan != null && currDistSign.span > maxSpan) { handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan; } return handleEnds; } function getSpanSign(handleEnds, handleIndex) { var dist2 = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; return { span: Math.abs(dist2), sign: dist2 > 0 ? -1 : dist2 < 0 ? 1 : handleIndex ? -1 : 1 }; } function restrict$1(value, extend2) { return Math.min(extend2[1] != null ? extend2[1] : Infinity, Math.max(extend2[0] != null ? extend2[0] : -Infinity, value)); } var each$b = each$g; var mathMin$2 = Math.min; var mathMax$2 = Math.max; var mathFloor = Math.floor; var mathCeil = Math.ceil; var round = round$2; var PI$1 = Math.PI; var Parallel = function() { function Parallel2(parallelModel, ecModel, api) { this.type = "parallel"; this._axesMap = createHashMap(); this._axesLayout = {}; this.dimensions = parallelModel.dimensions; this._model = parallelModel; this._init(parallelModel, ecModel, api); } Parallel2.prototype._init = function(parallelModel, ecModel, api) { var dimensions = parallelModel.dimensions; var parallelAxisIndex = parallelModel.parallelAxisIndex; each$b(dimensions, function(dim, idx) { var axisIndex = parallelAxisIndex[idx]; var axisModel = ecModel.getComponent("parallelAxis", axisIndex); var axis = this._axesMap.set(dim, new ParallelAxis$1(dim, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisIndex)); var isCategory2 = axis.type === "category"; axis.onBand = isCategory2 && axisModel.get("boundaryGap"); axis.inverse = axisModel.get("inverse"); axisModel.axis = axis; axis.model = axisModel; axis.coordinateSystem = axisModel.coordinateSystem = this; }, this); }; Parallel2.prototype.update = function(ecModel, api) { this._updateAxesFromSeries(this._model, ecModel); }; Parallel2.prototype.containPoint = function(point) { var layoutInfo = this._makeLayoutInfo(); var axisBase = layoutInfo.axisBase; var layoutBase = layoutInfo.layoutBase; var pixelDimIndex = layoutInfo.pixelDimIndex; var pAxis = point[1 - pixelDimIndex]; var pLayout = point[pixelDimIndex]; return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength; }; Parallel2.prototype.getModel = function() { return this._model; }; Parallel2.prototype._updateAxesFromSeries = function(parallelModel, ecModel) { ecModel.eachSeries(function(seriesModel) { if (!parallelModel.contains(seriesModel, ecModel)) { return; } var data = seriesModel.getData(); each$b(this.dimensions, function(dim) { var axis = this._axesMap.get(dim); axis.scale.unionExtentFromData(data, data.mapDimension(dim)); niceScaleExtent(axis.scale, axis.model); }, this); }, this); }; Parallel2.prototype.resize = function(parallelModel, api) { this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); this._layoutAxes(); }; Parallel2.prototype.getRect = function() { return this._rect; }; Parallel2.prototype._makeLayoutInfo = function() { var parallelModel = this._model; var rect = this._rect; var xy = ["x", "y"]; var wh = ["width", "height"]; var layout2 = parallelModel.get("layout"); var pixelDimIndex = layout2 === "horizontal" ? 0 : 1; var layoutLength = rect[wh[pixelDimIndex]]; var layoutExtent = [0, layoutLength]; var axisCount = this.dimensions.length; var axisExpandWidth = restrict(parallelModel.get("axisExpandWidth"), layoutExtent); var axisExpandCount = restrict(parallelModel.get("axisExpandCount") || 0, [0, axisCount]); var axisExpandable = parallelModel.get("axisExpandable") && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; var axisExpandWindow = parallelModel.get("axisExpandWindow"); var winSize; if (!axisExpandWindow) { winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent); var axisExpandCenter = parallelModel.get("axisExpandCenter") || mathFloor(axisCount / 2); axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]; axisExpandWindow[1] = axisExpandWindow[0] + winSize; } else { winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent); axisExpandWindow[1] = axisExpandWindow[0] + winSize; } var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); axisCollapseWidth < 3 && (axisCollapseWidth = 0); var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0]; return { layout: layout2, pixelDimIndex, layoutBase: rect[xy[pixelDimIndex]], layoutLength, axisBase: rect[xy[1 - pixelDimIndex]], axisLength: rect[wh[1 - pixelDimIndex]], axisExpandable, axisExpandWidth, axisCollapseWidth, axisExpandWindow, axisCount, winInnerIndices, axisExpandWindow0Pos }; }; Parallel2.prototype._layoutAxes = function() { var rect = this._rect; var axes = this._axesMap; var dimensions = this.dimensions; var layoutInfo = this._makeLayoutInfo(); var layout2 = layoutInfo.layout; axes.each(function(axis) { var axisExtent = [0, layoutInfo.axisLength]; var idx = axis.inverse ? 1 : 0; axis.setExtent(axisExtent[idx], axisExtent[1 - idx]); }); each$b(dimensions, function(dim, idx) { var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo); var positionTable = { horizontal: { x: posInfo.position, y: layoutInfo.axisLength }, vertical: { x: 0, y: posInfo.position } }; var rotationTable = { horizontal: PI$1 / 2, vertical: 0 }; var position2 = [positionTable[layout2].x + rect.x, positionTable[layout2].y + rect.y]; var rotation = rotationTable[layout2]; var transform2 = create$1(); rotate(transform2, transform2, rotation); translate(transform2, transform2, position2); this._axesLayout[dim] = { position: position2, rotation, transform: transform2, axisNameAvailableWidth: posInfo.axisNameAvailableWidth, axisLabelShow: posInfo.axisLabelShow, nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth, tickDirection: 1, labelDirection: 1 }; }, this); }; Parallel2.prototype.getAxis = function(dim) { return this._axesMap.get(dim); }; Parallel2.prototype.dataToPoint = function(value, dim) { return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim); }; Parallel2.prototype.eachActiveState = function(data, callback, start2, end2) { start2 == null && (start2 = 0); end2 == null && (end2 = data.count()); var axesMap = this._axesMap; var dimensions = this.dimensions; var dataDimensions = []; var axisModels = []; each$g(dimensions, function(axisDim) { dataDimensions.push(data.mapDimension(axisDim)); axisModels.push(axesMap.get(axisDim).model); }); var hasActiveSet = this.hasAxisBrushed(); for (var dataIndex = start2; dataIndex < end2; dataIndex++) { var activeState = void 0; if (!hasActiveSet) { activeState = "normal"; } else { activeState = "active"; var values = data.getValues(dataDimensions, dataIndex); for (var j = 0, lenj = dimensions.length; j < lenj; j++) { var state = axisModels[j].getActiveState(values[j]); if (state === "inactive") { activeState = "inactive"; break; } } } callback(activeState, dataIndex); } }; Parallel2.prototype.hasAxisBrushed = function() { var dimensions = this.dimensions; var axesMap = this._axesMap; var hasActiveSet = false; for (var j = 0, lenj = dimensions.length; j < lenj; j++) { if (axesMap.get(dimensions[j]).model.getActiveState() !== "normal") { hasActiveSet = true; } } return hasActiveSet; }; Parallel2.prototype.axisCoordToPoint = function(coord, dim) { var axisLayout = this._axesLayout[dim]; return applyTransform([coord, 0], axisLayout.transform); }; Parallel2.prototype.getAxisLayout = function(dim) { return clone$4(this._axesLayout[dim]); }; Parallel2.prototype.getSlidedAxisExpandWindow = function(point) { var layoutInfo = this._makeLayoutInfo(); var pixelDimIndex = layoutInfo.pixelDimIndex; var axisExpandWindow = layoutInfo.axisExpandWindow.slice(); var winSize = axisExpandWindow[1] - axisExpandWindow[0]; var extent3 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; if (!this.containPoint(point)) { return { behavior: "none", axisExpandWindow }; } var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; var delta; var behavior = "slide"; var axisCollapseWidth = layoutInfo.axisCollapseWidth; var triggerArea = this._model.get("axisExpandSlideTriggerArea"); var useJump = triggerArea[0] != null; if (axisCollapseWidth) { if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) { behavior = "jump"; delta = pointCoord - winSize * triggerArea[2]; } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) { behavior = "jump"; delta = pointCoord - winSize * (1 - triggerArea[2]); } else { (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0); } delta *= layoutInfo.axisExpandWidth / axisCollapseWidth; delta ? sliderMove(delta, axisExpandWindow, extent3, "all") : behavior = "none"; } else { var winSize2 = axisExpandWindow[1] - axisExpandWindow[0]; var pos = extent3[1] * pointCoord / winSize2; axisExpandWindow = [mathMax$2(0, pos - winSize2 / 2)]; axisExpandWindow[1] = mathMin$2(extent3[1], axisExpandWindow[0] + winSize2); axisExpandWindow[0] = axisExpandWindow[1] - winSize2; } return { axisExpandWindow, behavior }; }; return Parallel2; }(); function restrict(len2, extent3) { return mathMin$2(mathMax$2(len2, extent3[0]), extent3[1]); } function layoutAxisWithoutExpand(axisIndex, layoutInfo) { var step2 = layoutInfo.layoutLength / (layoutInfo.axisCount - 1); return { position: step2 * axisIndex, axisNameAvailableWidth: step2, axisLabelShow: true }; } function layoutAxisWithExpand(axisIndex, layoutInfo) { var layoutLength = layoutInfo.layoutLength; var axisExpandWidth = layoutInfo.axisExpandWidth; var axisCount = layoutInfo.axisCount; var axisCollapseWidth = layoutInfo.axisCollapseWidth; var winInnerIndices = layoutInfo.winInnerIndices; var position2; var axisNameAvailableWidth = axisCollapseWidth; var axisLabelShow = false; var nameTruncateMaxWidth; if (axisIndex < winInnerIndices[0]) { position2 = axisIndex * axisCollapseWidth; nameTruncateMaxWidth = axisCollapseWidth; } else if (axisIndex <= winInnerIndices[1]) { position2 = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0]; axisNameAvailableWidth = axisExpandWidth; axisLabelShow = true; } else { position2 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth; nameTruncateMaxWidth = axisCollapseWidth; } return { position: position2, axisNameAvailableWidth, axisLabelShow, nameTruncateMaxWidth }; } var Parallel$1 = Parallel; function createParallelCoordSys(ecModel, api) { var coordSysList = []; ecModel.eachComponent("parallel", function(parallelModel, idx) { var coordSys = new Parallel$1(parallelModel, ecModel, api); coordSys.name = "parallel_" + idx; coordSys.resize(parallelModel, api); parallelModel.coordinateSystem = coordSys; coordSys.model = parallelModel; coordSysList.push(coordSys); }); ecModel.eachSeries(function(seriesModel) { if (seriesModel.get("coordinateSystem") === "parallel") { var parallelModel = seriesModel.getReferringComponents("parallel", SINGLE_REFERRING).models[0]; seriesModel.coordinateSystem = parallelModel.coordinateSystem; } }); return coordSysList; } var parallelCoordSysCreator = { create: createParallelCoordSys }; var parallelCoordSysCreator$1 = parallelCoordSysCreator; var ParallelAxisModel = function(_super) { __extends$1(ParallelAxisModel2, _super); function ParallelAxisModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelAxisModel2.type; _this.activeIntervals = []; return _this; } ParallelAxisModel2.prototype.getAreaSelectStyle = function() { return makeStyleMapper([ ["fill", "color"], ["lineWidth", "borderWidth"], ["stroke", "borderColor"], ["width", "width"], ["opacity", "opacity"] ])(this.getModel("areaSelectStyle")); }; ParallelAxisModel2.prototype.setActiveIntervals = function(intervals) { var activeIntervals = this.activeIntervals = clone$4(intervals); if (activeIntervals) { for (var i = activeIntervals.length - 1; i >= 0; i--) { asc$2(activeIntervals[i]); } } }; ParallelAxisModel2.prototype.getActiveState = function(value) { var activeIntervals = this.activeIntervals; if (!activeIntervals.length) { return "normal"; } if (value == null || isNaN(+value)) { return "inactive"; } if (activeIntervals.length === 1) { var interval = activeIntervals[0]; if (interval[0] <= value && value <= interval[1]) { return "active"; } } else { for (var i = 0, len2 = activeIntervals.length; i < len2; i++) { if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) { return "active"; } } } return "inactive"; }; return ParallelAxisModel2; }(ComponentModel$1); mixin(ParallelAxisModel, AxisModelCommonMixin); var ParallelAxisModel$1 = ParallelAxisModel; var BRUSH_PANEL_GLOBAL = true; var mathMin$1 = Math.min; var mathMax$1 = Math.max; var mathPow = Math.pow; var COVER_Z = 1e4; var UNSELECT_THRESHOLD = 6; var MIN_RESIZE_LINE_WIDTH = 6; var MUTEX_RESOURCE_KEY = "globalPan"; var DIRECTION_MAP = { w: [0, 0], e: [0, 1], n: [1, 0], s: [1, 1] }; var CURSOR_MAP = { w: "ew", e: "ew", n: "ns", s: "ns", ne: "nesw", sw: "nesw", nw: "nwse", se: "nwse" }; var DEFAULT_BRUSH_OPT = { brushStyle: { lineWidth: 2, stroke: "rgba(210,219,238,0.3)", fill: "#D2DBEE" }, transformable: true, brushMode: "single", removeOnClick: false }; var baseUID = 0; var BrushController = function(_super) { __extends$1(BrushController2, _super); function BrushController2(zr) { var _this = _super.call(this) || this; _this._track = []; _this._covers = []; _this._handlers = {}; _this._zr = zr; _this.group = new Group$4(); _this._uid = "brushController_" + baseUID++; each$g(pointerHandlers, function(handler, eventName) { this._handlers[eventName] = bind$2(handler, this); }, _this); return _this; } BrushController2.prototype.enableBrush = function(brushOption) { this._brushType && this._doDisableBrush(); brushOption.brushType && this._doEnableBrush(brushOption); return this; }; BrushController2.prototype._doEnableBrush = function(brushOption) { var zr = this._zr; if (!this._enableGlobalPan) { take(zr, MUTEX_RESOURCE_KEY, this._uid); } each$g(this._handlers, function(handler, eventName) { zr.on(eventName, handler); }); this._brushType = brushOption.brushType; this._brushOption = merge(clone$4(DEFAULT_BRUSH_OPT), brushOption, true); }; BrushController2.prototype._doDisableBrush = function() { var zr = this._zr; release(zr, MUTEX_RESOURCE_KEY, this._uid); each$g(this._handlers, function(handler, eventName) { zr.off(eventName, handler); }); this._brushType = this._brushOption = null; }; BrushController2.prototype.setPanels = function(panelOpts) { if (panelOpts && panelOpts.length) { var panels_1 = this._panels = {}; each$g(panelOpts, function(panelOpts2) { panels_1[panelOpts2.panelId] = clone$4(panelOpts2); }); } else { this._panels = null; } return this; }; BrushController2.prototype.mount = function(opt) { opt = opt || {}; this._enableGlobalPan = opt.enableGlobalPan; var thisGroup = this.group; this._zr.add(thisGroup); thisGroup.attr({ x: opt.x || 0, y: opt.y || 0, rotation: opt.rotation || 0, scaleX: opt.scaleX || 1, scaleY: opt.scaleY || 1 }); this._transform = thisGroup.getLocalTransform(); return this; }; BrushController2.prototype.updateCovers = function(coverConfigList) { coverConfigList = map$1(coverConfigList, function(coverConfig) { return merge(clone$4(DEFAULT_BRUSH_OPT), coverConfig, true); }); var tmpIdPrefix = "\0-brush-index-"; var oldCovers = this._covers; var newCovers = this._covers = []; var controller = this; var creatingCover = this._creatingCover; new DataDiffer$1(oldCovers, coverConfigList, oldGetKey, getKey2).add(addOrUpdate).update(addOrUpdate).remove(remove2).execute(); return this; function getKey2(brushOption, index) { return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + "-" + brushOption.brushType; } function oldGetKey(cover, index) { return getKey2(cover.__brushOption, index); } function addOrUpdate(newIndex, oldIndex) { var newBrushInternal = coverConfigList[newIndex]; if (oldIndex != null && oldCovers[oldIndex] === creatingCover) { newCovers[newIndex] = oldCovers[oldIndex]; } else { var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal)); updateCoverAfterCreation(controller, cover); } } function remove2(oldIndex) { if (oldCovers[oldIndex] !== creatingCover) { controller.group.remove(oldCovers[oldIndex]); } } }; BrushController2.prototype.unmount = function() { this.enableBrush(false); clearCovers(this); this._zr.remove(this.group); return this; }; BrushController2.prototype.dispose = function() { this.unmount(); this.off(); }; return BrushController2; }(Eventful$1); function createCover(controller, brushOption) { var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption); cover.__brushOption = brushOption; updateZ$1(cover, brushOption); controller.group.add(cover); return cover; } function endCreating(controller, creatingCover) { var coverRenderer = getCoverRenderer(creatingCover); if (coverRenderer.endCreating) { coverRenderer.endCreating(controller, creatingCover); updateZ$1(creatingCover, creatingCover.__brushOption); } return creatingCover; } function updateCoverShape(controller, cover) { var brushOption = cover.__brushOption; getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption); } function updateZ$1(cover, brushOption) { var z = brushOption.z; z == null && (z = COVER_Z); cover.traverse(function(el) { el.z = z; el.z2 = z; }); } function updateCoverAfterCreation(controller, cover) { getCoverRenderer(cover).updateCommon(controller, cover); updateCoverShape(controller, cover); } function getCoverRenderer(cover) { return coverRenderers[cover.__brushOption.brushType]; } function getPanelByPoint(controller, e2, localCursorPoint) { var panels = controller._panels; if (!panels) { return BRUSH_PANEL_GLOBAL; } var panel; var transform2 = controller._transform; each$g(panels, function(pn) { pn.isTargetByCursor(e2, localCursorPoint, transform2) && (panel = pn); }); return panel; } function getPanelByCover(controller, cover) { var panels = controller._panels; if (!panels) { return BRUSH_PANEL_GLOBAL; } var panelId = cover.__brushOption.panelId; return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL; } function clearCovers(controller) { var covers = controller._covers; var originalLength = covers.length; each$g(covers, function(cover) { controller.group.remove(cover); }, controller); covers.length = 0; return !!originalLength; } function trigger(controller, opt) { var areas = map$1(controller._covers, function(cover) { var brushOption = cover.__brushOption; var range = clone$4(brushOption.range); return { brushType: brushOption.brushType, panelId: brushOption.panelId, range }; }); controller.trigger("brush", { areas, isEnd: !!opt.isEnd, removeOnClick: !!opt.removeOnClick }); } function shouldShowCover(controller) { var track = controller._track; if (!track.length) { return false; } var p2 = track[track.length - 1]; var p1 = track[0]; var dx = p2[0] - p1[0]; var dy = p2[1] - p1[1]; var dist2 = mathPow(dx * dx + dy * dy, 0.5); return dist2 > UNSELECT_THRESHOLD; } function getTrackEnds(track) { var tail = track.length - 1; tail < 0 && (tail = 0); return [track[0], track[tail]]; } function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) { var cover = new Group$4(); cover.add(new Rect$3({ name: "main", style: makeStyle(brushOption), silent: true, draggable: true, cursor: "move", drift: curry$1(driftRect, rectRangeConverter, controller, cover, ["n", "s", "w", "e"]), ondragend: curry$1(trigger, controller, { isEnd: true }) })); each$g(edgeNameSequences, function(nameSequence) { cover.add(new Rect$3({ name: nameSequence.join(""), style: { opacity: 0 }, draggable: true, silent: true, invisible: true, drift: curry$1(driftRect, rectRangeConverter, controller, cover, nameSequence), ondragend: curry$1(trigger, controller, { isEnd: true }) })); }); return cover; } function updateBaseRect(controller, cover, localRange, brushOption) { var lineWidth = brushOption.brushStyle.lineWidth || 0; var handleSize = mathMax$1(lineWidth, MIN_RESIZE_LINE_WIDTH); var x = localRange[0][0]; var y = localRange[1][0]; var xa = x - lineWidth / 2; var ya = y - lineWidth / 2; var x2 = localRange[0][1]; var y2 = localRange[1][1]; var x2a = x2 - handleSize + lineWidth / 2; var y2a = y2 - handleSize + lineWidth / 2; var width = x2 - x; var height = y2 - y; var widtha = width + lineWidth; var heighta = height + lineWidth; updateRectShape(controller, cover, "main", x, y, width, height); if (brushOption.transformable) { updateRectShape(controller, cover, "w", xa, ya, handleSize, heighta); updateRectShape(controller, cover, "e", x2a, ya, handleSize, heighta); updateRectShape(controller, cover, "n", xa, ya, widtha, handleSize); updateRectShape(controller, cover, "s", xa, y2a, widtha, handleSize); updateRectShape(controller, cover, "nw", xa, ya, handleSize, handleSize); updateRectShape(controller, cover, "ne", x2a, ya, handleSize, handleSize); updateRectShape(controller, cover, "sw", xa, y2a, handleSize, handleSize); updateRectShape(controller, cover, "se", x2a, y2a, handleSize, handleSize); } } function updateCommon$1(controller, cover) { var brushOption = cover.__brushOption; var transformable = brushOption.transformable; var mainEl = cover.childAt(0); mainEl.useStyle(makeStyle(brushOption)); mainEl.attr({ silent: !transformable, cursor: transformable ? "move" : "default" }); each$g([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(nameSequence) { var el = cover.childOfName(nameSequence.join("")); var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence); el && el.attr({ silent: !transformable, invisible: !transformable, cursor: transformable ? CURSOR_MAP[globalDir] + "-resize" : null }); }); } function updateRectShape(controller, cover, name, x, y, w, h) { var el = cover.childOfName(name); el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]]))); } function makeStyle(brushOption) { return defaults({ strokeNoScale: true }, brushOption.brushStyle); } function formatRectRange(x, y, x2, y2) { var min3 = [mathMin$1(x, x2), mathMin$1(y, y2)]; var max3 = [mathMax$1(x, x2), mathMax$1(y, y2)]; return [ [min3[0], max3[0]], [min3[1], max3[1]] ]; } function getTransform(controller) { return getTransform$1(controller.group); } function getGlobalDirection1(controller, localDirName) { var map2 = { w: "left", e: "right", n: "top", s: "bottom" }; var inverseMap = { left: "w", right: "e", top: "n", bottom: "s" }; var dir3 = transformDirection(map2[localDirName], getTransform(controller)); return inverseMap[dir3]; } function getGlobalDirection2(controller, localDirNameSeq) { var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])]; (globalDir[0] === "e" || globalDir[0] === "w") && globalDir.reverse(); return globalDir.join(""); } function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) { var brushOption = cover.__brushOption; var rectRange = rectRangeConverter.toRectRange(brushOption.range); var localDelta = toLocalDelta(controller, dx, dy); each$g(dirNameSequence, function(dirName) { var ind = DIRECTION_MAP[dirName]; rectRange[ind[0]][ind[1]] += localDelta[ind[0]]; }); brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1])); updateCoverAfterCreation(controller, cover); trigger(controller, { isEnd: false }); } function driftPolygon(controller, cover, dx, dy) { var range = cover.__brushOption.range; var localDelta = toLocalDelta(controller, dx, dy); each$g(range, function(point) { point[0] += localDelta[0]; point[1] += localDelta[1]; }); updateCoverAfterCreation(controller, cover); trigger(controller, { isEnd: false }); } function toLocalDelta(controller, dx, dy) { var thisGroup = controller.group; var localD = thisGroup.transformCoordToLocal(dx, dy); var localZero = thisGroup.transformCoordToLocal(0, 0); return [localD[0] - localZero[0], localD[1] - localZero[1]]; } function clipByPanel(controller, cover, data) { var panel = getPanelByCover(controller, cover); return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone$4(data); } function pointsToRect(points2) { var xmin = mathMin$1(points2[0][0], points2[1][0]); var ymin = mathMin$1(points2[0][1], points2[1][1]); var xmax = mathMax$1(points2[0][0], points2[1][0]); var ymax = mathMax$1(points2[0][1], points2[1][1]); return { x: xmin, y: ymin, width: xmax - xmin, height: ymax - ymin }; } function resetCursor(controller, e2, localCursorPoint) { if (!controller._brushType || isOutsideZrArea(controller, e2.offsetX, e2.offsetY)) { return; } var zr = controller._zr; var covers = controller._covers; var currPanel = getPanelByPoint(controller, e2, localCursorPoint); if (!controller._dragging) { for (var i = 0; i < covers.length; i++) { var brushOption = covers[i].__brushOption; if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) { return; } } } currPanel && zr.setCursorStyle("crosshair"); } function preventDefault(e2) { var rawE = e2.event; rawE.preventDefault && rawE.preventDefault(); } function mainShapeContain(cover, x, y) { return cover.childOfName("main").contain(x, y); } function updateCoverByMouse(controller, e2, localCursorPoint, isEnd) { var creatingCover = controller._creatingCover; var panel = controller._creatingPanel; var thisBrushOption = controller._brushOption; var eventParams; controller._track.push(localCursorPoint.slice()); if (shouldShowCover(controller) || creatingCover) { if (panel && !creatingCover) { thisBrushOption.brushMode === "single" && clearCovers(controller); var brushOption = clone$4(thisBrushOption); brushOption.brushType = determineBrushType(brushOption.brushType, panel); brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId; creatingCover = controller._creatingCover = createCover(controller, brushOption); controller._covers.push(creatingCover); } if (creatingCover) { var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)]; var coverBrushOption = creatingCover.__brushOption; coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track)); if (isEnd) { endCreating(controller, creatingCover); coverRenderer.updateCommon(controller, creatingCover); } updateCoverShape(controller, creatingCover); eventParams = { isEnd }; } } else if (isEnd && thisBrushOption.brushMode === "single" && thisBrushOption.removeOnClick) { if (getPanelByPoint(controller, e2, localCursorPoint) && clearCovers(controller)) { eventParams = { isEnd, removeOnClick: true }; } } return eventParams; } function determineBrushType(brushType, panel) { if (brushType === "auto") { return panel.defaultBrushType; } return brushType; } var pointerHandlers = { mousedown: function(e2) { if (this._dragging) { handleDragEnd(this, e2); } else if (!e2.target || !e2.target.draggable) { preventDefault(e2); var localCursorPoint = this.group.transformCoordToLocal(e2.offsetX, e2.offsetY); this._creatingCover = null; var panel = this._creatingPanel = getPanelByPoint(this, e2, localCursorPoint); if (panel) { this._dragging = true; this._track = [localCursorPoint.slice()]; } } }, mousemove: function(e2) { var x = e2.offsetX; var y = e2.offsetY; var localCursorPoint = this.group.transformCoordToLocal(x, y); resetCursor(this, e2, localCursorPoint); if (this._dragging) { preventDefault(e2); var eventParams = updateCoverByMouse(this, e2, localCursorPoint, false); eventParams && trigger(this, eventParams); } }, mouseup: function(e2) { handleDragEnd(this, e2); } }; function handleDragEnd(controller, e2) { if (controller._dragging) { preventDefault(e2); var x = e2.offsetX; var y = e2.offsetY; var localCursorPoint = controller.group.transformCoordToLocal(x, y); var eventParams = updateCoverByMouse(controller, e2, localCursorPoint, true); controller._dragging = false; controller._track = []; controller._creatingCover = null; eventParams && trigger(controller, eventParams); } } function isOutsideZrArea(controller, x, y) { var zr = controller._zr; return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight(); } var coverRenderers = { lineX: getLineRenderer(0), lineY: getLineRenderer(1), rect: { createCover: function(controller, brushOption) { function returnInput(range) { return range; } return createBaseRectCover({ toRectRange: returnInput, fromRectRange: returnInput }, controller, brushOption, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]); }, getCreatingRange: function(localTrack) { var ends = getTrackEnds(localTrack); return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]); }, updateCoverShape: function(controller, cover, localRange, brushOption) { updateBaseRect(controller, cover, localRange, brushOption); }, updateCommon: updateCommon$1, contain: mainShapeContain }, polygon: { createCover: function(controller, brushOption) { var cover = new Group$4(); cover.add(new Polyline$3({ name: "main", style: makeStyle(brushOption), silent: true })); return cover; }, getCreatingRange: function(localTrack) { return localTrack; }, endCreating: function(controller, cover) { cover.remove(cover.childAt(0)); cover.add(new Polygon$1({ name: "main", draggable: true, drift: curry$1(driftPolygon, controller, cover), ondragend: curry$1(trigger, controller, { isEnd: true }) })); }, updateCoverShape: function(controller, cover, localRange, brushOption) { cover.childAt(0).setShape({ points: clipByPanel(controller, cover, localRange) }); }, updateCommon: updateCommon$1, contain: mainShapeContain } }; function getLineRenderer(xyIndex) { return { createCover: function(controller, brushOption) { return createBaseRectCover({ toRectRange: function(range) { var rectRange = [range, [0, 100]]; xyIndex && rectRange.reverse(); return rectRange; }, fromRectRange: function(rectRange) { return rectRange[xyIndex]; } }, controller, brushOption, [[["w"], ["e"]], [["n"], ["s"]]][xyIndex]); }, getCreatingRange: function(localTrack) { var ends = getTrackEnds(localTrack); var min3 = mathMin$1(ends[0][xyIndex], ends[1][xyIndex]); var max3 = mathMax$1(ends[0][xyIndex], ends[1][xyIndex]); return [min3, max3]; }, updateCoverShape: function(controller, cover, localRange, brushOption) { var otherExtent; var panel = getPanelByCover(controller, cover); if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) { otherExtent = panel.getLinearBrushOtherExtent(xyIndex); } else { var zr = controller._zr; otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]; } var rectRange = [localRange, otherExtent]; xyIndex && rectRange.reverse(); updateBaseRect(controller, cover, rectRange, brushOption); }, updateCommon: updateCommon$1, contain: mainShapeContain }; } var BrushController$1 = BrushController; function makeRectPanelClipPath(rect) { rect = normalizeRect(rect); return function(localPoints) { return clipPointsByRect(localPoints, rect); }; } function makeLinearBrushOtherExtent(rect, specifiedXYIndex) { rect = normalizeRect(rect); return function(xyIndex) { var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex; var brushWidth = idx ? rect.width : rect.height; var base2 = idx ? rect.x : rect.y; return [base2, base2 + (brushWidth || 0)]; }; } function makeRectIsTargetByCursor(rect, api, targetModel) { var boundingRect = normalizeRect(rect); return function(e2, localCursorPoint) { return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e2, api, targetModel); }; } function normalizeRect(rect) { return BoundingRect$1.create(rect); } var elementList$1 = ["axisLine", "axisTickLabel", "axisName"]; var ParallelAxisView = function(_super) { __extends$1(ParallelAxisView2, _super); function ParallelAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ParallelAxisView2.type; return _this; } ParallelAxisView2.prototype.init = function(ecModel, api) { _super.prototype.init.apply(this, arguments); (this._brushController = new BrushController$1(api.getZr())).on("brush", bind$2(this._onBrush, this)); }; ParallelAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { if (fromAxisAreaSelect(axisModel, ecModel, payload)) { return; } this.axisModel = axisModel; this.api = api; this.group.removeAll(); var oldAxisGroup = this._axisGroup; this._axisGroup = new Group$4(); this.group.add(this._axisGroup); if (!axisModel.get("show")) { return; } var coordSysModel = getCoordSysModel(axisModel, ecModel); var coordSys = coordSysModel.coordinateSystem; var areaSelectStyle = axisModel.getAreaSelectStyle(); var areaWidth = areaSelectStyle.width; var dim = axisModel.axis.dim; var axisLayout = coordSys.getAxisLayout(dim); var builderOpt = extend({ strokeContainThreshold: areaWidth }, axisLayout); var axisBuilder = new AxisBuilder$1(axisModel, builderOpt); each$g(elementList$1, axisBuilder.add, axisBuilder); this._axisGroup.add(axisBuilder.getGroup()); this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); groupTransition(oldAxisGroup, this._axisGroup, axisModel); }; ParallelAxisView2.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { var extent3 = axisModel.axis.getExtent(); var extentLen = extent3[1] - extent3[0]; var extra = Math.min(30, Math.abs(extentLen) * 0.1); var rect = BoundingRect$1.create({ x: extent3[0], y: -areaWidth / 2, width: extentLen, height: areaWidth }); rect.x -= extra; rect.width += 2 * extra; this._brushController.mount({ enableGlobalPan: true, rotation: builderOpt.rotation, x: builderOpt.position[0], y: builderOpt.position[1] }).setPanels([{ panelId: "pl", clipPath: makeRectPanelClipPath(rect), isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel), getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0) }]).enableBrush({ brushType: "lineX", brushStyle: areaSelectStyle, removeOnClick: true }).updateCovers(getCoverInfoList(axisModel)); }; ParallelAxisView2.prototype._onBrush = function(eventParam) { var coverInfoList = eventParam.areas; var axisModel = this.axisModel; var axis = axisModel.axis; var intervals = map$1(coverInfoList, function(coverInfo) { return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; }); if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { this.api.dispatchAction({ type: "axisAreaSelect", parallelAxisId: axisModel.id, intervals }); } }; ParallelAxisView2.prototype.dispose = function() { this._brushController.dispose(); }; ParallelAxisView2.type = "parallelAxis"; return ParallelAxisView2; }(ComponentView$1); function fromAxisAreaSelect(axisModel, ecModel, payload) { return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({ mainType: "parallelAxis", query: payload })[0] === axisModel; } function getCoverInfoList(axisModel) { var axis = axisModel.axis; return map$1(axisModel.activeIntervals, function(interval) { return { brushType: "lineX", panelId: "pl", range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] }; }); } function getCoordSysModel(axisModel, ecModel) { return ecModel.getComponent("parallel", axisModel.get("parallelIndex")); } var ParallelAxisView$1 = ParallelAxisView; var actionInfo = { type: "axisAreaSelect", event: "axisAreaSelected" }; function installParallelActions(registers) { registers.registerAction(actionInfo, function(payload, ecModel) { ecModel.eachComponent({ mainType: "parallelAxis", query: payload }, function(parallelAxisModel) { parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); }); }); registers.registerAction("parallelAxisExpand", function(payload, ecModel) { ecModel.eachComponent({ mainType: "parallel", query: payload }, function(parallelModel) { parallelModel.setAxisExpand(payload); }); }); } var defaultAxisOption = { type: "value", areaSelectStyle: { width: 20, borderWidth: 1, borderColor: "rgba(160,197,232)", color: "rgba(160,197,232)", opacity: 0.3 }, realtime: true, z: 10 }; function install$C(registers) { registers.registerComponentView(ParallelView$1); registers.registerComponentModel(ParallelModel$1); registers.registerCoordinateSystem("parallel", parallelCoordSysCreator$1); registers.registerPreprocessor(parallelPreprocessor); registers.registerComponentModel(ParallelAxisModel$1); registers.registerComponentView(ParallelAxisView$1); axisModelCreator(registers, "parallel", ParallelAxisModel$1, defaultAxisOption); installParallelActions(registers); } function install$B(registers) { use(install$C); registers.registerChartView(ParallelView$3); registers.registerSeriesModel(ParallelSeriesModel$1); registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual$1); } var SankeyPathShape = function() { function SankeyPathShape2() { this.x1 = 0; this.y1 = 0; this.x2 = 0; this.y2 = 0; this.cpx1 = 0; this.cpy1 = 0; this.cpx2 = 0; this.cpy2 = 0; this.extent = 0; } return SankeyPathShape2; }(); var SankeyPath = function(_super) { __extends$1(SankeyPath2, _super); function SankeyPath2(opts) { return _super.call(this, opts) || this; } SankeyPath2.prototype.getDefaultShape = function() { return new SankeyPathShape(); }; SankeyPath2.prototype.buildPath = function(ctx, shape) { var extent3 = shape.extent; ctx.moveTo(shape.x1, shape.y1); ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2); if (shape.orient === "vertical") { ctx.lineTo(shape.x2 + extent3, shape.y2); ctx.bezierCurveTo(shape.cpx2 + extent3, shape.cpy2, shape.cpx1 + extent3, shape.cpy1, shape.x1 + extent3, shape.y1); } else { ctx.lineTo(shape.x2, shape.y2 + extent3); ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent3, shape.cpx1, shape.cpy1 + extent3, shape.x1, shape.y1 + extent3); } ctx.closePath(); }; SankeyPath2.prototype.highlight = function() { enterEmphasis(this); }; SankeyPath2.prototype.downplay = function() { leaveEmphasis(this); }; return SankeyPath2; }(Path$1); var SankeyView = function(_super) { __extends$1(SankeyView2, _super); function SankeyView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SankeyView2.type; _this._focusAdjacencyDisabled = false; return _this; } SankeyView2.prototype.render = function(seriesModel, ecModel, api) { var sankeyView = this; var graph = seriesModel.getGraph(); var group = this.group; var layoutInfo = seriesModel.layoutInfo; var width = layoutInfo.width; var height = layoutInfo.height; var nodeData = seriesModel.getData(); var edgeData = seriesModel.getData("edge"); var orient = seriesModel.get("orient"); this._model = seriesModel; group.removeAll(); group.x = layoutInfo.x; group.y = layoutInfo.y; graph.eachEdge(function(edge) { var curve = new SankeyPath(); var ecData = getECData(curve); ecData.dataIndex = edge.dataIndex; ecData.seriesIndex = seriesModel.seriesIndex; ecData.dataType = "edge"; var edgeModel = edge.getModel(); var lineStyleModel = edgeModel.getModel("lineStyle"); var curvature = lineStyleModel.get("curveness"); var n1Layout = edge.node1.getLayout(); var node1Model = edge.node1.getModel(); var dragX1 = node1Model.get("localX"); var dragY1 = node1Model.get("localY"); var n2Layout = edge.node2.getLayout(); var node2Model = edge.node2.getModel(); var dragX2 = node2Model.get("localX"); var dragY2 = node2Model.get("localY"); var edgeLayout = edge.getLayout(); var x1; var y1; var x2; var y2; var cpx1; var cpy1; var cpx2; var cpy2; curve.shape.extent = Math.max(1, edgeLayout.dy); curve.shape.orient = orient; if (orient === "vertical") { x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy; y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy; x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty; y2 = dragY2 != null ? dragY2 * height : n2Layout.y; cpx1 = x1; cpy1 = y1 * (1 - curvature) + y2 * curvature; cpx2 = x2; cpy2 = y1 * curvature + y2 * (1 - curvature); } else { x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx; y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy; x2 = dragX2 != null ? dragX2 * width : n2Layout.x; y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty; cpx1 = x1 * (1 - curvature) + x2 * curvature; cpy1 = y1; cpx2 = x1 * curvature + x2 * (1 - curvature); cpy2 = y2; } curve.setShape({ x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2 }); curve.useStyle(lineStyleModel.getItemStyle()); switch (curve.style.fill) { case "source": curve.style.fill = edge.node1.getVisual("color"); curve.style.decal = edge.node1.getVisual("style").decal; break; case "target": curve.style.fill = edge.node2.getVisual("color"); curve.style.decal = edge.node2.getVisual("style").decal; break; case "gradient": var sourceColor = edge.node1.getVisual("color"); var targetColor = edge.node2.getVisual("color"); if (typeof sourceColor === "string" && typeof targetColor === "string") { curve.style.fill = new LinearGradient$1(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{ color: sourceColor, offset: 0 }, { color: targetColor, offset: 1 }]); } } var emphasisModel = edgeModel.getModel("emphasis"); setStatesStylesFromModel(curve, edgeModel, "lineStyle", function(model) { return model.getItemStyle(); }); group.add(curve); edgeData.setItemGraphicEl(edge.dataIndex, curve); var focus = emphasisModel.get("focus"); enableHoverEmphasis(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus, emphasisModel.get("blurScope")); getECData(curve).dataType = "edge"; }); graph.eachNode(function(node) { var layout2 = node.getLayout(); var itemModel = node.getModel(); var dragX = itemModel.get("localX"); var dragY = itemModel.get("localY"); var emphasisModel = itemModel.getModel("emphasis"); var rect = new Rect$3({ shape: { x: dragX != null ? dragX * width : layout2.x, y: dragY != null ? dragY * height : layout2.y, width: layout2.dx, height: layout2.dy }, style: itemModel.getModel("itemStyle").getItemStyle(), z2: 10 }); setLabelStyle(rect, getLabelStatesModels(itemModel), { labelFetcher: seriesModel, labelDataIndex: node.dataIndex, defaultText: node.id }); rect.disableLabelAnimation = true; rect.setStyle("fill", node.getVisual("color")); rect.setStyle("decal", node.getVisual("style").decal); setStatesStylesFromModel(rect, itemModel); group.add(rect); nodeData.setItemGraphicEl(node.dataIndex, rect); getECData(rect).dataType = "node"; var focus = emphasisModel.get("focus"); enableHoverEmphasis(rect, focus === "adjacency" ? node.getAdjacentDataIndices() : focus, emphasisModel.get("blurScope")); }); nodeData.eachItemGraphicEl(function(el, dataIndex) { var itemModel = nodeData.getItemModel(dataIndex); if (itemModel.get("draggable")) { el.drift = function(dx, dy) { sankeyView._focusAdjacencyDisabled = true; this.shape.x += dx; this.shape.y += dy; this.dirty(); api.dispatchAction({ type: "dragNode", seriesId: seriesModel.id, dataIndex: nodeData.getRawIndex(dataIndex), localX: this.shape.x / width, localY: this.shape.y / height }); }; el.ondragend = function() { sankeyView._focusAdjacencyDisabled = false; }; el.draggable = true; el.cursor = "move"; } }); if (!this._data && seriesModel.isAnimationEnabled()) { group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function() { group.removeClipPath(); })); } this._data = seriesModel.getData(); }; SankeyView2.prototype.dispose = function() { }; SankeyView2.type = "sankey"; return SankeyView2; }(ChartView$1); function createGridClipShape$1(rect, seriesModel, cb) { var rectEl = new Rect$3({ shape: { x: rect.x - 10, y: rect.y - 10, width: 0, height: rect.height + 20 } }); initProps(rectEl, { shape: { width: rect.width + 20 } }, seriesModel, cb); return rectEl; } var SankeyView$1 = SankeyView; var SankeySeriesModel = function(_super) { __extends$1(SankeySeriesModel2, _super); function SankeySeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SankeySeriesModel2.type; return _this; } SankeySeriesModel2.prototype.getInitialData = function(option, ecModel) { var links = option.edges || option.links; var nodes = option.data || option.nodes; var levels = option.levels; this.levelModels = []; var levelModels = this.levelModels; for (var i = 0; i < levels.length; i++) { if (levels[i].depth != null && levels[i].depth >= 0) { levelModels[levels[i].depth] = new Model$1(levels[i], this, ecModel); } } if (nodes && links) { var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink); return graph.data; } function beforeLink(nodeData, edgeData) { nodeData.wrapMethod("getItemModel", function(model, idx) { var seriesModel = model.parentModel; var layout2 = seriesModel.getData().getItemLayout(idx); if (layout2) { var nodeDepth = layout2.depth; var levelModel = seriesModel.levelModels[nodeDepth]; if (levelModel) { model.parentModel = levelModel; } } return model; }); edgeData.wrapMethod("getItemModel", function(model, idx) { var seriesModel = model.parentModel; var edge = seriesModel.getGraph().getEdgeByIndex(idx); var layout2 = edge.node1.getLayout(); if (layout2) { var depth = layout2.depth; var levelModel = seriesModel.levelModels[depth]; if (levelModel) { model.parentModel = levelModel; } } return model; }); } }; SankeySeriesModel2.prototype.setNodePosition = function(dataIndex, localPosition) { var nodes = this.option.data || this.option.nodes; var dataItem = nodes[dataIndex]; dataItem.localX = localPosition[0]; dataItem.localY = localPosition[1]; }; SankeySeriesModel2.prototype.getGraph = function() { return this.getData().graph; }; SankeySeriesModel2.prototype.getEdgeData = function() { return this.getGraph().edgeData; }; SankeySeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { function noValue(val) { return isNaN(val) || val == null; } if (dataType === "edge") { var params = this.getDataParams(dataIndex, dataType); var rawDataOpt = params.data; var edgeValue = params.value; var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target; return createTooltipMarkup("nameValue", { name: edgeName, value: edgeValue, noValue: noValue(edgeValue) }); } else { var node = this.getGraph().getNodeByIndex(dataIndex); var value = node.getLayout().value; var name_1 = this.getDataParams(dataIndex, dataType).data.name; return createTooltipMarkup("nameValue", { name: name_1 != null ? name_1 + "" : null, value, noValue: noValue(value) }); } }; SankeySeriesModel2.prototype.optionUpdated = function() { }; SankeySeriesModel2.prototype.getDataParams = function(dataIndex, dataType) { var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); if (params.value == null && dataType === "node") { var node = this.getGraph().getNodeByIndex(dataIndex); var nodeValue = node.getLayout().value; params.value = nodeValue; } return params; }; SankeySeriesModel2.type = "series.sankey"; SankeySeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "view", left: "5%", top: "5%", right: "20%", bottom: "5%", orient: "horizontal", nodeWidth: 20, nodeGap: 8, draggable: true, layoutIterations: 32, label: { show: true, position: "right", fontSize: 12 }, levels: [], nodeAlign: "justify", lineStyle: { color: "#314656", opacity: 0.2, curveness: 0.5 }, emphasis: { label: { show: true }, lineStyle: { opacity: 0.5 } }, select: { itemStyle: { borderColor: "#212121" } }, animationEasing: "linear", animationDuration: 1e3 }; return SankeySeriesModel2; }(SeriesModel$1); var SankeySeriesModel$1 = SankeySeriesModel; function sankeyLayout(ecModel, api) { ecModel.eachSeriesByType("sankey", function(seriesModel) { var nodeWidth = seriesModel.get("nodeWidth"); var nodeGap = seriesModel.get("nodeGap"); var layoutInfo = getViewRect$1(seriesModel, api); seriesModel.layoutInfo = layoutInfo; var width = layoutInfo.width; var height = layoutInfo.height; var graph = seriesModel.getGraph(); var nodes = graph.nodes; var edges = graph.edges; computeNodeValues(nodes); var filteredNodes = filter(nodes, function(node) { return node.getLayout().value === 0; }); var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations"); var orient = seriesModel.get("orient"); var nodeAlign = seriesModel.get("nodeAlign"); layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign); }); } function getViewRect$1(seriesModel, api) { return getLayoutRect(seriesModel.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); } function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) { computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign); computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient); computeEdgeDepths(nodes, orient); } function computeNodeValues(nodes) { each$g(nodes, function(node) { var value1 = sum(node.outEdges, getEdgeValue); var value2 = sum(node.inEdges, getEdgeValue); var nodeRawValue = node.getValue() || 0; var value = Math.max(value1, value2, nodeRawValue); node.setLayout({ value }, true); }); } function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) { var remainEdges = []; var indegreeArr = []; var zeroIndegrees = []; var nextTargetNode = []; var x = 0; for (var i = 0; i < edges.length; i++) { remainEdges[i] = 1; } for (var i = 0; i < nodes.length; i++) { indegreeArr[i] = nodes[i].inEdges.length; if (indegreeArr[i] === 0) { zeroIndegrees.push(nodes[i]); } } var maxNodeDepth = -1; while (zeroIndegrees.length) { for (var idx = 0; idx < zeroIndegrees.length; idx++) { var node = zeroIndegrees[idx]; var item = node.hostGraph.data.getRawDataItem(node.dataIndex); var isItemDepth = item.depth != null && item.depth >= 0; if (isItemDepth && item.depth > maxNodeDepth) { maxNodeDepth = item.depth; } node.setLayout({ depth: isItemDepth ? item.depth : x }, true); orient === "vertical" ? node.setLayout({ dy: nodeWidth }, true) : node.setLayout({ dx: nodeWidth }, true); for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) { var edge = node.outEdges[edgeIdx]; var indexEdge = edges.indexOf(edge); remainEdges[indexEdge] = 0; var targetNode = edge.node2; var nodeIndex = nodes.indexOf(targetNode); if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) { nextTargetNode.push(targetNode); } } } ++x; zeroIndegrees = nextTargetNode; nextTargetNode = []; } for (var i = 0; i < remainEdges.length; i++) { if (remainEdges[i] === 1) { throw new Error("Sankey is a DAG, the original data has cycle!"); } } var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1; if (nodeAlign && nodeAlign !== "left") { adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth); } var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth; scaleNodeBreadths(nodes, kx, orient); } function isNodeDepth(node) { var item = node.hostGraph.data.getRawDataItem(node.dataIndex); return item.depth != null && item.depth >= 0; } function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) { if (nodeAlign === "right") { var nextSourceNode = []; var remainNodes = nodes; var nodeHeight = 0; while (remainNodes.length) { for (var i = 0; i < remainNodes.length; i++) { var node = remainNodes[i]; node.setLayout({ skNodeHeight: nodeHeight }, true); for (var j = 0; j < node.inEdges.length; j++) { var edge = node.inEdges[j]; if (nextSourceNode.indexOf(edge.node1) < 0) { nextSourceNode.push(edge.node1); } } } remainNodes = nextSourceNode; nextSourceNode = []; ++nodeHeight; } each$g(nodes, function(node2) { if (!isNodeDepth(node2)) { node2.setLayout({ depth: Math.max(0, maxDepth - node2.getLayout().skNodeHeight) }, true); } }); } else if (nodeAlign === "justify") { moveSinksRight(nodes, maxDepth); } } function moveSinksRight(nodes, maxDepth) { each$g(nodes, function(node) { if (!isNodeDepth(node) && !node.outEdges.length) { node.setLayout({ depth: maxDepth }, true); } }); } function scaleNodeBreadths(nodes, kx, orient) { each$g(nodes, function(node) { var nodeDepth = node.getLayout().depth * kx; orient === "vertical" ? node.setLayout({ y: nodeDepth }, true) : node.setLayout({ x: nodeDepth }, true); }); } function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) { var nodesByBreadth = prepareNodesByBreadth(nodes, orient); initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient); resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); for (var alpha = 1; iterations > 0; iterations--) { alpha *= 0.99; relaxRightToLeft(nodesByBreadth, alpha, orient); resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); relaxLeftToRight(nodesByBreadth, alpha, orient); resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); } } function prepareNodesByBreadth(nodes, orient) { var nodesByBreadth = []; var keyAttr = orient === "vertical" ? "y" : "x"; var groupResult = groupData(nodes, function(node) { return node.getLayout()[keyAttr]; }); groupResult.keys.sort(function(a, b) { return a - b; }); each$g(groupResult.keys, function(key2) { nodesByBreadth.push(groupResult.buckets.get(key2)); }); return nodesByBreadth; } function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) { var minKy = Infinity; each$g(nodesByBreadth, function(nodes) { var n = nodes.length; var sum2 = 0; each$g(nodes, function(node) { sum2 += node.getLayout().value; }); var ky = orient === "vertical" ? (width - (n - 1) * nodeGap) / sum2 : (height - (n - 1) * nodeGap) / sum2; if (ky < minKy) { minKy = ky; } }); each$g(nodesByBreadth, function(nodes) { each$g(nodes, function(node, i) { var nodeDy = node.getLayout().value * minKy; if (orient === "vertical") { node.setLayout({ x: i }, true); node.setLayout({ dx: nodeDy }, true); } else { node.setLayout({ y: i }, true); node.setLayout({ dy: nodeDy }, true); } }); }); each$g(edges, function(edge) { var edgeDy = +edge.getValue() * minKy; edge.setLayout({ dy: edgeDy }, true); }); } function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) { var keyAttr = orient === "vertical" ? "x" : "y"; each$g(nodesByBreadth, function(nodes) { nodes.sort(function(a, b) { return a.getLayout()[keyAttr] - b.getLayout()[keyAttr]; }); var nodeX; var node; var dy; var y0 = 0; var n = nodes.length; var nodeDyAttr = orient === "vertical" ? "dx" : "dy"; for (var i = 0; i < n; i++) { node = nodes[i]; dy = y0 - node.getLayout()[keyAttr]; if (dy > 0) { nodeX = node.getLayout()[keyAttr] + dy; orient === "vertical" ? node.setLayout({ x: nodeX }, true) : node.setLayout({ y: nodeX }, true); } y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap; } var viewWidth = orient === "vertical" ? width : height; dy = y0 - nodeGap - viewWidth; if (dy > 0) { nodeX = node.getLayout()[keyAttr] - dy; orient === "vertical" ? node.setLayout({ x: nodeX }, true) : node.setLayout({ y: nodeX }, true); y0 = nodeX; for (var i = n - 2; i >= 0; --i) { node = nodes[i]; dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0; if (dy > 0) { nodeX = node.getLayout()[keyAttr] - dy; orient === "vertical" ? node.setLayout({ x: nodeX }, true) : node.setLayout({ y: nodeX }, true); } y0 = node.getLayout()[keyAttr]; } } }); } function relaxRightToLeft(nodesByBreadth, alpha, orient) { each$g(nodesByBreadth.slice().reverse(), function(nodes) { each$g(nodes, function(node) { if (node.outEdges.length) { var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue); if (isNaN(y)) { var len2 = node.outEdges.length; y = len2 ? sum(node.outEdges, centerTarget, orient) / len2 : 0; } if (orient === "vertical") { var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha; node.setLayout({ x: nodeX }, true); } else { var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha; node.setLayout({ y: nodeY }, true); } } }); }); } function weightedTarget(edge, orient) { return center(edge.node2, orient) * edge.getValue(); } function centerTarget(edge, orient) { return center(edge.node2, orient); } function weightedSource(edge, orient) { return center(edge.node1, orient) * edge.getValue(); } function centerSource(edge, orient) { return center(edge.node1, orient); } function center(node, orient) { return orient === "vertical" ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2; } function getEdgeValue(edge) { return edge.getValue(); } function sum(array, cb, orient) { var sum2 = 0; var len2 = array.length; var i = -1; while (++i < len2) { var value = +cb(array[i], orient); if (!isNaN(value)) { sum2 += value; } } return sum2; } function relaxLeftToRight(nodesByBreadth, alpha, orient) { each$g(nodesByBreadth, function(nodes) { each$g(nodes, function(node) { if (node.inEdges.length) { var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue); if (isNaN(y)) { var len2 = node.inEdges.length; y = len2 ? sum(node.inEdges, centerSource, orient) / len2 : 0; } if (orient === "vertical") { var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha; node.setLayout({ x: nodeX }, true); } else { var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha; node.setLayout({ y: nodeY }, true); } } }); }); } function computeEdgeDepths(nodes, orient) { var keyAttr = orient === "vertical" ? "x" : "y"; each$g(nodes, function(node) { node.outEdges.sort(function(a, b) { return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr]; }); node.inEdges.sort(function(a, b) { return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr]; }); }); each$g(nodes, function(node) { var sy = 0; var ty = 0; each$g(node.outEdges, function(edge) { edge.setLayout({ sy }, true); sy += edge.getLayout().dy; }); each$g(node.inEdges, function(edge) { edge.setLayout({ ty }, true); ty += edge.getLayout().dy; }); }); } function sankeyVisual(ecModel) { ecModel.eachSeriesByType("sankey", function(seriesModel) { var graph = seriesModel.getGraph(); var nodes = graph.nodes; if (nodes.length) { var minValue_1 = Infinity; var maxValue_1 = -Infinity; each$g(nodes, function(node) { var nodeValue = node.getLayout().value; if (nodeValue < minValue_1) { minValue_1 = nodeValue; } if (nodeValue > maxValue_1) { maxValue_1 = nodeValue; } }); each$g(nodes, function(node) { var mapping = new VisualMapping$1({ type: "color", mappingMethod: "linear", dataExtent: [minValue_1, maxValue_1], visual: seriesModel.get("color") }); var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value); var customColor = node.getModel().get(["itemStyle", "color"]); if (customColor != null) { node.setVisual("color", customColor); node.setVisual("style", { fill: customColor }); } else { node.setVisual("color", mapValueToColor); node.setVisual("style", { fill: mapValueToColor }); } }); } }); } function install$A(registers) { registers.registerChartView(SankeyView$1); registers.registerSeriesModel(SankeySeriesModel$1); registers.registerLayout(sankeyLayout); registers.registerVisual(sankeyVisual); registers.registerAction({ type: "dragNode", event: "dragnode", update: "update" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", subType: "sankey", query: payload }, function(seriesModel) { seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]); }); }); } var WhiskerBoxCommonMixin = function() { function WhiskerBoxCommonMixin2() { } WhiskerBoxCommonMixin2.prototype.getInitialData = function(option, ecModel) { var ordinalMeta; var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex")); var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex")); var xAxisType = xAxisModel.get("type"); var yAxisType = yAxisModel.get("type"); var addOrdinal; if (xAxisType === "category") { option.layout = "horizontal"; ordinalMeta = xAxisModel.getOrdinalMeta(); addOrdinal = true; } else if (yAxisType === "category") { option.layout = "vertical"; ordinalMeta = yAxisModel.getOrdinalMeta(); addOrdinal = true; } else { option.layout = option.layout || "horizontal"; } var coordDims = ["x", "y"]; var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1; var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex]; var otherAxisDim = coordDims[1 - baseAxisDimIndex]; var axisModels = [xAxisModel, yAxisModel]; var baseAxisType = axisModels[baseAxisDimIndex].get("type"); var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type"); var data = option.data; if (data && addOrdinal) { var newOptionData_1 = []; each$g(data, function(item, index) { var newItem; if (isArray$1(item)) { newItem = item.slice(); item.unshift(index); } else if (isArray$1(item.value)) { newItem = extend({}, item); newItem.value = newItem.value.slice(); item.value.unshift(index); } else { newItem = item; } newOptionData_1.push(newItem); }); option.data = newOptionData_1; } var defaultValueDimensions = this.defaultValueDimensions; var coordDimensions = [{ name: baseAxisDim, type: getDimensionTypeByAxis(baseAxisType), ordinalMeta, otherDims: { tooltip: false, itemName: 0 }, dimsDef: ["base"] }, { name: otherAxisDim, type: getDimensionTypeByAxis(otherAxisType), dimsDef: defaultValueDimensions.slice() }]; return createSeriesDataSimply(this, { coordDimensions, dimensionsCount: defaultValueDimensions.length + 1, encodeDefaulter: curry$1(makeSeriesEncodeForAxisCoordSys, coordDimensions, this) }); }; WhiskerBoxCommonMixin2.prototype.getBaseAxis = function() { var dim = this._baseAxisDim; return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis; }; return WhiskerBoxCommonMixin2; }(); var BoxplotSeriesModel = function(_super) { __extends$1(BoxplotSeriesModel2, _super); function BoxplotSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BoxplotSeriesModel2.type; _this.defaultValueDimensions = [{ name: "min", defaultTooltip: true }, { name: "Q1", defaultTooltip: true }, { name: "median", defaultTooltip: true }, { name: "Q3", defaultTooltip: true }, { name: "max", defaultTooltip: true }]; _this.visualDrawType = "stroke"; return _this; } BoxplotSeriesModel2.type = "series.boxplot"; BoxplotSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"]; BoxplotSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: true, layout: null, boxWidth: [7, 50], itemStyle: { color: "#fff", borderWidth: 1 }, emphasis: { scale: true, itemStyle: { borderWidth: 2, shadowBlur: 5, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: "rgba(0,0,0,0.2)" } }, animationDuration: 800 }; return BoxplotSeriesModel2; }(SeriesModel$1); mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true); var BoxplotSeriesModel$1 = BoxplotSeriesModel; var BoxplotView = function(_super) { __extends$1(BoxplotView2, _super); function BoxplotView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BoxplotView2.type; return _this; } BoxplotView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var group = this.group; var oldData = this._data; if (!this._data) { group.removeAll(); } var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0; data.diff(oldData).add(function(newIdx) { if (data.hasValue(newIdx)) { var itemLayout = data.getItemLayout(newIdx); var symbolEl = createNormalBox$1(itemLayout, data, newIdx, constDim, true); data.setItemGraphicEl(newIdx, symbolEl); group.add(symbolEl); } }).update(function(newIdx, oldIdx) { var symbolEl = oldData.getItemGraphicEl(oldIdx); if (!data.hasValue(newIdx)) { group.remove(symbolEl); return; } var itemLayout = data.getItemLayout(newIdx); if (!symbolEl) { symbolEl = createNormalBox$1(itemLayout, data, newIdx, constDim); } else { saveOldStyle(symbolEl); updateNormalBoxData(itemLayout, symbolEl, data, newIdx); } group.add(symbolEl); data.setItemGraphicEl(newIdx, symbolEl); }).remove(function(oldIdx) { var el = oldData.getItemGraphicEl(oldIdx); el && group.remove(el); }).execute(); this._data = data; }; BoxplotView2.prototype.remove = function(ecModel) { var group = this.group; var data = this._data; this._data = null; data && data.eachItemGraphicEl(function(el) { el && group.remove(el); }); }; BoxplotView2.type = "boxplot"; return BoxplotView2; }(ChartView$1); var BoxPathShape = function() { function BoxPathShape2() { } return BoxPathShape2; }(); var BoxPath = function(_super) { __extends$1(BoxPath2, _super); function BoxPath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "boxplotBoxPath"; return _this; } BoxPath2.prototype.getDefaultShape = function() { return new BoxPathShape(); }; BoxPath2.prototype.buildPath = function(ctx, shape) { var ends = shape.points; var i = 0; ctx.moveTo(ends[i][0], ends[i][1]); i++; for (; i < 4; i++) { ctx.lineTo(ends[i][0], ends[i][1]); } ctx.closePath(); for (; i < ends.length; i++) { ctx.moveTo(ends[i][0], ends[i][1]); i++; ctx.lineTo(ends[i][0], ends[i][1]); } }; return BoxPath2; }(Path$1); function createNormalBox$1(itemLayout, data, dataIndex, constDim, isInit) { var ends = itemLayout.ends; var el = new BoxPath({ shape: { points: isInit ? transInit$1(ends, constDim, itemLayout) : ends } }); updateNormalBoxData(itemLayout, el, data, dataIndex, isInit); return el; } function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) { var seriesModel = data.hostModel; var updateMethod = graphic$1[isInit ? "initProps" : "updateProps"]; updateMethod(el, { shape: { points: itemLayout.ends } }, seriesModel, dataIndex); el.useStyle(data.getItemVisual(dataIndex, "style")); el.style.strokeNoScale = true; el.z2 = 100; var itemModel = data.getItemModel(dataIndex); setStatesStylesFromModel(el, itemModel); enableHoverEmphasis(el, itemModel.get(["emphasis", "focus"]), itemModel.get(["emphasis", "blurScope"])); } function transInit$1(points2, dim, itemLayout) { return map$1(points2, function(point) { point = point.slice(); point[dim] = itemLayout.initBaseline; return point; }); } var BoxplotView$1 = BoxplotView; function boxplotVisual(ecModel, api) { } var each$a = each$g; function boxplotLayout(ecModel) { var groupResult = groupSeriesByAxis(ecModel); each$a(groupResult, function(groupItem) { var seriesModels = groupItem.seriesModels; if (!seriesModels.length) { return; } calculateBase(groupItem); each$a(seriesModels, function(seriesModel, idx) { layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]); }); }); } function groupSeriesByAxis(ecModel) { var result = []; var axisList = []; ecModel.eachSeriesByType("boxplot", function(seriesModel) { var baseAxis = seriesModel.getBaseAxis(); var idx = indexOf(axisList, baseAxis); if (idx < 0) { idx = axisList.length; axisList[idx] = baseAxis; result[idx] = { axis: baseAxis, seriesModels: [] }; } result[idx].seriesModels.push(seriesModel); }); return result; } function calculateBase(groupItem) { var extent3; var baseAxis = groupItem.axis; var seriesModels = groupItem.seriesModels; var seriesCount = seriesModels.length; var boxWidthList = groupItem.boxWidthList = []; var boxOffsetList = groupItem.boxOffsetList = []; var boundList = []; var bandWidth; if (baseAxis.type === "category") { bandWidth = baseAxis.getBandWidth(); } else { var maxDataCount_1 = 0; each$a(seriesModels, function(seriesModel) { maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count()); }); extent3 = baseAxis.getExtent(), Math.abs(extent3[1] - extent3[0]) / maxDataCount_1; } each$a(seriesModels, function(seriesModel) { var boxWidthBound = seriesModel.get("boxWidth"); if (!isArray$1(boxWidthBound)) { boxWidthBound = [boxWidthBound, boxWidthBound]; } boundList.push([parsePercent$1(boxWidthBound[0], bandWidth) || 0, parsePercent$1(boxWidthBound[1], bandWidth) || 0]); }); var availableWidth = bandWidth * 0.8 - 2; var boxGap = availableWidth / seriesCount * 0.3; var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount; var base2 = boxWidth / 2 - availableWidth / 2; each$a(seriesModels, function(seriesModel, idx) { boxOffsetList.push(base2); base2 += boxGap + boxWidth; boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1])); }); } function layoutSingleSeries(seriesModel, offset, boxWidth) { var coordSys = seriesModel.coordinateSystem; var data = seriesModel.getData(); var halfWidth = boxWidth / 2; var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1; var vDimIdx = 1 - cDimIdx; var coordDims = ["x", "y"]; var cDim = data.mapDimension(coordDims[cDimIdx]); var vDims = data.mapDimensionsAll(coordDims[vDimIdx]); if (cDim == null || vDims.length < 5) { return; } for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) { var axisDimVal = data.get(cDim, dataIndex); var median = getPoint(axisDimVal, vDims[2], dataIndex); var end1 = getPoint(axisDimVal, vDims[0], dataIndex); var end2 = getPoint(axisDimVal, vDims[1], dataIndex); var end4 = getPoint(axisDimVal, vDims[3], dataIndex); var end5 = getPoint(axisDimVal, vDims[4], dataIndex); var ends = []; addBodyEnd(ends, end2, false); addBodyEnd(ends, end4, true); ends.push(end1, end2, end5, end4); layEndLine(ends, end1); layEndLine(ends, end5); layEndLine(ends, median); data.setItemLayout(dataIndex, { initBaseline: median[vDimIdx], ends }); } function getPoint(axisDimVal2, dim, dataIndex2) { var val = data.get(dim, dataIndex2); var p = []; p[cDimIdx] = axisDimVal2; p[vDimIdx] = val; var point; if (isNaN(axisDimVal2) || isNaN(val)) { point = [NaN, NaN]; } else { point = coordSys.dataToPoint(p); point[cDimIdx] += offset; } return point; } function addBodyEnd(ends2, point, start2) { var point1 = point.slice(); var point2 = point.slice(); point1[cDimIdx] += halfWidth; point2[cDimIdx] -= halfWidth; start2 ? ends2.push(point1, point2) : ends2.push(point2, point1); } function layEndLine(ends2, endCenter) { var from = endCenter.slice(); var to = endCenter.slice(); from[cDimIdx] -= halfWidth; to[cDimIdx] += halfWidth; ends2.push(from, to); } } function prepareBoxplotData(rawData, opt) { opt = opt || {}; var boxData = []; var outliers = []; var boundIQR = opt.boundIQR; var useExtreme = boundIQR === "none" || boundIQR === 0; for (var i = 0; i < rawData.length; i++) { var ascList = asc$2(rawData[i].slice()); var Q1 = quantile(ascList, 0.25); var Q2 = quantile(ascList, 0.5); var Q3 = quantile(ascList, 0.75); var min3 = ascList[0]; var max3 = ascList[ascList.length - 1]; var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1); var low = useExtreme ? min3 : Math.max(min3, Q1 - bound); var high = useExtreme ? max3 : Math.min(max3, Q3 + bound); var itemNameFormatter = opt.itemNameFormatter; var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({ value: i }) : isString(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + ""; boxData.push([itemName, low, Q1, Q2, Q3, high]); for (var j = 0; j < ascList.length; j++) { var dataItem = ascList[j]; if (dataItem < low || dataItem > high) { var outlier = [itemName, dataItem]; outliers.push(outlier); } } } return { boxData, outliers }; } var boxplotTransform = { type: "echarts:boxplot", transform: function transform(params) { var upstream = params.upstream; if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) { var errMsg = ""; throwError(errMsg); } var result = prepareBoxplotData(upstream.getRawData(), params.config); return [{ dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"], data: result.boxData }, { data: result.outliers }]; } }; function install$z(registers) { registers.registerSeriesModel(BoxplotSeriesModel$1); registers.registerChartView(BoxplotView$1); registers.registerVisual(boxplotVisual); registers.registerLayout(boxplotLayout); registers.registerTransform(boxplotTransform); } var SKIP_PROPS = ["color", "borderColor"]; var CandlestickView = function(_super) { __extends$1(CandlestickView2, _super); function CandlestickView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CandlestickView2.type; return _this; } CandlestickView2.prototype.render = function(seriesModel, ecModel, api) { this.group.removeClipPath(); this._updateDrawMode(seriesModel); this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel); }; CandlestickView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { this._clear(); this._updateDrawMode(seriesModel); }; CandlestickView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel); }; CandlestickView2.prototype._updateDrawMode = function(seriesModel) { var isLargeDraw = seriesModel.pipelineContext.large; if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { this._isLargeDraw = isLargeDraw; this._clear(); } }; CandlestickView2.prototype._renderNormal = function(seriesModel) { var data = seriesModel.getData(); var oldData = this._data; var group = this.group; var isSimpleBox = data.getLayout("isSimpleBox"); var needsClip = seriesModel.get("clip", true); var coord = seriesModel.coordinateSystem; var clipArea = coord.getArea && coord.getArea(); if (!this._data) { group.removeAll(); } data.diff(oldData).add(function(newIdx) { if (data.hasValue(newIdx)) { var itemLayout = data.getItemLayout(newIdx); if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { return; } var el = createNormalBox(itemLayout, newIdx, true); initProps(el, { shape: { points: itemLayout.ends } }, seriesModel, newIdx); setBoxCommon(el, data, newIdx, isSimpleBox); group.add(el); data.setItemGraphicEl(newIdx, el); } }).update(function(newIdx, oldIdx) { var el = oldData.getItemGraphicEl(oldIdx); if (!data.hasValue(newIdx)) { group.remove(el); return; } var itemLayout = data.getItemLayout(newIdx); if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { group.remove(el); return; } if (!el) { el = createNormalBox(itemLayout); } else { updateProps$1(el, { shape: { points: itemLayout.ends } }, seriesModel, newIdx); saveOldStyle(el); } setBoxCommon(el, data, newIdx, isSimpleBox); group.add(el); data.setItemGraphicEl(newIdx, el); }).remove(function(oldIdx) { var el = oldData.getItemGraphicEl(oldIdx); el && group.remove(el); }).execute(); this._data = data; }; CandlestickView2.prototype._renderLarge = function(seriesModel) { this._clear(); createLarge(seriesModel, this.group); var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; if (clipPath) { this.group.setClipPath(clipPath); } else { this.group.removeClipPath(); } }; CandlestickView2.prototype._incrementalRenderNormal = function(params, seriesModel) { var data = seriesModel.getData(); var isSimpleBox = data.getLayout("isSimpleBox"); var dataIndex; while ((dataIndex = params.next()) != null) { var itemLayout = data.getItemLayout(dataIndex); var el = createNormalBox(itemLayout); setBoxCommon(el, data, dataIndex, isSimpleBox); el.incremental = true; this.group.add(el); } }; CandlestickView2.prototype._incrementalRenderLarge = function(params, seriesModel) { createLarge(seriesModel, this.group, true); }; CandlestickView2.prototype.remove = function(ecModel) { this._clear(); }; CandlestickView2.prototype._clear = function() { this.group.removeAll(); this._data = null; }; CandlestickView2.type = "candlestick"; return CandlestickView2; }(ChartView$1); var NormalBoxPathShape = function() { function NormalBoxPathShape2() { } return NormalBoxPathShape2; }(); var NormalBoxPath = function(_super) { __extends$1(NormalBoxPath2, _super); function NormalBoxPath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "normalCandlestickBox"; return _this; } NormalBoxPath2.prototype.getDefaultShape = function() { return new NormalBoxPathShape(); }; NormalBoxPath2.prototype.buildPath = function(ctx, shape) { var ends = shape.points; if (this.__simpleBox) { ctx.moveTo(ends[4][0], ends[4][1]); ctx.lineTo(ends[6][0], ends[6][1]); } else { ctx.moveTo(ends[0][0], ends[0][1]); ctx.lineTo(ends[1][0], ends[1][1]); ctx.lineTo(ends[2][0], ends[2][1]); ctx.lineTo(ends[3][0], ends[3][1]); ctx.closePath(); ctx.moveTo(ends[4][0], ends[4][1]); ctx.lineTo(ends[5][0], ends[5][1]); ctx.moveTo(ends[6][0], ends[6][1]); ctx.lineTo(ends[7][0], ends[7][1]); } }; return NormalBoxPath2; }(Path$1); function createNormalBox(itemLayout, dataIndex, isInit) { var ends = itemLayout.ends; return new NormalBoxPath({ shape: { points: isInit ? transInit(ends, itemLayout) : ends }, z2: 100 }); } function isNormalBoxClipped(clipArea, itemLayout) { var clipped = true; for (var i = 0; i < itemLayout.ends.length; i++) { if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) { clipped = false; break; } } return clipped; } function setBoxCommon(el, data, dataIndex, isSimpleBox) { var itemModel = data.getItemModel(dataIndex); el.useStyle(data.getItemVisual(dataIndex, "style")); el.style.strokeNoScale = true; el.__simpleBox = isSimpleBox; setStatesStylesFromModel(el, itemModel); } function transInit(points2, itemLayout) { return map$1(points2, function(point) { point = point.slice(); point[1] = itemLayout.initBaseline; return point; }); } var LargeBoxPathShape = function() { function LargeBoxPathShape2() { } return LargeBoxPathShape2; }(); var LargeBoxPath = function(_super) { __extends$1(LargeBoxPath2, _super); function LargeBoxPath2(opts) { var _this = _super.call(this, opts) || this; _this.type = "largeCandlestickBox"; return _this; } LargeBoxPath2.prototype.getDefaultShape = function() { return new LargeBoxPathShape(); }; LargeBoxPath2.prototype.buildPath = function(ctx, shape) { var points2 = shape.points; for (var i = 0; i < points2.length; ) { if (this.__sign === points2[i++]) { var x = points2[i++]; ctx.moveTo(x, points2[i++]); ctx.lineTo(x, points2[i++]); } else { i += 3; } } }; return LargeBoxPath2; }(Path$1); function createLarge(seriesModel, group, incremental) { var data = seriesModel.getData(); var largePoints = data.getLayout("largePoints"); var elP = new LargeBoxPath({ shape: { points: largePoints }, __sign: 1 }); group.add(elP); var elN = new LargeBoxPath({ shape: { points: largePoints }, __sign: -1 }); group.add(elN); setLargeStyle(1, elP, seriesModel); setLargeStyle(-1, elN, seriesModel); if (incremental) { elP.incremental = true; elN.incremental = true; } } function setLargeStyle(sign, el, seriesModel, data) { var borderColor = seriesModel.get(["itemStyle", sign > 0 ? "borderColor" : "borderColor0"]) || seriesModel.get(["itemStyle", sign > 0 ? "color" : "color0"]); var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS); el.useStyle(itemStyle); el.style.fill = null; el.style.stroke = borderColor; } var CandlestickView$1 = CandlestickView; var CandlestickSeriesModel = function(_super) { __extends$1(CandlestickSeriesModel2, _super); function CandlestickSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CandlestickSeriesModel2.type; _this.defaultValueDimensions = [{ name: "open", defaultTooltip: true }, { name: "close", defaultTooltip: true }, { name: "lowest", defaultTooltip: true }, { name: "highest", defaultTooltip: true }]; return _this; } CandlestickSeriesModel2.prototype.getShadowDim = function() { return "open"; }; CandlestickSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { var itemLayout = data.getItemLayout(dataIndex); return itemLayout && selectors.rect(itemLayout.brushRect); }; CandlestickSeriesModel2.type = "series.candlestick"; CandlestickSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"]; CandlestickSeriesModel2.defaultOption = { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: true, layout: null, clip: true, itemStyle: { color: "#eb5454", color0: "#47b262", borderColor: "#eb5454", borderColor0: "#47b262", borderWidth: 1 }, emphasis: { scale: true, itemStyle: { borderWidth: 2 } }, barMaxWidth: null, barMinWidth: null, barWidth: null, large: true, largeThreshold: 600, progressive: 3e3, progressiveThreshold: 1e4, progressiveChunkMode: "mod", animationEasing: "linear", animationDuration: 300 }; return CandlestickSeriesModel2; }(SeriesModel$1); mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true); var CandlestickSeriesModel$1 = CandlestickSeriesModel; function candlestickPreprocessor(option) { if (!option || !isArray$1(option.series)) { return; } each$g(option.series, function(seriesItem) { if (isObject$3(seriesItem) && seriesItem.type === "k") { seriesItem.type = "candlestick"; } }); } var positiveBorderColorQuery = ["itemStyle", "borderColor"]; var negativeBorderColorQuery = ["itemStyle", "borderColor0"]; var positiveColorQuery = ["itemStyle", "color"]; var negativeColorQuery = ["itemStyle", "color0"]; var candlestickVisual = { seriesType: "candlestick", plan: createRenderPlanner(), performRawSeries: true, reset: function(seriesModel, ecModel) { function getColor(sign, model) { return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery); } function getBorderColor(sign, model) { return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery); } if (ecModel.isSeriesFiltered(seriesModel)) { return; } var isLargeRender = seriesModel.pipelineContext.large; return !isLargeRender && { progress: function(params, data) { var dataIndex; while ((dataIndex = params.next()) != null) { var itemModel = data.getItemModel(dataIndex); var sign = data.getItemLayout(dataIndex).sign; var style = itemModel.getItemStyle(); style.fill = getColor(sign, itemModel); style.stroke = getBorderColor(sign, itemModel) || style.fill; var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); extend(existsStyle, style); } } }; } }; var candlestickVisual$1 = candlestickVisual; var LargeArr = typeof Float32Array !== "undefined" ? Float32Array : Array; var candlestickLayout = { seriesType: "candlestick", plan: createRenderPlanner(), reset: function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var data = seriesModel.getData(); var candleWidth = calculateCandleWidth(seriesModel, data); var cDimIdx = 0; var vDimIdx = 1; var coordDims = ["x", "y"]; var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx])); var vDimsI = map$1(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data); var openDimI = vDimsI[0]; var closeDimI = vDimsI[1]; var lowestDimI = vDimsI[2]; var highestDimI = vDimsI[3]; data.setLayout({ candleWidth, isSimpleBox: candleWidth <= 1.3 }); if (cDimI < 0 || vDimsI.length < 4) { return; } return { progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress }; function normalProgress(params, data2) { var dataIndex; var store = data2.getStore(); while ((dataIndex = params.next()) != null) { var axisDimVal = store.get(cDimI, dataIndex); var openVal = store.get(openDimI, dataIndex); var closeVal = store.get(closeDimI, dataIndex); var lowestVal = store.get(lowestDimI, dataIndex); var highestVal = store.get(highestDimI, dataIndex); var ocLow = Math.min(openVal, closeVal); var ocHigh = Math.max(openVal, closeVal); var ocLowPoint = getPoint(ocLow, axisDimVal); var ocHighPoint = getPoint(ocHigh, axisDimVal); var lowestPoint = getPoint(lowestVal, axisDimVal); var highestPoint = getPoint(highestVal, axisDimVal); var ends = []; addBodyEnd(ends, ocHighPoint, 0); addBodyEnd(ends, ocLowPoint, 1); ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint)); data2.setItemLayout(dataIndex, { sign: getSign(store, dataIndex, openVal, closeVal, closeDimI), initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx], ends, brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal) }); } function getPoint(val, axisDimVal2) { var p = []; p[cDimIdx] = axisDimVal2; p[vDimIdx] = val; return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p); } function addBodyEnd(ends2, point, start2) { var point1 = point.slice(); var point2 = point.slice(); point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false); point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true); start2 ? ends2.push(point1, point2) : ends2.push(point2, point1); } function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) { var pmin = getPoint(lowestVal2, axisDimVal2); var pmax = getPoint(highestVal2, axisDimVal2); pmin[cDimIdx] -= candleWidth / 2; pmax[cDimIdx] -= candleWidth / 2; return { x: pmin[0], y: pmin[1], width: candleWidth, height: pmax[1] - pmin[1] }; } function subPixelOptimizePoint(point) { point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1); return point; } } function largeProgress(params, data2) { var points2 = new LargeArr(params.count * 4); var offset = 0; var point; var tmpIn = []; var tmpOut = []; var dataIndex; var store = data2.getStore(); while ((dataIndex = params.next()) != null) { var axisDimVal = store.get(cDimI, dataIndex); var openVal = store.get(openDimI, dataIndex); var closeVal = store.get(closeDimI, dataIndex); var lowestVal = store.get(lowestDimI, dataIndex); var highestVal = store.get(highestDimI, dataIndex); if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) { points2[offset++] = NaN; offset += 3; continue; } points2[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI); tmpIn[cDimIdx] = axisDimVal; tmpIn[vDimIdx] = lowestVal; point = coordSys.dataToPoint(tmpIn, null, tmpOut); points2[offset++] = point ? point[0] : NaN; points2[offset++] = point ? point[1] : NaN; tmpIn[vDimIdx] = highestVal; point = coordSys.dataToPoint(tmpIn, null, tmpOut); points2[offset++] = point ? point[1] : NaN; } data2.setLayout("largePoints", points2); } } }; function getSign(store, dataIndex, openVal, closeVal, closeDimI) { var sign; if (openVal > closeVal) { sign = -1; } else if (openVal < closeVal) { sign = 1; } else { sign = dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1; } return sign; } function calculateCandleWidth(seriesModel, data) { var baseAxis = seriesModel.getBaseAxis(); var extent3; var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent3 = baseAxis.getExtent(), Math.abs(extent3[1] - extent3[0]) / data.count()); var barMaxWidth = parsePercent$1(retrieve2(seriesModel.get("barMaxWidth"), bandWidth), bandWidth); var barMinWidth = parsePercent$1(retrieve2(seriesModel.get("barMinWidth"), 1), bandWidth); var barWidth = seriesModel.get("barWidth"); return barWidth != null ? parsePercent$1(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth); } var candlestickLayout$1 = candlestickLayout; function install$y(registers) { registers.registerChartView(CandlestickView$1); registers.registerSeriesModel(CandlestickSeriesModel$1); registers.registerPreprocessor(candlestickPreprocessor); registers.registerVisual(candlestickVisual$1); registers.registerLayout(candlestickLayout$1); } function updateRipplePath(rippleGroup, effectCfg) { var color2 = effectCfg.rippleEffectColor || effectCfg.color; rippleGroup.eachChild(function(ripplePath) { ripplePath.attr({ z: effectCfg.z, zlevel: effectCfg.zlevel, style: { stroke: effectCfg.brushType === "stroke" ? color2 : null, fill: effectCfg.brushType === "fill" ? color2 : null } }); }); } var EffectSymbol = function(_super) { __extends$1(EffectSymbol2, _super); function EffectSymbol2(data, idx) { var _this = _super.call(this) || this; var symbol = new SymbolClz(data, idx); var rippleGroup = new Group$4(); _this.add(symbol); _this.add(rippleGroup); _this.updateData(data, idx); return _this; } EffectSymbol2.prototype.stopEffectAnimation = function() { this.childAt(1).removeAll(); }; EffectSymbol2.prototype.startEffectAnimation = function(effectCfg) { var symbolType = effectCfg.symbolType; var color2 = effectCfg.color; var rippleNumber = effectCfg.rippleNumber; var rippleGroup = this.childAt(1); for (var i = 0; i < rippleNumber; i++) { var ripplePath = createSymbol$1(symbolType, -1, -1, 2, 2, color2); ripplePath.attr({ style: { strokeNoScale: true }, z2: 99, silent: true, scaleX: 0.5, scaleY: 0.5 }); var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset; ripplePath.animate("", true).when(effectCfg.period, { scaleX: effectCfg.rippleScale / 2, scaleY: effectCfg.rippleScale / 2 }).delay(delay).start(); ripplePath.animateStyle(true).when(effectCfg.period, { opacity: 0 }).delay(delay).start(); rippleGroup.add(ripplePath); } updateRipplePath(rippleGroup, effectCfg); }; EffectSymbol2.prototype.updateEffectAnimation = function(effectCfg) { var oldEffectCfg = this._effectCfg; var rippleGroup = this.childAt(1); var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"]; for (var i = 0; i < DIFFICULT_PROPS.length; i++) { var propName = DIFFICULT_PROPS[i]; if (oldEffectCfg[propName] !== effectCfg[propName]) { this.stopEffectAnimation(); this.startEffectAnimation(effectCfg); return; } } updateRipplePath(rippleGroup, effectCfg); }; EffectSymbol2.prototype.highlight = function() { enterEmphasis(this); }; EffectSymbol2.prototype.downplay = function() { leaveEmphasis(this); }; EffectSymbol2.prototype.getSymbolType = function() { var symbol = this.childAt(0); return symbol && symbol.getSymbolType(); }; EffectSymbol2.prototype.updateData = function(data, idx) { var _this = this; var seriesModel = data.hostModel; this.childAt(0).updateData(data, idx); var rippleGroup = this.childAt(1); var itemModel = data.getItemModel(idx); var symbolType = data.getItemVisual(idx, "symbol"); var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, "symbolSize")); var symbolStyle = data.getItemVisual(idx, "style"); var color2 = symbolStyle && symbolStyle.fill; rippleGroup.setScale(symbolSize); rippleGroup.traverse(function(ripplePath) { ripplePath.setStyle("fill", color2); }); var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize); if (symbolOffset) { rippleGroup.x = symbolOffset[0]; rippleGroup.y = symbolOffset[1]; } var symbolRotate = data.getItemVisual(idx, "symbolRotate"); rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; var effectCfg = {}; effectCfg.showEffectOn = seriesModel.get("showEffectOn"); effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]); effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]); effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3; effectCfg.effectOffset = idx / data.count(); effectCfg.z = seriesModel.getShallow("z") || 0; effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0; effectCfg.symbolType = symbolType; effectCfg.color = color2; effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]); effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]); this.off("mouseover").off("mouseout").off("emphasis").off("normal"); if (effectCfg.showEffectOn === "render") { this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg); this._effectCfg = effectCfg; } else { this._effectCfg = null; this.stopEffectAnimation(); this.onHoverStateChange = function(toState) { if (toState === "emphasis") { if (effectCfg.showEffectOn !== "render") { _this.startEffectAnimation(effectCfg); } } else if (toState === "normal") { if (effectCfg.showEffectOn !== "render") { _this.stopEffectAnimation(); } } }; } this._effectCfg = effectCfg; enableHoverEmphasis(this); }; EffectSymbol2.prototype.fadeOut = function(cb) { this.off("mouseover").off("mouseout"); cb && cb(); }; return EffectSymbol2; }(Group$4); var EffectSymbol$1 = EffectSymbol; var EffectScatterView = function(_super) { __extends$1(EffectScatterView2, _super); function EffectScatterView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = EffectScatterView2.type; return _this; } EffectScatterView2.prototype.init = function() { this._symbolDraw = new SymbolDraw$1(EffectSymbol$1); }; EffectScatterView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var effectSymbolDraw = this._symbolDraw; effectSymbolDraw.updateData(data, { clipShape: this._getClipShape(seriesModel) }); this.group.add(effectSymbolDraw.group); }; EffectScatterView2.prototype._getClipShape = function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); return seriesModel.get("clip", true) ? clipArea : null; }; EffectScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); this.group.dirty(); var res = pointsLayout("").reset(seriesModel, ecModel, api); if (res.progress) { res.progress({ start: 0, end: data.count(), count: data.count() }, data); } this._symbolDraw.updateLayout(); }; EffectScatterView2.prototype._updateGroupTransform = function(seriesModel) { var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.getRoamTransform) { this.group.transform = clone$2(coordSys.getRoamTransform()); this.group.decomposeTransform(); } }; EffectScatterView2.prototype.remove = function(ecModel, api) { this._symbolDraw && this._symbolDraw.remove(true); }; EffectScatterView2.type = "effectScatter"; return EffectScatterView2; }(ChartView$1); var EffectScatterView$1 = EffectScatterView; var EffectScatterSeriesModel = function(_super) { __extends$1(EffectScatterSeriesModel2, _super); function EffectScatterSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = EffectScatterSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } EffectScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this, { useEncodeDefaulter: true }); }; EffectScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { return selectors.point(data.getItemLayout(dataIndex)); }; EffectScatterSeriesModel2.type = "series.effectScatter"; EffectScatterSeriesModel2.dependencies = ["grid", "polar"]; EffectScatterSeriesModel2.defaultOption = { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, legendHoverLink: true, effectType: "ripple", progressive: 0, showEffectOn: "render", clip: true, rippleEffect: { period: 4, scale: 2.5, brushType: "fill", number: 3 }, universalTransition: { divideShape: "clone" }, symbolSize: 10 }; return EffectScatterSeriesModel2; }(SeriesModel$1); var EffectScatterSeriesModel$1 = EffectScatterSeriesModel; function install$x(registers) { registers.registerChartView(EffectScatterView$1); registers.registerSeriesModel(EffectScatterSeriesModel$1); registers.registerLayout(pointsLayout("effectScatter")); } var EffectLine = function(_super) { __extends$1(EffectLine2, _super); function EffectLine2(lineData, idx, seriesScope) { var _this = _super.call(this) || this; _this.add(_this.createLine(lineData, idx, seriesScope)); _this._updateEffectSymbol(lineData, idx); return _this; } EffectLine2.prototype.createLine = function(lineData, idx, seriesScope) { return new Line$1(lineData, idx, seriesScope); }; EffectLine2.prototype._updateEffectSymbol = function(lineData, idx) { var itemModel = lineData.getItemModel(idx); var effectModel = itemModel.getModel("effect"); var size = effectModel.get("symbolSize"); var symbolType = effectModel.get("symbol"); if (!isArray$1(size)) { size = [size, size]; } var lineStyle = lineData.getItemVisual(idx, "style"); var color2 = effectModel.get("color") || lineStyle && lineStyle.stroke; var symbol = this.childAt(1); if (this._symbolType !== symbolType) { this.remove(symbol); symbol = createSymbol$1(symbolType, -0.5, -0.5, 1, 1, color2); symbol.z2 = 100; symbol.culling = true; this.add(symbol); } if (!symbol) { return; } symbol.setStyle("shadowColor", color2); symbol.setStyle(effectModel.getItemStyle(["color"])); symbol.scaleX = size[0]; symbol.scaleY = size[1]; symbol.setColor(color2); this._symbolType = symbolType; this._symbolScale = size; this._updateEffectAnimation(lineData, effectModel, idx); }; EffectLine2.prototype._updateEffectAnimation = function(lineData, effectModel, idx) { var symbol = this.childAt(1); if (!symbol) { return; } var self2 = this; var points2 = lineData.getItemLayout(idx); var period = effectModel.get("period") * 1e3; var loop = effectModel.get("loop"); var constantSpeed = effectModel.get("constantSpeed"); var delayExpr = retrieve(effectModel.get("delay"), function(idx2) { return idx2 / lineData.count() * period / 3; }); symbol.ignore = true; this._updateAnimationPoints(symbol, points2); if (constantSpeed > 0) { period = this._getLineLength(symbol) / constantSpeed * 1e3; } if (period !== this._period || loop !== this._loop) { symbol.stopAnimation(); if (period > 0) { var delayNum = void 0; if (typeof delayExpr === "function") { delayNum = delayExpr(idx); } else { delayNum = delayExpr; } if (symbol.__t > 0) { delayNum = -period * symbol.__t; } symbol.__t = 0; var animator = symbol.animate("", loop).when(period, { __t: 1 }).delay(delayNum).during(function() { self2._updateSymbolPosition(symbol); }); if (!loop) { animator.done(function() { self2.remove(symbol); }); } animator.start(); } } this._period = period; this._loop = loop; }; EffectLine2.prototype._getLineLength = function(symbol) { return dist$1(symbol.__p1, symbol.__cp1) + dist$1(symbol.__cp1, symbol.__p2); }; EffectLine2.prototype._updateAnimationPoints = function(symbol, points2) { symbol.__p1 = points2[0]; symbol.__p2 = points2[1]; symbol.__cp1 = points2[2] || [(points2[0][0] + points2[1][0]) / 2, (points2[0][1] + points2[1][1]) / 2]; }; EffectLine2.prototype.updateData = function(lineData, idx, seriesScope) { this.childAt(0).updateData(lineData, idx, seriesScope); this._updateEffectSymbol(lineData, idx); }; EffectLine2.prototype._updateSymbolPosition = function(symbol) { var p1 = symbol.__p1; var p2 = symbol.__p2; var cp1 = symbol.__cp1; var t = symbol.__t; var pos = [symbol.x, symbol.y]; var lastPos = pos.slice(); var quadraticAt2 = quadraticAt$1; var quadraticDerivativeAt$1 = quadraticDerivativeAt; pos[0] = quadraticAt2(p1[0], cp1[0], p2[0], t); pos[1] = quadraticAt2(p1[1], cp1[1], p2[1], t); var tx = quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t); var ty = quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t); symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") { if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) { symbol.scaleY = dist$1(lastPos, pos) * 1.05; if (t === 1) { pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2; pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2; } } else if (symbol.__lastT === 1) { symbol.scaleY = 2 * dist$1(p1, pos); } else { symbol.scaleY = this._symbolScale[1]; } } symbol.__lastT = symbol.__t; symbol.ignore = false; symbol.x = pos[0]; symbol.y = pos[1]; }; EffectLine2.prototype.updateLayout = function(lineData, idx) { this.childAt(0).updateLayout(lineData, idx); var effectModel = lineData.getItemModel(idx).getModel("effect"); this._updateEffectAnimation(lineData, effectModel, idx); }; return EffectLine2; }(Group$4); var EffectLine$1 = EffectLine; var Polyline = function(_super) { __extends$1(Polyline2, _super); function Polyline2(lineData, idx, seriesScope) { var _this = _super.call(this) || this; _this._createPolyline(lineData, idx, seriesScope); return _this; } Polyline2.prototype._createPolyline = function(lineData, idx, seriesScope) { var points2 = lineData.getItemLayout(idx); var line = new Polyline$3({ shape: { points: points2 } }); this.add(line); this._updateCommonStl(lineData, idx, seriesScope); }; Polyline2.prototype.updateData = function(lineData, idx, seriesScope) { var seriesModel = lineData.hostModel; var line = this.childAt(0); var target = { shape: { points: lineData.getItemLayout(idx) } }; updateProps$1(line, target, seriesModel, idx); this._updateCommonStl(lineData, idx, seriesScope); }; Polyline2.prototype._updateCommonStl = function(lineData, idx, seriesScope) { var line = this.childAt(0); var itemModel = lineData.getItemModel(idx); var hoverLineStyle = seriesScope && seriesScope.emphasisLineStyle; if (!seriesScope || lineData.hasItemOption) { hoverLineStyle = itemModel.getModel(["emphasis", "lineStyle"]).getLineStyle(); } line.useStyle(lineData.getItemVisual(idx, "style")); line.style.fill = null; line.style.strokeNoScale = true; var lineEmphasisState = line.ensureState("emphasis"); lineEmphasisState.style = hoverLineStyle; enableHoverEmphasis(this); }; Polyline2.prototype.updateLayout = function(lineData, idx) { var polyline = this.childAt(0); polyline.setShape("points", lineData.getItemLayout(idx)); }; return Polyline2; }(Group$4); var Polyline$1 = Polyline; var EffectPolyline = function(_super) { __extends$1(EffectPolyline2, _super); function EffectPolyline2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this._lastFrame = 0; _this._lastFramePercent = 0; return _this; } EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) { return new Polyline$1(lineData, idx, seriesScope); }; EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points2) { this._points = points2; var accLenArr = [0]; var len2 = 0; for (var i = 1; i < points2.length; i++) { var p1 = points2[i - 1]; var p2 = points2[i]; len2 += dist$1(p1, p2); accLenArr.push(len2); } if (len2 === 0) { this._length = 0; return; } for (var i = 0; i < accLenArr.length; i++) { accLenArr[i] /= len2; } this._offsets = accLenArr; this._length = len2; }; EffectPolyline2.prototype._getLineLength = function() { return this._length; }; EffectPolyline2.prototype._updateSymbolPosition = function(symbol) { var t = symbol.__t; var points2 = this._points; var offsets = this._offsets; var len2 = points2.length; if (!offsets) { return; } var lastFrame = this._lastFrame; var frame; if (t < this._lastFramePercent) { var start2 = Math.min(lastFrame + 1, len2 - 1); for (frame = start2; frame >= 0; frame--) { if (offsets[frame] <= t) { break; } } frame = Math.min(frame, len2 - 2); } else { for (frame = lastFrame; frame < len2; frame++) { if (offsets[frame] > t) { break; } } frame = Math.min(frame - 1, len2 - 2); } var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]); var p0 = points2[frame]; var p1 = points2[frame + 1]; symbol.x = p0[0] * (1 - p) + p * p1[0]; symbol.y = p0[1] * (1 - p) + p * p1[1]; var tx = p1[0] - p0[0]; var ty = p1[1] - p0[1]; symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; this._lastFrame = frame; this._lastFramePercent = t; symbol.ignore = false; }; return EffectPolyline2; }(EffectLine$1); var EffectPolyline$1 = EffectPolyline; var LargeLinesPathShape = function() { function LargeLinesPathShape2() { this.polyline = false; this.curveness = 0; this.segs = []; } return LargeLinesPathShape2; }(); var LargeLinesPath = function(_super) { __extends$1(LargeLinesPath2, _super); function LargeLinesPath2(opts) { return _super.call(this, opts) || this; } LargeLinesPath2.prototype.getDefaultStyle = function() { return { stroke: "#000", fill: null }; }; LargeLinesPath2.prototype.getDefaultShape = function() { return new LargeLinesPathShape(); }; LargeLinesPath2.prototype.buildPath = function(ctx, shape) { var segs = shape.segs; var curveness = shape.curveness; if (shape.polyline) { for (var i = 0; i < segs.length; ) { var count2 = segs[i++]; if (count2 > 0) { ctx.moveTo(segs[i++], segs[i++]); for (var k = 1; k < count2; k++) { ctx.lineTo(segs[i++], segs[i++]); } } } } else { for (var i = 0; i < segs.length; ) { var x0 = segs[i++]; var y0 = segs[i++]; var x1 = segs[i++]; var y1 = segs[i++]; ctx.moveTo(x0, y0); if (curveness > 0) { var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; ctx.quadraticCurveTo(x2, y2, x1, y1); } else { ctx.lineTo(x1, y1); } } } }; LargeLinesPath2.prototype.findDataIndex = function(x, y) { var shape = this.shape; var segs = shape.segs; var curveness = shape.curveness; var lineWidth = this.style.lineWidth; if (shape.polyline) { var dataIndex = 0; for (var i = 0; i < segs.length; ) { var count2 = segs[i++]; if (count2 > 0) { var x0 = segs[i++]; var y0 = segs[i++]; for (var k = 1; k < count2; k++) { var x1 = segs[i++]; var y1 = segs[i++]; if (containStroke$4(x0, y0, x1, y1, lineWidth, x, y)) { return dataIndex; } } } dataIndex++; } } else { var dataIndex = 0; for (var i = 0; i < segs.length; ) { var x0 = segs[i++]; var y0 = segs[i++]; var x1 = segs[i++]; var y1 = segs[i++]; if (curveness > 0) { var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; if (containStroke$2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) { return dataIndex; } } else { if (containStroke$4(x0, y0, x1, y1, lineWidth, x, y)) { return dataIndex; } } dataIndex++; } } return -1; }; return LargeLinesPath2; }(Path$1); var LargeLineDraw = function() { function LargeLineDraw2() { this.group = new Group$4(); } LargeLineDraw2.prototype.isPersistent = function() { return !this._incremental; }; LargeLineDraw2.prototype.updateData = function(data) { this.group.removeAll(); var lineEl = new LargeLinesPath({ rectHover: true, cursor: "default" }); lineEl.setShape({ segs: data.getLayout("linesPoints") }); this._setCommon(lineEl, data); this.group.add(lineEl); this._incremental = null; }; LargeLineDraw2.prototype.incrementalPrepareUpdate = function(data) { this.group.removeAll(); this._clearIncremental(); if (data.count() > 5e5) { if (!this._incremental) { this._incremental = new IncrementalDisplayable$1({ silent: true }); } this.group.add(this._incremental); } else { this._incremental = null; } }; LargeLineDraw2.prototype.incrementalUpdate = function(taskParams, data) { var lineEl = new LargeLinesPath(); lineEl.setShape({ segs: data.getLayout("linesPoints") }); this._setCommon(lineEl, data, !!this._incremental); if (!this._incremental) { lineEl.rectHover = true; lineEl.cursor = "default"; lineEl.__startIndex = taskParams.start; this.group.add(lineEl); } else { this._incremental.addDisplayable(lineEl, true); } }; LargeLineDraw2.prototype.remove = function() { this._clearIncremental(); this._incremental = null; this.group.removeAll(); }; LargeLineDraw2.prototype._setCommon = function(lineEl, data, isIncremental) { var hostModel = data.hostModel; lineEl.setShape({ polyline: hostModel.get("polyline"), curveness: hostModel.get(["lineStyle", "curveness"]) }); lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle()); lineEl.style.strokeNoScale = true; var style = data.getVisual("style"); if (style && style.stroke) { lineEl.setStyle("stroke", style.stroke); } lineEl.setStyle("fill", null); if (!isIncremental) { var ecData_1 = getECData(lineEl); ecData_1.seriesIndex = hostModel.seriesIndex; lineEl.on("mousemove", function(e2) { ecData_1.dataIndex = null; var dataIndex = lineEl.findDataIndex(e2.offsetX, e2.offsetY); if (dataIndex > 0) { ecData_1.dataIndex = dataIndex + lineEl.__startIndex; } }); } }; LargeLineDraw2.prototype._clearIncremental = function() { var incremental = this._incremental; if (incremental) { incremental.clearDisplaybles(); } }; return LargeLineDraw2; }(); var LargeLineDraw$1 = LargeLineDraw; var linesLayout = { seriesType: "lines", plan: createRenderPlanner(), reset: function(seriesModel) { var coordSys = seriesModel.coordinateSystem; var isPolyline = seriesModel.get("polyline"); var isLarge = seriesModel.pipelineContext.large; return { progress: function(params, lineData) { var lineCoords = []; if (isLarge) { var points2 = void 0; var segCount = params.end - params.start; if (isPolyline) { var totalCoordsCount = 0; for (var i = params.start; i < params.end; i++) { totalCoordsCount += seriesModel.getLineCoordsCount(i); } points2 = new Float32Array(segCount + totalCoordsCount * 2); } else { points2 = new Float32Array(segCount * 4); } var offset = 0; var pt = []; for (var i = params.start; i < params.end; i++) { var len2 = seriesModel.getLineCoords(i, lineCoords); if (isPolyline) { points2[offset++] = len2; } for (var k = 0; k < len2; k++) { pt = coordSys.dataToPoint(lineCoords[k], false, pt); points2[offset++] = pt[0]; points2[offset++] = pt[1]; } } lineData.setLayout("linesPoints", points2); } else { for (var i = params.start; i < params.end; i++) { var itemModel = lineData.getItemModel(i); var len2 = seriesModel.getLineCoords(i, lineCoords); var pts = []; if (isPolyline) { for (var j = 0; j < len2; j++) { pts.push(coordSys.dataToPoint(lineCoords[j])); } } else { pts[0] = coordSys.dataToPoint(lineCoords[0]); pts[1] = coordSys.dataToPoint(lineCoords[1]); var curveness = itemModel.get(["lineStyle", "curveness"]); if (+curveness) { pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness]; } } lineData.setItemLayout(i, pts); } } } }; } }; var linesLayout$1 = linesLayout; var LinesView = function(_super) { __extends$1(LinesView2, _super); function LinesView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LinesView2.type; return _this; } LinesView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var lineDraw = this._updateLineDraw(data, seriesModel); var zlevel = seriesModel.get("zlevel"); var trailLength = seriesModel.get(["effect", "trailLength"]); var zr = api.getZr(); var isSvg = zr.painter.getType() === "svg"; if (!isSvg) { zr.painter.getLayer(zlevel).clear(true); } if (this._lastZlevel != null && !isSvg) { zr.configLayer(this._lastZlevel, { motionBlur: false }); } if (this._showEffect(seriesModel) && trailLength) { if (!isSvg) { zr.configLayer(zlevel, { motionBlur: true, lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0) }); } } lineDraw.updateData(data); var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel); if (clipPath) { this.group.setClipPath(clipPath); } else { this.group.removeClipPath(); } this._lastZlevel = zlevel; this._finished = true; }; LinesView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var lineDraw = this._updateLineDraw(data, seriesModel); lineDraw.incrementalPrepareUpdate(data); this._clearLayer(api); this._finished = false; }; LinesView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData()); this._finished = taskParams.end === seriesModel.getData().count(); }; LinesView2.prototype.updateTransform = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var pipelineContext = seriesModel.pipelineContext; if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) { return { update: true }; } else { var res = linesLayout$1.reset(seriesModel, ecModel, api); if (res.progress) { res.progress({ start: 0, end: data.count(), count: data.count() }, data); } this._lineDraw.updateLayout(); this._clearLayer(api); } }; LinesView2.prototype._updateLineDraw = function(data, seriesModel) { var lineDraw = this._lineDraw; var hasEffect = this._showEffect(seriesModel); var isPolyline = !!seriesModel.get("polyline"); var pipelineContext = seriesModel.pipelineContext; var isLargeDraw = pipelineContext.large; if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) { if (lineDraw) { lineDraw.remove(); } lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw$1() : new LineDraw$1(isPolyline ? hasEffect ? EffectPolyline$1 : Polyline$1 : hasEffect ? EffectLine$1 : Line$1); this._hasEffet = hasEffect; this._isPolyline = isPolyline; this._isLargeDraw = isLargeDraw; } this.group.add(lineDraw.group); return lineDraw; }; LinesView2.prototype._showEffect = function(seriesModel) { return !!seriesModel.get(["effect", "show"]); }; LinesView2.prototype._clearLayer = function(api) { var zr = api.getZr(); var isSvg = zr.painter.getType() === "svg"; if (!isSvg && this._lastZlevel != null) { zr.painter.getLayer(this._lastZlevel).clear(true); } }; LinesView2.prototype.remove = function(ecModel, api) { this._lineDraw && this._lineDraw.remove(); this._lineDraw = null; this._clearLayer(api); }; LinesView2.prototype.dispose = function(ecModel, api) { this.remove(ecModel, api); }; LinesView2.type = "lines"; return LinesView2; }(ChartView$1); var LinesView$1 = LinesView; var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array; var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array; function compatEc2(seriesOpt) { var data = seriesOpt.data; if (data && data[0] && data[0][0] && data[0][0].coord) { seriesOpt.data = map$1(data, function(itemOpt) { var coords = [itemOpt[0].coord, itemOpt[1].coord]; var target = { coords }; if (itemOpt[0].name) { target.fromName = itemOpt[0].name; } if (itemOpt[1].name) { target.toName = itemOpt[1].name; } return mergeAll([target, itemOpt[0], itemOpt[1]]); }); } } var LinesSeriesModel = function(_super) { __extends$1(LinesSeriesModel2, _super); function LinesSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LinesSeriesModel2.type; _this.visualStyleAccessPath = "lineStyle"; _this.visualDrawType = "stroke"; return _this; } LinesSeriesModel2.prototype.init = function(option) { option.data = option.data || []; compatEc2(option); var result = this._processFlatCoordsArray(option.data); this._flatCoords = result.flatCoords; this._flatCoordsOffset = result.flatCoordsOffset; if (result.flatCoords) { option.data = new Float32Array(result.count); } _super.prototype.init.apply(this, arguments); }; LinesSeriesModel2.prototype.mergeOption = function(option) { compatEc2(option); if (option.data) { var result = this._processFlatCoordsArray(option.data); this._flatCoords = result.flatCoords; this._flatCoordsOffset = result.flatCoordsOffset; if (result.flatCoords) { option.data = new Float32Array(result.count); } } _super.prototype.mergeOption.apply(this, arguments); }; LinesSeriesModel2.prototype.appendData = function(params) { var result = this._processFlatCoordsArray(params.data); if (result.flatCoords) { if (!this._flatCoords) { this._flatCoords = result.flatCoords; this._flatCoordsOffset = result.flatCoordsOffset; } else { this._flatCoords = concatArray(this._flatCoords, result.flatCoords); this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset); } params.data = new Float32Array(result.count); } this.getRawData().appendData(params.data); }; LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) { var itemModel = this.getData().getItemModel(idx); var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords"); return coords; }; LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) { if (this._flatCoordsOffset) { return this._flatCoordsOffset[idx * 2 + 1]; } else { return this._getCoordsFromItemModel(idx).length; } }; LinesSeriesModel2.prototype.getLineCoords = function(idx, out2) { if (this._flatCoordsOffset) { var offset = this._flatCoordsOffset[idx * 2]; var len2 = this._flatCoordsOffset[idx * 2 + 1]; for (var i = 0; i < len2; i++) { out2[i] = out2[i] || []; out2[i][0] = this._flatCoords[offset + i * 2]; out2[i][1] = this._flatCoords[offset + i * 2 + 1]; } return len2; } else { var coords = this._getCoordsFromItemModel(idx); for (var i = 0; i < coords.length; i++) { out2[i] = out2[i] || []; out2[i][0] = coords[i][0]; out2[i][1] = coords[i][1]; } return coords.length; } }; LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) { var startOffset = 0; if (this._flatCoords) { startOffset = this._flatCoords.length; } if (typeof data[0] === "number") { var len2 = data.length; var coordsOffsetAndLenStorage = new Uint32Arr(len2); var coordsStorage = new Float64Arr(len2); var coordsCursor = 0; var offsetCursor = 0; var dataCount = 0; for (var i = 0; i < len2; ) { dataCount++; var count2 = data[i++]; coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; coordsOffsetAndLenStorage[offsetCursor++] = count2; for (var k = 0; k < count2; k++) { var x = data[i++]; var y = data[i++]; coordsStorage[coordsCursor++] = x; coordsStorage[coordsCursor++] = y; } } return { flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor), flatCoords: coordsStorage, count: dataCount }; } return { flatCoordsOffset: null, flatCoords: null, count: data.length }; }; LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) { var lineData = new SeriesData$1(["value"], this); lineData.hasItemOption = false; lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) { if (dataItem instanceof Array) { return NaN; } else { lineData.hasItemOption = true; var value = dataItem.value; if (value != null) { return value instanceof Array ? value[dimIndex] : value; } } }); return lineData; }; LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var itemModel = data.getItemModel(dataIndex); var name = itemModel.get("name"); if (name) { return name; } var fromName = itemModel.get("fromName"); var toName = itemModel.get("toName"); var nameArr = []; fromName != null && nameArr.push(fromName); toName != null && nameArr.push(toName); return createTooltipMarkup("nameValue", { name: nameArr.join(" > ") }); }; LinesSeriesModel2.prototype.preventIncremental = function() { return !!this.get(["effect", "show"]); }; LinesSeriesModel2.prototype.getProgressive = function() { var progressive = this.option.progressive; if (progressive == null) { return this.option.large ? 1e4 : this.get("progressive"); } return progressive; }; LinesSeriesModel2.prototype.getProgressiveThreshold = function() { var progressiveThreshold = this.option.progressiveThreshold; if (progressiveThreshold == null) { return this.option.large ? 2e4 : this.get("progressiveThreshold"); } return progressiveThreshold; }; LinesSeriesModel2.type = "series.lines"; LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"]; LinesSeriesModel2.defaultOption = { coordinateSystem: "geo", zlevel: 0, z: 2, legendHoverLink: true, xAxisIndex: 0, yAxisIndex: 0, symbol: ["none", "none"], symbolSize: [10, 10], geoIndex: 0, effect: { show: false, period: 4, constantSpeed: 0, symbol: "circle", symbolSize: 3, loop: true, trailLength: 0.2 }, large: false, largeThreshold: 2e3, polyline: false, clip: true, label: { show: false, position: "end" }, lineStyle: { opacity: 0.5 } }; return LinesSeriesModel2; }(SeriesModel$1); var LinesSeriesModel$1 = LinesSeriesModel; function normalize(a) { if (!(a instanceof Array)) { a = [a, a]; } return a; } var linesVisual = { seriesType: "lines", reset: function(seriesModel) { var symbolType = normalize(seriesModel.get("symbol")); var symbolSize = normalize(seriesModel.get("symbolSize")); var data = seriesModel.getData(); data.setVisual("fromSymbol", symbolType && symbolType[0]); data.setVisual("toSymbol", symbolType && symbolType[1]); data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); data.setVisual("toSymbolSize", symbolSize && symbolSize[1]); function dataEach(data2, idx) { var itemModel = data2.getItemModel(idx); var symbolType2 = normalize(itemModel.getShallow("symbol", true)); var symbolSize2 = normalize(itemModel.getShallow("symbolSize", true)); symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]); symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]); symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]); symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]); } return { dataEach: data.hasItemOption ? dataEach : null }; } }; var linesVisual$1 = linesVisual; function install$w(registers) { registers.registerChartView(LinesView$1); registers.registerSeriesModel(LinesSeriesModel$1); registers.registerLayout(linesLayout$1); registers.registerVisual(linesVisual$1); } var GRADIENT_LEVELS = 256; var HeatmapLayer = function() { function HeatmapLayer2() { this.blurSize = 30; this.pointSize = 20; this.maxOpacity = 1; this.minOpacity = 0; this._gradientPixels = { inRange: null, outOfRange: null }; var canvas = createCanvas(); this.canvas = canvas; } HeatmapLayer2.prototype.update = function(data, width, height, normalize2, colorFunc, isInRange) { var brush2 = this._getBrush(); var gradientInRange = this._getGradient(colorFunc, "inRange"); var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange"); var r = this.pointSize + this.blurSize; var canvas = this.canvas; var ctx = canvas.getContext("2d"); var len2 = data.length; canvas.width = width; canvas.height = height; for (var i = 0; i < len2; ++i) { var p = data[i]; var x = p[0]; var y = p[1]; var value = p[2]; var alpha = normalize2(value); ctx.globalAlpha = alpha; ctx.drawImage(brush2, x - r, y - r); } if (!canvas.width || !canvas.height) { return canvas; } var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); var pixels = imageData.data; var offset = 0; var pixelLen = pixels.length; var minOpacity = this.minOpacity; var maxOpacity = this.maxOpacity; var diffOpacity = maxOpacity - minOpacity; while (offset < pixelLen) { var alpha = pixels[offset + 3] / 256; var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; if (alpha > 0) { var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; alpha > 0 && (alpha = alpha * diffOpacity + minOpacity); pixels[offset++] = gradient[gradientOffset]; pixels[offset++] = gradient[gradientOffset + 1]; pixels[offset++] = gradient[gradientOffset + 2]; pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256; } else { offset += 4; } } ctx.putImageData(imageData, 0, 0); return canvas; }; HeatmapLayer2.prototype._getBrush = function() { var brushCanvas = this._brushCanvas || (this._brushCanvas = createCanvas()); var r = this.pointSize + this.blurSize; var d = r * 2; brushCanvas.width = d; brushCanvas.height = d; var ctx = brushCanvas.getContext("2d"); ctx.clearRect(0, 0, d, d); ctx.shadowOffsetX = d; ctx.shadowBlur = this.blurSize; ctx.shadowColor = "#000"; ctx.beginPath(); ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); return brushCanvas; }; HeatmapLayer2.prototype._getGradient = function(colorFunc, state) { var gradientPixels = this._gradientPixels; var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4)); var color2 = [0, 0, 0, 0]; var off = 0; for (var i = 0; i < 256; i++) { colorFunc[state](i / 255, true, color2); pixelsSingleState[off++] = color2[0]; pixelsSingleState[off++] = color2[1]; pixelsSingleState[off++] = color2[2]; pixelsSingleState[off++] = color2[3]; } return pixelsSingleState; }; return HeatmapLayer2; }(); var HeatmapLayer$1 = HeatmapLayer; function getIsInPiecewiseRange(dataExtent, pieceList, selected) { var dataSpan = dataExtent[1] - dataExtent[0]; pieceList = map$1(pieceList, function(piece) { return { interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan] }; }); var len2 = pieceList.length; var lastIndex = 0; return function(val) { var i; for (i = lastIndex; i < len2; i++) { var interval = pieceList[i].interval; if (interval[0] <= val && val <= interval[1]) { lastIndex = i; break; } } if (i === len2) { for (i = lastIndex - 1; i >= 0; i--) { var interval = pieceList[i].interval; if (interval[0] <= val && val <= interval[1]) { lastIndex = i; break; } } } return i >= 0 && i < len2 && selected[i]; }; } function getIsInContinuousRange(dataExtent, range) { var dataSpan = dataExtent[1] - dataExtent[0]; range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan]; return function(val) { return val >= range[0] && val <= range[1]; }; } function isGeoCoordSys(coordSys) { var dimensions = coordSys.dimensions; return dimensions[0] === "lng" && dimensions[1] === "lat"; } var HeatmapView = function(_super) { __extends$1(HeatmapView2, _super); function HeatmapView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = HeatmapView2.type; return _this; } HeatmapView2.prototype.render = function(seriesModel, ecModel, api) { var visualMapOfThisSeries; ecModel.eachComponent("visualMap", function(visualMap) { visualMap.eachTargetSeries(function(targetSeries) { if (targetSeries === seriesModel) { visualMapOfThisSeries = visualMap; } }); }); this.group.removeAll(); this._incrementalDisplayable = null; var coordSys = seriesModel.coordinateSystem; if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") { this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count()); } else if (isGeoCoordSys(coordSys)) { this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api); } }; HeatmapView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { this.group.removeAll(); }; HeatmapView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { var coordSys = seriesModel.coordinateSystem; if (coordSys) { if (isGeoCoordSys(coordSys)) { this.render(seriesModel, ecModel, api); } else { this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true); } } }; HeatmapView2.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start2, end2, incremental) { var coordSys = seriesModel.coordinateSystem; var width; var height; var xAxisExtent; var yAxisExtent; if (isCoordinateSystemType(coordSys, "cartesian2d")) { var xAxis = coordSys.getAxis("x"); var yAxis = coordSys.getAxis("y"); width = xAxis.getBandWidth(); height = yAxis.getBandWidth(); xAxisExtent = xAxis.scale.getExtent(); yAxisExtent = yAxis.scale.getExtent(); } var group = this.group; var data = seriesModel.getData(); var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle(); var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(); var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle(); var labelStatesModels = getLabelStatesModels(seriesModel); var focus = seriesModel.get(["emphasis", "focus"]); var blurScope = seriesModel.get(["emphasis", "blurScope"]); var dataDims = isCoordinateSystemType(coordSys, "cartesian2d") ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")]; for (var idx = start2; idx < end2; idx++) { var rect = void 0; var style = data.getItemVisual(idx, "style"); if (isCoordinateSystemType(coordSys, "cartesian2d")) { var dataDimX = data.get(dataDims[0], idx); var dataDimY = data.get(dataDims[1], idx); if (isNaN(data.get(dataDims[2], idx)) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) { continue; } var point = coordSys.dataToPoint([dataDimX, dataDimY]); rect = new Rect$3({ shape: { x: Math.floor(Math.round(point[0]) - width / 2), y: Math.floor(Math.round(point[1]) - height / 2), width: Math.ceil(width), height: Math.ceil(height) }, style }); } else { if (isNaN(data.get(dataDims[1], idx))) { continue; } rect = new Rect$3({ z2: 1, shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape, style }); } var itemModel = data.getItemModel(idx); if (data.hasItemOption) { var emphasisModel = itemModel.getModel("emphasis"); emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle(); blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); focus = emphasisModel.get("focus"); blurScope = emphasisModel.get("blurScope"); labelStatesModels = getLabelStatesModels(itemModel); } var rawValue = seriesModel.getRawValue(idx); var defaultText = "-"; if (rawValue && rawValue[2] != null) { defaultText = rawValue[2] + ""; } setLabelStyle(rect, labelStatesModels, { labelFetcher: seriesModel, labelDataIndex: idx, defaultOpacity: style.opacity, defaultText }); rect.ensureState("emphasis").style = emphasisStyle; rect.ensureState("blur").style = blurStyle; rect.ensureState("select").style = selectStyle; enableHoverEmphasis(rect, focus, blurScope); rect.incremental = incremental; if (incremental) { rect.states.emphasis.hoverLayer = true; } group.add(rect); data.setItemGraphicEl(idx, rect); } }; HeatmapView2.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) { var inRangeVisuals = visualMapModel.targetVisuals.inRange; var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; var data = seriesModel.getData(); var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer$1(); hmLayer.blurSize = seriesModel.get("blurSize"); hmLayer.pointSize = seriesModel.get("pointSize"); hmLayer.minOpacity = seriesModel.get("minOpacity"); hmLayer.maxOpacity = seriesModel.get("maxOpacity"); var rect = geo.getViewRect().clone(); var roamTransform = geo.getRoamTransform(); rect.applyTransform(roamTransform); var x = Math.max(rect.x, 0); var y = Math.max(rect.y, 0); var x2 = Math.min(rect.width + rect.x, api.getWidth()); var y2 = Math.min(rect.height + rect.y, api.getHeight()); var width = x2 - x; var height = y2 - y; var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")]; var points2 = data.mapArray(dims, function(lng, lat, value) { var pt = geo.dataToPoint([lng, lat]); pt[0] -= x; pt[1] -= y; pt.push(value); return pt; }); var dataExtent = visualMapModel.getExtent(); var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected); hmLayer.update(points2, width, height, inRangeVisuals.color.getNormalizer(), { inRange: inRangeVisuals.color.getColorMapper(), outOfRange: outOfRangeVisuals.color.getColorMapper() }, isInRange); var img = new ZRImage$1({ style: { width, height, x, y, image: hmLayer.canvas }, silent: true }); this.group.add(img); }; HeatmapView2.type = "heatmap"; return HeatmapView2; }(ChartView$1); var HeatmapView$1 = HeatmapView; var HeatmapSeriesModel = function(_super) { __extends$1(HeatmapSeriesModel2, _super); function HeatmapSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = HeatmapSeriesModel2.type; return _this; } HeatmapSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this, { generateCoord: "value" }); }; HeatmapSeriesModel2.prototype.preventIncremental = function() { var coordSysCreator = CoordinateSystem.get(this.get("coordinateSystem")); if (coordSysCreator && coordSysCreator.dimensions) { return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat"; } }; HeatmapSeriesModel2.type = "series.heatmap"; HeatmapSeriesModel2.dependencies = ["grid", "geo", "calendar"]; HeatmapSeriesModel2.defaultOption = { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, geoIndex: 0, blurSize: 30, pointSize: 20, maxOpacity: 1, minOpacity: 0, select: { itemStyle: { borderColor: "#212121" } } }; return HeatmapSeriesModel2; }(SeriesModel$1); var HeatmapSeriesModel$1 = HeatmapSeriesModel; function install$v(registers) { registers.registerChartView(HeatmapView$1); registers.registerSeriesModel(HeatmapSeriesModel$1); } var BAR_BORDER_WIDTH_QUERY = ["itemStyle", "borderWidth"]; var LAYOUT_ATTRS = [{ xy: "x", wh: "width", index: 0, posDesc: ["left", "right"] }, { xy: "y", wh: "height", index: 1, posDesc: ["top", "bottom"] }]; var pathForLineWidth = new Circle$1(); var PictorialBarView = function(_super) { __extends$1(PictorialBarView2, _super); function PictorialBarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PictorialBarView2.type; return _this; } PictorialBarView2.prototype.render = function(seriesModel, ecModel, api) { var group = this.group; var data = seriesModel.getData(); var oldData = this._data; var cartesian = seriesModel.coordinateSystem; var baseAxis = cartesian.getBaseAxis(); var isHorizontal = baseAxis.isHorizontal(); var coordSysRect = cartesian.master.getRect(); var opt = { ecSize: { width: api.getWidth(), height: api.getHeight() }, seriesModel, coordSys: cartesian, coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]], isHorizontal, valueDim: LAYOUT_ATTRS[+isHorizontal], categoryDim: LAYOUT_ATTRS[1 - +isHorizontal] }; data.diff(oldData).add(function(dataIndex) { if (!data.hasValue(dataIndex)) { return; } var itemModel = getItemModel(data, dataIndex); var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt); var bar = createBar(data, opt, symbolMeta); data.setItemGraphicEl(dataIndex, bar); group.add(bar); updateCommon(bar, opt, symbolMeta); }).update(function(newIndex, oldIndex) { var bar = oldData.getItemGraphicEl(oldIndex); if (!data.hasValue(newIndex)) { group.remove(bar); return; } var itemModel = getItemModel(data, newIndex); var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt); var pictorialShapeStr = getShapeStr(data, symbolMeta); if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) { group.remove(bar); data.setItemGraphicEl(newIndex, null); bar = null; } if (bar) { updateBar(bar, opt, symbolMeta); } else { bar = createBar(data, opt, symbolMeta, true); } data.setItemGraphicEl(newIndex, bar); bar.__pictorialSymbolMeta = symbolMeta; group.add(bar); updateCommon(bar, opt, symbolMeta); }).remove(function(dataIndex) { var bar = oldData.getItemGraphicEl(dataIndex); bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar); }).execute(); this._data = data; return this.group; }; PictorialBarView2.prototype.remove = function(ecModel, api) { var group = this.group; var data = this._data; if (ecModel.get("animation")) { if (data) { data.eachItemGraphicEl(function(bar) { removeBar(data, getECData(bar).dataIndex, ecModel, bar); }); } } else { group.removeAll(); } }; PictorialBarView2.type = "pictorialBar"; return PictorialBarView2; }(ChartView$1); function getSymbolMeta(data, dataIndex, itemModel, opt) { var layout2 = data.getItemLayout(dataIndex); var symbolRepeat = itemModel.get("symbolRepeat"); var symbolClip = itemModel.get("symbolClip"); var symbolPosition = itemModel.get("symbolPosition") || "start"; var symbolRotate = itemModel.get("symbolRotate"); var rotation = (symbolRotate || 0) * Math.PI / 180 || 0; var symbolPatternSize = itemModel.get("symbolPatternSize") || 2; var isAnimationEnabled2 = itemModel.isAnimationEnabled(); var symbolMeta = { dataIndex, layout: layout2, itemModel, symbolType: data.getItemVisual(dataIndex, "symbol") || "circle", style: data.getItemVisual(dataIndex, "style"), symbolClip, symbolRepeat, symbolRepeatDirection: itemModel.get("symbolRepeatDirection"), symbolPatternSize, rotation, animationModel: isAnimationEnabled2 ? itemModel : null, hoverScale: isAnimationEnabled2 && itemModel.get(["emphasis", "scale"]), z2: itemModel.getShallow("z", true) || 0 }; prepareBarLength(itemModel, symbolRepeat, layout2, opt, symbolMeta); prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta); prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta); var symbolSize = symbolMeta.symbolSize; var symbolOffset = normalizeSymbolOffset(itemModel.get("symbolOffset"), symbolSize); prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta); return symbolMeta; } function prepareBarLength(itemModel, symbolRepeat, layout2, opt, outputSymbolMeta) { var valueDim = opt.valueDim; var symbolBoundingData = itemModel.get("symbolBoundingData"); var valueAxis2 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis()); var zeroPx = valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(0)); var pxSignIdx = 1 - +(layout2[valueDim.wh] <= 0); var boundingLength; if (isArray$1(symbolBoundingData)) { var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis2, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis2, symbolBoundingData[1]) - zeroPx]; symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse(); boundingLength = symbolBoundingExtent[pxSignIdx]; } else if (symbolBoundingData != null) { boundingLength = convertToCoordOnAxis(valueAxis2, symbolBoundingData) - zeroPx; } else if (symbolRepeat) { boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx; } else { boundingLength = layout2[valueDim.wh]; } outputSymbolMeta.boundingLength = boundingLength; if (symbolRepeat) { outputSymbolMeta.repeatCutLength = layout2[valueDim.wh]; } outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0; } function convertToCoordOnAxis(axis, value) { return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value))); } function prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) { var valueDim = opt.valueDim; var categoryDim = opt.categoryDim; var categorySize = Math.abs(layout2[categoryDim.wh]); var symbolSize = data.getItemVisual(dataIndex, "symbolSize"); var parsedSymbolSize; if (isArray$1(symbolSize)) { parsedSymbolSize = symbolSize.slice(); } else { if (symbolSize == null) { parsedSymbolSize = ["100%", "100%"]; } else { parsedSymbolSize = [symbolSize, symbolSize]; } } parsedSymbolSize[categoryDim.index] = parsePercent$1(parsedSymbolSize[categoryDim.index], categorySize); parsedSymbolSize[valueDim.index] = parsePercent$1(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength)); outputSymbolMeta.symbolSize = parsedSymbolSize; var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize]; symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign; } function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) { var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; if (valueLineWidth) { pathForLineWidth.attr({ scaleX: symbolScale[0], scaleY: symbolScale[1], rotation }); pathForLineWidth.updateTransform(); valueLineWidth /= pathForLineWidth.getLineScale(); valueLineWidth *= symbolScale[opt.valueDim.index]; } outputSymbolMeta.valueLineWidth = valueLineWidth; } function prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) { var categoryDim = opt.categoryDim; var valueDim = opt.valueDim; var pxSign = outputSymbolMeta.pxSign; var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0); var pathLen = unitLength; if (symbolRepeat) { var absBoundingLength = Math.abs(boundingLength); var symbolMargin = retrieve(itemModel.get("symbolMargin"), "15%") + ""; var hasEndGap = false; if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) { hasEndGap = true; symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1); } var symbolMarginNumeric = parsePercent$1(symbolMargin, symbolSize[valueDim.index]); var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0); var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; var repeatSpecified = isNumeric(symbolRepeat); var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); var mDiff = absBoundingLength - repeatTimes * unitLength; symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1)); uLenWithMargin = unitLength + symbolMarginNumeric * 2; endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; if (!repeatSpecified && symbolRepeat !== "fixed") { repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0; } pathLen = repeatTimes * uLenWithMargin - endFix; outputSymbolMeta.repeatTimes = repeatTimes; outputSymbolMeta.symbolMargin = symbolMarginNumeric; } var sizeFix = pxSign * (pathLen / 2); var pathPosition = outputSymbolMeta.pathPosition = []; pathPosition[categoryDim.index] = layout2[categoryDim.wh] / 2; pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2; if (symbolOffset) { pathPosition[0] += symbolOffset[0]; pathPosition[1] += symbolOffset[1]; } var bundlePosition = outputSymbolMeta.bundlePosition = []; bundlePosition[categoryDim.index] = layout2[categoryDim.xy]; bundlePosition[valueDim.index] = layout2[valueDim.xy]; var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout2); barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout2[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix)); barRectShape[categoryDim.wh] = layout2[categoryDim.wh]; var clipShape = outputSymbolMeta.clipShape = {}; clipShape[categoryDim.xy] = -layout2[categoryDim.xy]; clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]; clipShape[valueDim.xy] = 0; clipShape[valueDim.wh] = layout2[valueDim.wh]; } function createPath(symbolMeta) { var symbolPatternSize = symbolMeta.symbolPatternSize; var path = createSymbol$1(symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize); path.attr({ culling: true }); path.type !== "image" && path.setStyle({ strokeNoScale: true }); return path; } function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) { var bundle = bar.__pictorialBundle; var symbolSize = symbolMeta.symbolSize; var valueLineWidth = symbolMeta.valueLineWidth; var pathPosition = symbolMeta.pathPosition; var valueDim = opt.valueDim; var repeatTimes = symbolMeta.repeatTimes || 0; var index = 0; var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2; eachPath(bar, function(path2) { path2.__pictorialAnimationIndex = index; path2.__pictorialRepeatTimes = repeatTimes; if (index < repeatTimes) { updateAttr(path2, null, makeTarget(index), symbolMeta, isUpdate); } else { updateAttr(path2, null, { scaleX: 0, scaleY: 0 }, symbolMeta, isUpdate, function() { bundle.remove(path2); }); } index++; }); for (; index < repeatTimes; index++) { var path = createPath(symbolMeta); path.__pictorialAnimationIndex = index; path.__pictorialRepeatTimes = repeatTimes; bundle.add(path); var target = makeTarget(index); updateAttr(path, { x: target.x, y: target.y, scaleX: 0, scaleY: 0 }, { scaleX: target.scaleX, scaleY: target.scaleY, rotation: target.rotation }, symbolMeta, isUpdate); } function makeTarget(index2) { var position2 = pathPosition.slice(); var pxSign = symbolMeta.pxSign; var i = index2; if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) { i = repeatTimes - 1 - index2; } position2[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]; return { x: position2[0], y: position2[1], scaleX: symbolMeta.symbolScale[0], scaleY: symbolMeta.symbolScale[1], rotation: symbolMeta.rotation }; } } function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) { var bundle = bar.__pictorialBundle; var mainPath = bar.__pictorialMainPath; if (!mainPath) { mainPath = bar.__pictorialMainPath = createPath(symbolMeta); bundle.add(mainPath); updateAttr(mainPath, { x: symbolMeta.pathPosition[0], y: symbolMeta.pathPosition[1], scaleX: 0, scaleY: 0, rotation: symbolMeta.rotation }, { scaleX: symbolMeta.symbolScale[0], scaleY: symbolMeta.symbolScale[1] }, symbolMeta, isUpdate); } else { updateAttr(mainPath, null, { x: symbolMeta.pathPosition[0], y: symbolMeta.pathPosition[1], scaleX: symbolMeta.symbolScale[0], scaleY: symbolMeta.symbolScale[1], rotation: symbolMeta.rotation }, symbolMeta, isUpdate); } } function createOrUpdateBarRect(bar, symbolMeta, isUpdate) { var rectShape = extend({}, symbolMeta.barRectShape); var barRect = bar.__pictorialBarRect; if (!barRect) { barRect = bar.__pictorialBarRect = new Rect$3({ z2: 2, shape: rectShape, silent: true, style: { stroke: "transparent", fill: "transparent", lineWidth: 0 } }); barRect.disableMorphing = true; bar.add(barRect); } else { updateAttr(barRect, null, { shape: rectShape }, symbolMeta, isUpdate); } } function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) { if (symbolMeta.symbolClip) { var clipPath = bar.__pictorialClipPath; var clipShape = extend({}, symbolMeta.clipShape); var valueDim = opt.valueDim; var animationModel = symbolMeta.animationModel; var dataIndex = symbolMeta.dataIndex; if (clipPath) { updateProps$1(clipPath, { shape: clipShape }, animationModel, dataIndex); } else { clipShape[valueDim.wh] = 0; clipPath = new Rect$3({ shape: clipShape }); bar.__pictorialBundle.setClipPath(clipPath); bar.__pictorialClipPath = clipPath; var target = {}; target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]; graphic$1[isUpdate ? "updateProps" : "initProps"](clipPath, { shape: target }, animationModel, dataIndex); } } } function getItemModel(data, dataIndex) { var itemModel = data.getItemModel(dataIndex); itemModel.getAnimationDelayParams = getAnimationDelayParams; itemModel.isAnimationEnabled = isAnimationEnabled; return itemModel; } function getAnimationDelayParams(path) { return { index: path.__pictorialAnimationIndex, count: path.__pictorialRepeatTimes }; } function isAnimationEnabled() { return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation"); } function createBar(data, opt, symbolMeta, isUpdate) { var bar = new Group$4(); var bundle = new Group$4(); bar.add(bundle); bar.__pictorialBundle = bundle; bundle.x = symbolMeta.bundlePosition[0]; bundle.y = symbolMeta.bundlePosition[1]; if (symbolMeta.symbolRepeat) { createOrUpdateRepeatSymbols(bar, opt, symbolMeta); } else { createOrUpdateSingleSymbol(bar, opt, symbolMeta); } createOrUpdateBarRect(bar, symbolMeta, isUpdate); createOrUpdateClip(bar, opt, symbolMeta, isUpdate); bar.__pictorialShapeStr = getShapeStr(data, symbolMeta); bar.__pictorialSymbolMeta = symbolMeta; return bar; } function updateBar(bar, opt, symbolMeta) { var animationModel = symbolMeta.animationModel; var dataIndex = symbolMeta.dataIndex; var bundle = bar.__pictorialBundle; updateProps$1(bundle, { x: symbolMeta.bundlePosition[0], y: symbolMeta.bundlePosition[1] }, animationModel, dataIndex); if (symbolMeta.symbolRepeat) { createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true); } else { createOrUpdateSingleSymbol(bar, opt, symbolMeta, true); } createOrUpdateBarRect(bar, symbolMeta, true); createOrUpdateClip(bar, opt, symbolMeta, true); } function removeBar(data, dataIndex, animationModel, bar) { var labelRect = bar.__pictorialBarRect; labelRect && labelRect.removeTextContent(); var pathes = []; eachPath(bar, function(path) { pathes.push(path); }); bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); bar.__pictorialClipPath && (animationModel = null); each$g(pathes, function(path) { removeElement(path, { scaleX: 0, scaleY: 0 }, animationModel, dataIndex, function() { bar.parent && bar.parent.remove(bar); }); }); data.setItemGraphicEl(dataIndex, null); } function getShapeStr(data, symbolMeta) { return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":"); } function eachPath(bar, cb, context) { each$g(bar.__pictorialBundle.children(), function(el) { el !== bar.__pictorialBarRect && cb.call(context, el); }); } function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) { immediateAttrs && el.attr(immediateAttrs); if (symbolMeta.symbolClip && !isUpdate) { animationAttrs && el.attr(animationAttrs); } else { animationAttrs && graphic$1[isUpdate ? "updateProps" : "initProps"](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb); } } function updateCommon(bar, opt, symbolMeta) { var dataIndex = symbolMeta.dataIndex; var itemModel = symbolMeta.itemModel; var emphasisModel = itemModel.getModel("emphasis"); var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle(); var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); var cursorStyle = itemModel.getShallow("cursor"); var focus = emphasisModel.get("focus"); var blurScope = emphasisModel.get("blurScope"); var hoverScale = emphasisModel.get("scale"); eachPath(bar, function(path) { if (path instanceof ZRImage$1) { var pathStyle = path.style; path.useStyle(extend({ image: pathStyle.image, x: pathStyle.x, y: pathStyle.y, width: pathStyle.width, height: pathStyle.height }, symbolMeta.style)); } else { path.useStyle(symbolMeta.style); } var emphasisState = path.ensureState("emphasis"); emphasisState.style = emphasisStyle; if (hoverScale) { emphasisState.scaleX = path.scaleX * 1.1; emphasisState.scaleY = path.scaleY * 1.1; } path.ensureState("blur").style = blurStyle; path.ensureState("select").style = selectStyle; cursorStyle && (path.cursor = cursorStyle); path.z2 = symbolMeta.z2; }); var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]; var barRect = bar.__pictorialBarRect; setLabelStyle(barRect, getLabelStatesModels(itemModel), { labelFetcher: opt.seriesModel, labelDataIndex: dataIndex, defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex), inheritColor: symbolMeta.style.fill, defaultOpacity: symbolMeta.style.opacity, defaultOutsidePosition: barPositionOutside }); enableHoverEmphasis(bar, focus, blurScope); } function toIntTimes(times) { var roundedTimes = Math.round(times); return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times); } var PictorialBarView$1 = PictorialBarView; var PictorialBarSeriesModel = function(_super) { __extends$1(PictorialBarSeriesModel2, _super); function PictorialBarSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PictorialBarSeriesModel2.type; _this.hasSymbolVisual = true; _this.defaultSymbol = "roundRect"; return _this; } PictorialBarSeriesModel2.prototype.getInitialData = function(option) { option.stack = null; return _super.prototype.getInitialData.apply(this, arguments); }; PictorialBarSeriesModel2.type = "series.pictorialBar"; PictorialBarSeriesModel2.dependencies = ["grid"]; PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeriesModel$1.defaultOption, { symbol: "circle", symbolSize: null, symbolRotate: null, symbolPosition: null, symbolOffset: null, symbolMargin: null, symbolRepeat: false, symbolRepeatDirection: "end", symbolClip: false, symbolBoundingData: null, symbolPatternSize: 400, barGap: "-100%", progressive: 0, emphasis: { scale: false }, select: { itemStyle: { borderColor: "#212121" } } }); return PictorialBarSeriesModel2; }(BaseBarSeriesModel$1); var PictorialBarSeriesModel$1 = PictorialBarSeriesModel; function install$u(registers) { registers.registerChartView(PictorialBarView$1); registers.registerSeriesModel(PictorialBarSeriesModel$1); registers.registerLayout(curry$1(layout$3, "pictorialBar")); } var ThemeRiverView = function(_super) { __extends$1(ThemeRiverView2, _super); function ThemeRiverView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ThemeRiverView2.type; _this._layers = []; return _this; } ThemeRiverView2.prototype.render = function(seriesModel, ecModel, api) { var data = seriesModel.getData(); var self2 = this; var group = this.group; var layersSeries = seriesModel.getLayerSeries(); var layoutInfo = data.getLayout("layoutInfo"); var rect = layoutInfo.rect; var boundaryGap = layoutInfo.boundaryGap; group.x = 0; group.y = rect.y + boundaryGap[0]; function keyGetter(item) { return item.name; } var dataDiffer = new DataDiffer$1(this._layersSeries || [], layersSeries, keyGetter, keyGetter); var newLayersGroups = []; dataDiffer.add(bind$2(process, this, "add")).update(bind$2(process, this, "update")).remove(bind$2(process, this, "remove")).execute(); function process(status, idx, oldIdx) { var oldLayersGroups = self2._layers; if (status === "remove") { group.remove(oldLayersGroups[idx]); return; } var points0 = []; var points1 = []; var style; var indices = layersSeries[idx].indices; var j = 0; for (; j < indices.length; j++) { var layout2 = data.getItemLayout(indices[j]); var x = layout2.x; var y0 = layout2.y0; var y = layout2.y; points0.push(x, y0); points1.push(x, y0 + y); style = data.getItemVisual(indices[j], "style"); } var polygon; var textLayout = data.getItemLayout(indices[0]); var labelModel = seriesModel.getModel("label"); var margin = labelModel.get("margin"); var emphasisModel = seriesModel.getModel("emphasis"); if (status === "add") { var layerGroup = newLayersGroups[idx] = new Group$4(); polygon = new ECPolygon({ shape: { points: points0, stackedOnPoints: points1, smooth: 0.4, stackedOnSmooth: 0.4, smoothConstraint: false }, z2: 0 }); layerGroup.add(polygon); group.add(layerGroup); if (seriesModel.isAnimationEnabled()) { polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function() { polygon.removeClipPath(); })); } } else { var layerGroup = oldLayersGroups[oldIdx]; polygon = layerGroup.childAt(0); group.add(layerGroup); newLayersGroups[idx] = layerGroup; updateProps$1(polygon, { shape: { points: points0, stackedOnPoints: points1 } }, seriesModel); saveOldStyle(polygon); } setLabelStyle(polygon, getLabelStatesModels(seriesModel), { labelDataIndex: indices[j - 1], defaultText: data.getName(indices[j - 1]), inheritColor: style.fill }, { normal: { verticalAlign: "middle" } }); polygon.setTextConfig({ position: null, local: true }); var labelEl = polygon.getTextContent(); if (labelEl) { labelEl.x = textLayout.x - margin; labelEl.y = textLayout.y0 + textLayout.y / 2; } polygon.useStyle(style); data.setItemGraphicEl(idx, polygon); setStatesStylesFromModel(polygon, seriesModel); enableHoverEmphasis(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope")); } this._layersSeries = layersSeries; this._layers = newLayersGroups; }; ThemeRiverView2.type = "themeRiver"; return ThemeRiverView2; }(ChartView$1); function createGridClipShape(rect, seriesModel, cb) { var rectEl = new Rect$3({ shape: { x: rect.x - 10, y: rect.y - 10, width: 0, height: rect.height + 20 } }); initProps(rectEl, { shape: { x: rect.x - 50, width: rect.width + 100, height: rect.height + 20 } }, seriesModel, cb); return rectEl; } var ThemeRiverView$1 = ThemeRiverView; var DATA_NAME_INDEX = 2; var ThemeRiverSeriesModel = function(_super) { __extends$1(ThemeRiverSeriesModel2, _super); function ThemeRiverSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ThemeRiverSeriesModel2.type; return _this; } ThemeRiverSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); this.legendVisualProvider = new LegendVisualProvider$1(bind$2(this.getData, this), bind$2(this.getRawData, this)); }; ThemeRiverSeriesModel2.prototype.fixData = function(data) { var rawDataLength = data.length; var timeValueKeys = {}; var groupResult = groupData(data, function(item) { if (!timeValueKeys.hasOwnProperty(item[0] + "")) { timeValueKeys[item[0] + ""] = -1; } return item[2]; }); var layerData = []; groupResult.buckets.each(function(items, key2) { layerData.push({ name: key2, dataList: items }); }); var layerNum = layerData.length; for (var k = 0; k < layerNum; ++k) { var name_1 = layerData[k].name; for (var j = 0; j < layerData[k].dataList.length; ++j) { var timeValue = layerData[k].dataList[j][0] + ""; timeValueKeys[timeValue] = k; } for (var timeValue in timeValueKeys) { if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) { timeValueKeys[timeValue] = k; data[rawDataLength] = [timeValue, 0, name_1]; rawDataLength++; } } } return data; }; ThemeRiverSeriesModel2.prototype.getInitialData = function(option, ecModel) { var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; var axisType = singleAxisModel.get("type"); var filterData = filter(option.data, function(dataItem) { return dataItem[2] !== void 0; }); var data = this.fixData(filterData || []); var nameList = []; var nameMap = this.nameMap = createHashMap(); var count2 = 0; for (var i = 0; i < data.length; ++i) { nameList.push(data[i][DATA_NAME_INDEX]); if (!nameMap.get(data[i][DATA_NAME_INDEX])) { nameMap.set(data[i][DATA_NAME_INDEX], count2); count2++; } } var dimensions = prepareSeriesDataSchema(data, { coordDimensions: ["single"], dimensionsDefine: [{ name: "time", type: getDimensionTypeByAxis(axisType) }, { name: "value", type: "float" }, { name: "name", type: "ordinal" }], encodeDefine: { single: 0, value: 1, itemName: 2 } }).dimensions; var list2 = new SeriesData$1(dimensions, this); list2.initData(data); return list2; }; ThemeRiverSeriesModel2.prototype.getLayerSeries = function() { var data = this.getData(); var lenCount = data.count(); var indexArr = []; for (var i = 0; i < lenCount; ++i) { indexArr[i] = i; } var timeDim = data.mapDimension("single"); var groupResult = groupData(indexArr, function(index) { return data.get("name", index); }); var layerSeries = []; groupResult.buckets.each(function(items, key2) { items.sort(function(index1, index2) { return data.get(timeDim, index1) - data.get(timeDim, index2); }); layerSeries.push({ name: key2, indices: items }); }); return layerSeries; }; ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function(dim, value, baseAxis) { if (!isArray$1(dim)) { dim = dim ? [dim] : []; } var data = this.getData(); var layerSeries = this.getLayerSeries(); var indices = []; var layerNum = layerSeries.length; var nestestValue; for (var i = 0; i < layerNum; ++i) { var minDist = Number.MAX_VALUE; var nearestIdx = -1; var pointNum = layerSeries[i].indices.length; for (var j = 0; j < pointNum; ++j) { var theValue = data.get(dim[0], layerSeries[i].indices[j]); var dist2 = Math.abs(theValue - value); if (dist2 <= minDist) { nestestValue = theValue; minDist = dist2; nearestIdx = layerSeries[i].indices[j]; } } indices.push(nearestIdx); } return { dataIndices: indices, nestestValue }; }; ThemeRiverSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var name = data.getName(dataIndex); var value = data.get(data.mapDimension("value"), dataIndex); return createTooltipMarkup("nameValue", { name, value }); }; ThemeRiverSeriesModel2.type = "series.themeRiver"; ThemeRiverSeriesModel2.dependencies = ["singleAxis"]; ThemeRiverSeriesModel2.defaultOption = { zlevel: 0, z: 2, colorBy: "data", coordinateSystem: "singleAxis", boundaryGap: ["10%", "10%"], singleAxisIndex: 0, animationEasing: "linear", label: { margin: 4, show: true, position: "left", fontSize: 11 }, emphasis: { label: { show: true } } }; return ThemeRiverSeriesModel2; }(SeriesModel$1); var ThemeRiverSeriesModel$1 = ThemeRiverSeriesModel; function themeRiverLayout(ecModel, api) { ecModel.eachSeriesByType("themeRiver", function(seriesModel) { var data = seriesModel.getData(); var single = seriesModel.coordinateSystem; var layoutInfo = {}; var rect = single.getRect(); layoutInfo.rect = rect; var boundaryGap = seriesModel.get("boundaryGap"); var axis = single.getAxis(); layoutInfo.boundaryGap = boundaryGap; if (axis.orient === "horizontal") { boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.height); boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.height); var height = rect.height - boundaryGap[0] - boundaryGap[1]; doThemeRiverLayout(data, seriesModel, height); } else { boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.width); boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.width); var width = rect.width - boundaryGap[0] - boundaryGap[1]; doThemeRiverLayout(data, seriesModel, width); } data.setLayout("layoutInfo", layoutInfo); }); } function doThemeRiverLayout(data, seriesModel, height) { if (!data.count()) { return; } var coordSys = seriesModel.coordinateSystem; var layerSeries = seriesModel.getLayerSeries(); var timeDim = data.mapDimension("single"); var valueDim = data.mapDimension("value"); var layerPoints = map$1(layerSeries, function(singleLayer) { return map$1(singleLayer.indices, function(idx) { var pt = coordSys.dataToPoint(data.get(timeDim, idx)); pt[1] = data.get(valueDim, idx); return pt; }); }); var base2 = computeBaseline(layerPoints); var baseLine = base2.y0; var ky = height / base2.max; var n = layerSeries.length; var m2 = layerSeries[0].indices.length; var baseY0; for (var j = 0; j < m2; ++j) { baseY0 = baseLine[j] * ky; data.setItemLayout(layerSeries[0].indices[j], { layerIndex: 0, x: layerPoints[0][j][0], y0: baseY0, y: layerPoints[0][j][1] * ky }); for (var i = 1; i < n; ++i) { baseY0 += layerPoints[i - 1][j][1] * ky; data.setItemLayout(layerSeries[i].indices[j], { layerIndex: i, x: layerPoints[i][j][0], y0: baseY0, y: layerPoints[i][j][1] * ky }); } } } function computeBaseline(data) { var layerNum = data.length; var pointNum = data[0].length; var sums = []; var y0 = []; var max3 = 0; for (var i = 0; i < pointNum; ++i) { var temp = 0; for (var j = 0; j < layerNum; ++j) { temp += data[j][i][1]; } if (temp > max3) { max3 = temp; } sums.push(temp); } for (var k = 0; k < pointNum; ++k) { y0[k] = (max3 - sums[k]) / 2; } max3 = 0; for (var l = 0; l < pointNum; ++l) { var sum2 = sums[l] + y0[l]; if (sum2 > max3) { max3 = sum2; } } return { y0, max: max3 }; } function install$t(registers) { registers.registerChartView(ThemeRiverView$1); registers.registerSeriesModel(ThemeRiverSeriesModel$1); registers.registerLayout(themeRiverLayout); registers.registerProcessor(dataFilter$1("themeRiver")); } var DEFAULT_SECTOR_Z = 2; var DEFAULT_TEXT_Z = 4; var SunburstPiece = function(_super) { __extends$1(SunburstPiece2, _super); function SunburstPiece2(node, seriesModel, ecModel, api) { var _this = _super.call(this) || this; _this.z2 = DEFAULT_SECTOR_Z; _this.textConfig = { inside: true }; getECData(_this).seriesIndex = seriesModel.seriesIndex; var text = new ZRText$1({ z2: DEFAULT_TEXT_Z, silent: node.getModel().get(["label", "silent"]) }); _this.setTextContent(text); _this.updateData(true, node, seriesModel, ecModel, api); return _this; } SunburstPiece2.prototype.updateData = function(firstCreate, node, seriesModel, ecModel, api) { this.node = node; node.piece = this; seriesModel = seriesModel || this._seriesModel; ecModel = ecModel || this._ecModel; var sector = this; getECData(sector).dataIndex = node.dataIndex; var itemModel = node.getModel(); var emphasisModel = itemModel.getModel("emphasis"); var layout2 = node.getLayout(); var sectorShape = extend({}, layout2); sectorShape.label = null; var normalStyle = node.getVisual("style"); normalStyle.lineJoin = "bevel"; var decal = node.getVisual("decal"); if (decal) { normalStyle.decal = createOrUpdatePatternFromDecal(decal, api); } var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true); extend(sectorShape, cornerRadius); each$g(SPECIAL_STATES, function(stateName) { var state = sector.ensureState(stateName); var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]); state.style = itemStyleModel.getItemStyle(); var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape); if (cornerRadius2) { state.shape = cornerRadius2; } }); if (firstCreate) { sector.setShape(sectorShape); sector.shape.r = layout2.r0; updateProps$1(sector, { shape: { r: layout2.r } }, seriesModel, node.dataIndex); } else { updateProps$1(sector, { shape: sectorShape }, seriesModel); saveOldStyle(sector); } sector.useStyle(normalStyle); this._updateLabel(seriesModel); var cursorStyle = itemModel.getShallow("cursor"); cursorStyle && sector.attr("cursor", cursorStyle); this._seriesModel = seriesModel || this._seriesModel; this._ecModel = ecModel || this._ecModel; var focus = emphasisModel.get("focus"); var focusOrIndices = focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : focus; enableHoverEmphasis(this, focusOrIndices, emphasisModel.get("blurScope")); }; SunburstPiece2.prototype._updateLabel = function(seriesModel) { var _this = this; var itemModel = this.node.getModel(); var normalLabelModel = itemModel.getModel("label"); var layout2 = this.node.getLayout(); var angle = layout2.endAngle - layout2.startAngle; var midAngle = (layout2.startAngle + layout2.endAngle) / 2; var dx = Math.cos(midAngle); var dy = Math.sin(midAngle); var sector = this; var label = sector.getTextContent(); var dataIndex = this.node.dataIndex; var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI; var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle); label.ignore = !isNormalShown; each$g(DISPLAY_STATES, function(stateName) { var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]); var isNormal = stateName === "normal"; var state = isNormal ? label : label.ensureState(stateName); var text = seriesModel.getFormattedLabel(dataIndex, stateName); if (isNormal) { text = text || _this.node.name; } state.style = createTextStyle$1(labelStateModel, {}, null, stateName !== "normal", true); if (text) { state.style.text = text; } var isShown = labelStateModel.get("show"); if (isShown != null && !isNormal) { state.ignore = !isShown; } var labelPosition = getLabelAttr(labelStateModel, "position"); var sectorState = isNormal ? sector : sector.states[stateName]; var labelColor = sectorState.style.fill; sectorState.textConfig = { outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null, inside: labelPosition !== "outside" }; var r; var labelPadding = getLabelAttr(labelStateModel, "distance") || 0; var textAlign = getLabelAttr(labelStateModel, "align"); if (labelPosition === "outside") { r = layout2.r + labelPadding; textAlign = midAngle > Math.PI / 2 ? "right" : "left"; } else { if (!textAlign || textAlign === "center") { r = (layout2.r + layout2.r0) / 2; textAlign = "center"; } else if (textAlign === "left") { r = layout2.r0 + labelPadding; if (midAngle > Math.PI / 2) { textAlign = "right"; } } else if (textAlign === "right") { r = layout2.r - labelPadding; if (midAngle > Math.PI / 2) { textAlign = "left"; } } } state.style.align = textAlign; state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle"; state.x = r * dx + layout2.cx; state.y = r * dy + layout2.cy; var rotateType = getLabelAttr(labelStateModel, "rotate"); var rotate2 = 0; if (rotateType === "radial") { rotate2 = -midAngle; if (rotate2 < -Math.PI / 2) { rotate2 += Math.PI; } } else if (rotateType === "tangential") { rotate2 = Math.PI / 2 - midAngle; if (rotate2 > Math.PI / 2) { rotate2 -= Math.PI; } else if (rotate2 < -Math.PI / 2) { rotate2 += Math.PI; } } else if (typeof rotateType === "number") { rotate2 = rotateType * Math.PI / 180; } state.rotation = rotate2; }); function getLabelAttr(model, name) { var stateAttr = model.get(name); if (stateAttr == null) { return normalLabelModel.get(name); } return stateAttr; } label.dirtyStyle(); }; return SunburstPiece2; }(Sector$1); var SunburstPiece$1 = SunburstPiece; var ROOT_TO_NODE_ACTION = "sunburstRootToNode"; var HIGHLIGHT_ACTION = "sunburstHighlight"; var UNHIGHLIGHT_ACTION = "sunburstUnhighlight"; function installSunburstAction(registers) { registers.registerAction({ type: ROOT_TO_NODE_ACTION, update: "updateView" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "series", subType: "sunburst", query: payload }, handleRootToNode); function handleRootToNode(model, index) { var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model); if (targetInfo) { var originViewRoot = model.getViewRoot(); if (originViewRoot) { payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; } model.resetViewRoot(targetInfo.node); } } }); registers.registerAction({ type: HIGHLIGHT_ACTION, update: "none" }, function(payload, ecModel, api) { payload = extend({}, payload); ecModel.eachComponent({ mainType: "series", subType: "sunburst", query: payload }, handleHighlight); function handleHighlight(model) { var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model); if (targetInfo) { payload.dataIndex = targetInfo.node.dataIndex; } } api.dispatchAction(extend(payload, { type: "highlight" })); }); registers.registerAction({ type: UNHIGHLIGHT_ACTION, update: "updateView" }, function(payload, ecModel, api) { payload = extend({}, payload); api.dispatchAction(extend(payload, { type: "downplay" })); }); } var SunburstView = function(_super) { __extends$1(SunburstView2, _super); function SunburstView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SunburstView2.type; return _this; } SunburstView2.prototype.render = function(seriesModel, ecModel, api, payload) { var self2 = this; this.seriesModel = seriesModel; this.api = api; this.ecModel = ecModel; var data = seriesModel.getData(); var virtualRoot = data.tree.root; var newRoot = seriesModel.getViewRoot(); var group = this.group; var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData"); var newChildren = []; newRoot.eachNode(function(node) { newChildren.push(node); }); var oldChildren = this._oldChildren || []; dualTravel(newChildren, oldChildren); renderRollUp(virtualRoot, newRoot); this._initEvents(); this._oldChildren = newChildren; function dualTravel(newChildren2, oldChildren2) { if (newChildren2.length === 0 && oldChildren2.length === 0) { return; } new DataDiffer$1(oldChildren2, newChildren2, getKey2, getKey2).add(processNode).update(processNode).remove(curry$1(processNode, null)).execute(); function getKey2(node) { return node.getId(); } function processNode(newIdx, oldIdx) { var newNode = newIdx == null ? null : newChildren2[newIdx]; var oldNode = oldIdx == null ? null : oldChildren2[oldIdx]; doRenderNode(newNode, oldNode); } } function doRenderNode(newNode, oldNode) { if (!renderLabelForZeroData && newNode && !newNode.getValue()) { newNode = null; } if (newNode !== virtualRoot && oldNode !== virtualRoot) { if (oldNode && oldNode.piece) { if (newNode) { oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api); data.setItemGraphicEl(newNode.dataIndex, oldNode.piece); } else { removeNode2(oldNode); } } else if (newNode) { var piece = new SunburstPiece$1(newNode, seriesModel, ecModel, api); group.add(piece); data.setItemGraphicEl(newNode.dataIndex, piece); } } } function removeNode2(node) { if (!node) { return; } if (node.piece) { group.remove(node.piece); node.piece = null; } } function renderRollUp(virtualRoot2, viewRoot) { if (viewRoot.depth > 0) { if (self2.virtualPiece) { self2.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api); } else { self2.virtualPiece = new SunburstPiece$1(virtualRoot2, seriesModel, ecModel, api); group.add(self2.virtualPiece); } viewRoot.piece.off("click"); self2.virtualPiece.on("click", function(e2) { self2._rootToNode(viewRoot.parentNode); }); } else if (self2.virtualPiece) { group.remove(self2.virtualPiece); self2.virtualPiece = null; } } }; SunburstView2.prototype._initEvents = function() { var _this = this; this.group.off("click"); this.group.on("click", function(e2) { var targetFound = false; var viewRoot = _this.seriesModel.getViewRoot(); viewRoot.eachNode(function(node) { if (!targetFound && node.piece && node.piece === e2.target) { var nodeClick = node.getModel().get("nodeClick"); if (nodeClick === "rootToNode") { _this._rootToNode(node); } else if (nodeClick === "link") { var itemModel = node.getModel(); var link2 = itemModel.get("link"); if (link2) { var linkTarget = itemModel.get("target", true) || "_blank"; windowOpen(link2, linkTarget); } } targetFound = true; } }); }); }; SunburstView2.prototype._rootToNode = function(node) { if (node !== this.seriesModel.getViewRoot()) { this.api.dispatchAction({ type: ROOT_TO_NODE_ACTION, from: this.uid, seriesId: this.seriesModel.id, targetNode: node }); } }; SunburstView2.prototype.containPoint = function(point, seriesModel) { var treeRoot = seriesModel.getData(); var itemLayout = treeRoot.getItemLayout(0); if (itemLayout) { var dx = point[0] - itemLayout.cx; var dy = point[1] - itemLayout.cy; var radius = Math.sqrt(dx * dx + dy * dy); return radius <= itemLayout.r && radius >= itemLayout.r0; } }; SunburstView2.type = "sunburst"; return SunburstView2; }(ChartView$1); var SunburstView$1 = SunburstView; var SunburstSeriesModel = function(_super) { __extends$1(SunburstSeriesModel2, _super); function SunburstSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SunburstSeriesModel2.type; _this.ignoreStyleOnData = true; return _this; } SunburstSeriesModel2.prototype.getInitialData = function(option, ecModel) { var root = { name: option.name, children: option.data }; completeTreeValue(root); var levelModels = this._levelModels = map$1(option.levels || [], function(levelDefine) { return new Model$1(levelDefine, this, ecModel); }, this); var tree = Tree$1.createTree(root, this, beforeLink); function beforeLink(nodeData) { nodeData.wrapMethod("getItemModel", function(model, idx) { var node = tree.getNodeByDataIndex(idx); var levelModel = levelModels[node.depth]; levelModel && (model.parentModel = levelModel); return model; }); } return tree.data; }; SunburstSeriesModel2.prototype.optionUpdated = function() { this.resetViewRoot(); }; SunburstSeriesModel2.prototype.getDataParams = function(dataIndex) { var params = _super.prototype.getDataParams.apply(this, arguments); var node = this.getData().tree.getNodeByDataIndex(dataIndex); params.treePathInfo = wrapTreePathInfo(node, this); return params; }; SunburstSeriesModel2.prototype.getLevelModel = function(node) { return this._levelModels && this._levelModels[node.depth]; }; SunburstSeriesModel2.prototype.getViewRoot = function() { return this._viewRoot; }; SunburstSeriesModel2.prototype.resetViewRoot = function(viewRoot) { viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; var root = this.getRawData().tree.root; if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { this._viewRoot = root; } }; SunburstSeriesModel2.prototype.enableAriaDecal = function() { enableAriaDecalForTree(this); }; SunburstSeriesModel2.type = "series.sunburst"; SunburstSeriesModel2.defaultOption = { zlevel: 0, z: 2, center: ["50%", "50%"], radius: [0, "75%"], clockwise: true, startAngle: 90, minAngle: 0, stillShowZeroSum: true, nodeClick: "rootToNode", renderLabelForZeroData: false, label: { rotate: "radial", show: true, opacity: 1, align: "center", position: "inside", distance: 5, silent: true }, itemStyle: { borderWidth: 1, borderColor: "white", borderType: "solid", shadowBlur: 0, shadowColor: "rgba(0, 0, 0, 0.2)", shadowOffsetX: 0, shadowOffsetY: 0, opacity: 1 }, emphasis: { focus: "descendant" }, blur: { itemStyle: { opacity: 0.2 }, label: { opacity: 0.1 } }, animationType: "expansion", animationDuration: 1e3, animationDurationUpdate: 500, data: [], sort: "desc" }; return SunburstSeriesModel2; }(SeriesModel$1); function completeTreeValue(dataNode) { var sum2 = 0; each$g(dataNode.children, function(child) { completeTreeValue(child); var childValue = child.value; isArray$1(childValue) && (childValue = childValue[0]); sum2 += childValue; }); var thisValue = dataNode.value; if (isArray$1(thisValue)) { thisValue = thisValue[0]; } if (thisValue == null || isNaN(thisValue)) { thisValue = sum2; } if (thisValue < 0) { thisValue = 0; } isArray$1(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; } var SunburstSeriesModel$1 = SunburstSeriesModel; var RADIAN = Math.PI / 180; function sunburstLayout(seriesType2, ecModel, api) { ecModel.eachSeriesByType(seriesType2, function(seriesModel) { var center2 = seriesModel.get("center"); var radius = seriesModel.get("radius"); if (!isArray$1(radius)) { radius = [0, radius]; } if (!isArray$1(center2)) { center2 = [center2, center2]; } var width = api.getWidth(); var height = api.getHeight(); var size = Math.min(width, height); var cx = parsePercent$1(center2[0], width); var cy = parsePercent$1(center2[1], height); var r0 = parsePercent$1(radius[0], size / 2); var r = parsePercent$1(radius[1], size / 2); var startAngle = -seriesModel.get("startAngle") * RADIAN; var minAngle = seriesModel.get("minAngle") * RADIAN; var virtualRoot = seriesModel.getData().tree.root; var treeRoot = seriesModel.getViewRoot(); var rootDepth = treeRoot.depth; var sort2 = seriesModel.get("sort"); if (sort2 != null) { initChildren(treeRoot, sort2); } var validDataCount = 0; each$g(treeRoot.children, function(child) { !isNaN(child.getValue()) && validDataCount++; }); var sum2 = treeRoot.getValue(); var unitRadian = Math.PI / (sum2 || validDataCount) * 2; var renderRollupNode = treeRoot.depth > 0; var levels = treeRoot.height - (renderRollupNode ? -1 : 1); var rPerLevel = (r - r0) / (levels || 1); var clockwise = seriesModel.get("clockwise"); var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); var dir3 = clockwise ? 1 : -1; var renderNode2 = function(node, startAngle2) { if (!node) { return; } var endAngle = startAngle2; if (node !== virtualRoot) { var value = node.getValue(); var angle2 = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; if (angle2 < minAngle) { angle2 = minAngle; } endAngle = startAngle2 + dir3 * angle2; var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1); var rStart2 = r0 + rPerLevel * depth; var rEnd2 = r0 + rPerLevel * (depth + 1); var levelModel = seriesModel.getLevelModel(node); if (levelModel) { var r0_1 = levelModel.get("r0", true); var r_1 = levelModel.get("r", true); var radius_1 = levelModel.get("radius", true); if (radius_1 != null) { r0_1 = radius_1[0]; r_1 = radius_1[1]; } r0_1 != null && (rStart2 = parsePercent$1(r0_1, size / 2)); r_1 != null && (rEnd2 = parsePercent$1(r_1, size / 2)); } node.setLayout({ angle: angle2, startAngle: startAngle2, endAngle, clockwise, cx, cy, r0: rStart2, r: rEnd2 }); } if (node.children && node.children.length) { var siblingAngle_1 = 0; each$g(node.children, function(node2) { siblingAngle_1 += renderNode2(node2, startAngle2 + siblingAngle_1); }); } return endAngle - startAngle2; }; if (renderRollupNode) { var rStart = r0; var rEnd = r0 + rPerLevel; var angle = Math.PI * 2; virtualRoot.setLayout({ angle, startAngle, endAngle: startAngle + angle, clockwise, cx, cy, r0: rStart, r: rEnd }); } renderNode2(treeRoot, startAngle); }); } function initChildren(node, sortOrder) { var children = node.children || []; node.children = sort(children, sortOrder); if (children.length) { each$g(node.children, function(child) { initChildren(child, sortOrder); }); } } function sort(children, sortOrder) { if (typeof sortOrder === "function") { var sortTargets = map$1(children, function(child, idx) { var value = child.getValue(); return { params: { depth: child.depth, height: child.height, dataIndex: child.dataIndex, getValue: function() { return value; } }, index: idx }; }); sortTargets.sort(function(a, b) { return sortOrder(a.params, b.params); }); return map$1(sortTargets, function(target) { return children[target.index]; }); } else { var isAsc_1 = sortOrder === "asc"; return children.sort(function(a, b) { var diff2 = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1); return diff2 === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff2; }); } } function sunburstVisual(ecModel) { var paletteScope = {}; function pickColor(node, seriesModel, treeHeight) { var current = node; while (current && current.depth > 1) { current = current.parentNode; } var color2 = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope); if (node.depth > 1 && typeof color2 === "string") { color2 = lift(color2, (node.depth - 1) / (treeHeight - 1) * 0.5); } return color2; } ecModel.eachSeriesByType("sunburst", function(seriesModel) { var data = seriesModel.getData(); var tree = data.tree; tree.eachNode(function(node) { var model = node.getModel(); var style = model.getModel("itemStyle").getItemStyle(); if (!style.fill) { style.fill = pickColor(node, seriesModel, tree.root.height); } var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); extend(existsStyle, style); }); }); } function install$s(registers) { registers.registerChartView(SunburstView$1); registers.registerSeriesModel(SunburstSeriesModel$1); registers.registerLayout(curry$1(sunburstLayout, "sunburst")); registers.registerProcessor(curry$1(dataFilter$1, "sunburst")); registers.registerVisual(sunburstVisual); installSunburstAction(registers); } var TRANSFORM_PROPS = { x: 1, y: 1, scaleX: 1, scaleY: 1, originX: 1, originY: 1, rotation: 1 }; var STYLE_VISUAL_TYPE = { color: "fill", borderColor: "stroke" }; var NON_STYLE_VISUAL_PROPS = { symbol: 1, symbolSize: 1, symbolKeepAspect: 1, legendIcon: 1, visualMeta: 1, liftZ: 1, decal: 1 }; var customInnerStore = makeInner(); var CustomSeriesModel = function(_super) { __extends$1(CustomSeriesModel2, _super); function CustomSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CustomSeriesModel2.type; return _this; } CustomSeriesModel2.prototype.optionUpdated = function() { this.currentZLevel = this.get("zlevel", true); this.currentZ = this.get("z", true); }; CustomSeriesModel2.prototype.getInitialData = function(option, ecModel) { return createSeriesData(null, this); }; CustomSeriesModel2.prototype.getDataParams = function(dataIndex, dataType, el) { var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); el && (params.info = customInnerStore(el).info); return params; }; CustomSeriesModel2.type = "series.custom"; CustomSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; CustomSeriesModel2.defaultOption = { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, legendHoverLink: true, clip: false }; return CustomSeriesModel2; }(SeriesModel$1); var CustomSeriesModel$1 = CustomSeriesModel; function dataToCoordSize$3(dataSize, dataItem) { dataItem = dataItem || [0, 0]; return map$1(["x", "y"], function(dim, dimIdx) { var axis = this.getAxis(dim); var val = dataItem[dimIdx]; var halfSize = dataSize[dimIdx] / 2; return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); }, this); } function cartesianPrepareCustom(coordSys) { var rect = coordSys.master.getRect(); return { coordSys: { type: "cartesian2d", x: rect.x, y: rect.y, width: rect.width, height: rect.height }, api: { coord: function(data) { return coordSys.dataToPoint(data); }, size: bind$2(dataToCoordSize$3, coordSys) } }; } function dataToCoordSize$2(dataSize, dataItem) { dataItem = dataItem || [0, 0]; return map$1([0, 1], function(dimIdx) { var val = dataItem[dimIdx]; var halfSize = dataSize[dimIdx] / 2; var p1 = []; var p2 = []; p1[dimIdx] = val - halfSize; p2[dimIdx] = val + halfSize; p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]; return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]); }, this); } function geoPrepareCustom(coordSys) { var rect = coordSys.getBoundingRect(); return { coordSys: { type: "geo", x: rect.x, y: rect.y, width: rect.width, height: rect.height, zoom: coordSys.getZoom() }, api: { coord: function(data) { return coordSys.dataToPoint(data); }, size: bind$2(dataToCoordSize$2, coordSys) } }; } function dataToCoordSize$1(dataSize, dataItem) { var axis = this.getAxis(); var val = dataItem instanceof Array ? dataItem[0] : dataItem; var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2; return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); } function singlePrepareCustom(coordSys) { var rect = coordSys.getRect(); return { coordSys: { type: "singleAxis", x: rect.x, y: rect.y, width: rect.width, height: rect.height }, api: { coord: function(val) { return coordSys.dataToPoint(val); }, size: bind$2(dataToCoordSize$1, coordSys) } }; } function dataToCoordSize(dataSize, dataItem) { dataItem = dataItem || [0, 0]; return map$1(["Radius", "Angle"], function(dim, dimIdx) { var getterName = "get" + dim + "Axis"; var axis = this[getterName](); var val = dataItem[dimIdx]; var halfSize = dataSize[dimIdx] / 2; var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); if (dim === "Angle") { result = result * Math.PI / 180; } return result; }, this); } function polarPrepareCustom(coordSys) { var radiusAxis = coordSys.getRadiusAxis(); var angleAxis = coordSys.getAngleAxis(); var radius = radiusAxis.getExtent(); radius[0] > radius[1] && radius.reverse(); return { coordSys: { type: "polar", cx: coordSys.cx, cy: coordSys.cy, r: radius[1], r0: radius[0] }, api: { coord: function(data) { var radius2 = radiusAxis.dataToRadius(data[0]); var angle = angleAxis.dataToAngle(data[1]); var coord = coordSys.coordToPoint([radius2, angle]); coord.push(radius2, angle * Math.PI / 180); return coord; }, size: bind$2(dataToCoordSize, coordSys) } }; } function calendarPrepareCustom(coordSys) { var rect = coordSys.getRect(); var rangeInfo = coordSys.getRangeInfo(); return { coordSys: { type: "calendar", x: rect.x, y: rect.y, width: rect.width, height: rect.height, cellWidth: coordSys.getCellWidth(), cellHeight: coordSys.getCellHeight(), rangeInfo: { start: rangeInfo.start, end: rangeInfo.end, weeks: rangeInfo.weeks, dayCount: rangeInfo.allDay } }, api: { coord: function(data, clamp2) { return coordSys.dataToPoint(data, clamp2); } } }; } function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) { return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== "tspan" && (elType === "text" || hasOwn(style, "text"))); } function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) { var srcStyle = hostStyle; var textConfig; var textContent; var textContentStyle; if (elType === "text") { textContentStyle = srcStyle; } else { textContentStyle = {}; hasOwn(srcStyle, "text") && (textContentStyle.text = srcStyle.text); hasOwn(srcStyle, "rich") && (textContentStyle.rich = srcStyle.rich); hasOwn(srcStyle, "textFill") && (textContentStyle.fill = srcStyle.textFill); hasOwn(srcStyle, "textStroke") && (textContentStyle.stroke = srcStyle.textStroke); hasOwn(srcStyle, "fontFamily") && (textContentStyle.fontFamily = srcStyle.fontFamily); hasOwn(srcStyle, "fontSize") && (textContentStyle.fontSize = srcStyle.fontSize); hasOwn(srcStyle, "fontStyle") && (textContentStyle.fontStyle = srcStyle.fontStyle); hasOwn(srcStyle, "fontWeight") && (textContentStyle.fontWeight = srcStyle.fontWeight); textContent = { type: "text", style: textContentStyle, silent: true }; textConfig = {}; var hasOwnPos = hasOwn(srcStyle, "textPosition"); if (isNormal) { textConfig.position = hasOwnPos ? srcStyle.textPosition : "inside"; } else { hasOwnPos && (textConfig.position = srcStyle.textPosition); } hasOwn(srcStyle, "textPosition") && (textConfig.position = srcStyle.textPosition); hasOwn(srcStyle, "textOffset") && (textConfig.offset = srcStyle.textOffset); hasOwn(srcStyle, "textRotation") && (textConfig.rotation = srcStyle.textRotation); hasOwn(srcStyle, "textDistance") && (textConfig.distance = srcStyle.textDistance); } convertEC4CompatibleRichItem(textContentStyle, hostStyle); each$g(textContentStyle.rich, function(richItem) { convertEC4CompatibleRichItem(richItem, richItem); }); return { textConfig, textContent }; } function convertEC4CompatibleRichItem(out2, richItem) { if (!richItem) { return; } richItem.font = richItem.textFont || richItem.font; hasOwn(richItem, "textStrokeWidth") && (out2.lineWidth = richItem.textStrokeWidth); hasOwn(richItem, "textAlign") && (out2.align = richItem.textAlign); hasOwn(richItem, "textVerticalAlign") && (out2.verticalAlign = richItem.textVerticalAlign); hasOwn(richItem, "textLineHeight") && (out2.lineHeight = richItem.textLineHeight); hasOwn(richItem, "textWidth") && (out2.width = richItem.textWidth); hasOwn(richItem, "textHeight") && (out2.height = richItem.textHeight); hasOwn(richItem, "textBackgroundColor") && (out2.backgroundColor = richItem.textBackgroundColor); hasOwn(richItem, "textPadding") && (out2.padding = richItem.textPadding); hasOwn(richItem, "textBorderColor") && (out2.borderColor = richItem.textBorderColor); hasOwn(richItem, "textBorderWidth") && (out2.borderWidth = richItem.textBorderWidth); hasOwn(richItem, "textBorderRadius") && (out2.borderRadius = richItem.textBorderRadius); hasOwn(richItem, "textBoxShadowColor") && (out2.shadowColor = richItem.textBoxShadowColor); hasOwn(richItem, "textBoxShadowBlur") && (out2.shadowBlur = richItem.textBoxShadowBlur); hasOwn(richItem, "textBoxShadowOffsetX") && (out2.shadowOffsetX = richItem.textBoxShadowOffsetX); hasOwn(richItem, "textBoxShadowOffsetY") && (out2.shadowOffsetY = richItem.textBoxShadowOffsetY); } function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) { var out2 = itemStl; out2.textPosition = out2.textPosition || txCfg.position || "inside"; txCfg.offset != null && (out2.textOffset = txCfg.offset); txCfg.rotation != null && (out2.textRotation = txCfg.rotation); txCfg.distance != null && (out2.textDistance = txCfg.distance); var isInside = out2.textPosition.indexOf("inside") >= 0; var hostFill = itemStl.fill || "#000"; convertToEC4RichItem(out2, txStl); var textFillNotSet = out2.textFill == null; if (isInside) { if (textFillNotSet) { out2.textFill = txCfg.insideFill || "#fff"; !out2.textStroke && txCfg.insideStroke && (out2.textStroke = txCfg.insideStroke); !out2.textStroke && (out2.textStroke = hostFill); out2.textStrokeWidth == null && (out2.textStrokeWidth = 2); } } else { if (textFillNotSet) { out2.textFill = itemStl.fill || txCfg.outsideFill || "#000"; } !out2.textStroke && txCfg.outsideStroke && (out2.textStroke = txCfg.outsideStroke); } out2.text = txStl.text; out2.rich = txStl.rich; each$g(txStl.rich, function(richItem) { convertToEC4RichItem(richItem, richItem); }); return out2; } function convertToEC4RichItem(out2, richItem) { if (!richItem) { return; } hasOwn(richItem, "fill") && (out2.textFill = richItem.fill); hasOwn(richItem, "stroke") && (out2.textStroke = richItem.fill); hasOwn(richItem, "lineWidth") && (out2.textStrokeWidth = richItem.lineWidth); hasOwn(richItem, "font") && (out2.font = richItem.font); hasOwn(richItem, "fontStyle") && (out2.fontStyle = richItem.fontStyle); hasOwn(richItem, "fontWeight") && (out2.fontWeight = richItem.fontWeight); hasOwn(richItem, "fontSize") && (out2.fontSize = richItem.fontSize); hasOwn(richItem, "fontFamily") && (out2.fontFamily = richItem.fontFamily); hasOwn(richItem, "align") && (out2.textAlign = richItem.align); hasOwn(richItem, "verticalAlign") && (out2.textVerticalAlign = richItem.verticalAlign); hasOwn(richItem, "lineHeight") && (out2.textLineHeight = richItem.lineHeight); hasOwn(richItem, "width") && (out2.textWidth = richItem.width); hasOwn(richItem, "height") && (out2.textHeight = richItem.height); hasOwn(richItem, "backgroundColor") && (out2.textBackgroundColor = richItem.backgroundColor); hasOwn(richItem, "padding") && (out2.textPadding = richItem.padding); hasOwn(richItem, "borderColor") && (out2.textBorderColor = richItem.borderColor); hasOwn(richItem, "borderWidth") && (out2.textBorderWidth = richItem.borderWidth); hasOwn(richItem, "borderRadius") && (out2.textBorderRadius = richItem.borderRadius); hasOwn(richItem, "shadowColor") && (out2.textBoxShadowColor = richItem.shadowColor); hasOwn(richItem, "shadowBlur") && (out2.textBoxShadowBlur = richItem.shadowBlur); hasOwn(richItem, "shadowOffsetX") && (out2.textBoxShadowOffsetX = richItem.shadowOffsetX); hasOwn(richItem, "shadowOffsetY") && (out2.textBoxShadowOffsetY = richItem.shadowOffsetY); hasOwn(richItem, "textShadowColor") && (out2.textShadowColor = richItem.textShadowColor); hasOwn(richItem, "textShadowBlur") && (out2.textShadowBlur = richItem.textShadowBlur); hasOwn(richItem, "textShadowOffsetX") && (out2.textShadowOffsetX = richItem.textShadowOffsetX); hasOwn(richItem, "textShadowOffsetY") && (out2.textShadowOffsetY = richItem.textShadowOffsetY); } var LEGACY_TRANSFORM_PROPS = { position: ["x", "y"], scale: ["scaleX", "scaleY"], origin: ["originX", "originY"] }; function setLegacyTransformProp(elOption, targetProps, legacyName) { var legacyArr = elOption[legacyName]; var xyName = LEGACY_TRANSFORM_PROPS[legacyName]; if (legacyArr) { targetProps[xyName[0]] = legacyArr[0]; targetProps[xyName[1]] = legacyArr[1]; } } function setTransformProp(elOption, allProps, name) { if (elOption[name] != null) { allProps[name] = elOption[name]; } } function setTransformPropToTransitionFrom(transitionFrom, name, fromTransformable) { if (fromTransformable) { transitionFrom[name] = fromTransformable[name]; } } function prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps, isInit) { var attrOpt = elOption[mainAttr]; if (!attrOpt) { return; } var elPropsInAttr = fromEl[mainAttr]; var transFromPropsInAttr; var enterFrom = attrOpt.enterFrom; if (isInit && enterFrom) { !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); var enterFromKeys = keys(enterFrom); for (var i = 0; i < enterFromKeys.length; i++) { var key2 = enterFromKeys[i]; transFromPropsInAttr[key2] = enterFrom[key2]; } } if (!isInit && elPropsInAttr) { if (attrOpt.transition) { !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); var transitionKeys = normalizeToArray(attrOpt.transition); for (var i = 0; i < transitionKeys.length; i++) { var key2 = transitionKeys[i]; var elVal = elPropsInAttr[key2]; transFromPropsInAttr[key2] = elVal; } } else if (indexOf(elOption.transition, mainAttr) >= 0) { !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); var elPropsInAttrKeys = keys(elPropsInAttr); for (var i = 0; i < elPropsInAttrKeys.length; i++) { var key2 = elPropsInAttrKeys[i]; var elVal = elPropsInAttr[key2]; if (isNonStyleTransitionEnabled(attrOpt[key2], elVal)) { transFromPropsInAttr[key2] = elVal; } } } } var leaveTo = attrOpt.leaveTo; if (leaveTo) { var leaveToProps = getOrCreateLeaveToPropsFromEl(fromEl); var leaveToPropsInAttr = leaveToProps[mainAttr] || (leaveToProps[mainAttr] = {}); var leaveToKeys = keys(leaveTo); for (var i = 0; i < leaveToKeys.length; i++) { var key2 = leaveToKeys[i]; leaveToPropsInAttr[key2] = leaveTo[key2]; } } } function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) { var attrOpt = elOption[mainAttr]; if (!attrOpt) { return; } var allPropsInAttr = allProps[mainAttr] = {}; var keysInAttr = keys(attrOpt); for (var i = 0; i < keysInAttr.length; i++) { var key2 = keysInAttr[i]; allPropsInAttr[key2] = cloneValue(attrOpt[key2]); } } function prepareTransformTransitionFrom(el, elOption, transFromProps, isInit) { var enterFrom = elOption.enterFrom; if (isInit && enterFrom) { var enterFromKeys = keys(enterFrom); for (var i = 0; i < enterFromKeys.length; i++) { var key2 = enterFromKeys[i]; transFromProps[key2] = enterFrom[key2]; } } if (!isInit) { if (elOption.transition) { var transitionKeys = normalizeToArray(elOption.transition); for (var i = 0; i < transitionKeys.length; i++) { var key2 = transitionKeys[i]; if (key2 === "style" || key2 === "shape" || key2 === "extra") { continue; } var elVal = el[key2]; transFromProps[key2] = elVal; } } else { setTransformPropToTransitionFrom(transFromProps, "x", el); setTransformPropToTransitionFrom(transFromProps, "y", el); } } var leaveTo = elOption.leaveTo; if (leaveTo) { var leaveToProps = getOrCreateLeaveToPropsFromEl(el); var leaveToKeys = keys(leaveTo); for (var i = 0; i < leaveToKeys.length; i++) { var key2 = leaveToKeys[i]; leaveToProps[key2] = leaveTo[key2]; } } } function prepareTransformAllPropsFinal(el, elOption, allProps) { setLegacyTransformProp(elOption, allProps, "position"); setLegacyTransformProp(elOption, allProps, "scale"); setLegacyTransformProp(elOption, allProps, "origin"); setTransformProp(elOption, allProps, "x"); setTransformProp(elOption, allProps, "y"); setTransformProp(elOption, allProps, "scaleX"); setTransformProp(elOption, allProps, "scaleY"); setTransformProp(elOption, allProps, "originX"); setTransformProp(elOption, allProps, "originY"); setTransformProp(elOption, allProps, "rotation"); } function prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps, isInit) { if (!styleOpt) { return; } var fromElStyle = fromEl.style; var transFromStyleProps; var enterFrom = styleOpt.enterFrom; if (isInit && enterFrom) { var enterFromKeys = keys(enterFrom); !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); for (var i = 0; i < enterFromKeys.length; i++) { var key2 = enterFromKeys[i]; transFromStyleProps[key2] = enterFrom[key2]; } } if (!isInit && fromElStyle) { if (styleOpt.transition) { var transitionKeys = normalizeToArray(styleOpt.transition); !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); for (var i = 0; i < transitionKeys.length; i++) { var key2 = transitionKeys[i]; var elVal = fromElStyle[key2]; transFromStyleProps[key2] = elVal; } } else if (fromEl.getAnimationStyleProps && indexOf(elOption.transition, "style") >= 0) { var animationProps = fromEl.getAnimationStyleProps(); var animationStyleProps = animationProps ? animationProps.style : null; if (animationStyleProps) { !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); var styleKeys = keys(styleOpt); for (var i = 0; i < styleKeys.length; i++) { var key2 = styleKeys[i]; if (animationStyleProps[key2]) { var elVal = fromElStyle[key2]; transFromStyleProps[key2] = elVal; } } } } } var leaveTo = styleOpt.leaveTo; if (leaveTo) { var leaveToKeys = keys(leaveTo); var leaveToProps = getOrCreateLeaveToPropsFromEl(fromEl); var leaveToStyleProps = leaveToProps.style || (leaveToProps.style = {}); for (var i = 0; i < leaveToKeys.length; i++) { var key2 = leaveToKeys[i]; leaveToStyleProps[key2] = leaveTo[key2]; } } } function isNonStyleTransitionEnabled(optVal, elVal) { return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal; } function getOrCreateLeaveToPropsFromEl(el) { var innerEl = customInnerStore(el); return innerEl.leaveToProps || (innerEl.leaveToProps = {}); } keys(TRANSFORM_PROPS).join(", "); var EMPHASIS = "emphasis"; var NORMAL = "normal"; var BLUR = "blur"; var SELECT = "select"; var STATES = [NORMAL, EMPHASIS, BLUR, SELECT]; var PATH_ITEM_STYLE = { normal: ["itemStyle"], emphasis: [EMPHASIS, "itemStyle"], blur: [BLUR, "itemStyle"], select: [SELECT, "itemStyle"] }; var PATH_LABEL = { normal: ["label"], emphasis: [EMPHASIS, "label"], blur: [BLUR, "label"], select: [SELECT, "label"] }; var GROUP_DIFF_PREFIX = "e\0\0"; var attachedTxInfoTmp = { normal: {}, emphasis: {}, blur: {}, select: {} }; var prepareCustoms = { cartesian2d: cartesianPrepareCustom, geo: geoPrepareCustom, singleAxis: singlePrepareCustom, polar: polarPrepareCustom, calendar: calendarPrepareCustom }; function isPath(el) { return el instanceof Path$1; } function isDisplayable(el) { return el instanceof Displayable$1; } function copyElement(sourceEl, targetEl) { targetEl.copyTransform(sourceEl); if (isDisplayable(targetEl) && isDisplayable(sourceEl)) { targetEl.setStyle(sourceEl.style); targetEl.z = sourceEl.z; targetEl.z2 = sourceEl.z2; targetEl.zlevel = sourceEl.zlevel; targetEl.invisible = sourceEl.invisible; targetEl.ignore = sourceEl.ignore; if (isPath(targetEl) && isPath(sourceEl)) { targetEl.setShape(sourceEl.shape); } } } var CustomChartView = function(_super) { __extends$1(CustomChartView2, _super); function CustomChartView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CustomChartView2.type; return _this; } CustomChartView2.prototype.render = function(customSeries, ecModel, api, payload) { var oldData = this._data; var data = customSeries.getData(); var group = this.group; var renderItem = makeRenderItem(customSeries, data, ecModel, api); if (!oldData) { group.removeAll(); } data.diff(oldData).add(function(newIdx) { createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data); }).remove(function(oldIdx) { doRemoveEl(oldData.getItemGraphicEl(oldIdx), customSeries, group); }).update(function(newIdx, oldIdx) { var oldEl = oldData.getItemGraphicEl(oldIdx); createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data); }).execute(); var clipPath = customSeries.get("clip", true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null; if (clipPath) { group.setClipPath(clipPath); } else { group.removeClipPath(); } this._data = data; }; CustomChartView2.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) { this.group.removeAll(); this._data = null; }; CustomChartView2.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) { var data = customSeries.getData(); var renderItem = makeRenderItem(customSeries, data, ecModel, api); function setIncrementalAndHoverLayer(el2) { if (!el2.isGroup) { el2.incremental = true; el2.ensureState("emphasis").hoverLayer = true; } } for (var idx = params.start; idx < params.end; idx++) { var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data); el && el.traverse(setIncrementalAndHoverLayer); } }; CustomChartView2.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) { var elementName = query.element; if (elementName == null || targetEl.name === elementName) { return true; } while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) { if (targetEl.name === elementName) { return true; } } return false; }; CustomChartView2.type = "custom"; return CustomChartView2; }(ChartView$1); var CustomChartView$1 = CustomChartView; function createEl$1(elOption) { var graphicType = elOption.type; var el; if (graphicType === "path") { var shape = elOption.shape; var pathRect = shape.width != null && shape.height != null ? { x: shape.x || 0, y: shape.y || 0, width: shape.width, height: shape.height } : null; var pathData = getPathData(shape); el = makePath(pathData, null, pathRect, shape.layout || "center"); customInnerStore(el).customPathData = pathData; } else if (graphicType === "image") { el = new ZRImage$1({}); customInnerStore(el).customImagePath = elOption.style.image; } else if (graphicType === "text") { el = new ZRText$1({}); } else if (graphicType === "group") { el = new Group$4(); } else if (graphicType === "compoundPath") { throw new Error('"compoundPath" is not supported yet.'); } else { var Clz = getShapeClass(graphicType); if (!Clz) { var errMsg = ""; throwError(errMsg); } el = new Clz(); } customInnerStore(el).customGraphicType = graphicType; el.name = elOption.name; el.z2EmphasisLift = 1; el.z2SelectLift = 1; return el; } function updateElNormal(api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit, isTextContent) { var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg; if (txCfgOpt) { el.setTextConfig(txCfgOpt); } var styleOpt = elOption && elOption.style; if (styleOpt) { if (el.type === "text") { var textOptionStyle = styleOpt; hasOwn(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill); hasOwn(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke); } var decalPattern = void 0; var decalObj = isPath(el) ? styleOpt.decal : null; if (api && decalObj) { decalObj.dirty = true; decalPattern = createOrUpdatePatternFromDecal(decalObj, api); } styleOpt.__decalPattern = decalPattern; } var store = customInnerStore(el); store.userDuring = elOption.during; var transFromProps = {}; var propsToSet = {}; prepareShapeOrExtraTransitionFrom("shape", el, elOption, transFromProps, isInit); prepareShapeOrExtraAllPropsFinal("shape", elOption, propsToSet); prepareTransformTransitionFrom(el, elOption, transFromProps, isInit); prepareTransformAllPropsFinal(el, elOption, propsToSet); prepareShapeOrExtraTransitionFrom("extra", el, elOption, transFromProps, isInit); prepareShapeOrExtraAllPropsFinal("extra", elOption, propsToSet); prepareStyleTransitionFrom(el, elOption, styleOpt, transFromProps, isInit); propsToSet.style = styleOpt; applyPropsDirectly(el, propsToSet); applyPropsTransition(el, dataIndex, seriesModel, transFromProps, isInit); applyMiscProps(el, elOption, isTextContent); styleOpt ? el.dirty() : el.markRedraw(); } function applyMiscProps(el, elOption, isTextContent) { hasOwn(elOption, "silent") && (el.silent = elOption.silent); hasOwn(elOption, "ignore") && (el.ignore = elOption.ignore); if (isDisplayable(el)) { hasOwn(elOption, "invisible") && (el.invisible = elOption.invisible); } if (isPath(el)) { hasOwn(elOption, "autoBatch") && (el.autoBatch = elOption.autoBatch); } if (!isTextContent) { hasOwn(elOption, "info") && (customInnerStore(el).info = elOption.info); } } function applyPropsDirectly(el, allPropsFinal) { var elDisplayable = el.isGroup ? null : el; var styleOpt = allPropsFinal.style; if (elDisplayable && styleOpt) { elDisplayable.useStyle(styleOpt); var decalPattern = styleOpt.__decalPattern; if (decalPattern) { elDisplayable.style.decal = decalPattern; } var animators = elDisplayable.animators; for (var i = 0; i < animators.length; i++) { var animator = animators[i]; if (animator.targetName === "style") { animator.changeTarget(elDisplayable.style); } } } if (allPropsFinal) { allPropsFinal.style = null; allPropsFinal && el.attr(allPropsFinal); allPropsFinal.style = styleOpt; } } function applyPropsTransition(el, dataIndex, seriesModel, transFromProps, isInit) { if (transFromProps) { var userDuring = customInnerStore(el).userDuring; var cfgDuringCall = userDuring ? bind$2(duringCall, { el, userDuring }) : null; var cfg = { dataIndex, isFrom: true, during: cfgDuringCall }; isInit ? initProps(el, transFromProps, seriesModel, cfg) : updateProps$1(el, transFromProps, seriesModel, cfg); } } var tmpDuringScope = {}; var customDuringAPI = { setTransform: function(key2, val) { tmpDuringScope.el[key2] = val; return this; }, getTransform: function(key2) { return tmpDuringScope.el[key2]; }, setShape: function(key2, val) { var shape = tmpDuringScope.el.shape || (tmpDuringScope.el.shape = {}); shape[key2] = val; tmpDuringScope.isShapeDirty = true; return this; }, getShape: function(key2) { var shape = tmpDuringScope.el.shape; if (shape) { return shape[key2]; } }, setStyle: function(key2, val) { var style = tmpDuringScope.el.style; if (style) { style[key2] = val; tmpDuringScope.isStyleDirty = true; } return this; }, getStyle: function(key2) { var style = tmpDuringScope.el.style; if (style) { return style[key2]; } }, setExtra: function(key2, val) { var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {}); extra[key2] = val; return this; }, getExtra: function(key2) { var extra = tmpDuringScope.el.extra; if (extra) { return extra[key2]; } } }; function duringCall() { var scope = this; var el = scope.el; if (!el) { return; } var latestUserDuring = customInnerStore(el).userDuring; var scopeUserDuring = scope.userDuring; if (latestUserDuring !== scopeUserDuring) { scope.el = scope.userDuring = null; return; } tmpDuringScope.el = el; tmpDuringScope.isShapeDirty = false; tmpDuringScope.isStyleDirty = false; scopeUserDuring(customDuringAPI); if (tmpDuringScope.isShapeDirty && el.dirtyShape) { el.dirtyShape(); } if (tmpDuringScope.isStyleDirty && el.dirtyStyle) { el.dirtyStyle(); } } function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo, isRoot, isTextContent) { var elDisplayable = el.isGroup ? null : el; var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg; if (elDisplayable) { var stateObj = elDisplayable.ensureState(state); if (styleOpt === false) { var existingEmphasisState = elDisplayable.getState(state); if (existingEmphasisState) { existingEmphasisState.style = null; } } else { stateObj.style = styleOpt || null; } if (txCfgOpt) { stateObj.textConfig = txCfgOpt; } setDefaultStateProxy(elDisplayable); } } function updateZ(el, elOption, seriesModel) { if (el.isGroup) { return; } var elDisplayable = el; var currentZ = seriesModel.currentZ; var currentZLevel = seriesModel.currentZLevel; elDisplayable.z = currentZ; elDisplayable.zlevel = currentZLevel; var optZ2 = elOption.z2; optZ2 != null && (elDisplayable.z2 = optZ2 || 0); for (var i = 0; i < STATES.length; i++) { updateZForEachState(elDisplayable, elOption, STATES[i]); } } function updateZForEachState(elDisplayable, elOption, state) { var isNormal = state === NORMAL; var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state); var optZ2 = elStateOpt ? elStateOpt.z2 : null; var stateObj; if (optZ2 != null) { stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state); stateObj.z2 = optZ2 || 0; } } function makeRenderItem(customSeries, data, ecModel, api) { var renderItem = customSeries.get("renderItem"); var coordSys = customSeries.coordinateSystem; var prepareResult2 = {}; if (coordSys) { prepareResult2 = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys); } var userAPI = defaults({ getWidth: api.getWidth, getHeight: api.getHeight, getZr: api.getZr, getDevicePixelRatio: api.getDevicePixelRatio, value, style, ordinalRawValue, styleEmphasis, visual, barLayout, currentSeriesIndices, font }, prepareResult2.api || {}); var userParams = { context: {}, seriesId: customSeries.id, seriesName: customSeries.name, seriesIndex: customSeries.seriesIndex, coordSys: prepareResult2.coordSys, dataInsideLength: data.count(), encode: wrapEncodeDef(customSeries.getData()) }; var currDataIndexInside; var currItemModel; var currItemStyleModels = {}; var currLabelModels = {}; var seriesItemStyleModels = {}; var seriesLabelModels = {}; for (var i = 0; i < STATES.length; i++) { var stateName = STATES[i]; seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]); seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]); } function getItemModel2(dataIndexInside) { return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside); } function getItemStyleModel(dataIndexInside, state) { return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state]); } function getLabelModel(dataIndexInside, state) { return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel2(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel2(dataIndexInside).getModel(PATH_LABEL[state]); } return function(dataIndexInside, payload) { currDataIndexInside = dataIndexInside; currItemModel = null; currItemStyleModels = {}; currLabelModels = {}; return renderItem && renderItem(defaults({ dataIndexInside, dataIndex: data.getRawIndex(dataIndexInside), actionType: payload ? payload.type : null }, userParams), userAPI); }; function value(dim, dataIndexInside) { dataIndexInside == null && (dataIndexInside = currDataIndexInside); return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside); } function ordinalRawValue(dim, dataIndexInside) { dataIndexInside == null && (dataIndexInside = currDataIndexInside); dim = dim || 0; var dimInfo = data.getDimensionInfo(dim); if (!dimInfo) { var dimIndex = data.getDimensionIndex(dim); return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0; } var val = data.get(dimInfo.name, dataIndexInside); var ordinalMeta = dimInfo && dimInfo.ordinalMeta; return ordinalMeta ? ordinalMeta.categories[val] : val; } function style(userProps, dataIndexInside) { dataIndexInside == null && (dataIndexInside = currDataIndexInside); var style2 = data.getItemVisual(dataIndexInside, "style"); var visualColor = style2 && style2.fill; var opacity = style2 && style2.opacity; var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle(); visualColor != null && (itemStyle.fill = visualColor); opacity != null && (itemStyle.opacity = opacity); var opt = { inheritColor: isString(visualColor) ? visualColor : "#000" }; var labelModel = getLabelModel(dataIndexInside, NORMAL); var textStyle = createTextStyle$1(labelModel, null, opt, false, true); textStyle.text = labelModel.getShallow("show") ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; var textConfig = createTextConfig(labelModel, opt, false); preFetchFromExtra(userProps, itemStyle); itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); userProps && applyUserPropsAfter(itemStyle, userProps); itemStyle.legacy = true; return itemStyle; } function styleEmphasis(userProps, dataIndexInside) { dataIndexInside == null && (dataIndexInside = currDataIndexInside); var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle(); var labelModel = getLabelModel(dataIndexInside, EMPHASIS); var textStyle = createTextStyle$1(labelModel, null, null, true, true); textStyle.text = labelModel.getShallow("show") ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; var textConfig = createTextConfig(labelModel, null, true); preFetchFromExtra(userProps, itemStyle); itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); userProps && applyUserPropsAfter(itemStyle, userProps); itemStyle.legacy = true; return itemStyle; } function applyUserPropsAfter(itemStyle, extra) { for (var key2 in extra) { if (hasOwn(extra, key2)) { itemStyle[key2] = extra[key2]; } } } function preFetchFromExtra(extra, itemStyle) { if (extra) { extra.textFill && (itemStyle.textFill = extra.textFill); extra.textPosition && (itemStyle.textPosition = extra.textPosition); } } function visual(visualType, dataIndexInside) { dataIndexInside == null && (dataIndexInside = currDataIndexInside); if (hasOwn(STYLE_VISUAL_TYPE, visualType)) { var style_1 = data.getItemVisual(dataIndexInside, "style"); return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null; } if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) { return data.getItemVisual(dataIndexInside, visualType); } } function barLayout(opt) { if (coordSys.type === "cartesian2d") { var baseAxis = coordSys.getBaseAxis(); return getLayoutOnAxis(defaults({ axis: baseAxis }, opt)); } } function currentSeriesIndices() { return ecModel.getCurrentSeriesIndices(); } function font(opt) { return getFont(opt, ecModel); } } function wrapEncodeDef(data) { var encodeDef = {}; each$g(data.dimensions, function(dimName) { var dimInfo = data.getDimensionInfo(dimName); if (!dimInfo.isExtraCoord) { var coordDim = dimInfo.coordDim; var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || []; dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName); } }); return encodeDef; } function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) { if (!elOption) { group.remove(existsEl); return; } var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group); el && data.setItemGraphicEl(dataIndex, el); el && enableHoverEmphasis(el, elOption.focus, elOption.blurScope); return el; } function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group, isRoot) { var toBeReplacedIdx = -1; var oldEl = existsEl; if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) { toBeReplacedIdx = indexOf(group.childrenRef(), existsEl); existsEl = null; } var isInit = !existsEl; var el = existsEl; if (!el) { el = createEl$1(elOption); if (oldEl) { copyElement(oldEl, el); } } else { el.clearStates(); } if (elOption.morph === false) { el.disableMorphing = true; } else if (el.disableMorphing) { el.disableMorphing = false; } attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null; attachedTxInfoTmp.isLegacy = false; doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp); doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit); updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit, false); for (var i = 0; i < STATES.length; i++) { var stateName = STATES[i]; if (stateName !== NORMAL) { var otherStateOpt = retrieveStateOption(elOption, stateName); var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName); updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp); } } updateZ(el, elOption, seriesModel); if (elOption.type === "group") { mergeChildren(api, el, dataIndex, elOption, seriesModel); } if (toBeReplacedIdx >= 0) { group.replaceAt(el, toBeReplacedIdx); } else { group.add(el); } return el; } function doesElNeedRecreate(el, elOption, seriesModel) { var elInner = customInnerStore(el); var elOptionType = elOption.type; var elOptionShape = elOption.shape; var elOptionStyle = elOption.style; return seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath; } function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) { var clipPathOpt = elOption.clipPath; if (clipPathOpt === false) { if (el && el.getClipPath()) { el.removeClipPath(); } } else if (clipPathOpt) { var clipPath = el.getClipPath(); if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) { clipPath = null; } if (!clipPath) { clipPath = createEl$1(clipPathOpt); el.setClipPath(clipPath); } updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit, false); } } function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) { if (el.isGroup) { return; } processTxInfo(elOption, null, attachedTxInfo); processTxInfo(elOption, EMPHASIS, attachedTxInfo); var txConOptNormal = attachedTxInfo.normal.conOpt; var txConOptEmphasis = attachedTxInfo.emphasis.conOpt; var txConOptBlur = attachedTxInfo.blur.conOpt; var txConOptSelect = attachedTxInfo.select.conOpt; if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) { var textContent = el.getTextContent(); if (txConOptNormal === false) { textContent && el.removeTextContent(); } else { txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { type: "text" }; if (!textContent) { textContent = createEl$1(txConOptNormal); el.setTextContent(textContent); } else { textContent.clearStates(); } updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit, true); var txConStlOptNormal = txConOptNormal && txConOptNormal.style; for (var i = 0; i < STATES.length; i++) { var stateName = STATES[i]; if (stateName !== NORMAL) { var txConOptOtherState = attachedTxInfo[stateName].conOpt; updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null); } } txConStlOptNormal ? textContent.dirty() : textContent.markRedraw(); } } } function processTxInfo(elOption, state, attachedTxInfo) { var stateOpt = !state ? elOption : retrieveStateOption(elOption, state); var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS); var elType = elOption.type; var txCfg = stateOpt ? stateOpt.textConfig : null; var txConOptNormal = elOption.textContent; var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state); if (styleOpt && (attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) { attachedTxInfo.isLegacy = true; var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state); if (!txCfg && convertResult.textConfig) { txCfg = convertResult.textConfig; } if (!txConOpt && convertResult.textContent) { txConOpt = convertResult.textContent; } } if (!state && txConOpt) { var txConOptNormal_1 = txConOpt; !txConOptNormal_1.type && (txConOptNormal_1.type = "text"); } var info = !state ? attachedTxInfo.normal : attachedTxInfo[state]; info.cfg = txCfg; info.conOpt = txConOpt; } function retrieveStateOption(elOption, state) { return !state ? elOption : elOption ? elOption[state] : null; } function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) { var style = stateOption && stateOption.style; if (style == null && state === EMPHASIS && stateOptionNormal) { style = stateOptionNormal.styleEmphasis; } return style; } function mergeChildren(api, el, dataIndex, elOption, seriesModel) { var newChildren = elOption.children; var newLen = newChildren ? newChildren.length : 0; var mergeChildren2 = elOption.$mergeChildren; var byName = mergeChildren2 === "byName" || elOption.diffChildrenByName; var notMerge = mergeChildren2 === false; if (!newLen && !byName && !notMerge) { return; } if (byName) { diffGroupChildren({ api, oldChildren: el.children() || [], newChildren: newChildren || [], dataIndex, seriesModel, group: el }); return; } notMerge && el.removeAll(); var index = 0; for (; index < newLen; index++) { newChildren[index] && doCreateOrUpdateEl(api, el.childAt(index), dataIndex, newChildren[index], seriesModel, el); } for (var i = el.childCount() - 1; i >= index; i--) { doRemoveEl(el.childAt(i), seriesModel, el); } } function diffGroupChildren(context) { new DataDiffer$1(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute(); } function getKey(item, idx) { var name = item && item.name; return name != null ? name : GROUP_DIFF_PREFIX + idx; } function processAddUpdate(newIndex, oldIndex) { var context = this.context; var childOption = newIndex != null ? context.newChildren[newIndex] : null; var child = oldIndex != null ? context.oldChildren[oldIndex] : null; doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group); } function processRemove(oldIndex) { var context = this.context; var child = context.oldChildren[oldIndex]; doRemoveEl(child, context.seriesModel, context.group); } function doRemoveEl(el, seriesModel, group) { if (el) { var leaveToProps = customInnerStore(el).leaveToProps; leaveToProps ? updateProps$1(el, leaveToProps, seriesModel, { cb: function() { group.remove(el); } }) : group.remove(el); } } function getPathData(shape) { return shape && (shape.pathData || shape.d); } function hasOwnPathData(shape) { return shape && (hasOwn(shape, "pathData") || hasOwn(shape, "d")); } function install$r(registers) { registers.registerChartView(CustomChartView$1); registers.registerSeriesModel(CustomSeriesModel$1); } var inner$b = makeInner(); var clone$1 = clone$4; var bind$1 = bind$2; var BaseAxisPointer = function() { function BaseAxisPointer2() { this._dragging = false; this.animationThreshold = 15; } BaseAxisPointer2.prototype.render = function(axisModel, axisPointerModel, api, forceRender) { var value = axisPointerModel.get("value"); var status = axisPointerModel.get("status"); this._axisModel = axisModel; this._axisPointerModel = axisPointerModel; this._api = api; if (!forceRender && this._lastValue === value && this._lastStatus === status) { return; } this._lastValue = value; this._lastStatus = status; var group = this._group; var handle = this._handle; if (!status || status === "hide") { group && group.hide(); handle && handle.hide(); return; } group && group.show(); handle && handle.show(); var elOption = {}; this.makeElOption(elOption, value, axisModel, axisPointerModel, api); var graphicKey = elOption.graphicKey; if (graphicKey !== this._lastGraphicKey) { this.clear(api); } this._lastGraphicKey = graphicKey; var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel); if (!group) { group = this._group = new Group$4(); this.createPointerEl(group, elOption, axisModel, axisPointerModel); this.createLabelEl(group, elOption, axisModel, axisPointerModel); api.getZr().add(group); } else { var doUpdateProps = curry$1(updateProps, axisPointerModel, moveAnimation); this.updatePointerEl(group, elOption, doUpdateProps); this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel); } updateMandatoryProps(group, axisPointerModel, true); this._renderHandle(value); }; BaseAxisPointer2.prototype.remove = function(api) { this.clear(api); }; BaseAxisPointer2.prototype.dispose = function(api) { this.clear(api); }; BaseAxisPointer2.prototype.determineAnimation = function(axisModel, axisPointerModel) { var animation = axisPointerModel.get("animation"); var axis = axisModel.axis; var isCategoryAxis = axis.type === "category"; var useSnap = axisPointerModel.get("snap"); if (!useSnap && !isCategoryAxis) { return false; } if (animation === "auto" || animation == null) { var animationThreshold = this.animationThreshold; if (isCategoryAxis && axis.getBandWidth() > animationThreshold) { return true; } if (useSnap) { var seriesDataCount = getAxisInfo$1(axisModel).seriesDataCount; var axisExtent = axis.getExtent(); return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold; } return false; } return animation === true; }; BaseAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { }; BaseAxisPointer2.prototype.createPointerEl = function(group, elOption, axisModel, axisPointerModel) { var pointerOption = elOption.pointer; if (pointerOption) { var pointerEl = inner$b(group).pointerEl = new graphic$1[pointerOption.type](clone$1(elOption.pointer)); group.add(pointerEl); } }; BaseAxisPointer2.prototype.createLabelEl = function(group, elOption, axisModel, axisPointerModel) { if (elOption.label) { var labelEl = inner$b(group).labelEl = new ZRText$1(clone$1(elOption.label)); group.add(labelEl); updateLabelShowHide(labelEl, axisPointerModel); } }; BaseAxisPointer2.prototype.updatePointerEl = function(group, elOption, updateProps2) { var pointerEl = inner$b(group).pointerEl; if (pointerEl && elOption.pointer) { pointerEl.setStyle(elOption.pointer.style); updateProps2(pointerEl, { shape: elOption.pointer.shape }); } }; BaseAxisPointer2.prototype.updateLabelEl = function(group, elOption, updateProps2, axisPointerModel) { var labelEl = inner$b(group).labelEl; if (labelEl) { labelEl.setStyle(elOption.label.style); updateProps2(labelEl, { x: elOption.label.x, y: elOption.label.y }); updateLabelShowHide(labelEl, axisPointerModel); } }; BaseAxisPointer2.prototype._renderHandle = function(value) { if (this._dragging || !this.updateHandleTransform) { return; } var axisPointerModel = this._axisPointerModel; var zr = this._api.getZr(); var handle = this._handle; var handleModel = axisPointerModel.getModel("handle"); var status = axisPointerModel.get("status"); if (!handleModel.get("show") || !status || status === "hide") { handle && zr.remove(handle); this._handle = null; return; } var isInit; if (!this._handle) { isInit = true; handle = this._handle = createIcon(handleModel.get("icon"), { cursor: "move", draggable: true, onmousemove: function(e2) { stop(e2.event); }, onmousedown: bind$1(this._onHandleDragMove, this, 0, 0), drift: bind$1(this._onHandleDragMove, this), ondragend: bind$1(this._onHandleDragEnd, this) }); zr.add(handle); } updateMandatoryProps(handle, axisPointerModel, false); handle.setStyle(handleModel.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"])); var handleSize = handleModel.get("size"); if (!isArray$1(handleSize)) { handleSize = [handleSize, handleSize]; } handle.scaleX = handleSize[0] / 2; handle.scaleY = handleSize[1] / 2; createOrUpdate(this, "_doDispatchAxisPointer", handleModel.get("throttle") || 0, "fixRate"); this._moveHandleToValue(value, isInit); }; BaseAxisPointer2.prototype._moveHandleToValue = function(value, isInit) { updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel))); }; BaseAxisPointer2.prototype._onHandleDragMove = function(dx, dy) { var handle = this._handle; if (!handle) { return; } this._dragging = true; var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel); this._payloadInfo = trans; handle.stopAnimation(); handle.attr(getHandleTransProps(trans)); inner$b(handle).lastProp = null; this._doDispatchAxisPointer(); }; BaseAxisPointer2.prototype._doDispatchAxisPointer = function() { var handle = this._handle; if (!handle) { return; } var payloadInfo = this._payloadInfo; var axisModel = this._axisModel; this._api.dispatchAction({ type: "updateAxisPointer", x: payloadInfo.cursorPoint[0], y: payloadInfo.cursorPoint[1], tooltipOption: payloadInfo.tooltipOption, axesInfo: [{ axisDim: axisModel.axis.dim, axisIndex: axisModel.componentIndex }] }); }; BaseAxisPointer2.prototype._onHandleDragEnd = function() { this._dragging = false; var handle = this._handle; if (!handle) { return; } var value = this._axisPointerModel.get("value"); this._moveHandleToValue(value); this._api.dispatchAction({ type: "hideTip" }); }; BaseAxisPointer2.prototype.clear = function(api) { this._lastValue = null; this._lastStatus = null; var zr = api.getZr(); var group = this._group; var handle = this._handle; if (zr && group) { this._lastGraphicKey = null; group && zr.remove(group); handle && zr.remove(handle); this._group = null; this._handle = null; this._payloadInfo = null; } }; BaseAxisPointer2.prototype.doClear = function() { }; BaseAxisPointer2.prototype.buildLabel = function(xy, wh, xDimIndex) { xDimIndex = xDimIndex || 0; return { x: xy[xDimIndex], y: xy[1 - xDimIndex], width: wh[xDimIndex], height: wh[1 - xDimIndex] }; }; return BaseAxisPointer2; }(); function updateProps(animationModel, moveAnimation, el, props) { if (!propsEqual(inner$b(el).lastProp, props)) { inner$b(el).lastProp = props; moveAnimation ? updateProps$1(el, props, animationModel) : (el.stopAnimation(), el.attr(props)); } } function propsEqual(lastProps, newProps) { if (isObject$3(lastProps) && isObject$3(newProps)) { var equals_1 = true; each$g(newProps, function(item, key2) { equals_1 = equals_1 && propsEqual(lastProps[key2], item); }); return !!equals_1; } else { return lastProps === newProps; } } function updateLabelShowHide(labelEl, axisPointerModel) { labelEl[axisPointerModel.get(["label", "show"]) ? "show" : "hide"](); } function getHandleTransProps(trans) { return { x: trans.x || 0, y: trans.y || 0, rotation: trans.rotation || 0 }; } function updateMandatoryProps(group, axisPointerModel, silent) { var z = axisPointerModel.get("z"); var zlevel = axisPointerModel.get("zlevel"); group && group.traverse(function(el) { if (el.type !== "group") { z != null && (el.z = z); zlevel != null && (el.zlevel = zlevel); el.silent = silent; } }); } var BaseAxisPointer$1 = BaseAxisPointer; function buildElStyle(axisPointerModel) { var axisPointerType = axisPointerModel.get("type"); var styleModel = axisPointerModel.getModel(axisPointerType + "Style"); var style; if (axisPointerType === "line") { style = styleModel.getLineStyle(); style.fill = null; } else if (axisPointerType === "shadow") { style = styleModel.getAreaStyle(); style.stroke = null; } return style; } function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) { var value = axisPointerModel.get("value"); var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get("seriesDataIndices"), { precision: axisPointerModel.get(["label", "precision"]), formatter: axisPointerModel.get(["label", "formatter"]) }); var labelModel = axisPointerModel.getModel("label"); var paddings = normalizeCssArray(labelModel.get("padding") || 0); var font = labelModel.getFont(); var textRect = getBoundingRect(text, font); var position2 = labelPos.position; var width = textRect.width + paddings[1] + paddings[3]; var height = textRect.height + paddings[0] + paddings[2]; var align = labelPos.align; align === "right" && (position2[0] -= width); align === "center" && (position2[0] -= width / 2); var verticalAlign = labelPos.verticalAlign; verticalAlign === "bottom" && (position2[1] -= height); verticalAlign === "middle" && (position2[1] -= height / 2); confineInContainer(position2, width, height, api); var bgColor = labelModel.get("backgroundColor"); if (!bgColor || bgColor === "auto") { bgColor = axisModel.get(["axisLine", "lineStyle", "color"]); } elOption.label = { x: position2[0], y: position2[1], style: createTextStyle$1(labelModel, { text, font, fill: labelModel.getTextColor(), padding: paddings, backgroundColor: bgColor }), z2: 10 }; } function confineInContainer(position2, width, height, api) { var viewWidth = api.getWidth(); var viewHeight = api.getHeight(); position2[0] = Math.min(position2[0] + width, viewWidth) - width; position2[1] = Math.min(position2[1] + height, viewHeight) - height; position2[0] = Math.max(position2[0], 0); position2[1] = Math.max(position2[1], 0); } function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) { value = axis.scale.parse(value); var text = axis.scale.getLabel({ value }, { precision: opt.precision }); var formatter = opt.formatter; if (formatter) { var params_1 = { value: getAxisRawValue(axis, { value }), axisDimension: axis.dim, axisIndex: axis.index, seriesData: [] }; each$g(seriesDataIndices, function(idxItem) { var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); var dataIndex = idxItem.dataIndexInside; var dataParams = series && series.getDataParams(dataIndex); dataParams && params_1.seriesData.push(dataParams); }); if (isString(formatter)) { text = formatter.replace("{value}", text); } else if (isFunction(formatter)) { text = formatter(params_1); } } return text; } function getTransformedPosition(axis, value, layoutInfo) { var transform2 = create$1(); rotate(transform2, transform2, layoutInfo.rotation); translate(transform2, transform2, layoutInfo.position); return applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform2); } function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) { var textLayout = AxisBuilder$1.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection); layoutInfo.labelMargin = axisPointerModel.get(["label", "margin"]); buildLabelElOption(elOption, axisModel, axisPointerModel, api, { position: getTransformedPosition(axisModel.axis, value, layoutInfo), align: textLayout.textAlign, verticalAlign: textLayout.textVerticalAlign }); } function makeLineShape(p1, p2, xDimIndex) { xDimIndex = xDimIndex || 0; return { x1: p1[xDimIndex], y1: p1[1 - xDimIndex], x2: p2[xDimIndex], y2: p2[1 - xDimIndex] }; } function makeRectShape(xy, wh, xDimIndex) { xDimIndex = xDimIndex || 0; return { x: xy[xDimIndex], y: xy[1 - xDimIndex], width: wh[xDimIndex], height: wh[1 - xDimIndex] }; } function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) { return { cx, cy, r0, r, startAngle, endAngle, clockwise: true }; } var CartesianAxisPointer = function(_super) { __extends$1(CartesianAxisPointer2, _super); function CartesianAxisPointer2() { return _super !== null && _super.apply(this, arguments) || this; } CartesianAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { var axis = axisModel.axis; var grid2 = axis.grid; var axisPointerType = axisPointerModel.get("type"); var otherExtent = getCartesian(grid2, axis).getOtherAxis(axis).getGlobalExtent(); var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true)); if (axisPointerType && axisPointerType !== "none") { var elStyle = buildElStyle(axisPointerModel); var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, pixelValue, otherExtent); pointerOption.style = elStyle; elOption.graphicKey = pointerOption.type; elOption.pointer = pointerOption; } var layoutInfo = layout$2(grid2.model, axisModel); buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api); }; CartesianAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { var layoutInfo = layout$2(axisModel.axis.grid.model, axisModel, { labelInside: false }); layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); var pos = getTransformedPosition(axisModel.axis, value, layoutInfo); return { x: pos[0], y: pos[1], rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) }; }; CartesianAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { var axis = axisModel.axis; var grid2 = axis.grid; var axisExtent = axis.getGlobalExtent(true); var otherExtent = getCartesian(grid2, axis).getOtherAxis(axis).getGlobalExtent(); var dimIndex = axis.dim === "x" ? 0 : 1; var currPosition = [transform2.x, transform2.y]; currPosition[dimIndex] += delta[dimIndex]; currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; var cursorPoint = [cursorOtherValue, cursorOtherValue]; cursorPoint[dimIndex] = currPosition[dimIndex]; var tooltipOptions = [{ verticalAlign: "middle" }, { align: "center" }]; return { x: currPosition[0], y: currPosition[1], rotation: transform2.rotation, cursorPoint, tooltipOption: tooltipOptions[dimIndex] }; }; return CartesianAxisPointer2; }(BaseAxisPointer$1); function getCartesian(grid2, axis) { var opt = {}; opt[axis.dim + "AxisIndex"] = axis.index; return grid2.getCartesian(opt); } var pointerShapeBuilder$2 = { line: function(axis, pixelValue, otherExtent) { var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis)); return { type: "Line", subPixelOptimize: true, shape: targetShape }; }, shadow: function(axis, pixelValue, otherExtent) { var bandWidth = Math.max(1, axis.getBandWidth()); var span = otherExtent[1] - otherExtent[0]; return { type: "Rect", shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis)) }; } }; function getAxisDimIndex(axis) { return axis.dim === "x" ? 0 : 1; } var CartesianAxisPointer$1 = CartesianAxisPointer; var AxisPointerModel = function(_super) { __extends$1(AxisPointerModel2, _super); function AxisPointerModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = AxisPointerModel2.type; return _this; } AxisPointerModel2.type = "axisPointer"; AxisPointerModel2.defaultOption = { show: "auto", zlevel: 0, z: 50, type: "line", snap: false, triggerTooltip: true, value: null, status: null, link: [], animation: null, animationDurationUpdate: 200, lineStyle: { color: "#B9BEC9", width: 1, type: "dashed" }, shadowStyle: { color: "rgba(210,219,238,0.2)" }, label: { show: true, formatter: null, precision: "auto", margin: 3, color: "#fff", padding: [5, 7, 5, 7], backgroundColor: "auto", borderColor: null, borderWidth: 0, borderRadius: 3 }, handle: { show: false, icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", size: 45, margin: 50, color: "#333", shadowBlur: 3, shadowColor: "#aaa", shadowOffsetX: 0, shadowOffsetY: 2, throttle: 40 } }; return AxisPointerModel2; }(ComponentModel$1); var AxisPointerModel$1 = AxisPointerModel; var inner$a = makeInner(); var each$9 = each$g; function register(key2, api, handler) { if (env$1.node) { return; } var zr = api.getZr(); inner$a(zr).records || (inner$a(zr).records = {}); initGlobalListeners(zr, api); var record = inner$a(zr).records[key2] || (inner$a(zr).records[key2] = {}); record.handler = handler; } function initGlobalListeners(zr, api) { if (inner$a(zr).initialized) { return; } inner$a(zr).initialized = true; useHandler("click", curry$1(doEnter, "click")); useHandler("mousemove", curry$1(doEnter, "mousemove")); useHandler("globalout", onLeave); function useHandler(eventType, cb) { zr.on(eventType, function(e2) { var dis = makeDispatchAction$1(api); each$9(inner$a(zr).records, function(record) { record && cb(record, e2, dis.dispatchAction); }); dispatchTooltipFinally(dis.pendings, api); }); } } function dispatchTooltipFinally(pendings, api) { var showLen = pendings.showTip.length; var hideLen = pendings.hideTip.length; var actuallyPayload; if (showLen) { actuallyPayload = pendings.showTip[showLen - 1]; } else if (hideLen) { actuallyPayload = pendings.hideTip[hideLen - 1]; } if (actuallyPayload) { actuallyPayload.dispatchAction = null; api.dispatchAction(actuallyPayload); } } function onLeave(record, e2, dispatchAction2) { record.handler("leave", null, dispatchAction2); } function doEnter(currTrigger, record, e2, dispatchAction2) { record.handler(currTrigger, e2, dispatchAction2); } function makeDispatchAction$1(api) { var pendings = { showTip: [], hideTip: [] }; var dispatchAction2 = function(payload) { var pendingList = pendings[payload.type]; if (pendingList) { pendingList.push(payload); } else { payload.dispatchAction = dispatchAction2; api.dispatchAction(payload); } }; return { dispatchAction: dispatchAction2, pendings }; } function unregister(key2, api) { if (env$1.node) { return; } var zr = api.getZr(); var record = (inner$a(zr).records || {})[key2]; if (record) { inner$a(zr).records[key2] = null; } } var AxisPointerView = function(_super) { __extends$1(AxisPointerView2, _super); function AxisPointerView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = AxisPointerView2.type; return _this; } AxisPointerView2.prototype.render = function(globalAxisPointerModel, ecModel, api) { var globalTooltipModel = ecModel.getComponent("tooltip"); var triggerOn = globalAxisPointerModel.get("triggerOn") || globalTooltipModel && globalTooltipModel.get("triggerOn") || "mousemove|click"; register("axisPointer", api, function(currTrigger, e2, dispatchAction2) { if (triggerOn !== "none" && (currTrigger === "leave" || triggerOn.indexOf(currTrigger) >= 0)) { dispatchAction2({ type: "updateAxisPointer", currTrigger, x: e2 && e2.offsetX, y: e2 && e2.offsetY }); } }); }; AxisPointerView2.prototype.remove = function(ecModel, api) { unregister("axisPointer", api); }; AxisPointerView2.prototype.dispose = function(ecModel, api) { unregister("axisPointer", api); }; AxisPointerView2.type = "axisPointer"; return AxisPointerView2; }(ComponentView$1); var AxisPointerView$1 = AxisPointerView; function findPointFromSeries(finder, ecModel) { var point = []; var seriesIndex = finder.seriesIndex; var seriesModel; if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) { return { point: [] }; } var data = seriesModel.getData(); var dataIndex = queryDataIndex(data, finder); if (dataIndex == null || dataIndex < 0 || isArray$1(dataIndex)) { return { point: [] }; } var el = data.getItemGraphicEl(dataIndex); var coordSys = seriesModel.coordinateSystem; if (seriesModel.getTooltipPosition) { point = seriesModel.getTooltipPosition(dataIndex) || []; } else if (coordSys && coordSys.dataToPoint) { if (finder.isStacked) { var baseAxis = coordSys.getBaseAxis(); var valueAxis2 = coordSys.getOtherAxis(baseAxis); var valueAxisDim = valueAxis2.dim; var baseAxisDim = baseAxis.dim; var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; var baseDim = data.mapDimension(baseAxisDim); var stackedData = []; stackedData[baseDataOffset] = data.get(baseDim, dataIndex); stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo("stackResultDimension"), dataIndex); point = coordSys.dataToPoint(stackedData) || []; } else { point = coordSys.dataToPoint(data.getValues(map$1(coordSys.dimensions, function(dim) { return data.mapDimension(dim); }), dataIndex)) || []; } } else if (el) { var rect = el.getBoundingRect().clone(); rect.applyTransform(el.transform); point = [rect.x + rect.width / 2, rect.y + rect.height / 2]; } return { point, el }; } var inner$9 = makeInner(); function axisTrigger(payload, ecModel, api) { var currTrigger = payload.currTrigger; var point = [payload.x, payload.y]; var finder = payload; var dispatchAction2 = payload.dispatchAction || bind$2(api.dispatchAction, api); var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; if (!coordSysAxesInfo) { return; } if (illegalPoint(point)) { point = findPointFromSeries({ seriesIndex: finder.seriesIndex, dataIndex: finder.dataIndex }, ecModel).point; } var isIllegalPoint = illegalPoint(point); var inputAxesInfo = finder.axesInfo; var axesInfo = coordSysAxesInfo.axesInfo; var shouldHide = currTrigger === "leave" || illegalPoint(point); var outputPayload = {}; var showValueMap = {}; var dataByCoordSys = { list: [], map: {} }; var updaters = { showPointer: curry$1(showPointer, showValueMap), showTooltip: curry$1(showTooltip, dataByCoordSys) }; each$g(coordSysAxesInfo.coordSysMap, function(coordSys, coordSysKey) { var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); each$g(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function(axisInfo, key2) { var axis = axisInfo.axis; var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { var val = inputAxisInfo && inputAxisInfo.value; if (val == null && !isIllegalPoint) { val = axis.pointToData(point); } val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload); } }); }); var linkTriggers = {}; each$g(axesInfo, function(tarAxisInfo, tarKey) { var linkGroup = tarAxisInfo.linkGroup; if (linkGroup && !showValueMap[tarKey]) { each$g(linkGroup.axesInfo, function(srcAxisInfo, srcKey) { var srcValItem = showValueMap[srcKey]; if (srcAxisInfo !== tarAxisInfo && srcValItem) { var val = srcValItem.value; linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)))); linkTriggers[tarAxisInfo.key] = val; } }); } }); each$g(linkTriggers, function(val, tarKey) { processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload); }); updateModelActually(showValueMap, axesInfo, outputPayload); dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction2); dispatchHighDownActually(axesInfo, dispatchAction2, api); return outputPayload; } function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) { var axis = axisInfo.axis; if (axis.scale.isBlank() || !axis.containData(newValue)) { return; } if (!axisInfo.involveSeries) { updaters.showPointer(axisInfo, newValue); return; } var payloadInfo = buildPayloadsBySeries(newValue, axisInfo); var payloadBatch = payloadInfo.payloadBatch; var snapToValue = payloadInfo.snapToValue; if (payloadBatch[0] && outputFinder.seriesIndex == null) { extend(outputFinder, payloadBatch[0]); } if (!noSnap && axisInfo.snap) { if (axis.containData(snapToValue) && snapToValue != null) { newValue = snapToValue; } } updaters.showPointer(axisInfo, newValue, payloadBatch); updaters.showTooltip(axisInfo, payloadInfo, snapToValue); } function buildPayloadsBySeries(value, axisInfo) { var axis = axisInfo.axis; var dim = axis.dim; var snapToValue = value; var payloadBatch = []; var minDist = Number.MAX_VALUE; var minDiff = -1; each$g(axisInfo.seriesModels, function(series, idx) { var dataDim = series.getData().mapDimensionsAll(dim); var seriesNestestValue; var dataIndices; if (series.getAxisTooltipData) { var result = series.getAxisTooltipData(dataDim, value, axis); dataIndices = result.dataIndices; seriesNestestValue = result.nestestValue; } else { dataIndices = series.getData().indicesOfNearest(dataDim[0], value, axis.type === "category" ? 0.5 : null); if (!dataIndices.length) { return; } seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]); } if (seriesNestestValue == null || !isFinite(seriesNestestValue)) { return; } var diff2 = value - seriesNestestValue; var dist2 = Math.abs(diff2); if (dist2 <= minDist) { if (dist2 < minDist || diff2 >= 0 && minDiff < 0) { minDist = dist2; minDiff = diff2; snapToValue = seriesNestestValue; payloadBatch.length = 0; } each$g(dataIndices, function(dataIndex) { payloadBatch.push({ seriesIndex: series.seriesIndex, dataIndexInside: dataIndex, dataIndex: series.getData().getRawIndex(dataIndex) }); }); } }); return { payloadBatch, snapToValue }; } function showPointer(showValueMap, axisInfo, value, payloadBatch) { showValueMap[axisInfo.key] = { value, payloadBatch }; } function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) { var payloadBatch = payloadInfo.payloadBatch; var axis = axisInfo.axis; var axisModel = axis.model; var axisPointerModel = axisInfo.axisPointerModel; if (!axisInfo.triggerTooltip || !payloadBatch.length) { return; } var coordSysModel = axisInfo.coordSys.model; var coordSysKey = makeKey(coordSysModel); var coordSysItem = dataByCoordSys.map[coordSysKey]; if (!coordSysItem) { coordSysItem = dataByCoordSys.map[coordSysKey] = { coordSysId: coordSysModel.id, coordSysIndex: coordSysModel.componentIndex, coordSysType: coordSysModel.type, coordSysMainType: coordSysModel.mainType, dataByAxis: [] }; dataByCoordSys.list.push(coordSysItem); } coordSysItem.dataByAxis.push({ axisDim: axis.dim, axisIndex: axisModel.componentIndex, axisType: axisModel.type, axisId: axisModel.id, value, valueLabelOpt: { precision: axisPointerModel.get(["label", "precision"]), formatter: axisPointerModel.get(["label", "formatter"]) }, seriesDataIndices: payloadBatch.slice() }); } function updateModelActually(showValueMap, axesInfo, outputPayload) { var outputAxesInfo = outputPayload.axesInfo = []; each$g(axesInfo, function(axisInfo, key2) { var option = axisInfo.axisPointerModel.option; var valItem = showValueMap[key2]; if (valItem) { !axisInfo.useHandle && (option.status = "show"); option.value = valItem.value; option.seriesDataIndices = (valItem.payloadBatch || []).slice(); } else { !axisInfo.useHandle && (option.status = "hide"); } option.status === "show" && outputAxesInfo.push({ axisDim: axisInfo.axis.dim, axisIndex: axisInfo.axis.model.componentIndex, value: option.value }); }); } function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction2) { if (illegalPoint(point) || !dataByCoordSys.list.length) { dispatchAction2({ type: "hideTip" }); return; } var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; dispatchAction2({ type: "showTip", escapeConnect: true, x: point[0], y: point[1], tooltipOption: payload.tooltipOption, position: payload.position, dataIndexInside: sampleItem.dataIndexInside, dataIndex: sampleItem.dataIndex, seriesIndex: sampleItem.seriesIndex, dataByCoordSys: dataByCoordSys.list }); } function dispatchHighDownActually(axesInfo, dispatchAction2, api) { var zr = api.getZr(); var highDownKey = "axisPointerLastHighlights"; var lastHighlights = inner$9(zr)[highDownKey] || {}; var newHighlights = inner$9(zr)[highDownKey] = {}; each$g(axesInfo, function(axisInfo, key2) { var option = axisInfo.axisPointerModel.option; option.status === "show" && each$g(option.seriesDataIndices, function(batchItem) { var key3 = batchItem.seriesIndex + " | " + batchItem.dataIndex; newHighlights[key3] = batchItem; }); }); var toHighlight = []; var toDownplay = []; each$g(lastHighlights, function(batchItem, key2) { !newHighlights[key2] && toDownplay.push(batchItem); }); each$g(newHighlights, function(batchItem, key2) { !lastHighlights[key2] && toHighlight.push(batchItem); }); toDownplay.length && api.dispatchAction({ type: "downplay", escapeConnect: true, notBlur: true, batch: toDownplay }); toHighlight.length && api.dispatchAction({ type: "highlight", escapeConnect: true, notBlur: true, batch: toHighlight }); } function findInputAxisInfo(inputAxesInfo, axisInfo) { for (var i = 0; i < (inputAxesInfo || []).length; i++) { var inputAxisInfo = inputAxesInfo[i]; if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) { return inputAxisInfo; } } } function makeMapperParam(axisInfo) { var axisModel = axisInfo.axis.model; var item = {}; var dim = item.axisDim = axisInfo.axis.dim; item.axisIndex = item[dim + "AxisIndex"] = axisModel.componentIndex; item.axisName = item[dim + "AxisName"] = axisModel.name; item.axisId = item[dim + "AxisId"] = axisModel.id; return item; } function illegalPoint(point) { return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]); } function install$q(registers) { AxisView$1.registerAxisPointerClass("CartesianAxisPointer", CartesianAxisPointer$1); registers.registerComponentModel(AxisPointerModel$1); registers.registerComponentView(AxisPointerView$1); registers.registerPreprocessor(function(option) { if (option) { (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {}); var link2 = option.axisPointer.link; if (link2 && !isArray$1(link2)) { option.axisPointer.link = [link2]; } } }); registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function(ecModel, api) { ecModel.getComponent("axisPointer").coordSysAxesInfo = collect(ecModel, api); }); registers.registerAction({ type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer" }, axisTrigger); } function install$p(registers) { use(install$N); use(install$q); } var PolarAxisPointer = function(_super) { __extends$1(PolarAxisPointer2, _super); function PolarAxisPointer2() { return _super !== null && _super.apply(this, arguments) || this; } PolarAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { var axis = axisModel.axis; if (axis.dim === "angle") { this.animationThreshold = Math.PI / 18; } var polar = axis.polar; var otherAxis = polar.getOtherAxis(axis); var otherExtent = otherAxis.getExtent(); var coordValue = axis.dataToCoord(value); var axisPointerType = axisPointerModel.get("type"); if (axisPointerType && axisPointerType !== "none") { var elStyle = buildElStyle(axisPointerModel); var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, polar, coordValue, otherExtent); pointerOption.style = elStyle; elOption.graphicKey = pointerOption.type; elOption.pointer = pointerOption; } var labelMargin = axisPointerModel.get(["label", "margin"]); var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin); buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos); }; return PolarAxisPointer2; }(BaseAxisPointer$1); function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) { var axis = axisModel.axis; var coord = axis.dataToCoord(value); var axisAngle = polar.getAngleAxis().getExtent()[0]; axisAngle = axisAngle / 180 * Math.PI; var radiusExtent = polar.getRadiusAxis().getExtent(); var position2; var align; var verticalAlign; if (axis.dim === "radius") { var transform2 = create$1(); rotate(transform2, transform2, axisAngle); translate(transform2, transform2, [polar.cx, polar.cy]); position2 = applyTransform([coord, -labelMargin], transform2); var labelRotation = axisModel.getModel("axisLabel").get("rotate") || 0; var labelLayout2 = AxisBuilder$1.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1); align = labelLayout2.textAlign; verticalAlign = labelLayout2.textVerticalAlign; } else { var r = radiusExtent[1]; position2 = polar.coordToPoint([r + labelMargin, coord]); var cx = polar.cx; var cy = polar.cy; align = Math.abs(position2[0] - cx) / r < 0.3 ? "center" : position2[0] > cx ? "left" : "right"; verticalAlign = Math.abs(position2[1] - cy) / r < 0.3 ? "middle" : position2[1] > cy ? "top" : "bottom"; } return { position: position2, align, verticalAlign }; } var pointerShapeBuilder$1 = { line: function(axis, polar, coordValue, otherExtent) { return axis.dim === "angle" ? { type: "Line", shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue])) } : { type: "Circle", shape: { cx: polar.cx, cy: polar.cy, r: coordValue } }; }, shadow: function(axis, polar, coordValue, otherExtent) { var bandWidth = Math.max(1, axis.getBandWidth()); var radian = Math.PI / 180; return axis.dim === "angle" ? { type: "Sector", shape: makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian) } : { type: "Sector", shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2) }; } }; var PolarAxisPointer$1 = PolarAxisPointer; var PolarModel = function(_super) { __extends$1(PolarModel2, _super); function PolarModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PolarModel2.type; return _this; } PolarModel2.prototype.findAxisModel = function(axisType) { var foundAxisModel; var ecModel = this.ecModel; ecModel.eachComponent(axisType, function(axisModel) { if (axisModel.getCoordSysModel() === this) { foundAxisModel = axisModel; } }, this); return foundAxisModel; }; PolarModel2.type = "polar"; PolarModel2.dependencies = ["radiusAxis", "angleAxis"]; PolarModel2.defaultOption = { zlevel: 0, z: 0, center: ["50%", "50%"], radius: "80%" }; return PolarModel2; }(ComponentModel$1); var PolarModel$1 = PolarModel; var PolarAxisModel = function(_super) { __extends$1(PolarAxisModel2, _super); function PolarAxisModel2() { return _super !== null && _super.apply(this, arguments) || this; } PolarAxisModel2.prototype.getCoordSysModel = function() { return this.getReferringComponents("polar", SINGLE_REFERRING).models[0]; }; PolarAxisModel2.type = "polarAxis"; return PolarAxisModel2; }(ComponentModel$1); mixin(PolarAxisModel, AxisModelCommonMixin); var AngleAxisModel = function(_super) { __extends$1(AngleAxisModel2, _super); function AngleAxisModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = AngleAxisModel2.type; return _this; } AngleAxisModel2.type = "angleAxis"; return AngleAxisModel2; }(PolarAxisModel); var RadiusAxisModel = function(_super) { __extends$1(RadiusAxisModel2, _super); function RadiusAxisModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadiusAxisModel2.type; return _this; } RadiusAxisModel2.type = "radiusAxis"; return RadiusAxisModel2; }(PolarAxisModel); var RadiusAxis = function(_super) { __extends$1(RadiusAxis2, _super); function RadiusAxis2(scale2, radiusExtent) { return _super.call(this, "radius", scale2, radiusExtent) || this; } RadiusAxis2.prototype.pointToData = function(point, clamp2) { return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1]; }; return RadiusAxis2; }(Axis$1); RadiusAxis.prototype.dataToRadius = Axis$1.prototype.dataToCoord; RadiusAxis.prototype.radiusToData = Axis$1.prototype.coordToData; var RadiusAxis$1 = RadiusAxis; var inner$8 = makeInner(); var AngleAxis = function(_super) { __extends$1(AngleAxis2, _super); function AngleAxis2(scale2, angleExtent) { return _super.call(this, "angle", scale2, angleExtent || [0, 360]) || this; } AngleAxis2.prototype.pointToData = function(point, clamp2) { return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1]; }; AngleAxis2.prototype.calculateCategoryInterval = function() { var axis = this; var labelModel = axis.getLabelModel(); var ordinalScale = axis.scale; var ordinalExtent = ordinalScale.getExtent(); var tickCount = ordinalScale.count(); if (ordinalExtent[1] - ordinalExtent[0] < 1) { return 0; } var tickValue = ordinalExtent[0]; var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); var unitH = Math.abs(unitSpan); var rect = getBoundingRect(tickValue == null ? "" : tickValue + "", labelModel.getFont(), "center", "top"); var maxH = Math.max(rect.height, 7); var dh = maxH / unitH; isNaN(dh) && (dh = Infinity); var interval = Math.max(0, Math.floor(dh)); var cache = inner$8(axis.model); var lastAutoInterval = cache.lastAutoInterval; var lastTickCount = cache.lastTickCount; if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval) { interval = lastAutoInterval; } else { cache.lastTickCount = tickCount; cache.lastAutoInterval = interval; } return interval; }; return AngleAxis2; }(Axis$1); AngleAxis.prototype.dataToAngle = Axis$1.prototype.dataToCoord; AngleAxis.prototype.angleToData = Axis$1.prototype.coordToData; var AngleAxis$1 = AngleAxis; var polarDimensions = ["radius", "angle"]; var Polar = function() { function Polar2(name) { this.dimensions = polarDimensions; this.type = "polar"; this.cx = 0; this.cy = 0; this._radiusAxis = new RadiusAxis$1(); this._angleAxis = new AngleAxis$1(); this.axisPointerEnabled = true; this.name = name || ""; this._radiusAxis.polar = this._angleAxis.polar = this; } Polar2.prototype.containPoint = function(point) { var coord = this.pointToCoord(point); return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]); }; Polar2.prototype.containData = function(data) { return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]); }; Polar2.prototype.getAxis = function(dim) { var key2 = "_" + dim + "Axis"; return this[key2]; }; Polar2.prototype.getAxes = function() { return [this._radiusAxis, this._angleAxis]; }; Polar2.prototype.getAxesByScale = function(scaleType) { var axes = []; var angleAxis = this._angleAxis; var radiusAxis = this._radiusAxis; angleAxis.scale.type === scaleType && axes.push(angleAxis); radiusAxis.scale.type === scaleType && axes.push(radiusAxis); return axes; }; Polar2.prototype.getAngleAxis = function() { return this._angleAxis; }; Polar2.prototype.getRadiusAxis = function() { return this._radiusAxis; }; Polar2.prototype.getOtherAxis = function(axis) { var angleAxis = this._angleAxis; return axis === angleAxis ? this._radiusAxis : angleAxis; }; Polar2.prototype.getBaseAxis = function() { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis(); }; Polar2.prototype.getTooltipAxes = function(dim) { var baseAxis = dim != null && dim !== "auto" ? this.getAxis(dim) : this.getBaseAxis(); return { baseAxes: [baseAxis], otherAxes: [this.getOtherAxis(baseAxis)] }; }; Polar2.prototype.dataToPoint = function(data, clamp2) { return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp2), this._angleAxis.dataToAngle(data[1], clamp2)]); }; Polar2.prototype.pointToData = function(point, clamp2) { var coord = this.pointToCoord(point); return [this._radiusAxis.radiusToData(coord[0], clamp2), this._angleAxis.angleToData(coord[1], clamp2)]; }; Polar2.prototype.pointToCoord = function(point) { var dx = point[0] - this.cx; var dy = point[1] - this.cy; var angleAxis = this.getAngleAxis(); var extent3 = angleAxis.getExtent(); var minAngle = Math.min(extent3[0], extent3[1]); var maxAngle = Math.max(extent3[0], extent3[1]); angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360; var radius = Math.sqrt(dx * dx + dy * dy); dx /= radius; dy /= radius; var radian = Math.atan2(-dy, dx) / Math.PI * 180; var dir3 = radian < minAngle ? 1 : -1; while (radian < minAngle || radian > maxAngle) { radian += dir3 * 360; } return [radius, radian]; }; Polar2.prototype.coordToPoint = function(coord) { var radius = coord[0]; var radian = coord[1] / 180 * Math.PI; var x = Math.cos(radian) * radius + this.cx; var y = -Math.sin(radian) * radius + this.cy; return [x, y]; }; Polar2.prototype.getArea = function() { var angleAxis = this.getAngleAxis(); var radiusAxis = this.getRadiusAxis(); var radiusExtent = radiusAxis.getExtent().slice(); radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); var angleExtent = angleAxis.getExtent(); var RADIAN2 = Math.PI / 180; return { cx: this.cx, cy: this.cy, r0: radiusExtent[0], r: radiusExtent[1], startAngle: -angleExtent[0] * RADIAN2, endAngle: -angleExtent[1] * RADIAN2, clockwise: angleAxis.inverse, contain: function(x, y) { var dx = x - this.cx; var dy = y - this.cy; var d2 = dx * dx + dy * dy; var r = this.r; var r0 = this.r0; return d2 <= r * r && d2 >= r0 * r0; } }; }; Polar2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys$2(finder); return coordSys === this ? this.dataToPoint(value) : null; }; Polar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys$2(finder); return coordSys === this ? this.pointToData(pixel) : null; }; return Polar2; }(); function getCoordSys$2(finder) { var seriesModel = finder.seriesModel; var polarModel = finder.polarModel; return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; } var Polar$1 = Polar; function resizePolar(polar, polarModel, api) { var center2 = polarModel.get("center"); var width = api.getWidth(); var height = api.getHeight(); polar.cx = parsePercent$1(center2[0], width); polar.cy = parsePercent$1(center2[1], height); var radiusAxis = polar.getRadiusAxis(); var size = Math.min(width, height) / 2; var radius = polarModel.get("radius"); if (radius == null) { radius = [0, "100%"]; } else if (!isArray$1(radius)) { radius = [0, radius]; } var parsedRadius = [parsePercent$1(radius[0], size), parsePercent$1(radius[1], size)]; radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]); } function updatePolarScale(ecModel, api) { var polar = this; var angleAxis = polar.getAngleAxis(); var radiusAxis = polar.getRadiusAxis(); angleAxis.scale.setExtent(Infinity, -Infinity); radiusAxis.scale.setExtent(Infinity, -Infinity); ecModel.eachSeries(function(seriesModel) { if (seriesModel.coordinateSystem === polar) { var data_1 = seriesModel.getData(); each$g(getDataDimensionsOnAxis(data_1, "radius"), function(dim) { radiusAxis.scale.unionExtentFromData(data_1, dim); }); each$g(getDataDimensionsOnAxis(data_1, "angle"), function(dim) { angleAxis.scale.unionExtentFromData(data_1, dim); }); } }); niceScaleExtent(angleAxis.scale, angleAxis.model); niceScaleExtent(radiusAxis.scale, radiusAxis.model); if (angleAxis.type === "category" && !angleAxis.onBand) { var extent3 = angleAxis.getExtent(); var diff2 = 360 / angleAxis.scale.count(); angleAxis.inverse ? extent3[1] += diff2 : extent3[1] -= diff2; angleAxis.setExtent(extent3[0], extent3[1]); } } function isAngleAxisModel(axisModel) { return axisModel.mainType === "angleAxis"; } function setAxis(axis, axisModel) { axis.type = axisModel.get("type"); axis.scale = createScaleByModel$1(axisModel); axis.onBand = axisModel.get("boundaryGap") && axis.type === "category"; axis.inverse = axisModel.get("inverse"); if (isAngleAxisModel(axisModel)) { axis.inverse = axis.inverse !== axisModel.get("clockwise"); var startAngle = axisModel.get("startAngle"); axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360)); } axisModel.axis = axis; axis.model = axisModel; } var polarCreator = { dimensions: polarDimensions, create: function(ecModel, api) { var polarList = []; ecModel.eachComponent("polar", function(polarModel, idx) { var polar = new Polar$1(idx + ""); polar.update = updatePolarScale; var radiusAxis = polar.getRadiusAxis(); var angleAxis = polar.getAngleAxis(); var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); var angleAxisModel = polarModel.findAxisModel("angleAxis"); setAxis(radiusAxis, radiusAxisModel); setAxis(angleAxis, angleAxisModel); resizePolar(polar, polarModel, api); polarList.push(polar); polarModel.coordinateSystem = polar; polar.model = polarModel; }); ecModel.eachSeries(function(seriesModel) { if (seriesModel.get("coordinateSystem") === "polar") { var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0]; seriesModel.coordinateSystem = polarModel.coordinateSystem; } }); return polarList; } }; var polarCreator$1 = polarCreator; var elementList = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"]; function getAxisLineShape(polar, rExtent, angle) { rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse()); var start2 = polar.coordToPoint([rExtent[0], angle]); var end2 = polar.coordToPoint([rExtent[1], angle]); return { x1: start2[0], y1: start2[1], x2: end2[0], y2: end2[1] }; } function getRadiusIdx(polar) { var radiusAxis = polar.getRadiusAxis(); return radiusAxis.inverse ? 0 : 1; } function fixAngleOverlap(list2) { var firstItem = list2[0]; var lastItem = list2[list2.length - 1]; if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) { list2.pop(); } } var AngleAxisView = function(_super) { __extends$1(AngleAxisView2, _super); function AngleAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = AngleAxisView2.type; _this.axisPointerClass = "PolarAxisPointer"; return _this; } AngleAxisView2.prototype.render = function(angleAxisModel, ecModel) { this.group.removeAll(); if (!angleAxisModel.get("show")) { return; } var angleAxis = angleAxisModel.axis; var polar = angleAxis.polar; var radiusExtent = polar.getRadiusAxis().getExtent(); var ticksAngles = angleAxis.getTicksCoords(); var minorTickAngles = angleAxis.getMinorTicksCoords(); var labels = map$1(angleAxis.getViewLabels(), function(labelItem) { labelItem = clone$4(labelItem); var scale2 = angleAxis.scale; var tickValue = scale2.type === "ordinal" ? scale2.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; labelItem.coord = angleAxis.dataToCoord(tickValue); return labelItem; }); fixAngleOverlap(labels); fixAngleOverlap(ticksAngles); each$g(elementList, function(name) { if (angleAxisModel.get([name, "show"]) && (!angleAxis.scale.isBlank() || name === "axisLine")) { angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels); } }, this); }; AngleAxisView2.type = "angleAxis"; return AngleAxisView2; }(AxisView$1); var angelAxisElementsBuilders = { axisLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { var lineStyleModel = angleAxisModel.getModel(["axisLine", "lineStyle"]); var rId = getRadiusIdx(polar); var r0Id = rId ? 0 : 1; var shape; if (radiusExtent[r0Id] === 0) { shape = new Circle$1({ shape: { cx: polar.cx, cy: polar.cy, r: radiusExtent[rId] }, style: lineStyleModel.getLineStyle(), z2: 1, silent: true }); } else { shape = new Ring$1({ shape: { cx: polar.cx, cy: polar.cy, r: radiusExtent[rId], r0: radiusExtent[r0Id] }, style: lineStyleModel.getLineStyle(), z2: 1, silent: true }); } shape.style.fill = null; group.add(shape); }, axisTick: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { var tickModel = angleAxisModel.getModel("axisTick"); var tickLen = (tickModel.get("inside") ? -1 : 1) * tickModel.get("length"); var radius = radiusExtent[getRadiusIdx(polar)]; var lines = map$1(ticksAngles, function(tickAngleItem) { return new Line$3({ shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord) }); }); group.add(mergePath(lines, { style: defaults(tickModel.getModel("lineStyle").getLineStyle(), { stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) }) })); }, minorTick: function(group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) { if (!minorTickAngles.length) { return; } var tickModel = angleAxisModel.getModel("axisTick"); var minorTickModel = angleAxisModel.getModel("minorTick"); var tickLen = (tickModel.get("inside") ? -1 : 1) * minorTickModel.get("length"); var radius = radiusExtent[getRadiusIdx(polar)]; var lines = []; for (var i = 0; i < minorTickAngles.length; i++) { for (var k = 0; k < minorTickAngles[i].length; k++) { lines.push(new Line$3({ shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord) })); } } group.add(mergePath(lines, { style: defaults(minorTickModel.getModel("lineStyle").getLineStyle(), defaults(tickModel.getLineStyle(), { stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) })) })); }, axisLabel: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) { var rawCategoryData = angleAxisModel.getCategories(true); var commonLabelModel = angleAxisModel.getModel("axisLabel"); var labelMargin = commonLabelModel.get("margin"); var triggerEvent = angleAxisModel.get("triggerEvent"); each$g(labels, function(labelItem, idx) { var labelModel = commonLabelModel; var tickValue = labelItem.tickValue; var r = radiusExtent[getRadiusIdx(polar)]; var p = polar.coordToPoint([r + labelMargin, labelItem.coord]); var cx = polar.cx; var cy = polar.cy; var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? "center" : p[0] > cx ? "left" : "right"; var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? "middle" : p[1] > cy ? "top" : "bottom"; if (rawCategoryData && rawCategoryData[tickValue]) { var rawCategoryItem = rawCategoryData[tickValue]; if (isObject$3(rawCategoryItem) && rawCategoryItem.textStyle) { labelModel = new Model$1(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel); } } var textEl = new ZRText$1({ silent: AxisBuilder$1.isLabelSilent(angleAxisModel), style: createTextStyle$1(labelModel, { x: p[0], y: p[1], fill: labelModel.getTextColor() || angleAxisModel.get(["axisLine", "lineStyle", "color"]), text: labelItem.formattedLabel, align: labelTextAlign, verticalAlign: labelTextVerticalAlign }) }); group.add(textEl); if (triggerEvent) { var eventData = AxisBuilder$1.makeAxisEventDataBase(angleAxisModel); eventData.targetType = "axisLabel"; eventData.value = labelItem.rawLabel; getECData(textEl).eventData = eventData; } }, this); }, splitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { var splitLineModel = angleAxisModel.getModel("splitLine"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var lineColors = lineStyleModel.get("color"); var lineCount = 0; lineColors = lineColors instanceof Array ? lineColors : [lineColors]; var splitLines = []; for (var i = 0; i < ticksAngles.length; i++) { var colorIndex = lineCount++ % lineColors.length; splitLines[colorIndex] = splitLines[colorIndex] || []; splitLines[colorIndex].push(new Line$3({ shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord) })); } for (var i = 0; i < splitLines.length; i++) { group.add(mergePath(splitLines[i], { style: defaults({ stroke: lineColors[i % lineColors.length] }, lineStyleModel.getLineStyle()), silent: true, z: angleAxisModel.get("z") })); } }, minorSplitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { if (!minorTickAngles.length) { return; } var minorSplitLineModel = angleAxisModel.getModel("minorSplitLine"); var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); var lines = []; for (var i = 0; i < minorTickAngles.length; i++) { for (var k = 0; k < minorTickAngles[i].length; k++) { lines.push(new Line$3({ shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord) })); } } group.add(mergePath(lines, { style: lineStyleModel.getLineStyle(), silent: true, z: angleAxisModel.get("z") })); }, splitArea: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { if (!ticksAngles.length) { return; } var splitAreaModel = angleAxisModel.getModel("splitArea"); var areaStyleModel = splitAreaModel.getModel("areaStyle"); var areaColors = areaStyleModel.get("color"); var lineCount = 0; areaColors = areaColors instanceof Array ? areaColors : [areaColors]; var splitAreas = []; var RADIAN2 = Math.PI / 180; var prevAngle = -ticksAngles[0].coord * RADIAN2; var r0 = Math.min(radiusExtent[0], radiusExtent[1]); var r1 = Math.max(radiusExtent[0], radiusExtent[1]); var clockwise = angleAxisModel.get("clockwise"); for (var i = 1, len2 = ticksAngles.length; i <= len2; i++) { var coord = i === len2 ? ticksAngles[0].coord : ticksAngles[i].coord; var colorIndex = lineCount++ % areaColors.length; splitAreas[colorIndex] = splitAreas[colorIndex] || []; splitAreas[colorIndex].push(new Sector$1({ shape: { cx: polar.cx, cy: polar.cy, r0, r: r1, startAngle: prevAngle, endAngle: -coord * RADIAN2, clockwise }, silent: true })); prevAngle = -coord * RADIAN2; } for (var i = 0; i < splitAreas.length; i++) { group.add(mergePath(splitAreas[i], { style: defaults({ fill: areaColors[i % areaColors.length] }, areaStyleModel.getAreaStyle()), silent: true })); } } }; var AngleAxisView$1 = AngleAxisView; var axisBuilderAttrs$1 = ["axisLine", "axisTickLabel", "axisName"]; var selfBuilderAttrs$1 = ["splitLine", "splitArea", "minorSplitLine"]; var RadiusAxisView = function(_super) { __extends$1(RadiusAxisView2, _super); function RadiusAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadiusAxisView2.type; _this.axisPointerClass = "PolarAxisPointer"; return _this; } RadiusAxisView2.prototype.render = function(radiusAxisModel, ecModel) { this.group.removeAll(); if (!radiusAxisModel.get("show")) { return; } var oldAxisGroup = this._axisGroup; var newAxisGroup = this._axisGroup = new Group$4(); this.group.add(newAxisGroup); var radiusAxis = radiusAxisModel.axis; var polar = radiusAxis.polar; var angleAxis = polar.getAngleAxis(); var ticksCoords = radiusAxis.getTicksCoords(); var minorTicksCoords = radiusAxis.getMinorTicksCoords(); var axisAngle = angleAxis.getExtent()[0]; var radiusExtent = radiusAxis.getExtent(); var layout2 = layoutAxis(polar, radiusAxisModel, axisAngle); var axisBuilder = new AxisBuilder$1(radiusAxisModel, layout2); each$g(axisBuilderAttrs$1, axisBuilder.add, axisBuilder); newAxisGroup.add(axisBuilder.getGroup()); groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel); each$g(selfBuilderAttrs$1, function(name) { if (radiusAxisModel.get([name, "show"]) && !radiusAxis.scale.isBlank()) { axisElementBuilders$1[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords); } }, this); }; RadiusAxisView2.type = "radiusAxis"; return RadiusAxisView2; }(AxisView$1); var axisElementBuilders$1 = { splitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { var splitLineModel = radiusAxisModel.getModel("splitLine"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var lineColors = lineStyleModel.get("color"); var lineCount = 0; lineColors = lineColors instanceof Array ? lineColors : [lineColors]; var splitLines = []; for (var i = 0; i < ticksCoords.length; i++) { var colorIndex = lineCount++ % lineColors.length; splitLines[colorIndex] = splitLines[colorIndex] || []; splitLines[colorIndex].push(new Circle$1({ shape: { cx: polar.cx, cy: polar.cy, r: ticksCoords[i].coord } })); } for (var i = 0; i < splitLines.length; i++) { group.add(mergePath(splitLines[i], { style: defaults({ stroke: lineColors[i % lineColors.length], fill: null }, lineStyleModel.getLineStyle()), silent: true })); } }, minorSplitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) { if (!minorTicksCoords.length) { return; } var minorSplitLineModel = radiusAxisModel.getModel("minorSplitLine"); var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); var lines = []; for (var i = 0; i < minorTicksCoords.length; i++) { for (var k = 0; k < minorTicksCoords[i].length; k++) { lines.push(new Circle$1({ shape: { cx: polar.cx, cy: polar.cy, r: minorTicksCoords[i][k].coord } })); } } group.add(mergePath(lines, { style: defaults({ fill: null }, lineStyleModel.getLineStyle()), silent: true })); }, splitArea: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { if (!ticksCoords.length) { return; } var splitAreaModel = radiusAxisModel.getModel("splitArea"); var areaStyleModel = splitAreaModel.getModel("areaStyle"); var areaColors = areaStyleModel.get("color"); var lineCount = 0; areaColors = areaColors instanceof Array ? areaColors : [areaColors]; var splitAreas = []; var prevRadius = ticksCoords[0].coord; for (var i = 1; i < ticksCoords.length; i++) { var colorIndex = lineCount++ % areaColors.length; splitAreas[colorIndex] = splitAreas[colorIndex] || []; splitAreas[colorIndex].push(new Sector$1({ shape: { cx: polar.cx, cy: polar.cy, r0: prevRadius, r: ticksCoords[i].coord, startAngle: 0, endAngle: Math.PI * 2 }, silent: true })); prevRadius = ticksCoords[i].coord; } for (var i = 0; i < splitAreas.length; i++) { group.add(mergePath(splitAreas[i], { style: defaults({ fill: areaColors[i % areaColors.length] }, areaStyleModel.getAreaStyle()), silent: true })); } } }; function layoutAxis(polar, radiusAxisModel, axisAngle) { return { position: [polar.cx, polar.cy], rotation: axisAngle / 180 * Math.PI, labelDirection: -1, tickDirection: -1, nameDirection: 1, labelRotate: radiusAxisModel.getModel("axisLabel").get("rotate"), z2: 1 }; } var RadiusAxisView$1 = RadiusAxisView; function getSeriesStackId(seriesModel) { return seriesModel.get("stack") || "__ec_stack_" + seriesModel.seriesIndex; } function getAxisKey(polar, axis) { return axis.dim + polar.model.componentIndex; } function barLayoutPolar(seriesType2, ecModel, api) { var lastStackCoords = {}; var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType2), function(seriesModel) { return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "polar"; })); ecModel.eachSeriesByType(seriesType2, function(seriesModel) { if (seriesModel.coordinateSystem.type !== "polar") { return; } var data = seriesModel.getData(); var polar = seriesModel.coordinateSystem; var baseAxis = polar.getBaseAxis(); var axisKey = getAxisKey(polar, baseAxis); var stackId = getSeriesStackId(seriesModel); var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]; var columnOffset = columnLayoutInfo.offset; var columnWidth = columnLayoutInfo.width; var valueAxis2 = polar.getOtherAxis(baseAxis); var cx = seriesModel.coordinateSystem.cx; var cy = seriesModel.coordinateSystem.cy; var barMinHeight = seriesModel.get("barMinHeight") || 0; var barMinAngle = seriesModel.get("barMinAngle") || 0; lastStackCoords[stackId] = lastStackCoords[stackId] || []; var valueDim = data.mapDimension(valueAxis2.dim); var baseDim = data.mapDimension(baseAxis.dim); var stacked = isDimensionStacked(data, valueDim); var clampLayout = baseAxis.dim !== "radius" || !seriesModel.get("roundCap", true); var valueAxisStart = valueAxis2.dataToCoord(0); for (var idx = 0, len2 = data.count(); idx < len2; idx++) { var value = data.get(valueDim, idx); var baseValue = data.get(baseDim, idx); var sign = value >= 0 ? "p" : "n"; var baseCoord = valueAxisStart; if (stacked) { if (!lastStackCoords[stackId][baseValue]) { lastStackCoords[stackId][baseValue] = { p: valueAxisStart, n: valueAxisStart }; } baseCoord = lastStackCoords[stackId][baseValue][sign]; } var r0 = void 0; var r = void 0; var startAngle = void 0; var endAngle = void 0; if (valueAxis2.dim === "radius") { var radiusSpan = valueAxis2.dataToCoord(value) - valueAxisStart; var angle = baseAxis.dataToCoord(baseValue); if (Math.abs(radiusSpan) < barMinHeight) { radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight; } r0 = baseCoord; r = baseCoord + radiusSpan; startAngle = angle - columnOffset; endAngle = startAngle - columnWidth; stacked && (lastStackCoords[stackId][baseValue][sign] = r); } else { var angleSpan = valueAxis2.dataToCoord(value, clampLayout) - valueAxisStart; var radius = baseAxis.dataToCoord(baseValue); if (Math.abs(angleSpan) < barMinAngle) { angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle; } r0 = radius + columnOffset; r = r0 + columnWidth; startAngle = baseCoord; endAngle = baseCoord + angleSpan; stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle); } data.setItemLayout(idx, { cx, cy, r0, r, startAngle: -startAngle * Math.PI / 180, endAngle: -endAngle * Math.PI / 180, clockwise: startAngle >= endAngle }); } }); } function calRadialBar(barSeries) { var columnsMap = {}; each$g(barSeries, function(seriesModel, idx) { var data = seriesModel.getData(); var polar = seriesModel.coordinateSystem; var baseAxis = polar.getBaseAxis(); var axisKey = getAxisKey(polar, baseAxis); var axisExtent = baseAxis.getExtent(); var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); var columnsOnAxis = columnsMap[axisKey] || { bandWidth, remainedWidth: bandWidth, autoWidthCount: 0, categoryGap: "20%", gap: "30%", stacks: {} }; var stacks = columnsOnAxis.stacks; columnsMap[axisKey] = columnsOnAxis; var stackId = getSeriesStackId(seriesModel); if (!stacks[stackId]) { columnsOnAxis.autoWidthCount++; } stacks[stackId] = stacks[stackId] || { width: 0, maxWidth: 0 }; var barWidth = parsePercent$1(seriesModel.get("barWidth"), bandWidth); var barMaxWidth = parsePercent$1(seriesModel.get("barMaxWidth"), bandWidth); var barGap = seriesModel.get("barGap"); var barCategoryGap = seriesModel.get("barCategoryGap"); if (barWidth && !stacks[stackId].width) { barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); stacks[stackId].width = barWidth; columnsOnAxis.remainedWidth -= barWidth; } barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); barGap != null && (columnsOnAxis.gap = barGap); barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); }); var result = {}; each$g(columnsMap, function(columnsOnAxis, coordSysName) { result[coordSysName] = {}; var stacks = columnsOnAxis.stacks; var bandWidth = columnsOnAxis.bandWidth; var categoryGap = parsePercent$1(columnsOnAxis.categoryGap, bandWidth); var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); var remainedWidth = columnsOnAxis.remainedWidth; var autoWidthCount = columnsOnAxis.autoWidthCount; var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); autoWidth = Math.max(autoWidth, 0); each$g(stacks, function(column, stack) { var maxWidth = column.maxWidth; if (maxWidth && maxWidth < autoWidth) { maxWidth = Math.min(maxWidth, remainedWidth); if (column.width) { maxWidth = Math.min(maxWidth, column.width); } remainedWidth -= maxWidth; column.width = maxWidth; autoWidthCount--; } }); autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); autoWidth = Math.max(autoWidth, 0); var widthSum = 0; var lastColumn; each$g(stacks, function(column, idx) { if (!column.width) { column.width = autoWidth; } lastColumn = column; widthSum += column.width * (1 + barGapPercent); }); if (lastColumn) { widthSum -= lastColumn.width * barGapPercent; } var offset = -widthSum / 2; each$g(stacks, function(column, stackId) { result[coordSysName][stackId] = result[coordSysName][stackId] || { offset, width: column.width }; offset += column.width * (1 + barGapPercent); }); }); return result; } var angleAxisExtraOption = { startAngle: 90, clockwise: true, splitNumber: 12, axisLabel: { rotate: 0 } }; var radiusAxisExtraOption = { splitNumber: 5 }; var PolarView = function(_super) { __extends$1(PolarView2, _super); function PolarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PolarView2.type; return _this; } PolarView2.type = "polar"; return PolarView2; }(ComponentView$1); function install$o(registers) { use(install$q); AxisView$1.registerAxisPointerClass("PolarAxisPointer", PolarAxisPointer$1); registers.registerCoordinateSystem("polar", polarCreator$1); registers.registerComponentModel(PolarModel$1); registers.registerComponentView(PolarView); axisModelCreator(registers, "angle", AngleAxisModel, angleAxisExtraOption); axisModelCreator(registers, "radius", RadiusAxisModel, radiusAxisExtraOption); registers.registerComponentView(AngleAxisView$1); registers.registerComponentView(RadiusAxisView$1); registers.registerLayout(curry$1(barLayoutPolar, "bar")); } function layout$1(axisModel, opt) { opt = opt || {}; var single = axisModel.coordinateSystem; var axis = axisModel.axis; var layout2 = {}; var axisPosition = axis.position; var orient = axis.orient; var rect = single.getRect(); var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; var positionMap = { horizontal: { top: rectBound[2], bottom: rectBound[3] }, vertical: { left: rectBound[0], right: rectBound[1] } }; layout2.position = [orient === "vertical" ? positionMap.vertical[axisPosition] : rectBound[0], orient === "horizontal" ? positionMap.horizontal[axisPosition] : rectBound[3]]; var r = { horizontal: 0, vertical: 1 }; layout2.rotation = Math.PI / 2 * r[orient]; var directionMap = { top: -1, bottom: 1, right: 1, left: -1 }; layout2.labelDirection = layout2.tickDirection = layout2.nameDirection = directionMap[axisPosition]; if (axisModel.get(["axisTick", "inside"])) { layout2.tickDirection = -layout2.tickDirection; } if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { layout2.labelDirection = -layout2.labelDirection; } var labelRotation = opt.rotate; labelRotation == null && (labelRotation = axisModel.get(["axisLabel", "rotate"])); layout2.labelRotation = axisPosition === "top" ? -labelRotation : labelRotation; layout2.z2 = 1; return layout2; } var axisBuilderAttrs = ["axisLine", "axisTickLabel", "axisName"]; var selfBuilderAttrs = ["splitArea", "splitLine"]; var SingleAxisView = function(_super) { __extends$1(SingleAxisView2, _super); function SingleAxisView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SingleAxisView2.type; _this.axisPointerClass = "SingleAxisPointer"; return _this; } SingleAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { var group = this.group; group.removeAll(); var oldAxisGroup = this._axisGroup; this._axisGroup = new Group$4(); var layout2 = layout$1(axisModel); var axisBuilder = new AxisBuilder$1(axisModel, layout2); each$g(axisBuilderAttrs, axisBuilder.add, axisBuilder); group.add(this._axisGroup); group.add(axisBuilder.getGroup()); each$g(selfBuilderAttrs, function(name) { if (axisModel.get([name, "show"])) { axisElementBuilders[name](this, this.group, this._axisGroup, axisModel); } }, this); groupTransition(oldAxisGroup, this._axisGroup, axisModel); _super.prototype.render.call(this, axisModel, ecModel, api, payload); }; SingleAxisView2.prototype.remove = function() { rectCoordAxisHandleRemove(this); }; SingleAxisView2.type = "singleAxis"; return SingleAxisView2; }(AxisView$1); var axisElementBuilders = { splitLine: function(axisView, group, axisGroup, axisModel) { var axis = axisModel.axis; if (axis.scale.isBlank()) { return; } var splitLineModel = axisModel.getModel("splitLine"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var lineColors = lineStyleModel.get("color"); lineColors = lineColors instanceof Array ? lineColors : [lineColors]; var gridRect = axisModel.coordinateSystem.getRect(); var isHorizontal = axis.isHorizontal(); var splitLines = []; var lineCount = 0; var ticksCoords = axis.getTicksCoords({ tickModel: splitLineModel }); var p1 = []; var p2 = []; for (var i = 0; i < ticksCoords.length; ++i) { var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); if (isHorizontal) { p1[0] = tickCoord; p1[1] = gridRect.y; p2[0] = tickCoord; p2[1] = gridRect.y + gridRect.height; } else { p1[0] = gridRect.x; p1[1] = tickCoord; p2[0] = gridRect.x + gridRect.width; p2[1] = tickCoord; } var colorIndex = lineCount++ % lineColors.length; splitLines[colorIndex] = splitLines[colorIndex] || []; splitLines[colorIndex].push(new Line$3({ subPixelOptimize: true, shape: { x1: p1[0], y1: p1[1], x2: p2[0], y2: p2[1] }, silent: true })); } var lineStyle = lineStyleModel.getLineStyle(["color"]); for (var i = 0; i < splitLines.length; ++i) { group.add(mergePath(splitLines[i], { style: defaults({ stroke: lineColors[i % lineColors.length] }, lineStyle), silent: true })); } }, splitArea: function(axisView, group, axisGroup, axisModel) { rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel); } }; var SingleAxisView$1 = SingleAxisView; var SingleAxisModel = function(_super) { __extends$1(SingleAxisModel2, _super); function SingleAxisModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SingleAxisModel2.type; return _this; } SingleAxisModel2.prototype.getCoordSysModel = function() { return this; }; SingleAxisModel2.type = "singleAxis"; SingleAxisModel2.layoutMode = "box"; SingleAxisModel2.defaultOption = { left: "5%", top: "5%", right: "5%", bottom: "5%", type: "value", position: "bottom", orient: "horizontal", axisLine: { show: true, lineStyle: { width: 1, type: "solid" } }, tooltip: { show: true }, axisTick: { show: true, length: 6, lineStyle: { width: 1 } }, axisLabel: { show: true, interval: "auto" }, splitLine: { show: true, lineStyle: { type: "dashed", opacity: 0.2 } } }; return SingleAxisModel2; }(ComponentModel$1); mixin(SingleAxisModel, AxisModelCommonMixin.prototype); var SingleAxisModel$1 = SingleAxisModel; var SingleAxis = function(_super) { __extends$1(SingleAxis2, _super); function SingleAxis2(dim, scale2, coordExtent, axisType, position2) { var _this = _super.call(this, dim, scale2, coordExtent) || this; _this.type = axisType || "value"; _this.position = position2 || "bottom"; return _this; } SingleAxis2.prototype.isHorizontal = function() { var position2 = this.position; return position2 === "top" || position2 === "bottom"; }; SingleAxis2.prototype.pointToData = function(point, clamp2) { return this.coordinateSystem.pointToData(point)[0]; }; return SingleAxis2; }(Axis$1); var SingleAxis$1 = SingleAxis; var singleDimensions = ["single"]; var Single = function() { function Single2(axisModel, ecModel, api) { this.type = "single"; this.dimension = "single"; this.dimensions = singleDimensions; this.axisPointerEnabled = true; this.model = axisModel; this._init(axisModel, ecModel, api); } Single2.prototype._init = function(axisModel, ecModel, api) { var dim = this.dimension; var axis = new SingleAxis$1(dim, createScaleByModel$1(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position")); var isCategory2 = axis.type === "category"; axis.onBand = isCategory2 && axisModel.get("boundaryGap"); axis.inverse = axisModel.get("inverse"); axis.orient = axisModel.get("orient"); axisModel.axis = axis; axis.model = axisModel; axis.coordinateSystem = this; this._axis = axis; }; Single2.prototype.update = function(ecModel, api) { ecModel.eachSeries(function(seriesModel) { if (seriesModel.coordinateSystem === this) { var data_1 = seriesModel.getData(); each$g(data_1.mapDimensionsAll(this.dimension), function(dim) { this._axis.scale.unionExtentFromData(data_1, dim); }, this); niceScaleExtent(this._axis.scale, this._axis.model); } }, this); }; Single2.prototype.resize = function(axisModel, api) { this._rect = getLayoutRect({ left: axisModel.get("left"), top: axisModel.get("top"), right: axisModel.get("right"), bottom: axisModel.get("bottom"), width: axisModel.get("width"), height: axisModel.get("height") }, { width: api.getWidth(), height: api.getHeight() }); this._adjustAxis(); }; Single2.prototype.getRect = function() { return this._rect; }; Single2.prototype._adjustAxis = function() { var rect = this._rect; var axis = this._axis; var isHorizontal = axis.isHorizontal(); var extent3 = isHorizontal ? [0, rect.width] : [0, rect.height]; var idx = axis.reverse ? 1 : 0; axis.setExtent(extent3[idx], extent3[1 - idx]); this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); }; Single2.prototype._updateAxisTransform = function(axis, coordBase) { var axisExtent = axis.getExtent(); var extentSum = axisExtent[0] + axisExtent[1]; var isHorizontal = axis.isHorizontal(); axis.toGlobalCoord = isHorizontal ? function(coord) { return coord + coordBase; } : function(coord) { return extentSum - coord + coordBase; }; axis.toLocalCoord = isHorizontal ? function(coord) { return coord - coordBase; } : function(coord) { return extentSum - coord + coordBase; }; }; Single2.prototype.getAxis = function() { return this._axis; }; Single2.prototype.getBaseAxis = function() { return this._axis; }; Single2.prototype.getAxes = function() { return [this._axis]; }; Single2.prototype.getTooltipAxes = function() { return { baseAxes: [this.getAxis()], otherAxes: [] }; }; Single2.prototype.containPoint = function(point) { var rect = this.getRect(); var axis = this.getAxis(); var orient = axis.orient; if (orient === "horizontal") { return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; } else { return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; } }; Single2.prototype.pointToData = function(point) { var axis = this.getAxis(); return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))]; }; Single2.prototype.dataToPoint = function(val) { var axis = this.getAxis(); var rect = this.getRect(); var pt = []; var idx = axis.orient === "horizontal" ? 0 : 1; if (val instanceof Array) { val = val[0]; } pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; return pt; }; Single2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys$1(finder); return coordSys === this ? this.dataToPoint(value) : null; }; Single2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys$1(finder); return coordSys === this ? this.pointToData(pixel) : null; }; return Single2; }(); function getCoordSys$1(finder) { var seriesModel = finder.seriesModel; var singleModel = finder.singleAxisModel; return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; } function create(ecModel, api) { var singles = []; ecModel.eachComponent("singleAxis", function(axisModel, idx) { var single = new Single(axisModel, ecModel, api); single.name = "single_" + idx; single.resize(axisModel, api); axisModel.coordinateSystem = single; singles.push(single); }); ecModel.eachSeries(function(seriesModel) { if (seriesModel.get("coordinateSystem") === "singleAxis") { var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem; } }); return singles; } var singleCreator = { create, dimensions: singleDimensions }; var singleCreator$1 = singleCreator; var XY$1 = ["x", "y"]; var WH$1 = ["width", "height"]; var SingleAxisPointer = function(_super) { __extends$1(SingleAxisPointer2, _super); function SingleAxisPointer2() { return _super !== null && _super.apply(this, arguments) || this; } SingleAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { var axis = axisModel.axis; var coordSys = axis.coordinateSystem; var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis)); var pixelValue = coordSys.dataToPoint(value)[0]; var axisPointerType = axisPointerModel.get("type"); if (axisPointerType && axisPointerType !== "none") { var elStyle = buildElStyle(axisPointerModel); var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent); pointerOption.style = elStyle; elOption.graphicKey = pointerOption.type; elOption.pointer = pointerOption; } var layoutInfo = layout$1(axisModel); buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api); }; SingleAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { var layoutInfo = layout$1(axisModel, { labelInside: false }); layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); var position2 = getTransformedPosition(axisModel.axis, value, layoutInfo); return { x: position2[0], y: position2[1], rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) }; }; SingleAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { var axis = axisModel.axis; var coordSys = axis.coordinateSystem; var dimIndex = getPointDimIndex(axis); var axisExtent = getGlobalExtent(coordSys, dimIndex); var currPosition = [transform2.x, transform2.y]; currPosition[dimIndex] += delta[dimIndex]; currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex); var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; var cursorPoint = [cursorOtherValue, cursorOtherValue]; cursorPoint[dimIndex] = currPosition[dimIndex]; return { x: currPosition[0], y: currPosition[1], rotation: transform2.rotation, cursorPoint, tooltipOption: { verticalAlign: "middle" } }; }; return SingleAxisPointer2; }(BaseAxisPointer$1); var pointerShapeBuilder = { line: function(axis, pixelValue, otherExtent) { var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis)); return { type: "Line", subPixelOptimize: true, shape: targetShape }; }, shadow: function(axis, pixelValue, otherExtent) { var bandWidth = axis.getBandWidth(); var span = otherExtent[1] - otherExtent[0]; return { type: "Rect", shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis)) }; } }; function getPointDimIndex(axis) { return axis.isHorizontal() ? 0 : 1; } function getGlobalExtent(coordSys, dimIndex) { var rect = coordSys.getRect(); return [rect[XY$1[dimIndex]], rect[XY$1[dimIndex]] + rect[WH$1[dimIndex]]]; } var SingleAxisPointer$1 = SingleAxisPointer; var SingleView = function(_super) { __extends$1(SingleView2, _super); function SingleView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SingleView2.type; return _this; } SingleView2.type = "single"; return SingleView2; }(ComponentView$1); function install$n(registers) { use(install$q); AxisView$1.registerAxisPointerClass("SingleAxisPointer", SingleAxisPointer$1); registers.registerComponentView(SingleView); registers.registerComponentView(SingleAxisView$1); registers.registerComponentModel(SingleAxisModel$1); axisModelCreator(registers, "single", SingleAxisModel$1, SingleAxisModel$1.defaultOption); registers.registerCoordinateSystem("single", singleCreator$1); } var CalendarModel = function(_super) { __extends$1(CalendarModel2, _super); function CalendarModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CalendarModel2.type; return _this; } CalendarModel2.prototype.init = function(option, parentModel, ecModel) { var inputPositionParams = getLayoutParams(option); _super.prototype.init.apply(this, arguments); mergeAndNormalizeLayoutParams$1(option, inputPositionParams); }; CalendarModel2.prototype.mergeOption = function(option) { _super.prototype.mergeOption.apply(this, arguments); mergeAndNormalizeLayoutParams$1(this.option, option); }; CalendarModel2.prototype.getCellSize = function() { return this.option.cellSize; }; CalendarModel2.type = "calendar"; CalendarModel2.defaultOption = { zlevel: 0, z: 2, left: 80, top: 60, cellSize: 20, orient: "horizontal", splitLine: { show: true, lineStyle: { color: "#000", width: 1, type: "solid" } }, itemStyle: { color: "#fff", borderWidth: 1, borderColor: "#ccc" }, dayLabel: { show: true, firstDay: 0, position: "start", margin: "50%", color: "#000" }, monthLabel: { show: true, position: "start", margin: 5, align: "center", formatter: null, color: "#000" }, yearLabel: { show: true, position: null, margin: 30, formatter: null, color: "#ccc", fontFamily: "sans-serif", fontWeight: "bolder", fontSize: 20 } }; return CalendarModel2; }(ComponentModel$1); function mergeAndNormalizeLayoutParams$1(target, raw) { var cellSize = target.cellSize; var cellSizeArr; if (!isArray$1(cellSize)) { cellSizeArr = target.cellSize = [cellSize, cellSize]; } else { cellSizeArr = cellSize; } if (cellSizeArr.length === 1) { cellSizeArr[1] = cellSizeArr[0]; } var ignoreSize = map$1([0, 1], function(hvIdx) { if (sizeCalculable(raw, hvIdx)) { cellSizeArr[hvIdx] = "auto"; } return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== "auto"; }); mergeLayoutParam(target, raw, { type: "box", ignoreSize }); } var CalendarModel$1 = CalendarModel; var CalendarView = function(_super) { __extends$1(CalendarView2, _super); function CalendarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = CalendarView2.type; return _this; } CalendarView2.prototype.render = function(calendarModel, ecModel, api) { var group = this.group; group.removeAll(); var coordSys = calendarModel.coordinateSystem; var rangeData = coordSys.getRangeInfo(); var orient = coordSys.getOrient(); var localeModel = ecModel.getLocaleModel(); this._renderDayRect(calendarModel, rangeData, group); this._renderLines(calendarModel, rangeData, orient, group); this._renderYearText(calendarModel, rangeData, orient, group); this._renderMonthText(calendarModel, localeModel, orient, group); this._renderWeekText(calendarModel, localeModel, rangeData, orient, group); }; CalendarView2.prototype._renderDayRect = function(calendarModel, rangeData, group) { var coordSys = calendarModel.coordinateSystem; var itemRectStyleModel = calendarModel.getModel("itemStyle").getItemStyle(); var sw = coordSys.getCellWidth(); var sh = coordSys.getCellHeight(); for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) { var point = coordSys.dataToRect([i], false).tl; var rect = new Rect$3({ shape: { x: point[0], y: point[1], width: sw, height: sh }, cursor: "default", style: itemRectStyleModel }); group.add(rect); } }; CalendarView2.prototype._renderLines = function(calendarModel, rangeData, orient, group) { var self2 = this; var coordSys = calendarModel.coordinateSystem; var lineStyleModel = calendarModel.getModel(["splitLine", "lineStyle"]).getLineStyle(); var show = calendarModel.get(["splitLine", "show"]); var lineWidth = lineStyleModel.lineWidth; this._tlpoints = []; this._blpoints = []; this._firstDayOfMonth = []; this._firstDayPoints = []; var firstDay = rangeData.start; for (var i = 0; firstDay.time <= rangeData.end.time; i++) { addPoints(firstDay.formatedDate); if (i === 0) { firstDay = coordSys.getDateInfo(rangeData.start.y + "-" + rangeData.start.m); } var date = firstDay.date; date.setMonth(date.getMonth() + 1); firstDay = coordSys.getDateInfo(date); } addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate); function addPoints(date2) { self2._firstDayOfMonth.push(coordSys.getDateInfo(date2)); self2._firstDayPoints.push(coordSys.dataToRect([date2], false).tl); var points2 = self2._getLinePointsOfOneWeek(calendarModel, date2, orient); self2._tlpoints.push(points2[0]); self2._blpoints.push(points2[points2.length - 1]); show && self2._drawSplitline(points2, lineStyleModel, group); } show && this._drawSplitline(self2._getEdgesPoints(self2._tlpoints, lineWidth, orient), lineStyleModel, group); show && this._drawSplitline(self2._getEdgesPoints(self2._blpoints, lineWidth, orient), lineStyleModel, group); }; CalendarView2.prototype._getEdgesPoints = function(points2, lineWidth, orient) { var rs = [points2[0].slice(), points2[points2.length - 1].slice()]; var idx = orient === "horizontal" ? 0 : 1; rs[0][idx] = rs[0][idx] - lineWidth / 2; rs[1][idx] = rs[1][idx] + lineWidth / 2; return rs; }; CalendarView2.prototype._drawSplitline = function(points2, lineStyle, group) { var poyline = new Polyline$3({ z2: 20, shape: { points: points2 }, style: lineStyle }); group.add(poyline); }; CalendarView2.prototype._getLinePointsOfOneWeek = function(calendarModel, date, orient) { var coordSys = calendarModel.coordinateSystem; var parsedDate = coordSys.getDateInfo(date); var points2 = []; for (var i = 0; i < 7; i++) { var tmpD = coordSys.getNextNDay(parsedDate.time, i); var point = coordSys.dataToRect([tmpD.time], false); points2[2 * tmpD.day] = point.tl; points2[2 * tmpD.day + 1] = point[orient === "horizontal" ? "bl" : "tr"]; } return points2; }; CalendarView2.prototype._formatterLabel = function(formatter, params) { if (typeof formatter === "string" && formatter) { return formatTplSimple(formatter, params); } if (typeof formatter === "function") { return formatter(params); } return params.nameMap; }; CalendarView2.prototype._yearTextPositionControl = function(textEl, point, orient, position2, margin) { var x = point[0]; var y = point[1]; var aligns = ["center", "bottom"]; if (position2 === "bottom") { y += margin; aligns = ["center", "top"]; } else if (position2 === "left") { x -= margin; } else if (position2 === "right") { x += margin; aligns = ["center", "top"]; } else { y -= margin; } var rotate2 = 0; if (position2 === "left" || position2 === "right") { rotate2 = Math.PI / 2; } return { rotation: rotate2, x, y, style: { align: aligns[0], verticalAlign: aligns[1] } }; }; CalendarView2.prototype._renderYearText = function(calendarModel, rangeData, orient, group) { var yearLabel = calendarModel.getModel("yearLabel"); if (!yearLabel.get("show")) { return; } var margin = yearLabel.get("margin"); var pos = yearLabel.get("position"); if (!pos) { pos = orient !== "horizontal" ? "top" : "left"; } var points2 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; var xc = (points2[0][0] + points2[1][0]) / 2; var yc = (points2[0][1] + points2[1][1]) / 2; var idx = orient === "horizontal" ? 0 : 1; var posPoints = { top: [xc, points2[idx][1]], bottom: [xc, points2[1 - idx][1]], left: [points2[1 - idx][0], yc], right: [points2[idx][0], yc] }; var name = rangeData.start.y; if (+rangeData.end.y > +rangeData.start.y) { name = name + "-" + rangeData.end.y; } var formatter = yearLabel.get("formatter"); var params = { start: rangeData.start.y, end: rangeData.end.y, nameMap: name }; var content = this._formatterLabel(formatter, params); var yearText = new ZRText$1({ z2: 30, style: createTextStyle$1(yearLabel, { text: content }) }); yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin)); group.add(yearText); }; CalendarView2.prototype._monthTextPositionControl = function(point, isCenter, orient, position2, margin) { var align = "left"; var vAlign = "top"; var x = point[0]; var y = point[1]; if (orient === "horizontal") { y = y + margin; if (isCenter) { align = "center"; } if (position2 === "start") { vAlign = "bottom"; } } else { x = x + margin; if (isCenter) { vAlign = "middle"; } if (position2 === "start") { align = "right"; } } return { x, y, align, verticalAlign: vAlign }; }; CalendarView2.prototype._renderMonthText = function(calendarModel, localeModel, orient, group) { var monthLabel = calendarModel.getModel("monthLabel"); if (!monthLabel.get("show")) { return; } var nameMap = monthLabel.get("nameMap"); var margin = monthLabel.get("margin"); var pos = monthLabel.get("position"); var align = monthLabel.get("align"); var termPoints = [this._tlpoints, this._blpoints]; if (!nameMap || isString(nameMap)) { if (nameMap) { localeModel = getLocaleModel(nameMap) || localeModel; } nameMap = localeModel.get(["time", "monthAbbr"]) || []; } var idx = pos === "start" ? 0 : 1; var axis = orient === "horizontal" ? 0 : 1; margin = pos === "start" ? -margin : margin; var isCenter = align === "center"; for (var i = 0; i < termPoints[idx].length - 1; i++) { var tmp = termPoints[idx][i].slice(); var firstDay = this._firstDayOfMonth[i]; if (isCenter) { var firstDayPoints = this._firstDayPoints[i]; tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2; } var formatter = monthLabel.get("formatter"); var name_1 = nameMap[+firstDay.m - 1]; var params = { yyyy: firstDay.y, yy: (firstDay.y + "").slice(2), MM: firstDay.m, M: +firstDay.m, nameMap: name_1 }; var content = this._formatterLabel(formatter, params); var monthText = new ZRText$1({ z2: 30, style: extend(createTextStyle$1(monthLabel, { text: content }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)) }); group.add(monthText); } }; CalendarView2.prototype._weekTextPositionControl = function(point, orient, position2, margin, cellSize) { var align = "center"; var vAlign = "middle"; var x = point[0]; var y = point[1]; var isStart = position2 === "start"; if (orient === "horizontal") { x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2; align = isStart ? "right" : "left"; } else { y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2; vAlign = isStart ? "bottom" : "top"; } return { x, y, align, verticalAlign: vAlign }; }; CalendarView2.prototype._renderWeekText = function(calendarModel, localeModel, rangeData, orient, group) { var dayLabel = calendarModel.getModel("dayLabel"); if (!dayLabel.get("show")) { return; } var coordSys = calendarModel.coordinateSystem; var pos = dayLabel.get("position"); var nameMap = dayLabel.get("nameMap"); var margin = dayLabel.get("margin"); var firstDayOfWeek = coordSys.getFirstDayOfWeek(); if (!nameMap || isString(nameMap)) { if (nameMap) { localeModel = getLocaleModel(nameMap) || localeModel; } var dayOfWeekShort = localeModel.get(["time", "dayOfWeekShort"]); nameMap = dayOfWeekShort || map$1(localeModel.get(["time", "dayOfWeekAbbr"]), function(val) { return val[0]; }); } var start2 = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time; var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]; margin = parsePercent$1(margin, Math.min(cellSize[1], cellSize[0])); if (pos === "start") { start2 = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time; margin = -margin; } for (var i = 0; i < 7; i++) { var tmpD = coordSys.getNextNDay(start2, i); var point = coordSys.dataToRect([tmpD.time], false).center; var day = i; day = Math.abs((i + firstDayOfWeek) % 7); var weekText = new ZRText$1({ z2: 30, style: extend(createTextStyle$1(dayLabel, { text: nameMap[day] }), this._weekTextPositionControl(point, orient, pos, margin, cellSize)) }); group.add(weekText); } }; CalendarView2.type = "calendar"; return CalendarView2; }(ComponentView$1); var CalendarView$1 = CalendarView; var PROXIMATE_ONE_DAY = 864e5; var Calendar = function() { function Calendar2(calendarModel, ecModel, api) { this.type = "calendar"; this.dimensions = Calendar2.dimensions; this.getDimensionsInfo = Calendar2.getDimensionsInfo; this._model = calendarModel; } Calendar2.getDimensionsInfo = function() { return [{ name: "time", type: "time" }, "value"]; }; Calendar2.prototype.getRangeInfo = function() { return this._rangeInfo; }; Calendar2.prototype.getModel = function() { return this._model; }; Calendar2.prototype.getRect = function() { return this._rect; }; Calendar2.prototype.getCellWidth = function() { return this._sw; }; Calendar2.prototype.getCellHeight = function() { return this._sh; }; Calendar2.prototype.getOrient = function() { return this._orient; }; Calendar2.prototype.getFirstDayOfWeek = function() { return this._firstDayOfWeek; }; Calendar2.prototype.getDateInfo = function(date) { date = parseDate(date); var y = date.getFullYear(); var m2 = date.getMonth() + 1; var mStr = m2 < 10 ? "0" + m2 : "" + m2; var d = date.getDate(); var dStr = d < 10 ? "0" + d : "" + d; var day = date.getDay(); day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7); return { y: y + "", m: mStr, d: dStr, day, time: date.getTime(), formatedDate: y + "-" + mStr + "-" + dStr, date }; }; Calendar2.prototype.getNextNDay = function(date, n) { n = n || 0; if (n === 0) { return this.getDateInfo(date); } date = new Date(this.getDateInfo(date).time); date.setDate(date.getDate() + n); return this.getDateInfo(date); }; Calendar2.prototype.update = function(ecModel, api) { this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"); this._orient = this._model.get("orient"); this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0; this._rangeInfo = this._getRangeInfo(this._initRangeOption()); var weeks = this._rangeInfo.weeks || 1; var whNames = ["width", "height"]; var cellSize = this._model.getCellSize().slice(); var layoutParams = this._model.getBoxLayoutParams(); var cellNumbers = this._orient === "horizontal" ? [weeks, 7] : [7, weeks]; each$g([0, 1], function(idx) { if (cellSizeSpecified(cellSize, idx)) { layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]; } }); var whGlobal = { width: api.getWidth(), height: api.getHeight() }; var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal); each$g([0, 1], function(idx) { if (!cellSizeSpecified(cellSize, idx)) { cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]; } }); function cellSizeSpecified(cellSize2, idx) { return cellSize2[idx] != null && cellSize2[idx] !== "auto"; } this._sw = cellSize[0]; this._sh = cellSize[1]; }; Calendar2.prototype.dataToPoint = function(data, clamp2) { isArray$1(data) && (data = data[0]); clamp2 == null && (clamp2 = true); var dayInfo = this.getDateInfo(data); var range = this._rangeInfo; var date = dayInfo.formatedDate; if (clamp2 && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) { return [NaN, NaN]; } var week = dayInfo.day; var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek; if (this._orient === "vertical") { return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2]; } return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2]; }; Calendar2.prototype.pointToData = function(point) { var date = this.pointToDate(point); return date && date.time; }; Calendar2.prototype.dataToRect = function(data, clamp2) { var point = this.dataToPoint(data, clamp2); return { contentShape: { x: point[0] - (this._sw - this._lineWidth) / 2, y: point[1] - (this._sh - this._lineWidth) / 2, width: this._sw - this._lineWidth, height: this._sh - this._lineWidth }, center: point, tl: [point[0] - this._sw / 2, point[1] - this._sh / 2], tr: [point[0] + this._sw / 2, point[1] - this._sh / 2], br: [point[0] + this._sw / 2, point[1] + this._sh / 2], bl: [point[0] - this._sw / 2, point[1] + this._sh / 2] }; }; Calendar2.prototype.pointToDate = function(point) { var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1; var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1; var range = this._rangeInfo.range; if (this._orient === "vertical") { return this._getDateByWeeksAndDay(nthY, nthX - 1, range); } return this._getDateByWeeksAndDay(nthX, nthY - 1, range); }; Calendar2.prototype.convertToPixel = function(ecModel, finder, value) { var coordSys = getCoordSys(finder); return coordSys === this ? coordSys.dataToPoint(value) : null; }; Calendar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { var coordSys = getCoordSys(finder); return coordSys === this ? coordSys.pointToData(pixel) : null; }; Calendar2.prototype.containPoint = function(point) { console.warn("Not implemented."); return false; }; Calendar2.prototype._initRangeOption = function() { var range = this._model.get("range"); var normalizedRange; if (isArray$1(range) && range.length === 1) { range = range[0]; } if (!isArray$1(range)) { var rangeStr = range.toString(); if (/^\d{4}$/.test(rangeStr)) { normalizedRange = [rangeStr + "-01-01", rangeStr + "-12-31"]; } if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) { var start2 = this.getDateInfo(rangeStr); var firstDay = start2.date; firstDay.setMonth(firstDay.getMonth() + 1); var end2 = this.getNextNDay(firstDay, -1); normalizedRange = [start2.formatedDate, end2.formatedDate]; } if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) { normalizedRange = [rangeStr, rangeStr]; } } else { normalizedRange = range; } if (!normalizedRange) { return range; } var tmp = this._getRangeInfo(normalizedRange); if (tmp.start.time > tmp.end.time) { normalizedRange.reverse(); } return normalizedRange; }; Calendar2.prototype._getRangeInfo = function(range) { var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])]; var reversed; if (parsedRange[0].time > parsedRange[1].time) { reversed = true; parsedRange.reverse(); } var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1; var date = new Date(parsedRange[0].time); var startDateNum = date.getDate(); var endDateNum = parsedRange[1].date.getDate(); date.setDate(startDateNum + allDay - 1); var dateNum = date.getDate(); if (dateNum !== endDateNum) { var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1; while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) { allDay -= sign; date.setDate(dateNum - sign); } } var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7); var nthWeek = reversed ? -weeks + 1 : weeks - 1; reversed && parsedRange.reverse(); return { range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate], start: parsedRange[0], end: parsedRange[1], allDay, weeks, nthWeek, fweek: parsedRange[0].day, lweek: parsedRange[1].day }; }; Calendar2.prototype._getDateByWeeksAndDay = function(nthWeek, day, range) { var rangeInfo = this._getRangeInfo(range); if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) { return null; } var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day; var date = new Date(rangeInfo.start.time); date.setDate(+rangeInfo.start.d + nthDay); return this.getDateInfo(date); }; Calendar2.create = function(ecModel, api) { var calendarList = []; ecModel.eachComponent("calendar", function(calendarModel) { var calendar2 = new Calendar2(calendarModel, ecModel, api); calendarList.push(calendar2); calendarModel.coordinateSystem = calendar2; }); ecModel.eachSeries(function(calendarSeries) { if (calendarSeries.get("coordinateSystem") === "calendar") { calendarSeries.coordinateSystem = calendarList[calendarSeries.get("calendarIndex") || 0]; } }); return calendarList; }; Calendar2.dimensions = ["time", "value"]; return Calendar2; }(); function getCoordSys(finder) { var calendarModel = finder.calendarModel; var seriesModel = finder.seriesModel; var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null; return coordSys; } var Calendar$1 = Calendar; function install$m(registers) { registers.registerComponentModel(CalendarModel$1); registers.registerComponentView(CalendarView$1); registers.registerCoordinateSystem("calendar", Calendar$1); } var inner$7 = makeInner(); var _nonShapeGraphicElements = { path: null, compoundPath: null, group: Group$4, image: ZRImage$1, text: ZRText$1 }; var preprocessor = function(option) { var graphicOption = option.graphic; if (isArray$1(graphicOption)) { if (!graphicOption[0] || !graphicOption[0].elements) { option.graphic = [{ elements: graphicOption }]; } else { option.graphic = [option.graphic[0]]; } } else if (graphicOption && !graphicOption.elements) { option.graphic = [{ elements: [graphicOption] }]; } }; var GraphicComponentModel = function(_super) { __extends$1(GraphicComponentModel2, _super); function GraphicComponentModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GraphicComponentModel2.type; _this.preventAutoZ = true; return _this; } GraphicComponentModel2.prototype.mergeOption = function(option, ecModel) { var elements = this.option.elements; this.option.elements = null; _super.prototype.mergeOption.call(this, option, ecModel); this.option.elements = elements; }; GraphicComponentModel2.prototype.optionUpdated = function(newOption, isInit) { var thisOption = this.option; var newList = (isInit ? thisOption : newOption).elements; var existList = thisOption.elements = isInit ? [] : thisOption.elements; var flattenedList = []; this._flatten(newList, flattenedList, null); var mappingResult = mappingToExists(existList, flattenedList, "normalMerge"); var elOptionsToUpdate = this._elOptionsToUpdate = []; each$g(mappingResult, function(resultItem, index) { var newElOption = resultItem.newOption; if (!newElOption) { return; } elOptionsToUpdate.push(newElOption); setKeyInfoToNewElOption(resultItem, newElOption); mergeNewElOptionToExist(existList, index, newElOption); setLayoutInfoToExist(existList[index], newElOption); }, this); for (var i = existList.length - 1; i >= 0; i--) { if (existList[i] == null) { existList.splice(i, 1); } else { delete existList[i].$action; } } }; GraphicComponentModel2.prototype._flatten = function(optionList, result, parentOption) { each$g(optionList, function(option) { if (!option) { return; } if (parentOption) { option.parentOption = parentOption; } result.push(option); var children = option.children; if (option.type === "group" && children) { this._flatten(children, result, option); } delete option.children; }, this); }; GraphicComponentModel2.prototype.useElOptionsToUpdate = function() { var els = this._elOptionsToUpdate; this._elOptionsToUpdate = null; return els; }; GraphicComponentModel2.type = "graphic"; GraphicComponentModel2.defaultOption = { elements: [] }; return GraphicComponentModel2; }(ComponentModel$1); var GraphicComponentView = function(_super) { __extends$1(GraphicComponentView2, _super); function GraphicComponentView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GraphicComponentView2.type; return _this; } GraphicComponentView2.prototype.init = function() { this._elMap = createHashMap(); }; GraphicComponentView2.prototype.render = function(graphicModel, ecModel, api) { if (graphicModel !== this._lastGraphicModel) { this._clear(); } this._lastGraphicModel = graphicModel; this._updateElements(graphicModel); this._relocate(graphicModel, api); }; GraphicComponentView2.prototype._updateElements = function(graphicModel) { var elOptionsToUpdate = graphicModel.useElOptionsToUpdate(); if (!elOptionsToUpdate) { return; } var elMap = this._elMap; var rootGroup = this.group; each$g(elOptionsToUpdate, function(elOption) { var id = convertOptionIdName(elOption.id, null); var elExisting = id != null ? elMap.get(id) : null; var parentId = convertOptionIdName(elOption.parentId, null); var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup; var elType = elOption.type; var elOptionStyle = elOption.style; if (elType === "text" && elOptionStyle) { if (elOption.hv && elOption.hv[1]) { elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null; } } var textContentOption = elOption.textContent; var textConfig = elOption.textConfig; if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) { var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true); if (!textConfig && convertResult.textConfig) { textConfig = elOption.textConfig = convertResult.textConfig; } if (!textContentOption && convertResult.textContent) { textContentOption = convertResult.textContent; } } var elOptionCleaned = getCleanedElOption(elOption); var $action = elOption.$action || "merge"; if ($action === "merge") { elExisting ? elExisting.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap); } else if ($action === "replace") { removeEl$1(elExisting, elMap); createEl(id, targetElParent, elOptionCleaned, elMap); } else if ($action === "remove") { removeEl$1(elExisting, elMap); } var el = elMap.get(id); if (el && textContentOption) { if ($action === "merge") { var textContentExisting = el.getTextContent(); textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new ZRText$1(textContentOption)); } else if ($action === "replace") { el.setTextContent(new ZRText$1(textContentOption)); } } if (el) { var elInner = inner$7(el); elInner.__ecGraphicWidthOption = elOption.width; elInner.__ecGraphicHeightOption = elOption.height; setEventData(el, graphicModel, elOption); setTooltipConfig({ el, componentModel: graphicModel, itemName: el.name, itemTooltipOption: elOption.tooltip }); } }); }; GraphicComponentView2.prototype._relocate = function(graphicModel, api) { var elOptions = graphicModel.option.elements; var rootGroup = this.group; var elMap = this._elMap; var apiWidth = api.getWidth(); var apiHeight = api.getHeight(); for (var i = 0; i < elOptions.length; i++) { var elOption = elOptions[i]; var id = convertOptionIdName(elOption.id, null); var el = id != null ? elMap.get(id) : null; if (!el || !el.isGroup) { continue; } var parentEl = el.parent; var isParentRoot = parentEl === rootGroup; var elInner = inner$7(el); var parentElInner = inner$7(parentEl); elInner.__ecGraphicWidth = parsePercent$1(elInner.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentElInner.__ecGraphicWidth) || 0; elInner.__ecGraphicHeight = parsePercent$1(elInner.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentElInner.__ecGraphicHeight) || 0; } for (var i = elOptions.length - 1; i >= 0; i--) { var elOption = elOptions[i]; var id = convertOptionIdName(elOption.id, null); var el = id != null ? elMap.get(id) : null; if (!el) { continue; } var parentEl = el.parent; var parentElInner = inner$7(parentEl); var containerInfo = parentEl === rootGroup ? { width: apiWidth, height: apiHeight } : { width: parentElInner.__ecGraphicWidth, height: parentElInner.__ecGraphicHeight }; positionElement(el, elOption, containerInfo, null, { hv: elOption.hv, boundingMode: elOption.bounding }); } }; GraphicComponentView2.prototype._clear = function() { var elMap = this._elMap; elMap.each(function(el) { removeEl$1(el, elMap); }); this._elMap = createHashMap(); }; GraphicComponentView2.prototype.dispose = function() { this._clear(); }; GraphicComponentView2.type = "graphic"; return GraphicComponentView2; }(ComponentView$1); function createEl(id, targetElParent, elOption, elMap) { var graphicType = elOption.type; var Clz = hasOwn(_nonShapeGraphicElements, graphicType) ? _nonShapeGraphicElements[graphicType] : getShapeClass(graphicType); var el = new Clz(elOption); targetElParent.add(el); elMap.set(id, el); inner$7(el).__ecGraphicId = id; } function removeEl$1(elExisting, elMap) { var existElParent = elExisting && elExisting.parent; if (existElParent) { elExisting.type === "group" && elExisting.traverse(function(el) { removeEl$1(el, elMap); }); elMap.removeKey(inner$7(elExisting).__ecGraphicId); existElParent.remove(elExisting); } } function getCleanedElOption(elOption) { elOption = extend({}, elOption); each$g(["id", "parentId", "$action", "hv", "bounding", "textContent"].concat(LOCATION_PARAMS), function(name) { delete elOption[name]; }); return elOption; } function isSetLoc(obj, props) { var isSet; each$g(props, function(prop) { obj[prop] != null && obj[prop] !== "auto" && (isSet = true); }); return isSet; } function setKeyInfoToNewElOption(resultItem, newElOption) { var existElOption = resultItem.existing; newElOption.id = resultItem.keyInfo.id; !newElOption.type && existElOption && (newElOption.type = existElOption.type); if (newElOption.parentId == null) { var newElParentOption = newElOption.parentOption; if (newElParentOption) { newElOption.parentId = newElParentOption.id; } else if (existElOption) { newElOption.parentId = existElOption.parentId; } } newElOption.parentOption = null; } function mergeNewElOptionToExist(existList, index, newElOption) { var newElOptCopy = extend({}, newElOption); var existElOption = existList[index]; var $action = newElOption.$action || "merge"; if ($action === "merge") { if (existElOption) { merge(existElOption, newElOptCopy, true); mergeLayoutParam(existElOption, newElOptCopy, { ignoreSize: true }); copyLayoutParams(newElOption, existElOption); } else { existList[index] = newElOptCopy; } } else if ($action === "replace") { existList[index] = newElOptCopy; } else if ($action === "remove") { existElOption && (existList[index] = null); } } function setLayoutInfoToExist(existItem, newElOption) { if (!existItem) { return; } existItem.hv = newElOption.hv = [ isSetLoc(newElOption, ["left", "right"]), isSetLoc(newElOption, ["top", "bottom"]) ]; if (existItem.type === "group") { var existingGroupOpt = existItem; var newGroupOpt = newElOption; existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0); existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0); } } function setEventData(el, graphicModel, elOption) { var eventData = getECData(el).eventData; if (!el.silent && !el.ignore && !eventData) { eventData = getECData(el).eventData = { componentType: "graphic", componentIndex: graphicModel.componentIndex, name: el.name }; } if (eventData) { eventData.info = elOption.info; } } function install$l(registers) { registers.registerComponentModel(GraphicComponentModel); registers.registerComponentView(GraphicComponentView); registers.registerPreprocessor(preprocessor); } var DATA_ZOOM_AXIS_DIMENSIONS = ["x", "y", "radius", "angle", "single"]; var SERIES_COORDS = ["cartesian2d", "polar", "singleAxis"]; function isCoordSupported(seriesModel) { var coordType = seriesModel.get("coordinateSystem"); return indexOf(SERIES_COORDS, coordType) >= 0; } function getAxisMainType(axisDim) { return axisDim + "Axis"; } function findEffectedDataZooms(ecModel, payload) { var axisRecords = createHashMap(); var effectedModels = []; var effectedModelMap = createHashMap(); ecModel.eachComponent({ mainType: "dataZoom", query: payload }, function(dataZoomModel) { if (!effectedModelMap.get(dataZoomModel.uid)) { addToEffected(dataZoomModel); } }); var foundNewLink; do { foundNewLink = false; ecModel.eachComponent("dataZoom", processSingle); } while (foundNewLink); function processSingle(dataZoomModel) { if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) { addToEffected(dataZoomModel); foundNewLink = true; } } function addToEffected(dataZoom) { effectedModelMap.set(dataZoom.uid, true); effectedModels.push(dataZoom); markAxisControlled(dataZoom); } function isLinked(dataZoomModel) { var isLink = false; dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { var axisIdxArr = axisRecords.get(axisDim); if (axisIdxArr && axisIdxArr[axisIndex]) { isLink = true; } }); return isLink; } function markAxisControlled(dataZoomModel) { dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true; }); } return effectedModels; } function collectReferCoordSysModelInfo(dataZoomModel) { var ecModel = dataZoomModel.ecModel; var coordSysInfoWrap = { infoList: [], infoMap: createHashMap() }; dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); if (!axisModel) { return; } var coordSysModel = axisModel.getCoordSysModel(); if (!coordSysModel) { return; } var coordSysUid = coordSysModel.uid; var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid); if (!coordSysInfo) { coordSysInfo = { model: coordSysModel, axisModels: [] }; coordSysInfoWrap.infoList.push(coordSysInfo); coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo); } coordSysInfo.axisModels.push(axisModel); }); return coordSysInfoWrap; } var DataZoomAxisInfo = function() { function DataZoomAxisInfo2() { this.indexList = []; this.indexMap = []; } DataZoomAxisInfo2.prototype.add = function(axisCmptIdx) { if (!this.indexMap[axisCmptIdx]) { this.indexList.push(axisCmptIdx); this.indexMap[axisCmptIdx] = true; } }; return DataZoomAxisInfo2; }(); var DataZoomModel = function(_super) { __extends$1(DataZoomModel2, _super); function DataZoomModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = DataZoomModel2.type; _this._autoThrottle = true; _this._noTarget = true; _this._rangePropMode = ["percent", "percent"]; return _this; } DataZoomModel2.prototype.init = function(option, parentModel, ecModel) { var inputRawOption = retrieveRawOption(option); this.settledOption = inputRawOption; this.mergeDefaultAndTheme(option, ecModel); this._doInit(inputRawOption); }; DataZoomModel2.prototype.mergeOption = function(newOption) { var inputRawOption = retrieveRawOption(newOption); merge(this.option, newOption, true); merge(this.settledOption, inputRawOption, true); this._doInit(inputRawOption); }; DataZoomModel2.prototype._doInit = function(inputRawOption) { var thisOption = this.option; this._setDefaultThrottle(inputRawOption); this._updateRangeUse(inputRawOption); var settledOption = this.settledOption; each$g([["start", "startValue"], ["end", "endValue"]], function(names, index) { if (this._rangePropMode[index] === "value") { thisOption[names[0]] = settledOption[names[0]] = null; } }, this); this._resetTarget(); }; DataZoomModel2.prototype._resetTarget = function() { var optionOrient = this.get("orient", true); var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap(); var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap); if (hasAxisSpecified) { this._orient = optionOrient || this._makeAutoOrientByTargetAxis(); } else { this._orient = optionOrient || "horizontal"; this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient); } this._noTarget = true; targetAxisIndexMap.each(function(axisInfo) { if (axisInfo.indexList.length) { this._noTarget = false; } }, this); }; DataZoomModel2.prototype._fillSpecifiedTargetAxis = function(targetAxisIndexMap) { var hasAxisSpecified = false; each$g(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim) { var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING); if (!refering.specified) { return; } hasAxisSpecified = true; var axisInfo = new DataZoomAxisInfo(); each$g(refering.models, function(axisModel) { axisInfo.add(axisModel.componentIndex); }); targetAxisIndexMap.set(axisDim, axisInfo); }, this); return hasAxisSpecified; }; DataZoomModel2.prototype._fillAutoTargetAxisByOrient = function(targetAxisIndexMap, orient) { var ecModel = this.ecModel; var needAuto = true; if (needAuto) { var axisDim = orient === "vertical" ? "y" : "x"; var axisModels = ecModel.findComponents({ mainType: axisDim + "Axis" }); setParallelAxis(axisModels, axisDim); } if (needAuto) { var axisModels = ecModel.findComponents({ mainType: "singleAxis", filter: function(axisModel) { return axisModel.get("orient", true) === orient; } }); setParallelAxis(axisModels, "single"); } function setParallelAxis(axisModels2, axisDim2) { var axisModel = axisModels2[0]; if (!axisModel) { return; } var axisInfo = new DataZoomAxisInfo(); axisInfo.add(axisModel.componentIndex); targetAxisIndexMap.set(axisDim2, axisInfo); needAuto = false; if (axisDim2 === "x" || axisDim2 === "y") { var gridModel_1 = axisModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]; gridModel_1 && each$g(axisModels2, function(axModel) { if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]) { axisInfo.add(axModel.componentIndex); } }); } } if (needAuto) { each$g(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim2) { if (!needAuto) { return; } var axisModels2 = ecModel.findComponents({ mainType: getAxisMainType(axisDim2), filter: function(axisModel) { return axisModel.get("type", true) === "category"; } }); if (axisModels2[0]) { var axisInfo = new DataZoomAxisInfo(); axisInfo.add(axisModels2[0].componentIndex); targetAxisIndexMap.set(axisDim2, axisInfo); needAuto = false; } }, this); } }; DataZoomModel2.prototype._makeAutoOrientByTargetAxis = function() { var dim; this.eachTargetAxis(function(axisDim) { !dim && (dim = axisDim); }, this); return dim === "y" ? "vertical" : "horizontal"; }; DataZoomModel2.prototype._setDefaultThrottle = function(inputRawOption) { if (inputRawOption.hasOwnProperty("throttle")) { this._autoThrottle = false; } if (this._autoThrottle) { var globalOption = this.ecModel.option; this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20; } }; DataZoomModel2.prototype._updateRangeUse = function(inputRawOption) { var rangePropMode = this._rangePropMode; var rangeModeInOption = this.get("rangeMode"); each$g([["start", "startValue"], ["end", "endValue"]], function(names, index) { var percentSpecified = inputRawOption[names[0]] != null; var valueSpecified = inputRawOption[names[1]] != null; if (percentSpecified && !valueSpecified) { rangePropMode[index] = "percent"; } else if (!percentSpecified && valueSpecified) { rangePropMode[index] = "value"; } else if (rangeModeInOption) { rangePropMode[index] = rangeModeInOption[index]; } else if (percentSpecified) { rangePropMode[index] = "percent"; } }); }; DataZoomModel2.prototype.noTarget = function() { return this._noTarget; }; DataZoomModel2.prototype.getFirstTargetAxisModel = function() { var firstAxisModel; this.eachTargetAxis(function(axisDim, axisIndex) { if (firstAxisModel == null) { firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); } }, this); return firstAxisModel; }; DataZoomModel2.prototype.eachTargetAxis = function(callback, context) { this._targetAxisInfoMap.each(function(axisInfo, axisDim) { each$g(axisInfo.indexList, function(axisIndex) { callback.call(context, axisDim, axisIndex); }); }); }; DataZoomModel2.prototype.getAxisProxy = function(axisDim, axisIndex) { var axisModel = this.getAxisModel(axisDim, axisIndex); if (axisModel) { return axisModel.__dzAxisProxy; } }; DataZoomModel2.prototype.getAxisModel = function(axisDim, axisIndex) { var axisInfo = this._targetAxisInfoMap.get(axisDim); if (axisInfo && axisInfo.indexMap[axisIndex]) { return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); } }; DataZoomModel2.prototype.setRawRange = function(opt) { var thisOption = this.option; var settledOption = this.settledOption; each$g([["start", "startValue"], ["end", "endValue"]], function(names) { if (opt[names[0]] != null || opt[names[1]] != null) { thisOption[names[0]] = settledOption[names[0]] = opt[names[0]]; thisOption[names[1]] = settledOption[names[1]] = opt[names[1]]; } }, this); this._updateRangeUse(opt); }; DataZoomModel2.prototype.setCalculatedRange = function(opt) { var option = this.option; each$g(["start", "startValue", "end", "endValue"], function(name) { option[name] = opt[name]; }); }; DataZoomModel2.prototype.getPercentRange = function() { var axisProxy = this.findRepresentativeAxisProxy(); if (axisProxy) { return axisProxy.getDataPercentWindow(); } }; DataZoomModel2.prototype.getValueRange = function(axisDim, axisIndex) { if (axisDim == null && axisIndex == null) { var axisProxy = this.findRepresentativeAxisProxy(); if (axisProxy) { return axisProxy.getDataValueWindow(); } } else { return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow(); } }; DataZoomModel2.prototype.findRepresentativeAxisProxy = function(axisModel) { if (axisModel) { return axisModel.__dzAxisProxy; } var firstProxy; var axisDimList = this._targetAxisInfoMap.keys(); for (var i = 0; i < axisDimList.length; i++) { var axisDim = axisDimList[i]; var axisInfo = this._targetAxisInfoMap.get(axisDim); for (var j = 0; j < axisInfo.indexList.length; j++) { var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]); if (proxy.hostedBy(this)) { return proxy; } if (!firstProxy) { firstProxy = proxy; } } } return firstProxy; }; DataZoomModel2.prototype.getRangePropMode = function() { return this._rangePropMode.slice(); }; DataZoomModel2.prototype.getOrient = function() { return this._orient; }; DataZoomModel2.type = "dataZoom"; DataZoomModel2.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"]; DataZoomModel2.defaultOption = { zlevel: 0, z: 4, filterMode: "filter", start: 0, end: 100 }; return DataZoomModel2; }(ComponentModel$1); function retrieveRawOption(option) { var ret = {}; each$g(["start", "end", "startValue", "endValue", "throttle"], function(name) { option.hasOwnProperty(name) && (ret[name] = option[name]); }); return ret; } var DataZoomModel$1 = DataZoomModel; var SelectDataZoomModel = function(_super) { __extends$1(SelectDataZoomModel2, _super); function SelectDataZoomModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SelectDataZoomModel2.type; return _this; } SelectDataZoomModel2.type = "dataZoom.select"; return SelectDataZoomModel2; }(DataZoomModel$1); var SelectZoomModel = SelectDataZoomModel; var DataZoomView = function(_super) { __extends$1(DataZoomView2, _super); function DataZoomView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = DataZoomView2.type; return _this; } DataZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) { this.dataZoomModel = dataZoomModel; this.ecModel = ecModel; this.api = api; }; DataZoomView2.type = "dataZoom"; return DataZoomView2; }(ComponentView$1); var DataZoomView$1 = DataZoomView; var SelectDataZoomView = function(_super) { __extends$1(SelectDataZoomView2, _super); function SelectDataZoomView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SelectDataZoomView2.type; return _this; } SelectDataZoomView2.type = "dataZoom.select"; return SelectDataZoomView2; }(DataZoomView$1); var SelectZoomView = SelectDataZoomView; var each$8 = each$g; var asc$1 = asc$2; var AxisProxy = function() { function AxisProxy2(dimName, axisIndex, dataZoomModel, ecModel) { this._dimName = dimName; this._axisIndex = axisIndex; this.ecModel = ecModel; this._dataZoomModel = dataZoomModel; } AxisProxy2.prototype.hostedBy = function(dataZoomModel) { return this._dataZoomModel === dataZoomModel; }; AxisProxy2.prototype.getDataValueWindow = function() { return this._valueWindow.slice(); }; AxisProxy2.prototype.getDataPercentWindow = function() { return this._percentWindow.slice(); }; AxisProxy2.prototype.getTargetSeriesModels = function() { var seriesModels = []; this.ecModel.eachSeries(function(seriesModel) { if (isCoordSupported(seriesModel)) { var axisMainType = getAxisMainType(this._dimName); var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0]; if (axisModel && this._axisIndex === axisModel.componentIndex) { seriesModels.push(seriesModel); } } }, this); return seriesModels; }; AxisProxy2.prototype.getAxisModel = function() { return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex); }; AxisProxy2.prototype.getMinMaxSpan = function() { return clone$4(this._minMaxSpan); }; AxisProxy2.prototype.calculateDataWindow = function(opt) { var dataExtent = this._dataExtent; var axisModel = this.getAxisModel(); var scale2 = axisModel.axis.scale; var rangePropMode = this._dataZoomModel.getRangePropMode(); var percentExtent = [0, 100]; var percentWindow = []; var valueWindow = []; var hasPropModeValue; each$8(["start", "end"], function(prop, idx) { var boundPercent = opt[prop]; var boundValue = opt[prop + "Value"]; if (rangePropMode[idx] === "percent") { boundPercent == null && (boundPercent = percentExtent[idx]); boundValue = scale2.parse(linearMap$2(boundPercent, percentExtent, dataExtent)); } else { hasPropModeValue = true; boundValue = boundValue == null ? dataExtent[idx] : scale2.parse(boundValue); boundPercent = linearMap$2(boundValue, dataExtent, percentExtent); } valueWindow[idx] = boundValue; percentWindow[idx] = boundPercent; }); asc$1(valueWindow); asc$1(percentWindow); var spans = this._minMaxSpan; hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true); function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) { var suffix = toValue ? "Span" : "ValueSpan"; sliderMove(0, fromWindow, fromExtent, "all", spans["min" + suffix], spans["max" + suffix]); for (var i = 0; i < 2; i++) { toWindow[i] = linearMap$2(fromWindow[i], fromExtent, toExtent, true); toValue && (toWindow[i] = scale2.parse(toWindow[i])); } } return { valueWindow, percentWindow }; }; AxisProxy2.prototype.reset = function(dataZoomModel) { if (dataZoomModel !== this._dataZoomModel) { return; } var targetSeries = this.getTargetSeriesModels(); this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); this._updateMinMaxSpan(); var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption); this._valueWindow = dataWindow.valueWindow; this._percentWindow = dataWindow.percentWindow; this._setAxisModel(); }; AxisProxy2.prototype.filterData = function(dataZoomModel, api) { if (dataZoomModel !== this._dataZoomModel) { return; } var axisDim = this._dimName; var seriesModels = this.getTargetSeriesModels(); var filterMode = dataZoomModel.get("filterMode"); var valueWindow = this._valueWindow; if (filterMode === "none") { return; } each$8(seriesModels, function(seriesModel) { var seriesData = seriesModel.getData(); var dataDims = seriesData.mapDimensionsAll(axisDim); if (!dataDims.length) { return; } if (filterMode === "weakFilter") { var store_1 = seriesData.getStore(); var dataDimIndices_1 = map$1(dataDims, function(dim) { return seriesData.getDimensionIndex(dim); }, seriesData); seriesData.filterSelf(function(dataIndex) { var leftOut; var rightOut; var hasValue; for (var i = 0; i < dataDims.length; i++) { var value = store_1.get(dataDimIndices_1[i], dataIndex); var thisHasValue = !isNaN(value); var thisLeftOut = value < valueWindow[0]; var thisRightOut = value > valueWindow[1]; if (thisHasValue && !thisLeftOut && !thisRightOut) { return true; } thisHasValue && (hasValue = true); thisLeftOut && (leftOut = true); thisRightOut && (rightOut = true); } return hasValue && leftOut && rightOut; }); } else { each$8(dataDims, function(dim) { if (filterMode === "empty") { seriesModel.setData(seriesData = seriesData.map(dim, function(value) { return !isInWindow(value) ? NaN : value; })); } else { var range = {}; range[dim] = valueWindow; seriesData.selectRange(range); } }); } each$8(dataDims, function(dim) { seriesData.setApproximateExtent(valueWindow, dim); }); }); function isInWindow(value) { return value >= valueWindow[0] && value <= valueWindow[1]; } }; AxisProxy2.prototype._updateMinMaxSpan = function() { var minMaxSpan = this._minMaxSpan = {}; var dataZoomModel = this._dataZoomModel; var dataExtent = this._dataExtent; each$8(["min", "max"], function(minMax) { var percentSpan = dataZoomModel.get(minMax + "Span"); var valueSpan = dataZoomModel.get(minMax + "ValueSpan"); valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan)); if (valueSpan != null) { percentSpan = linearMap$2(dataExtent[0] + valueSpan, dataExtent, [0, 100], true); } else if (percentSpan != null) { valueSpan = linearMap$2(percentSpan, [0, 100], dataExtent, true) - dataExtent[0]; } minMaxSpan[minMax + "Span"] = percentSpan; minMaxSpan[minMax + "ValueSpan"] = valueSpan; }, this); }; AxisProxy2.prototype._setAxisModel = function() { var axisModel = this.getAxisModel(); var percentWindow = this._percentWindow; var valueWindow = this._valueWindow; if (!percentWindow) { return; } var precision = getPixelPrecision(valueWindow, [0, 500]); precision = Math.min(precision, 20); var rawExtentInfo = axisModel.axis.scale.rawExtentInfo; if (percentWindow[0] !== 0) { rawExtentInfo.setDeterminedMinMax("min", +valueWindow[0].toFixed(precision)); } if (percentWindow[1] !== 100) { rawExtentInfo.setDeterminedMinMax("max", +valueWindow[1].toFixed(precision)); } rawExtentInfo.freeze(); }; return AxisProxy2; }(); function calculateDataExtent(axisProxy, axisDim, seriesModels) { var dataExtent = [Infinity, -Infinity]; each$8(seriesModels, function(seriesModel) { unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim); }); var axisModel = axisProxy.getAxisModel(); var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate(); return [rawExtentResult.min, rawExtentResult.max]; } var AxisProxy$1 = AxisProxy; var dataZoomProcessor = { getTargetSeries: function(ecModel) { function eachAxisModel(cb) { ecModel.eachComponent("dataZoom", function(dataZoomModel) { dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); cb(axisDim, axisIndex, axisModel, dataZoomModel); }); }); } eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { axisModel.__dzAxisProxy = null; }); var proxyList = []; eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { if (!axisModel.__dzAxisProxy) { axisModel.__dzAxisProxy = new AxisProxy$1(axisDim, axisIndex, dataZoomModel, ecModel); proxyList.push(axisModel.__dzAxisProxy); } }); var seriesModelMap = createHashMap(); each$g(proxyList, function(axisProxy) { each$g(axisProxy.getTargetSeriesModels(), function(seriesModel) { seriesModelMap.set(seriesModel.uid, seriesModel); }); }); return seriesModelMap; }, overallReset: function(ecModel, api) { ecModel.eachComponent("dataZoom", function(dataZoomModel) { dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel); }); dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api); }); }); ecModel.eachComponent("dataZoom", function(dataZoomModel) { var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); if (axisProxy) { var percentRange = axisProxy.getDataPercentWindow(); var valueRange = axisProxy.getDataValueWindow(); dataZoomModel.setCalculatedRange({ start: percentRange[0], end: percentRange[1], startValue: valueRange[0], endValue: valueRange[1] }); } }); } }; var dataZoomProcessor$1 = dataZoomProcessor; function installDataZoomAction(registers) { registers.registerAction("dataZoom", function(payload, ecModel) { var effectedModels = findEffectedDataZooms(ecModel, payload); each$g(effectedModels, function(dataZoomModel) { dataZoomModel.setRawRange({ start: payload.start, end: payload.end, startValue: payload.startValue, endValue: payload.endValue }); }); }); } var installed$1 = false; function installCommon$1(registers) { if (installed$1) { return; } installed$1 = true; registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor$1); installDataZoomAction(registers); registers.registerSubTypeDefaulter("dataZoom", function() { return "slider"; }); } function install$k(registers) { registers.registerComponentModel(SelectZoomModel); registers.registerComponentView(SelectZoomView); installCommon$1(registers); } var ToolboxFeature = function() { function ToolboxFeature2() { } return ToolboxFeature2; }(); var features = {}; function registerFeature(name, ctor) { features[name] = ctor; } function getFeature(name) { return features[name]; } var ToolboxModel = function(_super) { __extends$1(ToolboxModel2, _super); function ToolboxModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ToolboxModel2.type; return _this; } ToolboxModel2.prototype.optionUpdated = function() { _super.prototype.optionUpdated.apply(this, arguments); var ecModel = this.ecModel; each$g(this.option.feature, function(featureOpt, featureName) { var Feature = getFeature(featureName); if (Feature) { if (Feature.getDefaultOption) { Feature.defaultOption = Feature.getDefaultOption(ecModel); } merge(featureOpt, Feature.defaultOption); } }); }; ToolboxModel2.type = "toolbox"; ToolboxModel2.layoutMode = { type: "box", ignoreSize: true }; ToolboxModel2.defaultOption = { show: true, z: 6, zlevel: 0, orient: "horizontal", left: "right", top: "top", backgroundColor: "transparent", borderColor: "#ccc", borderRadius: 0, borderWidth: 0, padding: 5, itemSize: 15, itemGap: 8, showTitle: true, iconStyle: { borderColor: "#666", color: "none" }, emphasis: { iconStyle: { borderColor: "#3E98C5" } }, tooltip: { show: false, position: "bottom" } }; return ToolboxModel2; }(ComponentModel$1); var ToolboxModel$1 = ToolboxModel; function layout(group, componentModel, api) { var boxLayoutParams = componentModel.getBoxLayoutParams(); var padding = componentModel.get("padding"); var viewportSize = { width: api.getWidth(), height: api.getHeight() }; var rect = getLayoutRect(boxLayoutParams, viewportSize, padding); box(componentModel.get("orient"), group, componentModel.get("itemGap"), rect.width, rect.height); positionElement(group, boxLayoutParams, viewportSize, padding); } function makeBackground(rect, componentModel) { var padding = normalizeCssArray(componentModel.get("padding")); var style = componentModel.getItemStyle(["color", "opacity"]); style.fill = componentModel.get("backgroundColor"); rect = new Rect$3({ shape: { x: rect.x - padding[3], y: rect.y - padding[0], width: rect.width + padding[1] + padding[3], height: rect.height + padding[0] + padding[2], r: componentModel.get("borderRadius") }, style, silent: true, z2: -1 }); return rect; } var ToolboxView = function(_super) { __extends$1(ToolboxView2, _super); function ToolboxView2() { return _super !== null && _super.apply(this, arguments) || this; } ToolboxView2.prototype.render = function(toolboxModel, ecModel, api, payload) { var group = this.group; group.removeAll(); if (!toolboxModel.get("show")) { return; } var itemSize = +toolboxModel.get("itemSize"); var featureOpts = toolboxModel.get("feature") || {}; var features2 = this._features || (this._features = {}); var featureNames = []; each$g(featureOpts, function(opt, name) { featureNames.push(name); }); new DataDiffer$1(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry$1(processFeature, null)).execute(); this._featureNames = featureNames; function processFeature(newIndex, oldIndex) { var featureName = featureNames[newIndex]; var oldName = featureNames[oldIndex]; var featureOpt = featureOpts[featureName]; var featureModel = new Model$1(featureOpt, toolboxModel, toolboxModel.ecModel); var feature; if (payload && payload.newTitle != null && payload.featureName === featureName) { featureOpt.title = payload.newTitle; } if (featureName && !oldName) { if (isUserFeatureName(featureName)) { feature = { onclick: featureModel.option.onclick, featureName }; } else { var Feature = getFeature(featureName); if (!Feature) { return; } feature = new Feature(); } features2[featureName] = feature; } else { feature = features2[oldName]; if (!feature) { return; } } feature.uid = getUID("toolbox-feature"); feature.model = featureModel; feature.ecModel = ecModel; feature.api = api; var isToolboxFeature = feature instanceof ToolboxFeature; if (!featureName && oldName) { isToolboxFeature && feature.dispose && feature.dispose(ecModel, api); return; } if (!featureModel.get("show") || isToolboxFeature && feature.unusable) { isToolboxFeature && feature.remove && feature.remove(ecModel, api); return; } createIconPaths(featureModel, feature, featureName); featureModel.setIconStatus = function(iconName, status) { var option = this.option; var iconPaths = this.iconPaths; option.iconStatus = option.iconStatus || {}; option.iconStatus[iconName] = status; if (iconPaths[iconName]) { (status === "emphasis" ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]); } }; if (feature instanceof ToolboxFeature) { if (feature.render) { feature.render(featureModel, ecModel, api, payload); } } } function createIconPaths(featureModel, feature, featureName) { var iconStyleModel = featureModel.getModel("iconStyle"); var iconStyleEmphasisModel = featureModel.getModel(["emphasis", "iconStyle"]); var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get("icon"); var titles = featureModel.get("title") || {}; var iconsMap; var titlesMap; if (typeof icons === "string") { iconsMap = {}; iconsMap[featureName] = icons; } else { iconsMap = icons; } if (typeof titles === "string") { titlesMap = {}; titlesMap[featureName] = titles; } else { titlesMap = titles; } var iconPaths = featureModel.iconPaths = {}; each$g(iconsMap, function(iconStr, iconName) { var path = createIcon(iconStr, {}, { x: -itemSize / 2, y: -itemSize / 2, width: itemSize, height: itemSize }); path.setStyle(iconStyleModel.getItemStyle()); var pathEmphasisState = path.ensureState("emphasis"); pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle(); var textContent = new ZRText$1({ style: { text: titlesMap[iconName], align: iconStyleEmphasisModel.get("textAlign"), borderRadius: iconStyleEmphasisModel.get("textBorderRadius"), padding: iconStyleEmphasisModel.get("textPadding"), fill: null }, ignore: true }); path.setTextContent(textContent); setTooltipConfig({ el: path, componentModel: toolboxModel, itemName: iconName, formatterParamsExtra: { title: titlesMap[iconName] } }); path.__title = titlesMap[iconName]; path.on("mouseover", function() { var hoverStyle = iconStyleEmphasisModel.getItemStyle(); var defaultTextPosition = toolboxModel.get("orient") === "vertical" ? toolboxModel.get("right") == null ? "right" : "left" : toolboxModel.get("bottom") == null ? "bottom" : "top"; textContent.setStyle({ fill: iconStyleEmphasisModel.get("textFill") || hoverStyle.fill || hoverStyle.stroke || "#000", backgroundColor: iconStyleEmphasisModel.get("textBackgroundColor") }); path.setTextConfig({ position: iconStyleEmphasisModel.get("textPosition") || defaultTextPosition }); textContent.ignore = !toolboxModel.get("showTitle"); enterEmphasis(this); }).on("mouseout", function() { if (featureModel.get(["iconStatus", iconName]) !== "emphasis") { leaveEmphasis(this); } textContent.hide(); }); (featureModel.get(["iconStatus", iconName]) === "emphasis" ? enterEmphasis : leaveEmphasis)(path); group.add(path); path.on("click", bind$2(feature.onclick, feature, ecModel, api, iconName)); iconPaths[iconName] = path; }); } layout(group, toolboxModel, api); group.add(makeBackground(group.getBoundingRect(), toolboxModel)); group.eachChild(function(icon) { var titleText = icon.__title; var emphasisState = icon.ensureState("emphasis"); var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {}); var textContent = icon.getTextContent(); var emphasisTextState = textContent && textContent.states.emphasis; if (emphasisTextState && !isFunction(emphasisTextState) && titleText) { var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {}); var rect = getBoundingRect(titleText, ZRText$1.makeFont(emphasisTextStyle)); var offsetX = icon.x + group.x; var offsetY = icon.y + group.y + itemSize; var needPutOnTop = false; if (offsetY + rect.height > api.getHeight()) { emphasisTextConfig.position = "top"; needPutOnTop = true; } var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8; if (offsetX + rect.width / 2 > api.getWidth()) { emphasisTextConfig.position = ["100%", topOffset]; emphasisTextStyle.align = "right"; } else if (offsetX - rect.width / 2 < 0) { emphasisTextConfig.position = [0, topOffset]; emphasisTextStyle.align = "left"; } } }); }; ToolboxView2.prototype.updateView = function(toolboxModel, ecModel, api, payload) { each$g(this._features, function(feature) { feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload); }); }; ToolboxView2.prototype.remove = function(ecModel, api) { each$g(this._features, function(feature) { feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api); }); this.group.removeAll(); }; ToolboxView2.prototype.dispose = function(ecModel, api) { each$g(this._features, function(feature) { feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api); }); }; ToolboxView2.type = "toolbox"; return ToolboxView2; }(ComponentView$1); function isUserFeatureName(featureName) { return featureName.indexOf("my") === 0; } var ToolboxView$1 = ToolboxView; var SaveAsImage = function(_super) { __extends$1(SaveAsImage2, _super); function SaveAsImage2() { return _super !== null && _super.apply(this, arguments) || this; } SaveAsImage2.prototype.onclick = function(ecModel, api) { var model = this.model; var title = model.get("name") || ecModel.get("title.0.text") || "echarts"; var isSvg = api.getZr().painter.getType() === "svg"; var type = isSvg ? "svg" : model.get("type", true) || "png"; var url = api.getConnectedDataURL({ type, backgroundColor: model.get("backgroundColor", true) || ecModel.get("backgroundColor") || "#fff", connectedBackgroundColor: model.get("connectedBackgroundColor"), excludeComponents: model.get("excludeComponents"), pixelRatio: model.get("pixelRatio") }); if (typeof MouseEvent === "function" && (env$1.browser.newEdge || !env$1.browser.ie && !env$1.browser.edge)) { var $a = document.createElement("a"); $a.download = title + "." + type; $a.target = "_blank"; $a.href = url; var evt = new MouseEvent("click", { view: document.defaultView, bubbles: true, cancelable: false }); $a.dispatchEvent(evt); } else { if (window.navigator.msSaveOrOpenBlob || isSvg) { var parts = url.split(","); var base64Encoded = parts[0].indexOf("base64") > -1; var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1]; base64Encoded && (bstr = window.atob(bstr)); var filename = title + "." + type; if (window.navigator.msSaveOrOpenBlob) { var n = bstr.length; var u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } var blob = new Blob([u8arr]); window.navigator.msSaveOrOpenBlob(blob, filename); } else { var frame = document.createElement("iframe"); document.body.appendChild(frame); var cw = frame.contentWindow; var doc = cw.document; doc.open("image/svg+xml", "replace"); doc.write(bstr); doc.close(); cw.focus(); doc.execCommand("SaveAs", true, filename); document.body.removeChild(frame); } } else { var lang = model.get("lang"); var html = ''; var tab = window.open(); tab.document.write(html); tab.document.title = title; } } }; SaveAsImage2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0", title: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "title"]), type: "png", connectedBackgroundColor: "#fff", name: "", excludeComponents: ["toolbox"], lang: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "lang"]) }; return defaultOption2; }; return SaveAsImage2; }(ToolboxFeature); SaveAsImage.prototype.unusable = !env$1.canvasSupported; var SaveAsImage$1 = SaveAsImage; var INNER_STACK_KEYWORD = "__ec_magicType_stack__"; var radioTypes = [["line", "bar"], ["stack"]]; var MagicType = function(_super) { __extends$1(MagicType2, _super); function MagicType2() { return _super !== null && _super.apply(this, arguments) || this; } MagicType2.prototype.getIcons = function() { var model = this.model; var availableIcons = model.get("icon"); var icons = {}; each$g(model.get("type"), function(type) { if (availableIcons[type]) { icons[type] = availableIcons[type]; } }); return icons; }; MagicType2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, type: [], icon: { line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4", bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7", stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z" }, title: ecModel.getLocaleModel().get(["toolbox", "magicType", "title"]), option: {}, seriesIndex: {} }; return defaultOption2; }; MagicType2.prototype.onclick = function(ecModel, api, type) { var model = this.model; var seriesIndex = model.get(["seriesIndex", type]); if (!seriesOptGenreator[type]) { return; } var newOption = { series: [] }; var generateNewSeriesTypes = function(seriesModel) { var seriesType2 = seriesModel.subType; var seriesId = seriesModel.id; var newSeriesOpt = seriesOptGenreator[type](seriesType2, seriesId, seriesModel, model); if (newSeriesOpt) { defaults(newSeriesOpt, seriesModel.option); newOption.series.push(newSeriesOpt); } var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.type === "cartesian2d" && (type === "line" || type === "bar")) { var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0]; if (categoryAxis2) { var axisDim = categoryAxis2.dim; var axisType = axisDim + "Axis"; var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; var axisIndex = axisModel.componentIndex; newOption[axisType] = newOption[axisType] || []; for (var i = 0; i <= axisIndex; i++) { newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; } newOption[axisType][axisIndex].boundaryGap = type === "bar"; } } }; each$g(radioTypes, function(radio) { if (indexOf(radio, type) >= 0) { each$g(radio, function(item) { model.setIconStatus(item, "normal"); }); } }); model.setIconStatus(type, "emphasis"); ecModel.eachComponent({ mainType: "series", query: seriesIndex == null ? null : { seriesIndex } }, generateNewSeriesTypes); var newTitle; var currentType = type; if (type === "stack") { newTitle = merge({ stack: model.option.title.tiled, tiled: model.option.title.stack }, model.option.title); if (model.get(["iconStatus", type]) !== "emphasis") { currentType = "tiled"; } } api.dispatchAction({ type: "changeMagicType", currentType, newOption, newTitle, featureName: "magicType" }); }; return MagicType2; }(ToolboxFeature); var seriesOptGenreator = { "line": function(seriesType2, seriesId, seriesModel, model) { if (seriesType2 === "bar") { return merge({ id: seriesId, type: "line", data: seriesModel.get("data"), stack: seriesModel.get("stack"), markPoint: seriesModel.get("markPoint"), markLine: seriesModel.get("markLine") }, model.get(["option", "line"]) || {}, true); } }, "bar": function(seriesType2, seriesId, seriesModel, model) { if (seriesType2 === "line") { return merge({ id: seriesId, type: "bar", data: seriesModel.get("data"), stack: seriesModel.get("stack"), markPoint: seriesModel.get("markPoint"), markLine: seriesModel.get("markLine") }, model.get(["option", "bar"]) || {}, true); } }, "stack": function(seriesType2, seriesId, seriesModel, model) { var isStack = seriesModel.get("stack") === INNER_STACK_KEYWORD; if (seriesType2 === "line" || seriesType2 === "bar") { model.setIconStatus("stack", isStack ? "normal" : "emphasis"); return merge({ id: seriesId, stack: isStack ? "" : INNER_STACK_KEYWORD }, model.get(["option", "stack"]) || {}, true); } } }; registerAction({ type: "changeMagicType", event: "magicTypeChanged", update: "prepareAndUpdate" }, function(payload, ecModel) { ecModel.mergeOption(payload.newOption); }); var MagicType$1 = MagicType; var BLOCK_SPLITER = new Array(60).join("-"); var ITEM_SPLITER = " "; function groupSeries(ecModel) { var seriesGroupByCategoryAxis = {}; var otherSeries = []; var meta = []; ecModel.eachRawSeries(function(seriesModel) { var coordSys = seriesModel.coordinateSystem; if (coordSys && (coordSys.type === "cartesian2d" || coordSys.type === "polar")) { var baseAxis = coordSys.getBaseAxis(); if (baseAxis.type === "category") { var key2 = baseAxis.dim + "_" + baseAxis.index; if (!seriesGroupByCategoryAxis[key2]) { seriesGroupByCategoryAxis[key2] = { categoryAxis: baseAxis, valueAxis: coordSys.getOtherAxis(baseAxis), series: [] }; meta.push({ axisDim: baseAxis.dim, axisIndex: baseAxis.index }); } seriesGroupByCategoryAxis[key2].series.push(seriesModel); } else { otherSeries.push(seriesModel); } } else { otherSeries.push(seriesModel); } }); return { seriesGroupByCategoryAxis, other: otherSeries, meta }; } function assembleSeriesWithCategoryAxis(groups) { var tables = []; each$g(groups, function(group, key2) { var categoryAxis2 = group.categoryAxis; var valueAxis2 = group.valueAxis; var valueAxisDim = valueAxis2.dim; var headers = [" "].concat(map$1(group.series, function(series) { return series.name; })); var columns = [categoryAxis2.model.getCategories()]; each$g(group.series, function(series) { var rawData = series.getRawData(); columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function(val) { return val; })); }); var lines = [headers.join(ITEM_SPLITER)]; for (var i = 0; i < columns[0].length; i++) { var items = []; for (var j = 0; j < columns.length; j++) { items.push(columns[j][i]); } lines.push(items.join(ITEM_SPLITER)); } tables.push(lines.join("\n")); }); return tables.join("\n\n" + BLOCK_SPLITER + "\n\n"); } function assembleOtherSeries(series) { return map$1(series, function(series2) { var data = series2.getRawData(); var lines = [series2.name]; var vals = []; data.each(data.dimensions, function() { var argLen = arguments.length; var dataIndex = arguments[argLen - 1]; var name = data.getName(dataIndex); for (var i = 0; i < argLen - 1; i++) { vals[i] = arguments[i]; } lines.push((name ? name + ITEM_SPLITER : "") + vals.join(ITEM_SPLITER)); }); return lines.join("\n"); }).join("\n\n" + BLOCK_SPLITER + "\n\n"); } function getContentFromModel(ecModel) { var result = groupSeries(ecModel); return { value: filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function(str) { return !!str.replace(/[\n\t\s]/g, ""); }).join("\n\n" + BLOCK_SPLITER + "\n\n"), meta: result.meta }; } function trim(str) { return str.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); } function isTSVFormat(block) { var firstLine = block.slice(0, block.indexOf("\n")); if (firstLine.indexOf(ITEM_SPLITER) >= 0) { return true; } } var itemSplitRegex = new RegExp("[" + ITEM_SPLITER + "]+", "g"); function parseTSVContents(tsv) { var tsvLines = tsv.split(/\n+/g); var headers = trim(tsvLines.shift()).split(itemSplitRegex); var categories = []; var series = map$1(headers, function(header) { return { name: header, data: [] }; }); for (var i = 0; i < tsvLines.length; i++) { var items = trim(tsvLines[i]).split(itemSplitRegex); categories.push(items.shift()); for (var j = 0; j < items.length; j++) { series[j] && (series[j].data[i] = items[j]); } } return { series, categories }; } function parseListContents(str) { var lines = str.split(/\n+/g); var seriesName = trim(lines.shift()); var data = []; for (var i = 0; i < lines.length; i++) { var line = trim(lines[i]); if (!line) { continue; } var items = line.split(itemSplitRegex); var name_1 = ""; var value = void 0; var hasName = false; if (isNaN(items[0])) { hasName = true; name_1 = items[0]; items = items.slice(1); data[i] = { name: name_1, value: [] }; value = data[i].value; } else { value = data[i] = []; } for (var j = 0; j < items.length; j++) { value.push(+items[j]); } if (value.length === 1) { hasName ? data[i].value = value[0] : data[i] = value[0]; } } return { name: seriesName, data }; } function parseContents(str, blockMetaList) { var blocks = str.split(new RegExp("\n*" + BLOCK_SPLITER + "\n*", "g")); var newOption = { series: [] }; each$g(blocks, function(block, idx) { if (isTSVFormat(block)) { var result = parseTSVContents(block); var blockMeta = blockMetaList[idx]; var axisKey = blockMeta.axisDim + "Axis"; if (blockMeta) { newOption[axisKey] = newOption[axisKey] || []; newOption[axisKey][blockMeta.axisIndex] = { data: result.categories }; newOption.series = newOption.series.concat(result.series); } } else { var result = parseListContents(block); newOption.series.push(result); } }); return newOption; } var DataView = function(_super) { __extends$1(DataView2, _super); function DataView2() { return _super !== null && _super.apply(this, arguments) || this; } DataView2.prototype.onclick = function(ecModel, api) { var container = api.getDom(); var model = this.model; if (this._dom) { container.removeChild(this._dom); } var root = document.createElement("div"); root.style.cssText = "position:absolute;left:5px;top:5px;bottom:5px;right:5px;"; root.style.backgroundColor = model.get("backgroundColor") || "#fff"; var header = document.createElement("h4"); var lang = model.get("lang") || []; header.innerHTML = lang[0] || model.get("title"); header.style.cssText = "margin: 10px 20px;"; header.style.color = model.get("textColor"); var viewMain = document.createElement("div"); var textarea = document.createElement("textarea"); viewMain.style.cssText = "display:block;width:100%;overflow:auto;"; var optionToContent = model.get("optionToContent"); var contentToOption = model.get("contentToOption"); var result = getContentFromModel(ecModel); if (typeof optionToContent === "function") { var htmlOrDom = optionToContent(api.getOption()); if (typeof htmlOrDom === "string") { viewMain.innerHTML = htmlOrDom; } else if (isDom(htmlOrDom)) { viewMain.appendChild(htmlOrDom); } } else { viewMain.appendChild(textarea); textarea.readOnly = model.get("readOnly"); textarea.style.cssText = "width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;"; textarea.style.color = model.get("textColor"); textarea.style.borderColor = model.get("textareaBorderColor"); textarea.style.backgroundColor = model.get("textareaColor"); textarea.value = result.value; } var blockMetaList = result.meta; var buttonContainer = document.createElement("div"); buttonContainer.style.cssText = "position:absolute;bottom:0;left:0;right:0;"; var buttonStyle = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px"; var closeButton = document.createElement("div"); var refreshButton = document.createElement("div"); buttonStyle += ";background-color:" + model.get("buttonColor"); buttonStyle += ";color:" + model.get("buttonTextColor"); var self2 = this; function close2() { container.removeChild(root); self2._dom = null; } addEventListener(closeButton, "click", close2); addEventListener(refreshButton, "click", function() { if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) { close2(); return; } var newOption; try { if (typeof contentToOption === "function") { newOption = contentToOption(viewMain, api.getOption()); } else { newOption = parseContents(textarea.value, blockMetaList); } } catch (e2) { close2(); throw new Error("Data view format error " + e2); } if (newOption) { api.dispatchAction({ type: "changeDataView", newOption }); } close2(); }); closeButton.innerHTML = lang[1]; refreshButton.innerHTML = lang[2]; refreshButton.style.cssText = buttonStyle; closeButton.style.cssText = buttonStyle; !model.get("readOnly") && buttonContainer.appendChild(refreshButton); buttonContainer.appendChild(closeButton); root.appendChild(header); root.appendChild(viewMain); root.appendChild(buttonContainer); viewMain.style.height = container.clientHeight - 80 + "px"; container.appendChild(root); this._dom = root; }; DataView2.prototype.remove = function(ecModel, api) { this._dom && api.getDom().removeChild(this._dom); }; DataView2.prototype.dispose = function(ecModel, api) { this.remove(ecModel, api); }; DataView2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, readOnly: false, optionToContent: null, contentToOption: null, icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28", title: ecModel.getLocaleModel().get(["toolbox", "dataView", "title"]), lang: ecModel.getLocaleModel().get(["toolbox", "dataView", "lang"]), backgroundColor: "#fff", textColor: "#000", textareaColor: "#fff", textareaBorderColor: "#333", buttonColor: "#c23531", buttonTextColor: "#fff" }; return defaultOption2; }; return DataView2; }(ToolboxFeature); function tryMergeDataOption(newData, originalData) { return map$1(newData, function(newVal, idx) { var original = originalData && originalData[idx]; if (isObject$3(original) && !isArray$1(original)) { var newValIsObject = isObject$3(newVal) && !isArray$1(newVal); if (!newValIsObject) { newVal = { value: newVal }; } var shouldDeleteName = original.name != null && newVal.name == null; newVal = defaults(newVal, original); shouldDeleteName && delete newVal.name; return newVal; } else { return newVal; } }); } registerAction({ type: "changeDataView", event: "dataViewChanged", update: "prepareAndUpdate" }, function(payload, ecModel) { var newSeriesOptList = []; each$g(payload.newOption.series, function(seriesOpt) { var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]; if (!seriesModel) { newSeriesOptList.push(extend({ type: "scatter" }, seriesOpt)); } else { var originalData = seriesModel.get("data"); newSeriesOptList.push({ name: seriesOpt.name, data: tryMergeDataOption(seriesOpt.data, originalData) }); } }); ecModel.mergeOption(defaults({ series: newSeriesOptList }, payload.newOption)); }); var DataView$1 = DataView; var each$7 = each$g; var inner$6 = makeInner(); function push(ecModel, newSnapshot) { var storedSnapshots = getStoreSnapshots(ecModel); each$7(newSnapshot, function(batchItem, dataZoomId) { var i = storedSnapshots.length - 1; for (; i >= 0; i--) { var snapshot = storedSnapshots[i]; if (snapshot[dataZoomId]) { break; } } if (i < 0) { var dataZoomModel = ecModel.queryComponents({ mainType: "dataZoom", subType: "select", id: dataZoomId })[0]; if (dataZoomModel) { var percentRange = dataZoomModel.getPercentRange(); storedSnapshots[0][dataZoomId] = { dataZoomId, start: percentRange[0], end: percentRange[1] }; } } }); storedSnapshots.push(newSnapshot); } function pop(ecModel) { var storedSnapshots = getStoreSnapshots(ecModel); var head = storedSnapshots[storedSnapshots.length - 1]; storedSnapshots.length > 1 && storedSnapshots.pop(); var snapshot = {}; each$7(head, function(batchItem, dataZoomId) { for (var i = storedSnapshots.length - 1; i >= 0; i--) { batchItem = storedSnapshots[i][dataZoomId]; if (batchItem) { snapshot[dataZoomId] = batchItem; break; } } }); return snapshot; } function clear(ecModel) { inner$6(ecModel).snapshots = null; } function count(ecModel) { return getStoreSnapshots(ecModel).length; } function getStoreSnapshots(ecModel) { var store = inner$6(ecModel); if (!store.snapshots) { store.snapshots = [{}]; } return store.snapshots; } var RestoreOption = function(_super) { __extends$1(RestoreOption2, _super); function RestoreOption2() { return _super !== null && _super.apply(this, arguments) || this; } RestoreOption2.prototype.onclick = function(ecModel, api) { clear(ecModel); api.dispatchAction({ type: "restore", from: this.uid }); }; RestoreOption2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5", title: ecModel.getLocaleModel().get(["toolbox", "restore", "title"]) }; return defaultOption2; }; return RestoreOption2; }(ToolboxFeature); registerAction({ type: "restore", event: "restore", update: "prepareAndUpdate" }, function(payload, ecModel) { ecModel.resetOption("recreate"); }); var Restore = RestoreOption; var INCLUDE_FINDER_MAIN_TYPES = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"]; var BrushTargetManager = function() { function BrushTargetManager2(finder, ecModel, opt) { var _this = this; this._targetInfoList = []; var foundCpts = parseFinder(ecModel, finder); each$g(targetInfoBuilders, function(builder, type) { if (!opt || !opt.include || indexOf(opt.include, type) >= 0) { builder(foundCpts, _this._targetInfoList); } }); } BrushTargetManager2.prototype.setOutputRanges = function(areas, ecModel) { this.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { (area.coordRanges || (area.coordRanges = [])).push(coordRange); if (!area.coordRange) { area.coordRange = coordRange; var result = coordConvert[area.brushType](0, coordSys, coordRange); area.__rangeOffset = { offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]), xyMinMax: result.xyMinMax }; } }); return areas; }; BrushTargetManager2.prototype.matchOutputRanges = function(areas, ecModel, cb) { each$g(areas, function(area) { var targetInfo = this.findTargetInfo(area, ecModel); if (targetInfo && targetInfo !== true) { each$g(targetInfo.coordSyses, function(coordSys) { var result = coordConvert[area.brushType](1, coordSys, area.range, true); cb(area, result.values, coordSys, ecModel); }); } }, this); }; BrushTargetManager2.prototype.setInputRanges = function(areas, ecModel) { each$g(areas, function(area) { var targetInfo = this.findTargetInfo(area, ecModel); area.range = area.range || []; if (targetInfo && targetInfo !== true) { area.panelId = targetInfo.panelId; var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange); var rangeOffset = area.__rangeOffset; area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values; } }, this); }; BrushTargetManager2.prototype.makePanelOpts = function(api, getDefaultBrushType) { return map$1(this._targetInfoList, function(targetInfo) { var rect = targetInfo.getPanelRect(); return { panelId: targetInfo.panelId, defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null, clipPath: makeRectPanelClipPath(rect), isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel), getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect) }; }); }; BrushTargetManager2.prototype.controlSeries = function(area, seriesModel, ecModel) { var targetInfo = this.findTargetInfo(area, ecModel); return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0; }; BrushTargetManager2.prototype.findTargetInfo = function(area, ecModel) { var targetInfoList = this._targetInfoList; var foundCpts = parseFinder(ecModel, area); for (var i = 0; i < targetInfoList.length; i++) { var targetInfo = targetInfoList[i]; var areaPanelId = area.panelId; if (areaPanelId) { if (targetInfo.panelId === areaPanelId) { return targetInfo; } } else { for (var j = 0; j < targetInfoMatchers.length; j++) { if (targetInfoMatchers[j](foundCpts, targetInfo)) { return targetInfo; } } } } return true; }; return BrushTargetManager2; }(); function formatMinMax(minMax) { minMax[0] > minMax[1] && minMax.reverse(); return minMax; } function parseFinder(ecModel, finder) { return parseFinder$1(ecModel, finder, { includeMainTypes: INCLUDE_FINDER_MAIN_TYPES }); } var targetInfoBuilders = { grid: function(foundCpts, targetInfoList) { var xAxisModels = foundCpts.xAxisModels; var yAxisModels = foundCpts.yAxisModels; var gridModels = foundCpts.gridModels; var gridModelMap = createHashMap(); var xAxesHas = {}; var yAxesHas = {}; if (!xAxisModels && !yAxisModels && !gridModels) { return; } each$g(xAxisModels, function(axisModel) { var gridModel = axisModel.axis.grid.model; gridModelMap.set(gridModel.id, gridModel); xAxesHas[gridModel.id] = true; }); each$g(yAxisModels, function(axisModel) { var gridModel = axisModel.axis.grid.model; gridModelMap.set(gridModel.id, gridModel); yAxesHas[gridModel.id] = true; }); each$g(gridModels, function(gridModel) { gridModelMap.set(gridModel.id, gridModel); xAxesHas[gridModel.id] = true; yAxesHas[gridModel.id] = true; }); gridModelMap.each(function(gridModel) { var grid2 = gridModel.coordinateSystem; var cartesians = []; each$g(grid2.getCartesians(), function(cartesian, index) { if (indexOf(xAxisModels, cartesian.getAxis("x").model) >= 0 || indexOf(yAxisModels, cartesian.getAxis("y").model) >= 0) { cartesians.push(cartesian); } }); targetInfoList.push({ panelId: "grid--" + gridModel.id, gridModel, coordSysModel: gridModel, coordSys: cartesians[0], coordSyses: cartesians, getPanelRect: panelRectBuilders.grid, xAxisDeclared: xAxesHas[gridModel.id], yAxisDeclared: yAxesHas[gridModel.id] }); }); }, geo: function(foundCpts, targetInfoList) { each$g(foundCpts.geoModels, function(geoModel) { var coordSys = geoModel.coordinateSystem; targetInfoList.push({ panelId: "geo--" + geoModel.id, geoModel, coordSysModel: geoModel, coordSys, coordSyses: [coordSys], getPanelRect: panelRectBuilders.geo }); }); } }; var targetInfoMatchers = [ function(foundCpts, targetInfo) { var xAxisModel = foundCpts.xAxisModel; var yAxisModel = foundCpts.yAxisModel; var gridModel = foundCpts.gridModel; !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model); !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model); return gridModel && gridModel === targetInfo.gridModel; }, function(foundCpts, targetInfo) { var geoModel = foundCpts.geoModel; return geoModel && geoModel === targetInfo.geoModel; } ]; var panelRectBuilders = { grid: function() { return this.coordSys.master.getRect().clone(); }, geo: function() { var coordSys = this.coordSys; var rect = coordSys.getBoundingRect().clone(); rect.applyTransform(getTransform$1(coordSys)); return rect; } }; var coordConvert = { lineX: curry$1(axisConvert, 0), lineY: curry$1(axisConvert, 1), rect: function(to, coordSys, rangeOrCoordRange, clamp2) { var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2); var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2); var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])]; return { values, xyMinMax: values }; }, polygon: function(to, coordSys, rangeOrCoordRange, clamp2) { var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]]; var values = map$1(rangeOrCoordRange, function(item) { var p = to ? coordSys.pointToData(item, clamp2) : coordSys.dataToPoint(item, clamp2); xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]); xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]); xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]); xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]); return p; }); return { values, xyMinMax }; } }; function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) { var axis = coordSys.getAxis(["x", "y"][axisNameIndex]); var values = formatMinMax(map$1([0, 1], function(i) { return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i])); })); var xyMinMax = []; xyMinMax[axisNameIndex] = values; xyMinMax[1 - axisNameIndex] = [NaN, NaN]; return { values, xyMinMax }; } var diffProcessor = { lineX: curry$1(axisDiffProcessor, 0), lineY: curry$1(axisDiffProcessor, 1), rect: function(values, refer, scales) { return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]]; }, polygon: function(values, refer, scales) { return map$1(values, function(item, idx) { return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]]; }); } }; function axisDiffProcessor(axisNameIndex, values, refer, scales) { return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]]; } function getScales(xyMinMaxCurr, xyMinMaxOrigin) { var sizeCurr = getSize(xyMinMaxCurr); var sizeOrigin = getSize(xyMinMaxOrigin); var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]; isNaN(scales[0]) && (scales[0] = 1); isNaN(scales[1]) && (scales[1] = 1); return scales; } function getSize(xyMinMax) { return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN]; } var BrushTargetManager$1 = BrushTargetManager; var each$6 = each$g; var DATA_ZOOM_ID_BASE = makeInternalComponentId("toolbox-dataZoom_"); var DataZoomFeature = function(_super) { __extends$1(DataZoomFeature2, _super); function DataZoomFeature2() { return _super !== null && _super.apply(this, arguments) || this; } DataZoomFeature2.prototype.render = function(featureModel, ecModel, api, payload) { if (!this._brushController) { this._brushController = new BrushController$1(api.getZr()); this._brushController.on("brush", bind$2(this._onBrush, this)).mount(); } updateZoomBtnStatus(featureModel, ecModel, this, payload, api); updateBackBtnStatus(featureModel, ecModel); }; DataZoomFeature2.prototype.onclick = function(ecModel, api, type) { handlers[type].call(this); }; DataZoomFeature2.prototype.remove = function(ecModel, api) { this._brushController && this._brushController.unmount(); }; DataZoomFeature2.prototype.dispose = function(ecModel, api) { this._brushController && this._brushController.dispose(); }; DataZoomFeature2.prototype._onBrush = function(eventParam) { var areas = eventParam.areas; if (!eventParam.isEnd || !areas.length) { return; } var snapshot = {}; var ecModel = this.ecModel; this._brushController.updateCovers([]); var brushTargetManager = new BrushTargetManager$1(makeAxisFinder(this.model), ecModel, { include: ["grid"] }); brushTargetManager.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { if (coordSys.type !== "cartesian2d") { return; } var brushType = area.brushType; if (brushType === "rect") { setBatch("x", coordSys, coordRange[0]); setBatch("y", coordSys, coordRange[1]); } else { setBatch({ lineX: "x", lineY: "y" }[brushType], coordSys, coordRange); } }); push(ecModel, snapshot); this._dispatchZoomAction(snapshot); function setBatch(dimName, coordSys, minMax) { var axis = coordSys.getAxis(dimName); var axisModel = axis.model; var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan(); if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) { minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan); } dataZoomModel && (snapshot[dataZoomModel.id] = { dataZoomId: dataZoomModel.id, startValue: minMax[0], endValue: minMax[1] }); } function findDataZoom(dimName, axisModel, ecModel2) { var found; ecModel2.eachComponent({ mainType: "dataZoom", subType: "select" }, function(dzModel) { var has2 = dzModel.getAxisModel(dimName, axisModel.componentIndex); has2 && (found = dzModel); }); return found; } }; DataZoomFeature2.prototype._dispatchZoomAction = function(snapshot) { var batch = []; each$6(snapshot, function(batchItem, dataZoomId) { batch.push(clone$4(batchItem)); }); batch.length && this.api.dispatchAction({ type: "dataZoom", from: this.uid, batch }); }; DataZoomFeature2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, filterMode: "filter", icon: { zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1", back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26" }, title: ecModel.getLocaleModel().get(["toolbox", "dataZoom", "title"]), brushStyle: { borderWidth: 0, color: "rgba(210,219,238,0.2)" } }; return defaultOption2; }; return DataZoomFeature2; }(ToolboxFeature); var handlers = { zoom: function() { var nextActive = !this._isZoomActive; this.api.dispatchAction({ type: "takeGlobalCursor", key: "dataZoomSelect", dataZoomSelectActive: nextActive }); }, back: function() { this._dispatchZoomAction(pop(this.ecModel)); } }; function makeAxisFinder(dzFeatureModel) { var setting2 = { xAxisIndex: dzFeatureModel.get("xAxisIndex", true), yAxisIndex: dzFeatureModel.get("yAxisIndex", true), xAxisId: dzFeatureModel.get("xAxisId", true), yAxisId: dzFeatureModel.get("yAxisId", true) }; if (setting2.xAxisIndex == null && setting2.xAxisId == null) { setting2.xAxisIndex = "all"; } if (setting2.yAxisIndex == null && setting2.yAxisId == null) { setting2.yAxisIndex = "all"; } return setting2; } function updateBackBtnStatus(featureModel, ecModel) { featureModel.setIconStatus("back", count(ecModel) > 1 ? "emphasis" : "normal"); } function updateZoomBtnStatus(featureModel, ecModel, view2, payload, api) { var zoomActive = view2._isZoomActive; if (payload && payload.type === "takeGlobalCursor") { zoomActive = payload.key === "dataZoomSelect" ? payload.dataZoomSelectActive : false; } view2._isZoomActive = zoomActive; featureModel.setIconStatus("zoom", zoomActive ? "emphasis" : "normal"); var brushTargetManager = new BrushTargetManager$1(makeAxisFinder(featureModel), ecModel, { include: ["grid"] }); var panels = brushTargetManager.makePanelOpts(api, function(targetInfo) { return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? "lineX" : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? "lineY" : "rect"; }); view2._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? { brushType: "auto", brushStyle: featureModel.getModel("brushStyle").getItemStyle() } : false); } registerInternalOptionCreator("dataZoom", function(ecModel) { var toolboxModel = ecModel.getComponent("toolbox", 0); var featureDataZoomPath = ["feature", "dataZoom"]; if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) { return; } var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath); var dzOptions = []; var finder = makeAxisFinder(dzFeatureModel); var finderResult = parseFinder$1(ecModel, finder); each$6(finderResult.xAxisModels, function(axisModel) { return buildInternalOptions(axisModel, "xAxis", "xAxisIndex"); }); each$6(finderResult.yAxisModels, function(axisModel) { return buildInternalOptions(axisModel, "yAxis", "yAxisIndex"); }); function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) { var axisIndex = axisModel.componentIndex; var newOpt = { type: "select", $fromToolbox: true, filterMode: dzFeatureModel.get("filterMode", true) || "filter", id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex }; newOpt[axisIndexPropName] = axisIndex; dzOptions.push(newOpt); } return dzOptions; }); var DataZoom = DataZoomFeature; function install$j(registers) { registers.registerComponentModel(ToolboxModel$1); registers.registerComponentView(ToolboxView$1); registerFeature("saveAsImage", SaveAsImage$1); registerFeature("magicType", MagicType$1); registerFeature("dataView", DataView$1); registerFeature("dataZoom", DataZoom); registerFeature("restore", Restore); use(install$k); } var TooltipModel = function(_super) { __extends$1(TooltipModel2, _super); function TooltipModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TooltipModel2.type; return _this; } TooltipModel2.type = "tooltip"; TooltipModel2.dependencies = ["axisPointer"]; TooltipModel2.defaultOption = { zlevel: 0, z: 60, show: true, showContent: true, trigger: "item", triggerOn: "mousemove|click", alwaysShowContent: false, displayMode: "single", renderMode: "auto", confine: null, showDelay: 0, hideDelay: 100, transitionDuration: 0.4, enterable: false, backgroundColor: "#fff", shadowBlur: 10, shadowColor: "rgba(0, 0, 0, .2)", shadowOffsetX: 1, shadowOffsetY: 2, borderRadius: 4, borderWidth: 1, padding: null, extraCssText: "", axisPointer: { type: "line", axis: "auto", animation: "auto", animationDurationUpdate: 200, animationEasingUpdate: "exponentialOut", crossStyle: { color: "#999", width: 1, type: "dashed", textStyle: {} } }, textStyle: { color: "#666", fontSize: 14 } }; return TooltipModel2; }(ComponentModel$1); var TooltipModel$1 = TooltipModel; function shouldTooltipConfine(tooltipModel) { var confineOption = tooltipModel.get("confine"); return confineOption != null ? !!confineOption : tooltipModel.get("renderMode") === "richText"; } function testStyle(styleProps) { if (!env$1.domSupported) { return; } var style = document.documentElement.style; for (var i = 0, len2 = styleProps.length; i < len2; i++) { if (styleProps[i] in style) { return styleProps[i]; } } } var TRANSFORM_VENDOR = testStyle(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]); var TRANSITION_VENDOR = testStyle(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]); function toCSSVendorPrefix(styleVendor, styleProp) { if (!styleVendor) { return styleProp; } styleProp = toCamelCase(styleProp, true); var idx = styleVendor.indexOf(styleProp); styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp; return styleVendor.toLowerCase(); } function getComputedStyle(el, style) { var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el); return stl ? style ? stl[style] : stl : null; } var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, "transition"); var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, "transform"); var gCssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env$1.transform3dSupported ? "will-change:transform;" : ""); function mirrorPos(pos) { pos = pos === "left" ? "right" : pos === "right" ? "left" : pos === "top" ? "bottom" : "top"; return pos; } function assembleArrow(tooltipModel, borderColor, arrowPosition) { if (!isString(arrowPosition) || arrowPosition === "inside") { return ""; } var backgroundColor2 = tooltipModel.get("backgroundColor"); var borderWidth = tooltipModel.get("borderWidth"); borderColor = convertToColorString(borderColor); var arrowPos = mirrorPos(arrowPosition); var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6); var positionStyle = ""; var transformStyle = CSS_TRANSFORM_VENDOR + ":"; var rotateDeg; if (indexOf(["left", "right"], arrowPos) > -1) { positionStyle += "top:50%"; transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === "left" ? -225 : -45) + "deg)"; } else { positionStyle += "left:50%"; transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === "top" ? 225 : 45) + "deg)"; } var rotateRadian = rotateDeg * Math.PI / 180; var arrowWH = arrowSize + borderWidth; var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian)); var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100; positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px"; var borderStyle = borderColor + " solid " + borderWidth + "px;"; var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor2 + ";"]; return '
'; } function assembleTransition(duration, onlyFade) { var transitionCurve = "cubic-bezier(0.23,1,0.32,1)"; var transitionOption = " " + duration / 2 + "s " + transitionCurve; var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption; if (!onlyFade) { transitionOption = " " + duration + "s " + transitionCurve; transitionText += env$1.transformSupported ? "," + CSS_TRANSFORM_VENDOR + transitionOption : ",left" + transitionOption + ",top" + transitionOption; } return CSS_TRANSITION_VENDOR + ":" + transitionText; } function assembleTransform(x, y, toString) { var x0 = x.toFixed(0) + "px"; var y0 = y.toFixed(0) + "px"; if (!env$1.transformSupported) { return toString ? "top:" + y0 + ";left:" + x0 + ";" : [["top", y0], ["left", x0]]; } var is3d = env$1.transform3dSupported; var translate2 = "translate" + (is3d ? "3d" : "") + "(" + x0 + "," + y0 + (is3d ? ",0" : "") + ")"; return toString ? "top:0;left:0;" + CSS_TRANSFORM_VENDOR + ":" + translate2 + ";" : [["top", 0], ["left", 0], [TRANSFORM_VENDOR, translate2]]; } function assembleFont(textStyleModel) { var cssText = []; var fontSize = textStyleModel.get("fontSize"); var color2 = textStyleModel.getTextColor(); color2 && cssText.push("color:" + color2); cssText.push("font:" + textStyleModel.getFont()); fontSize && cssText.push("line-height:" + Math.round(fontSize * 3 / 2) + "px"); var shadowColor = textStyleModel.get("textShadowColor"); var shadowBlur = textStyleModel.get("textShadowBlur") || 0; var shadowOffsetX = textStyleModel.get("textShadowOffsetX") || 0; var shadowOffsetY = textStyleModel.get("textShadowOffsetY") || 0; shadowColor && shadowBlur && cssText.push("text-shadow:" + shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor); each$g(["decoration", "align"], function(name) { var val = textStyleModel.get(name); val && cssText.push("text-" + name + ":" + val); }); return cssText.join(";"); } function assembleCssText(tooltipModel, enableTransition, onlyFade) { var cssText = []; var transitionDuration = tooltipModel.get("transitionDuration"); var backgroundColor2 = tooltipModel.get("backgroundColor"); var shadowBlur = tooltipModel.get("shadowBlur"); var shadowColor = tooltipModel.get("shadowColor"); var shadowOffsetX = tooltipModel.get("shadowOffsetX"); var shadowOffsetY = tooltipModel.get("shadowOffsetY"); var textStyleModel = tooltipModel.getModel("textStyle"); var padding = getPaddingFromTooltipModel(tooltipModel, "html"); var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor; cssText.push("box-shadow:" + boxShadow); enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade)); if (backgroundColor2) { if (env$1.canvasSupported) { cssText.push("background-color:" + backgroundColor2); } else { cssText.push("background-color:#" + toHex(backgroundColor2)); cssText.push("filter:alpha(opacity=70)"); } } each$g(["width", "color", "radius"], function(name) { var borderName = "border-" + name; var camelCase = toCamelCase(borderName); var val = tooltipModel.get(camelCase); val != null && cssText.push(borderName + ":" + val + (name === "color" ? "" : "px")); }); cssText.push(assembleFont(textStyleModel)); if (padding != null) { cssText.push("padding:" + normalizeCssArray(padding).join("px ") + "px"); } return cssText.join(";") + ";"; } function makeStyleCoord$1(out2, zr, appendToBody, zrX, zrY) { var zrPainter = zr && zr.painter; if (appendToBody) { var zrViewportRoot = zrPainter && zrPainter.getViewportRoot(); if (zrViewportRoot) { transformLocalCoord(out2, zrViewportRoot, document.body, zrX, zrY); } } else { out2[0] = zrX; out2[1] = zrY; var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset(); if (viewportRootOffset) { out2[0] += viewportRootOffset.offsetLeft; out2[1] += viewportRootOffset.offsetTop; } } out2[2] = out2[0] / zr.getWidth(); out2[3] = out2[1] / zr.getHeight(); } var TooltipHTMLContent = function() { function TooltipHTMLContent2(container, api, opt) { this._show = false; this._styleCoord = [0, 0, 0, 0]; this._enterable = true; this._firstShow = true; this._longHide = true; if (env$1.wxa) { return null; } var el = document.createElement("div"); el.domBelongToZr = true; this.el = el; var zr = this._zr = api.getZr(); var appendToBody = this._appendToBody = opt && opt.appendToBody; makeStyleCoord$1(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2); if (appendToBody) { document.body.appendChild(el); } else { container.appendChild(el); } this._container = container; var self2 = this; el.onmouseenter = function() { if (self2._enterable) { clearTimeout(self2._hideTimeout); self2._show = true; } self2._inContent = true; }; el.onmousemove = function(e2) { e2 = e2 || window.event; if (!self2._enterable) { var handler = zr.handler; var zrViewportRoot = zr.painter.getViewportRoot(); normalizeEvent(zrViewportRoot, e2, true); handler.dispatch("mousemove", e2); } }; el.onmouseleave = function() { self2._inContent = false; if (self2._enterable) { if (self2._show) { self2.hideLater(self2._hideDelay); } } }; } TooltipHTMLContent2.prototype.update = function(tooltipModel) { var container = this._container; var position2 = getComputedStyle(container, "position"); var domStyle = container.style; if (domStyle.position !== "absolute" && position2 !== "absolute") { domStyle.position = "relative"; } var alwaysShowContent = tooltipModel.get("alwaysShowContent"); alwaysShowContent && this._moveIfResized(); this.el.className = tooltipModel.get("className") || ""; }; TooltipHTMLContent2.prototype.show = function(tooltipModel, nearPointColor) { clearTimeout(this._hideTimeout); clearTimeout(this._longHideTimeout); var el = this.el; var style = el.style; var styleCoord = this._styleCoord; if (!el.innerHTML) { style.display = "none"; } else { style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) + assembleTransform(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString(nearPointColor) + ";") + (tooltipModel.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none")); } this._show = true; this._firstShow = false; this._longHide = false; }; TooltipHTMLContent2.prototype.setContent = function(content, markers, tooltipModel, borderColor, arrowPosition) { var el = this.el; if (content == null) { el.innerHTML = ""; return; } var arrow = ""; if (isString(arrowPosition) && tooltipModel.get("trigger") === "item" && !shouldTooltipConfine(tooltipModel)) { arrow = assembleArrow(tooltipModel, borderColor, arrowPosition); } if (isString(content)) { el.innerHTML = content + arrow; } else if (content) { el.innerHTML = ""; if (!isArray$1(content)) { content = [content]; } for (var i = 0; i < content.length; i++) { if (isDom(content[i]) && content[i].parentNode !== el) { el.appendChild(content[i]); } } if (arrow && el.childNodes.length) { var arrowEl = document.createElement("div"); arrowEl.innerHTML = arrow; el.appendChild(arrowEl); } } }; TooltipHTMLContent2.prototype.setEnterable = function(enterable) { this._enterable = enterable; }; TooltipHTMLContent2.prototype.getSize = function() { var el = this.el; return [el.offsetWidth, el.offsetHeight]; }; TooltipHTMLContent2.prototype.moveTo = function(zrX, zrY) { var styleCoord = this._styleCoord; makeStyleCoord$1(styleCoord, this._zr, this._appendToBody, zrX, zrY); if (styleCoord[0] != null && styleCoord[1] != null) { var style_1 = this.el.style; var transforms = assembleTransform(styleCoord[0], styleCoord[1]); each$g(transforms, function(transform2) { style_1[transform2[0]] = transform2[1]; }); } }; TooltipHTMLContent2.prototype._moveIfResized = function() { var ratioX = this._styleCoord[2]; var ratioY = this._styleCoord[3]; this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); }; TooltipHTMLContent2.prototype.hide = function() { var _this = this; var style = this.el.style; style.visibility = "hidden"; style.opacity = "0"; env$1.transform3dSupported && (style.willChange = ""); this._show = false; this._longHideTimeout = setTimeout(function() { return _this._longHide = true; }, 500); }; TooltipHTMLContent2.prototype.hideLater = function(time2) { if (this._show && !(this._inContent && this._enterable)) { if (time2) { this._hideDelay = time2; this._show = false; this._hideTimeout = setTimeout(bind$2(this.hide, this), time2); } else { this.hide(); } } }; TooltipHTMLContent2.prototype.isShow = function() { return this._show; }; TooltipHTMLContent2.prototype.dispose = function() { this.el.parentNode.removeChild(this.el); }; return TooltipHTMLContent2; }(); var TooltipHTMLContent$1 = TooltipHTMLContent; var TooltipRichContent = function() { function TooltipRichContent2(api) { this._show = false; this._styleCoord = [0, 0, 0, 0]; this._enterable = true; this._zr = api.getZr(); makeStyleCoord(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2); } TooltipRichContent2.prototype.update = function(tooltipModel) { var alwaysShowContent = tooltipModel.get("alwaysShowContent"); alwaysShowContent && this._moveIfResized(); }; TooltipRichContent2.prototype.show = function() { if (this._hideTimeout) { clearTimeout(this._hideTimeout); } this.el.show(); this._show = true; }; TooltipRichContent2.prototype.setContent = function(content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) { if (isObject$3(content)) { throwError(""); } if (this.el) { this._zr.remove(this.el); } var textStyleModel = tooltipModel.getModel("textStyle"); this.el = new ZRText$1({ style: { rich: markupStyleCreator.richTextStyles, text: content, lineHeight: 22, backgroundColor: tooltipModel.get("backgroundColor"), borderRadius: tooltipModel.get("borderRadius"), borderWidth: 1, borderColor, shadowColor: tooltipModel.get("shadowColor"), shadowBlur: tooltipModel.get("shadowBlur"), shadowOffsetX: tooltipModel.get("shadowOffsetX"), shadowOffsetY: tooltipModel.get("shadowOffsetY"), textShadowColor: textStyleModel.get("textShadowColor"), textShadowBlur: textStyleModel.get("textShadowBlur") || 0, textShadowOffsetX: textStyleModel.get("textShadowOffsetX") || 0, textShadowOffsetY: textStyleModel.get("textShadowOffsetY") || 0, fill: tooltipModel.get(["textStyle", "color"]), padding: getPaddingFromTooltipModel(tooltipModel, "richText"), verticalAlign: "top", align: "left" }, z: tooltipModel.get("z") }); this._zr.add(this.el); var self2 = this; this.el.on("mouseover", function() { if (self2._enterable) { clearTimeout(self2._hideTimeout); self2._show = true; } self2._inContent = true; }); this.el.on("mouseout", function() { if (self2._enterable) { if (self2._show) { self2.hideLater(self2._hideDelay); } } self2._inContent = false; }); }; TooltipRichContent2.prototype.setEnterable = function(enterable) { this._enterable = enterable; }; TooltipRichContent2.prototype.getSize = function() { var el = this.el; var bounding = this.el.getBoundingRect(); var shadowOuterSize = calcShadowOuterSize(el.style); return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom]; }; TooltipRichContent2.prototype.moveTo = function(x, y) { var el = this.el; if (el) { var styleCoord = this._styleCoord; makeStyleCoord(styleCoord, this._zr, x, y); x = styleCoord[0]; y = styleCoord[1]; var style = el.style; var borderWidth = mathMaxWith0(style.borderWidth || 0); var shadowOuterSize = calcShadowOuterSize(style); el.x = x + borderWidth + shadowOuterSize.left; el.y = y + borderWidth + shadowOuterSize.top; el.markRedraw(); } }; TooltipRichContent2.prototype._moveIfResized = function() { var ratioX = this._styleCoord[2]; var ratioY = this._styleCoord[3]; this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); }; TooltipRichContent2.prototype.hide = function() { if (this.el) { this.el.hide(); } this._show = false; }; TooltipRichContent2.prototype.hideLater = function(time2) { if (this._show && !(this._inContent && this._enterable)) { if (time2) { this._hideDelay = time2; this._show = false; this._hideTimeout = setTimeout(bind$2(this.hide, this), time2); } else { this.hide(); } } }; TooltipRichContent2.prototype.isShow = function() { return this._show; }; TooltipRichContent2.prototype.dispose = function() { this._zr.remove(this.el); }; return TooltipRichContent2; }(); function mathMaxWith0(val) { return Math.max(0, val); } function calcShadowOuterSize(style) { var shadowBlur = mathMaxWith0(style.shadowBlur || 0); var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0); var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0); return { left: mathMaxWith0(shadowBlur - shadowOffsetX), right: mathMaxWith0(shadowBlur + shadowOffsetX), top: mathMaxWith0(shadowBlur - shadowOffsetY), bottom: mathMaxWith0(shadowBlur + shadowOffsetY) }; } function makeStyleCoord(out2, zr, zrX, zrY) { out2[0] = zrX; out2[1] = zrY; out2[2] = out2[0] / zr.getWidth(); out2[3] = out2[1] / zr.getHeight(); } var TooltipRichContent$1 = TooltipRichContent; var bind = bind$2; var each$5 = each$g; var parsePercent = parsePercent$1; var proxyRect = new Rect$3({ shape: { x: -1, y: -1, width: 2, height: 2 } }); var TooltipView = function(_super) { __extends$1(TooltipView2, _super); function TooltipView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TooltipView2.type; return _this; } TooltipView2.prototype.init = function(ecModel, api) { if (env$1.node) { return; } var tooltipModel = ecModel.getComponent("tooltip"); var renderMode = tooltipModel.get("renderMode"); this._renderMode = getTooltipRenderMode(renderMode); this._tooltipContent = this._renderMode === "richText" ? new TooltipRichContent$1(api) : new TooltipHTMLContent$1(api.getDom(), api, { appendToBody: tooltipModel.get("appendToBody", true) }); }; TooltipView2.prototype.render = function(tooltipModel, ecModel, api) { if (env$1.node) { return; } this.group.removeAll(); this._tooltipModel = tooltipModel; this._ecModel = ecModel; this._api = api; this._alwaysShowContent = tooltipModel.get("alwaysShowContent"); var tooltipContent = this._tooltipContent; tooltipContent.update(tooltipModel); tooltipContent.setEnterable(tooltipModel.get("enterable")); this._initGlobalListener(); this._keepShow(); this._updatePosition = this._renderMode === "html" ? throttle(bind(this._doUpdatePosition, this), 50) : this._doUpdatePosition; }; TooltipView2.prototype._initGlobalListener = function() { var tooltipModel = this._tooltipModel; var triggerOn = tooltipModel.get("triggerOn"); register("itemTooltip", this._api, bind(function(currTrigger, e2, dispatchAction2) { if (triggerOn !== "none") { if (triggerOn.indexOf(currTrigger) >= 0) { this._tryShow(e2, dispatchAction2); } else if (currTrigger === "leave") { this._hide(dispatchAction2); } } }, this)); }; TooltipView2.prototype._keepShow = function() { var tooltipModel = this._tooltipModel; var ecModel = this._ecModel; var api = this._api; if (this._lastX != null && this._lastY != null && tooltipModel.get("triggerOn") !== "none") { var self_1 = this; clearTimeout(this._refreshUpdateTimeout); this._refreshUpdateTimeout = setTimeout(function() { !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, { x: self_1._lastX, y: self_1._lastY, dataByCoordSys: self_1._lastDataByCoordSys }); }); } }; TooltipView2.prototype.manuallyShowTip = function(tooltipModel, ecModel, api, payload) { if (payload.from === this.uid || env$1.node) { return; } var dispatchAction2 = makeDispatchAction(payload, api); this._ticket = ""; var dataByCoordSys = payload.dataByCoordSys; var cmptRef = findComponentReference(payload, ecModel, api); if (cmptRef) { var rect = cmptRef.el.getBoundingRect().clone(); rect.applyTransform(cmptRef.el.transform); this._tryShow({ offsetX: rect.x + rect.width / 2, offsetY: rect.y + rect.height / 2, target: cmptRef.el, position: payload.position, positionDefault: "bottom" }, dispatchAction2); } else if (payload.tooltip && payload.x != null && payload.y != null) { var el = proxyRect; el.x = payload.x; el.y = payload.y; el.update(); getECData(el).tooltipConfig = { name: null, option: payload.tooltip }; this._tryShow({ offsetX: payload.x, offsetY: payload.y, target: el }, dispatchAction2); } else if (dataByCoordSys) { this._tryShow({ offsetX: payload.x, offsetY: payload.y, position: payload.position, dataByCoordSys, tooltipOption: payload.tooltipOption }, dispatchAction2); } else if (payload.seriesIndex != null) { if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) { return; } var pointInfo = findPointFromSeries(payload, ecModel); var cx = pointInfo.point[0]; var cy = pointInfo.point[1]; if (cx != null && cy != null) { this._tryShow({ offsetX: cx, offsetY: cy, target: pointInfo.el, position: payload.position, positionDefault: "bottom" }, dispatchAction2); } } else if (payload.x != null && payload.y != null) { api.dispatchAction({ type: "updateAxisPointer", x: payload.x, y: payload.y }); this._tryShow({ offsetX: payload.x, offsetY: payload.y, position: payload.position, target: api.getZr().findHover(payload.x, payload.y).target }, dispatchAction2); } }; TooltipView2.prototype.manuallyHideTip = function(tooltipModel, ecModel, api, payload) { var tooltipContent = this._tooltipContent; if (!this._alwaysShowContent && this._tooltipModel) { tooltipContent.hideLater(this._tooltipModel.get("hideDelay")); } this._lastX = this._lastY = this._lastDataByCoordSys = null; if (payload.from !== this.uid) { this._hide(makeDispatchAction(payload, api)); } }; TooltipView2.prototype._manuallyAxisShowTip = function(tooltipModel, ecModel, api, payload) { var seriesIndex = payload.seriesIndex; var dataIndex = payload.dataIndex; var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) { return; } var seriesModel = ecModel.getSeriesByIndex(seriesIndex); if (!seriesModel) { return; } var data = seriesModel.getData(); var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel); if (tooltipCascadedModel.get("trigger") !== "axis") { return; } api.dispatchAction({ type: "updateAxisPointer", seriesIndex, dataIndex, position: payload.position }); return true; }; TooltipView2.prototype._tryShow = function(e2, dispatchAction2) { var el = e2.target; var tooltipModel = this._tooltipModel; if (!tooltipModel) { return; } this._lastX = e2.offsetX; this._lastY = e2.offsetY; var dataByCoordSys = e2.dataByCoordSys; if (dataByCoordSys && dataByCoordSys.length) { this._showAxisTooltip(dataByCoordSys, e2); } else if (el) { this._lastDataByCoordSys = null; var seriesDispatcher_1; var cmptDispatcher_1; findEventDispatcher(el, function(target) { if (getECData(target).dataIndex != null) { seriesDispatcher_1 = target; return true; } if (getECData(target).tooltipConfig != null) { cmptDispatcher_1 = target; return true; } }, true); if (seriesDispatcher_1) { this._showSeriesItemTooltip(e2, seriesDispatcher_1, dispatchAction2); } else if (cmptDispatcher_1) { this._showComponentItemTooltip(e2, cmptDispatcher_1, dispatchAction2); } else { this._hide(dispatchAction2); } } else { this._lastDataByCoordSys = null; this._hide(dispatchAction2); } }; TooltipView2.prototype._showOrMove = function(tooltipModel, cb) { var delay = tooltipModel.get("showDelay"); cb = bind$2(cb, this); clearTimeout(this._showTimout); delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb(); }; TooltipView2.prototype._showAxisTooltip = function(dataByCoordSys, e2) { var ecModel = this._ecModel; var globalTooltipModel = this._tooltipModel; var point = [e2.offsetX, e2.offsetY]; var singleTooltipModel = buildTooltipModel([e2.tooltipOption], globalTooltipModel); var renderMode = this._renderMode; var cbParamsList = []; var articleMarkup = createTooltipMarkup("section", { blocks: [], noHeader: true }); var markupTextArrLegacy = []; var markupStyleCreator = new TooltipMarkupStyleCreator(); each$5(dataByCoordSys, function(itemCoordSys) { each$5(itemCoordSys.dataByAxis, function(axisItem) { var axisModel = ecModel.getComponent(axisItem.axisDim + "Axis", axisItem.axisIndex); var axisValue = axisItem.value; if (!axisModel || axisValue == null) { return; } var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt); var axisSectionMarkup = createTooltipMarkup("section", { header: axisValueLabel, noHeader: !trim$1(axisValueLabel), sortBlocks: true, blocks: [] }); articleMarkup.blocks.push(axisSectionMarkup); each$g(axisItem.seriesDataIndices, function(idxItem) { var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); var dataIndex = idxItem.dataIndexInside; var cbParams = series.getDataParams(dataIndex); if (cbParams.dataIndex < 0) { return; } cbParams.axisDim = axisItem.axisDim; cbParams.axisIndex = axisItem.axisIndex; cbParams.axisType = axisItem.axisType; cbParams.axisId = axisItem.axisId; cbParams.axisValue = getAxisRawValue(axisModel.axis, { value: axisValue }); cbParams.axisValueLabel = axisValueLabel; cbParams.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(cbParams.color), renderMode); var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null)); if (seriesTooltipResult.markupFragment) { axisSectionMarkup.blocks.push(seriesTooltipResult.markupFragment); } if (seriesTooltipResult.markupText) { markupTextArrLegacy.push(seriesTooltipResult.markupText); } cbParamsList.push(cbParams); }); }); }); articleMarkup.blocks.reverse(); markupTextArrLegacy.reverse(); var positionExpr = e2.position; var orderMode = singleTooltipModel.get("order"); var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), singleTooltipModel.get("textStyle")); builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText); var blockBreak = renderMode === "richText" ? "\n\n" : "
"; var allMarkupText = markupTextArrLegacy.join(blockBreak); this._showOrMove(singleTooltipModel, function() { if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) { this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList); } else { this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + "", point[0], point[1], positionExpr, null, markupStyleCreator); } }); }; TooltipView2.prototype._showSeriesItemTooltip = function(e2, dispatcher, dispatchAction2) { var ecModel = this._ecModel; var ecData = getECData(dispatcher); var seriesIndex = ecData.seriesIndex; var seriesModel = ecModel.getSeriesByIndex(seriesIndex); var dataModel = ecData.dataModel || seriesModel; var dataIndex = ecData.dataIndex; var dataType = ecData.dataType; var data = dataModel.getData(dataType); var renderMode = this._renderMode; var positionDefault = e2.positionDefault; var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? { position: positionDefault } : null); var tooltipTrigger = tooltipModel.get("trigger"); if (tooltipTrigger != null && tooltipTrigger !== "item") { return; } var params = dataModel.getDataParams(dataIndex, dataType); var markupStyleCreator = new TooltipMarkupStyleCreator(); params.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(params.color), renderMode); var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType)); var orderMode = tooltipModel.get("order"); var markupText = seriesTooltipResult.markupFragment ? buildTooltipMarkup(seriesTooltipResult.markupFragment, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), tooltipModel.get("textStyle")) : seriesTooltipResult.markupText; var asyncTicket = "item_" + dataModel.name + "_" + dataIndex; this._showOrMove(tooltipModel, function() { this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e2.offsetX, e2.offsetY, e2.position, e2.target, markupStyleCreator); }); dispatchAction2({ type: "showTip", dataIndexInside: dataIndex, dataIndex: data.getRawIndex(dataIndex), seriesIndex, from: this.uid }); }; TooltipView2.prototype._showComponentItemTooltip = function(e2, el, dispatchAction2) { var ecData = getECData(el); var tooltipConfig = ecData.tooltipConfig; var tooltipOpt = tooltipConfig.option || {}; if (isString(tooltipOpt)) { var content = tooltipOpt; tooltipOpt = { content, formatter: content }; } var tooltipModelCascade = [tooltipOpt]; var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex); if (cmpt) { tooltipModelCascade.push(cmpt); } tooltipModelCascade.push({ formatter: tooltipOpt.content }); var positionDefault = e2.positionDefault; var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? { position: positionDefault } : null); var defaultHtml = subTooltipModel.get("content"); var asyncTicket = Math.random() + ""; var markupStyleCreator = new TooltipMarkupStyleCreator(); this._showOrMove(subTooltipModel, function() { var formatterParams = clone$4(subTooltipModel.get("formatterParams") || {}); this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e2.offsetX, e2.offsetY, e2.position, el, markupStyleCreator); }); dispatchAction2({ type: "showTip", from: this.uid }); }; TooltipView2.prototype._showTooltipContent = function(tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) { this._ticket = ""; if (!tooltipModel.get("showContent") || !tooltipModel.get("show")) { return; } var tooltipContent = this._tooltipContent; var formatter = tooltipModel.get("formatter"); positionExpr = positionExpr || tooltipModel.get("position"); var html = defaultHtml; var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get("trigger"), tooltipModel.get("borderColor")); var nearPointColor = nearPoint.color; if (formatter) { if (isString(formatter)) { var useUTC = tooltipModel.ecModel.get("useUTC"); var params0 = isArray$1(params) ? params[0] : params; var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf("time") >= 0; html = formatter; if (isTimeAxis) { html = format$1(params0.axisValue, html, useUTC); } html = formatTpl(html, params, true); } else if (isFunction(formatter)) { var callback = bind(function(cbTicket, html2) { if (cbTicket === this._ticket) { tooltipContent.setContent(html2, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); } }, this); this._ticket = asyncTicket; html = formatter(params, asyncTicket, callback); } else { html = formatter; } } tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); tooltipContent.show(tooltipModel, nearPointColor); this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); }; TooltipView2.prototype._getNearestPoint = function(point, tooltipDataParams, trigger2, borderColor) { if (trigger2 === "axis" || isArray$1(tooltipDataParams)) { return { color: borderColor || (this._renderMode === "html" ? "#fff" : "none") }; } if (!isArray$1(tooltipDataParams)) { return { color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor }; } }; TooltipView2.prototype._doUpdatePosition = function(tooltipModel, positionExpr, x, y, content, params, el) { var viewWidth = this._api.getWidth(); var viewHeight = this._api.getHeight(); positionExpr = positionExpr || tooltipModel.get("position"); var contentSize = content.getSize(); var align = tooltipModel.get("align"); var vAlign = tooltipModel.get("verticalAlign"); var rect = el && el.getBoundingRect().clone(); el && rect.applyTransform(el.transform); if (isFunction(positionExpr)) { positionExpr = positionExpr([x, y], params, content.el, rect, { viewSize: [viewWidth, viewHeight], contentSize: contentSize.slice() }); } if (isArray$1(positionExpr)) { x = parsePercent(positionExpr[0], viewWidth); y = parsePercent(positionExpr[1], viewHeight); } else if (isObject$3(positionExpr)) { var boxLayoutPosition = positionExpr; boxLayoutPosition.width = contentSize[0]; boxLayoutPosition.height = contentSize[1]; var layoutRect = getLayoutRect(boxLayoutPosition, { width: viewWidth, height: viewHeight }); x = layoutRect.x; y = layoutRect.y; align = null; vAlign = null; } else if (isString(positionExpr) && el) { var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get("borderWidth")); x = pos[0]; y = pos[1]; } else { var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20); x = pos[0]; y = pos[1]; } align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === "right" ? contentSize[0] : 0); vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === "bottom" ? contentSize[1] : 0); if (shouldTooltipConfine(tooltipModel)) { var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight); x = pos[0]; y = pos[1]; } content.moveTo(x, y); }; TooltipView2.prototype._updateContentNotChangedOnAxis = function(dataByCoordSys, cbParamsList) { var lastCoordSys = this._lastDataByCoordSys; var lastCbParamsList = this._cbParamsList; var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length; contentNotChanged && each$5(lastCoordSys, function(lastItemCoordSys, indexCoordSys) { var lastDataByAxis = lastItemCoordSys.dataByAxis || []; var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}; var thisDataByAxis = thisItemCoordSys.dataByAxis || []; contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length; contentNotChanged && each$5(lastDataByAxis, function(lastItem, indexAxis) { var thisItem = thisDataByAxis[indexAxis] || {}; var lastIndices = lastItem.seriesDataIndices || []; var newIndices = thisItem.seriesDataIndices || []; contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length; contentNotChanged && each$5(lastIndices, function(lastIdxItem, j) { var newIdxItem = newIndices[j]; contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex; }); lastCbParamsList && each$g(lastItem.seriesDataIndices, function(idxItem) { var seriesIdx = idxItem.seriesIndex; var cbParams = cbParamsList[seriesIdx]; var lastCbParams = lastCbParamsList[seriesIdx]; if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) { contentNotChanged = false; } }); }); }); this._lastDataByCoordSys = dataByCoordSys; this._cbParamsList = cbParamsList; return !!contentNotChanged; }; TooltipView2.prototype._hide = function(dispatchAction2) { this._lastDataByCoordSys = null; dispatchAction2({ type: "hideTip", from: this.uid }); }; TooltipView2.prototype.dispose = function(ecModel, api) { if (env$1.node) { return; } this._tooltipContent.dispose(); unregister("itemTooltip", api); }; TooltipView2.type = "tooltip"; return TooltipView2; }(ComponentView$1); function buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) { var ecModel = globalTooltipModel.ecModel; var resultModel; if (defaultTooltipOption) { resultModel = new Model$1(defaultTooltipOption, ecModel, ecModel); resultModel = new Model$1(globalTooltipModel.option, resultModel, ecModel); } else { resultModel = globalTooltipModel; } for (var i = modelCascade.length - 1; i >= 0; i--) { var tooltipOpt = modelCascade[i]; if (tooltipOpt) { if (tooltipOpt instanceof Model$1) { tooltipOpt = tooltipOpt.get("tooltip", true); } if (isString(tooltipOpt)) { tooltipOpt = { formatter: tooltipOpt }; } if (tooltipOpt) { resultModel = new Model$1(tooltipOpt, resultModel, ecModel); } } } return resultModel; } function makeDispatchAction(payload, api) { return payload.dispatchAction || bind$2(api.dispatchAction, api); } function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) { var size = content.getSize(); var width = size[0]; var height = size[1]; if (gapH != null) { if (x + width + gapH + 2 > viewWidth) { x -= width + gapH; } else { x += gapH; } } if (gapV != null) { if (y + height + gapV > viewHeight) { y -= height + gapV; } else { y += gapV; } } return [x, y]; } function confineTooltipPosition(x, y, content, viewWidth, viewHeight) { var size = content.getSize(); var width = size[0]; var height = size[1]; x = Math.min(x + width, viewWidth) - width; y = Math.min(y + height, viewHeight) - height; x = Math.max(x, 0); y = Math.max(y, 0); return [x, y]; } function calcTooltipPosition(position2, rect, contentSize, borderWidth) { var domWidth = contentSize[0]; var domHeight = contentSize[1]; var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8; var x = 0; var y = 0; var rectWidth = rect.width; var rectHeight = rect.height; switch (position2) { case "inside": x = rect.x + rectWidth / 2 - domWidth / 2; y = rect.y + rectHeight / 2 - domHeight / 2; break; case "top": x = rect.x + rectWidth / 2 - domWidth / 2; y = rect.y - domHeight - offset; break; case "bottom": x = rect.x + rectWidth / 2 - domWidth / 2; y = rect.y + rectHeight + offset; break; case "left": x = rect.x - domWidth - offset; y = rect.y + rectHeight / 2 - domHeight / 2; break; case "right": x = rect.x + rectWidth + offset; y = rect.y + rectHeight / 2 - domHeight / 2; } return [x, y]; } function isCenterAlign(align) { return align === "center" || align === "middle"; } function findComponentReference(payload, ecModel, api) { var queryOptionMap = preParseFinder(payload).queryOptionMap; var componentMainType = queryOptionMap.keys()[0]; if (!componentMainType || componentMainType === "series") { return; } var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), { useDefault: false, enableAll: false, enableNone: false }); var model = queryResult.models[0]; if (!model) { return; } var view2 = api.getViewOfComponentModel(model); var el; view2.group.traverse(function(subEl) { var tooltipConfig = getECData(subEl).tooltipConfig; if (tooltipConfig && tooltipConfig.name === payload.name) { el = subEl; return true; } }); if (el) { return { componentMainType, componentIndex: model.componentIndex, el }; } } var TooltipView$1 = TooltipView; function install$i(registers) { use(install$q); registers.registerComponentModel(TooltipModel$1); registers.registerComponentView(TooltipView$1); registers.registerAction({ type: "showTip", event: "showTip", update: "tooltip:manuallyShowTip" }, function() { }); registers.registerAction({ type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip" }, function() { }); } var DEFAULT_TOOLBOX_BTNS = ["rect", "polygon", "keep", "clear"]; function brushPreprocessor(option, isNew) { var brushComponents = normalizeToArray(option ? option.brush : []); if (!brushComponents.length) { return; } var brushComponentSpecifiedBtns = []; each$g(brushComponents, function(brushOpt) { var tbs = brushOpt.hasOwnProperty("toolbox") ? brushOpt.toolbox : []; if (tbs instanceof Array) { brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs); } }); var toolbox = option && option.toolbox; if (isArray$1(toolbox)) { toolbox = toolbox[0]; } if (!toolbox) { toolbox = { feature: {} }; option.toolbox = [toolbox]; } var toolboxFeature = toolbox.feature || (toolbox.feature = {}); var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {}); var brushTypes = toolboxBrush.type || (toolboxBrush.type = []); brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns); removeDuplicate(brushTypes); if (isNew && !brushTypes.length) { brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS); } } function removeDuplicate(arr) { var map2 = {}; each$g(arr, function(val) { map2[val] = 1; }); arr.length = 0; each$g(map2, function(flag2, val) { arr.push(val); }); } var each$4 = each$g; function hasKeys(obj) { if (obj) { for (var name_1 in obj) { if (obj.hasOwnProperty(name_1)) { return true; } } } } function createVisualMappings(option, stateList, supplementVisualOption) { var visualMappings = {}; each$4(stateList, function(state) { var mappings = visualMappings[state] = createMappings(); each$4(option[state], function(visualData, visualType) { if (!VisualMapping$1.isValidType(visualType)) { return; } var mappingOption = { type: visualType, visual: visualData }; supplementVisualOption && supplementVisualOption(mappingOption, state); mappings[visualType] = new VisualMapping$1(mappingOption); if (visualType === "opacity") { mappingOption = clone$4(mappingOption); mappingOption.type = "colorAlpha"; mappings.__hidden.__alphaForOpacity = new VisualMapping$1(mappingOption); } }); }); return visualMappings; function createMappings() { var Creater = function() { }; Creater.prototype.__hidden = Creater.prototype; var obj = new Creater(); return obj; } } function replaceVisualOption(thisOption, newOption, keys2) { var has2; each$g(keys2, function(key2) { if (newOption.hasOwnProperty(key2) && hasKeys(newOption[key2])) { has2 = true; } }); has2 && each$g(keys2, function(key2) { if (newOption.hasOwnProperty(key2) && hasKeys(newOption[key2])) { thisOption[key2] = clone$4(newOption[key2]); } else { delete thisOption[key2]; } }); } function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) { var visualTypesMap = {}; each$g(stateList, function(state) { var visualTypes = VisualMapping$1.prepareVisualTypes(visualMappings[state]); visualTypesMap[state] = visualTypes; }); var dataIndex; function getVisual(key2) { return getItemVisualFromData(data, dataIndex, key2); } function setVisual(key2, value) { setItemVisualFromData(data, dataIndex, key2, value); } if (dimension == null) { data.each(eachItem); } else { data.each([dimension], eachItem); } function eachItem(valueOrIndex, index) { dataIndex = dimension == null ? valueOrIndex : index; var rawDataItem = data.getRawDataItem(dataIndex); if (rawDataItem && rawDataItem.visualMap === false) { return; } var valueState = getValueState.call(scope, valueOrIndex); var mappings = visualMappings[valueState]; var visualTypes = visualTypesMap[valueState]; for (var i = 0, len2 = visualTypes.length; i < len2; i++) { var type = visualTypes[i]; mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual); } } } function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) { var visualTypesMap = {}; each$g(stateList, function(state) { var visualTypes = VisualMapping$1.prepareVisualTypes(visualMappings[state]); visualTypesMap[state] = visualTypes; }); return { progress: function progress(params, data) { var dimIndex; if (dim != null) { dimIndex = data.getDimensionIndex(dim); } function getVisual(key2) { return getItemVisualFromData(data, dataIndex, key2); } function setVisual(key2, value2) { setItemVisualFromData(data, dataIndex, key2, value2); } var dataIndex; var store = data.getStore(); while ((dataIndex = params.next()) != null) { var rawDataItem = data.getRawDataItem(dataIndex); if (rawDataItem && rawDataItem.visualMap === false) { continue; } var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex; var valueState = getValueState(value); var mappings = visualMappings[valueState]; var visualTypes = visualTypesMap[valueState]; for (var i = 0, len2 = visualTypes.length; i < len2; i++) { var type = visualTypes[i]; mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual); } } } }; } function makeBrushCommonSelectorForSeries(area) { var brushType = area.brushType; var selectors = { point: function(itemLayout) { return selector[brushType].point(itemLayout, selectors, area); }, rect: function(itemLayout) { return selector[brushType].rect(itemLayout, selectors, area); } }; return selectors; } var selector = { lineX: getLineSelectors(0), lineY: getLineSelectors(1), rect: { point: function(itemLayout, selectors, area) { return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]); }, rect: function(itemLayout, selectors, area) { return itemLayout && area.boundingRect.intersect(itemLayout); } }, polygon: { point: function(itemLayout, selectors, area) { return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain$1(area.range, itemLayout[0], itemLayout[1]); }, rect: function(itemLayout, selectors, area) { var points2 = area.range; if (!itemLayout || points2.length <= 1) { return false; } var x = itemLayout.x; var y = itemLayout.y; var width = itemLayout.width; var height = itemLayout.height; var p = points2[0]; if (contain$1(points2, x, y) || contain$1(points2, x + width, y) || contain$1(points2, x, y + height) || contain$1(points2, x + width, y + height) || BoundingRect$1.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points2) || linePolygonIntersect(x, y, x, y + height, points2) || linePolygonIntersect(x + width, y, x + width, y + height, points2) || linePolygonIntersect(x, y + height, x + width, y + height, points2)) { return true; } } } }; function getLineSelectors(xyIndex) { var xy = ["x", "y"]; var wh = ["width", "height"]; return { point: function(itemLayout, selectors, area) { if (itemLayout) { var range = area.range; var p = itemLayout[xyIndex]; return inLineRange(p, range); } }, rect: function(itemLayout, selectors, area) { if (itemLayout) { var range = area.range; var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]]; layoutRange[1] < layoutRange[0] && layoutRange.reverse(); return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange); } } }; } function inLineRange(p, range) { return range[0] <= p && p <= range[1]; } var STATE_LIST = ["inBrush", "outOfBrush"]; var DISPATCH_METHOD = "__ecBrushSelect"; var DISPATCH_FLAG = "__ecInBrushSelectEvent"; function layoutCovers(ecModel) { ecModel.eachComponent({ mainType: "brush" }, function(brushModel) { var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager$1(brushModel.option, ecModel); brushTargetManager.setInputRanges(brushModel.areas, ecModel); }); } function brushVisual(ecModel, api, payload) { var brushSelected = []; var throttleType; var throttleDelay; ecModel.eachComponent({ mainType: "brush" }, function(brushModel) { payload && payload.type === "takeGlobalCursor" && brushModel.setBrushOption(payload.key === "brush" ? payload.brushOption : { brushType: false }); }); layoutCovers(ecModel); ecModel.eachComponent({ mainType: "brush" }, function(brushModel, brushIndex) { var thisBrushSelected = { brushId: brushModel.id, brushIndex, brushName: brushModel.name, areas: clone$4(brushModel.areas), selected: [] }; brushSelected.push(thisBrushSelected); var brushOption = brushModel.option; var brushLink = brushOption.brushLink; var linkedSeriesMap = []; var selectedDataIndexForLink = []; var rangeInfoBySeries = []; var hasBrushExists = false; if (!brushIndex) { throttleType = brushOption.throttleType; throttleDelay = brushOption.throttleDelay; } var areas = map$1(brushModel.areas, function(area) { var builder = boundingRectBuilders[area.brushType]; var selectableArea = defaults({ boundingRect: builder ? builder(area) : void 0 }, area); selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea); return selectableArea; }); var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function(mappingOption) { mappingOption.mappingMethod = "fixed"; }); isArray$1(brushLink) && each$g(brushLink, function(seriesIndex) { linkedSeriesMap[seriesIndex] = 1; }); function linkOthers(seriesIndex) { return brushLink === "all" || !!linkedSeriesMap[seriesIndex]; } function brushed(rangeInfoList) { return !!rangeInfoList.length; } ecModel.eachSeries(function(seriesModel, seriesIndex) { var rangeInfoList = rangeInfoBySeries[seriesIndex] = []; seriesModel.subType === "parallel" ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList); }); function stepAParallel(seriesModel, seriesIndex) { var coordSys = seriesModel.coordinateSystem; hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed(); linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function(activeState, dataIndex) { activeState === "active" && (selectedDataIndexForLink[dataIndex] = 1); }); } function stepAOthers(seriesModel, seriesIndex, rangeInfoList) { if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) { return; } each$g(areas, function(area) { if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) { rangeInfoList.push(area); } hasBrushExists = hasBrushExists || brushed(rangeInfoList); }); if (linkOthers(seriesIndex) && brushed(rangeInfoList)) { var data_1 = seriesModel.getData(); data_1.each(function(dataIndex) { if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) { selectedDataIndexForLink[dataIndex] = 1; } }); } } ecModel.eachSeries(function(seriesModel, seriesIndex) { var seriesBrushSelected = { seriesId: seriesModel.id, seriesIndex, seriesName: seriesModel.name, dataIndex: [] }; thisBrushSelected.selected.push(seriesBrushSelected); var rangeInfoList = rangeInfoBySeries[seriesIndex]; var data = seriesModel.getData(); var getValueState = linkOthers(seriesIndex) ? function(dataIndex) { return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; } : function(dataIndex) { return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; }; (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual(STATE_LIST, visualMappings, data, getValueState); }); }); dispatchAction$1(api, throttleType, throttleDelay, brushSelected, payload); } function dispatchAction$1(api, throttleType, throttleDelay, brushSelected, payload) { if (!payload) { return; } var zr = api.getZr(); if (zr[DISPATCH_FLAG]) { return; } if (!zr[DISPATCH_METHOD]) { zr[DISPATCH_METHOD] = doDispatch; } var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType); fn(api, brushSelected); } function doDispatch(api, brushSelected) { if (!api.isDisposed()) { var zr = api.getZr(); zr[DISPATCH_FLAG] = true; api.dispatchAction({ type: "brushSelect", batch: brushSelected }); zr[DISPATCH_FLAG] = false; } } function checkInRange(seriesModel, rangeInfoList, data, dataIndex) { for (var i = 0, len2 = rangeInfoList.length; i < len2; i++) { var area = rangeInfoList[i]; if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) { return true; } } } function brushModelNotControll(brushModel, seriesIndex) { var seriesIndices = brushModel.option.seriesIndex; return seriesIndices != null && seriesIndices !== "all" && (isArray$1(seriesIndices) ? indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices); } var boundingRectBuilders = { rect: function(area) { return getBoundingRectFromMinMax(area.range); }, polygon: function(area) { var minMax; var range = area.range; for (var i = 0, len2 = range.length; i < len2; i++) { minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]]; var rg = range[i]; rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]); rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]); rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]); rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]); } return minMax && getBoundingRectFromMinMax(minMax); } }; function getBoundingRectFromMinMax(minMax) { return new BoundingRect$1(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]); } var BrushView = function(_super) { __extends$1(BrushView2, _super); function BrushView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BrushView2.type; return _this; } BrushView2.prototype.init = function(ecModel, api) { this.ecModel = ecModel; this.api = api; this.model; (this._brushController = new BrushController$1(api.getZr())).on("brush", bind$2(this._onBrush, this)).mount(); }; BrushView2.prototype.render = function(brushModel, ecModel, api, payload) { this.model = brushModel; this._updateController(brushModel, ecModel, api, payload); }; BrushView2.prototype.updateTransform = function(brushModel, ecModel, api, payload) { layoutCovers(ecModel); this._updateController(brushModel, ecModel, api, payload); }; BrushView2.prototype.updateVisual = function(brushModel, ecModel, api, payload) { this.updateTransform(brushModel, ecModel, api, payload); }; BrushView2.prototype.updateView = function(brushModel, ecModel, api, payload) { this._updateController(brushModel, ecModel, api, payload); }; BrushView2.prototype._updateController = function(brushModel, ecModel, api, payload) { (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice()); }; BrushView2.prototype.dispose = function() { this._brushController.dispose(); }; BrushView2.prototype._onBrush = function(eventParam) { var modelId = this.model.id; var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel); (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({ type: "brush", brushId: modelId, areas: clone$4(areas), $from: modelId }); eventParam.isEnd && this.api.dispatchAction({ type: "brushEnd", brushId: modelId, areas: clone$4(areas), $from: modelId }); }; BrushView2.type = "brush"; return BrushView2; }(ComponentView$1); var BrushView$1 = BrushView; var DEFAULT_OUT_OF_BRUSH_COLOR = "#ddd"; var BrushModel = function(_super) { __extends$1(BrushModel2, _super); function BrushModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = BrushModel2.type; _this.areas = []; _this.brushOption = {}; return _this; } BrushModel2.prototype.optionUpdated = function(newOption, isInit) { var thisOption = this.option; !isInit && replaceVisualOption(thisOption, newOption, ["inBrush", "outOfBrush"]); var inBrush = thisOption.inBrush = thisOption.inBrush || {}; thisOption.outOfBrush = thisOption.outOfBrush || { color: DEFAULT_OUT_OF_BRUSH_COLOR }; if (!inBrush.hasOwnProperty("liftZ")) { inBrush.liftZ = 5; } }; BrushModel2.prototype.setAreas = function(areas) { if (!areas) { return; } this.areas = map$1(areas, function(area) { return generateBrushOption(this.option, area); }, this); }; BrushModel2.prototype.setBrushOption = function(brushOption) { this.brushOption = generateBrushOption(this.option, brushOption); this.brushType = this.brushOption.brushType; }; BrushModel2.type = "brush"; BrushModel2.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"]; BrushModel2.defaultOption = { seriesIndex: "all", brushType: "rect", brushMode: "single", transformable: true, brushStyle: { borderWidth: 1, color: "rgba(210,219,238,0.3)", borderColor: "#D2DBEE" }, throttleType: "fixRate", throttleDelay: 0, removeOnClick: true, z: 1e4 }; return BrushModel2; }(ComponentModel$1); function generateBrushOption(option, brushOption) { return merge({ brushType: option.brushType, brushMode: option.brushMode, transformable: option.transformable, brushStyle: new Model$1(option.brushStyle).getItemStyle(), removeOnClick: option.removeOnClick, z: option.z }, brushOption, true); } var BrushModel$1 = BrushModel; var ICON_TYPES = ["rect", "polygon", "lineX", "lineY", "keep", "clear"]; var BrushFeature = function(_super) { __extends$1(BrushFeature2, _super); function BrushFeature2() { return _super !== null && _super.apply(this, arguments) || this; } BrushFeature2.prototype.render = function(featureModel, ecModel, api) { var brushType; var brushMode; var isBrushed; ecModel.eachComponent({ mainType: "brush" }, function(brushModel) { brushType = brushModel.brushType; brushMode = brushModel.brushOption.brushMode || "single"; isBrushed = isBrushed || !!brushModel.areas.length; }); this._brushType = brushType; this._brushMode = brushMode; each$g(featureModel.get("type", true), function(type) { featureModel.setIconStatus(type, (type === "keep" ? brushMode === "multiple" : type === "clear" ? isBrushed : type === brushType) ? "emphasis" : "normal"); }); }; BrushFeature2.prototype.updateView = function(featureModel, ecModel, api) { this.render(featureModel, ecModel, api); }; BrushFeature2.prototype.getIcons = function() { var model = this.model; var availableIcons = model.get("icon", true); var icons = {}; each$g(model.get("type", true), function(type) { if (availableIcons[type]) { icons[type] = availableIcons[type]; } }); return icons; }; BrushFeature2.prototype.onclick = function(ecModel, api, type) { var brushType = this._brushType; var brushMode = this._brushMode; if (type === "clear") { api.dispatchAction({ type: "axisAreaSelect", intervals: [] }); api.dispatchAction({ type: "brush", command: "clear", areas: [] }); } else { api.dispatchAction({ type: "takeGlobalCursor", key: "brush", brushOption: { brushType: type === "keep" ? brushType : brushType === type ? false : type, brushMode: type === "keep" ? brushMode === "multiple" ? "single" : "multiple" : brushMode } }); } }; BrushFeature2.getDefaultOption = function(ecModel) { var defaultOption2 = { show: true, type: ICON_TYPES.slice(), icon: { rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13", polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2", lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4", lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4", keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z", clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2" }, title: ecModel.getLocaleModel().get(["toolbox", "brush", "title"]) }; return defaultOption2; }; return BrushFeature2; }(ToolboxFeature); var BrushFeature$1 = BrushFeature; function install$h(registers) { registers.registerComponentView(BrushView$1); registers.registerComponentModel(BrushModel$1); registers.registerPreprocessor(brushPreprocessor); registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual); registers.registerAction({ type: "brush", event: "brush", update: "updateVisual" }, function(payload, ecModel) { ecModel.eachComponent({ mainType: "brush", query: payload }, function(brushModel) { brushModel.setAreas(payload.areas); }); }); registers.registerAction({ type: "brushSelect", event: "brushSelected", update: "none" }, function() { }); registers.registerAction({ type: "brushEnd", event: "brushEnd", update: "none" }, function() { }); registerFeature("brush", BrushFeature$1); } var TitleModel = function(_super) { __extends$1(TitleModel2, _super); function TitleModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TitleModel2.type; _this.layoutMode = { type: "box", ignoreSize: true }; return _this; } TitleModel2.type = "title"; TitleModel2.defaultOption = { zlevel: 0, z: 6, show: true, text: "", target: "blank", subtext: "", subtarget: "blank", left: 0, top: 0, backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderWidth: 0, padding: 5, itemGap: 10, textStyle: { fontSize: 18, fontWeight: "bold", color: "#464646" }, subtextStyle: { fontSize: 12, color: "#6E7079" } }; return TitleModel2; }(ComponentModel$1); var TitleView = function(_super) { __extends$1(TitleView2, _super); function TitleView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TitleView2.type; return _this; } TitleView2.prototype.render = function(titleModel, ecModel, api) { this.group.removeAll(); if (!titleModel.get("show")) { return; } var group = this.group; var textStyleModel = titleModel.getModel("textStyle"); var subtextStyleModel = titleModel.getModel("subtextStyle"); var textAlign = titleModel.get("textAlign"); var textVerticalAlign = retrieve2(titleModel.get("textBaseline"), titleModel.get("textVerticalAlign")); var textEl = new ZRText$1({ style: createTextStyle$1(textStyleModel, { text: titleModel.get("text"), fill: textStyleModel.getTextColor() }, { disableBox: true }), z2: 10 }); var textRect = textEl.getBoundingRect(); var subText = titleModel.get("subtext"); var subTextEl = new ZRText$1({ style: createTextStyle$1(subtextStyleModel, { text: subText, fill: subtextStyleModel.getTextColor(), y: textRect.height + titleModel.get("itemGap"), verticalAlign: "top" }, { disableBox: true }), z2: 10 }); var link2 = titleModel.get("link"); var sublink = titleModel.get("sublink"); var triggerEvent = titleModel.get("triggerEvent", true); textEl.silent = !link2 && !triggerEvent; subTextEl.silent = !sublink && !triggerEvent; if (link2) { textEl.on("click", function() { windowOpen(link2, "_" + titleModel.get("target")); }); } if (sublink) { subTextEl.on("click", function() { windowOpen(sublink, "_" + titleModel.get("subtarget")); }); } getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? { componentType: "title", componentIndex: titleModel.componentIndex } : null; group.add(textEl); subText && group.add(subTextEl); var groupRect = group.getBoundingRect(); var layoutOption = titleModel.getBoxLayoutParams(); layoutOption.width = groupRect.width; layoutOption.height = groupRect.height; var layoutRect = getLayoutRect(layoutOption, { width: api.getWidth(), height: api.getHeight() }, titleModel.get("padding")); if (!textAlign) { textAlign = titleModel.get("left") || titleModel.get("right"); if (textAlign === "middle") { textAlign = "center"; } if (textAlign === "right") { layoutRect.x += layoutRect.width; } else if (textAlign === "center") { layoutRect.x += layoutRect.width / 2; } } if (!textVerticalAlign) { textVerticalAlign = titleModel.get("top") || titleModel.get("bottom"); if (textVerticalAlign === "center") { textVerticalAlign = "middle"; } if (textVerticalAlign === "bottom") { layoutRect.y += layoutRect.height; } else if (textVerticalAlign === "middle") { layoutRect.y += layoutRect.height / 2; } textVerticalAlign = textVerticalAlign || "top"; } group.x = layoutRect.x; group.y = layoutRect.y; group.markRedraw(); var alignStyle = { align: textAlign, verticalAlign: textVerticalAlign }; textEl.setStyle(alignStyle); subTextEl.setStyle(alignStyle); groupRect = group.getBoundingRect(); var padding = layoutRect.margin; var style = titleModel.getItemStyle(["color", "opacity"]); style.fill = titleModel.get("backgroundColor"); var rect = new Rect$3({ shape: { x: groupRect.x - padding[3], y: groupRect.y - padding[0], width: groupRect.width + padding[1] + padding[3], height: groupRect.height + padding[0] + padding[2], r: titleModel.get("borderRadius") }, style, subPixelOptimize: true, silent: true }); group.add(rect); }; TitleView2.type = "title"; return TitleView2; }(ComponentView$1); function install$g(registers) { registers.registerComponentModel(TitleModel); registers.registerComponentView(TitleView); } var TimelineModel = function(_super) { __extends$1(TimelineModel2, _super); function TimelineModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TimelineModel2.type; _this.layoutMode = "box"; return _this; } TimelineModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); this._initData(); }; TimelineModel2.prototype.mergeOption = function(option) { _super.prototype.mergeOption.apply(this, arguments); this._initData(); }; TimelineModel2.prototype.setCurrentIndex = function(currentIndex) { if (currentIndex == null) { currentIndex = this.option.currentIndex; } var count2 = this._data.count(); if (this.option.loop) { currentIndex = (currentIndex % count2 + count2) % count2; } else { currentIndex >= count2 && (currentIndex = count2 - 1); currentIndex < 0 && (currentIndex = 0); } this.option.currentIndex = currentIndex; }; TimelineModel2.prototype.getCurrentIndex = function() { return this.option.currentIndex; }; TimelineModel2.prototype.isIndexMax = function() { return this.getCurrentIndex() >= this._data.count() - 1; }; TimelineModel2.prototype.setPlayState = function(state) { this.option.autoPlay = !!state; }; TimelineModel2.prototype.getPlayState = function() { return !!this.option.autoPlay; }; TimelineModel2.prototype._initData = function() { var thisOption = this.option; var dataArr = thisOption.data || []; var axisType = thisOption.axisType; var names = this._names = []; var processedDataArr; if (axisType === "category") { processedDataArr = []; each$g(dataArr, function(item, index) { var value = convertOptionIdName(getDataItemValue(item), ""); var newItem; if (isObject$3(item)) { newItem = clone$4(item); newItem.value = index; } else { newItem = index; } processedDataArr.push(newItem); names.push(value); }); } else { processedDataArr = dataArr; } var dimType = { category: "ordinal", time: "time", value: "number" }[axisType] || "number"; var data = this._data = new SeriesData$1([{ name: "value", type: dimType }], this); data.initData(processedDataArr, names); }; TimelineModel2.prototype.getData = function() { return this._data; }; TimelineModel2.prototype.getCategories = function() { if (this.get("axisType") === "category") { return this._names.slice(); } }; TimelineModel2.type = "timeline"; TimelineModel2.defaultOption = { zlevel: 0, z: 4, show: true, axisType: "time", realtime: true, left: "20%", top: null, right: "20%", bottom: 0, width: null, height: 40, padding: 5, controlPosition: "left", autoPlay: false, rewind: false, loop: true, playInterval: 2e3, currentIndex: 0, itemStyle: {}, label: { color: "#000" }, data: [] }; return TimelineModel2; }(ComponentModel$1); var TimelineModel$1 = TimelineModel; var SliderTimelineModel = function(_super) { __extends$1(SliderTimelineModel2, _super); function SliderTimelineModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SliderTimelineModel2.type; return _this; } SliderTimelineModel2.type = "timeline.slider"; SliderTimelineModel2.defaultOption = inheritDefaultOption(TimelineModel$1.defaultOption, { backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderWidth: 0, orient: "horizontal", inverse: false, tooltip: { trigger: "item" }, symbol: "circle", symbolSize: 12, lineStyle: { show: true, width: 2, color: "#DAE1F5" }, label: { position: "auto", show: true, interval: "auto", rotate: 0, color: "#A4B1D7" }, itemStyle: { color: "#A4B1D7", borderWidth: 1 }, checkpointStyle: { symbol: "circle", symbolSize: 15, color: "#316bf3", borderColor: "#fff", borderWidth: 2, shadowBlur: 2, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: "rgba(0, 0, 0, 0.3)", animation: true, animationDuration: 300, animationEasing: "quinticInOut" }, controlStyle: { show: true, showPlayBtn: true, showPrevBtn: true, showNextBtn: true, itemSize: 24, itemGap: 12, position: "left", playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z", stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z", nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z", prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z", prevBtnSize: 18, nextBtnSize: 18, color: "#A4B1D7", borderColor: "#A4B1D7", borderWidth: 1 }, emphasis: { label: { show: true, color: "#6f778d" }, itemStyle: { color: "#316BF3" }, controlStyle: { color: "#316BF3", borderColor: "#316BF3", borderWidth: 2 } }, progress: { lineStyle: { color: "#316BF3" }, itemStyle: { color: "#316BF3" }, label: { color: "#6f778d" } }, data: [] }); return SliderTimelineModel2; }(TimelineModel$1); mixin(SliderTimelineModel, DataFormatMixin.prototype); var SliderTimelineModel$1 = SliderTimelineModel; var TimelineView = function(_super) { __extends$1(TimelineView2, _super); function TimelineView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = TimelineView2.type; return _this; } TimelineView2.type = "timeline"; return TimelineView2; }(ComponentView$1); var TimelineView$1 = TimelineView; var TimelineAxis = function(_super) { __extends$1(TimelineAxis2, _super); function TimelineAxis2(dim, scale2, coordExtent, axisType) { var _this = _super.call(this, dim, scale2, coordExtent) || this; _this.type = axisType || "value"; return _this; } TimelineAxis2.prototype.getLabelModel = function() { return this.model.getModel("label"); }; TimelineAxis2.prototype.isHorizontal = function() { return this.model.get("orient") === "horizontal"; }; return TimelineAxis2; }(Axis$1); var TimelineAxis$1 = TimelineAxis; var PI = Math.PI; var labelDataIndexStore = makeInner(); var SliderTimelineView = function(_super) { __extends$1(SliderTimelineView2, _super); function SliderTimelineView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SliderTimelineView2.type; return _this; } SliderTimelineView2.prototype.init = function(ecModel, api) { this.api = api; }; SliderTimelineView2.prototype.render = function(timelineModel, ecModel, api) { this.model = timelineModel; this.api = api; this.ecModel = ecModel; this.group.removeAll(); if (timelineModel.get("show", true)) { var layoutInfo_1 = this._layout(timelineModel, api); var mainGroup_1 = this._createGroup("_mainGroup"); var labelGroup = this._createGroup("_labelGroup"); var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel); timelineModel.formatTooltip = function(dataIndex) { var name = axis_1.scale.getLabel({ value: dataIndex }); return createTooltipMarkup("nameValue", { noName: true, value: name }); }; each$g(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(name) { this["_render" + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel); }, this); this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel); this._position(layoutInfo_1, timelineModel); } this._doPlayStop(); this._updateTicksStatus(); }; SliderTimelineView2.prototype.remove = function() { this._clearTimer(); this.group.removeAll(); }; SliderTimelineView2.prototype.dispose = function() { this._clearTimer(); }; SliderTimelineView2.prototype._layout = function(timelineModel, api) { var labelPosOpt = timelineModel.get(["label", "position"]); var orient = timelineModel.get("orient"); var viewRect2 = getViewRect(timelineModel, api); var parsedLabelPos; if (labelPosOpt == null || labelPosOpt === "auto") { parsedLabelPos = orient === "horizontal" ? viewRect2.y + viewRect2.height / 2 < api.getHeight() / 2 ? "-" : "+" : viewRect2.x + viewRect2.width / 2 < api.getWidth() / 2 ? "+" : "-"; } else if (isString(labelPosOpt)) { parsedLabelPos = { horizontal: { top: "-", bottom: "+" }, vertical: { left: "-", right: "+" } }[orient][labelPosOpt]; } else { parsedLabelPos = labelPosOpt; } var labelAlignMap = { horizontal: "center", vertical: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "left" : "right" }; var labelBaselineMap = { horizontal: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "top" : "bottom", vertical: "middle" }; var rotationMap = { horizontal: 0, vertical: PI / 2 }; var mainLength = orient === "vertical" ? viewRect2.height : viewRect2.width; var controlModel = timelineModel.getModel("controlStyle"); var showControl = controlModel.get("show", true); var controlSize = showControl ? controlModel.get("itemSize") : 0; var controlGap = showControl ? controlModel.get("itemGap") : 0; var sizePlusGap = controlSize + controlGap; var labelRotation = timelineModel.get(["label", "rotate"]) || 0; labelRotation = labelRotation * PI / 180; var playPosition; var prevBtnPosition; var nextBtnPosition; var controlPosition = controlModel.get("position", true); var showPlayBtn = showControl && controlModel.get("showPlayBtn", true); var showPrevBtn = showControl && controlModel.get("showPrevBtn", true); var showNextBtn = showControl && controlModel.get("showNextBtn", true); var xLeft = 0; var xRight = mainLength; if (controlPosition === "left" || controlPosition === "bottom") { showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap); showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap); showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); } else { showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap); showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); } var axisExtent = [xLeft, xRight]; if (timelineModel.get("inverse")) { axisExtent.reverse(); } return { viewRect: viewRect2, mainLength, orient, rotation: rotationMap[orient], labelRotation, labelPosOpt: parsedLabelPos, labelAlign: timelineModel.get(["label", "align"]) || labelAlignMap[orient], labelBaseline: timelineModel.get(["label", "verticalAlign"]) || timelineModel.get(["label", "baseline"]) || labelBaselineMap[orient], playPosition, prevBtnPosition, nextBtnPosition, axisExtent, controlSize, controlGap }; }; SliderTimelineView2.prototype._position = function(layoutInfo, timelineModel) { var mainGroup = this._mainGroup; var labelGroup = this._labelGroup; var viewRect2 = layoutInfo.viewRect; if (layoutInfo.orient === "vertical") { var m2 = create$1(); var rotateOriginX = viewRect2.x; var rotateOriginY = viewRect2.y + viewRect2.height; translate(m2, m2, [-rotateOriginX, -rotateOriginY]); rotate(m2, m2, -PI / 2); translate(m2, m2, [rotateOriginX, rotateOriginY]); viewRect2 = viewRect2.clone(); viewRect2.applyTransform(m2); } var viewBound = getBound(viewRect2); var mainBound = getBound(mainGroup.getBoundingRect()); var labelBound = getBound(labelGroup.getBoundingRect()); var mainPosition = [mainGroup.x, mainGroup.y]; var labelsPosition = [labelGroup.x, labelGroup.y]; labelsPosition[0] = mainPosition[0] = viewBound[0][0]; var labelPosOpt = layoutInfo.labelPosOpt; if (labelPosOpt == null || isString(labelPosOpt)) { var mainBoundIdx = labelPosOpt === "+" ? 0 : 1; toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx); } else { var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1; toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); labelsPosition[1] = mainPosition[1] + labelPosOpt; } mainGroup.setPosition(mainPosition); labelGroup.setPosition(labelsPosition); mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation; setOrigin(mainGroup); setOrigin(labelGroup); function setOrigin(targetGroup) { targetGroup.originX = viewBound[0][0] - targetGroup.x; targetGroup.originY = viewBound[1][0] - targetGroup.y; } function getBound(rect) { return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]]; } function toBound(fromPos, from, to, dimIdx, boundIdx) { fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]; } }; SliderTimelineView2.prototype._createAxis = function(layoutInfo, timelineModel) { var data = timelineModel.getData(); var axisType = timelineModel.get("axisType"); var scale2 = createScaleByModel(timelineModel, axisType); scale2.getTicks = function() { return data.mapArray(["value"], function(value) { return { value }; }); }; var dataExtent = data.getDataExtent("value"); scale2.setExtent(dataExtent[0], dataExtent[1]); scale2.niceTicks(); var axis = new TimelineAxis$1("value", scale2, layoutInfo.axisExtent, axisType); axis.model = timelineModel; return axis; }; SliderTimelineView2.prototype._createGroup = function(key2) { var newGroup = this[key2] = new Group$4(); this.group.add(newGroup); return newGroup; }; SliderTimelineView2.prototype._renderAxisLine = function(layoutInfo, group, axis, timelineModel) { var axisExtent = axis.getExtent(); if (!timelineModel.get(["lineStyle", "show"])) { return; } var line = new Line$3({ shape: { x1: axisExtent[0], y1: 0, x2: axisExtent[1], y2: 0 }, style: extend({ lineCap: "round" }, timelineModel.getModel("lineStyle").getLineStyle()), silent: true, z2: 1 }); group.add(line); var progressLine = this._progressLine = new Line$3({ shape: { x1: axisExtent[0], x2: this._currentPointer ? this._currentPointer.x : axisExtent[0], y1: 0, y2: 0 }, style: defaults({ lineCap: "round", lineWidth: line.style.lineWidth }, timelineModel.getModel(["progress", "lineStyle"]).getLineStyle()), silent: true, z2: 1 }); group.add(progressLine); }; SliderTimelineView2.prototype._renderAxisTick = function(layoutInfo, group, axis, timelineModel) { var _this = this; var data = timelineModel.getData(); var ticks = axis.scale.getTicks(); this._tickSymbols = []; each$g(ticks, function(tick) { var tickCoord = axis.dataToCoord(tick.value); var itemModel = data.getItemModel(tick.value); var itemStyleModel = itemModel.getModel("itemStyle"); var hoverStyleModel = itemModel.getModel(["emphasis", "itemStyle"]); var progressStyleModel = itemModel.getModel(["progress", "itemStyle"]); var symbolOpt = { x: tickCoord, y: 0, onclick: bind$2(_this._changeTimeline, _this, tick.value) }; var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt); el.ensureState("emphasis").style = hoverStyleModel.getItemStyle(); el.ensureState("progress").style = progressStyleModel.getItemStyle(); enableHoverEmphasis(el); var ecData = getECData(el); if (itemModel.get("tooltip")) { ecData.dataIndex = tick.value; ecData.dataModel = timelineModel; } else { ecData.dataIndex = ecData.dataModel = null; } _this._tickSymbols.push(el); }); }; SliderTimelineView2.prototype._renderAxisLabel = function(layoutInfo, group, axis, timelineModel) { var _this = this; var labelModel = axis.getLabelModel(); if (!labelModel.get("show")) { return; } var data = timelineModel.getData(); var labels = axis.getViewLabels(); this._tickLabels = []; each$g(labels, function(labelItem) { var dataIndex = labelItem.tickValue; var itemModel = data.getItemModel(dataIndex); var normalLabelModel = itemModel.getModel("label"); var hoverLabelModel = itemModel.getModel(["emphasis", "label"]); var progressLabelModel = itemModel.getModel(["progress", "label"]); var tickCoord = axis.dataToCoord(labelItem.tickValue); var textEl = new ZRText$1({ x: tickCoord, y: 0, rotation: layoutInfo.labelRotation - layoutInfo.rotation, onclick: bind$2(_this._changeTimeline, _this, dataIndex), silent: false, style: createTextStyle$1(normalLabelModel, { text: labelItem.formattedLabel, align: layoutInfo.labelAlign, verticalAlign: layoutInfo.labelBaseline }) }); textEl.ensureState("emphasis").style = createTextStyle$1(hoverLabelModel); textEl.ensureState("progress").style = createTextStyle$1(progressLabelModel); group.add(textEl); enableHoverEmphasis(textEl); labelDataIndexStore(textEl).dataIndex = dataIndex; _this._tickLabels.push(textEl); }); }; SliderTimelineView2.prototype._renderControl = function(layoutInfo, group, axis, timelineModel) { var controlSize = layoutInfo.controlSize; var rotation = layoutInfo.rotation; var itemStyle = timelineModel.getModel("controlStyle").getItemStyle(); var hoverStyle = timelineModel.getModel(["emphasis", "controlStyle"]).getItemStyle(); var playState = timelineModel.getPlayState(); var inverse = timelineModel.get("inverse", true); makeBtn(layoutInfo.nextBtnPosition, "next", bind$2(this._changeTimeline, this, inverse ? "-" : "+")); makeBtn(layoutInfo.prevBtnPosition, "prev", bind$2(this._changeTimeline, this, inverse ? "+" : "-")); makeBtn(layoutInfo.playPosition, playState ? "stop" : "play", bind$2(this._handlePlayClick, this, !playState), true); function makeBtn(position2, iconName, onclick, willRotate) { if (!position2) { return; } var iconSize = parsePercent$2(retrieve2(timelineModel.get(["controlStyle", iconName + "BtnSize"]), controlSize), controlSize); var rect = [0, -iconSize / 2, iconSize, iconSize]; var btn = makeControlIcon(timelineModel, iconName + "Icon", rect, { x: position2[0], y: position2[1], originX: controlSize / 2, originY: 0, rotation: willRotate ? -rotation : 0, rectHover: true, style: itemStyle, onclick }); btn.ensureState("emphasis").style = hoverStyle; group.add(btn); enableHoverEmphasis(btn); } }; SliderTimelineView2.prototype._renderCurrentPointer = function(layoutInfo, group, axis, timelineModel) { var data = timelineModel.getData(); var currentIndex = timelineModel.getCurrentIndex(); var pointerModel = data.getItemModel(currentIndex).getModel("checkpointStyle"); var me = this; var callback = { onCreate: function(pointer2) { pointer2.draggable = true; pointer2.drift = bind$2(me._handlePointerDrag, me); pointer2.ondragend = bind$2(me._handlePointerDragend, me); pointerMoveTo(pointer2, me._progressLine, currentIndex, axis, timelineModel, true); }, onUpdate: function(pointer2) { pointerMoveTo(pointer2, me._progressLine, currentIndex, axis, timelineModel); } }; this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback); }; SliderTimelineView2.prototype._handlePlayClick = function(nextState) { this._clearTimer(); this.api.dispatchAction({ type: "timelinePlayChange", playState: nextState, from: this.uid }); }; SliderTimelineView2.prototype._handlePointerDrag = function(dx, dy, e2) { this._clearTimer(); this._pointerChangeTimeline([e2.offsetX, e2.offsetY]); }; SliderTimelineView2.prototype._handlePointerDragend = function(e2) { this._pointerChangeTimeline([e2.offsetX, e2.offsetY], true); }; SliderTimelineView2.prototype._pointerChangeTimeline = function(mousePos, trigger2) { var toCoord = this._toAxisCoord(mousePos)[0]; var axis = this._axis; var axisExtent = asc$2(axis.getExtent().slice()); toCoord > axisExtent[1] && (toCoord = axisExtent[1]); toCoord < axisExtent[0] && (toCoord = axisExtent[0]); this._currentPointer.x = toCoord; this._currentPointer.markRedraw(); this._progressLine.shape.x2 = toCoord; this._progressLine.dirty(); var targetDataIndex = this._findNearestTick(toCoord); var timelineModel = this.model; if (trigger2 || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get("realtime")) { this._changeTimeline(targetDataIndex); } }; SliderTimelineView2.prototype._doPlayStop = function() { var _this = this; this._clearTimer(); if (this.model.getPlayState()) { this._timer = setTimeout(function() { var timelineModel = _this.model; _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get("rewind", true) ? -1 : 1)); }, this.model.get("playInterval")); } }; SliderTimelineView2.prototype._toAxisCoord = function(vertex) { var trans = this._mainGroup.getLocalTransform(); return applyTransform(vertex, trans, true); }; SliderTimelineView2.prototype._findNearestTick = function(axisCoord) { var data = this.model.getData(); var dist2 = Infinity; var targetDataIndex; var axis = this._axis; data.each(["value"], function(value, dataIndex) { var coord = axis.dataToCoord(value); var d = Math.abs(coord - axisCoord); if (d < dist2) { dist2 = d; targetDataIndex = dataIndex; } }); return targetDataIndex; }; SliderTimelineView2.prototype._clearTimer = function() { if (this._timer) { clearTimeout(this._timer); this._timer = null; } }; SliderTimelineView2.prototype._changeTimeline = function(nextIndex) { var currentIndex = this.model.getCurrentIndex(); if (nextIndex === "+") { nextIndex = currentIndex + 1; } else if (nextIndex === "-") { nextIndex = currentIndex - 1; } this.api.dispatchAction({ type: "timelineChange", currentIndex: nextIndex, from: this.uid }); }; SliderTimelineView2.prototype._updateTicksStatus = function() { var currentIndex = this.model.getCurrentIndex(); var tickSymbols = this._tickSymbols; var tickLabels = this._tickLabels; if (tickSymbols) { for (var i = 0; i < tickSymbols.length; i++) { tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState("progress", i < currentIndex); } } if (tickLabels) { for (var i = 0; i < tickLabels.length; i++) { tickLabels && tickLabels[i] && tickLabels[i].toggleState("progress", labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex); } } }; SliderTimelineView2.type = "timeline.slider"; return SliderTimelineView2; }(TimelineView$1); function createScaleByModel(model, axisType) { axisType = axisType || model.get("type"); if (axisType) { switch (axisType) { case "category": return new OrdinalScale$1({ ordinalMeta: model.getCategories(), extent: [Infinity, -Infinity] }); case "time": return new TimeScale$1({ locale: model.ecModel.getLocaleModel(), useUTC: model.ecModel.get("useUTC") }); default: return new IntervalScale$1(); } } } function getViewRect(model, api) { return getLayoutRect(model.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }, model.get("padding")); } function makeControlIcon(timelineModel, objPath, rect, opts) { var style = opts.style; var icon = createIcon(timelineModel.get(["controlStyle", objPath]), opts || {}, new BoundingRect$1(rect[0], rect[1], rect[2], rect[3])); if (style) { icon.setStyle(style); } return icon; } function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) { var color2 = itemStyleModel.get("color"); if (!symbol) { var symbolType = hostModel.get("symbol"); symbol = createSymbol$1(symbolType, -1, -1, 2, 2, color2); symbol.setStyle("strokeNoScale", true); group.add(symbol); callback && callback.onCreate(symbol); } else { symbol.setColor(color2); group.add(symbol); callback && callback.onUpdate(symbol); } var itemStyle = itemStyleModel.getItemStyle(["color"]); symbol.setStyle(itemStyle); opt = merge({ rectHover: true, z2: 100 }, opt, true); var symbolSize = normalizeSymbolSize(hostModel.get("symbolSize")); opt.scaleX = symbolSize[0] / 2; opt.scaleY = symbolSize[1] / 2; var symbolOffset = normalizeSymbolOffset(hostModel.get("symbolOffset"), symbolSize); if (symbolOffset) { opt.x = (opt.x || 0) + symbolOffset[0]; opt.y = (opt.y || 0) + symbolOffset[1]; } var symbolRotate = hostModel.get("symbolRotate"); opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; symbol.attr(opt); symbol.updateTransform(); return symbol; } function pointerMoveTo(pointer2, progressLine, dataIndex, axis, timelineModel, noAnimation) { if (pointer2.dragging) { return; } var pointerModel = timelineModel.getModel("checkpointStyle"); var toCoord = axis.dataToCoord(timelineModel.getData().get("value", dataIndex)); if (noAnimation || !pointerModel.get("animation", true)) { pointer2.attr({ x: toCoord, y: 0 }); progressLine && progressLine.attr({ shape: { x2: toCoord } }); } else { var animationCfg = { duration: pointerModel.get("animationDuration", true), easing: pointerModel.get("animationEasing", true) }; pointer2.stopAnimation(null, true); pointer2.animateTo({ x: toCoord, y: 0 }, animationCfg); progressLine && progressLine.animateTo({ shape: { x2: toCoord } }, animationCfg); } } var SliderTimelineView$1 = SliderTimelineView; function installTimelineAction(registers) { registers.registerAction({ type: "timelineChange", event: "timelineChanged", update: "prepareAndUpdate" }, function(payload, ecModel, api) { var timelineModel = ecModel.getComponent("timeline"); if (timelineModel && payload.currentIndex != null) { timelineModel.setCurrentIndex(payload.currentIndex); if (!timelineModel.get("loop", true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) { timelineModel.setPlayState(false); api.dispatchAction({ type: "timelinePlayChange", playState: false, from: payload.from }); } } ecModel.resetOption("timeline", { replaceMerge: timelineModel.get("replaceMerge", true) }); return defaults({ currentIndex: timelineModel.option.currentIndex }, payload); }); registers.registerAction({ type: "timelinePlayChange", event: "timelinePlayChanged", update: "update" }, function(payload, ecModel) { var timelineModel = ecModel.getComponent("timeline"); if (timelineModel && payload.playState != null) { timelineModel.setPlayState(payload.playState); } }); } function timelinePreprocessor(option) { var timelineOpt = option && option.timeline; if (!isArray$1(timelineOpt)) { timelineOpt = timelineOpt ? [timelineOpt] : []; } each$g(timelineOpt, function(opt) { if (!opt) { return; } compatibleEC2(opt); }); } function compatibleEC2(opt) { var type = opt.type; var ec2Types = { "number": "value", "time": "time" }; if (ec2Types[type]) { opt.axisType = ec2Types[type]; delete opt.type; } transferItem(opt); if (has$1(opt, "controlPosition")) { var controlStyle = opt.controlStyle || (opt.controlStyle = {}); if (!has$1(controlStyle, "position")) { controlStyle.position = opt.controlPosition; } if (controlStyle.position === "none" && !has$1(controlStyle, "show")) { controlStyle.show = false; delete controlStyle.position; } delete opt.controlPosition; } each$g(opt.data || [], function(dataItem) { if (isObject$3(dataItem) && !isArray$1(dataItem)) { if (!has$1(dataItem, "value") && has$1(dataItem, "name")) { dataItem.value = dataItem.name; } transferItem(dataItem); } }); } function transferItem(opt) { var itemStyle = opt.itemStyle || (opt.itemStyle = {}); var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); var label = opt.label || opt.label || {}; var labelNormal = label.normal || (label.normal = {}); var excludeLabelAttr = { normal: 1, emphasis: 1 }; each$g(label, function(value, name) { if (!excludeLabelAttr[name] && !has$1(labelNormal, name)) { labelNormal[name] = value; } }); if (itemStyleEmphasis.label && !has$1(label, "emphasis")) { label.emphasis = itemStyleEmphasis.label; delete itemStyleEmphasis.label; } } function has$1(obj, attr2) { return obj.hasOwnProperty(attr2); } function install$f(registers) { registers.registerComponentModel(SliderTimelineModel$1); registers.registerComponentView(SliderTimelineView$1); registers.registerSubTypeDefaulter("timeline", function() { return "slider"; }); installTimelineAction(registers); registers.registerPreprocessor(timelinePreprocessor); } function checkMarkerInSeries(seriesOpts, markerType) { if (!seriesOpts) { return false; } var seriesOptArr = isArray$1(seriesOpts) ? seriesOpts : [seriesOpts]; for (var idx = 0; idx < seriesOptArr.length; idx++) { if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) { return true; } } return false; } function fillLabel(opt) { defaultEmphasis(opt, "label", ["show"]); } var inner$5 = makeInner(); var MarkerModel = function(_super) { __extends$1(MarkerModel2, _super); function MarkerModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkerModel2.type; _this.createdBySelf = false; return _this; } MarkerModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); this._mergeOption(option, ecModel, false, true); }; MarkerModel2.prototype.isAnimationEnabled = function() { if (env$1.node) { return false; } var hostSeries = this.__hostSeries; return this.getShallow("animation") && hostSeries && hostSeries.isAnimationEnabled(); }; MarkerModel2.prototype.mergeOption = function(newOpt, ecModel) { this._mergeOption(newOpt, ecModel, false, false); }; MarkerModel2.prototype._mergeOption = function(newOpt, ecModel, createdBySelf, isInit) { var componentType = this.mainType; if (!createdBySelf) { ecModel.eachSeries(function(seriesModel) { var markerOpt = seriesModel.get(this.mainType, true); var markerModel = inner$5(seriesModel)[componentType]; if (!markerOpt || !markerOpt.data) { inner$5(seriesModel)[componentType] = null; return; } if (!markerModel) { if (isInit) { fillLabel(markerOpt); } each$g(markerOpt.data, function(item) { if (item instanceof Array) { fillLabel(item[0]); fillLabel(item[1]); } else { fillLabel(item); } }); markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel); extend(markerModel, { mainType: this.mainType, seriesIndex: seriesModel.seriesIndex, name: seriesModel.name, createdBySelf: true }); markerModel.__hostSeries = seriesModel; } else { markerModel._mergeOption(markerOpt, ecModel, true); } inner$5(seriesModel)[componentType] = markerModel; }, this); } }; MarkerModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { var data = this.getData(); var value = this.getRawValue(dataIndex); var itemName = data.getName(dataIndex); return createTooltipMarkup("section", { header: this.name, blocks: [createTooltipMarkup("nameValue", { name: itemName, value, noName: !itemName, noValue: value == null })] }); }; MarkerModel2.prototype.getData = function() { return this._data; }; MarkerModel2.prototype.setData = function(data) { this._data = data; }; MarkerModel2.getMarkerModelFromSeries = function(seriesModel, componentType) { return inner$5(seriesModel)[componentType]; }; MarkerModel2.type = "marker"; MarkerModel2.dependencies = ["series", "grid", "polar", "geo"]; return MarkerModel2; }(ComponentModel$1); mixin(MarkerModel, DataFormatMixin.prototype); var MarkerModel$1 = MarkerModel; var MarkPointModel = function(_super) { __extends$1(MarkPointModel2, _super); function MarkPointModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkPointModel2.type; return _this; } MarkPointModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { return new MarkPointModel2(markerOpt, masterMarkerModel, ecModel); }; MarkPointModel2.type = "markPoint"; MarkPointModel2.defaultOption = { zlevel: 0, z: 5, symbol: "pin", symbolSize: 50, tooltip: { trigger: "item" }, label: { show: true, position: "inside" }, itemStyle: { borderWidth: 2 }, emphasis: { label: { show: true } } }; return MarkPointModel2; }(MarkerModel$1); var MarkPointModel$1 = MarkPointModel; function hasXOrY(item) { return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y))); } function hasXAndY(item) { return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y)); } function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) { var coordArr = []; var stacked = isDimensionStacked(data, targetDataDim); var calcDataDim = stacked ? data.getCalculationInfo("stackResultDimension") : targetDataDim; var value = numCalculate(data, calcDataDim, markerType); var dataIndex = data.indicesOfNearest(calcDataDim, value)[0]; coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex); coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex); var coordArrValue = data.get(targetDataDim, dataIndex); var precision = getPrecision(data.get(targetDataDim, dataIndex)); precision = Math.min(precision, 20); if (precision >= 0) { coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision); } return [coordArr, coordArrValue]; } var markerTypeCalculator = { min: curry$1(markerTypeCalculatorWithExtent, "min"), max: curry$1(markerTypeCalculatorWithExtent, "max"), average: curry$1(markerTypeCalculatorWithExtent, "average"), median: curry$1(markerTypeCalculatorWithExtent, "median") }; function dataTransform(seriesModel, item) { var data = seriesModel.getData(); var coordSys = seriesModel.coordinateSystem; if (item && !hasXAndY(item) && !isArray$1(item.coord) && coordSys) { var dims = coordSys.dimensions; var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); item = clone$4(item); if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) { var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim); var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim); var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); item.coord = coordInfo[0]; item.value = coordInfo[1]; } else { var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; for (var i = 0; i < 2; i++) { if (markerTypeCalculator[coord[i]]) { coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]); } } item.coord = coord; } } return item; } function getAxisInfo(item, data, coordSys, seriesModel) { var ret = {}; if (item.valueIndex != null || item.valueDim != null) { ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim; ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim)); ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); } else { ret.baseAxis = seriesModel.getBaseAxis(); ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); ret.valueDataDim = data.mapDimension(ret.valueAxis.dim); } return ret; } function dataDimToCoordDim(seriesModel, dataDim) { var dimItem = seriesModel.getData().getDimensionInfo(dataDim); return dimItem && dimItem.coordDim; } function dataFilter(coordSys, item) { return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true; } function createMarkerDimValueGetter(inCoordSys, dims) { return inCoordSys ? function(item, dimName, dataIndex, dimIndex) { var rawVal = dimIndex < 2 ? item.coord && item.coord[dimIndex] : item.value; return parseDataValue(rawVal, dims[dimIndex]); } : function(item, dimName, dataIndex, dimIndex) { return parseDataValue(item.value, dims[dimIndex]); }; } function numCalculate(data, valueDataDim, type) { if (type === "average") { var sum_1 = 0; var count_1 = 0; data.each(valueDataDim, function(val, idx) { if (!isNaN(val)) { sum_1 += val; count_1++; } }); return sum_1 / count_1; } else if (type === "median") { return data.getMedian(valueDataDim); } else { return data.getDataExtent(valueDataDim)[type === "max" ? 1 : 0]; } } var inner$4 = makeInner(); var MarkerView = function(_super) { __extends$1(MarkerView2, _super); function MarkerView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkerView2.type; return _this; } MarkerView2.prototype.init = function() { this.markerGroupMap = createHashMap(); }; MarkerView2.prototype.render = function(markerModel, ecModel, api) { var _this = this; var markerGroupMap = this.markerGroupMap; markerGroupMap.each(function(item) { inner$4(item).keep = false; }); ecModel.eachSeries(function(seriesModel) { var markerModel2 = MarkerModel$1.getMarkerModelFromSeries(seriesModel, _this.type); markerModel2 && _this.renderSeries(seriesModel, markerModel2, ecModel, api); }); markerGroupMap.each(function(item) { !inner$4(item).keep && _this.group.remove(item.group); }); }; MarkerView2.prototype.markKeep = function(drawGroup) { inner$4(drawGroup).keep = true; }; MarkerView2.prototype.blurSeries = function(seriesModelList) { var _this = this; each$g(seriesModelList, function(seriesModel) { var markerModel = MarkerModel$1.getMarkerModelFromSeries(seriesModel, _this.type); if (markerModel) { var data = markerModel.getData(); data.eachItemGraphicEl(function(el) { if (el) { enterBlur(el); } }); } }); }; MarkerView2.type = "marker"; return MarkerView2; }(ComponentView$1); var MarkerView$1 = MarkerView; function updateMarkerLayout(mpData, seriesModel, api) { var coordSys = seriesModel.coordinateSystem; mpData.each(function(idx) { var itemModel = mpData.getItemModel(idx); var point; var xPx = parsePercent$1(itemModel.get("x"), api.getWidth()); var yPx = parsePercent$1(itemModel.get("y"), api.getHeight()); if (!isNaN(xPx) && !isNaN(yPx)) { point = [xPx, yPx]; } else if (seriesModel.getMarkerPosition) { point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx)); } else if (coordSys) { var x = mpData.get(coordSys.dimensions[0], idx); var y = mpData.get(coordSys.dimensions[1], idx); point = coordSys.dataToPoint([x, y]); } if (!isNaN(xPx)) { point[0] = xPx; } if (!isNaN(yPx)) { point[1] = yPx; } mpData.setItemLayout(idx, point); }); } var MarkPointView = function(_super) { __extends$1(MarkPointView2, _super); function MarkPointView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkPointView2.type; return _this; } MarkPointView2.prototype.updateTransform = function(markPointModel, ecModel, api) { ecModel.eachSeries(function(seriesModel) { var mpModel = MarkerModel$1.getMarkerModelFromSeries(seriesModel, "markPoint"); if (mpModel) { updateMarkerLayout(mpModel.getData(), seriesModel, api); this.markerGroupMap.get(seriesModel.id).updateLayout(); } }, this); }; MarkPointView2.prototype.renderSeries = function(seriesModel, mpModel, ecModel, api) { var coordSys = seriesModel.coordinateSystem; var seriesId = seriesModel.id; var seriesData = seriesModel.getData(); var symbolDrawMap = this.markerGroupMap; var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw$1()); var mpData = createData(coordSys, seriesModel, mpModel); mpModel.setData(mpData); updateMarkerLayout(mpModel.getData(), seriesModel, api); mpData.each(function(idx) { var itemModel = mpData.getItemModel(idx); var symbol = itemModel.getShallow("symbol"); var symbolSize = itemModel.getShallow("symbolSize"); var symbolRotate = itemModel.getShallow("symbolRotate"); var symbolOffset = itemModel.getShallow("symbolOffset"); var symbolKeepAspect = itemModel.getShallow("symbolKeepAspect"); if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate) || isFunction(symbolOffset)) { var rawIdx = mpModel.getRawValue(idx); var dataParams = mpModel.getDataParams(idx); if (isFunction(symbol)) { symbol = symbol(rawIdx, dataParams); } if (isFunction(symbolSize)) { symbolSize = symbolSize(rawIdx, dataParams); } if (isFunction(symbolRotate)) { symbolRotate = symbolRotate(rawIdx, dataParams); } if (isFunction(symbolOffset)) { symbolOffset = symbolOffset(rawIdx, dataParams); } } var style = itemModel.getModel("itemStyle").getItemStyle(); var color2 = getVisualFromData(seriesData, "color"); if (!style.fill) { style.fill = color2; } mpData.setItemVisual(idx, { symbol, symbolSize, symbolRotate, symbolOffset, symbolKeepAspect, style }); }); symbolDraw.updateData(mpData); this.group.add(symbolDraw.group); mpData.eachItemGraphicEl(function(el) { el.traverse(function(child) { getECData(child).dataModel = mpModel; }); }); this.markKeep(symbolDraw); symbolDraw.group.silent = mpModel.get("silent") || seriesModel.get("silent"); }; MarkPointView2.type = "markPoint"; return MarkPointView2; }(MarkerView$1); function createData(coordSys, seriesModel, mpModel) { var coordDimsInfos; if (coordSys) { coordDimsInfos = map$1(coordSys && coordSys.dimensions, function(coordDim) { var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; return extend(extend({}, info), { name: coordDim, ordinalMeta: null }); }); } else { coordDimsInfos = [{ name: "value", type: "float" }]; } var mpData = new SeriesData$1(coordDimsInfos, mpModel); var dataOpt = map$1(mpModel.get("data"), curry$1(dataTransform, seriesModel)); if (coordSys) { dataOpt = filter(dataOpt, curry$1(dataFilter, coordSys)); } var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); mpData.initData(dataOpt, null, dimValueGetter); return mpData; } var MarkPointView$1 = MarkPointView; function install$e(registers) { registers.registerComponentModel(MarkPointModel$1); registers.registerComponentView(MarkPointView$1); registers.registerPreprocessor(function(opt) { if (checkMarkerInSeries(opt.series, "markPoint")) { opt.markPoint = opt.markPoint || {}; } }); } var MarkLineModel = function(_super) { __extends$1(MarkLineModel2, _super); function MarkLineModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkLineModel2.type; return _this; } MarkLineModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { return new MarkLineModel2(markerOpt, masterMarkerModel, ecModel); }; MarkLineModel2.type = "markLine"; MarkLineModel2.defaultOption = { zlevel: 0, z: 5, symbol: ["circle", "arrow"], symbolSize: [8, 16], symbolOffset: 0, precision: 2, tooltip: { trigger: "item" }, label: { show: true, position: "end", distance: 5 }, lineStyle: { type: "dashed" }, emphasis: { label: { show: true }, lineStyle: { width: 3 } }, animationEasing: "linear" }; return MarkLineModel2; }(MarkerModel$1); var MarkLineModel$1 = MarkLineModel; var inner$3 = makeInner(); var markLineTransform = function(seriesModel, coordSys, mlModel, item) { var data = seriesModel.getData(); var itemArray; if (!isArray$1(item)) { var mlType = item.type; if (mlType === "min" || mlType === "max" || mlType === "average" || mlType === "median" || item.xAxis != null || item.yAxis != null) { var valueAxis2 = void 0; var value = void 0; if (item.yAxis != null || item.xAxis != null) { valueAxis2 = coordSys.getAxis(item.yAxis != null ? "y" : "x"); value = retrieve(item.yAxis, item.xAxis); } else { var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); valueAxis2 = axisInfo.valueAxis; var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim); value = numCalculate(data, valueDataDim, mlType); } var valueIndex = valueAxis2.dim === "x" ? 0 : 1; var baseIndex = 1 - valueIndex; var mlFrom = clone$4(item); var mlTo = { coord: [] }; mlFrom.type = null; mlFrom.coord = []; mlFrom.coord[baseIndex] = -Infinity; mlTo.coord[baseIndex] = Infinity; var precision = mlModel.get("precision"); if (precision >= 0 && typeof value === "number") { value = +value.toFixed(Math.min(precision, 20)); } mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value; itemArray = [mlFrom, mlTo, { type: mlType, valueIndex: item.valueIndex, value }]; } else { itemArray = []; } } else { itemArray = item; } var normalizedItem = [dataTransform(seriesModel, itemArray[0]), dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])]; normalizedItem[2].type = normalizedItem[2].type || null; merge(normalizedItem[2], normalizedItem[0]); merge(normalizedItem[2], normalizedItem[1]); return normalizedItem; }; function isInifinity$1(val) { return !isNaN(val) && !isFinite(val); } function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { var otherDimIndex = 1 - dimIndex; var dimName = coordSys.dimensions[dimIndex]; return isInifinity$1(fromCoord[otherDimIndex]) && isInifinity$1(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]); } function markLineFilter(coordSys, item) { if (coordSys.type === "cartesian2d") { var fromCoord = item[0].coord; var toCoord = item[1].coord; if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) { return true; } } return dataFilter(coordSys, item[0]) && dataFilter(coordSys, item[1]); } function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) { var coordSys = seriesModel.coordinateSystem; var itemModel = data.getItemModel(idx); var point; var xPx = parsePercent$1(itemModel.get("x"), api.getWidth()); var yPx = parsePercent$1(itemModel.get("y"), api.getHeight()); if (!isNaN(xPx) && !isNaN(yPx)) { point = [xPx, yPx]; } else { if (seriesModel.getMarkerPosition) { point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx)); } else { var dims = coordSys.dimensions; var x = data.get(dims[0], idx); var y = data.get(dims[1], idx); point = coordSys.dataToPoint([x, y]); } if (isCoordinateSystemType(coordSys, "cartesian2d")) { var xAxis = coordSys.getAxis("x"); var yAxis = coordSys.getAxis("y"); var dims = coordSys.dimensions; if (isInifinity$1(data.get(dims[0], idx))) { point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]); } else if (isInifinity$1(data.get(dims[1], idx))) { point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]); } } if (!isNaN(xPx)) { point[0] = xPx; } if (!isNaN(yPx)) { point[1] = yPx; } } data.setItemLayout(idx, point); } var MarkLineView = function(_super) { __extends$1(MarkLineView2, _super); function MarkLineView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkLineView2.type; return _this; } MarkLineView2.prototype.updateTransform = function(markLineModel, ecModel, api) { ecModel.eachSeries(function(seriesModel) { var mlModel = MarkerModel$1.getMarkerModelFromSeries(seriesModel, "markLine"); if (mlModel) { var mlData_1 = mlModel.getData(); var fromData_1 = inner$3(mlModel).from; var toData_1 = inner$3(mlModel).to; fromData_1.each(function(idx) { updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api); updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api); }); mlData_1.each(function(idx) { mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]); }); this.markerGroupMap.get(seriesModel.id).updateLayout(); } }, this); }; MarkLineView2.prototype.renderSeries = function(seriesModel, mlModel, ecModel, api) { var coordSys = seriesModel.coordinateSystem; var seriesId = seriesModel.id; var seriesData = seriesModel.getData(); var lineDrawMap = this.markerGroupMap; var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw$1()); this.group.add(lineDraw.group); var mlData = createList$1(coordSys, seriesModel, mlModel); var fromData = mlData.from; var toData = mlData.to; var lineData = mlData.line; inner$3(mlModel).from = fromData; inner$3(mlModel).to = toData; mlModel.setData(lineData); var symbolType = mlModel.get("symbol"); var symbolSize = mlModel.get("symbolSize"); var symbolRotate = mlModel.get("symbolRotate"); var symbolOffset = mlModel.get("symbolOffset"); if (!isArray$1(symbolType)) { symbolType = [symbolType, symbolType]; } if (!isArray$1(symbolSize)) { symbolSize = [symbolSize, symbolSize]; } if (!isArray$1(symbolRotate)) { symbolRotate = [symbolRotate, symbolRotate]; } if (!isArray$1(symbolOffset)) { symbolOffset = [symbolOffset, symbolOffset]; } mlData.from.each(function(idx) { updateDataVisualAndLayout(fromData, idx, true); updateDataVisualAndLayout(toData, idx, false); }); lineData.each(function(idx) { var lineStyle = lineData.getItemModel(idx).getModel("lineStyle").getLineStyle(); lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]); if (lineStyle.stroke == null) { lineStyle.stroke = fromData.getItemVisual(idx, "style").fill; } lineData.setItemVisual(idx, { fromSymbolKeepAspect: fromData.getItemVisual(idx, "symbolKeepAspect"), fromSymbolOffset: fromData.getItemVisual(idx, "symbolOffset"), fromSymbolRotate: fromData.getItemVisual(idx, "symbolRotate"), fromSymbolSize: fromData.getItemVisual(idx, "symbolSize"), fromSymbol: fromData.getItemVisual(idx, "symbol"), toSymbolKeepAspect: toData.getItemVisual(idx, "symbolKeepAspect"), toSymbolOffset: toData.getItemVisual(idx, "symbolOffset"), toSymbolRotate: toData.getItemVisual(idx, "symbolRotate"), toSymbolSize: toData.getItemVisual(idx, "symbolSize"), toSymbol: toData.getItemVisual(idx, "symbol"), style: lineStyle }); }); lineDraw.updateData(lineData); mlData.line.eachItemGraphicEl(function(el, idx) { el.traverse(function(child) { getECData(child).dataModel = mlModel; }); }); function updateDataVisualAndLayout(data, idx, isFrom) { var itemModel = data.getItemModel(idx); updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api); var style = itemModel.getModel("itemStyle").getItemStyle(); if (style.fill == null) { style.fill = getVisualFromData(seriesData, "color"); } data.setItemVisual(idx, { symbolKeepAspect: itemModel.get("symbolKeepAspect"), symbolOffset: retrieve2(itemModel.get("symbolOffset", true), symbolOffset[isFrom ? 0 : 1]), symbolRotate: retrieve2(itemModel.get("symbolRotate", true), symbolRotate[isFrom ? 0 : 1]), symbolSize: retrieve2(itemModel.get("symbolSize"), symbolSize[isFrom ? 0 : 1]), symbol: retrieve2(itemModel.get("symbol", true), symbolType[isFrom ? 0 : 1]), style }); } this.markKeep(lineDraw); lineDraw.group.silent = mlModel.get("silent") || seriesModel.get("silent"); }; MarkLineView2.type = "markLine"; return MarkLineView2; }(MarkerView$1); function createList$1(coordSys, seriesModel, mlModel) { var coordDimsInfos; if (coordSys) { coordDimsInfos = map$1(coordSys && coordSys.dimensions, function(coordDim) { var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; return extend(extend({}, info), { name: coordDim, ordinalMeta: null }); }); } else { coordDimsInfos = [{ name: "value", type: "float" }]; } var fromData = new SeriesData$1(coordDimsInfos, mlModel); var toData = new SeriesData$1(coordDimsInfos, mlModel); var lineData = new SeriesData$1([], mlModel); var optData = map$1(mlModel.get("data"), curry$1(markLineTransform, seriesModel, coordSys, mlModel)); if (coordSys) { optData = filter(optData, curry$1(markLineFilter, coordSys)); } var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); fromData.initData(map$1(optData, function(item) { return item[0]; }), null, dimValueGetter); toData.initData(map$1(optData, function(item) { return item[1]; }), null, dimValueGetter); lineData.initData(map$1(optData, function(item) { return item[2]; })); lineData.hasItemOption = true; return { from: fromData, to: toData, line: lineData }; } var MarkLineView$1 = MarkLineView; function install$d(registers) { registers.registerComponentModel(MarkLineModel$1); registers.registerComponentView(MarkLineView$1); registers.registerPreprocessor(function(opt) { if (checkMarkerInSeries(opt.series, "markLine")) { opt.markLine = opt.markLine || {}; } }); } var MarkAreaModel = function(_super) { __extends$1(MarkAreaModel2, _super); function MarkAreaModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkAreaModel2.type; return _this; } MarkAreaModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { return new MarkAreaModel2(markerOpt, masterMarkerModel, ecModel); }; MarkAreaModel2.type = "markArea"; MarkAreaModel2.defaultOption = { zlevel: 0, z: 1, tooltip: { trigger: "item" }, animation: false, label: { show: true, position: "top" }, itemStyle: { borderWidth: 0 }, emphasis: { label: { show: true, position: "top" } } }; return MarkAreaModel2; }(MarkerModel$1); var MarkAreaModel$1 = MarkAreaModel; var inner$2 = makeInner(); var markAreaTransform = function(seriesModel, coordSys, maModel, item) { var lt2 = dataTransform(seriesModel, item[0]); var rb2 = dataTransform(seriesModel, item[1]); var ltCoord = lt2.coord; var rbCoord = rb2.coord; ltCoord[0] = retrieve(ltCoord[0], -Infinity); ltCoord[1] = retrieve(ltCoord[1], -Infinity); rbCoord[0] = retrieve(rbCoord[0], Infinity); rbCoord[1] = retrieve(rbCoord[1], Infinity); var result = mergeAll([{}, lt2, rb2]); result.coord = [lt2.coord, rb2.coord]; result.x0 = lt2.x; result.y0 = lt2.y; result.x1 = rb2.x; result.y1 = rb2.y; return result; }; function isInifinity(val) { return !isNaN(val) && !isFinite(val); } function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { var otherDimIndex = 1 - dimIndex; return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]); } function markAreaFilter(coordSys, item) { var fromCoord = item.coord[0]; var toCoord = item.coord[1]; if (isCoordinateSystemType(coordSys, "cartesian2d")) { if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) { return true; } } return dataFilter(coordSys, { coord: fromCoord, x: item.x0, y: item.y0 }) || dataFilter(coordSys, { coord: toCoord, x: item.x1, y: item.y1 }); } function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) { var coordSys = seriesModel.coordinateSystem; var itemModel = data.getItemModel(idx); var point; var xPx = parsePercent$1(itemModel.get(dims[0]), api.getWidth()); var yPx = parsePercent$1(itemModel.get(dims[1]), api.getHeight()); if (!isNaN(xPx) && !isNaN(yPx)) { point = [xPx, yPx]; } else { if (seriesModel.getMarkerPosition) { point = seriesModel.getMarkerPosition(data.getValues(dims, idx)); } else { var x = data.get(dims[0], idx); var y = data.get(dims[1], idx); var pt = [x, y]; coordSys.clampData && coordSys.clampData(pt, pt); point = coordSys.dataToPoint(pt, true); } if (isCoordinateSystemType(coordSys, "cartesian2d")) { var xAxis = coordSys.getAxis("x"); var yAxis = coordSys.getAxis("y"); var x = data.get(dims[0], idx); var y = data.get(dims[1], idx); if (isInifinity(x)) { point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === "x0" ? 0 : 1]); } else if (isInifinity(y)) { point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === "y0" ? 0 : 1]); } } if (!isNaN(xPx)) { point[0] = xPx; } if (!isNaN(yPx)) { point[1] = yPx; } } return point; } var dimPermutations = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]]; var MarkAreaView = function(_super) { __extends$1(MarkAreaView2, _super); function MarkAreaView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = MarkAreaView2.type; return _this; } MarkAreaView2.prototype.updateTransform = function(markAreaModel, ecModel, api) { ecModel.eachSeries(function(seriesModel) { var maModel = MarkerModel$1.getMarkerModelFromSeries(seriesModel, "markArea"); if (maModel) { var areaData_1 = maModel.getData(); areaData_1.each(function(idx) { var points2 = map$1(dimPermutations, function(dim) { return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api); }); areaData_1.setItemLayout(idx, points2); var el = areaData_1.getItemGraphicEl(idx); el.setShape("points", points2); }); } }, this); }; MarkAreaView2.prototype.renderSeries = function(seriesModel, maModel, ecModel, api) { var coordSys = seriesModel.coordinateSystem; var seriesId = seriesModel.id; var seriesData = seriesModel.getData(); var areaGroupMap = this.markerGroupMap; var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, { group: new Group$4() }); this.group.add(polygonGroup.group); this.markKeep(polygonGroup); var areaData = createList(coordSys, seriesModel, maModel); maModel.setData(areaData); areaData.each(function(idx) { var points2 = map$1(dimPermutations, function(dim) { return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api); }); var xAxisScale = coordSys.getAxis("x").scale; var yAxisScale = coordSys.getAxis("y").scale; var xAxisExtent = xAxisScale.getExtent(); var yAxisExtent = yAxisScale.getExtent(); var xPointExtent = [xAxisScale.parse(areaData.get("x0", idx)), xAxisScale.parse(areaData.get("x1", idx))]; var yPointExtent = [yAxisScale.parse(areaData.get("y0", idx)), yAxisScale.parse(areaData.get("y1", idx))]; asc$2(xPointExtent); asc$2(yPointExtent); var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]); var allClipped = !overlapped; areaData.setItemLayout(idx, { points: points2, allClipped }); var style = areaData.getItemModel(idx).getModel("itemStyle").getItemStyle(); var color$1 = getVisualFromData(seriesData, "color"); if (!style.fill) { style.fill = color$1; if (typeof style.fill === "string") { style.fill = modifyAlpha(style.fill, 0.4); } } if (!style.stroke) { style.stroke = color$1; } areaData.setItemVisual(idx, "style", style); }); areaData.diff(inner$2(polygonGroup).data).add(function(idx) { var layout2 = areaData.getItemLayout(idx); if (!layout2.allClipped) { var polygon = new Polygon$1({ shape: { points: layout2.points } }); areaData.setItemGraphicEl(idx, polygon); polygonGroup.group.add(polygon); } }).update(function(newIdx, oldIdx) { var polygon = inner$2(polygonGroup).data.getItemGraphicEl(oldIdx); var layout2 = areaData.getItemLayout(newIdx); if (!layout2.allClipped) { if (polygon) { updateProps$1(polygon, { shape: { points: layout2.points } }, maModel, newIdx); } else { polygon = new Polygon$1({ shape: { points: layout2.points } }); } areaData.setItemGraphicEl(newIdx, polygon); polygonGroup.group.add(polygon); } else if (polygon) { polygonGroup.group.remove(polygon); } }).remove(function(idx) { var polygon = inner$2(polygonGroup).data.getItemGraphicEl(idx); polygonGroup.group.remove(polygon); }).execute(); areaData.eachItemGraphicEl(function(polygon, idx) { var itemModel = areaData.getItemModel(idx); var style = areaData.getItemVisual(idx, "style"); polygon.useStyle(areaData.getItemVisual(idx, "style")); setLabelStyle(polygon, getLabelStatesModels(itemModel), { labelFetcher: maModel, labelDataIndex: idx, defaultText: areaData.getName(idx) || "", inheritColor: typeof style.fill === "string" ? modifyAlpha(style.fill, 1) : "#000" }); setStatesStylesFromModel(polygon, itemModel); enableHoverEmphasis(polygon); getECData(polygon).dataModel = maModel; }); inner$2(polygonGroup).data = areaData; polygonGroup.group.silent = maModel.get("silent") || seriesModel.get("silent"); }; MarkAreaView2.type = "markArea"; return MarkAreaView2; }(MarkerView$1); function createList(coordSys, seriesModel, maModel) { var areaData; var dataDims; var dims = ["x0", "y0", "x1", "y1"]; if (coordSys) { var coordDimsInfos_1 = map$1(coordSys && coordSys.dimensions, function(coordDim) { var data = seriesModel.getData(); var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; return extend(extend({}, info), { name: coordDim, ordinalMeta: null }); }); dataDims = map$1(dims, function(dim, idx) { return { name: dim, type: coordDimsInfos_1[idx % 2].type }; }); areaData = new SeriesData$1(dataDims, maModel); } else { dataDims = [{ name: "value", type: "float" }]; areaData = new SeriesData$1(dataDims, maModel); } var optData = map$1(maModel.get("data"), curry$1(markAreaTransform, seriesModel, coordSys, maModel)); if (coordSys) { optData = filter(optData, curry$1(markAreaFilter, coordSys)); } var dimValueGetter = coordSys ? function(item, dimName, dataIndex, dimIndex) { var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2]; return parseDataValue(rawVal, dataDims[dimIndex]); } : function(item, dimName, dataIndex, dimIndex) { return parseDataValue(item.value, dataDims[dimIndex]); }; areaData.initData(optData, null, dimValueGetter); areaData.hasItemOption = true; return areaData; } var MarkAreaView$1 = MarkAreaView; function install$c(registers) { registers.registerComponentModel(MarkAreaModel$1); registers.registerComponentView(MarkAreaView$1); registers.registerPreprocessor(function(opt) { if (checkMarkerInSeries(opt.series, "markArea")) { opt.markArea = opt.markArea || {}; } }); } var getDefaultSelectorOptions = function(ecModel, type) { if (type === "all") { return { type: "all", title: ecModel.getLocaleModel().get(["legend", "selector", "all"]) }; } else if (type === "inverse") { return { type: "inverse", title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"]) }; } }; var LegendModel = function(_super) { __extends$1(LegendModel2, _super); function LegendModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LegendModel2.type; _this.layoutMode = { type: "box", ignoreSize: true }; return _this; } LegendModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); option.selected = option.selected || {}; this._updateSelector(option); }; LegendModel2.prototype.mergeOption = function(option, ecModel) { _super.prototype.mergeOption.call(this, option, ecModel); this._updateSelector(option); }; LegendModel2.prototype._updateSelector = function(option) { var selector2 = option.selector; var ecModel = this.ecModel; if (selector2 === true) { selector2 = option.selector = ["all", "inverse"]; } if (isArray$1(selector2)) { each$g(selector2, function(item, index) { isString(item) && (item = { type: item }); selector2[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type)); }); } }; LegendModel2.prototype.optionUpdated = function() { this._updateData(this.ecModel); var legendData = this._data; if (legendData[0] && this.get("selectedMode") === "single") { var hasSelected = false; for (var i = 0; i < legendData.length; i++) { var name_1 = legendData[i].get("name"); if (this.isSelected(name_1)) { this.select(name_1); hasSelected = true; break; } } !hasSelected && this.select(legendData[0].get("name")); } }; LegendModel2.prototype._updateData = function(ecModel) { var potentialData = []; var availableNames = []; ecModel.eachRawSeries(function(seriesModel) { var seriesName = seriesModel.name; availableNames.push(seriesName); var isPotential; if (seriesModel.legendVisualProvider) { var provider = seriesModel.legendVisualProvider; var names = provider.getAllNames(); if (!ecModel.isSeriesFiltered(seriesModel)) { availableNames = availableNames.concat(names); } if (names.length) { potentialData = potentialData.concat(names); } else { isPotential = true; } } else { isPotential = true; } if (isPotential && isNameSpecified(seriesModel)) { potentialData.push(seriesModel.name); } }); this._availableNames = availableNames; var rawData = this.get("data") || potentialData; var legendData = map$1(rawData, function(dataItem) { if (typeof dataItem === "string" || typeof dataItem === "number") { dataItem = { name: dataItem }; } return new Model$1(dataItem, this, this.ecModel); }, this); this._data = legendData; }; LegendModel2.prototype.getData = function() { return this._data; }; LegendModel2.prototype.select = function(name) { var selected = this.option.selected; var selectedMode = this.get("selectedMode"); if (selectedMode === "single") { var data = this._data; each$g(data, function(dataItem) { selected[dataItem.get("name")] = false; }); } selected[name] = true; }; LegendModel2.prototype.unSelect = function(name) { if (this.get("selectedMode") !== "single") { this.option.selected[name] = false; } }; LegendModel2.prototype.toggleSelected = function(name) { var selected = this.option.selected; if (!selected.hasOwnProperty(name)) { selected[name] = true; } this[selected[name] ? "unSelect" : "select"](name); }; LegendModel2.prototype.allSelect = function() { var data = this._data; var selected = this.option.selected; each$g(data, function(dataItem) { selected[dataItem.get("name", true)] = true; }); }; LegendModel2.prototype.inverseSelect = function() { var data = this._data; var selected = this.option.selected; each$g(data, function(dataItem) { var name = dataItem.get("name", true); if (!selected.hasOwnProperty(name)) { selected[name] = true; } selected[name] = !selected[name]; }); }; LegendModel2.prototype.isSelected = function(name) { var selected = this.option.selected; return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0; }; LegendModel2.prototype.getOrient = function() { return this.get("orient") === "vertical" ? { index: 1, name: "vertical" } : { index: 0, name: "horizontal" }; }; LegendModel2.type = "legend.plain"; LegendModel2.dependencies = ["series"]; LegendModel2.defaultOption = { zlevel: 0, z: 4, show: true, orient: "horizontal", left: "center", top: 0, align: "auto", backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderRadius: 0, borderWidth: 0, padding: 5, itemGap: 10, itemWidth: 25, itemHeight: 14, symbolRotate: "inherit", symbolKeepAspect: true, inactiveColor: "#ccc", inactiveBorderColor: "#ccc", inactiveBorderWidth: "auto", itemStyle: { color: "inherit", opacity: "inherit", borderColor: "inherit", borderWidth: "auto", borderCap: "inherit", borderJoin: "inherit", borderDashOffset: "inherit", borderMiterLimit: "inherit" }, lineStyle: { width: "auto", color: "inherit", inactiveColor: "#ccc", inactiveWidth: 2, opacity: "inherit", type: "inherit", cap: "inherit", join: "inherit", dashOffset: "inherit", miterLimit: "inherit" }, textStyle: { color: "#333" }, selectedMode: true, selector: false, selectorLabel: { show: true, borderRadius: 10, padding: [3, 5, 3, 5], fontSize: 12, fontFamily: "sans-serif", color: "#666", borderWidth: 1, borderColor: "#666" }, emphasis: { selectorLabel: { show: true, color: "#eee", backgroundColor: "#666" } }, selectorPosition: "auto", selectorItemGap: 7, selectorButtonGap: 10, tooltip: { show: false } }; return LegendModel2; }(ComponentModel$1); var LegendModel$1 = LegendModel; var curry = curry$1; var each$3 = each$g; var Group$1 = Group$4; var LegendView = function(_super) { __extends$1(LegendView2, _super); function LegendView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = LegendView2.type; _this.newlineDisabled = false; return _this; } LegendView2.prototype.init = function() { this.group.add(this._contentGroup = new Group$1()); this.group.add(this._selectorGroup = new Group$1()); this._isFirstRender = true; }; LegendView2.prototype.getContentGroup = function() { return this._contentGroup; }; LegendView2.prototype.getSelectorGroup = function() { return this._selectorGroup; }; LegendView2.prototype.render = function(legendModel, ecModel, api) { var isFirstRender = this._isFirstRender; this._isFirstRender = false; this.resetInner(); if (!legendModel.get("show", true)) { return; } var itemAlign = legendModel.get("align"); var orient = legendModel.get("orient"); if (!itemAlign || itemAlign === "auto") { itemAlign = legendModel.get("left") === "right" && orient === "vertical" ? "right" : "left"; } var selector2 = legendModel.get("selector", true); var selectorPosition = legendModel.get("selectorPosition", true); if (selector2 && (!selectorPosition || selectorPosition === "auto")) { selectorPosition = orient === "horizontal" ? "end" : "start"; } this.renderInner(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition); var positionInfo = legendModel.getBoxLayoutParams(); var viewportSize = { width: api.getWidth(), height: api.getHeight() }; var padding = legendModel.get("padding"); var maxSize = getLayoutRect(positionInfo, viewportSize, padding); var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition); var layoutRect = getLayoutRect(defaults({ width: mainRect.width, height: mainRect.height }, positionInfo), viewportSize, padding); this.group.x = layoutRect.x - mainRect.x; this.group.y = layoutRect.y - mainRect.y; this.group.markRedraw(); this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel)); }; LegendView2.prototype.resetInner = function() { this.getContentGroup().removeAll(); this._backgroundEl && this.group.remove(this._backgroundEl); this.getSelectorGroup().removeAll(); }; LegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) { var contentGroup = this.getContentGroup(); var legendDrawnMap = createHashMap(); var selectMode = legendModel.get("selectedMode"); var excludeSeriesId = []; ecModel.eachRawSeries(function(seriesModel) { !seriesModel.get("legendHoverLink") && excludeSeriesId.push(seriesModel.id); }); each$3(legendModel.getData(), function(legendItemModel, dataIndex) { var name = legendItemModel.get("name"); if (!this.newlineDisabled && (name === "" || name === "\n")) { var g = new Group$1(); g.newline = true; contentGroup.add(g); return; } var seriesModel = ecModel.getSeriesByName(name)[0]; if (legendDrawnMap.get(name)) { return; } if (seriesModel) { var data = seriesModel.getData(); var lineVisualStyle = data.getVisual("legendLineStyle") || {}; var legendIcon = data.getVisual("legendIcon"); var style = data.getVisual("style"); var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode); itemGroup.on("click", curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on("mouseover", curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on("mouseout", curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId)); legendDrawnMap.set(name, true); } else { ecModel.eachRawSeries(function(seriesModel2) { if (legendDrawnMap.get(name)) { return; } if (seriesModel2.legendVisualProvider) { var provider = seriesModel2.legendVisualProvider; if (!provider.containName(name)) { return; } var idx = provider.indexOfName(name); var style2 = provider.getItemVisual(idx, "style"); var legendIcon2 = provider.getItemVisual(idx, "legendIcon"); var colorArr = parse(style2.fill); if (colorArr && colorArr[3] === 0) { colorArr[3] = 0.2; style2.fill = stringify(colorArr, "rgba"); } var itemGroup2 = this._createItem(seriesModel2, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style2, legendIcon2, selectMode); itemGroup2.on("click", curry(dispatchSelectAction, null, name, api, excludeSeriesId)).on("mouseover", curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on("mouseout", curry(dispatchDownplayAction, null, name, api, excludeSeriesId)); legendDrawnMap.set(name, true); } }, this); } }, this); if (selector2) { this._createSelector(selector2, legendModel, api, orient, selectorPosition); } }; LegendView2.prototype._createSelector = function(selector2, legendModel, api, orient, selectorPosition) { var selectorGroup = this.getSelectorGroup(); each$3(selector2, function createSelectorButton(selectorItem) { var type = selectorItem.type; var labelText = new ZRText$1({ style: { x: 0, y: 0, align: "center", verticalAlign: "middle" }, onclick: function() { api.dispatchAction({ type: type === "all" ? "legendAllSelect" : "legendInverseSelect" }); } }); selectorGroup.add(labelText); var labelModel = legendModel.getModel("selectorLabel"); var emphasisLabelModel = legendModel.getModel(["emphasis", "selectorLabel"]); setLabelStyle(labelText, { normal: labelModel, emphasis: emphasisLabelModel }, { defaultText: selectorItem.title }); enableHoverEmphasis(labelText); }); }; LegendView2.prototype._createItem = function(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode) { var drawType = seriesModel.visualDrawType; var itemWidth = legendModel.get("itemWidth"); var itemHeight = legendModel.get("itemHeight"); var isSelected = legendModel.isSelected(name); var iconRotate = legendItemModel.get("symbolRotate"); var symbolKeepAspect = legendItemModel.get("symbolKeepAspect"); var legendIconType = legendItemModel.get("icon"); legendIcon = legendIconType || legendIcon || "roundRect"; var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected); var itemGroup = new Group$1(); var textStyleModel = legendItemModel.getModel("textStyle"); if (typeof seriesModel.getLegendIcon === "function" && (!legendIconType || legendIconType === "inherit")) { itemGroup.add(seriesModel.getLegendIcon({ itemWidth, itemHeight, icon: legendIcon, iconRotate, itemStyle: style.itemStyle, lineStyle: style.lineStyle, symbolKeepAspect })); } else { var rotate2 = legendIconType === "inherit" && seriesModel.getData().getVisual("symbol") ? iconRotate === "inherit" ? seriesModel.getData().getVisual("symbolRotate") : iconRotate : 0; itemGroup.add(getDefaultLegendIcon({ itemWidth, itemHeight, icon: legendIcon, iconRotate: rotate2, itemStyle: style.itemStyle, lineStyle: style.lineStyle, symbolKeepAspect })); } var textX = itemAlign === "left" ? itemWidth + 5 : -5; var textAlign = itemAlign; var formatter = legendModel.get("formatter"); var content = name; if (typeof formatter === "string" && formatter) { content = formatter.replace("{name}", name != null ? name : ""); } else if (typeof formatter === "function") { content = formatter(name); } var inactiveColor = legendItemModel.get("inactiveColor"); itemGroup.add(new ZRText$1({ style: createTextStyle$1(textStyleModel, { text: content, x: textX, y: itemHeight / 2, fill: isSelected ? textStyleModel.getTextColor() : inactiveColor, align: textAlign, verticalAlign: "middle" }) })); var hitRect = new Rect$3({ shape: itemGroup.getBoundingRect(), invisible: true }); var tooltipModel = legendItemModel.getModel("tooltip"); if (tooltipModel.get("show")) { setTooltipConfig({ el: hitRect, componentModel: legendModel, itemName: name, itemTooltipOption: tooltipModel.option }); } itemGroup.add(hitRect); itemGroup.eachChild(function(child) { child.silent = true; }); hitRect.silent = !selectMode; this.getContentGroup().add(itemGroup); enableHoverEmphasis(itemGroup); itemGroup.__legendDataIndex = dataIndex; return itemGroup; }; LegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) { var contentGroup = this.getContentGroup(); var selectorGroup = this.getSelectorGroup(); box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), maxSize.width, maxSize.height); var contentRect = contentGroup.getBoundingRect(); var contentPos = [-contentRect.x, -contentRect.y]; selectorGroup.markRedraw(); contentGroup.markRedraw(); if (selector2) { box("horizontal", selectorGroup, legendModel.get("selectorItemGap", true)); var selectorRect = selectorGroup.getBoundingRect(); var selectorPos = [-selectorRect.x, -selectorRect.y]; var selectorButtonGap = legendModel.get("selectorButtonGap", true); var orientIdx = legendModel.getOrient().index; var wh = orientIdx === 0 ? "width" : "height"; var hw = orientIdx === 0 ? "height" : "width"; var yx = orientIdx === 0 ? "y" : "x"; if (selectorPosition === "end") { selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap; } else { contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap; } selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2; selectorGroup.x = selectorPos[0]; selectorGroup.y = selectorPos[1]; contentGroup.x = contentPos[0]; contentGroup.y = contentPos[1]; var mainRect = { x: 0, y: 0 }; mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]; mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]); mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]); return mainRect; } else { contentGroup.x = contentPos[0]; contentGroup.y = contentPos[1]; return this.group.getBoundingRect(); } }; LegendView2.prototype.remove = function() { this.getContentGroup().removeAll(); this._isFirstRender = true; }; LegendView2.type = "legend.plain"; return LegendView2; }(ComponentView$1); function getLegendStyle(iconType, legendModel, lineVisualStyle, itemVisualStyle, drawType, isSelected) { function handleCommonProps(style, visualStyle) { if (style.lineWidth === "auto") { style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0; } each$3(style, function(propVal, propName) { style[propName] === "inherit" && (style[propName] = visualStyle[propName]); }); } var legendItemModel = legendModel.getModel("itemStyle"); var itemStyle = legendItemModel.getItemStyle(); var iconBrushType = iconType.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke"; itemStyle.decal = itemVisualStyle.decal; if (itemStyle.fill === "inherit") { itemStyle.fill = itemVisualStyle[drawType]; } if (itemStyle.stroke === "inherit") { itemStyle.stroke = itemVisualStyle[iconBrushType]; } if (itemStyle.opacity === "inherit") { itemStyle.opacity = (drawType === "fill" ? itemVisualStyle : lineVisualStyle).opacity; } handleCommonProps(itemStyle, itemVisualStyle); var legendLineModel = legendModel.getModel("lineStyle"); var lineStyle = legendLineModel.getLineStyle(); handleCommonProps(lineStyle, lineVisualStyle); itemStyle.fill === "auto" && (itemStyle.fill = itemVisualStyle.fill); itemStyle.stroke === "auto" && (itemStyle.stroke = itemVisualStyle.fill); lineStyle.stroke === "auto" && (lineStyle.stroke = itemVisualStyle.fill); if (!isSelected) { var borderWidth = legendModel.get("inactiveBorderWidth"); var visualHasBorder = itemStyle[iconBrushType]; itemStyle.lineWidth = borderWidth === "auto" ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth; itemStyle.fill = legendModel.get("inactiveColor"); itemStyle.stroke = legendModel.get("inactiveBorderColor"); lineStyle.stroke = legendLineModel.get("inactiveColor"); lineStyle.lineWidth = legendLineModel.get("inactiveWidth"); } return { itemStyle, lineStyle }; } function getDefaultLegendIcon(opt) { var symboType = opt.icon || "roundRect"; var icon = createSymbol$1(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect); icon.setStyle(opt.itemStyle); icon.rotation = (opt.iconRotate || 0) * Math.PI / 180; icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); if (symboType.indexOf("empty") > -1) { icon.style.stroke = icon.style.fill; icon.style.fill = "#fff"; icon.style.lineWidth = 2; } return icon; } function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) { dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId); api.dispatchAction({ type: "legendToggleSelect", name: seriesName != null ? seriesName : dataName }); dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId); } function isUseHoverLayer(api) { var list2 = api.getZr().storage.getDisplayList(); var emphasisState; var i = 0; var len2 = list2.length; while (i < len2 && !(emphasisState = list2[i].states.emphasis)) { i++; } return emphasisState && emphasisState.hoverLayer; } function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) { if (!isUseHoverLayer(api)) { api.dispatchAction({ type: "highlight", seriesName, name: dataName, excludeSeriesId }); } } function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) { if (!isUseHoverLayer(api)) { api.dispatchAction({ type: "downplay", seriesName, name: dataName, excludeSeriesId }); } } var LegendView$1 = LegendView; function legendFilter(ecModel) { var legendModels = ecModel.findComponents({ mainType: "legend" }); if (legendModels && legendModels.length) { ecModel.filterSeries(function(series) { for (var i = 0; i < legendModels.length; i++) { if (!legendModels[i].isSelected(series.name)) { return false; } } return true; }); } } function legendSelectActionHandler(methodName, payload, ecModel) { var selectedMap = {}; var isToggleSelect = methodName === "toggleSelected"; var isSelected; ecModel.eachComponent("legend", function(legendModel) { if (isToggleSelect && isSelected != null) { legendModel[isSelected ? "select" : "unSelect"](payload.name); } else if (methodName === "allSelect" || methodName === "inverseSelect") { legendModel[methodName](); } else { legendModel[methodName](payload.name); isSelected = legendModel.isSelected(payload.name); } var legendData = legendModel.getData(); each$g(legendData, function(model) { var name = model.get("name"); if (name === "\n" || name === "") { return; } var isItemSelected = legendModel.isSelected(name); if (selectedMap.hasOwnProperty(name)) { selectedMap[name] = selectedMap[name] && isItemSelected; } else { selectedMap[name] = isItemSelected; } }); }); return methodName === "allSelect" || methodName === "inverseSelect" ? { selected: selectedMap } : { name: payload.name, selected: selectedMap }; } function installLegendAction(registers) { registers.registerAction("legendToggleSelect", "legendselectchanged", curry$1(legendSelectActionHandler, "toggleSelected")); registers.registerAction("legendAllSelect", "legendselectall", curry$1(legendSelectActionHandler, "allSelect")); registers.registerAction("legendInverseSelect", "legendinverseselect", curry$1(legendSelectActionHandler, "inverseSelect")); registers.registerAction("legendSelect", "legendselected", curry$1(legendSelectActionHandler, "select")); registers.registerAction("legendUnSelect", "legendunselected", curry$1(legendSelectActionHandler, "unSelect")); } function install$b(registers) { registers.registerComponentModel(LegendModel$1); registers.registerComponentView(LegendView$1); registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter); registers.registerSubTypeDefaulter("legend", function() { return "plain"; }); installLegendAction(registers); } var ScrollableLegendModel = function(_super) { __extends$1(ScrollableLegendModel2, _super); function ScrollableLegendModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ScrollableLegendModel2.type; return _this; } ScrollableLegendModel2.prototype.setScrollDataIndex = function(scrollDataIndex) { this.option.scrollDataIndex = scrollDataIndex; }; ScrollableLegendModel2.prototype.init = function(option, parentModel, ecModel) { var inputPositionParams = getLayoutParams(option); _super.prototype.init.call(this, option, parentModel, ecModel); mergeAndNormalizeLayoutParams(this, option, inputPositionParams); }; ScrollableLegendModel2.prototype.mergeOption = function(option, ecModel) { _super.prototype.mergeOption.call(this, option, ecModel); mergeAndNormalizeLayoutParams(this, this.option, option); }; ScrollableLegendModel2.type = "legend.scroll"; ScrollableLegendModel2.defaultOption = inheritDefaultOption(LegendModel$1.defaultOption, { scrollDataIndex: 0, pageButtonItemGap: 5, pageButtonGap: null, pageButtonPosition: "end", pageFormatter: "{current}/{total}", pageIcons: { horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] }, pageIconColor: "#2f4554", pageIconInactiveColor: "#aaa", pageIconSize: 15, pageTextStyle: { color: "#333" }, animationDurationUpdate: 800 }); return ScrollableLegendModel2; }(LegendModel$1); function mergeAndNormalizeLayoutParams(legendModel, target, raw) { var orient = legendModel.getOrient(); var ignoreSize = [1, 1]; ignoreSize[orient.index] = 0; mergeLayoutParam(target, raw, { type: "box", ignoreSize: !!ignoreSize }); } var ScrollableLegendModel$1 = ScrollableLegendModel; var Group = Group$4; var WH = ["width", "height"]; var XY = ["x", "y"]; var ScrollableLegendView = function(_super) { __extends$1(ScrollableLegendView2, _super); function ScrollableLegendView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ScrollableLegendView2.type; _this.newlineDisabled = true; _this._currentIndex = 0; return _this; } ScrollableLegendView2.prototype.init = function() { _super.prototype.init.call(this); this.group.add(this._containerGroup = new Group()); this._containerGroup.add(this.getContentGroup()); this.group.add(this._controllerGroup = new Group()); }; ScrollableLegendView2.prototype.resetInner = function() { _super.prototype.resetInner.call(this); this._controllerGroup.removeAll(); this._containerGroup.removeClipPath(); this._containerGroup.__rectSize = null; }; ScrollableLegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) { var self2 = this; _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition); var controllerGroup = this._controllerGroup; var pageIconSize = legendModel.get("pageIconSize", true); var pageIconSizeArr = isArray$1(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize]; createPageButton("pagePrev", 0); var pageTextStyleModel = legendModel.getModel("pageTextStyle"); controllerGroup.add(new ZRText$1({ name: "pageText", style: { text: "xx/xx", fill: pageTextStyleModel.getTextColor(), font: pageTextStyleModel.getFont(), verticalAlign: "middle", align: "center" }, silent: true })); createPageButton("pageNext", 1); function createPageButton(name, iconIdx) { var pageDataIndexName = name + "DataIndex"; var icon = createIcon(legendModel.get("pageIcons", true)[legendModel.getOrient().name][iconIdx], { onclick: bind$2(self2._pageGo, self2, pageDataIndexName, legendModel, api) }, { x: -pageIconSizeArr[0] / 2, y: -pageIconSizeArr[1] / 2, width: pageIconSizeArr[0], height: pageIconSizeArr[1] }); icon.name = name; controllerGroup.add(icon); } }; ScrollableLegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) { var selectorGroup = this.getSelectorGroup(); var orientIdx = legendModel.getOrient().index; var wh = WH[orientIdx]; var xy = XY[orientIdx]; var hw = WH[1 - orientIdx]; var yx = XY[1 - orientIdx]; selector2 && box("horizontal", selectorGroup, legendModel.get("selectorItemGap", true)); var selectorButtonGap = legendModel.get("selectorButtonGap", true); var selectorRect = selectorGroup.getBoundingRect(); var selectorPos = [-selectorRect.x, -selectorRect.y]; var processMaxSize = clone$4(maxSize); selector2 && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap); var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy); if (selector2) { if (selectorPosition === "end") { selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap; } else { var offset = selectorRect[wh] + selectorButtonGap; selectorPos[orientIdx] -= offset; mainRect[xy] -= offset; } mainRect[wh] += selectorRect[wh] + selectorButtonGap; selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2; mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]); mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]); selectorGroup.x = selectorPos[0]; selectorGroup.y = selectorPos[1]; selectorGroup.markRedraw(); } return mainRect; }; ScrollableLegendView2.prototype._layoutContentAndController = function(legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) { var contentGroup = this.getContentGroup(); var containerGroup = this._containerGroup; var controllerGroup = this._controllerGroup; box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height); box("horizontal", controllerGroup, legendModel.get("pageButtonItemGap", true)); var contentRect = contentGroup.getBoundingRect(); var controllerRect = controllerGroup.getBoundingRect(); var showController = this._showController = contentRect[wh] > maxSize[wh]; var contentPos = [-contentRect.x, -contentRect.y]; if (!isFirstRender) { contentPos[orientIdx] = contentGroup[xy]; } var containerPos = [0, 0]; var controllerPos = [-controllerRect.x, -controllerRect.y]; var pageButtonGap = retrieve2(legendModel.get("pageButtonGap", true), legendModel.get("itemGap", true)); if (showController) { var pageButtonPosition = legendModel.get("pageButtonPosition", true); if (pageButtonPosition === "end") { controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh]; } else { containerPos[orientIdx] += controllerRect[wh] + pageButtonGap; } } controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2; contentGroup.setPosition(contentPos); containerGroup.setPosition(containerPos); controllerGroup.setPosition(controllerPos); var mainRect = { x: 0, y: 0 }; mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]; mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]); containerGroup.__rectSize = maxSize[wh]; if (showController) { var clipShape = { x: 0, y: 0 }; clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0); clipShape[hw] = mainRect[hw]; containerGroup.setClipPath(new Rect$3({ shape: clipShape })); containerGroup.__rectSize = clipShape[wh]; } else { controllerGroup.eachChild(function(child) { child.attr({ invisible: true, silent: true }); }); } var pageInfo = this._getPageInfo(legendModel); pageInfo.pageIndex != null && updateProps$1(contentGroup, { x: pageInfo.contentPosition[0], y: pageInfo.contentPosition[1] }, showController ? legendModel : null); this._updatePageInfoView(legendModel, pageInfo); return mainRect; }; ScrollableLegendView2.prototype._pageGo = function(to, legendModel, api) { var scrollDataIndex = this._getPageInfo(legendModel)[to]; scrollDataIndex != null && api.dispatchAction({ type: "legendScroll", scrollDataIndex, legendId: legendModel.id }); }; ScrollableLegendView2.prototype._updatePageInfoView = function(legendModel, pageInfo) { var controllerGroup = this._controllerGroup; each$g(["pagePrev", "pageNext"], function(name) { var key2 = name + "DataIndex"; var canJump = pageInfo[key2] != null; var icon = controllerGroup.childOfName(name); if (icon) { icon.setStyle("fill", canJump ? legendModel.get("pageIconColor", true) : legendModel.get("pageIconInactiveColor", true)); icon.cursor = canJump ? "pointer" : "default"; } }); var pageText = controllerGroup.childOfName("pageText"); var pageFormatter = legendModel.get("pageFormatter"); var pageIndex = pageInfo.pageIndex; var current = pageIndex != null ? pageIndex + 1 : 0; var total = pageInfo.pageCount; pageText && pageFormatter && pageText.setStyle("text", isString(pageFormatter) ? pageFormatter.replace("{current}", current == null ? "" : current + "").replace("{total}", total == null ? "" : total + "") : pageFormatter({ current, total })); }; ScrollableLegendView2.prototype._getPageInfo = function(legendModel) { var scrollDataIndex = legendModel.get("scrollDataIndex", true); var contentGroup = this.getContentGroup(); var containerRectSize = this._containerGroup.__rectSize; var orientIdx = legendModel.getOrient().index; var wh = WH[orientIdx]; var xy = XY[orientIdx]; var targetItemIndex = this._findTargetItemIndex(scrollDataIndex); var children = contentGroup.children(); var targetItem = children[targetItemIndex]; var itemCount = children.length; var pCount = !itemCount ? 0 : 1; var result = { contentPosition: [contentGroup.x, contentGroup.y], pageCount: pCount, pageIndex: pCount - 1, pagePrevDataIndex: null, pageNextDataIndex: null }; if (!targetItem) { return result; } var targetItemInfo = getItemInfo(targetItem); result.contentPosition[orientIdx] = -targetItemInfo.s; for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) { currItemInfo = getItemInfo(children[i]); if (!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || currItemInfo && !intersect2(currItemInfo, winStartItemInfo.s)) { if (winEndItemInfo.i > winStartItemInfo.i) { winStartItemInfo = winEndItemInfo; } else { winStartItemInfo = currItemInfo; } if (winStartItemInfo) { if (result.pageNextDataIndex == null) { result.pageNextDataIndex = winStartItemInfo.i; } ++result.pageCount; } } winEndItemInfo = currItemInfo; } for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) { currItemInfo = getItemInfo(children[i]); if ((!currItemInfo || !intersect2(winEndItemInfo, currItemInfo.s)) && winStartItemInfo.i < winEndItemInfo.i) { winEndItemInfo = winStartItemInfo; if (result.pagePrevDataIndex == null) { result.pagePrevDataIndex = winStartItemInfo.i; } ++result.pageCount; ++result.pageIndex; } winStartItemInfo = currItemInfo; } return result; function getItemInfo(el) { if (el) { var itemRect = el.getBoundingRect(); var start2 = itemRect[xy] + el[xy]; return { s: start2, e: start2 + itemRect[wh], i: el.__legendDataIndex }; } } function intersect2(itemInfo, winStart) { return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize; } }; ScrollableLegendView2.prototype._findTargetItemIndex = function(targetDataIndex) { if (!this._showController) { return 0; } var index; var contentGroup = this.getContentGroup(); var defaultIndex; contentGroup.eachChild(function(child, idx) { var legendDataIdx = child.__legendDataIndex; if (defaultIndex == null && legendDataIdx != null) { defaultIndex = idx; } if (legendDataIdx === targetDataIndex) { index = idx; } }); return index != null ? index : defaultIndex; }; ScrollableLegendView2.type = "legend.scroll"; return ScrollableLegendView2; }(LegendView$1); var ScrollableLegendView$1 = ScrollableLegendView; function installScrollableLegendAction(registers) { registers.registerAction("legendScroll", "legendscroll", function(payload, ecModel) { var scrollDataIndex = payload.scrollDataIndex; scrollDataIndex != null && ecModel.eachComponent({ mainType: "legend", subType: "scroll", query: payload }, function(legendModel) { legendModel.setScrollDataIndex(scrollDataIndex); }); }); } function install$a(registers) { use(install$b); registers.registerComponentModel(ScrollableLegendModel$1); registers.registerComponentView(ScrollableLegendView$1); installScrollableLegendAction(registers); } function install$9(registers) { use(install$b); use(install$a); } var InsideZoomModel = function(_super) { __extends$1(InsideZoomModel2, _super); function InsideZoomModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = InsideZoomModel2.type; return _this; } InsideZoomModel2.type = "dataZoom.inside"; InsideZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel$1.defaultOption, { disabled: false, zoomLock: false, zoomOnMouseWheel: true, moveOnMouseMove: true, moveOnMouseWheel: false, preventDefaultMouseMove: true }); return InsideZoomModel2; }(DataZoomModel$1); var InsideZoomModel$1 = InsideZoomModel; var inner$1 = makeInner(); function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) { inner$1(api).coordSysRecordMap.each(function(coordSysRecord) { var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid); if (dzInfo) { dzInfo.getRange = getRange; } }); } function disposeCoordSysRecordIfNeeded(api, dataZoomModel) { var coordSysRecordMap = inner$1(api).coordSysRecordMap; var coordSysKeyArr = coordSysRecordMap.keys(); for (var i = 0; i < coordSysKeyArr.length; i++) { var coordSysKey = coordSysKeyArr[i]; var coordSysRecord = coordSysRecordMap.get(coordSysKey); var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; if (dataZoomInfoMap) { var dzUid = dataZoomModel.uid; var dzInfo = dataZoomInfoMap.get(dzUid); if (dzInfo) { dataZoomInfoMap.removeKey(dzUid); if (!dataZoomInfoMap.keys().length) { disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); } } } } } function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) { if (coordSysRecord) { coordSysRecordMap.removeKey(coordSysRecord.model.uid); var controller = coordSysRecord.controller; controller && controller.dispose(); } } function createCoordSysRecord(api, coordSysModel) { var coordSysRecord = { model: coordSysModel, containsPoint: curry$1(containsPoint, coordSysModel), dispatchAction: curry$1(dispatchAction, api), dataZoomInfoMap: null, controller: null }; var controller = coordSysRecord.controller = new RoamController$1(api.getZr()); each$g(["pan", "zoom", "scrollMove"], function(eventName) { controller.on(eventName, function(event) { var batch = []; coordSysRecord.dataZoomInfoMap.each(function(dzInfo) { if (!event.isAvailableBehavior(dzInfo.model.option)) { return; } var method = (dzInfo.getRange || {})[eventName]; var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event); !dzInfo.model.get("disabled", true) && range && batch.push({ dataZoomId: dzInfo.model.id, start: range[0], end: range[1] }); }); batch.length && coordSysRecord.dispatchAction(batch); }); }); return coordSysRecord; } function dispatchAction(api, batch) { api.dispatchAction({ type: "dataZoom", animation: { easing: "cubicOut", duration: 100 }, batch }); } function containsPoint(coordSysModel, e2, x, y) { return coordSysModel.coordinateSystem.containPoint([x, y]); } function mergeControllerParams(dataZoomInfoMap) { var controlType; var prefix = "type_"; var typePriority = { "type_true": 2, "type_move": 1, "type_false": 0, "type_undefined": -1 }; var preventDefaultMouseMove = true; dataZoomInfoMap.each(function(dataZoomInfo) { var dataZoomModel = dataZoomInfo.model; var oneType = dataZoomModel.get("disabled", true) ? false : dataZoomModel.get("zoomLock", true) ? "move" : true; if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) { controlType = oneType; } preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get("preventDefaultMouseMove", true); }); return { controlType, opt: { zoomOnMouseWheel: true, moveOnMouseMove: true, moveOnMouseWheel: true, preventDefaultMouseMove: !!preventDefaultMouseMove } }; } function installDataZoomRoamProcessor(registers) { registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function(ecModel, api) { var apiInner = inner$1(api); var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap()); coordSysRecordMap.each(function(coordSysRecord) { coordSysRecord.dataZoomInfoMap = null; }); ecModel.eachComponent({ mainType: "dataZoom", subType: "inside" }, function(dataZoomModel) { var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel); each$g(dzReferCoordSysWrap.infoList, function(dzCoordSysInfo) { var coordSysUid = dzCoordSysInfo.model.uid; var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model)); var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap()); dataZoomInfoMap.set(dataZoomModel.uid, { dzReferCoordSysInfo: dzCoordSysInfo, model: dataZoomModel, getRange: null }); }); }); coordSysRecordMap.each(function(coordSysRecord) { var controller = coordSysRecord.controller; var firstDzInfo; var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; if (dataZoomInfoMap) { var firstDzKey = dataZoomInfoMap.keys()[0]; if (firstDzKey != null) { firstDzInfo = dataZoomInfoMap.get(firstDzKey); } } if (!firstDzInfo) { disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); return; } var controllerParams = mergeControllerParams(dataZoomInfoMap); controller.enable(controllerParams.controlType, controllerParams.opt); controller.setPointerChecker(coordSysRecord.containsPoint); createOrUpdate(coordSysRecord, "dispatchAction", firstDzInfo.model.get("throttle", true), "fixRate"); }); }); } var InsideZoomView = function(_super) { __extends$1(InsideZoomView2, _super); function InsideZoomView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "dataZoom.inside"; return _this; } InsideZoomView2.prototype.render = function(dataZoomModel, ecModel, api) { _super.prototype.render.apply(this, arguments); if (dataZoomModel.noTarget()) { this._clear(); return; } this.range = dataZoomModel.getPercentRange(); setViewInfoToCoordSysRecord(api, dataZoomModel, { pan: bind$2(getRangeHandlers.pan, this), zoom: bind$2(getRangeHandlers.zoom, this), scrollMove: bind$2(getRangeHandlers.scrollMove, this) }); }; InsideZoomView2.prototype.dispose = function() { this._clear(); _super.prototype.dispose.apply(this, arguments); }; InsideZoomView2.prototype._clear = function() { disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel); this.range = null; }; InsideZoomView2.type = "dataZoom.inside"; return InsideZoomView2; }(DataZoomView$1); var getRangeHandlers = { zoom: function(coordSysInfo, coordSysMainType, controller, e2) { var lastRange = this.range; var range = lastRange.slice(); var axisModel = coordSysInfo.axisModels[0]; if (!axisModel) { return; } var directionInfo = getDirectionInfo[coordSysMainType](null, [e2.originX, e2.originY], axisModel, controller, coordSysInfo); var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; var scale2 = Math.max(1 / e2.scale, 0); range[0] = (range[0] - percentPoint) * scale2 + percentPoint; range[1] = (range[1] - percentPoint) * scale2 + percentPoint; var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); this.range = range; if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { return range; } }, pan: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) { var directionInfo = getDirectionInfo[coordSysMainType]([e2.oldX, e2.oldY], [e2.newX, e2.newY], axisModel, controller, coordSysInfo); return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength; }), scrollMove: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) { var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e2.scrollDelta, e2.scrollDelta], axisModel, controller, coordSysInfo); return directionInfo.signal * (range[1] - range[0]) * e2.scrollDelta; }) }; function makeMover(getPercentDelta) { return function(coordSysInfo, coordSysMainType, controller, e2) { var lastRange = this.range; var range = lastRange.slice(); var axisModel = coordSysInfo.axisModels[0]; if (!axisModel) { return; } var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e2); sliderMove(percentDelta, range, [0, 100], "all"); this.range = range; if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { return range; } }; } var getDirectionInfo = { grid: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { var axis = axisModel.axis; var ret = {}; var rect = coordSysInfo.model.coordinateSystem.getRect(); oldPoint = oldPoint || [0, 0]; if (axis.dim === "x") { ret.pixel = newPoint[0] - oldPoint[0]; ret.pixelLength = rect.width; ret.pixelStart = rect.x; ret.signal = axis.inverse ? 1 : -1; } else { ret.pixel = newPoint[1] - oldPoint[1]; ret.pixelLength = rect.height; ret.pixelStart = rect.y; ret.signal = axis.inverse ? -1 : 1; } return ret; }, polar: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { var axis = axisModel.axis; var ret = {}; var polar = coordSysInfo.model.coordinateSystem; var radiusExtent = polar.getRadiusAxis().getExtent(); var angleExtent = polar.getAngleAxis().getExtent(); oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; newPoint = polar.pointToCoord(newPoint); if (axisModel.mainType === "radiusAxis") { ret.pixel = newPoint[0] - oldPoint[0]; ret.pixelLength = radiusExtent[1] - radiusExtent[0]; ret.pixelStart = radiusExtent[0]; ret.signal = axis.inverse ? 1 : -1; } else { ret.pixel = newPoint[1] - oldPoint[1]; ret.pixelLength = angleExtent[1] - angleExtent[0]; ret.pixelStart = angleExtent[0]; ret.signal = axis.inverse ? -1 : 1; } return ret; }, singleAxis: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { var axis = axisModel.axis; var rect = coordSysInfo.model.coordinateSystem.getRect(); var ret = {}; oldPoint = oldPoint || [0, 0]; if (axis.orient === "horizontal") { ret.pixel = newPoint[0] - oldPoint[0]; ret.pixelLength = rect.width; ret.pixelStart = rect.x; ret.signal = axis.inverse ? 1 : -1; } else { ret.pixel = newPoint[1] - oldPoint[1]; ret.pixelLength = rect.height; ret.pixelStart = rect.y; ret.signal = axis.inverse ? -1 : 1; } return ret; } }; var InsideZoomView$1 = InsideZoomView; function install$8(registers) { installCommon$1(registers); registers.registerComponentModel(InsideZoomModel$1); registers.registerComponentView(InsideZoomView$1); installDataZoomRoamProcessor(registers); } var SliderZoomModel = function(_super) { __extends$1(SliderZoomModel2, _super); function SliderZoomModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SliderZoomModel2.type; return _this; } SliderZoomModel2.type = "dataZoom.slider"; SliderZoomModel2.layoutMode = "box"; SliderZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel$1.defaultOption, { show: true, right: "ph", top: "ph", width: "ph", height: "ph", left: null, bottom: null, borderColor: "#d2dbee", borderRadius: 3, backgroundColor: "rgba(47,69,84,0)", dataBackground: { lineStyle: { color: "#d2dbee", width: 0.5 }, areaStyle: { color: "#d2dbee", opacity: 0.2 } }, selectedDataBackground: { lineStyle: { color: "#8fb0f7", width: 0.5 }, areaStyle: { color: "#8fb0f7", opacity: 0.2 } }, fillerColor: "rgba(135,175,274,0.2)", handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z", handleSize: "100%", handleStyle: { color: "#fff", borderColor: "#ACB8D1" }, moveHandleSize: 7, moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z", moveHandleStyle: { color: "#D2DBEE", opacity: 0.7 }, showDetail: true, showDataShadow: "auto", realtime: true, zoomLock: false, textStyle: { color: "#6E7079" }, brushSelect: true, brushStyle: { color: "rgba(135,175,274,0.15)" }, emphasis: { handleStyle: { borderColor: "#8FB0F7" }, moveHandleStyle: { color: "#8FB0F7" } } }); return SliderZoomModel2; }(DataZoomModel$1); var SliderZoomModel$1 = SliderZoomModel; var Rect = Rect$3; var DEFAULT_LOCATION_EDGE_GAP = 7; var DEFAULT_FRAME_BORDER_WIDTH = 1; var DEFAULT_FILLER_SIZE = 30; var DEFAULT_MOVE_HANDLE_SIZE = 7; var HORIZONTAL = "horizontal"; var VERTICAL = "vertical"; var LABEL_GAP = 5; var SHOW_DATA_SHADOW_SERIES_TYPE = ["line", "bar", "candlestick", "scatter"]; var REALTIME_ANIMATION_CONFIG = { easing: "cubicOut", duration: 100, delay: 0 }; var SliderZoomView = function(_super) { __extends$1(SliderZoomView2, _super); function SliderZoomView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = SliderZoomView2.type; _this._displayables = {}; return _this; } SliderZoomView2.prototype.init = function(ecModel, api) { this.api = api; this._onBrush = bind$2(this._onBrush, this); this._onBrushEnd = bind$2(this._onBrushEnd, this); }; SliderZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) { _super.prototype.render.apply(this, arguments); createOrUpdate(this, "_dispatchZoomAction", dataZoomModel.get("throttle"), "fixRate"); this._orient = dataZoomModel.getOrient(); if (dataZoomModel.get("show") === false) { this.group.removeAll(); return; } if (dataZoomModel.noTarget()) { this._clear(); this.group.removeAll(); return; } if (!payload || payload.type !== "dataZoom" || payload.from !== this.uid) { this._buildView(); } this._updateView(); }; SliderZoomView2.prototype.dispose = function() { this._clear(); _super.prototype.dispose.apply(this, arguments); }; SliderZoomView2.prototype._clear = function() { clear$1(this, "_dispatchZoomAction"); var zr = this.api.getZr(); zr.off("mousemove", this._onBrush); zr.off("mouseup", this._onBrushEnd); }; SliderZoomView2.prototype._buildView = function() { var thisGroup = this.group; thisGroup.removeAll(); this._brushing = false; this._displayables.brushRect = null; this._resetLocation(); this._resetInterval(); var barGroup = this._displayables.sliderGroup = new Group$4(); this._renderBackground(); this._renderHandle(); this._renderDataShadow(); thisGroup.add(barGroup); this._positionGroup(); }; SliderZoomView2.prototype._resetLocation = function() { var dataZoomModel = this.dataZoomModel; var api = this.api; var showMoveHandle = dataZoomModel.get("brushSelect"); var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; var coordRect = this._findCoordRect(); var ecSize = { width: api.getWidth(), height: api.getHeight() }; var positionInfo = this._orient === HORIZONTAL ? { right: ecSize.width - coordRect.x - coordRect.width, top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize, width: coordRect.width, height: DEFAULT_FILLER_SIZE } : { right: DEFAULT_LOCATION_EDGE_GAP, top: coordRect.y, width: DEFAULT_FILLER_SIZE, height: coordRect.height }; var layoutParams = getLayoutParams(dataZoomModel.option); each$g(["right", "top", "width", "height"], function(name) { if (layoutParams[name] === "ph") { layoutParams[name] = positionInfo[name]; } }); var layoutRect = getLayoutRect(layoutParams, ecSize); this._location = { x: layoutRect.x, y: layoutRect.y }; this._size = [layoutRect.width, layoutRect.height]; this._orient === VERTICAL && this._size.reverse(); }; SliderZoomView2.prototype._positionGroup = function() { var thisGroup = this.group; var location2 = this._location; var orient = this._orient; var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel(); var inverse = targetAxisModel && targetAxisModel.get("inverse"); var sliderGroup = this._displayables.sliderGroup; var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; sliderGroup.attr(orient === HORIZONTAL && !inverse ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: 1 } : orient === HORIZONTAL && inverse ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: -1 } : orient === VERTICAL && !inverse ? { scaleY: otherAxisInverse ? -1 : 1, scaleX: 1, rotation: Math.PI / 2 } : { scaleY: otherAxisInverse ? -1 : 1, scaleX: -1, rotation: Math.PI / 2 }); var rect = thisGroup.getBoundingRect([sliderGroup]); thisGroup.x = location2.x - rect.x; thisGroup.y = location2.y - rect.y; thisGroup.markRedraw(); }; SliderZoomView2.prototype._getViewExtent = function() { return [0, this._size[0]]; }; SliderZoomView2.prototype._renderBackground = function() { var dataZoomModel = this.dataZoomModel; var size = this._size; var barGroup = this._displayables.sliderGroup; var brushSelect = dataZoomModel.get("brushSelect"); barGroup.add(new Rect({ silent: true, shape: { x: 0, y: 0, width: size[0], height: size[1] }, style: { fill: dataZoomModel.get("backgroundColor") }, z2: -40 })); var clickPanel = new Rect({ shape: { x: 0, y: 0, width: size[0], height: size[1] }, style: { fill: "transparent" }, z2: 0, onclick: bind$2(this._onClickPanel, this) }); var zr = this.api.getZr(); if (brushSelect) { clickPanel.on("mousedown", this._onBrushStart, this); clickPanel.cursor = "crosshair"; zr.on("mousemove", this._onBrush); zr.on("mouseup", this._onBrushEnd); } else { zr.off("mousemove", this._onBrush); zr.off("mouseup", this._onBrushEnd); } barGroup.add(clickPanel); }; SliderZoomView2.prototype._renderDataShadow = function() { var info = this._dataShadowInfo = this._prepareDataShadowInfo(); this._displayables.dataShadowSegs = []; if (!info) { return; } var size = this._size; var seriesModel = info.series; var data = seriesModel.getRawData(); var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() : info.otherDim; if (otherDim == null) { return; } var otherDataExtent = data.getDataExtent(otherDim); var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3; otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset]; var otherShadowExtent = [0, size[1]]; var thisShadowExtent = [0, size[0]]; var areaPoints = [[size[0], 0], [0, 0]]; var linePoints = []; var step2 = thisShadowExtent[1] / (data.count() - 1); var thisCoord = 0; var stride = Math.round(data.count() / size[0]); var lastIsEmpty; data.each([otherDim], function(value, index) { if (stride > 0 && index % stride) { thisCoord += step2; return; } var isEmpty = value == null || isNaN(value) || value === ""; var otherCoord = isEmpty ? 0 : linearMap$2(value, otherDataExtent, otherShadowExtent, true); if (isEmpty && !lastIsEmpty && index) { areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]); linePoints.push([linePoints[linePoints.length - 1][0], 0]); } else if (!isEmpty && lastIsEmpty) { areaPoints.push([thisCoord, 0]); linePoints.push([thisCoord, 0]); } areaPoints.push([thisCoord, otherCoord]); linePoints.push([thisCoord, otherCoord]); thisCoord += step2; lastIsEmpty = isEmpty; }); var dataZoomModel = this.dataZoomModel; function createDataShadowGroup(isSelectedArea) { var model = dataZoomModel.getModel(isSelectedArea ? "selectedDataBackground" : "dataBackground"); var group2 = new Group$4(); var polygon = new Polygon$1({ shape: { points: areaPoints }, segmentIgnoreThreshold: 1, style: model.getModel("areaStyle").getAreaStyle(), silent: true, z2: -20 }); var polyline = new Polyline$3({ shape: { points: linePoints }, segmentIgnoreThreshold: 1, style: model.getModel("lineStyle").getLineStyle(), silent: true, z2: -19 }); group2.add(polygon); group2.add(polyline); return group2; } for (var i = 0; i < 3; i++) { var group = createDataShadowGroup(i === 1); this._displayables.sliderGroup.add(group); this._displayables.dataShadowSegs.push(group); } }; SliderZoomView2.prototype._prepareDataShadowInfo = function() { var dataZoomModel = this.dataZoomModel; var showDataShadow = dataZoomModel.get("showDataShadow"); if (showDataShadow === false) { return; } var result; var ecModel = this.ecModel; dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels(); each$g(seriesModels, function(seriesModel) { if (result) { return; } if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get("type")) < 0) { return; } var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis; var otherDim = getOtherDim(axisDim); var otherAxisInverse; var coordSys = seriesModel.coordinateSystem; if (otherDim != null && coordSys.getOtherAxis) { otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse; } otherDim = seriesModel.getData().mapDimension(otherDim); result = { thisAxis, series: seriesModel, thisDim: axisDim, otherDim, otherAxisInverse }; }, this); }, this); return result; }; SliderZoomView2.prototype._renderHandle = function() { var thisGroup = this.group; var displayables = this._displayables; var handles = displayables.handles = [null, null]; var handleLabels = displayables.handleLabels = [null, null]; var sliderGroup = this._displayables.sliderGroup; var size = this._size; var dataZoomModel = this.dataZoomModel; var api = this.api; var borderRadius = dataZoomModel.get("borderRadius") || 0; var brushSelect = dataZoomModel.get("brushSelect"); var filler = displayables.filler = new Rect({ silent: brushSelect, style: { fill: dataZoomModel.get("fillerColor") }, textConfig: { position: "inside" } }); sliderGroup.add(filler); sliderGroup.add(new Rect({ silent: true, subPixelOptimize: true, shape: { x: 0, y: 0, width: size[0], height: size[1], r: borderRadius }, style: { stroke: dataZoomModel.get("dataBackgroundColor") || dataZoomModel.get("borderColor"), lineWidth: DEFAULT_FRAME_BORDER_WIDTH, fill: "rgba(0,0,0,0)" } })); each$g([0, 1], function(handleIndex) { var iconStr = dataZoomModel.get("handleIcon"); if (!symbolBuildProxies[iconStr] && iconStr.indexOf("path://") < 0 && iconStr.indexOf("image://") < 0) { iconStr = "path://" + iconStr; } var path = createSymbol$1(iconStr, -1, 0, 2, 2, null, true); path.attr({ cursor: getCursor$1(this._orient), draggable: true, drift: bind$2(this._onDragMove, this, handleIndex), ondragend: bind$2(this._onDragEnd, this), onmouseover: bind$2(this._showDataInfo, this, true), onmouseout: bind$2(this._showDataInfo, this, false), z2: 5 }); var bRect = path.getBoundingRect(); var handleSize = dataZoomModel.get("handleSize"); this._handleHeight = parsePercent$1(handleSize, this._size[1]); this._handleWidth = bRect.width / bRect.height * this._handleHeight; path.setStyle(dataZoomModel.getModel("handleStyle").getItemStyle()); path.style.strokeNoScale = true; path.rectHover = true; path.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); enableHoverEmphasis(path); var handleColor = dataZoomModel.get("handleColor"); if (handleColor != null) { path.style.fill = handleColor; } sliderGroup.add(handles[handleIndex] = path); var textStyleModel = dataZoomModel.getModel("textStyle"); thisGroup.add(handleLabels[handleIndex] = new ZRText$1({ silent: true, invisible: true, style: createTextStyle$1(textStyleModel, { x: 0, y: 0, text: "", verticalAlign: "middle", align: "center", fill: textStyleModel.getTextColor(), font: textStyleModel.getFont() }), z2: 10 })); }, this); var actualMoveZone = filler; if (brushSelect) { var moveHandleHeight = parsePercent$1(dataZoomModel.get("moveHandleSize"), size[1]); var moveHandle_1 = displayables.moveHandle = new Rect$3({ style: dataZoomModel.getModel("moveHandleStyle").getItemStyle(), silent: true, shape: { r: [0, 0, 2, 2], y: size[1] - 0.5, height: moveHandleHeight } }); var iconSize = moveHandleHeight * 0.8; var moveHandleIcon = displayables.moveHandleIcon = createSymbol$1(dataZoomModel.get("moveHandleIcon"), -iconSize / 2, -iconSize / 2, iconSize, iconSize, "#fff", true); moveHandleIcon.silent = true; moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5; moveHandle_1.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "moveHandleStyle"]).getItemStyle(); var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10)); actualMoveZone = displayables.moveZone = new Rect$3({ invisible: true, shape: { y: size[1] - moveZoneExpandSize, height: moveHandleHeight + moveZoneExpandSize } }); actualMoveZone.on("mouseover", function() { api.enterEmphasis(moveHandle_1); }).on("mouseout", function() { api.leaveEmphasis(moveHandle_1); }); sliderGroup.add(moveHandle_1); sliderGroup.add(moveHandleIcon); sliderGroup.add(actualMoveZone); } actualMoveZone.attr({ draggable: true, cursor: getCursor$1(this._orient), drift: bind$2(this._onDragMove, this, "all"), ondragstart: bind$2(this._showDataInfo, this, true), ondragend: bind$2(this._onDragEnd, this), onmouseover: bind$2(this._showDataInfo, this, true), onmouseout: bind$2(this._showDataInfo, this, false) }); }; SliderZoomView2.prototype._resetInterval = function() { var range = this._range = this.dataZoomModel.getPercentRange(); var viewExtent = this._getViewExtent(); this._handleEnds = [linearMap$2(range[0], [0, 100], viewExtent, true), linearMap$2(range[1], [0, 100], viewExtent, true)]; }; SliderZoomView2.prototype._updateInterval = function(handleIndex, delta) { var dataZoomModel = this.dataZoomModel; var handleEnds = this._handleEnds; var viewExtend = this._getViewExtent(); var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); var percentExtent = [0, 100]; sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get("zoomLock") ? "all" : handleIndex, minMaxSpan.minSpan != null ? linearMap$2(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap$2(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null); var lastRange = this._range; var range = this._range = asc$2([linearMap$2(handleEnds[0], viewExtend, percentExtent, true), linearMap$2(handleEnds[1], viewExtend, percentExtent, true)]); return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1]; }; SliderZoomView2.prototype._updateView = function(nonRealtime) { var displaybles = this._displayables; var handleEnds = this._handleEnds; var handleInterval = asc$2(handleEnds.slice()); var size = this._size; each$g([0, 1], function(handleIndex) { var handle = displaybles.handles[handleIndex]; var handleHeight = this._handleHeight; handle.attr({ scaleX: handleHeight / 2, scaleY: handleHeight / 2, x: handleEnds[handleIndex] + (handleIndex ? -1 : 1), y: size[1] / 2 - handleHeight / 2 }); }, this); displaybles.filler.setShape({ x: handleInterval[0], y: 0, width: handleInterval[1] - handleInterval[0], height: size[1] }); var viewExtent = { x: handleInterval[0], width: handleInterval[1] - handleInterval[0] }; if (displaybles.moveHandle) { displaybles.moveHandle.setShape(viewExtent); displaybles.moveZone.setShape(viewExtent); displaybles.moveZone.getBoundingRect(); displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr("x", viewExtent.x + viewExtent.width / 2); } var dataShadowSegs = displaybles.dataShadowSegs; var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]]; for (var i = 0; i < dataShadowSegs.length; i++) { var segGroup = dataShadowSegs[i]; var clipPath = segGroup.getClipPath(); if (!clipPath) { clipPath = new Rect$3(); segGroup.setClipPath(clipPath); } clipPath.setShape({ x: segIntervals[i], y: 0, width: segIntervals[i + 1] - segIntervals[i], height: size[1] }); } this._updateDataInfo(nonRealtime); }; SliderZoomView2.prototype._updateDataInfo = function(nonRealtime) { var dataZoomModel = this.dataZoomModel; var displaybles = this._displayables; var handleLabels = displaybles.handleLabels; var orient = this._orient; var labelTexts = ["", ""]; if (dataZoomModel.get("showDetail")) { var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); if (axisProxy) { var axis = axisProxy.getAxisModel().axis; var range = this._range; var dataInterval = nonRealtime ? axisProxy.calculateDataWindow({ start: range[0], end: range[1] }).valueWindow : axisProxy.getDataValueWindow(); labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)]; } } var orderedHandleEnds = asc$2(this._handleEnds.slice()); setLabel.call(this, 0); setLabel.call(this, 1); function setLabel(handleIndex) { var barTransform = getTransform$1(displaybles.handles[handleIndex].parent, this.group); var direction = transformDirection(handleIndex === 0 ? "right" : "left", barTransform); var offset = this._handleWidth / 2 + LABEL_GAP; var textPoint = applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform); handleLabels[handleIndex].setStyle({ x: textPoint[0], y: textPoint[1], verticalAlign: orient === HORIZONTAL ? "middle" : direction, align: orient === HORIZONTAL ? direction : "center", text: labelTexts[handleIndex] }); } }; SliderZoomView2.prototype._formatLabel = function(value, axis) { var dataZoomModel = this.dataZoomModel; var labelFormatter = dataZoomModel.get("labelFormatter"); var labelPrecision = dataZoomModel.get("labelPrecision"); if (labelPrecision == null || labelPrecision === "auto") { labelPrecision = axis.getPixelPrecision(); } var valueStr = value == null || isNaN(value) ? "" : axis.type === "category" || axis.type === "time" ? axis.scale.getLabel({ value: Math.round(value) }) : value.toFixed(Math.min(labelPrecision, 20)); return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace("{value}", valueStr) : valueStr; }; SliderZoomView2.prototype._showDataInfo = function(showOrHide) { showOrHide = this._dragging || showOrHide; var displayables = this._displayables; var handleLabels = displayables.handleLabels; handleLabels[0].attr("invisible", !showOrHide); handleLabels[1].attr("invisible", !showOrHide); displayables.moveHandle && this.api[showOrHide ? "enterEmphasis" : "leaveEmphasis"](displayables.moveHandle, 1); }; SliderZoomView2.prototype._onDragMove = function(handleIndex, dx, dy, event) { this._dragging = true; stop(event.event); var barTransform = this._displayables.sliderGroup.getLocalTransform(); var vertex = applyTransform([dx, dy], barTransform, true); var changed = this._updateInterval(handleIndex, vertex[0]); var realtime = this.dataZoomModel.get("realtime"); this._updateView(!realtime); changed && realtime && this._dispatchZoomAction(true); }; SliderZoomView2.prototype._onDragEnd = function() { this._dragging = false; this._showDataInfo(false); var realtime = this.dataZoomModel.get("realtime"); !realtime && this._dispatchZoomAction(false); }; SliderZoomView2.prototype._onClickPanel = function(e2) { var size = this._size; var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e2.offsetX, e2.offsetY); if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) { return; } var handleEnds = this._handleEnds; var center2 = (handleEnds[0] + handleEnds[1]) / 2; var changed = this._updateInterval("all", localPoint[0] - center2); this._updateView(); changed && this._dispatchZoomAction(false); }; SliderZoomView2.prototype._onBrushStart = function(e2) { var x = e2.offsetX; var y = e2.offsetY; this._brushStart = new Point$1(x, y); this._brushing = true; this._brushStartTime = +new Date(); }; SliderZoomView2.prototype._onBrushEnd = function(e2) { if (!this._brushing) { return; } var brushRect = this._displayables.brushRect; this._brushing = false; if (!brushRect) { return; } brushRect.attr("ignore", true); var brushShape = brushRect.shape; var brushEndTime = +new Date(); if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) { return; } var viewExtend = this._getViewExtent(); var percentExtent = [0, 100]; this._range = asc$2([linearMap$2(brushShape.x, viewExtend, percentExtent, true), linearMap$2(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]); this._handleEnds = [brushShape.x, brushShape.x + brushShape.width]; this._updateView(); this._dispatchZoomAction(false); }; SliderZoomView2.prototype._onBrush = function(e2) { if (this._brushing) { stop(e2.event); this._updateBrushRect(e2.offsetX, e2.offsetY); } }; SliderZoomView2.prototype._updateBrushRect = function(mouseX, mouseY) { var displayables = this._displayables; var dataZoomModel = this.dataZoomModel; var brushRect = displayables.brushRect; if (!brushRect) { brushRect = displayables.brushRect = new Rect({ silent: true, style: dataZoomModel.getModel("brushStyle").getItemStyle() }); displayables.sliderGroup.add(brushRect); } brushRect.attr("ignore", false); var brushStart = this._brushStart; var sliderGroup = this._displayables.sliderGroup; var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY); var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y); var size = this._size; endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0); brushRect.setShape({ x: startPoint[0], y: 0, width: endPoint[0] - startPoint[0], height: size[1] }); }; SliderZoomView2.prototype._dispatchZoomAction = function(realtime) { var range = this._range; this.api.dispatchAction({ type: "dataZoom", from: this.uid, dataZoomId: this.dataZoomModel.id, animation: realtime ? REALTIME_ANIMATION_CONFIG : null, start: range[0], end: range[1] }); }; SliderZoomView2.prototype._findCoordRect = function() { var rect; var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList; if (!rect && coordSysInfoList.length) { var coordSys = coordSysInfoList[0].model.coordinateSystem; rect = coordSys.getRect && coordSys.getRect(); } if (!rect) { var width = this.api.getWidth(); var height = this.api.getHeight(); rect = { x: width * 0.2, y: height * 0.2, width: width * 0.6, height: height * 0.6 }; } return rect; }; SliderZoomView2.type = "dataZoom.slider"; return SliderZoomView2; }(DataZoomView$1); function getOtherDim(thisDim) { var map2 = { x: "y", y: "x", radius: "angle", angle: "radius" }; return map2[thisDim]; } function getCursor$1(orient) { return orient === "vertical" ? "ns-resize" : "ew-resize"; } var SliderZoomView$1 = SliderZoomView; function install$7(registers) { registers.registerComponentModel(SliderZoomModel$1); registers.registerComponentView(SliderZoomView$1); installCommon$1(registers); } function install$6(registers) { use(install$8); use(install$7); } var visualDefault = { get: function(visualType, key2, isCategory2) { var value = clone$4((defaultOption[visualType] || {})[key2]); return isCategory2 ? isArray$1(value) ? value[value.length - 1] : value : value; } }; var defaultOption = { color: { active: ["#006edd", "#e0ffff"], inactive: ["rgba(0,0,0,0)"] }, colorHue: { active: [0, 360], inactive: [0, 0] }, colorSaturation: { active: [0.3, 1], inactive: [0, 0] }, colorLightness: { active: [0.9, 0.5], inactive: [0, 0] }, colorAlpha: { active: [0.3, 1], inactive: [0, 0] }, opacity: { active: [0.3, 1], inactive: [0, 0] }, symbol: { active: ["circle", "roundRect", "diamond"], inactive: ["none"] }, symbolSize: { active: [10, 50], inactive: [0, 0] } }; var visualDefault$1 = visualDefault; var mapVisual = VisualMapping$1.mapVisual; var eachVisual = VisualMapping$1.eachVisual; var isArray = isArray$1; var each$2 = each$g; var asc = asc$2; var linearMap$1 = linearMap$2; var VisualMapModel = function(_super) { __extends$1(VisualMapModel2, _super); function VisualMapModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = VisualMapModel2.type; _this.stateList = ["inRange", "outOfRange"]; _this.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"]; _this.layoutMode = { type: "box", ignoreSize: true }; _this.dataBound = [-Infinity, Infinity]; _this.targetVisuals = {}; _this.controllerVisuals = {}; return _this; } VisualMapModel2.prototype.init = function(option, parentModel, ecModel) { this.mergeDefaultAndTheme(option, ecModel); }; VisualMapModel2.prototype.optionUpdated = function(newOption, isInit) { var thisOption = this.option; if (!env$1.canvasSupported) { thisOption.realtime = false; } !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys); this.textStyleModel = this.getModel("textStyle"); this.resetItemSize(); this.completeVisualOption(); }; VisualMapModel2.prototype.resetVisual = function(supplementVisualOption) { var stateList = this.stateList; supplementVisualOption = bind$2(supplementVisualOption, this); this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption); this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption); }; VisualMapModel2.prototype.getItemSymbol = function() { return null; }; VisualMapModel2.prototype.getTargetSeriesIndices = function() { var optionSeriesIndex = this.option.seriesIndex; var seriesIndices = []; if (optionSeriesIndex == null || optionSeriesIndex === "all") { this.ecModel.eachSeries(function(seriesModel, index) { seriesIndices.push(index); }); } else { seriesIndices = normalizeToArray(optionSeriesIndex); } return seriesIndices; }; VisualMapModel2.prototype.eachTargetSeries = function(callback, context) { each$g(this.getTargetSeriesIndices(), function(seriesIndex) { var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex); if (seriesModel) { callback.call(context, seriesModel); } }, this); }; VisualMapModel2.prototype.isTargetSeries = function(seriesModel) { var is = false; this.eachTargetSeries(function(model) { model === seriesModel && (is = true); }); return is; }; VisualMapModel2.prototype.formatValueText = function(value, isCategory2, edgeSymbols) { var option = this.option; var precision = option.precision; var dataBound = this.dataBound; var formatter = option.formatter; var isMinMax; edgeSymbols = edgeSymbols || ["<", ">"]; if (isArray$1(value)) { value = value.slice(); isMinMax = true; } var textValue = isCategory2 ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value); if (isString(formatter)) { return formatter.replace("{value}", isMinMax ? textValue[0] : textValue).replace("{value2}", isMinMax ? textValue[1] : textValue); } else if (isFunction(formatter)) { return isMinMax ? formatter(value[0], value[1]) : formatter(value); } if (isMinMax) { if (value[0] === dataBound[0]) { return edgeSymbols[0] + " " + textValue[1]; } else if (value[1] === dataBound[1]) { return edgeSymbols[1] + " " + textValue[0]; } else { return textValue[0] + " - " + textValue[1]; } } else { return textValue; } function toFixed(val) { return val === dataBound[0] ? "min" : val === dataBound[1] ? "max" : (+val).toFixed(Math.min(precision, 20)); } }; VisualMapModel2.prototype.resetExtent = function() { var thisOption = this.option; var extent3 = asc([thisOption.min, thisOption.max]); this._dataExtent = extent3; }; VisualMapModel2.prototype.getDataDimensionIndex = function(data) { var optDim = this.option.dimension; if (optDim != null) { return data.getDimensionIndex(optDim); } var dimNames = data.dimensions; for (var i = dimNames.length - 1; i >= 0; i--) { var dimName = dimNames[i]; var dimInfo = data.getDimensionInfo(dimName); if (!dimInfo.isCalculationCoord) { return dimInfo.storeDimIndex; } } }; VisualMapModel2.prototype.getExtent = function() { return this._dataExtent.slice(); }; VisualMapModel2.prototype.completeVisualOption = function() { var ecModel = this.ecModel; var thisOption = this.option; var base2 = { inRange: thisOption.inRange, outOfRange: thisOption.outOfRange }; var target = thisOption.target || (thisOption.target = {}); var controller = thisOption.controller || (thisOption.controller = {}); merge(target, base2); merge(controller, base2); var isCategory2 = this.isCategory(); completeSingle.call(this, target); completeSingle.call(this, controller); completeInactive.call(this, target, "inRange", "outOfRange"); completeController.call(this, controller); function completeSingle(base3) { if (isArray(thisOption.color) && !base3.inRange) { base3.inRange = { color: thisOption.color.slice().reverse() }; } base3.inRange = base3.inRange || { color: ecModel.get("gradientColor") }; } function completeInactive(base3, stateExist, stateAbsent) { var optExist = base3[stateExist]; var optAbsent = base3[stateAbsent]; if (optExist && !optAbsent) { optAbsent = base3[stateAbsent] = {}; each$2(optExist, function(visualData, visualType) { if (!VisualMapping$1.isValidType(visualType)) { return; } var defa = visualDefault$1.get(visualType, "inactive", isCategory2); if (defa != null) { optAbsent[visualType] = defa; if (visualType === "color" && !optAbsent.hasOwnProperty("opacity") && !optAbsent.hasOwnProperty("colorAlpha")) { optAbsent.opacity = [0, 0]; } } }); } } function completeController(controller2) { var symbolExists = (controller2.inRange || {}).symbol || (controller2.outOfRange || {}).symbol; var symbolSizeExists = (controller2.inRange || {}).symbolSize || (controller2.outOfRange || {}).symbolSize; var inactiveColor = this.get("inactiveColor"); var itemSymbol = this.getItemSymbol(); var defaultSymbol = itemSymbol || "roundRect"; each$2(this.stateList, function(state) { var itemSize = this.itemSize; var visuals = controller2[state]; if (!visuals) { visuals = controller2[state] = { color: isCategory2 ? inactiveColor : [inactiveColor] }; } if (visuals.symbol == null) { visuals.symbol = symbolExists && clone$4(symbolExists) || (isCategory2 ? defaultSymbol : [defaultSymbol]); } if (visuals.symbolSize == null) { visuals.symbolSize = symbolSizeExists && clone$4(symbolSizeExists) || (isCategory2 ? itemSize[0] : [itemSize[0], itemSize[0]]); } visuals.symbol = mapVisual(visuals.symbol, function(symbol) { return symbol === "none" ? defaultSymbol : symbol; }); var symbolSize = visuals.symbolSize; if (symbolSize != null) { var max_1 = -Infinity; eachVisual(symbolSize, function(value) { value > max_1 && (max_1 = value); }); visuals.symbolSize = mapVisual(symbolSize, function(value) { return linearMap$1(value, [0, max_1], [0, itemSize[0]], true); }); } }, this); } }; VisualMapModel2.prototype.resetItemSize = function() { this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]; }; VisualMapModel2.prototype.isCategory = function() { return !!this.option.categories; }; VisualMapModel2.prototype.setSelected = function(selected) { }; VisualMapModel2.prototype.getSelected = function() { return null; }; VisualMapModel2.prototype.getValueState = function(value) { return null; }; VisualMapModel2.prototype.getVisualMeta = function(getColorVisual2) { return null; }; VisualMapModel2.type = "visualMap"; VisualMapModel2.dependencies = ["series"]; VisualMapModel2.defaultOption = { show: true, zlevel: 0, z: 4, seriesIndex: "all", min: 0, max: 200, left: 0, right: null, top: null, bottom: 0, itemWidth: null, itemHeight: null, inverse: false, orient: "vertical", backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", contentColor: "#5793f3", inactiveColor: "#aaa", borderWidth: 0, padding: 5, textGap: 10, precision: 0, textStyle: { color: "#333" } }; return VisualMapModel2; }(ComponentModel$1); var VisualMapModel$1 = VisualMapModel; var DEFAULT_BAR_BOUND = [20, 140]; var ContinuousModel = function(_super) { __extends$1(ContinuousModel2, _super); function ContinuousModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ContinuousModel2.type; return _this; } ContinuousModel2.prototype.optionUpdated = function(newOption, isInit) { _super.prototype.optionUpdated.apply(this, arguments); this.resetExtent(); this.resetVisual(function(mappingOption) { mappingOption.mappingMethod = "linear"; mappingOption.dataExtent = this.getExtent(); }); this._resetRange(); }; ContinuousModel2.prototype.resetItemSize = function() { _super.prototype.resetItemSize.apply(this, arguments); var itemSize = this.itemSize; (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]); (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]); }; ContinuousModel2.prototype._resetRange = function() { var dataExtent = this.getExtent(); var range = this.option.range; if (!range || range.auto) { dataExtent.auto = 1; this.option.range = dataExtent; } else if (isArray$1(range)) { if (range[0] > range[1]) { range.reverse(); } range[0] = Math.max(range[0], dataExtent[0]); range[1] = Math.min(range[1], dataExtent[1]); } }; ContinuousModel2.prototype.completeVisualOption = function() { _super.prototype.completeVisualOption.apply(this, arguments); each$g(this.stateList, function(state) { var symbolSize = this.option.controller[state].symbolSize; if (symbolSize && symbolSize[0] !== symbolSize[1]) { symbolSize[0] = symbolSize[1] / 3; } }, this); }; ContinuousModel2.prototype.setSelected = function(selected) { this.option.range = selected.slice(); this._resetRange(); }; ContinuousModel2.prototype.getSelected = function() { var dataExtent = this.getExtent(); var dataInterval = asc$2((this.get("range") || []).slice()); dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]); dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]); dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]); dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]); return dataInterval; }; ContinuousModel2.prototype.getValueState = function(value) { var range = this.option.range; var dataExtent = this.getExtent(); return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? "inRange" : "outOfRange"; }; ContinuousModel2.prototype.findTargetDataIndices = function(range) { var result = []; this.eachTargetSeries(function(seriesModel) { var dataIndices = []; var data = seriesModel.getData(); data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { range[0] <= value && value <= range[1] && dataIndices.push(dataIndex); }, this); result.push({ seriesId: seriesModel.id, dataIndex: dataIndices }); }, this); return result; }; ContinuousModel2.prototype.getVisualMeta = function(getColorVisual2) { var oVals = getColorStopValues(this, "outOfRange", this.getExtent()); var iVals = getColorStopValues(this, "inRange", this.option.range.slice()); var stops = []; function setStop(value, valueState) { stops.push({ value, color: getColorVisual2(value, valueState) }); } var iIdx = 0; var oIdx = 0; var iLen = iVals.length; var oLen = oVals.length; for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) { if (oVals[oIdx] < iVals[iIdx]) { setStop(oVals[oIdx], "outOfRange"); } } for (var first = 1; iIdx < iLen; iIdx++, first = 0) { first && stops.length && setStop(iVals[iIdx], "outOfRange"); setStop(iVals[iIdx], "inRange"); } for (var first = 1; oIdx < oLen; oIdx++) { if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) { if (first) { stops.length && setStop(stops[stops.length - 1].value, "outOfRange"); first = 0; } setStop(oVals[oIdx], "outOfRange"); } } var stopsLen = stops.length; return { stops, outerColors: [stopsLen ? stops[0].color : "transparent", stopsLen ? stops[stopsLen - 1].color : "transparent"] }; }; ContinuousModel2.type = "visualMap.continuous"; ContinuousModel2.defaultOption = inheritDefaultOption(VisualMapModel$1.defaultOption, { align: "auto", calculable: false, hoverLink: true, realtime: true, handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z", handleSize: "120%", handleStyle: { borderColor: "#fff", borderWidth: 1 }, indicatorIcon: "circle", indicatorSize: "50%", indicatorStyle: { borderColor: "#fff", borderWidth: 2, shadowBlur: 2, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: "rgba(0,0,0,0.2)" } }); return ContinuousModel2; }(VisualMapModel$1); function getColorStopValues(visualMapModel, valueState, dataExtent) { if (dataExtent[0] === dataExtent[1]) { return dataExtent.slice(); } var count2 = 200; var step2 = (dataExtent[1] - dataExtent[0]) / count2; var value = dataExtent[0]; var stopValues = []; for (var i = 0; i <= count2 && value < dataExtent[1]; i++) { stopValues.push(value); value += step2; } stopValues.push(dataExtent[1]); return stopValues; } var ContinuousModel$1 = ContinuousModel; var VisualMapView = function(_super) { __extends$1(VisualMapView2, _super); function VisualMapView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = VisualMapView2.type; _this.autoPositionValues = { left: 1, right: 1, top: 1, bottom: 1 }; return _this; } VisualMapView2.prototype.init = function(ecModel, api) { this.ecModel = ecModel; this.api = api; }; VisualMapView2.prototype.render = function(visualMapModel, ecModel, api, payload) { this.visualMapModel = visualMapModel; if (visualMapModel.get("show") === false) { this.group.removeAll(); return; } this.doRender(visualMapModel, ecModel, api, payload); }; VisualMapView2.prototype.renderBackground = function(group) { var visualMapModel = this.visualMapModel; var padding = normalizeCssArray(visualMapModel.get("padding") || 0); var rect = group.getBoundingRect(); group.add(new Rect$3({ z2: -1, silent: true, shape: { x: rect.x - padding[3], y: rect.y - padding[0], width: rect.width + padding[3] + padding[1], height: rect.height + padding[0] + padding[2] }, style: { fill: visualMapModel.get("backgroundColor"), stroke: visualMapModel.get("borderColor"), lineWidth: visualMapModel.get("borderWidth") } })); }; VisualMapView2.prototype.getControllerVisual = function(targetValue, visualCluster, opts) { opts = opts || {}; var forceState = opts.forceState; var visualMapModel = this.visualMapModel; var visualObj = {}; if (visualCluster === "color") { var defaultColor = visualMapModel.get("contentColor"); visualObj.color = defaultColor; } function getter(key2) { return visualObj[key2]; } function setter(key2, value) { visualObj[key2] = value; } var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)]; var visualTypes = VisualMapping$1.prepareVisualTypes(mappings); each$g(visualTypes, function(type) { var visualMapping = mappings[type]; if (opts.convertOpacityToAlpha && type === "opacity") { type = "colorAlpha"; visualMapping = mappings.__alphaForOpacity; } if (VisualMapping$1.dependsOn(type, visualCluster)) { visualMapping && visualMapping.applyVisual(targetValue, getter, setter); } }); return visualObj[visualCluster]; }; VisualMapView2.prototype.positionGroup = function(group) { var model = this.visualMapModel; var api = this.api; positionElement(group, model.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() }); }; VisualMapView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) { }; VisualMapView2.type = "visualMap"; return VisualMapView2; }(ComponentView$1); var VisualMapView$1 = VisualMapView; var paramsSet = [["left", "right", "width"], ["top", "bottom", "height"]]; function getItemAlign(visualMapModel, api, itemSize) { var modelOption = visualMapModel.option; var itemAlign = modelOption.align; if (itemAlign != null && itemAlign !== "auto") { return itemAlign; } var ecSize = { width: api.getWidth(), height: api.getHeight() }; var realIndex = modelOption.orient === "horizontal" ? 1 : 0; var reals = paramsSet[realIndex]; var fakeValue = [0, null, 10]; var layoutInput = {}; for (var i = 0; i < 3; i++) { layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i]; layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]]; } var rParam = [["x", "width", 3], ["y", "height", 0]][realIndex]; var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding); return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1]; } function makeHighDownBatch(batch, visualMapModel) { each$g(batch || [], function(batchItem) { if (batchItem.dataIndex != null) { batchItem.dataIndexInside = batchItem.dataIndex; batchItem.dataIndex = null; } batchItem.highlightKey = "visualMap" + (visualMapModel ? visualMapModel.componentIndex : ""); }); return batch; } var linearMap = linearMap$2; var each$1 = each$g; var mathMin = Math.min; var mathMax = Math.max; var HOVER_LINK_SIZE = 12; var HOVER_LINK_OUT = 6; var ContinuousView = function(_super) { __extends$1(ContinuousView2, _super); function ContinuousView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = ContinuousView2.type; _this._shapes = {}; _this._dataInterval = []; _this._handleEnds = []; _this._hoverLinkDataIndices = []; return _this; } ContinuousView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) { this._api = api; if (!payload || payload.type !== "selectDataRange" || payload.from !== this.uid) { this._buildView(); } }; ContinuousView2.prototype._buildView = function() { this.group.removeAll(); var visualMapModel = this.visualMapModel; var thisGroup = this.group; this._orient = visualMapModel.get("orient"); this._useHandle = visualMapModel.get("calculable"); this._resetInterval(); this._renderBar(thisGroup); var dataRangeText = visualMapModel.get("text"); this._renderEndsText(thisGroup, dataRangeText, 0); this._renderEndsText(thisGroup, dataRangeText, 1); this._updateView(true); this.renderBackground(thisGroup); this._updateView(); this._enableHoverLinkToSeries(); this._enableHoverLinkFromSeries(); this.positionGroup(thisGroup); }; ContinuousView2.prototype._renderEndsText = function(group, dataRangeText, endsIndex) { if (!dataRangeText) { return; } var text = dataRangeText[1 - endsIndex]; text = text != null ? text + "" : ""; var visualMapModel = this.visualMapModel; var textGap = visualMapModel.get("textGap"); var itemSize = visualMapModel.itemSize; var barGroup = this._shapes.mainGroup; var position2 = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup); var align = this._applyTransform(endsIndex === 0 ? "bottom" : "top", barGroup); var orient = this._orient; var textStyleModel = this.visualMapModel.textStyleModel; this.group.add(new ZRText$1({ style: { x: position2[0], y: position2[1], verticalAlign: orient === "horizontal" ? "middle" : align, align: orient === "horizontal" ? align : "center", text, font: textStyleModel.getFont(), fill: textStyleModel.getTextColor() } })); }; ContinuousView2.prototype._renderBar = function(targetGroup) { var visualMapModel = this.visualMapModel; var shapes = this._shapes; var itemSize = visualMapModel.itemSize; var orient = this._orient; var useHandle = this._useHandle; var itemAlign = getItemAlign(visualMapModel, this.api, itemSize); var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign); var gradientBarGroup = new Group$4(); mainGroup.add(gradientBarGroup); gradientBarGroup.add(shapes.outOfRange = createPolygon()); gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, bind$2(this._dragHandle, this, "all", false), bind$2(this._dragHandle, this, "all", true))); gradientBarGroup.setClipPath(new Rect$3({ shape: { x: 0, y: 0, width: itemSize[0], height: itemSize[1], r: 3 } })); var textRect = visualMapModel.textStyleModel.getTextRect("\u56FD"); var textSize = mathMax(textRect.width, textRect.height); if (useHandle) { shapes.handleThumbs = []; shapes.handleLabels = []; shapes.handleLabelPoints = []; this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient); this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient); } this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient); targetGroup.add(mainGroup); }; ContinuousView2.prototype._createHandle = function(visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) { var onDrift = bind$2(this._dragHandle, this, handleIndex, false); var onDragEnd = bind$2(this._dragHandle, this, handleIndex, true); var handleSize = parsePercent$2(visualMapModel.get("handleSize"), itemSize[0]); var handleThumb = createSymbol$1(visualMapModel.get("handleIcon"), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true); var cursor = getCursor(this._orient); handleThumb.attr({ cursor, draggable: true, drift: onDrift, ondragend: onDragEnd, onmousemove: function(e2) { stop(e2.event); } }); handleThumb.x = itemSize[0] / 2; handleThumb.useStyle(visualMapModel.getModel("handleStyle").getItemStyle()); handleThumb.setStyle({ strokeNoScale: true, strokeFirst: true }); handleThumb.style.lineWidth *= 2; handleThumb.ensureState("emphasis").style = visualMapModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); setAsHighDownDispatcher(handleThumb, true); mainGroup.add(handleThumb); var textStyleModel = this.visualMapModel.textStyleModel; var handleLabel = new ZRText$1({ cursor, draggable: true, drift: onDrift, onmousemove: function(e2) { stop(e2.event); }, ondragend: onDragEnd, style: { x: 0, y: 0, text: "", font: textStyleModel.getFont(), fill: textStyleModel.getTextColor() } }); handleLabel.ensureState("blur").style = { opacity: 0.1 }; handleLabel.stateTransition = { duration: 200 }; this.group.add(handleLabel); var handleLabelPoint = [handleSize, 0]; var shapes = this._shapes; shapes.handleThumbs[handleIndex] = handleThumb; shapes.handleLabelPoints[handleIndex] = handleLabelPoint; shapes.handleLabels[handleIndex] = handleLabel; }; ContinuousView2.prototype._createIndicator = function(visualMapModel, mainGroup, itemSize, textSize, orient) { var scale2 = parsePercent$2(visualMapModel.get("indicatorSize"), itemSize[0]); var indicator = createSymbol$1(visualMapModel.get("indicatorIcon"), -scale2 / 2, -scale2 / 2, scale2, scale2, null, true); indicator.attr({ cursor: "move", invisible: true, silent: true, x: itemSize[0] / 2 }); var indicatorStyle = visualMapModel.getModel("indicatorStyle").getItemStyle(); if (indicator instanceof ZRImage$1) { var pathStyle = indicator.style; indicator.useStyle(extend({ image: pathStyle.image, x: pathStyle.x, y: pathStyle.y, width: pathStyle.width, height: pathStyle.height }, indicatorStyle)); } else { indicator.useStyle(indicatorStyle); } mainGroup.add(indicator); var textStyleModel = this.visualMapModel.textStyleModel; var indicatorLabel = new ZRText$1({ silent: true, invisible: true, style: { x: 0, y: 0, text: "", font: textStyleModel.getFont(), fill: textStyleModel.getTextColor() } }); this.group.add(indicatorLabel); var indicatorLabelPoint = [(orient === "horizontal" ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0]; var shapes = this._shapes; shapes.indicator = indicator; shapes.indicatorLabel = indicatorLabel; shapes.indicatorLabelPoint = indicatorLabelPoint; this._firstShowIndicator = true; }; ContinuousView2.prototype._dragHandle = function(handleIndex, isEnd, dx, dy) { if (!this._useHandle) { return; } this._dragging = !isEnd; if (!isEnd) { var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true); this._updateInterval(handleIndex, vertex[1]); this._hideIndicator(); this._updateView(); } if (isEnd === !this.visualMapModel.get("realtime")) { this.api.dispatchAction({ type: "selectDataRange", from: this.uid, visualMapId: this.visualMapModel.id, selected: this._dataInterval.slice() }); } if (isEnd) { !this._hovering && this._clearHoverLinkToSeries(); } else if (useHoverLinkOnHandle(this.visualMapModel)) { this._doHoverLinkToSeries(this._handleEnds[handleIndex], false); } }; ContinuousView2.prototype._resetInterval = function() { var visualMapModel = this.visualMapModel; var dataInterval = this._dataInterval = visualMapModel.getSelected(); var dataExtent = visualMapModel.getExtent(); var sizeExtent = [0, visualMapModel.itemSize[1]]; this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)]; }; ContinuousView2.prototype._updateInterval = function(handleIndex, delta) { delta = delta || 0; var visualMapModel = this.visualMapModel; var handleEnds = this._handleEnds; var sizeExtent = [0, visualMapModel.itemSize[1]]; sliderMove(delta, handleEnds, sizeExtent, handleIndex, 0); var dataExtent = visualMapModel.getExtent(); this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)]; }; ContinuousView2.prototype._updateView = function(forSketch) { var visualMapModel = this.visualMapModel; var dataExtent = visualMapModel.getExtent(); var shapes = this._shapes; var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]; var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds; var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, "inRange"); var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, "outOfRange"); shapes.inRange.setStyle({ fill: visualInRange.barColor }).setShape("points", visualInRange.barPoints); shapes.outOfRange.setStyle({ fill: visualOutOfRange.barColor }).setShape("points", visualOutOfRange.barPoints); this._updateHandle(inRangeHandleEnds, visualInRange); }; ContinuousView2.prototype._createBarVisual = function(dataInterval, dataExtent, handleEnds, forceState) { var opts = { forceState, convertOpacityToAlpha: true }; var colorStops = this._makeColorGradient(dataInterval, opts); var symbolSizes = [this.getControllerVisual(dataInterval[0], "symbolSize", opts), this.getControllerVisual(dataInterval[1], "symbolSize", opts)]; var barPoints = this._createBarPoints(handleEnds, symbolSizes); return { barColor: new LinearGradient$1(0, 0, 0, 1, colorStops), barPoints, handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color] }; }; ContinuousView2.prototype._makeColorGradient = function(dataInterval, opts) { var sampleNumber = 100; var colorStops = []; var step2 = (dataInterval[1] - dataInterval[0]) / sampleNumber; colorStops.push({ color: this.getControllerVisual(dataInterval[0], "color", opts), offset: 0 }); for (var i = 1; i < sampleNumber; i++) { var currValue = dataInterval[0] + step2 * i; if (currValue > dataInterval[1]) { break; } colorStops.push({ color: this.getControllerVisual(currValue, "color", opts), offset: i / sampleNumber }); } colorStops.push({ color: this.getControllerVisual(dataInterval[1], "color", opts), offset: 1 }); return colorStops; }; ContinuousView2.prototype._createBarPoints = function(handleEnds, symbolSizes) { var itemSize = this.visualMapModel.itemSize; return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]]; }; ContinuousView2.prototype._createBarGroup = function(itemAlign) { var orient = this._orient; var inverse = this.visualMapModel.get("inverse"); return new Group$4(orient === "horizontal" && !inverse ? { scaleX: itemAlign === "bottom" ? 1 : -1, rotation: Math.PI / 2 } : orient === "horizontal" && inverse ? { scaleX: itemAlign === "bottom" ? -1 : 1, rotation: -Math.PI / 2 } : orient === "vertical" && !inverse ? { scaleX: itemAlign === "left" ? 1 : -1, scaleY: -1 } : { scaleX: itemAlign === "left" ? 1 : -1 }); }; ContinuousView2.prototype._updateHandle = function(handleEnds, visualInRange) { if (!this._useHandle) { return; } var shapes = this._shapes; var visualMapModel = this.visualMapModel; var handleThumbs = shapes.handleThumbs; var handleLabels = shapes.handleLabels; var itemSize = visualMapModel.itemSize; var dataExtent = visualMapModel.getExtent(); each$1([0, 1], function(handleIndex) { var handleThumb = handleThumbs[handleIndex]; handleThumb.setStyle("fill", visualInRange.handlesColor[handleIndex]); handleThumb.y = handleEnds[handleIndex]; var val = linearMap(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true); var symbolSize = this.getControllerVisual(val, "symbolSize"); handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0]; handleThumb.x = itemSize[0] - symbolSize / 2; var textPoint = applyTransform(shapes.handleLabelPoints[handleIndex], getTransform$1(handleThumb, this.group)); handleLabels[handleIndex].setStyle({ x: textPoint[0], y: textPoint[1], text: visualMapModel.formatValueText(this._dataInterval[handleIndex]), verticalAlign: "middle", align: this._orient === "vertical" ? this._applyTransform("left", shapes.mainGroup) : "center" }); }, this); }; ContinuousView2.prototype._showIndicator = function(cursorValue, textValue, rangeSymbol, halfHoverLinkSize) { var visualMapModel = this.visualMapModel; var dataExtent = visualMapModel.getExtent(); var itemSize = visualMapModel.itemSize; var sizeExtent = [0, itemSize[1]]; var shapes = this._shapes; var indicator = shapes.indicator; if (!indicator) { return; } indicator.attr("invisible", false); var opts = { convertOpacityToAlpha: true }; var color2 = this.getControllerVisual(cursorValue, "color", opts); var symbolSize = this.getControllerVisual(cursorValue, "symbolSize"); var y = linearMap(cursorValue, dataExtent, sizeExtent, true); var x = itemSize[0] - symbolSize / 2; var oldIndicatorPos = { x: indicator.x, y: indicator.y }; indicator.y = y; indicator.x = x; var textPoint = applyTransform(shapes.indicatorLabelPoint, getTransform$1(indicator, this.group)); var indicatorLabel = shapes.indicatorLabel; indicatorLabel.attr("invisible", false); var align = this._applyTransform("left", shapes.mainGroup); var orient = this._orient; var isHorizontal = orient === "horizontal"; indicatorLabel.setStyle({ text: (rangeSymbol ? rangeSymbol : "") + visualMapModel.formatValueText(textValue), verticalAlign: isHorizontal ? align : "middle", align: isHorizontal ? "center" : align }); var indicatorNewProps = { x, y, style: { fill: color2 } }; var labelNewProps = { style: { x: textPoint[0], y: textPoint[1] } }; if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { var animationCfg = { duration: 100, easing: "cubicInOut", additive: true }; indicator.x = oldIndicatorPos.x; indicator.y = oldIndicatorPos.y; indicator.animateTo(indicatorNewProps, animationCfg); indicatorLabel.animateTo(labelNewProps, animationCfg); } else { indicator.attr(indicatorNewProps); indicatorLabel.attr(labelNewProps); } this._firstShowIndicator = false; var handleLabels = this._shapes.handleLabels; if (handleLabels) { for (var i = 0; i < handleLabels.length; i++) { this._api.enterBlur(handleLabels[i]); } } }; ContinuousView2.prototype._enableHoverLinkToSeries = function() { var self2 = this; this._shapes.mainGroup.on("mousemove", function(e2) { self2._hovering = true; if (!self2._dragging) { var itemSize = self2.visualMapModel.itemSize; var pos = self2._applyTransform([e2.offsetX, e2.offsetY], self2._shapes.mainGroup, true, true); pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]); self2._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]); } }).on("mouseout", function() { self2._hovering = false; !self2._dragging && self2._clearHoverLinkToSeries(); }); }; ContinuousView2.prototype._enableHoverLinkFromSeries = function() { var zr = this.api.getZr(); if (this.visualMapModel.option.hoverLink) { zr.on("mouseover", this._hoverLinkFromSeriesMouseOver, this); zr.on("mouseout", this._hideIndicator, this); } else { this._clearHoverLinkFromSeries(); } }; ContinuousView2.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) { var visualMapModel = this.visualMapModel; var itemSize = visualMapModel.itemSize; if (!visualMapModel.option.hoverLink) { return; } var sizeExtent = [0, itemSize[1]]; var dataExtent = visualMapModel.getExtent(); cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]); var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent); var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize]; var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true); var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity); hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); if (hoverOnBar) { if (valueRange[0] === -Infinity) { this._showIndicator(cursorValue, valueRange[1], "< ", halfHoverLinkSize); } else if (valueRange[1] === Infinity) { this._showIndicator(cursorValue, valueRange[0], "> ", halfHoverLinkSize); } else { this._showIndicator(cursorValue, cursorValue, "\u2248 ", halfHoverLinkSize); } } var oldBatch = this._hoverLinkDataIndices; var newBatch = []; if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) { newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange); } var resultBatches = compressBatches(oldBatch, newBatch); this._dispatchHighDown("downplay", makeHighDownBatch(resultBatches[0], visualMapModel)); this._dispatchHighDown("highlight", makeHighDownBatch(resultBatches[1], visualMapModel)); }; ContinuousView2.prototype._hoverLinkFromSeriesMouseOver = function(e2) { var el = e2.target; var visualMapModel = this.visualMapModel; if (!el || getECData(el).dataIndex == null) { return; } var ecData = getECData(el); var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex); if (!visualMapModel.isTargetSeries(dataModel)) { return; } var data = dataModel.getData(ecData.dataType); var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex); if (!isNaN(value)) { this._showIndicator(value, value); } }; ContinuousView2.prototype._hideIndicator = function() { var shapes = this._shapes; shapes.indicator && shapes.indicator.attr("invisible", true); shapes.indicatorLabel && shapes.indicatorLabel.attr("invisible", true); var handleLabels = this._shapes.handleLabels; if (handleLabels) { for (var i = 0; i < handleLabels.length; i++) { this._api.leaveBlur(handleLabels[i]); } } }; ContinuousView2.prototype._clearHoverLinkToSeries = function() { this._hideIndicator(); var indices = this._hoverLinkDataIndices; this._dispatchHighDown("downplay", makeHighDownBatch(indices, this.visualMapModel)); indices.length = 0; }; ContinuousView2.prototype._clearHoverLinkFromSeries = function() { this._hideIndicator(); var zr = this.api.getZr(); zr.off("mouseover", this._hoverLinkFromSeriesMouseOver); zr.off("mouseout", this._hideIndicator); }; ContinuousView2.prototype._applyTransform = function(vertex, element, inverse, global) { var transform2 = getTransform$1(element, global ? null : this.group); return isArray$1(vertex) ? applyTransform(vertex, transform2, inverse) : transformDirection(vertex, transform2, inverse); }; ContinuousView2.prototype._dispatchHighDown = function(type, batch) { batch && batch.length && this.api.dispatchAction({ type, batch }); }; ContinuousView2.prototype.dispose = function() { this._clearHoverLinkFromSeries(); this._clearHoverLinkToSeries(); }; ContinuousView2.prototype.remove = function() { this._clearHoverLinkFromSeries(); this._clearHoverLinkToSeries(); }; ContinuousView2.type = "visualMap.continuous"; return ContinuousView2; }(VisualMapView$1); function createPolygon(points2, cursor, onDrift, onDragEnd) { return new Polygon$1({ shape: { points: points2 }, draggable: !!onDrift, cursor, drift: onDrift, onmousemove: function(e2) { stop(e2.event); }, ondragend: onDragEnd }); } function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) { var halfHoverLinkSize = HOVER_LINK_SIZE / 2; var hoverLinkDataSize = visualMapModel.get("hoverLinkDataSize"); if (hoverLinkDataSize) { halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2; } return halfHoverLinkSize; } function useHoverLinkOnHandle(visualMapModel) { var hoverLinkOnHandle = visualMapModel.get("hoverLinkOnHandle"); return !!(hoverLinkOnHandle == null ? visualMapModel.get("realtime") : hoverLinkOnHandle); } function getCursor(orient) { return orient === "vertical" ? "ns-resize" : "ew-resize"; } var ContinuousView$1 = ContinuousView; var visualMapActionInfo = { type: "selectDataRange", event: "dataRangeSelected", update: "update" }; var visualMapActionHander = function(payload, ecModel) { ecModel.eachComponent({ mainType: "visualMap", query: payload }, function(model) { model.setSelected(payload.selected); }); }; var visualMapEncodingHandlers = [ { createOnAllSeries: true, reset: function(seriesModel, ecModel) { var resetDefines = []; ecModel.eachComponent("visualMap", function(visualMapModel) { var pipelineContext = seriesModel.pipelineContext; if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) { return; } resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind$2(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData()))); }); return resetDefines; } }, { createOnAllSeries: true, reset: function(seriesModel, ecModel) { var data = seriesModel.getData(); var visualMetaList = []; ecModel.eachComponent("visualMap", function(visualMapModel) { if (visualMapModel.isTargetSeries(seriesModel)) { var visualMeta = visualMapModel.getVisualMeta(bind$2(getColorVisual, null, seriesModel, visualMapModel)) || { stops: [], outerColors: [] }; var dimIdx = visualMapModel.getDataDimensionIndex(data); if (dimIdx >= 0) { visualMeta.dimension = dimIdx; visualMetaList.push(visualMeta); } } }); seriesModel.getData().setVisual("visualMeta", visualMetaList); } } ]; function getColorVisual(seriesModel, visualMapModel, value, valueState) { var mappings = visualMapModel.targetVisuals[valueState]; var visualTypes = VisualMapping$1.prepareVisualTypes(mappings); var resultVisual = { color: getVisualFromData(seriesModel.getData(), "color") }; for (var i = 0, len2 = visualTypes.length; i < len2; i++) { var type = visualTypes[i]; var mapping = mappings[type === "opacity" ? "__alphaForOpacity" : type]; mapping && mapping.applyVisual(value, getVisual, setVisual); } return resultVisual.color; function getVisual(key2) { return resultVisual[key2]; } function setVisual(key2, value2) { resultVisual[key2] = value2; } } var each = each$g; function visualMapPreprocessor(option) { var visualMap = option && option.visualMap; if (!isArray$1(visualMap)) { visualMap = visualMap ? [visualMap] : []; } each(visualMap, function(opt) { if (!opt) { return; } if (has(opt, "splitList") && !has(opt, "pieces")) { opt.pieces = opt.splitList; delete opt.splitList; } var pieces = opt.pieces; if (pieces && isArray$1(pieces)) { each(pieces, function(piece) { if (isObject$3(piece)) { if (has(piece, "start") && !has(piece, "min")) { piece.min = piece.start; } if (has(piece, "end") && !has(piece, "max")) { piece.max = piece.end; } } }); } }); } function has(obj, name) { return obj && obj.hasOwnProperty && obj.hasOwnProperty(name); } var installed = false; function installCommon(registers) { if (installed) { return; } installed = true; registers.registerSubTypeDefaulter("visualMap", function(option) { return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? "continuous" : "piecewise"; }); registers.registerAction(visualMapActionInfo, visualMapActionHander); each$g(visualMapEncodingHandlers, function(handler) { registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler); }); registers.registerPreprocessor(visualMapPreprocessor); } function install$5(registers) { registers.registerComponentModel(ContinuousModel$1); registers.registerComponentView(ContinuousView$1); installCommon(registers); } var PiecewiseModel = function(_super) { __extends$1(PiecewiseModel2, _super); function PiecewiseModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PiecewiseModel2.type; _this._pieceList = []; return _this; } PiecewiseModel2.prototype.optionUpdated = function(newOption, isInit) { _super.prototype.optionUpdated.apply(this, arguments); this.resetExtent(); var mode = this._mode = this._determineMode(); this._pieceList = []; resetMethods[this._mode].call(this, this._pieceList); this._resetSelected(newOption, isInit); var categories = this.option.categories; this.resetVisual(function(mappingOption, state) { if (mode === "categories") { mappingOption.mappingMethod = "category"; mappingOption.categories = clone$4(categories); } else { mappingOption.dataExtent = this.getExtent(); mappingOption.mappingMethod = "piecewise"; mappingOption.pieceList = map$1(this._pieceList, function(piece) { piece = clone$4(piece); if (state !== "inRange") { piece.visual = null; } return piece; }); } }); }; PiecewiseModel2.prototype.completeVisualOption = function() { var option = this.option; var visualTypesInPieces = {}; var visualTypes = VisualMapping$1.listVisualTypes(); var isCategory2 = this.isCategory(); each$g(option.pieces, function(piece) { each$g(visualTypes, function(visualType) { if (piece.hasOwnProperty(visualType)) { visualTypesInPieces[visualType] = 1; } }); }); each$g(visualTypesInPieces, function(v, visualType) { var exists = false; each$g(this.stateList, function(state) { exists = exists || has2(option, state, visualType) || has2(option.target, state, visualType); }, this); !exists && each$g(this.stateList, function(state) { (option[state] || (option[state] = {}))[visualType] = visualDefault$1.get(visualType, state === "inRange" ? "active" : "inactive", isCategory2); }); }, this); function has2(obj, state, visualType) { return obj && obj[state] && obj[state].hasOwnProperty(visualType); } _super.prototype.completeVisualOption.apply(this, arguments); }; PiecewiseModel2.prototype._resetSelected = function(newOption, isInit) { var thisOption = this.option; var pieceList = this._pieceList; var selected = (isInit ? thisOption : newOption).selected || {}; thisOption.selected = selected; each$g(pieceList, function(piece, index) { var key2 = this.getSelectedMapKey(piece); if (!selected.hasOwnProperty(key2)) { selected[key2] = true; } }, this); if (thisOption.selectedMode === "single") { var hasSel_1 = false; each$g(pieceList, function(piece, index) { var key2 = this.getSelectedMapKey(piece); if (selected[key2]) { hasSel_1 ? selected[key2] = false : hasSel_1 = true; } }, this); } }; PiecewiseModel2.prototype.getItemSymbol = function() { return this.get("itemSymbol"); }; PiecewiseModel2.prototype.getSelectedMapKey = function(piece) { return this._mode === "categories" ? piece.value + "" : piece.index + ""; }; PiecewiseModel2.prototype.getPieceList = function() { return this._pieceList; }; PiecewiseModel2.prototype._determineMode = function() { var option = this.option; return option.pieces && option.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"; }; PiecewiseModel2.prototype.setSelected = function(selected) { this.option.selected = clone$4(selected); }; PiecewiseModel2.prototype.getValueState = function(value) { var index = VisualMapping$1.findPieceIndex(value, this._pieceList); return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? "inRange" : "outOfRange" : "outOfRange"; }; PiecewiseModel2.prototype.findTargetDataIndices = function(pieceIndex) { var result = []; var pieceList = this._pieceList; this.eachTargetSeries(function(seriesModel) { var dataIndices = []; var data = seriesModel.getData(); data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { var pIdx = VisualMapping$1.findPieceIndex(value, pieceList); pIdx === pieceIndex && dataIndices.push(dataIndex); }, this); result.push({ seriesId: seriesModel.id, dataIndex: dataIndices }); }, this); return result; }; PiecewiseModel2.prototype.getRepresentValue = function(piece) { var representValue; if (this.isCategory()) { representValue = piece.value; } else { if (piece.value != null) { representValue = piece.value; } else { var pieceInterval = piece.interval || []; representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2; } } return representValue; }; PiecewiseModel2.prototype.getVisualMeta = function(getColorVisual2) { if (this.isCategory()) { return; } var stops = []; var outerColors = ["", ""]; var visualMapModel = this; function setStop(interval, valueState) { var representValue = visualMapModel.getRepresentValue({ interval }); if (!valueState) { valueState = visualMapModel.getValueState(representValue); } var color2 = getColorVisual2(representValue, valueState); if (interval[0] === -Infinity) { outerColors[0] = color2; } else if (interval[1] === Infinity) { outerColors[1] = color2; } else { stops.push({ value: interval[0], color: color2 }, { value: interval[1], color: color2 }); } } var pieceList = this._pieceList.slice(); if (!pieceList.length) { pieceList.push({ interval: [-Infinity, Infinity] }); } else { var edge = pieceList[0].interval[0]; edge !== -Infinity && pieceList.unshift({ interval: [-Infinity, edge] }); edge = pieceList[pieceList.length - 1].interval[1]; edge !== Infinity && pieceList.push({ interval: [edge, Infinity] }); } var curr = -Infinity; each$g(pieceList, function(piece) { var interval = piece.interval; if (interval) { interval[0] > curr && setStop([curr, interval[0]], "outOfRange"); setStop(interval.slice()); curr = interval[1]; } }, this); return { stops, outerColors }; }; PiecewiseModel2.type = "visualMap.piecewise"; PiecewiseModel2.defaultOption = inheritDefaultOption(VisualMapModel$1.defaultOption, { selected: null, minOpen: false, maxOpen: false, align: "auto", itemWidth: 20, itemHeight: 14, itemSymbol: "roundRect", pieces: null, categories: null, splitNumber: 5, selectedMode: "multiple", itemGap: 10, hoverLink: true }); return PiecewiseModel2; }(VisualMapModel$1); var resetMethods = { splitNumber: function(outPieceList) { var thisOption = this.option; var precision = Math.min(thisOption.precision, 20); var dataExtent = this.getExtent(); var splitNumber = thisOption.splitNumber; splitNumber = Math.max(parseInt(splitNumber, 10), 1); thisOption.splitNumber = splitNumber; var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; while (+splitStep.toFixed(precision) !== splitStep && precision < 5) { precision++; } thisOption.precision = precision; splitStep = +splitStep.toFixed(precision); if (thisOption.minOpen) { outPieceList.push({ interval: [-Infinity, dataExtent[0]], close: [0, 0] }); } for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) { var max3 = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep; outPieceList.push({ interval: [curr, max3], close: [1, 1] }); } if (thisOption.maxOpen) { outPieceList.push({ interval: [dataExtent[1], Infinity], close: [0, 0] }); } reformIntervals(outPieceList); each$g(outPieceList, function(piece, index2) { piece.index = index2; piece.text = this.formatValueText(piece.interval); }, this); }, categories: function(outPieceList) { var thisOption = this.option; each$g(thisOption.categories, function(cate) { outPieceList.push({ text: this.formatValueText(cate, true), value: cate }); }, this); normalizeReverse(thisOption, outPieceList); }, pieces: function(outPieceList) { var thisOption = this.option; each$g(thisOption.pieces, function(pieceListItem, index) { if (!isObject$3(pieceListItem)) { pieceListItem = { value: pieceListItem }; } var item = { text: "", index }; if (pieceListItem.label != null) { item.text = pieceListItem.label; } if (pieceListItem.hasOwnProperty("value")) { var value = item.value = pieceListItem.value; item.interval = [value, value]; item.close = [1, 1]; } else { var interval = item.interval = []; var close_1 = item.close = [0, 0]; var closeList = [1, 0, 1]; var infinityList = [-Infinity, Infinity]; var useMinMax = []; for (var lg = 0; lg < 2; lg++) { var names = [["gte", "gt", "min"], ["lte", "lt", "max"]][lg]; for (var i = 0; i < 3 && interval[lg] == null; i++) { interval[lg] = pieceListItem[names[i]]; close_1[lg] = closeList[i]; useMinMax[lg] = i === 2; } interval[lg] == null && (interval[lg] = infinityList[lg]); } useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0); useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0); if (interval[0] === interval[1] && close_1[0] && close_1[1]) { item.value = interval[0]; } } item.visual = VisualMapping$1.retrieveVisuals(pieceListItem); outPieceList.push(item); }, this); normalizeReverse(thisOption, outPieceList); reformIntervals(outPieceList); each$g(outPieceList, function(piece) { var close2 = piece.close; var edgeSymbols = [["<", "\u2264"][close2[1]], [">", "\u2265"][close2[0]]]; piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols); }, this); } }; function normalizeReverse(thisOption, pieceList) { var inverse = thisOption.inverse; if (thisOption.orient === "vertical" ? !inverse : inverse) { pieceList.reverse(); } } var PiecewiseModel$1 = PiecewiseModel; var PiecewiseVisualMapView = function(_super) { __extends$1(PiecewiseVisualMapView2, _super); function PiecewiseVisualMapView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = PiecewiseVisualMapView2.type; return _this; } PiecewiseVisualMapView2.prototype.doRender = function() { var thisGroup = this.group; thisGroup.removeAll(); var visualMapModel = this.visualMapModel; var textGap = visualMapModel.get("textGap"); var textStyleModel = visualMapModel.textStyleModel; var textFont = textStyleModel.getFont(); var textFill = textStyleModel.getTextColor(); var itemAlign = this._getItemAlign(); var itemSize = visualMapModel.itemSize; var viewData = this._getViewData(); var endsText = viewData.endsText; var showLabel = retrieve(visualMapModel.get("showLabel", true), !endsText); endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign); each$g(viewData.viewPieceList, function(item) { var piece = item.piece; var itemGroup = new Group$4(); itemGroup.onclick = bind$2(this._onItemClick, this, piece); this._enableHoverLink(itemGroup, item.indexInModelPieceList); var representValue = visualMapModel.getRepresentValue(piece); this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]); if (showLabel) { var visualState = this.visualMapModel.getValueState(representValue); itemGroup.add(new ZRText$1({ style: { x: itemAlign === "right" ? -textGap : itemSize[0] + textGap, y: itemSize[1] / 2, text: piece.text, verticalAlign: "middle", align: itemAlign, font: textFont, fill: textFill, opacity: visualState === "outOfRange" ? 0.5 : 1 } })); } thisGroup.add(itemGroup); }, this); endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign); box(visualMapModel.get("orient"), thisGroup, visualMapModel.get("itemGap")); this.renderBackground(thisGroup); this.positionGroup(thisGroup); }; PiecewiseVisualMapView2.prototype._enableHoverLink = function(itemGroup, pieceIndex) { var _this = this; itemGroup.on("mouseover", function() { return onHoverLink("highlight"); }).on("mouseout", function() { return onHoverLink("downplay"); }); var onHoverLink = function(method) { var visualMapModel = _this.visualMapModel; visualMapModel.option.hoverLink && _this.api.dispatchAction({ type: method, batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel) }); }; }; PiecewiseVisualMapView2.prototype._getItemAlign = function() { var visualMapModel = this.visualMapModel; var modelOption = visualMapModel.option; if (modelOption.orient === "vertical") { return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize); } else { var align = modelOption.align; if (!align || align === "auto") { align = "left"; } return align; } }; PiecewiseVisualMapView2.prototype._renderEndsText = function(group, text, itemSize, showLabel, itemAlign) { if (!text) { return; } var itemGroup = new Group$4(); var textStyleModel = this.visualMapModel.textStyleModel; itemGroup.add(new ZRText$1({ style: { x: showLabel ? itemAlign === "right" ? itemSize[0] : 0 : itemSize[0] / 2, y: itemSize[1] / 2, verticalAlign: "middle", align: showLabel ? itemAlign : "center", text, font: textStyleModel.getFont(), fill: textStyleModel.getTextColor() } })); group.add(itemGroup); }; PiecewiseVisualMapView2.prototype._getViewData = function() { var visualMapModel = this.visualMapModel; var viewPieceList = map$1(visualMapModel.getPieceList(), function(piece, index) { return { piece, indexInModelPieceList: index }; }); var endsText = visualMapModel.get("text"); var orient = visualMapModel.get("orient"); var inverse = visualMapModel.get("inverse"); if (orient === "horizontal" ? inverse : !inverse) { viewPieceList.reverse(); } else if (endsText) { endsText = endsText.slice().reverse(); } return { viewPieceList, endsText }; }; PiecewiseVisualMapView2.prototype._createItemSymbol = function(group, representValue, shapeParam) { group.add(createSymbol$1(this.getControllerVisual(representValue, "symbol"), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, "color"))); }; PiecewiseVisualMapView2.prototype._onItemClick = function(piece) { var visualMapModel = this.visualMapModel; var option = visualMapModel.option; var selected = clone$4(option.selected); var newKey = visualMapModel.getSelectedMapKey(piece); if (option.selectedMode === "single") { selected[newKey] = true; each$g(selected, function(o, key2) { selected[key2] = key2 === newKey; }); } else { selected[newKey] = !selected[newKey]; } this.api.dispatchAction({ type: "selectDataRange", from: this.uid, visualMapId: this.visualMapModel.id, selected }); }; PiecewiseVisualMapView2.type = "visualMap.piecewise"; return PiecewiseVisualMapView2; }(VisualMapView$1); var PiecewiseView = PiecewiseVisualMapView; function install$4(registers) { registers.registerComponentModel(PiecewiseModel$1); registers.registerComponentView(PiecewiseView); installCommon(registers); } function install$3(registers) { use(install$5); use(install$4); } var DEFAULT_OPTION = { label: { enabled: true }, decal: { show: false } }; var inner = makeInner(); var decalPaletteScope = {}; function ariaVisual(ecModel, api) { var ariaModel = ecModel.getModel("aria"); if (!ariaModel.get("enabled")) { return; } var defaultOption2 = clone$4(DEFAULT_OPTION); merge(defaultOption2.label, ecModel.getLocaleModel().get("aria"), false); merge(ariaModel.option, defaultOption2, false); setDecal(); setLabel(); function setDecal() { var decalModel = ariaModel.getModel("decal"); var useDecal = decalModel.get("show"); if (useDecal) { var paletteScopeGroupByType_1 = createHashMap(); ecModel.eachSeries(function(seriesModel) { if (seriesModel.isColorBySeries()) { return; } var decalScope = paletteScopeGroupByType_1.get(seriesModel.type); if (!decalScope) { decalScope = {}; paletteScopeGroupByType_1.set(seriesModel.type, decalScope); } inner(seriesModel).scope = decalScope; }); ecModel.eachRawSeries(function(seriesModel) { if (ecModel.isSeriesFiltered(seriesModel)) { return; } if (typeof seriesModel.enableAriaDecal === "function") { seriesModel.enableAriaDecal(); return; } var data = seriesModel.getData(); if (!seriesModel.isColorBySeries()) { var dataAll_1 = seriesModel.getRawData(); var idxMap_1 = {}; var decalScope_1 = inner(seriesModel).scope; data.each(function(idx) { var rawIdx = data.getRawIndex(idx); idxMap_1[rawIdx] = idx; }); var dataCount_1 = dataAll_1.count(); dataAll_1.each(function(rawIdx) { var idx = idxMap_1[rawIdx]; var name = dataAll_1.getName(rawIdx) || rawIdx + ""; var paletteDecal2 = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1); var specifiedDecal2 = data.getItemVisual(idx, "decal"); data.setItemVisual(idx, "decal", mergeDecal(specifiedDecal2, paletteDecal2)); }); } else { var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount()); var specifiedDecal = data.getVisual("decal"); data.setVisual("decal", mergeDecal(specifiedDecal, paletteDecal)); } function mergeDecal(specifiedDecal2, paletteDecal2) { var resultDecal = specifiedDecal2 ? extend(extend({}, paletteDecal2), specifiedDecal2) : paletteDecal2; resultDecal.dirty = true; return resultDecal; } }); } } function setLabel() { var labelLocale = ecModel.getLocaleModel().get("aria"); var labelModel = ariaModel.getModel("label"); labelModel.option = defaults(labelModel.option, labelLocale); if (!labelModel.get("enabled")) { return; } var dom = api.getZr().dom; if (labelModel.get("description")) { dom.setAttribute("aria-label", labelModel.get("description")); return; } var seriesCnt = ecModel.getSeriesCount(); var maxDataCnt = labelModel.get(["data", "maxCount"]) || 10; var maxSeriesCnt = labelModel.get(["series", "maxCount"]) || 10; var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt); var ariaLabel; if (seriesCnt < 1) { return; } else { var title = getTitle(); if (title) { var withTitle = labelModel.get(["general", "withTitle"]); ariaLabel = replace(withTitle, { title }); } else { ariaLabel = labelModel.get(["general", "withoutTitle"]); } var seriesLabels_1 = []; var prefix = seriesCnt > 1 ? labelModel.get(["series", "multiple", "prefix"]) : labelModel.get(["series", "single", "prefix"]); ariaLabel += replace(prefix, { seriesCount: seriesCnt }); ecModel.eachSeries(function(seriesModel, idx) { if (idx < displaySeriesCnt) { var seriesLabel = void 0; var seriesName = seriesModel.get("name"); var withName = seriesName ? "withName" : "withoutName"; seriesLabel = seriesCnt > 1 ? labelModel.get(["series", "multiple", withName]) : labelModel.get(["series", "single", withName]); seriesLabel = replace(seriesLabel, { seriesId: seriesModel.seriesIndex, seriesName: seriesModel.get("name"), seriesType: getSeriesTypeName(seriesModel.subType) }); var data = seriesModel.getData(); if (data.count() > maxDataCnt) { var partialLabel = labelModel.get(["data", "partialData"]); seriesLabel += replace(partialLabel, { displayCnt: maxDataCnt }); } else { seriesLabel += labelModel.get(["data", "allData"]); } var middleSeparator_1 = labelModel.get(["data", "separator", "middle"]); var endSeparator_1 = labelModel.get(["data", "separator", "end"]); var dataLabels = []; for (var i = 0; i < data.count(); i++) { if (i < maxDataCnt) { var name_1 = data.getName(i); var value = data.getValues(i); var dataLabel = labelModel.get(["data", name_1 ? "withName" : "withoutName"]); dataLabels.push(replace(dataLabel, { name: name_1, value: value.join(middleSeparator_1) })); } } seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1; seriesLabels_1.push(seriesLabel); } }); var separatorModel = labelModel.getModel(["series", "multiple", "separator"]); var middleSeparator = separatorModel.get("middle"); var endSeparator = separatorModel.get("end"); ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator; dom.setAttribute("aria-label", ariaLabel); } } function replace(str, keyValues) { if (typeof str !== "string") { return str; } var result = str; each$g(keyValues, function(value, key2) { result = result.replace(new RegExp("\\{\\s*" + key2 + "\\s*\\}", "g"), value); }); return result; } function getTitle() { var title = ecModel.get("title"); if (title && title.length) { title = title[0]; } return title && title.text; } function getSeriesTypeName(type) { return ecModel.getLocaleModel().get(["series", "typeNames"])[type] || "\u81EA\u5B9A\u4E49\u56FE"; } } function ariaPreprocessor(option) { if (!option || !option.aria) { return; } var aria = option.aria; if (aria.show != null) { aria.enabled = aria.show; } aria.label = aria.label || {}; each$g(["description", "general", "series", "data"], function(name) { if (aria[name] != null) { aria.label[name] = aria[name]; } }); } function install$2(registers) { registers.registerPreprocessor(ariaPreprocessor); registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual); } var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = { value: "eq", "<": "lt", "<=": "lte", ">": "gt", ">=": "gte", "=": "eq", "!=": "ne", "<>": "ne" }; var RegExpEvaluator = function() { function RegExpEvaluator2(rVal) { var condValue = this._condVal = isString(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null; if (condValue == null) { var errMsg = ""; throwError(errMsg); } } RegExpEvaluator2.prototype.evaluate = function(lVal) { var type = typeof lVal; return type === "string" ? this._condVal.test(lVal) : type === "number" ? this._condVal.test(lVal + "") : false; }; return RegExpEvaluator2; }(); var ConstConditionInternal = function() { function ConstConditionInternal2() { } ConstConditionInternal2.prototype.evaluate = function() { return this.value; }; return ConstConditionInternal2; }(); var AndConditionInternal = function() { function AndConditionInternal2() { } AndConditionInternal2.prototype.evaluate = function() { var children = this.children; for (var i = 0; i < children.length; i++) { if (!children[i].evaluate()) { return false; } } return true; }; return AndConditionInternal2; }(); var OrConditionInternal = function() { function OrConditionInternal2() { } OrConditionInternal2.prototype.evaluate = function() { var children = this.children; for (var i = 0; i < children.length; i++) { if (children[i].evaluate()) { return true; } } return false; }; return OrConditionInternal2; }(); var NotConditionInternal = function() { function NotConditionInternal2() { } NotConditionInternal2.prototype.evaluate = function() { return !this.child.evaluate(); }; return NotConditionInternal2; }(); var RelationalConditionInternal = function() { function RelationalConditionInternal2() { } RelationalConditionInternal2.prototype.evaluate = function() { var needParse = !!this.valueParser; var getValue = this.getValue; var tarValRaw = getValue(this.valueGetterParam); var tarValParsed = needParse ? this.valueParser(tarValRaw) : null; for (var i = 0; i < this.subCondList.length; i++) { if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) { return false; } } return true; }; return RelationalConditionInternal2; }(); function parseOption(exprOption, getters) { if (exprOption === true || exprOption === false) { var cond = new ConstConditionInternal(); cond.value = exprOption; return cond; } var errMsg = ""; if (!isObjectNotArray(exprOption)) { throwError(errMsg); } if (exprOption.and) { return parseAndOrOption("and", exprOption, getters); } else if (exprOption.or) { return parseAndOrOption("or", exprOption, getters); } else if (exprOption.not) { return parseNotOption(exprOption, getters); } return parseRelationalOption(exprOption, getters); } function parseAndOrOption(op, exprOption, getters) { var subOptionArr = exprOption[op]; var errMsg = ""; if (!isArray$1(subOptionArr)) { throwError(errMsg); } if (!subOptionArr.length) { throwError(errMsg); } var cond = op === "and" ? new AndConditionInternal() : new OrConditionInternal(); cond.children = map$1(subOptionArr, function(subOption) { return parseOption(subOption, getters); }); if (!cond.children.length) { throwError(errMsg); } return cond; } function parseNotOption(exprOption, getters) { var subOption = exprOption.not; var errMsg = ""; if (!isObjectNotArray(subOption)) { throwError(errMsg); } var cond = new NotConditionInternal(); cond.child = parseOption(subOption, getters); if (!cond.child) { throwError(errMsg); } return cond; } function parseRelationalOption(exprOption, getters) { var errMsg = ""; var valueGetterParam = getters.prepareGetValue(exprOption); var subCondList = []; var exprKeys = keys(exprOption); var parserName = exprOption.parser; var valueParser = parserName ? getRawValueParser(parserName) : null; for (var i = 0; i < exprKeys.length; i++) { var keyRaw = exprKeys[i]; if (keyRaw === "parser" || getters.valueGetterAttrMap.get(keyRaw)) { continue; } var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw; var condValueRaw = exprOption[keyRaw]; var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw; var evaluator = createFilterComparator(op, condValueParsed) || op === "reg" && new RegExpEvaluator(condValueParsed); if (!evaluator) { throwError(errMsg); } subCondList.push(evaluator); } if (!subCondList.length) { throwError(errMsg); } var cond = new RelationalConditionInternal(); cond.valueGetterParam = valueGetterParam; cond.valueParser = valueParser; cond.getValue = getters.getValue; cond.subCondList = subCondList; return cond; } function isObjectNotArray(val) { return isObject$3(val) && !isArrayLike(val); } var ConditionalExpressionParsed = function() { function ConditionalExpressionParsed2(exprOption, getters) { this._cond = parseOption(exprOption, getters); } ConditionalExpressionParsed2.prototype.evaluate = function() { return this._cond.evaluate(); }; return ConditionalExpressionParsed2; }(); function parseConditionalExpression(exprOption, getters) { return new ConditionalExpressionParsed(exprOption, getters); } var filterTransform = { type: "echarts:filter", transform: function(params) { var upstream = params.upstream; var rawItem; var condition = parseConditionalExpression(params.config, { valueGetterAttrMap: createHashMap({ dimension: true }), prepareGetValue: function(exprOption) { var errMsg = ""; var dimLoose = exprOption.dimension; if (!hasOwn(exprOption, "dimension")) { throwError(errMsg); } var dimInfo = upstream.getDimensionInfo(dimLoose); if (!dimInfo) { throwError(errMsg); } return { dimIdx: dimInfo.index }; }, getValue: function(param) { return upstream.retrieveValueFromItem(rawItem, param.dimIdx); } }); var resultData = []; for (var i = 0, len2 = upstream.count(); i < len2; i++) { rawItem = upstream.getRawDataItem(i); if (condition.evaluate()) { resultData.push(rawItem); } } return { data: resultData }; } }; var sortTransform = { type: "echarts:sort", transform: function(params) { var upstream = params.upstream; var config = params.config; var errMsg = ""; var orderExprList = normalizeToArray(config); if (!orderExprList.length) { throwError(errMsg); } var orderDefList = []; each$g(orderExprList, function(orderExpr) { var dimLoose = orderExpr.dimension; var order = orderExpr.order; var parserName = orderExpr.parser; var incomparable = orderExpr.incomparable; if (dimLoose == null) { throwError(errMsg); } if (order !== "asc" && order !== "desc") { throwError(errMsg); } if (incomparable && incomparable !== "min" && incomparable !== "max") { var errMsg_1 = ""; throwError(errMsg_1); } if (order !== "asc" && order !== "desc") { var errMsg_2 = ""; throwError(errMsg_2); } var dimInfo = upstream.getDimensionInfo(dimLoose); if (!dimInfo) { throwError(errMsg); } var parser = parserName ? getRawValueParser(parserName) : null; if (parserName && !parser) { throwError(errMsg); } orderDefList.push({ dimIdx: dimInfo.index, parser, comparator: new SortOrderComparator(order, incomparable) }); }); var sourceFormat = upstream.sourceFormat; if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) { throwError(errMsg); } var resultData = []; for (var i = 0, len2 = upstream.count(); i < len2; i++) { resultData.push(upstream.getRawDataItem(i)); } resultData.sort(function(item0, item1) { for (var i2 = 0; i2 < orderDefList.length; i2++) { var orderDef = orderDefList[i2]; var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx); var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx); if (orderDef.parser) { val0 = orderDef.parser(val0); val1 = orderDef.parser(val1); } var result = orderDef.comparator.evaluate(val0, val1); if (result !== 0) { return result; } } return 0; }); return { data: resultData }; } }; function install$1(registers) { registers.registerTransform(filterTransform); registers.registerTransform(sortTransform); } var DatasetModel = function(_super) { __extends$1(DatasetModel2, _super); function DatasetModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "dataset"; return _this; } DatasetModel2.prototype.init = function(option, parentModel, ecModel) { _super.prototype.init.call(this, option, parentModel, ecModel); this._sourceManager = new SourceManager(this); disableTransformOptionMerge(this); }; DatasetModel2.prototype.mergeOption = function(newOption, ecModel) { _super.prototype.mergeOption.call(this, newOption, ecModel); disableTransformOptionMerge(this); }; DatasetModel2.prototype.optionUpdated = function() { this._sourceManager.dirty(); }; DatasetModel2.prototype.getSourceManager = function() { return this._sourceManager; }; DatasetModel2.type = "dataset"; DatasetModel2.defaultOption = { seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN }; return DatasetModel2; }(ComponentModel$1); var DatasetView = function(_super) { __extends$1(DatasetView2, _super); function DatasetView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "dataset"; return _this; } DatasetView2.type = "dataset"; return DatasetView2; }(ComponentView$1); function install(registers) { registers.registerComponentModel(DatasetModel); registers.registerComponentView(DatasetView); } var CMD = PathProxy$1.CMD; function aroundEqual(a, b) { return Math.abs(a - b) < 1e-5; } function pathToBezierCurves(path) { var data = path.data; var len2 = path.len(); var bezierArrayGroups = []; var currentSubpath; var xi = 0; var yi = 0; var x0 = 0; var y0 = 0; function createNewSubpath(x, y) { if (currentSubpath && currentSubpath.length > 2) { bezierArrayGroups.push(currentSubpath); } currentSubpath = [x, y]; } function addLine(x02, y02, x12, y12) { if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) { currentSubpath.push(x02, y02, x12, y12, x12, y12); } } function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) { var delta = Math.abs(endAngle2 - startAngle2); var len3 = Math.tan(delta / 4) * 4 / 3; var dir3 = endAngle2 < startAngle2 ? -1 : 1; var c1 = Math.cos(startAngle2); var s1 = Math.sin(startAngle2); var c2 = Math.cos(endAngle2); var s2 = Math.sin(endAngle2); var x12 = c1 * rx2 + cx2; var y12 = s1 * ry2 + cy2; var x4 = c2 * rx2 + cx2; var y4 = s2 * ry2 + cy2; var hx = rx2 * len3 * dir3; var hy = ry2 * len3 * dir3; currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4); } var x1; var y1; var x2; var y2; for (var i = 0; i < len2; ) { var cmd = data[i++]; var isFirst = i === 1; if (isFirst) { xi = data[i]; yi = data[i + 1]; x0 = xi; y0 = yi; if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) { currentSubpath = [x0, y0]; } } switch (cmd) { case CMD.M: xi = x0 = data[i++]; yi = y0 = data[i++]; createNewSubpath(x0, y0); break; case CMD.L: x1 = data[i++]; y1 = data[i++]; addLine(xi, yi, x1, y1); xi = x1; yi = y1; break; case CMD.C: currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]); break; case CMD.Q: x1 = data[i++]; y1 = data[i++]; x2 = data[i++]; y2 = data[i++]; currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2); xi = x2; yi = y2; break; case CMD.A: var cx = data[i++]; var cy = data[i++]; var rx = data[i++]; var ry = data[i++]; var startAngle = data[i++]; var endAngle = data[i++] + startAngle; i += 1; var anticlockwise = !data[i++]; x1 = Math.cos(startAngle) * rx + cx; y1 = Math.sin(startAngle) * ry + cy; if (isFirst) { x0 = x1; y0 = y1; createNewSubpath(x0, y0); } else { addLine(xi, yi, x1, y1); } xi = Math.cos(endAngle) * rx + cx; yi = Math.sin(endAngle) * ry + cy; var step2 = (anticlockwise ? -1 : 1) * Math.PI / 2; for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step2) { var nextAngle = anticlockwise ? Math.max(angle + step2, endAngle) : Math.min(angle + step2, endAngle); addArc(angle, nextAngle, cx, cy, rx, ry); } break; case CMD.R: x0 = xi = data[i++]; y0 = yi = data[i++]; x1 = x0 + data[i++]; y1 = y0 + data[i++]; createNewSubpath(x1, y0); addLine(x1, y0, x1, y1); addLine(x1, y1, x0, y1); addLine(x0, y1, x0, y0); addLine(x0, y0, x1, y0); break; case CMD.Z: currentSubpath && addLine(xi, yi, x0, y0); xi = x0; yi = y0; break; } } if (currentSubpath && currentSubpath.length > 2) { bezierArrayGroups.push(currentSubpath); } return bezierArrayGroups; } function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out2, scale2) { if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) { out2.push(x3, y3); return; } var PIXEL_DISTANCE = 2 / scale2; var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE; var dx = x3 - x0; var dy = y3 - y0; var d = Math.sqrt(dx * dx + dy * dy); dx /= d; dy /= d; var dx1 = x1 - x0; var dy1 = y1 - y0; var dx2 = x2 - x3; var dy2 = y2 - y3; var cp1LenSqr = dx1 * dx1 + dy1 * dy1; var cp2LenSqr = dx2 * dx2 + dy2 * dy2; if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) { out2.push(x3, y3); return; } var projLen1 = dx * dx1 + dy * dy1; var projLen2 = -dx * dx2 - dy * dy2; var d1Sqr = cp1LenSqr - projLen1 * projLen1; var d2Sqr = cp2LenSqr - projLen2 * projLen2; if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) { out2.push(x3, y3); return; } var tmpSegX = []; var tmpSegY = []; cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX); cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY); adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out2, scale2); adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out2, scale2); } function pathToPolygons(path, scale2) { var bezierArrayGroups = pathToBezierCurves(path); var polygons = []; scale2 = scale2 || 1; for (var i = 0; i < bezierArrayGroups.length; i++) { var beziers = bezierArrayGroups[i]; var polygon = []; var x0 = beziers[0]; var y0 = beziers[1]; polygon.push(x0, y0); for (var k = 2; k < beziers.length; ) { var x1 = beziers[k++]; var y1 = beziers[k++]; var x2 = beziers[k++]; var y2 = beziers[k++]; var x3 = beziers[k++]; var y3 = beziers[k++]; adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale2); x0 = x3; y0 = y3; } polygons.push(polygon); } return polygons; } function getDividingGrids(dimSize, rowDim, count2) { var rowSize = dimSize[rowDim]; var columnSize = dimSize[1 - rowDim]; var ratio = Math.abs(rowSize / columnSize); var rowCount = Math.ceil(Math.sqrt(ratio * count2)); var columnCount = Math.floor(count2 / rowCount); if (columnCount === 0) { columnCount = 1; rowCount = count2; } var grids = []; for (var i = 0; i < rowCount; i++) { grids.push(columnCount); } var currentCount = rowCount * columnCount; var remained = count2 - currentCount; if (remained > 0) { for (var i = 0; i < remained; i++) { grids[i % rowCount] += 1; } } return grids; } function divideSector(sectorShape, count2, outShapes) { var r0 = sectorShape.r0; var r = sectorShape.r; var startAngle = sectorShape.startAngle; var endAngle = sectorShape.endAngle; var angle = Math.abs(endAngle - startAngle); var arcLen = angle * r; var deltaR = r - r0; var isAngleRow = arcLen > Math.abs(deltaR); var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count2); var rowSize = (isAngleRow ? angle : deltaR) / grids.length; for (var row = 0; row < grids.length; row++) { var columnSize = (isAngleRow ? deltaR : angle) / grids[row]; for (var column = 0; column < grids[row]; column++) { var newShape = {}; if (isAngleRow) { newShape.startAngle = startAngle + rowSize * row; newShape.endAngle = startAngle + rowSize * (row + 1); newShape.r0 = r0 + columnSize * column; newShape.r = r0 + columnSize * (column + 1); } else { newShape.startAngle = startAngle + columnSize * column; newShape.endAngle = startAngle + columnSize * (column + 1); newShape.r0 = r0 + rowSize * row; newShape.r = r0 + rowSize * (row + 1); } newShape.clockwise = sectorShape.clockwise; newShape.cx = sectorShape.cx; newShape.cy = sectorShape.cy; outShapes.push(newShape); } } } function divideRect(rectShape, count2, outShapes) { var width = rectShape.width; var height = rectShape.height; var isHorizontalRow = width > height; var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count2); var rowSizeDim = isHorizontalRow ? "width" : "height"; var columnSizeDim = isHorizontalRow ? "height" : "width"; var rowDim = isHorizontalRow ? "x" : "y"; var columnDim = isHorizontalRow ? "y" : "x"; var rowSize = rectShape[rowSizeDim] / grids.length; for (var row = 0; row < grids.length; row++) { var columnSize = rectShape[columnSizeDim] / grids[row]; for (var column = 0; column < grids[row]; column++) { var newShape = {}; newShape[rowDim] = row * rowSize; newShape[columnDim] = column * columnSize; newShape[rowSizeDim] = rowSize; newShape[columnSizeDim] = columnSize; newShape.x += rectShape.x; newShape.y += rectShape.y; outShapes.push(newShape); } } } function crossProduct2d(x1, y1, x2, y2) { return x1 * y2 - x2 * y1; } function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { var mx = a2x - a1x; var my = a2y - a1y; var nx = b2x - b1x; var ny = b2y - b1y; var nmCrossProduct = crossProduct2d(nx, ny, mx, my); if (Math.abs(nmCrossProduct) < 1e-6) { return null; } var b1a1x = a1x - b1x; var b1a1y = a1y - b1y; var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct; if (p < 0 || p > 1) { return null; } return new Point$1(p * mx + a1x, p * my + a1y); } function projPtOnLine(pt, lineA, lineB) { var dir3 = new Point$1(); Point$1.sub(dir3, lineB, lineA); dir3.normalize(); var dir22 = new Point$1(); Point$1.sub(dir22, pt, lineA); var len2 = dir22.dot(dir3); return len2; } function addToPoly(poly, pt) { var last = poly[poly.length - 1]; if (last && last[0] === pt[0] && last[1] === pt[1]) { return; } poly.push(pt); } function splitPolygonByLine(points2, lineA, lineB) { var len2 = points2.length; var intersections = []; for (var i = 0; i < len2; i++) { var p0 = points2[i]; var p1 = points2[(i + 1) % len2]; var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y); if (intersectionPt) { intersections.push({ projPt: projPtOnLine(intersectionPt, lineA, lineB), pt: intersectionPt, idx: i }); } } if (intersections.length < 2) { return [{ points: points2 }, { points: points2 }]; } intersections.sort(function(a, b) { return a.projPt - b.projPt; }); var splitPt0 = intersections[0]; var splitPt1 = intersections[intersections.length - 1]; if (splitPt1.idx < splitPt0.idx) { var tmp = splitPt0; splitPt0 = splitPt1; splitPt1 = tmp; } var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y]; var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y]; var newPolyA = [splitPt0Arr]; var newPolyB = [splitPt1Arr]; for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) { addToPoly(newPolyA, points2[i].slice()); } addToPoly(newPolyA, splitPt1Arr); addToPoly(newPolyA, splitPt0Arr); for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len2; i++) { addToPoly(newPolyB, points2[i % len2].slice()); } addToPoly(newPolyB, splitPt0Arr); addToPoly(newPolyB, splitPt1Arr); return [{ points: newPolyA }, { points: newPolyB }]; } function binaryDividePolygon(polygonShape) { var points2 = polygonShape.points; var min3 = []; var max3 = []; fromPoints(points2, min3, max3); var boundingRect = new BoundingRect$1(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]); var width = boundingRect.width; var height = boundingRect.height; var x = boundingRect.x; var y = boundingRect.y; var pt02 = new Point$1(); var pt12 = new Point$1(); if (width > height) { pt02.x = pt12.x = x + width / 2; pt02.y = y; pt12.y = y + height; } else { pt02.y = pt12.y = y + height / 2; pt02.x = x; pt12.x = x + width; } return splitPolygonByLine(points2, pt02, pt12); } function binaryDivideRecursive(divider, shape, count2, out2) { if (count2 === 1) { out2.push(shape); } else { var mid = Math.floor(count2 / 2); var sub2 = divider(shape); binaryDivideRecursive(divider, sub2[0], mid, out2); binaryDivideRecursive(divider, sub2[1], count2 - mid, out2); } return out2; } function clone(path, count2) { var paths = []; for (var i = 0; i < count2; i++) { paths.push(clonePath$1(path)); } return paths; } function copyPathProps(source, target) { target.setStyle(source.style); target.z = source.z; target.z2 = source.z2; target.zlevel = source.zlevel; } function polygonConvert(points2) { var out2 = []; for (var i = 0; i < points2.length; ) { out2.push([points2[i++], points2[i++]]); } return out2; } function split(path, count2) { var outShapes = []; var shape = path.shape; var OutShapeCtor; switch (path.type) { case "rect": divideRect(shape, count2, outShapes); OutShapeCtor = Rect$3; break; case "sector": divideSector(shape, count2, outShapes); OutShapeCtor = Sector$1; break; case "circle": divideSector({ r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2, cx: shape.cx, cy: shape.cy }, count2, outShapes); OutShapeCtor = Sector$1; break; default: var m2 = path.getComputedTransform(); var scale2 = m2 ? Math.sqrt(Math.max(m2[0] * m2[0] + m2[1] * m2[1], m2[2] * m2[2] + m2[3] * m2[3])) : 1; var polygons = map$1(pathToPolygons(path.getUpdatedPathProxy(), scale2), function(poly) { return polygonConvert(poly); }); var polygonCount = polygons.length; if (polygonCount === 0) { binaryDivideRecursive(binaryDividePolygon, { points: polygons[0] }, count2, outShapes); } else if (polygonCount === count2) { for (var i = 0; i < polygonCount; i++) { outShapes.push({ points: polygons[i] }); } } else { var totalArea_1 = 0; var items = map$1(polygons, function(poly) { var min3 = []; var max3 = []; fromPoints(poly, min3, max3); var area = (max3[1] - min3[1]) * (max3[0] - min3[0]); totalArea_1 += area; return { poly, area }; }); items.sort(function(a, b) { return b.area - a.area; }); var left = count2; for (var i = 0; i < polygonCount; i++) { var item = items[i]; if (left <= 0) { break; } var selfCount = i === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count2); if (selfCount < 0) { continue; } binaryDivideRecursive(binaryDividePolygon, { points: item.poly }, selfCount, outShapes); left -= selfCount; } } OutShapeCtor = Polygon$1; break; } if (!OutShapeCtor) { return clone(path, count2); } var out2 = []; for (var i = 0; i < outShapes.length; i++) { var subPath = new OutShapeCtor(); subPath.setShape(outShapes[i]); copyPathProps(path, subPath); out2.push(subPath); } return out2; } function alignSubpath(subpath1, subpath2) { var len1 = subpath1.length; var len2 = subpath2.length; if (len1 === len2) { return [subpath1, subpath2]; } var tmpSegX = []; var tmpSegY = []; var shorterPath = len1 < len2 ? subpath1 : subpath2; var shorterLen = Math.min(len1, len2); var diff2 = Math.abs(len2 - len1) / 6; var shorterBezierCount = (shorterLen - 2) / 6; var eachCurveSubDivCount = Math.ceil(diff2 / shorterBezierCount) + 1; var newSubpath = [shorterPath[0], shorterPath[1]]; var remained = diff2; for (var i = 2; i < shorterLen; ) { var x0 = shorterPath[i - 2]; var y0 = shorterPath[i - 1]; var x1 = shorterPath[i++]; var y1 = shorterPath[i++]; var x2 = shorterPath[i++]; var y2 = shorterPath[i++]; var x3 = shorterPath[i++]; var y3 = shorterPath[i++]; if (remained <= 0) { newSubpath.push(x1, y1, x2, y2, x3, y3); continue; } var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1; for (var k = 1; k <= actualSubDivCount; k++) { var p = k / actualSubDivCount; cubicSubdivide(x0, x1, x2, x3, p, tmpSegX); cubicSubdivide(y0, y1, y2, y3, p, tmpSegY); x0 = tmpSegX[3]; y0 = tmpSegY[3]; newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0); x1 = tmpSegX[5]; y1 = tmpSegY[5]; x2 = tmpSegX[6]; y2 = tmpSegY[6]; } remained -= actualSubDivCount - 1; } return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath]; } function createSubpath(lastSubpathSubpath, otherSubpath) { var len2 = lastSubpathSubpath.length; var lastX = lastSubpathSubpath[len2 - 2]; var lastY = lastSubpathSubpath[len2 - 1]; var newSubpath = []; for (var i = 0; i < otherSubpath.length; ) { newSubpath[i++] = lastX; newSubpath[i++] = lastY; } return newSubpath; } function alignBezierCurves(array1, array2) { var _a2; var lastSubpath1; var lastSubpath2; var newArray1 = []; var newArray2 = []; for (var i = 0; i < Math.max(array1.length, array2.length); i++) { var subpath1 = array1[i]; var subpath2 = array2[i]; var newSubpath1 = void 0; var newSubpath2 = void 0; if (!subpath1) { newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2); newSubpath2 = subpath2; } else if (!subpath2) { newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1); newSubpath1 = subpath1; } else { _a2 = alignSubpath(subpath1, subpath2), newSubpath1 = _a2[0], newSubpath2 = _a2[1]; lastSubpath1 = newSubpath1; lastSubpath2 = newSubpath2; } newArray1.push(newSubpath1); newArray2.push(newSubpath2); } return [newArray1, newArray2]; } function centroid(array) { var signedArea = 0; var cx = 0; var cy = 0; var len2 = array.length; for (var i = 0, j = len2 - 2; i < len2; j = i, i += 2) { var x0 = array[j]; var y0 = array[j + 1]; var x1 = array[i]; var y1 = array[i + 1]; var a = x0 * y1 - x1 * y0; signedArea += a; cx += (x0 + x1) * a; cy += (y0 + y1) * a; } if (signedArea === 0) { return [array[0] || 0, array[1] || 0]; } return [cx / signedArea / 3, cy / signedArea / 3, signedArea]; } function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) { var bezierCount = (fromSubBeziers.length - 2) / 6; var bestScore = Infinity; var bestOffset = 0; var len2 = fromSubBeziers.length; var len22 = len2 - 2; for (var offset = 0; offset < bezierCount; offset++) { var cursorOffset = offset * 6; var score = 0; for (var k = 0; k < len2; k += 2) { var idx = k === 0 ? cursorOffset : (cursorOffset + k - 2) % len22 + 2; var x0 = fromSubBeziers[idx] - fromCp[0]; var y0 = fromSubBeziers[idx + 1] - fromCp[1]; var x1 = toSubBeziers[k] - toCp[0]; var y1 = toSubBeziers[k + 1] - toCp[1]; var dx = x1 - x0; var dy = y1 - y0; score += dx * dx + dy * dy; } if (score < bestScore) { bestScore = score; bestOffset = offset; } } return bestOffset; } function reverse(array) { var newArr = []; var len2 = array.length; for (var i = 0; i < len2; i += 2) { newArr[i] = array[len2 - i - 2]; newArr[i + 1] = array[len2 - i - 1]; } return newArr; } function findBestMorphingRotation(fromArr, toArr2, searchAngleIteration, searchAngleRange) { var result = []; var fromNeedsReverse; for (var i = 0; i < fromArr.length; i++) { var fromSubpathBezier = fromArr[i]; var toSubpathBezier = toArr2[i]; var fromCp = centroid(fromSubpathBezier); var toCp = centroid(toSubpathBezier); if (fromNeedsReverse == null) { fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0; } var newFromSubpathBezier = []; var newToSubpathBezier = []; var bestAngle = 0; var bestScore = Infinity; var tmpArr2 = []; var len2 = fromSubpathBezier.length; if (fromNeedsReverse) { fromSubpathBezier = reverse(fromSubpathBezier); } var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6; var len22 = len2 - 2; for (var k = 0; k < len22; k += 2) { var idx = (offset + k) % len22 + 2; newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0]; newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1]; } newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0]; newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1]; if (searchAngleIteration > 0) { var step2 = searchAngleRange / searchAngleIteration; for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step2) { var sa = Math.sin(angle); var ca = Math.cos(angle); var score = 0; for (var k = 0; k < fromSubpathBezier.length; k += 2) { var x0 = newFromSubpathBezier[k]; var y0 = newFromSubpathBezier[k + 1]; var x1 = toSubpathBezier[k] - toCp[0]; var y1 = toSubpathBezier[k + 1] - toCp[1]; var newX1 = x1 * ca - y1 * sa; var newY1 = x1 * sa + y1 * ca; tmpArr2[k] = newX1; tmpArr2[k + 1] = newY1; var dx = newX1 - x0; var dy = newY1 - y0; score += dx * dx + dy * dy; } if (score < bestScore) { bestScore = score; bestAngle = angle; for (var m2 = 0; m2 < tmpArr2.length; m2++) { newToSubpathBezier[m2] = tmpArr2[m2]; } } } } else { for (var i_1 = 0; i_1 < len2; i_1 += 2) { newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0]; newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1]; } } result.push({ from: newFromSubpathBezier, to: newToSubpathBezier, fromCp, toCp, rotation: -bestAngle }); } return result; } function isCombineMorphing(path) { return path.__isCombineMorphing; } var SAVED_METHOD_PREFIX = "__mOriginal_"; function saveAndModifyMethod(obj, methodName, modifiers) { var savedMethodName = SAVED_METHOD_PREFIX + methodName; var originalMethod = obj[savedMethodName] || obj[methodName]; if (!obj[savedMethodName]) { obj[savedMethodName] = obj[methodName]; } var replace = modifiers.replace; var after = modifiers.after; var before = modifiers.before; obj[methodName] = function() { var args = arguments; var res; before && before.apply(this, args); if (replace) { res = replace.apply(this, args); } else { res = originalMethod.apply(this, args); } after && after.apply(this, args); return res; }; } function restoreMethod(obj, methodName) { var savedMethodName = SAVED_METHOD_PREFIX + methodName; if (obj[savedMethodName]) { obj[methodName] = obj[savedMethodName]; obj[savedMethodName] = null; } } function applyTransformOnBeziers(bezierCurves, mm) { for (var i = 0; i < bezierCurves.length; i++) { var subBeziers = bezierCurves[i]; for (var k = 0; k < subBeziers.length; ) { var x = subBeziers[k]; var y = subBeziers[k + 1]; subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4]; subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5]; } } } function prepareMorphPath(fromPath, toPath) { var fromPathProxy = fromPath.getUpdatedPathProxy(); var toPathProxy = toPath.getUpdatedPathProxy(); var _a2 = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a2[0], toBezierCurves = _a2[1]; var fromPathTransform = fromPath.getComputedTransform(); var toPathTransform = toPath.getComputedTransform(); function updateIdentityTransform() { this.transform = null; } fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform); toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform); saveAndModifyMethod(toPath, "updateTransform", { replace: updateIdentityTransform }); toPath.transform = null; var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI); var tmpArr2 = []; saveAndModifyMethod(toPath, "buildPath", { replace: function(path) { var t = toPath.__morphT; var onet = 1 - t; var newCp = []; for (var i = 0; i < morphingData.length; i++) { var item = morphingData[i]; var from = item.from; var to = item.to; var angle = item.rotation * t; var fromCp = item.fromCp; var toCp = item.toCp; var sa = Math.sin(angle); var ca = Math.cos(angle); lerp$1(newCp, fromCp, toCp, t); for (var m2 = 0; m2 < from.length; m2 += 2) { var x0_1 = from[m2]; var y0_1 = from[m2 + 1]; var x1 = to[m2]; var y1 = to[m2 + 1]; var x = x0_1 * onet + x1 * t; var y = y0_1 * onet + y1 * t; tmpArr2[m2] = x * ca - y * sa + newCp[0]; tmpArr2[m2 + 1] = x * sa + y * ca + newCp[1]; } var x0 = tmpArr2[0]; var y0 = tmpArr2[1]; path.moveTo(x0, y0); for (var m2 = 2; m2 < from.length; ) { var x1 = tmpArr2[m2++]; var y1 = tmpArr2[m2++]; var x2 = tmpArr2[m2++]; var y2 = tmpArr2[m2++]; var x3 = tmpArr2[m2++]; var y3 = tmpArr2[m2++]; if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) { path.lineTo(x3, y3); } else { path.bezierCurveTo(x1, y1, x2, y2, x3, y3); } x0 = x3; y0 = y3; } } } }); } function morphPath(fromPath, toPath, animationOpts) { if (!fromPath || !toPath) { return toPath; } var oldDone = animationOpts.done; var oldDuring = animationOpts.during; prepareMorphPath(fromPath, toPath); toPath.__morphT = 0; function restoreToPath() { restoreMethod(toPath, "buildPath"); restoreMethod(toPath, "updateTransform"); toPath.__morphT = -1; toPath.createPathProxy(); toPath.dirtyShape(); } toPath.animateTo({ __morphT: 1 }, defaults({ during: function(p) { toPath.dirtyShape(); oldDuring && oldDuring(p); }, done: function() { restoreToPath(); oldDone && oldDone(); } }, animationOpts)); return toPath; } function hilbert(x, y, minX, minY, maxX, maxY) { var bits = 16; x = maxX === minX ? 0 : Math.round(32767 * (x - minX) / (maxX - minX)); y = maxY === minY ? 0 : Math.round(32767 * (y - minY) / (maxY - minY)); var d = 0; var tmp; for (var s = (1 << bits) / 2; s > 0; s /= 2) { var rx = 0; var ry = 0; if ((x & s) > 0) { rx = 1; } if ((y & s) > 0) { ry = 1; } d += s * s * (3 * rx ^ ry); if (ry === 0) { if (rx === 1) { x = s - 1 - x; y = s - 1 - y; } tmp = x; x = y; y = tmp; } } return d; } function sortPaths(pathList) { var xMin = Infinity; var yMin = Infinity; var xMax = -Infinity; var yMax = -Infinity; var cps = map$1(pathList, function(path) { var rect = path.getBoundingRect(); var m2 = path.getComputedTransform(); var x = rect.x + rect.width / 2 + (m2 ? m2[4] : 0); var y = rect.y + rect.height / 2 + (m2 ? m2[5] : 0); xMin = Math.min(x, xMin); yMin = Math.min(y, yMin); xMax = Math.max(x, xMax); yMax = Math.max(y, yMax); return [x, y]; }); var items = map$1(cps, function(cp, idx) { return { cp, z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax), path: pathList[idx] }; }); return items.sort(function(a, b) { return a.z - b.z; }).map(function(item) { return item.path; }); } function defaultDividePath(param) { return split(param.path, param.count); } function createEmptyReturn() { return { fromIndividuals: [], toIndividuals: [], count: 0 }; } function combineMorph(fromList, toPath, animationOpts) { var fromPathList = []; function addFromPath(fromList2) { for (var i2 = 0; i2 < fromList2.length; i2++) { var from2 = fromList2[i2]; if (isCombineMorphing(from2)) { addFromPath(from2.childrenRef()); } else if (from2 instanceof Path$1) { fromPathList.push(from2); } } } addFromPath(fromList); var separateCount = fromPathList.length; if (!separateCount) { return createEmptyReturn(); } var dividePath = animationOpts.dividePath || defaultDividePath; var toSubPathList = dividePath({ path: toPath, count: separateCount }); if (toSubPathList.length !== separateCount) { console.error("Invalid morphing: unmatched splitted path"); return createEmptyReturn(); } fromPathList = sortPaths(fromPathList); toSubPathList = sortPaths(toSubPathList); var oldDone = animationOpts.done; var oldDuring = animationOpts.during; var individualDelay = animationOpts.individualDelay; var identityTransform = new Transformable$1(); for (var i = 0; i < separateCount; i++) { var from = fromPathList[i]; var to = toSubPathList[i]; to.parent = toPath; to.copyTransform(identityTransform); if (!individualDelay) { prepareMorphPath(from, to); } } toPath.__isCombineMorphing = true; toPath.childrenRef = function() { return toSubPathList; }; function addToSubPathListToZr(zr) { for (var i2 = 0; i2 < toSubPathList.length; i2++) { toSubPathList[i2].addSelfToZr(zr); } } saveAndModifyMethod(toPath, "addSelfToZr", { after: function(zr) { addToSubPathListToZr(zr); } }); saveAndModifyMethod(toPath, "removeSelfFromZr", { after: function(zr) { for (var i2 = 0; i2 < toSubPathList.length; i2++) { toSubPathList[i2].removeSelfFromZr(zr); } } }); function restoreToPath() { toPath.__isCombineMorphing = false; toPath.__morphT = -1; toPath.childrenRef = null; restoreMethod(toPath, "addSelfToZr"); restoreMethod(toPath, "removeSelfFromZr"); } var toLen = toSubPathList.length; if (individualDelay) { var animating_1 = toLen; var eachDone = function() { animating_1--; if (animating_1 === 0) { restoreToPath(); oldDone && oldDone(); } }; for (var i = 0; i < toLen; i++) { var indivdualAnimationOpts = individualDelay ? defaults({ delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]), done: eachDone }, animationOpts) : animationOpts; morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts); } } else { toPath.__morphT = 0; toPath.animateTo({ __morphT: 1 }, defaults({ during: function(p) { for (var i2 = 0; i2 < toLen; i2++) { var child = toSubPathList[i2]; child.__morphT = toPath.__morphT; child.dirtyShape(); } oldDuring && oldDuring(p); }, done: function() { restoreToPath(); for (var i2 = 0; i2 < fromList.length; i2++) { restoreMethod(fromList[i2], "updateTransform"); } oldDone && oldDone(); } }, animationOpts)); } if (toPath.__zr) { addToSubPathListToZr(toPath.__zr); } return { fromIndividuals: fromPathList, toIndividuals: toSubPathList, count: toLen }; } function separateMorph(fromPath, toPathList, animationOpts) { var toLen = toPathList.length; var fromPathList = []; var dividePath = animationOpts.dividePath || defaultDividePath; function addFromPath(fromList) { for (var i2 = 0; i2 < fromList.length; i2++) { var from = fromList[i2]; if (isCombineMorphing(from)) { addFromPath(from.childrenRef()); } else if (from instanceof Path$1) { fromPathList.push(from); } } } if (isCombineMorphing(fromPath)) { addFromPath(fromPath.childrenRef()); var fromLen = fromPathList.length; if (fromLen < toLen) { var k = 0; for (var i = fromLen; i < toLen; i++) { fromPathList.push(clonePath$1(fromPathList[k++ % fromLen])); } } fromPathList.length = toLen; } else { fromPathList = dividePath({ path: fromPath, count: toLen }); var fromPathTransform = fromPath.getComputedTransform(); for (var i = 0; i < fromPathList.length; i++) { fromPathList[i].setLocalTransform(fromPathTransform); } if (fromPathList.length !== toLen) { console.error("Invalid morphing: unmatched splitted path"); return createEmptyReturn(); } } fromPathList = sortPaths(fromPathList); toPathList = sortPaths(toPathList); var individualDelay = animationOpts.individualDelay; for (var i = 0; i < toLen; i++) { var indivdualAnimationOpts = individualDelay ? defaults({ delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i]) }, animationOpts) : animationOpts; morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts); } return { fromIndividuals: fromPathList, toIndividuals: toPathList, count: toPathList.length }; } function isMultiple(elements) { return isArray$1(elements[0]); } function prepareMorphBatches(one, many) { var batches = []; var batchCount = one.length; for (var i = 0; i < batchCount; i++) { batches.push({ one: one[i], many: [] }); } for (var i = 0; i < many.length; i++) { var len2 = many[i].length; var k = void 0; for (k = 0; k < len2; k++) { batches[k % batchCount].many.push(many[i][k]); } } var off = 0; for (var i = batchCount - 1; i >= 0; i--) { if (!batches[i].many.length) { var moveFrom = batches[off].many; if (moveFrom.length <= 1) { if (off) { off = 0; } else { return batches; } } var len2 = moveFrom.length; var mid = Math.ceil(len2 / 2); batches[i].many = moveFrom.slice(mid, len2); batches[off].many = moveFrom.slice(0, mid); off++; } } return batches; } var pathDividers = { clone: function(params) { var ret = []; var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count); for (var i = 0; i < params.count; i++) { var cloned = clonePath$1(params.path); cloned.setStyle("opacity", approxOpacity); ret.push(cloned); } return ret; }, split: null }; function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) { if (!from.length || !to.length) { return; } var updateAnimationCfg = getAnimationConfig("update", seriesModel, dataIndex); if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) { return; } var animationDelay = seriesModel.getModel("universalTransition").get("delay"); var animationCfg = Object.assign({ setToFinal: true }, updateAnimationCfg); var many; var one; if (isMultiple(from)) { many = from; one = to; } if (isMultiple(to)) { many = to; one = from; } function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) { var batchMany = batch.many; var batchOne = batch.one; if (batchMany.length === 1 && !forceManyOne) { var batchFrom = fromIsMany2 ? batchMany[0] : batchOne; var batchTo = fromIsMany2 ? batchOne : batchMany[0]; if (isCombineMorphing(batchFrom)) { morphOneBatch({ many: [batchFrom], one: batchTo }, true, animateIndex2, animateCount2, true); } else { var individualAnimationCfg = animationDelay ? defaults({ delay: animationDelay(animateIndex2, animateCount2) }, animationCfg) : animationCfg; morphPath(batchFrom, batchTo, individualAnimationCfg); animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg); } } else { var separateAnimationCfg = defaults({ dividePath: pathDividers[divideShape], individualDelay: animationDelay && function(idx, count3, fromPath, toPath) { return animationDelay(idx + animateIndex2, animateCount2); } }, animationCfg); var _a2 = fromIsMany2 ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a2.fromIndividuals, toIndividuals = _a2.toIndividuals; var count2 = fromIndividuals.length; for (var k = 0; k < count2; k++) { var individualAnimationCfg = animationDelay ? defaults({ delay: animationDelay(k, count2) }, animationCfg) : animationCfg; animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany2 ? batchMany[k] : batch.one, fromIsMany2 ? batch.one : batchMany[k], individualAnimationCfg); } } } var fromIsMany = many ? many === from : from.length > to.length; var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]); var animateCount = 0; for (var i = 0; i < morphBatches.length; i++) { animateCount += morphBatches[i].many.length; } var animateIndex = 0; for (var i = 0; i < morphBatches.length; i++) { morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount); animateIndex += morphBatches[i].many.length; } } function getPathList(elements) { if (!elements) { return []; } if (isArray$1(elements)) { var pathList_1 = []; for (var i = 0; i < elements.length; i++) { pathList_1.push(getPathList(elements[i])); } return pathList_1; } var pathList = []; elements.traverse(function(el) { if (el instanceof Path$1 && !el.disableMorphing && !el.invisible && !el.ignore) { pathList.push(el); } }); return pathList; } var DATA_COUNT_THRESHOLD = 1e4; var getUniversalTransitionGlobalStore = makeInner(); function getGroupIdDimension(data) { var dimensions = data.dimensions; for (var i = 0; i < dimensions.length; i++) { var dimInfo = data.getDimensionInfo(dimensions[i]); if (dimInfo && dimInfo.otherDims.itemGroupId === 0) { return dimensions[i]; } } } function flattenDataDiffItems(list2) { var items = []; each$g(list2, function(seriesInfo) { var data = seriesInfo.data; if (data.count() > DATA_COUNT_THRESHOLD) { return; } var indices = data.getIndices(); var groupDim = getGroupIdDimension(data); for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) { items.push({ data, dim: seriesInfo.dim || groupDim, divide: seriesInfo.divide, dataIndex }); } }); return items; } function fadeInElement(newEl, newSeries, newIndex) { newEl.traverse(function(el) { if (el instanceof Path$1) { initProps(el, { style: { opacity: 0 } }, newSeries, { dataIndex: newIndex, isFrom: true }); } }); } function removeEl(el) { if (el.parent) { var computedTransform = el.getComputedTransform(); el.setLocalTransform(computedTransform); el.parent.remove(el); } } function stopAnimation(el) { el.stopAnimation(); if (el.isGroup) { el.traverse(function(child) { child.stopAnimation(); }); } } function animateElementStyles(el, dataIndex, seriesModel) { var animationConfig = getAnimationConfig("update", seriesModel, dataIndex); animationConfig && el.traverse(function(child) { if (child instanceof Displayable$1) { var oldStyle = getOldStyle(child); if (oldStyle) { child.animateFrom({ style: oldStyle }, animationConfig); } } }); } function isAllIdSame(oldDiffItems, newDiffItems) { var len2 = oldDiffItems.length; if (len2 !== newDiffItems.length) { return false; } for (var i = 0; i < len2; i++) { var oldItem = oldDiffItems[i]; var newItem = newDiffItems[i]; if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) { return false; } } return true; } function transitionBetween(oldList, newList, api) { var oldDiffItems = flattenDataDiffItems(oldList); var newDiffItems = flattenDataDiffItems(newList); function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) { if (rawFrom || from) { to.animateFrom({ style: (rawFrom || from).style }, animationCfg); } } function findKeyDim(items) { for (var i2 = 0; i2 < items.length; i2++) { if (items[i2].dim) { return items[i2].dim; } } } var oldKeyDim = findKeyDim(oldDiffItems); var newKeyDim = findKeyDim(newDiffItems); var hasMorphAnimation = false; function createKeyGetter(isOld, onlyGetId) { return function(diffItem) { var data = diffItem.data; var dataIndex = diffItem.dataIndex; if (onlyGetId) { return data.getId(dataIndex); } var dataGroupId = data.hostModel && data.hostModel.get("dataGroupId"); var keyDim = isOld ? oldKeyDim || newKeyDim : newKeyDim || oldKeyDim; var dimInfo = keyDim && data.getDimensionInfo(keyDim); var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta; if (dimInfo) { var key2 = data.get(dimInfo.name, dataIndex); if (dimOrdinalMeta) { return dimOrdinalMeta.categories[key2] || key2 + ""; } return key2 + ""; } var itemVal = data.getRawDataItem(dataIndex); if (itemVal && itemVal.groupId) { return itemVal.groupId + ""; } return dataGroupId || data.getId(dataIndex); }; } var useId = isAllIdSame(oldDiffItems, newDiffItems); var isElementStillInChart = {}; if (!useId) { for (var i = 0; i < newDiffItems.length; i++) { var newItem = newDiffItems[i]; var el = newItem.data.getItemGraphicEl(newItem.dataIndex); if (el) { isElementStillInChart[el.id] = true; } } } function updateOneToOne(newIndex, oldIndex) { var oldItem = oldDiffItems[oldIndex]; var newItem2 = newDiffItems[newIndex]; var newSeries = newItem2.data.hostModel; var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); var newEl = newItem2.data.getItemGraphicEl(newItem2.dataIndex); if (oldEl === newEl) { newEl && animateElementStyles(newEl, newItem2.dataIndex, newSeries); return; } if (oldEl && isElementStillInChart[oldEl.id]) { return; } if (newEl) { stopAnimation(newEl); if (oldEl) { stopAnimation(oldEl); removeEl(oldEl); hasMorphAnimation = true; applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); } else { fadeInElement(newEl, newSeries, newIndex); } } } new DataDiffer$1(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) { var newItem2 = newDiffItems[newIndex]; var newData = newItem2.data; var newSeries = newData.hostModel; var newEl = newData.getItemGraphicEl(newItem2.dataIndex); var oldElsList = filter(map$1(oldIndices, function(idx) { return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex); }), function(oldEl) { return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id]; }); if (newEl) { stopAnimation(newEl); if (oldElsList.length) { each$g(oldElsList, function(oldEl) { stopAnimation(oldEl); removeEl(oldEl); }); hasMorphAnimation = true; applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); } else { fadeInElement(newEl, newSeries, newItem2.dataIndex); } } }).updateOneToMany(function(newIndices, oldIndex) { var oldItem = oldDiffItems[oldIndex]; var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); if (oldEl && isElementStillInChart[oldEl.id]) { return; } var newElsList = filter(map$1(newIndices, function(idx) { return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex); }), function(el2) { return el2 && el2 !== oldEl; }); var newSeris = newDiffItems[newIndices[0]].data.hostModel; if (newElsList.length) { each$g(newElsList, function(newEl) { return stopAnimation(newEl); }); if (oldEl) { stopAnimation(oldEl); removeEl(oldEl); hasMorphAnimation = true; applyMorphAnimation(getPathList(oldEl), getPathList(newElsList), oldItem.divide, newSeris, newIndices[0], updateMorphingPathProps); } else { each$g(newElsList, function(newEl) { return fadeInElement(newEl, newSeris, newIndices[0]); }); } } }).updateManyToMany(function(newIndices, oldIndices) { new DataDiffer$1(oldIndices, newIndices, function(rawIdx) { return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex); }, function(rawIdx) { return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex); }).update(function(newIndex, oldIndex) { updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]); }).execute(); }).execute(); if (hasMorphAnimation) { each$g(newList, function(_a2) { var data = _a2.data; var seriesModel = data.hostModel; var view2 = seriesModel && api.getViewOfSeriesModel(seriesModel); var animationCfg = getAnimationConfig("update", seriesModel, 0); if (view2 && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) { view2.group.traverse(function(el2) { if (el2 instanceof Path$1 && !el2.animators.length) { el2.animateFrom({ style: { opacity: 0 } }, animationCfg); } }); } }); } } function getSeriesTransitionKey(series) { var seriesKey = series.getModel("universalTransition").get("seriesKey"); if (!seriesKey) { return series.id; } return seriesKey; } function convertArraySeriesKeyToString(seriesKey) { if (isArray$1(seriesKey)) { return seriesKey.sort().join(","); } return seriesKey; } function getDivideShapeFromData(data) { if (data.hostModel) { return data.hostModel.getModel("universalTransition").get("divideShape"); } } function findTransitionSeriesBatches(globalStore, params) { var updateBatches = createHashMap(); var oldDataMap = createHashMap(); var oldDataMapForSplit = createHashMap(); each$g(globalStore.oldSeries, function(series, idx) { var oldData = globalStore.oldData[idx]; var transitionKey = getSeriesTransitionKey(series); var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); oldDataMap.set(transitionKeyStr, oldData); if (isArray$1(transitionKey)) { each$g(transitionKey, function(key2) { oldDataMapForSplit.set(key2, { data: oldData, key: transitionKeyStr }); }); } }); each$g(params.updatedSeries, function(series) { if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) { var newData = series.getData(); var transitionKey = getSeriesTransitionKey(series); var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); var oldData = oldDataMap.get(transitionKeyStr); if (oldData) { updateBatches.set(transitionKeyStr, { oldSeries: [{ divide: getDivideShapeFromData(oldData), data: oldData }], newSeries: [{ divide: getDivideShapeFromData(newData), data: newData }] }); } else { if (isArray$1(transitionKey)) { var oldSeries_1 = []; each$g(transitionKey, function(key2) { var oldData2 = oldDataMap.get(key2); if (oldData2) { oldSeries_1.push({ divide: getDivideShapeFromData(oldData2), data: oldData2 }); } }); if (oldSeries_1.length) { updateBatches.set(transitionKeyStr, { oldSeries: oldSeries_1, newSeries: [{ data: newData, divide: getDivideShapeFromData(newData) }] }); } } else { var oldData_1 = oldDataMapForSplit.get(transitionKey); if (oldData_1) { var batch = updateBatches.get(oldData_1.key); if (!batch) { batch = { oldSeries: [{ data: oldData_1.data, divide: getDivideShapeFromData(oldData_1.data) }], newSeries: [] }; updateBatches.set(oldData_1.key, batch); } batch.newSeries.push({ data: newData, divide: getDivideShapeFromData(newData) }); } } } } }); return updateBatches; } function querySeries(series, finder) { for (var i = 0; i < series.length; i++) { var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id; if (found) { return i; } } } function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) { var from = []; var to = []; each$g(normalizeToArray(transitionOpt.from), function(finder) { var idx = querySeries(globalStore.oldSeries, finder); if (idx >= 0) { from.push({ data: globalStore.oldData[idx], divide: getDivideShapeFromData(globalStore.oldData[idx]), dim: finder.dimension }); } }); each$g(normalizeToArray(transitionOpt.to), function(finder) { var idx = querySeries(params.updatedSeries, finder); if (idx >= 0) { var data = params.updatedSeries[idx].getData(); to.push({ data, divide: getDivideShapeFromData(data), dim: finder.dimension }); } }); if (from.length > 0 && to.length > 0) { transitionBetween(from, to, api); } } function installUniversalTransition(registers) { registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) { each$g(normalizeToArray(params.seriesTransition), function(transOpt) { each$g(normalizeToArray(transOpt.to), function(finder) { var series = params.updatedSeries; for (var i = 0; i < series.length; i++) { if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) { series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true; } } }); }); }); registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) { var globalStore = getUniversalTransitionGlobalStore(api); if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) { var transitionOpt = params.seriesTransition; if (transitionOpt) { each$g(normalizeToArray(transitionOpt), function(opt) { transitionSeriesFromOpt(opt, globalStore, params, api); }); } else { var updateBatches_1 = findTransitionSeriesBatches(globalStore, params); each$g(updateBatches_1.keys(), function(key2) { var batch = updateBatches_1.get(key2); transitionBetween(batch.oldSeries, batch.newSeries, api); }); } each$g(params.updatedSeries, function(series) { if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) { series[SERIES_UNIVERSAL_TRANSITION_PROP] = false; } }); } var allSeries = ecModel.getSeries(); var savedSeries = globalStore.oldSeries = []; var savedData = globalStore.oldData = []; for (var i = 0; i < allSeries.length; i++) { var data = allSeries[i].getData(); if (data.count() < DATA_COUNT_THRESHOLD) { savedSeries.push(allSeries[i]); savedData.push(data); } } }); } use([install$R]); use([install$S]); use([install$Q, install$P, install$O, install$M, install$K, install$I, install$H, install$G, install$F, install$E, install$D, install$B, install$A, install$z, install$y, install$x, install$w, install$v, install$u, install$t, install$s, install$r]); use(install$p); use(install$o); use(install$J); use(install$n); use(install$C); use(install$m); use(install$l); use(install$j); use(install$i); use(install$q); use(install$h); use(install$g); use(install$f); use(install$e); use(install$d); use(install$c); use(install$9); use(install$6); use(install$8); use(install$7); use(install$3); use(install$5); use(install$4); use(install$2); use(install$1); use(install); use(installUniversalTransition); use(installLabelLayout); var echarts = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", registerLocale, version, dependencies, PRIORITY, init: init$1, connect, disConnect, disconnect, dispose, getInstanceByDom, getInstanceById, registerTheme, registerPreprocessor, registerProcessor, registerPostInit, registerPostUpdate, registerUpdateLifecycle, registerAction, registerCoordinateSystem, getCoordinateSystemDimensions, registerLayout, registerVisual, registerLoading, setCanvasCreator, registerMap, getMap, registerTransform, dataTool, throttle, use, parseGeoJSON, parseGeoJson: parseGeoJSON, env: env$1, Model: Model$1, Axis: Axis$1, innerDrawElementOnCanvas: brushSingle, zrender, matrix, vector, zrUtil: util$1, color, helper, number, time, graphic, format, util, List: SeriesData$1, ComponentModel: ComponentModel$1, ComponentView: ComponentView$1, SeriesModel: SeriesModel$1, ChartView: ChartView$1, extendComponentModel, extendComponentView, extendSeriesModel, extendChartView }); const _sfc_main$1 = defineComponent({ name: "EsCharts", data() { return { echart: {}, chartDocument: {} }; }, watch: {}, computed: {}, props: { echartsId: null, eWidth: null, eHeight: null, theme: null, options: null }, components: {}, setup(props) { const echart = echarts; const divListen = (div2, chart, t) => { }; let attrs = ref(); onMounted(() => { initChart(); }); onUnmounted(() => { echart.dispose; }); const initChart = () => { nextTick(() => { const chart = echart.init(document.getElementById(props.echartsId), props.theme); attrs.value = chart; divListen(props.echartsId); chart && chart.clear(); props.options && chart.setOption(props.options, true); watch$1(props.options, () => { chart && chart.clear(); props.options && chart.setOption(props.options, true); }); }); }; return { attrs }; }, methods: {} }); const _hoisted_1$1 = ["id"]; function _sfc_render$1(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", { id: _ctx2.echartsId || "EsCharts", style: normalizeStyle$1({ width: _ctx2.eWidth || "300px", height: _ctx2.eHeight || "300px" }) }, null, 12, _hoisted_1$1); } var EsCharts = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]); const IconArr = Icons; const EsComponent = { install(app) { app.component("EsForm", EsForm); app.component("EsItem", EsItem); app.component("EsTable", EsTable); app.component("Pagination", Pagination); app.component("EsCharts", EsCharts); Object.keys(Icons).forEach((key2) => { app.component(key2, IconArr[key2]); }); } }; var index_vue_vue_type_style_index_0_lang = ""; var index_vue_vue_type_style_index_1_scope_true_lang = ""; const _sfc_main = { name: "EsContainer", props: { title: null, md: null }, data() { return { isPC: true }; }, mounted() { }, methods: { getIsPc() { if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { return false; } else { return true; } } } }; const _hoisted_1 = { class: "title" }; const _hoisted_2 = /* @__PURE__ */ createElementVNode("span", { class: "border" }, null, -1); function _sfc_render(_ctx2, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", { class: normalizeClass($data.isPC ? "EssentialContainer" : "EssentialContainer-m") }, [ createElementVNode("div", _hoisted_1, [ createElementVNode("span", null, [ createTextVNode(toDisplayString($props.title), 1), _hoisted_2 ]), renderSlot(_ctx2.$slots, "rightBox") ]), createElementVNode("div", { class: normalizeClass($props.md ? "context_d" : "context") }, [ renderSlot(_ctx2.$slots, "default") ], 2) ], 2); } var EsContainer = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); const EsContainers = { install(app) { app.component("EsContainer", EsContainer); } }; const Essential = { install(app) { var _a2, _b2; (_a2 = EsComponent.install) == null ? void 0 : _a2.call(EsComponent, app); (_b2 = EsContainers.install) == null ? void 0 : _b2.call(EsContainers, app); } }; export { EsCharts, EsComponent, EsContainer, EsContainers, EsForm, EsItem, EsTable, Pagination, Essential as default };