@visactor/vrender-core 1.1.11-alpha.1 → 1.1.12
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.
- package/cjs/canvas/conical-gradient.js +1 -1
- package/cjs/canvas/constants.js +1 -1
- package/cjs/canvas/empty-context.js +1 -1
- package/cjs/canvas/index.js +1 -1
- package/cjs/canvas/util.js +1 -1
- package/cjs/common/area-cache.d.ts +11 -0
- package/cjs/common/area-cache.js +115 -0
- package/cjs/common/area-cache.js.map +1 -0
- package/cjs/common/bounds-context.js +2 -1
- package/cjs/common/contribution-store-state.js +1 -2
- package/cjs/common/generator.d.ts +0 -1
- package/cjs/common/generator.js +13 -2
- package/cjs/common/generator.js.map +1 -1
- package/cjs/common/performance-raf.js +2 -1
- package/cjs/common/render-command-list.js +1 -2
- package/cjs/common/render-curve.d.ts +3 -0
- package/cjs/common/render-curve.js +16 -17
- package/cjs/common/render-curve.js.map +1 -1
- package/cjs/common/simplify.js +1 -1
- package/cjs/common/sort.js +1 -1
- package/cjs/common/split-path.js +1 -1
- package/cjs/common/text.js +1 -1
- package/cjs/graphic/area.js +3 -3
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/graphic.js +1 -0
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/line.js +4 -4
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/text.js +17 -7
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/wrap-text.js +4 -2
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +18 -92
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-area-render.d.ts +5 -1
- package/cjs/render/contributions/render/incremental-area-render.js +29 -7
- package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
- package/dist/index.es.js +233 -161
- package/es/canvas/conical-gradient.js +1 -1
- package/es/canvas/constants.js +1 -1
- package/es/canvas/empty-context.js +1 -1
- package/es/canvas/index.js +1 -1
- package/es/canvas/util.js +1 -1
- package/es/common/area-cache.d.ts +11 -0
- package/es/common/area-cache.js +113 -0
- package/es/common/area-cache.js.map +1 -0
- package/es/common/bounds-context.js +2 -1
- package/es/common/contribution-store-state.js +1 -2
- package/es/common/generator.d.ts +0 -1
- package/es/common/generator.js +12 -3
- package/es/common/generator.js.map +1 -1
- package/es/common/performance-raf.js +2 -1
- package/es/common/render-command-list.js +1 -2
- package/es/common/render-curve.d.ts +3 -0
- package/es/common/render-curve.js +15 -16
- package/es/common/render-curve.js.map +1 -1
- package/es/common/simplify.js +1 -1
- package/es/common/sort.js +1 -1
- package/es/common/split-path.js +1 -1
- package/es/common/text.js +1 -1
- package/es/graphic/area.js +3 -3
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/graphic.js +1 -0
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/line.js +4 -4
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/text.js +17 -7
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/wrap-text.js +4 -2
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/render/contributions/render/area-render.js +18 -92
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/incremental-area-render.d.ts +5 -1
- package/es/render/contributions/render/incremental-area-render.js +28 -6
- package/es/render/contributions/render/incremental-area-render.js.map +1 -1
- package/package.json +2 -1
|
@@ -128,4 +128,4 @@ function createConicalGradient(context, stops, x, y, deltaAngle, startAngle, end
|
|
|
128
128
|
|
|
129
129
|
ConicalPatternStore.cache = {}, ConicalPatternStore.ImageSize = [ 20, 40, 80, 160, 320, 640, 1280, 2560 ],
|
|
130
130
|
exports.getConicGradientAt = getConicGradientAt, exports.createConicalGradient = createConicalGradient;
|
|
131
|
-
//# sourceMappingURL=conical-gradient.js.map
|
|
131
|
+
//# sourceMappingURL=conical-gradient.js.map
|
package/cjs/canvas/constants.js
CHANGED
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Context2dFactory = exports.CanvasFactory = void 0, exports.CanvasFactory = Symbol.for("CanvasFactory"),
|
|
6
6
|
exports.Context2dFactory = Symbol.for("Context2dFactory");
|
|
7
|
-
//# sourceMappingURL=constants.js.map
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
package/cjs/canvas/index.js
CHANGED
|
@@ -19,4 +19,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
value: !0
|
|
20
20
|
}), __exportStar(require("./constants"), exports), __exportStar(require("./empty-context"), exports),
|
|
21
21
|
__exportStar(require("./contributions/base-canvas"), exports), __exportStar(require("./conical-gradient"), exports);
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/canvas/util.js
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type IPointLike } from '@visactor/vutils';
|
|
2
|
+
import type { IAreaCacheItem, IAreaSegment, ICurveType, IDirection } from '../interface';
|
|
3
|
+
export interface AreaRenderCacheItem extends IAreaCacheItem {
|
|
4
|
+
sourceSegmentIndex: number;
|
|
5
|
+
direction: IDirection;
|
|
6
|
+
}
|
|
7
|
+
export declare function getAreaPointRuns(points: IPointLike[], connectedType: 'none' | 'connect', startPoint?: IPointLike): {
|
|
8
|
+
runs: IPointLike[][];
|
|
9
|
+
tail: IPointLike;
|
|
10
|
+
};
|
|
11
|
+
export declare function calcAreaCache(points: IPointLike[] | undefined, segments: IAreaSegment[] | undefined, curveType: ICurveType, connectedType: 'none' | 'connect', curveTension: number): AreaRenderCacheItem | AreaRenderCacheItem[] | null;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.calcAreaCache = exports.getAreaPointRuns = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), enums_1 = require("./enums"), segment_1 = require("./segment"), line_1 = require("./segment/curve/line");
|
|
8
|
+
|
|
9
|
+
function getAreaPointRuns(points, connectedType, startPoint) {
|
|
10
|
+
const runs = [];
|
|
11
|
+
if (!points.some((p => !1 === p.defined))) {
|
|
12
|
+
const run = startPoint ? [ startPoint, ...points ] : points;
|
|
13
|
+
return run.length && runs.push(run), {
|
|
14
|
+
runs: runs,
|
|
15
|
+
tail: run[run.length - 1]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
let run = startPoint ? [ startPoint ] : [];
|
|
19
|
+
for (let i = 0; i < points.length; i++) {
|
|
20
|
+
const point = points[i];
|
|
21
|
+
!1 !== point.defined ? run.push(point) : "connect" !== connectedType && (run.length && runs.push(run),
|
|
22
|
+
run = []);
|
|
23
|
+
}
|
|
24
|
+
return run.length && runs.push(run), {
|
|
25
|
+
runs: runs,
|
|
26
|
+
tail: run[run.length - 1]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function joinAreaPaths(paths) {
|
|
31
|
+
var _a;
|
|
32
|
+
if (1 === paths.length) return paths[0];
|
|
33
|
+
const curves = [];
|
|
34
|
+
for (let i = 0; i < paths.length; i++) {
|
|
35
|
+
const next = paths[i].curves;
|
|
36
|
+
if (curves.length) {
|
|
37
|
+
const previous = curves[curves.length - 1], gap = new line_1.LineCurve(null !== (_a = previous.p3) && void 0 !== _a ? _a : previous.p1, next[0].p0);
|
|
38
|
+
gap.defined = !1, gap.originP1 = previous.originP2, gap.originP2 = next[0].originP1,
|
|
39
|
+
curves.push(gap);
|
|
40
|
+
}
|
|
41
|
+
for (let j = 0; j < next.length; j++) curves.push(next[j]);
|
|
42
|
+
}
|
|
43
|
+
const path = paths[paths.length - 1];
|
|
44
|
+
return path.curves = curves, path.length = NaN, path;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function compileAreaRuns(runs, curveType, curveTension, sourceSegmentIndex, topStart, bottomStart) {
|
|
48
|
+
var _a, _b, _c, _d;
|
|
49
|
+
const tops = [], bottoms = [], bottomType = "stepBefore" === curveType ? "stepAfter" : "stepAfter" === curveType ? "stepBefore" : curveType;
|
|
50
|
+
for (let i = 0; i < runs.length; i++) {
|
|
51
|
+
const points = runs[i], startPoint = 0 === i ? topStart : void 0;
|
|
52
|
+
if (points.length < 2 - Number(!!startPoint)) continue;
|
|
53
|
+
const bottomPoints = [];
|
|
54
|
+
for (let j = points.length - 1; j >= 0; j--) {
|
|
55
|
+
const p = points[j];
|
|
56
|
+
bottomPoints.push({
|
|
57
|
+
x: null !== (_a = p.x1) && void 0 !== _a ? _a : p.x,
|
|
58
|
+
y: null !== (_b = p.y1) && void 0 !== _b ? _b : p.y
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
0 === i && bottomStart && bottomPoints.push({
|
|
62
|
+
x: null !== (_c = bottomStart.x1) && void 0 !== _c ? _c : bottomStart.x,
|
|
63
|
+
y: null !== (_d = bottomStart.y1) && void 0 !== _d ? _d : bottomStart.y
|
|
64
|
+
});
|
|
65
|
+
const top = (0, segment_1.calcLineCache)(points, curveType, {
|
|
66
|
+
startPoint: startPoint,
|
|
67
|
+
curveTension: curveTension
|
|
68
|
+
}), bottom = (0, segment_1.calcLineCache)(bottomPoints, bottomType, {
|
|
69
|
+
curveTension: curveTension
|
|
70
|
+
});
|
|
71
|
+
(null == top ? void 0 : top.curves.length) && (null == bottom ? void 0 : bottom.curves.length) && (tops.push(top),
|
|
72
|
+
bottoms.push(bottom));
|
|
73
|
+
}
|
|
74
|
+
return tops.length ? {
|
|
75
|
+
top: joinAreaPaths(tops),
|
|
76
|
+
bottom: joinAreaPaths(bottoms.reverse()),
|
|
77
|
+
sourceSegmentIndex: sourceSegmentIndex,
|
|
78
|
+
direction: enums_1.Direction.ROW
|
|
79
|
+
} : null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function calcAreaCache(points, segments, curveType, connectedType, curveTension) {
|
|
83
|
+
var _a;
|
|
84
|
+
const caches = [];
|
|
85
|
+
let tail, topTail, first, last;
|
|
86
|
+
const count = segments ? segments.length : 1;
|
|
87
|
+
for (let i = 0; i < count; i++) {
|
|
88
|
+
const segmentPoints = segments ? segments[i].points : null != points ? points : [], result = getAreaPointRuns(segmentPoints, connectedType), canContinue = "connect" === connectedType || !1 !== (null === (_a = segmentPoints[0]) || void 0 === _a ? void 0 : _a.defined);
|
|
89
|
+
if (result.runs.length) {
|
|
90
|
+
first = null != first ? first : result.runs[0][0];
|
|
91
|
+
const lastRun = result.runs[result.runs.length - 1];
|
|
92
|
+
last = lastRun[lastRun.length - 1];
|
|
93
|
+
}
|
|
94
|
+
const cache = compileAreaRuns(result.runs, curveType, curveTension, i, canContinue ? topTail : void 0, canContinue ? tail : void 0);
|
|
95
|
+
if (cache && caches.push(cache), result.tail) {
|
|
96
|
+
tail = result.tail;
|
|
97
|
+
const lastRun = result.runs[result.runs.length - 1];
|
|
98
|
+
topTail = cache && (1 === result.runs.length || lastRun.length > 1) ? {
|
|
99
|
+
x: cache.top.endX,
|
|
100
|
+
y: cache.top.endY
|
|
101
|
+
} : tail;
|
|
102
|
+
} else "connect" !== connectedType && segmentPoints.length && (tail = topTail = void 0);
|
|
103
|
+
}
|
|
104
|
+
if (!caches.length) return null;
|
|
105
|
+
let direction = enums_1.Direction.ROW;
|
|
106
|
+
if (null != last.x1) {
|
|
107
|
+
const dx = (0, vutils_1.abs)(last.x - first.x), dy = (0, vutils_1.abs)(last.y - first.y);
|
|
108
|
+
(null == last.y1 || Number.isFinite(dx + dy) && dy >= dx) && (direction = enums_1.Direction.COLUMN);
|
|
109
|
+
}
|
|
110
|
+
for (let i = 0; i < caches.length; i++) caches[i].direction = direction;
|
|
111
|
+
return segments ? caches : caches[0];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
exports.getAreaPointRuns = getAreaPointRuns, exports.calcAreaCache = calcAreaCache;
|
|
115
|
+
//# sourceMappingURL=area-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/area-cache.ts"],"names":[],"mappings":"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","file":"area-cache.js","sourcesContent":["import { abs, type IPointLike } from '@visactor/vutils';\nimport type { IAreaCacheItem, IAreaSegment, ICurveType, IDirection, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { calcLineCache } from './segment';\nimport type { SegContext } from './seg-context';\nimport { LineCurve } from './segment/curve/line';\n\nexport interface AreaRenderCacheItem extends IAreaCacheItem {\n sourceSegmentIndex: number;\n direction: IDirection;\n}\n\n/** Select both boundaries together, before interpolation can read undefined coordinates. */\nexport function getAreaPointRuns(points: IPointLike[], connectedType: 'none' | 'connect', startPoint?: IPointLike) {\n const runs: IPointLike[][] = [];\n if (!points.some(p => p.defined === false)) {\n const run = startPoint ? [startPoint, ...points] : points;\n if (run.length) {\n runs.push(run);\n }\n return { runs, tail: run[run.length - 1] };\n }\n\n let run: IPointLike[] = startPoint ? [startPoint] : [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (point.defined !== false) {\n run.push(point);\n } else if (connectedType !== 'connect') {\n if (run.length) {\n runs.push(run);\n }\n run = [];\n }\n }\n if (run.length) {\n runs.push(run);\n }\n return { runs, tail: run[run.length - 1] };\n}\n\n/** Join completed caches without restarting interpolation across a missing-data gap. */\nfunction joinAreaPaths(paths: ISegPath2D[]): ISegPath2D {\n if (paths.length === 1) {\n return paths[0];\n }\n const curves: ISegPath2D['curves'] = [];\n for (let i = 0; i < paths.length; i++) {\n const next = paths[i].curves;\n if (curves.length) {\n const previous = curves[curves.length - 1];\n const gap = new LineCurve(previous.p3 ?? previous.p1, next[0].p0);\n gap.defined = false;\n gap.originP1 = previous.originP2;\n gap.originP2 = next[0].originP1;\n curves.push(gap);\n }\n for (let j = 0; j < next.length; j++) {\n curves.push(next[j]);\n }\n }\n // These are completed, read-only drawing caches. Reuse the final context so its\n // endX/endY still describe the final curve, without copying curve objects.\n const path = paths[paths.length - 1] as SegContext;\n path.curves = curves;\n path.length = NaN;\n return path;\n}\n\nfunction compileAreaRuns(\n runs: IPointLike[][],\n curveType: ICurveType,\n curveTension: number,\n sourceSegmentIndex: number,\n topStart?: IPointLike,\n bottomStart?: IPointLike\n): AreaRenderCacheItem | null {\n const tops: ISegPath2D[] = [];\n const bottoms: ISegPath2D[] = [];\n const bottomType = curveType === 'stepBefore' ? 'stepAfter' : curveType === 'stepAfter' ? 'stepBefore' : curveType;\n for (let i = 0; i < runs.length; i++) {\n const points = runs[i];\n const startPoint = i === 0 ? topStart : undefined;\n if (points.length < 2 - Number(!!startPoint)) {\n continue;\n }\n const bottomPoints: IPointLike[] = [];\n for (let j = points.length - 1; j >= 0; j--) {\n const p = points[j];\n bottomPoints.push({ x: p.x1 ?? p.x, y: p.y1 ?? p.y });\n }\n if (i === 0 && bottomStart) {\n bottomPoints.push({ x: bottomStart.x1 ?? bottomStart.x, y: bottomStart.y1 ?? bottomStart.y });\n }\n // Preserve the curve generators' existing startPoint/closure semantics. In\n // particular, don't prepend a styled segment's startPoint to its input array.\n const top = calcLineCache(points, curveType, { startPoint, curveTension });\n const bottom = calcLineCache(bottomPoints, bottomType, { curveTension });\n if (top?.curves.length && bottom?.curves.length) {\n tops.push(top);\n bottoms.push(bottom);\n }\n }\n if (!tops.length) {\n return null;\n }\n return {\n top: joinAreaPaths(tops),\n bottom: joinAreaPaths(bottoms.reverse()),\n sourceSegmentIndex,\n direction: Direction.ROW\n };\n}\n\nexport function calcAreaCache(\n points: IPointLike[] | undefined,\n segments: IAreaSegment[] | undefined,\n curveType: ICurveType,\n connectedType: 'none' | 'connect',\n curveTension: number\n): AreaRenderCacheItem | AreaRenderCacheItem[] | null {\n const caches: AreaRenderCacheItem[] = [];\n let tail: IPointLike;\n let topTail: IPointLike;\n let first: IPointLike;\n let last: IPointLike;\n const count = segments ? segments.length : 1;\n for (let i = 0; i < count; i++) {\n const segmentPoints = segments ? segments[i].points : points ?? [];\n const result = getAreaPointRuns(segmentPoints, connectedType);\n const canContinue = connectedType === 'connect' || segmentPoints[0]?.defined !== false;\n if (result.runs.length) {\n first = first ?? result.runs[0][0];\n const lastRun = result.runs[result.runs.length - 1];\n last = lastRun[lastRun.length - 1];\n }\n const cache = compileAreaRuns(\n result.runs,\n curveType,\n curveTension,\n i,\n canContinue ? topTail : undefined,\n canContinue ? tail : undefined\n );\n if (cache) {\n caches.push(cache);\n }\n if (result.tail) {\n tail = result.tail;\n const lastRun = result.runs[result.runs.length - 1];\n topTail =\n cache && (result.runs.length === 1 || lastRun.length > 1) ? { x: cache.top.endX, y: cache.top.endY } : tail;\n } else if (connectedType !== 'connect' && segmentPoints.length) {\n tail = topTail = undefined;\n }\n }\n if (!caches.length) {\n return null;\n }\n let direction = Direction.ROW;\n if (last.x1 != null) {\n const dx = abs(last.x - first.x);\n const dy = abs(last.y - first.y);\n if (last.y1 == null || (Number.isFinite(dx + dy) && dy >= dx)) {\n direction = Direction.COLUMN;\n }\n }\n for (let i = 0; i < caches.length; i++) {\n caches[i].direction = direction;\n }\n return segments ? caches : caches[0];\n}\n"]}
|
|
@@ -16,5 +16,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.getContributionStoreState = exports.CONTRIBUTION_STORE_STATE_SYMBOL = void 0,
|
|
18
18
|
exports.CONTRIBUTION_STORE_STATE_SYMBOL = Symbol.for("@visactor/vrender-core/contribution-store-state"),
|
|
19
|
-
exports.getContributionStoreState = getContributionStoreState;
|
|
20
|
-
//# sourceMappingURL=contribution-store-state.js.map
|
|
19
|
+
exports.getContributionStoreState = getContributionStoreState;
|
package/cjs/common/generator.js
CHANGED
|
@@ -4,11 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Generator = void 0;
|
|
6
6
|
|
|
7
|
+
const GENERATOR_STATE_SYMBOL = Symbol.for("@visactor/vrender-core/generator-state");
|
|
8
|
+
|
|
9
|
+
function getGeneratorState() {
|
|
10
|
+
const scope = globalThis;
|
|
11
|
+
return scope[GENERATOR_STATE_SYMBOL] || (scope[GENERATOR_STATE_SYMBOL] = {
|
|
12
|
+
autoIncrementId: 0
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const generatorState = getGeneratorState();
|
|
17
|
+
|
|
7
18
|
class Generator {
|
|
8
19
|
static GenAutoIncrementId() {
|
|
9
|
-
return
|
|
20
|
+
return generatorState.autoIncrementId++;
|
|
10
21
|
}
|
|
11
22
|
}
|
|
12
23
|
|
|
13
|
-
exports.Generator = Generator
|
|
24
|
+
exports.Generator = Generator;
|
|
14
25
|
//# sourceMappingURL=generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/generator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/common/generator.ts"],"names":[],"mappings":";;;AAIA,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAEpF,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,UAEb,CAAC;IACF,OAAO,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;AACnG,CAAC;AAID,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;AAE3C,MAAa,SAAS;IACpB,MAAM,CAAC,kBAAkB;QACvB,OAAO,cAAc,CAAC,eAAe,EAAE,CAAC;IAC1C,CAAC;CACF;AAJD,8BAIC","file":"generator.js","sourcesContent":["interface IGeneratorState {\n autoIncrementId: number;\n}\n\nconst GENERATOR_STATE_SYMBOL = Symbol.for('@visactor/vrender-core/generator-state');\n\nfunction getGeneratorState(): IGeneratorState {\n const scope = globalThis as typeof globalThis & {\n [GENERATOR_STATE_SYMBOL]?: IGeneratorState;\n };\n return scope[GENERATOR_STATE_SYMBOL] || (scope[GENERATOR_STATE_SYMBOL] = { autoIncrementId: 0 });\n}\n\n// Application and legacy runtime state are shared across bundles. Keep node ids in the same\n// global scope so a shared Stage cannot receive a Layer with a colliding id from another bundle.\nconst generatorState = getGeneratorState();\n\nexport class Generator {\n static GenAutoIncrementId(): number {\n return generatorState.autoIncrementId++;\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IPointLike } from '@visactor/vutils';
|
|
1
2
|
import type { IAreaSegment, IClipRangeByDimensionType, IPath2D, ISegment, ISegPath2D } from '../interface';
|
|
2
3
|
export declare function drawSegments(path: IPath2D, segPath: ISegPath2D, percent: number, clipRangeByDimension: IClipRangeByDimensionType, params?: {
|
|
3
4
|
offsetX?: number;
|
|
@@ -15,4 +16,6 @@ export declare function drawIncrementalSegments(path: IPath2D, lastSeg: ISegment
|
|
|
15
16
|
export declare function drawIncrementalAreaSegments(path: IPath2D, lastSeg: IAreaSegment, segments: IAreaSegment, params?: {
|
|
16
17
|
offsetX?: number;
|
|
17
18
|
offsetY?: number;
|
|
19
|
+
connectedType?: 'none' | 'connect';
|
|
20
|
+
startPoint?: IPointLike;
|
|
18
21
|
}): void;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.drawIncrementalAreaSegments = exports.drawIncrementalSegments = exports.drawSegments = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), enums_1 = require("./enums"), render_utils_1 = require("./render-utils");
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), enums_1 = require("./enums"), render_utils_1 = require("./render-utils"), area_cache_1 = require("./area-cache");
|
|
8
8
|
|
|
9
9
|
function drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ) {
|
|
10
10
|
var _a;
|
|
@@ -78,23 +78,22 @@ function drawIncrementalSegments(path, lastSeg, segments, params) {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
function drawIncrementalAreaSegments(path, lastSeg, segments, params) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
var _a, _b;
|
|
82
|
+
const {offsetX: offsetX = 0, offsetY: offsetY = 0, connectedType: connectedType = "none"} = params || {}, startPoint = params && "startPoint" in params ? params.startPoint : lastSeg && (0,
|
|
83
|
+
area_cache_1.getAreaPointRuns)(lastSeg.points, connectedType).tail, {runs: runs} = (0,
|
|
84
|
+
area_cache_1.getAreaPointRuns)(segments.points, connectedType, startPoint);
|
|
85
|
+
for (let i = 0; i < runs.length; i++) {
|
|
86
|
+
const points = runs[i];
|
|
87
|
+
if (!(points.length < 2)) {
|
|
88
|
+
path.moveTo(points[0].x + offsetX, points[0].y + offsetY);
|
|
89
|
+
for (let j = 1; j < points.length; j++) path.lineTo(points[j].x + offsetX, points[j].y + offsetY);
|
|
90
|
+
for (let j = points.length - 1; j >= 0; j--) {
|
|
91
|
+
const p = points[j];
|
|
92
|
+
path.lineTo(null !== (_a = p.x1) && void 0 !== _a ? _a : p.x, null !== (_b = p.y1) && void 0 !== _b ? _b : p.y);
|
|
93
|
+
}
|
|
94
|
+
path.closePath();
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
-
path.closePath();
|
|
97
|
-
}));
|
|
96
|
+
}
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
exports.drawSegments = drawSegments, exports.drawIncrementalSegments = drawIncrementalSegments,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/render-curve.ts"],"names":[],"mappings":"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","file":"render-curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { min } from '@visactor/vutils';\nimport type {\n IAreaSegment,\n IClipRangeByDimensionType,\n ICurve,\n IDirection,\n IPath2D,\n ISegment,\n ISegPath2D\n} from '../interface';\nimport { Direction } from './enums';\nimport { drawSegItem } from './render-utils';\n\nfunction drawEachCurve(\n path: IPath2D,\n curve: ICurve<IPoint>,\n lastCurve: ICurve<IPoint>,\n defined0: boolean,\n offsetX: number,\n offsetY: number,\n offsetZ: number\n) {\n let p0 = curve.p0;\n let newDefined0 = defined0;\n\n if (lastCurve && lastCurve.originP1 === lastCurve.originP2) {\n p0 = lastCurve.p0;\n }\n if (curve.defined) {\n // 非法变合法需要lineTo,合法变非法需要moveTo,初始非法需要moveTo\n if (!defined0) {\n path.lineTo(p0.x + offsetX, p0.y + offsetY, offsetZ);\n newDefined0 = !defined0;\n }\n } else {\n // 找到合法的点\n const { originP1, originP2 } = curve;\n let validP: IPointLike;\n // 只能第一个curve才可以用p0作为合法点,后面的curve都不应该算p1,因为已经算在前面了\n // lastCurve只在第一个curve不存在\n if (originP1 && originP1.defined !== false && !lastCurve) {\n validP = p0;\n } else if (originP1 && originP2.defined !== false) {\n validP = curve.p3 ?? curve.p1;\n }\n // 合法/(初始)变非法,moveTo\n if (defined0) {\n newDefined0 = !defined0;\n const x = validP ? validP.x : curve.p0.x;\n const y = validP ? validP.y : curve.p0.y;\n path.moveTo(x + offsetX, y + offsetY, offsetZ);\n } else {\n // 非法变非法/合法,看情况要不要lineTo\n if (validP) {\n // 非法变合法,需要lineTo\n newDefined0 = !defined0;\n path.lineTo(validP.x + offsetX, validP.y + offsetY, offsetZ);\n }\n }\n }\n\n return newDefined0;\n}\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n drawConnect?: boolean; // 是否是绘制connect区域的效果\n mode?: 'none' | 'connect';\n zeroX?: number;\n zeroY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0, mode = 'none', drawConnect = false } = params || {};\n // none的connect不需要draw\n if (drawConnect && mode === 'none') {\n return;\n }\n if (!segPath) {\n return;\n }\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n if (drawConnect) {\n // return;\n let defined0 = true;\n let lastCurve: ICurve<IPoint>;\n curves.forEach((curve, i) => {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n return;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n });\n } else {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n }\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: IDirection | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let defined0 = true;\n let lastCurve: ICurve<IPoint> = null;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n if (drawConnect) {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n continue;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n } else {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const { points } = segments;\n // 分段\n const definedPointsList: IPointLike[][] = [];\n let lastIdx = 0;\n for (let i = 0; i < points.length; i++) {\n if (points[i].defined === false) {\n if (lastIdx + 1 !== i) {\n definedPointsList.slice(lastIdx, i);\n }\n lastIdx = i;\n }\n }\n definedPointsList.length === 0;\n definedPointsList.push(points);\n definedPointsList.forEach((points, i) => {\n const startP = lastSeg && i === 0 ? lastSeg.points[lastSeg.points.length - 1] : points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n // 绘制上层\n points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n // 绘制下层\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.lineTo(startP.x1 ?? startP.x, startP.y1 ?? startP.y);\n path.closePath();\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/render-curve.ts"],"names":[],"mappings":"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","file":"render-curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { min } from '@visactor/vutils';\nimport type {\n IAreaSegment,\n IClipRangeByDimensionType,\n ICurve,\n IDirection,\n IPath2D,\n ISegment,\n ISegPath2D\n} from '../interface';\nimport { Direction } from './enums';\nimport { drawSegItem } from './render-utils';\nimport { getAreaPointRuns } from './area-cache';\n\nfunction drawEachCurve(\n path: IPath2D,\n curve: ICurve<IPoint>,\n lastCurve: ICurve<IPoint>,\n defined0: boolean,\n offsetX: number,\n offsetY: number,\n offsetZ: number\n) {\n let p0 = curve.p0;\n let newDefined0 = defined0;\n\n if (lastCurve && lastCurve.originP1 === lastCurve.originP2) {\n p0 = lastCurve.p0;\n }\n if (curve.defined) {\n // 非法变合法需要lineTo,合法变非法需要moveTo,初始非法需要moveTo\n if (!defined0) {\n path.lineTo(p0.x + offsetX, p0.y + offsetY, offsetZ);\n newDefined0 = !defined0;\n }\n } else {\n // 找到合法的点\n const { originP1, originP2 } = curve;\n let validP: IPointLike;\n // 只能第一个curve才可以用p0作为合法点,后面的curve都不应该算p1,因为已经算在前面了\n // lastCurve只在第一个curve不存在\n if (originP1 && originP1.defined !== false && !lastCurve) {\n validP = p0;\n } else if (originP1 && originP2.defined !== false) {\n validP = curve.p3 ?? curve.p1;\n }\n // 合法/(初始)变非法,moveTo\n if (defined0) {\n newDefined0 = !defined0;\n const x = validP ? validP.x : curve.p0.x;\n const y = validP ? validP.y : curve.p0.y;\n path.moveTo(x + offsetX, y + offsetY, offsetZ);\n } else {\n // 非法变非法/合法,看情况要不要lineTo\n if (validP) {\n // 非法变合法,需要lineTo\n newDefined0 = !defined0;\n path.lineTo(validP.x + offsetX, validP.y + offsetY, offsetZ);\n }\n }\n }\n\n return newDefined0;\n}\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n drawConnect?: boolean; // 是否是绘制connect区域的效果\n mode?: 'none' | 'connect';\n zeroX?: number;\n zeroY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0, mode = 'none', drawConnect = false } = params || {};\n // none的connect不需要draw\n if (drawConnect && mode === 'none') {\n return;\n }\n if (!segPath) {\n return;\n }\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n if (drawConnect) {\n // return;\n let defined0 = true;\n let lastCurve: ICurve<IPoint>;\n curves.forEach((curve, i) => {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n return;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n });\n } else {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n }\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: IDirection | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let defined0 = true;\n let lastCurve: ICurve<IPoint> = null;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n if (drawConnect) {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n continue;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n } else {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n connectedType?: 'none' | 'connect';\n startPoint?: IPointLike;\n }\n) {\n const { offsetX = 0, offsetY = 0, connectedType = 'none' } = params || {};\n const startPoint =\n params && 'startPoint' in params\n ? params.startPoint\n : lastSeg && getAreaPointRuns(lastSeg.points, connectedType).tail;\n const { runs } = getAreaPointRuns(segments.points, connectedType, startPoint);\n for (let i = 0; i < runs.length; i++) {\n const points = runs[i];\n if (points.length < 2) {\n continue;\n }\n path.moveTo(points[0].x + offsetX, points[0].y + offsetY);\n for (let j = 1; j < points.length; j++) {\n path.lineTo(points[j].x + offsetX, points[j].y + offsetY);\n }\n for (let j = points.length - 1; j >= 0; j--) {\n const p = points[j];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.closePath();\n }\n}\n"]}
|
package/cjs/common/simplify.js
CHANGED
|
@@ -36,4 +36,4 @@ function flatten_simplify(points, tolerance, highestQuality) {
|
|
|
36
36
|
Object.defineProperty(exports, "__esModule", {
|
|
37
37
|
value: !0
|
|
38
38
|
}), exports.flatten_simplify = void 0, exports.flatten_simplify = flatten_simplify;
|
|
39
|
-
//# sourceMappingURL=simplify.js.map
|
|
39
|
+
//# sourceMappingURL=simplify.js.map
|
package/cjs/common/sort.js
CHANGED
|
@@ -101,4 +101,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
101
101
|
value: !0
|
|
102
102
|
}), exports.findNextGraphic = exports.foreachAsync = exports.foreach = void 0, exports.foreach = foreach,
|
|
103
103
|
exports.foreachAsync = foreachAsync, exports.findNextGraphic = findNextGraphic;
|
|
104
|
-
//# sourceMappingURL=sort.js.map
|
|
104
|
+
//# sourceMappingURL=sort.js.map
|
package/cjs/common/split-path.js
CHANGED
package/cjs/common/text.js
CHANGED
|
@@ -34,4 +34,4 @@ function textAttributesToStyle(attrs) {
|
|
|
34
34
|
|
|
35
35
|
exports.textDrawOffsetY = textDrawOffsetY, exports.textDrawOffsetX = textDrawOffsetX,
|
|
36
36
|
exports.textLayoutOffsetY = textLayoutOffsetY, exports.textAttributesToStyle = textAttributesToStyle;
|
|
37
|
-
//# sourceMappingURL=text.js.map
|
|
37
|
+
//# sourceMappingURL=text.js.map
|
package/cjs/graphic/area.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.createArea = exports.Area = 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"), AREA_UPDATE_TAG_KEY = [ "segments", "points", "curveType", "curveTension", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
|
|
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"), AREA_UPDATE_TAG_KEY = [ "segments", "points", "curveType", "curveTension", "connectedType", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
|
|
8
8
|
|
|
9
9
|
class Area extends graphic_1.Graphic {
|
|
10
10
|
constructor(params) {
|
|
@@ -32,7 +32,7 @@ class Area extends graphic_1.Graphic {
|
|
|
32
32
|
const {points: points = areaTheme.points} = attribute, b = aabbBounds;
|
|
33
33
|
return points.forEach((p => {
|
|
34
34
|
var _a, _b;
|
|
35
|
-
b.add(p.x, p.y), b.add(null !== (_a = p.x1) && void 0 !== _a ? _a : p.x, null !== (_b = p.y1) && void 0 !== _b ? _b : p.y);
|
|
35
|
+
!1 !== p.defined && (b.add(p.x, p.y), b.add(null !== (_a = p.x1) && void 0 !== _a ? _a : p.x, null !== (_b = p.y1) && void 0 !== _b ? _b : p.y));
|
|
36
36
|
})), b;
|
|
37
37
|
}
|
|
38
38
|
updateAreaAABBBoundsBySegments(attribute, areaTheme, aabbBounds, graphic) {
|
|
@@ -40,7 +40,7 @@ class Area extends graphic_1.Graphic {
|
|
|
40
40
|
return segments.forEach((s => {
|
|
41
41
|
s.points.forEach((p => {
|
|
42
42
|
var _a, _b;
|
|
43
|
-
b.add(p.x, p.y), b.add(null !== (_a = p.x1) && void 0 !== _a ? _a : p.x, null !== (_b = p.y1) && void 0 !== _b ? _b : p.y);
|
|
43
|
+
!1 !== p.defined && (b.add(p.x, p.y), b.add(null !== (_a = p.x1) && void 0 !== _a ? _a : p.x, null !== (_b = p.y1) && void 0 !== _b ? _b : p.y));
|
|
44
44
|
}));
|
|
45
45
|
})), b;
|
|
46
46
|
}
|
package/cjs/graphic/area.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphic/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IAABBBounds, IPointLike } from '@visactor/vutils';\nimport type { IArea, IAreaCacheItem, IAreaGraphicAttribute } from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { pointsInterpolation } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { AREA_NUMBER_TYPE } from './constants';\n\nconst AREA_UPDATE_TAG_KEY = ['segments', 'points', 'curveType', 'curveTension', ...GRAPHIC_UPDATE_TAG_KEY];\n\nexport class Area extends Graphic<IAreaGraphicAttribute> implements IArea {\n type: 'area' = 'area';\n\n static NOWORK_ANIMATE_ATTR = {\n segments: 1,\n curveType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n cache?: IAreaCacheItem;\n\n constructor(params: IAreaGraphicAttribute) {\n super(params);\n this.numberType = AREA_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n if (this.pathProxy) {\n return true;\n }\n const { points, segments } = this.attribute;\n if (segments) {\n if (segments.length === 0) {\n return false;\n }\n return true;\n } else if (points) {\n if (points.length === 0) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n getGraphicTheme(): Required<IAreaGraphicAttribute> {\n return getTheme(this).area;\n }\n\n protected updateAABBBounds(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n attribute.segments\n ? this.updateAreaAABBBoundsBySegments(attribute, areaTheme, aabbBounds)\n : this.updateAreaAABBBoundsByPoints(attribute, areaTheme, aabbBounds);\n }\n application.graphicService.updateTempAABBBounds(aabbBounds);\n // if (!this._rectBoundsContribitions) {\n // this._rectBoundsContribitions = this.rectBoundsContribitions.getContributions() || [];\n // }\n // this._rectBoundsContribitions.length &&\n // this._rectBoundsContribitions.forEach(c => {\n // c.updateBounds(attribute, areaTheme, tb1, graphic);\n // aabbBounds.union(tb1);\n // tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n // });\n\n this.setWidthHeightWithoutTransform(aabbBounds);\n\n const { lineJoin = areaTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, areaTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updateAreaAABBBoundsByPoints(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IArea\n ): IAABBBounds {\n const { points = areaTheme.points } = attribute;\n const b = aabbBounds;\n points.forEach(p => {\n b.add(p.x, p.y);\n b.add(p.x1 ?? p.x, p.y1 ?? p.y); //面积图特殊性:由三个值构成,横向面积图,x1会省略;纵向面积图,y1会省略\n });\n return b;\n }\n protected updateAreaAABBBoundsBySegments(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IArea\n ): IAABBBounds {\n const { segments = areaTheme.segments } = attribute;\n const b = aabbBounds;\n segments.forEach(s => {\n s.points.forEach(p => {\n b.add(p.x, p.y);\n b.add(p.x1 ?? p.x, p.y1 ?? p.y); //面积图特殊性:由三个值构成,横向面积图,x1会省略;纵向面积图,y1会省略\n });\n });\n return b;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, AREA_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, AREA_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n let path = super.toCustomPath();\n if (path) {\n return path;\n }\n path = new CustomPath2D();\n const attribute = this.attribute;\n const segments = attribute.segments;\n\n const parsePoints = (points: IPointLike[]) => {\n if (points && points.length) {\n let isFirst = true;\n const basePoints: IPointLike[] = [];\n points.forEach(point => {\n if (point.defined === false) {\n return;\n }\n if (isFirst) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n basePoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n\n isFirst = false;\n });\n\n if (basePoints.length) {\n for (let i = basePoints.length - 1; i >= 0; i--) {\n path.lineTo(basePoints[i].x, basePoints[i].y);\n }\n\n path.closePath();\n }\n }\n };\n\n if (attribute.points) {\n parsePoints(attribute.points);\n } else if (segments && segments.length) {\n segments.forEach(seg => {\n parsePoints(seg.points);\n });\n }\n\n return path;\n }\n\n clone() {\n return new Area({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Area.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createArea(attributes: IAreaGraphicAttribute): IArea {\n return new Area(attributes);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graphic/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IAABBBounds, IPointLike } from '@visactor/vutils';\nimport type { IArea, IAreaCacheItem, IAreaGraphicAttribute } from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { pointsInterpolation } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { AREA_NUMBER_TYPE } from './constants';\n\nconst AREA_UPDATE_TAG_KEY = [\n 'segments',\n 'points',\n 'curveType',\n 'curveTension',\n 'connectedType',\n ...GRAPHIC_UPDATE_TAG_KEY\n];\n\nexport class Area extends Graphic<IAreaGraphicAttribute> implements IArea {\n type: 'area' = 'area';\n\n static NOWORK_ANIMATE_ATTR = {\n segments: 1,\n curveType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n cache?: IAreaCacheItem;\n\n constructor(params: IAreaGraphicAttribute) {\n super(params);\n this.numberType = AREA_NUMBER_TYPE;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n if (this.pathProxy) {\n return true;\n }\n const { points, segments } = this.attribute;\n if (segments) {\n if (segments.length === 0) {\n return false;\n }\n return true;\n } else if (points) {\n if (points.length === 0) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n getGraphicTheme(): Required<IAreaGraphicAttribute> {\n return getTheme(this).area;\n }\n\n protected updateAABBBounds(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds\n ) {\n if (!this.updatePathProxyAABBBounds(aabbBounds)) {\n attribute.segments\n ? this.updateAreaAABBBoundsBySegments(attribute, areaTheme, aabbBounds)\n : this.updateAreaAABBBoundsByPoints(attribute, areaTheme, aabbBounds);\n }\n application.graphicService.updateTempAABBBounds(aabbBounds);\n // if (!this._rectBoundsContribitions) {\n // this._rectBoundsContribitions = this.rectBoundsContribitions.getContributions() || [];\n // }\n // this._rectBoundsContribitions.length &&\n // this._rectBoundsContribitions.forEach(c => {\n // c.updateBounds(attribute, areaTheme, tb1, graphic);\n // aabbBounds.union(tb1);\n // tb1.setValue(tb2.x1, tb2.y1, tb2.x2, tb2.y2);\n // });\n\n this.setWidthHeightWithoutTransform(aabbBounds);\n\n const { lineJoin = areaTheme.lineJoin } = attribute;\n application.graphicService.transformAABBBounds(attribute, aabbBounds, areaTheme, lineJoin === 'miter', this);\n return aabbBounds;\n }\n\n protected updateAreaAABBBoundsByPoints(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IArea\n ): IAABBBounds {\n const { points = areaTheme.points } = attribute;\n const b = aabbBounds;\n points.forEach(p => {\n if (p.defined === false) {\n return;\n }\n b.add(p.x, p.y);\n b.add(p.x1 ?? p.x, p.y1 ?? p.y); //面积图特殊性:由三个值构成,横向面积图,x1会省略;纵向面积图,y1会省略\n });\n return b;\n }\n protected updateAreaAABBBoundsBySegments(\n attribute: IAreaGraphicAttribute,\n areaTheme: Required<IAreaGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IArea\n ): IAABBBounds {\n const { segments = areaTheme.segments } = attribute;\n const b = aabbBounds;\n segments.forEach(s => {\n s.points.forEach(p => {\n if (p.defined === false) {\n return;\n }\n b.add(p.x, p.y);\n b.add(p.x1 ?? p.x, p.y1 ?? p.y); //面积图特殊性:由三个值构成,横向面积图,x1会省略;纵向面积图,y1会省略\n });\n });\n return b;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void {\n if (key === 'points') {\n (nextAttributes as any).points = pointsInterpolation(lastStepVal, nextStepVal, ratio);\n }\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, AREA_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, AREA_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n let path = super.toCustomPath();\n if (path) {\n return path;\n }\n path = new CustomPath2D();\n const attribute = this.attribute;\n const segments = attribute.segments;\n\n const parsePoints = (points: IPointLike[]) => {\n if (points && points.length) {\n let isFirst = true;\n const basePoints: IPointLike[] = [];\n points.forEach(point => {\n if (point.defined === false) {\n return;\n }\n if (isFirst) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n basePoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n\n isFirst = false;\n });\n\n if (basePoints.length) {\n for (let i = basePoints.length - 1; i >= 0; i--) {\n path.lineTo(basePoints[i].x, basePoints[i].y);\n }\n\n path.closePath();\n }\n }\n };\n\n if (attribute.points) {\n parsePoints(attribute.points);\n } else if (segments && segments.length) {\n segments.forEach(seg => {\n parsePoints(seg.points);\n });\n }\n\n return path;\n }\n\n clone() {\n return new Area({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Area.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createArea(attributes: IAreaGraphicAttribute): IArea {\n return new Area(attributes);\n}\n"]}
|
package/cjs/graphic/graphic.js
CHANGED
|
@@ -714,6 +714,7 @@ class Graphic extends node_tree_1.Node {
|
|
|
714
714
|
[key]: value
|
|
715
715
|
}, this.attribute, key, context);
|
|
716
716
|
if (params) this._setAttributes(params, forceUpdateTag, context); else if (this.canCommitBaseAttributesByTouchedKeys()) this.commitBaseAttributeBySingleKey(key, value, !!forceUpdateTag, context); else {
|
|
717
|
+
this.detachAttributeFromBaseAttributes();
|
|
717
718
|
const nextAttrs = {
|
|
718
719
|
[key]: value
|
|
719
720
|
};
|