@gedit/editor-2d 0.1.91 → 0.1.97
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/lib/browser/editor2d-context-key-service.js +3 -3
- package/lib/browser/editor2d-context-key-service.js.map +1 -1
- package/lib/browser/editor2d-contribution.js +12 -12
- package/lib/browser/editor2d-contribution.js.map +1 -1
- package/lib/browser/editor2d-frontend-module.js +4 -4
- package/lib/browser/editor2d-frontend-module.js.map +1 -1
- package/lib/browser/editor2d-label-provider.js +6 -6
- package/lib/browser/editor2d-label-provider.js.map +1 -1
- package/lib/browser/editor2d-model-provider.js +6 -6
- package/lib/browser/editor2d-model-provider.js.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.js +4 -4
- package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
- package/lib/browser/editor2d-service.js +5 -5
- package/lib/browser/editor2d-service.js.map +1 -1
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +7 -2
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +31 -15
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/model/editor2d-model-container.js +2 -2
- package/lib/browser/model/editor2d-model-container.js.map +1 -1
- package/lib/browser/model/editor2d-model.js +6 -6
- package/lib/browser/model/editor2d-model.js.map +1 -1
- package/lib/browser/model/editor2d-selection.js +4 -2
- package/lib/browser/model/editor2d-selection.js.map +1 -1
- package/lib/browser/model/editor2d-widget.js +8 -6
- package/lib/browser/model/editor2d-widget.js.map +1 -1
- package/lib/browser/model/editor2d.d.ts +1 -0
- package/lib/browser/model/editor2d.d.ts.map +1 -1
- package/lib/browser/model/editor2d.js +13 -7
- package/lib/browser/model/editor2d.js.map +1 -1
- package/lib/browser/model/index.d.ts +1 -0
- package/lib/browser/model/index.d.ts.map +1 -1
- package/lib/browser/model/index.js +7 -2
- package/lib/browser/model/index.js.map +1 -1
- package/lib/browser/model/utils/anim.utils.d.ts +14 -0
- package/lib/browser/model/utils/anim.utils.d.ts.map +1 -0
- package/lib/browser/model/utils/anim.utils.js +51 -0
- package/lib/browser/model/utils/anim.utils.js.map +1 -0
- package/lib/browser/model/utils/index.d.ts +2 -0
- package/lib/browser/model/utils/index.d.ts.map +1 -0
- package/lib/browser/model/utils/index.js +18 -0
- package/lib/browser/model/utils/index.js.map +1 -0
- package/lib/browser/playground/canvas-draw-layer.js +6 -4
- package/lib/browser/playground/canvas-draw-layer.js.map +1 -1
- package/lib/browser/playground/canvas-draw.d.ts +2 -7
- package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
- package/lib/browser/playground/canvas-draw.js +9 -14
- package/lib/browser/playground/canvas-draw.js.map +1 -1
- package/lib/browser/playground/canvas-layer.js +5 -3
- package/lib/browser/playground/canvas-layer.js.map +1 -1
- package/lib/browser/playground/entities/document-entity.js +3 -1
- package/lib/browser/playground/entities/document-entity.js.map +1 -1
- package/lib/browser/playground/entities/editor2d-entity.js +3 -1
- package/lib/browser/playground/entities/editor2d-entity.js.map +1 -1
- package/lib/browser/playground/entities/index.js +6 -2
- package/lib/browser/playground/entities/index.js.map +1 -1
- package/lib/browser/playground/index.js +6 -2
- package/lib/browser/playground/index.js.map +1 -1
- package/lib/browser/playground/playground-context.js +9 -9
- package/lib/browser/playground/playground-context.js.map +1 -1
- package/lib/browser/playground/playground-contribution.d.ts +5 -1
- package/lib/browser/playground/playground-contribution.d.ts.map +1 -1
- package/lib/browser/playground/playground-contribution.js +50 -5
- package/lib/browser/playground/playground-contribution.js.map +1 -1
- package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
- package/lib/browser/playground/selection-entity-manager.js +18 -2
- package/lib/browser/playground/selection-entity-manager.js.map +1 -1
- package/lib/browser/utils/snapshot.d.ts +47 -0
- package/lib/browser/utils/snapshot.d.ts.map +1 -0
- package/lib/browser/utils/snapshot.js +219 -0
- package/lib/browser/utils/snapshot.js.map +1 -0
- package/package.json +7 -7
- package/src/browser/editor2d-contribution.ts +2 -2
- package/src/browser/index.ts +1 -0
- package/src/browser/model/editor2d-document.ts +21 -5
- package/src/browser/model/editor2d.ts +1 -0
- package/src/browser/model/index.ts +1 -1
- package/src/browser/model/utils/anim.utils.ts +81 -0
- package/src/browser/model/utils/index.ts +1 -0
- package/src/browser/playground/canvas-draw.ts +3 -16
- package/src/browser/playground/playground-contribution.ts +39 -1
- package/src/browser/playground/selection-entity-manager.tsx +16 -1
- package/src/browser/style/canvas-layer.css +1 -1
- package/src/browser/style/index.less +1 -0
- package/src/browser/utils/snapshot.ts +157 -0
- package/src/.DS_Store +0 -0
- package/src/browser/.DS_Store +0 -0
|
@@ -96,7 +96,22 @@ export class SelectionEntityManager {
|
|
|
96
96
|
return;
|
|
97
97
|
}; */
|
|
98
98
|
// const delta = TransformSchema.getDelta(lastTransform, newTransform);
|
|
99
|
-
|
|
99
|
+
const numberToFixed4 = (data: {[key: string]: any}) => {
|
|
100
|
+
const d: any = {};
|
|
101
|
+
Object.keys(data).forEach(key => {
|
|
102
|
+
const value = data[key];
|
|
103
|
+
if (typeof value === 'number') {
|
|
104
|
+
d[key] = parseFloat(value.toFixed(6));
|
|
105
|
+
} else if (typeof value === 'object') {
|
|
106
|
+
d[key] = numberToFixed4(value);
|
|
107
|
+
} else {
|
|
108
|
+
d[key] = key;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return d;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
document.updateNode(entity.nodeId, numberToFixed4(newTransform), true);
|
|
100
115
|
// lastTransform = newTransform;
|
|
101
116
|
});
|
|
102
117
|
// 设置控制key
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.gedit-canvas-transparent {
|
|
39
|
-
background-image:
|
|
39
|
+
background-image: var(--g-mask-transparent);
|
|
40
40
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
@import './canvas-draw-layer.less';
|
|
4
4
|
|
|
5
5
|
:root {
|
|
6
|
+
--g-mask-transparent: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAAfUlEQVQoFbVQQQ7AIAgD7Sf8/8s8+gd1s0vIptMlHkZiUGyBVmOMRwux4B2AhBDEOWflK6uqgICRYLVn3Zh9C6t+5G3CcqXVkKYPnQYCvfdSSpFaa8ejaM05N223S0QQmFJ6NeIfaN1I4JtnNmFb9L8Ergm6MWrg7jP36NIJC0BbmAiDWGoAAAAASUVORK5CYII=');;
|
|
6
7
|
--g-icon-2d-origin: url('../svg/origin.svg');
|
|
7
8
|
--g-icon-2d-fullscreen: url('../svg/fullscreen.svg');
|
|
8
9
|
--g-icon-2d-zoomin: url('../svg/zoomin.svg');
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { CanvasDraw, CanvasDrawOpts } from '../playground/canvas-draw';
|
|
2
|
+
import { Disposable, DisposableCollection, DisposableImpl, Emitter, PromiseDeferred, SizeSchema } from '@gedit/utils';
|
|
3
|
+
import { Editor2dNode } from '../model';
|
|
4
|
+
import { GameConfig } from '@gedit/render-engine/lib/common';
|
|
5
|
+
|
|
6
|
+
export interface SnapshotOpts extends Omit<CanvasDrawOpts, 'host'> {
|
|
7
|
+
imageType?: string, // default image/webp
|
|
8
|
+
quility?: number, // default 0.8
|
|
9
|
+
limitSize?: SizeSchema // 生成的图片最大值
|
|
10
|
+
appConfig: GameConfig | (() => GameConfig),
|
|
11
|
+
engineName: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const SnapshotOptsDefault = {
|
|
15
|
+
quility: 0.8,
|
|
16
|
+
imageType: 'image/webp',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export interface Snapshot {
|
|
20
|
+
uri: string,
|
|
21
|
+
name?: string,
|
|
22
|
+
version?: string | number,
|
|
23
|
+
imageData: string // base64 data
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface SnapshotInput {
|
|
27
|
+
uri: string,
|
|
28
|
+
name?: string,
|
|
29
|
+
version?: string | number,
|
|
30
|
+
content: Editor2dNode
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function fixDrawerScale(drawer: CanvasDraw, limitSize: SizeSchema): void {
|
|
34
|
+
// const appConfig = drawer.getData()?.appConfig;
|
|
35
|
+
// if (!appConfig) return;
|
|
36
|
+
const currentSize = drawer.getSceneSize();
|
|
37
|
+
const scale = SizeSchema.fixSize(currentSize!, {
|
|
38
|
+
width: limitSize.width,
|
|
39
|
+
height: limitSize.height,
|
|
40
|
+
});
|
|
41
|
+
drawer.refreshScale(false, scale);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function createSnapshots(opts: SnapshotOpts, sceneDatas: SnapshotInput[]): Promise<Snapshot[]> {
|
|
45
|
+
const creator = new SnapshotCreator(opts);
|
|
46
|
+
const result = await creator.draw(sceneDatas);
|
|
47
|
+
creator.dispose();
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let host: HTMLElement | undefined;
|
|
52
|
+
|
|
53
|
+
export class SnapshotCreator extends DisposableImpl {
|
|
54
|
+
protected drawer: CanvasDraw;
|
|
55
|
+
protected processing?: PromiseDeferred<void>;
|
|
56
|
+
protected result: { [key: string]: Snapshot } = {};
|
|
57
|
+
protected processingData: SnapshotInput[] = [];
|
|
58
|
+
protected onUpdateEmitter = new Emitter<void>();
|
|
59
|
+
readonly onUpdate = this.onUpdateEmitter.event;
|
|
60
|
+
protected current?: SnapshotInput;
|
|
61
|
+
constructor(
|
|
62
|
+
protected readonly opts: SnapshotOpts
|
|
63
|
+
) {
|
|
64
|
+
super();
|
|
65
|
+
if (!host) {
|
|
66
|
+
host = document.createElement('div');
|
|
67
|
+
host.className = 'gedit-editor-snapshots';
|
|
68
|
+
host.style.display = 'none';
|
|
69
|
+
document.body.appendChild(host);
|
|
70
|
+
}
|
|
71
|
+
this.drawer = new CanvasDraw({
|
|
72
|
+
host,
|
|
73
|
+
...opts,
|
|
74
|
+
});
|
|
75
|
+
this.toDispose.pushAll([
|
|
76
|
+
this.drawer,
|
|
77
|
+
this.onUpdateEmitter,
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
getSnapshot(uri: string): Snapshot | undefined {
|
|
82
|
+
return this.result[uri];
|
|
83
|
+
}
|
|
84
|
+
async draw(scenes: SnapshotInput[]): Promise<Snapshot[]> {
|
|
85
|
+
this.processingData = scenes.filter(s => {
|
|
86
|
+
const result = this.result[s.uri];
|
|
87
|
+
if (result && s.version === result.version) return false;
|
|
88
|
+
if (this.current && this.current.version === s.version) return false;
|
|
89
|
+
return true;
|
|
90
|
+
});
|
|
91
|
+
await this.process();
|
|
92
|
+
return scenes.map(s => this.result[s.uri]!);
|
|
93
|
+
}
|
|
94
|
+
getResult(): Snapshot[] {
|
|
95
|
+
return Object.keys(this.result).map(k => this.result[k]);
|
|
96
|
+
}
|
|
97
|
+
protected async process(): Promise<void> {
|
|
98
|
+
if (this.processing) {
|
|
99
|
+
return this.processing.promise;
|
|
100
|
+
}
|
|
101
|
+
const deferred = this.processing = new PromiseDeferred<void>();
|
|
102
|
+
const { drawer } = this;
|
|
103
|
+
const dispose = new DisposableCollection();
|
|
104
|
+
dispose.push(Disposable.create(() => {
|
|
105
|
+
deferred.resolve();
|
|
106
|
+
this.current = undefined;
|
|
107
|
+
this.processing = undefined;
|
|
108
|
+
}));
|
|
109
|
+
dispose.push(
|
|
110
|
+
drawer!.onLoading(e => {
|
|
111
|
+
const {loaded, allCount, currentCount} = e;
|
|
112
|
+
if (loaded || allCount <= currentCount) {
|
|
113
|
+
const widget = drawer!.renderWidget!;
|
|
114
|
+
|
|
115
|
+
if (this.opts.limitSize) {
|
|
116
|
+
fixDrawerScale(drawer, this.opts.limitSize);
|
|
117
|
+
} else {
|
|
118
|
+
drawer.refreshScale(false, 1);
|
|
119
|
+
}
|
|
120
|
+
widget.createSnapShot(this.opts.imageType || SnapshotOptsDefault.imageType,
|
|
121
|
+
this.opts.quility || SnapshotOptsDefault.quility).then(imageData => {
|
|
122
|
+
const current = this.current;
|
|
123
|
+
if (current) {
|
|
124
|
+
this.result[current.uri] = {
|
|
125
|
+
uri: current.uri,
|
|
126
|
+
version: current.version,
|
|
127
|
+
name: current.name,
|
|
128
|
+
imageData
|
|
129
|
+
};
|
|
130
|
+
this.onUpdateEmitter.fire();
|
|
131
|
+
}
|
|
132
|
+
this.next(() => dispose.dispose());
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}),
|
|
136
|
+
);
|
|
137
|
+
this.next(() => dispose.dispose());
|
|
138
|
+
return deferred.promise;
|
|
139
|
+
}
|
|
140
|
+
protected next(end: () => void): void {
|
|
141
|
+
const next = this.processingData.shift();
|
|
142
|
+
if (next) {
|
|
143
|
+
this.current = next;
|
|
144
|
+
this.drawer.renderWidget?.currentScene?.dispose();
|
|
145
|
+
const appConfig = typeof this.opts.appConfig === 'function' ? this.opts.appConfig() : this.opts.appConfig;
|
|
146
|
+
this.drawer.update({
|
|
147
|
+
visible: true,
|
|
148
|
+
uri: next.uri,
|
|
149
|
+
engineName: this.opts.engineName,
|
|
150
|
+
appConfig,
|
|
151
|
+
content: next.content,
|
|
152
|
+
});
|
|
153
|
+
} else {
|
|
154
|
+
end();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
package/src/.DS_Store
DELETED
|
Binary file
|
package/src/browser/.DS_Store
DELETED
|
Binary file
|