diff --git a/index.js b/index.js
index ac92cdf87..494736c3c 100644
--- a/index.js
+++ b/index.js
@@ -6364,7 +6364,41 @@
}
var originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, _width);
- var originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, _height); // 超出尺寸模拟mask截取
+ var originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, _height);
+ var xnl = 0;
+ var xnr = 0;
+ var ynt = 0;
+ var ynb = 0; // repeat-x
+
+ if (['repeat-x', 'repeat'].indexOf(backgroundRepeat) > -1) {
+ var diff = originX - x2;
+
+ if (diff > 0) {
+ xnl = Math.ceil(diff / w);
+ }
+
+ diff = x2 + iw - originX - w;
+
+ if (diff > 0) {
+ xnr = Math.ceil(diff / w);
+ }
+ } // repeat-y
+
+
+ if (['repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1) {
+ var _diff = originY - y2;
+
+ if (_diff > 0) {
+ ynt = Math.ceil(_diff / h);
+ }
+
+ _diff = y2 + ih - originY - h;
+
+ if (_diff > 0) {
+ ynb = Math.ceil(_diff / h);
+ }
+ } // 超出尺寸模拟mask截取
+
var needMask = ['repeat-x', 'repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1 || originX < x2 || originY < y2 || w > iw || h > ih;
@@ -6379,7 +6413,47 @@
this.root.__clear();
}
- ctx.drawImage(this.__loadBgi.source, originX, originY, w, h); // repeat-x
+ ctx.drawImage(this.__loadBgi.source, originX, originY, w, h); // 分4个角分别判断
+
+ if (xnl > 0 || ynt > 0) {
+ for (var i = 0; i <= Math.max(xnl, 1); i++) {
+ for (var j = 0; j <= Math.max(ynt, 1); j++) {
+ if (i !== 0 || j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX - i * w, originY - j * h, w, h);
+ }
+ }
+ }
+ }
+
+ if (xnr > 0 || ynt > 0) {
+ for (var _i = 0; _i <= Math.max(xnr, 1); _i++) {
+ for (var _j = 0; _j <= Math.max(ynt, 1); _j++) {
+ if (_i !== 0 || _j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX + _i * w, originY - _j * h, w, h);
+ }
+ }
+ }
+ }
+
+ if (xnl > 0 || ynb > 0) {
+ for (var _i2 = 0; _i2 <= Math.max(xnl, 1); _i2++) {
+ for (var _j2 = 0; _j2 <= Math.max(ynb, 1); _j2++) {
+ if (_i2 !== 0 || _j2 !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX - _i2 * w, originY + _j2 * h, w, h);
+ }
+ }
+ }
+ }
+
+ if (xnr > 0 || ynb > 0) {
+ for (var _i3 = 0; _i3 <= Math.max(xnr, 1); _i3++) {
+ for (var _j3 = 0; _j3 <= Math.max(ynb, 1); _j3++) {
+ if (_i3 !== 0 || _j3 !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX + _i3 * w, originY + _j3 * h, w, h);
+ }
+ }
+ }
+ }
if (needMask) {
ctx.globalCompositeOperation = 'destination-in';
@@ -6417,7 +6491,78 @@
type: 'img',
tagName: 'image',
props: props
- });
+ }); // 4个角repeat
+
+ if (xnl > 0 || ynt > 0) {
+ for (var _i4 = 0; _i4 <= Math.max(xnl, 1); _i4++) {
+ for (var _j4 = 0; _j4 <= Math.max(ynt, 1); _j4++) {
+ if (_i4 !== 0 || _j4 !== 0) {
+ var clone = util.clone(props);
+ clone[1][1] = originX - _i4 * w;
+ clone[2][1] = originY - _j4 * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: clone
+ });
+ }
+ }
+ }
+ }
+
+ if (xnr > 0 || ynt > 0) {
+ for (var _i5 = 0; _i5 <= Math.max(xnr, 1); _i5++) {
+ for (var _j5 = 0; _j5 <= Math.max(ynt, 1); _j5++) {
+ if (_i5 !== 0 || _j5 !== 0) {
+ var _clone = util.clone(props);
+
+ _clone[1][1] = originX + _i5 * w;
+ _clone[2][1] = originY - _j5 * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: _clone
+ });
+ }
+ }
+ }
+ }
+
+ if (xnl > 0 || ynb > 0) {
+ for (var _i6 = 0; _i6 <= Math.max(xnl, 1); _i6++) {
+ for (var _j6 = 0; _j6 <= Math.max(ynb, 1); _j6++) {
+ if (_i6 !== 0 || _j6 !== 0) {
+ var _clone2 = util.clone(props);
+
+ _clone2[1][1] = originX - _i6 * w;
+ _clone2[2][1] = originY + _j6 * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: _clone2
+ });
+ }
+ }
+ }
+ }
+
+ if (xnr > 0 || ynb > 0) {
+ for (var _i7 = 0; _i7 <= Math.max(xnr, 1); _i7++) {
+ for (var _j7 = 0; _j7 <= Math.max(ynb, 1); _j7++) {
+ if (_i7 !== 0 || _j7 !== 0) {
+ var _clone3 = util.clone(props);
+
+ _clone3[1][1] = originX + _i7 * w;
+ _clone3[2][1] = originY + _j7 * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: _clone3
+ });
+ }
+ }
+ }
+ }
}
computedStyle.backgroudSize = "".concat(w, " ").concat(h);
@@ -6592,8 +6737,8 @@
} // 再看普通流,从后往前遮挡顺序
- for (var _i = children.length - 1; _i >= 0; _i--) {
- var _child = children[_i];
+ for (var _i8 = children.length - 1; _i8 >= 0; _i8--) {
+ var _child = children[_i8];
if ((_child instanceof Xom || _child instanceof Component) && ['absolute', 'relative'].indexOf(_child.computedStyle.position) > -1) {
if (_child.__emitEvent(e, force)) {
@@ -6631,8 +6776,8 @@
if (!this.isGeom()) {
// 先响应absolute/relative高优先级,从后往前遮挡顺序
- for (var _i2 = children.length - 1; _i2 >= 0; _i2--) {
- var _child2 = children[_i2];
+ for (var _i9 = children.length - 1; _i9 >= 0; _i9--) {
+ var _child2 = children[_i9];
if ((_child2 instanceof Xom || _child2 instanceof Component) && ['absolute', 'relative'].indexOf(_child2.computedStyle.position) > -1) {
if (_child2.__emitEvent(e)) {
@@ -6642,8 +6787,8 @@
} // 再看普通流,从后往前遮挡顺序
- for (var _i3 = children.length - 1; _i3 >= 0; _i3--) {
- var _child3 = children[_i3];
+ for (var _i10 = children.length - 1; _i10 >= 0; _i10--) {
+ var _child3 = children[_i10];
if ((_child3 instanceof Xom || _child3 instanceof Component) && ['absolute', 'relative'].indexOf(_child3.computedStyle.position) === -1) {
if (_child3.__emitEvent(e)) {
diff --git a/index.js.map b/index.js.map
index d4b37aec1..d2dc31b9e 100644
--- a/index.js.map
+++ b/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["src/style/unit.js","src/node/Node.js","src/util/mode.js","src/util/util.js","src/math/matrix.js","src/style/transform.js","src/style/gradient.js","src/style/border.js","src/util/sort.js","src/style/font.js","src/style/css.js","src/node/LineBox.js","src/node/Text.js","src/style/match.js","src/style/image.js","src/util/Event.js","src/style/reset.js","src/animate/level.js","src/node/Component.js","src/util/inject.js","src/animate/frame.js","src/animate/easing.js","src/animate/repaint.js","src/animate/Animation.js","src/node/Xom.js","src/node/LineGroup.js","src/geom/Geom.js","src/node/Dom.js","src/node/Img.js","src/util/diff.js","src/node/Defs.js","src/node/Root.js","src/geom/Line.js","src/geom/Polyline.js","src/geom/Polygon.js","src/geom/Sector.js","src/geom/Rect.js","src/geom/Circle.js","src/geom/Ellipse.js","src/util/parse.js","src/math/tar.js","src/math/index.js","src/index.js"],"sourcesContent":["export default {\n AUTO: 0,\n PX: 1,\n PERCENT: 2,\n POSITION: 3,\n NUMBER: 4,\n INHERIT: 5,\n DEG: 6,\n SIZE: 7,\n};\n","import unit from \"../style/unit\";\n\nclass Node {\n constructor() {\n this.__x = 0;\n this.__y = 0;\n this.__ox = 0; // relative/margin:auto/text-align等造成的偏移量\n this.__oy = 0;\n this.__width = 0;\n this.__height = 0;\n this.__prev = null;\n this.__next = null;\n this.__ctx = null; // canvas的context\n this.__defs = null; // svg的defs\n this.__parent = null;\n this.__computedStyle = {}; // 计算为绝对值的样式\n this.__baseLine = 0;\n this.__virtualDom = {};\n this.__host = null;\n }\n\n __offsetX(diff, isLayout) {\n if(isLayout) {\n this.__x += diff;\n }\n else {\n this.__ox += diff;\n }\n }\n\n __offsetY(diff, isLayout) {\n if(isLayout) {\n this.__y += diff;\n }\n else {\n this.__oy += diff;\n }\n }\n\n __destroy() {\n this.__isDestroyed = true;\n this.__prev = this.__next = this.__ctx = this.__defs = this.__parent = this.__host = null;\n }\n\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get ox() {\n return this.__ox;\n }\n get oy() {\n return this.__oy;\n }\n get sx() {\n return this.x + this.ox;\n }\n get sy() {\n return this.y + this.oy;\n }\n get width() {\n return this.__width;\n }\n get height() {\n return this.__height;\n }\n get outerWidth() {\n return this.__width;\n }\n get outerHeight() {\n return this.__height;\n }\n get prev() {\n return this.__prev;\n }\n get next() {\n return this.__next;\n }\n get parent() {\n return this.__parent;\n }\n // canvas/svg根节点\n get root() {\n if(this.host) {\n return this.host.root;\n }\n if(this.parent) {\n return this.parent.root;\n }\n if(this.tagName && {\n canvas: true,\n svg: true,\n }.hasOwnProperty(this.tagName)) {\n return this;\n }\n }\n // component根节点\n get host() {\n if(this.__host) {\n return this.__host;\n }\n if(this.parent) {\n return this.parent.host;\n }\n }\n get style() {\n return this.__style;\n }\n get computedStyle() {\n return this.__computedStyle;\n }\n get ctx() {\n return this.__ctx;\n }\n get defs() {\n return this.__defs;\n }\n get baseLine() {\n return this.__baseLine;\n }\n get virtualDom() {\n return this.__virtualDom;\n }\n get isDestroyed() {\n return this.__isDestroyed;\n }\n}\n\nexport default Node;\n","export default {\n CANVAS: 0,\n SVG: 1,\n};\n","let toString = {}.toString;\nfunction isType(type) {\n return function(obj) {\n return toString.call(obj) === '[object ' + type + ']';\n }\n}\n\nlet isNumber = isType('Number');\n\nfunction joinSourceArray(arr) {\n let res = '';\n for(let i = 0, len = arr.length; i < len; i++) {\n let item = arr[i];\n if(Array.isArray(item)) {\n res += joinSourceArray(item);\n }\n else {\n res += stringify(item);\n }\n }\n return res;\n}\n\nfunction stringify(s) {\n if(isNil(s)) {\n return '';\n }\n return s.toString();\n}\n\nfunction encodeHtml(s, prop) {\n if(prop) {\n return s.replace(/\"/g, '"');\n }\n return s.replace(/&/g, '&').replace(/';\n vd.defs.forEach(item => {\n s += joinDef(item);\n });\n s += '';\n vd.bb.forEach(item => {\n s += joinVd(item);\n });\n s += '';\n vd.children.forEach(item => {\n if(item.isMask) {\n return;\n }\n s += joinVd(item);\n });\n s += '';\n return s;\n}\n\n// 普通元素\nfunction joinVd(vd) {\n if(vd.type === 'item' || vd.type === 'img') {\n let s = '';\n vd.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n if(vd.tagName === 'text') {\n return `${vd.content}`;\n }\n return `<${vd.tagName}${s}/>`;\n }\n else if(vd.type === 'text') {\n let s = ``;\n vd.children.forEach(item => {\n s += joinVd(item);\n });\n return `${s}`;\n }\n else if(vd.type === 'dom' || vd.type === 'geom') {\n let s = '';\n vd.bb.forEach(item => {\n s += joinVd(item);\n });\n s += ' {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n }\n s += '>';\n vd.children.forEach(item => {\n if(item.isMask) {\n return;\n }\n s += joinVd(item);\n });\n s += '';\n return `${s}`;\n }\n // display:none或visibility:hidden会没有type,产生一个空节点供diff运行\n return '';\n}\n\nfunction joinTransform(transform) {\n let s = '';\n transform.forEach(item => {\n s += `${item[0]}(${item[1]}) `;\n });\n return s;\n}\n\nfunction joinDef(def) {\n let s = `<${def.tagName} id=\"${def.uuid}\"`;\n if(def.tagName === 'mask') {\n s += ' maskUnits=\"userSpaceOnUse\"';\n }\n else {\n s += ' gradientUnits=\"userSpaceOnUse\"';\n }\n def.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n s += '>';\n def.children.forEach(item => {\n s += joinItem(item);\n });\n s += `${def.tagName}>`;\n return s;\n}\n\nfunction joinItem(item) {\n let s = `<${item.tagName}`;\n item.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n s += `>${item.tagName}>`;\n return s;\n}\n\nfunction d2r(n) {\n return n * Math.PI / 180;\n}\n\nfunction rgb2int(color) {\n let res = [];\n if(color.charAt(0) === '#') {\n color = color.slice(1);\n if(color.length === 3) {\n res.push(parseInt(color.charAt(0) + color.charAt(0), 16));\n res.push(parseInt(color.charAt(1) + color.charAt(1), 16));\n res.push(parseInt(color.charAt(2) + color.charAt(2), 16));\n }\n else if(color.length === 6) {\n res.push(parseInt(color.slice(0, 2), 16));\n res.push(parseInt(color.slice(2, 4), 16));\n res.push(parseInt(color.slice(4), 16));\n }\n res[3] = 1;\n }\n else if(color === 'transparent') {\n return [0, 0, 0, 0];\n }\n else {\n let c = color.match(/rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)/i);\n if(c) {\n res = [parseInt(c[1]), parseInt(c[2]), parseInt(c[3])];\n if(c[4]) {\n res[3] = parseFloat(c[4]);\n }\n else {\n res[3] = 1;\n }\n }\n }\n return res;\n}\n\nfunction arr2hash(arr) {\n let hash = {};\n for(let i = 0, len = arr.length; i < len; i++) {\n let item = arr[i];\n if(Array.isArray(item)) {\n hash[item[0]] = item[1];\n }\n else {\n for(let list = Object.keys(item), j = list.length - 1; j >= 0; j--) {\n let k = list[j];\n hash[k] = item[k];\n }\n }\n }\n return hash;\n}\n\nfunction hash2arr(hash) {\n if(Array.isArray(hash)) {\n return hash;\n }\n let arr = [];\n for(let list = Object.keys(hash), i = 0, len = list.length; i < len; i++) {\n let k = list[i];\n arr.push([k, hash[k]]);\n }\n return arr;\n}\n\nfunction clone(obj) {\n if(isNil(obj) || typeof obj !== 'object') {\n return obj;\n }\n if(util.isDate(obj)) {\n return new Date(obj);\n }\n let n = Array.isArray(obj) ? [] : {};\n for(let i in obj) {\n if(obj.hasOwnProperty(i)) {\n n[i] = clone(obj[i]);\n }\n }\n return n;\n}\n\nfunction mergeImageData(bottom, top) {\n let bd = bottom.data;\n let td = top.data;\n for(let i = 0, len = bd.length; i < len; i += 4) {\n let rb = bd[i];\n let gb = bd[i + 1];\n let bb = bd[i + 2];\n let ab = bd[i + 3];\n let rt = td[i];\n let gt = td[i + 1];\n let bt = td[i + 2];\n let at = td[i + 3];\n if(at === 0) {}\n else if(ab === 0 || at === 255) {\n bd[i] = rt;\n bd[i + 1] = gt;\n bd[i + 2] = bt;\n bd[i + 3] = at;\n }\n else {\n let alpha1 = ab / 255;\n let alpha2 = at / 255;\n let alpha3 = 1 - alpha1;\n let r = rb * alpha1 + rt * alpha2 * alpha3;\n let g = gb * alpha1 + gt * alpha2 * alpha3;\n let b = bb * alpha1 + bt * alpha2 * alpha3;\n let a = 1 - (1 - alpha1) * (1 - alpha2);\n if(a !== 0 && a !== 1) {\n r = r / a;\n g = g / a;\n b = b / a;\n }\n bd[i] = r;\n bd[i + 1] = g;\n bd[i + 2] = b;\n bd[i + 3] = a;\n }\n }\n return bottom;\n}\n\nlet util = {\n isObject: isType('Object'),\n isString: isType('String'),\n isFunction: isType('Function'),\n isNumber,\n isBoolean: isType('Boolean'),\n isDate: isType('Date'),\n stringify,\n joinSourceArray(arr) {\n return joinSourceArray(arr);\n },\n encodeHtml,\n isNil,\n joinVirtualDom,\n joinVd,\n joinTransform,\n joinDef,\n d2r,\n rgb2int,\n arr2hash,\n hash2arr,\n clone,\n mergeImageData,\n};\n\nexport default util;\n","// 生成4*4单位矩阵\nfunction identity() {\n const m = [];\n for (let i = 0; i < 16; i++) {\n m.push(i % 5 === 0 ? 1 : 0);\n }\n return m;\n}\n\n// 矩阵a*b\nfunction multiply(a, b) {\n let res = [];\n for(let i = 0; i < 4; i++) {\n const row = [a[i], a[i + 4], a[i + 8], a[i + 12]];\n for(let j = 0; j < 4; j++) {\n let k = j * 4;\n let col = [b[k], b[k + 1], b[k + 2], b[k + 3]];\n let n = row[0] * col[0] + row[1] * col[1] + row[2] * col[2] + row[3] * col[3];\n res[i + k] = n;\n }\n }\n return res;\n}\n\nfunction t43(m) {\n return [\n m[0], m[1],\n m[4], m[5],\n m[12], m[13]\n ];\n}\n\nfunction calPoint(point, m) {\n let [x, y] = point;\n return [\n m[0] * x + m[2] * y + m[4],\n m[1] * x + m[3] * y + m[5],\n ];\n}\n\nexport default {\n identity,\n multiply,\n t43,\n calPoint,\n};\n","import unit from '../style/unit';\nimport util from '../util/util';\nimport matrix from '../math/matrix';\n\nfunction calMatrix(transform, transformOrigin, x, y, ow, oh) {\n let [ox, oy] = transformOrigin;\n let list = normalize(transform, ox, oy, ow, oh);\n let m = matrix.identity();\n m[12] = ox;\n m[13] = oy;\n list.forEach(item => {\n let [k, v] = item;\n let t = matrix.identity();\n if(k === 'translateX') {\n t[12] = v;\n }\n else if(k === 'translateY') {\n t[13] = v;\n }\n else if(k === 'scaleX') {\n t[0] = v;\n }\n else if(k === 'scaleY') {\n t[5] = v;\n }\n else if(k === 'skewX') {\n v = util.d2r(v);\n t[4] = Math.tan(v);\n }\n else if(k === 'skewY') {\n v = util.d2r(v);\n t[1] = Math.tan(v);\n }\n else if(k === 'rotateZ') {\n v = util.d2r(v);\n let sin = Math.sin(v);\n let cos = Math.cos(v);\n t[0] = t[5] = cos;\n t[1] = sin;\n t[4] = -sin;\n }\n else if(k === 'matrix') {\n t[0] = v[0];\n t[1] = v[1];\n t[4] = v[2];\n t[5] = v[3];\n t[12] = v[4];\n t[13] = v[5];\n }\n m = matrix.multiply(m, t);\n });\n let t = matrix.identity();\n t[12] = -ox;\n t[13] = -oy;\n m = matrix.multiply(m, t);\n return matrix.t43(m);\n}\n\nfunction transformPoint(matrix, x, y) {\n let [a, b, c, d, e, f] = matrix;\n return [a * x + c * y + e, b * x + d * y + f];\n}\n\n// 向量积\nfunction vectorProduct(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction pointInQuadrilateral(x, y, x1, y1, x2, y2, x3, y3, x4, y4, matrix) {\n if(matrix) {\n [x1, y1] = transformPoint(matrix, x1, y1);\n [x2, y2] = transformPoint(matrix, x2, y2);\n [x3, y3] = transformPoint(matrix, x3, y3);\n [x4, y4] = transformPoint(matrix, x4, y4);\n if(vectorProduct(x2 - x1, y2 - y1, x - x1, y - y1) > 0\n && vectorProduct(x4 - x2, y4 - y2, x - x2, y - y2) > 0\n && vectorProduct(x3 - x4, y3 - y4, x - x4, y - y4) > 0\n && vectorProduct(x1 - x3, y1 - y3, x - x3, y - y3) > 0) {\n return true;\n }\n }\n else {\n return x >= x1 && y >= y1 && x <= x4 && y <= y4;\n }\n}\n\nfunction normalize(transform, ox, oy, w, h) {\n let res = [];\n transform.forEach(item => {\n let [k, v] = item;\n if(k === 'translateX') {\n if(v.unit === unit.PERCENT) {\n res.push([item[0], v.value * w * 0.01]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n }\n else if(k === 'translateY') {\n if(v.unit === unit.PERCENT) {\n res.push([item[0], v.value * h * 0.01]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n }\n else if(k === 'matrix') {\n res.push([item[0], item[1]]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n });\n return res;\n}\n\nfunction calOrigin(transformOrigin, x, y, w, h) {\n let tfo = [];\n transformOrigin.forEach((item, i) => {\n if(item.unit === unit.PX) {\n tfo.push(item.value + i ? y : x);\n }\n else if(item.unit === unit.PERCENT) {\n tfo.push((i ? y : x) + item.value * (i ? h : w) * 0.01);\n }\n });\n return tfo;\n}\n\nfunction convert(m3) {\n let m = matrix.identity();\n m[0] = m3[0];\n m[1] = m3[1];\n m[4] = m3[2];\n m[5] = m3[3];\n m[12] = m3[4];\n m[13] = m3[5];\n return m;\n}\n\nfunction mergeMatrix(a, b) {\n let m1 = convert(a);\n let m2 = convert(b);\n let m = matrix.multiply(m1, m2);\n return [\n m[0], m[1],\n m[4], m[5],\n m[12], m[13]\n ];\n}\n\nexport default {\n calMatrix,\n calOrigin,\n pointInQuadrilateral,\n mergeMatrix,\n};\n","import util from '../util/util';\nimport unit from './unit';\n\nfunction getLinearDeg(v) {\n let deg = 180;\n if(v === 'to top') {\n deg = 0;\n }\n else if(v === 'to top right') {\n deg = 45;\n }\n else if(v === 'to right') {\n deg = 90;\n }\n else if(v === 'to bottom right') {\n deg = 135;\n }\n else if(v === 'to bottom') {\n }\n else if(v === 'to bottom left') {\n deg = 225;\n }\n else if(v === 'to left') {\n deg = 270;\n }\n else if(v === 'to top left') {\n deg = 315;\n }\n // 数字角度,没有的话取默认角度\n else {\n let match = /(-?[\\d.]+)deg/.exec(v);\n if(match) {\n deg = parseFloat(match[1]);\n }\n }\n return deg % 360;\n}\n\n// 获取color-stop区间范围,去除无用值\nfunction getColorStop(v, length) {\n let list = [];\n // 先把已经声明距离的换算成[0,1]以数组形式存入,未声明的原样存入\n for(let i = 0, len = v.length; i < len; i++) {\n let item = v[i];\n // 考虑是否声明了位置\n if(item.length > 1) {\n let c = item[0];\n let p = item[1];\n if(p.unit === unit.PERCENT) {\n list.push([c, p.value * 0.01]);\n }\n else {\n list.push([c, p.value / length]);\n }\n }\n else {\n list.push(item[0]);\n }\n }\n // 首尾不声明默认为[0, 1]\n if(list.length > 1) {\n if(!Array.isArray(list[0])) {\n list[0] = [list[0], 0];\n }\n if(!Array.isArray(list[list.length - 1])) {\n list[list.length - 1] = [list[list.length - 1], 1];\n }\n }\n else if(!Array.isArray(list[0])) {\n list[0] = [list[0], 0];\n }\n // 不是数组形式的是未声明的,需区间计算,找到连续的未声明的,前后的区间平分\n let start = list[0][1];\n for(let i = 1, len = list.length; i < len - 1; i++) {\n let item = list[i];\n if(Array.isArray(item)) {\n start = item[1];\n }\n else {\n let j = i + 1;\n let end = list[list.length - 1][1];\n for(; j < len - 1; j++) {\n let item = list[j];\n if(Array.isArray(item)) {\n end = item[1];\n break;\n }\n }\n let num = j - i + 1;\n let per = (end - start) / num;\n for(let k = i; k < j; k++) {\n let item = list[k];\n list[k] = [item, start + per * (k + 1 - i)];\n }\n i = j;\n }\n }\n // 每个不能小于前面的,canvas/svg不能兼容这种情况,需处理\n for(let i = 1, len = list.length; i < len; i++) {\n let item = list[i];\n let prev = list[i - 1];\n if(item[1] < prev[1]) {\n item[1] = prev[1];\n }\n }\n // 0之前的和1之后的要过滤掉\n for(let i = 0, len = list.length; i < len - 1; i++) {\n let item = list[i];\n if(item[1] > 1) {\n list.splice(i + 1);\n break;\n }\n }\n for(let i = list.length - 1; i > 0; i--) {\n let item = list[i];\n if(item[1] < 0) {\n list.splice(0, i);\n break;\n }\n }\n // 可能存在超限情况,如在使用px单位超过len或= 0; i--) {\n let item = list[i];\n let p = item[1];\n if(p > 0) {\n allBefore = false;\n }\n if(p < 1) {\n allAfter = false;\n }\n }\n if(allBefore) {\n list.splice(0, len - 1);\n list[0][1] = 0;\n }\n else if(allAfter) {\n list.splice(1);\n list[0][1] = 0;\n }\n // 部分在区间之外需复杂计算\n else {\n let first = list[0];\n let last = list[len - 1];\n // 只要2个的情况下就是首尾都落在外面\n if(len === 2) {\n if(first[1] < 0 && last[1] > 1) {\n getCsLimit(first, last, length);\n }\n }\n // 只有1个在外面的情况较为容易\n else {\n if(first[1] < 0) {\n let next = list[1];\n let c1 = util.rgb2int(first[0]);\n let c2 = util.rgb2int(next[0]);\n let c = getCsStartLimit(c1, first[1], c2, next[1], length);\n first[0] = `rgba(${c[0]},${c[1]},${c[2]},${c[3]})`;\n first[1] = 0;\n }\n if(last[1] > 1) {\n let prev = list[len - 2];\n let c1 = util.rgb2int(prev[0]);\n let c2 = util.rgb2int(last[0]);\n let c = getCsEndLimit(c1, prev[1], c2, last[1], length);\n last[0] = `rgba(${c[0]},${c[1]},${c[2]},${c[3]})`;\n last[1] = 1;\n }\n }\n }\n }\n // 防止精度计算溢出[0,1]\n list.forEach(item => {\n if(item[1] < 0) {\n item[1] = 0;\n }\n else if(item[1] > 1) {\n item[1] = 1;\n }\n });\n return list;\n}\n\n// 根据角度和圆心获取渐变的4个点坐标\nfunction calLinearCoords(deg, length, cx, cy) {\n let x0;\n let y0;\n let x1;\n let y1;\n if(deg >= 270) {\n let r = util.d2r(360 - deg);\n x0 = cx + Math.sin(r) * length;\n y0 = cy + Math.cos(r) * length;\n x1 = cx - Math.sin(r) * length;\n y1 = cy - Math.cos(r) * length;\n }\n else if(deg >= 180) {\n let r = util.d2r(deg - 180);\n x0 = cx + Math.sin(r) * length;\n y0 = cy - Math.cos(r) * length;\n x1 = cx - Math.sin(r) * length;\n y1 = cy + Math.cos(r) * length;\n }\n else if(deg >= 90) {\n let r = util.d2r(180 - deg);\n x0 = cx - Math.sin(r) * length;\n y0 = cy - Math.cos(r) * length;\n x1 = cx + Math.sin(r) * length;\n y1 = cy + Math.cos(r) * length;\n }\n else {\n let r = util.d2r(deg);\n x0 = cx - Math.sin(r) * length;\n y0 = cy + Math.cos(r) * length;\n x1 = cx + Math.sin(r) * length;\n y1 = cy - Math.cos(r) * length;\n }\n return [x0, y0, x1, y1];\n}\n\n// 获取径向渐变半径\nfunction calRadialRadius(d, iw, ih, cx, cy, x1, y1, x2, y2) {\n let size = 'farthest-corner';\n let r; // 半径\n if(/circle|ellipse|at|closest|farthest/i.test(d)) {\n let i = d.indexOf('at');\n let at;\n let s;\n if(i > -1) {\n at = d.slice(i + 2);\n s = d.slice(0, i - 1);\n }\n s = /(closest|farthest)-(side|corner)/.exec(s);\n if(s) {\n size = s[0];\n }\n // 指定宽高后size失效,置null标识\n else {\n s = /\\s+(-?[\\d.]+(?:px|%))\\s*(-?[\\d.]+(?:px|%))?/.exec(s);\n if(s) {\n size = null;\n if(s[1].indexOf('px') > -1) {\n r = parseFloat(s[1]) * 0.5;\n }\n else {\n r = parseFloat(s[1]) * iw * 0.005;\n }\n }\n }\n if(at) {\n s = /\\s+(-?[\\d.]+(?:px|%))\\s*(-?[\\d.]+(?:px|%))?/.exec(at);\n if(s) {\n if(s[1].indexOf('px') > -1) {\n cx = x1 + parseFloat(s[1]);\n }\n else {\n cx = x1 + parseFloat(s[1]) * iw * 0.01;\n }\n // y可以省略,此时等同于x\n let by = s[2] || s[1];\n if(by.indexOf('px') > -1) {\n cy = y1 + parseFloat(by);\n }\n else {\n cy = y1 + parseFloat(by) * ih * 0.01;\n }\n }\n }\n }\n if(size) {\n if(size === 'closest-side') {\n // 在边外特殊情况只有end颜色填充\n if(cx <= x1 || cx >= x2 || cy <= y1 || cy >= y2) {\n r = 0;\n }\n else {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = cx - x1;\n } else {\n xl = x2 - cx;\n }\n if(cy < y1 + ih * 0.5) {\n yl = cy - y1;\n } else {\n yl = y2 - cy;\n }\n r = Math.min(xl, yl);\n }\n }\n else if(size === 'closest-corner') {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = cx - x1;\n }\n else {\n xl = x2 - cx;\n }\n if(cy < y1 + ih * 0.5) {\n yl = cy - y1;\n }\n else {\n yl = y2 - cy;\n }\n r = Math.sqrt(Math.pow(xl, 2) + Math.pow(yl, 2));\n }\n else if(size === 'farthest-side') {\n if(cx <= x1) {\n r = x1 - cx + iw;\n }\n else if(cx >= x2) {\n r = cx - x2 + iw;\n }\n else if(cy <= y1) {\n r = y1 - cy + ih;\n }\n else if(cx >= y2) {\n r = cy - y2 + ih;\n }\n else {\n let xl = Math.max(x2 - cx, cx - x1);\n let yl = Math.max(y2 - cy, cy - y1);\n r = Math.max(xl, yl);\n }\n }\n // 默认farthest-corner\n else {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = x2 - cx;\n }\n else {\n xl = cx - x1;\n }\n if(cy < y1 + ih * 0.5) {\n yl = y2 - cy;\n }\n else {\n yl = cy - y1;\n }\n r = Math.sqrt(Math.pow(xl, 2) + Math.pow(yl, 2));\n }\n }\n return [r, cx, cy];\n}\n\n// 当linear-gradient的值超过[0,1]区间限制时,计算其对应区间1的值\nfunction getCsStartLimit(c1, p1, c2, p2, length) {\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = Math.abs(p1) * length;\n let l2 = p2 * length;\n let p = l1 / (l2 + l1);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n return [r, g, b, a];\n}\n\nfunction getCsEndLimit(c1, p1, c2, p2, length) {\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = p1 * length;\n let l2 = p2 * length;\n let p = (length - l1) / (l2 - l1);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n return [r, g, b, a];\n}\n\nfunction getCsLimit(first, last, length) {\n let c1 = util.rgb2int(first[0]);\n let c2 = util.rgb2int(last[0]);\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = Math.abs(first[1]) * length;\n let l2 = last[1] * length;\n let p = l1 / (l1 + l2);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n first[0] = `rgba(${r},${g},${b},${a})`;\n first[1] = 0;\n p = (length + l1) / (l1 + l2);\n r = Math.floor(r1 + (r2 - r1) * p);\n g = Math.floor(g1 + (g2 - g1) * p);\n b = Math.floor(b1 + (b2 - b1) * p);\n a = a1 + (a2 - a1) * p;\n last[0] = `rgba(${r},${g},${b},${a})`;\n last[1] = 1;\n}\n\nlet reg = /\\b(\\w+)-gradient\\((.+)\\)/;\n\nfunction parseGradient(s) {\n let gradient = reg.exec(s);\n if(gradient) {\n let o = {\n k: gradient[1],\n };\n let deg = /(-?[\\d.]+deg)|(to\\s+[toprighbml]+)|circle|ellipse|at|closest|farthest|((closest|farthest)-(side|corner))/.exec(gradient[2]);\n let v = gradient[2].match(/((#[0-9a-f]{3,6})|(rgba?\\(.+?\\)))(\\s+-?[\\d.]+(px|%))?/ig);\n o.v = v.map(item => {\n let arr = item.split(/\\s+/);\n if(arr[1]) {\n if(/%$/.test(arr[1])) {\n arr[1] = {\n value: parseFloat(arr[1]),\n unit: unit.PERCENT,\n str: arr[1],\n };\n }\n else {\n arr[1] = {\n value: parseFloat(arr[1]),\n unit: unit.PX,\n str: arr[1],\n };\n }\n }\n return arr;\n });\n if(deg) {\n let i = gradient[2].indexOf(',');\n if(o.k === 'linear') {\n o.d = getLinearDeg(gradient[2].slice(0, i));\n }\n else {\n o.d = gradient[2].slice(0, i);\n }\n }\n else {\n if(o.k === 'linear') {\n o.d = 180;\n }\n else {\n o.d = 'farthest-corner';\n }\n }\n return o;\n }\n}\n\nfunction getLinear(v, d, cx, cy, w, h) {\n let theta = util.d2r(d);\n let length = Math.abs(w * Math.sin(theta)) + Math.abs(h * Math.cos(theta));\n let [x1, y1, x2, y2] = calLinearCoords(d, length * 0.5, cx, cy);\n let stop = getColorStop(v, length);\n return {\n x1,\n y1,\n x2,\n y2,\n stop,\n };\n}\n\nfunction getRadial(v, d, cx, cy, x1, y1, x2, y2) {\n let w = x2 - x1;\n let h = y2 - y1;\n let [r, cx2, cy2] = calRadialRadius(d, w, h, cx, cy, x1, y1, x2, y2);\n let stop = getColorStop(v, r * 2);\n // 超限情况等同于只显示end的bgc\n if(r <= 0) {\n let end = stop[stop.length - 1];\n end[1] = 0;\n stop = [end];\n cx2 = x1;\n cy2 = y1;\n // 肯定大于最长直径\n r = w + h;\n }\n return {\n cx: cx2,\n cy: cy2,\n r,\n stop,\n };\n}\n\nexport default {\n reg,\n parseGradient,\n getLinear,\n getRadial,\n};\n","/* 获取合适的虚线实体空白宽度ps/pd和数量n\n * 总长total,start边长bs,end边长be,内容长w,\n * 实体长范围[smin,smax],空白长范围[dmin,dmax]\n */\nfunction calFitDashed(total, bs, be, w, smin, smax, dmin, dmax) {\n let n = 1;\n let ps = 1;\n let pd = 1;\n // 从最大实体空白长开始尝试\n outer:\n for(let i = smax; i >= smin; i--) {\n for(let j = dmax; j >= dmin; j--) {\n // 已知实体空白长度,n实体和n-1空白组成total,计算获取n数量\n let per = i + j;\n let num = Math.floor((total + j) / per);\n let k = j;\n // 可能除不尽,此时扩展空白长\n if(num * per < j + total) {\n let free = total - num * i;\n k = free / (num - 1);\n if(k > dmax) {\n continue;\n }\n }\n per = i + k;\n // bs比实体大才有效,因为小的话必定和第一个实体完整相连\n if(bs > 1 && bs > i) {\n let mo = bs % per;\n if(mo > i) {\n continue;\n }\n if(be > 1) {\n let mo = (bs + w) % per;\n if(mo > i) {\n continue;\n }\n }\n }\n if(be > 1) {\n let mo = (bs + w) % per;\n if(mo > i) {\n continue;\n }\n }\n if(num > 0) {\n n = num;\n ps = i;\n pd = k;\n }\n break outer;\n }\n }\n return {\n n,\n ps,\n pd,\n };\n}\n\n// dashed时n个实线和n-1虚线默认以3:1宽度组成,dotted则是n和n以1:1组成\nfunction calDashed(style, m1, m2, m3, m4, bw) {\n let total = m4 - m1;\n let w = m3 - m2;\n let bs = m2 - m1;\n let be = m4 - m3;\n if(style === 'dotted') {\n return calFitDashed(total, bs, be, w, bw, bw, Math.max(1, bw * 0.25), bw * 2);\n }\n else {\n let { n, ps, pd } = calFitDashed(total, bs, be, w, bw, bw * 3, Math.max(1, bw * 0.25), bw * 2);\n if(n === 1) {\n return calFitDashed(total, bs, be, w, bw, bw, Math.max(1, bw * 0.25), bw * 2);\n }\n // 降级为dotted\n return { n, ps, pd };\n }\n}\n\n// 获取边框分割为几块的坐标,虚线分割为若干四边形和三边型\n// direction为上右下左0123\nfunction calPoints(borderWidth, borderStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, direction) {\n let points = [];\n if(['dashed', 'dotted'].indexOf(borderStyle) > -1) {\n // 寻找一个合适的虚线线段长度和之间空白边距长度\n let { n, ps, pd } = (direction === 0 || direction === 2)\n ? calDashed(borderStyle, x1, x2, x3, x4, borderWidth)\n : calDashed(borderStyle, y1, y2, y3, y4, borderWidth);\n if(n > 1) {\n for(let i = 0; i < n; i++) {\n // 最后一个可能没有到底,延长之\n let isLast = i === n - 1;\n let main1;\n let main2;\n let cross1;\n let cross2;\n if(direction === 0 || direction === 2) {\n main1 = i ? (x1 + ps * i + pd * i) : x1;\n }\n else {\n main1 = i ? (y1 + ps * i + pd * i) : y1;\n }\n main2 = main1 + ps;\n if(direction === 0) {\n // 整个和borderLeft重叠\n if(main2 < x2) {\n if(isLast) {\n points.push([x1, y1, x4, y1, x3, y2, x2, y2]);\n }\n else {\n cross1 = y1 + (main1 - x1) * Math.tan(deg1);\n cross2 = y1 + (main2 - x1) * Math.tan(deg1);\n points.push([main1, y1, main2, y1, main2, cross2, main1, cross1]);\n }\n }\n // 整个和borderRight重叠\n else if(main1 > x3) {\n cross1 = y1 + (x4 - main1) * Math.tan(deg2);\n cross2 = y1 + (x4 - main2) * Math.tan(deg2);\n if(isLast) {\n points.push([main1, y1, x4, y1, main1, cross1]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross2, main1, cross1]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n cross1 = y1 + (main1 - x1) * Math.tan(deg1);\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, x2, y2, main1, cross1]);\n }\n else {\n // 下部分和borderRight重叠\n if(main2 > x3) {\n points.push([main1, y1, main2, y1, x3, y2, x2, y2, main1, cross1]);\n }\n // 下部独立\n else {\n points.push([main1, y1, main2, y1, main2, y2, x2, y2, main1, cross1]);\n }\n }\n }\n // 下部分和borderRight重叠\n else if(main2 > x3) {\n cross1 = y1 + (x4 - main2) * Math.tan(deg2);\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, x2, y2, main1, cross1]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross1, x3, y2, x2, y2, main1, cross1]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, main1, y2]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross1, x3, y2, main1, y2]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, main1, y2]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, y2, main1, y2]);\n }\n }\n }\n }\n else if(direction === 1) {\n // 整个和borderTop重叠\n if(main2 < y2) {\n if(isLast) {\n points.push([x3, y2, x4, y1, x4, y4, x3, y3]);\n }\n else {\n cross1 = x4 - (main2 - y1) * Math.tan(deg1);\n cross2 = x4 - (main1 - y1) * Math.tan(deg1);\n points.push([cross1, main2, cross2, main1, x4, main1, x4, main2]);\n }\n }\n // 整个和borderBottom重叠\n else if(main1 > y3) {\n cross1 = x3 + (main1 - y3) * Math.tan(deg2);\n cross2 = x3 + (main2 - y3) * Math.tan(deg2);\n if(isLast) {\n points.push([cross1, main1, x4, main1, x4, y4]);\n }\n else {\n points.push([cross1, main1, x4, main1, x4, main2, cross2, main2]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderTop重叠\n if(main1 < y2) {\n cross1 = x3 + (y2 - main1) * Math.tan(deg1);\n if(isLast) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, y4, x3, y4]);\n } else {\n // 下部分和borderBottom重叠\n if(main2 > y3) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n // 下部独立\n else {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, x3, main2]);\n }\n }\n }\n // 下部分和borderBottom重叠\n else if(main2 > y3) {\n cross1 = x3 + (main2 - y3) * Math.tan(deg2);\n // 上部分和borderTop重叠\n if(main1 < y2) {\n if(isLast) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([x3, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([x3, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, main1, x4, main1, x4, main2, x3, main2]);\n }\n }\n }\n }\n else if(direction === 2) {\n // 整个和borderLeft重叠\n if(main2 < x2) {\n if(isLast) {\n points.push([x1, y4, x2, y3, x3, y3, x4, y4]);\n }\n else {\n cross1 = y4 - (main1 - x1) * Math.tan(deg1);\n cross2 = y4 - (main2 - x1) * Math.tan(deg1);\n points.push([main1, cross1, main2, cross2, main2, y4, main1, y4]);\n }\n }\n // 整个和borderRight重叠\n else if(main1 > x3) {\n cross1 = y4 - (main1 - x1) * Math.tan(deg2);\n cross2 = y4 - (main2 - x1) * Math.tan(deg2);\n if(isLast) {\n points.push([main1, cross1, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, cross1, main2, cross2, main2, y4, main1, y4]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n cross1 = y3 + (main1 - x1) * Math.tan(deg1);\n if(isLast) {\n points.push([main1, cross1, x2, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n // 下部分和borderRight重叠\n if(main2 > x3) {\n points.push([main1, cross1, x2, y3, x3, y3, main2, y4, main1, y4]);\n }\n // 下部独立\n else {\n points.push([main1, cross1, x2, y3, main2, y3, main2, y4, main1, y4]);\n }\n }\n }\n // 下部分和borderRight重叠\n else if(main2 > x3) {\n cross1 = y4 - (x4 - main2) * Math.tan(deg2);\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n if(isLast) {\n points.push([main1, cross1, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, cross1, x3, y3, main2, cross1, main2, y4, main1, y4]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([main1, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, y3, x3, y3, main2, cross1, main2, y4, main1, y4]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([main1, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, y3, main2, y3, main2, y4, main1, y4]);\n }\n }\n }\n }\n else if(direction === 3) {\n // 整个和borderTop重叠\n if(main2 < y2) {\n if(isLast) {\n points.push([x1, y1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n cross1 = x1 + (main1 - y1) * Math.tan(deg1);\n cross2 = x1 + (main2 - y1) * Math.tan(deg1);\n points.push([x1, main1, cross1, main1, cross2, main2, x1, main2]);\n }\n }\n // 整个和borderBottom重叠\n else if(main1 > y3) {\n cross1 = x1 + (y4 - main1) * Math.tan(deg2);\n cross2 = x1 + (y4 - main2) * Math.tan(deg2);\n if(isLast) {\n points.push([x1, main1, cross1, main1, x1, y4]);\n }\n else {\n points.push([x1, main1, cross1, main1, cross2, main2, x1, main2]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderTop重叠\n if(main1 < y2) {\n cross1 = x1 + (main1 - y1) * Math.tan(deg1);\n if(isLast) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n // 下部分和borderBottom重叠\n if(main2 > y3) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, cross1, main2, x1, main2]);\n }\n // 下部独立\n else {\n points.push([x1, main1, cross1, main1, x2, y2, x2, main2, x1, main2]);\n }\n }\n }\n // 下部分和borderBottom重叠\n else if(main2 > y3) {\n cross1 = x1 + (y4 - main2) * Math.tan(deg2);\n // 上部分和borderTop重叠\n if(main1 < y2) {\n if(isLast) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, cross1, main2, x1, main2]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([x1, main1, x2, main1, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, x2, main1, x2, y3, cross1, main2, x1, main2]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([x1, main1, x2, main1, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, x2, main1, x2, main2, x1, main2]);\n }\n }\n }\n }\n }\n return points;\n }\n }\n // 兜底返回实线\n if(direction === 0) {\n points.push([x1, y1, x4, y1, x3, y2, x2, y2]);\n }\n else if(direction === 1){\n points.push([x3, y2, x4, y1, x4, y4, x3, y3]);\n }\n else if(direction === 2){\n points.push([x1, y4, x2, y3, x3, y3, x4, y4]);\n }\n else if(direction === 3){\n points.push([x1, y1, x2, y2, x2, y3, x1, y4]);\n }\n return points;\n}\n\nexport default {\n calDashed,\n calPoints,\n};\n","function quickSort(arr, begin, end, compare) {\n if(begin >= end) {\n return;\n }\n let i = begin, j = end, p = i, v = arr[p], seq = true;\n while(i < j) {\n if(seq) {\n for(; i < j; j--) {\n if(compare.call(arr, v, arr[j])) {\n swap(arr, p, j);\n p = j;\n seq = !seq;\n i++;\n break;\n }\n }\n }\n else {\n for(; i < j; i++) {\n if(compare.call(arr, arr[i], v)) {\n swap(arr, p, i);\n p = i;\n seq = !seq;\n j--;\n break;\n }\n }\n }\n }\n quickSort(arr, begin, p - 1, compare);\n quickSort(arr, p + 1, end, compare);\n}\nfunction swap(arr, a, b) {\n let temp = arr[a];\n arr[a] = arr[b];\n arr[b] = temp;\n}\n\nexport default function(arr, compare) {\n if(!Array.isArray(arr) || arr.length < 2) {\n return arr;\n }\n compare = compare || function() {};\n quickSort(arr, 0, arr.length - 1, compare);\n return arr;\n};\n","'use strict';\n\nexport default {\n arial: {\n lhr: 1.14990234375, // 默认line-height ratio,(67+1854+434)/2048\n car: 1.1171875, // content-area ratio,(1854+434)/2048\n blr: 0.9052734375, // base-line ratio,1854/2048\n mdr: 0.64599609375, // middle ratio,(1854-1062/2)/2048\n lgr: 0.03271484375, // line-gap ratio,67/2048\n },\n};\n","import unit from './unit';\nimport font from './font';\nimport gradient from './gradient';\nimport util from '../util/util';\n\nfunction parserOneBorder(style, direction) {\n let key = `border${direction}`;\n if(!style[key]) {\n return;\n }\n let w = /\\b[\\d.]+px\\b/i.exec(style[key]);\n if(w) {\n style[key + 'Width'] = w[0];\n }\n let s = /\\b(solid|dashed|dotted)\\b/i.exec(style[key]);\n if(s) {\n style[key + 'Style'] = s[1];\n }\n let c = /#[0-9a-f]{3,6}/i.exec(style[key]);\n if(c && [4, 7].indexOf(c[0].length) > -1) {\n style[key + 'Color'] = c[0];\n }\n else if(/\\btransparent\\b/i.test(style[key])) {\n style[key + 'Color'] = 'transparent';\n }\n else {\n c = /rgba?\\(.+\\)/i.exec(style[key]);\n if(c) {\n style[key + 'Color'] = c[0];\n }\n }\n}\n\nfunction calUnit(obj, k, v) {\n if(v === 'auto') {\n obj[k] = {\n unit: unit.AUTO,\n };\n }\n else if(v === 'inherit') {\n obj[k] = {\n unit: unit.INHERIT,\n };\n }\n else if(/px$/.test(v)) {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PX,\n };\n }\n else if(/%$/.test(v)) {\n // border不支持百分比\n if(k.toString().indexOf('border') === 0) {\n obj[k] = {\n value: 0,\n unit: unit.PX,\n };\n }\n else {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PERCENT,\n };\n }\n }\n else {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PX,\n };\n }\n return obj;\n}\n\nfunction normalize(style, reset) {\n // 默认reset\n if(reset) {\n reset.forEach(item => {\n if(!style.hasOwnProperty(item.k)) {\n style[item.k] = item.v;\n }\n });\n }\n let temp = style.background;\n // 处理渐变背景色\n if(temp) {\n // gradient/image和颜色可以并存\n let gd = gradient.reg.exec(temp);\n if(gd) {\n style.backgroundImage = gd[0];\n temp = temp.replace(gd[0], '');\n }\n let image = /url\\((['\"]?)(.*?)\\1\\)/.exec(temp);\n if(image) {\n style.backgroundImage = image[2];\n temp = temp.replace(image[0], '');\n }\n let repeat = /(no-)?repeat(-[xy])?/i.exec(temp);\n if(repeat) {\n style.backgroundRepeat = repeat[0].toLowerCase();\n }\n let position = /\\s+(((-?[\\d.]+(px|%)?)|(left|top|right|bottom|center))\\s*){1,2}/ig.exec(temp);\n if(position) {\n style.backgroundPosition = position[0].trim();\n }\n let bgc = /^\\s*(#[0-9a-f]{3,6})|(rgba?\\(.+?\\))/i.exec(temp);\n if(bgc) {\n style.backgroundColor = bgc[0];\n }\n }\n // 背景图\n temp = style.backgroundImage;\n if(temp) {\n // 区分是渐变色还是图\n if(gradient.reg.test(temp)) {\n style.backgroundImage = gradient.parseGradient(temp);\n }\n }\n temp = style.backgroundColor;\n if(temp) {\n // 先赋值默认透明,后续操作有合法值覆盖\n style.backgroundColor = 'transparent';\n let bgc = /^#[0-9a-f]{3,6}/i.exec(temp);\n if(bgc && [4, 7].indexOf(bgc[0].length) > -1) {\n style.backgroundColor = bgc[0];\n }\n else {\n bgc = /rgba?\\(.+\\)/i.exec(temp);\n if(bgc) {\n style.backgroundColor = bgc[0];\n }\n }\n }\n // 背景位置\n temp = style.backgroundPosition;\n if(temp) {\n temp = temp.split(/\\s+/);\n if(temp.length === 1) {\n temp[1] = '50%';\n }\n let bp = [];\n for(let i = 0; i < 2; i++) {\n let item = temp[i];\n if(/%$/.test(item)) {\n bp.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n bp.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else {\n bp.push({\n value: item,\n unit: unit.POSITION,\n });\n }\n }\n style.backgroundPosition = bp;\n }\n if(temp) {}\n // 背景尺寸\n temp = style.backgroundSize;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(contain|cover|auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[1] = match[0];\n }\n let bc = [];\n for(let i = 0; i < 2; i++) {\n let item = match[i];\n if(/%$/.test(item)) {\n bc.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n bc.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else if(item === 'contain' || item === 'cover') {\n bc.push({\n value: item,\n unit: unit.SIZE,\n });\n }\n else {\n bc.push({\n unit: unit.AUTO,\n });\n }\n }\n style.backgroundSize = bc;\n }\n else {\n style.backgroundSize = [{\n unit: unit.AUTO,\n }, {\n unit: unit.AUTO,\n }];\n }\n }\n // 处理缩写\n temp = style.flex;\n if(temp) {\n if(temp === 'none') {\n style.flexGrow = 0;\n style.flexShrink = 0;\n style.flexBasis = 'auto';\n }\n else if(temp === 'auto') {\n style.flexGrow = 1;\n style.flexShrink = 1;\n style.flexBasis = 'auto';\n }\n else if(/^[\\d.]+$/.test(temp)) {\n style.flexGrow = parseFloat(temp);\n style.flexShrink = 1;\n style.flexBasis = 0;\n }\n else if(/^[\\d.]+px$/.test(temp)) {}\n else if(/^[\\d.]+%$/.test(temp)) {}\n else {\n style.flexGrow = 0;\n style.flexShrink = 1;\n style.flexBasis = 'auto';\n }\n }\n temp = style.border;\n if(temp) {\n style.borderTop = style.borderRight = style.borderBottom = style.borderLeft = temp;\n }\n temp = style.margin;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[3] = match[2] = match[1] = match[0];\n }\n else if(match.length === 2) {\n match[2] = match[0];\n match[3] = match[1];\n }\n else if(match.length === 3) {\n match[3] = match[1];\n }\n style.marginTop = match[0];\n style.marginRight = match[1];\n style.marginBottom = match[2];\n style.marginLeft = match[3];\n }\n }\n temp = style.padding;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[3] = match[2] = match[1] = match[0];\n }\n else if(match.length === 2) {\n match[2] = match[0];\n match[3] = match[1];\n }\n else if(match.length === 3) {\n match[3] = match[1];\n }\n style.paddingTop = match[0];\n style.paddingRight = match[1];\n style.paddingBottom = match[2];\n style.paddingLeft = match[3];\n }\n }\n temp = style.transform;\n if(temp) {\n let match = temp.toString().match(/\\w+\\(.+?\\)/g);\n if(match) {\n let transform = style.transform = [];\n match.forEach(item => {\n let i = item.indexOf('(');\n let k = item.slice(0, i);\n let v = item.slice(i + 1, item.length - 1);\n if(k === 'matrix') {\n let arr = v.split(/\\s*,\\s*/);\n arr = arr.map(item => parseFloat(item));\n if(arr.length > 6) {\n arr = arr.slice(0, 6);\n }\n if(arr.length === 6) {\n transform.push(['matrix', arr]);\n }\n }\n else if(k === 'translateX') {\n let arr = ['translateX', v];\n transform.push(calUnit(arr, 1, v));\n }\n else if(k === 'translateY') {\n let arr = ['translateY', v];\n transform.push(calUnit(arr, 1, v));\n }\n else if(k === 'translate') {\n let arr = v.split(/\\s*,\\s*/);\n let arr1 = ['translateX', arr[0]];\n let arr2 = ['translateY', arr[1] || arr[0]];\n transform.push(calUnit(arr1, 1, arr[0]));\n transform.push(calUnit(arr2, 1, arr[1] || arr[0]));\n }\n else if(k === 'scaleX') {\n transform.push(['scaleX', {\n value: parseFloat(v) || 0,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'scaleY') {\n transform.push(['scaleY', {\n value: parseFloat(v) || 0,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'scale') {\n let arr = v.split(/\\s*,\\s*/);\n let x = parseFloat(arr[0]) || 0;\n let y = parseFloat(arr[arr.length - 1]) || 0;\n transform.push(['scaleX', {\n value: x,\n unit: unit.NUMBER,\n }]);\n transform.push(['scaleY', {\n value: y,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'rotateZ' || k === 'rotate') {\n transform.push(['rotateZ', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skewX') {\n transform.push(['skewX', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skewY') {\n transform.push(['skewY', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skew') {\n let arr = v.split(/\\s*,\\s*/);\n let x = parseFloat(arr[0]) || 0;\n let y = parseFloat(arr[arr.length - 1]) || 0;\n transform.push(['skewX', {\n value: x,\n unit: unit.DEG,\n }]);\n transform.push(['skewY', {\n value: y,\n unit: unit.DEG,\n }]);\n }\n });\n }\n }\n temp = style.transformOrigin;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(left|top|right|bottom|center)/ig);\n if(match) {\n if(match.length === 1) {\n match[1] = match[0];\n }\n let tfo = [];\n for(let i = 0; i < 2; i++) {\n let item = match[i];\n if(/%$/.test(item)) {\n tfo.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n tfo.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else {\n tfo.push({\n value: {\n top: 0,\n left: 0,\n center: 50,\n right: 100,\n bottom: 100,\n }[item],\n unit: unit.PERCENT,\n });\n if(tfo[i].value === undefined) {\n tfo[i].value = 50;\n }\n }\n }\n style.transformOrigin = tfo;\n }\n else {\n style.transformOrigin = [{\n value: 50,\n unit: unit.PERCENT,\n }, {\n value: 50,\n unit: unit.PERCENT,\n }];\n }\n }\n temp = style.opacity;\n if(temp) {\n temp = parseFloat(temp);\n if(!isNaN(temp)) {\n temp = Math.max(temp, 0);\n temp = Math.min(temp, 1);\n style.opacity = temp;\n }\n }\n parserOneBorder(style, 'Top');\n parserOneBorder(style, 'Right');\n parserOneBorder(style, 'Bottom');\n parserOneBorder(style, 'Left');\n // 转化不同单位值为对象标准化\n [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'width',\n 'height',\n 'flexBasis',\n 'fontSize',\n 'strokeWidth'\n ].forEach(k => {\n let v = style[k];\n if(!style.hasOwnProperty(k)) {\n return;\n }\n calUnit(style, k, v);\n });\n temp = style.fontWeight;\n if(temp || temp === 0) {\n if(temp === 'bold') {\n style.fontWeight = 700;\n }\n else if(temp === 'normal') {\n style.fontWeight = 400;\n }\n else if(temp === 'lighter') {\n style.fontWeight = 200;\n }\n else if(temp !== 'inherit') {\n style.fontWeight = parseInt(temp) || 400;\n }\n }\n temp = style.lineHeight;\n if(temp || temp === 0) {\n if(temp === 'inherit') {\n style.lineHeight = {\n unit: unit.INHERIT,\n };\n }\n if(temp === 'normal') {\n style.lineHeight = {\n unit: unit.AUTO,\n };\n }\n else if(/px$/.test(temp)) {\n style.lineHeight = {\n value: parseFloat(temp),\n unit: unit.PX,\n };\n }\n else {\n let n = parseFloat(temp) || 'normal';\n // 非法数字\n if(n === 'normal') {\n style.lineHeight = {\n unit: unit.AUTO,\n };\n }\n else {\n style.lineHeight = {\n value: n,\n unit: unit.NUMBER,\n };\n }\n }\n }\n temp = style.strokeDasharray;\n if(temp) {\n let match = temp.toString().match(/[\\d.]+/g);\n if(match) {\n style.strokeDasharray = match.join(', ');\n }\n else {\n style.strokeDasharray = '';\n }\n }\n // fill和stroke为渐变时特殊处理\n temp = style.fill;\n if(temp && temp.indexOf('-gradient(') > 0) {\n style.fill = gradient.parseGradient(temp);\n }\n temp = style.stroke;\n if(temp && temp.indexOf('-gradient(') > 0) {\n style.stroke = gradient.parseGradient(temp);\n }\n // 删除缩写避免干扰动画计算\n delete style.background;\n delete style.flex;\n delete style.border;\n delete style.margin;\n delete style.padding;\n return style;\n}\n\nfunction computedFontSize(computedStyle, fontSize, parentComputedStyle, isRoot) {\n if(fontSize.unit === unit.INHERIT) {\n computedStyle.fontSize = isRoot ? 16 : parentComputedStyle.fontSize;\n }\n else if(fontSize.unit === unit.PX) {\n computedStyle.fontSize = fontSize.value;\n }\n else if(fontSize.unit === unit.PERCENT) {\n computedStyle.fontSize = isRoot ? 16 * fontSize.value : parentComputedStyle.fontSize * fontSize.value;\n }\n else {\n computedStyle.fontSize = 16;\n }\n}\n\nfunction compute(xom, isRoot) {\n let { currentStyle } = xom;\n let { lineHeight, textAlign } = currentStyle;\n let computedStyle = xom.__computedStyle = util.clone(currentStyle);\n let parent = xom.parent;\n let parentComputedStyle = parent && parent.computedStyle;\n preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot);\n calLineHeight(xom, lineHeight, computedStyle);\n if(textAlign === 'inherit') {\n computedStyle.textAlign = isRoot ? 'left' : parentComputedStyle.textAlign;\n }\n}\n\nfunction repaint(xom, isRoot) {\n let { currentStyle, computedStyle } = xom;\n let parent = xom.parent;\n let parentComputedStyle = parent && parent.computedStyle;\n preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot);\n}\n\nfunction preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot) {\n let { fontStyle, fontWeight, fontSize, fontFamily, color } = currentStyle;\n // 处理继承的属性\n if(fontStyle === 'inherit') {\n computedStyle.fontStyle = isRoot ? 'normal' : parentComputedStyle.fontStyle;\n }\n else {\n computedStyle.fontStyle = fontStyle;\n }\n if(fontWeight === 'inherit') {\n computedStyle.fontWeight = isRoot ? 400 : parentComputedStyle.fontWeight;\n }\n else {\n computedStyle.fontWeight = fontWeight;\n }\n computedFontSize(computedStyle, fontSize, parentComputedStyle, isRoot);\n if(fontFamily === 'inherit') {\n computedStyle.fontFamily = isRoot ? 'arial' : parentComputedStyle.fontFamily;\n }\n else {\n computedStyle.fontFamily = fontFamily;\n }\n if(color === 'inherit') {\n computedStyle.color = isRoot ? '#000' : parentComputedStyle.color;\n }\n else {\n computedStyle.color = color;\n }\n // 处理可提前计算的属性,如border百分比\n [\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth'\n ].forEach(k => {\n computedStyle[k] = currentStyle[k].value || 0;\n });\n [\n 'visibility',\n 'backgroundColor',\n 'borderBottomColor',\n 'borderLeftColor',\n 'borderRightColor',\n 'borderTopColor',\n 'opacity'\n ].forEach(k => {\n computedStyle[k] = currentStyle[k];\n });\n}\n\nfunction setFontStyle(style) {\n let { fontStyle, fontWeight, fontSize, fontFamily } = style;\n return `${fontStyle} ${fontWeight} ${fontSize}px/${fontSize}px ${fontFamily}`;\n}\n\nfunction getBaseLine(style) {\n let normal = style.fontSize * font.arial.lhr;\n return (style.lineHeight - normal) * 0.5 + style.fontSize * font.arial.blr;\n}\n\nfunction calLineHeight(xom, lineHeight, computedStyle) {\n if(util.isNumber(lineHeight)) {}\n if(lineHeight.unit === unit.INHERIT) {\n let parent = xom.parent;\n if(parent) {\n let pl = parent.style.lineHeight;\n // 一直继承向上查找直到root\n if(pl.unit === unit.INHERIT) {\n parent = parent.parent;\n while(parent) {\n pl = parent.style.lineHeight;\n if(pl.unit !== unit.INHERIT) {\n break;\n }\n }\n }\n let parentComputedStyle = parent.computedStyle;\n if(pl.unit === unit.PX) {\n computedStyle.lineHeight = parentComputedStyle.lineHeight;\n }\n else if(pl.unit === unit.NUMBER) {\n computedStyle.lineHeight = Math.max(pl.value, 0) * computedStyle.fontSize;\n }\n else {\n computedStyle.lineHeight = calNormalLineHeight(computedStyle);\n }\n }\n else {\n // root的继承强制为normal\n lineHeight.unit = unit.AUTO;\n computedStyle.lineHeight = calLineHeight(computedStyle);\n }\n }\n // 防止为0\n else if(lineHeight.unit === unit.PX) {\n computedStyle.lineHeight = Math.max(lineHeight.value, 0) || calNormalLineHeight(computedStyle);\n }\n else if(lineHeight.unit === unit.NUMBER) {\n computedStyle.lineHeight = Math.max(lineHeight.value, 0) * computedStyle.fontSize || calNormalLineHeight(computedStyle);\n }\n // normal\n else {\n computedStyle.lineHeight = calNormalLineHeight(computedStyle);\n }\n}\n\nfunction calNormalLineHeight(computedStyle) {\n return computedStyle.fontSize * font.arial.lhr;\n}\n\nfunction calRelativePercent(n, parent, k) {\n n *= 0.01;\n while(parent) {\n let style = parent.style[k];\n if(style.unit === unit.AUTO) {\n if(k === 'width') {\n parent = parent.parent;\n }\n else {\n break;\n }\n }\n else if(style.unit === unit.PX) {\n return n * style.value;\n }\n else if(style.unit === unit.PERCENT) {\n n *= style.value * 0.01;\n parent = parent.parent;\n }\n }\n return n;\n}\n\nfunction calRelative(computedStyle, k, v, parent, isWidth) {\n if(util.isNumber(v)) {}\n else if(v.unit === unit.AUTO) {\n v = 0;\n }\n else if(v.unit === unit.PX) {\n v = v.value;\n }\n else if(v.unit === unit.PERCENT) {\n if(isWidth) {\n v = calRelativePercent(v.value, parent, 'width');\n }\n else {\n v = calRelativePercent(v.value, parent, 'height');\n }\n }\n return computedStyle[k] = v;\n}\n\nfunction calAbsolute(computedStyle, k, v, size) {\n if(util.isNumber(v)) {}\n else if(v.unit === unit.AUTO) {\n v = 0;\n }\n else if(v.unit === unit.PX) {\n v = v.value;\n }\n else if(v.unit === unit.PERCENT) {\n v = v.value * size * 0.01;\n }\n return computedStyle[k] = v;\n}\n\nexport default {\n normalize,\n compute,\n repaint,\n setFontStyle,\n getBaseLine,\n calLineHeight,\n calRelative,\n calAbsolute,\n};\n","import css from '../style/css';\nimport util from '../util/util';\nimport mode from '../util/mode';\n\nclass LineBox {\n constructor(parent, x, y, w, content) {\n this.__parent = parent;\n this.__x = x;\n this.__y = y;\n this.__width = w;\n this.__content = content;\n this.__virtualDom = {};\n }\n\n render(renderMode, ctx) {\n let { content, x, y, parent } = this;\n let { ox, oy, computedStyle } = parent;\n y += css.getBaseLine(computedStyle);\n x += ox;\n y += oy;\n if(renderMode === mode.CANVAS) {\n ctx.fillText(content, x, y);\n }\n else if(renderMode === mode.SVG) {\n this.__virtualDom = {\n type: 'item',\n tagName: 'text',\n props: [\n ['x', x],\n ['y', y],\n ['fill', computedStyle.color],\n ['font-family', computedStyle.fontFamily],\n ['font-weight', computedStyle.fontWeight],\n ['font-style', computedStyle.fontStyle],\n ['font-size', `${computedStyle.fontSize}px`]\n ],\n content: util.encodeHtml(content),\n };\n }\n }\n\n __offsetX(diff) {\n this.__x += diff;\n }\n\n __offsetY(diff) {\n this.__y += diff;\n }\n\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get width() {\n return this.__width;\n }\n get content() {\n return this.__content;\n }\n get baseLine() {\n return css.getBaseLine(this.parent.computedStyle);\n }\n get virtualDom() {\n return this.__virtualDom;\n }\n get parent() {\n return this.__parent;\n }\n}\n\nexport default LineBox;\n","import Node from './Node';\nimport LineBox from './LineBox';\nimport css from '../style/css';\nimport mode from '../util/mode';\n\nclass Text extends Node {\n constructor(content) {\n super();\n this.__content = content.toString();\n this.__lineBoxes = [];\n this.__charWidthList = [];\n this.__charWidth = 0;\n this.__textWidth = 0;\n }\n\n static CHAR_WIDTH_CACHE = {};\n static MEASURE_TEXT = {\n list: [],\n data: {},\n };\n\n // 预先计算每个字的宽度\n __measure() {\n let { ctx, content, computedStyle, charWidthList, renderMode } = this;\n if(renderMode === mode.CANVAS) {\n ctx.font = css.setFontStyle(computedStyle);\n }\n let key = computedStyle.fontSize + ',' + computedStyle.fontFamily;\n let wait = Text.MEASURE_TEXT.data[key] = Text.MEASURE_TEXT.data[key] || {\n key,\n style: computedStyle,\n hash: {},\n s: [],\n };\n let cache = Text.CHAR_WIDTH_CACHE[key] = Text.CHAR_WIDTH_CACHE[key] || {};\n let sum = 0;\n let needMeasure = false;\n for(let i = 0, length = content.length; i < length; i++) {\n let char = content.charAt(i);\n let mw;\n if(cache.hasOwnProperty(char)) {\n mw = cache[char];\n charWidthList.push(mw);\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n else if(renderMode === mode.CANVAS) {\n mw = cache[char] = ctx.measureText(char).width;\n charWidthList.push(mw);\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n else {\n if(!wait.hash.hasOwnProperty(char)) {\n wait.s += char;\n }\n wait.hash[char] = true;\n // 先预存标识位-1,测量完后替换它\n charWidthList.push(-1);\n needMeasure = true;\n }\n }\n this.__textWidth = sum;\n if(needMeasure) {\n Text.MEASURE_TEXT.list.push(this);\n }\n }\n\n __measureCb() {\n let { content, computedStyle, charWidthList } = this;\n let key = computedStyle.fontSize + ',' + computedStyle.fontFamily;\n let cache = Text.CHAR_WIDTH_CACHE[key];\n let sum = 0;\n for(let i = 0, len = charWidthList.length; i < len; i++) {\n if(charWidthList[i] < 0) {\n let mw = charWidthList[i] = cache[content.charAt(i)];\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n }\n this.__textWidth += sum;\n }\n\n __layout(data, isVirtual) {\n let { x, y, w, h } = data;\n this.__x = x;\n this.__y = y;\n let maxX = x;\n let { isDestroyed, content, currentStyle, computedStyle, lineBoxes, charWidthList } = this;\n if(isDestroyed || currentStyle.display === 'none') {\n return;\n }\n this.__ox = this.__oy = 0;\n lineBoxes.splice(0);\n // 顺序尝试分割字符串为lineBox,形成多行\n let begin = 0;\n let i = 0;\n let count = 0;\n let length = content.length;\n while(i < length) {\n count += charWidthList[i];\n if(count === w) {\n let lineBox = new LineBox(this, x, y, count, content.slice(begin, i + 1));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count);\n y += computedStyle.lineHeight;\n begin = i + 1;\n i = begin;\n count = 0;\n }\n else if(count > w) {\n // 宽度不足时无法跳出循环,至少也要塞个字符形成一行\n if(i === begin) {\n i = begin + 1;\n }\n let lineBox = new LineBox(this, x, y, count - charWidthList[i], content.slice(begin, i));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count - charWidthList[i]);\n y += computedStyle.lineHeight;\n begin = i;\n count = 0;\n }\n else {\n i++;\n }\n }\n if(begin < length && begin < i) {\n count = 0;\n for(i = begin ;i < length; i++) {\n count += charWidthList[i];\n }\n let lineBox = new LineBox(this, x, y, count, content.slice(begin, length));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count);\n y += computedStyle.lineHeight;\n }\n this.__width = maxX - x;\n this.__height = y - data.y;\n // flex前置计算无需真正布局\n if(isVirtual) {\n this.__lineBoxes = [];\n }\n else {\n let { textAlign } = currentStyle;\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineBoxes.forEach(lineBox => {\n let diff = this.__width - lineBox.width;\n if(diff > 0) {\n lineBox.__offsetX(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n }\n }\n\n __offsetX(diff, isLayout) {\n super.__offsetX(diff, isLayout);\n if(isLayout) {\n this.lineBoxes.forEach(item => {\n item.__offsetX(diff);\n });\n }\n }\n\n __offsetY(diff, isLayout) {\n super.__offsetY(diff, isLayout);\n if(isLayout) {\n this.lineBoxes.forEach(item => {\n item.__offsetY(diff);\n });\n }\n }\n\n render(renderMode) {\n const { isDestroyed, ctx, computedStyle } = this;\n if(isDestroyed || computedStyle.display === 'none') {\n return;\n }\n if(renderMode === mode.CANVAS) {\n ctx.font = css.setFontStyle(computedStyle);\n ctx.fillStyle = computedStyle.color;\n }\n this.lineBoxes.forEach(item => {\n item.render(renderMode, ctx);\n });\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n type: 'text',\n children: this.lineBoxes.map(lineBox => lineBox.virtualDom),\n };\n }\n }\n\n __renderByMask(renderMode) {\n this.render(renderMode);\n }\n\n __tryLayInline(w) {\n return w - this.textWidth;\n }\n\n __calMaxAndMinWidth() {\n let n = 0;\n this.charWidthList.forEach(item => {\n n = Math.max(n, item);\n });\n return { max: this.textWidth, min: n };\n }\n\n get content() {\n return this.__content;\n }\n set content(v) {\n this.__content = v;\n }\n get lineBoxes() {\n return this.__lineBoxes;\n }\n get charWidthList() {\n return this.__charWidthList;\n }\n get charWidth() {\n return this.__charWidth;\n }\n get textWidth() {\n return this.__textWidth;\n }\n get baseLine() {\n let last = this.lineBoxes[this.lineBoxes.length - 1];\n return last.y - this.y + last.baseLine;\n }\n get currentStyle() {\n return this.style;\n }\n get renderMode() {\n return this.__renderMode;\n }\n}\n\nexport default Text;\n","import sort from '../util/sort';\nimport Text from '../node/Text';\n\nfunction splitClass(s) {\n s = (s || '').trim();\n if(s) {\n return s.split(/\\s+/);\n }\n}\n\nfunction parse(dom, top, json) {\n if(!json) {\n return;\n }\n let list = [];\n matchSel(dom, top, json, list);\n sort(list, function(a, b) {\n let pa = a[2];\n let pb = b[2];\n // 先比较优先级\n for(let i = 0; i < 3; i++) {\n if(pa[i] !== pb[i]) {\n return pa[i] > pb[i];\n }\n }\n // 优先级相等比较出现顺序\n return a[0] > b[0];\n });\n let res = {};\n for(let i = list.length - 1; i >= 0; i--) {\n let item = list[i];\n let [k, v] = item[1];\n if(!res.hasOwnProperty(k)) {\n res[k] = v;\n }\n }\n return res;\n}\n\n// 从底部往上匹配,即.a .b这样的选择器是.b->.a逆序对比\nfunction matchSel(dom, top, json, res) {\n let selList = combo(dom, json);\n selList.forEach(sel => {\n if(json.hasOwnProperty(sel)) {\n let item = json[sel];\n // 还未到根节点需继续向上,注意可以递归向上,多层级时需递归所有父层级组合\n let parent = dom.parent;\n while(parent) {\n matchSel(parent, top, item, res);\n parent = parent.parent;\n }\n // 将当前层次的值存入\n if(item.hasOwnProperty('_v')) {\n dealStyle(res, item);\n }\n // 父子选择器\n if(item.hasOwnProperty('_>')) {\n let parentStyle = item['_>'];\n matchSel(dom.parent, this, parentStyle, res);\n }\n // 相邻兄弟选择器\n if(item.hasOwnProperty('_+')) {\n let sibling = item['_+'];\n let prev = dom.prev;\n if(prev && !(prev instanceof Text)) {\n let prevSelList = combo(prev, sibling);\n let hash = arr2hash(prevSelList);\n Object.keys(sibling).forEach(function(k) {\n let item2 = sibling[k];\n // 有值且兄弟选择器命中时存入结果\n if(item2.hasOwnProperty('_v') && hash.hasOwnProperty(k)) {\n dealStyle(res, item2);\n }\n });\n }\n }\n // 兄弟选择器,不一定相邻,一直往前找\n if(item.hasOwnProperty('_~')) {\n let sibling = item['_~'];\n let prev = dom.prev;\n let hasMatch;\n while(prev) {\n if(prev instanceof Text) {\n prev = prev.prev;\n continue;\n }\n let prevSelList = combo(prev, sibling);\n let hash = arr2hash(prevSelList);\n Object.keys(sibling).forEach(function(k) {\n let item2 = sibling[k];\n // 有值且兄弟选择器命中时存入结果\n if(item2.hasOwnProperty('_v') && hash.hasOwnProperty(k)) {\n dealStyle(res, item2);\n }\n });\n prev = prev.prev;\n }\n }\n }\n });\n}\n\n// 组合出dom的所有sel可能\nfunction combo(dom, json) {\n let { class: klass, tagName, id } = dom;\n klass = klass.slice();\n sort(klass, function(a, b) {\n return a > b;\n });\n let ks = [];\n if(klass.length) {\n comboClass(klass, ks, klass.length, 0);\n }\n // 各种*的情况标识,只有存在时才放入sel组合,可以减少循环次数\n let hasStarClass = json.hasOwnProperty('_*.');\n let hasStarId = json.hasOwnProperty('_*#');\n let hasStarIdClass = json.hasOwnProperty('_*.#');\n let res = [tagName];\n // 只有当前有_*时说明有*才匹配\n if(json.hasOwnProperty('_*')) {\n res.push('*');\n }\n if(id) {\n id = '#' + id;\n res.push(id);\n res.push(tagName + id);\n if(hasStarId) {\n res.push('*' + id);\n }\n }\n ks.forEach(klass => {\n res.push(klass);\n res.push(tagName + klass);\n if(hasStarClass) {\n res.push('*' + klass);\n }\n if(id) {\n res.push(klass + id);\n res.push(tagName + klass + id);\n if(hasStarIdClass) {\n res.push('*' + klass + id);\n }\n }\n });\n return res;\n}\n\n// 组合出klass里多个的可能,如.b.a和.c.b.a,注意有排序,可以使得相等比较更容易\nfunction comboClass(arr, res, len, i) {\n if(len - i > 1) {\n comboClass(arr, res, len, i + 1);\n for(let j = 0, len2 = res.length; j < len2; j++) {\n res.push(res[j] + '.' + arr[i]);\n }\n }\n res.push('.' + arr[i]);\n}\n\nfunction dealStyle(res, item) {\n item._v.forEach(function(style) {\n style[2] = item._p;\n res.push(style);\n });\n}\n\nfunction arr2hash(arr) {\n let hash = {};\n arr.forEach(item => {\n hash[item] = true;\n });\n return hash;\n}\n\nfunction mergeCss(a, b) {\n if(!b) {\n return a;\n }\n if(!a) {\n return b;\n }\n for(let i in b) {\n if(b.hasOwnProperty(i)) {\n let o = b[i];\n let flag = {\n _v: true,\n _p: true,\n }.hasOwnProperty(i);\n if(!flag && typeof o === 'object' && a.hasOwnProperty(i)) {\n a[i] = mergeCss(a[i], o);\n }\n else {\n a[i] = o;\n }\n }\n }\n return a;\n}\n\nexport default {\n parse,\n splitClass,\n mergeCss,\n};\n","import unit from \"./unit\";\nimport transform from \"./transform\";\n\nfunction matrixResize(imgWidth, imgHeight, targetWidth, targetHeight, x, y, w, h) {\n if(imgWidth === targetWidth && imgHeight === targetHeight) {\n return;\n }\n let list = [\n ['scaleX', {\n value: targetWidth / imgWidth,\n unit: unit.NUMBER,\n }],\n ['scaleY', {\n value: targetHeight / imgHeight,\n unit: unit.NUMBER,\n }]\n ];\n let tfo = transform.calOrigin([\n {\n value: 0,\n unit: unit.PERCENT,\n },\n {\n value: 0,\n unit: unit.PERCENT,\n }\n ], x, y, w, h);\n return transform.calMatrix(list, tfo, x, y, w, h);\n}\n\nexport default {\n matrixResize,\n};\n","import util from './util';\n\nclass Event {\n constructor() {\n this.__eHash = {};\n }\n on(id, handle) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.on(id[i], handle);\n }\n }\n else if(handle) {\n if(!self.__eHash.hasOwnProperty(id)) {\n self.__eHash[id] = [];\n }\n // 遍历防止此handle被侦听过了\n for(let i = 0, item = self.__eHash[id], len = item.length; i < len; i++) {\n if(item[i] === handle) {\n return self;\n }\n }\n self.__eHash[id].push(handle);\n }\n return self;\n }\n once(id, handle) {\n if(!util.isFunction(handle)) {\n return;\n }\n let self = this;\n function cb(...data) {\n handle.apply(self, data);\n self.off(id, cb);\n }\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.once(id[i], handle);\n }\n }\n else if(handle) {\n self.on(id, cb);\n }\n return this;\n }\n off(id, handle) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.off(id[i], handle);\n }\n }\n else if(self.__eHash.hasOwnProperty(id)) {\n if(handle) {\n for(let i = 0, item = self.__eHash[id], len = item.length; i < len; i++) {\n if(item[i] === handle) {\n item.splice(i, 1);\n break;\n }\n }\n }\n // 未定义为全部清除\n else {\n delete self.__eHash[id];\n }\n }\n return this;\n }\n emit(id, ...data) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.emit(id[i], data);\n }\n }\n else {\n if(self.__eHash.hasOwnProperty(id)) {\n let list = self.__eHash[id];\n if(list.length) {\n list = list.slice();\n for(let i = 0, len = list.length; i < len; i++) {\n let cb = list[i];\n if(util.isFunction(cb)) {\n cb.apply(self, data);\n }\n }\n }\n }\n }\n return this;\n }\n\n static mix(...obj) {\n for(let i = obj.length - 1; i >= 0; i--) {\n let o = obj[i];\n let event = new Event();\n o.__eHash = {};\n let fns = ['on', 'once', 'off', 'emit'];\n for(let j = fns.length - 1; j >= 0; j--) {\n let fn = fns[j];\n o[fn] = event[fn];\n }\n }\n }\n\n static KARAS_REFRESH = 'karas-refresh';\n static KARAS_BEFORE_REFRESH = 'karas-before-refresh';\n static KARAS_ANIMATION_PAUSE = 'karas-animation-pause';\n static KARAS_ANIMATION_FRAME = 'karas-animation-frame';\n static KARAS_ANIMATION_FINISH = 'karas-animation-finish';\n static KARAS_ANIMATION_CANCEL = 'karas-animation-cancel';\n}\n\nexport default Event;\n","import util from '../util/util';\n\nconst DOM = {\n position: 'static',\n display: 'block',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n fontSize: 'inherit',\n fontFamily: 'arial',\n color: 'inherit',\n fontStyle: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'normal',\n backgroundColor: 'transparent',\n backgroundSize: 'auto',\n backgroundRepeat: 'repeat',\n backgroundPosition: '0% 0%',\n borderTopWidth: 0,\n borderRightWidth: 0,\n borderBottomWidth: 0,\n borderLeftWidth: 0,\n borderTopColor: '#000',\n borderRightColor: '#000',\n borderBottomColor: '#000',\n borderLeftColor: '#000',\n borderTopStyle: 'solid',\n borderRightStyle: 'solid',\n borderBottomStyle: 'solid',\n borderLeftStyle: 'solid',\n width: 'auto',\n height: 'auto',\n flexGrow: 0,\n flexShrink: 1,\n flexBasis: 'auto',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n textAlign: 'inherit',\n transformOrigin: 'center',\n visibility: 'visible',\n opacity: 1,\n};\n\nconst GEOM = {\n fill: 'transparent',\n stroke: '#000',\n strokeWidth: 1,\n strokeDasharray: '',\n strokeLinecap: 'butt',\n};\n\nlet dom = [];\nfor(let k in DOM) {\n if(DOM.hasOwnProperty(k)) {\n let v = DOM[k];\n dom.push({\n k,\n v,\n });\n }\n}\n\nlet geom = util.clone(dom);\nfor(let k in GEOM) {\n if(GEOM.hasOwnProperty(k)) {\n let v = GEOM[k];\n geom.push({\n k,\n v,\n });\n }\n}\n\nexport default {\n dom,\n geom,\n};\n","export default {\n REPAINT: 0,\n REFLOW: 1,\n};\n","import Event from '../util/Event';\nimport Node from './Node';\nimport Text from './Text';\nimport util from '../util/util';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport match from '../style/match';\nimport level from '../animate/level';\n\nclass Component extends Event {\n constructor(tagName, props, children) {\n super();\n if(!util.isString(tagName)) {\n children = props;\n props = tagName;\n tagName = /(?:function|class)\\s+([\\w$]+)/.exec(this.constructor.toString())[1];\n }\n this.__tagName = tagName;\n props = props || [];\n // 构建工具中都是arr,手写可能出现hash情况\n if(Array.isArray(props)) {\n this.props = util.arr2hash(props);\n this.__props = props;\n }\n else {\n this.props = props;\n this.__props = util.hash2arr(props);\n }\n this.__children = children || [];\n this.__shadowRoot = null;\n this.__parent = null;\n this.__ref = {};\n this.__state = {};\n }\n\n setState(n, cb) {\n if(util.isNil(n)) {\n this.state = {};\n }\n else {\n for(let i in n) {\n if(n.hasOwnProperty(i)) {\n this.state[i] = n[i];\n }\n }\n }\n // 构造函数中调用还未render\n let o = this.shadowRoot;\n if(!o) {\n return;\n }\n let root = this.root;\n if(root) {\n root.setRefreshLevel(level.REFLOW);\n this.__traverse(o.ctx, o.defs, this.root.renderMode);\n this.__init();\n root.addRefreshTask(cb);\n }\n }\n\n __traverse(ctx, defs, renderMode) {\n let sr = this.__shadowRoot = this.render(renderMode);\n // 可能返回的还是一个Component,递归处理\n while(sr instanceof Component) {\n sr = this.__shadowRoot = sr.render(renderMode);\n }\n // node情况不可能是text,因为text节点只出现在dom内,直接返回的text是string\n if(!(sr instanceof Node)) {\n let s = '';\n if(!util.isNil(sr)) {\n s = util.encodeHtml(sr.toString());\n }\n sr = new Text(s);\n sr.__ctx = ctx;\n sr.__defs = defs;\n sr.__renderMode = renderMode;\n sr.__style = this.props.style || {};\n this.__shadowRoot = sr;\n return;\n }\n sr.__ctx = ctx;\n sr.__defs = defs;\n sr.__host = this;\n if(!sr.isGeom()) {\n sr.__traverse(ctx, defs, renderMode);\n }\n }\n\n __traverseCss() {\n let sr = this.__shadowRoot;\n // shadowDom可以设置props.css,同时host的会覆盖它\n if(!(sr instanceof Text)) {\n let m = match.mergeCss(sr.props.css, this.props.css);\n sr.__traverseCss(sr, m);\n }\n }\n\n // 组件传入的样式需覆盖shadowRoot的\n __init() {\n let sr = this.shadowRoot;\n // 返回text节点特殊处理,赋予基本样式\n if(sr instanceof Text) {\n css.normalize(sr.style, reset.dom);\n }\n else {\n let style = this.props.style || {};\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n sr.style[i] = style[i];\n }\n }\n sr.__init();\n }\n if(!(sr instanceof Text)) {\n this.__props.forEach(item => {\n let k = item[0];\n let v = item[1];\n if(/^on[a-zA-Z]/.test(k)) {\n k = k.slice(2).toLowerCase();\n let arr = sr.listener[k] = sr.listener[k] || [];\n arr.push(v);\n }\n else if(/^on-[a-zA-Z\\d_$]/.test(k)) {\n k = k.slice(3);\n this.on(k, function(...args) {\n v(...args);\n });\n }\n });\n }\n // 防止重复\n if(this.__hasInit) {\n return;\n }\n this.__hasInit = true;\n [\n 'x',\n 'y',\n 'ox',\n 'oy',\n 'sx',\n 'sy',\n 'width',\n 'height',\n 'outerWidth',\n 'outerHeight',\n 'style',\n 'computedStyle',\n 'ctx',\n 'defs',\n 'baseLine',\n 'virtualDom',\n 'currentStyle',\n 'points',\n 'controlA',\n 'controlB',\n 'controls',\n 'r',\n 'rx',\n 'ry',\n 'begin',\n 'end',\n 'x1',\n 'y1',\n 'x2',\n 'y2',\n 'mask',\n 'maskId'\n ].forEach(fn => {\n Object.defineProperty(this, fn, {\n get() {\n return this.shadowRoot[fn];\n },\n });\n });\n }\n\n render() {\n }\n\n __destroy() {\n if(this.shadowRoot) {\n this.shadowRoot.__destroy();\n }\n this.children.splice(0);\n this.__shadowRoot = null;\n this.__parent = null;\n }\n\n __emitEvent(e, force) {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n return;\n }\n if(force) {\n return sr.__emitEvent(e, force);\n }\n let res = sr.__emitEvent(e);\n if(res) {\n e.target = this;\n return true;\n }\n }\n\n animate(list, option) {\n let sr = this.shadowRoot;\n if(!(sr instanceof Text)) {\n sr.animate(list, option);\n }\n }\n\n __computed() {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n css.compute(sr, true);\n sr.__measure();\n }\n else {\n sr.__computed();\n }\n }\n\n __repaint() {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n css.repaint(sr, true);\n }\n else {\n sr.__repaint();\n }\n }\n\n get tagName() {\n return this.__tagName;\n }\n get children() {\n return this.__children;\n }\n get shadowRoot() {\n return this.__shadowRoot;\n }\n get root() {\n if(this.parent) {\n return this.parent.root;\n }\n }\n get parent() {\n return this.__parent;\n }\n get ref() {\n return this.__ref;\n }\n get state() {\n return this.__state;\n }\n set state(v) {\n this.__state = v;\n }\n}\n\n[\n '__layout',\n '__layoutAbs',\n '__tryLayInline',\n '__offsetX',\n '__offsetY',\n '__calAutoBasis',\n '__calMp',\n '__calAbs',\n '__renderAsMask',\n '__renderByMask'\n].forEach(fn => {\n Component.prototype[fn] = function() {\n let sr = this.shadowRoot;\n if(sr[fn]) {\n return sr[fn].apply(sr, arguments);\n }\n };\n});\n\nexport default Component;\n","import Text from '../node/Text';\r\rlet inject = {\r measureText(cb) {\r let { list, data } = Text.MEASURE_TEXT;\r let html = '';\r let keys = [];\r let chars = [];\r for(let i in data) {\r if(data.hasOwnProperty(i)) {\r let { key, style, s } = data[i];\r if(s) {\r let inline = `position:absolute;font-family:${style.fontFamily};font-size:${style.fontSize}px`;\r for(let j = 0, len = s.length; j < len; j++) {\r keys.push(key);\r let char = s.charAt(j);\r chars.push(char);\r html += `${char.replace(/, '<')}`;\r }\r }\r }\r }\r if(!html) {\r cb();\r return;\r }\r let div = document.createElement('div');\r div.style.position = 'absolute';\r div.style.left = '99999px';\r div.style.top = '-99999px';\r div.style.visibility = 'hidden';\r document.body.appendChild(div);\r div.innerHTML = html;\r let cns = div.childNodes;\r let { CHAR_WIDTH_CACHE, MEASURE_TEXT } = Text;\r for(let i = 0, len = cns.length; i < len; i++) {\r let node = cns[i];\r let key = keys[i];\r let char = chars[i];\r let css = window.getComputedStyle(node, null);\r CHAR_WIDTH_CACHE[key][char] = parseFloat(css.width);\r }\r list.forEach(text => text.__measureCb());\r cb();\r MEASURE_TEXT.list = [];\r MEASURE_TEXT.data = {};\r document.body.removeChild(div);\r },\r measureImg(url, cb) {\r let img = new Image();\r img.onload = function() {\r cb({\r success: true,\r width: img.width,\r height: img.height,\r source: img,\r });\r };\r img.onerror = function() {\r cb({\r success: false,\r });\r };\r if(url.substr( 0, 5 ) !== 'data:') {\r let host = /^(?:\\w+:)?\\/\\/([^/:]+)/.exec(url);\r if(host) {\r if(location.hostname !== host[1]) {\r img.crossOrigin = 'anonymous';\r }\r }\r }\r img.src = url;\r },\r warn(s) {\r console.warn(s);\r },\r requestAnimationFrame(cb) {\r if(typeof requestAnimationFrame !== 'undefined') {\r inject.requestAnimationFrame = requestAnimationFrame.bind(window);\r requestAnimationFrame(cb);\r }\r else {\r setTimeout(cb, 16.7);\r inject.requestAnimationFrame = function(cb) {\r setTimeout(cb, 16.7);\r };\r }\r },\r now() {\r if(typeof performance !== 'undefined') {\r inject.now = performance.now.bind(performance);\r return performance.now();\r }\r inject.now = Date.now.bind(Date);\r return Date.now();\r },\r};\r\rexport default inject;\r","import inject from '../util/inject';\n\nclass Frame {\n constructor() {\n this.__inFrame = false;\n this.__task = [];\n this.__afterFrame = [];\n }\n\n __init(task) {\n let self = this;\n function cb() {\n let last = inject.now();\n inject.requestAnimationFrame(function() {\n if(!task.length) {\n return;\n }\n let now = inject.now();\n let delta = now - last;\n delta = delta * 0.06;\n last = now;\n self.__inFrame = true;\n task.forEach(handle => handle(delta));\n self.__inFrame = false;\n let afterCb = self.__afterFrame;\n if(afterCb) {\n afterCb.forEach(item => item(delta));\n }\n self.__afterFrame = [];\n if(!task.length) {\n return;\n }\n cb();\n });\n }\n cb();\n }\n\n onFrame(handle) {\n let { task } = this;\n if(!task.length) {\n this.__init(task);\n }\n this.task.push(handle);\n }\n\n offFrame(handle) {\n let { task } = this;\n for(let i = 0, len = task.length; i < len; i++) {\n if(task[i] === handle) {\n task.splice(i, 1);\n break;\n }\n }\n }\n\n nextFrame(handle) {\n let self = this;\n function cb() {\n handle();\n self.offFrame(cb);\n }\n if(self.__inFrame) {\n self.__afterFrame = self.__afterFrame || [];\n self.__afterFrame.push(cb);\n }\n else {\n self.onFrame(cb);\n }\n }\n\n get task() {\n return this.__task;\n }\n}\n\nexport default new Frame();\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nlet NEWTON_ITERATIONS = 4;\nlet NEWTON_MIN_SLOPE = 0.001;\nlet SUBDIVISION_PRECISION = 0.0000001;\nlet SUBDIVISION_MAX_ITERATIONS = 10;\n\nlet kSplineTableSize = 11;\nlet kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nlet float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\n\nfunction B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\n\nfunction C(aA1) {\n return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n let currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if(currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while(Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for(let i = 0; i < NEWTON_ITERATIONS; ++i) {\n let currentSlope = getSlope(aGuessT, mX1, mX2);\n if(currentSlope === 0.0) {\n return aGuessT;\n }\n let currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing(x) {\n return x;\n}\n\nfunction bezier(mX1, mY1, mX2, mY2) {\n if(!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if(mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n let sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for(let i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX(aX) {\n let intervalStart = 0.0;\n let currentSample = 1;\n let lastSample = kSplineTableSize - 1;\n\n for(; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n let dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n let guessForT = intervalStart + dist * kSampleStepSize;\n\n let initialSlope = getSlope(guessForT, mX1, mX2);\n if(initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if(initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing(x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if(x === 0 || x === 1) {\n return x;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n}\n\nlet easing = {\n linear: bezier(1, 1, 0, 0),\n easeIn: bezier(0.42, 0, 1, 1),\n easeOut: bezier(0, 0, 0.58, 1),\n ease: bezier(0.25, 0.1, 0.25, 1),\n easeInOut: bezier(0.42, 0, 0.58, 1),\n cubicBezier: bezier,\n};\n\nexport default easing;\n","export default {\n GEOM: {\n x1: true,\n y1: true,\n x2: true,\n y2: true,\n controlA: true,\n controlB: true,\n r: true,\n rx: true,\n ry: true,\n begin: true,\n end: true,\n points: true,\n controls: true,\n },\n STYLE: {\n transform: true,\n color: true,\n fontStyle: true,\n strokeWidth: true,\n fill: true,\n backgroundColor: true,\n backgroundImage: true,\n stroke: true,\n borderBottomColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n borderTopColor: true,\n visibility: true,\n opacity: true,\n },\n};\n","import css from '../style/css';\nimport unit from '../style/unit';\nimport util from '../util/util';\nimport inject from '../util/inject';\nimport Event from '../util/Event';\nimport frame from './frame';\nimport easing from './easing';\nimport level from './level';\nimport repaint from './repaint';\n\nconst KEY_COLOR = [\n 'backgroundColor',\n 'borderBottomColor',\n 'borderLeftColor',\n 'borderRightColor',\n 'borderTopColor',\n 'color',\n 'fill',\n 'stroke'\n];\n\nconst KEY_LENGTH = [\n 'fontSize',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'bottom',\n 'left',\n 'right',\n 'top',\n 'flexBasis',\n 'width',\n 'height',\n 'lineHeight',\n 'marginBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'strokeWidth'\n];\n\nconst KEY_GRADIENT = [\n 'backgroundImage',\n 'fill',\n 'stroke'\n];\n\nconst COLOR_HASH = {};\nKEY_COLOR.forEach(k => {\n COLOR_HASH[k] = true;\n});\n\nconst LENGTH_HASH = {};\nKEY_LENGTH.forEach(k => {\n LENGTH_HASH[k] = true;\n});\n\nconst GRADIENT_HASH = {};\nKEY_GRADIENT.forEach(k => {\n GRADIENT_HASH[k] = true;\n});\n\nconst GRADIENT_TYPE = {\n linear: true,\n radial: true,\n};\n\n// css模式rgb和init的颜色转换为rgba数组,方便加减运算\nfunction color2array(style) {\n KEY_COLOR.forEach(k => {\n if(!style.hasOwnProperty(k)) {\n return;\n }\n let v = style[k];\n if(GRADIENT_TYPE.hasOwnProperty(v.k)) {\n return;\n }\n style[k] = util.rgb2int(v);\n });\n KEY_GRADIENT.forEach(k => {\n if(!style.hasOwnProperty(k)) {\n return;\n }\n let v = style[k];\n if(GRADIENT_TYPE.hasOwnProperty(v.k)) {\n v.v.forEach(item => {\n item[0] = util.rgb2int(item[0]);\n });\n }\n });\n}\n\nfunction equalStyle(k, a, b) {\n if(k === 'transform') {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n let k1 = a[i][0];\n let k2 = b[i][0];\n if(k1 !== k2) {\n return false;\n }\n else {\n let v1 = a[i][1];\n let v2 = b[i][1];\n if(k1 === 'matrix') {\n if(v1[0] !== v2[0]\n || v1[1] !== v2[1]\n || v1[2] !== v2[2]\n || v1[3] !== v2[3]\n || v1[4] !== v2[4]\n || v1[5] !== v2[5]) {\n return false;\n }\n }\n else if(v1.value !== v2.value || v1.unit !== v2.unit) {\n return false;\n }\n }\n }\n return true;\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n return a.value === b.value && a.unit === b.unit;\n }\n else if(GRADIENT_HASH.hasOwnProperty(k) && a.k === b.k && GRADIENT_TYPE.hasOwnProperty(a.k)) {\n let av = a.v;\n let bv = b.v;\n if(a.d !== b.d || av.length !== bv.length) {\n return false;\n }\n for(let i = 0, len = av.length; i < len; i++) {\n let ai = av[i];\n let bi = bv[i];\n if(ai.length !== bi.length) {\n return false;\n }\n for(let j = 0; j < 4; j++) {\n if(ai[0][j] !== bi[0][j]) {\n return false;\n }\n }\n if(ai.length > 1) {\n if(ai[1].value !== bi[1].value || ai[1].unit !== bi[1].unit) {\n return false;\n }\n }\n }\n return true;\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n if(k === 'points' || k === 'controls') {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n if(a[i] === b[i]) {\n continue;\n }\n if(a[i][0] !== b[i][0] || a[i][1] !== b[i][1]) {\n return false;\n }\n }\n return true;\n }\n else if(k === 'controlA' || k === 'controlB') {\n if(a.length !== b.length) {\n return false;\n }\n return a[0] === b[0] && a[1] === b[1];\n }\n }\n return a === b;\n}\n\n// 反向将颜色数组转换为css模式,同时计算target及其孩子的computedStyle\nfunction stringify(style, lastStyle, target) {\n if(lastStyle) {\n let res = false;\n for(let i in style) {\n if(style.hasOwnProperty(i) && lastStyle.hasOwnProperty(i)) {\n if(!equalStyle(i, style[i], lastStyle[i])) {\n res = true;\n break;\n }\n }\n // 不同的属性说明要更新提前跳出\n else if(style.hasOwnProperty(i) || lastStyle.hasOwnProperty(i)) {\n res = true;\n break;\n }\n }\n // 防止last有style没有\n for(let i in lastStyle) {\n if(lastStyle.hasOwnProperty(i) && !style.hasOwnProperty(i)) {\n res = true;\n break;\n }\n }\n if(!res) {\n return false;\n }\n }\n let animateStyle = target.animateStyle;\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n let v = style[i];\n if(repaint.GEOM.hasOwnProperty(i)) {\n target['__' + i] = v;\n }\n else if(GRADIENT_HASH.hasOwnProperty(i) && GRADIENT_TYPE.hasOwnProperty(v.k)) {\n animateStyle[i] = {\n k: v.k,\n v: v.v.map(item => {\n let arr = [];\n let c = item[0];\n if(c[3] === 1) {\n arr.push(`rgb(${c[0]},${c[1]},${c[2]})`);\n }\n else {\n arr.push(`rgba(${c[0]},${c[1]},${c[2]},${c[3]})`);\n }\n if(item[1]) {\n arr.push(util.clone(item[1]));\n }\n return arr;\n }),\n d: v.d,\n };\n }\n else if(COLOR_HASH.hasOwnProperty(i)) {\n if(v[3] === 1) {\n animateStyle[i] = `rgb(${v[0]},${v[1]},${v[2]})`;\n }\n else {\n animateStyle[i] = `rgba(${v[0]},${v[1]},${v[2]},${v[3]})`;\n }\n }\n else {\n animateStyle[i] = v;\n }\n }\n }\n return true;\n}\n\nfunction restore(keys, target) {\n let { style, animateStyle } = target;\n keys.forEach(k => {\n animateStyle[k] = util.clone(style[k]);\n });\n}\n\n// 将变化写的样式格式化,提取出offset属性,提取出变化的key,初始化变化过程的存储\nfunction framing(current, record) {\n let keys = [];\n let st = {};\n for(let i in current) {\n if(current.hasOwnProperty(i) && !{\n offset: true,\n easing: true,\n }.hasOwnProperty(i)) {\n if(keys.indexOf(i) === -1) {\n keys.push(i);\n }\n st[i] = current[i];\n if(record && !record.hash.hasOwnProperty(i)) {\n record.hash[i] = true;\n record.keys.push(i);\n }\n }\n }\n return {\n style: st,\n offset: current.offset,\n easing: current.easing,\n keys,\n transition: [],\n };\n}\n\n// 计算两帧之间的差,必须都含有某个属性,单位不同的以后面为准\nfunction calDiff(prev, next, k, target) {\n if(!prev.hasOwnProperty(k) || !next.hasOwnProperty(k)) {\n return;\n }\n let res = {\n k,\n };\n let p = prev[k];\n let n = next[k];\n if(k === 'transform') {\n if(!prev[k] || !next[k]) {\n return;\n }\n // transform每项以[k,v]存在,新老可能每项不会都存在,顺序也未必一致,不存在的认为是0\n let pExist = {};\n p.forEach(item => {\n pExist[item[0]] = item[1];\n });\n let nExist = {};\n n.forEach(item => {\n nExist[item[0]] = item[1];\n });\n res.v = [];\n let computedStyle = target.computedStyle;\n let key = k;\n n.forEach(item => {\n let [k, v] = item;\n // 都存在的计算差值\n if(pExist.hasOwnProperty(k)) {\n let p = pExist[k];\n let n = nExist[k];\n if(k === 'matrix') {\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = n[i] - p[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n else if(p.unit === n.unit) {\n res.v.push({\n k,\n v: v.value - p.value,\n });\n }\n else if(p.unit === unit.PX && n.unit === unit.PERCENT) {\n if(k === 'translateX') {\n p.value = p.value * 100 / computedStyle.width;\n }\n else if(k === 'translateY') {\n p.value = p.value * 100 / computedStyle.height;\n }\n p.unit = unit.PERCENT;\n res.v.push({\n k,\n v: n.value - p.value,\n });\n }\n else if(p.unit === unit.PERCENT && n.unit === unit.PX) {\n if(k === 'translateX') {\n p.value = p.value * 0.01 * computedStyle.width;\n }\n else if(k === 'translateY') {\n p.value = p.value * 0.01 * computedStyle.width;\n }\n p.unit = unit.PX;\n res.v.push({\n k,\n v: n.value - p.value,\n });\n }\n }\n // matrix老的不存在的项默认为单位矩阵\n else if(k === 'matrix') {\n let id = [1, 0, 0, 1, 0, 0];\n prev[key].push([k, id]);\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = v[i] - id[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n // 老的不存在的项默认为0\n else {\n prev[key].push([k, {\n value: 0,\n unit: v.unit,\n }]);\n res.v.push({\n k,\n v: v.value,\n });\n }\n });\n p.forEach(item => {\n let [k, v] = item;\n // 新的不存在的项默认为0或单位矩阵\n if(!nExist.hasOwnProperty(k)) {\n if(k === 'matrix') {\n let id = [1, 0, 0, 1, 0, 0];\n next[key].push([k, id]);\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = id[i] - v[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n else {\n next[key].push([k, {\n value: 0,\n unit: v.unit,\n }]);\n res.v.push({\n k,\n v: -v.value,\n });\n }\n }\n });\n }\n else if(k === 'transformOrigin') {\n res.v = [];\n let computedStyle = target.computedStyle;\n for(let i = 0; i < 2; i++) {\n let pi = p[i];\n let ni = n[i];\n if(pi.unit === ni.unit) {\n res.v.push(ni.value - pi.value);\n }\n else if(pi.unit === unit.PX && ni.unit === unit.PERCENT) {\n pi.value = pi.value * 100 / computedStyle[i ? 'outerHeight' : 'outerWidth'];\n pi.unit = unit.PERCENT;\n res.v = ni.value - pi.value;\n }\n else if(pi.unit === unit.PERCENT && ni.unit === unit.PX) {\n pi.value = pi.value * 0.01 * computedStyle[i ? 'outerHeight' : 'outerWidth'];\n pi.unit = unit.PX;\n res.v = ni.value - pi.value;\n }\n }\n }\n else if(GRADIENT_HASH.hasOwnProperty(k)\n && { 'linear': true, 'radial': true }.hasOwnProperty(p.k)\n && p.k === n.k\n && p.v.length\n && p.v.length) {\n let pv = p.v;\n let nv = n.v;\n res.v = [];\n for(let i = 0, len = Math.min(pv.length, nv.length); i < len; i++) {\n let a = pv[i];\n let b = nv[i];\n let t = [];\n t.push([\n b[0][0] - a[0][0],\n b[0][1] - a[0][1],\n b[0][2] - a[0][2],\n b[0][3] - a[0][3]\n ]);\n if(a[1] && b[1] && a[1].unit === b[1].unit) {\n t.push(b[1].value - a[1].value);\n }\n // 单位不同不做运算\n else {\n continue;\n }\n res.v.push(t);\n }\n if(p.k === 'linear' && p.d !== undefined && n.d !== undefined) {\n res.d = n.d - p.d;\n }\n }\n else if(COLOR_HASH.hasOwnProperty(k)) {\n // fill和stroke可能纯色和渐变不一致\n if(p.k !== n.k) {\n return;\n }\n res.v = [\n n[0] - p[0],\n n[1] - p[1],\n n[2] - p[2],\n n[3] - p[3]\n ];\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n // auto不做动画\n if(p.unit === unit.AUTO || n.unit === unit.AUTO) {\n return;\n }\n let parentComputedStyle = (target.parent || target).computedStyle;\n if(p.unit === n.unit) {\n res.v = n.value - p.value;\n }\n else if(p.unit === unit.PX && n.unit === unit.PERCENT) {\n p.value = p.value * 100 / parentComputedStyle[k];\n p.unit = unit.PERCENT;\n res.v = n.value - p.value;\n }\n else if(p.unit === unit.PERCENT && n.unit === unit.PX) {\n p.value = p.value * 0.01 * parentComputedStyle[k];\n p.unit = unit.PX;\n res.v = n.value - p.value;\n }\n else {\n return;\n }\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n if(k === 'points' || k === 'controls') {\n res.v = [];\n for(let i = 0, len = Math.min(p.length, n.length); i < len; i++) {\n let pv = p[i];\n let nv = n[i];\n if(util.isNil(pv) || util.isNil(nv)) {\n res.v.push(pv);\n }\n else {\n let v = [];\n for(let j = 0, len2 = Math.max(pv.length, nv.length); j < len2; j++) {\n if(util.isNil(pv[j]) || util.isNil(nv[j])) {\n v.push(pv[j]);\n }\n else {\n v.push(nv[j] - pv[j]);\n }\n }\n res.v.push(v);\n }\n }\n }\n else if(k === 'controlA' || k === 'controlB') {\n res.v = [\n n[0] - p[0],\n n[1] - p[1]\n ];\n }\n else {\n res.v = n - p;\n }\n }\n else if(k === 'opacity') {\n res.v = n - p;\n }\n else {\n res.v = p;\n }\n return res;\n}\n\nfunction calFrame(prev, current, target, record) {\n let next = framing(current, record);\n next.keys.forEach(k => {\n let ts = calDiff(prev.style, next.style, k, target);\n // 可以形成过渡的才会产生结果返回\n if(ts) {\n prev.transition.push(ts);\n }\n });\n return next;\n}\n\nfunction binarySearch(i, j, time, frames) {\n if(i === j) {\n let frame = frames[i];\n if(frame.time > time) {\n return i - 1;\n }\n return i;\n }\n else {\n let middle = i + ((j - i) >> 1);\n let frame = frames[middle];\n if(frame.time === time) {\n return middle;\n }\n else if(frame.time > time) {\n return binarySearch(i, Math.max(middle - 1, i), time, frames);\n }\n else {\n return binarySearch(Math.min(middle + 1, j), j, time, frames);\n }\n }\n}\n\nfunction calStyle(frame, percent) {\n let style = util.clone(frame.style);\n let timingFunction = easing[frame.easing] || easing.linear;\n if(timingFunction !== easing.linear) {\n percent = timingFunction(percent);\n }\n percent = Math.max(percent, 0);\n percent = Math.min(percent, 1);\n frame.transition.forEach(item => {\n let { k, v, d } = item;\n let st = style[k];\n if(k === 'transform') {\n let transform = style.transform;\n let hash = {};\n transform.forEach(item => {\n hash[item[0]] = item[1];\n });\n v.forEach(item => {\n let { k, v } = item;\n if(k === 'matrix') {\n for(let i = 0; i < 6; i++) {\n hash[k][i] += v[i] * percent;\n }\n }\n else {\n hash[k].value += v * percent;\n }\n });\n }\n else if(k === 'transformOrigin') {\n st[0].value += v[0] * percent;\n st[1].value += v[1] * percent;\n }\n else if(GRADIENT_HASH.hasOwnProperty(k) && GRADIENT_TYPE.hasOwnProperty(st.k)) {\n for(let i = 0, len = Math.min(st.v.length, v.length); i < len; i++) {\n let a = st.v[i];\n let b = v[i];\n a[0][0] += b[0][0] * percent;\n a[0][1] += b[0][1] * percent;\n a[0][2] += b[0][2] * percent;\n a[0][3] += b[0][3] * percent;\n if(a[1] && b[1]) {\n a[1].value += b[1] * percent;\n }\n }\n if(st.k === 'linear' && st.d !== undefined && d !== undefined) {\n st.d += d * percent;\n }\n }\n // color可能超限[0,255],但浏览器已经做了限制,无需关心\n else if(COLOR_HASH.hasOwnProperty(k)) {\n st[0] += v[0] * percent;\n st[1] += v[1] * percent;\n st[2] += v[2] * percent;\n st[3] += v[3] * percent;\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n style[k].value += v * percent;\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n let st = style[k];\n if(k === 'points' || k === 'controls') {\n for(let i = 0, len = Math.min(st.length, v.length); i < len; i++) {\n if(util.isNil(st[i]) || !st[i].length) {\n continue;\n }\n for(let j = 0, len2 = Math.min(st[i].length, v[i].length); j < len2; j++) {\n if(!util.isNil(st[i][j]) && !util.isNil(v[i][j])) {\n st[i][j] += v[i][j] * percent;\n }\n }\n }\n }\n else if(k === 'controlA' || k === 'controlB') {\n st[0] += v[0] * percent;\n st[1] += v[1] * percent;\n }\n else {\n style[k] += v * percent;\n }\n }\n else if(k === 'opacity') {\n style[k] += v * percent;\n }\n else {\n style[k] = v;\n }\n });\n return style;\n}\n\nfunction getLevel(style) {\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n if(!repaint.STYLE.hasOwnProperty(i) && !repaint.GEOM.hasOwnProperty(i)) {\n return level.REFLOW;\n }\n }\n }\n return level.REPAINT;\n}\n\nlet uuid = 0;\n\nclass Animation extends Event {\n constructor(target, list, options) {\n super();\n this.__id = uuid++;\n this.__target = target;\n this.__list = util.clone(list || []);\n // 动画过程另外一种形式,object描述k-v形式\n if(!Array.isArray(this.__list)) {\n let nl = [];\n let l = this.__list;\n for(let k in l) {\n if(l.hasOwnProperty(k)) {\n let v = l[k];\n if(Array.isArray(v)) {\n for(let i = 0, len = v.length; i < len; i++) {\n let o = nl[i] = nl[i] || {\n offset: i / (len - 1),\n };\n o[k] = v[i];\n }\n }\n }\n }\n this.__list = nl;\n }\n if(util.isNumber(options)) {\n this.__options = {\n duration: options,\n };\n options = this.__options;\n }\n let op = this.__options = options || {};\n this.__duration = parseFloat(op.duration) || 0;\n this.__delay = Math.max(0, parseFloat(op.delay) || 0);\n this.__endDelay = Math.max(parseFloat(op.endDelay) || 0, 0);\n if(op.iterations === 'Infinity' || op.iterations === 'infinity' || op.iterations === Infinity) {\n this.__iterations = Infinity;\n }\n else {\n this.__iterations = parseInt(op.iterations);\n if(isNaN(this.__iterations)) {\n this.__iterations = 1;\n }\n }\n this.__fps = parseInt(op.fps) || 60;\n if(this.__fps < 0) {\n this.__fps = 60;\n }\n this.__fill = op.fill || 'none';\n this.__direction = op.direction || 'normal';\n this.__frames = [];\n this.__framesR = [];\n this.__playbackRate = parseFloat(op.playbackRate) || 1;\n if(this.__playbackRate < 0) {\n this.__playbackRate = 1;\n }\n this.__startTime = 0;\n this.__offsetTime = 0;\n this.__pauseTime = 0;\n this.__lastFpsTime = 0;\n this.__pending = false;\n this.__playState = 'idle';\n this.__playCount = 0;\n this.__cb = null;\n this.__isDestroyed = true;\n this.__diffTime = 0;\n this.__init();\n }\n\n __init() {\n let { target, iterations, frames, framesR, direction, duration } = this;\n let style = util.clone(target.style);\n // 执行次数小于1无需播放\n if(iterations < 1) {\n return;\n }\n // 第一个动画执行时进行clone操作,防止2个一起时后面的覆盖前面重新clone导致前面的第一帧失效\n if(target.animateStyle !== target.currentStyle) {\n target.__animateStyle = util.clone(style);\n }\n // 转化style为计算后的绝对值结果\n color2array(style);\n // 过滤时间非法的,过滤后续offset<=前面的\n let list = this.list;\n let offset = -1;\n for(let i = 0, len = list.length; i < len; i++) {\n let current = list[i];\n if(current.hasOwnProperty('offset')) {\n current.offset = parseFloat(current.offset);\n // 超过区间[0,1]\n if(isNaN(current.offset) || current.offset < 0 || current.offset > 1) {\n list.splice(i, 1);\n i--;\n len--;\n }\n // <=前面的\n else if(current.offset <= offset) {\n list.splice(i, 1);\n i--;\n len--;\n }\n // 正常的标准化样式\n else {\n offset = current.offset;\n css.normalize(current);\n color2array(current);\n }\n }\n else {\n css.normalize(current);\n color2array(current);\n }\n }\n // 必须有2帧及以上描述\n if(list.length < 2) {\n return;\n }\n // 首尾时间偏移强制为[0, 1]\n let first = list[0];\n first.offset = 0;\n let last = list[list.length - 1];\n last.offset = 1;\n // 计算没有设置offset的时间\n for(let i = 1, len = list.length; i < len; i++) {\n let start = list[i];\n // 从i=1开始offset一定>0,找到下一个有offset的,均分中间无声明的\n if(!start.offset) {\n let end;\n let j = i + 1;\n for(; j < len; j++) {\n end = list[j];\n if(end.offset) {\n break;\n }\n }\n let num = j - i + 1;\n start = list[i - 1];\n let per = (end.offset - start.offset) / num;\n for(let k = i; k < j; k++) {\n let item = list[k];\n item.offset = start.offset + per * (k + 1 - i);\n }\n i = j;\n }\n }\n // 换算出60fps中每一帧,为防止空间过大,不存储每一帧的数据,只存储关键帧和增量\n let length = list.length;\n let record = this.__record = {\n keys: [],\n hash: {},\n };\n let prev;\n // 第一帧要特殊处理\n prev = framing(first, record);\n frames.push(prev);\n for(let i = 1; i < length; i++) {\n let next = list[i];\n prev = calFrame(prev, next, target, record);\n frames.push(prev);\n }\n this.__isDestroyed = false;\n // 反向\n if({ reverse: true, alternate: true, 'alternate-reverse': true }.hasOwnProperty(direction)) {\n let listR = util.clone(list).reverse();\n listR.forEach(item => {\n item.offset = 1 - item.offset;\n });\n prev = framing(listR[0]);\n framesR.push(prev);\n for(let i = 1; i < length; i++) {\n let next = listR[i];\n prev = calFrame(prev, next, target);\n framesR.push(prev);\n }\n }\n // 生成finish的任务事件\n this.__fin = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n this.emit(Event.KARAS_ANIMATION_FINISH);\n };\n frames.forEach(frame => {\n frame.time = duration * frame.offset;\n });\n framesR.forEach(frame => {\n frame.time = duration * frame.offset;\n });\n }\n\n play() {\n if(this.isDestroyed || this.duration <= 0) {\n return this;\n }\n this.__cancelTask();\n this.__playState = 'running';\n // 从头播放还是暂停继续\n if(this.pending) {\n let now = inject.now();\n let diff = now - this.pauseTime;\n // 在没有performance时,防止乱改系统时间导致偏移向前,但不能防止改时间导致的偏移向后\n diff = Math.max(diff, 0);\n this.__offsetTime = diff;\n }\n else {\n let {\n frames,\n framesR,\n target,\n playCount,\n duration,\n direction,\n iterations,\n fill,\n delay,\n endDelay,\n __fin,\n __record,\n } = this;\n let length = frames.length;\n let init = true;\n let first = true;\n this.__cb = () => {\n let { playbackRate, offsetTime } = this;\n let now = inject.now();\n let root = target.root;\n if(init) {\n this.__startTime = this.__lastFpsTime = this.__lastTime = now;\n this.__lastIndex = 0;\n }\n let diff = now - this.__lastTime - offsetTime;\n diff = Math.max(diff, 0);\n if(playbackRate !== 1) {\n diff *= playbackRate;\n }\n this.__diffTime += diff;\n diff = this.__diffTime;\n this.__lastTime = now;\n // delay仅第一次生效\n if(playCount > 0) {\n delay = 0;\n }\n // 还没过前置delay\n if(diff < delay) {\n if(init && {\n backwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n let current = frames[0];\n let needRefresh = stringify(current.style, {}, target);\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n };\n if(needRefresh) {\n root.setRefreshLevel(getLevel(current.style));\n root.addRefreshTask(task);\n }\n }\n init = false;\n return;\n }\n init = false;\n let currentFrames;\n if(direction === 'reverse') {\n currentFrames = framesR;\n }\n else if({ alternate: true, 'alternate-reverse': true }.hasOwnProperty(direction)) {\n let isEven = playCount % 2 === 0;\n if(direction === 'alternate') {\n currentFrames = isEven ? frames : framesR;\n }\n else {\n currentFrames = isEven ? framesR : frames;\n }\n }\n else {\n currentFrames = frames;\n }\n diff -= delay;\n // 因暂停导致的停顿时间需要清零\n this.__offsetTime = 0;\n let i = binarySearch(0, currentFrames.length - 1, diff, frames);\n let current = currentFrames[i];\n let needRefresh;\n // 最后一帧结束动画\n if(i === length - 1) {\n needRefresh = stringify(current.style, this.__lastStyle, target);\n if(playCount < iterations) {\n playCount = ++this.playCount;\n this.__diffTime = 0;\n }\n }\n // 否则根据目前到下一帧的时间差,计算百分比,再反馈到变化数值上\n else {\n // 增加的fps功能,当<60时计算跳帧\n let fps = this.fps;\n if(!util.isNumber(fps) || fps < 0) {\n fps = 60;\n }\n if(!first && fps < 60) {\n let time = now - this.__lastFpsTime;\n if(time < 1000 / fps) {\n return;\n }\n }\n let total = currentFrames[i + 1].time - current.time;\n let percent = diff / total;\n let style = calStyle(current, percent);\n needRefresh = stringify(style, this.__lastStyle, target);\n }\n this.__lastFpsTime = now;\n this.__lastStyle = current.style;\n first = false;\n // 两帧之间没有变化,不触发刷新\n if(root) {\n // 可能涉及字号变化,引发布局变更重新测量\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n if(i === length - 1) {\n // 没到播放次数结束时继续\n if(iterations === Infinity || playCount < iterations) {\n return;\n }\n // 播放结束考虑endDelay\n this.__playState = 'finished';\n frame.offFrame(this.cb);\n // 不是停留在最后一帧还原\n if(!{\n forwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n root.setRefreshLevel(getLevel(__record.hash));\n restore(__record.keys, target);\n }\n // 如果有endDelay还要延迟执行\n let isFinished = diff >= duration + endDelay;\n if(isFinished) {\n root.addRefreshTask(this.__task = __fin);\n }\n else {\n let task = this.__task = () => {\n now = inject.now();\n let diff = now - this.__lastTime - offsetTime - delay;\n if(playbackRate !== 1) {\n diff *= playbackRate;\n }\n this.__diffTime += diff;\n diff = this.__diffTime;\n this.__lastTime = now;\n let isFinished = diff >= duration + endDelay;\n if(isFinished) {\n root.addRefreshTask(this.__task = __fin);\n frame.offFrame(task);\n }\n };\n frame.onFrame(task);\n }\n }\n };\n if(needRefresh) {\n root.setRefreshLevel(getLevel(current.style));\n root.addRefreshTask(task);\n }\n else {\n frame.nextFrame(task);\n }\n }\n };\n }\n // 先执行,本次执行调用refreshTask也是下一帧再渲染,frame的每帧都是下一帧\n this.cb();\n // 防止重复调用多次cb\n frame.offFrame(this.cb);\n frame.onFrame(this.cb);\n this.__pending = false;\n return this;\n }\n\n pause() {\n this.__pending = true;\n this.__pauseTime = inject.now();\n this.__playState = 'paused';\n frame.offFrame(this.cb);\n this.__cancelTask();\n this.emit(Event.KARAS_ANIMATION_PAUSE);\n return this;\n }\n\n finish() {\n let { fill, playState, __fin, __record } = this;\n if(playState === 'finished') {\n return this;\n }\n frame.offFrame(this.cb);\n this.__cancelTask();\n let { target, lastStyle } = this;\n let root = target.root;\n if(root) {\n this.__playState = 'finished';\n let needRefresh;\n // 停留在最后一帧\n if({\n forwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n let last = this.frames[this.frames.length - 1];\n needRefresh = stringify(last.style, lastStyle, this.target);\n if(needRefresh) {\n root.setRefreshLevel(getLevel(last.style));\n root.addRefreshTask(this.__task = __fin);\n }\n else {\n frame.nextFrame(this.__task = __fin);\n }\n }\n else {\n root.setRefreshLevel(getLevel(__record.hash));\n restore(__record.keys, target);\n root.addRefreshTask(this.__task = __fin);\n }\n }\n return this;\n }\n\n cancel() {\n frame.offFrame(this.cb);\n this.__cancelTask();\n if(this.__playState === 'idle') {\n return this;\n }\n this.__playState = 'idle';\n let { target } = this;\n let root = target.root;\n if(root) {\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_CANCEL);\n };\n root.addRefreshTask(task);\n }\n return this;\n }\n\n __cancelTask() {\n let { target, __task } = this;\n if(target.root && __task) {\n target.root.delRefreshTask(__task);\n }\n }\n\n __destroy() {\n frame.offFrame(this.cb);\n this.__cancelTask();\n this.__playState = 'idle';\n this.__isDestroyed = true;\n }\n\n get id() {\n return this.__id;\n }\n get target() {\n return this.__target;\n }\n get list() {\n return this.__list;\n }\n get options() {\n return this.__options;\n }\n get duration() {\n return this.__duration;\n }\n get delay() {\n return this.__delay;\n }\n get endDelay() {\n return this.__endDelay;\n }\n get fps() {\n return this.__fps;\n }\n set fps(v) {\n v = parseInt(v) || 60;\n if(v < 0) {\n v = 60;\n }\n this.__fps = v;\n }\n get iterations() {\n return this.__iterations;\n }\n get fill() {\n return this.__fill;\n }\n get direction() {\n return this.__direction;\n }\n get frames() {\n return this.__frames;\n }\n get framesR() {\n return this.__framesR;\n }\n get playbackRate() {\n return this.__playbackRate;\n }\n set playbackRate(v) {\n v = parseFloat(v) || 0;\n if(v < 0) {\n v = 1;\n }\n this.__playbackRate = v;\n }\n get startTime() {\n return this.__startTime;\n }\n get pending() {\n return this.__pending;\n }\n get offsetTime() {\n return this.__offsetTime;\n }\n get pauseTime() {\n return this.__pauseTime;\n }\n get playState() {\n return this.__playState;\n }\n get playCount() {\n return this.__playCount;\n }\n set playCount(v) {\n this.__playCount = v;\n }\n get cb() {\n return this.__cb;\n }\n get isDestroyed() {\n return this.__isDestroyed;\n }\n get lastStyle() {\n return this.__lastStyle;\n }\n}\n\nexport default Animation;\n","import Node from './Node';\nimport mode from '../util/mode';\nimport unit from '../style/unit';\nimport tf from '../style/transform';\nimport gradient from '../style/gradient';\nimport border from '../style/border';\nimport match from '../style/match';\nimport css from '../style/css';\nimport image from '../style/image';\nimport util from '../util/util';\nimport Component from './Component';\nimport Animation from '../animate/Animation';\nimport inject from '../util/inject';\n\nfunction renderBorder(renderMode, points, color, ctx, xom) {\n if(renderMode === mode.CANVAS) {\n points.forEach(point => {\n ctx.beginPath();\n ctx.fillStyle = color;\n ctx.moveTo(point[0], point[1]);\n for(let i = 2, len = point.length; i < len; i += 2) {\n ctx.lineTo(point[i], point[i + 1]);\n }\n ctx.fill();\n ctx.closePath();\n });\n }\n else if(renderMode === mode.SVG) {\n let s = '';\n points.forEach(point => {\n s += `M ${point[0]} ${point[1]}`;\n for(let i = 2, len = point.length; i < len; i += 2) {\n s += `L ${point[i]} ${point[i + 1]} `;\n }\n });\n let item = {\n type: 'item',\n tagName: 'path',\n props: [\n ['d', s],\n ['fill', color],\n ],\n };\n xom.addBorder([\n ['d', s],\n ['fill', color],\n ]);\n }\n}\n\nfunction renderBgc(renderMode, value, x, y, w, h, ctx, xom) {\n if(renderMode === mode.CANVAS) {\n ctx.beginPath();\n ctx.fillStyle = value;\n ctx.rect(x, y, w, h);\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n xom.addBackground([\n ['x', x],\n ['y', y],\n ['width', w],\n ['height', h],\n ['fill', value]\n ]);\n }\n}\n\nfunction calBackgroundSize(value, x, y, w, h) {\n let res = [];\n value.forEach((item, i) => {\n if(item.unit === unit.PX) {\n res.push(item.value);\n }\n else if(item.unit === unit.PERCENT) {\n res.push((i ? y : x) + item.value * (i ? h : w) * 0.01);\n }\n else if(item.unit === unit.AUTO) {\n res.push(-1);\n }\n else if(item.unit === unit.SIZE) {\n res.push(item.value === 'contain' ? -2 : -3);\n }\n else if(item.unit === unit.POSITION) {\n res.push(item.value);\n }\n });\n return res;\n}\n\nfunction calBackgroundPosition(position, container, size) {\n if(position.value === 'right' || position.value === 'bottom') {\n return container - size;\n }\n else if(position.value === 'center') {\n return (container - size) * 0.5;\n }\n else if(position.unit === unit.PX) {\n return position.value;\n }\n else if(position.unit === unit.PERCENT) {\n return (container - size) * position.value * 0.01;\n }\n return 0;\n}\n\nclass Xom extends Node {\n constructor(tagName, props) {\n super();\n props = props || [];\n // 构建工具中都是arr,手写可能出现hash情况\n if(Array.isArray(props)) {\n this.props = util.arr2hash(props);\n this.__props = props;\n }\n else {\n this.props = props;\n this.__props = util.hash2arr(props);\n }\n this.__tagName = tagName;\n this.__style = this.props.style || {}; // style被解析后的k-v形式\n this.__animateStyle = {}; // 动画过程中的样式\n this.__listener = {};\n this.__props.forEach(item => {\n let k = item[0];\n let v = item[1];\n if(/^on[a-zA-Z]/.test(k)) {\n k = k.slice(2).toLowerCase();\n let arr = this.__listener[k] = this.__listener[k] || [];\n arr.push(v);\n }\n else if(k === 'id' && v) {\n this.__id = v;\n }\n else if(['class', 'className'].indexOf(k) > -1 && v) {\n v = match.splitClass(v);\n if(v) {\n this.__class = v;\n }\n }\n });\n this.__matrix = null;\n this.__matrixEvent = null;\n this.__animationList = [];\n this.__loadBgi = {};\n }\n\n // 设置了css时,解析匹配\n __traverseCss(top, css) {\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__traverseCss(top, css);\n }\n });\n }\n // inline拥有最高优先级\n let style = match.parse(this, top, css) || {};\n for(let i in style) {\n if(style.hasOwnProperty(i) && !this.__style.hasOwnProperty(i)) {\n this.__style[i] = style[i];\n }\n }\n }\n\n __measure() {\n let { children } = this;\n if(children) {\n children.forEach(child => {\n if(child instanceof Xom) {\n child.__measure();\n }\n else if(child instanceof Component) {\n child.shadowRoot.__measure();\n }\n else {\n child.__measure();\n }\n });\n }\n }\n\n // 获取margin/padding的实际值\n __mp(currentStyle, computedStyle, w) {\n let {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = currentStyle;\n computedStyle.marginLeft = this.__mpWidth(marginLeft, w);\n computedStyle.marginTop = this.__mpWidth(marginTop, w);\n computedStyle.marginRight = this.__mpWidth(marginRight, w);\n computedStyle.marginBottom = this.__mpWidth(marginBottom, w);\n computedStyle.paddingLeft = this.__mpWidth(paddingLeft, w);\n computedStyle.paddingTop = this.__mpWidth(paddingTop, w);\n computedStyle.paddingRight = this.__mpWidth(paddingRight, w);\n computedStyle.paddingBottom = this.__mpWidth(paddingBottom, w);\n }\n\n __mpWidth(mp, w) {\n if(mp.unit === unit.PX) {\n return mp.value;\n }\n else if(mp.unit === unit.PERCENT) {\n return mp.value * w * 0.01;\n }\n return 0;\n }\n\n // absolute且无尺寸时,fake标明先假布局一次计算尺寸\n __layout(data, fake) {\n let { w } = data;\n let { isDestroyed, currentStyle, computedStyle } = this;\n let {\n display,\n width,\n } = currentStyle;\n if(width.unit !== unit.AUTO) {\n switch(width.unit) {\n case unit.PX:\n w = width.value;\n break;\n case unit.PERCENT:\n w *= width.value * 0.01;\n break;\n }\n }\n this.__mp(currentStyle, computedStyle, w);\n this.__ox = this.__oy = 0;\n if(isDestroyed || display === 'none') {\n computedStyle.width = computedStyle.height = computedStyle.outerWidth = computedStyle.outerHeight = 0;\n return;\n }\n if(display === 'block') {\n this.__layoutBlock(data, fake);\n }\n else if(display === 'flex') {\n this.__layoutFlex(data, fake);\n }\n else if(display === 'inline') {\n this.__layoutInline(data, fake);\n }\n // 除root节点外relative渲染时做偏移,百分比基于父元素,若父元素没有定高则为0\n if(currentStyle.position === 'relative' && this.parent) {\n let { top, right, bottom, left } = currentStyle;\n let { parent } = this;\n if(top.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'top', top, parent);\n this.__offsetY(n);\n computedStyle.top = n;\n computedStyle.bottom = 'auto';\n }\n else if(bottom.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'bottom', bottom, parent);\n this.__offsetY(-n);\n computedStyle.bottom = n;\n computedStyle.top = 'auto';\n }\n else {\n computedStyle.top = computedStyle.bottom = 'auto';\n }\n if(left.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'left', left, parent, true);\n this.__offsetX(n);\n computedStyle.left = n;\n computedStyle.right = 'auto';\n }\n else if(right.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'right', right, parent, true);\n this.__offsetX(-n);\n computedStyle.right = n;\n computedStyle.left = 'auto';\n }\n else {\n computedStyle.left = computedStyle.right = 'auto';\n }\n }\n // 计算结果存入computedStyle\n computedStyle.width = this.width;\n computedStyle.height = this.height;\n computedStyle.outerWidth = this.outerWidth;\n computedStyle.outerHeight = this.outerHeight;\n }\n\n isGeom() {\n return this.tagName.charAt(0) === '$';\n }\n\n isRoot() {\n return !this.parent;\n }\n\n // 预先计算是否是固定宽高,布局点位和尺寸考虑margin/border/padding\n __preLayout(data) {\n let { x, y, w, h } = data;\n this.__x = x;\n this.__y = y;\n let { currentStyle, computedStyle } = this;\n let {\n width,\n height,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n // 除了auto外都是固定宽高度\n let fixedWidth;\n let fixedHeight;\n if(width.unit !== unit.AUTO) {\n fixedWidth = true;\n switch(width.unit) {\n case unit.PX:\n w = width.value;\n break;\n case unit.PERCENT:\n w *= width.value * 0.01;\n break;\n }\n }\n if(height.unit !== unit.AUTO) {\n fixedHeight = true;\n switch(height.unit) {\n case unit.PX:\n h = height.value;\n break;\n case unit.PERCENT:\n h *= height.value * 0.01;\n break;\n }\n }\n // margin/padding/border影响x和y和尺寸\n x += borderLeftWidth + marginLeft + paddingLeft;\n data.x = x;\n y += borderTopWidth + marginTop + paddingTop;\n data.y = y;\n if(width.unit === unit.AUTO) {\n w -= borderLeftWidth + borderRightWidth + marginLeft + marginRight + paddingLeft + paddingRight;\n }\n if(height.unit === unit.AUTO) {\n h -= borderTopWidth + borderBottomWidth + marginTop + marginBottom + paddingTop + paddingBottom;\n }\n return {\n fixedWidth,\n fixedHeight,\n x,\n y,\n w,\n h,\n };\n }\n\n render(renderMode) {\n this.__renderMode = renderMode;\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n bb: [],\n children: [],\n transform: [],\n opacity: 1,\n };\n }\n let { isDestroyed, ctx, currentStyle, computedStyle, width, height } = this;\n this.__matrix = this.__matrixEvent = null;\n let parent = this.parent;\n let matrix = [1, 0, 0, 1, 0, 0];\n while(parent) {\n if(parent.matrixEvent) {\n matrix = tf.mergeMatrix(parent.matrixEvent, matrix);\n break;\n }\n parent = parent.parent;\n }\n // canvas继承祖先matrix,没有则恢复默认,防止其它matrix影响;svg则要考虑事件\n if(matrix[0] !== 1\n || matrix[1] !== 0\n || matrix[1] !== 0\n || matrix[1] !== 1\n || matrix[1] !== 0\n || matrix[1] !== 0) {\n if(renderMode === mode.CANVAS) {\n this.__matrix = this.__matrixEvent = matrix;\n }\n else if(renderMode === mode.SVG) {\n this.__matrixEvent = matrix;\n }\n }\n if(renderMode === mode.CANVAS) {\n ctx.setTransform(...matrix);\n }\n let {\n display,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n backgroundColor,\n borderTopWidth,\n borderTopColor,\n borderTopStyle,\n borderRightWidth,\n borderRightColor,\n borderRightStyle,\n borderBottomWidth,\n borderBottomColor,\n borderBottomStyle,\n borderLeftWidth,\n borderLeftColor,\n borderLeftStyle,\n visibility,\n } = computedStyle;\n let {\n backgroundImage,\n backgroundSize,\n backgroundPosition,\n backgroundRepeat,\n transform,\n transformOrigin,\n opacity,\n } = currentStyle;\n // 使用sx和sy渲染位置,考虑了relative和translate影响\n let { sx: x, sy: y } = this;\n let x1 = x + marginLeft;\n let x2 = x1 + borderLeftWidth;\n let x3 = x2 + width + paddingLeft + paddingRight;\n let x4 = x3 + borderRightWidth;\n let y1 = y + marginTop;\n let y2 = y1 + borderTopWidth;\n let y3 = y2 + height + paddingTop + paddingBottom;\n let y4 = y3 + borderBottomWidth;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n // 先设置透明度,可以向上累积\n parent = this.parent;\n let opa = opacity;\n while(parent) {\n opa *= parent.currentStyle.opacity;\n parent = parent.parent;\n }\n if(renderMode === mode.CANVAS) {\n ctx.globalAlpha = opa;\n }\n else {\n this.__virtualDom.opacity = opacity;\n }\n // transform和transformOrigin相关\n let tfo = tf.calOrigin(transformOrigin, x2, y2, iw, ih);\n computedStyle.transformOrigin = tfo.join(' ');\n // transform相对于自身\n if(transform) {\n let matrix = tf.calMatrix(transform, tfo, x2, y2, iw, ih);\n // 初始化有可能继承祖先的matrix\n this.__matrix = this.matrix ? tf.mergeMatrix(this.matrix, matrix) : matrix;\n computedStyle.transform = 'matrix(' + matrix.join(', ') + ')';\n let parent = this.parent;\n while(parent) {\n if(parent.matrixEvent) {\n matrix = tf.mergeMatrix(parent.matrixEvent, matrix);\n break;\n }\n parent = parent.parent;\n }\n this.__matrixEvent = matrix;\n if(renderMode === mode.CANVAS) {\n ctx.setTransform(...matrix);\n }\n else if(renderMode === mode.SVG) {\n this.addTransform(['matrix', this.matrix.join(',')]);\n }\n }\n else {\n computedStyle.transform = 'matrix(1, 0, 0, 1, 0, 0)';\n }\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n // 背景色垫底\n if(backgroundColor !== 'transparent') {\n renderBgc(renderMode, backgroundColor, x2, y2, iw, ih, ctx, this);\n }\n // 渐变或图片叠加\n if(backgroundImage) {\n if(util.isString(backgroundImage)) {\n if(this.__loadBgi.url === backgroundImage) {\n backgroundSize = calBackgroundSize(backgroundSize, x2, y2, iw, ih);\n let { width, height } = this.__loadBgi;\n let [w, h] = backgroundSize;\n // -1为auto,-2为contain,-3为cover\n if(w === -1 && h === -1) {\n w = width;\n h = height;\n }\n else if(w === -2) {\n if(width > iw && height > ih) {\n w = width / iw;\n h = height / ih;\n if(w >= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n else if(width > iw) {\n w = iw;\n h = w * height / width;\n }\n else if(height > ih) {\n h = ih;\n w = h * width / height;\n }\n else {\n w = width;\n h = height;\n }\n }\n else if(w === -3) {\n if(iw > width && ih > height) {\n w = width / iw;\n h = height / ih;\n if(w <= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n else if(iw > width) {\n w = iw;\n h = w * height / width;\n }\n else if(ih > height) {\n h = ih;\n w = h * width / height;\n }\n else {\n w = width / iw;\n h = height / ih;\n if(w <= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n }\n else if(w === -1) {\n w = h * width / height;\n }\n else if(h === -1) {\n h = w * height / width;\n }\n let originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, width);\n let originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, height);\n // 超出尺寸模拟mask截取\n let needMask = ['repeat-x', 'repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1\n || originX < x2 || originY < y2 || w > iw || h > ih;\n if(renderMode === mode.CANVAS) {\n // 超出尺寸模拟mask截取\n let cache1;\n let cache2;\n if(needMask) {\n cache1 = this.root.__getImageData();\n this.root.__clear();\n }\n ctx.drawImage(this.__loadBgi.source, originX, originY, w, h);\n // repeat-x\n if(['repeat-x', 'repeat'].indexOf(backgroundRepeat) > -1) {\n }\n // repeat-y\n if(['repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1) {}\n if(needMask) {\n ctx.globalCompositeOperation = 'destination-in';\n renderBgc(renderMode, '#FFF', x2, y2, iw, ih, ctx, this);\n cache2 = this.root.__getImageData();\n this.root.__clear();\n ctx.globalCompositeOperation = 'source-over';\n this.root.__putImageData(util.mergeImageData(cache1, cache2));\n }\n }\n else if(renderMode === mode.SVG) {\n let matrix = image.matrixResize(width, height, w, h, x2, y2, iw, ih);\n let props = [\n ['xlink:href', backgroundImage],\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height]\n ];\n if(matrix) {\n props.push(['transform', 'matrix(' + matrix.join(',') + ')']);\n }\n if(needMask) {\n let maskId = this.defs.add({\n tagName: 'mask',\n props: [],\n children: [{\n tagName: 'rect',\n props: [\n ['x', x2],\n ['y', y2],\n ['width', iw],\n ['height', ih],\n ['fill', '#FFF']\n ],\n }],\n });\n this.virtualDom.bbMask = `url(#${maskId})`;\n }\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props,\n });\n }\n computedStyle.backgroudSize = `${w} ${h}`;\n computedStyle.backgroundPosition = `${originX} ${originY}`;\n computedStyle.backgroundRepeat = backgroundRepeat;\n }\n else {\n this.__loadBgi.url = backgroundImage;\n inject.measureImg(backgroundImage, (data) => {\n if(data.success) {\n this.__loadBgi.source = data.source;\n this.__loadBgi.width = data.width;\n this.__loadBgi.height = data.height;\n this.root.addRefreshTask();\n }\n });\n }\n }\n else if(backgroundImage.k) {\n let bgi = this.__gradient(renderMode, x2, y2, x3, y3, iw, ih, 'backgroundImage', backgroundImage, computedStyle);\n renderBgc(renderMode, bgi, x2, y2, iw, ih, ctx, this);\n }\n }\n else {\n let originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, 0);\n let originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, 0);\n computedStyle.backgroudSize = calBackgroundSize(backgroundSize, x2, y2, iw, ih).join(' ');\n computedStyle.backgroundPosition = `${originX} ${originY}`;\n computedStyle.backgroundRepeat = backgroundRepeat;\n }\n // 边框需考虑尖角,两条相交边平分45°夹角\n if(borderTopWidth > 0 && borderTopColor !== 'transparent') {\n let deg1 = Math.atan(borderTopWidth / borderLeftWidth);\n let deg2 = Math.atan(borderTopWidth / borderRightWidth);\n let points = border.calPoints(borderTopWidth, borderTopStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 0);\n renderBorder(renderMode, points, borderTopColor, ctx, this);\n }\n if(borderRightWidth > 0 && borderRightColor !== 'transparent') {\n let deg1 = Math.atan(borderRightWidth / borderTopWidth);\n let deg2 = Math.atan(borderRightWidth / borderBottomWidth);\n let points = border.calPoints(borderRightWidth, borderRightStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 1);\n renderBorder(renderMode, points, borderRightColor, ctx, this);\n }\n if(borderBottomWidth > 0 && borderBottomColor !== 'transparent') {\n let deg1 = Math.atan(borderBottomWidth / borderLeftWidth);\n let deg2 = Math.atan(borderBottomWidth / borderRightWidth);\n let points = border.calPoints(borderBottomWidth, borderBottomStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 2);\n renderBorder(renderMode, points, borderBottomColor, ctx, this);\n }\n if(borderLeftWidth > 0 && borderLeftColor !== 'transparent') {\n let deg1 = Math.atan(borderLeftWidth / borderTopWidth);\n let deg2 = Math.atan(borderLeftWidth / borderBottomWidth);\n let points = border.calPoints(borderLeftWidth, borderLeftStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 3);\n renderBorder(renderMode, points, borderLeftColor, ctx, this);\n }\n }\n\n __renderByMask(renderMode) {\n let prev = this.prev;\n let hasMask = prev && prev.isMask;\n if(renderMode === mode.CANVAS) {\n // 先保存之前的图像\n let cache1;\n let cache2;\n if(hasMask) {\n cache1 = this.root.__getImageData();\n this.root.__clear();\n }\n // 然后反向先绘制需要遮罩的图层\n this.render(renderMode);\n // 再用mask反遮罩\n if(hasMask) {\n this.ctx.globalCompositeOperation = 'destination-in';\n prev.render(renderMode);\n cache2 = this.root.__getImageData();\n this.root.__clear();\n }\n this.ctx.globalCompositeOperation = 'source-over';\n if(hasMask) {\n this.root.__putImageData(util.mergeImageData(cache1, cache2));\n }\n }\n else if(renderMode === mode.SVG) {\n this.render(renderMode);\n if(hasMask) {\n this.virtualDom.mask = prev.maskId;\n }\n }\n }\n\n __destroy() {\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner && owner.ref[ref]) {\n delete owner.ref[ref];\n }\n }\n // if(this.animation) {\n // this.animation.__destroy();\n // }\n this.animationList.forEach(item => item.__destroy());\n super.__destroy();\n this.__matrix = this.__matrixEvent = null;\n }\n\n // 先查找到注册了事件的节点,再捕获冒泡判断增加性能\n __emitEvent(e, force) {\n let { event: { type } } = e;\n let { isDestroyed, listener, children, computedStyle, outerWidth, outerHeight, matrixEvent } = this;\n if(isDestroyed || computedStyle.display === 'none' || e.__stopPropagation) {\n return;\n }\n let cb;\n if(listener.hasOwnProperty(type)) {\n cb = listener[type];\n }\n let childWillResponse;\n // touchmove之类强制的直接通知即可\n if(force) {\n if(!this.isGeom()) {\n // 先响应absolute/relative高优先级,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e, force)) {\n childWillResponse = true;\n }\n }\n }\n // 再看普通流,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e, force)) {\n childWillResponse = true;\n }\n }\n }\n }\n // touchmove之类也需要考虑target是否是自己以及孩子\n if(!childWillResponse && this.root.__touchstartTarget !== this) {\n return;\n }\n if(e.__stopPropagation) {\n return;\n }\n if(type === 'touchmove' || type === 'touchend' || type === 'touchcancel') {\n e.target = this.root.__touchstartTarget;\n }\n if(cb) {\n cb.forEach(item => {\n if(e.__stopImmediatePropagation) {\n return;\n }\n item(e);\n });\n }\n return true;\n }\n if(!this.isGeom()) {\n // 先响应absolute/relative高优先级,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e)) {\n childWillResponse = true;\n }\n }\n }\n // 再看普通流,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) === -1) {\n if(child.__emitEvent(e)) {\n childWillResponse = true;\n }\n }\n }\n }\n if(e.__stopPropagation) {\n return;\n }\n // child触发则parent一定触发,否则判断事件坐标是否在节点内且未被遮挡\n if(childWillResponse || this.willResponseEvent(e)) {\n e.__hasEmitted = true;\n if(cb) {\n cb.forEach(item => {\n if(e.__stopImmediatePropagation) {\n return;\n }\n if(util.isFunction(item)) {\n item(e);\n }\n });\n }\n return true;\n }\n }\n\n willResponseEvent(e) {\n let { x, y, __hasEmitted } = e;\n if(__hasEmitted) {\n return;\n }\n let { sx, sy, outerWidth, outerHeight, matrixEvent } = this;\n let inThis = tf.pointInQuadrilateral(x - sx, y - sy,\n 0, 0,\n outerWidth,0,\n 0, outerHeight,\n outerWidth, outerHeight,\n matrixEvent);\n if(inThis) {\n if(!e.target) {\n e.target = this;\n // 缓存target给move用\n if(e.event.type === 'touchstart') {\n this.root.__touchstartTarget = this;\n }\n }\n return true;\n }\n }\n\n __gradient(renderMode, x2, y2, x3, y3, iw, ih, ks, vs, computedStyle) {\n let { k, v, d } = vs;\n computedStyle[ks] = k + '-gradient(';\n let cx = x2 + iw * 0.5;\n let cy = y2 + ih * 0.5;\n let res;\n if(k === 'linear') {\n let gd = gradient.getLinear(v, d, cx, cy, iw, ih);\n res = this.__getLg(renderMode, gd);\n computedStyle[ks] += d + 'deg';\n }\n else if(k === 'radial') {\n let gd = gradient.getRadial(v, d, cx, cy, x2, y2, x3, y3);\n res = this.__getRg(renderMode, gd);\n computedStyle[ks] += d;\n }\n v.forEach(item => {\n computedStyle[ks] += ', ' + item[0];\n if(item[1]) {\n computedStyle[ks] += ' ' + item[1].str;\n }\n });\n computedStyle[ks] += ')';\n return res;\n }\n\n __getLg(renderMode, gd) {\n if(renderMode === mode.CANVAS) {\n let lg = this.ctx.createLinearGradient(gd.x1, gd.y1, gd.x2, gd.y2);\n gd.stop.forEach(item => {\n lg.addColorStop(item[1], item[0]);\n });\n return lg;\n }\n else if(renderMode === mode.SVG) {\n let uuid = this.defs.add({\n tagName: 'linearGradient',\n props: [\n ['x1', gd.x1],\n ['y1', gd.y1],\n ['x2', gd.x2],\n ['y2', gd.y2]\n ],\n children: gd.stop.map(item => {\n return {\n tagName: 'stop',\n props: [\n ['stop-color', item[0]],\n ['offset', item[1] * 100 + '%']\n ],\n };\n }),\n });\n return `url(#${uuid})`;\n }\n }\n\n __getRg(renderMode, gd) {\n if(renderMode === mode.CANVAS) {\n let rg = this.ctx.createRadialGradient(gd.cx, gd.cy, 0, gd.cx, gd.cy, gd.r);\n gd.stop.forEach(item => {\n rg.addColorStop(item[1], item[0]);\n });\n return rg;\n }\n else if(renderMode === mode.SVG) {\n let uuid = this.defs.add({\n tagName: 'radialGradient',\n props: [\n ['cx', gd.cx],\n ['cy', gd.cy],\n ['r', gd.r]\n ],\n children: gd.stop.map(item => {\n return {\n tagName: 'stop',\n props: [\n ['stop-color', item[0]],\n ['offset', item[1] * 100 + '%']\n ],\n };\n }),\n });\n return `url(#${uuid})`;\n }\n }\n\n addBorder(props) {\n this.virtualDom.bb.push({\n type: 'item',\n tagName: 'path',\n props,\n });\n }\n\n addBackground(props) {\n this.virtualDom.bb.push({\n type: 'item',\n tagName: 'rect',\n props,\n });\n }\n\n addTransform(props) {\n this.virtualDom.transform.push(props);\n }\n\n animate(list, option) {\n let animation = new Animation(this, list, option);\n this.animationList.push(animation);\n return animation.play();\n }\n\n __computed() {\n css.compute(this, this.isRoot());\n // 即便自己不需要计算,但children还要继续递归检查\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__computed();\n }\n else {\n item.__style = this.currentStyle;\n css.compute(item);\n // 文字首先测量所有字符宽度\n item.__measure();\n }\n });\n }\n }\n\n __repaint() {\n css.repaint(this, this.isRoot());\n // 即便自己不需要计算,但children还要继续递归检查\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__repaint();\n }\n else {\n item.__style = this.currentStyle;\n css.repaint(item);\n }\n });\n }\n }\n\n get tagName() {\n return this.__tagName;\n }\n get outerWidth() {\n let { computedStyle: {\n borderLeftWidth,\n borderRightWidth,\n marginRight,\n marginLeft,\n paddingRight,\n paddingLeft,\n } } = this;\n return this.width\n + borderLeftWidth\n + borderRightWidth\n + marginLeft\n + marginRight\n + paddingLeft\n + paddingRight;\n }\n get outerHeight() {\n let { computedStyle: {\n borderTopWidth,\n borderBottomWidth,\n marginTop,\n marginBottom,\n paddingTop,\n paddingBottom,\n } } = this;\n return this.height\n + borderTopWidth\n + borderBottomWidth\n + marginTop\n + marginBottom\n + paddingTop\n + paddingBottom;\n }\n get listener() {\n return this.__listener;\n }\n get renderMode() {\n return this.__renderMode;\n }\n get matrix() {\n return this.__matrix;\n }\n get matrixEvent() {\n return this.__matrixEvent;\n }\n get id() {\n return this.__id;\n }\n get class() {\n return this.__class || [];\n }\n get animationList() {\n return this.__animationList;\n }\n get animateStyle() {\n return this.__animateStyle;\n }\n get currentStyle() {\n let { style, animateStyle, animationList } = this;\n // 有一个动画在运行则返回animateStyle,否则是style\n for(let i = 0, len = animationList.length; i < len; i++) {\n let animation = animationList[i];\n let { playState, options } = animation;\n if(playState === 'idle') {\n continue;\n }\n else if(playState === 'finished' && ['forwards', 'both'].indexOf(options.fill) === -1) {\n continue;\n }\n return animateStyle;\n }\n return style;\n }\n}\n\nexport default Xom;\n","class LineGroup {\n constructor(x, y) {\n this.__list = [];\n this.__x = x;\n this.__y = y;\n this.__baseLine = 0;\n }\n\n add(item) {\n this.list.push(item);\n }\n\n __calBaseLine() {\n let baseLine = 0;\n this.list.forEach(item => {\n baseLine = Math.max(baseLine, item.baseLine);\n });\n return baseLine;\n }\n\n verticalAlign() {\n let n = this.__baseLine = this.__calBaseLine();\n // 仅当有2个和以上时才需要vertical对齐调整\n if(this.list.length > 1) {\n this.list.forEach(item => {\n let m = item.baseLine;\n if(m !== n) {\n item.__offsetY(n - m);\n }\n });\n }\n }\n\n horizonAlign(diff) {\n this.list.forEach(item => {\n item.__offsetX(diff);\n });\n }\n\n get list() {\n return this.__list;\n }\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get width() {\n let width = 0;\n this.list.forEach(item => {\n width += item.width;\n });\n return width;\n }\n get height() {\n let height = 0;\n this.list.forEach(item => {\n height = Math.max(height, item.height);\n });\n return height;\n }\n get baseLine() {\n return this.__baseLine;\n }\n get size() {\n return this.__list.length;\n }\n}\n\nexport default LineGroup;\n","import Xom from '../node/Xom';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport unit from '../style/unit';\nimport mode from '../util/mode';\nimport util from '../util/util';\nimport matrix from '../math/matrix';\n\nconst REGISTER = {};\n\nclass Geom extends Xom {\n constructor(tagName, props) {\n super(tagName, props);\n this.__isMask = !util.isNil(this.props.mask) || this.props.mask === true;\n }\n\n __init() {\n let style = this.style;\n if(this.isMask) {\n style.position = 'absolute';\n style.display = 'block';\n style.visibility = 'visible';\n style.background = null;\n style.border = null;\n style.strokeWidth = 0;\n }\n css.normalize(style, reset.geom);\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner) {\n owner.ref[ref] = this;\n }\n }\n }\n\n __tryLayInline(w, total) {\n // 无children,直接以style的width为宽度,不定义则为0\n let { currentStyle: { width } } = this;\n if(width.unit === unit.PX) {\n return w - width.value;\n }\n else if(width.unit === unit.PERCENT) {\n return w - total * width.value * 0.01;\n }\n return w;\n }\n\n __calAutoBasis(isDirectionRow) {\n let b = 0;\n let min = 0;\n let max = 0;\n let { currentStyle, computedStyle } = this;\n // 计算需考虑style的属性\n let {\n width,\n height,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n } = computedStyle;\n let main = isDirectionRow ? width : height;\n if(main.unit !== unit.AUTO) {\n b = max += main.value;\n }\n // border也得计算在内\n if(isDirectionRow) {\n let w = borderRightWidth + borderLeftWidth;\n b += w;\n max += w;\n min += w;\n }\n else {\n let h = borderTopWidth + borderBottomWidth;\n b += h;\n max += h;\n min += h;\n }\n return { b, min, max };\n }\n\n __layoutBlock(data) {\n let { fixedHeight, w, h } = this.__preLayout(data);\n let {\n marginLeft,\n marginRight,\n width,\n } = this.currentStyle;\n this.__width = w;\n this.__height = fixedHeight ? h : 0;\n // 处理margin:xx auto居中对齐\n if(marginLeft.unit === unit.AUTO && marginRight.unit === unit.AUTO && width.unit !== unit.AUTO) {\n let ow = this.outerWidth;\n if(ow < data.w) {\n this.__offsetX((data.w - ow) * 0.5);\n }\n }\n }\n\n __layoutFlex(data) {\n // 无children所以等同于block\n this.__layoutBlock(data);\n }\n\n __layoutInline(data) {\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n // 元素的width不能超过父元素w\n this.__width = fixedWidth ? w : x - data.x;\n this.__height = fixedHeight ? h : y - data.y;\n }\n\n __preRender(renderMode) {\n let { sx: x, sy: y, width, height, currentStyle, computedStyle } = this;\n let {\n strokeWidth,\n fill,\n stroke,\n strokeDasharray,\n strokeLinecap,\n } = currentStyle;\n let {\n borderTopWidth,\n borderLeftWidth,\n display,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n visibility,\n } = computedStyle;\n let originX = x + borderLeftWidth + marginLeft + paddingLeft;\n let originY = y + borderTopWidth + marginTop + paddingTop;\n let cx = originX + width * 0.5;\n let cy = originY + height * 0.5;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n if(strokeWidth.unit === unit.PX) {\n strokeWidth = strokeWidth.value;\n }\n else if(strokeWidth.unit === unit.PERCENT) {\n strokeWidth = strokeWidth.value * width * 0.01;\n }\n else {\n strokeWidth = 0;\n }\n computedStyle.strokeWidth = strokeWidth;\n if(stroke.k === 'linear' || stroke.k === 'radial') {\n stroke = this.__gradient(renderMode, originX, originY, originY + iw, originY + ih, iw, ih, 'stroke', stroke, computedStyle);\n }\n else {\n computedStyle.stroke = stroke;\n }\n if(fill.k === 'linear' || fill.k === 'radial') {\n fill = this.__gradient(renderMode, originX, originY, originY + iw, originY + ih, iw, ih, 'fill', fill, computedStyle);\n }\n else {\n computedStyle.fill = fill;\n }\n computedStyle.strokeWidth = strokeWidth;\n computedStyle.strokeDasharray = strokeDasharray;\n computedStyle.strokeLinecap = strokeLinecap;\n return {\n x,\n y,\n originX,\n originY,\n cx,\n cy,\n display,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n fill,\n visibility,\n };\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { isDestroyed, computedStyle: { display } } = this;\n if(isDestroyed || display === 'none') {\n return {\n isDestroyed,\n display,\n };\n }\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n ...super.virtualDom,\n type: 'geom',\n };\n }\n return this.__preRender(renderMode);\n }\n\n __renderAsMask(renderMode) {\n if(renderMode === mode.CANVAS) {}\n else if(renderMode === mode.SVG) {\n this.render(renderMode);\n let vd = this.virtualDom;\n vd.isMask = true;\n // svg的mask没有transform,需手动计算变换后的坐标应用\n let children = util.clone(vd.children);\n let m = this.matrixEvent;\n children.forEach(child => {\n let xi = 0;\n let yi = 1;\n let x, y;\n let props = child.props;\n if(child.tagName === 'rect') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'x') {\n xi = i;\n x = v;\n }\n else if(k === 'y') {\n yi = i;\n y = v;\n }\n }\n let point = matrix.calPoint([x, y], m);\n props[xi][1] = point[0];\n props[yi][1] = point[1];\n }\n else if(child.tagName === 'circle' || child.tagName === 'ellipse') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'cx') {\n xi = i;\n x = v;\n }\n else if(k === 'cy') {\n yi = i;\n y = v;\n }\n }\n let point = matrix.calPoint([x, y], m);\n props[xi][1] = point[0];\n props[yi][1] = point[1];\n }\n else if(child.tagName === 'polygon') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'points') {\n props[i][1] = v.replace(/([\\d.]+),([\\d.]+)/g, ($0, $1, $2) => {\n return matrix.calPoint([$1, $2], m).join(',');\n });\n break;\n }\n }\n }\n else if(child.tagName === 'path') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'd') {\n props[i][1] = v.replace(/([\\d.]+),([\\d.]+)/g, ($0, $1, $2) => {\n return matrix.calPoint([$1, $2], m).join(',');\n });\n break;\n }\n }\n }\n });\n let maskId = this.defs.add({\n tagName: 'mask',\n props: [],\n children,\n });\n this.__maskId = `url(#${maskId})`;\n }\n }\n\n addGeom(tagName, props) {\n props = util.hash2arr(props);\n this.virtualDom.children.push({\n type: 'item',\n tagName,\n props,\n });\n }\n\n get tagName() {\n return this.__tagName;\n }\n get baseLine() {\n return this.__height;\n }\n get isMask() {\n return this.__isMask;\n }\n get maskId() {\n return this.__maskId;\n }\n\n static getRegister(name) {\n if(!REGISTER.hasOwnProperty(name)) {\n throw new Error(`Geom has not register: ${name}`);\n }\n return REGISTER[name];\n }\n static register(name, obj) {\n if(Geom.hasRegister(name)) {\n throw new Error(`Geom has already register: ${name}`);\n }\n REGISTER[name] = obj;\n }\n static hasRegister(name) {\n return REGISTER.hasOwnProperty(name);\n }\n}\n\nexport default Geom;\n","import Xom from './Xom';\nimport Text from './Text';\nimport LineGroup from './LineGroup';\nimport Geom from '../geom/Geom';\nimport util from '../util/util';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport unit from '../style/unit';\nimport mode from '../util/mode';\nimport sort from '../util/sort';\nimport Component from './Component';\n\nconst TAG_NAME = {\n 'div': true,\n 'span': true,\n 'img': true,\n};\nconst INLINE = {\n 'span': true,\n 'img': true,\n};\n\nclass Dom extends Xom {\n constructor(tagName, props, children) {\n super(tagName, props);\n this.__children = children || [];\n this.__flowChildren = []; // 非绝对定位孩子\n this.__absChildren = []; // 绝对定位孩子\n this.__lineGroups = []; // 一行inline元素组成的LineGroup对象后的存放列表\n }\n\n /**\n * 1. 封装string为Text节点\n * 2. 打平children中的数组,变成一维\n * 3. 合并相连的Text节点\n * 4. 检测inline不能包含block和flex\n * 5. 设置parent和prev/next和ctx和defs和mode\n */\n __traverse(ctx, defs, renderMode) {\n let list = [];\n this.__traverseChildren(this.children, list, ctx, defs, renderMode);\n for(let i = list.length - 1; i > 0; i--) {\n let item = list[i];\n if(item instanceof Text) {\n let prev = list[i - 1];\n if(prev instanceof Text) {\n prev.content += item.content;\n list.splice(i, 1);\n }\n else {\n i--;\n }\n }\n }\n let prev = null;\n list.forEach(item => {\n item.__ctx = ctx;\n item.__defs = defs;\n if(prev) {\n prev.__next = item;\n item.__prev = prev;\n }\n item.__parent = this;\n prev = item;\n });\n this.__children = list;\n }\n\n __traverseChildren(children, list, ctx, defs, renderMode) {\n if(Array.isArray(children)) {\n children.forEach(item => {\n this.__traverseChildren(item, list, ctx, defs, renderMode);\n });\n }\n else if(children instanceof Dom || children instanceof Component) {\n list.push(children);\n children.__traverse(ctx, defs, renderMode);\n }\n // 图形没有children\n else if(children instanceof Geom) {\n list.push(children);\n }\n // 排除掉空的文本\n else if(!util.isNil(children)) {\n let text = new Text(children);\n text.__renderMode = renderMode;\n list.push(text);\n }\n }\n\n // 合并设置style,包括继承和默认值,修改一些自动值和固定值,测量所有文字的宽度\n __init() {\n let style = this.__style;\n // 仅支持flex/block/inline/none\n if(!style.display || ['flex', 'block', 'inline', 'none'].indexOf(style.display) === -1) {\n if(INLINE.hasOwnProperty(this.tagName)) {\n style.display = 'inline';\n }\n else {\n style.display = 'block';\n }\n }\n // 标准化处理,默认值、简写属性\n css.normalize(style, reset.dom);\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__init();\n }\n else {\n item.__style = style;\n }\n if(item instanceof Text || item.style.position !== 'absolute') {\n this.__flowChildren.push(item);\n }\n else {\n this.__absChildren.push(item);\n }\n });\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner) {\n owner.ref[ref] = this;\n }\n }\n }\n\n // 给定父宽度情况下,尝试行内放下后的剩余宽度,为负数即放不下\n __tryLayInline(w, total) {\n let { flowChildren, currentStyle: { width } } = this;\n if(width.unit === unit.PX) {\n return w - width.value;\n }\n else if(width.unit === unit.PERCENT) {\n return w - total * width.value * 0.01;\n }\n for(let i = 0; i < flowChildren.length; i++) {\n // 当放不下时直接返回,无需继续多余的尝试计算\n if(w < 0) {\n return w;\n }\n let item = flowChildren[i];\n if(item instanceof Xom) {\n w -= item.__tryLayInline(w, total);\n }\n else {\n w -= item.textWidth;\n }\n }\n return w;\n }\n\n // 设置y偏移值,递归包括children,此举在justify-content/margin-auto等对齐用\n __offsetX(diff, isLayout) {\n super.__offsetX(diff, isLayout);\n this.flowChildren.forEach(item => {\n if(item) {\n item.__offsetX(diff, isLayout);\n }\n });\n }\n\n __offsetY(diff, isLayout) {\n super.__offsetY(diff, isLayout);\n this.flowChildren.forEach(item => {\n if(item) {\n item.__offsetY(diff, isLayout);\n }\n });\n }\n\n __calAutoBasis(isDirectionRow, w, h, isRecursion) {\n let b = 0;\n let min = 0;\n let max = 0;\n let { flowChildren, currentStyle, computedStyle } = this;\n // 计算需考虑style的属性\n let {\n width,\n height,\n marginLeft,\n marginTop,\n marginRight,\n marginBottom,\n paddingLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n } = computedStyle;\n let main = isDirectionRow ? width : height;\n if(main.unit === unit.PX) {\n b = max = main.value;\n // 递归时children的长度会影响flex元素的最小宽度\n if(isRecursion) {\n min = b;\n }\n }\n // 递归children取最大值\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n let { b: b2, min: min2, max: max2 } = item.__calAutoBasis(isDirectionRow, w, h, true);\n b = Math.max(b, b2);\n min = Math.max(min, min2);\n max = Math.max(max, max2);\n }\n // 文本\n else if(isDirectionRow) {\n min = Math.max(item.charWidth, min);\n max = Math.max(item.textWidth, max);\n }\n // Geom\n else {\n item.__layout({\n x: 0,\n y: 0,\n w,\n h,\n }, true);\n min = Math.max(min, item.height);\n max = Math.max(max, item.height);\n }\n });\n // margin/padding/border也得计算在内,此时还没有,百分比相对于父flex元素的宽度\n if(isDirectionRow) {\n let mp = this.__calMp(marginLeft, w)\n + this.__calMp(marginRight, w)\n + this.__calMp(paddingLeft, w)\n + this.__calMp(paddingRight, w);\n let w2 = borderRightWidth + borderLeftWidth + mp;\n b += w2;\n max += w2;\n min += w2;\n }\n else {\n let mp = this.__calMp(marginTop, w)\n + this.__calMp(marginBottom, w)\n + this.__calMp(paddingTop, w)\n + this.__calMp(paddingBottom, w);\n let h2 = borderTopWidth + borderBottomWidth + mp;\n b += h2;\n max += h2;\n min += h2;\n }\n return { b, min, max };\n }\n\n // 换算margin/padding为px单位\n __calMp(v, w) {\n let n = 0;\n if(v.unit === unit.PX) {\n n += v.value;\n }\n else if(v.unit === unit.PERCENT) {\n v.value *= w * 0.01;\n v.unit = unit.PX;\n n += v.value;\n }\n return n;\n }\n\n // 本身block布局时计算好所有子元素的基本位置\n __layoutBlock(data) {\n let { flowChildren, currentStyle, computedStyle, lineGroups } = this;\n lineGroups.splice(0);\n let {\n textAlign,\n } = computedStyle;\n let { fixedHeight, x, y, w, h } = this.__preLayout(data);\n // 递归布局,将inline的节点组成lineGroup一行\n let lineGroup = new LineGroup(x, y);\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n if(item.currentStyle.display === 'inline') {\n // inline开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.outerWidth;\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.outerWidth;\n lineGroup.add(item);\n }\n }\n else {\n // block先处理之前可能的lineGroup\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n lineGroup = new LineGroup(data.x, y);\n }\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n x = data.x;\n y += item.outerHeight;\n }\n }\n // 文字和inline类似\n else {\n // x开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.width;\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.width;\n lineGroup.add(item);\n }\n }\n });\n // 结束后处理可能遗留的最后的lineGroup\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n }\n this.__width = w;\n this.__height = fixedHeight ? h : y - data.y;\n // text-align\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineGroups.forEach(lineGroup => {\n let diff = w - lineGroup.width;\n if(diff > 0) {\n lineGroup.horizonAlign(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n this.__marginAuto(currentStyle, data);\n }\n\n // 处理margin:xx auto居中对齐\n __marginAuto(style, data) {\n if(style.marginLeft.unit === unit.AUTO && style.marginRight.unit === unit.AUTO && style.width.unit !== unit.AUTO) {\n let ow = this.outerWidth;\n if(ow < data.w) {\n this.__offsetX((data.w - ow) * 0.5, true);\n }\n }\n }\n\n // 弹性布局时的计算位置\n __layoutFlex(data) {\n let { flowChildren, currentStyle } = this;\n let {\n flexDirection,\n justifyContent,\n alignItems,\n } = currentStyle;\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n let isDirectionRow = flexDirection === 'row';\n // 计算伸缩基数\n let growList = [];\n let shrinkList = [];\n let basisList = [];\n let minList = [];\n let growSum = 0;\n let shrinkSum = 0;\n let basisSum = 0;\n let maxSum = 0;\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n let { currentStyle, computedStyle } = item;\n let { flexGrow, flexShrink, flexBasis } = currentStyle;\n growList.push(flexGrow);\n shrinkList.push(flexShrink);\n growSum += flexGrow;\n shrinkSum += flexShrink;\n let { b, min, max } = item.__calAutoBasis(isDirectionRow, w, h);\n // 根据basis不同,计算方式不同\n if(flexBasis.unit === unit.AUTO) {\n basisList.push(max);\n basisSum += max;\n }\n else if(flexBasis.unit === unit.PX) {\n computedStyle.flexBasis = b = flexBasis.value;\n basisList.push(b);\n basisSum += b;\n }\n else if(flexBasis.unit === unit.PERCENT) {\n b = computedStyle.flexBasis = (isDirectionRow ? w : h) * flexBasis.value * 0.01;\n basisList.push(b);\n basisSum += b;\n }\n maxSum += max;\n minList.push(min);\n }\n else {\n growList.push(0);\n shrinkList.push(1);\n shrinkSum += 1;\n if(isDirectionRow) {\n basisList.push(item.textWidth);\n basisSum += item.textWidth;\n maxSum += item.textWidth;\n minList.push(item.charWidth);\n }\n else {\n item.__layout({\n x: 0,\n y: 0,\n w,\n h,\n }, true);\n basisList.push(item.height);\n basisSum += item.height;\n maxSum += item.height;\n minList.push(item.height);\n }\n }\n });\n let maxCross = 0;\n // 判断是否超出,决定使用grow还是shrink\n let isOverflow = maxSum > (isDirectionRow ? w : h);\n flowChildren.forEach((item, i) => {\n let main;\n let shrink = shrinkList[i];\n let grow = growList[i];\n // 计算主轴长度\n if(isOverflow) {\n let overflow = basisSum - (isDirectionRow ? w : h);\n main = shrink ? (basisList[i] - overflow * shrink / shrinkSum) : basisList[i];\n }\n else {\n let free = (isDirectionRow ? w : h) - basisSum;\n main = grow ? (basisList[i] + free * grow / growSum) : basisList[i];\n }\n // 主轴长度的最小值不能小于元素的最小长度,比如横向时的字符宽度\n main = Math.max(main, minList[i]);\n if(item instanceof Xom || item instanceof Component) {\n let { currentStyle, computedStyle } = item;\n let {\n display,\n flexDirection,\n width,\n height,\n } = currentStyle;\n if(isDirectionRow) {\n // row的flex的child如果是inline,变为block\n if(display === 'inline') {\n currentStyle.display = computedStyle.display = 'block';\n }\n // 横向flex的child如果是竖向flex,高度自动的话要等同于父flex的高度\n else if(display === 'flex' && flexDirection === 'column' && fixedHeight && height.unit === unit.AUTO) {\n height.value = h;\n height.unit = unit.PX;\n }\n item.__layout({\n x,\n y,\n w: main,\n h,\n });\n }\n else {\n // column的flex的child如果是inline,变为block\n if(display === 'inline') {\n currentStyle.display = computedStyle.display = 'block';\n }\n // 竖向flex的child如果是横向flex,宽度自动的话要等同于父flex的宽度\n else if(display === 'flex' && flexDirection === 'row' && width.unit === unit.AUTO) {\n width.value = w;\n width.unit = unit.PX;\n }\n item.__layout({\n x,\n y,\n w,\n h: main,\n });\n }\n // 重设因伸缩而导致的主轴长度\n if(isOverflow && shrink || !isOverflow && grow) {\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDirectionRow) {\n item.__width = main - marginLeft - marginRight - paddingLeft - paddingRight - borderLeftWidth - borderRightWidth;\n }\n else {\n item.__height = main - marginTop - marginBottom - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth;\n }\n }\n }\n else {\n item.__layout({\n x,\n y,\n w: isDirectionRow ? main : w,\n h: isDirectionRow ? h : main,\n });\n }\n if(isDirectionRow) {\n x += item.outerWidth;\n maxCross = Math.max(maxCross, item.outerHeight);\n }\n else {\n y += item.outerHeight;\n maxCross = Math.max(maxCross, item.outerWidth);\n }\n });\n // 计算主轴剩余时要用真实剩余空间而不能用伸缩剩余空间\n let diff = isDirectionRow ? w - x + data.x : h - y + data.y;\n // 主轴侧轴对齐方式\n if(!isOverflow && growSum === 0 && diff > 0) {\n let len = flowChildren.length;\n if(justifyContent === 'flex-end') {\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(diff, true) : child.__offsetY(diff, true);\n }\n }\n else if(justifyContent === 'center') {\n let center = diff * 0.5;\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(center, true) : child.__offsetY(center, true);\n }\n }\n else if(justifyContent === 'space-between') {\n let between = diff / (len - 1);\n for(let i = 1; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(between * i, true) : child.__offsetY(between * i, true);\n }\n }\n else if(justifyContent === 'space-around') {\n let around = diff / (len + 1);\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(around * (i + 1), true) : child.__offsetY(around * (i + 1), true);\n }\n }\n }\n // 子元素侧轴伸展\n if(isDirectionRow) {\n // 父元素固定高度,子元素可能超过,侧轴最大长度取固定高度\n if(fixedHeight) {\n maxCross = h;\n }\n y += maxCross;\n }\n else {\n if(fixedWidth) {\n maxCross = w;\n }\n }\n // 侧轴对齐\n if(alignItems === 'stretch') {\n // 短侧轴的children伸张侧轴长度至相同,超过的不动,固定宽高的也不动\n flowChildren.forEach(item => {\n let { computedStyle, currentStyle } = item;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDirectionRow) {\n if(currentStyle.height.unit === unit.AUTO) {\n item.__height = computedStyle.height = maxCross - marginTop - marginBottom - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth;\n }\n }\n else {\n if(currentStyle.width.unit === unit.AUTO) {\n item.__width = computedStyle.width = maxCross - marginLeft - marginRight - paddingLeft - paddingRight - borderRightWidth - borderLeftWidth;\n }\n }\n });\n }\n else if(alignItems === 'center') {\n flowChildren.forEach(item => {\n let diff = maxCross - item.outerHeight;\n if(diff > 0) {\n item.__offsetY(diff * 0.5, true);\n }\n });\n }\n else if(alignItems === 'flex-end') {\n flowChildren.forEach(item => {\n let diff = maxCross - item.outerHeight;\n if(diff > 0) {\n item.__offsetY(diff, true);\n }\n });\n }\n this.__width = w;\n this.__height = fixedHeight ? h : y - data.y;\n this.__marginAuto(currentStyle, data);\n }\n\n // inline比较特殊,先简单顶部对其,后续还需根据vertical和lineHeight计算y偏移\n __layoutInline(data, fake) {\n let { flowChildren, computedStyle, lineGroups } = this;\n lineGroups.splice(0);\n let {\n textAlign,\n } = computedStyle;\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n let maxX = x;\n // 递归布局,将inline的节点组成lineGroup一行\n let lineGroup = new LineGroup(x, y);\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n // 绝对定位跳过\n if(item.currentStyle.position === 'absolute') {\n this.absChildren.push(item);\n return;\n }\n let { display } = item.currentStyle;\n if(fake) {\n item.currentStyle.display = 'inline';\n }\n // inline开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.outerWidth;\n maxX = Math.max(maxX, x);\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.outerWidth;\n maxX = Math.max(maxX, x);\n lineGroup.add(item);\n }\n if(fake) {\n item.currentStyle.display = display;\n }\n }\n // inline里的其它只有文本\n else {\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.width;\n maxX = Math.max(maxX, x);\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.width;\n maxX = Math.max(maxX, x);\n lineGroup.add(item);\n }\n }\n });\n // 结束后处理可能遗留的最后的lineGroup,children为空时可能size为空\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n }\n // 元素的width不能超过父元素w\n this.__width = fixedWidth ? w : maxX - data.x;\n this.__height = fixedHeight ? h : y - data.y;\n // text-align\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineGroups.forEach(lineGroup => {\n let diff = this.__width - lineGroup.width;\n if(diff > 0) {\n lineGroup.horizonAlign(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n }\n\n // 只针对绝对定位children布局\n __layoutAbs(container, data) {\n let { x, y, width, height, currentStyle, computedStyle } = container;\n let { isDestroyed, children, absChildren } = this;\n let {\n display,\n } = currentStyle;\n let {\n borderTopWidth,\n borderLeftWidth,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDestroyed || display === 'none') {\n return;\n }\n x += marginLeft + borderLeftWidth;\n y += marginTop + borderTopWidth;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n // 对absolute的元素进行相对容器布局\n absChildren.forEach(item => {\n let { currentStyle, computedStyle } = item;\n let { left, top, right, bottom, width, height, display, flexDirection } = currentStyle;\n let x2, y2, w2, h2;\n let onlyRight;\n let onlyBottom;\n let fixedTop;\n let fixedRight;\n let fixedBottom;\n let fixedLeft;\n if(left !== undefined && left.unit !== unit.AUTO) {\n fixedLeft = true;\n computedStyle.left = css.calAbsolute(currentStyle, 'left', left, iw);\n }\n else {\n computedStyle.left = 'auto';\n }\n if(right !== undefined && right.unit !== unit.AUTO) {\n fixedRight = true;\n computedStyle.right = css.calAbsolute(currentStyle, 'right', right, iw);\n }\n else {\n computedStyle.right = 'auto';\n }\n if(top !== undefined && top.unit !== unit.AUTO) {\n fixedTop = true;\n computedStyle.top = css.calAbsolute(currentStyle, 'top', top, ih);\n }\n else {\n computedStyle.top = 'auto';\n }\n if(bottom !== undefined && bottom.unit !== unit.AUTO) {\n fixedBottom = true;\n computedStyle.bottom = css.calAbsolute(currentStyle, 'bottom', bottom, ih);\n }\n else {\n computedStyle.bottom = 'auto';\n }\n // width优先级高于right高于left,即最高left+right,其次left+width,再次right+width,然后仅申明单个,最次全部auto\n if(fixedLeft && fixedRight) {\n x2 = x + computedStyle.left;\n w2 = x + iw - computedStyle.right - x2;\n }\n else if(fixedLeft && width.unit !== unit.AUTO) {\n x2 = x + computedStyle.left;\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n }\n else if(fixedRight && width.unit !== unit.AUTO) {\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n x2 = x + iw - computedStyle.right - w2;\n }\n else if(fixedLeft) {\n x2 = x + computedStyle.left;\n }\n else if(fixedRight) {\n x2 = x + iw - computedStyle.right;\n onlyRight = true;\n }\n else {\n x2 = x + paddingLeft;\n if(width.unit !== unit.AUTO) {\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n }\n }\n // top/bottom/height优先级同上\n if(fixedTop && fixedBottom) {\n y2 = y + computedStyle.top;\n h2 = y + ih - computedStyle.bottom - y2;\n }\n else if(fixedTop && height.unit !== unit.AUTO) {\n y2 = y + computedStyle.top;\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n }\n else if(fixedBottom && height.unit !== unit.AUTO) {\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n y2 = y + ih - computedStyle.bottom - h2;\n }\n else if(fixedTop) {\n y2 = y + computedStyle.top;\n }\n else if(fixedBottom) {\n y2 = y + ih - computedStyle.bottom;\n onlyBottom = true;\n }\n // 未声明y的找到之前的流布局child,紧随其下\n else {\n y2 = y;\n let prev = item.prev;\n while(prev) {\n if(prev instanceof Text || prev.computedStyle.position !== 'absolute') {\n y2 = prev.y + prev.outerHeight;\n break;\n }\n prev = prev.prev;\n }\n if(!prev) {\n y2 = y;\n }\n if(height.unit !== unit.AUTO) {\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n }\n }\n if(w2 !== undefined) {\n currentStyle.width = {\n value: w2,\n unit: unit.PX,\n };\n }\n if(h2 !== undefined) {\n currentStyle.height = {\n value: h2,\n unit: unit.PX,\n };\n }\n // 记录初始display,同时absolute不能为inline\n if (display === 'inline') {\n display = 'block';\n }\n // 没设宽高,在获取最大宽高后,display恢复重新布局一次\n let fake;\n if(display === 'block' && w2 === undefined) {\n fake = true;\n }\n else if(display === 'flex') {\n if(flexDirection === 'row' && w2 === undefined) {\n fake = true;\n }\n else if(flexDirection === 'column' && h2 === undefined) {\n fake = true;\n }\n }\n // 绝对定位模拟类似inline布局,因为宽高可能未定义,由普通流children布局后决定\n if(fake) {\n currentStyle.display = 'inline';\n }\n // onlyRight或onlyBottom时做的布局其实是以那个点位为left/top布局,外围尺寸限制要特殊计算\n if(onlyRight && onlyBottom) {\n w2 = x2 - x;\n h2 - y2 - y;\n }\n else if(onlyRight) {\n w2 = x2 - x;\n h2 = data.h - y2;\n }\n else if(onlyBottom) {\n item.__layout({\n x: x2,\n y: y2,\n w: data.w - x2,\n h: y2 - y,\n });\n w2 = data.w - x2;\n h2 - y2 - y;\n }\n else {\n w2 = data.w - x2;\n h2 = data.h - y2;\n }\n item.__layout({\n x: x2,\n y: y2,\n w: w2,\n h: h2,\n }, fake);\n // 取孩子宽度最大值,display恢复重新布局\n if(fake) {\n let max = 0;\n item.flowChildren.forEach(item => {\n max = Math.max(max, item.outerWidth);\n });\n currentStyle.width = {\n value: max,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: item.height,\n unit: unit.PX,\n };\n item.__layout({\n x: x2,\n y: y2,\n w: w2,\n h: h2,\n });\n currentStyle.display = display;\n }\n // right或bottom布局完成后还要偏移回来\n if(onlyRight && onlyBottom) {\n item.__offsetX(-item.outerWidth, true);\n item.__offsetY(-item.outerHeight, true);\n }\n else if(onlyRight) {\n item.__offsetX(-item.outerWidth, true);\n }\n else if(onlyBottom) {\n item.__offsetY(-item.outerHeight, true);\n }\n });\n // 递归进行,遇到absolute/relative的设置新容器\n children.forEach(item => {\n if(item instanceof Dom) {\n item.__layoutAbs(['absolute', 'relative'].indexOf(item.computedStyle.position) > -1 ? item : container, data);\n }\n else if(item instanceof Component) {\n let sr = item.shadowRoot;\n if(sr instanceof Dom) {\n sr.__layoutAbs(sr, data);\n }\n }\n });\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { isDestroyed, computedStyle: { display, visibility }, flowChildren, children } = this;\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n // 先渲染过滤mask\n children.forEach(item => {\n if(item.isMask) {\n item.__renderAsMask(renderMode);\n }\n });\n // 先绘制static\n flowChildren.forEach(item => {\n if(item.isMask) {}\n else if(item instanceof Text || item.computedStyle.position === 'static') {\n item.__renderByMask(renderMode);\n }\n });\n // 再绘制relative和absolute\n children.forEach(item => {\n if(item.isMask) {}\n else if((item instanceof Xom || item instanceof Component) && ['relative', 'absolute'].indexOf(item.computedStyle.position) > -1) {\n item.__renderByMask(renderMode);\n }\n });\n if(renderMode === mode.SVG) {\n // 过滤掉mask\n let children = this.children.slice(0);\n children = children.filter(item => {\n return !item.isMask;\n });\n // 由于svg严格按照先后顺序渲染,没有z-index概念,需要排序将relative/absolute放后面\n sort(children, function(a, b) {\n if(b.computedStyle.position === 'static' && ['relative', 'absolute'].indexOf(a.computedStyle.position) > -1) {\n return true;\n }\n });\n this.__virtualDom = {\n ...super.virtualDom,\n type: 'dom',\n children: children.map(item => item.virtualDom),\n };\n }\n }\n\n __destroy() {\n super.__destroy();\n this.children.forEach(child => {\n child.__destroy();\n });\n this.children.splice(0);\n this.flowChildren.splice(0);\n this.absChildren.splice(0);\n this.lineGroups.splice(0);\n }\n\n get tagName() {\n return this.__tagName;\n }\n get children() {\n return this.__children;\n }\n get flowChildren() {\n return this.__flowChildren;\n }\n get absChildren() {\n return this.__absChildren;\n }\n get lineGroups() {\n return this.__lineGroups;\n }\n get baseLine() {\n let len = this.lineGroups.length;\n if(len) {\n let last = this.lineGroups[len - 1];\n return last.y - this.y + last.baseLine;\n }\n return this.y;\n }\n\n static isValid(s) {\n return TAG_NAME.hasOwnProperty(s);\n }\n}\n\nexport default Dom;\n","import Dom from './Dom';\nimport mode from '../util/mode';\nimport inject from '../util/inject';\nimport util from '../util/util';\nimport unit from '../style/unit';\nimport transform from '../style/transform';\nimport image from '../style/image';\nimport level from '../animate/level';\n\nconst CACHE = {};\nconst INIT = 0;\nconst LOADING = 1;\nconst LOADED = 2;\n\nclass Img extends Dom {\n constructor(tagName, props) {\n super(tagName, props, []);\n // 空url用错误图代替\n if(!this.src || !this.src.trim()) {\n this.__error = true;\n let { style: { width, height } } = this;\n width = width || { unit: unit.AUTO };\n height = height || { unit: unit.AUTO };\n if(width.unit === unit.AUTO) {\n width.value = 32;\n width.unit = unit.PX;\n }\n if(height.unit === unit.AUTO) {\n height.value = 32;\n height.unit = unit.PX;\n }\n }\n }\n\n __layout(data) {\n super.__layout(data);\n let { isDestroyed, src, currentStyle } = this;\n let { display, width, height } = currentStyle;\n if(isDestroyed || display === 'none') {\n return;\n }\n let { width: w, height: h } = this;\n let cache = CACHE[this.src] = CACHE[this.src] || {\n state: INIT,\n task: [],\n };\n let cb = cache => {\n if(cache.success) {\n this.__source = cache.source;\n }\n else {\n this.__error = true;\n }\n this.__imgWidth = cache.width;\n this.__imgHeight = cache.height;\n let lv = level.REFLOW;\n // 宽高都为auto,使用加载测量的数据\n if(width.unit === unit.AUTO && height.unit === unit.AUTO) {\n currentStyle.width = {\n value: cache.width,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: cache.height,\n unit: unit.PX,\n };\n }\n // 否则有一方定义则按比例调整另一方适应\n else if(width.unit === unit.AUTO) {\n currentStyle.width = {\n value: h * cache.width / cache.height,\n unit: unit.PX,\n };\n }\n else if(height.unit === unit.AUTO) {\n currentStyle.height = {\n value: w * cache.height / cache.width,\n unit: unit.PX,\n };\n }\n else {\n lv = level.REPAINT;\n }\n let root = this.root;\n if(root) {\n root.setRefreshLevel(lv);\n root.addRefreshTask();\n }\n };\n if(cache.state === LOADED) {\n cb(cache);\n }\n else if(cache.state === LOADING) {\n cache.task.push(cb);\n }\n else if(cache.state === INIT) {\n cache.state = LOADING;\n cache.task.push(cb);\n inject.measureImg(src, res => {\n cache.success = res.success;\n if(res.success) {\n cache.width = res.width;\n cache.height = res.height;\n cache.source = res.source;\n }\n else {\n cache.width = 32;\n cache.height = 32;\n }\n cache.state = LOADED;\n cache.task.forEach(cb => cb(cache));\n cache.task.splice(0);\n });\n }\n }\n\n __addGeom(tagName, props) {\n props = util.hash2arr(props);\n this.virtualDom.children.push({\n type: 'item',\n tagName,\n props,\n });\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { ctx, sx: x, sy: y, width, height, src, isDestroyed, computedStyle: {\n display,\n borderTopWidth,\n borderLeftWidth,\n marginTop,\n marginLeft,\n paddingTop,\n paddingLeft,\n } } = this;\n if(isDestroyed || display === 'none') {\n return;\n }\n let originX = x + marginLeft + borderLeftWidth + paddingLeft;\n let originY = y + marginTop + borderTopWidth + paddingTop;\n if(this.__error) {\n let strokeWidth = Math.min(width, height) * 0.02;\n let stroke = '#CCC';\n let fill = '#DDD';\n let cx = originX + width * 0.7;\n let cy = originY + height * 0.3;\n let r = strokeWidth * 5;\n let pts = [\n [originX + width * 0.15, originY + height * 0.7],\n [originX + width * 0.3, originY + height * 0.4],\n [originX + width * 0.5, originY + height * 0.6],\n [originX + width * 0.6, originY + height * 0.5],\n [originX + width * 0.9, originY + height * 0.8],\n [originX + width * 0.15, originY + height * 0.8]\n ];\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.beginPath();\n ctx.moveTo(originX, originY);\n ctx.lineTo(originX + width, originY);\n ctx.lineTo(originX + width, originY + height);\n ctx.lineTo(originX, originY + height);\n ctx.lineTo(originX, originY);\n ctx.stroke();\n ctx.closePath();\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, 2 * Math.PI);\n ctx.fill();\n ctx.closePath();\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n ctx.lineTo(point[0], point[1]);\n }\n ctx.lineTo(pts[0][0], pts[0][1]);\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n this.__addGeom('rect', [\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height],\n ['stroke', stroke],\n ['stroke-width', strokeWidth],\n ['fill', 'transparent']\n ]);\n this.__addGeom('circle', [\n ['cx', cx],\n ['cy', cy],\n ['r', r],\n ['fill', fill],\n ]);\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n s += `${point[0]},${point[1]} `;\n }\n this.__addGeom('polygon', [\n ['points', s],\n ['fill', fill]\n ]);\n }\n }\n else {\n if(renderMode === mode.CANVAS) {\n if(this.__source) {\n ctx.drawImage(this.__source, originX, originY, width, height);\n }\n }\n else if(renderMode === mode.SVG) {\n let matrix;\n if(this.__imgWidth !== undefined\n && (width !== this.__imgWidth || height !== this.__imgHeight)) {\n matrix = image.matrixResize(this.__imgWidth, this.__imgHeight, width, height, originX, originY, width, height);\n // 缩放图片的同时要考虑原先的矩阵,以及影响事件\n if(this.matrix) {\n this.__matrix = matrix = transform.mergeMatrix(this.__matrix, matrix);\n this.__matrixEvent = transform.mergeMatrix(this.__matrixEvent, matrix);\n }\n else {\n this.__matrixEvent = matrix;\n }\n matrix = 'matrix(' + matrix.join(',') + ')';\n }\n let props = [\n ['xlink:href', src],\n ['x', originX],\n ['y', originY],\n ['width', this.__imgWidth || 0],\n ['height', this.__imgHeight || 0]\n ];\n if(matrix) {\n props.push(['transform', matrix]);\n }\n this.virtualDom.children.push({\n type: 'img',\n tagName: 'image',\n props,\n });\n }\n }\n }\n\n get src() {\n return this.props.src;\n }\n get baseLine() {\n return this.height;\n }\n}\n\nexport default Img;\n","import util from './util';\n\nfunction diff(elem, ovd, nvd) {\n let cns = elem.childNodes;\n diffDefs(cns[0], ovd.defs, nvd.defs);\n diffBb(cns[1], ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n diffD2D(elem, ovd, nvd, true);\n}\n\nfunction diffDefs(elem, od, nd) {\n let ol = od.length;\n let nl = nd.length;\n let i = 0;\n let cns = elem.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffDef(cns[i], od[i], nd[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinDef(nd[i]));\n }\n }\n}\n\nfunction diffDef(elem, od, nd) {\n if(od.tagName !== nd.tagName) {\n elem.insertAdjacentHTML('afterend', util.joinDef(nd));\n elem.parentNode.removeChild(elem);\n }\n else {\n if(od.uuid !== nd.uuid) {\n elem.setAttribute('id', nd.uuid);\n }\n let op = {};\n for(let j = 0, len = od.props.length; j < len; j++) {\n let prop = od.props[j];\n let [k, v] = prop;\n op[k] = v;\n }\n for(let j = 0, len = nd.props.length; j < len; j++) {\n let prop = nd.props[j];\n let [k, v] = prop;\n // 已有不等更新,没有添加\n if(op.hasOwnProperty(k)) {\n if(op[k] !== v) {\n elem.setAttribute(k, v);\n }\n delete op[k];\n }\n else {\n elem.setAttribute(k, v);\n }\n }\n // 多余的删除\n for(let k in op) {\n if(op.hasOwnProperty(k)) {\n elem.removeAttribute(k);\n }\n }\n let cns = elem.childNodes;\n let ol = od.children.length;\n let nl = nd.children.length;\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, od.children[i], nd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinStop(nd.stop[i]));\n }\n }\n }\n}\n\nfunction diffChild(elem, ovd, nvd) {\n if(ovd.type === 'dom') {\n if(nvd.type === 'dom') {\n diffD2D(elem, ovd, nvd);\n }\n else if(nvd.type === 'text' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'geom') {\n diffD2G(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'text') {\n if(nvd.type === 'dom' || nvd.type === 'geom' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'text') {\n diffT2T(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'geom') {\n if(nvd.type === 'dom') {\n diffG2D(elem, ovd, nvd);\n }\n else if(nvd.type === 'text' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'geom') {\n diffG2G(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'img') {\n if(nvd.type === 'img') {\n diffItemSelf(elem, ovd, nvd);\n }\n else {\n replaceWith(elem, nvd);\n }\n }\n}\n\nfunction diffD2D(elem, ovd, nvd, root) {\n if(!equalArr(ovd.transform, nvd.transform)) {\n let transform = util.joinTransform(nvd.transform);\n elem.setAttribute('transform', transform);\n }\n if(ovd.opacity !== nvd.opacity) {\n elem.setAttribute('opacity', ovd.opacity);\n }\n if(ovd.mask !== nvd.mask) {\n if(nvd.mask) {\n elem.setAttribute('mask', ovd.mask);\n }\n else {\n elem.removeAttribute('mask');\n }\n }\n if(!root) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n }\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n let lastChild = elem.lastChild;\n let cns = lastChild.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffChild(cns[i], ovd.children[i], nvd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(lastChild, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(lastChild, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffD2G(elem, ovd, nvd) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n replaceWith(elem.lastChild, nvd.children);\n}\n\nfunction diffT2T(elem, ovd, nvd) {\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, ovd.children[i], nvd.children[i], true);\n }\n let cns = elem.childNodes;\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffG2D(elem, ovd, nvd) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n replaceWith(elem.lastChild, nvd.children);\n}\n\nfunction diffG2G(elem, ovd, nvd) {\n if(!equalArr(ovd.transform, nvd.transform)) {\n let transform = util.joinTransform(nvd.transform);\n if(elem.getAttribute('transform') !== transform) {\n elem.setAttribute('transform', transform);\n }\n }\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n let lastChild = elem.lastChild;\n let cns = lastChild.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(lastChild, i, ovd.children[i], nvd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(lastChild, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(lastChild, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffBb(elem, obb, nbb, oMask, nMask) {\n let ol = obb.length;\n let nl = nbb.length;\n if(oMask !== nMask) {\n if(!nMask) {\n elem.removeAttribute('mask');\n }\n else {\n elem.setAttribute('mask', nMask);\n }\n }\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, obb[i], nbb[i]);\n }\n let cns = elem.childNodes;\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinVd(nbb[i]));\n }\n }\n}\n\nfunction diffItem(elem, i, ovd, nvd, isText) {\n let cns = elem.childNodes;\n if(ovd.tagName !== nvd.tagName) {\n replaceWith(cns[i], nvd);\n }\n else {\n diffItemSelf(cns[i], ovd, nvd);\n if(isText && ovd.content !== nvd.content) {\n cns[i].textContent = nvd.content;\n }\n }\n}\n\nfunction diffItemSelf(elem, ovd, nvd) {\n let op = {};\n for(let j = 0, len = ovd.props.length; j < len; j++) {\n let prop = ovd.props[j];\n let [k, v] = prop;\n op[k] = v;\n }\n for(let j = 0, len = nvd.props.length; j < len; j++) {\n let prop = nvd.props[j];\n let [k, v] = prop;\n // 已有不等更新,没有添加\n if(op.hasOwnProperty(k)) {\n if(op[k] !== v) {\n elem.setAttribute(k, v);\n }\n delete op[k];\n }\n else {\n elem.setAttribute(k, v);\n }\n }\n // 多余的删除\n for(let k in op) {\n if(op.hasOwnProperty(k)) {\n elem.removeAttribute(k);\n }\n }\n}\n\nfunction replaceWith(elem, vd) {\n let res;\n if(Array.isArray(vd)) {\n res = '';\n vd.forEach(item => {\n res += util.joinVd(item);\n });\n }\n else {\n res = util.joinVd(vd);\n }\n elem.insertAdjacentHTML('afterend', res);\n elem.parentNode.removeChild(elem);\n}\n\nfunction insertAt(elem, cns, index, html) {\n if(index >= cns.length) {\n elem.insertAdjacentHTML('beforeend', html);\n }\n else {\n cns[index].insertAdjacentHTML('beforebegin', html);\n }\n}\n\nfunction removeAt(elem, cns, index) {\n if(cns[index]) {\n elem.removeChild(cns[index]);\n }\n}\n\nfunction equalArr(a, b) {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n if(a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport default diff;\n","class Defs {\n constructor(uuid) {\n this.id = uuid;\n this.count = 0;\n this.list = [];\n }\n add(data) {\n data.uuid = `karas-defs-${this.id}-${this.count++}`;\n this.list.push(data);\n return data.uuid;\n }\n clear() {\n this.list = [];\n this.count = 0;\n }\n\n get value() {\n return this.list;\n }\n\n static getInstance(uuid) {\n return new Defs(uuid);\n }\n}\n\nexport default Defs;\n","import Dom from '../node/Dom';\nimport util from '../util/util';\nimport mode from '../util/mode';\nimport diff from '../util/diff';\nimport Defs from './Defs';\nimport unit from '../style/unit';\nimport inject from '../util/inject';\nimport Event from '../util/Event';\nimport frame from '../animate/frame';\nimport level from '../animate/level';\n\nfunction getDom(dom) {\n if(util.isString(dom) && dom) {\n let o = document.querySelector(dom);\n if(!o) {\n throw new Error('can not find dom of selector: ' + dom);\n }\n return o;\n }\n if(!dom) {\n throw new Error('can not find dom: ' + dom);\n }\n return dom;\n}\n\nfunction renderProp(k, v) {\n let s = Array.isArray(v) ? util.joinSourceArray(v) : util.stringify(v);\n if(k === 'className') {\n k = 'class';\n }\n return ' ' + k + '=\"' + util.encodeHtml(s, true) + '\"';\n}\n\nfunction initEvent(node) {\n ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend', 'touchcancel'].forEach(type => {\n node.addEventListener(type, e => {\n node.__root.__cb(e, ['touchend', 'touchcancel', 'touchmove'].indexOf(type) > -1);\n });\n });\n}\n\nlet uuid = 0;\n\nclass Root extends Dom {\n constructor(tagName, props, children) {\n super(tagName, props, children);\n this.__node = null; // 真实DOM引用\n this.__mw = 0; // 记录最大宽高,防止尺寸变化清除不完全\n this.__mh = 0;\n this.__task = [];\n this.__ref = {};\n Event.mix(this);\n }\n\n __initProps() {\n let w = this.props.width;\n if(!util.isNil(w)) {\n let value = parseInt(w) || 0;\n if(value > 0) {\n this.__width = value;\n }\n }\n let h = this.props.height;\n if(!util.isNil(h)) {\n let value = parseInt(h) || 0;\n if(value > 0) {\n this.__height = value;\n }\n }\n }\n\n __genHtml() {\n let res = `<${this.tagName}`;\n // 拼接处理属性\n for(let i = 0, len = this.__props.length; i < len; i++) {\n let item = this.__props[i];\n res += renderProp(item[0], item[1]);\n }\n res += `>${this.tagName}>`;\n return res;\n }\n\n // 类似touchend/touchcancel/touchmove这种无需判断是否发生于元素上,直接强制响应\n __cb(e, force) {\n if(e.type === 'touchmove' && !this.__touchstartTarget) {\n return;\n }\n if(e.touches && e.touches.length > 1) {\n return;\n }\n let { node } = this;\n let { x, y, top, right } = node.getBoundingClientRect();\n x = x || top || 0;\n y = y || right || 0;\n let { clientX, clientY } = e.touches ? (e.touches[0] || {}) : e;\n x = clientX - x;\n y = clientY - y;\n this.__emitEvent({\n event: e,\n stopPropagation() {\n this.__stopPropagation = true;\n e.stopPropagation();\n },\n stopImmediatePropagation() {\n this.__stopPropagation = true;\n this.__stopImmediatePropagation = true;\n e.stopImmediatePropagation();\n },\n preventDefault() {\n e.preventDefault();\n },\n x,\n y,\n __hasEmitted: false,\n }, force);\n }\n\n appendTo(dom) {\n dom = getDom(dom);\n this.__initProps();\n this.__refreshLevel = level.REFLOW;\n // 已有root节点\n if(dom.nodeName.toUpperCase() === this.tagName.toUpperCase()) {\n this.__node = dom;\n if(this.width) {\n dom.setAttribute('width', this.width);\n }\n if(this.height) {\n dom.setAttribute('height', this.height);\n }\n }\n // 没有canvas/svg节点则生成一个新的\n else {\n this.__node = dom.querySelector(this.tagName);\n if(!this.__node) {\n dom.innerHTML = this.__genHtml();\n this.__node = dom.querySelector(this.tagName);\n }\n }\n this.__uuid = util.isNil(this.__node.__uuid) ? uuid++ : this.__node.__uuid;\n this.__defs = this.node.__defs || Defs.getInstance(this.__uuid);\n // 没有设置width/height则采用css计算形式\n if(!this.width || !this.height) {\n let css = window.getComputedStyle(dom, null);\n if(!this.width) {\n this.__width = parseInt(css.getPropertyValue('width'));\n dom.setAttribute('width', this.width);\n }\n if(!this.height) {\n this.__height = parseInt(css.getPropertyValue('height'));\n dom.setAttribute('height', this.height);\n }\n }\n // 只有canvas有ctx,svg用真实dom\n if(this.tagName === 'canvas') {\n this.__ctx = this.__node.getContext('2d');\n this.__renderMode = mode.CANVAS;\n }\n else if(this.tagName === 'svg') {\n this.__renderMode = mode.SVG;\n }\n // canvas/svg作为根节点一定是block或flex,不会是inline\n let { style } = this;\n if(['flex', 'block'].indexOf(style.display) === -1) {\n style.display = 'block';\n }\n // 同理position不能为absolute\n if(style.position === 'absolute') {\n style.position = 'static';\n }\n let { renderMode, ctx } = this;\n this.__traverse(ctx, this.__defs, renderMode);\n this.__traverseCss(this, this.props.css);\n this.__init();\n this.refresh();\n if(this.node.__root) {\n this.node.__root.__destroy();\n delete this.node.__root.__node;\n delete this.node.__root.__vd;\n }\n else {\n initEvent(this.node);\n this.node.__uuid = this.__uuid;\n }\n this.node.__root = this;\n }\n\n refresh(cb) {\n let { renderMode, currentStyle } = this;\n // 根元素特殊处理\n currentStyle.marginTop = currentStyle.marginRight = currentStyle.marginBottom = currentStyle.marginLeft = {\n value: 0,\n unit: unit.PX,\n };\n currentStyle.width = {\n value: this.width,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: this.height,\n unit: unit.PX,\n };\n delete currentStyle.transform;\n currentStyle.opacity = 1;\n this.__defs.clear();\n let lv = this.__refreshLevel;\n this.__refreshLevel = level.REPAINT;\n // 预先计算字体相关的继承\n if(lv === level.REFLOW) {\n this.__computed();\n }\n inject.measureText(() => {\n // 没发生REFLOW只需要computed即可\n if(lv === level.REFLOW) {\n // 布局分为两步,普通流和绝对流,互相递归\n this.__layout({\n x: 0,\n y: 0,\n w: this.width,\n h: this.height,\n });\n this.__layoutAbs(this, {\n x: 0,\n y: 0,\n w: this.width,\n h: this.height,\n });\n }\n else {\n this.__repaint();\n }\n if(renderMode === mode.CANVAS) {\n this.__clear();\n }\n this.emit(Event.KARAS_BEFORE_REFRESH, lv);\n this.render(renderMode);\n if(renderMode === mode.SVG) {\n let nvd = this.virtualDom;\n let nd = this.__defs;\n nvd.defs = nd.value;\n nvd = util.clone(nvd);\n if(this.node.__root) {\n diff(this.node, this.node.__vd, nvd);\n }\n else {\n this.node.innerHTML = util.joinVirtualDom(nvd);\n }\n this.node.__vd = nvd;\n this.node.__defs = nd;\n }\n let clone = this.__task.splice(0);\n clone.forEach(cb => {\n if(util.isFunction(cb)) {\n cb();\n }\n });\n if(util.isFunction(cb)) {\n cb();\n }\n this.emit(Event.KARAS_REFRESH);\n });\n }\n\n addRefreshTask(cb) {\n let { task } = this;\n // 第一个添加延迟侦听\n if(!task.length) {\n frame.nextFrame(() => {\n if(task.length) {\n this.refresh();\n }\n });\n }\n task.push(cb);\n }\n\n delRefreshTask(cb) {\n if(!cb) {\n return;\n }\n let { task } = this;\n for(let i = 0, len = task.length; i < len; i++) {\n if(task[i] === cb) {\n task.splice(i, 1);\n break;\n }\n }\n }\n\n setRefreshLevel(lv) {\n if(lv > this.__refreshLevel) {\n this.__refreshLevel = lv;\n }\n }\n\n __getImageData() {\n return this.ctx.getImageData(0, 0, this.width, this.height);\n }\n\n __putImageData(data) {\n this.ctx.putImageData(data, 0, 0);\n }\n\n __clear() {\n // 可能会调整宽高,所以每次清除用最大值\n this.__mw = Math.max(this.__mw, this.width);\n this.__mh = Math.max(this.__mh, this.height);\n // 清除前得恢复默认matrix,防止每次布局改变了属性\n this.__ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.__ctx.clearRect(0, 0, this.__mw, this.__mh);\n }\n\n get node() {\n return this.__node;\n }\n get renderMode() {\n return this.__renderMode;\n }\n get task() {\n return this.__task;\n }\n get ref() {\n return this.__ref;\n }\n}\n\nexport default Root;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Line extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // x1,y1和x2,y2表明线段的首尾坐标,control表明控制点坐标\n this.__x1 = this.__y1 = 0;\n this.__x2 = this.__y2 = 1;\n this.__controlA = [];\n this.__controlB = [];\n if(this.props.x1 !== undefined) {\n this.__x1 = parseFloat(this.props.x1) || 0;\n }\n if(this.props.y1 !== undefined) {\n this.__y1 = parseFloat(this.props.y1) || 0;\n }\n if(this.props.x2 !== undefined) {\n this.__x2 = parseFloat(this.props.x2) || 0;\n }\n if(this.props.y2 !== undefined) {\n this.__y2 = parseFloat(this.props.y2) || 0;\n }\n if(Array.isArray(this.props.controlA)) {\n this.__controlA = this.props.controlA;\n }\n if(Array.isArray(this.props.controlB)) {\n this.__controlB = this.props.controlB;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n display,\n visibility,\n originX,\n originY,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, x1, y1, x2, y2, controlA, controlB } = this;\n x1 = originX + x1 * width;\n y1 = originY + y1 * height;\n x2 = originX + x2 * width;\n y2 = originY + y2 * height;\n let curve = 0;\n // 控制点,曲线\n let cx1, cy1, cx2, cy2;\n if(controlA.length === 2) {\n curve++;\n cx1 = originX + controlA[0] * width;\n cy1 = originY + controlA[1] * height;\n }\n if(controlB.length === 2) {\n curve += 2;\n cx2 = originX + controlB[0] * width;\n cy2 = originY + controlB[1] * height;\n }\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n if(curve === 3) {\n ctx.bezierCurveTo(cx1, cy1, cx2, cy2, x2, y2);\n }\n else if(curve === 2) {\n ctx.quadraticCurveTo(cx2, cy2, x2, y2);\n }\n else if(curve === 1) {\n ctx.quadraticCurveTo(cx1, cy1, x2, y2);\n }\n else {\n ctx.lineTo(x2, y2);\n }\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let d;\n if(curve === 3) {\n d = `M${x1},${y1} C${cx1},${cy1} ${cx2},${cy2} ${x2},${y2}`;\n }\n else if(curve === 2) {\n d = `M${x1},${y1} Q${cx2},${cy2} ${x2},${y2}`;\n }\n else if(curve === 1) {\n d = `M${x1},${y1} Q${cx1},${cy1} ${x2},${y2}`;\n }\n else {\n d = `M${x1},${y1} L${x2},${y2}`;\n }\n let props = [\n ['d', d],\n ['fill', 'none'],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n }\n\n get x1() {\n return this.__x1;\n }\n get y1() {\n return this.__y1;\n }\n get x2() {\n return this.__x2;\n }\n get y2() {\n return this.__y2;\n }\n get controlA() {\n return this.__controlA;\n }\n get controlB() {\n return this.__controlB;\n }\n}\n\nexport default Line;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Polyline extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 折线所有点的列表\n this.__points = [];\n if(Array.isArray(this.props.points)) {\n this.__points = this.props.points;\n }\n // 原点位置,4个角,默认左下\n if(['TOP_RIGHT', 'BOTTOM_LEFT', 'BOTTOM_RIGHT'].indexOf(this.props.origin) > -1) {\n this.__origin = this.props.origin;\n }\n else {\n this.__origin = 'TOP_LEFT';\n }\n // 控制点\n this.__controls = [];\n if(Array.isArray(this.props.controls)) {\n this.__controls = this.props.controls;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, points, controls, origin } = this;\n if(points.length < 2) {\n return;\n }\n for(let i = 0, len = points.length; i < len; i++) {\n if(!Array.isArray(points[i]) || points[i].length < 2) {\n return;\n }\n }\n let pts = [];\n let cls = [];\n let hasControll;\n if(origin === 'TOP_LEFT') {\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'TOP_RIGHT') {\n points.forEach(item => {\n pts.push([\n originX + width - item[0] * width,\n originY + item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + width - item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'BOTTOM_LEFT') {\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + height - item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + height - item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'BOTTOM_RIGHT') {\n points.forEach(item => {\n pts.push([\n originX + width - item[0] * width,\n originY + height - item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + width - item[i] * width);\n }\n else {\n arr.push(originY + height - item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n ctx.lineTo(point[0], point[1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], point[0], point[1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], point[0], point[1]);\n }\n }\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['fill', 'none'],\n ['stroke', stroke]\n ];\n let tagName;\n if(hasControll) {\n let s = `M${pts[0][0]},${pts[0][1]}`;\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n s += `L${point[0]},${point[1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${point[0]},${point[1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${point[0]},${point[1]}`;\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n s += `L${pts[0][0]},${pts[0][1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${pts[0][0]},${pts[0][1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${pts[0][0]},${pts[0][1]}`;\n }\n props.push(['d', s]);\n tagName = 'path';\n }\n else {\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n if(i) {\n s += ' ';\n }\n s += `${point[0]},${point[1]}`;\n }\n props.push(['points', s]);\n tagName = 'polyline';\n }\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom(tagName, props);\n }\n }\n\n get points() {\n return this.__points;\n }\n get controls() {\n return this.__controls;\n }\n get origin() {\n return this.__origin;\n }\n}\n\nexport default Polyline;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Polygon extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 所有点的列表\n this.__points = [];\n if(Array.isArray(this.props.points)) {\n this.__points = this.props.points;\n }\n // 控制点\n this.__controls = [];\n if(Array.isArray(this.props.controls)) {\n this.__controls = this.props.controls;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, points, controls } = this;\n if(points.length < 3) {\n return;\n }\n for(let i = 0, len = points.length; i < len; i++) {\n if(!Array.isArray(points[i]) || points[i].length < 2) {\n return;\n }\n }\n let pts = [];\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + item[1] * height\n ]);\n });\n let cls = [];\n let hasControll;\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n ctx.lineTo(point[0], point[1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], point[0], point[1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], point[0], point[1]);\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n ctx.lineTo(pts[0][0], pts[0][1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], pts[0][0], pts[0][1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], pts[0][0], pts[0][1]);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [];\n let tagName;\n if(hasControll) {\n let s = `M${pts[0][0]},${pts[0][1]}`;\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n s += `L${point[0]},${point[1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${point[0]},${point[1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${point[0]},${point[1]}`;\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n s += `L${pts[0][0]},${pts[0][1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${pts[0][0]},${pts[0][1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${pts[0][0]},${pts[0][1]}`;\n }\n props.push(['d', s]);\n tagName = 'path';\n }\n else {\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n s += `${point[0]},${point[1]} `;\n }\n props.push(['points', s]);\n tagName = 'polygon';\n }\n props = props.concat([\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ]);\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom(tagName, props);\n }\n }\n\n get points() {\n return this.__points;\n }\n get controls() {\n return this.__controls;\n }\n}\n\nexport default Polygon;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nconst OFFSET = Math.PI * 0.5;\n\nfunction getCoordsByDegree(x, y, r, d) {\n d = d % 360;\n if(d >= 0 && d < 90) {\n return [\n x + Math.sin(d * Math.PI / 180) * r,\n y - Math.cos(d * Math.PI / 180) * r\n ];\n }\n else if(d >= 90 && d < 180) {\n return [\n x + Math.cos((d - 90) * Math.PI / 180) * r,\n y + Math.sin((d - 90) * Math.PI / 180) * r,\n ];\n }\n else if(d >= 180 && d < 270) {\n return [\n x - Math.cos((270 - d) * Math.PI / 180) * r,\n y + Math.sin((270 - d) * Math.PI / 180) * r,\n ];\n }\n else {\n return [\n x - Math.sin((360 - d) * Math.PI / 180) * r,\n y - Math.cos((360 - d) * Math.PI / 180) * r,\n ];\n }\n}\n\nclass Sector extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 角度\n this.__begin = 0;\n this.__end = 0;\n if(this.props.begin) {\n this.__begin = parseFloat(this.props.begin);\n if(isNaN(this.begin)) {\n this.__begin = 0;\n }\n }\n if(this.props.end) {\n this.__end = parseFloat(this.props.end);\n if(isNaN(this.end)) {\n this.__end = 0;\n }\n }\n // 半径0~1,默认1\n this.__r = 1;\n if(this.props.r) {\n this.__r = parseFloat(this.props.r);\n if(isNaN(this.r)) {\n this.__r = 1;\n }\n }\n // 扇形两侧是否有边\n this.__edge = false;\n if(this.props.edge !== undefined) {\n this.__edge = !!this.props.edge;\n }\n // 扇形大于180°时,是否闭合两端\n this.__closure = false;\n if(this.props.closure !== undefined) {\n this.__closure = !!this.props.closure;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, begin, end, r, edge, closure } = this;\n if(begin === end) {\n return;\n }\n r *= Math.min(width, height) * 0.5;\n let x1, y1, x2, y2;\n [ x1, y1 ] = getCoordsByDegree(cx, cy, r, begin);\n [ x2, y2 ] = getCoordsByDegree(cx, cy, r, end);\n let large = (end - begin) > 180 ? 1 : 0;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.arc(cx, cy, r, begin * Math.PI / 180 - OFFSET, end * Math.PI / 180 - OFFSET);\n if(edge) {\n if(!large || !closure) {\n ctx.lineTo(cx, cy);\n }\n ctx.lineTo(x1, y1);\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n }\n else {\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n if(!large || !closure) {\n ctx.lineTo(cx, cy);\n }\n ctx.lineTo(x1, y1);\n }\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n if(edge) {\n let props = [\n ['d', closure\n ? `M${x1} ${y1} A${r} ${r} 0 ${large} 1 ${x2} ${y2} z`\n : `M${cx} ${cy} L${x1} ${y1} A${r} ${r} 0 ${large} 1 ${x2} ${y2} z`],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n else {\n this.addGeom('path', [\n ['d', closure\n ? `M${x1},${y1} A${r} ${r} 0 ${large} 1 ${x2},${y2} z`\n : `M${cx},${cy} L${x1},${y1} A${r} ${r} 0 ${large} 1 ${x2},${y2} z`],\n ['fill', fill]\n ]);\n if(strokeWidth > 0) {\n let props = [\n ['d', `M${x1},${y1} A${r},${r} 0 ${large} 1 ${x2},${y2}`],\n ['fill', 'transparent'],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n }\n }\n }\n\n get begin() {\n return this.__begin;\n }\n get end() {\n return this.__end;\n }\n get r() {\n return this.__r;\n }\n get edge() {\n return this.__edge;\n }\n get closure() {\n return this.__closure;\n }\n}\n\nexport default Sector;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Rect extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 圆角\n this.__rx = 0;\n if(this.props.rx) {\n this.__rx = parseFloat(this.props.rx);\n if(isNaN(this.rx)) {\n this.__rx = 0;\n }\n }\n this.__ry = 0;\n if(this.props.ry) {\n this.__ry = parseFloat(this.props.ry);\n if(isNaN(this.ry)) {\n this.__ry = 0;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, rx, ry } = this;\n rx = Math.min(rx, 0.5);\n ry = Math.min(ry, 0.5);\n rx *= width;\n ry *= height;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n if(rx === 0 && ry === 0) {\n ctx.moveTo(originX, originY);\n ctx.lineTo(originX + width, originY);\n ctx.lineTo(originX + width, originY + height);\n ctx.lineTo(originX, originY + height);\n ctx.lineTo(originX, originY);\n }\n else {\n let ox = rx * .5522848;\n let oy = ry * .5522848;\n ctx.moveTo(originX + rx, originY);\n ctx.lineTo(originX + width - rx, originY);\n ctx.bezierCurveTo(originX + width + ox - rx, originY, originX + width, originY + ry - oy, originX + width, originY + ry);\n ctx.lineTo(originX + width, originY + height - ry);\n ctx.bezierCurveTo(originX + width, originY + height + oy - ry, originX + width + ox - rx, originY + height, originX + width - rx, originY + height);\n ctx.lineTo(originX + rx, originY + height);\n ctx.bezierCurveTo(originX + rx - ox, originY + height, originX, originY + height + oy - ry, originX, originY + height - ry);\n ctx.lineTo(originX, originY + ry);\n ctx.bezierCurveTo(originX, originY + ry - oy, originX + rx - ox, originY, originX + rx, originY);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(rx) {\n props.push(['rx', rx]);\n }\n if(ry) {\n props.push(['ry', ry]);\n }\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('rect', props);\n }\n }\n\n get rx() {\n return this.__rx;\n }\n get ry() {\n return this.__ry;\n }\n}\n\nexport default Rect;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Circle extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 半径0~1,默认1\n this.__r = 1;\n if(this.props.r) {\n this.__r = parseFloat(this.props.r);\n if(isNaN(this.r)) {\n this.__r = 1;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, r } = this;\n r *= Math.min(width, height) * 0.5;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, 2 * Math.PI);\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['cx', cx],\n ['cy', cy],\n ['r', r],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('circle', props);\n }\n }\n\n get r() {\n return this.__r;\n }\n}\n\nexport default Circle;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Ellipse extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 半径0~1,默认1\n this.__rx = 1;\n if(this.props.rx) {\n this.__rx = parseFloat(this.props.rx);\n if(isNaN(this.rx)) {\n this.__rx = 1;\n }\n }\n this.__ry = 1;\n if(this.props.ry) {\n this.__ry = parseFloat(this.props.ry);\n if(isNaN(this.ry)) {\n this.__ry = 1;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, rx, ry } = this;\n rx *= width * 0.5;\n ry *= height * 0.5;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n if(ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, 0, 0, 2 * Math.PI);\n }\n else {\n let ox = rx * .5522848;\n let oy = ry * .5522848;\n ctx.moveTo(cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - oy, cx - ox, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + ox, cy - ry, cx + rx, cy - oy, cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + oy, cx + ox, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - ox, cy + ry, cx - rx, cy + oy, cx - rx, cy);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['cx', cx],\n ['cy', cy],\n ['rx', rx],\n ['ry', ry],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('ellipse', props);\n }\n }\n\n get rx() {\n return this.__rx;\n }\n get ry() {\n return this.__ry;\n }\n}\n\nexport default Ellipse;\n","import util from './util';\n\nfunction parse(karas, json, data) {\n if(util.isBoolean(json) || util.isNil(json) || util.isString(json) || util.isNumber(json)) {\n return json;\n }\n let { tagName, props = {}, children = [], animate } = json;\n let animation;\n if(animate) {\n animation = {\n animate,\n };\n data.animate.push(animation);\n }\n let vd;\n if(tagName.charAt(0) === '$') {\n vd = karas.createGm(tagName, props);\n }\n else {\n vd = karas.createVd(tagName, props, children.map(item => parse(karas, item, data)));\n }\n if(animation) {\n animation.target = vd;\n }\n return vd;\n}\n\nexport default parse;\n","import matrix from './matrix';\n\n// 一条边相对于自己开始点的角度\nfunction calDeg(x1, y1, x2, y2) {\n return Math.atan((y2 - y1) / (x2 - x1));\n}\n\nfunction rotate(theta) {\n let sin = Math.sin(theta);\n let cos = Math.cos(theta);\n let t = matrix.identity();\n t[0] = t[5] = cos;\n t[1] = sin;\n t[4] = -sin;\n return t;\n}\n\nfunction transform(source, target) {\n let [sx1, sy1, sx2, sy2, sx3, sy3] = source;\n let [tx1, ty1, tx2, ty2, tx3, ty3] = target;\n // 第0步,将目标三角第1个a点移到和源三角一样的原点上\n let dx = tx1 - sx1;\n let dy = tx2 - sx2;\n tx1 -= dx;\n ty1 -= dy;\n tx2 -= dx;\n ty2 -= dy;\n tx3 -= dx;\n ty3 -= dy;\n let m = matrix.identity();\n // 第1步,以第1条边AB为基准,将其贴合x轴上,为后续倾斜不干扰做准备\n let theta = calDeg(sx1, sy1, sx2, sy2);\n let t = rotate(-theta);\n m = matrix.multiply(t, m);\n // 第2步,以第1条边AB为基准,缩放至目标ab相同长度\n let ls = Math.sqrt(Math.pow(sx2 - sx1, 2) + Math.pow(sy2 - sy1, 2));\n let lt = Math.sqrt(Math.pow(tx2 - tx1, 2) + Math.pow(ty2 - ty1, 2));\n let scale = lt / ls;\n t = matrix.identity();\n t[0] = t[5] = scale;\n m = matrix.multiply(t, m);\n // 第3步,缩放y,先将目标旋转到x轴上,再变换坐标计算\n theta = calDeg(tx1, ty1, tx2, ty2);\n t = rotate(-theta);\n // 目标三角反向旋转至x轴后的第2、3点坐标,求得旋转角度\n let [ax2, ay2] = matrix.calPoint([tx2, ty2], matrix.t43(t));\n let [ax3, ay3] = matrix.calPoint([tx3, ty3], matrix.t43(t));\n let alpha = Math.atan((ax2- ax3) / (ay3 - ay2));\n let by3 = matrix.calPoint([sx3, sy3], matrix.t43(m))[1];\n // 缩放y\n scale = ay3 / by3;\n t = matrix.identity();\n t[5] = scale;\n m = matrix.multiply(t, m);\n // 第4步,x轴倾斜,第3点的x/y的tan值\n let [x3, y3] = matrix.calPoint([sx3, sy3], matrix.t43(m));\n theta = Math.atan((ax3 - x3) / y3);\n t = matrix.identity();\n t[4] = Math.tan(theta);\n m = matrix.multiply(t, m);\n // 第5步,再次旋转,角度为目标旋转到x轴的负值\n t = rotate(-alpha);\n m = matrix.multiply(t, m);\n // 第6步,移动第一个点的差值\n t = matrix.identity();\n t[12] = dx;\n t[13] = dy;\n m = matrix.multiply(t, m);\n return matrix.t43(m);\n}\n\nexport default {\n transform,\n};\n","import matrix from './matrix';\nimport tar from './tar';\n\nexport default {\n matrix,\n tar,\n};\n","import Dom from './node/Dom';\nimport Img from './node/Img';\nimport Root from './node/Root';\nimport mode from './util/mode';\nimport Geom from './geom/Geom';\nimport Line from './geom/Line';\nimport Polyline from './geom/Polyline';\nimport Polygon from './geom/Polygon';\nimport Sector from './geom/Sector';\nimport Rect from './geom/Rect';\nimport Circle from './geom/Circle';\nimport Ellipse from './geom/Ellipse';\nimport Component from './node/Component';\nimport Event from './util/Event';\nimport sort from './util/sort';\nimport util from './util/util';\nimport parse from './util/parse';\nimport inject from './util/inject';\nimport css from './style/css';\nimport frame from './animate/frame';\nimport easing from './animate/easing';\nimport level from './animate/level';\nimport math from './math/index';\n\nGeom.register('$line', Line);\nGeom.register('$polyline', Polyline);\nGeom.register('$polygon', Polygon);\nGeom.register('$sector', Sector);\nGeom.register('$rect', Rect);\nGeom.register('$circle', Circle);\nGeom.register('$ellipse', Ellipse);\n\nlet karas = {\n render(root, dom) {\n if(!(root instanceof Root)) {\n throw new Error('render root muse be canvas or svg');\n }\n if(dom) {\n root.appendTo(dom);\n }\n return root;\n },\n createVd(tagName, props, children) {\n if(['canvas', 'svg'].indexOf(tagName) > -1) {\n return new Root(tagName, props, children);\n }\n if(Dom.isValid(tagName)) {\n if(tagName === 'img') {\n return new Img(tagName, props);\n }\n return new Dom(tagName, props, children);\n }\n throw new Error('can not use marker: ' + tagName);\n },\n createGm(tagName, props) {\n let klass = Geom.getRegister(tagName);\n return new klass(tagName, props);\n },\n createCp(cp, props, children) {\n return new cp(props, children);\n },\n parse(json, dom) {\n let data = {\n animate: [],\n };\n json = util.clone(json);\n let vd = parse(this, json, data);\n this.render(vd, dom);\n data.animate.forEach(item => {\n let { target, animate } = item;\n if(Array.isArray(animate)) {\n animate.forEach(animate => {\n target.animate(animate.value, animate.options);\n });\n }\n else {\n target.animate(animate.value, animate.options);\n }\n });\n return vd;\n },\n Root,\n Dom,\n Img,\n Geom,\n mode,\n Component,\n Event,\n sort,\n util,\n inject,\n css,\n frame,\n easing,\n level,\n math,\n};\n\nif(typeof window != 'undefined') {\n window.karas = karas;\n}\n\nexport default karas;\n"],"names":["AUTO","PX","PERCENT","POSITION","NUMBER","INHERIT","DEG","SIZE","Node","__x","__y","__ox","__oy","__width","__height","__prev","__next","__ctx","__defs","__parent","__computedStyle","__baseLine","__virtualDom","__host","diff","isLayout","__isDestroyed","x","ox","y","oy","host","root","parent","tagName","canvas","svg","hasOwnProperty","__style","CANVAS","SVG","toString","isType","type","obj","call","isNumber","joinSourceArray","arr","res","i","len","length","item","Array","isArray","stringify","s","isNil","encodeHtml","prop","replace","v","undefined","joinVirtualDom","vd","defs","forEach","joinDef","bbMask","bb","joinVd","children","isMask","props","content","opacity","joinTransform","transform","mask","def","uuid","joinItem","d2r","n","Math","PI","rgb2int","color","charAt","slice","push","parseInt","c","match","parseFloat","arr2hash","hash","list","Object","keys","j","k","hash2arr","clone","util","isDate","Date","mergeImageData","bottom","top","bd","data","td","rb","gb","ab","rt","gt","bt","at","alpha1","alpha2","alpha3","r","g","b","a","isObject","isString","isFunction","isBoolean","identity","m","multiply","row","col","t43","calPoint","point","calMatrix","transformOrigin","ow","oh","normalize","matrix","t","tan","sin","cos","transformPoint","d","e","f","vectorProduct","x1","y1","x2","y2","pointInQuadrilateral","x3","y3","x4","y4","w","h","unit","value","calOrigin","tfo","convert","m3","mergeMatrix","m1","m2","getLinearDeg","deg","exec","getColorStop","p","start","end","num","per","prev","splice","allBefore","allAfter","first","last","getCsLimit","next","c1","c2","getCsStartLimit","getCsEndLimit","calLinearCoords","cx","cy","x0","y0","calRadialRadius","iw","ih","size","test","indexOf","by","xl","yl","min","sqrt","pow","max","p1","p2","r1","g1","b1","a1","r2","g2","b2","a2","l1","abs","l2","floor","reg","parseGradient","gradient","o","map","split","str","getLinear","theta","stop","getRadial","cx2","cy2","calFitDashed","total","bs","be","smin","smax","dmin","dmax","ps","pd","outer","free","mo","calDashed","style","m4","bw","calPoints","borderWidth","borderStyle","deg1","deg2","direction","points","isLast","main1","main2","cross1","cross2","quickSort","begin","compare","seq","swap","temp","arial","lhr","car","blr","mdr","lgr","parserOneBorder","key","calUnit","reset","background","gd","backgroundImage","image","repeat","backgroundRepeat","toLowerCase","position","backgroundPosition","trim","bgc","backgroundColor","bp","backgroundSize","bc","flex","flexGrow","flexShrink","flexBasis","border","borderTop","borderRight","borderBottom","borderLeft","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","arr1","arr2","left","center","right","isNaN","fontWeight","lineHeight","strokeDasharray","join","fill","stroke","computedFontSize","computedStyle","fontSize","parentComputedStyle","isRoot","compute","xom","currentStyle","textAlign","preCompute","calLineHeight","repaint","fontStyle","fontFamily","setFontStyle","getBaseLine","normal","font","pl","calNormalLineHeight","calRelativePercent","calRelative","isWidth","calAbsolute","LineBox","__content","renderMode","ctx","css","mode","fillText","Text","__lineBoxes","__charWidthList","__charWidth","__textWidth","charWidthList","wait","MEASURE_TEXT","cache","CHAR_WIDTH_CACHE","sum","needMeasure","char","mw","charWidth","measureText","width","isVirtual","maxX","isDestroyed","lineBoxes","display","count","lineBox","__offsetX","__offsetY","fillStyle","render","virtualDom","textWidth","baseLine","__renderMode","splitClass","parse","dom","json","matchSel","sort","pa","pb","selList","combo","sel","dealStyle","parentStyle","sibling","prevSelList","item2","klass","id","ks","comboClass","hasStarClass","hasStarId","hasStarIdClass","len2","_v","_p","mergeCss","flag","matrixResize","imgWidth","imgHeight","targetWidth","targetHeight","Event","__eHash","handle","self","on","cb","apply","off","once","emit","event","fns","fn","DOM","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","height","flexDirection","justifyContent","alignItems","visibility","GEOM","strokeWidth","strokeLinecap","geom","REPAINT","REFLOW","Component","constructor","__tagName","__props","__children","__shadowRoot","__ref","__state","state","shadowRoot","setRefreshLevel","level","__traverse","__init","addRefreshTask","sr","isGeom","__traverseCss","listener","__hasInit","defineProperty","get","__destroy","force","__emitEvent","target","option","animate","__measure","__computed","__repaint","prototype","arguments","inject","html","chars","inline","div","document","createElement","body","appendChild","innerHTML","cns","childNodes","node","window","getComputedStyle","text","__measureCb","removeChild","measureImg","url","img","Image","onload","success","source","onerror","substr","location","hostname","crossOrigin","src","warn","console","requestAnimationFrame","bind","setTimeout","now","performance","Frame","__inFrame","__task","__afterFrame","task","delta","afterCb","offFrame","onFrame","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","bezier","mY1","mY2","Error","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","BezierEasing","easing","linear","easeIn","easeOut","ease","easeInOut","cubicBezier","controlA","controlB","rx","ry","controls","STYLE","KEY_COLOR","KEY_LENGTH","KEY_GRADIENT","COLOR_HASH","LENGTH_HASH","GRADIENT_HASH","GRADIENT_TYPE","radial","color2array","equalStyle","k1","k2","v1","v2","av","bv","ai","bi","lastStyle","animateStyle","restore","framing","current","record","st","offset","transition","calDiff","pExist","nExist","pi","ni","pv","nv","calFrame","ts","binarySearch","time","frames","frame","middle","calStyle","percent","timingFunction","getLevel","Animation","options","__id","__target","__list","nl","l","__options","duration","op","__duration","__delay","delay","__endDelay","endDelay","iterations","Infinity","__iterations","__fps","fps","__fill","__direction","__frames","__framesR","__playbackRate","playbackRate","__startTime","__offsetTime","__pauseTime","__lastFpsTime","__pending","__playState","__playCount","__cb","__diffTime","framesR","__animateStyle","__record","reverse","alternate","listR","__fin","KARAS_ANIMATION_FRAME","KARAS_ANIMATION_FINISH","__cancelTask","pending","pauseTime","playCount","init","offsetTime","__lastTime","__lastIndex","backwards","both","needRefresh","currentFrames","isEven","__lastStyle","forwards","isFinished","nextFrame","KARAS_ANIMATION_PAUSE","playState","KARAS_ANIMATION_CANCEL","delRefreshTask","renderBorder","beginPath","moveTo","lineTo","closePath","addBorder","renderBgc","rect","addBackground","calBackgroundSize","calBackgroundPosition","container","Xom","__listener","__class","__matrix","__matrixEvent","__animationList","__loadBgi","child","__mpWidth","mp","fake","__mp","outerWidth","outerHeight","__layoutBlock","__layoutFlex","__layoutInline","fixedWidth","fixedHeight","matrixEvent","tf","setTransform","sx","sy","opa","globalAlpha","addTransform","originX","originY","needMask","cache1","cache2","__getImageData","__clear","drawImage","globalCompositeOperation","__putImageData","maskId","add","backgroudSize","bgi","__gradient","atan","hasMask","ref","owner","animationList","__stopPropagation","childWillResponse","__touchstartTarget","__stopImmediatePropagation","willResponseEvent","__hasEmitted","inThis","vs","__getLg","__getRg","lg","createLinearGradient","addColorStop","rg","createRadialGradient","animation","play","LineGroup","__calBaseLine","REGISTER","Geom","__isMask","isDirectionRow","main","__preLayout","__preRender","xi","yi","$0","$1","$2","__maskId","name","hasRegister","TAG_NAME","INLINE","Dom","__flowChildren","__absChildren","__lineGroups","__traverseChildren","flowChildren","__tryLayInline","isRecursion","__calAutoBasis","min2","max2","__layout","__calMp","w2","h2","lineGroups","lineGroup","fw","verticalAlign","horizonAlign","__marginAuto","growList","shrinkList","basisList","minList","growSum","shrinkSum","basisSum","maxSum","maxCross","isOverflow","shrink","grow","overflow","between","around","absChildren","onlyRight","onlyBottom","fixedTop","fixedRight","fixedBottom","fixedLeft","__layoutAbs","__renderAsMask","__renderByMask","filter","CACHE","INIT","LOADING","LOADED","Img","__error","__source","__imgWidth","__imgHeight","lv","pts","strokeStyle","lineWidth","arc","__addGeom","elem","ovd","nvd","diffDefs","diffBb","diffD2D","od","nd","ol","diffDef","removeAt","insertAt","insertAdjacentHTML","parentNode","setAttribute","removeAttribute","diffItem","joinStop","diffChild","replaceWith","diffD2G","diffT2T","diffG2D","diffG2G","diffItemSelf","equalArr","firstChild","lastChild","getAttribute","obb","nbb","oMask","nMask","isText","textContent","index","Defs","getDom","querySelector","renderProp","initEvent","addEventListener","__root","Root","__node","__mw","__mh","mix","touches","getBoundingClientRect","clientX","clientY","stopPropagation","stopImmediatePropagation","preventDefault","__initProps","__refreshLevel","nodeName","toUpperCase","__genHtml","__uuid","getInstance","getPropertyValue","getContext","refresh","__vd","clear","KARAS_BEFORE_REFRESH","KARAS_REFRESH","getImageData","putImageData","clearRect","Line","__x1","__y1","__x2","__y2","__controlA","__controlB","curve","cx1","cy1","lineCap","setLineDash","bezierCurveTo","quadraticCurveTo","addGeom","Polyline","__points","origin","__origin","__controls","cls","hasControll","cl","Polygon","concat","OFFSET","getCoordsByDegree","Sector","__begin","__end","__r","__edge","edge","__closure","closure","large","Rect","__rx","__ry","Circle","Ellipse","ellipse","karas","createGm","createVd","calDeg","rotate","sx1","sy1","sx2","sy2","sx3","sy3","tx1","ty1","tx2","ty2","tx3","ty3","dx","dy","ls","lt","scale","ax2","ay2","ax3","ay3","alpha","by3","tar","register","appendTo","isValid","getRegister","createCp","cp","math"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["src/style/unit.js","src/node/Node.js","src/util/mode.js","src/util/util.js","src/math/matrix.js","src/style/transform.js","src/style/gradient.js","src/style/border.js","src/util/sort.js","src/style/font.js","src/style/css.js","src/node/LineBox.js","src/node/Text.js","src/style/match.js","src/style/image.js","src/util/Event.js","src/style/reset.js","src/animate/level.js","src/node/Component.js","src/util/inject.js","src/animate/frame.js","src/animate/easing.js","src/animate/repaint.js","src/animate/Animation.js","src/node/Xom.js","src/node/LineGroup.js","src/geom/Geom.js","src/node/Dom.js","src/node/Img.js","src/util/diff.js","src/node/Defs.js","src/node/Root.js","src/geom/Line.js","src/geom/Polyline.js","src/geom/Polygon.js","src/geom/Sector.js","src/geom/Rect.js","src/geom/Circle.js","src/geom/Ellipse.js","src/util/parse.js","src/math/tar.js","src/math/index.js","src/index.js"],"sourcesContent":["export default {\n AUTO: 0,\n PX: 1,\n PERCENT: 2,\n POSITION: 3,\n NUMBER: 4,\n INHERIT: 5,\n DEG: 6,\n SIZE: 7,\n};\n","import unit from \"../style/unit\";\n\nclass Node {\n constructor() {\n this.__x = 0;\n this.__y = 0;\n this.__ox = 0; // relative/margin:auto/text-align等造成的偏移量\n this.__oy = 0;\n this.__width = 0;\n this.__height = 0;\n this.__prev = null;\n this.__next = null;\n this.__ctx = null; // canvas的context\n this.__defs = null; // svg的defs\n this.__parent = null;\n this.__computedStyle = {}; // 计算为绝对值的样式\n this.__baseLine = 0;\n this.__virtualDom = {};\n this.__host = null;\n }\n\n __offsetX(diff, isLayout) {\n if(isLayout) {\n this.__x += diff;\n }\n else {\n this.__ox += diff;\n }\n }\n\n __offsetY(diff, isLayout) {\n if(isLayout) {\n this.__y += diff;\n }\n else {\n this.__oy += diff;\n }\n }\n\n __destroy() {\n this.__isDestroyed = true;\n this.__prev = this.__next = this.__ctx = this.__defs = this.__parent = this.__host = null;\n }\n\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get ox() {\n return this.__ox;\n }\n get oy() {\n return this.__oy;\n }\n get sx() {\n return this.x + this.ox;\n }\n get sy() {\n return this.y + this.oy;\n }\n get width() {\n return this.__width;\n }\n get height() {\n return this.__height;\n }\n get outerWidth() {\n return this.__width;\n }\n get outerHeight() {\n return this.__height;\n }\n get prev() {\n return this.__prev;\n }\n get next() {\n return this.__next;\n }\n get parent() {\n return this.__parent;\n }\n // canvas/svg根节点\n get root() {\n if(this.host) {\n return this.host.root;\n }\n if(this.parent) {\n return this.parent.root;\n }\n if(this.tagName && {\n canvas: true,\n svg: true,\n }.hasOwnProperty(this.tagName)) {\n return this;\n }\n }\n // component根节点\n get host() {\n if(this.__host) {\n return this.__host;\n }\n if(this.parent) {\n return this.parent.host;\n }\n }\n get style() {\n return this.__style;\n }\n get computedStyle() {\n return this.__computedStyle;\n }\n get ctx() {\n return this.__ctx;\n }\n get defs() {\n return this.__defs;\n }\n get baseLine() {\n return this.__baseLine;\n }\n get virtualDom() {\n return this.__virtualDom;\n }\n get isDestroyed() {\n return this.__isDestroyed;\n }\n}\n\nexport default Node;\n","export default {\n CANVAS: 0,\n SVG: 1,\n};\n","let toString = {}.toString;\nfunction isType(type) {\n return function(obj) {\n return toString.call(obj) === '[object ' + type + ']';\n }\n}\n\nlet isNumber = isType('Number');\n\nfunction joinSourceArray(arr) {\n let res = '';\n for(let i = 0, len = arr.length; i < len; i++) {\n let item = arr[i];\n if(Array.isArray(item)) {\n res += joinSourceArray(item);\n }\n else {\n res += stringify(item);\n }\n }\n return res;\n}\n\nfunction stringify(s) {\n if(isNil(s)) {\n return '';\n }\n return s.toString();\n}\n\nfunction encodeHtml(s, prop) {\n if(prop) {\n return s.replace(/\"/g, '"');\n }\n return s.replace(/&/g, '&').replace(/';\n vd.defs.forEach(item => {\n s += joinDef(item);\n });\n s += '';\n vd.bb.forEach(item => {\n s += joinVd(item);\n });\n s += '';\n vd.children.forEach(item => {\n if(item.isMask) {\n return;\n }\n s += joinVd(item);\n });\n s += '';\n return s;\n}\n\n// 普通元素\nfunction joinVd(vd) {\n if(vd.type === 'item' || vd.type === 'img') {\n let s = '';\n vd.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n if(vd.tagName === 'text') {\n return `${vd.content}`;\n }\n return `<${vd.tagName}${s}/>`;\n }\n else if(vd.type === 'text') {\n let s = ``;\n vd.children.forEach(item => {\n s += joinVd(item);\n });\n return `${s}`;\n }\n else if(vd.type === 'dom' || vd.type === 'geom') {\n let s = '';\n vd.bb.forEach(item => {\n s += joinVd(item);\n });\n s += ' {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n }\n s += '>';\n vd.children.forEach(item => {\n if(item.isMask) {\n return;\n }\n s += joinVd(item);\n });\n s += '';\n return `${s}`;\n }\n // display:none或visibility:hidden会没有type,产生一个空节点供diff运行\n return '';\n}\n\nfunction joinTransform(transform) {\n let s = '';\n transform.forEach(item => {\n s += `${item[0]}(${item[1]}) `;\n });\n return s;\n}\n\nfunction joinDef(def) {\n let s = `<${def.tagName} id=\"${def.uuid}\"`;\n if(def.tagName === 'mask') {\n s += ' maskUnits=\"userSpaceOnUse\"';\n }\n else {\n s += ' gradientUnits=\"userSpaceOnUse\"';\n }\n def.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n s += '>';\n def.children.forEach(item => {\n s += joinItem(item);\n });\n s += `${def.tagName}>`;\n return s;\n}\n\nfunction joinItem(item) {\n let s = `<${item.tagName}`;\n item.props.forEach(item => {\n s += ` ${item[0]}=\"${item[1]}\"`;\n });\n s += `>${item.tagName}>`;\n return s;\n}\n\nfunction d2r(n) {\n return n * Math.PI / 180;\n}\n\nfunction rgb2int(color) {\n let res = [];\n if(color.charAt(0) === '#') {\n color = color.slice(1);\n if(color.length === 3) {\n res.push(parseInt(color.charAt(0) + color.charAt(0), 16));\n res.push(parseInt(color.charAt(1) + color.charAt(1), 16));\n res.push(parseInt(color.charAt(2) + color.charAt(2), 16));\n }\n else if(color.length === 6) {\n res.push(parseInt(color.slice(0, 2), 16));\n res.push(parseInt(color.slice(2, 4), 16));\n res.push(parseInt(color.slice(4), 16));\n }\n res[3] = 1;\n }\n else if(color === 'transparent') {\n return [0, 0, 0, 0];\n }\n else {\n let c = color.match(/rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)/i);\n if(c) {\n res = [parseInt(c[1]), parseInt(c[2]), parseInt(c[3])];\n if(c[4]) {\n res[3] = parseFloat(c[4]);\n }\n else {\n res[3] = 1;\n }\n }\n }\n return res;\n}\n\nfunction arr2hash(arr) {\n let hash = {};\n for(let i = 0, len = arr.length; i < len; i++) {\n let item = arr[i];\n if(Array.isArray(item)) {\n hash[item[0]] = item[1];\n }\n else {\n for(let list = Object.keys(item), j = list.length - 1; j >= 0; j--) {\n let k = list[j];\n hash[k] = item[k];\n }\n }\n }\n return hash;\n}\n\nfunction hash2arr(hash) {\n if(Array.isArray(hash)) {\n return hash;\n }\n let arr = [];\n for(let list = Object.keys(hash), i = 0, len = list.length; i < len; i++) {\n let k = list[i];\n arr.push([k, hash[k]]);\n }\n return arr;\n}\n\nfunction clone(obj) {\n if(isNil(obj) || typeof obj !== 'object') {\n return obj;\n }\n if(util.isDate(obj)) {\n return new Date(obj);\n }\n let n = Array.isArray(obj) ? [] : {};\n for(let i in obj) {\n if(obj.hasOwnProperty(i)) {\n n[i] = clone(obj[i]);\n }\n }\n return n;\n}\n\nfunction mergeImageData(bottom, top) {\n let bd = bottom.data;\n let td = top.data;\n for(let i = 0, len = bd.length; i < len; i += 4) {\n let rb = bd[i];\n let gb = bd[i + 1];\n let bb = bd[i + 2];\n let ab = bd[i + 3];\n let rt = td[i];\n let gt = td[i + 1];\n let bt = td[i + 2];\n let at = td[i + 3];\n if(at === 0) {}\n else if(ab === 0 || at === 255) {\n bd[i] = rt;\n bd[i + 1] = gt;\n bd[i + 2] = bt;\n bd[i + 3] = at;\n }\n else {\n let alpha1 = ab / 255;\n let alpha2 = at / 255;\n let alpha3 = 1 - alpha1;\n let r = rb * alpha1 + rt * alpha2 * alpha3;\n let g = gb * alpha1 + gt * alpha2 * alpha3;\n let b = bb * alpha1 + bt * alpha2 * alpha3;\n let a = 1 - (1 - alpha1) * (1 - alpha2);\n if(a !== 0 && a !== 1) {\n r = r / a;\n g = g / a;\n b = b / a;\n }\n bd[i] = r;\n bd[i + 1] = g;\n bd[i + 2] = b;\n bd[i + 3] = a;\n }\n }\n return bottom;\n}\n\nlet util = {\n isObject: isType('Object'),\n isString: isType('String'),\n isFunction: isType('Function'),\n isNumber,\n isBoolean: isType('Boolean'),\n isDate: isType('Date'),\n stringify,\n joinSourceArray(arr) {\n return joinSourceArray(arr);\n },\n encodeHtml,\n isNil,\n joinVirtualDom,\n joinVd,\n joinTransform,\n joinDef,\n d2r,\n rgb2int,\n arr2hash,\n hash2arr,\n clone,\n mergeImageData,\n};\n\nexport default util;\n","// 生成4*4单位矩阵\nfunction identity() {\n const m = [];\n for (let i = 0; i < 16; i++) {\n m.push(i % 5 === 0 ? 1 : 0);\n }\n return m;\n}\n\n// 矩阵a*b\nfunction multiply(a, b) {\n let res = [];\n for(let i = 0; i < 4; i++) {\n const row = [a[i], a[i + 4], a[i + 8], a[i + 12]];\n for(let j = 0; j < 4; j++) {\n let k = j * 4;\n let col = [b[k], b[k + 1], b[k + 2], b[k + 3]];\n let n = row[0] * col[0] + row[1] * col[1] + row[2] * col[2] + row[3] * col[3];\n res[i + k] = n;\n }\n }\n return res;\n}\n\nfunction t43(m) {\n return [\n m[0], m[1],\n m[4], m[5],\n m[12], m[13]\n ];\n}\n\nfunction calPoint(point, m) {\n let [x, y] = point;\n return [\n m[0] * x + m[2] * y + m[4],\n m[1] * x + m[3] * y + m[5],\n ];\n}\n\nexport default {\n identity,\n multiply,\n t43,\n calPoint,\n};\n","import unit from '../style/unit';\nimport util from '../util/util';\nimport matrix from '../math/matrix';\n\nfunction calMatrix(transform, transformOrigin, x, y, ow, oh) {\n let [ox, oy] = transformOrigin;\n let list = normalize(transform, ox, oy, ow, oh);\n let m = matrix.identity();\n m[12] = ox;\n m[13] = oy;\n list.forEach(item => {\n let [k, v] = item;\n let t = matrix.identity();\n if(k === 'translateX') {\n t[12] = v;\n }\n else if(k === 'translateY') {\n t[13] = v;\n }\n else if(k === 'scaleX') {\n t[0] = v;\n }\n else if(k === 'scaleY') {\n t[5] = v;\n }\n else if(k === 'skewX') {\n v = util.d2r(v);\n t[4] = Math.tan(v);\n }\n else if(k === 'skewY') {\n v = util.d2r(v);\n t[1] = Math.tan(v);\n }\n else if(k === 'rotateZ') {\n v = util.d2r(v);\n let sin = Math.sin(v);\n let cos = Math.cos(v);\n t[0] = t[5] = cos;\n t[1] = sin;\n t[4] = -sin;\n }\n else if(k === 'matrix') {\n t[0] = v[0];\n t[1] = v[1];\n t[4] = v[2];\n t[5] = v[3];\n t[12] = v[4];\n t[13] = v[5];\n }\n m = matrix.multiply(m, t);\n });\n let t = matrix.identity();\n t[12] = -ox;\n t[13] = -oy;\n m = matrix.multiply(m, t);\n return matrix.t43(m);\n}\n\nfunction transformPoint(matrix, x, y) {\n let [a, b, c, d, e, f] = matrix;\n return [a * x + c * y + e, b * x + d * y + f];\n}\n\n// 向量积\nfunction vectorProduct(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction pointInQuadrilateral(x, y, x1, y1, x2, y2, x3, y3, x4, y4, matrix) {\n if(matrix) {\n [x1, y1] = transformPoint(matrix, x1, y1);\n [x2, y2] = transformPoint(matrix, x2, y2);\n [x3, y3] = transformPoint(matrix, x3, y3);\n [x4, y4] = transformPoint(matrix, x4, y4);\n if(vectorProduct(x2 - x1, y2 - y1, x - x1, y - y1) > 0\n && vectorProduct(x4 - x2, y4 - y2, x - x2, y - y2) > 0\n && vectorProduct(x3 - x4, y3 - y4, x - x4, y - y4) > 0\n && vectorProduct(x1 - x3, y1 - y3, x - x3, y - y3) > 0) {\n return true;\n }\n }\n else {\n return x >= x1 && y >= y1 && x <= x4 && y <= y4;\n }\n}\n\nfunction normalize(transform, ox, oy, w, h) {\n let res = [];\n transform.forEach(item => {\n let [k, v] = item;\n if(k === 'translateX') {\n if(v.unit === unit.PERCENT) {\n res.push([item[0], v.value * w * 0.01]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n }\n else if(k === 'translateY') {\n if(v.unit === unit.PERCENT) {\n res.push([item[0], v.value * h * 0.01]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n }\n else if(k === 'matrix') {\n res.push([item[0], item[1]]);\n }\n else {\n res.push([item[0], item[1].value]);\n }\n });\n return res;\n}\n\nfunction calOrigin(transformOrigin, x, y, w, h) {\n let tfo = [];\n transformOrigin.forEach((item, i) => {\n if(item.unit === unit.PX) {\n tfo.push(item.value + i ? y : x);\n }\n else if(item.unit === unit.PERCENT) {\n tfo.push((i ? y : x) + item.value * (i ? h : w) * 0.01);\n }\n });\n return tfo;\n}\n\nfunction convert(m3) {\n let m = matrix.identity();\n m[0] = m3[0];\n m[1] = m3[1];\n m[4] = m3[2];\n m[5] = m3[3];\n m[12] = m3[4];\n m[13] = m3[5];\n return m;\n}\n\nfunction mergeMatrix(a, b) {\n let m1 = convert(a);\n let m2 = convert(b);\n let m = matrix.multiply(m1, m2);\n return [\n m[0], m[1],\n m[4], m[5],\n m[12], m[13]\n ];\n}\n\nexport default {\n calMatrix,\n calOrigin,\n pointInQuadrilateral,\n mergeMatrix,\n};\n","import util from '../util/util';\nimport unit from './unit';\n\nfunction getLinearDeg(v) {\n let deg = 180;\n if(v === 'to top') {\n deg = 0;\n }\n else if(v === 'to top right') {\n deg = 45;\n }\n else if(v === 'to right') {\n deg = 90;\n }\n else if(v === 'to bottom right') {\n deg = 135;\n }\n else if(v === 'to bottom') {\n }\n else if(v === 'to bottom left') {\n deg = 225;\n }\n else if(v === 'to left') {\n deg = 270;\n }\n else if(v === 'to top left') {\n deg = 315;\n }\n // 数字角度,没有的话取默认角度\n else {\n let match = /(-?[\\d.]+)deg/.exec(v);\n if(match) {\n deg = parseFloat(match[1]);\n }\n }\n return deg % 360;\n}\n\n// 获取color-stop区间范围,去除无用值\nfunction getColorStop(v, length) {\n let list = [];\n // 先把已经声明距离的换算成[0,1]以数组形式存入,未声明的原样存入\n for(let i = 0, len = v.length; i < len; i++) {\n let item = v[i];\n // 考虑是否声明了位置\n if(item.length > 1) {\n let c = item[0];\n let p = item[1];\n if(p.unit === unit.PERCENT) {\n list.push([c, p.value * 0.01]);\n }\n else {\n list.push([c, p.value / length]);\n }\n }\n else {\n list.push(item[0]);\n }\n }\n // 首尾不声明默认为[0, 1]\n if(list.length > 1) {\n if(!Array.isArray(list[0])) {\n list[0] = [list[0], 0];\n }\n if(!Array.isArray(list[list.length - 1])) {\n list[list.length - 1] = [list[list.length - 1], 1];\n }\n }\n else if(!Array.isArray(list[0])) {\n list[0] = [list[0], 0];\n }\n // 不是数组形式的是未声明的,需区间计算,找到连续的未声明的,前后的区间平分\n let start = list[0][1];\n for(let i = 1, len = list.length; i < len - 1; i++) {\n let item = list[i];\n if(Array.isArray(item)) {\n start = item[1];\n }\n else {\n let j = i + 1;\n let end = list[list.length - 1][1];\n for(; j < len - 1; j++) {\n let item = list[j];\n if(Array.isArray(item)) {\n end = item[1];\n break;\n }\n }\n let num = j - i + 1;\n let per = (end - start) / num;\n for(let k = i; k < j; k++) {\n let item = list[k];\n list[k] = [item, start + per * (k + 1 - i)];\n }\n i = j;\n }\n }\n // 每个不能小于前面的,canvas/svg不能兼容这种情况,需处理\n for(let i = 1, len = list.length; i < len; i++) {\n let item = list[i];\n let prev = list[i - 1];\n if(item[1] < prev[1]) {\n item[1] = prev[1];\n }\n }\n // 0之前的和1之后的要过滤掉\n for(let i = 0, len = list.length; i < len - 1; i++) {\n let item = list[i];\n if(item[1] > 1) {\n list.splice(i + 1);\n break;\n }\n }\n for(let i = list.length - 1; i > 0; i--) {\n let item = list[i];\n if(item[1] < 0) {\n list.splice(0, i);\n break;\n }\n }\n // 可能存在超限情况,如在使用px单位超过len或= 0; i--) {\n let item = list[i];\n let p = item[1];\n if(p > 0) {\n allBefore = false;\n }\n if(p < 1) {\n allAfter = false;\n }\n }\n if(allBefore) {\n list.splice(0, len - 1);\n list[0][1] = 0;\n }\n else if(allAfter) {\n list.splice(1);\n list[0][1] = 0;\n }\n // 部分在区间之外需复杂计算\n else {\n let first = list[0];\n let last = list[len - 1];\n // 只要2个的情况下就是首尾都落在外面\n if(len === 2) {\n if(first[1] < 0 && last[1] > 1) {\n getCsLimit(first, last, length);\n }\n }\n // 只有1个在外面的情况较为容易\n else {\n if(first[1] < 0) {\n let next = list[1];\n let c1 = util.rgb2int(first[0]);\n let c2 = util.rgb2int(next[0]);\n let c = getCsStartLimit(c1, first[1], c2, next[1], length);\n first[0] = `rgba(${c[0]},${c[1]},${c[2]},${c[3]})`;\n first[1] = 0;\n }\n if(last[1] > 1) {\n let prev = list[len - 2];\n let c1 = util.rgb2int(prev[0]);\n let c2 = util.rgb2int(last[0]);\n let c = getCsEndLimit(c1, prev[1], c2, last[1], length);\n last[0] = `rgba(${c[0]},${c[1]},${c[2]},${c[3]})`;\n last[1] = 1;\n }\n }\n }\n }\n // 防止精度计算溢出[0,1]\n list.forEach(item => {\n if(item[1] < 0) {\n item[1] = 0;\n }\n else if(item[1] > 1) {\n item[1] = 1;\n }\n });\n return list;\n}\n\n// 根据角度和圆心获取渐变的4个点坐标\nfunction calLinearCoords(deg, length, cx, cy) {\n let x0;\n let y0;\n let x1;\n let y1;\n if(deg >= 270) {\n let r = util.d2r(360 - deg);\n x0 = cx + Math.sin(r) * length;\n y0 = cy + Math.cos(r) * length;\n x1 = cx - Math.sin(r) * length;\n y1 = cy - Math.cos(r) * length;\n }\n else if(deg >= 180) {\n let r = util.d2r(deg - 180);\n x0 = cx + Math.sin(r) * length;\n y0 = cy - Math.cos(r) * length;\n x1 = cx - Math.sin(r) * length;\n y1 = cy + Math.cos(r) * length;\n }\n else if(deg >= 90) {\n let r = util.d2r(180 - deg);\n x0 = cx - Math.sin(r) * length;\n y0 = cy - Math.cos(r) * length;\n x1 = cx + Math.sin(r) * length;\n y1 = cy + Math.cos(r) * length;\n }\n else {\n let r = util.d2r(deg);\n x0 = cx - Math.sin(r) * length;\n y0 = cy + Math.cos(r) * length;\n x1 = cx + Math.sin(r) * length;\n y1 = cy - Math.cos(r) * length;\n }\n return [x0, y0, x1, y1];\n}\n\n// 获取径向渐变半径\nfunction calRadialRadius(d, iw, ih, cx, cy, x1, y1, x2, y2) {\n let size = 'farthest-corner';\n let r; // 半径\n if(/circle|ellipse|at|closest|farthest/i.test(d)) {\n let i = d.indexOf('at');\n let at;\n let s;\n if(i > -1) {\n at = d.slice(i + 2);\n s = d.slice(0, i - 1);\n }\n s = /(closest|farthest)-(side|corner)/.exec(s);\n if(s) {\n size = s[0];\n }\n // 指定宽高后size失效,置null标识\n else {\n s = /\\s+(-?[\\d.]+(?:px|%))\\s*(-?[\\d.]+(?:px|%))?/.exec(s);\n if(s) {\n size = null;\n if(s[1].indexOf('px') > -1) {\n r = parseFloat(s[1]) * 0.5;\n }\n else {\n r = parseFloat(s[1]) * iw * 0.005;\n }\n }\n }\n if(at) {\n s = /\\s+(-?[\\d.]+(?:px|%))\\s*(-?[\\d.]+(?:px|%))?/.exec(at);\n if(s) {\n if(s[1].indexOf('px') > -1) {\n cx = x1 + parseFloat(s[1]);\n }\n else {\n cx = x1 + parseFloat(s[1]) * iw * 0.01;\n }\n // y可以省略,此时等同于x\n let by = s[2] || s[1];\n if(by.indexOf('px') > -1) {\n cy = y1 + parseFloat(by);\n }\n else {\n cy = y1 + parseFloat(by) * ih * 0.01;\n }\n }\n }\n }\n if(size) {\n if(size === 'closest-side') {\n // 在边外特殊情况只有end颜色填充\n if(cx <= x1 || cx >= x2 || cy <= y1 || cy >= y2) {\n r = 0;\n }\n else {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = cx - x1;\n } else {\n xl = x2 - cx;\n }\n if(cy < y1 + ih * 0.5) {\n yl = cy - y1;\n } else {\n yl = y2 - cy;\n }\n r = Math.min(xl, yl);\n }\n }\n else if(size === 'closest-corner') {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = cx - x1;\n }\n else {\n xl = x2 - cx;\n }\n if(cy < y1 + ih * 0.5) {\n yl = cy - y1;\n }\n else {\n yl = y2 - cy;\n }\n r = Math.sqrt(Math.pow(xl, 2) + Math.pow(yl, 2));\n }\n else if(size === 'farthest-side') {\n if(cx <= x1) {\n r = x1 - cx + iw;\n }\n else if(cx >= x2) {\n r = cx - x2 + iw;\n }\n else if(cy <= y1) {\n r = y1 - cy + ih;\n }\n else if(cx >= y2) {\n r = cy - y2 + ih;\n }\n else {\n let xl = Math.max(x2 - cx, cx - x1);\n let yl = Math.max(y2 - cy, cy - y1);\n r = Math.max(xl, yl);\n }\n }\n // 默认farthest-corner\n else {\n let xl;\n let yl;\n if(cx < x1 + iw * 0.5) {\n xl = x2 - cx;\n }\n else {\n xl = cx - x1;\n }\n if(cy < y1 + ih * 0.5) {\n yl = y2 - cy;\n }\n else {\n yl = cy - y1;\n }\n r = Math.sqrt(Math.pow(xl, 2) + Math.pow(yl, 2));\n }\n }\n return [r, cx, cy];\n}\n\n// 当linear-gradient的值超过[0,1]区间限制时,计算其对应区间1的值\nfunction getCsStartLimit(c1, p1, c2, p2, length) {\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = Math.abs(p1) * length;\n let l2 = p2 * length;\n let p = l1 / (l2 + l1);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n return [r, g, b, a];\n}\n\nfunction getCsEndLimit(c1, p1, c2, p2, length) {\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = p1 * length;\n let l2 = p2 * length;\n let p = (length - l1) / (l2 - l1);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n return [r, g, b, a];\n}\n\nfunction getCsLimit(first, last, length) {\n let c1 = util.rgb2int(first[0]);\n let c2 = util.rgb2int(last[0]);\n let [ r1, g1, b1, a1 = 1 ] = c1;\n let [ r2, g2, b2, a2 = 1 ] = c2;\n let l1 = Math.abs(first[1]) * length;\n let l2 = last[1] * length;\n let p = l1 / (l1 + l2);\n let r = Math.floor(r1 + (r2 - r1) * p);\n let g = Math.floor(g1 + (g2 - g1) * p);\n let b = Math.floor(b1 + (b2 - b1) * p);\n let a = a1 + (a2 - a1) * p;\n first[0] = `rgba(${r},${g},${b},${a})`;\n first[1] = 0;\n p = (length + l1) / (l1 + l2);\n r = Math.floor(r1 + (r2 - r1) * p);\n g = Math.floor(g1 + (g2 - g1) * p);\n b = Math.floor(b1 + (b2 - b1) * p);\n a = a1 + (a2 - a1) * p;\n last[0] = `rgba(${r},${g},${b},${a})`;\n last[1] = 1;\n}\n\nlet reg = /\\b(\\w+)-gradient\\((.+)\\)/;\n\nfunction parseGradient(s) {\n let gradient = reg.exec(s);\n if(gradient) {\n let o = {\n k: gradient[1],\n };\n let deg = /(-?[\\d.]+deg)|(to\\s+[toprighbml]+)|circle|ellipse|at|closest|farthest|((closest|farthest)-(side|corner))/.exec(gradient[2]);\n let v = gradient[2].match(/((#[0-9a-f]{3,6})|(rgba?\\(.+?\\)))(\\s+-?[\\d.]+(px|%))?/ig);\n o.v = v.map(item => {\n let arr = item.split(/\\s+/);\n if(arr[1]) {\n if(/%$/.test(arr[1])) {\n arr[1] = {\n value: parseFloat(arr[1]),\n unit: unit.PERCENT,\n str: arr[1],\n };\n }\n else {\n arr[1] = {\n value: parseFloat(arr[1]),\n unit: unit.PX,\n str: arr[1],\n };\n }\n }\n return arr;\n });\n if(deg) {\n let i = gradient[2].indexOf(',');\n if(o.k === 'linear') {\n o.d = getLinearDeg(gradient[2].slice(0, i));\n }\n else {\n o.d = gradient[2].slice(0, i);\n }\n }\n else {\n if(o.k === 'linear') {\n o.d = 180;\n }\n else {\n o.d = 'farthest-corner';\n }\n }\n return o;\n }\n}\n\nfunction getLinear(v, d, cx, cy, w, h) {\n let theta = util.d2r(d);\n let length = Math.abs(w * Math.sin(theta)) + Math.abs(h * Math.cos(theta));\n let [x1, y1, x2, y2] = calLinearCoords(d, length * 0.5, cx, cy);\n let stop = getColorStop(v, length);\n return {\n x1,\n y1,\n x2,\n y2,\n stop,\n };\n}\n\nfunction getRadial(v, d, cx, cy, x1, y1, x2, y2) {\n let w = x2 - x1;\n let h = y2 - y1;\n let [r, cx2, cy2] = calRadialRadius(d, w, h, cx, cy, x1, y1, x2, y2);\n let stop = getColorStop(v, r * 2);\n // 超限情况等同于只显示end的bgc\n if(r <= 0) {\n let end = stop[stop.length - 1];\n end[1] = 0;\n stop = [end];\n cx2 = x1;\n cy2 = y1;\n // 肯定大于最长直径\n r = w + h;\n }\n return {\n cx: cx2,\n cy: cy2,\n r,\n stop,\n };\n}\n\nexport default {\n reg,\n parseGradient,\n getLinear,\n getRadial,\n};\n","/* 获取合适的虚线实体空白宽度ps/pd和数量n\n * 总长total,start边长bs,end边长be,内容长w,\n * 实体长范围[smin,smax],空白长范围[dmin,dmax]\n */\nfunction calFitDashed(total, bs, be, w, smin, smax, dmin, dmax) {\n let n = 1;\n let ps = 1;\n let pd = 1;\n // 从最大实体空白长开始尝试\n outer:\n for(let i = smax; i >= smin; i--) {\n for(let j = dmax; j >= dmin; j--) {\n // 已知实体空白长度,n实体和n-1空白组成total,计算获取n数量\n let per = i + j;\n let num = Math.floor((total + j) / per);\n let k = j;\n // 可能除不尽,此时扩展空白长\n if(num * per < j + total) {\n let free = total - num * i;\n k = free / (num - 1);\n if(k > dmax) {\n continue;\n }\n }\n per = i + k;\n // bs比实体大才有效,因为小的话必定和第一个实体完整相连\n if(bs > 1 && bs > i) {\n let mo = bs % per;\n if(mo > i) {\n continue;\n }\n if(be > 1) {\n let mo = (bs + w) % per;\n if(mo > i) {\n continue;\n }\n }\n }\n if(be > 1) {\n let mo = (bs + w) % per;\n if(mo > i) {\n continue;\n }\n }\n if(num > 0) {\n n = num;\n ps = i;\n pd = k;\n }\n break outer;\n }\n }\n return {\n n,\n ps,\n pd,\n };\n}\n\n// dashed时n个实线和n-1虚线默认以3:1宽度组成,dotted则是n和n以1:1组成\nfunction calDashed(style, m1, m2, m3, m4, bw) {\n let total = m4 - m1;\n let w = m3 - m2;\n let bs = m2 - m1;\n let be = m4 - m3;\n if(style === 'dotted') {\n return calFitDashed(total, bs, be, w, bw, bw, Math.max(1, bw * 0.25), bw * 2);\n }\n else {\n let { n, ps, pd } = calFitDashed(total, bs, be, w, bw, bw * 3, Math.max(1, bw * 0.25), bw * 2);\n if(n === 1) {\n return calFitDashed(total, bs, be, w, bw, bw, Math.max(1, bw * 0.25), bw * 2);\n }\n // 降级为dotted\n return { n, ps, pd };\n }\n}\n\n// 获取边框分割为几块的坐标,虚线分割为若干四边形和三边型\n// direction为上右下左0123\nfunction calPoints(borderWidth, borderStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, direction) {\n let points = [];\n if(['dashed', 'dotted'].indexOf(borderStyle) > -1) {\n // 寻找一个合适的虚线线段长度和之间空白边距长度\n let { n, ps, pd } = (direction === 0 || direction === 2)\n ? calDashed(borderStyle, x1, x2, x3, x4, borderWidth)\n : calDashed(borderStyle, y1, y2, y3, y4, borderWidth);\n if(n > 1) {\n for(let i = 0; i < n; i++) {\n // 最后一个可能没有到底,延长之\n let isLast = i === n - 1;\n let main1;\n let main2;\n let cross1;\n let cross2;\n if(direction === 0 || direction === 2) {\n main1 = i ? (x1 + ps * i + pd * i) : x1;\n }\n else {\n main1 = i ? (y1 + ps * i + pd * i) : y1;\n }\n main2 = main1 + ps;\n if(direction === 0) {\n // 整个和borderLeft重叠\n if(main2 < x2) {\n if(isLast) {\n points.push([x1, y1, x4, y1, x3, y2, x2, y2]);\n }\n else {\n cross1 = y1 + (main1 - x1) * Math.tan(deg1);\n cross2 = y1 + (main2 - x1) * Math.tan(deg1);\n points.push([main1, y1, main2, y1, main2, cross2, main1, cross1]);\n }\n }\n // 整个和borderRight重叠\n else if(main1 > x3) {\n cross1 = y1 + (x4 - main1) * Math.tan(deg2);\n cross2 = y1 + (x4 - main2) * Math.tan(deg2);\n if(isLast) {\n points.push([main1, y1, x4, y1, main1, cross1]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross2, main1, cross1]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n cross1 = y1 + (main1 - x1) * Math.tan(deg1);\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, x2, y2, main1, cross1]);\n }\n else {\n // 下部分和borderRight重叠\n if(main2 > x3) {\n points.push([main1, y1, main2, y1, x3, y2, x2, y2, main1, cross1]);\n }\n // 下部独立\n else {\n points.push([main1, y1, main2, y1, main2, y2, x2, y2, main1, cross1]);\n }\n }\n }\n // 下部分和borderRight重叠\n else if(main2 > x3) {\n cross1 = y1 + (x4 - main2) * Math.tan(deg2);\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, x2, y2, main1, cross1]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross1, x3, y2, x2, y2, main1, cross1]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, main1, y2]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, cross1, x3, y2, main1, y2]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([main1, y1, x4, y1, x3, y2, main1, y2]);\n }\n else {\n points.push([main1, y1, main2, y1, main2, y2, main1, y2]);\n }\n }\n }\n }\n else if(direction === 1) {\n // 整个和borderTop重叠\n if(main2 < y2) {\n if(isLast) {\n points.push([x3, y2, x4, y1, x4, y4, x3, y3]);\n }\n else {\n cross1 = x4 - (main2 - y1) * Math.tan(deg1);\n cross2 = x4 - (main1 - y1) * Math.tan(deg1);\n points.push([cross1, main2, cross2, main1, x4, main1, x4, main2]);\n }\n }\n // 整个和borderBottom重叠\n else if(main1 > y3) {\n cross1 = x3 + (main1 - y3) * Math.tan(deg2);\n cross2 = x3 + (main2 - y3) * Math.tan(deg2);\n if(isLast) {\n points.push([cross1, main1, x4, main1, x4, y4]);\n }\n else {\n points.push([cross1, main1, x4, main1, x4, main2, cross2, main2]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderTop重叠\n if(main1 < y2) {\n cross1 = x3 + (y2 - main1) * Math.tan(deg1);\n if(isLast) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, y4, x3, y4]);\n } else {\n // 下部分和borderBottom重叠\n if(main2 > y3) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n // 下部独立\n else {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, x3, main2]);\n }\n }\n }\n // 下部分和borderBottom重叠\n else if(main2 > y3) {\n cross1 = x3 + (main2 - y3) * Math.tan(deg2);\n // 上部分和borderTop重叠\n if(main1 < y2) {\n if(isLast) {\n points.push([x3, y2, cross1, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, y2, cross1, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([x3, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, main1, x4, main1, x4, main2, cross1, main2, x3, y3]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([x3, main1, x4, main1, x4, y4, x3, y3]);\n } else {\n points.push([x3, main1, x4, main1, x4, main2, x3, main2]);\n }\n }\n }\n }\n else if(direction === 2) {\n // 整个和borderLeft重叠\n if(main2 < x2) {\n if(isLast) {\n points.push([x1, y4, x2, y3, x3, y3, x4, y4]);\n }\n else {\n cross1 = y4 - (main1 - x1) * Math.tan(deg1);\n cross2 = y4 - (main2 - x1) * Math.tan(deg1);\n points.push([main1, cross1, main2, cross2, main2, y4, main1, y4]);\n }\n }\n // 整个和borderRight重叠\n else if(main1 > x3) {\n cross1 = y4 - (main1 - x1) * Math.tan(deg2);\n cross2 = y4 - (main2 - x1) * Math.tan(deg2);\n if(isLast) {\n points.push([main1, cross1, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, cross1, main2, cross2, main2, y4, main1, y4]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n cross1 = y3 + (main1 - x1) * Math.tan(deg1);\n if(isLast) {\n points.push([main1, cross1, x2, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n // 下部分和borderRight重叠\n if(main2 > x3) {\n points.push([main1, cross1, x2, y3, x3, y3, main2, y4, main1, y4]);\n }\n // 下部独立\n else {\n points.push([main1, cross1, x2, y3, main2, y3, main2, y4, main1, y4]);\n }\n }\n }\n // 下部分和borderRight重叠\n else if(main2 > x3) {\n cross1 = y4 - (x4 - main2) * Math.tan(deg2);\n // 上部分和borderLeft重叠\n if(main1 < x2) {\n if(isLast) {\n points.push([main1, cross1, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, cross1, x3, y3, main2, cross1, main2, y4, main1, y4]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([main1, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, y3, x3, y3, main2, cross1, main2, y4, main1, y4]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([main1, y3, x3, y3, x4, y4, main1, y4]);\n }\n else {\n points.push([main1, y3, main2, y3, main2, y4, main1, y4]);\n }\n }\n }\n }\n else if(direction === 3) {\n // 整个和borderTop重叠\n if(main2 < y2) {\n if(isLast) {\n points.push([x1, y1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n cross1 = x1 + (main1 - y1) * Math.tan(deg1);\n cross2 = x1 + (main2 - y1) * Math.tan(deg1);\n points.push([x1, main1, cross1, main1, cross2, main2, x1, main2]);\n }\n }\n // 整个和borderBottom重叠\n else if(main1 > y3) {\n cross1 = x1 + (y4 - main1) * Math.tan(deg2);\n cross2 = x1 + (y4 - main2) * Math.tan(deg2);\n if(isLast) {\n points.push([x1, main1, cross1, main1, x1, y4]);\n }\n else {\n points.push([x1, main1, cross1, main1, cross2, main2, x1, main2]);\n }\n }\n // 不被整个重叠的情况再细分\n else {\n // 上部分和borderTop重叠\n if(main1 < y2) {\n cross1 = x1 + (main1 - y1) * Math.tan(deg1);\n if(isLast) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n // 下部分和borderBottom重叠\n if(main2 > y3) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, cross1, main2, x1, main2]);\n }\n // 下部独立\n else {\n points.push([x1, main1, cross1, main1, x2, y2, x2, main2, x1, main2]);\n }\n }\n }\n // 下部分和borderBottom重叠\n else if(main2 > y3) {\n cross1 = x1 + (y4 - main2) * Math.tan(deg2);\n // 上部分和borderTop重叠\n if(main1 < y2) {\n if(isLast) {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, cross1, main1, x2, y2, x2, y3, cross1, main2, x1, main2]);\n }\n }\n // 上部独立\n else {\n if(isLast) {\n points.push([x1, main1, x2, main1, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, x2, main1, x2, y3, cross1, main2, x1, main2]);\n }\n }\n }\n // 完全独立\n else {\n if(isLast) {\n points.push([x1, main1, x2, main1, x2, y3, x1, y4]);\n }\n else {\n points.push([x1, main1, x2, main1, x2, main2, x1, main2]);\n }\n }\n }\n }\n }\n return points;\n }\n }\n // 兜底返回实线\n if(direction === 0) {\n points.push([x1, y1, x4, y1, x3, y2, x2, y2]);\n }\n else if(direction === 1){\n points.push([x3, y2, x4, y1, x4, y4, x3, y3]);\n }\n else if(direction === 2){\n points.push([x1, y4, x2, y3, x3, y3, x4, y4]);\n }\n else if(direction === 3){\n points.push([x1, y1, x2, y2, x2, y3, x1, y4]);\n }\n return points;\n}\n\nexport default {\n calDashed,\n calPoints,\n};\n","function quickSort(arr, begin, end, compare) {\n if(begin >= end) {\n return;\n }\n let i = begin, j = end, p = i, v = arr[p], seq = true;\n while(i < j) {\n if(seq) {\n for(; i < j; j--) {\n if(compare.call(arr, v, arr[j])) {\n swap(arr, p, j);\n p = j;\n seq = !seq;\n i++;\n break;\n }\n }\n }\n else {\n for(; i < j; i++) {\n if(compare.call(arr, arr[i], v)) {\n swap(arr, p, i);\n p = i;\n seq = !seq;\n j--;\n break;\n }\n }\n }\n }\n quickSort(arr, begin, p - 1, compare);\n quickSort(arr, p + 1, end, compare);\n}\nfunction swap(arr, a, b) {\n let temp = arr[a];\n arr[a] = arr[b];\n arr[b] = temp;\n}\n\nexport default function(arr, compare) {\n if(!Array.isArray(arr) || arr.length < 2) {\n return arr;\n }\n compare = compare || function() {};\n quickSort(arr, 0, arr.length - 1, compare);\n return arr;\n};\n","'use strict';\n\nexport default {\n arial: {\n lhr: 1.14990234375, // 默认line-height ratio,(67+1854+434)/2048\n car: 1.1171875, // content-area ratio,(1854+434)/2048\n blr: 0.9052734375, // base-line ratio,1854/2048\n mdr: 0.64599609375, // middle ratio,(1854-1062/2)/2048\n lgr: 0.03271484375, // line-gap ratio,67/2048\n },\n};\n","import unit from './unit';\nimport font from './font';\nimport gradient from './gradient';\nimport util from '../util/util';\n\nfunction parserOneBorder(style, direction) {\n let key = `border${direction}`;\n if(!style[key]) {\n return;\n }\n let w = /\\b[\\d.]+px\\b/i.exec(style[key]);\n if(w) {\n style[key + 'Width'] = w[0];\n }\n let s = /\\b(solid|dashed|dotted)\\b/i.exec(style[key]);\n if(s) {\n style[key + 'Style'] = s[1];\n }\n let c = /#[0-9a-f]{3,6}/i.exec(style[key]);\n if(c && [4, 7].indexOf(c[0].length) > -1) {\n style[key + 'Color'] = c[0];\n }\n else if(/\\btransparent\\b/i.test(style[key])) {\n style[key + 'Color'] = 'transparent';\n }\n else {\n c = /rgba?\\(.+\\)/i.exec(style[key]);\n if(c) {\n style[key + 'Color'] = c[0];\n }\n }\n}\n\nfunction calUnit(obj, k, v) {\n if(v === 'auto') {\n obj[k] = {\n unit: unit.AUTO,\n };\n }\n else if(v === 'inherit') {\n obj[k] = {\n unit: unit.INHERIT,\n };\n }\n else if(/px$/.test(v)) {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PX,\n };\n }\n else if(/%$/.test(v)) {\n // border不支持百分比\n if(k.toString().indexOf('border') === 0) {\n obj[k] = {\n value: 0,\n unit: unit.PX,\n };\n }\n else {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PERCENT,\n };\n }\n }\n else {\n v = parseFloat(v) || 0;\n obj[k] = {\n value: v,\n unit: unit.PX,\n };\n }\n return obj;\n}\n\nfunction normalize(style, reset) {\n // 默认reset\n if(reset) {\n reset.forEach(item => {\n if(!style.hasOwnProperty(item.k)) {\n style[item.k] = item.v;\n }\n });\n }\n let temp = style.background;\n // 处理渐变背景色\n if(temp) {\n // gradient/image和颜色可以并存\n let gd = gradient.reg.exec(temp);\n if(gd) {\n style.backgroundImage = gd[0];\n temp = temp.replace(gd[0], '');\n }\n let image = /url\\((['\"]?)(.*?)\\1\\)/.exec(temp);\n if(image) {\n style.backgroundImage = image[2];\n temp = temp.replace(image[0], '');\n }\n let repeat = /(no-)?repeat(-[xy])?/i.exec(temp);\n if(repeat) {\n style.backgroundRepeat = repeat[0].toLowerCase();\n }\n let position = /\\s+(((-?[\\d.]+(px|%)?)|(left|top|right|bottom|center))\\s*){1,2}/ig.exec(temp);\n if(position) {\n style.backgroundPosition = position[0].trim();\n }\n let bgc = /^\\s*(#[0-9a-f]{3,6})|(rgba?\\(.+?\\))/i.exec(temp);\n if(bgc) {\n style.backgroundColor = bgc[0];\n }\n }\n // 背景图\n temp = style.backgroundImage;\n if(temp) {\n // 区分是渐变色还是图\n if(gradient.reg.test(temp)) {\n style.backgroundImage = gradient.parseGradient(temp);\n }\n }\n temp = style.backgroundColor;\n if(temp) {\n // 先赋值默认透明,后续操作有合法值覆盖\n style.backgroundColor = 'transparent';\n let bgc = /^#[0-9a-f]{3,6}/i.exec(temp);\n if(bgc && [4, 7].indexOf(bgc[0].length) > -1) {\n style.backgroundColor = bgc[0];\n }\n else {\n bgc = /rgba?\\(.+\\)/i.exec(temp);\n if(bgc) {\n style.backgroundColor = bgc[0];\n }\n }\n }\n // 背景位置\n temp = style.backgroundPosition;\n if(temp) {\n temp = temp.split(/\\s+/);\n if(temp.length === 1) {\n temp[1] = '50%';\n }\n let bp = [];\n for(let i = 0; i < 2; i++) {\n let item = temp[i];\n if(/%$/.test(item)) {\n bp.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n bp.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else {\n bp.push({\n value: item,\n unit: unit.POSITION,\n });\n }\n }\n style.backgroundPosition = bp;\n }\n if(temp) {}\n // 背景尺寸\n temp = style.backgroundSize;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(contain|cover|auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[1] = match[0];\n }\n let bc = [];\n for(let i = 0; i < 2; i++) {\n let item = match[i];\n if(/%$/.test(item)) {\n bc.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n bc.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else if(item === 'contain' || item === 'cover') {\n bc.push({\n value: item,\n unit: unit.SIZE,\n });\n }\n else {\n bc.push({\n unit: unit.AUTO,\n });\n }\n }\n style.backgroundSize = bc;\n }\n else {\n style.backgroundSize = [{\n unit: unit.AUTO,\n }, {\n unit: unit.AUTO,\n }];\n }\n }\n // 处理缩写\n temp = style.flex;\n if(temp) {\n if(temp === 'none') {\n style.flexGrow = 0;\n style.flexShrink = 0;\n style.flexBasis = 'auto';\n }\n else if(temp === 'auto') {\n style.flexGrow = 1;\n style.flexShrink = 1;\n style.flexBasis = 'auto';\n }\n else if(/^[\\d.]+$/.test(temp)) {\n style.flexGrow = parseFloat(temp);\n style.flexShrink = 1;\n style.flexBasis = 0;\n }\n else if(/^[\\d.]+px$/.test(temp)) {}\n else if(/^[\\d.]+%$/.test(temp)) {}\n else {\n style.flexGrow = 0;\n style.flexShrink = 1;\n style.flexBasis = 'auto';\n }\n }\n temp = style.border;\n if(temp) {\n style.borderTop = style.borderRight = style.borderBottom = style.borderLeft = temp;\n }\n temp = style.margin;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[3] = match[2] = match[1] = match[0];\n }\n else if(match.length === 2) {\n match[2] = match[0];\n match[3] = match[1];\n }\n else if(match.length === 3) {\n match[3] = match[1];\n }\n style.marginTop = match[0];\n style.marginRight = match[1];\n style.marginBottom = match[2];\n style.marginLeft = match[3];\n }\n }\n temp = style.padding;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(auto)/ig);\n if(match) {\n if(match.length === 1) {\n match[3] = match[2] = match[1] = match[0];\n }\n else if(match.length === 2) {\n match[2] = match[0];\n match[3] = match[1];\n }\n else if(match.length === 3) {\n match[3] = match[1];\n }\n style.paddingTop = match[0];\n style.paddingRight = match[1];\n style.paddingBottom = match[2];\n style.paddingLeft = match[3];\n }\n }\n temp = style.transform;\n if(temp) {\n let match = temp.toString().match(/\\w+\\(.+?\\)/g);\n if(match) {\n let transform = style.transform = [];\n match.forEach(item => {\n let i = item.indexOf('(');\n let k = item.slice(0, i);\n let v = item.slice(i + 1, item.length - 1);\n if(k === 'matrix') {\n let arr = v.split(/\\s*,\\s*/);\n arr = arr.map(item => parseFloat(item));\n if(arr.length > 6) {\n arr = arr.slice(0, 6);\n }\n if(arr.length === 6) {\n transform.push(['matrix', arr]);\n }\n }\n else if(k === 'translateX') {\n let arr = ['translateX', v];\n transform.push(calUnit(arr, 1, v));\n }\n else if(k === 'translateY') {\n let arr = ['translateY', v];\n transform.push(calUnit(arr, 1, v));\n }\n else if(k === 'translate') {\n let arr = v.split(/\\s*,\\s*/);\n let arr1 = ['translateX', arr[0]];\n let arr2 = ['translateY', arr[1] || arr[0]];\n transform.push(calUnit(arr1, 1, arr[0]));\n transform.push(calUnit(arr2, 1, arr[1] || arr[0]));\n }\n else if(k === 'scaleX') {\n transform.push(['scaleX', {\n value: parseFloat(v) || 0,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'scaleY') {\n transform.push(['scaleY', {\n value: parseFloat(v) || 0,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'scale') {\n let arr = v.split(/\\s*,\\s*/);\n let x = parseFloat(arr[0]) || 0;\n let y = parseFloat(arr[arr.length - 1]) || 0;\n transform.push(['scaleX', {\n value: x,\n unit: unit.NUMBER,\n }]);\n transform.push(['scaleY', {\n value: y,\n unit: unit.NUMBER,\n }]);\n }\n else if(k === 'rotateZ' || k === 'rotate') {\n transform.push(['rotateZ', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skewX') {\n transform.push(['skewX', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skewY') {\n transform.push(['skewY', {\n value: parseFloat(v) || 0,\n unit: unit.DEG,\n }]);\n }\n else if(k === 'skew') {\n let arr = v.split(/\\s*,\\s*/);\n let x = parseFloat(arr[0]) || 0;\n let y = parseFloat(arr[arr.length - 1]) || 0;\n transform.push(['skewX', {\n value: x,\n unit: unit.DEG,\n }]);\n transform.push(['skewY', {\n value: y,\n unit: unit.DEG,\n }]);\n }\n });\n }\n }\n temp = style.transformOrigin;\n if(temp) {\n let match = temp.toString().match(/(-?[\\d.]+(px|%)?)|(left|top|right|bottom|center)/ig);\n if(match) {\n if(match.length === 1) {\n match[1] = match[0];\n }\n let tfo = [];\n for(let i = 0; i < 2; i++) {\n let item = match[i];\n if(/%$/.test(item)) {\n tfo.push({\n value: parseFloat(item) || 0,\n unit: unit.PERCENT,\n });\n }\n else if(/^[\\d.]/.test(item)) {\n tfo.push({\n value: parseFloat(item),\n unit: unit.PX,\n });\n }\n else {\n tfo.push({\n value: {\n top: 0,\n left: 0,\n center: 50,\n right: 100,\n bottom: 100,\n }[item],\n unit: unit.PERCENT,\n });\n if(tfo[i].value === undefined) {\n tfo[i].value = 50;\n }\n }\n }\n style.transformOrigin = tfo;\n }\n else {\n style.transformOrigin = [{\n value: 50,\n unit: unit.PERCENT,\n }, {\n value: 50,\n unit: unit.PERCENT,\n }];\n }\n }\n temp = style.opacity;\n if(temp) {\n temp = parseFloat(temp);\n if(!isNaN(temp)) {\n temp = Math.max(temp, 0);\n temp = Math.min(temp, 1);\n style.opacity = temp;\n }\n }\n parserOneBorder(style, 'Top');\n parserOneBorder(style, 'Right');\n parserOneBorder(style, 'Bottom');\n parserOneBorder(style, 'Left');\n // 转化不同单位值为对象标准化\n [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'width',\n 'height',\n 'flexBasis',\n 'fontSize',\n 'strokeWidth'\n ].forEach(k => {\n let v = style[k];\n if(!style.hasOwnProperty(k)) {\n return;\n }\n calUnit(style, k, v);\n });\n temp = style.fontWeight;\n if(temp || temp === 0) {\n if(temp === 'bold') {\n style.fontWeight = 700;\n }\n else if(temp === 'normal') {\n style.fontWeight = 400;\n }\n else if(temp === 'lighter') {\n style.fontWeight = 200;\n }\n else if(temp !== 'inherit') {\n style.fontWeight = parseInt(temp) || 400;\n }\n }\n temp = style.lineHeight;\n if(temp || temp === 0) {\n if(temp === 'inherit') {\n style.lineHeight = {\n unit: unit.INHERIT,\n };\n }\n if(temp === 'normal') {\n style.lineHeight = {\n unit: unit.AUTO,\n };\n }\n else if(/px$/.test(temp)) {\n style.lineHeight = {\n value: parseFloat(temp),\n unit: unit.PX,\n };\n }\n else {\n let n = parseFloat(temp) || 'normal';\n // 非法数字\n if(n === 'normal') {\n style.lineHeight = {\n unit: unit.AUTO,\n };\n }\n else {\n style.lineHeight = {\n value: n,\n unit: unit.NUMBER,\n };\n }\n }\n }\n temp = style.strokeDasharray;\n if(temp) {\n let match = temp.toString().match(/[\\d.]+/g);\n if(match) {\n style.strokeDasharray = match.join(', ');\n }\n else {\n style.strokeDasharray = '';\n }\n }\n // fill和stroke为渐变时特殊处理\n temp = style.fill;\n if(temp && temp.indexOf('-gradient(') > 0) {\n style.fill = gradient.parseGradient(temp);\n }\n temp = style.stroke;\n if(temp && temp.indexOf('-gradient(') > 0) {\n style.stroke = gradient.parseGradient(temp);\n }\n // 删除缩写避免干扰动画计算\n delete style.background;\n delete style.flex;\n delete style.border;\n delete style.margin;\n delete style.padding;\n return style;\n}\n\nfunction computedFontSize(computedStyle, fontSize, parentComputedStyle, isRoot) {\n if(fontSize.unit === unit.INHERIT) {\n computedStyle.fontSize = isRoot ? 16 : parentComputedStyle.fontSize;\n }\n else if(fontSize.unit === unit.PX) {\n computedStyle.fontSize = fontSize.value;\n }\n else if(fontSize.unit === unit.PERCENT) {\n computedStyle.fontSize = isRoot ? 16 * fontSize.value : parentComputedStyle.fontSize * fontSize.value;\n }\n else {\n computedStyle.fontSize = 16;\n }\n}\n\nfunction compute(xom, isRoot) {\n let { currentStyle } = xom;\n let { lineHeight, textAlign } = currentStyle;\n let computedStyle = xom.__computedStyle = util.clone(currentStyle);\n let parent = xom.parent;\n let parentComputedStyle = parent && parent.computedStyle;\n preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot);\n calLineHeight(xom, lineHeight, computedStyle);\n if(textAlign === 'inherit') {\n computedStyle.textAlign = isRoot ? 'left' : parentComputedStyle.textAlign;\n }\n}\n\nfunction repaint(xom, isRoot) {\n let { currentStyle, computedStyle } = xom;\n let parent = xom.parent;\n let parentComputedStyle = parent && parent.computedStyle;\n preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot);\n}\n\nfunction preCompute(currentStyle, computedStyle, parentComputedStyle, isRoot) {\n let { fontStyle, fontWeight, fontSize, fontFamily, color } = currentStyle;\n // 处理继承的属性\n if(fontStyle === 'inherit') {\n computedStyle.fontStyle = isRoot ? 'normal' : parentComputedStyle.fontStyle;\n }\n else {\n computedStyle.fontStyle = fontStyle;\n }\n if(fontWeight === 'inherit') {\n computedStyle.fontWeight = isRoot ? 400 : parentComputedStyle.fontWeight;\n }\n else {\n computedStyle.fontWeight = fontWeight;\n }\n computedFontSize(computedStyle, fontSize, parentComputedStyle, isRoot);\n if(fontFamily === 'inherit') {\n computedStyle.fontFamily = isRoot ? 'arial' : parentComputedStyle.fontFamily;\n }\n else {\n computedStyle.fontFamily = fontFamily;\n }\n if(color === 'inherit') {\n computedStyle.color = isRoot ? '#000' : parentComputedStyle.color;\n }\n else {\n computedStyle.color = color;\n }\n // 处理可提前计算的属性,如border百分比\n [\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth'\n ].forEach(k => {\n computedStyle[k] = currentStyle[k].value || 0;\n });\n [\n 'visibility',\n 'backgroundColor',\n 'borderBottomColor',\n 'borderLeftColor',\n 'borderRightColor',\n 'borderTopColor',\n 'opacity'\n ].forEach(k => {\n computedStyle[k] = currentStyle[k];\n });\n}\n\nfunction setFontStyle(style) {\n let { fontStyle, fontWeight, fontSize, fontFamily } = style;\n return `${fontStyle} ${fontWeight} ${fontSize}px/${fontSize}px ${fontFamily}`;\n}\n\nfunction getBaseLine(style) {\n let normal = style.fontSize * font.arial.lhr;\n return (style.lineHeight - normal) * 0.5 + style.fontSize * font.arial.blr;\n}\n\nfunction calLineHeight(xom, lineHeight, computedStyle) {\n if(util.isNumber(lineHeight)) {}\n if(lineHeight.unit === unit.INHERIT) {\n let parent = xom.parent;\n if(parent) {\n let pl = parent.style.lineHeight;\n // 一直继承向上查找直到root\n if(pl.unit === unit.INHERIT) {\n parent = parent.parent;\n while(parent) {\n pl = parent.style.lineHeight;\n if(pl.unit !== unit.INHERIT) {\n break;\n }\n }\n }\n let parentComputedStyle = parent.computedStyle;\n if(pl.unit === unit.PX) {\n computedStyle.lineHeight = parentComputedStyle.lineHeight;\n }\n else if(pl.unit === unit.NUMBER) {\n computedStyle.lineHeight = Math.max(pl.value, 0) * computedStyle.fontSize;\n }\n else {\n computedStyle.lineHeight = calNormalLineHeight(computedStyle);\n }\n }\n else {\n // root的继承强制为normal\n lineHeight.unit = unit.AUTO;\n computedStyle.lineHeight = calLineHeight(computedStyle);\n }\n }\n // 防止为0\n else if(lineHeight.unit === unit.PX) {\n computedStyle.lineHeight = Math.max(lineHeight.value, 0) || calNormalLineHeight(computedStyle);\n }\n else if(lineHeight.unit === unit.NUMBER) {\n computedStyle.lineHeight = Math.max(lineHeight.value, 0) * computedStyle.fontSize || calNormalLineHeight(computedStyle);\n }\n // normal\n else {\n computedStyle.lineHeight = calNormalLineHeight(computedStyle);\n }\n}\n\nfunction calNormalLineHeight(computedStyle) {\n return computedStyle.fontSize * font.arial.lhr;\n}\n\nfunction calRelativePercent(n, parent, k) {\n n *= 0.01;\n while(parent) {\n let style = parent.style[k];\n if(style.unit === unit.AUTO) {\n if(k === 'width') {\n parent = parent.parent;\n }\n else {\n break;\n }\n }\n else if(style.unit === unit.PX) {\n return n * style.value;\n }\n else if(style.unit === unit.PERCENT) {\n n *= style.value * 0.01;\n parent = parent.parent;\n }\n }\n return n;\n}\n\nfunction calRelative(computedStyle, k, v, parent, isWidth) {\n if(util.isNumber(v)) {}\n else if(v.unit === unit.AUTO) {\n v = 0;\n }\n else if(v.unit === unit.PX) {\n v = v.value;\n }\n else if(v.unit === unit.PERCENT) {\n if(isWidth) {\n v = calRelativePercent(v.value, parent, 'width');\n }\n else {\n v = calRelativePercent(v.value, parent, 'height');\n }\n }\n return computedStyle[k] = v;\n}\n\nfunction calAbsolute(computedStyle, k, v, size) {\n if(util.isNumber(v)) {}\n else if(v.unit === unit.AUTO) {\n v = 0;\n }\n else if(v.unit === unit.PX) {\n v = v.value;\n }\n else if(v.unit === unit.PERCENT) {\n v = v.value * size * 0.01;\n }\n return computedStyle[k] = v;\n}\n\nexport default {\n normalize,\n compute,\n repaint,\n setFontStyle,\n getBaseLine,\n calLineHeight,\n calRelative,\n calAbsolute,\n};\n","import css from '../style/css';\nimport util from '../util/util';\nimport mode from '../util/mode';\n\nclass LineBox {\n constructor(parent, x, y, w, content) {\n this.__parent = parent;\n this.__x = x;\n this.__y = y;\n this.__width = w;\n this.__content = content;\n this.__virtualDom = {};\n }\n\n render(renderMode, ctx) {\n let { content, x, y, parent } = this;\n let { ox, oy, computedStyle } = parent;\n y += css.getBaseLine(computedStyle);\n x += ox;\n y += oy;\n if(renderMode === mode.CANVAS) {\n ctx.fillText(content, x, y);\n }\n else if(renderMode === mode.SVG) {\n this.__virtualDom = {\n type: 'item',\n tagName: 'text',\n props: [\n ['x', x],\n ['y', y],\n ['fill', computedStyle.color],\n ['font-family', computedStyle.fontFamily],\n ['font-weight', computedStyle.fontWeight],\n ['font-style', computedStyle.fontStyle],\n ['font-size', `${computedStyle.fontSize}px`]\n ],\n content: util.encodeHtml(content),\n };\n }\n }\n\n __offsetX(diff) {\n this.__x += diff;\n }\n\n __offsetY(diff) {\n this.__y += diff;\n }\n\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get width() {\n return this.__width;\n }\n get content() {\n return this.__content;\n }\n get baseLine() {\n return css.getBaseLine(this.parent.computedStyle);\n }\n get virtualDom() {\n return this.__virtualDom;\n }\n get parent() {\n return this.__parent;\n }\n}\n\nexport default LineBox;\n","import Node from './Node';\nimport LineBox from './LineBox';\nimport css from '../style/css';\nimport mode from '../util/mode';\n\nclass Text extends Node {\n constructor(content) {\n super();\n this.__content = content.toString();\n this.__lineBoxes = [];\n this.__charWidthList = [];\n this.__charWidth = 0;\n this.__textWidth = 0;\n }\n\n static CHAR_WIDTH_CACHE = {};\n static MEASURE_TEXT = {\n list: [],\n data: {},\n };\n\n // 预先计算每个字的宽度\n __measure() {\n let { ctx, content, computedStyle, charWidthList, renderMode } = this;\n if(renderMode === mode.CANVAS) {\n ctx.font = css.setFontStyle(computedStyle);\n }\n let key = computedStyle.fontSize + ',' + computedStyle.fontFamily;\n let wait = Text.MEASURE_TEXT.data[key] = Text.MEASURE_TEXT.data[key] || {\n key,\n style: computedStyle,\n hash: {},\n s: [],\n };\n let cache = Text.CHAR_WIDTH_CACHE[key] = Text.CHAR_WIDTH_CACHE[key] || {};\n let sum = 0;\n let needMeasure = false;\n for(let i = 0, length = content.length; i < length; i++) {\n let char = content.charAt(i);\n let mw;\n if(cache.hasOwnProperty(char)) {\n mw = cache[char];\n charWidthList.push(mw);\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n else if(renderMode === mode.CANVAS) {\n mw = cache[char] = ctx.measureText(char).width;\n charWidthList.push(mw);\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n else {\n if(!wait.hash.hasOwnProperty(char)) {\n wait.s += char;\n }\n wait.hash[char] = true;\n // 先预存标识位-1,测量完后替换它\n charWidthList.push(-1);\n needMeasure = true;\n }\n }\n this.__textWidth = sum;\n if(needMeasure) {\n Text.MEASURE_TEXT.list.push(this);\n }\n }\n\n __measureCb() {\n let { content, computedStyle, charWidthList } = this;\n let key = computedStyle.fontSize + ',' + computedStyle.fontFamily;\n let cache = Text.CHAR_WIDTH_CACHE[key];\n let sum = 0;\n for(let i = 0, len = charWidthList.length; i < len; i++) {\n if(charWidthList[i] < 0) {\n let mw = charWidthList[i] = cache[content.charAt(i)];\n sum += mw;\n this.__charWidth = Math.max(this.charWidth, mw);\n }\n }\n this.__textWidth += sum;\n }\n\n __layout(data, isVirtual) {\n let { x, y, w, h } = data;\n this.__x = x;\n this.__y = y;\n let maxX = x;\n let { isDestroyed, content, currentStyle, computedStyle, lineBoxes, charWidthList } = this;\n if(isDestroyed || currentStyle.display === 'none') {\n return;\n }\n this.__ox = this.__oy = 0;\n lineBoxes.splice(0);\n // 顺序尝试分割字符串为lineBox,形成多行\n let begin = 0;\n let i = 0;\n let count = 0;\n let length = content.length;\n while(i < length) {\n count += charWidthList[i];\n if(count === w) {\n let lineBox = new LineBox(this, x, y, count, content.slice(begin, i + 1));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count);\n y += computedStyle.lineHeight;\n begin = i + 1;\n i = begin;\n count = 0;\n }\n else if(count > w) {\n // 宽度不足时无法跳出循环,至少也要塞个字符形成一行\n if(i === begin) {\n i = begin + 1;\n }\n let lineBox = new LineBox(this, x, y, count - charWidthList[i], content.slice(begin, i));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count - charWidthList[i]);\n y += computedStyle.lineHeight;\n begin = i;\n count = 0;\n }\n else {\n i++;\n }\n }\n if(begin < length && begin < i) {\n count = 0;\n for(i = begin ;i < length; i++) {\n count += charWidthList[i];\n }\n let lineBox = new LineBox(this, x, y, count, content.slice(begin, length));\n lineBoxes.push(lineBox);\n maxX = Math.max(maxX, x + count);\n y += computedStyle.lineHeight;\n }\n this.__width = maxX - x;\n this.__height = y - data.y;\n // flex前置计算无需真正布局\n if(isVirtual) {\n this.__lineBoxes = [];\n }\n else {\n let { textAlign } = currentStyle;\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineBoxes.forEach(lineBox => {\n let diff = this.__width - lineBox.width;\n if(diff > 0) {\n lineBox.__offsetX(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n }\n }\n\n __offsetX(diff, isLayout) {\n super.__offsetX(diff, isLayout);\n if(isLayout) {\n this.lineBoxes.forEach(item => {\n item.__offsetX(diff);\n });\n }\n }\n\n __offsetY(diff, isLayout) {\n super.__offsetY(diff, isLayout);\n if(isLayout) {\n this.lineBoxes.forEach(item => {\n item.__offsetY(diff);\n });\n }\n }\n\n render(renderMode) {\n const { isDestroyed, ctx, computedStyle } = this;\n if(isDestroyed || computedStyle.display === 'none') {\n return;\n }\n if(renderMode === mode.CANVAS) {\n ctx.font = css.setFontStyle(computedStyle);\n ctx.fillStyle = computedStyle.color;\n }\n this.lineBoxes.forEach(item => {\n item.render(renderMode, ctx);\n });\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n type: 'text',\n children: this.lineBoxes.map(lineBox => lineBox.virtualDom),\n };\n }\n }\n\n __renderByMask(renderMode) {\n this.render(renderMode);\n }\n\n __tryLayInline(w) {\n return w - this.textWidth;\n }\n\n __calMaxAndMinWidth() {\n let n = 0;\n this.charWidthList.forEach(item => {\n n = Math.max(n, item);\n });\n return { max: this.textWidth, min: n };\n }\n\n get content() {\n return this.__content;\n }\n set content(v) {\n this.__content = v;\n }\n get lineBoxes() {\n return this.__lineBoxes;\n }\n get charWidthList() {\n return this.__charWidthList;\n }\n get charWidth() {\n return this.__charWidth;\n }\n get textWidth() {\n return this.__textWidth;\n }\n get baseLine() {\n let last = this.lineBoxes[this.lineBoxes.length - 1];\n return last.y - this.y + last.baseLine;\n }\n get currentStyle() {\n return this.style;\n }\n get renderMode() {\n return this.__renderMode;\n }\n}\n\nexport default Text;\n","import sort from '../util/sort';\nimport Text from '../node/Text';\n\nfunction splitClass(s) {\n s = (s || '').trim();\n if(s) {\n return s.split(/\\s+/);\n }\n}\n\nfunction parse(dom, top, json) {\n if(!json) {\n return;\n }\n let list = [];\n matchSel(dom, top, json, list);\n sort(list, function(a, b) {\n let pa = a[2];\n let pb = b[2];\n // 先比较优先级\n for(let i = 0; i < 3; i++) {\n if(pa[i] !== pb[i]) {\n return pa[i] > pb[i];\n }\n }\n // 优先级相等比较出现顺序\n return a[0] > b[0];\n });\n let res = {};\n for(let i = list.length - 1; i >= 0; i--) {\n let item = list[i];\n let [k, v] = item[1];\n if(!res.hasOwnProperty(k)) {\n res[k] = v;\n }\n }\n return res;\n}\n\n// 从底部往上匹配,即.a .b这样的选择器是.b->.a逆序对比\nfunction matchSel(dom, top, json, res) {\n let selList = combo(dom, json);\n selList.forEach(sel => {\n if(json.hasOwnProperty(sel)) {\n let item = json[sel];\n // 还未到根节点需继续向上,注意可以递归向上,多层级时需递归所有父层级组合\n let parent = dom.parent;\n while(parent) {\n matchSel(parent, top, item, res);\n parent = parent.parent;\n }\n // 将当前层次的值存入\n if(item.hasOwnProperty('_v')) {\n dealStyle(res, item);\n }\n // 父子选择器\n if(item.hasOwnProperty('_>')) {\n let parentStyle = item['_>'];\n matchSel(dom.parent, this, parentStyle, res);\n }\n // 相邻兄弟选择器\n if(item.hasOwnProperty('_+')) {\n let sibling = item['_+'];\n let prev = dom.prev;\n if(prev && !(prev instanceof Text)) {\n let prevSelList = combo(prev, sibling);\n let hash = arr2hash(prevSelList);\n Object.keys(sibling).forEach(function(k) {\n let item2 = sibling[k];\n // 有值且兄弟选择器命中时存入结果\n if(item2.hasOwnProperty('_v') && hash.hasOwnProperty(k)) {\n dealStyle(res, item2);\n }\n });\n }\n }\n // 兄弟选择器,不一定相邻,一直往前找\n if(item.hasOwnProperty('_~')) {\n let sibling = item['_~'];\n let prev = dom.prev;\n let hasMatch;\n while(prev) {\n if(prev instanceof Text) {\n prev = prev.prev;\n continue;\n }\n let prevSelList = combo(prev, sibling);\n let hash = arr2hash(prevSelList);\n Object.keys(sibling).forEach(function(k) {\n let item2 = sibling[k];\n // 有值且兄弟选择器命中时存入结果\n if(item2.hasOwnProperty('_v') && hash.hasOwnProperty(k)) {\n dealStyle(res, item2);\n }\n });\n prev = prev.prev;\n }\n }\n }\n });\n}\n\n// 组合出dom的所有sel可能\nfunction combo(dom, json) {\n let { class: klass, tagName, id } = dom;\n klass = klass.slice();\n sort(klass, function(a, b) {\n return a > b;\n });\n let ks = [];\n if(klass.length) {\n comboClass(klass, ks, klass.length, 0);\n }\n // 各种*的情况标识,只有存在时才放入sel组合,可以减少循环次数\n let hasStarClass = json.hasOwnProperty('_*.');\n let hasStarId = json.hasOwnProperty('_*#');\n let hasStarIdClass = json.hasOwnProperty('_*.#');\n let res = [tagName];\n // 只有当前有_*时说明有*才匹配\n if(json.hasOwnProperty('_*')) {\n res.push('*');\n }\n if(id) {\n id = '#' + id;\n res.push(id);\n res.push(tagName + id);\n if(hasStarId) {\n res.push('*' + id);\n }\n }\n ks.forEach(klass => {\n res.push(klass);\n res.push(tagName + klass);\n if(hasStarClass) {\n res.push('*' + klass);\n }\n if(id) {\n res.push(klass + id);\n res.push(tagName + klass + id);\n if(hasStarIdClass) {\n res.push('*' + klass + id);\n }\n }\n });\n return res;\n}\n\n// 组合出klass里多个的可能,如.b.a和.c.b.a,注意有排序,可以使得相等比较更容易\nfunction comboClass(arr, res, len, i) {\n if(len - i > 1) {\n comboClass(arr, res, len, i + 1);\n for(let j = 0, len2 = res.length; j < len2; j++) {\n res.push(res[j] + '.' + arr[i]);\n }\n }\n res.push('.' + arr[i]);\n}\n\nfunction dealStyle(res, item) {\n item._v.forEach(function(style) {\n style[2] = item._p;\n res.push(style);\n });\n}\n\nfunction arr2hash(arr) {\n let hash = {};\n arr.forEach(item => {\n hash[item] = true;\n });\n return hash;\n}\n\nfunction mergeCss(a, b) {\n if(!b) {\n return a;\n }\n if(!a) {\n return b;\n }\n for(let i in b) {\n if(b.hasOwnProperty(i)) {\n let o = b[i];\n let flag = {\n _v: true,\n _p: true,\n }.hasOwnProperty(i);\n if(!flag && typeof o === 'object' && a.hasOwnProperty(i)) {\n a[i] = mergeCss(a[i], o);\n }\n else {\n a[i] = o;\n }\n }\n }\n return a;\n}\n\nexport default {\n parse,\n splitClass,\n mergeCss,\n};\n","import unit from \"./unit\";\nimport transform from \"./transform\";\n\nfunction matrixResize(imgWidth, imgHeight, targetWidth, targetHeight, x, y, w, h) {\n if(imgWidth === targetWidth && imgHeight === targetHeight) {\n return;\n }\n let list = [\n ['scaleX', {\n value: targetWidth / imgWidth,\n unit: unit.NUMBER,\n }],\n ['scaleY', {\n value: targetHeight / imgHeight,\n unit: unit.NUMBER,\n }]\n ];\n let tfo = transform.calOrigin([\n {\n value: 0,\n unit: unit.PERCENT,\n },\n {\n value: 0,\n unit: unit.PERCENT,\n }\n ], x, y, w, h);\n return transform.calMatrix(list, tfo, x, y, w, h);\n}\n\nexport default {\n matrixResize,\n};\n","import util from './util';\n\nclass Event {\n constructor() {\n this.__eHash = {};\n }\n on(id, handle) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.on(id[i], handle);\n }\n }\n else if(handle) {\n if(!self.__eHash.hasOwnProperty(id)) {\n self.__eHash[id] = [];\n }\n // 遍历防止此handle被侦听过了\n for(let i = 0, item = self.__eHash[id], len = item.length; i < len; i++) {\n if(item[i] === handle) {\n return self;\n }\n }\n self.__eHash[id].push(handle);\n }\n return self;\n }\n once(id, handle) {\n if(!util.isFunction(handle)) {\n return;\n }\n let self = this;\n function cb(...data) {\n handle.apply(self, data);\n self.off(id, cb);\n }\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.once(id[i], handle);\n }\n }\n else if(handle) {\n self.on(id, cb);\n }\n return this;\n }\n off(id, handle) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.off(id[i], handle);\n }\n }\n else if(self.__eHash.hasOwnProperty(id)) {\n if(handle) {\n for(let i = 0, item = self.__eHash[id], len = item.length; i < len; i++) {\n if(item[i] === handle) {\n item.splice(i, 1);\n break;\n }\n }\n }\n // 未定义为全部清除\n else {\n delete self.__eHash[id];\n }\n }\n return this;\n }\n emit(id, ...data) {\n let self = this;\n if(Array.isArray(id)) {\n for(let i = 0, len = id.length; i < len; i++) {\n self.emit(id[i], data);\n }\n }\n else {\n if(self.__eHash.hasOwnProperty(id)) {\n let list = self.__eHash[id];\n if(list.length) {\n list = list.slice();\n for(let i = 0, len = list.length; i < len; i++) {\n let cb = list[i];\n if(util.isFunction(cb)) {\n cb.apply(self, data);\n }\n }\n }\n }\n }\n return this;\n }\n\n static mix(...obj) {\n for(let i = obj.length - 1; i >= 0; i--) {\n let o = obj[i];\n let event = new Event();\n o.__eHash = {};\n let fns = ['on', 'once', 'off', 'emit'];\n for(let j = fns.length - 1; j >= 0; j--) {\n let fn = fns[j];\n o[fn] = event[fn];\n }\n }\n }\n\n static KARAS_REFRESH = 'karas-refresh';\n static KARAS_BEFORE_REFRESH = 'karas-before-refresh';\n static KARAS_ANIMATION_PAUSE = 'karas-animation-pause';\n static KARAS_ANIMATION_FRAME = 'karas-animation-frame';\n static KARAS_ANIMATION_FINISH = 'karas-animation-finish';\n static KARAS_ANIMATION_CANCEL = 'karas-animation-cancel';\n}\n\nexport default Event;\n","import util from '../util/util';\n\nconst DOM = {\n position: 'static',\n display: 'block',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n fontSize: 'inherit',\n fontFamily: 'arial',\n color: 'inherit',\n fontStyle: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'normal',\n backgroundColor: 'transparent',\n backgroundSize: 'auto',\n backgroundRepeat: 'repeat',\n backgroundPosition: '0% 0%',\n borderTopWidth: 0,\n borderRightWidth: 0,\n borderBottomWidth: 0,\n borderLeftWidth: 0,\n borderTopColor: '#000',\n borderRightColor: '#000',\n borderBottomColor: '#000',\n borderLeftColor: '#000',\n borderTopStyle: 'solid',\n borderRightStyle: 'solid',\n borderBottomStyle: 'solid',\n borderLeftStyle: 'solid',\n width: 'auto',\n height: 'auto',\n flexGrow: 0,\n flexShrink: 1,\n flexBasis: 'auto',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n textAlign: 'inherit',\n transformOrigin: 'center',\n visibility: 'visible',\n opacity: 1,\n};\n\nconst GEOM = {\n fill: 'transparent',\n stroke: '#000',\n strokeWidth: 1,\n strokeDasharray: '',\n strokeLinecap: 'butt',\n};\n\nlet dom = [];\nfor(let k in DOM) {\n if(DOM.hasOwnProperty(k)) {\n let v = DOM[k];\n dom.push({\n k,\n v,\n });\n }\n}\n\nlet geom = util.clone(dom);\nfor(let k in GEOM) {\n if(GEOM.hasOwnProperty(k)) {\n let v = GEOM[k];\n geom.push({\n k,\n v,\n });\n }\n}\n\nexport default {\n dom,\n geom,\n};\n","export default {\n REPAINT: 0,\n REFLOW: 1,\n};\n","import Event from '../util/Event';\nimport Node from './Node';\nimport Text from './Text';\nimport util from '../util/util';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport match from '../style/match';\nimport level from '../animate/level';\n\nclass Component extends Event {\n constructor(tagName, props, children) {\n super();\n if(!util.isString(tagName)) {\n children = props;\n props = tagName;\n tagName = /(?:function|class)\\s+([\\w$]+)/.exec(this.constructor.toString())[1];\n }\n this.__tagName = tagName;\n props = props || [];\n // 构建工具中都是arr,手写可能出现hash情况\n if(Array.isArray(props)) {\n this.props = util.arr2hash(props);\n this.__props = props;\n }\n else {\n this.props = props;\n this.__props = util.hash2arr(props);\n }\n this.__children = children || [];\n this.__shadowRoot = null;\n this.__parent = null;\n this.__ref = {};\n this.__state = {};\n }\n\n setState(n, cb) {\n if(util.isNil(n)) {\n this.state = {};\n }\n else {\n for(let i in n) {\n if(n.hasOwnProperty(i)) {\n this.state[i] = n[i];\n }\n }\n }\n // 构造函数中调用还未render\n let o = this.shadowRoot;\n if(!o) {\n return;\n }\n let root = this.root;\n if(root) {\n root.setRefreshLevel(level.REFLOW);\n this.__traverse(o.ctx, o.defs, this.root.renderMode);\n this.__init();\n root.addRefreshTask(cb);\n }\n }\n\n __traverse(ctx, defs, renderMode) {\n let sr = this.__shadowRoot = this.render(renderMode);\n // 可能返回的还是一个Component,递归处理\n while(sr instanceof Component) {\n sr = this.__shadowRoot = sr.render(renderMode);\n }\n // node情况不可能是text,因为text节点只出现在dom内,直接返回的text是string\n if(!(sr instanceof Node)) {\n let s = '';\n if(!util.isNil(sr)) {\n s = util.encodeHtml(sr.toString());\n }\n sr = new Text(s);\n sr.__ctx = ctx;\n sr.__defs = defs;\n sr.__renderMode = renderMode;\n sr.__style = this.props.style || {};\n this.__shadowRoot = sr;\n return;\n }\n sr.__ctx = ctx;\n sr.__defs = defs;\n sr.__host = this;\n if(!sr.isGeom()) {\n sr.__traverse(ctx, defs, renderMode);\n }\n }\n\n __traverseCss() {\n let sr = this.__shadowRoot;\n // shadowDom可以设置props.css,同时host的会覆盖它\n if(!(sr instanceof Text)) {\n let m = match.mergeCss(sr.props.css, this.props.css);\n sr.__traverseCss(sr, m);\n }\n }\n\n // 组件传入的样式需覆盖shadowRoot的\n __init() {\n let sr = this.shadowRoot;\n // 返回text节点特殊处理,赋予基本样式\n if(sr instanceof Text) {\n css.normalize(sr.style, reset.dom);\n }\n else {\n let style = this.props.style || {};\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n sr.style[i] = style[i];\n }\n }\n sr.__init();\n }\n if(!(sr instanceof Text)) {\n this.__props.forEach(item => {\n let k = item[0];\n let v = item[1];\n if(/^on[a-zA-Z]/.test(k)) {\n k = k.slice(2).toLowerCase();\n let arr = sr.listener[k] = sr.listener[k] || [];\n arr.push(v);\n }\n else if(/^on-[a-zA-Z\\d_$]/.test(k)) {\n k = k.slice(3);\n this.on(k, function(...args) {\n v(...args);\n });\n }\n });\n }\n // 防止重复\n if(this.__hasInit) {\n return;\n }\n this.__hasInit = true;\n [\n 'x',\n 'y',\n 'ox',\n 'oy',\n 'sx',\n 'sy',\n 'width',\n 'height',\n 'outerWidth',\n 'outerHeight',\n 'style',\n 'computedStyle',\n 'ctx',\n 'defs',\n 'baseLine',\n 'virtualDom',\n 'currentStyle',\n 'points',\n 'controlA',\n 'controlB',\n 'controls',\n 'r',\n 'rx',\n 'ry',\n 'begin',\n 'end',\n 'x1',\n 'y1',\n 'x2',\n 'y2',\n 'mask',\n 'maskId'\n ].forEach(fn => {\n Object.defineProperty(this, fn, {\n get() {\n return this.shadowRoot[fn];\n },\n });\n });\n }\n\n render() {\n }\n\n __destroy() {\n if(this.shadowRoot) {\n this.shadowRoot.__destroy();\n }\n this.children.splice(0);\n this.__shadowRoot = null;\n this.__parent = null;\n }\n\n __emitEvent(e, force) {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n return;\n }\n if(force) {\n return sr.__emitEvent(e, force);\n }\n let res = sr.__emitEvent(e);\n if(res) {\n e.target = this;\n return true;\n }\n }\n\n animate(list, option) {\n let sr = this.shadowRoot;\n if(!(sr instanceof Text)) {\n sr.animate(list, option);\n }\n }\n\n __computed() {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n css.compute(sr, true);\n sr.__measure();\n }\n else {\n sr.__computed();\n }\n }\n\n __repaint() {\n let sr = this.shadowRoot;\n if(sr instanceof Text) {\n css.repaint(sr, true);\n }\n else {\n sr.__repaint();\n }\n }\n\n get tagName() {\n return this.__tagName;\n }\n get children() {\n return this.__children;\n }\n get shadowRoot() {\n return this.__shadowRoot;\n }\n get root() {\n if(this.parent) {\n return this.parent.root;\n }\n }\n get parent() {\n return this.__parent;\n }\n get ref() {\n return this.__ref;\n }\n get state() {\n return this.__state;\n }\n set state(v) {\n this.__state = v;\n }\n}\n\n[\n '__layout',\n '__layoutAbs',\n '__tryLayInline',\n '__offsetX',\n '__offsetY',\n '__calAutoBasis',\n '__calMp',\n '__calAbs',\n '__renderAsMask',\n '__renderByMask'\n].forEach(fn => {\n Component.prototype[fn] = function() {\n let sr = this.shadowRoot;\n if(sr[fn]) {\n return sr[fn].apply(sr, arguments);\n }\n };\n});\n\nexport default Component;\n","import Text from '../node/Text';\r\rlet inject = {\r measureText(cb) {\r let { list, data } = Text.MEASURE_TEXT;\r let html = '';\r let keys = [];\r let chars = [];\r for(let i in data) {\r if(data.hasOwnProperty(i)) {\r let { key, style, s } = data[i];\r if(s) {\r let inline = `position:absolute;font-family:${style.fontFamily};font-size:${style.fontSize}px`;\r for(let j = 0, len = s.length; j < len; j++) {\r keys.push(key);\r let char = s.charAt(j);\r chars.push(char);\r html += `${char.replace(/, '<')}`;\r }\r }\r }\r }\r if(!html) {\r cb();\r return;\r }\r let div = document.createElement('div');\r div.style.position = 'absolute';\r div.style.left = '99999px';\r div.style.top = '-99999px';\r div.style.visibility = 'hidden';\r document.body.appendChild(div);\r div.innerHTML = html;\r let cns = div.childNodes;\r let { CHAR_WIDTH_CACHE, MEASURE_TEXT } = Text;\r for(let i = 0, len = cns.length; i < len; i++) {\r let node = cns[i];\r let key = keys[i];\r let char = chars[i];\r let css = window.getComputedStyle(node, null);\r CHAR_WIDTH_CACHE[key][char] = parseFloat(css.width);\r }\r list.forEach(text => text.__measureCb());\r cb();\r MEASURE_TEXT.list = [];\r MEASURE_TEXT.data = {};\r document.body.removeChild(div);\r },\r measureImg(url, cb) {\r let img = new Image();\r img.onload = function() {\r cb({\r success: true,\r width: img.width,\r height: img.height,\r source: img,\r });\r };\r img.onerror = function() {\r cb({\r success: false,\r });\r };\r if(url.substr( 0, 5 ) !== 'data:') {\r let host = /^(?:\\w+:)?\\/\\/([^/:]+)/.exec(url);\r if(host) {\r if(location.hostname !== host[1]) {\r img.crossOrigin = 'anonymous';\r }\r }\r }\r img.src = url;\r },\r warn(s) {\r console.warn(s);\r },\r requestAnimationFrame(cb) {\r if(typeof requestAnimationFrame !== 'undefined') {\r inject.requestAnimationFrame = requestAnimationFrame.bind(window);\r requestAnimationFrame(cb);\r }\r else {\r setTimeout(cb, 16.7);\r inject.requestAnimationFrame = function(cb) {\r setTimeout(cb, 16.7);\r };\r }\r },\r now() {\r if(typeof performance !== 'undefined') {\r inject.now = performance.now.bind(performance);\r return performance.now();\r }\r inject.now = Date.now.bind(Date);\r return Date.now();\r },\r};\r\rexport default inject;\r","import inject from '../util/inject';\n\nclass Frame {\n constructor() {\n this.__inFrame = false;\n this.__task = [];\n this.__afterFrame = [];\n }\n\n __init(task) {\n let self = this;\n function cb() {\n let last = inject.now();\n inject.requestAnimationFrame(function() {\n if(!task.length) {\n return;\n }\n let now = inject.now();\n let delta = now - last;\n delta = delta * 0.06;\n last = now;\n self.__inFrame = true;\n task.forEach(handle => handle(delta));\n self.__inFrame = false;\n let afterCb = self.__afterFrame;\n if(afterCb) {\n afterCb.forEach(item => item(delta));\n }\n self.__afterFrame = [];\n if(!task.length) {\n return;\n }\n cb();\n });\n }\n cb();\n }\n\n onFrame(handle) {\n let { task } = this;\n if(!task.length) {\n this.__init(task);\n }\n this.task.push(handle);\n }\n\n offFrame(handle) {\n let { task } = this;\n for(let i = 0, len = task.length; i < len; i++) {\n if(task[i] === handle) {\n task.splice(i, 1);\n break;\n }\n }\n }\n\n nextFrame(handle) {\n let self = this;\n function cb() {\n handle();\n self.offFrame(cb);\n }\n if(self.__inFrame) {\n self.__afterFrame = self.__afterFrame || [];\n self.__afterFrame.push(cb);\n }\n else {\n self.onFrame(cb);\n }\n }\n\n get task() {\n return this.__task;\n }\n}\n\nexport default new Frame();\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nlet NEWTON_ITERATIONS = 4;\nlet NEWTON_MIN_SLOPE = 0.001;\nlet SUBDIVISION_PRECISION = 0.0000001;\nlet SUBDIVISION_MAX_ITERATIONS = 10;\n\nlet kSplineTableSize = 11;\nlet kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nlet float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\n\nfunction B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\n\nfunction C(aA1) {\n return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n let currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if(currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while(Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for(let i = 0; i < NEWTON_ITERATIONS; ++i) {\n let currentSlope = getSlope(aGuessT, mX1, mX2);\n if(currentSlope === 0.0) {\n return aGuessT;\n }\n let currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing(x) {\n return x;\n}\n\nfunction bezier(mX1, mY1, mX2, mY2) {\n if(!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if(mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n let sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for(let i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX(aX) {\n let intervalStart = 0.0;\n let currentSample = 1;\n let lastSample = kSplineTableSize - 1;\n\n for(; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n let dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n let guessForT = intervalStart + dist * kSampleStepSize;\n\n let initialSlope = getSlope(guessForT, mX1, mX2);\n if(initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if(initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing(x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if(x === 0 || x === 1) {\n return x;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n}\n\nlet easing = {\n linear: bezier(1, 1, 0, 0),\n easeIn: bezier(0.42, 0, 1, 1),\n easeOut: bezier(0, 0, 0.58, 1),\n ease: bezier(0.25, 0.1, 0.25, 1),\n easeInOut: bezier(0.42, 0, 0.58, 1),\n cubicBezier: bezier,\n};\n\nexport default easing;\n","export default {\n GEOM: {\n x1: true,\n y1: true,\n x2: true,\n y2: true,\n controlA: true,\n controlB: true,\n r: true,\n rx: true,\n ry: true,\n begin: true,\n end: true,\n points: true,\n controls: true,\n },\n STYLE: {\n transform: true,\n color: true,\n fontStyle: true,\n strokeWidth: true,\n fill: true,\n backgroundColor: true,\n backgroundImage: true,\n stroke: true,\n borderBottomColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n borderTopColor: true,\n visibility: true,\n opacity: true,\n },\n};\n","import css from '../style/css';\nimport unit from '../style/unit';\nimport util from '../util/util';\nimport inject from '../util/inject';\nimport Event from '../util/Event';\nimport frame from './frame';\nimport easing from './easing';\nimport level from './level';\nimport repaint from './repaint';\n\nconst KEY_COLOR = [\n 'backgroundColor',\n 'borderBottomColor',\n 'borderLeftColor',\n 'borderRightColor',\n 'borderTopColor',\n 'color',\n 'fill',\n 'stroke'\n];\n\nconst KEY_LENGTH = [\n 'fontSize',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'bottom',\n 'left',\n 'right',\n 'top',\n 'flexBasis',\n 'width',\n 'height',\n 'lineHeight',\n 'marginBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'strokeWidth'\n];\n\nconst KEY_GRADIENT = [\n 'backgroundImage',\n 'fill',\n 'stroke'\n];\n\nconst COLOR_HASH = {};\nKEY_COLOR.forEach(k => {\n COLOR_HASH[k] = true;\n});\n\nconst LENGTH_HASH = {};\nKEY_LENGTH.forEach(k => {\n LENGTH_HASH[k] = true;\n});\n\nconst GRADIENT_HASH = {};\nKEY_GRADIENT.forEach(k => {\n GRADIENT_HASH[k] = true;\n});\n\nconst GRADIENT_TYPE = {\n linear: true,\n radial: true,\n};\n\n// css模式rgb和init的颜色转换为rgba数组,方便加减运算\nfunction color2array(style) {\n KEY_COLOR.forEach(k => {\n if(!style.hasOwnProperty(k)) {\n return;\n }\n let v = style[k];\n if(GRADIENT_TYPE.hasOwnProperty(v.k)) {\n return;\n }\n style[k] = util.rgb2int(v);\n });\n KEY_GRADIENT.forEach(k => {\n if(!style.hasOwnProperty(k)) {\n return;\n }\n let v = style[k];\n if(GRADIENT_TYPE.hasOwnProperty(v.k)) {\n v.v.forEach(item => {\n item[0] = util.rgb2int(item[0]);\n });\n }\n });\n}\n\nfunction equalStyle(k, a, b) {\n if(k === 'transform') {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n let k1 = a[i][0];\n let k2 = b[i][0];\n if(k1 !== k2) {\n return false;\n }\n else {\n let v1 = a[i][1];\n let v2 = b[i][1];\n if(k1 === 'matrix') {\n if(v1[0] !== v2[0]\n || v1[1] !== v2[1]\n || v1[2] !== v2[2]\n || v1[3] !== v2[3]\n || v1[4] !== v2[4]\n || v1[5] !== v2[5]) {\n return false;\n }\n }\n else if(v1.value !== v2.value || v1.unit !== v2.unit) {\n return false;\n }\n }\n }\n return true;\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n return a.value === b.value && a.unit === b.unit;\n }\n else if(GRADIENT_HASH.hasOwnProperty(k) && a.k === b.k && GRADIENT_TYPE.hasOwnProperty(a.k)) {\n let av = a.v;\n let bv = b.v;\n if(a.d !== b.d || av.length !== bv.length) {\n return false;\n }\n for(let i = 0, len = av.length; i < len; i++) {\n let ai = av[i];\n let bi = bv[i];\n if(ai.length !== bi.length) {\n return false;\n }\n for(let j = 0; j < 4; j++) {\n if(ai[0][j] !== bi[0][j]) {\n return false;\n }\n }\n if(ai.length > 1) {\n if(ai[1].value !== bi[1].value || ai[1].unit !== bi[1].unit) {\n return false;\n }\n }\n }\n return true;\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n if(k === 'points' || k === 'controls') {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n if(a[i] === b[i]) {\n continue;\n }\n if(a[i][0] !== b[i][0] || a[i][1] !== b[i][1]) {\n return false;\n }\n }\n return true;\n }\n else if(k === 'controlA' || k === 'controlB') {\n if(a.length !== b.length) {\n return false;\n }\n return a[0] === b[0] && a[1] === b[1];\n }\n }\n return a === b;\n}\n\n// 反向将颜色数组转换为css模式,同时计算target及其孩子的computedStyle\nfunction stringify(style, lastStyle, target) {\n if(lastStyle) {\n let res = false;\n for(let i in style) {\n if(style.hasOwnProperty(i) && lastStyle.hasOwnProperty(i)) {\n if(!equalStyle(i, style[i], lastStyle[i])) {\n res = true;\n break;\n }\n }\n // 不同的属性说明要更新提前跳出\n else if(style.hasOwnProperty(i) || lastStyle.hasOwnProperty(i)) {\n res = true;\n break;\n }\n }\n // 防止last有style没有\n for(let i in lastStyle) {\n if(lastStyle.hasOwnProperty(i) && !style.hasOwnProperty(i)) {\n res = true;\n break;\n }\n }\n if(!res) {\n return false;\n }\n }\n let animateStyle = target.animateStyle;\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n let v = style[i];\n if(repaint.GEOM.hasOwnProperty(i)) {\n target['__' + i] = v;\n }\n else if(GRADIENT_HASH.hasOwnProperty(i) && GRADIENT_TYPE.hasOwnProperty(v.k)) {\n animateStyle[i] = {\n k: v.k,\n v: v.v.map(item => {\n let arr = [];\n let c = item[0];\n if(c[3] === 1) {\n arr.push(`rgb(${c[0]},${c[1]},${c[2]})`);\n }\n else {\n arr.push(`rgba(${c[0]},${c[1]},${c[2]},${c[3]})`);\n }\n if(item[1]) {\n arr.push(util.clone(item[1]));\n }\n return arr;\n }),\n d: v.d,\n };\n }\n else if(COLOR_HASH.hasOwnProperty(i)) {\n if(v[3] === 1) {\n animateStyle[i] = `rgb(${v[0]},${v[1]},${v[2]})`;\n }\n else {\n animateStyle[i] = `rgba(${v[0]},${v[1]},${v[2]},${v[3]})`;\n }\n }\n else {\n animateStyle[i] = v;\n }\n }\n }\n return true;\n}\n\nfunction restore(keys, target) {\n let { style, animateStyle } = target;\n keys.forEach(k => {\n animateStyle[k] = util.clone(style[k]);\n });\n}\n\n// 将变化写的样式格式化,提取出offset属性,提取出变化的key,初始化变化过程的存储\nfunction framing(current, record) {\n let keys = [];\n let st = {};\n for(let i in current) {\n if(current.hasOwnProperty(i) && !{\n offset: true,\n easing: true,\n }.hasOwnProperty(i)) {\n if(keys.indexOf(i) === -1) {\n keys.push(i);\n }\n st[i] = current[i];\n if(record && !record.hash.hasOwnProperty(i)) {\n record.hash[i] = true;\n record.keys.push(i);\n }\n }\n }\n return {\n style: st,\n offset: current.offset,\n easing: current.easing,\n keys,\n transition: [],\n };\n}\n\n// 计算两帧之间的差,必须都含有某个属性,单位不同的以后面为准\nfunction calDiff(prev, next, k, target) {\n if(!prev.hasOwnProperty(k) || !next.hasOwnProperty(k)) {\n return;\n }\n let res = {\n k,\n };\n let p = prev[k];\n let n = next[k];\n if(k === 'transform') {\n if(!prev[k] || !next[k]) {\n return;\n }\n // transform每项以[k,v]存在,新老可能每项不会都存在,顺序也未必一致,不存在的认为是0\n let pExist = {};\n p.forEach(item => {\n pExist[item[0]] = item[1];\n });\n let nExist = {};\n n.forEach(item => {\n nExist[item[0]] = item[1];\n });\n res.v = [];\n let computedStyle = target.computedStyle;\n let key = k;\n n.forEach(item => {\n let [k, v] = item;\n // 都存在的计算差值\n if(pExist.hasOwnProperty(k)) {\n let p = pExist[k];\n let n = nExist[k];\n if(k === 'matrix') {\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = n[i] - p[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n else if(p.unit === n.unit) {\n res.v.push({\n k,\n v: v.value - p.value,\n });\n }\n else if(p.unit === unit.PX && n.unit === unit.PERCENT) {\n if(k === 'translateX') {\n p.value = p.value * 100 / computedStyle.width;\n }\n else if(k === 'translateY') {\n p.value = p.value * 100 / computedStyle.height;\n }\n p.unit = unit.PERCENT;\n res.v.push({\n k,\n v: n.value - p.value,\n });\n }\n else if(p.unit === unit.PERCENT && n.unit === unit.PX) {\n if(k === 'translateX') {\n p.value = p.value * 0.01 * computedStyle.width;\n }\n else if(k === 'translateY') {\n p.value = p.value * 0.01 * computedStyle.width;\n }\n p.unit = unit.PX;\n res.v.push({\n k,\n v: n.value - p.value,\n });\n }\n }\n // matrix老的不存在的项默认为单位矩阵\n else if(k === 'matrix') {\n let id = [1, 0, 0, 1, 0, 0];\n prev[key].push([k, id]);\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = v[i] - id[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n // 老的不存在的项默认为0\n else {\n prev[key].push([k, {\n value: 0,\n unit: v.unit,\n }]);\n res.v.push({\n k,\n v: v.value,\n });\n }\n });\n p.forEach(item => {\n let [k, v] = item;\n // 新的不存在的项默认为0或单位矩阵\n if(!nExist.hasOwnProperty(k)) {\n if(k === 'matrix') {\n let id = [1, 0, 0, 1, 0, 0];\n next[key].push([k, id]);\n let t = [];\n for(let i = 0; i < 6; i++) {\n t[i] = id[i] - v[i];\n }\n res.v.push({\n k,\n v: t,\n });\n }\n else {\n next[key].push([k, {\n value: 0,\n unit: v.unit,\n }]);\n res.v.push({\n k,\n v: -v.value,\n });\n }\n }\n });\n }\n else if(k === 'transformOrigin') {\n res.v = [];\n let computedStyle = target.computedStyle;\n for(let i = 0; i < 2; i++) {\n let pi = p[i];\n let ni = n[i];\n if(pi.unit === ni.unit) {\n res.v.push(ni.value - pi.value);\n }\n else if(pi.unit === unit.PX && ni.unit === unit.PERCENT) {\n pi.value = pi.value * 100 / computedStyle[i ? 'outerHeight' : 'outerWidth'];\n pi.unit = unit.PERCENT;\n res.v = ni.value - pi.value;\n }\n else if(pi.unit === unit.PERCENT && ni.unit === unit.PX) {\n pi.value = pi.value * 0.01 * computedStyle[i ? 'outerHeight' : 'outerWidth'];\n pi.unit = unit.PX;\n res.v = ni.value - pi.value;\n }\n }\n }\n else if(GRADIENT_HASH.hasOwnProperty(k)\n && { 'linear': true, 'radial': true }.hasOwnProperty(p.k)\n && p.k === n.k\n && p.v.length\n && p.v.length) {\n let pv = p.v;\n let nv = n.v;\n res.v = [];\n for(let i = 0, len = Math.min(pv.length, nv.length); i < len; i++) {\n let a = pv[i];\n let b = nv[i];\n let t = [];\n t.push([\n b[0][0] - a[0][0],\n b[0][1] - a[0][1],\n b[0][2] - a[0][2],\n b[0][3] - a[0][3]\n ]);\n if(a[1] && b[1] && a[1].unit === b[1].unit) {\n t.push(b[1].value - a[1].value);\n }\n // 单位不同不做运算\n else {\n continue;\n }\n res.v.push(t);\n }\n if(p.k === 'linear' && p.d !== undefined && n.d !== undefined) {\n res.d = n.d - p.d;\n }\n }\n else if(COLOR_HASH.hasOwnProperty(k)) {\n // fill和stroke可能纯色和渐变不一致\n if(p.k !== n.k) {\n return;\n }\n res.v = [\n n[0] - p[0],\n n[1] - p[1],\n n[2] - p[2],\n n[3] - p[3]\n ];\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n // auto不做动画\n if(p.unit === unit.AUTO || n.unit === unit.AUTO) {\n return;\n }\n let parentComputedStyle = (target.parent || target).computedStyle;\n if(p.unit === n.unit) {\n res.v = n.value - p.value;\n }\n else if(p.unit === unit.PX && n.unit === unit.PERCENT) {\n p.value = p.value * 100 / parentComputedStyle[k];\n p.unit = unit.PERCENT;\n res.v = n.value - p.value;\n }\n else if(p.unit === unit.PERCENT && n.unit === unit.PX) {\n p.value = p.value * 0.01 * parentComputedStyle[k];\n p.unit = unit.PX;\n res.v = n.value - p.value;\n }\n else {\n return;\n }\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n if(k === 'points' || k === 'controls') {\n res.v = [];\n for(let i = 0, len = Math.min(p.length, n.length); i < len; i++) {\n let pv = p[i];\n let nv = n[i];\n if(util.isNil(pv) || util.isNil(nv)) {\n res.v.push(pv);\n }\n else {\n let v = [];\n for(let j = 0, len2 = Math.max(pv.length, nv.length); j < len2; j++) {\n if(util.isNil(pv[j]) || util.isNil(nv[j])) {\n v.push(pv[j]);\n }\n else {\n v.push(nv[j] - pv[j]);\n }\n }\n res.v.push(v);\n }\n }\n }\n else if(k === 'controlA' || k === 'controlB') {\n res.v = [\n n[0] - p[0],\n n[1] - p[1]\n ];\n }\n else {\n res.v = n - p;\n }\n }\n else if(k === 'opacity') {\n res.v = n - p;\n }\n else {\n res.v = p;\n }\n return res;\n}\n\nfunction calFrame(prev, current, target, record) {\n let next = framing(current, record);\n next.keys.forEach(k => {\n let ts = calDiff(prev.style, next.style, k, target);\n // 可以形成过渡的才会产生结果返回\n if(ts) {\n prev.transition.push(ts);\n }\n });\n return next;\n}\n\nfunction binarySearch(i, j, time, frames) {\n if(i === j) {\n let frame = frames[i];\n if(frame.time > time) {\n return i - 1;\n }\n return i;\n }\n else {\n let middle = i + ((j - i) >> 1);\n let frame = frames[middle];\n if(frame.time === time) {\n return middle;\n }\n else if(frame.time > time) {\n return binarySearch(i, Math.max(middle - 1, i), time, frames);\n }\n else {\n return binarySearch(Math.min(middle + 1, j), j, time, frames);\n }\n }\n}\n\nfunction calStyle(frame, percent) {\n let style = util.clone(frame.style);\n let timingFunction = easing[frame.easing] || easing.linear;\n if(timingFunction !== easing.linear) {\n percent = timingFunction(percent);\n }\n percent = Math.max(percent, 0);\n percent = Math.min(percent, 1);\n frame.transition.forEach(item => {\n let { k, v, d } = item;\n let st = style[k];\n if(k === 'transform') {\n let transform = style.transform;\n let hash = {};\n transform.forEach(item => {\n hash[item[0]] = item[1];\n });\n v.forEach(item => {\n let { k, v } = item;\n if(k === 'matrix') {\n for(let i = 0; i < 6; i++) {\n hash[k][i] += v[i] * percent;\n }\n }\n else {\n hash[k].value += v * percent;\n }\n });\n }\n else if(k === 'transformOrigin') {\n st[0].value += v[0] * percent;\n st[1].value += v[1] * percent;\n }\n else if(GRADIENT_HASH.hasOwnProperty(k) && GRADIENT_TYPE.hasOwnProperty(st.k)) {\n for(let i = 0, len = Math.min(st.v.length, v.length); i < len; i++) {\n let a = st.v[i];\n let b = v[i];\n a[0][0] += b[0][0] * percent;\n a[0][1] += b[0][1] * percent;\n a[0][2] += b[0][2] * percent;\n a[0][3] += b[0][3] * percent;\n if(a[1] && b[1]) {\n a[1].value += b[1] * percent;\n }\n }\n if(st.k === 'linear' && st.d !== undefined && d !== undefined) {\n st.d += d * percent;\n }\n }\n // color可能超限[0,255],但浏览器已经做了限制,无需关心\n else if(COLOR_HASH.hasOwnProperty(k)) {\n st[0] += v[0] * percent;\n st[1] += v[1] * percent;\n st[2] += v[2] * percent;\n st[3] += v[3] * percent;\n }\n else if(LENGTH_HASH.hasOwnProperty(k)) {\n style[k].value += v * percent;\n }\n else if(repaint.GEOM.hasOwnProperty(k)) {\n let st = style[k];\n if(k === 'points' || k === 'controls') {\n for(let i = 0, len = Math.min(st.length, v.length); i < len; i++) {\n if(util.isNil(st[i]) || !st[i].length) {\n continue;\n }\n for(let j = 0, len2 = Math.min(st[i].length, v[i].length); j < len2; j++) {\n if(!util.isNil(st[i][j]) && !util.isNil(v[i][j])) {\n st[i][j] += v[i][j] * percent;\n }\n }\n }\n }\n else if(k === 'controlA' || k === 'controlB') {\n st[0] += v[0] * percent;\n st[1] += v[1] * percent;\n }\n else {\n style[k] += v * percent;\n }\n }\n else if(k === 'opacity') {\n style[k] += v * percent;\n }\n else {\n style[k] = v;\n }\n });\n return style;\n}\n\nfunction getLevel(style) {\n for(let i in style) {\n if(style.hasOwnProperty(i)) {\n if(!repaint.STYLE.hasOwnProperty(i) && !repaint.GEOM.hasOwnProperty(i)) {\n return level.REFLOW;\n }\n }\n }\n return level.REPAINT;\n}\n\nlet uuid = 0;\n\nclass Animation extends Event {\n constructor(target, list, options) {\n super();\n this.__id = uuid++;\n this.__target = target;\n this.__list = util.clone(list || []);\n // 动画过程另外一种形式,object描述k-v形式\n if(!Array.isArray(this.__list)) {\n let nl = [];\n let l = this.__list;\n for(let k in l) {\n if(l.hasOwnProperty(k)) {\n let v = l[k];\n if(Array.isArray(v)) {\n for(let i = 0, len = v.length; i < len; i++) {\n let o = nl[i] = nl[i] || {\n offset: i / (len - 1),\n };\n o[k] = v[i];\n }\n }\n }\n }\n this.__list = nl;\n }\n if(util.isNumber(options)) {\n this.__options = {\n duration: options,\n };\n options = this.__options;\n }\n let op = this.__options = options || {};\n this.__duration = parseFloat(op.duration) || 0;\n this.__delay = Math.max(0, parseFloat(op.delay) || 0);\n this.__endDelay = Math.max(parseFloat(op.endDelay) || 0, 0);\n if(op.iterations === 'Infinity' || op.iterations === 'infinity' || op.iterations === Infinity) {\n this.__iterations = Infinity;\n }\n else {\n this.__iterations = parseInt(op.iterations);\n if(isNaN(this.__iterations)) {\n this.__iterations = 1;\n }\n }\n this.__fps = parseInt(op.fps) || 60;\n if(this.__fps < 0) {\n this.__fps = 60;\n }\n this.__fill = op.fill || 'none';\n this.__direction = op.direction || 'normal';\n this.__frames = [];\n this.__framesR = [];\n this.__playbackRate = parseFloat(op.playbackRate) || 1;\n if(this.__playbackRate < 0) {\n this.__playbackRate = 1;\n }\n this.__startTime = 0;\n this.__offsetTime = 0;\n this.__pauseTime = 0;\n this.__lastFpsTime = 0;\n this.__pending = false;\n this.__playState = 'idle';\n this.__playCount = 0;\n this.__cb = null;\n this.__isDestroyed = true;\n this.__diffTime = 0;\n this.__init();\n }\n\n __init() {\n let { target, iterations, frames, framesR, direction, duration } = this;\n let style = util.clone(target.style);\n // 执行次数小于1无需播放\n if(iterations < 1) {\n return;\n }\n // 第一个动画执行时进行clone操作,防止2个一起时后面的覆盖前面重新clone导致前面的第一帧失效\n if(target.animateStyle !== target.currentStyle) {\n target.__animateStyle = util.clone(style);\n }\n // 转化style为计算后的绝对值结果\n color2array(style);\n // 过滤时间非法的,过滤后续offset<=前面的\n let list = this.list;\n let offset = -1;\n for(let i = 0, len = list.length; i < len; i++) {\n let current = list[i];\n if(current.hasOwnProperty('offset')) {\n current.offset = parseFloat(current.offset);\n // 超过区间[0,1]\n if(isNaN(current.offset) || current.offset < 0 || current.offset > 1) {\n list.splice(i, 1);\n i--;\n len--;\n }\n // <=前面的\n else if(current.offset <= offset) {\n list.splice(i, 1);\n i--;\n len--;\n }\n // 正常的标准化样式\n else {\n offset = current.offset;\n css.normalize(current);\n color2array(current);\n }\n }\n else {\n css.normalize(current);\n color2array(current);\n }\n }\n // 必须有2帧及以上描述\n if(list.length < 2) {\n return;\n }\n // 首尾时间偏移强制为[0, 1]\n let first = list[0];\n first.offset = 0;\n let last = list[list.length - 1];\n last.offset = 1;\n // 计算没有设置offset的时间\n for(let i = 1, len = list.length; i < len; i++) {\n let start = list[i];\n // 从i=1开始offset一定>0,找到下一个有offset的,均分中间无声明的\n if(!start.offset) {\n let end;\n let j = i + 1;\n for(; j < len; j++) {\n end = list[j];\n if(end.offset) {\n break;\n }\n }\n let num = j - i + 1;\n start = list[i - 1];\n let per = (end.offset - start.offset) / num;\n for(let k = i; k < j; k++) {\n let item = list[k];\n item.offset = start.offset + per * (k + 1 - i);\n }\n i = j;\n }\n }\n // 换算出60fps中每一帧,为防止空间过大,不存储每一帧的数据,只存储关键帧和增量\n let length = list.length;\n let record = this.__record = {\n keys: [],\n hash: {},\n };\n let prev;\n // 第一帧要特殊处理\n prev = framing(first, record);\n frames.push(prev);\n for(let i = 1; i < length; i++) {\n let next = list[i];\n prev = calFrame(prev, next, target, record);\n frames.push(prev);\n }\n this.__isDestroyed = false;\n // 反向\n if({ reverse: true, alternate: true, 'alternate-reverse': true }.hasOwnProperty(direction)) {\n let listR = util.clone(list).reverse();\n listR.forEach(item => {\n item.offset = 1 - item.offset;\n });\n prev = framing(listR[0]);\n framesR.push(prev);\n for(let i = 1; i < length; i++) {\n let next = listR[i];\n prev = calFrame(prev, next, target);\n framesR.push(prev);\n }\n }\n // 生成finish的任务事件\n this.__fin = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n this.emit(Event.KARAS_ANIMATION_FINISH);\n };\n frames.forEach(frame => {\n frame.time = duration * frame.offset;\n });\n framesR.forEach(frame => {\n frame.time = duration * frame.offset;\n });\n }\n\n play() {\n if(this.isDestroyed || this.duration <= 0) {\n return this;\n }\n this.__cancelTask();\n this.__playState = 'running';\n // 从头播放还是暂停继续\n if(this.pending) {\n let now = inject.now();\n let diff = now - this.pauseTime;\n // 在没有performance时,防止乱改系统时间导致偏移向前,但不能防止改时间导致的偏移向后\n diff = Math.max(diff, 0);\n this.__offsetTime = diff;\n }\n else {\n let {\n frames,\n framesR,\n target,\n playCount,\n duration,\n direction,\n iterations,\n fill,\n delay,\n endDelay,\n __fin,\n __record,\n } = this;\n let length = frames.length;\n let init = true;\n let first = true;\n this.__cb = () => {\n let { playbackRate, offsetTime } = this;\n let now = inject.now();\n let root = target.root;\n if(init) {\n this.__startTime = this.__lastFpsTime = this.__lastTime = now;\n this.__lastIndex = 0;\n }\n let diff = now - this.__lastTime - offsetTime;\n diff = Math.max(diff, 0);\n if(playbackRate !== 1) {\n diff *= playbackRate;\n }\n this.__diffTime += diff;\n diff = this.__diffTime;\n this.__lastTime = now;\n // delay仅第一次生效\n if(playCount > 0) {\n delay = 0;\n }\n // 还没过前置delay\n if(diff < delay) {\n if(init && {\n backwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n let current = frames[0];\n let needRefresh = stringify(current.style, {}, target);\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n };\n if(needRefresh) {\n root.setRefreshLevel(getLevel(current.style));\n root.addRefreshTask(task);\n }\n }\n init = false;\n return;\n }\n init = false;\n let currentFrames;\n if(direction === 'reverse') {\n currentFrames = framesR;\n }\n else if({ alternate: true, 'alternate-reverse': true }.hasOwnProperty(direction)) {\n let isEven = playCount % 2 === 0;\n if(direction === 'alternate') {\n currentFrames = isEven ? frames : framesR;\n }\n else {\n currentFrames = isEven ? framesR : frames;\n }\n }\n else {\n currentFrames = frames;\n }\n diff -= delay;\n // 因暂停导致的停顿时间需要清零\n this.__offsetTime = 0;\n let i = binarySearch(0, currentFrames.length - 1, diff, frames);\n let current = currentFrames[i];\n let needRefresh;\n // 最后一帧结束动画\n if(i === length - 1) {\n needRefresh = stringify(current.style, this.__lastStyle, target);\n if(playCount < iterations) {\n playCount = ++this.playCount;\n this.__diffTime = 0;\n }\n }\n // 否则根据目前到下一帧的时间差,计算百分比,再反馈到变化数值上\n else {\n // 增加的fps功能,当<60时计算跳帧\n let fps = this.fps;\n if(!util.isNumber(fps) || fps < 0) {\n fps = 60;\n }\n if(!first && fps < 60) {\n let time = now - this.__lastFpsTime;\n if(time < 1000 / fps) {\n return;\n }\n }\n let total = currentFrames[i + 1].time - current.time;\n let percent = diff / total;\n let style = calStyle(current, percent);\n needRefresh = stringify(style, this.__lastStyle, target);\n }\n this.__lastFpsTime = now;\n this.__lastStyle = current.style;\n first = false;\n // 两帧之间没有变化,不触发刷新\n if(root) {\n // 可能涉及字号变化,引发布局变更重新测量\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_FRAME);\n if(i === length - 1) {\n // 没到播放次数结束时继续\n if(iterations === Infinity || playCount < iterations) {\n return;\n }\n // 播放结束考虑endDelay\n this.__playState = 'finished';\n frame.offFrame(this.cb);\n // 不是停留在最后一帧还原\n if(!{\n forwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n root.setRefreshLevel(getLevel(__record.hash));\n restore(__record.keys, target);\n }\n // 如果有endDelay还要延迟执行\n let isFinished = diff >= duration + endDelay;\n if(isFinished) {\n root.addRefreshTask(this.__task = __fin);\n }\n else {\n let task = this.__task = () => {\n now = inject.now();\n let diff = now - this.__lastTime - offsetTime - delay;\n if(playbackRate !== 1) {\n diff *= playbackRate;\n }\n this.__diffTime += diff;\n diff = this.__diffTime;\n this.__lastTime = now;\n let isFinished = diff >= duration + endDelay;\n if(isFinished) {\n root.addRefreshTask(this.__task = __fin);\n frame.offFrame(task);\n }\n };\n frame.onFrame(task);\n }\n }\n };\n if(needRefresh) {\n root.setRefreshLevel(getLevel(current.style));\n root.addRefreshTask(task);\n }\n else {\n frame.nextFrame(task);\n }\n }\n };\n }\n // 先执行,本次执行调用refreshTask也是下一帧再渲染,frame的每帧都是下一帧\n this.cb();\n // 防止重复调用多次cb\n frame.offFrame(this.cb);\n frame.onFrame(this.cb);\n this.__pending = false;\n return this;\n }\n\n pause() {\n this.__pending = true;\n this.__pauseTime = inject.now();\n this.__playState = 'paused';\n frame.offFrame(this.cb);\n this.__cancelTask();\n this.emit(Event.KARAS_ANIMATION_PAUSE);\n return this;\n }\n\n finish() {\n let { fill, playState, __fin, __record } = this;\n if(playState === 'finished') {\n return this;\n }\n frame.offFrame(this.cb);\n this.__cancelTask();\n let { target, lastStyle } = this;\n let root = target.root;\n if(root) {\n this.__playState = 'finished';\n let needRefresh;\n // 停留在最后一帧\n if({\n forwards: true,\n both: true,\n }.hasOwnProperty(fill)) {\n let last = this.frames[this.frames.length - 1];\n needRefresh = stringify(last.style, lastStyle, this.target);\n if(needRefresh) {\n root.setRefreshLevel(getLevel(last.style));\n root.addRefreshTask(this.__task = __fin);\n }\n else {\n frame.nextFrame(this.__task = __fin);\n }\n }\n else {\n root.setRefreshLevel(getLevel(__record.hash));\n restore(__record.keys, target);\n root.addRefreshTask(this.__task = __fin);\n }\n }\n return this;\n }\n\n cancel() {\n frame.offFrame(this.cb);\n this.__cancelTask();\n if(this.__playState === 'idle') {\n return this;\n }\n this.__playState = 'idle';\n let { target } = this;\n let root = target.root;\n if(root) {\n let task = this.__task = () => {\n this.emit(Event.KARAS_ANIMATION_CANCEL);\n };\n root.addRefreshTask(task);\n }\n return this;\n }\n\n __cancelTask() {\n let { target, __task } = this;\n if(target.root && __task) {\n target.root.delRefreshTask(__task);\n }\n }\n\n __destroy() {\n frame.offFrame(this.cb);\n this.__cancelTask();\n this.__playState = 'idle';\n this.__isDestroyed = true;\n }\n\n get id() {\n return this.__id;\n }\n get target() {\n return this.__target;\n }\n get list() {\n return this.__list;\n }\n get options() {\n return this.__options;\n }\n get duration() {\n return this.__duration;\n }\n get delay() {\n return this.__delay;\n }\n get endDelay() {\n return this.__endDelay;\n }\n get fps() {\n return this.__fps;\n }\n set fps(v) {\n v = parseInt(v) || 60;\n if(v < 0) {\n v = 60;\n }\n this.__fps = v;\n }\n get iterations() {\n return this.__iterations;\n }\n get fill() {\n return this.__fill;\n }\n get direction() {\n return this.__direction;\n }\n get frames() {\n return this.__frames;\n }\n get framesR() {\n return this.__framesR;\n }\n get playbackRate() {\n return this.__playbackRate;\n }\n set playbackRate(v) {\n v = parseFloat(v) || 0;\n if(v < 0) {\n v = 1;\n }\n this.__playbackRate = v;\n }\n get startTime() {\n return this.__startTime;\n }\n get pending() {\n return this.__pending;\n }\n get offsetTime() {\n return this.__offsetTime;\n }\n get pauseTime() {\n return this.__pauseTime;\n }\n get playState() {\n return this.__playState;\n }\n get playCount() {\n return this.__playCount;\n }\n set playCount(v) {\n this.__playCount = v;\n }\n get cb() {\n return this.__cb;\n }\n get isDestroyed() {\n return this.__isDestroyed;\n }\n get lastStyle() {\n return this.__lastStyle;\n }\n}\n\nexport default Animation;\n","import Node from './Node';\nimport mode from '../util/mode';\nimport unit from '../style/unit';\nimport tf from '../style/transform';\nimport gradient from '../style/gradient';\nimport border from '../style/border';\nimport match from '../style/match';\nimport css from '../style/css';\nimport image from '../style/image';\nimport util from '../util/util';\nimport Component from './Component';\nimport Animation from '../animate/Animation';\nimport inject from '../util/inject';\n\nfunction renderBorder(renderMode, points, color, ctx, xom) {\n if(renderMode === mode.CANVAS) {\n points.forEach(point => {\n ctx.beginPath();\n ctx.fillStyle = color;\n ctx.moveTo(point[0], point[1]);\n for(let i = 2, len = point.length; i < len; i += 2) {\n ctx.lineTo(point[i], point[i + 1]);\n }\n ctx.fill();\n ctx.closePath();\n });\n }\n else if(renderMode === mode.SVG) {\n let s = '';\n points.forEach(point => {\n s += `M ${point[0]} ${point[1]}`;\n for(let i = 2, len = point.length; i < len; i += 2) {\n s += `L ${point[i]} ${point[i + 1]} `;\n }\n });\n let item = {\n type: 'item',\n tagName: 'path',\n props: [\n ['d', s],\n ['fill', color],\n ],\n };\n xom.addBorder([\n ['d', s],\n ['fill', color],\n ]);\n }\n}\n\nfunction renderBgc(renderMode, value, x, y, w, h, ctx, xom) {\n if(renderMode === mode.CANVAS) {\n ctx.beginPath();\n ctx.fillStyle = value;\n ctx.rect(x, y, w, h);\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n xom.addBackground([\n ['x', x],\n ['y', y],\n ['width', w],\n ['height', h],\n ['fill', value]\n ]);\n }\n}\n\nfunction calBackgroundSize(value, x, y, w, h) {\n let res = [];\n value.forEach((item, i) => {\n if(item.unit === unit.PX) {\n res.push(item.value);\n }\n else if(item.unit === unit.PERCENT) {\n res.push((i ? y : x) + item.value * (i ? h : w) * 0.01);\n }\n else if(item.unit === unit.AUTO) {\n res.push(-1);\n }\n else if(item.unit === unit.SIZE) {\n res.push(item.value === 'contain' ? -2 : -3);\n }\n else if(item.unit === unit.POSITION) {\n res.push(item.value);\n }\n });\n return res;\n}\n\nfunction calBackgroundPosition(position, container, size) {\n if(position.value === 'right' || position.value === 'bottom') {\n return container - size;\n }\n else if(position.value === 'center') {\n return (container - size) * 0.5;\n }\n else if(position.unit === unit.PX) {\n return position.value;\n }\n else if(position.unit === unit.PERCENT) {\n return (container - size) * position.value * 0.01;\n }\n return 0;\n}\n\nclass Xom extends Node {\n constructor(tagName, props) {\n super();\n props = props || [];\n // 构建工具中都是arr,手写可能出现hash情况\n if(Array.isArray(props)) {\n this.props = util.arr2hash(props);\n this.__props = props;\n }\n else {\n this.props = props;\n this.__props = util.hash2arr(props);\n }\n this.__tagName = tagName;\n this.__style = this.props.style || {}; // style被解析后的k-v形式\n this.__animateStyle = {}; // 动画过程中的样式\n this.__listener = {};\n this.__props.forEach(item => {\n let k = item[0];\n let v = item[1];\n if(/^on[a-zA-Z]/.test(k)) {\n k = k.slice(2).toLowerCase();\n let arr = this.__listener[k] = this.__listener[k] || [];\n arr.push(v);\n }\n else if(k === 'id' && v) {\n this.__id = v;\n }\n else if(['class', 'className'].indexOf(k) > -1 && v) {\n v = match.splitClass(v);\n if(v) {\n this.__class = v;\n }\n }\n });\n this.__matrix = null;\n this.__matrixEvent = null;\n this.__animationList = [];\n this.__loadBgi = {};\n }\n\n // 设置了css时,解析匹配\n __traverseCss(top, css) {\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__traverseCss(top, css);\n }\n });\n }\n // inline拥有最高优先级\n let style = match.parse(this, top, css) || {};\n for(let i in style) {\n if(style.hasOwnProperty(i) && !this.__style.hasOwnProperty(i)) {\n this.__style[i] = style[i];\n }\n }\n }\n\n __measure() {\n let { children } = this;\n if(children) {\n children.forEach(child => {\n if(child instanceof Xom) {\n child.__measure();\n }\n else if(child instanceof Component) {\n child.shadowRoot.__measure();\n }\n else {\n child.__measure();\n }\n });\n }\n }\n\n // 获取margin/padding的实际值\n __mp(currentStyle, computedStyle, w) {\n let {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = currentStyle;\n computedStyle.marginLeft = this.__mpWidth(marginLeft, w);\n computedStyle.marginTop = this.__mpWidth(marginTop, w);\n computedStyle.marginRight = this.__mpWidth(marginRight, w);\n computedStyle.marginBottom = this.__mpWidth(marginBottom, w);\n computedStyle.paddingLeft = this.__mpWidth(paddingLeft, w);\n computedStyle.paddingTop = this.__mpWidth(paddingTop, w);\n computedStyle.paddingRight = this.__mpWidth(paddingRight, w);\n computedStyle.paddingBottom = this.__mpWidth(paddingBottom, w);\n }\n\n __mpWidth(mp, w) {\n if(mp.unit === unit.PX) {\n return mp.value;\n }\n else if(mp.unit === unit.PERCENT) {\n return mp.value * w * 0.01;\n }\n return 0;\n }\n\n // absolute且无尺寸时,fake标明先假布局一次计算尺寸\n __layout(data, fake) {\n let { w } = data;\n let { isDestroyed, currentStyle, computedStyle } = this;\n let {\n display,\n width,\n } = currentStyle;\n if(width.unit !== unit.AUTO) {\n switch(width.unit) {\n case unit.PX:\n w = width.value;\n break;\n case unit.PERCENT:\n w *= width.value * 0.01;\n break;\n }\n }\n this.__mp(currentStyle, computedStyle, w);\n this.__ox = this.__oy = 0;\n if(isDestroyed || display === 'none') {\n computedStyle.width = computedStyle.height = computedStyle.outerWidth = computedStyle.outerHeight = 0;\n return;\n }\n if(display === 'block') {\n this.__layoutBlock(data, fake);\n }\n else if(display === 'flex') {\n this.__layoutFlex(data, fake);\n }\n else if(display === 'inline') {\n this.__layoutInline(data, fake);\n }\n // 除root节点外relative渲染时做偏移,百分比基于父元素,若父元素没有定高则为0\n if(currentStyle.position === 'relative' && this.parent) {\n let { top, right, bottom, left } = currentStyle;\n let { parent } = this;\n if(top.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'top', top, parent);\n this.__offsetY(n);\n computedStyle.top = n;\n computedStyle.bottom = 'auto';\n }\n else if(bottom.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'bottom', bottom, parent);\n this.__offsetY(-n);\n computedStyle.bottom = n;\n computedStyle.top = 'auto';\n }\n else {\n computedStyle.top = computedStyle.bottom = 'auto';\n }\n if(left.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'left', left, parent, true);\n this.__offsetX(n);\n computedStyle.left = n;\n computedStyle.right = 'auto';\n }\n else if(right.unit !== unit.AUTO) {\n let n = css.calRelative(currentStyle, 'right', right, parent, true);\n this.__offsetX(-n);\n computedStyle.right = n;\n computedStyle.left = 'auto';\n }\n else {\n computedStyle.left = computedStyle.right = 'auto';\n }\n }\n // 计算结果存入computedStyle\n computedStyle.width = this.width;\n computedStyle.height = this.height;\n computedStyle.outerWidth = this.outerWidth;\n computedStyle.outerHeight = this.outerHeight;\n }\n\n isGeom() {\n return this.tagName.charAt(0) === '$';\n }\n\n isRoot() {\n return !this.parent;\n }\n\n // 预先计算是否是固定宽高,布局点位和尺寸考虑margin/border/padding\n __preLayout(data) {\n let { x, y, w, h } = data;\n this.__x = x;\n this.__y = y;\n let { currentStyle, computedStyle } = this;\n let {\n width,\n height,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n // 除了auto外都是固定宽高度\n let fixedWidth;\n let fixedHeight;\n if(width.unit !== unit.AUTO) {\n fixedWidth = true;\n switch(width.unit) {\n case unit.PX:\n w = width.value;\n break;\n case unit.PERCENT:\n w *= width.value * 0.01;\n break;\n }\n }\n if(height.unit !== unit.AUTO) {\n fixedHeight = true;\n switch(height.unit) {\n case unit.PX:\n h = height.value;\n break;\n case unit.PERCENT:\n h *= height.value * 0.01;\n break;\n }\n }\n // margin/padding/border影响x和y和尺寸\n x += borderLeftWidth + marginLeft + paddingLeft;\n data.x = x;\n y += borderTopWidth + marginTop + paddingTop;\n data.y = y;\n if(width.unit === unit.AUTO) {\n w -= borderLeftWidth + borderRightWidth + marginLeft + marginRight + paddingLeft + paddingRight;\n }\n if(height.unit === unit.AUTO) {\n h -= borderTopWidth + borderBottomWidth + marginTop + marginBottom + paddingTop + paddingBottom;\n }\n return {\n fixedWidth,\n fixedHeight,\n x,\n y,\n w,\n h,\n };\n }\n\n render(renderMode) {\n this.__renderMode = renderMode;\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n bb: [],\n children: [],\n transform: [],\n opacity: 1,\n };\n }\n let { isDestroyed, ctx, currentStyle, computedStyle, width, height } = this;\n this.__matrix = this.__matrixEvent = null;\n let parent = this.parent;\n let matrix = [1, 0, 0, 1, 0, 0];\n while(parent) {\n if(parent.matrixEvent) {\n matrix = tf.mergeMatrix(parent.matrixEvent, matrix);\n break;\n }\n parent = parent.parent;\n }\n // canvas继承祖先matrix,没有则恢复默认,防止其它matrix影响;svg则要考虑事件\n if(matrix[0] !== 1\n || matrix[1] !== 0\n || matrix[1] !== 0\n || matrix[1] !== 1\n || matrix[1] !== 0\n || matrix[1] !== 0) {\n if(renderMode === mode.CANVAS) {\n this.__matrix = this.__matrixEvent = matrix;\n }\n else if(renderMode === mode.SVG) {\n this.__matrixEvent = matrix;\n }\n }\n if(renderMode === mode.CANVAS) {\n ctx.setTransform(...matrix);\n }\n let {\n display,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n backgroundColor,\n borderTopWidth,\n borderTopColor,\n borderTopStyle,\n borderRightWidth,\n borderRightColor,\n borderRightStyle,\n borderBottomWidth,\n borderBottomColor,\n borderBottomStyle,\n borderLeftWidth,\n borderLeftColor,\n borderLeftStyle,\n visibility,\n } = computedStyle;\n let {\n backgroundImage,\n backgroundSize,\n backgroundPosition,\n backgroundRepeat,\n transform,\n transformOrigin,\n opacity,\n } = currentStyle;\n // 使用sx和sy渲染位置,考虑了relative和translate影响\n let { sx: x, sy: y } = this;\n let x1 = x + marginLeft;\n let x2 = x1 + borderLeftWidth;\n let x3 = x2 + width + paddingLeft + paddingRight;\n let x4 = x3 + borderRightWidth;\n let y1 = y + marginTop;\n let y2 = y1 + borderTopWidth;\n let y3 = y2 + height + paddingTop + paddingBottom;\n let y4 = y3 + borderBottomWidth;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n // 先设置透明度,可以向上累积\n parent = this.parent;\n let opa = opacity;\n while(parent) {\n opa *= parent.currentStyle.opacity;\n parent = parent.parent;\n }\n if(renderMode === mode.CANVAS) {\n ctx.globalAlpha = opa;\n }\n else {\n this.__virtualDom.opacity = opacity;\n }\n // transform和transformOrigin相关\n let tfo = tf.calOrigin(transformOrigin, x2, y2, iw, ih);\n computedStyle.transformOrigin = tfo.join(' ');\n // transform相对于自身\n if(transform) {\n let matrix = tf.calMatrix(transform, tfo, x2, y2, iw, ih);\n // 初始化有可能继承祖先的matrix\n this.__matrix = this.matrix ? tf.mergeMatrix(this.matrix, matrix) : matrix;\n computedStyle.transform = 'matrix(' + matrix.join(', ') + ')';\n let parent = this.parent;\n while(parent) {\n if(parent.matrixEvent) {\n matrix = tf.mergeMatrix(parent.matrixEvent, matrix);\n break;\n }\n parent = parent.parent;\n }\n this.__matrixEvent = matrix;\n if(renderMode === mode.CANVAS) {\n ctx.setTransform(...matrix);\n }\n else if(renderMode === mode.SVG) {\n this.addTransform(['matrix', this.matrix.join(',')]);\n }\n }\n else {\n computedStyle.transform = 'matrix(1, 0, 0, 1, 0, 0)';\n }\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n // 背景色垫底\n if(backgroundColor !== 'transparent') {\n renderBgc(renderMode, backgroundColor, x2, y2, iw, ih, ctx, this);\n }\n // 渐变或图片叠加\n if(backgroundImage) {\n if(util.isString(backgroundImage)) {\n if(this.__loadBgi.url === backgroundImage) {\n backgroundSize = calBackgroundSize(backgroundSize, x2, y2, iw, ih);\n let { width, height } = this.__loadBgi;\n let [w, h] = backgroundSize;\n // -1为auto,-2为contain,-3为cover\n if(w === -1 && h === -1) {\n w = width;\n h = height;\n }\n else if(w === -2) {\n if(width > iw && height > ih) {\n w = width / iw;\n h = height / ih;\n if(w >= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n else if(width > iw) {\n w = iw;\n h = w * height / width;\n }\n else if(height > ih) {\n h = ih;\n w = h * width / height;\n }\n else {\n w = width;\n h = height;\n }\n }\n else if(w === -3) {\n if(iw > width && ih > height) {\n w = width / iw;\n h = height / ih;\n if(w <= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n else if(iw > width) {\n w = iw;\n h = w * height / width;\n }\n else if(ih > height) {\n h = ih;\n w = h * width / height;\n }\n else {\n w = width / iw;\n h = height / ih;\n if(w <= h) {\n w = iw;\n h = w * height / width;\n }\n else {\n h = ih;\n w = h * width / height;\n }\n }\n }\n else if(w === -1) {\n w = h * width / height;\n }\n else if(h === -1) {\n h = w * height / width;\n }\n let originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, width);\n let originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, height);\n let xnl = 0;\n let xnr = 0;\n let ynt = 0;\n let ynb = 0;\n // repeat-x\n if(['repeat-x', 'repeat'].indexOf(backgroundRepeat) > -1) {\n let diff = originX - x2;\n if(diff > 0) {\n xnl = Math.ceil(diff / w);\n }\n diff = x2 + iw - originX - w;\n if(diff > 0) {\n xnr = Math.ceil(diff / w);\n }\n }\n // repeat-y\n if(['repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1) {\n let diff = originY - y2;\n if(diff > 0) {\n ynt = Math.ceil(diff / h);\n }\n diff = y2 + ih - originY - h;\n if(diff > 0) {\n ynb = Math.ceil(diff / h);\n }\n }\n // 超出尺寸模拟mask截取\n let needMask = ['repeat-x', 'repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1\n || originX < x2 || originY < y2 || w > iw || h > ih;\n if(renderMode === mode.CANVAS) {\n // 超出尺寸模拟mask截取\n let cache1;\n let cache2;\n if(needMask) {\n cache1 = this.root.__getImageData();\n this.root.__clear();\n }\n ctx.drawImage(this.__loadBgi.source, originX, originY, w, h);\n // 分4个角分别判断\n if(xnl > 0 || ynt > 0) {\n for(let i = 0; i <= Math.max(xnl, 1); i++) {\n for(let j = 0; j <= Math.max(ynt, 1); j++) {\n if(i !== 0 || j !== 0) {\n ctx.drawImage(this.__loadBgi.source, originX - i * w, originY - j * h, w, h);\n }\n }\n }\n }\n if(xnr > 0 || ynt > 0) {\n for(let i = 0; i <= Math.max(xnr, 1); i++) {\n for(let j = 0; j <= Math.max(ynt, 1); j++) {\n if(i !== 0 || j !== 0) {\n ctx.drawImage(this.__loadBgi.source, originX + i * w, originY - j * h, w, h);\n }\n }\n }\n }\n if(xnl > 0 || ynb > 0) {\n for(let i = 0; i <= Math.max(xnl, 1); i++) {\n for(let j = 0; j <= Math.max(ynb, 1); j++) {\n if(i !== 0 || j !== 0) {\n ctx.drawImage(this.__loadBgi.source, originX - i * w, originY + j * h, w, h);\n }\n }\n }\n }\n if(xnr > 0 || ynb > 0) {\n for(let i = 0; i <= Math.max(xnr, 1); i++) {\n for(let j = 0; j <= Math.max(ynb, 1); j++) {\n if(i !== 0 || j !== 0) {\n ctx.drawImage(this.__loadBgi.source, originX + i * w, originY + j * h, w, h);\n }\n }\n }\n }\n if(needMask) {\n ctx.globalCompositeOperation = 'destination-in';\n renderBgc(renderMode, '#FFF', x2, y2, iw, ih, ctx, this);\n cache2 = this.root.__getImageData();\n this.root.__clear();\n ctx.globalCompositeOperation = 'source-over';\n this.root.__putImageData(util.mergeImageData(cache1, cache2));\n }\n }\n else if(renderMode === mode.SVG) {\n let matrix = image.matrixResize(width, height, w, h, x2, y2, iw, ih);\n let props = [\n ['xlink:href', backgroundImage],\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height]\n ];\n if(matrix) {\n props.push(['transform', 'matrix(' + matrix.join(',') + ')']);\n }\n if(needMask) {\n let maskId = this.defs.add({\n tagName: 'mask',\n props: [],\n children: [{\n tagName: 'rect',\n props: [\n ['x', x2],\n ['y', y2],\n ['width', iw],\n ['height', ih],\n ['fill', '#FFF']\n ],\n }],\n });\n this.virtualDom.bbMask = `url(#${maskId})`;\n }\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props,\n });\n // 4个角repeat\n if(xnl > 0 || ynt > 0) {\n for(let i = 0; i <= Math.max(xnl, 1); i++) {\n for(let j = 0; j <= Math.max(ynt, 1); j++) {\n if(i !== 0 || j !== 0) {\n let clone = util.clone(props);\n clone[1][1] = originX - i * w;\n clone[2][1] = originY - j * h;\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props: clone,\n });\n }\n }\n }\n }\n if(xnr > 0 || ynt > 0) {\n for(let i = 0; i <= Math.max(xnr, 1); i++) {\n for(let j = 0; j <= Math.max(ynt, 1); j++) {\n if(i !== 0 || j !== 0) {\n let clone = util.clone(props);\n clone[1][1] = originX + i * w;\n clone[2][1] = originY - j * h;\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props: clone,\n });\n }\n }\n }\n }\n if(xnl > 0 || ynb > 0) {\n for(let i = 0; i <= Math.max(xnl, 1); i++) {\n for(let j = 0; j <= Math.max(ynb, 1); j++) {\n if(i !== 0 || j !== 0) {\n let clone = util.clone(props);\n clone[1][1] = originX - i * w;\n clone[2][1] = originY + j * h;\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props: clone,\n });\n }\n }\n }\n }\n if(xnr > 0 || ynb > 0) {\n for(let i = 0; i <= Math.max(xnr, 1); i++) {\n for(let j = 0; j <= Math.max(ynb, 1); j++) {\n if(i !== 0 || j !== 0) {\n let clone = util.clone(props);\n clone[1][1] = originX + i * w;\n clone[2][1] = originY + j * h;\n this.virtualDom.bb.push({\n type: 'img',\n tagName: 'image',\n props: clone,\n });\n }\n }\n }\n }\n }\n computedStyle.backgroudSize = `${w} ${h}`;\n computedStyle.backgroundPosition = `${originX} ${originY}`;\n computedStyle.backgroundRepeat = backgroundRepeat;\n }\n else {\n this.__loadBgi.url = backgroundImage;\n inject.measureImg(backgroundImage, (data) => {\n if(data.success) {\n this.__loadBgi.source = data.source;\n this.__loadBgi.width = data.width;\n this.__loadBgi.height = data.height;\n this.root.addRefreshTask();\n }\n });\n }\n }\n else if(backgroundImage.k) {\n let bgi = this.__gradient(renderMode, x2, y2, x3, y3, iw, ih, 'backgroundImage', backgroundImage, computedStyle);\n renderBgc(renderMode, bgi, x2, y2, iw, ih, ctx, this);\n }\n }\n else {\n let originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, 0);\n let originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, 0);\n computedStyle.backgroudSize = calBackgroundSize(backgroundSize, x2, y2, iw, ih).join(' ');\n computedStyle.backgroundPosition = `${originX} ${originY}`;\n computedStyle.backgroundRepeat = backgroundRepeat;\n }\n // 边框需考虑尖角,两条相交边平分45°夹角\n if(borderTopWidth > 0 && borderTopColor !== 'transparent') {\n let deg1 = Math.atan(borderTopWidth / borderLeftWidth);\n let deg2 = Math.atan(borderTopWidth / borderRightWidth);\n let points = border.calPoints(borderTopWidth, borderTopStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 0);\n renderBorder(renderMode, points, borderTopColor, ctx, this);\n }\n if(borderRightWidth > 0 && borderRightColor !== 'transparent') {\n let deg1 = Math.atan(borderRightWidth / borderTopWidth);\n let deg2 = Math.atan(borderRightWidth / borderBottomWidth);\n let points = border.calPoints(borderRightWidth, borderRightStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 1);\n renderBorder(renderMode, points, borderRightColor, ctx, this);\n }\n if(borderBottomWidth > 0 && borderBottomColor !== 'transparent') {\n let deg1 = Math.atan(borderBottomWidth / borderLeftWidth);\n let deg2 = Math.atan(borderBottomWidth / borderRightWidth);\n let points = border.calPoints(borderBottomWidth, borderBottomStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 2);\n renderBorder(renderMode, points, borderBottomColor, ctx, this);\n }\n if(borderLeftWidth > 0 && borderLeftColor !== 'transparent') {\n let deg1 = Math.atan(borderLeftWidth / borderTopWidth);\n let deg2 = Math.atan(borderLeftWidth / borderBottomWidth);\n let points = border.calPoints(borderLeftWidth, borderLeftStyle, deg1, deg2, x1, x2, x3, x4, y1, y2, y3, y4, 3);\n renderBorder(renderMode, points, borderLeftColor, ctx, this);\n }\n }\n\n __renderByMask(renderMode) {\n let prev = this.prev;\n let hasMask = prev && prev.isMask;\n if(renderMode === mode.CANVAS) {\n // 先保存之前的图像\n let cache1;\n let cache2;\n if(hasMask) {\n cache1 = this.root.__getImageData();\n this.root.__clear();\n }\n // 然后反向先绘制需要遮罩的图层\n this.render(renderMode);\n // 再用mask反遮罩\n if(hasMask) {\n this.ctx.globalCompositeOperation = 'destination-in';\n prev.render(renderMode);\n cache2 = this.root.__getImageData();\n this.root.__clear();\n }\n this.ctx.globalCompositeOperation = 'source-over';\n if(hasMask) {\n this.root.__putImageData(util.mergeImageData(cache1, cache2));\n }\n }\n else if(renderMode === mode.SVG) {\n this.render(renderMode);\n if(hasMask) {\n this.virtualDom.mask = prev.maskId;\n }\n }\n }\n\n __destroy() {\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner && owner.ref[ref]) {\n delete owner.ref[ref];\n }\n }\n // if(this.animation) {\n // this.animation.__destroy();\n // }\n this.animationList.forEach(item => item.__destroy());\n super.__destroy();\n this.__matrix = this.__matrixEvent = null;\n }\n\n // 先查找到注册了事件的节点,再捕获冒泡判断增加性能\n __emitEvent(e, force) {\n let { event: { type } } = e;\n let { isDestroyed, listener, children, computedStyle, outerWidth, outerHeight, matrixEvent } = this;\n if(isDestroyed || computedStyle.display === 'none' || e.__stopPropagation) {\n return;\n }\n let cb;\n if(listener.hasOwnProperty(type)) {\n cb = listener[type];\n }\n let childWillResponse;\n // touchmove之类强制的直接通知即可\n if(force) {\n if(!this.isGeom()) {\n // 先响应absolute/relative高优先级,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e, force)) {\n childWillResponse = true;\n }\n }\n }\n // 再看普通流,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e, force)) {\n childWillResponse = true;\n }\n }\n }\n }\n // touchmove之类也需要考虑target是否是自己以及孩子\n if(!childWillResponse && this.root.__touchstartTarget !== this) {\n return;\n }\n if(e.__stopPropagation) {\n return;\n }\n if(type === 'touchmove' || type === 'touchend' || type === 'touchcancel') {\n e.target = this.root.__touchstartTarget;\n }\n if(cb) {\n cb.forEach(item => {\n if(e.__stopImmediatePropagation) {\n return;\n }\n item(e);\n });\n }\n return true;\n }\n if(!this.isGeom()) {\n // 先响应absolute/relative高优先级,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) > -1) {\n if(child.__emitEvent(e)) {\n childWillResponse = true;\n }\n }\n }\n // 再看普通流,从后往前遮挡顺序\n for(let i = children.length - 1; i >= 0; i--) {\n let child = children[i];\n if((child instanceof Xom || child instanceof Component) && ['absolute', 'relative'].indexOf(child.computedStyle.position) === -1) {\n if(child.__emitEvent(e)) {\n childWillResponse = true;\n }\n }\n }\n }\n if(e.__stopPropagation) {\n return;\n }\n // child触发则parent一定触发,否则判断事件坐标是否在节点内且未被遮挡\n if(childWillResponse || this.willResponseEvent(e)) {\n e.__hasEmitted = true;\n if(cb) {\n cb.forEach(item => {\n if(e.__stopImmediatePropagation) {\n return;\n }\n if(util.isFunction(item)) {\n item(e);\n }\n });\n }\n return true;\n }\n }\n\n willResponseEvent(e) {\n let { x, y, __hasEmitted } = e;\n if(__hasEmitted) {\n return;\n }\n let { sx, sy, outerWidth, outerHeight, matrixEvent } = this;\n let inThis = tf.pointInQuadrilateral(x - sx, y - sy,\n 0, 0,\n outerWidth,0,\n 0, outerHeight,\n outerWidth, outerHeight,\n matrixEvent);\n if(inThis) {\n if(!e.target) {\n e.target = this;\n // 缓存target给move用\n if(e.event.type === 'touchstart') {\n this.root.__touchstartTarget = this;\n }\n }\n return true;\n }\n }\n\n __gradient(renderMode, x2, y2, x3, y3, iw, ih, ks, vs, computedStyle) {\n let { k, v, d } = vs;\n computedStyle[ks] = k + '-gradient(';\n let cx = x2 + iw * 0.5;\n let cy = y2 + ih * 0.5;\n let res;\n if(k === 'linear') {\n let gd = gradient.getLinear(v, d, cx, cy, iw, ih);\n res = this.__getLg(renderMode, gd);\n computedStyle[ks] += d + 'deg';\n }\n else if(k === 'radial') {\n let gd = gradient.getRadial(v, d, cx, cy, x2, y2, x3, y3);\n res = this.__getRg(renderMode, gd);\n computedStyle[ks] += d;\n }\n v.forEach(item => {\n computedStyle[ks] += ', ' + item[0];\n if(item[1]) {\n computedStyle[ks] += ' ' + item[1].str;\n }\n });\n computedStyle[ks] += ')';\n return res;\n }\n\n __getLg(renderMode, gd) {\n if(renderMode === mode.CANVAS) {\n let lg = this.ctx.createLinearGradient(gd.x1, gd.y1, gd.x2, gd.y2);\n gd.stop.forEach(item => {\n lg.addColorStop(item[1], item[0]);\n });\n return lg;\n }\n else if(renderMode === mode.SVG) {\n let uuid = this.defs.add({\n tagName: 'linearGradient',\n props: [\n ['x1', gd.x1],\n ['y1', gd.y1],\n ['x2', gd.x2],\n ['y2', gd.y2]\n ],\n children: gd.stop.map(item => {\n return {\n tagName: 'stop',\n props: [\n ['stop-color', item[0]],\n ['offset', item[1] * 100 + '%']\n ],\n };\n }),\n });\n return `url(#${uuid})`;\n }\n }\n\n __getRg(renderMode, gd) {\n if(renderMode === mode.CANVAS) {\n let rg = this.ctx.createRadialGradient(gd.cx, gd.cy, 0, gd.cx, gd.cy, gd.r);\n gd.stop.forEach(item => {\n rg.addColorStop(item[1], item[0]);\n });\n return rg;\n }\n else if(renderMode === mode.SVG) {\n let uuid = this.defs.add({\n tagName: 'radialGradient',\n props: [\n ['cx', gd.cx],\n ['cy', gd.cy],\n ['r', gd.r]\n ],\n children: gd.stop.map(item => {\n return {\n tagName: 'stop',\n props: [\n ['stop-color', item[0]],\n ['offset', item[1] * 100 + '%']\n ],\n };\n }),\n });\n return `url(#${uuid})`;\n }\n }\n\n addBorder(props) {\n this.virtualDom.bb.push({\n type: 'item',\n tagName: 'path',\n props,\n });\n }\n\n addBackground(props) {\n this.virtualDom.bb.push({\n type: 'item',\n tagName: 'rect',\n props,\n });\n }\n\n addTransform(props) {\n this.virtualDom.transform.push(props);\n }\n\n animate(list, option) {\n let animation = new Animation(this, list, option);\n this.animationList.push(animation);\n return animation.play();\n }\n\n __computed() {\n css.compute(this, this.isRoot());\n // 即便自己不需要计算,但children还要继续递归检查\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__computed();\n }\n else {\n item.__style = this.currentStyle;\n css.compute(item);\n // 文字首先测量所有字符宽度\n item.__measure();\n }\n });\n }\n }\n\n __repaint() {\n css.repaint(this, this.isRoot());\n // 即便自己不需要计算,但children还要继续递归检查\n if(!this.isGeom()) {\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__repaint();\n }\n else {\n item.__style = this.currentStyle;\n css.repaint(item);\n }\n });\n }\n }\n\n get tagName() {\n return this.__tagName;\n }\n get outerWidth() {\n let { computedStyle: {\n borderLeftWidth,\n borderRightWidth,\n marginRight,\n marginLeft,\n paddingRight,\n paddingLeft,\n } } = this;\n return this.width\n + borderLeftWidth\n + borderRightWidth\n + marginLeft\n + marginRight\n + paddingLeft\n + paddingRight;\n }\n get outerHeight() {\n let { computedStyle: {\n borderTopWidth,\n borderBottomWidth,\n marginTop,\n marginBottom,\n paddingTop,\n paddingBottom,\n } } = this;\n return this.height\n + borderTopWidth\n + borderBottomWidth\n + marginTop\n + marginBottom\n + paddingTop\n + paddingBottom;\n }\n get listener() {\n return this.__listener;\n }\n get renderMode() {\n return this.__renderMode;\n }\n get matrix() {\n return this.__matrix;\n }\n get matrixEvent() {\n return this.__matrixEvent;\n }\n get id() {\n return this.__id;\n }\n get class() {\n return this.__class || [];\n }\n get animationList() {\n return this.__animationList;\n }\n get animateStyle() {\n return this.__animateStyle;\n }\n get currentStyle() {\n let { style, animateStyle, animationList } = this;\n // 有一个动画在运行则返回animateStyle,否则是style\n for(let i = 0, len = animationList.length; i < len; i++) {\n let animation = animationList[i];\n let { playState, options } = animation;\n if(playState === 'idle') {\n continue;\n }\n else if(playState === 'finished' && ['forwards', 'both'].indexOf(options.fill) === -1) {\n continue;\n }\n return animateStyle;\n }\n return style;\n }\n}\n\nexport default Xom;\n","class LineGroup {\n constructor(x, y) {\n this.__list = [];\n this.__x = x;\n this.__y = y;\n this.__baseLine = 0;\n }\n\n add(item) {\n this.list.push(item);\n }\n\n __calBaseLine() {\n let baseLine = 0;\n this.list.forEach(item => {\n baseLine = Math.max(baseLine, item.baseLine);\n });\n return baseLine;\n }\n\n verticalAlign() {\n let n = this.__baseLine = this.__calBaseLine();\n // 仅当有2个和以上时才需要vertical对齐调整\n if(this.list.length > 1) {\n this.list.forEach(item => {\n let m = item.baseLine;\n if(m !== n) {\n item.__offsetY(n - m);\n }\n });\n }\n }\n\n horizonAlign(diff) {\n this.list.forEach(item => {\n item.__offsetX(diff);\n });\n }\n\n get list() {\n return this.__list;\n }\n get x() {\n return this.__x;\n }\n get y() {\n return this.__y;\n }\n get width() {\n let width = 0;\n this.list.forEach(item => {\n width += item.width;\n });\n return width;\n }\n get height() {\n let height = 0;\n this.list.forEach(item => {\n height = Math.max(height, item.height);\n });\n return height;\n }\n get baseLine() {\n return this.__baseLine;\n }\n get size() {\n return this.__list.length;\n }\n}\n\nexport default LineGroup;\n","import Xom from '../node/Xom';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport unit from '../style/unit';\nimport mode from '../util/mode';\nimport util from '../util/util';\nimport matrix from '../math/matrix';\n\nconst REGISTER = {};\n\nclass Geom extends Xom {\n constructor(tagName, props) {\n super(tagName, props);\n this.__isMask = !util.isNil(this.props.mask) || this.props.mask === true;\n }\n\n __init() {\n let style = this.style;\n if(this.isMask) {\n style.position = 'absolute';\n style.display = 'block';\n style.visibility = 'visible';\n style.background = null;\n style.border = null;\n style.strokeWidth = 0;\n }\n css.normalize(style, reset.geom);\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner) {\n owner.ref[ref] = this;\n }\n }\n }\n\n __tryLayInline(w, total) {\n // 无children,直接以style的width为宽度,不定义则为0\n let { currentStyle: { width } } = this;\n if(width.unit === unit.PX) {\n return w - width.value;\n }\n else if(width.unit === unit.PERCENT) {\n return w - total * width.value * 0.01;\n }\n return w;\n }\n\n __calAutoBasis(isDirectionRow) {\n let b = 0;\n let min = 0;\n let max = 0;\n let { currentStyle, computedStyle } = this;\n // 计算需考虑style的属性\n let {\n width,\n height,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n } = computedStyle;\n let main = isDirectionRow ? width : height;\n if(main.unit !== unit.AUTO) {\n b = max += main.value;\n }\n // border也得计算在内\n if(isDirectionRow) {\n let w = borderRightWidth + borderLeftWidth;\n b += w;\n max += w;\n min += w;\n }\n else {\n let h = borderTopWidth + borderBottomWidth;\n b += h;\n max += h;\n min += h;\n }\n return { b, min, max };\n }\n\n __layoutBlock(data) {\n let { fixedHeight, w, h } = this.__preLayout(data);\n let {\n marginLeft,\n marginRight,\n width,\n } = this.currentStyle;\n this.__width = w;\n this.__height = fixedHeight ? h : 0;\n // 处理margin:xx auto居中对齐\n if(marginLeft.unit === unit.AUTO && marginRight.unit === unit.AUTO && width.unit !== unit.AUTO) {\n let ow = this.outerWidth;\n if(ow < data.w) {\n this.__offsetX((data.w - ow) * 0.5);\n }\n }\n }\n\n __layoutFlex(data) {\n // 无children所以等同于block\n this.__layoutBlock(data);\n }\n\n __layoutInline(data) {\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n // 元素的width不能超过父元素w\n this.__width = fixedWidth ? w : x - data.x;\n this.__height = fixedHeight ? h : y - data.y;\n }\n\n __preRender(renderMode) {\n let { sx: x, sy: y, width, height, currentStyle, computedStyle } = this;\n let {\n strokeWidth,\n fill,\n stroke,\n strokeDasharray,\n strokeLinecap,\n } = currentStyle;\n let {\n borderTopWidth,\n borderLeftWidth,\n display,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n visibility,\n } = computedStyle;\n let originX = x + borderLeftWidth + marginLeft + paddingLeft;\n let originY = y + borderTopWidth + marginTop + paddingTop;\n let cx = originX + width * 0.5;\n let cy = originY + height * 0.5;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n if(strokeWidth.unit === unit.PX) {\n strokeWidth = strokeWidth.value;\n }\n else if(strokeWidth.unit === unit.PERCENT) {\n strokeWidth = strokeWidth.value * width * 0.01;\n }\n else {\n strokeWidth = 0;\n }\n computedStyle.strokeWidth = strokeWidth;\n if(stroke.k === 'linear' || stroke.k === 'radial') {\n stroke = this.__gradient(renderMode, originX, originY, originY + iw, originY + ih, iw, ih, 'stroke', stroke, computedStyle);\n }\n else {\n computedStyle.stroke = stroke;\n }\n if(fill.k === 'linear' || fill.k === 'radial') {\n fill = this.__gradient(renderMode, originX, originY, originY + iw, originY + ih, iw, ih, 'fill', fill, computedStyle);\n }\n else {\n computedStyle.fill = fill;\n }\n computedStyle.strokeWidth = strokeWidth;\n computedStyle.strokeDasharray = strokeDasharray;\n computedStyle.strokeLinecap = strokeLinecap;\n return {\n x,\n y,\n originX,\n originY,\n cx,\n cy,\n display,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n fill,\n visibility,\n };\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { isDestroyed, computedStyle: { display } } = this;\n if(isDestroyed || display === 'none') {\n return {\n isDestroyed,\n display,\n };\n }\n if(renderMode === mode.SVG) {\n this.__virtualDom = {\n ...super.virtualDom,\n type: 'geom',\n };\n }\n return this.__preRender(renderMode);\n }\n\n __renderAsMask(renderMode) {\n if(renderMode === mode.CANVAS) {}\n else if(renderMode === mode.SVG) {\n this.render(renderMode);\n let vd = this.virtualDom;\n vd.isMask = true;\n // svg的mask没有transform,需手动计算变换后的坐标应用\n let children = util.clone(vd.children);\n let m = this.matrixEvent;\n children.forEach(child => {\n let xi = 0;\n let yi = 1;\n let x, y;\n let props = child.props;\n if(child.tagName === 'rect') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'x') {\n xi = i;\n x = v;\n }\n else if(k === 'y') {\n yi = i;\n y = v;\n }\n }\n let point = matrix.calPoint([x, y], m);\n props[xi][1] = point[0];\n props[yi][1] = point[1];\n }\n else if(child.tagName === 'circle' || child.tagName === 'ellipse') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'cx') {\n xi = i;\n x = v;\n }\n else if(k === 'cy') {\n yi = i;\n y = v;\n }\n }\n let point = matrix.calPoint([x, y], m);\n props[xi][1] = point[0];\n props[yi][1] = point[1];\n }\n else if(child.tagName === 'polygon') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'points') {\n props[i][1] = v.replace(/([\\d.]+),([\\d.]+)/g, ($0, $1, $2) => {\n return matrix.calPoint([$1, $2], m).join(',');\n });\n break;\n }\n }\n }\n else if(child.tagName === 'path') {\n for(let i = 0, len = props.length; i < len; i++) {\n let [k, v] = props[i];\n if(k === 'd') {\n props[i][1] = v.replace(/([\\d.]+),([\\d.]+)/g, ($0, $1, $2) => {\n return matrix.calPoint([$1, $2], m).join(',');\n });\n break;\n }\n }\n }\n });\n let maskId = this.defs.add({\n tagName: 'mask',\n props: [],\n children,\n });\n this.__maskId = `url(#${maskId})`;\n }\n }\n\n addGeom(tagName, props) {\n props = util.hash2arr(props);\n this.virtualDom.children.push({\n type: 'item',\n tagName,\n props,\n });\n }\n\n get tagName() {\n return this.__tagName;\n }\n get baseLine() {\n return this.__height;\n }\n get isMask() {\n return this.__isMask;\n }\n get maskId() {\n return this.__maskId;\n }\n\n static getRegister(name) {\n if(!REGISTER.hasOwnProperty(name)) {\n throw new Error(`Geom has not register: ${name}`);\n }\n return REGISTER[name];\n }\n static register(name, obj) {\n if(Geom.hasRegister(name)) {\n throw new Error(`Geom has already register: ${name}`);\n }\n REGISTER[name] = obj;\n }\n static hasRegister(name) {\n return REGISTER.hasOwnProperty(name);\n }\n}\n\nexport default Geom;\n","import Xom from './Xom';\nimport Text from './Text';\nimport LineGroup from './LineGroup';\nimport Geom from '../geom/Geom';\nimport util from '../util/util';\nimport reset from '../style/reset';\nimport css from '../style/css';\nimport unit from '../style/unit';\nimport mode from '../util/mode';\nimport sort from '../util/sort';\nimport Component from './Component';\n\nconst TAG_NAME = {\n 'div': true,\n 'span': true,\n 'img': true,\n};\nconst INLINE = {\n 'span': true,\n 'img': true,\n};\n\nclass Dom extends Xom {\n constructor(tagName, props, children) {\n super(tagName, props);\n this.__children = children || [];\n this.__flowChildren = []; // 非绝对定位孩子\n this.__absChildren = []; // 绝对定位孩子\n this.__lineGroups = []; // 一行inline元素组成的LineGroup对象后的存放列表\n }\n\n /**\n * 1. 封装string为Text节点\n * 2. 打平children中的数组,变成一维\n * 3. 合并相连的Text节点\n * 4. 检测inline不能包含block和flex\n * 5. 设置parent和prev/next和ctx和defs和mode\n */\n __traverse(ctx, defs, renderMode) {\n let list = [];\n this.__traverseChildren(this.children, list, ctx, defs, renderMode);\n for(let i = list.length - 1; i > 0; i--) {\n let item = list[i];\n if(item instanceof Text) {\n let prev = list[i - 1];\n if(prev instanceof Text) {\n prev.content += item.content;\n list.splice(i, 1);\n }\n else {\n i--;\n }\n }\n }\n let prev = null;\n list.forEach(item => {\n item.__ctx = ctx;\n item.__defs = defs;\n if(prev) {\n prev.__next = item;\n item.__prev = prev;\n }\n item.__parent = this;\n prev = item;\n });\n this.__children = list;\n }\n\n __traverseChildren(children, list, ctx, defs, renderMode) {\n if(Array.isArray(children)) {\n children.forEach(item => {\n this.__traverseChildren(item, list, ctx, defs, renderMode);\n });\n }\n else if(children instanceof Dom || children instanceof Component) {\n list.push(children);\n children.__traverse(ctx, defs, renderMode);\n }\n // 图形没有children\n else if(children instanceof Geom) {\n list.push(children);\n }\n // 排除掉空的文本\n else if(!util.isNil(children)) {\n let text = new Text(children);\n text.__renderMode = renderMode;\n list.push(text);\n }\n }\n\n // 合并设置style,包括继承和默认值,修改一些自动值和固定值,测量所有文字的宽度\n __init() {\n let style = this.__style;\n // 仅支持flex/block/inline/none\n if(!style.display || ['flex', 'block', 'inline', 'none'].indexOf(style.display) === -1) {\n if(INLINE.hasOwnProperty(this.tagName)) {\n style.display = 'inline';\n }\n else {\n style.display = 'block';\n }\n }\n // 标准化处理,默认值、简写属性\n css.normalize(style, reset.dom);\n this.children.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n item.__init();\n }\n else {\n item.__style = style;\n }\n if(item instanceof Text || item.style.position !== 'absolute') {\n this.__flowChildren.push(item);\n }\n else {\n this.__absChildren.push(item);\n }\n });\n let ref = this.props.ref;\n if(ref) {\n let owner = this.host || this.root;\n if(owner) {\n owner.ref[ref] = this;\n }\n }\n }\n\n // 给定父宽度情况下,尝试行内放下后的剩余宽度,为负数即放不下\n __tryLayInline(w, total) {\n let { flowChildren, currentStyle: { width } } = this;\n if(width.unit === unit.PX) {\n return w - width.value;\n }\n else if(width.unit === unit.PERCENT) {\n return w - total * width.value * 0.01;\n }\n for(let i = 0; i < flowChildren.length; i++) {\n // 当放不下时直接返回,无需继续多余的尝试计算\n if(w < 0) {\n return w;\n }\n let item = flowChildren[i];\n if(item instanceof Xom) {\n w -= item.__tryLayInline(w, total);\n }\n else {\n w -= item.textWidth;\n }\n }\n return w;\n }\n\n // 设置y偏移值,递归包括children,此举在justify-content/margin-auto等对齐用\n __offsetX(diff, isLayout) {\n super.__offsetX(diff, isLayout);\n this.flowChildren.forEach(item => {\n if(item) {\n item.__offsetX(diff, isLayout);\n }\n });\n }\n\n __offsetY(diff, isLayout) {\n super.__offsetY(diff, isLayout);\n this.flowChildren.forEach(item => {\n if(item) {\n item.__offsetY(diff, isLayout);\n }\n });\n }\n\n __calAutoBasis(isDirectionRow, w, h, isRecursion) {\n let b = 0;\n let min = 0;\n let max = 0;\n let { flowChildren, currentStyle, computedStyle } = this;\n // 计算需考虑style的属性\n let {\n width,\n height,\n marginLeft,\n marginTop,\n marginRight,\n marginBottom,\n paddingLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n } = currentStyle;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n } = computedStyle;\n let main = isDirectionRow ? width : height;\n if(main.unit === unit.PX) {\n b = max = main.value;\n // 递归时children的长度会影响flex元素的最小宽度\n if(isRecursion) {\n min = b;\n }\n }\n // 递归children取最大值\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n let { b: b2, min: min2, max: max2 } = item.__calAutoBasis(isDirectionRow, w, h, true);\n b = Math.max(b, b2);\n min = Math.max(min, min2);\n max = Math.max(max, max2);\n }\n // 文本\n else if(isDirectionRow) {\n min = Math.max(item.charWidth, min);\n max = Math.max(item.textWidth, max);\n }\n // Geom\n else {\n item.__layout({\n x: 0,\n y: 0,\n w,\n h,\n }, true);\n min = Math.max(min, item.height);\n max = Math.max(max, item.height);\n }\n });\n // margin/padding/border也得计算在内,此时还没有,百分比相对于父flex元素的宽度\n if(isDirectionRow) {\n let mp = this.__calMp(marginLeft, w)\n + this.__calMp(marginRight, w)\n + this.__calMp(paddingLeft, w)\n + this.__calMp(paddingRight, w);\n let w2 = borderRightWidth + borderLeftWidth + mp;\n b += w2;\n max += w2;\n min += w2;\n }\n else {\n let mp = this.__calMp(marginTop, w)\n + this.__calMp(marginBottom, w)\n + this.__calMp(paddingTop, w)\n + this.__calMp(paddingBottom, w);\n let h2 = borderTopWidth + borderBottomWidth + mp;\n b += h2;\n max += h2;\n min += h2;\n }\n return { b, min, max };\n }\n\n // 换算margin/padding为px单位\n __calMp(v, w) {\n let n = 0;\n if(v.unit === unit.PX) {\n n += v.value;\n }\n else if(v.unit === unit.PERCENT) {\n v.value *= w * 0.01;\n v.unit = unit.PX;\n n += v.value;\n }\n return n;\n }\n\n // 本身block布局时计算好所有子元素的基本位置\n __layoutBlock(data) {\n let { flowChildren, currentStyle, computedStyle, lineGroups } = this;\n lineGroups.splice(0);\n let {\n textAlign,\n } = computedStyle;\n let { fixedHeight, x, y, w, h } = this.__preLayout(data);\n // 递归布局,将inline的节点组成lineGroup一行\n let lineGroup = new LineGroup(x, y);\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n if(item.currentStyle.display === 'inline') {\n // inline开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.outerWidth;\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.outerWidth;\n lineGroup.add(item);\n }\n }\n else {\n // block先处理之前可能的lineGroup\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n lineGroup = new LineGroup(data.x, y);\n }\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n x = data.x;\n y += item.outerHeight;\n }\n }\n // 文字和inline类似\n else {\n // x开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.width;\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.width;\n lineGroup.add(item);\n }\n }\n });\n // 结束后处理可能遗留的最后的lineGroup\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n }\n this.__width = w;\n this.__height = fixedHeight ? h : y - data.y;\n // text-align\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineGroups.forEach(lineGroup => {\n let diff = w - lineGroup.width;\n if(diff > 0) {\n lineGroup.horizonAlign(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n this.__marginAuto(currentStyle, data);\n }\n\n // 处理margin:xx auto居中对齐\n __marginAuto(style, data) {\n if(style.marginLeft.unit === unit.AUTO && style.marginRight.unit === unit.AUTO && style.width.unit !== unit.AUTO) {\n let ow = this.outerWidth;\n if(ow < data.w) {\n this.__offsetX((data.w - ow) * 0.5, true);\n }\n }\n }\n\n // 弹性布局时的计算位置\n __layoutFlex(data) {\n let { flowChildren, currentStyle } = this;\n let {\n flexDirection,\n justifyContent,\n alignItems,\n } = currentStyle;\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n let isDirectionRow = flexDirection === 'row';\n // 计算伸缩基数\n let growList = [];\n let shrinkList = [];\n let basisList = [];\n let minList = [];\n let growSum = 0;\n let shrinkSum = 0;\n let basisSum = 0;\n let maxSum = 0;\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n let { currentStyle, computedStyle } = item;\n let { flexGrow, flexShrink, flexBasis } = currentStyle;\n growList.push(flexGrow);\n shrinkList.push(flexShrink);\n growSum += flexGrow;\n shrinkSum += flexShrink;\n let { b, min, max } = item.__calAutoBasis(isDirectionRow, w, h);\n // 根据basis不同,计算方式不同\n if(flexBasis.unit === unit.AUTO) {\n basisList.push(max);\n basisSum += max;\n }\n else if(flexBasis.unit === unit.PX) {\n computedStyle.flexBasis = b = flexBasis.value;\n basisList.push(b);\n basisSum += b;\n }\n else if(flexBasis.unit === unit.PERCENT) {\n b = computedStyle.flexBasis = (isDirectionRow ? w : h) * flexBasis.value * 0.01;\n basisList.push(b);\n basisSum += b;\n }\n maxSum += max;\n minList.push(min);\n }\n else {\n growList.push(0);\n shrinkList.push(1);\n shrinkSum += 1;\n if(isDirectionRow) {\n basisList.push(item.textWidth);\n basisSum += item.textWidth;\n maxSum += item.textWidth;\n minList.push(item.charWidth);\n }\n else {\n item.__layout({\n x: 0,\n y: 0,\n w,\n h,\n }, true);\n basisList.push(item.height);\n basisSum += item.height;\n maxSum += item.height;\n minList.push(item.height);\n }\n }\n });\n let maxCross = 0;\n // 判断是否超出,决定使用grow还是shrink\n let isOverflow = maxSum > (isDirectionRow ? w : h);\n flowChildren.forEach((item, i) => {\n let main;\n let shrink = shrinkList[i];\n let grow = growList[i];\n // 计算主轴长度\n if(isOverflow) {\n let overflow = basisSum - (isDirectionRow ? w : h);\n main = shrink ? (basisList[i] - overflow * shrink / shrinkSum) : basisList[i];\n }\n else {\n let free = (isDirectionRow ? w : h) - basisSum;\n main = grow ? (basisList[i] + free * grow / growSum) : basisList[i];\n }\n // 主轴长度的最小值不能小于元素的最小长度,比如横向时的字符宽度\n main = Math.max(main, minList[i]);\n if(item instanceof Xom || item instanceof Component) {\n let { currentStyle, computedStyle } = item;\n let {\n display,\n flexDirection,\n width,\n height,\n } = currentStyle;\n if(isDirectionRow) {\n // row的flex的child如果是inline,变为block\n if(display === 'inline') {\n currentStyle.display = computedStyle.display = 'block';\n }\n // 横向flex的child如果是竖向flex,高度自动的话要等同于父flex的高度\n else if(display === 'flex' && flexDirection === 'column' && fixedHeight && height.unit === unit.AUTO) {\n height.value = h;\n height.unit = unit.PX;\n }\n item.__layout({\n x,\n y,\n w: main,\n h,\n });\n }\n else {\n // column的flex的child如果是inline,变为block\n if(display === 'inline') {\n currentStyle.display = computedStyle.display = 'block';\n }\n // 竖向flex的child如果是横向flex,宽度自动的话要等同于父flex的宽度\n else if(display === 'flex' && flexDirection === 'row' && width.unit === unit.AUTO) {\n width.value = w;\n width.unit = unit.PX;\n }\n item.__layout({\n x,\n y,\n w,\n h: main,\n });\n }\n // 重设因伸缩而导致的主轴长度\n if(isOverflow && shrink || !isOverflow && grow) {\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDirectionRow) {\n item.__width = main - marginLeft - marginRight - paddingLeft - paddingRight - borderLeftWidth - borderRightWidth;\n }\n else {\n item.__height = main - marginTop - marginBottom - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth;\n }\n }\n }\n else {\n item.__layout({\n x,\n y,\n w: isDirectionRow ? main : w,\n h: isDirectionRow ? h : main,\n });\n }\n if(isDirectionRow) {\n x += item.outerWidth;\n maxCross = Math.max(maxCross, item.outerHeight);\n }\n else {\n y += item.outerHeight;\n maxCross = Math.max(maxCross, item.outerWidth);\n }\n });\n // 计算主轴剩余时要用真实剩余空间而不能用伸缩剩余空间\n let diff = isDirectionRow ? w - x + data.x : h - y + data.y;\n // 主轴侧轴对齐方式\n if(!isOverflow && growSum === 0 && diff > 0) {\n let len = flowChildren.length;\n if(justifyContent === 'flex-end') {\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(diff, true) : child.__offsetY(diff, true);\n }\n }\n else if(justifyContent === 'center') {\n let center = diff * 0.5;\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(center, true) : child.__offsetY(center, true);\n }\n }\n else if(justifyContent === 'space-between') {\n let between = diff / (len - 1);\n for(let i = 1; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(between * i, true) : child.__offsetY(between * i, true);\n }\n }\n else if(justifyContent === 'space-around') {\n let around = diff / (len + 1);\n for(let i = 0; i < len; i++) {\n let child = flowChildren[i];\n isDirectionRow ? child.__offsetX(around * (i + 1), true) : child.__offsetY(around * (i + 1), true);\n }\n }\n }\n // 子元素侧轴伸展\n if(isDirectionRow) {\n // 父元素固定高度,子元素可能超过,侧轴最大长度取固定高度\n if(fixedHeight) {\n maxCross = h;\n }\n y += maxCross;\n }\n else {\n if(fixedWidth) {\n maxCross = w;\n }\n }\n // 侧轴对齐\n if(alignItems === 'stretch') {\n // 短侧轴的children伸张侧轴长度至相同,超过的不动,固定宽高的也不动\n flowChildren.forEach(item => {\n let { computedStyle, currentStyle } = item;\n let {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDirectionRow) {\n if(currentStyle.height.unit === unit.AUTO) {\n item.__height = computedStyle.height = maxCross - marginTop - marginBottom - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth;\n }\n }\n else {\n if(currentStyle.width.unit === unit.AUTO) {\n item.__width = computedStyle.width = maxCross - marginLeft - marginRight - paddingLeft - paddingRight - borderRightWidth - borderLeftWidth;\n }\n }\n });\n }\n else if(alignItems === 'center') {\n flowChildren.forEach(item => {\n let diff = maxCross - item.outerHeight;\n if(diff > 0) {\n item.__offsetY(diff * 0.5, true);\n }\n });\n }\n else if(alignItems === 'flex-end') {\n flowChildren.forEach(item => {\n let diff = maxCross - item.outerHeight;\n if(diff > 0) {\n item.__offsetY(diff, true);\n }\n });\n }\n this.__width = w;\n this.__height = fixedHeight ? h : y - data.y;\n this.__marginAuto(currentStyle, data);\n }\n\n // inline比较特殊,先简单顶部对其,后续还需根据vertical和lineHeight计算y偏移\n __layoutInline(data, fake) {\n let { flowChildren, computedStyle, lineGroups } = this;\n lineGroups.splice(0);\n let {\n textAlign,\n } = computedStyle;\n let { fixedWidth, fixedHeight, x, y, w, h } = this.__preLayout(data);\n let maxX = x;\n // 递归布局,将inline的节点组成lineGroup一行\n let lineGroup = new LineGroup(x, y);\n flowChildren.forEach(item => {\n if(item instanceof Xom || item instanceof Component) {\n // 绝对定位跳过\n if(item.currentStyle.position === 'absolute') {\n this.absChildren.push(item);\n return;\n }\n let { display } = item.currentStyle;\n if(fake) {\n item.currentStyle.display = 'inline';\n }\n // inline开头,不用考虑是否放得下直接放\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.outerWidth;\n maxX = Math.max(maxX, x);\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.outerWidth;\n maxX = Math.max(maxX, x);\n lineGroup.add(item);\n }\n if(fake) {\n item.currentStyle.display = display;\n }\n }\n // inline里的其它只有文本\n else {\n if(x === data.x) {\n lineGroup.add(item);\n item.__layout({\n x,\n y,\n w,\n h,\n });\n x += item.width;\n maxX = Math.max(maxX, x);\n }\n else {\n // 非开头先尝试是否放得下\n let fw = item.__tryLayInline(w - x, w);\n // 放得下继续\n if(fw >= 0) {\n item.__layout({\n x,\n y,\n w,\n h,\n });\n }\n // 放不下处理之前的lineGroup,并重新开头\n else {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n x = data.x;\n y += lineGroup.height;\n item.__layout({\n x: data.x,\n y,\n w,\n h,\n });\n lineGroup = new LineGroup(x, y);\n }\n x += item.width;\n maxX = Math.max(maxX, x);\n lineGroup.add(item);\n }\n }\n });\n // 结束后处理可能遗留的最后的lineGroup,children为空时可能size为空\n if(lineGroup.size) {\n lineGroups.push(lineGroup);\n lineGroup.verticalAlign();\n y += lineGroup.height;\n }\n // 元素的width不能超过父元素w\n this.__width = fixedWidth ? w : maxX - data.x;\n this.__height = fixedHeight ? h : y - data.y;\n // text-align\n if(['center', 'right'].indexOf(textAlign) > -1) {\n lineGroups.forEach(lineGroup => {\n let diff = this.__width - lineGroup.width;\n if(diff > 0) {\n lineGroup.horizonAlign(textAlign === 'center' ? diff * 0.5 : diff);\n }\n });\n }\n }\n\n // 只针对绝对定位children布局\n __layoutAbs(container, data) {\n let { x, y, width, height, currentStyle, computedStyle } = container;\n let { isDestroyed, children, absChildren } = this;\n let {\n display,\n } = currentStyle;\n let {\n borderTopWidth,\n borderLeftWidth,\n marginTop,\n marginLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = computedStyle;\n if(isDestroyed || display === 'none') {\n return;\n }\n x += marginLeft + borderLeftWidth;\n y += marginTop + borderTopWidth;\n let iw = width + paddingLeft + paddingRight;\n let ih = height + paddingTop + paddingBottom;\n // 对absolute的元素进行相对容器布局\n absChildren.forEach(item => {\n let { currentStyle, computedStyle } = item;\n let { left, top, right, bottom, width, height, display, flexDirection } = currentStyle;\n let x2, y2, w2, h2;\n let onlyRight;\n let onlyBottom;\n let fixedTop;\n let fixedRight;\n let fixedBottom;\n let fixedLeft;\n if(left !== undefined && left.unit !== unit.AUTO) {\n fixedLeft = true;\n computedStyle.left = css.calAbsolute(currentStyle, 'left', left, iw);\n }\n else {\n computedStyle.left = 'auto';\n }\n if(right !== undefined && right.unit !== unit.AUTO) {\n fixedRight = true;\n computedStyle.right = css.calAbsolute(currentStyle, 'right', right, iw);\n }\n else {\n computedStyle.right = 'auto';\n }\n if(top !== undefined && top.unit !== unit.AUTO) {\n fixedTop = true;\n computedStyle.top = css.calAbsolute(currentStyle, 'top', top, ih);\n }\n else {\n computedStyle.top = 'auto';\n }\n if(bottom !== undefined && bottom.unit !== unit.AUTO) {\n fixedBottom = true;\n computedStyle.bottom = css.calAbsolute(currentStyle, 'bottom', bottom, ih);\n }\n else {\n computedStyle.bottom = 'auto';\n }\n // width优先级高于right高于left,即最高left+right,其次left+width,再次right+width,然后仅申明单个,最次全部auto\n if(fixedLeft && fixedRight) {\n x2 = x + computedStyle.left;\n w2 = x + iw - computedStyle.right - x2;\n }\n else if(fixedLeft && width.unit !== unit.AUTO) {\n x2 = x + computedStyle.left;\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n }\n else if(fixedRight && width.unit !== unit.AUTO) {\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n x2 = x + iw - computedStyle.right - w2;\n }\n else if(fixedLeft) {\n x2 = x + computedStyle.left;\n }\n else if(fixedRight) {\n x2 = x + iw - computedStyle.right;\n onlyRight = true;\n }\n else {\n x2 = x + paddingLeft;\n if(width.unit !== unit.AUTO) {\n w2 = width.unit === unit.PX ? width.value : iw * width.value * 0.01;\n }\n }\n // top/bottom/height优先级同上\n if(fixedTop && fixedBottom) {\n y2 = y + computedStyle.top;\n h2 = y + ih - computedStyle.bottom - y2;\n }\n else if(fixedTop && height.unit !== unit.AUTO) {\n y2 = y + computedStyle.top;\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n }\n else if(fixedBottom && height.unit !== unit.AUTO) {\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n y2 = y + ih - computedStyle.bottom - h2;\n }\n else if(fixedTop) {\n y2 = y + computedStyle.top;\n }\n else if(fixedBottom) {\n y2 = y + ih - computedStyle.bottom;\n onlyBottom = true;\n }\n // 未声明y的找到之前的流布局child,紧随其下\n else {\n y2 = y;\n let prev = item.prev;\n while(prev) {\n if(prev instanceof Text || prev.computedStyle.position !== 'absolute') {\n y2 = prev.y + prev.outerHeight;\n break;\n }\n prev = prev.prev;\n }\n if(!prev) {\n y2 = y;\n }\n if(height.unit !== unit.AUTO) {\n h2 = height.unit === unit.PX ? height.value : ih * height.value * 0.01;\n }\n }\n if(w2 !== undefined) {\n currentStyle.width = {\n value: w2,\n unit: unit.PX,\n };\n }\n if(h2 !== undefined) {\n currentStyle.height = {\n value: h2,\n unit: unit.PX,\n };\n }\n // 记录初始display,同时absolute不能为inline\n if (display === 'inline') {\n display = 'block';\n }\n // 没设宽高,在获取最大宽高后,display恢复重新布局一次\n let fake;\n if(display === 'block' && w2 === undefined) {\n fake = true;\n }\n else if(display === 'flex') {\n if(flexDirection === 'row' && w2 === undefined) {\n fake = true;\n }\n else if(flexDirection === 'column' && h2 === undefined) {\n fake = true;\n }\n }\n // 绝对定位模拟类似inline布局,因为宽高可能未定义,由普通流children布局后决定\n if(fake) {\n currentStyle.display = 'inline';\n }\n // onlyRight或onlyBottom时做的布局其实是以那个点位为left/top布局,外围尺寸限制要特殊计算\n if(onlyRight && onlyBottom) {\n w2 = x2 - x;\n h2 - y2 - y;\n }\n else if(onlyRight) {\n w2 = x2 - x;\n h2 = data.h - y2;\n }\n else if(onlyBottom) {\n item.__layout({\n x: x2,\n y: y2,\n w: data.w - x2,\n h: y2 - y,\n });\n w2 = data.w - x2;\n h2 - y2 - y;\n }\n else {\n w2 = data.w - x2;\n h2 = data.h - y2;\n }\n item.__layout({\n x: x2,\n y: y2,\n w: w2,\n h: h2,\n }, fake);\n // 取孩子宽度最大值,display恢复重新布局\n if(fake) {\n let max = 0;\n item.flowChildren.forEach(item => {\n max = Math.max(max, item.outerWidth);\n });\n currentStyle.width = {\n value: max,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: item.height,\n unit: unit.PX,\n };\n item.__layout({\n x: x2,\n y: y2,\n w: w2,\n h: h2,\n });\n currentStyle.display = display;\n }\n // right或bottom布局完成后还要偏移回来\n if(onlyRight && onlyBottom) {\n item.__offsetX(-item.outerWidth, true);\n item.__offsetY(-item.outerHeight, true);\n }\n else if(onlyRight) {\n item.__offsetX(-item.outerWidth, true);\n }\n else if(onlyBottom) {\n item.__offsetY(-item.outerHeight, true);\n }\n });\n // 递归进行,遇到absolute/relative的设置新容器\n children.forEach(item => {\n if(item instanceof Dom) {\n item.__layoutAbs(['absolute', 'relative'].indexOf(item.computedStyle.position) > -1 ? item : container, data);\n }\n else if(item instanceof Component) {\n let sr = item.shadowRoot;\n if(sr instanceof Dom) {\n sr.__layoutAbs(sr, data);\n }\n }\n });\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { isDestroyed, computedStyle: { display, visibility }, flowChildren, children } = this;\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n // 先渲染过滤mask\n children.forEach(item => {\n if(item.isMask) {\n item.__renderAsMask(renderMode);\n }\n });\n // 先绘制static\n flowChildren.forEach(item => {\n if(item.isMask) {}\n else if(item instanceof Text || item.computedStyle.position === 'static') {\n item.__renderByMask(renderMode);\n }\n });\n // 再绘制relative和absolute\n children.forEach(item => {\n if(item.isMask) {}\n else if((item instanceof Xom || item instanceof Component) && ['relative', 'absolute'].indexOf(item.computedStyle.position) > -1) {\n item.__renderByMask(renderMode);\n }\n });\n if(renderMode === mode.SVG) {\n // 过滤掉mask\n let children = this.children.slice(0);\n children = children.filter(item => {\n return !item.isMask;\n });\n // 由于svg严格按照先后顺序渲染,没有z-index概念,需要排序将relative/absolute放后面\n sort(children, function(a, b) {\n if(b.computedStyle.position === 'static' && ['relative', 'absolute'].indexOf(a.computedStyle.position) > -1) {\n return true;\n }\n });\n this.__virtualDom = {\n ...super.virtualDom,\n type: 'dom',\n children: children.map(item => item.virtualDom),\n };\n }\n }\n\n __destroy() {\n super.__destroy();\n this.children.forEach(child => {\n child.__destroy();\n });\n this.children.splice(0);\n this.flowChildren.splice(0);\n this.absChildren.splice(0);\n this.lineGroups.splice(0);\n }\n\n get tagName() {\n return this.__tagName;\n }\n get children() {\n return this.__children;\n }\n get flowChildren() {\n return this.__flowChildren;\n }\n get absChildren() {\n return this.__absChildren;\n }\n get lineGroups() {\n return this.__lineGroups;\n }\n get baseLine() {\n let len = this.lineGroups.length;\n if(len) {\n let last = this.lineGroups[len - 1];\n return last.y - this.y + last.baseLine;\n }\n return this.y;\n }\n\n static isValid(s) {\n return TAG_NAME.hasOwnProperty(s);\n }\n}\n\nexport default Dom;\n","import Dom from './Dom';\nimport mode from '../util/mode';\nimport inject from '../util/inject';\nimport util from '../util/util';\nimport unit from '../style/unit';\nimport transform from '../style/transform';\nimport image from '../style/image';\nimport level from '../animate/level';\n\nconst CACHE = {};\nconst INIT = 0;\nconst LOADING = 1;\nconst LOADED = 2;\n\nclass Img extends Dom {\n constructor(tagName, props) {\n super(tagName, props, []);\n // 空url用错误图代替\n if(!this.src || !this.src.trim()) {\n this.__error = true;\n let { style: { width, height } } = this;\n width = width || { unit: unit.AUTO };\n height = height || { unit: unit.AUTO };\n if(width.unit === unit.AUTO) {\n width.value = 32;\n width.unit = unit.PX;\n }\n if(height.unit === unit.AUTO) {\n height.value = 32;\n height.unit = unit.PX;\n }\n }\n }\n\n __layout(data) {\n super.__layout(data);\n let { isDestroyed, src, currentStyle } = this;\n let { display, width, height } = currentStyle;\n if(isDestroyed || display === 'none') {\n return;\n }\n let { width: w, height: h } = this;\n let cache = CACHE[this.src] = CACHE[this.src] || {\n state: INIT,\n task: [],\n };\n let cb = cache => {\n if(cache.success) {\n this.__source = cache.source;\n }\n else {\n this.__error = true;\n }\n this.__imgWidth = cache.width;\n this.__imgHeight = cache.height;\n let lv = level.REFLOW;\n // 宽高都为auto,使用加载测量的数据\n if(width.unit === unit.AUTO && height.unit === unit.AUTO) {\n currentStyle.width = {\n value: cache.width,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: cache.height,\n unit: unit.PX,\n };\n }\n // 否则有一方定义则按比例调整另一方适应\n else if(width.unit === unit.AUTO) {\n currentStyle.width = {\n value: h * cache.width / cache.height,\n unit: unit.PX,\n };\n }\n else if(height.unit === unit.AUTO) {\n currentStyle.height = {\n value: w * cache.height / cache.width,\n unit: unit.PX,\n };\n }\n else {\n lv = level.REPAINT;\n }\n let root = this.root;\n if(root) {\n root.setRefreshLevel(lv);\n root.addRefreshTask();\n }\n };\n if(cache.state === LOADED) {\n cb(cache);\n }\n else if(cache.state === LOADING) {\n cache.task.push(cb);\n }\n else if(cache.state === INIT) {\n cache.state = LOADING;\n cache.task.push(cb);\n inject.measureImg(src, res => {\n cache.success = res.success;\n if(res.success) {\n cache.width = res.width;\n cache.height = res.height;\n cache.source = res.source;\n }\n else {\n cache.width = 32;\n cache.height = 32;\n }\n cache.state = LOADED;\n cache.task.forEach(cb => cb(cache));\n cache.task.splice(0);\n });\n }\n }\n\n __addGeom(tagName, props) {\n props = util.hash2arr(props);\n this.virtualDom.children.push({\n type: 'item',\n tagName,\n props,\n });\n }\n\n render(renderMode) {\n super.render(renderMode);\n let { ctx, sx: x, sy: y, width, height, src, isDestroyed, computedStyle: {\n display,\n borderTopWidth,\n borderLeftWidth,\n marginTop,\n marginLeft,\n paddingTop,\n paddingLeft,\n } } = this;\n if(isDestroyed || display === 'none') {\n return;\n }\n let originX = x + marginLeft + borderLeftWidth + paddingLeft;\n let originY = y + marginTop + borderTopWidth + paddingTop;\n if(this.__error) {\n let strokeWidth = Math.min(width, height) * 0.02;\n let stroke = '#CCC';\n let fill = '#DDD';\n let cx = originX + width * 0.7;\n let cy = originY + height * 0.3;\n let r = strokeWidth * 5;\n let pts = [\n [originX + width * 0.15, originY + height * 0.7],\n [originX + width * 0.3, originY + height * 0.4],\n [originX + width * 0.5, originY + height * 0.6],\n [originX + width * 0.6, originY + height * 0.5],\n [originX + width * 0.9, originY + height * 0.8],\n [originX + width * 0.15, originY + height * 0.8]\n ];\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.beginPath();\n ctx.moveTo(originX, originY);\n ctx.lineTo(originX + width, originY);\n ctx.lineTo(originX + width, originY + height);\n ctx.lineTo(originX, originY + height);\n ctx.lineTo(originX, originY);\n ctx.stroke();\n ctx.closePath();\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, 2 * Math.PI);\n ctx.fill();\n ctx.closePath();\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n ctx.lineTo(point[0], point[1]);\n }\n ctx.lineTo(pts[0][0], pts[0][1]);\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n this.__addGeom('rect', [\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height],\n ['stroke', stroke],\n ['stroke-width', strokeWidth],\n ['fill', 'transparent']\n ]);\n this.__addGeom('circle', [\n ['cx', cx],\n ['cy', cy],\n ['r', r],\n ['fill', fill],\n ]);\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n s += `${point[0]},${point[1]} `;\n }\n this.__addGeom('polygon', [\n ['points', s],\n ['fill', fill]\n ]);\n }\n }\n else {\n if(renderMode === mode.CANVAS) {\n if(this.__source) {\n ctx.drawImage(this.__source, originX, originY, width, height);\n }\n }\n else if(renderMode === mode.SVG) {\n let matrix;\n if(this.__imgWidth !== undefined\n && (width !== this.__imgWidth || height !== this.__imgHeight)) {\n matrix = image.matrixResize(this.__imgWidth, this.__imgHeight, width, height, originX, originY, width, height);\n // 缩放图片的同时要考虑原先的矩阵,以及影响事件\n if(this.matrix) {\n this.__matrix = matrix = transform.mergeMatrix(this.__matrix, matrix);\n this.__matrixEvent = transform.mergeMatrix(this.__matrixEvent, matrix);\n }\n else {\n this.__matrixEvent = matrix;\n }\n matrix = 'matrix(' + matrix.join(',') + ')';\n }\n let props = [\n ['xlink:href', src],\n ['x', originX],\n ['y', originY],\n ['width', this.__imgWidth || 0],\n ['height', this.__imgHeight || 0]\n ];\n if(matrix) {\n props.push(['transform', matrix]);\n }\n this.virtualDom.children.push({\n type: 'img',\n tagName: 'image',\n props,\n });\n }\n }\n }\n\n get src() {\n return this.props.src;\n }\n get baseLine() {\n return this.height;\n }\n}\n\nexport default Img;\n","import util from './util';\n\nfunction diff(elem, ovd, nvd) {\n let cns = elem.childNodes;\n diffDefs(cns[0], ovd.defs, nvd.defs);\n diffBb(cns[1], ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n diffD2D(elem, ovd, nvd, true);\n}\n\nfunction diffDefs(elem, od, nd) {\n let ol = od.length;\n let nl = nd.length;\n let i = 0;\n let cns = elem.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffDef(cns[i], od[i], nd[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinDef(nd[i]));\n }\n }\n}\n\nfunction diffDef(elem, od, nd) {\n if(od.tagName !== nd.tagName) {\n elem.insertAdjacentHTML('afterend', util.joinDef(nd));\n elem.parentNode.removeChild(elem);\n }\n else {\n if(od.uuid !== nd.uuid) {\n elem.setAttribute('id', nd.uuid);\n }\n let op = {};\n for(let j = 0, len = od.props.length; j < len; j++) {\n let prop = od.props[j];\n let [k, v] = prop;\n op[k] = v;\n }\n for(let j = 0, len = nd.props.length; j < len; j++) {\n let prop = nd.props[j];\n let [k, v] = prop;\n // 已有不等更新,没有添加\n if(op.hasOwnProperty(k)) {\n if(op[k] !== v) {\n elem.setAttribute(k, v);\n }\n delete op[k];\n }\n else {\n elem.setAttribute(k, v);\n }\n }\n // 多余的删除\n for(let k in op) {\n if(op.hasOwnProperty(k)) {\n elem.removeAttribute(k);\n }\n }\n let cns = elem.childNodes;\n let ol = od.children.length;\n let nl = nd.children.length;\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, od.children[i], nd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinStop(nd.stop[i]));\n }\n }\n }\n}\n\nfunction diffChild(elem, ovd, nvd) {\n if(ovd.type === 'dom') {\n if(nvd.type === 'dom') {\n diffD2D(elem, ovd, nvd);\n }\n else if(nvd.type === 'text' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'geom') {\n diffD2G(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'text') {\n if(nvd.type === 'dom' || nvd.type === 'geom' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'text') {\n diffT2T(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'geom') {\n if(nvd.type === 'dom') {\n diffG2D(elem, ovd, nvd);\n }\n else if(nvd.type === 'text' || nvd.type === 'img') {\n replaceWith(elem, nvd);\n }\n else if(nvd.type === 'geom') {\n diffG2G(elem, ovd, nvd);\n }\n }\n else if(ovd.type === 'img') {\n if(nvd.type === 'img') {\n diffItemSelf(elem, ovd, nvd);\n }\n else {\n replaceWith(elem, nvd);\n }\n }\n}\n\nfunction diffD2D(elem, ovd, nvd, root) {\n if(!equalArr(ovd.transform, nvd.transform)) {\n let transform = util.joinTransform(nvd.transform);\n elem.setAttribute('transform', transform);\n }\n if(ovd.opacity !== nvd.opacity) {\n elem.setAttribute('opacity', ovd.opacity);\n }\n if(ovd.mask !== nvd.mask) {\n if(nvd.mask) {\n elem.setAttribute('mask', ovd.mask);\n }\n else {\n elem.removeAttribute('mask');\n }\n }\n if(!root) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n }\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n let lastChild = elem.lastChild;\n let cns = lastChild.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffChild(cns[i], ovd.children[i], nvd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(lastChild, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(lastChild, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffD2G(elem, ovd, nvd) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n replaceWith(elem.lastChild, nvd.children);\n}\n\nfunction diffT2T(elem, ovd, nvd) {\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, ovd.children[i], nvd.children[i], true);\n }\n let cns = elem.childNodes;\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffG2D(elem, ovd, nvd) {\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n replaceWith(elem.lastChild, nvd.children);\n}\n\nfunction diffG2G(elem, ovd, nvd) {\n if(!equalArr(ovd.transform, nvd.transform)) {\n let transform = util.joinTransform(nvd.transform);\n if(elem.getAttribute('transform') !== transform) {\n elem.setAttribute('transform', transform);\n }\n }\n diffBb(elem.firstChild, ovd.bb, nvd.bb, ovd.bbMask, nvd.bbMask);\n let ol = ovd.children.length;\n let nl = nvd.children.length;\n let i = 0;\n let lastChild = elem.lastChild;\n let cns = lastChild.childNodes;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(lastChild, i, ovd.children[i], nvd.children[i]);\n }\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(lastChild, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(lastChild, cns, i, util.joinVd(nvd.children[i]));\n }\n }\n}\n\nfunction diffBb(elem, obb, nbb, oMask, nMask) {\n let ol = obb.length;\n let nl = nbb.length;\n if(oMask !== nMask) {\n if(!nMask) {\n elem.removeAttribute('mask');\n }\n else {\n elem.setAttribute('mask', nMask);\n }\n }\n let i = 0;\n for(; i < Math.min(ol, nl); i++) {\n diffItem(elem, i, obb[i], nbb[i]);\n }\n let cns = elem.childNodes;\n if(i < ol) {\n for(; i < ol; i++) {\n removeAt(elem, cns, i);\n }\n }\n else if(i < nl) {\n for(; i < nl; i++) {\n insertAt(elem, cns, i, util.joinVd(nbb[i]));\n }\n }\n}\n\nfunction diffItem(elem, i, ovd, nvd, isText) {\n let cns = elem.childNodes;\n if(ovd.tagName !== nvd.tagName) {\n replaceWith(cns[i], nvd);\n }\n else {\n diffItemSelf(cns[i], ovd, nvd);\n if(isText && ovd.content !== nvd.content) {\n cns[i].textContent = nvd.content;\n }\n }\n}\n\nfunction diffItemSelf(elem, ovd, nvd) {\n let op = {};\n for(let j = 0, len = ovd.props.length; j < len; j++) {\n let prop = ovd.props[j];\n let [k, v] = prop;\n op[k] = v;\n }\n for(let j = 0, len = nvd.props.length; j < len; j++) {\n let prop = nvd.props[j];\n let [k, v] = prop;\n // 已有不等更新,没有添加\n if(op.hasOwnProperty(k)) {\n if(op[k] !== v) {\n elem.setAttribute(k, v);\n }\n delete op[k];\n }\n else {\n elem.setAttribute(k, v);\n }\n }\n // 多余的删除\n for(let k in op) {\n if(op.hasOwnProperty(k)) {\n elem.removeAttribute(k);\n }\n }\n}\n\nfunction replaceWith(elem, vd) {\n let res;\n if(Array.isArray(vd)) {\n res = '';\n vd.forEach(item => {\n res += util.joinVd(item);\n });\n }\n else {\n res = util.joinVd(vd);\n }\n elem.insertAdjacentHTML('afterend', res);\n elem.parentNode.removeChild(elem);\n}\n\nfunction insertAt(elem, cns, index, html) {\n if(index >= cns.length) {\n elem.insertAdjacentHTML('beforeend', html);\n }\n else {\n cns[index].insertAdjacentHTML('beforebegin', html);\n }\n}\n\nfunction removeAt(elem, cns, index) {\n if(cns[index]) {\n elem.removeChild(cns[index]);\n }\n}\n\nfunction equalArr(a, b) {\n if(a.length !== b.length) {\n return false;\n }\n for(let i = 0, len = a.length; i < len; i++) {\n if(a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport default diff;\n","class Defs {\n constructor(uuid) {\n this.id = uuid;\n this.count = 0;\n this.list = [];\n }\n add(data) {\n data.uuid = `karas-defs-${this.id}-${this.count++}`;\n this.list.push(data);\n return data.uuid;\n }\n clear() {\n this.list = [];\n this.count = 0;\n }\n\n get value() {\n return this.list;\n }\n\n static getInstance(uuid) {\n return new Defs(uuid);\n }\n}\n\nexport default Defs;\n","import Dom from '../node/Dom';\nimport util from '../util/util';\nimport mode from '../util/mode';\nimport diff from '../util/diff';\nimport Defs from './Defs';\nimport unit from '../style/unit';\nimport inject from '../util/inject';\nimport Event from '../util/Event';\nimport frame from '../animate/frame';\nimport level from '../animate/level';\n\nfunction getDom(dom) {\n if(util.isString(dom) && dom) {\n let o = document.querySelector(dom);\n if(!o) {\n throw new Error('can not find dom of selector: ' + dom);\n }\n return o;\n }\n if(!dom) {\n throw new Error('can not find dom: ' + dom);\n }\n return dom;\n}\n\nfunction renderProp(k, v) {\n let s = Array.isArray(v) ? util.joinSourceArray(v) : util.stringify(v);\n if(k === 'className') {\n k = 'class';\n }\n return ' ' + k + '=\"' + util.encodeHtml(s, true) + '\"';\n}\n\nfunction initEvent(node) {\n ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend', 'touchcancel'].forEach(type => {\n node.addEventListener(type, e => {\n node.__root.__cb(e, ['touchend', 'touchcancel', 'touchmove'].indexOf(type) > -1);\n });\n });\n}\n\nlet uuid = 0;\n\nclass Root extends Dom {\n constructor(tagName, props, children) {\n super(tagName, props, children);\n this.__node = null; // 真实DOM引用\n this.__mw = 0; // 记录最大宽高,防止尺寸变化清除不完全\n this.__mh = 0;\n this.__task = [];\n this.__ref = {};\n Event.mix(this);\n }\n\n __initProps() {\n let w = this.props.width;\n if(!util.isNil(w)) {\n let value = parseInt(w) || 0;\n if(value > 0) {\n this.__width = value;\n }\n }\n let h = this.props.height;\n if(!util.isNil(h)) {\n let value = parseInt(h) || 0;\n if(value > 0) {\n this.__height = value;\n }\n }\n }\n\n __genHtml() {\n let res = `<${this.tagName}`;\n // 拼接处理属性\n for(let i = 0, len = this.__props.length; i < len; i++) {\n let item = this.__props[i];\n res += renderProp(item[0], item[1]);\n }\n res += `>${this.tagName}>`;\n return res;\n }\n\n // 类似touchend/touchcancel/touchmove这种无需判断是否发生于元素上,直接强制响应\n __cb(e, force) {\n if(e.type === 'touchmove' && !this.__touchstartTarget) {\n return;\n }\n if(e.touches && e.touches.length > 1) {\n return;\n }\n let { node } = this;\n let { x, y, top, right } = node.getBoundingClientRect();\n x = x || top || 0;\n y = y || right || 0;\n let { clientX, clientY } = e.touches ? (e.touches[0] || {}) : e;\n x = clientX - x;\n y = clientY - y;\n this.__emitEvent({\n event: e,\n stopPropagation() {\n this.__stopPropagation = true;\n e.stopPropagation();\n },\n stopImmediatePropagation() {\n this.__stopPropagation = true;\n this.__stopImmediatePropagation = true;\n e.stopImmediatePropagation();\n },\n preventDefault() {\n e.preventDefault();\n },\n x,\n y,\n __hasEmitted: false,\n }, force);\n }\n\n appendTo(dom) {\n dom = getDom(dom);\n this.__initProps();\n this.__refreshLevel = level.REFLOW;\n // 已有root节点\n if(dom.nodeName.toUpperCase() === this.tagName.toUpperCase()) {\n this.__node = dom;\n if(this.width) {\n dom.setAttribute('width', this.width);\n }\n if(this.height) {\n dom.setAttribute('height', this.height);\n }\n }\n // 没有canvas/svg节点则生成一个新的\n else {\n this.__node = dom.querySelector(this.tagName);\n if(!this.__node) {\n dom.innerHTML = this.__genHtml();\n this.__node = dom.querySelector(this.tagName);\n }\n }\n this.__uuid = util.isNil(this.__node.__uuid) ? uuid++ : this.__node.__uuid;\n this.__defs = this.node.__defs || Defs.getInstance(this.__uuid);\n // 没有设置width/height则采用css计算形式\n if(!this.width || !this.height) {\n let css = window.getComputedStyle(dom, null);\n if(!this.width) {\n this.__width = parseInt(css.getPropertyValue('width'));\n dom.setAttribute('width', this.width);\n }\n if(!this.height) {\n this.__height = parseInt(css.getPropertyValue('height'));\n dom.setAttribute('height', this.height);\n }\n }\n // 只有canvas有ctx,svg用真实dom\n if(this.tagName === 'canvas') {\n this.__ctx = this.__node.getContext('2d');\n this.__renderMode = mode.CANVAS;\n }\n else if(this.tagName === 'svg') {\n this.__renderMode = mode.SVG;\n }\n // canvas/svg作为根节点一定是block或flex,不会是inline\n let { style } = this;\n if(['flex', 'block'].indexOf(style.display) === -1) {\n style.display = 'block';\n }\n // 同理position不能为absolute\n if(style.position === 'absolute') {\n style.position = 'static';\n }\n let { renderMode, ctx } = this;\n this.__traverse(ctx, this.__defs, renderMode);\n this.__traverseCss(this, this.props.css);\n this.__init();\n this.refresh();\n if(this.node.__root) {\n this.node.__root.__destroy();\n delete this.node.__root.__node;\n delete this.node.__root.__vd;\n }\n else {\n initEvent(this.node);\n this.node.__uuid = this.__uuid;\n }\n this.node.__root = this;\n }\n\n refresh(cb) {\n let { renderMode, currentStyle } = this;\n // 根元素特殊处理\n currentStyle.marginTop = currentStyle.marginRight = currentStyle.marginBottom = currentStyle.marginLeft = {\n value: 0,\n unit: unit.PX,\n };\n currentStyle.width = {\n value: this.width,\n unit: unit.PX,\n };\n currentStyle.height = {\n value: this.height,\n unit: unit.PX,\n };\n delete currentStyle.transform;\n currentStyle.opacity = 1;\n this.__defs.clear();\n let lv = this.__refreshLevel;\n this.__refreshLevel = level.REPAINT;\n // 预先计算字体相关的继承\n if(lv === level.REFLOW) {\n this.__computed();\n }\n inject.measureText(() => {\n // 没发生REFLOW只需要computed即可\n if(lv === level.REFLOW) {\n // 布局分为两步,普通流和绝对流,互相递归\n this.__layout({\n x: 0,\n y: 0,\n w: this.width,\n h: this.height,\n });\n this.__layoutAbs(this, {\n x: 0,\n y: 0,\n w: this.width,\n h: this.height,\n });\n }\n else {\n this.__repaint();\n }\n if(renderMode === mode.CANVAS) {\n this.__clear();\n }\n this.emit(Event.KARAS_BEFORE_REFRESH, lv);\n this.render(renderMode);\n if(renderMode === mode.SVG) {\n let nvd = this.virtualDom;\n let nd = this.__defs;\n nvd.defs = nd.value;\n nvd = util.clone(nvd);\n if(this.node.__root) {\n diff(this.node, this.node.__vd, nvd);\n }\n else {\n this.node.innerHTML = util.joinVirtualDom(nvd);\n }\n this.node.__vd = nvd;\n this.node.__defs = nd;\n }\n let clone = this.__task.splice(0);\n clone.forEach(cb => {\n if(util.isFunction(cb)) {\n cb();\n }\n });\n if(util.isFunction(cb)) {\n cb();\n }\n this.emit(Event.KARAS_REFRESH);\n });\n }\n\n addRefreshTask(cb) {\n let { task } = this;\n // 第一个添加延迟侦听\n if(!task.length) {\n frame.nextFrame(() => {\n if(task.length) {\n this.refresh();\n }\n });\n }\n task.push(cb);\n }\n\n delRefreshTask(cb) {\n if(!cb) {\n return;\n }\n let { task } = this;\n for(let i = 0, len = task.length; i < len; i++) {\n if(task[i] === cb) {\n task.splice(i, 1);\n break;\n }\n }\n }\n\n setRefreshLevel(lv) {\n if(lv > this.__refreshLevel) {\n this.__refreshLevel = lv;\n }\n }\n\n __getImageData() {\n return this.ctx.getImageData(0, 0, this.width, this.height);\n }\n\n __putImageData(data) {\n this.ctx.putImageData(data, 0, 0);\n }\n\n __clear() {\n // 可能会调整宽高,所以每次清除用最大值\n this.__mw = Math.max(this.__mw, this.width);\n this.__mh = Math.max(this.__mh, this.height);\n // 清除前得恢复默认matrix,防止每次布局改变了属性\n this.__ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.__ctx.clearRect(0, 0, this.__mw, this.__mh);\n }\n\n get node() {\n return this.__node;\n }\n get renderMode() {\n return this.__renderMode;\n }\n get task() {\n return this.__task;\n }\n get ref() {\n return this.__ref;\n }\n}\n\nexport default Root;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Line extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // x1,y1和x2,y2表明线段的首尾坐标,control表明控制点坐标\n this.__x1 = this.__y1 = 0;\n this.__x2 = this.__y2 = 1;\n this.__controlA = [];\n this.__controlB = [];\n if(this.props.x1 !== undefined) {\n this.__x1 = parseFloat(this.props.x1) || 0;\n }\n if(this.props.y1 !== undefined) {\n this.__y1 = parseFloat(this.props.y1) || 0;\n }\n if(this.props.x2 !== undefined) {\n this.__x2 = parseFloat(this.props.x2) || 0;\n }\n if(this.props.y2 !== undefined) {\n this.__y2 = parseFloat(this.props.y2) || 0;\n }\n if(Array.isArray(this.props.controlA)) {\n this.__controlA = this.props.controlA;\n }\n if(Array.isArray(this.props.controlB)) {\n this.__controlB = this.props.controlB;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n display,\n visibility,\n originX,\n originY,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, x1, y1, x2, y2, controlA, controlB } = this;\n x1 = originX + x1 * width;\n y1 = originY + y1 * height;\n x2 = originX + x2 * width;\n y2 = originY + y2 * height;\n let curve = 0;\n // 控制点,曲线\n let cx1, cy1, cx2, cy2;\n if(controlA.length === 2) {\n curve++;\n cx1 = originX + controlA[0] * width;\n cy1 = originY + controlA[1] * height;\n }\n if(controlB.length === 2) {\n curve += 2;\n cx2 = originX + controlB[0] * width;\n cy2 = originY + controlB[1] * height;\n }\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n if(curve === 3) {\n ctx.bezierCurveTo(cx1, cy1, cx2, cy2, x2, y2);\n }\n else if(curve === 2) {\n ctx.quadraticCurveTo(cx2, cy2, x2, y2);\n }\n else if(curve === 1) {\n ctx.quadraticCurveTo(cx1, cy1, x2, y2);\n }\n else {\n ctx.lineTo(x2, y2);\n }\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let d;\n if(curve === 3) {\n d = `M${x1},${y1} C${cx1},${cy1} ${cx2},${cy2} ${x2},${y2}`;\n }\n else if(curve === 2) {\n d = `M${x1},${y1} Q${cx2},${cy2} ${x2},${y2}`;\n }\n else if(curve === 1) {\n d = `M${x1},${y1} Q${cx1},${cy1} ${x2},${y2}`;\n }\n else {\n d = `M${x1},${y1} L${x2},${y2}`;\n }\n let props = [\n ['d', d],\n ['fill', 'none'],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n }\n\n get x1() {\n return this.__x1;\n }\n get y1() {\n return this.__y1;\n }\n get x2() {\n return this.__x2;\n }\n get y2() {\n return this.__y2;\n }\n get controlA() {\n return this.__controlA;\n }\n get controlB() {\n return this.__controlB;\n }\n}\n\nexport default Line;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Polyline extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 折线所有点的列表\n this.__points = [];\n if(Array.isArray(this.props.points)) {\n this.__points = this.props.points;\n }\n // 原点位置,4个角,默认左下\n if(['TOP_RIGHT', 'BOTTOM_LEFT', 'BOTTOM_RIGHT'].indexOf(this.props.origin) > -1) {\n this.__origin = this.props.origin;\n }\n else {\n this.__origin = 'TOP_LEFT';\n }\n // 控制点\n this.__controls = [];\n if(Array.isArray(this.props.controls)) {\n this.__controls = this.props.controls;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, points, controls, origin } = this;\n if(points.length < 2) {\n return;\n }\n for(let i = 0, len = points.length; i < len; i++) {\n if(!Array.isArray(points[i]) || points[i].length < 2) {\n return;\n }\n }\n let pts = [];\n let cls = [];\n let hasControll;\n if(origin === 'TOP_LEFT') {\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'TOP_RIGHT') {\n points.forEach(item => {\n pts.push([\n originX + width - item[0] * width,\n originY + item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + width - item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'BOTTOM_LEFT') {\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + height - item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + height - item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n else if(origin === 'BOTTOM_RIGHT') {\n points.forEach(item => {\n pts.push([\n originX + width - item[0] * width,\n originY + height - item[1] * height\n ]);\n });\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + width - item[i] * width);\n }\n else {\n arr.push(originY + height - item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n }\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n ctx.lineTo(point[0], point[1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], point[0], point[1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], point[0], point[1]);\n }\n }\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['fill', 'none'],\n ['stroke', stroke]\n ];\n let tagName;\n if(hasControll) {\n let s = `M${pts[0][0]},${pts[0][1]}`;\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n s += `L${point[0]},${point[1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${point[0]},${point[1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${point[0]},${point[1]}`;\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n s += `L${pts[0][0]},${pts[0][1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${pts[0][0]},${pts[0][1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${pts[0][0]},${pts[0][1]}`;\n }\n props.push(['d', s]);\n tagName = 'path';\n }\n else {\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n if(i) {\n s += ' ';\n }\n s += `${point[0]},${point[1]}`;\n }\n props.push(['points', s]);\n tagName = 'polyline';\n }\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom(tagName, props);\n }\n }\n\n get points() {\n return this.__points;\n }\n get controls() {\n return this.__controls;\n }\n get origin() {\n return this.__origin;\n }\n}\n\nexport default Polyline;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Polygon extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 所有点的列表\n this.__points = [];\n if(Array.isArray(this.props.points)) {\n this.__points = this.props.points;\n }\n // 控制点\n this.__controls = [];\n if(Array.isArray(this.props.controls)) {\n this.__controls = this.props.controls;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, points, controls } = this;\n if(points.length < 3) {\n return;\n }\n for(let i = 0, len = points.length; i < len; i++) {\n if(!Array.isArray(points[i]) || points[i].length < 2) {\n return;\n }\n }\n let pts = [];\n points.forEach(item => {\n pts.push([\n originX + item[0] * width,\n originY + item[1] * height\n ]);\n });\n let cls = [];\n let hasControll;\n controls.forEach(item => {\n if(Array.isArray(item) && (item.length === 2 || item.length === 4)) {\n let arr = [];\n item.forEach((item2, i) => {\n if(i === 0 || i === 2) {\n arr.push(originX + item[i] * width);\n }\n else {\n arr.push(originY + item[i] * height);\n }\n });\n cls.push(arr);\n hasControll = true;\n }\n else {\n cls.push(null);\n }\n });\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.moveTo(pts[0][0], pts[0][1]);\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n ctx.lineTo(point[0], point[1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], point[0], point[1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], point[0], point[1]);\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n ctx.lineTo(pts[0][0], pts[0][1]);\n }\n else if(cl.length === 4) {\n ctx.bezierCurveTo(cl[0], cl[1], cl[2], cl[3], pts[0][0], pts[0][1]);\n }\n else {\n ctx.quadraticCurveTo(cl[0], cl[1], pts[0][0], pts[0][1]);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [];\n let tagName;\n if(hasControll) {\n let s = `M${pts[0][0]},${pts[0][1]}`;\n for(let i = 1, len = pts.length; i < len; i++) {\n let point = pts[i];\n let cl = cls[i - 1];\n if(!cl) {\n s += `L${point[0]},${point[1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${point[0]},${point[1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${point[0]},${point[1]}`;\n }\n }\n let cl = cls[pts.length - 1];\n if(!cl) {\n s += `L${pts[0][0]},${pts[0][1]}`;\n }\n else if(cl.length === 4) {\n s += `C${cl[0]},${cl[1]} ${cl[2]},${cl[3]} ${pts[0][0]},${pts[0][1]}`;\n }\n else {\n s += `Q${cl[0]},${cl[1]} ${pts[0][0]},${pts[0][1]}`;\n }\n props.push(['d', s]);\n tagName = 'path';\n }\n else {\n let s = '';\n for(let i = 0, len = pts.length; i < len; i++) {\n let point = pts[i];\n s += `${point[0]},${point[1]} `;\n }\n props.push(['points', s]);\n tagName = 'polygon';\n }\n props = props.concat([\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ]);\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom(tagName, props);\n }\n }\n\n get points() {\n return this.__points;\n }\n get controls() {\n return this.__controls;\n }\n}\n\nexport default Polygon;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nconst OFFSET = Math.PI * 0.5;\n\nfunction getCoordsByDegree(x, y, r, d) {\n d = d % 360;\n if(d >= 0 && d < 90) {\n return [\n x + Math.sin(d * Math.PI / 180) * r,\n y - Math.cos(d * Math.PI / 180) * r\n ];\n }\n else if(d >= 90 && d < 180) {\n return [\n x + Math.cos((d - 90) * Math.PI / 180) * r,\n y + Math.sin((d - 90) * Math.PI / 180) * r,\n ];\n }\n else if(d >= 180 && d < 270) {\n return [\n x - Math.cos((270 - d) * Math.PI / 180) * r,\n y + Math.sin((270 - d) * Math.PI / 180) * r,\n ];\n }\n else {\n return [\n x - Math.sin((360 - d) * Math.PI / 180) * r,\n y - Math.cos((360 - d) * Math.PI / 180) * r,\n ];\n }\n}\n\nclass Sector extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 角度\n this.__begin = 0;\n this.__end = 0;\n if(this.props.begin) {\n this.__begin = parseFloat(this.props.begin);\n if(isNaN(this.begin)) {\n this.__begin = 0;\n }\n }\n if(this.props.end) {\n this.__end = parseFloat(this.props.end);\n if(isNaN(this.end)) {\n this.__end = 0;\n }\n }\n // 半径0~1,默认1\n this.__r = 1;\n if(this.props.r) {\n this.__r = parseFloat(this.props.r);\n if(isNaN(this.r)) {\n this.__r = 1;\n }\n }\n // 扇形两侧是否有边\n this.__edge = false;\n if(this.props.edge !== undefined) {\n this.__edge = !!this.props.edge;\n }\n // 扇形大于180°时,是否闭合两端\n this.__closure = false;\n if(this.props.closure !== undefined) {\n this.__closure = !!this.props.closure;\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, begin, end, r, edge, closure } = this;\n if(begin === end) {\n return;\n }\n r *= Math.min(width, height) * 0.5;\n let x1, y1, x2, y2;\n [ x1, y1 ] = getCoordsByDegree(cx, cy, r, begin);\n [ x2, y2 ] = getCoordsByDegree(cx, cy, r, end);\n let large = (end - begin) > 180 ? 1 : 0;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.arc(cx, cy, r, begin * Math.PI / 180 - OFFSET, end * Math.PI / 180 - OFFSET);\n if(edge) {\n if(!large || !closure) {\n ctx.lineTo(cx, cy);\n }\n ctx.lineTo(x1, y1);\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n }\n else {\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n if(!large || !closure) {\n ctx.lineTo(cx, cy);\n }\n ctx.lineTo(x1, y1);\n }\n ctx.fill();\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n if(edge) {\n let props = [\n ['d', closure\n ? `M${x1} ${y1} A${r} ${r} 0 ${large} 1 ${x2} ${y2} z`\n : `M${cx} ${cy} L${x1} ${y1} A${r} ${r} 0 ${large} 1 ${x2} ${y2} z`],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n else {\n this.addGeom('path', [\n ['d', closure\n ? `M${x1},${y1} A${r} ${r} 0 ${large} 1 ${x2},${y2} z`\n : `M${cx},${cy} L${x1},${y1} A${r} ${r} 0 ${large} 1 ${x2},${y2} z`],\n ['fill', fill]\n ]);\n if(strokeWidth > 0) {\n let props = [\n ['d', `M${x1},${y1} A${r},${r} 0 ${large} 1 ${x2},${y2}`],\n ['fill', 'transparent'],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('path', props);\n }\n }\n }\n }\n\n get begin() {\n return this.__begin;\n }\n get end() {\n return this.__end;\n }\n get r() {\n return this.__r;\n }\n get edge() {\n return this.__edge;\n }\n get closure() {\n return this.__closure;\n }\n}\n\nexport default Sector;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Rect extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 圆角\n this.__rx = 0;\n if(this.props.rx) {\n this.__rx = parseFloat(this.props.rx);\n if(isNaN(this.rx)) {\n this.__rx = 0;\n }\n }\n this.__ry = 0;\n if(this.props.ry) {\n this.__ry = parseFloat(this.props.ry);\n if(isNaN(this.ry)) {\n this.__ry = 0;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n originX,\n originY,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, rx, ry } = this;\n rx = Math.min(rx, 0.5);\n ry = Math.min(ry, 0.5);\n rx *= width;\n ry *= height;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n if(rx === 0 && ry === 0) {\n ctx.moveTo(originX, originY);\n ctx.lineTo(originX + width, originY);\n ctx.lineTo(originX + width, originY + height);\n ctx.lineTo(originX, originY + height);\n ctx.lineTo(originX, originY);\n }\n else {\n let ox = rx * .5522848;\n let oy = ry * .5522848;\n ctx.moveTo(originX + rx, originY);\n ctx.lineTo(originX + width - rx, originY);\n ctx.bezierCurveTo(originX + width + ox - rx, originY, originX + width, originY + ry - oy, originX + width, originY + ry);\n ctx.lineTo(originX + width, originY + height - ry);\n ctx.bezierCurveTo(originX + width, originY + height + oy - ry, originX + width + ox - rx, originY + height, originX + width - rx, originY + height);\n ctx.lineTo(originX + rx, originY + height);\n ctx.bezierCurveTo(originX + rx - ox, originY + height, originX, originY + height + oy - ry, originX, originY + height - ry);\n ctx.lineTo(originX, originY + ry);\n ctx.bezierCurveTo(originX, originY + ry - oy, originX + rx - ox, originY, originX + rx, originY);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['x', originX],\n ['y', originY],\n ['width', width],\n ['height', height],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(rx) {\n props.push(['rx', rx]);\n }\n if(ry) {\n props.push(['ry', ry]);\n }\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('rect', props);\n }\n }\n\n get rx() {\n return this.__rx;\n }\n get ry() {\n return this.__ry;\n }\n}\n\nexport default Rect;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Circle extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 半径0~1,默认1\n this.__r = 1;\n if(this.props.r) {\n this.__r = parseFloat(this.props.r);\n if(isNaN(this.r)) {\n this.__r = 1;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, r } = this;\n r *= Math.min(width, height) * 0.5;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, 2 * Math.PI);\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['cx', cx],\n ['cy', cy],\n ['r', r],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('circle', props);\n }\n }\n\n get r() {\n return this.__r;\n }\n}\n\nexport default Circle;\n","import Geom from './Geom';\nimport mode from '../util/mode';\n\nclass Ellipse extends Geom {\n constructor(tagName, props) {\n super(tagName, props);\n // 半径0~1,默认1\n this.__rx = 1;\n if(this.props.rx) {\n this.__rx = parseFloat(this.props.rx);\n if(isNaN(this.rx)) {\n this.__rx = 1;\n }\n }\n this.__ry = 1;\n if(this.props.ry) {\n this.__ry = parseFloat(this.props.ry);\n if(isNaN(this.ry)) {\n this.__ry = 1;\n }\n }\n }\n\n render(renderMode) {\n let {\n isDestroyed,\n cx,\n cy,\n display,\n visibility,\n fill,\n stroke,\n strokeWidth,\n strokeDasharray,\n strokeLinecap,\n } = super.render(renderMode);\n if(isDestroyed || display === 'none' || visibility === 'hidden') {\n return;\n }\n let { width, height, ctx, rx, ry } = this;\n rx *= width * 0.5;\n ry *= height * 0.5;\n if(renderMode === mode.CANVAS) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.fillStyle = fill;\n ctx.lineCap = strokeLinecap;\n ctx.setLineDash(strokeDasharray.split(','));\n ctx.beginPath();\n if(ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, 0, 0, 2 * Math.PI);\n }\n else {\n let ox = rx * .5522848;\n let oy = ry * .5522848;\n ctx.moveTo(cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - oy, cx - ox, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + ox, cy - ry, cx + rx, cy - oy, cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + oy, cx + ox, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - ox, cy + ry, cx - rx, cy + oy, cx - rx, cy);\n }\n ctx.fill();\n if(strokeWidth > 0) {\n ctx.stroke();\n }\n ctx.closePath();\n }\n else if(renderMode === mode.SVG) {\n let props = [\n ['cx', cx],\n ['cy', cy],\n ['rx', rx],\n ['ry', ry],\n ['fill', fill],\n ['stroke', stroke],\n ['stroke-width', strokeWidth]\n ];\n if(strokeDasharray.length) {\n props.push(['stroke-dasharray', strokeDasharray]);\n }\n if(strokeLinecap !== 'butt') {\n props.push(['stroke-linecap', strokeLinecap]);\n }\n this.addGeom('ellipse', props);\n }\n }\n\n get rx() {\n return this.__rx;\n }\n get ry() {\n return this.__ry;\n }\n}\n\nexport default Ellipse;\n","import util from './util';\n\nfunction parse(karas, json, data) {\n if(util.isBoolean(json) || util.isNil(json) || util.isString(json) || util.isNumber(json)) {\n return json;\n }\n let { tagName, props = {}, children = [], animate } = json;\n let animation;\n if(animate) {\n animation = {\n animate,\n };\n data.animate.push(animation);\n }\n let vd;\n if(tagName.charAt(0) === '$') {\n vd = karas.createGm(tagName, props);\n }\n else {\n vd = karas.createVd(tagName, props, children.map(item => parse(karas, item, data)));\n }\n if(animation) {\n animation.target = vd;\n }\n return vd;\n}\n\nexport default parse;\n","import matrix from './matrix';\n\n// 一条边相对于自己开始点的角度\nfunction calDeg(x1, y1, x2, y2) {\n return Math.atan((y2 - y1) / (x2 - x1));\n}\n\nfunction rotate(theta) {\n let sin = Math.sin(theta);\n let cos = Math.cos(theta);\n let t = matrix.identity();\n t[0] = t[5] = cos;\n t[1] = sin;\n t[4] = -sin;\n return t;\n}\n\nfunction transform(source, target) {\n let [sx1, sy1, sx2, sy2, sx3, sy3] = source;\n let [tx1, ty1, tx2, ty2, tx3, ty3] = target;\n // 第0步,将目标三角第1个a点移到和源三角一样的原点上\n let dx = tx1 - sx1;\n let dy = tx2 - sx2;\n tx1 -= dx;\n ty1 -= dy;\n tx2 -= dx;\n ty2 -= dy;\n tx3 -= dx;\n ty3 -= dy;\n let m = matrix.identity();\n // 第1步,以第1条边AB为基准,将其贴合x轴上,为后续倾斜不干扰做准备\n let theta = calDeg(sx1, sy1, sx2, sy2);\n let t = rotate(-theta);\n m = matrix.multiply(t, m);\n // 第2步,以第1条边AB为基准,缩放至目标ab相同长度\n let ls = Math.sqrt(Math.pow(sx2 - sx1, 2) + Math.pow(sy2 - sy1, 2));\n let lt = Math.sqrt(Math.pow(tx2 - tx1, 2) + Math.pow(ty2 - ty1, 2));\n let scale = lt / ls;\n t = matrix.identity();\n t[0] = t[5] = scale;\n m = matrix.multiply(t, m);\n // 第3步,缩放y,先将目标旋转到x轴上,再变换坐标计算\n theta = calDeg(tx1, ty1, tx2, ty2);\n t = rotate(-theta);\n // 目标三角反向旋转至x轴后的第2、3点坐标,求得旋转角度\n let [ax2, ay2] = matrix.calPoint([tx2, ty2], matrix.t43(t));\n let [ax3, ay3] = matrix.calPoint([tx3, ty3], matrix.t43(t));\n let alpha = Math.atan((ax2- ax3) / (ay3 - ay2));\n let by3 = matrix.calPoint([sx3, sy3], matrix.t43(m))[1];\n // 缩放y\n scale = ay3 / by3;\n t = matrix.identity();\n t[5] = scale;\n m = matrix.multiply(t, m);\n // 第4步,x轴倾斜,第3点的x/y的tan值\n let [x3, y3] = matrix.calPoint([sx3, sy3], matrix.t43(m));\n theta = Math.atan((ax3 - x3) / y3);\n t = matrix.identity();\n t[4] = Math.tan(theta);\n m = matrix.multiply(t, m);\n // 第5步,再次旋转,角度为目标旋转到x轴的负值\n t = rotate(-alpha);\n m = matrix.multiply(t, m);\n // 第6步,移动第一个点的差值\n t = matrix.identity();\n t[12] = dx;\n t[13] = dy;\n m = matrix.multiply(t, m);\n return matrix.t43(m);\n}\n\nexport default {\n transform,\n};\n","import matrix from './matrix';\nimport tar from './tar';\n\nexport default {\n matrix,\n tar,\n};\n","import Dom from './node/Dom';\nimport Img from './node/Img';\nimport Root from './node/Root';\nimport mode from './util/mode';\nimport Geom from './geom/Geom';\nimport Line from './geom/Line';\nimport Polyline from './geom/Polyline';\nimport Polygon from './geom/Polygon';\nimport Sector from './geom/Sector';\nimport Rect from './geom/Rect';\nimport Circle from './geom/Circle';\nimport Ellipse from './geom/Ellipse';\nimport Component from './node/Component';\nimport Event from './util/Event';\nimport sort from './util/sort';\nimport util from './util/util';\nimport parse from './util/parse';\nimport inject from './util/inject';\nimport css from './style/css';\nimport frame from './animate/frame';\nimport easing from './animate/easing';\nimport level from './animate/level';\nimport math from './math/index';\n\nGeom.register('$line', Line);\nGeom.register('$polyline', Polyline);\nGeom.register('$polygon', Polygon);\nGeom.register('$sector', Sector);\nGeom.register('$rect', Rect);\nGeom.register('$circle', Circle);\nGeom.register('$ellipse', Ellipse);\n\nlet karas = {\n render(root, dom) {\n if(!(root instanceof Root)) {\n throw new Error('render root muse be canvas or svg');\n }\n if(dom) {\n root.appendTo(dom);\n }\n return root;\n },\n createVd(tagName, props, children) {\n if(['canvas', 'svg'].indexOf(tagName) > -1) {\n return new Root(tagName, props, children);\n }\n if(Dom.isValid(tagName)) {\n if(tagName === 'img') {\n return new Img(tagName, props);\n }\n return new Dom(tagName, props, children);\n }\n throw new Error('can not use marker: ' + tagName);\n },\n createGm(tagName, props) {\n let klass = Geom.getRegister(tagName);\n return new klass(tagName, props);\n },\n createCp(cp, props, children) {\n return new cp(props, children);\n },\n parse(json, dom) {\n let data = {\n animate: [],\n };\n json = util.clone(json);\n let vd = parse(this, json, data);\n this.render(vd, dom);\n data.animate.forEach(item => {\n let { target, animate } = item;\n if(Array.isArray(animate)) {\n animate.forEach(animate => {\n target.animate(animate.value, animate.options);\n });\n }\n else {\n target.animate(animate.value, animate.options);\n }\n });\n return vd;\n },\n Root,\n Dom,\n Img,\n Geom,\n mode,\n Component,\n Event,\n sort,\n util,\n inject,\n css,\n frame,\n easing,\n level,\n math,\n};\n\nif(typeof window != 'undefined') {\n window.karas = karas;\n}\n\nexport default karas;\n"],"names":["AUTO","PX","PERCENT","POSITION","NUMBER","INHERIT","DEG","SIZE","Node","__x","__y","__ox","__oy","__width","__height","__prev","__next","__ctx","__defs","__parent","__computedStyle","__baseLine","__virtualDom","__host","diff","isLayout","__isDestroyed","x","ox","y","oy","host","root","parent","tagName","canvas","svg","hasOwnProperty","__style","CANVAS","SVG","toString","isType","type","obj","call","isNumber","joinSourceArray","arr","res","i","len","length","item","Array","isArray","stringify","s","isNil","encodeHtml","prop","replace","v","undefined","joinVirtualDom","vd","defs","forEach","joinDef","bbMask","bb","joinVd","children","isMask","props","content","opacity","joinTransform","transform","mask","def","uuid","joinItem","d2r","n","Math","PI","rgb2int","color","charAt","slice","push","parseInt","c","match","parseFloat","arr2hash","hash","list","Object","keys","j","k","hash2arr","clone","util","isDate","Date","mergeImageData","bottom","top","bd","data","td","rb","gb","ab","rt","gt","bt","at","alpha1","alpha2","alpha3","r","g","b","a","isObject","isString","isFunction","isBoolean","identity","m","multiply","row","col","t43","calPoint","point","calMatrix","transformOrigin","ow","oh","normalize","matrix","t","tan","sin","cos","transformPoint","d","e","f","vectorProduct","x1","y1","x2","y2","pointInQuadrilateral","x3","y3","x4","y4","w","h","unit","value","calOrigin","tfo","convert","m3","mergeMatrix","m1","m2","getLinearDeg","deg","exec","getColorStop","p","start","end","num","per","prev","splice","allBefore","allAfter","first","last","getCsLimit","next","c1","c2","getCsStartLimit","getCsEndLimit","calLinearCoords","cx","cy","x0","y0","calRadialRadius","iw","ih","size","test","indexOf","by","xl","yl","min","sqrt","pow","max","p1","p2","r1","g1","b1","a1","r2","g2","b2","a2","l1","abs","l2","floor","reg","parseGradient","gradient","o","map","split","str","getLinear","theta","stop","getRadial","cx2","cy2","calFitDashed","total","bs","be","smin","smax","dmin","dmax","ps","pd","outer","free","mo","calDashed","style","m4","bw","calPoints","borderWidth","borderStyle","deg1","deg2","direction","points","isLast","main1","main2","cross1","cross2","quickSort","begin","compare","seq","swap","temp","arial","lhr","car","blr","mdr","lgr","parserOneBorder","key","calUnit","reset","background","gd","backgroundImage","image","repeat","backgroundRepeat","toLowerCase","position","backgroundPosition","trim","bgc","backgroundColor","bp","backgroundSize","bc","flex","flexGrow","flexShrink","flexBasis","border","borderTop","borderRight","borderBottom","borderLeft","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","arr1","arr2","left","center","right","isNaN","fontWeight","lineHeight","strokeDasharray","join","fill","stroke","computedFontSize","computedStyle","fontSize","parentComputedStyle","isRoot","compute","xom","currentStyle","textAlign","preCompute","calLineHeight","repaint","fontStyle","fontFamily","setFontStyle","getBaseLine","normal","font","pl","calNormalLineHeight","calRelativePercent","calRelative","isWidth","calAbsolute","LineBox","__content","renderMode","ctx","css","mode","fillText","Text","__lineBoxes","__charWidthList","__charWidth","__textWidth","charWidthList","wait","MEASURE_TEXT","cache","CHAR_WIDTH_CACHE","sum","needMeasure","char","mw","charWidth","measureText","width","isVirtual","maxX","isDestroyed","lineBoxes","display","count","lineBox","__offsetX","__offsetY","fillStyle","render","virtualDom","textWidth","baseLine","__renderMode","splitClass","parse","dom","json","matchSel","sort","pa","pb","selList","combo","sel","dealStyle","parentStyle","sibling","prevSelList","item2","klass","id","ks","comboClass","hasStarClass","hasStarId","hasStarIdClass","len2","_v","_p","mergeCss","flag","matrixResize","imgWidth","imgHeight","targetWidth","targetHeight","Event","__eHash","handle","self","on","cb","apply","off","once","emit","event","fns","fn","DOM","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","height","flexDirection","justifyContent","alignItems","visibility","GEOM","strokeWidth","strokeLinecap","geom","REPAINT","REFLOW","Component","constructor","__tagName","__props","__children","__shadowRoot","__ref","__state","state","shadowRoot","setRefreshLevel","level","__traverse","__init","addRefreshTask","sr","isGeom","__traverseCss","listener","__hasInit","defineProperty","get","__destroy","force","__emitEvent","target","option","animate","__measure","__computed","__repaint","prototype","arguments","inject","html","chars","inline","div","document","createElement","body","appendChild","innerHTML","cns","childNodes","node","window","getComputedStyle","text","__measureCb","removeChild","measureImg","url","img","Image","onload","success","source","onerror","substr","location","hostname","crossOrigin","src","warn","console","requestAnimationFrame","bind","setTimeout","now","performance","Frame","__inFrame","__task","__afterFrame","task","delta","afterCb","offFrame","onFrame","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","bezier","mY1","mY2","Error","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","BezierEasing","easing","linear","easeIn","easeOut","ease","easeInOut","cubicBezier","controlA","controlB","rx","ry","controls","STYLE","KEY_COLOR","KEY_LENGTH","KEY_GRADIENT","COLOR_HASH","LENGTH_HASH","GRADIENT_HASH","GRADIENT_TYPE","radial","color2array","equalStyle","k1","k2","v1","v2","av","bv","ai","bi","lastStyle","animateStyle","restore","framing","current","record","st","offset","transition","calDiff","pExist","nExist","pi","ni","pv","nv","calFrame","ts","binarySearch","time","frames","frame","middle","calStyle","percent","timingFunction","getLevel","Animation","options","__id","__target","__list","nl","l","__options","duration","op","__duration","__delay","delay","__endDelay","endDelay","iterations","Infinity","__iterations","__fps","fps","__fill","__direction","__frames","__framesR","__playbackRate","playbackRate","__startTime","__offsetTime","__pauseTime","__lastFpsTime","__pending","__playState","__playCount","__cb","__diffTime","framesR","__animateStyle","__record","reverse","alternate","listR","__fin","KARAS_ANIMATION_FRAME","KARAS_ANIMATION_FINISH","__cancelTask","pending","pauseTime","playCount","init","offsetTime","__lastTime","__lastIndex","backwards","both","needRefresh","currentFrames","isEven","__lastStyle","forwards","isFinished","nextFrame","KARAS_ANIMATION_PAUSE","playState","KARAS_ANIMATION_CANCEL","delRefreshTask","renderBorder","beginPath","moveTo","lineTo","closePath","addBorder","renderBgc","rect","addBackground","calBackgroundSize","calBackgroundPosition","container","Xom","__listener","__class","__matrix","__matrixEvent","__animationList","__loadBgi","child","__mpWidth","mp","fake","__mp","outerWidth","outerHeight","__layoutBlock","__layoutFlex","__layoutInline","fixedWidth","fixedHeight","matrixEvent","tf","setTransform","sx","sy","opa","globalAlpha","addTransform","originX","originY","xnl","xnr","ynt","ynb","ceil","needMask","cache1","cache2","__getImageData","__clear","drawImage","globalCompositeOperation","__putImageData","maskId","add","backgroudSize","bgi","__gradient","atan","hasMask","ref","owner","animationList","__stopPropagation","childWillResponse","__touchstartTarget","__stopImmediatePropagation","willResponseEvent","__hasEmitted","inThis","vs","__getLg","__getRg","lg","createLinearGradient","addColorStop","rg","createRadialGradient","animation","play","LineGroup","__calBaseLine","REGISTER","Geom","__isMask","isDirectionRow","main","__preLayout","__preRender","xi","yi","$0","$1","$2","__maskId","name","hasRegister","TAG_NAME","INLINE","Dom","__flowChildren","__absChildren","__lineGroups","__traverseChildren","flowChildren","__tryLayInline","isRecursion","__calAutoBasis","min2","max2","__layout","__calMp","w2","h2","lineGroups","lineGroup","fw","verticalAlign","horizonAlign","__marginAuto","growList","shrinkList","basisList","minList","growSum","shrinkSum","basisSum","maxSum","maxCross","isOverflow","shrink","grow","overflow","between","around","absChildren","onlyRight","onlyBottom","fixedTop","fixedRight","fixedBottom","fixedLeft","__layoutAbs","__renderAsMask","__renderByMask","filter","CACHE","INIT","LOADING","LOADED","Img","__error","__source","__imgWidth","__imgHeight","lv","pts","strokeStyle","lineWidth","arc","__addGeom","elem","ovd","nvd","diffDefs","diffBb","diffD2D","od","nd","ol","diffDef","removeAt","insertAt","insertAdjacentHTML","parentNode","setAttribute","removeAttribute","diffItem","joinStop","diffChild","replaceWith","diffD2G","diffT2T","diffG2D","diffG2G","diffItemSelf","equalArr","firstChild","lastChild","getAttribute","obb","nbb","oMask","nMask","isText","textContent","index","Defs","getDom","querySelector","renderProp","initEvent","addEventListener","__root","Root","__node","__mw","__mh","mix","touches","getBoundingClientRect","clientX","clientY","stopPropagation","stopImmediatePropagation","preventDefault","__initProps","__refreshLevel","nodeName","toUpperCase","__genHtml","__uuid","getInstance","getPropertyValue","getContext","refresh","__vd","clear","KARAS_BEFORE_REFRESH","KARAS_REFRESH","getImageData","putImageData","clearRect","Line","__x1","__y1","__x2","__y2","__controlA","__controlB","curve","cx1","cy1","lineCap","setLineDash","bezierCurveTo","quadraticCurveTo","addGeom","Polyline","__points","origin","__origin","__controls","cls","hasControll","cl","Polygon","concat","OFFSET","getCoordsByDegree","Sector","__begin","__end","__r","__edge","edge","__closure","closure","large","Rect","__rx","__ry","Circle","Ellipse","ellipse","karas","createGm","createVd","calDeg","rotate","sx1","sy1","sx2","sy2","sx3","sy3","tx1","ty1","tx2","ty2","tx3","ty3","dx","dy","ls","lt","scale","ax2","ay2","ax3","ay3","alpha","by3","tar","register","appendTo","isValid","getRegister","createCp","cp","math"],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index 8e7ee33ea..fbe5c020d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "karas",
- "version": "0.15.0",
+ "version": "0.16.0",
"description": "A flexible JavaScript framework for graphics programming on Canvas/Svg.",
"maintainers": [
{
diff --git a/src/node/Xom.js b/src/node/Xom.js
index d84b6effb..d9f6a7c74 100644
--- a/src/node/Xom.js
+++ b/src/node/Xom.js
@@ -576,6 +576,32 @@ class Xom extends Node {
}
let originX = x2 + calBackgroundPosition(backgroundPosition[0], iw, width);
let originY = y2 + calBackgroundPosition(backgroundPosition[1], ih, height);
+ let xnl = 0;
+ let xnr = 0;
+ let ynt = 0;
+ let ynb = 0;
+ // repeat-x
+ if(['repeat-x', 'repeat'].indexOf(backgroundRepeat) > -1) {
+ let diff = originX - x2;
+ if(diff > 0) {
+ xnl = Math.ceil(diff / w);
+ }
+ diff = x2 + iw - originX - w;
+ if(diff > 0) {
+ xnr = Math.ceil(diff / w);
+ }
+ }
+ // repeat-y
+ if(['repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1) {
+ let diff = originY - y2;
+ if(diff > 0) {
+ ynt = Math.ceil(diff / h);
+ }
+ diff = y2 + ih - originY - h;
+ if(diff > 0) {
+ ynb = Math.ceil(diff / h);
+ }
+ }
// 超出尺寸模拟mask截取
let needMask = ['repeat-x', 'repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1
|| originX < x2 || originY < y2 || w > iw || h > ih;
@@ -588,11 +614,43 @@ class Xom extends Node {
this.root.__clear();
}
ctx.drawImage(this.__loadBgi.source, originX, originY, w, h);
- // repeat-x
- if(['repeat-x', 'repeat'].indexOf(backgroundRepeat) > -1) {
+ // 分4个角分别判断
+ if(xnl > 0 || ynt > 0) {
+ for(let i = 0; i <= Math.max(xnl, 1); i++) {
+ for(let j = 0; j <= Math.max(ynt, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX - i * w, originY - j * h, w, h);
+ }
+ }
+ }
+ }
+ if(xnr > 0 || ynt > 0) {
+ for(let i = 0; i <= Math.max(xnr, 1); i++) {
+ for(let j = 0; j <= Math.max(ynt, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX + i * w, originY - j * h, w, h);
+ }
+ }
+ }
+ }
+ if(xnl > 0 || ynb > 0) {
+ for(let i = 0; i <= Math.max(xnl, 1); i++) {
+ for(let j = 0; j <= Math.max(ynb, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX - i * w, originY + j * h, w, h);
+ }
+ }
+ }
+ }
+ if(xnr > 0 || ynb > 0) {
+ for(let i = 0; i <= Math.max(xnr, 1); i++) {
+ for(let j = 0; j <= Math.max(ynb, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ ctx.drawImage(this.__loadBgi.source, originX + i * w, originY + j * h, w, h);
+ }
+ }
+ }
}
- // repeat-y
- if(['repeat-y', 'repeat'].indexOf(backgroundRepeat) > -1) {}
if(needMask) {
ctx.globalCompositeOperation = 'destination-in';
renderBgc(renderMode, '#FFF', x2, y2, iw, ih, ctx, this);
@@ -636,6 +694,71 @@ class Xom extends Node {
tagName: 'image',
props,
});
+ // 4个角repeat
+ if(xnl > 0 || ynt > 0) {
+ for(let i = 0; i <= Math.max(xnl, 1); i++) {
+ for(let j = 0; j <= Math.max(ynt, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ let clone = util.clone(props);
+ clone[1][1] = originX - i * w;
+ clone[2][1] = originY - j * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: clone,
+ });
+ }
+ }
+ }
+ }
+ if(xnr > 0 || ynt > 0) {
+ for(let i = 0; i <= Math.max(xnr, 1); i++) {
+ for(let j = 0; j <= Math.max(ynt, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ let clone = util.clone(props);
+ clone[1][1] = originX + i * w;
+ clone[2][1] = originY - j * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: clone,
+ });
+ }
+ }
+ }
+ }
+ if(xnl > 0 || ynb > 0) {
+ for(let i = 0; i <= Math.max(xnl, 1); i++) {
+ for(let j = 0; j <= Math.max(ynb, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ let clone = util.clone(props);
+ clone[1][1] = originX - i * w;
+ clone[2][1] = originY + j * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: clone,
+ });
+ }
+ }
+ }
+ }
+ if(xnr > 0 || ynb > 0) {
+ for(let i = 0; i <= Math.max(xnr, 1); i++) {
+ for(let j = 0; j <= Math.max(ynb, 1); j++) {
+ if(i !== 0 || j !== 0) {
+ let clone = util.clone(props);
+ clone[1][1] = originX + i * w;
+ clone[2][1] = originY + j * h;
+ this.virtualDom.bb.push({
+ type: 'img',
+ tagName: 'image',
+ props: clone,
+ });
+ }
+ }
+ }
+ }
}
computedStyle.backgroudSize = `${w} ${h}`;
computedStyle.backgroundPosition = `${originX} ${originY}`;
diff --git a/test/background-repeat-svg/index.html b/test/background-repeat-svg/index.html
new file mode 100644
index 000000000..d2515fe5a
--- /dev/null
+++ b/test/background-repeat-svg/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ test
+
+
+
+
+
+
+
+
diff --git a/test/background-repeat-svg/script.jsx b/test/background-repeat-svg/script.jsx
new file mode 100644
index 000000000..da4dff016
--- /dev/null
+++ b/test/background-repeat-svg/script.jsx
@@ -0,0 +1,8 @@
+let o = karas.render(
+ ,
+ '#test'
+);
+let input = document.querySelector('#base64');
+input.value = JSON.stringify(o.virtualDom);
diff --git a/test/background-repeat-svg/test.js b/test/background-repeat-svg/test.js
new file mode 100644
index 000000000..274b16e27
--- /dev/null
+++ b/test/background-repeat-svg/test.js
@@ -0,0 +1,12 @@
+var path = require('path');
+var fs = require('fs');
+
+module.exports = {
+ 'init': function(browser) {
+ browser
+ .url('file://' + path.join(__dirname, 'index.html'))
+ .waitForElementVisible('body', 1000)
+ .assert.value('input', '{"bb":[],"children":[{"bb":[{"type":"item","tagName":"rect","props":[["x",0],["y",0],["width",360],["height",120],["fill","#000"]]}],"children":[],"transform":[],"opacity":1,"type":"dom"}],"transform":[],"opacity":1,"type":"dom","defs":[]}')
+ .end();
+ }
+};
diff --git a/test/background-repeat/index.html b/test/background-repeat/index.html
new file mode 100644
index 000000000..d213b34a9
--- /dev/null
+++ b/test/background-repeat/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+ test
+
+
+
+
+
+
+
+
+
diff --git a/test/background-repeat/script.jsx b/test/background-repeat/script.jsx
new file mode 100644
index 000000000..da8dedf09
--- /dev/null
+++ b/test/background-repeat/script.jsx
@@ -0,0 +1,6 @@
+karas.render(
+ ,
+ '#test'
+);
diff --git a/test/background-repeat/test.js b/test/background-repeat/test.js
new file mode 100644
index 000000000..4b4dbeb0a
--- /dev/null
+++ b/test/background-repeat/test.js
@@ -0,0 +1,12 @@
+var path = require('path');
+var fs = require('fs');
+
+module.exports = {
+ 'init': function(browser) {
+ browser
+ .url('file://' + path.join(__dirname, 'index.html'))
+ .waitForElementVisible('body', 1000)
+ .assert.value('input', 'data:image/png;base64,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')
+ .end();
+ }
+};