(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["F2"] = factory(); else root["F2"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 251); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireWildcard = __webpack_require__(49); exports.__esModule = true; var _exportNames = { isObjectValueEqual: true, parsePadding: true, directionEnabled: true, upperFirst: true, lowerFirst: true, isString: true, isNumber: true, isBoolean: true, isFunction: true, isDate: true, isArray: true, isNil: true, isObject: true, isPlainObject: true, isEqual: true, deepMix: true, mix: true, each: true, uniq: true, find: true, Array: true }; exports.isObjectValueEqual = isObjectValueEqual; exports.parsePadding = parsePadding; exports.directionEnabled = directionEnabled; exports.Array = void 0; var _util = __webpack_require__(20); exports.upperFirst = _util.upperFirst; exports.lowerFirst = _util.lowerFirst; exports.isString = _util.isString; exports.isNumber = _util.isNumber; exports.isBoolean = _util.isBoolean; exports.isFunction = _util.isFunction; exports.isDate = _util.isDate; exports.isArray = _util.isArray; exports.isNil = _util.isNil; exports.isObject = _util.isObject; exports.isPlainObject = _util.isPlainObject; exports.isEqual = _util.isEqual; exports.deepMix = _util.deepMix; exports.mix = _util.mix; exports.each = _util.each; exports.uniq = _util.uniq; exports.find = _util.find; var ArrayUtil = _interopRequireWildcard(__webpack_require__(75)); exports.Array = ArrayUtil; var _dom = __webpack_require__(62); Object.keys(_dom).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; exports[key] = _dom[key]; }); /** * @fileOverview Utility for F2 * @author dxq613 @gmail.com * @author sima.zhang1990@gmail.com */ function isObjectValueEqual(a, b) { // for vue.js a = Object.assign({}, a); b = Object.assign({}, b); var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length !== bProps.length) { return false; } for (var i = 0, len = aProps.length; i < len; i++) { var propName = aProps[i]; if (a[propName] !== b[propName]) { return false; } } return true; } function parsePadding(padding) { var top; var right; var bottom; var left; if ((0, _util.isNumber)(padding) || (0, _util.isString)(padding)) { top = bottom = left = right = padding; } else if ((0, _util.isArray)(padding)) { top = padding[0]; right = !(0, _util.isNil)(padding[1]) ? padding[1] : padding[0]; bottom = !(0, _util.isNil)(padding[2]) ? padding[2] : padding[0]; left = !(0, _util.isNil)(padding[3]) ? padding[3] : right; } return [top, right, bottom, left]; } function directionEnabled(mode, dir) { if (mode === undefined) { return true; } else if (typeof mode === 'string') { return mode.indexOf(dir) !== -1; } return false; } /***/ }), /* 1 */ /***/ (function(module, exports) { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(50); var assertThisInitialized = __webpack_require__(22); function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return assertThisInitialized(self); } module.exports = _possibleConstructorReturn; /***/ }), /* 3 */ /***/ (function(module, exports) { function _getPrototypeOf(o) { module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } module.exports = _getPrototypeOf; /***/ }), /* 4 */ /***/ (function(module, exports) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } module.exports = _inheritsLoose; /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /* harmony default export */ __webpack_exports__["a"] = (function (value) { return Array.isArray ? Array.isArray(value) : Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Array'); }); /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Theme = __webpack_require__(78); var Util = __webpack_require__(0); var Global = { version: '3.6.3', scales: {}, widthRatio: { column: 1 / 2, rose: 0.999999, multiplePie: 3 / 4 }, lineDash: [4, 4] }; Global.setTheme = function (theme) { Util.deepMix(this, theme); }; Global.setTheme(Theme); module.exports = Global; /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var isArrayLike = function (value) { /** * isArrayLike([1, 2, 3]) => true * isArrayLike(document.body.children) => true * isArrayLike('abc') => true * isArrayLike(Function) => false */ return value !== null && typeof value !== 'function' && isFinite(value.length); }; /* harmony default export */ __webpack_exports__["a"] = (isArrayLike); /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(29); function each(elements, func) { if (!elements) { return; } var rst; if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(elements)) { for (var i = 0, len = elements.length; i < len; i++) { rst = func(elements[i], i); if (rst === false) { break; } } } else if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__["a" /* default */])(elements)) { for (var k in elements) { if (elements.hasOwnProperty(k)) { rst = func(elements[k], k); if (rst === false) { break; } } } } } /* harmony default export */ __webpack_exports__["a"] = (each); /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /** * 是否为函数 * @param {*} fn 对象 * @return {Boolean} 是否函数 */ /* harmony default export */ __webpack_exports__["a"] = (function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Function'); }); /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Element = __webpack_require__(46); var Shape = /*#__PURE__*/function (_Element) { (0, _inheritsLoose2["default"])(Shape, _Element); var _super = _createSuper(Shape); function Shape() { return _Element.apply(this, arguments) || this; } var _proto = Shape.prototype; _proto._initProperties = function _initProperties() { this._attrs = { zIndex: 0, visible: true, destroyed: false, isShape: true, attrs: {} }; }; _proto.getType = function getType() { return this._attrs.type; }; _proto.drawInner = function drawInner(context) { var self = this; var attrs = self.get('attrs'); self.createPath(context); var originOpacity = context.globalAlpha; if (self.hasFill()) { var fillOpacity = attrs.fillOpacity; if (!Util.isNil(fillOpacity) && fillOpacity !== 1) { context.globalAlpha = fillOpacity; context.fill(); context.globalAlpha = originOpacity; } else { context.fill(); } } if (self.hasStroke()) { var lineWidth = attrs.lineWidth; if (lineWidth > 0) { var strokeOpacity = attrs.strokeOpacity; if (!Util.isNil(strokeOpacity) && strokeOpacity !== 1) { context.globalAlpha = strokeOpacity; } context.stroke(); } } }; _proto.getBBox = function getBBox() { var bbox = this._attrs.bbox; if (!bbox) { bbox = this.calculateBox(); if (bbox) { bbox.x = bbox.minX; bbox.y = bbox.minY; bbox.width = bbox.maxX - bbox.minX; bbox.height = bbox.maxY - bbox.minY; } this._attrs.bbox = bbox; } return bbox; }; _proto.calculateBox = function calculateBox() { return null; }; _proto.createPath = function createPath() {}; return Shape; }(Element); module.exports = Shape; /***/ }), /* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var toString = {}.toString; var isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; }; /* harmony default export */ __webpack_exports__["a"] = (isType); /***/ }), /* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /** * 判断是否数字 * @return {Boolean} 是否数字 */ var isNumber = function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Number'); }; /* harmony default export */ __webpack_exports__["a"] = (isNumber); /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * 2 Dimensional Vector * @module vector2 */ module.exports = { /** * Creates a new, empty vector2 * * @return {vector2} a new 2D vector */ create: function create() { return [0, 0]; }, /** * Calculates the length of a vector2 * * @param {vector2} v vector to calculate length of * @return {Number} length of v */ length: function length(v) { var x = v[0]; var y = v[1]; return Math.sqrt(x * x + y * y); }, /** * Normalize a vector2 * * @param {vector2} out the receiving vector * @param {vector2} v vector to normalize * @return {vector2} out */ normalize: function normalize(out, v) { var len = this.length(v); if (len === 0) { out[0] = 0; out[1] = 0; } else { out[0] = v[0] / len; out[1] = v[1] / len; } return out; }, /** * Adds two vector2's * * @param {vector2} out the receiving vector * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {vector2} out */ add: function add(out, v1, v2) { out[0] = v1[0] + v2[0]; out[1] = v1[1] + v2[1]; return out; }, /** * Subtracts vector v2 from vector v1 * * @param {vector2} out the receiving vector * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {vector2} out */ sub: function sub(out, v1, v2) { out[0] = v1[0] - v2[0]; out[1] = v1[1] - v2[1]; return out; }, /** * Scales a vector2 by a scalar number * * @param {vector2} out the receiving vector * @param {vector2} v the vector to scale * @param {Number} s amount to scale the vector by * @return {vector2} out */ scale: function scale(out, v, s) { out[0] = v[0] * s; out[1] = v[1] * s; return out; }, /** * Calculates the dot product of two vector2's * * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {Number} dot product of v1 and v2 */ dot: function dot(v1, v2) { return v1[0] * v2[0] + v1[1] * v2[1]; }, /** * Calculates the direction of two vector2's * * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {Boolean} the direction of v1 and v2 */ direction: function direction(v1, v2) { return v1[0] * v2[1] - v2[0] * v1[1]; }, /** * Calculates the angle of two vector2's * * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {Number} angle of v1 and v2 */ angle: function angle(v1, v2) { var theta = this.dot(v1, v2) / (this.length(v1) * this.length(v2)); return Math.acos(theta); }, /** * Calculates the angle of two vector2's with direction * * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @param {Boolean} direction the direction of two vector2's * @return {Number} angle of v1 and v2 */ angleTo: function angleTo(v1, v2, direction) { var angle = this.angle(v1, v2); var angleLargeThanPI = this.direction(v1, v2) >= 0; if (direction) { if (angleLargeThanPI) { return Math.PI * 2 - angle; } return angle; } if (angleLargeThanPI) { return angle; } return Math.PI * 2 - angle; }, /** * whether a vector2 is zero vector * * @param {vector2} v vector to calculate * @return {Boolean} is or not a zero vector */ zero: function zero(v) { return v[0] === 0 && v[1] === 0; }, /** * Calculates the euclidian distance between two vector2's * * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {Number} distance between a and b */ distance: function distance(v1, v2) { var x = v2[0] - v1[0]; var y = v2[1] - v1[1]; return Math.sqrt(x * x + y * y); }, /** * Creates a new vector2 initialized with values from an existing vector * * @param {vector2} v vector to clone * @return {Array} a new 2D vector */ clone: function clone(v) { return [v[0], v[1]]; }, /** * Return the minimum of two vector2's * * @param {vector2} out the receiving vector * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {vector2} out */ min: function min(out, v1, v2) { out[0] = Math.min(v1[0], v2[0]); out[1] = Math.min(v1[1], v2[1]); return out; }, /** * Return the maximum of two vector2's * * @param {vector2} out the receiving vector * @param {vector2} v1 the first operand * @param {vector2} v2 the second operand * @return {vector2} out */ max: function max(out, v1, v2) { out[0] = Math.max(v1[0], v2[0]); out[1] = Math.max(v1[1], v2[1]); return out; }, /** * Transforms the vector2 with a mat2d * * @param {vector2} out the receiving vector * @param {vector2} v the vector to transform * @param {mat2d} m matrix to transform with * @return {vector2} out */ transformMat2d: function transformMat2d(out, v, m) { var x = v[0]; var y = v[1]; out[0] = m[0] * x + m[2] * y + m[4]; out[1] = m[1] * x + m[3] * y + m[5]; return out; } }; /***/ }), /* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // isFinite, var isNil = function (value) { /** * isNil(null) => true * isNil() => true */ return value === null || value === undefined; }; /* harmony default export */ __webpack_exports__["a"] = (isNil); /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(44); var isArray = __webpack_require__(34); var each = function each(elements, func) { if (!elements) { return; } var rst = void 0; if (isArray(elements)) { for (var i = 0, len = elements.length; i < len; i++) { rst = func(elements[i], i); if (rst === false) { break; } } } else if (isObject(elements)) { for (var k in elements) { if (elements.hasOwnProperty(k)) { rst = func(elements[k], k); if (rst === false) { break; } } } } }; module.exports = each; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var G = { Canvas: __webpack_require__(176), Group: __webpack_require__(67), Shape: __webpack_require__(10), Matrix: __webpack_require__(31), Vector2: __webpack_require__(13) }; __webpack_require__(180); __webpack_require__(181); __webpack_require__(182); __webpack_require__(183); __webpack_require__(184); __webpack_require__(185); __webpack_require__(186); __webpack_require__(187); __webpack_require__(189); module.exports = G; /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireWildcard = __webpack_require__(49); var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var Attr = _interopRequireWildcard(__webpack_require__(161)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Base = __webpack_require__(63); var GROUP_ATTRS = ['color', 'size', 'shape']; var FIELD_ORIGIN = '_origin'; var FIELD_ORIGIN_Y = '_originY'; var Global = __webpack_require__(6); var GeometryShape = __webpack_require__(19); var Adjust = __webpack_require__(33); function parseFields(field) { if (Util.isArray(field)) { return field; } if (Util.isString(field)) { return field.split('*'); } return [field]; } /** * The parent class for Geometry * @class Geom */ var Geom = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Geom, _Base); var _super = _createSuper(Geom); function Geom() { return _Base.apply(this, arguments) || this; } var _proto = Geom.prototype; _proto.getDefaultCfg = function getDefaultCfg() { return { /** * geometry type * @type {String} */ type: null, /** * the data of geometry * @type {Array} */ data: null, /** * the attrs of geo,etry * @type {Object} */ attrs: {}, scales: {}, /** * group for storing the shapes * @type {Canvas} */ container: null, /** * style options * @type {Object} */ styleOptions: null, chart: null, shapeType: '', /** * wether to generate key points for each shape * @protected * @type {Boolean} */ generatePoints: false, attrOptions: {}, sortable: false, startOnZero: true, visible: true, connectNulls: false, // 是否丢弃没有值的分组。 ignoreEmptyGroup: false }; }; _proto.init = function init() { var self = this; self._initAttrs(); self._processData(); }; _proto._getGroupScales = function _getGroupScales() { var self = this; var scales = []; Util.each(GROUP_ATTRS, function (attrName) { var attr = self.getAttr(attrName); if (attr) { var attrScales = attr.scales; Util.each(attrScales, function (scale) { if (scale && scale.isCategory && scales.indexOf(scale) === -1) { scales.push(scale); } }); } }); return scales; }; _proto._groupData = function _groupData(data) { var self = this; var colDefs = self.get('colDefs'); var groupScales = self._getGroupScales(); if (groupScales.length) { var appendConditions = {}; var names = []; Util.each(groupScales, function (scale) { var field = scale.field; names.push(field); if (colDefs && colDefs[field] && colDefs[field].values) { // users have defined appendConditions[scale.field] = colDefs[field].values; } }); return Util.Array.group(data, names, appendConditions); } return [data]; }; _proto._setAttrOptions = function _setAttrOptions(attrName, attrCfg) { var options = this.get('attrOptions'); options[attrName] = attrCfg; var attrs = this.get('attrs'); // 说明已经初始化过了 if (Object.keys(attrs).length) { this._createAttr(attrName, attrCfg); } }; _proto._createAttrOption = function _createAttrOption(attrName, field, cfg, defaultValues) { var attrCfg = {}; attrCfg.field = field; if (cfg) { if (Util.isFunction(cfg)) { attrCfg.callback = cfg; } else { attrCfg.values = cfg; } } else { attrCfg.values = defaultValues; } this._setAttrOptions(attrName, attrCfg); }; _proto._createAttr = function _createAttr(type, option) { var self = this; var attrs = self.get('attrs'); var coord = self.get('coord'); var className = Util.upperFirst(type); var fields = parseFields(option.field); if (type === 'position') { option.coord = coord; } var scales = []; for (var i = 0, len = fields.length; i < len; i++) { var field = fields[i]; var scale = self._createScale(field); scales.push(scale); } if (type === 'position') { var yScale = scales[1]; // 饼图的处理,但是还不知道为啥 if (coord.type === 'polar' && coord.transposed && self.hasAdjust('stack')) { if (yScale.values.length) { yScale.change({ nice: false, min: 0, max: Math.max.apply(null, yScale.values) }); } } } option.scales = scales; var attr = new Attr[className](option); attrs[type] = attr; return attr; }; _proto._initAttrs = function _initAttrs() { var self = this; var attrOptions = self.get('attrOptions'); for (var type in attrOptions) { if (attrOptions.hasOwnProperty(type)) { this._createAttr(type, attrOptions[type]); } } }; _proto._createScale = function _createScale(field) { var scales = this.get('scales'); var scale = scales[field]; if (!scale) { scale = this.get('chart').createScale(field); scales[field] = scale; } return scale; }; _proto._processData = function _processData() { var self = this; var data = this.get('data'); var dataArray = []; var groupedArray = this._groupData(data); if (this.get('ignoreEmptyGroup')) { var yScale = this.getYScale(); groupedArray = groupedArray.filter(function (group) { return group.some(function (item) { return typeof item[yScale.field] !== 'undefined'; }); }); } for (var i = 0, len = groupedArray.length; i < len; i++) { var subData = groupedArray[i]; var tempData = self._saveOrigin(subData); if (this.hasAdjust('dodge')) { self._numberic(tempData); } dataArray.push(tempData); } if (self.get('adjust')) { self._adjustData(dataArray); } if (self.get('sortable')) { self._sort(dataArray); } self.set('dataArray', dataArray); return dataArray; }; _proto._saveOrigin = function _saveOrigin(data) { var rst = []; for (var i = 0, len = data.length; i < len; i++) { var origin = data[i]; var obj = {}; for (var k in origin) { obj[k] = origin[k]; } obj[FIELD_ORIGIN] = origin; rst.push(obj); } return rst; }; _proto._numberic = function _numberic(data) { var positionAttr = this.getAttr('position'); var scales = positionAttr.scales; for (var j = 0, len = data.length; j < len; j++) { var obj = data[j]; var count = Math.min(2, scales.length); for (var i = 0; i < count; i++) { var scale = scales[i]; if (scale.isCategory) { var field = scale.field; obj[field] = scale.translate(obj[field]); } } } }; _proto._adjustData = function _adjustData(dataArray) { var self = this; var adjust = self.get('adjust'); if (adjust) { var adjustType = Util.upperFirst(adjust.type); if (!Adjust[adjustType]) { throw new Error('not support such adjust : ' + adjust); } var xScale = self.getXScale(); var yScale = self.getYScale(); var cfg = Util.mix({ xField: xScale.field, yField: yScale.field }, adjust); var adjustObject = new Adjust[adjustType](cfg); adjustObject.processAdjust(dataArray); if (adjustType === 'Stack') { self._updateStackRange(yScale.field, yScale, dataArray); } } }; _proto._updateStackRange = function _updateStackRange(field, scale, dataArray) { var mergeArray = Util.Array.merge(dataArray); var min = scale.min; var max = scale.max; for (var i = 0, len = mergeArray.length; i < len; i++) { var obj = mergeArray[i]; var tmpMin = Math.min.apply(null, obj[field]); var tmpMax = Math.max.apply(null, obj[field]); if (tmpMin < min) { min = tmpMin; } if (tmpMax > max) { max = tmpMax; } } if (min < scale.min || max > scale.max) { scale.change({ min: min, max: max }); } }; _proto._sort = function _sort(mappedArray) { var self = this; var xScale = self.getXScale(); var field = xScale.field, type = xScale.type; if (type !== 'identity' && xScale.values.length > 1) { Util.each(mappedArray, function (itemArr) { itemArr.sort(function (obj1, obj2) { if (type === 'timeCat') { return xScale._toTimeStamp(obj1[FIELD_ORIGIN][field]) - xScale._toTimeStamp(obj2[FIELD_ORIGIN][field]); } return xScale.translate(obj1[FIELD_ORIGIN][field]) - xScale.translate(obj2[FIELD_ORIGIN][field]); }); }); } self.set('hasSorted', true); self.set('dataArray', mappedArray); }; _proto.paint = function paint() { var self = this; var dataArray = self.get('dataArray'); var mappedArray = []; var shapeFactory = self.getShapeFactory(); shapeFactory.setCoord(self.get('coord')); self._beforeMapping(dataArray); for (var i = 0, len = dataArray.length; i < len; i++) { var data = dataArray[i]; if (data.length) { data = self._mapping(data); mappedArray.push(data); self.draw(data, shapeFactory); } } self.set('dataArray', mappedArray); }; _proto.getShapeFactory = function getShapeFactory() { var shapeFactory = this.get('shapeFactory'); if (!shapeFactory) { var shapeType = this.get('shapeType'); shapeFactory = GeometryShape.getShapeFactory(shapeType); this.set('shapeFactory', shapeFactory); } return shapeFactory; }; _proto._mapping = function _mapping(data) { var self = this; var attrs = self.get('attrs'); var yField = self.getYScale().field; // 用来缓存转换的值,减少mapping耗时 var mappedCache = {}; for (var k in attrs) { if (attrs.hasOwnProperty(k)) { var attr = attrs[k]; var names = attr.names; var scales = attr.scales; for (var i = 0, len = data.length; i < len; i++) { var record = data[i]; record[FIELD_ORIGIN_Y] = record[yField]; // 获取视觉属性对应的value值 // 位置的缓存命中率低,还是每次单独计算 if (attr.type === 'position') { var values = self._getAttrValues(attr, record); for (var j = 0, _len = values.length; j < _len; j++) { var val = values[j]; var name = names[j]; record[name] = Util.isArray(val) && val.length === 1 ? val[0] : val; } } else { // 除了position其他都只有一项 var _name = names[0]; var field = scales[0].field; var value = record[field]; var key = "" + _name + value; var _values = mappedCache[key]; if (!_values) { _values = self._getAttrValues(attr, record); mappedCache[key] = _values; } record[_name] = _values[0]; } } } } return data; }; _proto._getAttrValues = function _getAttrValues(attr, record) { var scales = attr.scales; var params = []; for (var i = 0, len = scales.length; i < len; i++) { var scale = scales[i]; var field = scale.field; if (scale.type === 'identity') { params.push(scale.value); } else { params.push(record[field]); } } var values = attr.mapping.apply(attr, params); return values; }; _proto.getAttrValue = function getAttrValue(attrName, record) { var attr = this.getAttr(attrName); var rst = null; if (attr) { var values = this._getAttrValues(attr, record); rst = values[0]; } return rst; }; _proto._beforeMapping = function _beforeMapping(dataArray) { var self = this; if (self.get('generatePoints')) { self._generatePoints(dataArray); } }; _proto.isInCircle = function isInCircle() { var coord = this.get('coord'); return coord && coord.isPolar; }; _proto.getCallbackCfg = function getCallbackCfg(fields, cfg, origin) { if (!fields) { return cfg; } var tmpCfg = {}; var params = fields.map(function (field) { return origin[field]; }); Util.each(cfg, function (v, k) { if (Util.isFunction(v)) { tmpCfg[k] = v.apply(null, params); } else { tmpCfg[k] = v; } }); return tmpCfg; }; _proto.getDrawCfg = function getDrawCfg(obj) { var self = this; var isInCircle = self.isInCircle(); var cfg = { origin: obj, x: obj.x, y: obj.y, color: obj.color, size: obj.size, shape: obj.shape, isInCircle: isInCircle, opacity: obj.opacity }; var styleOptions = self.get('styleOptions'); if (styleOptions && styleOptions.style) { cfg.style = self.getCallbackCfg(styleOptions.fields, styleOptions.style, obj[FIELD_ORIGIN]); } if (self.get('generatePoints')) { cfg.points = obj.points; cfg.nextPoints = obj.nextPoints; } if (isInCircle) { cfg.center = self.get('coord').center; } return cfg; }; _proto.draw = function draw(data, shapeFactory) { var self = this; var container = self.get('container'); var yScale = self.getYScale(); Util.each(data, function (obj, index) { if (yScale && Util.isNil(obj._origin[yScale.field])) { return; } obj.index = index; var cfg = self.getDrawCfg(obj); var shape = obj.shape; self.drawShape(shape, obj, cfg, container, shapeFactory); }); }; _proto.drawShape = function drawShape(shape, shapeData, cfg, container, shapeFactory) { var gShape = shapeFactory.drawShape(shape, cfg, container); if (gShape) { Util.each([].concat(gShape), function (s) { s.set('origin', shapeData); }); } }; _proto._generatePoints = function _generatePoints(dataArray) { var self = this; var shapeFactory = self.getShapeFactory(); var shapeAttr = self.getAttr('shape'); Util.each(dataArray, function (data) { for (var i = 0, len = data.length; i < len; i++) { var obj = data[i]; var cfg = self.createShapePointsCfg(obj); var shape = shapeAttr ? self._getAttrValues(shapeAttr, obj) : null; var points = shapeFactory.getShapePoints(shape, cfg); obj.points = points; } }); // 添加nextPoints Util.each(dataArray, function (data, index) { var nextData = dataArray[index + 1]; if (nextData) { data[0].nextPoints = nextData[0].points; } }); } /** * get the info of each shape * @protected * @param {Object} obj the data item * @return {Object} cfg return the result */ ; _proto.createShapePointsCfg = function createShapePointsCfg(obj) { var xScale = this.getXScale(); var yScale = this.getYScale(); var x = this._normalizeValues(obj[xScale.field], xScale); var y; if (yScale) { y = this._normalizeValues(obj[yScale.field], yScale); } else { y = obj.y ? obj.y : 0.1; } return { x: x, y: y, y0: yScale ? yScale.scale(this.getYMinValue()) : undefined }; }; _proto.getYMinValue = function getYMinValue() { var yScale = this.getYScale(); var min = yScale.min, max = yScale.max; var value; if (this.get('startOnZero')) { if (max <= 0 && min <= 0) { value = max; } else { value = min >= 0 ? min : 0; } } else { value = min; } return value; }; _proto._normalizeValues = function _normalizeValues(values, scale) { var rst = []; if (Util.isArray(values)) { for (var i = 0, len = values.length; i < len; i++) { var v = values[i]; rst.push(scale.scale(v)); } } else { rst = scale.scale(values); } return rst; }; _proto.getAttr = function getAttr(name) { return this.get('attrs')[name]; }; _proto.getXScale = function getXScale() { return this.getAttr('position').scales[0]; }; _proto.getYScale = function getYScale() { return this.getAttr('position').scales[1]; }; _proto.hasAdjust = function hasAdjust(adjust) { return this.get('adjust') && this.get('adjust').type === adjust; }; _proto._getSnap = function _getSnap(scale, item, arr) { var i = 0; var values; var yField = this.getYScale().field; // 叠加的维度 if (this.hasAdjust('stack') && scale.field === yField) { values = []; arr.forEach(function (obj) { values.push(obj[FIELD_ORIGIN_Y]); }); for (var len = values.length; i < len; i++) { if (values[0][0] > item) { break; } if (values[values.length - 1][1] <= item) { i = values.length - 1; break; } if (values[i][0] <= item && values[i][1] > item) { break; } } } else { values = scale.values; values.sort(function (a, b) { return a - b; }); for (var _len2 = values.length; i < _len2; i++) { // 如果只有1个点直接返回第1个点 if (_len2 <= 1) { break; } // 第1个点和第2个点之间 if ((values[0] + values[1]) / 2 > item) { break; } // 中间的点 if ((values[i - 1] + values[i]) / 2 <= item && (values[i + 1] + values[i]) / 2 > item) { break; } // 最后2个点 if ((values[values.length - 2] + values[values.length - 1]) / 2 <= item) { i = values.length - 1; break; } } } var result = values[i]; return result; }; _proto.getSnapRecords = function getSnapRecords(point) { var self = this; var coord = self.get('coord'); var xScale = self.getXScale(); var yScale = self.getYScale(); var xfield = xScale.field; var dataArray = self.get('dataArray'); if (!this.get('hasSorted')) { this._sort(dataArray); } var rst = []; var invertPoint = coord.invertPoint(point); var invertPointX = invertPoint.x; if (self.isInCircle() && !coord.transposed && invertPointX > (1 + xScale.rangeMax()) / 2) { invertPointX = xScale.rangeMin(); } var xValue = xScale.invert(invertPointX); if (!xScale.isCategory) { xValue = self._getSnap(xScale, xValue); } var tmp = []; dataArray.forEach(function (data) { data.forEach(function (obj) { var originValue = Util.isNil(obj[FIELD_ORIGIN]) ? obj[xfield] : obj[FIELD_ORIGIN][xfield]; if (self._isEqual(originValue, xValue, xScale)) { tmp.push(obj); } }); }); // special for pie chart if (this.hasAdjust('stack') && coord.isPolar && coord.transposed) { if (invertPointX >= 0 && invertPointX <= 1) { var yValue = yScale.invert(invertPoint.y); yValue = self._getSnap(yScale, yValue, tmp); tmp.forEach(function (obj) { if (Util.isArray(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) { rst.push(obj); } }); } } else { rst = tmp; } return rst; }; _proto._isEqual = function _isEqual(originValue, value, scale) { if (scale.type === 'timeCat') { return scale._toTimeStamp(originValue) === value; } return value === originValue; }; _proto.position = function position(field) { this._setAttrOptions('position', { field: field }); return this; }; _proto.color = function color(field, values) { this._createAttrOption('color', field, values, Global.colors); return this; }; _proto.size = function size(field, values) { this._createAttrOption('size', field, values, Global.sizes); return this; }; _proto.shape = function shape(field, values) { var type = this.get('type'); var shapes = Global.shapes[type] || []; this._createAttrOption('shape', field, values, shapes); return this; }; _proto.style = function style(field, cfg) { var styleOptions = this.get('styleOptions'); if (!styleOptions) { styleOptions = {}; this.set('styleOptions', styleOptions); } if (Util.isObject(field)) { cfg = field; field = null; } var fields; if (field) { fields = parseFields(field); } styleOptions.fields = fields; styleOptions.style = cfg; return this; }; _proto.adjust = function adjust(type) { if (Util.isString(type)) { type = { type: type }; } this.set('adjust', type); return this; }; _proto.animate = function animate(cfg) { this.set('animateCfg', cfg); return this; }; _proto.changeData = function changeData(data) { this.set('data', data); // 改变数据后,情况度量,因为需要重新实例化 this.set('scales', {}); this.init(); }; _proto.clearInner = function clearInner() { var container = this.get('container'); if (container) { container.clear(); // container.setMatrix([ 1, 0, 0, 1, 0, 0 ]); } }; _proto.reset = function reset() { this.set('attrs', {}); this.set('attrOptions', {}); this.set('adjust', null); this.clearInner(); }; _proto.clear = function clear() { this.clearInner(); }; _proto.destroy = function destroy() { this.clear(); _Base.prototype.destroy.call(this); }; _proto._display = function _display(visible) { this.set('visible', visible); var container = this.get('container'); var canvas = container.get('canvas'); container.set('visible', visible); canvas.draw(); }; _proto.show = function show() { this._display(true); }; _proto.hide = function hide() { this._display(false); }; return Geom; }(Base); module.exports = Geom; /***/ }), /* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /* harmony default export */ __webpack_exports__["a"] = (function (str) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(str, 'String'); }); /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Global = __webpack_require__(6); var Shape = {}; var ShapeBase = { _coord: null, /** * draw the shape * @param {Object} cfg options * @param {Object} container container to store the shapes */ draw: function draw(cfg, container) { if (this.drawShape) { this.drawShape(cfg, container); } }, /** * set the coordinate instance * @param {Coord} coord coordinate instance */ setCoord: function setCoord(coord) { this._coord = coord; }, /** * convert the normalized value to the canvas position * @param {point} point the point to convert * @return {point} point return the result */ parsePoint: function parsePoint(point) { var coord = this._coord; if (coord.isPolar) { if (point.x === 1) point.x = 0.9999999; if (point.y === 1) point.y = 0.9999999; } return coord.convertPoint(point); }, /** * convert the normalized value to the canvas position * @param {points} points the array that store the points * @return {points} points return the result */ parsePoints: function parsePoints(points) { if (!points) return false; var self = this; var rst = []; points.forEach(function (point) { rst.push(self.parsePoint(point)); }); return rst; } }; var ShapeFactoryBase = { defaultShapeType: null, setCoord: function setCoord(coord) { this._coord = coord; }, getShape: function getShape(type) { var self = this; if (Util.isArray(type)) { type = type[0]; } var shape = self[type] || self[self.defaultShapeType]; shape._coord = self._coord; return shape; }, getShapePoints: function getShapePoints(type, cfg) { var shape = this.getShape(type); var fn = shape.getPoints || shape.getShapePoints || this.getDefaultPoints; var points = fn(cfg); return points; }, getDefaultPoints: function getDefaultPoints() /* cfg */ { return []; }, drawShape: function drawShape(type, cfg, container) { var shape = this.getShape(type); if (!cfg.color) { cfg.color = Global.colors[0]; } return shape.draw(cfg, container); } }; Shape.registerFactory = function (factoryName, cfg) { var className = Util.upperFirst(factoryName); var geomObj = Util.mix({}, ShapeFactoryBase, cfg); Shape[className] = geomObj; geomObj.name = factoryName; return geomObj; }; Shape.registerShape = function (factoryName, shapeType, cfg) { var className = Util.upperFirst(factoryName); var factory = Shape[className]; var shapeObj = Util.mix({}, ShapeBase, cfg); factory[shapeType] = shapeObj; return shapeObj; }; Shape.registShape = Shape.registerShape; Shape.getShapeFactory = function (factoryName) { var self = this; factoryName = factoryName || 'point'; var className = Util.upperFirst(factoryName); return self[className]; }; module.exports = Shape; /***/ }), /* 20 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__["a"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference__ = __webpack_require__(79); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return __WEBPACK_IMPORTED_MODULE_1__difference__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__find__ = __webpack_require__(80); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_2__find__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__find_index__ = __webpack_require__(81); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_3__find_index__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__first_value__ = __webpack_require__(82); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "firstValue", function() { return __WEBPACK_IMPORTED_MODULE_4__first_value__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten__ = __webpack_require__(83); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return __WEBPACK_IMPORTED_MODULE_5__flatten__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__flatten_deep__ = __webpack_require__(84); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flattenDeep", function() { return __WEBPACK_IMPORTED_MODULE_6__flatten_deep__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__get_range__ = __webpack_require__(85); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getRange", function() { return __WEBPACK_IMPORTED_MODULE_7__get_range__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pull__ = __webpack_require__(86); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pull", function() { return __WEBPACK_IMPORTED_MODULE_8__pull__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pull_at__ = __webpack_require__(53); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pullAt", function() { return __WEBPACK_IMPORTED_MODULE_9__pull_at__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reduce__ = __webpack_require__(87); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_10__reduce__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__remove__ = __webpack_require__(88); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return __WEBPACK_IMPORTED_MODULE_11__remove__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__sort_by__ = __webpack_require__(89); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return __WEBPACK_IMPORTED_MODULE_12__sort_by__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__union__ = __webpack_require__(90); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "union", function() { return __WEBPACK_IMPORTED_MODULE_13__union__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__uniq__ = __webpack_require__(54); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return __WEBPACK_IMPORTED_MODULE_14__uniq__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__values_of_key__ = __webpack_require__(91); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "valuesOfKey", function() { return __WEBPACK_IMPORTED_MODULE_15__values_of_key__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__head__ = __webpack_require__(92); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "head", function() { return __WEBPACK_IMPORTED_MODULE_16__head__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__last__ = __webpack_require__(93); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_17__last__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__starts_with__ = __webpack_require__(94); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "startsWith", function() { return __WEBPACK_IMPORTED_MODULE_18__starts_with__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__ends_with__ = __webpack_require__(95); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "endsWith", function() { return __WEBPACK_IMPORTED_MODULE_19__ends_with__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__filter__ = __webpack_require__(39); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_20__filter__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__every__ = __webpack_require__(96); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_21__every__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__some__ = __webpack_require__(97); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "some", function() { return __WEBPACK_IMPORTED_MODULE_22__some__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__group__ = __webpack_require__(98); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "group", function() { return __WEBPACK_IMPORTED_MODULE_23__group__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__group_by__ = __webpack_require__(56); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_24__group_by__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__group_to_map__ = __webpack_require__(55); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupToMap", function() { return __WEBPACK_IMPORTED_MODULE_25__group_to_map__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__ = __webpack_require__(99); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getWrapBehavior", function() { return __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__ = __webpack_require__(100); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "wrapBehavior", function() { return __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__number2color__ = __webpack_require__(101); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "number2color", function() { return __WEBPACK_IMPORTED_MODULE_28__number2color__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__parse_radius__ = __webpack_require__(102); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "parseRadius", function() { return __WEBPACK_IMPORTED_MODULE_29__parse_radius__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__clamp__ = __webpack_require__(103); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clamp", function() { return __WEBPACK_IMPORTED_MODULE_30__clamp__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__fixed_base__ = __webpack_require__(104); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fixedBase", function() { return __WEBPACK_IMPORTED_MODULE_31__fixed_base__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__is_decimal__ = __webpack_require__(105); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDecimal", function() { return __WEBPACK_IMPORTED_MODULE_32__is_decimal__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__is_even__ = __webpack_require__(106); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEven", function() { return __WEBPACK_IMPORTED_MODULE_33__is_even__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__is_integer__ = __webpack_require__(107); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isInteger", function() { return __WEBPACK_IMPORTED_MODULE_34__is_integer__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__is_negative__ = __webpack_require__(108); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNegative", function() { return __WEBPACK_IMPORTED_MODULE_35__is_negative__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__is_number_equal__ = __webpack_require__(109); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNumberEqual", function() { return __WEBPACK_IMPORTED_MODULE_36__is_number_equal__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__is_odd__ = __webpack_require__(110); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isOdd", function() { return __WEBPACK_IMPORTED_MODULE_37__is_odd__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__is_positive__ = __webpack_require__(111); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPositive", function() { return __WEBPACK_IMPORTED_MODULE_38__is_positive__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__max_by__ = __webpack_require__(112); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "maxBy", function() { return __WEBPACK_IMPORTED_MODULE_39__max_by__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__min_by__ = __webpack_require__(113); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "minBy", function() { return __WEBPACK_IMPORTED_MODULE_40__min_by__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__mod__ = __webpack_require__(114); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mod", function() { return __WEBPACK_IMPORTED_MODULE_41__mod__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__to_degree__ = __webpack_require__(115); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toDegree", function() { return __WEBPACK_IMPORTED_MODULE_42__to_degree__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__to_integer__ = __webpack_require__(116); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toInteger", function() { return __WEBPACK_IMPORTED_MODULE_43__to_integer__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__to_radian__ = __webpack_require__(117); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toRadian", function() { return __WEBPACK_IMPORTED_MODULE_44__to_radian__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__for_in__ = __webpack_require__(118); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forIn", function() { return __WEBPACK_IMPORTED_MODULE_45__for_in__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__has__ = __webpack_require__(57); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return __WEBPACK_IMPORTED_MODULE_46__has__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__has_key__ = __webpack_require__(119); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "hasKey", function() { return __WEBPACK_IMPORTED_MODULE_47__has_key__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__has_value__ = __webpack_require__(120); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "hasValue", function() { return __WEBPACK_IMPORTED_MODULE_48__has_value__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__keys__ = __webpack_require__(52); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return __WEBPACK_IMPORTED_MODULE_49__keys__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__is_match__ = __webpack_require__(51); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return __WEBPACK_IMPORTED_MODULE_50__is_match__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__values__ = __webpack_require__(58); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return __WEBPACK_IMPORTED_MODULE_51__values__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__lower_case__ = __webpack_require__(121); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "lowerCase", function() { return __WEBPACK_IMPORTED_MODULE_52__lower_case__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__lower_first__ = __webpack_require__(122); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "lowerFirst", function() { return __WEBPACK_IMPORTED_MODULE_53__lower_first__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__substitute__ = __webpack_require__(123); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "substitute", function() { return __WEBPACK_IMPORTED_MODULE_54__substitute__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__upper_case__ = __webpack_require__(124); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "upperCase", function() { return __WEBPACK_IMPORTED_MODULE_55__upper_case__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__upper_first__ = __webpack_require__(125); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "upperFirst", function() { return __WEBPACK_IMPORTED_MODULE_56__upper_first__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__get_type__ = __webpack_require__(59); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getType", function() { return __WEBPACK_IMPORTED_MODULE_57__get_type__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__is_arguments__ = __webpack_require__(126); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return __WEBPACK_IMPORTED_MODULE_58__is_arguments__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__is_array__ = __webpack_require__(5); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return __WEBPACK_IMPORTED_MODULE_59__is_array__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__is_array_like__ = __webpack_require__(7); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return __WEBPACK_IMPORTED_MODULE_60__is_array_like__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__is_boolean__ = __webpack_require__(127); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return __WEBPACK_IMPORTED_MODULE_61__is_boolean__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__is_date__ = __webpack_require__(128); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return __WEBPACK_IMPORTED_MODULE_62__is_date__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__is_error__ = __webpack_require__(129); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return __WEBPACK_IMPORTED_MODULE_63__is_error__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__is_function__ = __webpack_require__(9); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return __WEBPACK_IMPORTED_MODULE_64__is_function__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__is_finite__ = __webpack_require__(130); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return __WEBPACK_IMPORTED_MODULE_65__is_finite__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__is_nil__ = __webpack_require__(14); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNil", function() { return __WEBPACK_IMPORTED_MODULE_66__is_nil__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__is_null__ = __webpack_require__(131); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return __WEBPACK_IMPORTED_MODULE_67__is_null__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__is_number__ = __webpack_require__(12); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return __WEBPACK_IMPORTED_MODULE_68__is_number__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__is_object__ = __webpack_require__(29); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return __WEBPACK_IMPORTED_MODULE_69__is_object__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__is_object_like__ = __webpack_require__(40); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObjectLike", function() { return __WEBPACK_IMPORTED_MODULE_70__is_object_like__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__is_plain_object__ = __webpack_require__(24); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return __WEBPACK_IMPORTED_MODULE_71__is_plain_object__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__is_prototype__ = __webpack_require__(60); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPrototype", function() { return __WEBPACK_IMPORTED_MODULE_72__is_prototype__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__ = __webpack_require__(132); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__is_string__ = __webpack_require__(18); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return __WEBPACK_IMPORTED_MODULE_74__is_string__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__is_type__ = __webpack_require__(11); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isType", function() { return __WEBPACK_IMPORTED_MODULE_75__is_type__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__is_undefined__ = __webpack_require__(133); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return __WEBPACK_IMPORTED_MODULE_76__is_undefined__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__is_element__ = __webpack_require__(134); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return __WEBPACK_IMPORTED_MODULE_77__is_element__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__ = __webpack_require__(135); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "requestAnimationFrame", function() { return __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__ = __webpack_require__(136); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clearAnimationFrame", function() { return __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__augment__ = __webpack_require__(137); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "augment", function() { return __WEBPACK_IMPORTED_MODULE_80__augment__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__clone__ = __webpack_require__(138); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return __WEBPACK_IMPORTED_MODULE_81__clone__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__debounce__ = __webpack_require__(139); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_82__debounce__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__memoize__ = __webpack_require__(140); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return __WEBPACK_IMPORTED_MODULE_83__memoize__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__deep_mix__ = __webpack_require__(141); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "deepMix", function() { return __WEBPACK_IMPORTED_MODULE_84__deep_mix__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__each__ = __webpack_require__(8); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return __WEBPACK_IMPORTED_MODULE_85__each__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__extend__ = __webpack_require__(142); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return __WEBPACK_IMPORTED_MODULE_86__extend__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__index_of__ = __webpack_require__(143); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return __WEBPACK_IMPORTED_MODULE_87__index_of__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__is_empty__ = __webpack_require__(144); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_88__is_empty__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__is_equal__ = __webpack_require__(61); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return __WEBPACK_IMPORTED_MODULE_89__is_equal__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__is_equal_with__ = __webpack_require__(145); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEqualWith", function() { return __WEBPACK_IMPORTED_MODULE_90__is_equal_with__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__map__ = __webpack_require__(146); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_91__map__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__map_values__ = __webpack_require__(147); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mapValues", function() { return __WEBPACK_IMPORTED_MODULE_92__map_values__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__mix__ = __webpack_require__(41); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mix", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__["a"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__get__ = __webpack_require__(148); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return __WEBPACK_IMPORTED_MODULE_94__get__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__set__ = __webpack_require__(149); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return __WEBPACK_IMPORTED_MODULE_95__set__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__pick__ = __webpack_require__(150); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return __WEBPACK_IMPORTED_MODULE_96__pick__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__throttle__ = __webpack_require__(151); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_97__throttle__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__to_array__ = __webpack_require__(152); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_98__to_array__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__to_string__ = __webpack_require__(25); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toString", function() { return __WEBPACK_IMPORTED_MODULE_99__to_string__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__unique_id__ = __webpack_require__(153); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return __WEBPACK_IMPORTED_MODULE_100__unique_id__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__noop__ = __webpack_require__(154); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_101__noop__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__identity__ = __webpack_require__(155); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_102__identity__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__size__ = __webpack_require__(156); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return __WEBPACK_IMPORTED_MODULE_103__size__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__cache__ = __webpack_require__(157); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Cache", function() { return __WEBPACK_IMPORTED_MODULE_104__cache__["a"]; }); // array // event // format // math // object // string // type // other // 不知道为什么,需要把这个 export,不然 ts 会报类型错误 /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Vector2 = __webpack_require__(13); var start = Vector2.create(); var end = Vector2.create(); var extremity = Vector2.create(); function getCubicBezierXYatT(startPt, controlPt1, controlPt2, endPt, T) { var x = CubicN(T, startPt.x, controlPt1.x, controlPt2.x, endPt.x); var y = CubicN(T, startPt.y, controlPt1.y, controlPt2.y, endPt.y); return { x: x, y: y }; } // cubic helper formula at T distance function CubicN(T, a, b, c, d) { var t2 = T * T; var t3 = t2 * T; return a + (-a * 3 + T * (3 * a - a * T)) * T + (3 * b + T * (-6 * b + b * 3 * T)) * T + (c * 3 - c * 3 * T) * t2 + d * t3; } function cubicBezierBounds(c) { var minX = Infinity; var maxX = -Infinity; var minY = Infinity; var maxY = -Infinity; var s = { x: c[0], y: c[1] }; var c1 = { x: c[2], y: c[3] }; var c2 = { x: c[4], y: c[5] }; var e = { x: c[6], y: c[7] }; for (var t = 0; t < 100; t++) { var pt = getCubicBezierXYatT(s, c1, c2, e, t / 100); if (pt.x < minX) { minX = pt.x; } if (pt.x > maxX) { maxX = pt.x; } if (pt.y < minY) { minY = pt.y; } if (pt.y > maxY) { maxY = pt.y; } } return { minX: minX, minY: minY, maxX: maxX, maxY: maxY }; } module.exports = { getBBoxFromPoints: function getBBoxFromPoints(points, lineWidth) { if (points.length === 0) { return; } var p = points[0]; var left = p.x; var right = p.x; var top = p.y; var bottom = p.y; var len = points.length; for (var i = 1; i < len; i++) { p = points[i]; left = Math.min(left, p.x); right = Math.max(right, p.x); top = Math.min(top, p.y); bottom = Math.max(bottom, p.y); } lineWidth = lineWidth / 2 || 0; return { minX: left - lineWidth, minY: top - lineWidth, maxX: right + lineWidth, maxY: bottom + lineWidth }; }, getBBoxFromLine: function getBBoxFromLine(x0, y0, x1, y1, lineWidth) { lineWidth = lineWidth / 2 || 0; return { minX: Math.min(x0, x1) - lineWidth, minY: Math.min(y0, y1) - lineWidth, maxX: Math.max(x0, x1) + lineWidth, maxY: Math.max(y0, y1) + lineWidth }; }, getBBoxFromArc: function getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise) { var diff = Math.abs(startAngle - endAngle); if (diff % (Math.PI * 2) < 1e-4 && diff > 1e-4) { // Is a circle return { minX: x - r, minY: y - r, maxX: x + r, maxY: y + r }; } start[0] = Math.cos(startAngle) * r + x; start[1] = Math.sin(startAngle) * r + y; end[0] = Math.cos(endAngle) * r + x; end[1] = Math.sin(endAngle) * r + y; var min = [0, 0]; var max = [0, 0]; Vector2.min(min, start, end); Vector2.max(max, start, end); // Thresh to [0, Math.PI * 2] startAngle = startAngle % (Math.PI * 2); if (startAngle < 0) { startAngle = startAngle + Math.PI * 2; } endAngle = endAngle % (Math.PI * 2); if (endAngle < 0) { endAngle = endAngle + Math.PI * 2; } if (startAngle > endAngle && !anticlockwise) { endAngle += Math.PI * 2; } else if (startAngle < endAngle && anticlockwise) { startAngle += Math.PI * 2; } if (anticlockwise) { var tmp = endAngle; endAngle = startAngle; startAngle = tmp; } for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { if (angle > startAngle) { extremity[0] = Math.cos(angle) * r + x; extremity[1] = Math.sin(angle) * r + y; Vector2.min(min, extremity, min); Vector2.max(max, extremity, max); } } return { minX: min[0], minY: min[1], maxX: max[0], maxY: max[1] }; }, getBBoxFromBezierGroup: function getBBoxFromBezierGroup(points, lineWidth) { var minX = Infinity; var maxX = -Infinity; var minY = Infinity; var maxY = -Infinity; for (var i = 0, len = points.length; i < len; i++) { var bbox = cubicBezierBounds(points[i]); if (bbox.minX < minX) { minX = bbox.minX; } if (bbox.maxX > maxX) { maxX = bbox.maxX; } if (bbox.minY < minY) { minY = bbox.minY; } if (bbox.maxY > maxY) { maxY = bbox.maxY; } } lineWidth = lineWidth / 2 || 0; return { minX: minX - lineWidth, minY: minY - lineWidth, maxX: maxX + lineWidth, maxY: maxY + lineWidth }; } }; /***/ }), /* 22 */ /***/ (function(module, exports) { function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } module.exports = _assertThisInitialized; /***/ }), /* 23 */, /* 24 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(40); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_type__ = __webpack_require__(11); var isPlainObject = function (value) { /** * isObjectLike(new Foo) => false * isObjectLike([1, 2, 3]) => false * isObjectLike({ x: 0, y: 0 }) => true * isObjectLike(Object.create(null)) => true */ if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(value) || !Object(__WEBPACK_IMPORTED_MODULE_1__is_type__["a" /* default */])(value, 'Object')) { return false; } if (Object.getPrototypeOf(value) === null) { return true; } var proto = value; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(value) === proto; }; /* harmony default export */ __webpack_exports__["a"] = (isPlainObject); /***/ }), /* 25 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony default export */ __webpack_exports__["a"] = (function (value) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) return ''; return value.toString(); }); /***/ }), /* 26 */ /***/ (function(module, exports, __webpack_require__) { var mix = __webpack_require__(64); var each = __webpack_require__(15); var isObject = __webpack_require__(44); var isNil = __webpack_require__(35); var Scale = /*#__PURE__*/function () { var _proto = Scale.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.type = 'base'; /** * 格式化函数,输出文本或者tick时的格式化函数 * @type {Function} */ this.formatter = null; /** * 输出的值域 * @type {Array} */ this.range = [0, 1]; /** * 度量的标记 * @type {Array} */ this.ticks = null; /** * 参与度量计算的值,可选项 * @type {Array} */ this.values = []; }; function Scale(cfg) { this._initDefaultCfg(); mix(this, cfg); this.init(); } /** * 度量初始化 * @protected */ _proto.init = function init() {} /** * 获取该度量的ticks,返回的是多个对象, * - text: tick 的文本 * - value: 对应的度量转换后的值 * * [ * {text: 0,value:0} * {text: 1,value:0.2} * {text: 2,value:0.4} * {text: 3,value:0.6} * {text: 4,value:0.8} * {text: 5,value:1} * ] * * @param {Number} count 输出tick的个数的近似值,默认是 10 * @return {Array} 返回 ticks 数组 */ ; _proto.getTicks = function getTicks() { var self = this; var ticks = self.ticks; var rst = []; each(ticks, function (tick) { var obj; if (isObject(tick)) { obj = tick; } else { obj = { text: self.getText(tick), tickValue: tick, value: self.scale(tick) }; } rst.push(obj); }); return rst; } /** * 获取格式化后的文本 * @param {*} value 输入的数据 * @param {*} key 字段的 key * @return {String} 格式化的文本 */ ; _proto.getText = function getText(value, key) { var formatter = this.formatter; value = formatter ? formatter(value, key) : value; if (isNil(value) || !value.toString) { value = ''; } return value.toString(); } /** * 输出的值域最小值 * @protected * @return {Number} 返回最小的值 */ ; _proto.rangeMin = function rangeMin() { return this.range[0]; } /** * 输出的值域最大值 * @protected * @return {Number} 返回最大的值 */ ; _proto.rangeMax = function rangeMax() { var range = this.range; return range[range.length - 1]; } /** * 度量转换后的结果,翻转回输入域 * @param {Number} value 需要翻转的数值 * @return {*} 度量的输入值 */ ; _proto.invert = function invert(value) { return value; } /** * 将传入的值从非数值转换成数值格式,如分类字符串、时间字符串等 * @param {*} value 传入的值 * @return {Number} 转换的值 */ ; _proto.translate = function translate(value) { return value; } /** * 进行度量转换 * @param {*} value 输入值 * @return {Number} 输出值,在设定的输出值域之间,默认[0,1] */ ; _proto.scale = function scale(value) { return value; } /** * 克隆一个新的scale,拥有跟当前scale相同的输入域、输出域等 * @return {Scale} 克隆的度量 */ ; _proto.clone = function clone() { var self = this; var constr = self.constructor; var cfg = {}; each(self, function (v, k) { cfg[k] = self[k]; }); return new constr(cfg); } /** * 更改度量的属性信息 * @param {Object} info 属性信息 * @chainable * @return {Scale} 返回自身的引用 */ ; _proto.change = function change(info) { this.ticks = null; mix(this, info); this.init(); return this; }; return Scale; }(); module.exports = Scale; /***/ }), /* 27 */ /***/ (function(module, exports) { var toString = {}.toString; var isType = function isType(value, type) { return toString.call(value) === '[object ' + type + ']'; }; module.exports = isType; /***/ }), /* 28 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); var contains = function (arr, value) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) { return false; } return arr.indexOf(value) > -1; }; /* harmony default export */ __webpack_exports__["a"] = (contains); /***/ }), /* 29 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (function (value) { /** * isObject({}) => true * isObject([1, 2, 3]) => true * isObject(Function) => true * isObject(null) => false */ var type = typeof value; return value !== null && type === 'object' || type === 'function'; }); /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(22)); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _const = __webpack_require__(47); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Base = __webpack_require__(63); var Plot = __webpack_require__(158); var Util = __webpack_require__(0); var Coord = __webpack_require__(159); var Geom = __webpack_require__(17); var ScaleController = __webpack_require__(167); var AxisController = __webpack_require__(173); var Global = __webpack_require__(6); var _require = __webpack_require__(16), Canvas = _require.Canvas; var Helper = __webpack_require__(37); function compare(a, b) { return a - b; } function _isScaleExist(scales, compareScale) { var flag = false; Util.each(scales, function (scale) { var scaleValues = [].concat(scale.values); var compareScaleValues = [].concat(compareScale.values); if (scale.type === compareScale.type && scale.field === compareScale.field && scaleValues.sort(compare).toString() === compareScaleValues.sort(compare).toString()) { flag = true; return; } }); return flag; } var Chart = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Chart, _Base); var _super = _createSuper(Chart); Chart.initPlugins = function initPlugins() { return { _plugins: [], _cacheId: 0, register: function register(plugins) { var p = this._plugins; [].concat(plugins).forEach(function (plugin) { if (p.indexOf(plugin) === -1) { p.push(plugin); } }); this._cacheId++; }, unregister: function unregister(plugins) { var p = this._plugins; [].concat(plugins).forEach(function (plugin) { var idx = p.indexOf(plugin); if (idx !== -1) { p.splice(idx, 1); } }); this._cacheId++; }, clear: function clear() { this._plugins = []; this._cacheId++; }, count: function count() { return this._plugins.length; }, getAll: function getAll() { return this._plugins; }, notify: function notify(chart, hook, args) { var descriptors = this.descriptors(chart); var ilen = descriptors.length; var i; var descriptor; var plugin; var params; var method; for (i = 0; i < ilen; ++i) { descriptor = descriptors[i]; plugin = descriptor.plugin; method = plugin[hook]; if (typeof method === 'function') { params = [chart].concat(args || []); if (method.apply(plugin, params) === false) { return false; } } } return true; }, descriptors: function descriptors(chart) { var cache = chart._plugins || (chart._plugins = {}); if (cache.id === this._cacheId) { return cache.descriptors; } var plugins = []; var descriptors = []; this._plugins.concat(chart && chart.get('plugins') || []).forEach(function (plugin) { var idx = plugins.indexOf(plugin); if (idx !== -1) { return; } plugins.push(plugin); descriptors.push({ plugin: plugin }); }); cache.descriptors = descriptors; cache.id = this._cacheId; return descriptors; } }; }; var _proto = Chart.prototype; _proto.getDefaultCfg = function getDefaultCfg() { return { /** * the id of canvas * @type {String} */ id: null, rendered: false, /** * padding * @type {Array|Number} */ padding: Global.padding, /** * data * @type {Array} */ data: null, /** * scales of chart * @type {Object} */ scales: {}, /** * @private * geometry instances * @type {Array} */ geoms: [], /** * scale configuration * @type {Object} */ colDefs: null, pixelRatio: Global.pixelRatio, /** * filter options * @type {Object} */ filters: null, appendPadding: Global.appendPadding }; }; _proto._syncYScales = function _syncYScales() { var syncY = this.get('syncY'); if (!syncY) { return; } var geoms = this.get('geoms'); var syncScales = []; var min = []; var max = []; Util.each(geoms, function (geom) { var yScale = geom.getYScale(); if (yScale.isLinear) { syncScales.push(yScale); min.push(yScale.min); max.push(yScale.max); } }); min = Math.min.apply(null, min); max = Math.max.apply(null, max); Util.each(syncScales, function (scale) { scale.change({ min: min }); scale.change({ max: max }); }); }; _proto._getFieldsForLegend = function _getFieldsForLegend() { var fields = []; var geoms = this.get('geoms'); Util.each(geoms, function (geom) { var attrOptions = geom.get('attrOptions'); var attrCfg = attrOptions.color; if (attrCfg && attrCfg.field && Util.isString(attrCfg.field)) { var arr = attrCfg.field.split('*'); Util.each(arr, function (item) { if (fields.indexOf(item) === -1) { fields.push(item); } }); } }); return fields; }; _proto._getScaleData = function _getScaleData(field) { var data = this.get('data'); var filteredData = this.get('filteredData'); if (filteredData.length) { var legendFields = this._getFieldsForLegend(); if (legendFields.indexOf(field) === -1) { data = filteredData; } } return data; } // _updateScales() { // const scaleController = this.get('scaleController'); // scaleController.updateScales(); // this._adjustScale(); // } ; _proto._adjustScale = function _adjustScale() { var self = this; var scaleController = self.get('scaleController'); // 看起来是为了让柱状图最小或最大都默认从0开始 var geoms = this.get('geoms'); for (var i = 0; i < geoms.length; i++) { var geom = geoms[i]; if (geom.get('type') === 'interval') { var yScale = geom.getYScale(); scaleController.adjustStartZero(yScale); } } }; _proto._removeGeoms = function _removeGeoms() { var geoms = this.get('geoms'); while (geoms.length > 0) { var geom = geoms.shift(); geom.destroy(); } }; _proto._clearGeoms = function _clearGeoms() { var geoms = this.get('geoms'); for (var i = 0, length = geoms.length; i < length; i++) { var geom = geoms[i]; geom.clear(); } }; _proto._clearInner = function _clearInner() { this._clearGeoms(); Chart.plugins.notify(this, 'clearInner'); this.get('axisController') && this.get('axisController').clear(); }; _proto._initFilteredData = function _initFilteredData() { var filters = this.get('filters'); var data = this.get('data') || []; if (filters) { data = data.filter(function (obj) { var rst = true; Util.each(filters, function (fn, k) { if (fn) { rst = fn(obj[k], obj); if (!rst) { return false; } } }); return rst; }); } this.set('filteredData', data); }; _proto._changeGeomsData = function _changeGeomsData() { var geoms = this.get('geoms'); var data = this.get('filteredData'); for (var i = 0, length = geoms.length; i < length; i++) { var geom = geoms[i]; geom.changeData(data); } }; _proto._initGeom = function _initGeom(geom) { var coord = this.get('coord'); var data = this.get('filteredData'); var colDefs = this.get('colDefs'); var middlePlot = this.get('middlePlot'); geom.set('chart', this); geom.set('container', middlePlot.addGroup()); geom.set('data', data); geom.set('coord', coord); geom.set('colDefs', colDefs); geom.init(); this.emit(_const.EVENT_AFTER_GEOM_INIT, geom); }; _proto._initGeoms = function _initGeoms() { var geoms = this.get('geoms'); for (var i = 0, length = geoms.length; i < length; i++) { this._initGeom(geoms[i]); } }; _proto._initCoord = function _initCoord() { var plot = this.get('plotRange'); var coordCfg = Util.mix({ type: 'cartesian' }, this.get('coordCfg'), { plot: plot }); var type = coordCfg.type; var C = Coord[Util.upperFirst(type)]; var coord = new C(coordCfg); this.set('coord', coord); }; _proto._initLayout = function _initLayout() { var padding = this.get('_padding'); if (!padding) { padding = this.get('margin') || this.get('padding'); padding = Util.parsePadding(padding); } var top = padding[0] === 'auto' ? 0 : padding[0]; var right = padding[1] === 'auto' ? 0 : padding[1]; var bottom = padding[2] === 'auto' ? 0 : padding[2]; var left = padding[3] === 'auto' ? 0 : padding[3]; var width = this.get('width'); var height = this.get('height'); var start = { x: left, y: top }; var end = { x: width - right, y: height - bottom }; var plot = this.get('plot'); if (plot) { plot.reset(start, end); return; } var newPlot = new Plot({ start: start, end: end }); this.set('plotRange', newPlot); this.set('plot', newPlot); }; _proto._initCanvas = function _initCanvas() { var self = this; try { var canvas = new Canvas({ el: self.get('el') || self.get('id'), context: self.get('context'), pixelRatio: self.get('pixelRatio'), width: self.get('width'), height: self.get('height'), fontFamily: Global.fontFamily }); self.set('canvas', canvas); self.set('el', canvas.get('el')); self.set('width', canvas.get('width')); self.set('height', canvas.get('height')); } catch (error) { throw error; } Chart.plugins.notify(self, 'afterCanvasInit'); }; _proto._initLayers = function _initLayers() { var canvas = this.get('canvas'); this.set('backPlot', canvas.addGroup()); this.set('middlePlot', canvas.addGroup({ zIndex: 10 })); this.set('frontPlot', canvas.addGroup({ zIndex: 20 })); }; _proto._initEvents = function _initEvents() { var _this2 = this; // 数据更新后的一些更新 this.on(_const.EVENT_AFTER_DATA_CHANGE, function () { // 数据更新后,重新设置filterdata _this2._initFilteredData(); // 更新geoms里的数据 _this2._changeGeomsData(); _this2._adjustScale(); }); // 大小变化后的一些更新 this.on(_const.EVENT_AFTER_SIZE_CHANGE, function () { _this2._initLayout(); // layout变化后,坐标轴也需要做相应的变化 var coord = _this2.get('coord'); if (coord) { coord.reset(_this2.get('plot')); } }); }; _proto._initScaleController = function _initScaleController() { var scaleController = new ScaleController({ chart: this }); // 让colDefs 和 scaleController.defs 用同一个对象,这样就不用考虑同步的问题 this.set('colDefs', scaleController.defs); // 已经实例化的scales 也保持统一个对象 this.set('scales', scaleController.scales); this.set('scaleController', scaleController); }; _proto._clearScaleController = function _clearScaleController() { var scaleController = this.get('scaleController'); scaleController.clear(); }; _proto._init = function _init() { var self = this; self._initCanvas(); self._initLayout(); self._initLayers(); self._initEvents(); self._initScaleController(); self.set('axisController', new AxisController({ frontPlot: self.get('frontPlot').addGroup({ className: 'axisContainer' }), backPlot: self.get('backPlot').addGroup({ className: 'axisContainer' }), chart: self })); Chart.plugins.notify(self, 'init'); }; function Chart(cfg) { var _this; _this = _Base.call(this, cfg) || this; var self = (0, _assertThisInitialized2["default"])(_this); Util.each(Geom, function (geomConstructor, className) { var methodName = Util.lowerFirst(className); self[methodName] = function (cfg) { var geom = new geomConstructor(cfg); self.addGeom(geom); return geom; }; }); self._init(); return _this; } _proto.init = function init() { // 初始filterData this._initFilteredData(); // initialization coordinate instance this._initCoord(); Chart.plugins.notify(this, 'beforeGeomInit'); // init all geometry instances this._initGeoms(); // 多 Y 轴的情况时,统一 Y 轴的数值范围。 this._syncYScales(); // do some adjust for data this._adjustScale(); this.emit(_const.EVENT_AFTER_INIT); } /** * set data and some scale configuration * @chainable * @param {Array} data the dataset to visualize * @param {Object} colDefs the configuration for scales * @return {Chart} return the chart instance */ ; _proto.source = function source(data, colDefs) { this.set('data', data); if (colDefs) { this.scale(colDefs); } return this; }; _proto.scale = function scale(field, cfg) { var scaleController = this.get('scaleController'); scaleController.setFieldDef(field, cfg); return this; } /** * configure the axis * @chainable * @param {String|Boolean} field the field name of data * @param {Object} cfg configuration for axis * @return {Chart} return the chart instance */ ; _proto.axis = function axis(field, cfg) { var axisController = this.get('axisController'); if (!field) { axisController.axisCfg = null; } else { axisController.axisCfg = axisController.axisCfg || {}; axisController.axisCfg[field] = cfg; } return this; } /** * configure the coordinate * @chainable * @param {String} type set the type of coodinate * @param {Object} cfg configuration for coordinate * @return {Chart} return the chart instance */ ; _proto.coord = function coord(type, cfg) { var coordCfg; if (Util.isObject(type)) { coordCfg = type; } else { coordCfg = cfg || {}; coordCfg.type = type || 'cartesian'; } this.set('coordCfg', coordCfg); return this; }; _proto.filter = function filter(field, condition) { var filters = this.get('filters') || {}; filters[field] = condition; this.set('filters', filters); // 如果已经render过,则再重新触发一次change if (this.get('rendered')) { this.emit(_const.EVENT_AFTER_DATA_CHANGE, this.get('data')); } } /** * render the chart * @chainable * @return {Chart} return the chart instance */ ; _proto.render = function render() { var rendered = this.get('rendered'); var canvas = this.get('canvas'); var geoms = this.get('geoms'); if (!rendered) { this.init(); this.set('rendered', true); } this.emit(_const.EVENT_BEFORE_RENDER); Chart.plugins.notify(this, 'beforeGeomDraw'); this._renderAxis(); var middlePlot = this.get('middlePlot'); if (this.get('limitInPlot') && !middlePlot.attr('clip')) { var coord = this.get('coord'); var clip = Helper.getClip(coord); clip.set('canvas', middlePlot.get('canvas')); middlePlot.attr('clip', clip); } for (var i = 0, length = geoms.length; i < length; i++) { var geom = geoms[i]; geom.paint(); } Chart.plugins.notify(this, 'afterGeomDraw'); canvas.sort(); this.get('frontPlot').sort(); Chart.plugins.notify(this, 'beforeCanvasDraw'); canvas.draw(); this.emit(_const.EVENT_AFTER_RENDER); return this; } /** * clear the chart, include geometris and all the shapes * @chainable * @return {Chart} return the chart */ ; _proto.clear = function clear() { Chart.plugins.notify(this, 'clear'); this._clearInner(); this._removeGeoms(); this._clearScaleController(); this.set('legendItems', null); this.set('filters', null); this.set('isUpdate', false); this.set('_padding', null); this.set('rendered', false); var canvas = this.get('canvas'); canvas.draw(); return this; }; _proto.repaint = function repaint() { // 如果在没有render之前就repaint的,就直接return退出 var rendered = this.get('rendered'); if (!rendered) { return; } this.set('isUpdate', true); this.set('legendItems', null); Chart.plugins.notify(this, 'repaint'); this._clearInner(); this.render(); }; _proto.changeData = function changeData(data) { this.emit(_const.EVENT_BEFORE_DATA_CHANGE, data); this.set('data', data); Chart.plugins.notify(this, 'changeData'); this.emit(_const.EVENT_AFTER_DATA_CHANGE, data); this.set('_padding', null); this.repaint(); }; _proto.changeSize = function changeSize(width, height) { if (width) { this.set('width', width); } else { width = this.get('width'); } if (height) { this.set('height', height); } else { height = this.get('height'); } var canvas = this.get('canvas'); canvas.changeSize(width, height); this.emit(_const.EVENT_AFTER_SIZE_CHANGE, { width: width, height: height }); this.repaint(); return this; }; _proto.destroy = function destroy() { this.clear(); var canvas = this.get('canvas'); canvas.destroy(); Chart.plugins.notify(this, 'afterCanvasDestroyed'); if (this._interactions) { Util.each(this._interactions, function (interaction) { interaction.destroy(); }); } _Base.prototype.destroy.call(this); } /** * calculate dataset's position on canvas * @param {Object} record the dataset * @return {Object} return the position */ ; _proto.getPosition = function getPosition(record) { var self = this; var coord = self.get('coord'); var xScale = self.getXScale(); var yScale = self.getYScales()[0]; var xField = xScale.field; var x = xScale.scale(record[xField]); var yField = yScale.field; var y = yScale.scale(record[yField]); return coord.convertPoint({ x: x, y: y }); } /** * get the data item of the point * @param {Object} point canvas position * @return {Object} return the data item */ ; _proto.getRecord = function getRecord(point) { var self = this; var coord = self.get('coord'); var xScale = self.getXScale(); var yScale = self.getYScales()[0]; var invertPoint = coord.invertPoint(point); var record = {}; record[xScale.field] = xScale.invert(invertPoint.x); record[yScale.field] = yScale.invert(invertPoint.y); return record; } /** * get the dataset of the point * @param {Object} point canvas position * @return {Array} return the dataset **/ ; _proto.getSnapRecords = function getSnapRecords(point) { var geom = this.get('geoms')[0]; var data = []; if (geom) { // need to judge data = geom.getSnapRecords(point); } return data; } /** * creat scale instances * @param {String} field field name of data * @return {Scale} return the scale */ ; _proto.createScale = function createScale(field) { var data = this._getScaleData(field); var scaleController = this.get('scaleController'); return scaleController.createScale(field, data); } /** * @protected * add geometry instance to geoms * @param {Geom} geom geometry instance */ ; _proto.addGeom = function addGeom(geom) { var rendered = this.get('rendered'); var geoms = this.get('geoms'); geoms.push(geom); // 如果图表已经渲染过了,则直接初始化geom if (rendered) { this._initGeom(geom); } } /** * get the scale of x axis * @return {Scale} return the scale */ ; _proto.getXScale = function getXScale() { var self = this; var geoms = self.get('geoms'); var xScale = geoms[0].getXScale(); return xScale; } /** * get the scale of y axis * @return {Array} return the scale */ ; _proto.getYScales = function getYScales() { var geoms = this.get('geoms'); var rst = []; Util.each(geoms, function (geom) { var yScale = geom.getYScale(); if (rst.indexOf(yScale) === -1) { rst.push(yScale); } }); return rst; }; _proto.getLegendItems = function getLegendItems() { if (this.get('legendItems')) { return this.get('legendItems'); } var legendItems = {}; var scales = []; var geoms = this.get('geoms'); Util.each(geoms, function (geom) { var colorAttr = geom.getAttr('color'); if (colorAttr) { var scale = colorAttr.getScale('color'); // 只支持分类图例 if (scale.isCategory && !_isScaleExist(scales, scale)) { scales.push(scale); var field = scale.field; var ticks = scale.getTicks(); var items = []; Util.each(ticks, function (tick) { var text = tick.text; var name = text; var scaleValue = tick.value; var value = scale.invert(scaleValue); var color = colorAttr.mapping(value).join('') || Global.defaultColor; var marker = { fill: color, radius: 3, symbol: 'circle', stroke: '#fff' }; items.push({ name: name, // for display dataValue: value, // the origin value checked: true, marker: marker }); }); legendItems[field] = items; } } }); this.set('legendItems', legendItems); return legendItems; } // register the plugins ; _proto.registerPlugins = function registerPlugins(plugins) { var self = this; var chartPlugins = self.get('plugins') || []; if (!Util.isArray(chartPlugins)) { chartPlugins = [chartPlugins]; } [].concat(plugins).forEach(function (plugin) { if (chartPlugins.indexOf(plugin) === -1) { plugin.init && plugin.init(self); // init chartPlugins.push(plugin); } }); Chart.plugins._cacheId++; self.set('plugins', chartPlugins); }; _proto._renderAxis = function _renderAxis() { var axisController = this.get('axisController'); var xScale = this.getXScale(); var yScales = this.getYScales(); var coord = this.get('coord'); Chart.plugins.notify(this, 'beforeRenderAxis'); axisController.createAxis(coord, xScale, yScales); }; _proto._isAutoPadding = function _isAutoPadding() { if (this.get('_padding')) { return false; } var padding = this.get('padding'); if (Util.isArray(padding)) { return padding.indexOf('auto') !== -1; } return padding === 'auto'; }; _proto._updateLayout = function _updateLayout(padding) { var width = this.get('width'); var height = this.get('height'); var start = { x: padding[3], y: padding[0] }; var end = { x: width - padding[1], y: height - padding[2] }; var plot = this.get('plot'); var coord = this.get('coord'); plot.reset(start, end); coord.reset(plot); }; return Chart; }(Base); Chart.plugins = Chart.initPlugins(); module.exports = Chart; /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Matrix = { multiply: function multiply(m1, m2) { var m11 = m1[0] * m2[0] + m1[2] * m2[1]; var m12 = m1[1] * m2[0] + m1[3] * m2[1]; var m21 = m1[0] * m2[2] + m1[2] * m2[3]; var m22 = m1[1] * m2[2] + m1[3] * m2[3]; var dx = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]; var dy = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]; return [m11, m12, m21, m22, dx, dy]; }, scale: function scale(out, m, v) { out[0] = m[0] * v[0]; out[1] = m[1] * v[0]; out[2] = m[2] * v[1]; out[3] = m[3] * v[1]; out[4] = m[4]; out[5] = m[5]; return out; }, rotate: function rotate(out, m, radian) { var c = Math.cos(radian); var s = Math.sin(radian); var m11 = m[0] * c + m[2] * s; var m12 = m[1] * c + m[3] * s; var m21 = m[0] * -s + m[2] * c; var m22 = m[1] * -s + m[3] * c; out[0] = m11; out[1] = m12; out[2] = m21; out[3] = m22; out[4] = m[4]; out[5] = m[5]; return out; }, translate: function translate(out, m, v) { out[0] = m[0]; out[1] = m[1]; out[2] = m[2]; out[3] = m[3]; out[4] = m[4] + m[0] * v[0] + m[2] * v[1]; out[5] = m[5] + m[1] * v[0] + m[3] * v[1]; return out; }, transform: function transform(m, actions) { var out = [].concat(m); for (var i = 0, len = actions.length; i < len; i++) { var action = actions[i]; switch (action[0]) { case 't': Matrix.translate(out, out, [action[1], action[2]]); break; case 's': Matrix.scale(out, out, [action[1], action[2]]); break; case 'r': Matrix.rotate(out, out, action[1]); break; default: break; } } return out; } }; module.exports = Matrix; /***/ }), /* 32 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports["default"] = void 0; var _util = __webpack_require__(20); /** * @fileOverview the Attribute base class */ function toScaleString(scale, value) { if ((0, _util.isString)(value)) { return value; } return scale.invert(scale.scale(value)); } /** * 所有视觉通道属性的基类 * @class Attr */ var AttributeBase = /*#__PURE__*/function () { function AttributeBase(cfg) { var _this = this; /** * 属性的类型 * @type {String} */ this.type = 'base'; /** * 属性的名称 * @type {String} */ this.name = null; /** * 回调函数 * @type {Function} */ this.method = null; /** * 备选的值数组 * @type {Array} */ this.values = []; /** * 属性内部的度量 * @type {Array} */ this.scales = []; /** * 是否通过线性取值, 如果未指定,则根据数值的类型判定 * @type {Boolean} */ this.linear = null; /** * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值 */ var mixedCallback = null; var defaultCallback = this.callback; if (cfg.callback) { var userCallback = cfg.callback; mixedCallback = function mixedCallback() { for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) { params[_key] = arguments[_key]; } var ret = userCallback.apply(void 0, params); if ((0, _util.isNil)(ret)) { ret = defaultCallback.apply(_this, params); } return ret; }; } (0, _util.mix)(this, cfg); if (mixedCallback) { (0, _util.mix)(this, { callback: mixedCallback }); } } // 获取属性值,将值映射到视觉通道 var _proto = AttributeBase.prototype; _proto._getAttrValue = function _getAttrValue(scale, value) { var values = this.values; if (scale.isCategory && !this.linear) { var index = scale.translate(value); return values[index % values.length]; } var percent = scale.scale(value); return this.getLinearValue(percent); } /** * 如果进行线性映射,返回对应的映射值 * @protected * @param {Number} percent 百分比 * @return {*} 颜色值、形状、大小等 */ ; _proto.getLinearValue = function getLinearValue(percent) { var values = this.values; var steps = values.length - 1; var step = Math.floor(steps * percent); var leftPercent = steps * percent - step; var start = values[step]; var end = step === steps ? start : values[step + 1]; var rstValue = start + (end - start) * leftPercent; return rstValue; } /** * 默认的回调函数 * @param {*} value 回调函数的值 * @type {Function} * @return {Array} 返回映射后的值 */ ; _proto.callback = function callback(value) { var self = this; var scale = self.scales[0]; var rstValue = null; if (scale.type === 'identity') { rstValue = scale.value; } else { rstValue = self._getAttrValue(scale, value); } return rstValue; } /** * 根据度量获取属性名 * @return {Array} dims of this Attribute */ ; _proto.getNames = function getNames() { var scales = this.scales; var names = this.names; var length = Math.min(scales.length, names.length); var rst = []; for (var i = 0; i < length; i++) { rst.push(names[i]); } return rst; } /** * 根据度量获取维度名 * @return {Array} dims of this Attribute */ ; _proto.getFields = function getFields() { var scales = this.scales; var rst = []; (0, _util.each)(scales, function (scale) { rst.push(scale.field); }); return rst; } /** * 根据名称获取度量 * @param {String} name the name of scale * @return {Scale} scale */ ; _proto.getScale = function getScale(name) { var scales = this.scales; var names = this.names; var index = names.indexOf(name); return scales[index]; } /** * 映射数据 * @param {*} param1...paramn 多个数值 * @return {Array} 映射的值组成的数组 */ ; _proto.mapping = function mapping() { var scales = this.scales; var callback = this.callback; for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { params[_key2] = arguments[_key2]; } var values = params; if (callback) { for (var i = 0, len = params.length; i < len; i++) { params[i] = this._toOriginParam(params[i], scales[i]); } values = callback.apply(this, params); } values = [].concat(values); return values; } // 原始的参数 ; _proto._toOriginParam = function _toOriginParam(param, scale) { var rst = param; if (!scale.isLinear) { if ((0, _util.isArray)(param)) { rst = []; for (var i = 0, len = param.length; i < len; i++) { rst.push(toScaleString(scale, param[i])); } } else { rst = toScaleString(scale, param); } } return rst; }; return AttributeBase; }(); var _default = AttributeBase; exports["default"] = _default; /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { var mix = __webpack_require__(64); var Adjust = /*#__PURE__*/function () { var _proto = Adjust.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整 }; function Adjust(cfg) { this._initDefaultCfg(); mix(this, cfg); } /** * @override */ _proto.processAdjust = function processAdjust() /* dataArray */ {}; return Adjust; }(); module.exports = Adjust; /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { var isType = __webpack_require__(27); var isArray = Array.isArray ? Array.isArray : function (value) { return isType(value, 'Array'); }; module.exports = isArray; /***/ }), /* 35 */ /***/ (function(module, exports) { // isFinite, var isNil = function isNil(value) { /** * isNil(null) => true * isNil() => true */ return value === null || value === undefined; }; module.exports = isNil; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { /** * 判断是否数字 * @return {Boolean} 是否数字 */ var isType = __webpack_require__(27); var isNumber = function isNumber(value) { return isType(value, 'Number'); }; module.exports = isNumber; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.getClip = getClip; exports.isPointInPlot = isPointInPlot; var _require = __webpack_require__(16), Shape = _require.Shape; function getClip(coord) { var start = coord.start; var end = coord.end; var width = end.x - start.x; var height = Math.abs(end.y - start.y); var margin = 10; var clip; if (coord.isPolar) { var circleRadius = coord.circleRadius, center = coord.center, startAngle = coord.startAngle, endAngle = coord.endAngle; clip = new Shape.Sector({ attrs: { x: center.x, y: center.y, r: circleRadius, r0: 0, startAngle: startAngle, endAngle: endAngle } }); } else { clip = new Shape.Rect({ attrs: { x: start.x, y: end.y - margin, width: width, height: height + 2 * margin } }); } clip.isClip = true; return clip; } function isPointInPlot(point, plot) { var x = point.x, y = point.y; var tl = plot.tl, tr = plot.tr, br = plot.br; return x >= tl.x && x <= tr.x && y >= tl.y && y <= br.y; } /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @fileOverview shape util * @author dxq613@gmail.com */ var Util = __webpack_require__(0); var ShapeUtil = { splitPoints: function splitPoints(obj) { var points = []; var x = obj.x; var y = obj.y; y = Util.isArray(y) ? y : [y]; y.forEach(function (yItem, index) { var point = { x: Util.isArray(x) ? x[index] : x, y: yItem }; points.push(point); }); return points; }, splitArray: function splitArray(data, yField, connectNulls) { if (!data.length) return []; var arr = []; var tmp = []; var yValue; Util.each(data, function (obj) { yValue = obj._origin ? obj._origin[yField] : obj[yField]; if (connectNulls) { if (!Util.isNil(yValue)) { tmp.push(obj); } } else { if (Util.isArray(yValue) && Util.isNil(yValue[0]) || Util.isNil(yValue)) { if (tmp.length) { arr.push(tmp); tmp = []; } } else { tmp.push(obj); } } }); if (tmp.length) { arr.push(tmp); } return arr; } }; module.exports = ShapeUtil; /***/ }), /* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7); var filter = function (arr, func) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(arr)) { return arr; } var result = []; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (value, index) { if (func(value, index)) { result.push(value); } }); return result; }; /* harmony default export */ __webpack_exports__["a"] = (filter); /***/ }), /* 40 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var isObjectLike = function (value) { /** * isObjectLike({}) => true * isObjectLike([1, 2, 3]) => true * isObjectLike(Function) => false * isObjectLike(null) => false */ return typeof value === 'object' && value !== null; }; /* harmony default export */ __webpack_exports__["a"] = (isObjectLike); /***/ }), /* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = mix; // FIXME: Mutable param should be forbidden in static lang. function _mix(dist, obj) { for (var key in obj) { if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) { dist[key] = obj[key]; } } } function mix(dist, src1, src2, src3) { if (src1) _mix(dist, src1); if (src2) _mix(dist, src2); if (src3) _mix(dist, src3); return dist; } /***/ }), /* 42 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports["default"] = void 0; var _common = __webpack_require__(0); // 实现简单的事件机制 var EventEmit = /*#__PURE__*/function () { function EventEmit() { this.__events = {}; } var _proto = EventEmit.prototype; _proto.on = function on(type, listener) { if (!type || !listener) { return; } var events = this.__events[type] || []; events.push(listener); this.__events[type] = events; }; _proto.emit = function emit(type, e) { var _this = this; if ((0, _common.isObject)(type)) { e = type; type = e && e.type; } if (!type) { return; } var events = this.__events[type]; if (!events || !events.length) { return; } events.forEach(function (listener) { listener.call(_this, e); }); }; _proto.off = function off(type, listener) { var __events = this.__events; var events = __events[type]; if (!events || !events.length) { return; } // 如果没有指定方法,则删除所有项 if (!listener) { delete __events[type]; return; } // 删除指定的 listener for (var i = 0, len = events.length; i < len; i++) { if (events[i] === listener) { events.splice(i, 1); } } }; return EventEmit; }(); var _default = EventEmit; exports["default"] = _default; /***/ }), /* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var MatrixUtil = __webpack_require__(31); var Vector2 = __webpack_require__(13); var defaultMatrix = [1, 0, 0, 1, 0, 0]; var Base = /*#__PURE__*/function () { var _proto = Base.prototype; _proto._initDefaultCfg = function _initDefaultCfg() {}; function Base(cfg) { this._initDefaultCfg(); Util.mix(this, cfg); var start; var end; if (this.plot) { start = this.plot.bl; end = this.plot.tr; this.start = start; this.end = end; } else { start = this.start; end = this.end; } this.init(start, end); } _proto._scale = function _scale(s1, s2) { var matrix = this.matrix; var center = this.center; MatrixUtil.translate(matrix, matrix, [center.x, center.y]); MatrixUtil.scale(matrix, matrix, [s1, s2]); MatrixUtil.translate(matrix, matrix, [-center.x, -center.y]); }; _proto.init = function init(start, end) { this.matrix = [].concat(defaultMatrix); // 设置中心点 this.center = { x: (end.x - start.x) / 2 + start.x, y: (end.y - start.y) / 2 + start.y }; if (this.scale) { this._scale(this.scale[0], this.scale[1]); } }; _proto.convertPoint = function convertPoint(point) { var _this$_convertPoint = this._convertPoint(point), x = _this$_convertPoint.x, y = _this$_convertPoint.y; var vector = [x, y]; Vector2.transformMat2d(vector, vector, this.matrix); return { x: vector[0], y: vector[1] }; }; _proto.invertPoint = function invertPoint(point) { return this._invertPoint(point); }; _proto._convertPoint = function _convertPoint(point) { return point; }; _proto._invertPoint = function _invertPoint(point) { return point; }; _proto.reset = function reset(plot) { this.plot = plot; var bl = plot.bl, tr = plot.tr; this.start = bl; this.end = tr; this.init(bl, tr); }; return Base; }(); module.exports = Base; /***/ }), /* 44 */ /***/ (function(module, exports) { var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var isObject = function isObject(value) { /** * isObject({}) => true * isObject([1, 2, 3]) => true * isObject(Function) => true * isObject(null) => false */ var type = typeof value === 'undefined' ? 'undefined' : _typeof(value); return value !== null && type === 'object' || type === 'function'; }; module.exports = isObject; /***/ }), /* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Global = __webpack_require__(6); var Vector2 = __webpack_require__(13); var Abastract = /*#__PURE__*/function () { var _proto = Abastract.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { /** * ticks * @type {Array} */ this.ticks = []; /** * the configuration for tickLine * @type {Object} */ this.tickLine = {}; /** * the direction of ticks, 1 means clockwise * @type {Number} */ this.offsetFactor = 1; /** * the top container * @type {container} */ this.frontContainer = null; /** * the back container * @type {[type]} */ this.backContainer = null; /** * points for draw grid line * @type {Array} */ this.gridPoints = []; }; function Abastract(cfg) { this._initDefaultCfg(); Util.mix(this, cfg); this.draw(); } _proto.draw = function draw() { var line = this.line, tickLine = this.tickLine, label = this.label, grid = this.grid; grid && this.drawGrid(grid); // draw the grid lines tickLine && this.drawTicks(tickLine); // draw the tickLine line && this.drawLine(line); // draw axis line label && this.drawLabels(); // draw ticks }; _proto.drawTicks = function drawTicks(tickCfg) { var self = this; var ticks = self.ticks; var length = tickCfg.length; var container = self.getContainer(tickCfg.top); Util.each(ticks, function (tick) { var start = self.getOffsetPoint(tick.value); var end = self.getSidePoint(start, length); var shape = container.addShape('line', { className: 'axis-tick', attrs: Util.mix({ x1: start.x, y1: start.y, x2: end.x, y2: end.y }, tickCfg) }); shape._id = self._id + '-ticks'; }); }; _proto.drawLabels = function drawLabels() { var self = this; var labelOffset = self.labelOffset; var labels = self.labels; Util.each(labels, function (labelShape) { var container = self.getContainer(labelShape.get('top')); var start = self.getOffsetPoint(labelShape.get('value')); var _self$getSidePoint = self.getSidePoint(start, labelOffset), x = _self$getSidePoint.x, y = _self$getSidePoint.y; labelShape.attr(Util.mix({ x: x, y: y }, self.getTextAlignInfo(start, labelOffset), labelShape.get('textStyle'))); labelShape._id = self._id + '-' + labelShape.attr('text'); container.add(labelShape); }); }; _proto.drawLine = function drawLine() {}; _proto.drawGrid = function drawGrid(grid) { var self = this; var gridPoints = self.gridPoints, ticks = self.ticks; var gridCfg = grid; var count = gridPoints.length; Util.each(gridPoints, function (subPoints, index) { if (Util.isFunction(grid)) { var tick = ticks[index] || {}; var executedGrid = grid(tick.text, index, count); gridCfg = executedGrid ? Util.mix({}, Global._defaultAxis.grid, executedGrid) : null; } if (gridCfg) { var type = gridCfg.type; // has two types: 'line' and 'arc' var points = subPoints.points; var container = self.getContainer(gridCfg.top); var shape; if (type === 'arc') { var center = self.center, startAngle = self.startAngle, endAngle = self.endAngle; var radius = Vector2.length([points[0].x - center.x, points[0].y - center.y]); shape = container.addShape('Arc', { className: 'axis-grid', attrs: Util.mix({ x: center.x, y: center.y, startAngle: startAngle, endAngle: endAngle, r: radius }, gridCfg) }); } else { shape = container.addShape('Polyline', { className: 'axis-grid', attrs: Util.mix({ points: points }, gridCfg) }); } shape._id = subPoints._id; } }); }; _proto.getOffsetPoint = function getOffsetPoint() {}; _proto.getAxisVector = function getAxisVector() {}; _proto.getOffsetVector = function getOffsetVector(point, offset) { var self = this; var axisVector = self.getAxisVector(point); var normal = Vector2.normalize([], axisVector); var factor = self.offsetFactor; var verticalVector = [normal[1] * -1 * factor, normal[0] * factor]; return Vector2.scale([], verticalVector, offset); }; _proto.getSidePoint = function getSidePoint(point, offset) { var self = this; var offsetVector = self.getOffsetVector(point, offset); return { x: point.x + offsetVector[0], y: point.y + offsetVector[1] }; }; _proto.getTextAlignInfo = function getTextAlignInfo(point, offset) { var self = this; var offsetVector = self.getOffsetVector(point, offset); var align; var baseLine; if (offsetVector[0] > 0) { align = 'left'; } else if (offsetVector[0] < 0) { align = 'right'; } else { align = 'center'; } if (offsetVector[1] > 0) { baseLine = 'top'; } else if (offsetVector[1] < 0) { baseLine = 'bottom'; } else { baseLine = 'middle'; } return { textAlign: align, textBaseline: baseLine }; }; _proto.getContainer = function getContainer(isTop) { var frontContainer = this.frontContainer, backContainer = this.backContainer; return isTop ? frontContainer : backContainer; }; return Abastract; }(); module.exports = Abastract; /***/ }), /* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var MatrixUtil = __webpack_require__(31); var Vector2 = __webpack_require__(13); var StyleUtil = __webpack_require__(179); function isUnchanged(m) { return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0; } var ALIAS_ATTRS_MAP = { stroke: 'strokeStyle', fill: 'fillStyle', opacity: 'globalAlpha' }; var SHAPE_ATTRS = ['fillStyle', 'font', 'globalAlpha', 'lineCap', 'lineWidth', 'lineJoin', 'miterLimit', 'shadowBlur', 'shadowColor', 'shadowOffsetX', 'shadowOffsetY', 'strokeStyle', 'textAlign', 'textBaseline', 'lineDash', 'shadow' // 兼容支付宝小程序 ]; var CLIP_SHAPES = ['circle', 'sector', 'polygon', 'rect', 'polyline']; var Element = /*#__PURE__*/function () { var _proto = Element.prototype; _proto._initProperties = function _initProperties() { this._attrs = { zIndex: 0, visible: true, destroyed: false }; }; function Element(cfg) { this._initProperties(); Util.mix(this._attrs, cfg); var attrs = this._attrs.attrs; if (attrs) { this.initAttrs(attrs); } this.initTransform(); } _proto.get = function get(name) { return this._attrs[name]; }; _proto.set = function set(name, value) { this._attrs[name] = value; }; _proto.isGroup = function isGroup() { return this.get('isGroup'); }; _proto.isShape = function isShape() { return this.get('isShape'); }; _proto.initAttrs = function initAttrs(attrs) { this.attr(Util.mix(this.getDefaultAttrs(), attrs)); }; _proto.getDefaultAttrs = function getDefaultAttrs() { return {}; }; _proto._setAttr = function _setAttr(name, value) { var attrs = this._attrs.attrs; if (name === 'clip') { value = this._setAttrClip(value); } else { var alias = ALIAS_ATTRS_MAP[name]; if (alias) { attrs[alias] = value; } } attrs[name] = value; }; _proto._getAttr = function _getAttr(name) { return this._attrs.attrs[name]; } // _afterAttrsSet() {} ; _proto._setAttrClip = function _setAttrClip(clip) { if (clip && CLIP_SHAPES.indexOf(clip._attrs.type) > -1) { if (clip.get('canvas') === null) { clip = Object.assign({}, clip); } clip.set('parent', this.get('parent')); clip.set('context', this.get('context')); return clip; } return null; }; _proto.attr = function attr(name, value) { var self = this; if (self.get('destroyed')) return null; var argumentsLen = arguments.length; if (argumentsLen === 0) { return self._attrs.attrs; } if (Util.isObject(name)) { this._attrs.bbox = null; for (var k in name) { self._setAttr(k, name[k]); } if (self._afterAttrsSet) { self._afterAttrsSet(); } return self; } if (argumentsLen === 2) { this._attrs.bbox = null; self._setAttr(name, value); if (self._afterAttrsSet) { self._afterAttrsSet(); } return self; } return self._getAttr(name); }; _proto.getParent = function getParent() { return this.get('parent'); }; _proto.draw = function draw(context) { if (this.get('destroyed')) { return; } if (this.get('visible')) { this.setContext(context); this.drawInner(context); this.restoreContext(context); } }; _proto.setContext = function setContext(context) { var clip = this._attrs.attrs.clip; context.save(); if (clip) { clip.resetTransform(context); clip.createPath(context); context.clip(); } this.resetContext(context); this.resetTransform(context); }; _proto.restoreContext = function restoreContext(context) { context.restore(); }; _proto.resetContext = function resetContext(context) { var elAttrs = this._attrs.attrs; if (!this._attrs.isGroup) { for (var k in elAttrs) { if (SHAPE_ATTRS.indexOf(k) > -1) { var v = elAttrs[k]; if (k === 'fillStyle' || k === 'strokeStyle') { v = StyleUtil.parseStyle(v, this, context); } if (k === 'lineDash' && context.setLineDash && Util.isArray(v)) { context.setLineDash(v); } else { context[k] = v; } } } } }; _proto.hasFill = function hasFill() { return this.get('canFill') && this._attrs.attrs.fillStyle; }; _proto.hasStroke = function hasStroke() { return this.get('canStroke') && this._attrs.attrs.strokeStyle; }; _proto.drawInner = function drawInner() /* context */ {}; _proto.show = function show() { this.set('visible', true); return this; }; _proto.hide = function hide() { this.set('visible', false); return this; }; _proto.isVisible = function isVisible() { return this.get('visible'); }; _proto._removeFromParent = function _removeFromParent() { var parent = this.get('parent'); if (parent) { var children = parent.get('children'); Util.Array.remove(children, this); } return this; }; _proto.remove = function remove(destroy) { if (destroy) { this.destroy(); } else { this._removeFromParent(); } }; _proto.destroy = function destroy() { var destroyed = this.get('destroyed'); if (destroyed) { return null; } this._removeFromParent(); this._attrs = {}; this.set('destroyed', true); }; _proto.getBBox = function getBBox() { return { minX: 0, maxX: 0, minY: 0, maxY: 0, width: 0, height: 0 }; }; _proto.initTransform = function initTransform() { var attrs = this._attrs.attrs || {}; if (!attrs.matrix) { attrs.matrix = [1, 0, 0, 1, 0, 0]; } this._attrs.attrs = attrs; }; _proto.getMatrix = function getMatrix() { return this._attrs.attrs.matrix; }; _proto.setMatrix = function setMatrix(m) { this._attrs.attrs.matrix = [m[0], m[1], m[2], m[3], m[4], m[5]]; }; _proto.transform = function transform(actions) { var matrix = this._attrs.attrs.matrix; this._attrs.attrs.matrix = MatrixUtil.transform(matrix, actions); return this; }; _proto.setTransform = function setTransform(actions) { this._attrs.attrs.matrix = [1, 0, 0, 1, 0, 0]; return this.transform(actions); }; _proto.translate = function translate(x, y) { var matrix = this._attrs.attrs.matrix; MatrixUtil.translate(matrix, matrix, [x, y]); }; _proto.rotate = function rotate(rad) { var matrix = this._attrs.attrs.matrix; MatrixUtil.rotate(matrix, matrix, rad); }; _proto.scale = function scale(sx, sy) { var matrix = this._attrs.attrs.matrix; MatrixUtil.scale(matrix, matrix, [sx, sy]); }; _proto.moveTo = function moveTo(x, y) { var cx = this._attrs.x || 0; var cy = this._attrs.y || 0; this.translate(x - cx, y - cy); this.set('x', x); this.set('y', y); }; _proto.apply = function apply(v) { var m = this._attrs.attrs.matrix; Vector2.transformMat2d(v, v, m); return this; }; _proto.resetTransform = function resetTransform(context) { var mo = this._attrs.attrs.matrix; if (!isUnchanged(mo)) { context.transform(mo[0], mo[1], mo[2], mo[3], mo[4], mo[5]); } }; _proto.isDestroyed = function isDestroyed() { return this.get('destroyed'); }; return Element; }(); module.exports = Element; /***/ }), /* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.EVENT_AFTER_GEOM_INIT = exports.EVENT_AFTER_SIZE_CHANGE = exports.EVENT_AFTER_DATA_CHANGE = exports.EVENT_BEFORE_DATA_CHANGE = exports.EVENT_AFTER_RENDER = exports.EVENT_BEFORE_RENDER = exports.EVENT_AFTER_INIT = void 0; var EVENT_AFTER_INIT = 'afterinit'; exports.EVENT_AFTER_INIT = EVENT_AFTER_INIT; var EVENT_BEFORE_RENDER = 'beforerender'; exports.EVENT_BEFORE_RENDER = EVENT_BEFORE_RENDER; var EVENT_AFTER_RENDER = 'afterrender'; exports.EVENT_AFTER_RENDER = EVENT_AFTER_RENDER; var EVENT_BEFORE_DATA_CHANGE = 'beforedatachange'; exports.EVENT_BEFORE_DATA_CHANGE = EVENT_BEFORE_DATA_CHANGE; var EVENT_AFTER_DATA_CHANGE = 'afterdatachange'; exports.EVENT_AFTER_DATA_CHANGE = EVENT_AFTER_DATA_CHANGE; var EVENT_AFTER_SIZE_CHANGE = '_aftersizechange'; exports.EVENT_AFTER_SIZE_CHANGE = EVENT_AFTER_SIZE_CHANGE; var EVENT_AFTER_GEOM_INIT = '_aftergeominit'; exports.EVENT_AFTER_GEOM_INIT = EVENT_AFTER_GEOM_INIT; /***/ }), /* 48 */ /***/ (function(module, exports, __webpack_require__) { var isType = __webpack_require__(27); var isString = function isString(str) { return isType(str, 'String'); }; module.exports = isString; /***/ }), /* 49 */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(50); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } module.exports = _interopRequireWildcard; /***/ }), /* 50 */ /***/ (function(module, exports) { function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { module.exports = _typeof = function _typeof(obj) { return typeof obj; }; } else { module.exports = _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } module.exports = _typeof; /***/ }), /* 51 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys__ = __webpack_require__(52); function isMatch(obj, attrs) { var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys__["a" /* default */])(attrs); var length = _keys.length; if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(obj)) return !length; for (var i = 0; i < length; i += 1) { var key = _keys[i]; if (attrs[key] !== obj[key] || !(key in obj)) { return false; } } return true; } /* harmony default export */ __webpack_exports__["a"] = (isMatch); /***/ }), /* 52 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9); var keys = Object.keys ? function (obj) { return Object.keys(obj); } : function (obj) { var result = []; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(obj, function (value, key) { if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj) && key === 'prototype')) { result.push(key); } }); return result; }; /* harmony default export */ __webpack_exports__["a"] = (keys); /***/ }), /* 53 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); var splice = Array.prototype.splice; var pullAt = function pullAt(arr, indexes) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) { return []; } var length = arr ? indexes.length : 0; var last = length - 1; while (length--) { var previous = void 0; var index = indexes[length]; if (length === last || index !== previous) { previous = index; splice.call(arr, index, 1); } } return arr; }; /* harmony default export */ __webpack_exports__["a"] = (pullAt); /***/ }), /* 54 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(8); var uniq = function (arr) { var resultArr = []; Object(__WEBPACK_IMPORTED_MODULE_1__each__["a" /* default */])(arr, function (item) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__contains__["a" /* default */])(resultArr, item)) { resultArr.push(item); } }); return resultArr; }; /* harmony default export */ __webpack_exports__["a"] = (uniq); /***/ }), /* 55 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__group_by__ = __webpack_require__(56); var groupToMap = function (data, condition) { if (!condition) { return { 0: data }; } if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(condition)) { var paramsCondition_1 = Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(condition) ? condition : condition.replace(/\s+/g, '').split('*'); condition = function (row) { var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序 for (var i = 0, l = paramsCondition_1.length; i < l; i++) { unique += row[paramsCondition_1[i]] && row[paramsCondition_1[i]].toString(); } return unique; }; } var groups = Object(__WEBPACK_IMPORTED_MODULE_2__group_by__["a" /* default */])(data, condition); return groups; }; /* harmony default export */ __webpack_exports__["a"] = (groupToMap); /***/ }), /* 56 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9); var hasOwnProperty = Object.prototype.hasOwnProperty; function groupBy(data, condition) { if (!condition || !Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(data)) { return {}; } var result = {}; // 兼容方法和 字符串的写法 var predicate = Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(condition) ? condition : function (item) { return item[condition]; }; var key; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(data, function (item) { key = predicate(item); if (hasOwnProperty.call(result, key)) { result[key].push(item); } else { result[key] = [item]; } }); return result; } /* harmony default export */ __webpack_exports__["a"] = (groupBy); /***/ }), /* 57 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (function (obj, key) { return obj.hasOwnProperty(key); }); /***/ }), /* 58 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9); // @ts-ignore var values = Object.values ? function (obj) { return Object.values(obj); } : function (obj) { var result = []; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(obj, function (value, key) { if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj) && key === 'prototype')) { result.push(value); } }); return result; }; /* harmony default export */ __webpack_exports__["a"] = (values); /***/ }), /* 59 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var toString = {}.toString; var getType = function (value) { return toString.call(value).replace(/^\[object /, '').replace(/]$/, ''); }; /* harmony default export */ __webpack_exports__["a"] = (getType); /***/ }), /* 60 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var objectProto = Object.prototype; var isPrototype = function (value) { var Ctor = value && value.constructor; var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto; return value === proto; }; /* harmony default export */ __webpack_exports__["a"] = (isPrototype); /***/ }), /* 61 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(40); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_string__ = __webpack_require__(18); var isEqual = function (value, other) { if (value === other) { return true; } if (!value || !other) { return false; } if (Object(__WEBPACK_IMPORTED_MODULE_2__is_string__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_2__is_string__["a" /* default */])(other)) { return false; } if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(other)) { if (value.length !== other.length) { return false; } var rst = true; for (var i = 0; i < value.length; i++) { rst = isEqual(value[i], other[i]); if (!rst) { break; } } return rst; } if (Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(other)) { var valueKeys = Object.keys(value); var otherKeys = Object.keys(other); if (valueKeys.length !== otherKeys.length) { return false; } var rst = true; for (var i = 0; i < valueKeys.length; i++) { rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]); if (!rst) { break; } } return rst; } return false; }; /* harmony default export */ __webpack_exports__["a"] = (isEqual); /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.isCanvasElement = isCanvasElement; exports.getPixelRatio = getPixelRatio; exports.getStyle = getStyle; exports.getWidth = getWidth; exports.getHeight = getHeight; exports.getDomById = getDomById; exports.getRelativePosition = getRelativePosition; exports.addEventListener = addEventListener; exports.removeEventListener = removeEventListener; exports.createEvent = createEvent; exports.measureText = measureText; exports.isBrowser = exports.isNode = exports.isMy = exports.isWx = void 0; /** * Detects support for options object argument in addEventListener. * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support * @private */ var supportsEventListenerOptions = function () { var supports = false; try { var options = Object.defineProperty({}, 'passive', { get: function get() { supports = true; } }); window.addEventListener('e', null, options); } catch (e) {// continue regardless of error } return supports; }(); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. // https://github.com/chartjs/Chart.js/issues/4287 var eventListenerOptions = supportsEventListenerOptions ? { passive: true } : false; /* global wx, my */ // weixin miniprogram var isWx = typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function'; // ant miniprogram exports.isWx = isWx; var isMy = typeof my === 'object' && typeof my.getSystemInfoSync === 'function'; // in node exports.isMy = isMy; var isNode = typeof module !== 'undefined' && typeof module.exports !== 'undefined'; // in browser exports.isNode = isNode; var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.sessionStorage !== 'undefined'; exports.isBrowser = isBrowser; function isCanvasElement(el) { if (!el || typeof el !== 'object') return false; if (el.nodeType === 1 && el.nodeName) { // HTMLCanvasElement return true; } // CanvasElement return !!el.isCanvasElement; } function getPixelRatio() { return window && window.devicePixelRatio || 1; } function getStyle(el, property) { return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property); } function getWidth(el) { var width = getStyle(el, 'width'); if (width === 'auto') { width = el.offsetWidth; } return parseFloat(width); } function getHeight(el) { var height = getStyle(el, 'height'); if (height === 'auto') { height = el.offsetHeight; } return parseFloat(height); } function getDomById(id) { if (!id) { return null; } return document.getElementById(id); } function getRelativePosition(point, canvas) { var canvasDom = canvas.get('el'); if (!canvasDom) return point; var _canvasDom$getBoundin = canvasDom.getBoundingClientRect(), top = _canvasDom$getBoundin.top, right = _canvasDom$getBoundin.right, bottom = _canvasDom$getBoundin.bottom, left = _canvasDom$getBoundin.left; var paddingLeft = parseFloat(getStyle(canvasDom, 'padding-left')); var paddingTop = parseFloat(getStyle(canvasDom, 'padding-top')); var paddingRight = parseFloat(getStyle(canvasDom, 'padding-right')); var paddingBottom = parseFloat(getStyle(canvasDom, 'padding-bottom')); var width = right - left - paddingLeft - paddingRight; var height = bottom - top - paddingTop - paddingBottom; var pixelRatio = canvas.get('pixelRatio'); var mouseX = (point.x - left - paddingLeft) / width * canvasDom.width / pixelRatio; var mouseY = (point.y - top - paddingTop) / height * canvasDom.height / pixelRatio; return { x: mouseX, y: mouseY }; } function addEventListener(source, type, listener) { source.addEventListener(type, listener, eventListenerOptions); } function removeEventListener(source, type, listener) { source.removeEventListener(type, listener, eventListenerOptions); } function createEventObj(type, chart, x, y, nativeEvent) { return { type: type, chart: chart, "native": nativeEvent || null, x: x !== undefined ? x : null, y: y !== undefined ? y : null }; } function createEvent(event, chart) { var type = event.type; var clientPoint; // 说明是touch相关事件 if (event.touches) { // https://developer.mozilla.org/zh-CN/docs/Web/API/TouchEvent/changedTouches // 这里直接拿changedTouches就可以了,不管是touchstart, touchmove, touchend changedTouches 都是有的 // 为了以防万一,做个空判断 var touch = event.changedTouches[0] || {}; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置 var x = touch.x, y = touch.y, clientX = touch.clientX, clientY = touch.clientY; // 小程序环境会有x,y,这里就直接返回 if (x && y) { return createEventObj(type, chart, x, y, event); } clientPoint = { x: clientX, y: clientY }; } else { // mouse相关事件 clientPoint = { x: event.clientX, y: event.clientY }; } // 理论上应该是只有有在浏览器环境才会走到这里 var canvas = chart.get('canvas'); // 通过clientX, clientY 计算x, y var point = getRelativePosition(clientPoint, canvas); return createEventObj(type, chart, point.x, point.y, event); } function measureText(text, font, ctx) { if (!ctx) { ctx = document.createElement('canvas').getContext('2d'); } ctx.font = font || '12px sans-serif'; return ctx.measureText(text); } /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _emit = _interopRequireDefault(__webpack_require__(42)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Base = /*#__PURE__*/function (_Emit) { (0, _inheritsLoose2["default"])(Base, _Emit); var _super = _createSuper(Base); var _proto = Base.prototype; _proto.getDefaultCfg = function getDefaultCfg() { return {}; }; function Base(cfg) { var _this; _this = _Emit.call(this) || this; var attrs = {}; var defaultCfg = _this.getDefaultCfg(); _this._attrs = attrs; Util.mix(attrs, defaultCfg, cfg); return _this; } _proto.get = function get(name) { return this._attrs[name]; }; _proto.set = function set(name, value) { this._attrs[name] = value; }; _proto.destroy = function destroy() { this._attrs = {}; this.destroyed = true; }; return Base; }(_emit["default"]); module.exports = Base; /***/ }), /* 64 */ /***/ (function(module, exports) { function _mix(dist, obj) { for (var key in obj) { if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) { dist[key] = obj[key]; } } } var mix = function mix(dist, src1, src2, src3) { if (src1) _mix(dist, src1); if (src2) _mix(dist, src2); if (src3) _mix(dist, src3); return dist; }; module.exports = mix; /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { /** * @fileOverview 计算分类的的坐标点 * @author dxq613@gmail.com */ var each = __webpack_require__(15); var MAX_COUNT = 8; var SUB_COUNT = 4; // 控制个数不能过小 function getSimpleArray(data) { var arr = []; each(data, function (sub) { arr = arr.concat(sub); }); return arr; } function getGreatestFactor(count, number) { var i; for (i = number; i > 0; i--) { if (count % i === 0) { break; } } // 如果是素数,没有可以整除的数字 if (i === 1) { for (i = number; i > 0; i--) { if ((count - 1) % i === 0) { break; } } } return i; } module.exports = function (info) { var rst = {}; var ticks = []; var isRounding = info.isRounding; var categories = getSimpleArray(info.data); var length = categories.length; var maxCount = info.maxCount || MAX_COUNT; var tickCount; if (isRounding) { // 取整操作 tickCount = getGreatestFactor(length - 1, maxCount - 1) + 1; // 如果计算出来只有两个坐标点,则直接使用传入的 maxCount if (tickCount === 2) { tickCount = maxCount; } else if (tickCount < maxCount - SUB_COUNT) { tickCount = maxCount - SUB_COUNT; } } else { tickCount = maxCount; } if (!isRounding && length <= tickCount + tickCount / 2) { ticks = [].concat(categories); } else { var step = parseInt(length / (tickCount - 1), 10); var groups = categories.map(function (e, i) { return i % step === 0 ? categories.slice(i, i + step) : null; }).filter(function (e) { return e; }); for (var i = 1, groupLen = groups.length; i < groupLen && (isRounding ? i * step < length - step : i < tickCount - 1); i++) { ticks.push(groups[i][0]); } if (categories.length) { ticks.unshift(categories[0]); var last = categories[length - 1]; if (ticks.indexOf(last) === -1) { ticks.push(last); } } } rst.categories = categories; rst.ticks = ticks; return rst; }; /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Shape = __webpack_require__(10); var SHAPE_MAP = {}; var INDEX = '_INDEX'; function getComparer(compare) { return function (left, right) { var result = compare(left, right); return result === 0 ? left[INDEX] - right[INDEX] : result; }; } module.exports = { getGroupClass: function getGroupClass() {}, getChildren: function getChildren() { return this.get('children'); }, addShape: function addShape(type, cfg) { if (cfg === void 0) { cfg = {}; } var canvas = this.get('canvas'); var shapeType = SHAPE_MAP[type]; if (!shapeType) { shapeType = Util.upperFirst(type); SHAPE_MAP[type] = shapeType; } cfg.canvas = canvas; if (shapeType === 'Text' && canvas && canvas.get('fontFamily')) { cfg.attrs.fontFamily = cfg.attrs.fontFamily || canvas.get('fontFamily'); } var shape = new Shape[shapeType](cfg); this.add(shape); return shape; }, addGroup: function addGroup(cfg) { var canvas = this.get('canvas'); var groupClass = this.getGroupClass(); cfg = Util.mix({}, cfg); cfg.canvas = canvas; cfg.parent = this; var rst = new groupClass(cfg); this.add(rst); return rst; }, contain: function contain(item) { var children = this.get('children'); return children.indexOf(item) > -1; }, sort: function sort() { var children = this.get('children'); for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; child[INDEX] = i; } children.sort(getComparer(function (obj1, obj2) { return obj1.get('zIndex') - obj2.get('zIndex'); })); return this; }, clear: function clear() { var children = this.get('children'); while (children.length !== 0) { children[children.length - 1].remove(true); } return this; }, add: function add(items) { var self = this; var children = self.get('children'); if (!Util.isArray(items)) { items = [items]; } for (var i = 0, len = items.length; i < len; i++) { var item = items[i]; var parent = item.get('parent'); if (parent) { var descendants = parent.get('children'); Util.Array.remove(descendants, item); } self._setEvn(item); children.push(item); } return self; }, _setEvn: function _setEvn(item) { var self = this; item._attrs.parent = self; item._attrs.context = self._attrs.context; item._attrs.canvas = self._attrs.canvas; var clip = item._attrs.attrs.clip; if (clip) { clip.set('parent', self); clip.set('context', self.get('context')); } if (item._attrs.isGroup) { var children = item._attrs.children; for (var i = 0, len = children.length; i < len; i++) { item._setEvn(children[i]); } } } }; /***/ }), /* 67 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Element = __webpack_require__(46); var Container = __webpack_require__(66); var Vector2 = __webpack_require__(13); var Group = /*#__PURE__*/function (_Element) { (0, _inheritsLoose2["default"])(Group, _Element); var _super = _createSuper(Group); function Group() { return _Element.apply(this, arguments) || this; } var _proto = Group.prototype; _proto._initProperties = function _initProperties() { this._attrs = { zIndex: 0, visible: true, destroyed: false, isGroup: true, children: [] }; }; _proto.drawInner = function drawInner(context) { var children = this.get('children'); for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; child.draw(context); } return this; }; _proto.getBBox = function getBBox() { var self = this; var minX = Infinity; var maxX = -Infinity; var minY = Infinity; var maxY = -Infinity; var children = self.get('children'); for (var i = 0, length = children.length; i < length; i++) { var child = children[i]; if (child.get('visible')) { var box = child.getBBox(); if (!box) { continue; } var leftTop = [box.minX, box.minY]; var leftBottom = [box.minX, box.maxY]; var rightTop = [box.maxX, box.minY]; var rightBottom = [box.maxX, box.maxY]; var matrix = child.attr('matrix'); Vector2.transformMat2d(leftTop, leftTop, matrix); Vector2.transformMat2d(leftBottom, leftBottom, matrix); Vector2.transformMat2d(rightTop, rightTop, matrix); Vector2.transformMat2d(rightBottom, rightBottom, matrix); minX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], minX); maxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], maxX); minY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], minY); maxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], maxY); } } return { minX: minX, minY: minY, maxX: maxX, maxY: maxY, x: minX, y: minY, width: maxX - minX, height: maxY - minY }; }; _proto.destroy = function destroy() { if (this.get('destroyed')) { return; } this.clear(); _Element.prototype.destroy.call(this); }; return Group; }(Element); Util.mix(Group.prototype, Container, { getGroupClass: function getGroupClass() { return Group; } }); module.exports = Group; /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Shape = __webpack_require__(19); var ShapeUtil = __webpack_require__(38); var Global = __webpack_require__(6); // register line geom var Line = Shape.registerFactory('line', { defaultShapeType: 'line' }); function getStyle(cfg) { var style = { strokeStyle: cfg.color }; if (cfg.size >= 0) { style.lineWidth = cfg.size; } Util.mix(style, cfg.style); return Util.mix({}, Global.shape.line, style); } function drawLines(cfg, container, style, smooth) { var points = cfg.points; if (points.length && Util.isArray(points[0].y)) { var topPoints = []; var bottomPoints = []; for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; var tmp = ShapeUtil.splitPoints(point); bottomPoints.push(tmp[0]); topPoints.push(tmp[1]); } if (cfg.isInCircle) { topPoints.push(topPoints[0]); bottomPoints.push(bottomPoints[0]); } if (cfg.isStack) { return container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: topPoints, smooth: smooth }, style) }); } var topShape = container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: topPoints, smooth: smooth }, style) }); var bottomShape = container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: bottomPoints, smooth: smooth }, style) }); return [topShape, bottomShape]; } if (cfg.isInCircle) { points.push(points[0]); } return container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: points, smooth: smooth }, style) }); } var SHAPES = ['line', 'smooth', 'dash']; Util.each(SHAPES, function (shapeType) { Shape.registerShape('line', shapeType, { draw: function draw(cfg, container) { var smooth = shapeType === 'smooth'; var style = getStyle(cfg); if (shapeType === 'dash') { style.lineDash = Global.lineDash; } return drawLines(cfg, container, style, smooth); } }); }); module.exports = Line; /***/ }), /* 69 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var Base = __webpack_require__(26); var catAuto = __webpack_require__(65); var each = __webpack_require__(15); var isNumber = __webpack_require__(36); var isString = __webpack_require__(48); var Category = /*#__PURE__*/function (_Base) { _inheritsLoose(Category, _Base); function Category() { return _Base.apply(this, arguments) || this; } var _proto = Category.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { _Base.prototype._initDefaultCfg.call(this); this.type = 'cat'; /** * 是否分类度量 * @type {Boolean} */ this.isCategory = true; this.isRounding = true; // 是否进行取整操作 } /** * @override */ ; _proto.init = function init() { var self = this; var values = self.values; var tickCount = self.tickCount; each(values, function (v, i) { values[i] = v.toString(); }); if (!self.ticks) { var ticks = values; if (tickCount) { var temp = catAuto({ maxCount: tickCount, data: values, isRounding: self.isRounding }); ticks = temp.ticks; } this.ticks = ticks; } } /** * @override */ ; _proto.getText = function getText(value) { if (this.values.indexOf(value) === -1 && isNumber(value)) { value = this.values[Math.round(value)]; } return _Base.prototype.getText.call(this, value); } /** * @override */ ; _proto.translate = function translate(value) { var index = this.values.indexOf(value); if (index === -1 && isNumber(value)) { index = value; } else if (index === -1) { index = NaN; } return index; } /** * @override */ ; _proto.scale = function scale(value) { var rangeMin = this.rangeMin(); var rangeMax = this.rangeMax(); var percent; if (isString(value) || this.values.indexOf(value) !== -1) { value = this.translate(value); } if (this.values.length > 1) { percent = value / (this.values.length - 1); } else { percent = value; } return rangeMin + percent * (rangeMax - rangeMin); } /** * @override */ ; _proto.invert = function invert(value) { if (isString(value)) { // 如果已经是字符串 return value; } var min = this.rangeMin(); var max = this.rangeMax(); // 归一到 范围内 if (value < min) { value = min; } if (value > max) { value = max; } var percent = (value - min) / (max - min); var index = Math.round(percent * (this.values.length - 1)) % this.values.length; index = index || 0; return this.values[index]; }; return Category; }(Base); Base.Cat = Category; module.exports = Category; /***/ }), /* 70 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = { requestAnimationFrame: typeof window === 'object' && window.requestAnimationFrame ? window.requestAnimationFrame : function (fn) { return setTimeout(fn, 16); } }; /***/ }), /* 71 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @fileOverview convert the line to curve * @author dxq613@gmail.com */ var Vector2 = __webpack_require__(13); function getPoint(v) { return [v.x, v.y]; } function smoothBezier(points, smooth, isLoop, constraint) { var cps = []; var prevPoint; var nextPoint; var hasConstraint = !!constraint; var min; var max; var point; var len; var l; var i; if (hasConstraint) { min = [Infinity, Infinity]; max = [-Infinity, -Infinity]; for (i = 0, l = points.length; i < l; i++) { point = getPoint(points[i]); Vector2.min(min, min, point); Vector2.max(max, max, point); } Vector2.min(min, min, constraint[0]); Vector2.max(max, max, constraint[1]); } for (i = 0, len = points.length; i < len; i++) { point = getPoint(points[i]); if (isLoop) { prevPoint = getPoint(points[i ? i - 1 : len - 1]); nextPoint = getPoint(points[(i + 1) % len]); } else { if (i === 0 || i === len - 1) { cps.push([point[0], point[1]]); continue; } else { prevPoint = getPoint(points[i - 1]); nextPoint = getPoint(points[i + 1]); } } var v = Vector2.sub([], nextPoint, prevPoint); Vector2.scale(v, v, smooth); var d0 = Vector2.distance(point, prevPoint); var d1 = Vector2.distance(point, nextPoint); var sum = d0 + d1; if (sum !== 0) { d0 /= sum; d1 /= sum; } var v1 = Vector2.scale([], v, -d0); var v2 = Vector2.scale([], v, d1); var cp0 = Vector2.add([], point, v1); var cp1 = Vector2.add([], point, v2); if (hasConstraint) { Vector2.max(cp0, cp0, min); Vector2.min(cp0, cp0, max); Vector2.max(cp1, cp1, min); Vector2.min(cp1, cp1, max); } cps.push([cp0[0], cp0[1]]); cps.push([cp1[0], cp1[1]]); } if (isLoop) { cps.push(cps.shift()); } return cps; } function catmullRom2bezier(pointList, z, constraint) { var isLoop = !!z; var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint); var len = pointList.length; var d1 = []; var cp1; var cp2; var p; for (var i = 0; i < len - 1; i++) { cp1 = controlPointList[i * 2]; cp2 = controlPointList[i * 2 + 1]; p = pointList[i + 1]; d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]); } if (isLoop) { cp1 = controlPointList[len]; cp2 = controlPointList[len + 1]; p = pointList[0]; d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]); } return d1; } module.exports = { smooth: catmullRom2bezier }; /***/ }), /* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Geom = __webpack_require__(17); var ShapeUtil = __webpack_require__(38); var Util = __webpack_require__(0); __webpack_require__(68); var Path = /*#__PURE__*/function (_Geom) { (0, _inheritsLoose2["default"])(Path, _Geom); var _super = _createSuper(Path); function Path() { return _Geom.apply(this, arguments) || this; } var _proto = Path.prototype; _proto.getDefaultCfg = function getDefaultCfg() { var cfg = _Geom.prototype.getDefaultCfg.call(this); cfg.type = 'path'; cfg.shapeType = 'line'; return cfg; }; _proto.getDrawCfg = function getDrawCfg(obj) { var cfg = _Geom.prototype.getDrawCfg.call(this, obj); cfg.isStack = this.hasAdjust('stack'); return cfg; }; _proto.draw = function draw(data, shapeFactory) { var self = this; var container = self.get('container'); var yScale = self.getYScale(); var connectNulls = self.get('connectNulls'); var splitArray = ShapeUtil.splitArray(data, yScale.field, connectNulls); var cfg = this.getDrawCfg(data[0]); cfg.origin = data; Util.each(splitArray, function (subData, splitedIndex) { cfg.splitedIndex = splitedIndex; cfg.points = subData; self.drawShape(cfg.shape, data[0], cfg, container, shapeFactory); }); }; return Path; }(Geom); Geom.Path = Path; module.exports = Path; /***/ }), /* 73 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _const = __webpack_require__(47); /** * @fileOverview Utility for calculate the with ratui in x axis * @author sima.zhang1990@gmail.com * @author dxq613@gmail.com */ var Global = __webpack_require__(6); var Util = __webpack_require__(0); var SizeMixin = { initEvent: function initEvent() { var _this = this; var chart = this.get('chart'); if (!chart) { return; } chart.on(_const.EVENT_AFTER_SIZE_CHANGE, function () { _this.set('_width', null); }); }, getDefalutSize: function getDefalutSize() { var defaultSize = this.get('defaultSize'); if (!defaultSize) { var coord = this.get('coord'); var xScale = this.getXScale(); var dataArray = this.get('dataArray'); var values = Util.uniq(xScale.values); var count = values.length; var range = xScale.range; var normalizeSize = 1 / count; var widthRatio = 1; if (coord && coord.isPolar) { if (coord.transposed && count > 1) { widthRatio = Global.widthRatio.multiplePie; } else { widthRatio = Global.widthRatio.rose; } } else { if (xScale.isLinear) { normalizeSize *= range[1] - range[0]; } widthRatio = Global.widthRatio.column; } normalizeSize *= widthRatio; if (this.hasAdjust('dodge')) { normalizeSize = normalizeSize / dataArray.length; } defaultSize = normalizeSize; this.set('defaultSize', defaultSize); } return defaultSize; }, getDimWidth: function getDimWidth(dimName) { var coord = this.get('coord'); var start = coord.convertPoint({ x: 0, y: 0 }); var end = coord.convertPoint({ x: dimName === 'x' ? 1 : 0, y: dimName === 'x' ? 0 : 1 }); var width = 0; if (start && end) { width = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2)); } return width; }, _getWidth: function _getWidth() { var width = this.get('_width'); if (!width) { var coord = this.get('coord'); if (coord && coord.isPolar && !coord.transposed) { width = (coord.endAngle - coord.startAngle) * coord.circleRadius; } else { width = this.getDimWidth('x'); } this.set('_width', width); } return width; }, _toNormalizedSize: function _toNormalizedSize(size) { var width = this._getWidth(); return size / width; }, _toCoordSize: function _toCoordSize(normalizeSize) { var width = this._getWidth(); return width * normalizeSize; }, getNormalizedSize: function getNormalizedSize(obj) { var size = this.getAttrValue('size', obj); if (Util.isNil(size)) { size = this.getDefalutSize(); } else { size = this._toNormalizedSize(size); } return size; }, getSize: function getSize(obj) { var size = this.getAttrValue('size', obj); if (Util.isNil(size)) { var normalizeSize = this.getDefalutSize(); size = this._toCoordSize(normalizeSize); } return size; } }; module.exports = SizeMixin; /***/ }), /* 74 */, /* 75 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.merge = merge; exports.values = values; exports.firstValue = firstValue; exports.group = group; exports.groupToMap = groupToMap; exports.remove = remove; exports.getRange = getRange; var _util = __webpack_require__(20); function merge(dataArray) { var rst = []; for (var i = 0, len = dataArray.length; i < len; i++) { rst = rst.concat(dataArray[i]); } return rst; } function values(data, name) { var rst = []; var tmpMap = {}; for (var i = 0, len = data.length; i < len; i++) { var obj = data[i]; var value = obj[name]; if (!(0, _util.isNil)(value)) { if (!(0, _util.isArray)(value)) { if (!tmpMap[value]) { rst.push(value); tmpMap[value] = true; } } else { (0, _util.each)(value, function (val) { if (!tmpMap[val]) { rst.push(val); tmpMap[val] = true; } }); } } } return rst; } function firstValue(data, name) { var rst = null; for (var i = 0, len = data.length; i < len; i++) { var obj = data[i]; var value = obj[name]; if (!(0, _util.isNil)(value)) { if ((0, _util.isArray)(value)) { rst = value[0]; } else { rst = value; } break; } } return rst; } function groupToMap(data, fields) { if (!fields) { return { 0: data }; } var callback = function callback(row) { var unique = '_'; for (var i = 0, l = fields.length; i < l; i++) { unique += row[fields[i]] && row[fields[i]].toString(); } return unique; }; var groups = {}; for (var i = 0, len = data.length; i < len; i++) { var row = data[i]; var key = callback(row); if (groups[key]) { groups[key].push(row); } else { groups[key] = [row]; } } return groups; } function group(data, fields, appendConditions) { if (appendConditions === void 0) { appendConditions = {}; } if (!fields) { return [data]; } var groups = groupToMap(data, fields); var array = []; if (fields.length === 1 && appendConditions[fields[0]]) { var _values = appendConditions[fields[0]]; (0, _util.each)(_values, function (value) { value = '_' + value; array.push(groups[value]); }); } else { for (var i in groups) { array.push(groups[i]); } } return array; } function remove(arr, obj) { if (!arr) { return; } var index = arr.indexOf(obj); if (index !== -1) { arr.splice(index, 1); } } function getRange(values) { if (!values.length) { return { min: 0, max: 0 }; } var max = Math.max.apply(null, values); var min = Math.min.apply(null, values); return { min: min, max: max }; } /***/ }), /* 76 */, /* 77 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Core = {}; var Global = __webpack_require__(6); Core.Global = Global; Core.version = Global.version; Core.Chart = __webpack_require__(30); Core.Shape = __webpack_require__(19); Core.G = __webpack_require__(16); Core.Util = __webpack_require__(0); Core.Helper = __webpack_require__(37); // Core.track = function(enable) { // Global.trackable = enable; // }; // require('./track'); // 2018-12-27 关闭打点 Core.track = function () { return null; }; module.exports = Core; /***/ }), /* 78 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * @fileOverview default theme * @author dxq613@gail.com */ var Util = __webpack_require__(0); var color1 = '#E8E8E8'; // color of axis-line and axis-grid var color2 = '#808080'; // color of axis label var defaultAxis = { label: { fill: color2, fontSize: 10 }, line: { stroke: color1, lineWidth: 1 }, grid: { type: 'line', stroke: color1, lineWidth: 1, lineDash: [2] }, tickLine: null, labelOffset: 7.5 }; var Theme = { fontFamily: '"Helvetica Neue", "San Francisco", Helvetica, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", sans-serif', defaultColor: '#1890FF', pixelRatio: 1, padding: 'auto', appendPadding: 15, colors: ['#1890FF', '#2FC25B', '#FACC14', '#223273', '#8543E0', '#13C2C2', '#3436C7', '#F04864'], shapes: { line: ['line', 'dash'], point: ['circle', 'hollowCircle'] }, sizes: [4, 10], axis: { common: defaultAxis, // common axis configuration bottom: Util.mix({}, defaultAxis, { grid: null }), left: Util.mix({}, defaultAxis, { line: null }), right: Util.mix({}, defaultAxis, { line: null }), circle: Util.mix({}, defaultAxis, { line: null }), radius: Util.mix({}, defaultAxis, { labelOffset: 4 }) }, shape: { line: { lineWidth: 2, lineJoin: 'round', lineCap: 'round' }, point: { lineWidth: 0, size: 3 }, area: { fillOpacity: 0.1 } }, _defaultAxis: defaultAxis }; module.exports = Theme; /***/ }), /* 79 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter__ = __webpack_require__(39); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains__ = __webpack_require__(28); /** * Flattens `array` a single level deep. * * @param {Array} arr The array to inspect. * @param {Array} values The values to exclude. * @return {Array} Returns the new array of filtered values. * @example * difference([2, 1], [2, 3]); // => [1] */ var difference = function (arr, values) { if (values === void 0) { values = []; } return Object(__WEBPACK_IMPORTED_MODULE_0__filter__["a" /* default */])(arr, function (value) { return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__["a" /* default */])(values, value); }); }; /* harmony default export */ __webpack_exports__["a"] = (difference); /***/ }), /* 80 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_match__ = __webpack_require__(51); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_plain_object__ = __webpack_require__(24); function find(arr, predicate) { if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_array__["a" /* default */])(arr)) return null; var _predicate; if (Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(predicate)) { _predicate = predicate; } if (Object(__WEBPACK_IMPORTED_MODULE_3__is_plain_object__["a" /* default */])(predicate)) { _predicate = function (a) { return Object(__WEBPACK_IMPORTED_MODULE_1__is_match__["a" /* default */])(a, predicate); }; } if (_predicate) { for (var i = 0; i < arr.length; i += 1) { if (_predicate(arr[i])) { return arr[i]; } } } return null; } /* harmony default export */ __webpack_exports__["a"] = (find); /***/ }), /* 81 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; function findIndex(arr, predicate, fromIndex) { if (fromIndex === void 0) { fromIndex = 0; } for (var i = fromIndex; i < arr.length; i++) { if (predicate(arr[i], i)) { // 找到终止循环 return i; } } return -1; } /* harmony default export */ __webpack_exports__["a"] = (findIndex); /***/ }), /* 82 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); var firstValue = function (data, name) { var rst = null; for (var i = 0; i < data.length; i++) { var obj = data[i]; var value = obj[name]; if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) { if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(value)) { rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云 } else { rst = value; } break; } } return rst; }; /* harmony default export */ __webpack_exports__["a"] = (firstValue); /***/ }), /* 83 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /** * Flattens `array` a single level deep. * * @param {Array} arr The array to flatten. * @return {Array} Returns the new flattened array. * @example * * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5] */ var flatten = function (arr) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr)) { return []; } var rst = []; for (var i = 0; i < arr.length; i++) { rst = rst.concat(arr[i]); } return rst; }; /* harmony default export */ __webpack_exports__["a"] = (flatten); /***/ }), /* 84 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /** * Flattens `array` a single level deep. * * @param {Array} arr The array to flatten. * @param {Array} result The array to return. * @return {Array} Returns the new flattened array. * @example * * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5] */ var flattenDeep = function (arr, result) { if (result === void 0) { result = []; } if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr)) { result.push(arr); } else { for (var i = 0; i < arr.length; i += 1) { flattenDeep(arr[i], result); } } return result; }; /* harmony default export */ __webpack_exports__["a"] = (flattenDeep); /***/ }), /* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(39); var getRange = function (values) { // 存在 NaN 时,min,max 判定会出问题 values = Object(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* default */])(values, function (v) { return !isNaN(v); }); if (!values.length) { // 如果没有数值则直接返回0 return { min: 0, max: 0 }; } if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(values[0])) { var tmp = []; for (var i = 0; i < values.length; i++) { tmp = tmp.concat(values[i]); } values = tmp; } var max = Math.max.apply(null, values); var min = Math.min.apply(null, values); return { min: min, max: max }; }; /* harmony default export */ __webpack_exports__["a"] = (getRange); /***/ }), /* 86 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var arrPrototype = Array.prototype; var splice = arrPrototype.splice; var indexOf = arrPrototype.indexOf; var pull = function (arr) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } for (var i = 0; i < values.length; i++) { var value = values[i]; var fromIndex = -1; while ((fromIndex = indexOf.call(arr, value)) > -1) { splice.call(arr, fromIndex, 1); } } return arr; }; /* harmony default export */ __webpack_exports__["a"] = (pull); /***/ }), /* 87 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_plain_object__ = __webpack_require__(24); var reduce = function (arr, fn, init) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr) && !Object(__WEBPACK_IMPORTED_MODULE_2__is_plain_object__["a" /* default */])(arr)) { return arr; } var result = init; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (data, i) { result = fn(result, data, i); }); return result; }; /* harmony default export */ __webpack_exports__["a"] = (reduce); /***/ }), /* 88 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pull_at__ = __webpack_require__(53); var remove = function (arr, predicate) { /** * const arr = [1, 2, 3, 4] * const evens = remove(arr, n => n % 2 == 0) * console.log(arr) // => [1, 3] * console.log(evens) // => [2, 4] */ var result = []; if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) { return result; } var i = -1; var indexes = []; var length = arr.length; while (++i < length) { var value = arr[i]; if (predicate(value, i, arr)) { result.push(value); indexes.push(i); } } Object(__WEBPACK_IMPORTED_MODULE_1__pull_at__["a" /* default */])(arr, indexes); return result; }; /* harmony default export */ __webpack_exports__["a"] = (remove); /***/ }), /* 89 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9); function sortBy(arr, key) { var comparer; if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(key)) { comparer = function (a, b) { return key(a) - key(b); }; } else { var keys_1 = []; if (Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(key)) { keys_1.push(key); } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(key)) { keys_1 = key; } comparer = function (a, b) { for (var i = 0; i < keys_1.length; i += 1) { var prop = keys_1[i]; if (a[prop] > b[prop]) { return 1; } if (a[prop] < b[prop]) { return -1; } } return 0; }; } arr.sort(comparer); return arr; } /* harmony default export */ __webpack_exports__["a"] = (sortBy); /***/ }), /* 90 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__uniq__ = __webpack_require__(54); var union = function () { var sources = []; for (var _i = 0; _i < arguments.length; _i++) { sources[_i] = arguments[_i]; } return Object(__WEBPACK_IMPORTED_MODULE_0__uniq__["a" /* default */])([].concat.apply([], sources)); }; /* harmony default export */ __webpack_exports__["a"] = (union); /***/ }), /* 91 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_nil__ = __webpack_require__(14); /* harmony default export */ __webpack_exports__["a"] = (function (data, name) { var rst = []; var tmpMap = {}; data.forEach(function (obj) { var value = obj[name]; if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_nil__["a" /* default */])(value)) { // flatten if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(value)) { value = [value]; } Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(value, function (val) { // unique if (!tmpMap[val]) { rst.push(val); tmpMap[val] = true; } }); } }); return rst; }); /***/ }), /* 92 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = head; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); function head(o) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(o)) { return o[0]; } return undefined; } /***/ }), /* 93 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = last; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); function last(o) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(o)) { var arr = o; return arr[arr.length - 1]; } return undefined; } /***/ }), /* 94 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18); function startsWith(arr, e) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(arr) ? arr[0] === e : false; } /* harmony default export */ __webpack_exports__["a"] = (startsWith); /***/ }), /* 95 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18); function endsWith(arr, e) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(arr) ? arr[arr.length - 1] === e : false; } /* harmony default export */ __webpack_exports__["a"] = (endsWith); /***/ }), /* 96 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * 只要有一个不满足条件就返回 false * @param arr * @param func */ var every = function (arr, func) { for (var i = 0; i < arr.length; i++) { if (!func(arr[i], i)) return false; } return true; }; /* harmony default export */ __webpack_exports__["a"] = (every); /***/ }), /* 97 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * 只要有一个满足条件就返回 true * @param arr * @param func */ var some = function (arr, func) { for (var i = 0; i < arr.length; i++) { if (func(arr[i], i)) return true; } return false; }; /* harmony default export */ __webpack_exports__["a"] = (some); /***/ }), /* 98 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_to_map__ = __webpack_require__(55); /* harmony default export */ __webpack_exports__["a"] = (function (data, condition) { if (!condition) { // 没有条件,则自身改成数组 return [data]; } var groups = Object(__WEBPACK_IMPORTED_MODULE_0__group_to_map__["a" /* default */])(data, condition); var array = []; for (var i in groups) { array.push(groups[i]); } return array; }); /***/ }), /* 99 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * 获取封装的事件 * @protected * @param {Object} obj 对象 * @param {String} action 事件名称 * @return {Function} 返回事件处理函数 */ function getWrapBehavior(obj, action) { return obj['_wrap_' + action]; } /* harmony default export */ __webpack_exports__["a"] = (getWrapBehavior); /***/ }), /* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * 封装事件,便于使用上下文this,和便于解除事件时使用 * @protected * @param {Object} obj 对象 * @param {String} action 事件名称 * @return {Function} 返回事件处理函数 */ function wrapBehavior(obj, action) { if (obj['_wrap_' + action]) { return obj['_wrap_' + action]; } var method = function (e) { obj[action](e); }; obj['_wrap_' + action] = method; return method; } /* harmony default export */ __webpack_exports__["a"] = (wrapBehavior); /***/ }), /* 101 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var numColorCache = {}; function numberToColor(num) { // 增加缓存 var color = numColorCache[num]; if (!color) { var str = num.toString(16); for (var i = str.length; i < 6; i++) { str = '0' + str; } color = '#' + str; numColorCache[num] = color; } return color; } /* harmony default export */ __webpack_exports__["a"] = (numberToColor); /***/ }), /* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); function parseRadius(radius) { var r1 = 0, r2 = 0, r3 = 0, r4 = 0; if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(radius)) { if (radius.length === 1) { r1 = r2 = r3 = r4 = radius[0]; } else if (radius.length === 2) { r1 = r3 = radius[0]; r2 = r4 = radius[1]; } else if (radius.length === 3) { r1 = radius[0]; r2 = r4 = radius[1]; r3 = radius[2]; } else { r1 = radius[0]; r2 = radius[1]; r3 = radius[2]; r4 = radius[3]; } } else { r1 = r2 = r3 = r4 = radius; } return { r1: r1, r2: r2, r3: r3, r4: r4 }; } /* harmony default export */ __webpack_exports__["a"] = (parseRadius); /***/ }), /* 103 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var clamp = function (a, min, max) { if (a < min) { return min; } else if (a > max) { return max; } return a; }; /* harmony default export */ __webpack_exports__["a"] = (clamp); /***/ }), /* 104 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var fixedBase = function (v, base) { var str = base.toString(); var index = str.indexOf('.'); if (index === -1) { return Math.round(v); } var length = str.substr(index + 1).length; if (length > 20) { length = 20; } return parseFloat(v.toFixed(length)); }; /* harmony default export */ __webpack_exports__["a"] = (fixedBase); /***/ }), /* 105 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isDecimal = function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 1 !== 0; }; /* harmony default export */ __webpack_exports__["a"] = (isDecimal); /***/ }), /* 106 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isEven = function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 2 === 0; }; /* harmony default export */ __webpack_exports__["a"] = (isEven); /***/ }), /* 107 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isInteger = Number.isInteger ? Number.isInteger : function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 1 === 0; }; /* harmony default export */ __webpack_exports__["a"] = (isInteger); /***/ }), /* 108 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isNegative = function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num < 0; }; /* harmony default export */ __webpack_exports__["a"] = (isNegative); /***/ }), /* 109 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = isNumberEqual; var PRECISION = 0.00001; // numbers less than this is considered as 0 function isNumberEqual(a, b, precision) { if (precision === void 0) { precision = PRECISION; } return Math.abs(a - b) < precision; } ; /***/ }), /* 110 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isOdd = function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 2 !== 0; }; /* harmony default export */ __webpack_exports__["a"] = (isOdd); /***/ }), /* 111 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); var isPositive = function (num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num > 0; }; /* harmony default export */ __webpack_exports__["a"] = (isPositive); /***/ }), /* 112 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9); /** * @param {Array} arr The array to iterate over. * @param {Function} [fn] The iteratee invoked per element. * @return {*} Returns the maximum value. * @example * * var objects = [{ 'n': 1 }, { 'n': 2 }]; * * maxBy(objects, function(o) { return o.n; }); * // => { 'n': 2 } * * maxBy(objects, 'n'); * // => { 'n': 2 } */ /* harmony default export */ __webpack_exports__["a"] = (function (arr, fn) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr)) { return undefined; } var max = arr[0]; var maxData; if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) { maxData = fn(arr[0]); } else { maxData = arr[0][fn]; } var data; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (val) { if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) { data = fn(val); } else { data = val[fn]; } if (data > maxData) { max = val; maxData = data; } }); return max; }); /***/ }), /* 113 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9); /** * @param {Array} arr The array to iterate over. * @param {Function} [fn] The iteratee invoked per element. * @return {*} Returns the minimum value. * @example * * var objects = [{ 'n': 1 }, { 'n': 2 }]; * * minBy(objects, function(o) { return o.n; }); * // => { 'n': 1 } * * minBy(objects, 'n'); * // => { 'n': 1 } */ /* harmony default export */ __webpack_exports__["a"] = (function (arr, fn) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr)) { return undefined; } var min = arr[0]; var minData; if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) { minData = fn(arr[0]); } else { minData = arr[0][fn]; } var data; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (val) { if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) { data = fn(val); } else { data = val[fn]; } if (data < minData) { min = val; minData = data; } }); return min; }); /***/ }), /* 114 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var mod = function (n, m) { return (n % m + m) % m; }; /* harmony default export */ __webpack_exports__["a"] = (mod); /***/ }), /* 115 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var DEGREE = 180 / Math.PI; var toDegree = function (radian) { return DEGREE * radian; }; /* harmony default export */ __webpack_exports__["a"] = (toDegree); /***/ }), /* 116 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (parseInt); /***/ }), /* 117 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var RADIAN = Math.PI / 180; var toRadian = function (degree) { return RADIAN * degree; }; /* harmony default export */ __webpack_exports__["a"] = (toRadian); /***/ }), /* 118 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */]); /***/ }), /* 119 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has__ = __webpack_require__(57); /* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__has__["a" /* default */]); /***/ }), /* 120 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values__ = __webpack_require__(58); /* harmony default export */ __webpack_exports__["a"] = (function (obj, value) { return Object(__WEBPACK_IMPORTED_MODULE_0__contains__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__values__["a" /* default */])(obj), value); }); /***/ }), /* 121 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25); var lowerCase = function (str) { return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(str).toLowerCase(); }; /* harmony default export */ __webpack_exports__["a"] = (lowerCase); /***/ }), /* 122 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25); var lowerFirst = function (value) { var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(value); return str.charAt(0).toLowerCase() + str.substring(1); }; /* harmony default export */ __webpack_exports__["a"] = (lowerFirst); /***/ }), /* 123 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; function substitute(str, o) { if (!str || !o) { return str; } return str.replace(/\\?\{([^{}]+)\}/g, function (match, name) { if (match.charAt(0) === '\\') { return match.slice(1); } return o[name] === undefined ? '' : o[name]; }); } /* harmony default export */ __webpack_exports__["a"] = (substitute); /***/ }), /* 124 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25); var upperCase = function (str) { return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(str).toUpperCase(); }; /* harmony default export */ __webpack_exports__["a"] = (upperCase); /***/ }), /* 125 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25); var upperFirst = function (value) { var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(value); return str.charAt(0).toUpperCase() + str.substring(1); }; /* harmony default export */ __webpack_exports__["a"] = (upperFirst); /***/ }), /* 126 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /** * 是否是参数类型 * * @param {Object} value 测试的值 * @return {Boolean} */ var isArguments = function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Arguments'); }; /* harmony default export */ __webpack_exports__["a"] = (isArguments); /***/ }), /* 127 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /** * 是否是布尔类型 * * @param {Object} value 测试的值 * @return {Boolean} */ var isBoolean = function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Boolean'); }; /* harmony default export */ __webpack_exports__["a"] = (isBoolean); /***/ }), /* 128 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); var isDate = function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Date'); }; /* harmony default export */ __webpack_exports__["a"] = (isDate); /***/ }), /* 129 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); /** * 是否是参数类型 * * @param {Object} value 测试的值 * @return {Boolean} */ var isError = function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Error'); }; /* harmony default export */ __webpack_exports__["a"] = (isError); /***/ }), /* 130 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12); /** * 判断是否为有限数 * @return {Boolean} */ /* harmony default export */ __webpack_exports__["a"] = (function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(value) && isFinite(value); }); /***/ }), /* 131 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var isNull = function (value) { return value === null; }; /* harmony default export */ __webpack_exports__["a"] = (isNull); /***/ }), /* 132 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11); var isRegExp = function (str) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(str, 'RegExp'); }; /* harmony default export */ __webpack_exports__["a"] = (isRegExp); /***/ }), /* 133 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var isUndefined = function (value) { return value === undefined; }; /* harmony default export */ __webpack_exports__["a"] = (isUndefined); /***/ }), /* 134 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * 判断是否HTML元素 * @return {Boolean} 是否HTML元素 */ var isElement = function (o) { return o instanceof Element || o instanceof HTMLDocument; }; /* harmony default export */ __webpack_exports__["a"] = (isElement); /***/ }), /* 135 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = requestAnimationFrame; function requestAnimationFrame(fn) { var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || // @ts-ignore window.mozRequestAnimationFrame || // @ts-ignore window.msRequestAnimationFrame || function (f) { return setTimeout(f, 16); }; return method(fn); } ; /***/ }), /* 136 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = cancelAnimationFrame; function cancelAnimationFrame(handler) { var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || // @ts-ignore window.mozCancelAnimationFrame || // @ts-ignore window.msCancelAnimationFrame || clearTimeout; method(handler); } ; /***/ }), /* 137 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(41); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9); var augment = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var c = args[0]; for (var i = 1; i < args.length; i++) { var obj = args[i]; if (Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj)) { obj = obj.prototype; } Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(c.prototype, obj); } }; /* harmony default export */ __webpack_exports__["a"] = (augment); /***/ }), /* 138 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); var clone = function (obj) { if (typeof obj !== 'object' || obj === null) { return obj; } var rst; if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(obj)) { rst = []; for (var i = 0, l = obj.length; i < l; i++) { if (typeof obj[i] === 'object' && obj[i] != null) { rst[i] = clone(obj[i]); } else { rst[i] = obj[i]; } } } else { rst = {}; for (var k in obj) { if (typeof obj[k] === 'object' && obj[k] != null) { rst[k] = clone(obj[k]); } else { rst[k] = obj[k]; } } } return rst; }; /* harmony default export */ __webpack_exports__["a"] = (clone); /***/ }), /* 139 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) { func.apply(context, args); } }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } }; } /* harmony default export */ __webpack_exports__["a"] = (debounce); /***/ }), /* 140 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9); /** * _.memoize(calColor); * _.memoize(calColor, (...args) => args[0]); * @param f * @param resolver */ /* harmony default export */ __webpack_exports__["a"] = (function (f, resolver) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(f)) { throw new TypeError('Expected a function'); } var memoized = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key var key = resolver ? resolver.apply(this, args) : args[0]; var cache = memoized.cache; if (cache.has(key)) { return cache.get(key); } var result = f.apply(this, args); // 缓存起来 cache.set(key, result); return result; }; memoized.cache = new Map(); return memoized; }); /***/ }), /* 141 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(24); var MAX_MIX_LEVEL = 5; function _deepMix(dist, src, level, maxLevel) { level = level || 0; maxLevel = maxLevel || MAX_MIX_LEVEL; for (var key in src) { if (src.hasOwnProperty(key)) { var value = src[key]; if (value !== null && Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(value)) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(dist[key])) { dist[key] = {}; } if (level < maxLevel) { _deepMix(dist[key], value, level + 1, maxLevel); } else { dist[key] = src[key]; } } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(value)) { dist[key] = []; dist[key] = dist[key].concat(value); } else if (value !== undefined) { dist[key] = value; } } } } // todo 重写 var deepMix = function (rst) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } for (var i = 0; i < args.length; i += 1) { _deepMix(rst, args[i]); } return rst; }; /* harmony default export */ __webpack_exports__["a"] = (deepMix); /***/ }), /* 142 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(41); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9); var extend = function (subclass, superclass, overrides, staticOverrides) { // 如果只提供父类构造函数,则自动生成子类构造函数 if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(superclass)) { overrides = superclass; superclass = subclass; subclass = function () {}; } var create = Object.create ? function (proto, c) { return Object.create(proto, { constructor: { value: c } }); } : function (proto, c) { function Tmp() {} Tmp.prototype = proto; var o = new Tmp(); o.constructor = c; return o; }; var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype subclass.prototype = Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(superObj, subclass.prototype); // 指定子类的prototype subclass.superclass = create(superclass.prototype, superclass); Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(superObj, overrides); Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(subclass, staticOverrides); return subclass; }; /* harmony default export */ __webpack_exports__["a"] = (extend); /***/ }), /* 143 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); var indexOf = function (arr, obj) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) { return -1; } var m = Array.prototype.indexOf; if (m) { return m.call(arr, obj); } var index = -1; for (var i = 0; i < arr.length; i++) { if (arr[i] === obj) { index = i; break; } } return index; }; /* harmony default export */ __webpack_exports__["a"] = (indexOf); /***/ }), /* 144 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get_type__ = __webpack_require__(59); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_prototype__ = __webpack_require__(60); var hasOwnProperty = Object.prototype.hasOwnProperty; function isEmpty(value) { /** * isEmpty(null) => true * isEmpty() => true * isEmpty(true) => true * isEmpty(1) => true * isEmpty([1, 2, 3]) => false * isEmpty('abc') => false * isEmpty({ a: 1 }) => false */ if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) { return true; } if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(value)) { return !value.length; } var type = Object(__WEBPACK_IMPORTED_MODULE_2__get_type__["a" /* default */])(value); if (type === 'Map' || type === 'Set') { return !value.size; } if (Object(__WEBPACK_IMPORTED_MODULE_3__is_prototype__["a" /* default */])(value)) { return !Object.keys(value).length; } for (var key in value) { if (hasOwnProperty.call(value, key)) { return false; } } return true; } /* harmony default export */ __webpack_exports__["a"] = (isEmpty); /***/ }), /* 145 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_equal__ = __webpack_require__(61); /** * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {Function} [fn] The function to customize comparisons. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * function isGreeting(value) { * return /^h(?:i|ello)$/.test(value); * } * * function customizer(objValue, othValue) { * if (isGreeting(objValue) && isGreeting(othValue)) { * return true; * } * } * * var array = ['hello', 'goodbye']; * var other = ['hi', 'goodbye']; * * isEqualWith(array, other, customizer); // => true */ /* harmony default export */ __webpack_exports__["a"] = (function (value, other, fn) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(fn)) { return Object(__WEBPACK_IMPORTED_MODULE_1__is_equal__["a" /* default */])(value, other); } return !!fn(value, other); }); /***/ }), /* 146 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7); var map = function (arr, func) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(arr)) { // @ts-ignore return arr; } var result = []; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (value, index) { result.push(func(value, index)); }); return result; }; /* harmony default export */ __webpack_exports__["a"] = (map); /***/ }), /* 147 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(29); var identity = function (v) { return v; }; /* harmony default export */ __webpack_exports__["a"] = (function (object, func) { if (func === void 0) { func = identity; } var r = {}; if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__["a" /* default */])(object) && !Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(object)) { Object.keys(object).forEach(function (key) { // @ts-ignore r[key] = func(object[key], key); }); } return r; }); /***/ }), /* 148 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_string__ = __webpack_require__(18); /** * https://github.com/developit/dlv/blob/master/index.js * @param obj * @param key * @param defaultValue */ /* harmony default export */ __webpack_exports__["a"] = (function (obj, key, defaultValue) { var p = 0; var keyArr = Object(__WEBPACK_IMPORTED_MODULE_0__is_string__["a" /* default */])(key) ? key.split('.') : key; while (obj && p < keyArr.length) { obj = obj[keyArr[p++]]; } return obj === undefined || p < keyArr.length ? defaultValue : obj; }); /***/ }), /* 149 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object__ = __webpack_require__(29); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_number__ = __webpack_require__(12); /** * https://github.com/developit/dlv/blob/master/index.js * @param obj * @param path * @param value */ /* harmony default export */ __webpack_exports__["a"] = (function (obj, path, value) { var o = obj; var keyArr = Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(path) ? path.split('.') : path; keyArr.forEach(function (key, idx) { // 不是最后一个 if (idx < keyArr.length - 1) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object__["a" /* default */])(o[key])) { o[key] = Object(__WEBPACK_IMPORTED_MODULE_2__is_number__["a" /* default */])(keyArr[idx + 1]) ? [] : {}; } o = o[key]; } else { o[key] = value; } }); return obj; }); /***/ }), /* 150 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(24); var hasOwnProperty = Object.prototype.hasOwnProperty; /* harmony default export */ __webpack_exports__["a"] = (function (object, keys) { if (object === null || !Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(object)) { return {}; } var result = {}; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(keys, function (key) { if (hasOwnProperty.call(object, key)) { result[key] = object[key]; } }); return result; }); /***/ }), /* 151 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (function (func, wait, options) { var timeout, context, args, result; var previous = 0; if (!options) options = {}; var later = function () { previous = options.leading === false ? 0 : Date.now(); timeout = null; result = func.apply(context, args); if (!timeout) context = args = null; }; var throttled = function () { var now = Date.now(); if (!previous && options.leading === false) previous = now; var remaining = wait - (now - previous); context = this; args = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = now; result = func.apply(context, args); if (!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } return result; }; throttled.cancel = function () { clearTimeout(timeout); previous = 0; timeout = context = args = null; }; return throttled; }); /***/ }), /* 152 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7); /* harmony default export */ __webpack_exports__["a"] = (function (value) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(value) ? Array.prototype.slice.call(value) : []; }); /***/ }), /* 153 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var map = {}; /* harmony default export */ __webpack_exports__["a"] = (function (prefix) { prefix = prefix || 'g'; if (!map[prefix]) { map[prefix] = 1; } else { map[prefix] += 1; } return prefix + map[prefix]; }); /***/ }), /* 154 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (function () {}); /***/ }), /* 155 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = (function (v) { return v; }); /***/ }), /* 156 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = size; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7); function size(o) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(o)) { return 0; } if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(o)) { return o.length; } return Object.keys(o).length; } /***/ }), /* 157 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /** * k-v 存储 */ var default_1 = /** @class */ function () { function default_1() { this.map = {}; } default_1.prototype.has = function (key) { return this.map[key] !== undefined; }; default_1.prototype.get = function (key, def) { var v = this.map[key]; return v === undefined ? def : v; }; default_1.prototype.set = function (key, value) { this.map[key] = value; }; default_1.prototype.clear = function () { this.map = {}; }; default_1.prototype.delete = function (key) { delete this.map[key]; }; default_1.prototype.size = function () { return Object.keys(this.map).length; }; return default_1; }(); /* harmony default export */ __webpack_exports__["a"] = (default_1); /***/ }), /* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Plot = /*#__PURE__*/function () { function Plot(cfg) { Util.mix(this, cfg); this._init(); } var _proto = Plot.prototype; _proto._init = function _init() { var self = this; var start = self.start; var end = self.end; var xMin = Math.min(start.x, end.x); var xMax = Math.max(start.x, end.x); var yMin = Math.min(start.y, end.y); var yMax = Math.max(start.y, end.y); this.tl = { x: xMin, y: yMin }; this.tr = { x: xMax, y: yMin }; this.bl = { x: xMin, y: yMax }; this.br = { x: xMax, y: yMax }; this.width = xMax - xMin; this.height = yMax - yMin; } /** * reset * @param {Object} start start point * @param {Object} end end point */ ; _proto.reset = function reset(start, end) { this.start = start; this.end = end; this._init(); } /** * check the point is in the range of plot * @param {Nubmer} x x value * @param {[type]} y y value * @return {Boolean} return the result */ ; _proto.isInRange = function isInRange(x, y) { if (Util.isObject(x)) { y = x.y; x = x.x; } var tl = this.tl; var br = this.br; return tl.x <= x && x <= br.x && tl.y <= y && y <= br.y; }; return Plot; }(); module.exports = Plot; /***/ }), /* 159 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Coord = __webpack_require__(43); __webpack_require__(160); module.exports = Coord; /***/ }), /* 160 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Base = __webpack_require__(43); var Cartesian = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Cartesian, _Base); var _super = _createSuper(Cartesian); function Cartesian() { return _Base.apply(this, arguments) || this; } var _proto = Cartesian.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.type = 'cartesian'; this.transposed = false; this.isRect = true; }; _proto.init = function init(start, end) { _Base.prototype.init.call(this, start, end); this.x = { start: start.x, end: end.x }; this.y = { start: start.y, end: end.y }; }; _proto._convertPoint = function _convertPoint(point) { var self = this; var transposed = self.transposed; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var x = self.x; var y = self.y; return { x: x.start + (x.end - x.start) * point[xDim], y: y.start + (y.end - y.start) * point[yDim] }; }; _proto._invertPoint = function _invertPoint(point) { var self = this; var transposed = self.transposed; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var x = self.x; var y = self.y; var rst = {}; rst[xDim] = (point.x - x.start) / (x.end - x.start); rst[yDim] = (point.y - y.start) / (y.end - y.start); return rst; }; return Cartesian; }(Base); Base.Cartesian = Cartesian; Base.Rect = Cartesian; module.exports = Cartesian; /***/ }), /* 161 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports.Color = exports.Size = exports.Shape = exports.Position = void 0; var _position = _interopRequireDefault(__webpack_require__(162)); exports.Position = _position["default"]; var _shape = _interopRequireDefault(__webpack_require__(163)); exports.Shape = _shape["default"]; var _size = _interopRequireDefault(__webpack_require__(164)); exports.Size = _size["default"]; var _color = _interopRequireDefault(__webpack_require__(165)); exports.Color = _color["default"]; /***/ }), /* 162 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports["default"] = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _util = __webpack_require__(20); var _base = _interopRequireDefault(__webpack_require__(32)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Position = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Position, _Base); var _super = _createSuper(Position); function Position(cfg) { var _this; _this = _Base.call(this, cfg) || this; _this.names = ['x', 'y']; _this.type = 'position'; return _this; } var _proto = Position.prototype; _proto.mapping = function mapping(x, y) { var scales = this.scales; var coord = this.coord; var scaleX = scales[0]; var scaleY = scales[1]; var rstX; var rstY; var obj; if ((0, _util.isNil)(x) || (0, _util.isNil)(y)) { return []; } if ((0, _util.isArray)(y) && (0, _util.isArray)(x)) { rstX = []; rstY = []; for (var i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i++, j++) { obj = coord.convertPoint({ x: scaleX.scale(x[i]), y: scaleY.scale(y[j]) }); rstX.push(obj.x); rstY.push(obj.y); } } else if ((0, _util.isArray)(y)) { x = scaleX.scale(x); rstY = []; (0, _util.each)(y, function (yVal) { yVal = scaleY.scale(yVal); obj = coord.convertPoint({ x: x, y: yVal }); if (rstX && rstX !== obj.x) { if (!(0, _util.isArray)(rstX)) { rstX = [rstX]; } rstX.push(obj.x); } else { rstX = obj.x; } rstY.push(obj.y); }); } else if ((0, _util.isArray)(x)) { y = scaleY.scale(y); rstX = []; (0, _util.each)(x, function (xVal) { xVal = scaleX.scale(xVal); obj = coord.convertPoint({ x: xVal, y: y }); if (rstY && rstY !== obj.y) { if (!(0, _util.isArray)(rstY)) { rstY = [rstY]; } rstY.push(obj.y); } else { rstY = obj.y; } rstX.push(obj.x); }); } else { x = scaleX.scale(x); y = scaleY.scale(y); var point = coord.convertPoint({ x: x, y: y }); rstX = point.x; rstY = point.y; } return [rstX, rstY]; }; return Position; }(_base["default"]); var _default = Position; exports["default"] = _default; /***/ }), /* 163 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports["default"] = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _base = _interopRequireDefault(__webpack_require__(32)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Shape, _Base); var _super = _createSuper(Shape); function Shape(cfg) { var _this; _this = _Base.call(this, cfg) || this; _this.names = ['shape']; _this.type = 'shape'; _this.gradient = null; return _this; } /** * @override */ var _proto = Shape.prototype; _proto.getLinearValue = function getLinearValue(percent) { var values = this.values; var index = Math.round((values.length - 1) * percent); return values[index]; }; return Shape; }(_base["default"]); var _default = Shape; exports["default"] = _default; /***/ }), /* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports["default"] = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _base = _interopRequireDefault(__webpack_require__(32)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Size = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Size, _Base); var _super = _createSuper(Size); function Size(cfg) { var _this; _this = _Base.call(this, cfg) || this; _this.names = ['size']; _this.type = 'size'; _this.gradient = null; return _this; } return Size; }(_base["default"]); var _default = Size; exports["default"] = _default; /***/ }), /* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports["default"] = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _util = __webpack_require__(20); var _base = _interopRequireDefault(__webpack_require__(32)); var _colorUtil = _interopRequireDefault(__webpack_require__(166)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Color = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Color, _Base); var _super = _createSuper(Color); function Color(cfg) { var _this; _this = _Base.call(this, cfg) || this; _this.names = ['color']; _this.type = 'color'; _this.gradient = null; if ((0, _util.isString)(_this.values)) { _this.linear = true; } return _this; } /** * @override */ var _proto = Color.prototype; _proto.getLinearValue = function getLinearValue(percent) { var gradient = this.gradient; if (!gradient) { var values = this.values; gradient = _colorUtil["default"].gradient(values); this.gradient = gradient; } return gradient(percent); }; return Color; }(_base["default"]); var _default = Color; exports["default"] = _default; /***/ }), /* 166 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports["default"] = void 0; var _util = __webpack_require__(20); // Get the interpolation between colors function getValue(start, end, percent, index) { var value = start[index] + (end[index] - start[index]) * percent; return value; } // convert to hex function arr2hex(arr) { return '#' + toRGBValue(arr[0]) + toRGBValue(arr[1]) + toRGBValue(arr[2]); } function toRGBValue(value) { value = Math.round(value); value = value.toString(16); if (value.length === 1) { value = '0' + value; } return value; } function calColor(colors, percent) { var steps = colors.length - 1; var step = Math.floor(steps * percent); var left = steps * percent - step; var start = colors[step]; var end = step === steps ? start : colors[step + 1]; var rgb = arr2hex([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]); return rgb; } function hex2arr(str) { var arr = []; arr.push(parseInt(str.substr(1, 2), 16)); arr.push(parseInt(str.substr(3, 2), 16)); arr.push(parseInt(str.substr(5, 2), 16)); return arr; } var colorCache = { black: '#000000', blue: '#0000ff', grey: '#808080', green: '#008000', orange: '#ffa500', pink: '#ffc0cb', purple: '#800080', red: '#ff0000', white: '#ffffff', yellow: '#ffff00' }; var ColorUtil = { /** * Returns a hexadecimal string representing this color in RGB space, such as #f7eaba. * @param {String} color color value * @return {String} Returns a hexadecimal string */ toHex: function toHex(color) { if (colorCache[color]) { return colorCache[color]; } if (color[0] === '#') { if (color.length === 7) { return color; } var hex = color.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) { return '#' + r + r + g + g + b + b; }); // hex3 to hex6 colorCache[color] = hex; return hex; } // rgb/rgba to hex var rst = color.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); rst.shift(); rst = arr2hex(rst); colorCache[color] = rst; return rst; }, hex2arr: hex2arr, /** * handle the gradient color * @param {Array} colors the colors * @return {String} return the color value */ gradient: function gradient(colors) { var points = []; if ((0, _util.isString)(colors)) { colors = colors.split('-'); } (0, _util.each)(colors, function (color) { if (color.indexOf('#') === -1) { color = ColorUtil.toHex(color); } points.push(hex2arr(color)); }); return function (percent) { return calColor(points, percent); }; } }; var _default = ColorUtil; exports["default"] = _default; /***/ }), /* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Global = __webpack_require__(6); var Scale = __webpack_require__(168); var SCALE_TYPES_MAP = { linear: 'Linear', cat: 'Cat', timeCat: 'TimeCat', identity: 'Identity' }; function isFullCircle(coord) { if (!coord.isPolar) { return false; } var startAngle = coord.startAngle; var endAngle = coord.endAngle; if (!Util.isNil(startAngle) && !Util.isNil(endAngle) && endAngle - startAngle < Math.PI * 2) { return false; } return true; } function clearObj(obj) { Object.keys(obj).forEach(function (key) { delete obj[key]; }); } var ScaleController = /*#__PURE__*/function () { function ScaleController(cfg) { // defs 列定义 this.defs = {}; // 已经实例化的scale this.scales = {}; Util.mix(this, cfg); } var _proto = ScaleController.prototype; _proto.setFieldDef = function setFieldDef(field, cfg) { var defs = this.defs; if (Util.isObject(field)) { Util.mix(defs, field); } else { defs[field] = cfg; } // 因为可能同时变更多个scale,所以要把所有已实例化的scale都更新下 this.updateScales(); }; _proto._getDef = function _getDef(field) { var defs = this.defs; var def = null; if (Global.scales[field] || defs[field]) { def = Util.mix({}, Global.scales[field]); Util.each(defs[field], function (v, k) { if (Util.isNil(v)) { delete def[k]; } else { def[k] = v; } }); } return def; }; _proto._getDefaultType = function _getDefaultType(field, data, def) { if (def && def.type) { return def.type; } var type = 'linear'; var value = Util.Array.firstValue(data, field); if (Util.isArray(value)) { value = value[0]; } if (Util.isString(value)) { type = 'cat'; } return type; }; _proto._getScaleDef = function _getScaleDef(type, field, data, def) { var values; if (def && def.values) { values = def.values; } else { values = Util.Array.values(data, field); } var cfg = { field: field, values: values }; if (type !== 'cat' && type !== 'timeCat') { if (!def || !(def.min && def.max)) { var _Util$Array$getRange = Util.Array.getRange(values), min = _Util$Array$getRange.min, max = _Util$Array$getRange.max; cfg.min = min; cfg.max = max; cfg.nice = true; } } else { cfg.isRounding = false; // used for tickCount calculation } return cfg; } // 调整range,为了让图形居中 ; _proto._adjustRange = function _adjustRange(type, cfg) { var range = cfg.range, values = cfg.values; // 如果是线性, 或者有自定义range都不处理 if (type === 'linear' || range || !values) { return cfg; } var count = values.length; // 单只有一条数据时,在中间显示 if (count === 1) { cfg.range = [0.5, 1]; } else { var chart = this.chart; var coord = chart.get('coord'); var widthRatio = Global.widthRatio.multiplePie; var offset = 0; if (isFullCircle(coord)) { if (!coord.transposed) { cfg.range = [0, 1 - 1 / count]; } else { offset = 1 / count * widthRatio; cfg.range = [offset / 2, 1 - offset / 2]; } } else { // 为了让图形居中,所以才设置range offset = 1 / count * 1 / 2; cfg.range = [offset, 1 - offset]; } } return cfg; }; _proto._getScaleCfg = function _getScaleCfg(field, data) { var self = this; var def = self._getDef(field); if (!data || !data.length) { if (def && def.type) { def.field = field; return { type: SCALE_TYPES_MAP[def.type], cfg: def }; } return { type: 'Identity', cfg: { value: field, field: field.toString(), values: [field] } }; } var firstObj = data[0]; var firstValue = firstObj[field]; if (firstValue === null) { firstValue = Util.Array.firstValue(data, field); } if (Util.isNumber(field) || Util.isNil(firstValue) && !def) { return { type: 'Identity', cfg: { value: field, field: field.toString(), values: [field] } }; } var type = self._getDefaultType(field, data, def); var cfg = self._getScaleDef(type, field, data, def); def && Util.mix(cfg, def); cfg = this._adjustRange(type, cfg); return { type: SCALE_TYPES_MAP[type], cfg: cfg }; }; _proto.createScale = function createScale(field, data) { var scales = this.scales; var _this$_getScaleCfg = this._getScaleCfg(field, data), type = _this$_getScaleCfg.type, cfg = _this$_getScaleCfg.cfg; var scale = scales[field]; // 如果已经存在,且类型相等时直接返回 if (scale && SCALE_TYPES_MAP[scale.type] === type) { scale.change(cfg); return scale; } var newScale = new Scale[type](cfg); scales[field] = newScale; return newScale; }; _proto._updateScale = function _updateScale(scale) { var field = scale.field; // 因为每个field的数据都会不同 var data = this.chart._getScaleData(field); var _this$_getScaleCfg2 = this._getScaleCfg(field, data), cfg = _this$_getScaleCfg2.cfg; scale.change(cfg); }; _proto.updateScales = function updateScales() { var _this = this; var scales = this.scales; // 修改完列定义后,需要更新已经实例化的scale // 如果是还没有实例化的,在geom初始化的时候会被实例化,所以这里可以不用更新 Util.each(scales, function (scale) { _this._updateScale(scale); }); } // 调整scale从0开始 ; _proto.adjustStartZero = function adjustStartZero(scale) { var defs = this.defs; var field = scale.field, min = scale.min, max = scale.max; // 如果有定义,则不处理 if (defs[field] && defs[field].min) { return; } if (min > 0) { scale.change({ min: 0 }); } else if (max < 0) { scale.change({ max: 0 }); } }; _proto.clear = function clear() { // this.defs = {}; // this.scales = {}; clearObj(this.defs); clearObj(this.scales); this.data = null; }; return ScaleController; }(); module.exports = ScaleController; /***/ }), /* 168 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Scale = __webpack_require__(26); __webpack_require__(169); __webpack_require__(172); __webpack_require__(69); module.exports = Scale; /***/ }), /* 169 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } /** * @fileOverview The measurement of linear data scale function * @author dxq613@gmail.com */ var isNil = __webpack_require__(35); var each = __webpack_require__(15); var Base = __webpack_require__(26); var numberAuto = __webpack_require__(170); /** * 线性度量 * @class Scale.Linear */ var Linear = /*#__PURE__*/function (_Base) { _inheritsLoose(Linear, _Base); function Linear() { return _Base.apply(this, arguments) || this; } var _proto = Linear.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { _Base.prototype._initDefaultCfg.call(this); var self = this; self.type = 'linear'; self.isLinear = true; /** * 是否为了用户习惯,优化min,max和ticks,如果进行优化,则会根据生成的ticks调整min,max,否则舍弃(min,max)范围之外的ticks * @type {Boolean} * @default false */ self.nice = false; /** * min value of the scale * @type {Number} * @default null */ self.min = null; /** * min value limitted of the scale * @type {Number} * @default null */ self.minLimit = null; /** * max value of the scale * @type {Number} * @default null */ self.max = null; /** * max value limitted of the scale * @type {Number} * @default null */ self.maxLimit = null; /** * 自动生成标记时的个数 * @type {Number} * @default null */ self.tickCount = null; /** * 坐标轴点之间的间距,指的是真实数据的差值 * @type {Number} * @default null */ self.tickInterval = null; /** * 坐标轴点之间的最小间距,指的是真实数据的差值 * @type {Number} * @default null */ self.minTickInterval = null; /** * 用于计算坐标点时逼近的数组 * @type {Array} */ self.snapArray = null; } /** * @protected * @override */ ; _proto.init = function init() { var self = this; if (!self.ticks) { self.min = self.translate(self.min); self.max = self.translate(self.max); self.initTicks(); } else { var ticks = self.ticks; var firstValue = self.translate(ticks[0]); var lastValue = self.translate(ticks[ticks.length - 1]); if (isNil(self.min) || self.min > firstValue) { self.min = firstValue; } if (isNil(self.max) || self.max < lastValue) { self.max = lastValue; } } } /** * 计算坐标点 * @protected * @return {Array} 计算完成的坐标点 */ ; _proto.calculateTicks = function calculateTicks() { var min = this.min, max = this.max, minLimit = this.minLimit, maxLimit = this.maxLimit, tickCount = this.tickCount, tickInterval = this.tickInterval, minTickInterval = this.minTickInterval, snapArray = this.snapArray; if (tickCount === 1) { throw new Error('linear scale\'tickCount should not be 1'); } if (max < min) { throw new Error("max: " + max + " should not be less than min: " + min); } var tmp = numberAuto({ min: min, max: max, minLimit: minLimit, maxLimit: maxLimit, minCount: tickCount, maxCount: tickCount, interval: tickInterval, minTickInterval: minTickInterval, snapArray: snapArray }); return tmp.ticks; } // 初始化ticks ; _proto.initTicks = function initTicks() { var self = this; var calTicks = self.calculateTicks(); if (self.nice) { // 如果需要优化显示的tick self.ticks = calTicks; self.min = calTicks[0]; self.max = calTicks[calTicks.length - 1]; } else { var ticks = []; each(calTicks, function (tick) { if (tick >= self.min && tick <= self.max) { ticks.push(tick); } }); // 如果 ticks 为空,直接输入最小值、最大值 if (!ticks.length) { ticks.push(self.min); ticks.push(self.max); } self.ticks = ticks; } } /** * @override */ ; _proto.scale = function scale(value) { if (isNil(value)) { return NaN; } var max = this.max; var min = this.min; if (max === min) { return 0; } var percent = (value - min) / (max - min); var rangeMin = this.rangeMin(); var rangeMax = this.rangeMax(); return rangeMin + percent * (rangeMax - rangeMin); } /** * @override */ ; _proto.invert = function invert(value) { var percent = (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin()); return this.min + percent * (this.max - this.min); }; return Linear; }(Base); Base.Linear = Linear; module.exports = Linear; /***/ }), /* 170 */ /***/ (function(module, exports, __webpack_require__) { /** * @fileOverview 自动计算数字坐标轴 * @author dxq613@gmail.com */ var isNil = __webpack_require__(35); var isNumber = __webpack_require__(36); var AutoUtil = __webpack_require__(171); var MIN_COUNT = 5; var MAX_COUNT = 7; var SNAP_COUNT_ARRAY = [0, 1, 1.2, 1.5, 1.6, 2, 2.2, 2.4, 2.5, 3, 4, 5, 6, 7.5, 8, 10]; var SNAP_ARRAY = [0, 1, 2, 4, 5, 10]; var EPS = 1e-12; module.exports = function (info) { var min = info.min; var max = info.max; var interval = info.interval; var minTickInterval = info.minTickInterval; var ticks = []; var minCount = info.minCount || MIN_COUNT; var maxCount = info.maxCount || MAX_COUNT; var isFixedCount = minCount === maxCount; // 是否限定死了个数 var minLimit = isNil(info.minLimit) ? -Infinity : info.minLimit; // 限定的最小值 var maxLimit = isNil(info.maxLimit) ? Infinity : info.maxLimit; // 限定最大值 var avgCount = (minCount + maxCount) / 2; var count = avgCount; // 用户传入的逼近数组 var snapArray = info.snapArray ? info.snapArray : isFixedCount ? SNAP_COUNT_ARRAY : SNAP_ARRAY; // 如果限定大小范围,同时大小范围等于用户传入的范围,同时限定了个数,interval 按照个数均分 if (min === minLimit && max === maxLimit && isFixedCount) { interval = (max - min) / (count - 1); } if (isNil(min)) { min = 0; } if (isNil(max)) { max = 0; } if (Math.abs(max - min) < EPS) { if (min === 0) { max = 1; } else { if (min > 0) { min = 0; } else { max = 0; } } if (max - min < 5 && !interval && max - min >= 1) { interval = 1; } } if (isNil(interval)) { // 计算间距 var temp = (max - min) / (avgCount - 1); interval = AutoUtil.snapFactorTo(temp, snapArray, 'ceil'); if (maxCount !== minCount) { count = parseInt((max - min) / interval, 10); if (count > maxCount) { count = maxCount; } if (count < minCount) { count = minCount; } // 不确定tick的个数时,使得tick偏小 interval = AutoUtil.snapFactorTo((max - min) / (count - 1), snapArray, 'floor'); } } // interval should not be less than minTickInterval if (isNumber(minTickInterval) && interval < minTickInterval) { interval = minTickInterval; } if (info.interval || maxCount !== minCount) { // 校正 max 和 min max = Math.min(AutoUtil.snapMultiple(max, interval, 'ceil'), maxLimit); // 向上逼近 min = Math.max(AutoUtil.snapMultiple(min, interval, 'floor'), minLimit); // 向下逼近 count = Math.round((max - min) / interval); min = AutoUtil.fixedBase(min, interval); max = AutoUtil.fixedBase(max, interval); } else { avgCount = parseInt(avgCount, 10); // 取整 var avg = (max + min) / 2; var avgTick = AutoUtil.snapMultiple(avg, interval, 'ceil'); var sideCount = Math.floor((avgCount - 2) / 2); var maxTick = avgTick + sideCount * interval; var minTick; if (avgCount % 2 === 0) { minTick = avgTick - sideCount * interval; } else { minTick = avgTick - (sideCount + 1) * interval; } var prevMaxTick = null; // 如果减去intervl, fixBase后,新的minTick没有大于之前的值,就退出,防止死循环 while (maxTick < max && (prevMaxTick === null || maxTick > prevMaxTick)) { // 保证计算出来的刻度最大值 maxTick 不小于数据最大值 max prevMaxTick = maxTick; maxTick = AutoUtil.fixedBase(maxTick + interval, interval); } var prevMinTick = null; // 如果减去intervl, fixBase后,新的minTick没有小于之前的值,就退出,防止死循环 while (minTick > min && (prevMinTick === null || minTick < prevMinTick)) { // 保证计算出来的刻度最小值 minTick 不小于数据最大值 min prevMinTick = minTick; minTick = AutoUtil.fixedBase(minTick - interval, interval); // 防止超常浮点数计算问题 } max = maxTick; min = minTick; } max = Math.min(max, maxLimit); min = Math.max(min, minLimit); ticks.push(min); for (var i = 1; i < count; i++) { var tickValue = AutoUtil.fixedBase(interval * i + min, interval); if (tickValue < max) { ticks.push(tickValue); } } if (ticks[ticks.length - 1] < max) { ticks.push(max); } return { min: min, max: max, interval: interval, count: count, ticks: ticks }; }; /***/ }), /* 171 */ /***/ (function(module, exports) { /** * @fileOverview 计算方法 * @author dxq613@gmail.com */ // 如果小数点后面超过 10 位浮点数时进行一下处理 var DECIMAL_LENGTH = 12; // 获取系数 function getFactor(v) { var factor = 1; if (v === Infinity || v === -Infinity) { throw new Error('Not support Infinity!'); } if (v < 1) { var count = 0; while (v < 1) { factor = factor / 10; v = v * 10; count++; } // 浮点数计算出现问题 if (factor.toString().length > DECIMAL_LENGTH) { factor = parseFloat(factor.toFixed(count)); } } else { while (v > 10) { factor = factor * 10; v = v / 10; } } return factor; } // 取小于当前值的 function arrayFloor(values, value) { var length = values.length; if (length === 0) { return NaN; } var pre = values[0]; if (value < values[0]) { return NaN; } if (value >= values[length - 1]) { return values[length - 1]; } for (var i = 1; i < values.length; i++) { if (value < values[i]) { break; } pre = values[i]; } return pre; } // 大于当前值的第一个 function arrayCeiling(values, value) { var length = values.length; if (length === 0) { return NaN; } // var pre = values[0]; var rst; if (value > values[length - 1]) { return NaN; } if (value < values[0]) { return values[0]; } for (var i = 1; i < values.length; i++) { if (value <= values[i]) { rst = values[i]; break; } } return rst; } var Util = { // 获取逼近的数值 snapFactorTo: function snapFactorTo(v, arr, snapType) { // 假设 v = -512,isFloor = true if (isNaN(v)) { return NaN; } var factor = 1; // 计算系数 if (v !== 0) { if (v < 0) { factor = -1; } v = v * factor; // v = 512 var tmpFactor = getFactor(v); factor = factor * tmpFactor; // factor = -100 v = v / tmpFactor; // v = 5.12 } if (snapType === 'floor') { v = Util.snapFloor(arr, v); // v = 5 } else if (snapType === 'ceil') { v = Util.snapCeiling(arr, v); // v = 6 } else { v = Util.snapTo(arr, v); // 四舍五入 5 } var rst = parseFloat((v * factor).toPrecision(DECIMAL_LENGTH)); // 如果出现浮点数计算问题,需要处理一下 // 如果出现浮点数计算问题,需要处理一下 if (Math.abs(factor) < 1 && rst.toString().length > DECIMAL_LENGTH) { var decimalVal = parseInt(1 / factor); var symbol = factor > 0 ? 1 : -1; rst = v / decimalVal * symbol; } return rst; }, // 获取逼近的倍数 snapMultiple: function snapMultiple(v, base, snapType) { var div; if (snapType === 'ceil') { div = Math.ceil(v / base); } else if (snapType === 'floor') { div = Math.floor(v / base); } else { div = Math.round(v / base); } return div * base; }, /** * 获取逼近的值,用于对齐数据 * @param {Array} values 数据集合 * @param {Number} value 数值 * @return {Number} 逼近的值 */ snapTo: function snapTo(values, value) { // 这里假定values是升序排列 var floorVal = arrayFloor(values, value); var ceilingVal = arrayCeiling(values, value); if (isNaN(floorVal) || isNaN(ceilingVal)) { if (values[0] >= value) { return values[0]; } var last = values[values.length - 1]; if (last <= value) { return last; } } if (Math.abs(value - floorVal) < Math.abs(ceilingVal - value)) { return floorVal; } return ceilingVal; }, /** * 获取逼近的最小值,用于对齐数据 * @param {Array} values 数据集合 * @param {Number} value 数值 * @return {Number} 逼近的最小值 */ snapFloor: function snapFloor(values, value) { // 这里假定values是升序排列 return arrayFloor(values, value); }, /** * 获取逼近的最大值,用于对齐数据 * @param {Array} values 数据集合 * @param {Number} value 数值 * @return {Number} 逼近的最大值 */ snapCeiling: function snapCeiling(values, value) { // 这里假定values是升序排列 return arrayCeiling(values, value); }, fixedBase: function fixedBase(v, base) { var str = base.toString(); var index = str.indexOf('.'); var indexOfExp = str.indexOf('e-'); // 判断是否带小数点,1.000001 1.23e-9 if (index < 0 && indexOfExp < 0) { // base为整数 return Math.round(v); } var length = indexOfExp >= 0 ? parseInt(str.substr(indexOfExp + 2), 10) : str.substr(index + 1).length; if (length > 20) { length = 20; } return parseFloat(v.toFixed(length)); } }; module.exports = Util; /***/ }), /* 172 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var Base = __webpack_require__(26); var isNumber = __webpack_require__(36); var Identity = /*#__PURE__*/function (_Base) { _inheritsLoose(Identity, _Base); function Identity() { return _Base.apply(this, arguments) || this; } var _proto = Identity.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { _Base.prototype._initDefaultCfg.call(this); this.isIdentity = true; this.type = 'identity'; /** * 常量值 * @type {*} */ this.value = null; } /** * @override */ ; _proto.getText = function getText() { return this.value.toString(); } /** * @override */ ; _proto.scale = function scale(value) { if (this.value !== value && isNumber(value)) { return value; } return this.range[0]; } /** * @override */ ; _proto.invert = function invert() { return this.value; }; return Identity; }(Base); Base.Identity = Identity; module.exports = Identity; /***/ }), /* 173 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Axis = __webpack_require__(174); var Global = __webpack_require__(6); var _require = __webpack_require__(16), Shape = _require.Shape; function formatTicks(ticks) { var tmp = ticks.slice(0); if (tmp.length > 0) { var first = tmp[0]; var last = tmp[tmp.length - 1]; if (first.value !== 0) { tmp.unshift({ value: 0 }); } if (last.value !== 1) { tmp.push({ value: 1 }); } } return tmp; } var AxisController = /*#__PURE__*/function () { function AxisController(cfg) { this.axisCfg = {}; this.frontPlot = null; this.backPlot = null; this.axes = {}; // store the axes's options Util.mix(this, cfg); } var _proto = AxisController.prototype; _proto._isHide = function _isHide(field) { var axisCfg = this.axisCfg; return !axisCfg || axisCfg[field] === false; }; _proto._getLinePosition = function _getLinePosition(scale, dimType, index, transposed) { var position = ''; var field = scale.field; var axisCfg = this.axisCfg; if (axisCfg[field] && axisCfg[field].position) { position = axisCfg[field].position; } else if (dimType === 'x') { position = transposed ? 'left' : 'bottom'; } else if (dimType === 'y') { position = index ? 'right' : 'left'; if (transposed) { position = 'bottom'; } } return position; }; _proto._getLineCfg = function _getLineCfg(coord, dimType, position) { var start; var end; var factor = 1; // Mark clockwise or counterclockwise if (dimType === 'x') { start = { x: 0, y: 0 }; end = { x: 1, y: 0 }; } else { if (position === 'right') { // there will be several y axes start = { x: 1, y: 0 }; end = { x: 1, y: 1 }; } else { start = { x: 0, y: 0 }; end = { x: 0, y: 1 }; factor = -1; } } if (coord.transposed) { factor *= -1; } return { offsetFactor: factor, start: coord.convertPoint(start), end: coord.convertPoint(end) }; }; _proto._getCircleCfg = function _getCircleCfg(coord) { return { startAngle: coord.startAngle, endAngle: coord.endAngle, center: coord.center, radius: coord.circleRadius }; }; _proto._getRadiusCfg = function _getRadiusCfg(coord) { var transposed = coord.transposed; var start; var end; if (transposed) { start = { x: 0, y: 0 }; end = { x: 1, y: 0 }; } else { start = { x: 0, y: 0 }; end = { x: 0, y: 1 }; } return { offsetFactor: -1, start: coord.convertPoint(start), end: coord.convertPoint(end) }; }; _proto._getAxisCfg = function _getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg) { var self = this; var axisCfg = this.axisCfg; var ticks = scale.getTicks(); var cfg = Util.deepMix({ ticks: ticks, frontContainer: this.frontPlot, backContainer: this.backPlot }, defaultCfg, axisCfg[scale.field]); var labels = []; var label = cfg.label; var count = ticks.length; var maxWidth = 0; var maxHeight = 0; var labelCfg = label; Util.each(ticks, function (tick, index) { if (Util.isFunction(label)) { var executedLabel = label(tick.text, index, count); labelCfg = executedLabel ? Util.mix({}, Global._defaultAxis.label, executedLabel) : null; } if (labelCfg) { var textStyle = {}; if (labelCfg.textAlign) { textStyle.textAlign = labelCfg.textAlign; } if (labelCfg.textBaseline) { textStyle.textBaseline = labelCfg.textBaseline; } var axisLabel = new Shape.Text({ className: 'axis-label', attrs: Util.mix({ x: 0, y: 0, text: tick.text, fontFamily: self.chart.get('canvas').get('fontFamily') }, labelCfg), value: tick.value, textStyle: textStyle, top: labelCfg.top, context: self.chart.get('canvas').get('context') }); labels.push(axisLabel); var _axisLabel$getBBox = axisLabel.getBBox(), width = _axisLabel$getBBox.width, height = _axisLabel$getBBox.height; maxWidth = Math.max(maxWidth, width); maxHeight = Math.max(maxHeight, height); } }); cfg.labels = labels; cfg.maxWidth = maxWidth; cfg.maxHeight = maxHeight; return cfg; }; _proto._createAxis = function _createAxis(coord, scale, verticalScale, dimType, index) { if (index === void 0) { index = ''; } var self = this; var coordType = coord.type; var transposed = coord.transposed; var type; var key; var defaultCfg; if (coordType === 'cartesian' || coordType === 'rect') { var position = self._getLinePosition(scale, dimType, index, transposed); defaultCfg = Global.axis[position]; defaultCfg.position = position; type = 'Line'; key = position; } else { if (dimType === 'x' && !transposed || dimType === 'y' && transposed) { defaultCfg = Global.axis.circle; type = 'Circle'; key = 'circle'; } else { defaultCfg = Global.axis.radius; type = 'Line'; key = 'radius'; } } var cfg = self._getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg); cfg.type = type; cfg.dimType = dimType; cfg.verticalScale = verticalScale; cfg.index = index; this.axes[key] = cfg; }; _proto.createAxis = function createAxis(coord, xScale, yScales) { var self = this; if (xScale && !self._isHide(xScale.field)) { self._createAxis(coord, xScale, yScales[0], 'x'); } Util.each(yScales, function (yScale, index) { if (!self._isHide(yScale.field)) { self._createAxis(coord, yScale, xScale, 'y', index); } }); var axes = this.axes; var chart = self.chart; if (chart._isAutoPadding()) { var userPadding = Util.parsePadding(chart.get('padding')); var appendPadding = Util.parsePadding(chart.get('appendPadding')); var legendRange = chart.get('legendRange') || { top: 0, right: 0, bottom: 0, left: 0 }; var padding = [userPadding[0] === 'auto' ? legendRange.top + appendPadding[0] * 2 : userPadding[0], userPadding[1] === 'auto' ? legendRange.right + appendPadding[1] : userPadding[1], userPadding[2] === 'auto' ? legendRange.bottom + appendPadding[2] : userPadding[2], userPadding[3] === 'auto' ? legendRange.left + appendPadding[3] : userPadding[3]]; if (coord.isPolar) { var circleAxis = axes.circle; if (circleAxis) { var maxHeight = circleAxis.maxHeight, maxWidth = circleAxis.maxWidth, labelOffset = circleAxis.labelOffset; padding[0] += maxHeight + labelOffset; padding[1] += maxWidth + labelOffset; padding[2] += maxHeight + labelOffset; padding[3] += maxWidth + labelOffset; } } else { if (axes.right && userPadding[1] === 'auto') { var _axes$right = axes.right, _maxWidth = _axes$right.maxWidth, _labelOffset = _axes$right.labelOffset; padding[1] += _maxWidth + _labelOffset; } if (axes.left && userPadding[3] === 'auto') { var _axes$left = axes.left, _maxWidth2 = _axes$left.maxWidth, _labelOffset2 = _axes$left.labelOffset; padding[3] += _maxWidth2 + _labelOffset2; } if (axes.bottom && userPadding[2] === 'auto') { var _axes$bottom = axes.bottom, _maxHeight = _axes$bottom.maxHeight, _labelOffset3 = _axes$bottom.labelOffset; padding[2] += _maxHeight + _labelOffset3; } } chart.set('_padding', padding); chart._updateLayout(padding); } Util.each(axes, function (axis) { var type = axis.type, grid = axis.grid, verticalScale = axis.verticalScale, ticks = axis.ticks, dimType = axis.dimType, position = axis.position, index = axis.index; var appendCfg; if (coord.isPolar) { if (type === 'Line') { appendCfg = self._getRadiusCfg(coord); } else if (type === 'Circle') { appendCfg = self._getCircleCfg(coord); } } else { appendCfg = self._getLineCfg(coord, dimType, position); } if (grid && verticalScale) { var gridPoints = []; var verticalTicks = formatTicks(verticalScale.getTicks()); Util.each(ticks, function (tick) { var subPoints = []; Util.each(verticalTicks, function (verticalTick) { var x = dimType === 'x' ? tick.value : verticalTick.value; var y = dimType === 'x' ? verticalTick.value : tick.value; if (x >= 0 && x <= 1 && y >= 0 && y <= 1) { var point = coord.convertPoint({ x: x, y: y }); subPoints.push(point); } }); gridPoints.push({ points: subPoints, _id: 'axis-' + dimType + index + '-grid-' + tick.tickValue }); }); axis.gridPoints = gridPoints; if (coord.isPolar) { axis.center = coord.center; axis.startAngle = coord.startAngle; axis.endAngle = coord.endAngle; } } appendCfg._id = 'axis-' + dimType; if (!Util.isNil(index)) { appendCfg._id = 'axis-' + dimType + index; } new Axis[type](Util.mix(axis, appendCfg)); }); }; _proto.clear = function clear() { this.axes = {}; this.frontPlot.clear(); this.backPlot.clear(); }; return AxisController; }(); module.exports = AxisController; /***/ }), /* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Abstract = __webpack_require__(45); __webpack_require__(175); module.exports = Abstract; /***/ }), /* 175 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Abstract = __webpack_require__(45); var Line = /*#__PURE__*/function (_Abstract) { (0, _inheritsLoose2["default"])(Line, _Abstract); var _super = _createSuper(Line); function Line() { return _Abstract.apply(this, arguments) || this; } var _proto = Line.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { _Abstract.prototype._initDefaultCfg.call(this); this.start = null; this.end = null; }; _proto.getOffsetPoint = function getOffsetPoint(value) { var start = this.start, end = this.end; return { x: start.x + (end.x - start.x) * value, y: start.y + (end.y - start.y) * value }; }; _proto.getAxisVector = function getAxisVector() { var start = this.start, end = this.end; return [end.x - start.x, end.y - start.y]; }; _proto.drawLine = function drawLine(lineCfg) { var container = this.getContainer(lineCfg.top); var start = this.start, end = this.end; container.addShape('line', { className: 'axis-line', attrs: Util.mix({ x1: start.x, y1: start.y, x2: end.x, y2: end.y }, lineCfg) }); }; return Line; }(Abstract); Abstract.Line = Line; module.exports = Line; /***/ }), /* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _emit = _interopRequireDefault(__webpack_require__(42)); var _controller = _interopRequireDefault(__webpack_require__(177)); var _canvasElement = _interopRequireDefault(__webpack_require__(178)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Container = __webpack_require__(66); var Group = __webpack_require__(67); var _require = __webpack_require__(70), requestAnimationFrame = _require.requestAnimationFrame; var Canvas = /*#__PURE__*/function (_EventEmit) { (0, _inheritsLoose2["default"])(Canvas, _EventEmit); var _super = _createSuper(Canvas); var _proto = Canvas.prototype; _proto.get = function get(name) { return this._attrs[name]; }; _proto.set = function set(name, value) { this._attrs[name] = value; }; function Canvas(cfg) { var _this; _this = _EventEmit.call(this) || this; _this._attrs = Util.mix({ type: 'canvas', children: [] }, cfg); _this._initPixelRatio(); _this._initCanvas(); return _this; } _proto._initPixelRatio = function _initPixelRatio() { var pixelRatio = this.get('pixelRatio'); if (!pixelRatio) { this.set('pixelRatio', Util.getPixelRatio()); } }; _proto.beforeDraw = function beforeDraw() { var context = this._attrs.context; var el = this._attrs.el; context && context.clearRect && context.clearRect(0, 0, el.width, el.height); }; _proto._initCanvas = function _initCanvas() { var self = this; var el = self.get('el'); var context = self.get('context'); if (!el && !context) { throw new Error('Please specify the id, el or context of the chart!'); } var canvas; if (el) { // DOMElement or String canvas = Util.isString(el) ? Util.getDomById(el) : el; } else { // 说明没有指定el canvas = _canvasElement["default"].create(context); } if (context && canvas && !canvas.getContext) { canvas.getContext = function () { return context; }; } var width = self.get('width'); if (!width) { width = Util.getWidth(canvas); } var height = self.get('height'); if (!height) { height = Util.getHeight(canvas); } self.set('canvas', this); self.set('el', canvas); self.set('context', context || canvas.getContext('2d')); self.changeSize(width, height); // 初始化事件控制器 var eventController = new _controller["default"]({ canvas: this, el: canvas }); self.set('eventController', eventController); }; _proto.changeSize = function changeSize(width, height) { var pixelRatio = this.get('pixelRatio'); var canvasDOM = this.get('el'); // HTMLCanvasElement or canvasElement // 浏览器环境设置style样式 if (canvasDOM.style) { canvasDOM.style.width = width + 'px'; canvasDOM.style.height = height + 'px'; } if (Util.isCanvasElement(canvasDOM)) { canvasDOM.width = width * pixelRatio; canvasDOM.height = height * pixelRatio; if (pixelRatio !== 1) { var ctx = this.get('context'); ctx.scale(pixelRatio, pixelRatio); } } this.set('width', width); this.set('height', height); }; _proto.getWidth = function getWidth() { var pixelRatio = this.get('pixelRatio'); var width = this.get('width'); return width * pixelRatio; }; _proto.getHeight = function getHeight() { var pixelRatio = this.get('pixelRatio'); var height = this.get('height'); return height * pixelRatio; }; _proto.getPointByClient = function getPointByClient(clientX, clientY) { var el = this.get('el'); var bbox = el.getBoundingClientRect(); var width = bbox.right - bbox.left; var height = bbox.bottom - bbox.top; return { x: (clientX - bbox.left) * (el.width / width), y: (clientY - bbox.top) * (el.height / height) }; }; _proto._beginDraw = function _beginDraw() { this._attrs.toDraw = true; }; _proto._endDraw = function _endDraw() { this._attrs.toDraw = false; }; _proto.draw = function draw() { var self = this; function drawInner() { self.set('animateHandler', requestAnimationFrame(function () { self.set('animateHandler', undefined); if (self.get('toDraw')) { drawInner(); } })); self.beforeDraw(); try { var context = self._attrs.context; var children = self._attrs.children; for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; child.draw(context); } // 支付宝,微信小程序,需要调context.draw才能完成绘制, 所以这里直接判断是否有.draw方法 if (context.draw) { context.draw(); } } catch (ev) { console.warn('error in draw canvas, detail as:'); console.warn(ev); self._endDraw(); } self._endDraw(); } if (self.get('destroyed')) { return; } if (self.get('animateHandler')) { this._beginDraw(); } else { drawInner(); } }; _proto.destroy = function destroy() { if (this.get('destroyed')) { return; } // 需要清理 canvas 画布内容,否则会导致 spa 应用 ios 下 canvas 白屏 // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12 // https://github.com/antvis/F2/issues/630 var el = this.get('el'); el.width = 0; el.height = 0; this.clear(); this._attrs = {}; this.set('destroyed', true); }; _proto.isDestroyed = function isDestroyed() { return this.get('destroyed'); }; return Canvas; }(_emit["default"]); Util.mix(Canvas.prototype, Container, { getGroupClass: function getGroupClass() { return Group; } }); module.exports = Canvas; /***/ }), /* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports["default"] = void 0; var _dom = __webpack_require__(62); var _common = __webpack_require__(0); // 计算滑动的方向 var calcDirection = function calcDirection(start, end) { var xDistance = end.x - start.x; var yDistance = end.y - start.y; // x 的距离大于y 说明是横向,否则就是纵向 if (Math.abs(xDistance) > Math.abs(yDistance)) { return xDistance > 0 ? 'right' : 'left'; } return yDistance > 0 ? 'down' : 'up'; }; // 计算2点之间的距离 var calcDistance = function calcDistance(point1, point2) { var xDistance = Math.abs(point2.x - point1.x); var yDistance = Math.abs(point2.y - point1.y); return Math.sqrt(xDistance * xDistance + yDistance * yDistance); }; var getCenter = function getCenter(point1, point2) { var x = point1.x + (point2.x - point1.x) / 2; var y = point1.y + (point2.y - point1.y) / 2; return { x: x, y: y }; }; var convertPoints = function convertPoints(touches, canvas) { if (!touches) return; var points = []; var len = touches.length; for (var i = 0; i < len; i++) { var touch = touches[i]; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置 var x = touch.x, y = touch.y, clientX = touch.clientX, clientY = touch.clientY; var point = void 0; // 小程序环境会有x,y if ((0, _common.isNumber)(x) || (0, _common.isNumber)(y)) { point = { x: x, y: y }; } else { // 浏览器环境再计算下canvas的相对位置 point = (0, _dom.getRelativePosition)({ x: clientX, y: clientY }, canvas); } points.push(point); } return points; }; var PRESS_DELAY = 250; var EventController = /*#__PURE__*/function () { function EventController(_ref) { var _this = this; var canvas = _ref.canvas, el = _ref.el; this._click = function (ev) { _this.emitEvent('click', ev); }; this._start = function (ev) { var points = convertPoints(ev.touches, _this.canvas); if (!points) { return; } ev.points = points; _this.emitEvent('touchstart', ev); // 防止上次的内容没有清理掉,重新reset下 _this.reset(); // 记录touch start 的时间 _this.startTime = Date.now(); // 记录touch start 的点 _this.startPoints = points; if (points.length > 1) { _this.startDistance = calcDistance(points[0], points[1]); _this.center = getCenter(points[0], points[1]); } else { // 如果touchstart后停顿250ms, 则也触发press事件 _this.pressTimeout = setTimeout(function () { // 这里固定触发press事件 var eventType = 'press'; ev.direction = 'none'; _this.emitStart(eventType, ev); _this.emitEvent(eventType, ev); _this.eventType = eventType; }, PRESS_DELAY); } }; this._move = function (ev) { var points = convertPoints(ev.touches, _this.canvas); if (!points) return; _this.clearPressTimeout(); ev.points = points; _this.emitEvent('touchmove', ev); var startPoints = _this.startPoints; if (!startPoints) return; // 多指触控 if (points.length > 1) { // touchstart的距离 var startDistance = _this.startDistance; var currentDistance = calcDistance(points[0], points[1]); ev.zoom = currentDistance / startDistance; ev.center = _this.center; // 触发缩放事件 _this.emitStart('pinch', ev); _this.emitEvent('pinch', ev); } else { var deltaX = points[0].x - startPoints[0].x; var deltaY = points[0].y - startPoints[0].y; var direction = _this.direction || calcDirection(startPoints[0], points[0]); _this.direction = direction; // 获取press或者pan的事件类型 // press 按住滑动, pan表示平移 // 如果start后立刻move,则触发pan, 如果有停顿,则触发press var eventType = _this.getEventType(points); ev.direction = direction; ev.deltaX = deltaX; ev.deltaY = deltaY; _this.emitStart(eventType, ev); _this.emitEvent(eventType, ev); // 记录最后2次move的时间和坐标,为了给swipe事件用 var prevMoveTime = _this.lastMoveTime; var now = Date.now(); // 最后2次的时间间隔一定要大于0,否则swipe没发计算 if (now - prevMoveTime > 0) { _this.prevMoveTime = prevMoveTime; _this.prevMovePoints = _this.lastMovePoints; _this.lastMoveTime = now; _this.lastMovePoints = points; } } }; this._end = function (ev) { _this.emitEnd(ev); _this.emitEvent('touchend', ev); // swipe事件处理, 在touchend之后触发 var lastMoveTime = _this.lastMoveTime; var now = Date.now(); // 做这个判断是为了最后一次touchmove后到end前,还有一个停顿的过程 // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内 if (now - lastMoveTime < 100) { var prevMoveTime = _this.prevMoveTime || _this.startTime; var intervalTime = lastMoveTime - prevMoveTime; // 时间间隔一定要大于0, 否则计算没意义 if (intervalTime > 0) { var prevMovePoints = _this.prevMovePoints || _this.startPoints; var lastMovePoints = _this.lastMovePoints; // move速率 var velocity = calcDistance(prevMovePoints[0], lastMovePoints[0]) / intervalTime; // 0.3 是参考hammerjs的设置 if (velocity > 0.3) { ev.velocity = velocity; ev.direction = calcDirection(prevMovePoints[0], lastMovePoints[0]); _this.emitEvent('swipe', ev); } } } _this.reset(); var touches = ev.touches; // 当多指只释放了1指时也会触发end, 这时重新触发一次start if (touches && touches.length > 0) { _this._start(ev); } }; this._cancel = function (ev) { _this.emitEvent('touchcancel', ev); _this.reset(); }; // canvasEl this.canvas = canvas; this.delegateEvent(el); // 用来记录当前触发的事件 this.processEvent = {}; } var _proto = EventController.prototype; _proto.delegateEvent = function delegateEvent(canvasEl) { // 代理这几个事件 canvasEl.addEventListener('click', this._click); canvasEl.addEventListener('touchstart', this._start); canvasEl.addEventListener('touchmove', this._move); canvasEl.addEventListener('touchend', this._end); canvasEl.addEventListener('touchcancel', this._cancel); }; _proto.emitEvent = function emitEvent(type, ev) { var canvas = this.canvas; canvas.emit(type, ev); }; _proto.getEventType = function getEventType(points) { var eventType = this.eventType, canvas = this.canvas, startTime = this.startTime, startPoints = this.startPoints; if (eventType) { return eventType; } var type; var panEventListeners = canvas.__events.pan; // 如果没有pan事件的监听,默认都是press if (!panEventListeners || !panEventListeners.length) { type = 'press'; } else { // 如果有pan事件的处理,press则需要停顿250ms, 且移动距离小于10 var now = Date.now(); if (now - startTime > PRESS_DELAY && calcDistance(startPoints[0], points[0]) < 10) { type = 'press'; } else { type = 'pan'; } } this.eventType = type; return type; }; _proto.enable = function enable(eventType) { this.processEvent[eventType] = true; } // 是否进行中的事件 ; _proto.isProcess = function isProcess(eventType) { return this.processEvent[eventType]; } // 触发start事件 ; _proto.emitStart = function emitStart(type, ev) { if (this.isProcess(type)) { return; } this.enable(type); this.emitEvent(type + "start", ev); } // 触发end事件 ; _proto.emitEnd = function emitEnd(ev) { var _this2 = this; var processEvent = this.processEvent; Object.keys(processEvent).forEach(function (type) { _this2.emitEvent(type + "end", ev); delete processEvent[type]; }); }; _proto.clearPressTimeout = function clearPressTimeout() { if (this.pressTimeout) { clearTimeout(this.pressTimeout); this.pressTimeout = 0; } }; _proto.reset = function reset() { this.clearPressTimeout(); this.startTime = 0; this.startPoints = null; this.startDistance = 0; this.direction = null; this.eventType = null; this.pinch = false; this.prevMoveTime = 0; this.prevMovePoints = null; this.lastMoveTime = 0; this.lastMovePoints = null; }; return EventController; }(); var _default = EventController; exports["default"] = _default; /***/ }), /* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); exports.__esModule = true; exports["default"] = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); var _emit = _interopRequireDefault(__webpack_require__(42)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var CanvasElement = /*#__PURE__*/function (_EventEmit) { (0, _inheritsLoose2["default"])(CanvasElement, _EventEmit); var _super = _createSuper(CanvasElement); function CanvasElement(ctx) { var _this; _this = _EventEmit.call(this) || this; _this.context = ctx; // canvas实际的宽高 (width/height) * pixelRatio _this.width = 0; _this.height = 0; _this.style = {}; _this.currentStyle = {}; // 用来标识是CanvasElement实例 _this.isCanvasElement = true; return _this; } var _proto = CanvasElement.prototype; _proto.getContext = function getContext() /* type */ { return this.context; }; _proto.getBoundingClientRect = function getBoundingClientRect() { var width = this.width; var height = this.height; // 默认都处理成可视窗口的顶部位置 return { top: 0, right: width, bottom: height, left: 0 }; }; _proto.addEventListener = function addEventListener(type, listener) { this.on(type, listener); }; _proto.removeEventListener = function removeEventListener(type, listener) { this.off(type, listener); }; _proto.dispatchEvent = function dispatchEvent(type, e) { this.emit(type, e); }; return CanvasElement; }(_emit["default"]); function supportEventListener(canvas) { if (!canvas) { return false; } // 非 HTMLCanvasElement if (canvas.nodeType !== 1 || !canvas.nodeName || canvas.nodeName.toLowerCase() !== 'canvas') { return false; } // 微信小程序canvas.getContext('2d')时也是CanvasRenderingContext2D // 也会有ctx.canvas, 而且nodeType也是1,所以还要在看下是否支持addEventListener var support = false; try { canvas.addEventListener('eventTest', function () { support = true; }); canvas.dispatchEvent(new Event('eventTest')); } catch (error) { support = false; } return support; } var _default = { create: function create(ctx) { if (!ctx) { return null; } if (supportEventListener(ctx.canvas)) { return ctx.canvas; } return new CanvasElement(ctx); } }; exports["default"] = _default; /***/ }), /* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); function _mod(n, m) { return (n % m + m) % m; } function _addStop(steps, gradient) { Util.each(steps, function (item) { item = item.split(':'); gradient.addColorStop(Number(item[0]), item[1]); }); } // the string format: 'l(0) 0:#ffffff 0.5:#7ec2f3 1:#1890ff' function _parseLineGradient(color, shape, context) { var arr = color.split(' '); var angle = arr[0].slice(2, arr[0].length - 1); angle = _mod(parseFloat(angle) * Math.PI / 180, Math.PI * 2); var steps = arr.slice(1); var _shape$getBBox = shape.getBBox(), minX = _shape$getBBox.minX, minY = _shape$getBBox.minY, maxX = _shape$getBBox.maxX, maxY = _shape$getBBox.maxY; var start; var end; if (angle >= 0 && angle < 0.5 * Math.PI) { start = { x: minX, y: minY }; end = { x: maxX, y: maxY }; } else if (0.5 * Math.PI <= angle && angle < Math.PI) { start = { x: maxX, y: minY }; end = { x: minX, y: maxY }; } else if (Math.PI <= angle && angle < 1.5 * Math.PI) { start = { x: maxX, y: maxY }; end = { x: minX, y: minY }; } else { start = { x: minX, y: maxY }; end = { x: maxX, y: minY }; } var tanTheta = Math.tan(angle); var tanTheta2 = tanTheta * tanTheta; var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x; var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y; var gradient = context.createLinearGradient(start.x, start.y, x, y); _addStop(steps, gradient); return gradient; } // the string format: 'r(0.5, 0.5, 0.1) 0:#ffffff 1:#1890ff' function _parseRadialGradient(color, shape, context) { var arr = color.split(' '); var circleCfg = arr[0].slice(2, arr[0].length - 1); circleCfg = circleCfg.split(','); var fx = parseFloat(circleCfg[0]); var fy = parseFloat(circleCfg[1]); var fr = parseFloat(circleCfg[2]); var steps = arr.slice(1); // if radius is 0, no gradient, stroke with the last color if (fr === 0) { var _color = steps[steps.length - 1]; return _color.split(':')[1]; } var _shape$getBBox2 = shape.getBBox(), width = _shape$getBBox2.width, height = _shape$getBBox2.height, minX = _shape$getBBox2.minX, minY = _shape$getBBox2.minY; var r = Math.sqrt(width * width + height * height) / 2; var gradient = context.createRadialGradient(minX + width * fx, minY + height * fy, fr * r, minX + width / 2, minY + height / 2, r); _addStop(steps, gradient); return gradient; } module.exports = { parseStyle: function parseStyle(color, shape, context) { if (color[1] === '(') { try { var firstCode = color[0]; if (firstCode === 'l') { return _parseLineGradient(color, shape, context); } else if (firstCode === 'r') { return _parseRadialGradient(color, shape, context); } } catch (ev) { console.error('error in parsing gradient string, please check if there are any extra whitespaces.'); console.error(ev); } } return color; } }; /***/ }), /* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Shape = __webpack_require__(10); var Rect = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Rect, _Shape); var _super = _createSuper(Rect); function Rect() { return _Shape.apply(this, arguments) || this; } var _proto = Rect.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'rect'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { x: 0, y: 0, width: 0, height: 0, radius: 0, lineWidth: 0 }; }; _proto.createPath = function createPath(context) { var self = this; var attrs = self.get('attrs'); var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height; context.beginPath(); var radius = attrs.radius; if (!radius || !(width * height)) { context.rect(x, y, width, height); } else { radius = Util.parsePadding(radius); context.moveTo(x + radius[0], y); context.lineTo(x + width - radius[1], y); context.arc(x + width - radius[1], y + radius[1], radius[1], -Math.PI / 2, 0, false); context.lineTo(x + width, y + height - radius[2]); context.arc(x + width - radius[2], y + height - radius[2], radius[2], 0, Math.PI / 2, false); context.lineTo(x + radius[3], y + height); context.arc(x + radius[3], y + height - radius[3], radius[3], Math.PI / 2, Math.PI, false); context.lineTo(x, y + radius[0]); context.arc(x + radius[0], y + radius[0], radius[0], Math.PI, Math.PI * 3 / 2, false); context.closePath(); } }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height; return { minX: x, minY: y, maxX: x + width, maxY: y + height }; }; return Rect; }(Shape); Shape.Rect = Rect; module.exports = Rect; /***/ }), /* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var Circle = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Circle, _Shape); var _super = _createSuper(Circle); function Circle() { return _Shape.apply(this, arguments) || this; } var _proto = Circle.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'circle'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { x: 0, y: 0, r: 0, lineWidth: 0 }; }; _proto.createPath = function createPath(context) { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, r = attrs.r; context.beginPath(); context.arc(x, y, r, 0, Math.PI * 2, false); context.closePath(); }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, r = attrs.r; return { minX: x - r, maxX: x + r, minY: y - r, maxY: y + r }; }; return Circle; }(Shape); Shape.Circle = Circle; module.exports = Circle; /***/ }), /* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var bbox = __webpack_require__(21); var Line = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Line, _Shape); var _super = _createSuper(Line); function Line() { return _Shape.apply(this, arguments) || this; } var _proto = Line.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canStroke = true; this._attrs.type = 'line'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { x1: 0, y1: 0, x2: 0, y2: 0, lineWidth: 1 }; }; _proto.createPath = function createPath(context) { var attrs = this.get('attrs'); var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2; context.beginPath(); context.moveTo(x1, y1); context.lineTo(x2, y2); }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, lineWidth = attrs.lineWidth; return bbox.getBBoxFromLine(x1, y1, x2, y2, lineWidth); }; return Line; }(Shape); Shape.Line = Line; module.exports = Line; /***/ }), /* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var bbox = __webpack_require__(21); var Polygon = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Polygon, _Shape); var _super = _createSuper(Polygon); function Polygon() { return _Shape.apply(this, arguments) || this; } var _proto = Polygon.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'polygon'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { points: null, lineWidth: 0 }; }; _proto.createPath = function createPath(context) { var self = this; var attrs = self.get('attrs'); var points = attrs.points; context.beginPath(); for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; if (i === 0) { context.moveTo(point.x, point.y); } else { context.lineTo(point.x, point.y); } } context.closePath(); }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var points = attrs.points; return bbox.getBBoxFromPoints(points); }; return Polygon; }(Shape); Shape.Polygon = Polygon; module.exports = Polygon; /***/ }), /* 184 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var Smooth = __webpack_require__(71); var bbox = __webpack_require__(21); // filter the point which x or y is NaN function _filterPoints(points) { var filteredPoints = []; for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; if (!isNaN(point.x) && !isNaN(point.y)) { filteredPoints.push(point); } } return filteredPoints; } var Polyline = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Polyline, _Shape); var _super = _createSuper(Polyline); function Polyline() { return _Shape.apply(this, arguments) || this; } var _proto = Polyline.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'polyline'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { points: null, lineWidth: 1, smooth: false }; }; _proto.createPath = function createPath(context) { var self = this; var attrs = self.get('attrs'); var points = attrs.points, smooth = attrs.smooth; var filteredPoints = _filterPoints(points); context.beginPath(); if (filteredPoints.length) { context.moveTo(filteredPoints[0].x, filteredPoints[0].y); if (smooth) { var constaint = [[0, 0], [1, 1]]; var sps = Smooth.smooth(filteredPoints, false, constaint); for (var i = 0, n = sps.length; i < n; i++) { var sp = sps[i]; context.bezierCurveTo(sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]); } } else { var _i; var l; for (_i = 1, l = filteredPoints.length - 1; _i < l; _i++) { context.lineTo(filteredPoints[_i].x, filteredPoints[_i].y); } context.lineTo(filteredPoints[l].x, filteredPoints[l].y); } } }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var points = attrs.points, smooth = attrs.smooth, lineWidth = attrs.lineWidth; var filteredPoints = _filterPoints(points); if (smooth) { var newPoints = []; var constaint = [[0, 0], [1, 1]]; var sps = Smooth.smooth(filteredPoints, false, constaint); for (var i = 0, n = sps.length; i < n; i++) { var sp = sps[i]; if (i === 0) { newPoints.push([filteredPoints[0].x, filteredPoints[0].y, sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]); } else { var lastPoint = sps[i - 1]; newPoints.push([lastPoint[5], lastPoint[6], sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]); } } return bbox.getBBoxFromBezierGroup(newPoints, lineWidth); } return bbox.getBBoxFromPoints(filteredPoints, lineWidth); }; return Polyline; }(Shape); Shape.Polyline = Polyline; module.exports = Polyline; /***/ }), /* 185 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var bbox = __webpack_require__(21); var Arc = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Arc, _Shape); var _super = _createSuper(Arc); function Arc() { return _Shape.apply(this, arguments) || this; } var _proto = Arc.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canStroke = true; this._attrs.canFill = true; this._attrs.type = 'arc'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { x: 0, y: 0, r: 0, startAngle: 0, endAngle: Math.PI * 2, anticlockwise: false, lineWidth: 1 }; }; _proto.createPath = function createPath(context) { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, r = attrs.r, startAngle = attrs.startAngle, endAngle = attrs.endAngle, anticlockwise = attrs.anticlockwise; context.beginPath(); if (startAngle !== endAngle) { context.arc(x, y, r, startAngle, endAngle, anticlockwise); } }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, r = attrs.r, startAngle = attrs.startAngle, endAngle = attrs.endAngle, anticlockwise = attrs.anticlockwise; return bbox.getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise); }; return Arc; }(Shape); Shape.Arc = Arc; module.exports = Arc; /***/ }), /* 186 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var bbox = __webpack_require__(21); var Sector = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Sector, _Shape); var _super = _createSuper(Sector); function Sector() { return _Shape.apply(this, arguments) || this; } var _proto = Sector.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'sector'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { x: 0, y: 0, lineWidth: 0, r: 0, r0: 0, startAngle: 0, endAngle: Math.PI * 2, anticlockwise: false }; }; _proto.createPath = function createPath(context) { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, startAngle = attrs.startAngle, endAngle = attrs.endAngle, r = attrs.r, r0 = attrs.r0, anticlockwise = attrs.anticlockwise; context.beginPath(); var unitX = Math.cos(startAngle); var unitY = Math.sin(startAngle); context.moveTo(unitX * r0 + x, unitY * r0 + y); context.lineTo(unitX * r + x, unitY * r + y); // 当扇形的角度非常小的时候,就不进行弧线的绘制;或者整个只有1个扇形时,会出现end<0的情况不绘制 if (Math.abs(endAngle - startAngle) > 0.0001 || startAngle === 0 && endAngle < 0) { context.arc(x, y, r, startAngle, endAngle, anticlockwise); context.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y); if (r0 !== 0) { context.arc(x, y, r0, endAngle, startAngle, !anticlockwise); } } context.closePath(); }; _proto.calculateBox = function calculateBox() { var attrs = this.get('attrs'); var x = attrs.x, y = attrs.y, r = attrs.r, r0 = attrs.r0, startAngle = attrs.startAngle, endAngle = attrs.endAngle, anticlockwise = attrs.anticlockwise; var outerBBox = bbox.getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise); var innerBBox = bbox.getBBoxFromArc(x, y, r0, startAngle, endAngle, anticlockwise); return { minX: Math.min(outerBBox.minX, innerBBox.minX), minY: Math.min(outerBBox.minY, innerBBox.minY), maxX: Math.max(outerBBox.maxX, innerBBox.maxX), maxY: Math.max(outerBBox.maxY, innerBBox.maxY) }; }; return Sector; }(Shape); Shape.Sector = Sector; module.exports = Sector; /***/ }), /* 187 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Util = __webpack_require__(0); var Shape = __webpack_require__(10); var RectUtil = __webpack_require__(188); var textWidthCacheCounter = 0; var textWidthCache = {}; var TEXT_CACHE_MAX = 5000; var Text = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Text, _Shape); var _super = _createSuper(Text); function Text() { return _Shape.apply(this, arguments) || this; } var _proto = Text.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.type = 'text'; }; _proto.getDefaultAttrs = function getDefaultAttrs() { return { lineWidth: 0, lineCount: 1, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom', lineHeight: null, textArr: null }; }; _proto._getFontStyle = function _getFontStyle() { var attrs = this._attrs.attrs; var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant; return fontStyle + " " + fontVariant + " " + fontWeight + " " + fontSize + "px " + fontFamily; }; _proto._afterAttrsSet = function _afterAttrsSet() { var attrs = this._attrs.attrs; attrs.font = this._getFontStyle(); if (attrs.text) { var text = attrs.text; var textArr = null; var lineCount = 1; if (Util.isString(text) && text.indexOf('\n') !== -1) { textArr = text.split('\n'); lineCount = textArr.length; } attrs.lineCount = lineCount; attrs.textArr = textArr; } this.set('attrs', attrs); }; _proto._getTextHeight = function _getTextHeight() { var attrs = this._attrs.attrs; if (attrs.height) { return attrs.height; } var lineCount = attrs.lineCount; var fontSize = attrs.fontSize * 1; if (lineCount > 1) { var spaceingY = this._getSpaceingY(); return fontSize * lineCount + spaceingY * (lineCount - 1); } return fontSize; }; _proto._getSpaceingY = function _getSpaceingY() { var attrs = this._attrs.attrs; var lineHeight = attrs.lineHeight; var fontSize = attrs.fontSize * 1; return lineHeight ? lineHeight - fontSize : fontSize * 0.14; }; _proto.drawInner = function drawInner(context) { var self = this; var attrs = self._attrs.attrs; var text = attrs.text; var x = attrs.x; var y = attrs.y; if (Util.isNil(text) || isNaN(x) || isNaN(y)) { // text will be 0 return; } var textArr = attrs.textArr; var fontSize = attrs.fontSize * 1; var spaceingY = self._getSpaceingY(); if (attrs.rotate) { // do rotation context.translate(x, y); context.rotate(attrs.rotate); x = 0; y = 0; } var textBaseline = attrs.textBaseline; var height; if (textArr) { height = self._getTextHeight(); } var subY; // context.beginPath(); if (self.hasFill()) { var fillOpacity = attrs.fillOpacity; if (!Util.isNil(fillOpacity) && fillOpacity !== 1) { context.globalAlpha = fillOpacity; } if (textArr) { for (var i = 0, len = textArr.length; i < len; i++) { var subText = textArr[i]; subY = y + i * (spaceingY + fontSize) - height + fontSize; // bottom; if (textBaseline === 'middle') { subY += height - fontSize - (height - fontSize) / 2; } if (textBaseline === 'top') { subY += height - fontSize; } context.fillText(subText, x, subY); } } else { context.fillText(text, x, y); } } if (self.hasStroke()) { if (textArr) { for (var _i = 0, _len = textArr.length; _i < _len; _i++) { var _subText = textArr[_i]; subY = y + _i * (spaceingY + fontSize) - height + fontSize; // bottom; if (textBaseline === 'middle') { subY += height - fontSize - (height - fontSize) / 2; } if (textBaseline === 'top') { subY += height - fontSize; } context.strokeText(_subText, x, subY); } } else { context.strokeText(text, x, y); } } }; _proto.calculateBox = function calculateBox() { var self = this; var attrs = self._attrs.attrs; var x = attrs.x, y = attrs.y, textAlign = attrs.textAlign, textBaseline = attrs.textBaseline; var width = self._getTextWidth(); // attrs.width if (!width) { return { minX: x, minY: y, maxX: x, maxY: y }; } var height = self._getTextHeight(); // attrs.height if (attrs.rotate) { var rotatedBox = RectUtil.calcRotatedBox({ width: width, height: height, rotate: attrs.rotate }); width = rotatedBox.width; height = rotatedBox.height; } var point = { x: x, y: y - height }; // default textAlign: start, textBaseline: bottom if (textAlign) { if (textAlign === 'end' || textAlign === 'right') { point.x -= width; } else if (textAlign === 'center') { point.x -= width / 2; } } if (textBaseline) { if (textBaseline === 'top') { point.y += height; } else if (textBaseline === 'middle') { point.y += height / 2; } } return { minX: point.x, minY: point.y, maxX: point.x + width, maxY: point.y + height }; }; _proto._getTextWidth = function _getTextWidth() { var attrs = this._attrs.attrs; if (attrs.width) { return attrs.width; } var text = attrs.text; var context = this.get('context'); if (Util.isNil(text)) return undefined; var font = attrs.font; var textArr = attrs.textArr; var key = text + '' + font; if (textWidthCache[key]) { return textWidthCache[key]; } var width = 0; if (textArr) { for (var i = 0, length = textArr.length; i < length; i++) { var subText = textArr[i]; width = Math.max(width, Util.measureText(subText, font, context).width); } } else { width = Util.measureText(text, font, context).width; } if (textWidthCacheCounter > TEXT_CACHE_MAX) { textWidthCacheCounter = 0; textWidthCache = {}; } textWidthCacheCounter++; textWidthCache[key] = width; return width; }; return Text; }(Shape); Shape.Text = Text; module.exports = Text; /***/ }), /* 188 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Rect = { calcRotatedBox: function calcRotatedBox(_ref) { var width = _ref.width, height = _ref.height, rotate = _ref.rotate; var absRotate = Math.abs(rotate); return { width: Math.abs(width * Math.cos(absRotate) + height * Math.sin(absRotate)), height: Math.abs(height * Math.cos(absRotate) + width * Math.sin(absRotate)) }; } }; module.exports = Rect; /***/ }), /* 189 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Shape = __webpack_require__(10); var Custom = /*#__PURE__*/function (_Shape) { (0, _inheritsLoose2["default"])(Custom, _Shape); var _super = _createSuper(Custom); function Custom() { return _Shape.apply(this, arguments) || this; } var _proto = Custom.prototype; _proto._initProperties = function _initProperties() { _Shape.prototype._initProperties.call(this); this._attrs.canFill = true; this._attrs.canStroke = true; this._attrs.createPath = null; this._attrs.type = 'custom'; }; _proto.createPath = function createPath(context) { var createPath = this.get('createPath'); createPath && createPath.call(this, context); }; _proto.calculateBox = function calculateBox() { var calculateBox = this.get('calculateBox'); return calculateBox && calculateBox.call(this); }; return Custom; }(Shape); Shape.Custom = Custom; module.exports = Custom; /***/ }), /* 190 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Path = __webpack_require__(72); var Geom = __webpack_require__(17); __webpack_require__(68); var Line = /*#__PURE__*/function (_Path) { (0, _inheritsLoose2["default"])(Line, _Path); var _super = _createSuper(Line); function Line() { return _Path.apply(this, arguments) || this; } var _proto = Line.prototype; _proto.getDefaultCfg = function getDefaultCfg() { var cfg = _Path.prototype.getDefaultCfg.call(this); cfg.type = 'line'; cfg.sortable = true; return cfg; }; return Line; }(Path); Geom.Line = Line; module.exports = Line; /***/ }), /* 191 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(22)); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Geom = __webpack_require__(17); var Util = __webpack_require__(0); var SizeMixin = __webpack_require__(73); __webpack_require__(192); var Interval = /*#__PURE__*/function (_Geom) { (0, _inheritsLoose2["default"])(Interval, _Geom); var _super = _createSuper(Interval); var _proto = Interval.prototype; _proto.getDefaultCfg = function getDefaultCfg() { var cfg = _Geom.prototype.getDefaultCfg.call(this); cfg.type = 'interval'; cfg.shapeType = 'interval'; cfg.generatePoints = true; return cfg; }; function Interval(cfg) { var _this; _this = _Geom.call(this, cfg) || this; Util.mix((0, _assertThisInitialized2["default"])(_this), SizeMixin); return _this; } _proto.init = function init() { _Geom.prototype.init.call(this); // 绑定事件 this.initEvent(); }; _proto.createShapePointsCfg = function createShapePointsCfg(obj) { var cfg = _Geom.prototype.createShapePointsCfg.call(this, obj); cfg.size = this.getNormalizedSize(obj); return cfg; }; _proto.clearInner = function clearInner() { _Geom.prototype.clearInner.call(this); this.set('defaultSize', null); }; return Interval; }(Geom); Geom.Interval = Interval; module.exports = Interval; /***/ }), /* 192 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Util = __webpack_require__(0); var Shape = __webpack_require__(19); var Vector2 = __webpack_require__(13); var Global = __webpack_require__(6); function getRectPoints(cfg) { var x = cfg.x, y = cfg.y, y0 = cfg.y0, size = cfg.size; var ymin = y0; var ymax = y; if (Util.isArray(y)) { ymax = y[1]; ymin = y[0]; } var xmin; var xmax; if (Util.isArray(x)) { xmin = x[0]; xmax = x[1]; } else { xmin = x - size / 2; xmax = x + size / 2; } return [{ x: xmin, y: ymin }, { x: xmin, y: ymax }, { x: xmax, y: ymax }, { x: xmax, y: ymin }]; } function getRectRange(points) { var xValues = []; var yValues = []; for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; xValues.push(point.x); yValues.push(point.y); } var xMin = Math.min.apply(null, xValues); var yMin = Math.min.apply(null, yValues); var xMax = Math.max.apply(null, xValues); var yMax = Math.max.apply(null, yValues); return { x: xMin, y: yMin, width: xMax - xMin, height: yMax - yMin }; } function getMiddlePoint(a, b) { var x = (a.x - b.x) / 2 + b.x; var y = (a.y - b.y) / 2 + b.y; return { x: x, y: y }; } var Interval = Shape.registerFactory('interval', { defaultShapeType: 'rect', getDefaultPoints: function getDefaultPoints(cfg) { return getRectPoints(cfg); } }); Shape.registerShape('interval', 'rect', { draw: function draw(cfg, container) { var points = this.parsePoints(cfg.points); var style = Util.mix({ fill: cfg.color }, Global.shape.interval, cfg.style); if (cfg.isInCircle) { var newPoints = points.slice(0); if (this._coord.transposed) { newPoints = [points[0], points[3], points[2], points[1]]; } var _cfg$center = cfg.center, x = _cfg$center.x, y = _cfg$center.y; var v = [1, 0]; var v0 = [newPoints[0].x - x, newPoints[0].y - y]; var v1 = [newPoints[1].x - x, newPoints[1].y - y]; var v2 = [newPoints[2].x - x, newPoints[2].y - y]; var startAngle = Vector2.angleTo(v, v1); var endAngle = Vector2.angleTo(v, v2); var r0 = Vector2.length(v0); var r = Vector2.length(v1); if (startAngle >= 1.5 * Math.PI) { startAngle = startAngle - 2 * Math.PI; } if (endAngle >= 1.5 * Math.PI) { endAngle = endAngle - 2 * Math.PI; } return container.addShape('Sector', { className: 'interval', attrs: Util.mix({ x: x, y: y, r: r, r0: r0, startAngle: startAngle, endAngle: endAngle }, style) }); } var rectCfg = getRectRange(points); return container.addShape('rect', { className: 'interval', attrs: Util.mix(rectCfg, style) }); } }); // 金字塔 和 漏斗图 ['pyramid', 'funnel'].forEach(function (shapeType) { Shape.registerShape('interval', shapeType, { getPoints: function getPoints(cfg) { cfg.size = cfg.size * 2; // 漏斗图的 size 是柱状图的两倍 return getRectPoints(cfg); }, draw: function draw(cfg, container) { var points = this.parsePoints(cfg.points); var nextPoints = this.parsePoints(cfg.nextPoints); var polygonPoints = null; if (nextPoints) { polygonPoints = [points[0], points[1], nextPoints[1], nextPoints[0]]; } else { polygonPoints = [points[0], points[1]]; // pyramid 顶部是三角形,所以取中心点就好了,funnel顶部是长方形 if (shapeType === 'pyramid') { polygonPoints.push(getMiddlePoint(points[2], points[3])); } else { polygonPoints.push(points[2], points[3]); } } var attrs = Util.mix({ fill: cfg.color, points: polygonPoints }, Global.shape.interval, cfg.style); return container.addShape('polygon', { className: 'interval', attrs: attrs }); } }); }); module.exports = Interval; /***/ }), /* 193 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = { Stack: __webpack_require__(194), Dodge: __webpack_require__(196), Symmetric: __webpack_require__(198) }; /***/ }), /* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Stack = __webpack_require__(195); module.exports = Stack; /***/ }), /* 195 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var isArray = __webpack_require__(34); var isNil = __webpack_require__(35); var Adjust = __webpack_require__(33); var Stack = /*#__PURE__*/function (_Adjust) { _inheritsLoose(Stack, _Adjust); function Stack() { return _Adjust.apply(this, arguments) || this; } var _proto = Stack.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.xField = null; // 调整对应的 x 方向对应的字段名称 this.yField = null; // 调整对应的 y 方向对应的字段名称 }; _proto.processAdjust = function processAdjust(dataArray) { this.processStack(dataArray); }; _proto.processStack = function processStack(dataArray) { var self = this; var xField = self.xField; var yField = self.yField; var count = dataArray.length; var stackCache = { positive: {}, negative: {} }; // 层叠顺序翻转 if (self.reverseOrder) { dataArray = dataArray.slice(0).reverse(); } for (var i = 0; i < count; i++) { var data = dataArray[i]; for (var j = 0, len = data.length; j < len; j++) { var item = data[j]; var x = item[xField] || 0; var y = item[yField]; var xkey = x.toString(); y = isArray(y) ? y[1] : y; if (!isNil(y)) { var direction = y >= 0 ? 'positive' : 'negative'; if (!stackCache[direction][xkey]) { stackCache[direction][xkey] = 0; } item[yField] = [stackCache[direction][xkey], y + stackCache[direction][xkey]]; stackCache[direction][xkey] += y; } } } }; return Stack; }(Adjust); Adjust.Stack = Stack; module.exports = Stack; /***/ }), /* 196 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Dodge = __webpack_require__(197); module.exports = Dodge; /***/ }), /* 197 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var Adjust = __webpack_require__(33); var each = __webpack_require__(15); var MARGIN_RATIO = 1 / 2; var DODGE_RATIO = 1 / 2; var Dodge = /*#__PURE__*/function (_Adjust) { _inheritsLoose(Dodge, _Adjust); function Dodge() { return _Adjust.apply(this, arguments) || this; } var _proto = Dodge.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { /** * 调整过程中,2个数据的间距 * @type {Number} */ this.marginRatio = MARGIN_RATIO; /** * 调整占单位宽度的比例,例如:占2个分类间距的 1/2 * @type {Number} */ this.dodgeRatio = DODGE_RATIO; this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整 }; _proto.getDodgeOffset = function getDodgeOffset(range, index, count) { var self = this; var pre = range.pre; var next = range.next; var tickLength = next - pre; var width = tickLength * self.dodgeRatio / count; var margin = self.marginRatio * width; var offset = 1 / 2 * (tickLength - count * width - (count - 1) * margin) + ((index + 1) * width + index * margin) - 1 / 2 * width - 1 / 2 * tickLength; return (pre + next) / 2 + offset; }; _proto.processAdjust = function processAdjust(dataArray) { var self = this; var count = dataArray.length; var xField = self.xField; each(dataArray, function (data, index) { for (var i = 0, len = data.length; i < len; i++) { var obj = data[i]; var value = obj[xField]; var range = { pre: len === 1 ? value - 1 : value - 0.5, next: len === 1 ? value + 1 : value + 0.5 }; var dodgeValue = self.getDodgeOffset(range, index, count); obj[xField] = dodgeValue; } }); }; return Dodge; }(Adjust); Adjust.Dodge = Dodge; module.exports = Dodge; /***/ }), /* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Symmetric = __webpack_require__(199); module.exports = Symmetric; /***/ }), /* 199 */ /***/ (function(module, exports, __webpack_require__) { function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var each = __webpack_require__(15); var maxBy = __webpack_require__(200); var isArray = __webpack_require__(34); var ArrayUtil = { merge: __webpack_require__(202) }; var Adjust = __webpack_require__(33); var Symmetric = /*#__PURE__*/function (_Adjust) { _inheritsLoose(Symmetric, _Adjust); function Symmetric() { return _Adjust.apply(this, arguments) || this; } var _proto = Symmetric.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.xField = null; // 调整对应的 x 方向对应的字段名称 this.yField = null; // 调整对应的 y 方向对应的字段名称 this.cacheMax = null; // 缓存的最大值 this.adjustNames = ['y']; // Only support stack y this.groupFields = null; // 参与分组的数据维度 }; // 获取最大的y值 _proto._getMax = function _getMax(dim) { var self = this; var mergeData = self.mergeData; var maxRecord = maxBy(mergeData, function (obj) { var value = obj[dim]; if (isArray(value)) { return Math.max.apply(null, value); } return value; }); var maxValue = maxRecord[dim]; var max = isArray(maxValue) ? Math.max.apply(null, maxValue) : maxValue; return max; }; // 获取每个字段最大的值 _proto._getXValuesMax = function _getXValuesMax() { var self = this; var yField = self.yField; var xField = self.xField; var cache = {}; var mergeData = self.mergeData; each(mergeData, function (obj) { var xValue = obj[xField]; var yValue = obj[yField]; var max = isArray(yValue) ? Math.max.apply(null, yValue) : yValue; cache[xValue] = cache[xValue] || 0; if (cache[xValue] < max) { cache[xValue] = max; } }); return cache; }; // 入口函数 _proto.processAdjust = function processAdjust(dataArray) { var self = this; var mergeData = ArrayUtil.merge(dataArray); self.mergeData = mergeData; self._processSymmetric(dataArray); self.mergeData = null; }; // 处理对称 _proto._processSymmetric = function _processSymmetric(dataArray) { var self = this; var xField = self.xField; var yField = self.yField; var max = self._getMax(yField); var first = dataArray[0][0]; var cache; if (first && isArray(first[yField])) { cache = self._getXValuesMax(); } each(dataArray, function (data) { each(data, function (obj) { var value = obj[yField]; var offset; if (isArray(value)) { var xValue = obj[xField]; var valueMax = cache[xValue]; offset = (max - valueMax) / 2; var tmp = []; /* eslint-disable no-loop-func */ each(value, function (subVal) { // 多个字段 tmp.push(offset + subVal); }); /* eslint-enable no-loop-func */ obj[yField] = tmp; } else { offset = (max - value) / 2; obj[yField] = [offset, value + offset]; } }); }); }; return Symmetric; }(Adjust); Adjust.Symmetric = Symmetric; module.exports = Symmetric; /***/ }), /* 200 */ /***/ (function(module, exports, __webpack_require__) { var isArray = __webpack_require__(34); var isFunction = __webpack_require__(201); var each = __webpack_require__(15); /** * @param {Array} arr The array to iterate over. * @param {Function} [fn] The iteratee invoked per element. * @return {*} Returns the maximum value. * @example * * var objects = [{ 'n': 1 }, { 'n': 2 }]; * * maxBy(objects, function(o) { return o.n; }); * // => { 'n': 2 } * * maxBy(objects, 'n'); * // => { 'n': 2 } */ var maxBy = function maxBy(arr, fn) { if (!isArray(arr)) { return undefined; } var max = arr[0]; var maxData = void 0; if (isFunction(fn)) { maxData = fn(arr[0]); } else { maxData = arr[0][fn]; } var data = void 0; each(arr, function (val) { if (isFunction(fn)) { data = fn(val); } else { data = val[fn]; } if (data > maxData) { max = val; maxData = data; } }); return max; }; module.exports = maxBy; /***/ }), /* 201 */ /***/ (function(module, exports, __webpack_require__) { /** * 是否为函数 * @param {*} fn 对象 * @return {Boolean} 是否函数 */ var isType = __webpack_require__(27); var isFunction = function isFunction(value) { return isType(value, 'Function'); }; module.exports = isFunction; /***/ }), /* 202 */ /***/ (function(module, exports) { var merge = function merge(dataArray) { var rst = []; for (var i = 0; i < dataArray.length; i++) { rst = rst.concat(dataArray[i]); } return rst; }; module.exports = merge; /***/ }), /* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(1); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3)); var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4)); function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Base = __webpack_require__(43); var Vector2 = __webpack_require__(13); var Matrix = __webpack_require__(31); var Polar = /*#__PURE__*/function (_Base) { (0, _inheritsLoose2["default"])(Polar, _Base); var _super = _createSuper(Polar); function Polar() { return _Base.apply(this, arguments) || this; } var _proto = Polar.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.type = 'polar'; this.startAngle = -Math.PI / 2; this.endAngle = Math.PI * 3 / 2; this.inner = 0; this.innerRadius = 0; // alias this.isPolar = true; this.transposed = false; this.center = null; this.radius = null; // relative, 0 ~ 1 }; _proto.init = function init(start, end) { _Base.prototype.init.call(this, start, end); var self = this; var inner = self.inner || self.innerRadius; var width = Math.abs(end.x - start.x); var height = Math.abs(end.y - start.y); var maxRadius; var center; if (self.startAngle === -Math.PI && self.endAngle === 0) { maxRadius = Math.min(width / 2, height); center = { x: (start.x + end.x) / 2, y: start.y }; } else { maxRadius = Math.min(width, height) / 2; center = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 }; } var radius = self.radius; if (radius > 0 && radius <= 1) { maxRadius = maxRadius * radius; } this.x = { start: self.startAngle, end: self.endAngle }; this.y = { start: maxRadius * inner, end: maxRadius }; this.center = center; this.circleRadius = maxRadius; // the radius value in px }; _proto._convertPoint = function _convertPoint(point) { var self = this; var center = self.center; var transposed = self.transposed; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var x = self.x; var y = self.y; var angle = x.start + (x.end - x.start) * point[xDim]; var radius = y.start + (y.end - y.start) * point[yDim]; return { x: center.x + Math.cos(angle) * radius, y: center.y + Math.sin(angle) * radius }; }; _proto._invertPoint = function _invertPoint(point) { var self = this; var center = self.center, transposed = self.transposed, x = self.x, y = self.y; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var m = [1, 0, 0, 1, 0, 0]; Matrix.rotate(m, m, x.start); var startV = [1, 0]; Vector2.transformMat2d(startV, startV, m); startV = [startV[0], startV[1]]; var pointV = [point.x - center.x, point.y - center.y]; if (Vector2.zero(pointV)) { return { x: 0, y: 0 }; } var theta = Vector2.angleTo(startV, pointV, x.end < x.start); if (Math.abs(theta - Math.PI * 2) < 0.001) { theta = 0; } var l = Vector2.length(pointV); var percentX = theta / (x.end - x.start); percentX = x.end - x.start > 0 ? percentX : -percentX; var percentY = (l - y.start) / (y.end - y.start); var rst = {}; rst[xDim] = percentX; rst[yDim] = percentY; return rst; }; return Polar; }(Base); Base.Polar = Polar; module.exports = Polar; /***/ }), /* 204 */, /* 205 */, /* 206 */, /* 207 */, /* 208 */, /* 209 */, /* 210 */, /* 211 */, /* 212 */, /* 213 */, /* 214 */, /* 215 */, /* 216 */, /* 217 */, /* 218 */, /* 219 */, /* 220 */, /* 221 */, /* 222 */, /* 223 */, /* 224 */, /* 225 */, /* 226 */, /* 227 */, /* 228 */, /* 229 */, /* 230 */, /* 231 */, /* 232 */, /* 233 */, /* 234 */, /* 235 */, /* 236 */, /* 237 */, /* 238 */, /* 239 */, /* 240 */, /* 241 */, /* 242 */, /* 243 */, /* 244 */, /* 245 */, /* 246 */, /* 247 */, /* 248 */, /* 249 */, /* 250 */, /* 251 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Only support simple bar chart, line chart and pie chart */ var F2 = __webpack_require__(77); __webpack_require__(190); __webpack_require__(191); __webpack_require__(193); __webpack_require__(203); module.exports = F2; /***/ }) /******/ ]); });