@visactor/vrender-core 0.17.15-alpha.1 → 0.17.15-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,4 +18,5 @@ function drawSegItem(ctx, curve, endPercent, params) {
18
18
  }
19
19
  }
20
20
 
21
- exports.drawSegItem = drawSegItem;
21
+ exports.drawSegItem = drawSegItem;
22
+ //# sourceMappingURL=render-utils.js.map
@@ -94,5 +94,4 @@ class ReflectSegContext extends SegContext {
94
94
  }
95
95
  }
96
96
 
97
- exports.ReflectSegContext = ReflectSegContext;
98
- //# sourceMappingURL=seg-context.js.map
97
+ exports.ReflectSegContext = ReflectSegContext;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.splitPath = exports.splitPolygon = exports.recursiveCallBinarySplit = exports.binarySplitPolygon = exports.splitLine = exports.splitArea = exports.splitCircle = exports.splitArc = exports.splitRect = exports.splitToGrids = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), morphing_utils_1 = require("./morphing-utils"), rect_utils_1 = require("./rect-utils");
7
+ const vutils_1 = require("@visactor/vutils"), morphing_utils_1 = require("./morphing-utils");
8
8
 
9
9
  function splitToGrids(width, height, count) {
10
10
  const ratio = width / height;
@@ -23,7 +23,7 @@ function splitToGrids(width, height, count) {
23
23
  exports.splitToGrids = splitToGrids;
24
24
 
25
25
  const splitRect = (rect, count) => {
26
- const {width: width, height: height} = (0, rect_utils_1.normalizeRectAttributes)(rect.attribute), grids = splitToGrids(width, height, count), res = [], gridHeight = height / grids.length;
26
+ const width = rect.getComputedAttribute("width"), height = rect.getComputedAttribute("height"), grids = splitToGrids(width, height, count), res = [], gridHeight = height / grids.length;
27
27
  for (let i = 0, rowCount = grids.length; i < rowCount; i++) {
28
28
  const columnCount = grids[i], gridWidth = width / columnCount;
29
29
  for (let j = 0; j < columnCount; j++) res.push({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":"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","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\nimport { normalizeRectAttributes } from './rect-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const { width, height } = normalizeRectAttributes(rect.attribute);\n\n const x = 0;\n const y = 0;\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}
1
+ {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":";;;AAWA,6CAAuE;AAEvE,qDAA2E;AAI3E,SAAgB,YAAY,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;IACvE,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,IAAI,QAAgB,CAAC;IACrB,IAAI,WAAmB,CAAC;IAExB,IAAI,KAAK,IAAI,MAAM,EAAE;QACnB,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAClD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;QAE3C,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,QAAQ,GAAG,CAAC,CAAC;YACb,WAAW,GAAG,KAAK,CAAC;SACrB;KACF;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAC/C,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAE3C,IAAI,WAAW,KAAK,CAAC,EAAE;YACrB,WAAW,GAAG,CAAC,CAAC;YAChB,QAAQ,GAAG,KAAK,CAAC;SAClB;KACF;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzB;IACD,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IAElC,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,WAAW,EAAE;YAC9C,IAAI,CAAC,GAAG,WAAW,GAAG,QAAQ,EAAE;gBAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACzB;iBAAM;gBACL,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;aAC1B;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAzCD,oCAyCC;AAEM,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,KAAa,EAAE,EAAE;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,GAAG,CAAC,IAAI,CAAC;gBACP,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;gBACpB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,UAAU;gBACrB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;SACJ;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAvBW,QAAA,SAAS,aAuBpB;AAEK,MAAM,QAAQ,GAAG,CAAC,GAAS,EAAE,KAAa,EAAE,EAAE;IACnD,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,WAAW,GAAG,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/F,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAC9C,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAEpC,GAAG,CAAC,IAAI,CAAC;gBACP,WAAW,EAAE,WAAW,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU;gBACtD,WAAW,EAAE,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;gBAC5D,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS;gBAClD,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;aACvD,CAAC,CAAC;SACJ;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAhCW,QAAA,QAAQ,YAgCnB;AAEK,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,KAAa,EAAE,EAAE;IACzD,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACzC,MAAM,SAAS,GAAG,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAC5D,GAAG,CAAC,IAAI,CAAC;gBACP,WAAW,EAAE,UAAU,GAAG,CAAC;gBAC3B,WAAW,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS;gBAClD,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;aACvD,CAAC,CAAC;SACJ;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AA1BW,QAAA,WAAW,eA0BtB;AAEF,MAAM,cAAc,GAAG,CAAC,MAAoB,EAAE,KAAa,EAAE,EAAE;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,EAAE,CAAC;KACX;IACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;QAClC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,OAAO,CAAC,GAAG,KAAK,EAAE;YAChB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE1C,GAAG,IAAI,IAAI,CAAC;YACZ,CAAC,EAAE,CAAC;SACL;QAED,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,WAAW,GAAG,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;YACf,IAAI,GAAG,GAAG,UAAU,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9B,OAAO,GAAG,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE;gBACxC,GAAG,CAAC,IAAI,CAAC;oBACP,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG;oBAC9B,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG;iBAC/B,CAAC,CAAC;gBACH,GAAG,IAAI,UAAU,CAAC;gBAClB,QAAQ,IAAI,CAAC,CAAC;aACf;SACF;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEK,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,KAAa,EAAE,EAAE;;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;IAErC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YACrC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC;QACtC,CAAC,EAAE,EAAE,CAAC,CAAC;KACR;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC7B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAEhC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAA,KAAK,CAAC,EAAE,mCAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAA,KAAK,CAAC,EAAE,mCAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACpE;IAED,MAAM,GAAG,GAA+B,EAAE,CAAC;IAE3C,IAAA,gCAAwB,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAE7C,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAjCW,QAAA,SAAS,aAiCpB;AAEK,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,KAAa,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAEhC,IAAI,MAAM,EAAE;QACV,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACtC;SAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YACzC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC;QACtC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACzC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAfW,QAAA,SAAS,aAepB;AAEF,SAAS,YAAY,CAAC,IAAsB,EAAE,IAAsB;IAClE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAoB,EAAE,EAAc,EAAE,EAAc,EAAE,EAAE;IAClF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,aAAa,GAA4D,EAAE,CAAC;IAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvD,MAAM,GAAG,GAAG,IAAA,0BAAiB,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5F,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;YACnC,aAAa,CAAC,IAAI,CAAC;gBACjB,GAAG,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7E,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC/B,SAAS,EAAE,CAAC;aACb,CAAC,CAAC;SACJ;KACF;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAE5B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD;IAED,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAElD,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE;QACjC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhD,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;QACvD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrD;IACD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;QAClF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrC;IACD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAoB,EAAE,EAAE;IACzD,MAAM,GAAG,GAAG,IAAI,eAAM,EAAE,CAAC;IAEzB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACrB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAE5B,IAAI,KAAK,IAAI,MAAM,EAAE;QAEnB,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;QAEhC,OAAO,kBAAkB,CACvB,MAAM,EACN;YACE,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,GAAG,CAAC,EAAE;SACV,EACD;YACE,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,GAAG,CAAC,EAAE;SACV,CACF,CAAC;KACH;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IAEjC,OAAO,kBAAkB,CACvB,MAAM,EACN;QACE,CAAC,EAAE,GAAG,CAAC,EAAE;QACT,CAAC,EAAE,IAAI;KACR,EACD;QACE,CAAC,EAAE,GAAG,CAAC,EAAE;QACT,CAAC,EAAE,IAAI;KACR,CACF,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,kBAAkB,sBAuC7B;AAEK,MAAM,wBAAwB,GAAG,CAAC,MAAoB,EAAE,KAAa,EAAE,GAA+B,EAAE,EAAE;IAC/G,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACtB;SAAM;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,CAAC;QAEvC,IAAA,gCAAwB,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAA,gCAAwB,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;KACrD;AACH,CAAC,CAAC;AAVW,QAAA,wBAAwB,4BAUnC;AAEK,MAAM,YAAY,GAAG,CAAC,OAAiB,EAAE,KAAa,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAC;KACX;IACD,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC1C;IACD,MAAM,GAAG,GAA+B,EAAE,CAAC;IAE3C,IAAA,gCAAwB,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAE7C,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB;AAEK,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,KAAa,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAA,mCAAkB,EAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAEvC,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,EAAE;QAChC,MAAM,GAAG,GAA8B,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;YAErG,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,oCAAmB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACjD;QAED,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,GAAG,GAA+B,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SACnE;QACD,IAAA,gCAAwB,EAAC,MAAM,EAAE,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACjF,MAAM,IAAI,SAAS,CAAC;KACrB;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAtCW,QAAA,SAAS,aAsCpB","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const x = 0;\n const y = 0;\n const width = rect.getComputedAttribute('width');\n const height = rect.getComputedAttribute('height');\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}
@@ -65,4 +65,4 @@ class OrthoCamera {
65
65
  }
66
66
 
67
67
  exports.OrthoCamera = OrthoCamera;
68
- //# sourceMappingURL=camera.js.map
68
+ //# sourceMappingURL=camera.js.map
package/cjs/env-check.js CHANGED
@@ -3,10 +3,17 @@
3
3
  let _isBrowserEnv;
4
4
 
5
5
  function initIsBrowserEnv() {
6
- if (null == _isBrowserEnv) try {
7
- _isBrowserEnv = !!window;
8
- } catch (err) {
9
- _isBrowserEnv = !1;
6
+ if (null == _isBrowserEnv) {
7
+ try {
8
+ _isBrowserEnv = !!window;
9
+ } catch (err) {
10
+ _isBrowserEnv = !1;
11
+ }
12
+ if (_isBrowserEnv) try {
13
+ _isBrowserEnv = !tt;
14
+ } catch (err) {
15
+ _isBrowserEnv = !0;
16
+ }
10
17
  }
11
18
  }
12
19
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-check.ts"],"names":[],"mappings":";;;AAAA,IAAI,aAAkC,CAAC;AAGvC,SAAS,gBAAgB;IACvB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,OAAO;KACR;IACD,IAAI;QAEF,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;KAC1B;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,GAAG,KAAK,CAAC;KACvB;AACH,CAAC;AAED,SAAgB,YAAY;IAC1B,gBAAgB,EAAE,CAAC;IACnB,OAAO,aAAa,CAAC;AACvB,CAAC;AAHD,oCAGC;AAED,SAAgB,SAAS;IACvB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAHD,8BAGC;AAED,SAAgB,aAAa;IAC3B,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAFD,sCAEC","file":"env-check.js","sourcesContent":["let _isBrowserEnv: boolean | undefined;\ndeclare const tt: any;\n\nfunction initIsBrowserEnv() {\n if (_isBrowserEnv != null) {\n return;\n }\n try {\n // @ts-ignore\n _isBrowserEnv = !!window;\n } catch (err: any) {\n _isBrowserEnv = false;\n }\n}\n\nexport function isBrowserEnv(): boolean {\n initIsBrowserEnv();\n return _isBrowserEnv;\n}\n\nexport function isNodeEnv() {\n initIsBrowserEnv();\n return !_isBrowserEnv;\n}\n\nexport function getCurrentEnv(): 'browser' | 'node' {\n return isBrowserEnv() ? 'browser' : 'node';\n}\n"]}
1
+ {"version":3,"sources":["../src/env-check.ts"],"names":[],"mappings":";;;AAAA,IAAI,aAAkC,CAAC;AAGvC,SAAS,gBAAgB;IACvB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,OAAO;KACR;IACD,IAAI;QAEF,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;KAC1B;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,GAAG,KAAK,CAAC;KACvB;IAED,IAAI,aAAa,EAAE;QACjB,IAAI;YAEF,aAAa,GAAG,CAAC,EAAE,CAAC;SACrB;QAAC,OAAO,GAAQ,EAAE;YACjB,aAAa,GAAG,IAAI,CAAC;SACtB;KACF;AACH,CAAC;AAED,SAAgB,YAAY;IAC1B,gBAAgB,EAAE,CAAC;IACnB,OAAO,aAAa,CAAC;AACvB,CAAC;AAHD,oCAGC;AAED,SAAgB,SAAS;IACvB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAHD,8BAGC;AAED,SAAgB,aAAa;IAC3B,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAFD,sCAEC","file":"env-check.js","sourcesContent":["let _isBrowserEnv: boolean | undefined;\ndeclare const tt: any;\n\nfunction initIsBrowserEnv() {\n if (_isBrowserEnv != null) {\n return;\n }\n try {\n // @ts-ignore\n _isBrowserEnv = !!window;\n } catch (err: any) {\n _isBrowserEnv = false;\n }\n // 字节小程序有window,判断环境中是否有tt,有tt就不是浏览器环境\n if (_isBrowserEnv) {\n try {\n // @ts-ignore\n _isBrowserEnv = !tt;\n } catch (err: any) {\n _isBrowserEnv = true;\n }\n }\n}\n\nexport function isBrowserEnv(): boolean {\n initIsBrowserEnv();\n return _isBrowserEnv;\n}\n\nexport function isNodeEnv() {\n initIsBrowserEnv();\n return !_isBrowserEnv;\n}\n\nexport function getCurrentEnv(): 'browser' | 'node' {\n return isBrowserEnv() ? 'browser' : 'node';\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.createRect = exports.Rect = void 0;
6
6
 
7
- const graphic_1 = require("./graphic"), custom_path2d_1 = require("../common/custom-path2d"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), constants_1 = require("./constants"), rect_utils_1 = require("../common/rect-utils"), RECT_UPDATE_TAG_KEY = [ "width", "x1", "y1", "height", "cornerRadius", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
7
+ const vutils_1 = require("@visactor/vutils"), graphic_1 = require("./graphic"), custom_path2d_1 = require("../common/custom-path2d"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), constants_1 = require("./constants"), RECT_UPDATE_TAG_KEY = [ "width", "x1", "y1", "height", "cornerRadius", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
8
8
 
9
9
  class Rect extends graphic_1.Graphic {
10
10
  constructor(params) {
@@ -38,8 +38,11 @@ class Rect extends graphic_1.Graphic {
38
38
  return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);
39
39
  }
40
40
  toCustomPath() {
41
- const attribute = this.attribute, {x: x, y: y, width: width, height: height} = (0,
42
- rect_utils_1.normalizeRectAttributes)(attribute), path = new custom_path2d_1.CustomPath2D;
41
+ const attribute = this.attribute;
42
+ let width = (0, vutils_1.isNil)(attribute.width) ? attribute.x1 - attribute.x : attribute.width, height = (0,
43
+ vutils_1.isNil)(attribute.height) ? attribute.y1 - attribute.y : attribute.height, x = 0, y = 0;
44
+ width < 0 && (x = width, width = -width), height < 0 && (y = height, height = -height);
45
+ const path = new custom_path2d_1.CustomPath2D;
43
46
  return path.moveTo(x, y), path.rect(x, y, width, height), path;
44
47
  }
45
48
  clone() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import { isNil, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\nimport { normalizeRectAttributes } from '../common/rect-utils';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const attribute = this.attribute;\n const { x, y, width, height } = normalizeRectAttributes(attribute);\n\n const path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import { isNil, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const attribute = this.attribute;\n let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width;\n let height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height;\n let x = 0;\n let y = 0;\n\n if (width < 0) {\n x = width;\n width = -width;\n }\n\n if (height < 0) {\n y = height;\n height = -height;\n }\n\n const path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
@@ -10,4 +10,5 @@ export function drawSegItem(ctx, curve, endPercent, params) {
10
10
  const p = curve.getPointAt(endPercent);
11
11
  ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);
12
12
  }
13
- }
13
+ }
14
+ //# sourceMappingURL=render-utils.js.map
@@ -90,5 +90,4 @@ export class ReflectSegContext extends SegContext {
90
90
  clear() {
91
91
  return super.clear();
92
92
  }
93
- }
94
- //# sourceMappingURL=seg-context.js.map
93
+ }
@@ -2,8 +2,6 @@ import { isNumber, Bounds, getIntersectPoint } from "@visactor/vutils";
2
2
 
3
3
  import { bezierCurversToPath, pathToBezierCurves } from "./morphing-utils";
4
4
 
5
- import { normalizeRectAttributes } from "./rect-utils";
6
-
7
5
  export function splitToGrids(width, height, count) {
8
6
  const ratio = width / height;
9
7
  let rowCount, columnCount;
@@ -19,7 +17,7 @@ export function splitToGrids(width, height, count) {
19
17
  }
20
18
 
21
19
  export const splitRect = (rect, count) => {
22
- const {width: width, height: height} = normalizeRectAttributes(rect.attribute), grids = splitToGrids(width, height, count), res = [], gridHeight = height / grids.length;
20
+ const width = rect.getComputedAttribute("width"), height = rect.getComputedAttribute("height"), grids = splitToGrids(width, height, count), res = [], gridHeight = height / grids.length;
23
21
  for (let i = 0, rowCount = grids.length; i < rowCount; i++) {
24
22
  const columnCount = grids[i], gridWidth = width / columnCount;
25
23
  for (let j = 0; j < columnCount; j++) res.push({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":"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","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\nimport { normalizeRectAttributes } from './rect-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const { width, height } = normalizeRectAttributes(rect.attribute);\n\n const x = 0;\n const y = 0;\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}
1
+ {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":"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","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const x = 0;\n const y = 0;\n const width = rect.getComputedAttribute('width');\n const height = rect.getComputedAttribute('height');\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}
package/es/core/camera.js CHANGED
@@ -58,4 +58,4 @@ export class OrthoCamera {
58
58
  };
59
59
  }
60
60
  }
61
- //# sourceMappingURL=camera.js.map
61
+ //# sourceMappingURL=camera.js.map
package/es/env-check.js CHANGED
@@ -1,10 +1,17 @@
1
1
  let _isBrowserEnv;
2
2
 
3
3
  function initIsBrowserEnv() {
4
- if (null == _isBrowserEnv) try {
5
- _isBrowserEnv = !!window;
6
- } catch (err) {
7
- _isBrowserEnv = !1;
4
+ if (null == _isBrowserEnv) {
5
+ try {
6
+ _isBrowserEnv = !!window;
7
+ } catch (err) {
8
+ _isBrowserEnv = !1;
9
+ }
10
+ if (_isBrowserEnv) try {
11
+ _isBrowserEnv = !tt;
12
+ } catch (err) {
13
+ _isBrowserEnv = !0;
14
+ }
8
15
  }
9
16
  }
10
17
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-check.ts"],"names":[],"mappings":"AAAA,IAAI,aAAkC,CAAC;AAGvC,SAAS,gBAAgB;IACvB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,OAAO;KACR;IACD,IAAI;QAEF,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;KAC1B;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,GAAG,KAAK,CAAC;KACvB;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,gBAAgB,EAAE,CAAC;IACnB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC","file":"env-check.js","sourcesContent":["let _isBrowserEnv: boolean | undefined;\ndeclare const tt: any;\n\nfunction initIsBrowserEnv() {\n if (_isBrowserEnv != null) {\n return;\n }\n try {\n // @ts-ignore\n _isBrowserEnv = !!window;\n } catch (err: any) {\n _isBrowserEnv = false;\n }\n}\n\nexport function isBrowserEnv(): boolean {\n initIsBrowserEnv();\n return _isBrowserEnv;\n}\n\nexport function isNodeEnv() {\n initIsBrowserEnv();\n return !_isBrowserEnv;\n}\n\nexport function getCurrentEnv(): 'browser' | 'node' {\n return isBrowserEnv() ? 'browser' : 'node';\n}\n"]}
1
+ {"version":3,"sources":["../src/env-check.ts"],"names":[],"mappings":"AAAA,IAAI,aAAkC,CAAC;AAGvC,SAAS,gBAAgB;IACvB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,OAAO;KACR;IACD,IAAI;QAEF,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;KAC1B;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,GAAG,KAAK,CAAC;KACvB;IAED,IAAI,aAAa,EAAE;QACjB,IAAI;YAEF,aAAa,GAAG,CAAC,EAAE,CAAC;SACrB;QAAC,OAAO,GAAQ,EAAE;YACjB,aAAa,GAAG,IAAI,CAAC;SACtB;KACF;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,gBAAgB,EAAE,CAAC;IACnB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC","file":"env-check.js","sourcesContent":["let _isBrowserEnv: boolean | undefined;\ndeclare const tt: any;\n\nfunction initIsBrowserEnv() {\n if (_isBrowserEnv != null) {\n return;\n }\n try {\n // @ts-ignore\n _isBrowserEnv = !!window;\n } catch (err: any) {\n _isBrowserEnv = false;\n }\n // 字节小程序有window,判断环境中是否有tt,有tt就不是浏览器环境\n if (_isBrowserEnv) {\n try {\n // @ts-ignore\n _isBrowserEnv = !tt;\n } catch (err: any) {\n _isBrowserEnv = true;\n }\n }\n}\n\nexport function isBrowserEnv(): boolean {\n initIsBrowserEnv();\n return _isBrowserEnv;\n}\n\nexport function isNodeEnv() {\n initIsBrowserEnv();\n return !_isBrowserEnv;\n}\n\nexport function getCurrentEnv(): 'browser' | 'node' {\n return isBrowserEnv() ? 'browser' : 'node';\n}\n"]}
@@ -1,3 +1,5 @@
1
+ import { isNil } from "@visactor/vutils";
2
+
1
3
  import { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from "./graphic";
2
4
 
3
5
  import { CustomPath2D } from "../common/custom-path2d";
@@ -10,8 +12,6 @@ import { application } from "../application";
10
12
 
11
13
  import { RECT_NUMBER_TYPE } from "./constants";
12
14
 
13
- import { normalizeRectAttributes } from "../common/rect-utils";
14
-
15
15
  const RECT_UPDATE_TAG_KEY = [ "width", "x1", "y1", "height", "cornerRadius", ...GRAPHIC_UPDATE_TAG_KEY ];
16
16
 
17
17
  export class Rect extends Graphic {
@@ -44,7 +44,10 @@ export class Rect extends Graphic {
44
44
  return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);
45
45
  }
46
46
  toCustomPath() {
47
- const attribute = this.attribute, {x: x, y: y, width: width, height: height} = normalizeRectAttributes(attribute), path = new CustomPath2D;
47
+ const attribute = this.attribute;
48
+ let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width, height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height, x = 0, y = 0;
49
+ width < 0 && (x = width, width = -width), height < 0 && (y = height, height = -height);
50
+ const path = new CustomPath2D;
48
51
  return path.moveTo(x, y), path.rect(x, y, width, height), path;
49
52
  }
50
53
  clone() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import { isNil, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\nimport { normalizeRectAttributes } from '../common/rect-utils';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const attribute = this.attribute;\n const { x, y, width, height } = normalizeRectAttributes(attribute);\n\n const path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import { isNil, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport type { GraphicType, ICustomPath2D, IRect, IRectGraphicAttribute } from '../interface';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { RECT_NUMBER_TYPE } from './constants';\n\nconst RECT_UPDATE_TAG_KEY = ['width', 'x1', 'y1', 'height', 'cornerRadius', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Rect extends Graphic<IRectGraphicAttribute> implements IRect {\n type: GraphicType = 'rect';\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IRectGraphicAttribute) {\n super(params);\n this.numberType = RECT_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n return true;\n // 暂时不判断,理论上认为都是合法的,节省性能耗时\n // const { width, x1, y1, height } = this.attribute;\n // return (this._validNumber(width) || this._validNumber(x1)) && (this._validNumber(height) || this._validNumber(y1));\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const rectTheme = getTheme(this).rect;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRectAABBBounds(\n attribute,\n getTheme(this).rect,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = rectTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const rectTheme = getTheme(this).rect;\n return rectTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RECT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RECT_UPDATE_TAG_KEY);\n }\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const attribute = this.attribute;\n let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width;\n let height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height;\n let x = 0;\n let y = 0;\n\n if (width < 0) {\n x = width;\n width = -width;\n }\n\n if (height < 0) {\n y = height;\n height = -height;\n }\n\n const path = new CustomPath2D();\n path.moveTo(x, y);\n path.rect(x, y, width, height);\n\n return path;\n }\n\n clone() {\n return new Rect({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Rect.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRect(attributes: IRectGraphicAttribute): IRect {\n return new Rect(attributes);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-core",
3
- "version": "0.17.15-alpha.1",
3
+ "version": "0.17.15-alpha.2",
4
4
  "description": "",
5
5
  "sideEffects": [
6
6
  "./src/modules.ts"
@@ -33,8 +33,8 @@
33
33
  "vite": "3.2.6",
34
34
  "typescript": "4.9.5",
35
35
  "@internal/bundler": "0.0.1",
36
- "@internal/eslint-config": "0.0.1",
37
- "@internal/ts-config": "0.0.1"
36
+ "@internal/ts-config": "0.0.1",
37
+ "@internal/eslint-config": "0.0.1"
38
38
  },
39
39
  "keywords": [
40
40
  "VisActor",
@@ -1,7 +0,0 @@
1
- import type { IRectGraphicAttribute } from '../interface/graphic/rect';
2
- export declare const normalizeRectAttributes: (attribute: IRectGraphicAttribute) => {
3
- x: number;
4
- y: number;
5
- width: number;
6
- height: number;
7
- };
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: !0
5
- }), exports.normalizeRectAttributes = void 0;
6
-
7
- const vutils_1 = require("@visactor/vutils"), normalizeRectAttributes = attribute => {
8
- if (!attribute) return {
9
- x: 0,
10
- y: 0,
11
- width: 0,
12
- height: 0
13
- };
14
- let width = (0, vutils_1.isNil)(attribute.width) ? attribute.x1 - attribute.x : attribute.width, height = (0,
15
- vutils_1.isNil)(attribute.height) ? attribute.y1 - attribute.y : attribute.height, x = 0, y = 0;
16
- return width < 0 ? (x = width, width = -width) : Number.isNaN(width) && (width = 0),
17
- height < 0 ? (y = height, height = -height) : Number.isNaN(height) && (height = 0),
18
- {
19
- x: x,
20
- y: y,
21
- width: width,
22
- height: height
23
- };
24
- };
25
-
26
- exports.normalizeRectAttributes = normalizeRectAttributes;
27
- //# sourceMappingURL=rect-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/rect-utils.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGlC,MAAM,uBAAuB,GAAG,CAAC,SAAgC,EAAE,EAAE;IAC1E,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAC5C;IAED,IAAI,KAAK,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;IAClF,IAAI,MAAM,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACrF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,CAAC,GAAG,KAAK,CAAC;QACV,KAAK,GAAG,CAAC,KAAK,CAAC;KAChB;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9B,KAAK,GAAG,CAAC,CAAC;KACX;IAED,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,CAAC,GAAG,MAAM,CAAC;QACX,MAAM,GAAG,CAAC,MAAM,CAAC;KAClB;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,GAAG,CAAC,CAAC;KACZ;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC,CAAC;AAzBW,QAAA,uBAAuB,2BAyBlC","file":"rect-utils.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '../interface/graphic/rect';\n\nexport const normalizeRectAttributes = (attribute: IRectGraphicAttribute) => {\n if (!attribute) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width;\n let height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height;\n let x = 0;\n let y = 0;\n\n if (width < 0) {\n x = width;\n width = -width;\n } else if (Number.isNaN(width)) {\n width = 0;\n }\n\n if (height < 0) {\n y = height;\n height = -height;\n } else if (Number.isNaN(height)) {\n height = 0;\n }\n\n return { x, y, width, height };\n};\n"]}
@@ -1,7 +0,0 @@
1
- import type { IRectGraphicAttribute } from '../interface/graphic/rect';
2
- export declare const normalizeRectAttributes: (attribute: IRectGraphicAttribute) => {
3
- x: number;
4
- y: number;
5
- width: number;
6
- height: number;
7
- };
@@ -1,20 +0,0 @@
1
- import { isNil } from "@visactor/vutils";
2
-
3
- export const normalizeRectAttributes = attribute => {
4
- if (!attribute) return {
5
- x: 0,
6
- y: 0,
7
- width: 0,
8
- height: 0
9
- };
10
- let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width, height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height, x = 0, y = 0;
11
- return width < 0 ? (x = width, width = -width) : Number.isNaN(width) && (width = 0),
12
- height < 0 ? (y = height, height = -height) : Number.isNaN(height) && (height = 0),
13
- {
14
- x: x,
15
- y: y,
16
- width: width,
17
- height: height
18
- };
19
- };
20
- //# sourceMappingURL=rect-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/rect-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAgC,EAAE,EAAE;IAC1E,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAC5C;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;IAClF,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACrF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,CAAC,GAAG,KAAK,CAAC;QACV,KAAK,GAAG,CAAC,KAAK,CAAC;KAChB;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9B,KAAK,GAAG,CAAC,CAAC;KACX;IAED,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,CAAC,GAAG,MAAM,CAAC;QACX,MAAM,GAAG,CAAC,MAAM,CAAC;KAClB;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,GAAG,CAAC,CAAC;KACZ;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC,CAAC","file":"rect-utils.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '../interface/graphic/rect';\n\nexport const normalizeRectAttributes = (attribute: IRectGraphicAttribute) => {\n if (!attribute) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n let width = isNil(attribute.width) ? attribute.x1 - attribute.x : attribute.width;\n let height = isNil(attribute.height) ? attribute.y1 - attribute.y : attribute.height;\n let x = 0;\n let y = 0;\n\n if (width < 0) {\n x = width;\n width = -width;\n } else if (Number.isNaN(width)) {\n width = 0;\n }\n\n if (height < 0) {\n y = height;\n height = -height;\n } else if (Number.isNaN(height)) {\n height = 0;\n }\n\n return { x, y, width, height };\n};\n"]}