@visactor/vrender-components 0.21.0-alpha.4 → 0.21.0-beta.0
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/axis/type.d.ts +2 -2
- package/cjs/axis/type.js.map +1 -1
- package/cjs/data-zoom/type.d.ts +1 -1
- package/cjs/data-zoom/type.js.map +1 -1
- package/cjs/index.d.ts +1 -2
- package/cjs/index.js +2 -2
- package/cjs/index.js.map +1 -1
- package/cjs/interface.js.map +1 -1
- package/cjs/jsx/component-type.js +2 -1
- package/cjs/label/arc.js +2 -3
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.js +12 -7
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/overlap/place.d.ts +6 -1
- package/cjs/label/overlap/place.js +4 -4
- package/cjs/label/overlap/place.js.map +1 -1
- package/cjs/label/overlap/shiftY.d.ts +2 -1
- package/cjs/label/overlap/shiftY.js +72 -18
- package/cjs/label/overlap/shiftY.js.map +1 -1
- package/cjs/label/polygon.js +1 -1
- package/cjs/label/rect.js +1 -1
- package/cjs/legend/color/type.d.ts +2 -2
- package/cjs/legend/color/type.js.map +1 -1
- package/cjs/legend/discrete/type.d.ts +1 -1
- package/cjs/legend/discrete/type.js.map +1 -1
- package/cjs/marker/type.d.ts +2 -2
- package/cjs/marker/type.js.map +1 -1
- package/cjs/player/type/discrete-player.d.ts +3 -3
- package/cjs/player/type/discrete-player.js.map +1 -1
- package/cjs/player/type/index.d.ts +2 -2
- package/cjs/player/type/index.js.map +1 -1
- package/cjs/scrollbar/index.d.ts +1 -0
- package/cjs/scrollbar/index.js +2 -1
- package/cjs/scrollbar/index.js.map +1 -1
- package/cjs/scrollbar/scrollbar-plugin.d.ts +18 -15
- package/cjs/scrollbar/scrollbar-plugin.js +109 -97
- package/cjs/scrollbar/scrollbar-plugin.js.map +1 -1
- package/cjs/timeline/type.js.map +1 -1
- package/dist/index.es.js +506 -797
- package/es/axis/type.d.ts +2 -2
- package/es/axis/type.js.map +1 -1
- package/es/data-zoom/type.d.ts +1 -1
- package/es/data-zoom/type.js.map +1 -1
- package/es/index.d.ts +1 -2
- package/es/index.js +1 -3
- package/es/index.js.map +1 -1
- package/es/interface.js.map +1 -1
- package/es/jsx/component-type.js +2 -1
- package/es/label/arc.js +2 -3
- package/es/label/arc.js.map +1 -1
- package/es/label/base.js +12 -7
- package/es/label/base.js.map +1 -1
- package/es/label/overlap/place.d.ts +6 -1
- package/es/label/overlap/place.js +4 -4
- package/es/label/overlap/place.js.map +1 -1
- package/es/label/overlap/shiftY.d.ts +2 -1
- package/es/label/overlap/shiftY.js +68 -15
- package/es/label/overlap/shiftY.js.map +1 -1
- package/es/label/polygon.js +1 -1
- package/es/label/rect.js +1 -1
- package/es/legend/color/type.d.ts +2 -2
- package/es/legend/color/type.js.map +1 -1
- package/es/legend/discrete/type.d.ts +1 -1
- package/es/legend/discrete/type.js.map +1 -1
- package/es/marker/type.d.ts +2 -2
- package/es/marker/type.js.map +1 -1
- package/es/player/type/discrete-player.d.ts +3 -3
- package/es/player/type/discrete-player.js.map +1 -1
- package/es/player/type/index.d.ts +2 -2
- package/es/player/type/index.js.map +1 -1
- package/es/scrollbar/index.d.ts +1 -0
- package/es/scrollbar/index.js +2 -0
- package/es/scrollbar/index.js.map +1 -1
- package/es/scrollbar/scrollbar-plugin.d.ts +18 -15
- package/es/scrollbar/scrollbar-plugin.js +111 -94
- package/es/scrollbar/scrollbar-plugin.js.map +1 -1
- package/es/timeline/type.js.map +1 -1
- package/package.json +10 -10
- package/cjs/gif/gif.d.ts +0 -29
- package/cjs/gif/gif.js +0 -59
- package/cjs/gif/gif.js.map +0 -1
- package/cjs/gif/index.d.ts +0 -1
- package/cjs/gif/index.js +0 -21
- package/cjs/gif/index.js.map +0 -1
- package/es/gif/gif.d.ts +0 -29
- package/es/gif/gif.js +0 -55
- package/es/gif/gif.js.map +0 -1
- package/es/gif/index.d.ts +0 -1
- package/es/gif/index.js +0 -2
- package/es/gif/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vrender-components",
|
|
3
|
-
"version": "0.21.0-
|
|
3
|
+
"version": "0.21.0-beta.0",
|
|
4
4
|
"description": "components library for dp visualization",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "cjs/index.js",
|
|
@@ -12,15 +12,14 @@
|
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@visactor/vutils": "~0.
|
|
16
|
-
"@visactor/vscale": "~0.
|
|
17
|
-
"@visactor/vrender-core": "0.21.0-
|
|
18
|
-
"@visactor/vrender-kits": "0.21.0-
|
|
19
|
-
"gifuct-js": "2.1.2"
|
|
15
|
+
"@visactor/vutils": "~0.19.0",
|
|
16
|
+
"@visactor/vscale": "~0.19.0",
|
|
17
|
+
"@visactor/vrender-core": "0.21.0-beta.0",
|
|
18
|
+
"@visactor/vrender-kits": "0.21.0-beta.0"
|
|
20
19
|
},
|
|
21
20
|
"devDependencies": {
|
|
22
21
|
"@rushstack/eslint-patch": "~1.1.4",
|
|
23
|
-
"@visactor/vscale": "~0.
|
|
22
|
+
"@visactor/vscale": "~0.19.0",
|
|
24
23
|
"@types/jest": "^26.0.0",
|
|
25
24
|
"jest": "^26.0.0",
|
|
26
25
|
"jest-electron": "^0.1.12",
|
|
@@ -31,8 +30,8 @@
|
|
|
31
30
|
"typescript": "4.9.5",
|
|
32
31
|
"cross-env": "^7.0.3",
|
|
33
32
|
"@internal/bundler": "0.0.1",
|
|
34
|
-
"@internal/
|
|
35
|
-
"@internal/
|
|
33
|
+
"@internal/ts-config": "0.0.1",
|
|
34
|
+
"@internal/eslint-config": "0.0.1"
|
|
36
35
|
},
|
|
37
36
|
"keywords": [
|
|
38
37
|
"VisActor",
|
|
@@ -75,6 +74,7 @@
|
|
|
75
74
|
"test-cov": "jest --coverage",
|
|
76
75
|
"test-live": "npm run test-watch __tests__/unit/",
|
|
77
76
|
"test-watch": "cross-env DEBUG_MODE=1 jest --watch",
|
|
78
|
-
"analysis-core": "cross-env DEBUG='Bundler*' bundle -f umd -a -i core.ts"
|
|
77
|
+
"analysis-core": "cross-env DEBUG='Bundler*' bundle -f umd -a -i core.ts",
|
|
78
|
+
"build:spec-types": "rm -rf ./spec-types && tsc -p ./tsconfig.spec.json --declaration --emitDeclarationOnly --outDir ./spec-types"
|
|
79
79
|
}
|
|
80
80
|
}
|
package/cjs/gif/gif.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { IImageGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';
|
|
2
|
-
import { Image } from '@visactor/vrender-core';
|
|
3
|
-
import type { ITimeline } from '@visactor/vrender-core';
|
|
4
|
-
import type { ParsedFrame } from 'gifuct-js';
|
|
5
|
-
export interface IGifImageGraphicAttribute extends IImageGraphicAttribute {
|
|
6
|
-
timeline?: ITimeline;
|
|
7
|
-
gifImage?: string | ArrayBuffer;
|
|
8
|
-
}
|
|
9
|
-
export declare class GifImage extends Image {
|
|
10
|
-
attribute: IGifImageGraphicAttribute;
|
|
11
|
-
frameImageData?: ImageData;
|
|
12
|
-
tempCanvas?: HTMLCanvasElement;
|
|
13
|
-
tempCtx?: CanvasRenderingContext2D;
|
|
14
|
-
gifCanvas?: HTMLCanvasElement;
|
|
15
|
-
gifCtx?: CanvasRenderingContext2D;
|
|
16
|
-
loadedFrames?: ParsedFrame[];
|
|
17
|
-
frameIndex?: number;
|
|
18
|
-
playing?: boolean;
|
|
19
|
-
lastTime?: number;
|
|
20
|
-
isGifImage: boolean;
|
|
21
|
-
constructor(params: IGifImageGraphicAttribute);
|
|
22
|
-
loadGif(): void;
|
|
23
|
-
renderGIF(frames: ParsedFrame[]): void;
|
|
24
|
-
renderFrame(context: CanvasRenderingContext2D, x: number, y: number): void;
|
|
25
|
-
drawPatch(frame: ParsedFrame): void;
|
|
26
|
-
manipulate(context: CanvasRenderingContext2D, x: number, y: number): void;
|
|
27
|
-
setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
|
|
28
|
-
setAttributes(params: Partial<IGifImageGraphicAttribute>, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
|
|
29
|
-
}
|
package/cjs/gif/gif.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: !0
|
|
5
|
-
}), exports.GifImage = void 0;
|
|
6
|
-
|
|
7
|
-
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), gifuct_js_1 = require("gifuct-js");
|
|
8
|
-
|
|
9
|
-
class GifImage extends vrender_core_1.Image {
|
|
10
|
-
constructor(params) {
|
|
11
|
-
super(params), this.isGifImage = !0, this.loadGif();
|
|
12
|
-
}
|
|
13
|
-
loadGif() {
|
|
14
|
-
if ((0, vutils_1.isString)(this.attribute.gifImage)) vrender_core_1.ResourceLoader.GetFile(this.attribute.gifImage, "arrayBuffer").then((res => {
|
|
15
|
-
const gif = (0, gifuct_js_1.parseGIF)(res), frames = (0, gifuct_js_1.decompressFrames)(gif, !0);
|
|
16
|
-
this.renderGIF(frames);
|
|
17
|
-
})).catch((e => {
|
|
18
|
-
console.error("Gif load error: ", e);
|
|
19
|
-
})); else if (this.attribute.gifImage instanceof ArrayBuffer) {
|
|
20
|
-
const gif = (0, gifuct_js_1.parseGIF)(this.attribute.gifImage), frames = (0, gifuct_js_1.decompressFrames)(gif, !0);
|
|
21
|
-
this.renderGIF(frames);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
renderGIF(frames) {
|
|
25
|
-
this.loadedFrames = frames, this.frameIndex = 0, this.tempCanvas || (this.tempCanvas = vrender_core_1.application.global.createCanvas({}),
|
|
26
|
-
this.tempCtx = this.tempCanvas.getContext("2d")), this.gifCanvas || (this.gifCanvas = vrender_core_1.application.global.createCanvas({}),
|
|
27
|
-
this.gifCtx = this.gifCanvas.getContext("2d")), this.gifCanvas.width = frames[0].dims.width,
|
|
28
|
-
this.gifCanvas.height = frames[0].dims.height, this.playing = !0, this.lastTime = (new Date).getTime();
|
|
29
|
-
const animation = this.animate();
|
|
30
|
-
this.attribute.timeline && animation.setTimeline(this.attribute.timeline), animation.to({}, 1e3, "linear").loop(1 / 0);
|
|
31
|
-
}
|
|
32
|
-
renderFrame(context, x, y) {
|
|
33
|
-
const frame = this.loadedFrames[this.frameIndex || 0];
|
|
34
|
-
2 === frame.disposalType && this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height),
|
|
35
|
-
this.drawPatch(frame), this.manipulate(context, x, y);
|
|
36
|
-
const diff = (new Date).getTime() - this.lastTime;
|
|
37
|
-
frame.delay < diff && (this.frameIndex++, this.lastTime = (new Date).getTime()),
|
|
38
|
-
this.frameIndex >= this.loadedFrames.length && (this.frameIndex = 0);
|
|
39
|
-
}
|
|
40
|
-
drawPatch(frame) {
|
|
41
|
-
const dims = frame.dims;
|
|
42
|
-
this.frameImageData && dims.width === this.frameImageData.width && dims.height === this.frameImageData.height || (this.tempCanvas.width = dims.width,
|
|
43
|
-
this.tempCanvas.height = dims.height, this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height)),
|
|
44
|
-
this.frameImageData.data.set(frame.patch), this.tempCtx.putImageData(this.frameImageData, 0, 0),
|
|
45
|
-
this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);
|
|
46
|
-
}
|
|
47
|
-
manipulate(context, x, y) {
|
|
48
|
-
context.drawImage(this.gifCanvas, 0, 0, this.gifCanvas.width, this.gifCanvas.height, x, y, this.attribute.width, this.attribute.height);
|
|
49
|
-
}
|
|
50
|
-
setAttribute(key, value, forceUpdateTag, context) {
|
|
51
|
-
super.setAttribute(key, value, forceUpdateTag, context), "gifImage" === key && this.loadGif();
|
|
52
|
-
}
|
|
53
|
-
setAttributes(params, forceUpdateTag, context) {
|
|
54
|
-
super.setAttributes(params, forceUpdateTag, context), params.gifImage && this.loadGif();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
exports.GifImage = GifImage;
|
|
59
|
-
//# sourceMappingURL=gif.js.map
|
package/cjs/gif/gif.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gif/gif.ts"],"names":[],"mappings":"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","file":"gif.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';\nimport { application, Image, ResourceLoader } from '@visactor/vrender-core';\nimport type { ITimeline } from '@visactor/vrender-core';\nimport { isString } from '@visactor/vutils';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\n\nexport interface IGifImageGraphicAttribute extends IImageGraphicAttribute {\n timeline?: ITimeline;\n gifImage?: string | ArrayBuffer;\n}\n\nexport class GifImage extends Image {\n declare attribute: IGifImageGraphicAttribute;\n\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n isGifImage = true;\n\n constructor(params: IGifImageGraphicAttribute) {\n super(params);\n\n this.loadGif();\n }\n\n loadGif() {\n if (isString(this.attribute.gifImage)) {\n ResourceLoader.GetFile(this.attribute.gifImage, 'arrayBuffer')\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n })\n .catch(e => {\n console.error('Gif load error: ', e);\n });\n } else if (this.attribute.gifImage instanceof ArrayBuffer) {\n const gif = parseGIF(this.attribute.gifImage);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n }\n }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = application.global.createCanvas({});\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = application.global.createCanvas({});\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n const animation = this.animate();\n if (this.attribute.timeline) {\n animation.setTimeline(this.attribute.timeline);\n }\n animation.to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw image into gifCanvas\n this.drawPatch(frame);\n\n // draw gifCanvas into stage\n this.manipulate(context, x, y);\n\n // update the frame index\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gifImage') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IGifImageGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if (params.gifImage) {\n this.loadGif();\n }\n }\n}\n"]}
|
package/cjs/gif/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './gif';
|
package/cjs/gif/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
4
|
-
void 0 === k2 && (k2 = k);
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
|
|
7
|
-
enumerable: !0,
|
|
8
|
-
get: function() {
|
|
9
|
-
return m[k];
|
|
10
|
-
}
|
|
11
|
-
}), Object.defineProperty(o, k2, desc);
|
|
12
|
-
} : function(o, m, k, k2) {
|
|
13
|
-
void 0 === k2 && (k2 = k), o[k2] = m[k];
|
|
14
|
-
}), __exportStar = this && this.__exportStar || function(m, exports) {
|
|
15
|
-
for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(exports, p) || __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
Object.defineProperty(exports, "__esModule", {
|
|
19
|
-
value: !0
|
|
20
|
-
}), __exportStar(require("./gif"), exports);
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
package/cjs/gif/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gif/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB","file":"index.js","sourcesContent":["export * from './gif';\n"]}
|
package/es/gif/gif.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { IImageGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';
|
|
2
|
-
import { Image } from '@visactor/vrender-core';
|
|
3
|
-
import type { ITimeline } from '@visactor/vrender-core';
|
|
4
|
-
import type { ParsedFrame } from 'gifuct-js';
|
|
5
|
-
export interface IGifImageGraphicAttribute extends IImageGraphicAttribute {
|
|
6
|
-
timeline?: ITimeline;
|
|
7
|
-
gifImage?: string | ArrayBuffer;
|
|
8
|
-
}
|
|
9
|
-
export declare class GifImage extends Image {
|
|
10
|
-
attribute: IGifImageGraphicAttribute;
|
|
11
|
-
frameImageData?: ImageData;
|
|
12
|
-
tempCanvas?: HTMLCanvasElement;
|
|
13
|
-
tempCtx?: CanvasRenderingContext2D;
|
|
14
|
-
gifCanvas?: HTMLCanvasElement;
|
|
15
|
-
gifCtx?: CanvasRenderingContext2D;
|
|
16
|
-
loadedFrames?: ParsedFrame[];
|
|
17
|
-
frameIndex?: number;
|
|
18
|
-
playing?: boolean;
|
|
19
|
-
lastTime?: number;
|
|
20
|
-
isGifImage: boolean;
|
|
21
|
-
constructor(params: IGifImageGraphicAttribute);
|
|
22
|
-
loadGif(): void;
|
|
23
|
-
renderGIF(frames: ParsedFrame[]): void;
|
|
24
|
-
renderFrame(context: CanvasRenderingContext2D, x: number, y: number): void;
|
|
25
|
-
drawPatch(frame: ParsedFrame): void;
|
|
26
|
-
manipulate(context: CanvasRenderingContext2D, x: number, y: number): void;
|
|
27
|
-
setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
|
|
28
|
-
setAttributes(params: Partial<IGifImageGraphicAttribute>, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
|
|
29
|
-
}
|
package/es/gif/gif.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { application, Image, ResourceLoader } from "@visactor/vrender-core";
|
|
2
|
-
|
|
3
|
-
import { isString } from "@visactor/vutils";
|
|
4
|
-
|
|
5
|
-
import { decompressFrames, parseGIF } from "gifuct-js";
|
|
6
|
-
|
|
7
|
-
export class GifImage extends Image {
|
|
8
|
-
constructor(params) {
|
|
9
|
-
super(params), this.isGifImage = !0, this.loadGif();
|
|
10
|
-
}
|
|
11
|
-
loadGif() {
|
|
12
|
-
if (isString(this.attribute.gifImage)) ResourceLoader.GetFile(this.attribute.gifImage, "arrayBuffer").then((res => {
|
|
13
|
-
const gif = parseGIF(res), frames = decompressFrames(gif, !0);
|
|
14
|
-
this.renderGIF(frames);
|
|
15
|
-
})).catch((e => {
|
|
16
|
-
console.error("Gif load error: ", e);
|
|
17
|
-
})); else if (this.attribute.gifImage instanceof ArrayBuffer) {
|
|
18
|
-
const gif = parseGIF(this.attribute.gifImage), frames = decompressFrames(gif, !0);
|
|
19
|
-
this.renderGIF(frames);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
renderGIF(frames) {
|
|
23
|
-
this.loadedFrames = frames, this.frameIndex = 0, this.tempCanvas || (this.tempCanvas = application.global.createCanvas({}),
|
|
24
|
-
this.tempCtx = this.tempCanvas.getContext("2d")), this.gifCanvas || (this.gifCanvas = application.global.createCanvas({}),
|
|
25
|
-
this.gifCtx = this.gifCanvas.getContext("2d")), this.gifCanvas.width = frames[0].dims.width,
|
|
26
|
-
this.gifCanvas.height = frames[0].dims.height, this.playing = !0, this.lastTime = (new Date).getTime();
|
|
27
|
-
const animation = this.animate();
|
|
28
|
-
this.attribute.timeline && animation.setTimeline(this.attribute.timeline), animation.to({}, 1e3, "linear").loop(1 / 0);
|
|
29
|
-
}
|
|
30
|
-
renderFrame(context, x, y) {
|
|
31
|
-
const frame = this.loadedFrames[this.frameIndex || 0];
|
|
32
|
-
2 === frame.disposalType && this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height),
|
|
33
|
-
this.drawPatch(frame), this.manipulate(context, x, y);
|
|
34
|
-
const diff = (new Date).getTime() - this.lastTime;
|
|
35
|
-
frame.delay < diff && (this.frameIndex++, this.lastTime = (new Date).getTime()),
|
|
36
|
-
this.frameIndex >= this.loadedFrames.length && (this.frameIndex = 0);
|
|
37
|
-
}
|
|
38
|
-
drawPatch(frame) {
|
|
39
|
-
const dims = frame.dims;
|
|
40
|
-
this.frameImageData && dims.width === this.frameImageData.width && dims.height === this.frameImageData.height || (this.tempCanvas.width = dims.width,
|
|
41
|
-
this.tempCanvas.height = dims.height, this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height)),
|
|
42
|
-
this.frameImageData.data.set(frame.patch), this.tempCtx.putImageData(this.frameImageData, 0, 0),
|
|
43
|
-
this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);
|
|
44
|
-
}
|
|
45
|
-
manipulate(context, x, y) {
|
|
46
|
-
context.drawImage(this.gifCanvas, 0, 0, this.gifCanvas.width, this.gifCanvas.height, x, y, this.attribute.width, this.attribute.height);
|
|
47
|
-
}
|
|
48
|
-
setAttribute(key, value, forceUpdateTag, context) {
|
|
49
|
-
super.setAttribute(key, value, forceUpdateTag, context), "gifImage" === key && this.loadGif();
|
|
50
|
-
}
|
|
51
|
-
setAttributes(params, forceUpdateTag, context) {
|
|
52
|
-
super.setAttributes(params, forceUpdateTag, context), params.gifImage && this.loadGif();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=gif.js.map
|
package/es/gif/gif.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gif/gif.ts"],"names":[],"mappings":"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","file":"gif.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';\nimport { application, Image, ResourceLoader } from '@visactor/vrender-core';\nimport type { ITimeline } from '@visactor/vrender-core';\nimport { isString } from '@visactor/vutils';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\n\nexport interface IGifImageGraphicAttribute extends IImageGraphicAttribute {\n timeline?: ITimeline;\n gifImage?: string | ArrayBuffer;\n}\n\nexport class GifImage extends Image {\n declare attribute: IGifImageGraphicAttribute;\n\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n isGifImage = true;\n\n constructor(params: IGifImageGraphicAttribute) {\n super(params);\n\n this.loadGif();\n }\n\n loadGif() {\n if (isString(this.attribute.gifImage)) {\n ResourceLoader.GetFile(this.attribute.gifImage, 'arrayBuffer')\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n })\n .catch(e => {\n console.error('Gif load error: ', e);\n });\n } else if (this.attribute.gifImage instanceof ArrayBuffer) {\n const gif = parseGIF(this.attribute.gifImage);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n }\n }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = application.global.createCanvas({});\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = application.global.createCanvas({});\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n const animation = this.animate();\n if (this.attribute.timeline) {\n animation.setTimeline(this.attribute.timeline);\n }\n animation.to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw image into gifCanvas\n this.drawPatch(frame);\n\n // draw gifCanvas into stage\n this.manipulate(context, x, y);\n\n // update the frame index\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gifImage') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IGifImageGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if (params.gifImage) {\n this.loadGif();\n }\n }\n}\n"]}
|
package/es/gif/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './gif';
|
package/es/gif/index.js
DELETED
package/es/gif/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gif/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC","file":"index.js","sourcesContent":["export * from './gif';\n"]}
|