@tmagic/stage 1.0.0-beta.4 → 1.0.0-beta.7
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/dist/tmagic-stage.es.js +34 -22
- package/dist/tmagic-stage.es.js.map +1 -1
- package/dist/tmagic-stage.umd.js +34 -22
- package/dist/tmagic-stage.umd.js.map +1 -1
- package/dist/types/src/StageDragResize.d.ts +2 -2
- package/dist/types/src/StageMask.d.ts +1 -0
- package/package.json +3 -3
- package/src/StageCore.ts +1 -2
- package/src/StageDragResize.ts +2 -5
- package/src/StageMask.ts +36 -15
|
@@ -11,11 +11,11 @@ export default class StageDragResize extends EventEmitter {
|
|
|
11
11
|
container: HTMLElement;
|
|
12
12
|
target?: HTMLElement;
|
|
13
13
|
moveable?: Moveable;
|
|
14
|
+
horizontalGuidelines: number[];
|
|
15
|
+
verticalGuidelines: number[];
|
|
14
16
|
private dragStatus;
|
|
15
17
|
private elObserver?;
|
|
16
18
|
private ghostEl;
|
|
17
|
-
private horizontalGuidelines;
|
|
18
|
-
private verticalGuidelines;
|
|
19
19
|
private mode;
|
|
20
20
|
constructor(config: StageDragResizeConfig);
|
|
21
21
|
/**
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.0-beta.
|
|
2
|
+
"version": "1.0.0-beta.7",
|
|
3
3
|
"name": "@tmagic/stage",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"main": "dist/tmagic-stage.umd.js",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@scena/guides": "^0.17.0",
|
|
26
|
-
"@tmagic/schema": "^1.0.0-beta.
|
|
27
|
-
"@tmagic/utils": "^1.0.0-beta.
|
|
26
|
+
"@tmagic/schema": "^1.0.0-beta.6",
|
|
27
|
+
"@tmagic/utils": "^1.0.0-beta.6",
|
|
28
28
|
"events": "^3.3.0",
|
|
29
29
|
"lodash-es": "^4.17.21",
|
|
30
30
|
"moveable": "^0.25.3"
|
package/src/StageCore.ts
CHANGED
|
@@ -52,9 +52,8 @@ export default class StageCore extends EventEmitter {
|
|
|
52
52
|
this.renderer.on('runtime-ready', (runtime: Runtime) => this.emit('runtime-ready', runtime));
|
|
53
53
|
this.renderer.on('page-el-update', (el: HTMLElement) => this.mask?.observe(el));
|
|
54
54
|
|
|
55
|
-
this.mask.on('select', async (el: Element
|
|
55
|
+
this.mask.on('select', async (el: Element) => {
|
|
56
56
|
await this.dr?.select(el as HTMLElement);
|
|
57
|
-
setTimeout(() => this.dr?.moveable?.dragStart(event));
|
|
58
57
|
});
|
|
59
58
|
this.mask.on('selected', (el: Element) => {
|
|
60
59
|
this.select(el as HTMLElement);
|
package/src/StageDragResize.ts
CHANGED
|
@@ -41,12 +41,12 @@ export default class StageDragResize extends EventEmitter {
|
|
|
41
41
|
public container: HTMLElement;
|
|
42
42
|
public target?: HTMLElement;
|
|
43
43
|
public moveable?: Moveable;
|
|
44
|
+
public horizontalGuidelines: number[] = [];
|
|
45
|
+
public verticalGuidelines: number[] = [];
|
|
44
46
|
|
|
45
47
|
private dragStatus: ActionStatus = ActionStatus.END;
|
|
46
48
|
private elObserver?: ResizeObserver;
|
|
47
49
|
private ghostEl: HTMLElement | undefined;
|
|
48
|
-
private horizontalGuidelines: number[] = [];
|
|
49
|
-
private verticalGuidelines: number[] = [];
|
|
50
50
|
private mode: Mode = Mode.ABSOLUTE;
|
|
51
51
|
|
|
52
52
|
constructor(config: StageDragResizeConfig) {
|
|
@@ -341,9 +341,6 @@ export default class StageDragResize extends EventEmitter {
|
|
|
341
341
|
resizable: true,
|
|
342
342
|
snappable: !isSortable,
|
|
343
343
|
snapGap: !isSortable,
|
|
344
|
-
snapElement: !isSortable,
|
|
345
|
-
snapVertical: !isSortable,
|
|
346
|
-
snapHorizontal: !isSortable,
|
|
347
344
|
snapCenter: !isSortable,
|
|
348
345
|
container: renderer.contentWindow?.document.body,
|
|
349
346
|
|
package/src/StageMask.ts
CHANGED
|
@@ -91,8 +91,8 @@ export default class StageMask extends EventEmitter {
|
|
|
91
91
|
const { config: coreConfig } = config.core;
|
|
92
92
|
|
|
93
93
|
this.canSelect = coreConfig.canSelect || ((el: HTMLElement) => !!el.id);
|
|
94
|
-
this.content.addEventListener('mousedown', this.mouseDownHandler
|
|
95
|
-
this.content.addEventListener('contextmenu', this.contextmenuHandler
|
|
94
|
+
this.content.addEventListener('mousedown', this.mouseDownHandler);
|
|
95
|
+
this.content.addEventListener('contextmenu', this.contextmenuHandler);
|
|
96
96
|
this.wrapper.appendChild(this.content);
|
|
97
97
|
|
|
98
98
|
this.hGuides = this.createGuides('horizontal');
|
|
@@ -189,17 +189,26 @@ export default class StageMask extends EventEmitter {
|
|
|
189
189
|
* @param show 是否显示
|
|
190
190
|
*/
|
|
191
191
|
public showRule(show = true) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
// 当尺子隐藏时发现大小变化,显示后会变形,所以这里做重新初始化处理
|
|
193
|
+
if (show) {
|
|
194
|
+
this.hGuides.destroy();
|
|
195
|
+
this.hGuides = this.createGuides('horizontal', this.core.dr.horizontalGuidelines);
|
|
196
|
+
|
|
197
|
+
this.vGuides.destroy();
|
|
198
|
+
this.vGuides = this.createGuides('vertical', this.core.dr.verticalGuidelines);
|
|
199
|
+
} else {
|
|
200
|
+
this.hGuides.setState({
|
|
201
|
+
rulerStyle: {
|
|
202
|
+
visibility: 'hidden',
|
|
203
|
+
},
|
|
204
|
+
});
|
|
197
205
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
206
|
+
this.vGuides.setState({
|
|
207
|
+
rulerStyle: {
|
|
208
|
+
visibility: 'hidden',
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
}
|
|
203
212
|
}
|
|
204
213
|
|
|
205
214
|
/**
|
|
@@ -242,15 +251,26 @@ export default class StageMask extends EventEmitter {
|
|
|
242
251
|
return;
|
|
243
252
|
}
|
|
244
253
|
|
|
254
|
+
this.content.addEventListener('mousemove', this.mouseMoveHandler);
|
|
255
|
+
|
|
245
256
|
this.select(event);
|
|
246
257
|
};
|
|
247
258
|
|
|
248
259
|
private mouseUpHandler = (): void => {
|
|
249
|
-
this.content
|
|
260
|
+
this.content.removeEventListener('mousemove', this.mouseMoveHandler);
|
|
261
|
+
this.content.removeEventListener('mouseup', this.mouseUpHandler);
|
|
250
262
|
this.emit('selected', this.target);
|
|
251
263
|
this.target = null;
|
|
252
264
|
};
|
|
253
265
|
|
|
266
|
+
private mouseMoveHandler = (event: MouseEvent): void => {
|
|
267
|
+
// 避免触摸板轻触移动拖动组件
|
|
268
|
+
if (event.buttons) {
|
|
269
|
+
this.core.dr.moveable?.dragStart(event);
|
|
270
|
+
}
|
|
271
|
+
this.content.removeEventListener('mousemove', this.mouseMoveHandler);
|
|
272
|
+
};
|
|
273
|
+
|
|
254
274
|
private contextmenuHandler = async (event: MouseEvent): Promise<void> => {
|
|
255
275
|
await this.select(event);
|
|
256
276
|
this.mouseUpHandler();
|
|
@@ -282,7 +302,7 @@ export default class StageMask extends EventEmitter {
|
|
|
282
302
|
this.emit('select', el, event);
|
|
283
303
|
this.target = el;
|
|
284
304
|
// 如果是右键点击,这里的mouseup事件监听没有效果
|
|
285
|
-
this.content
|
|
305
|
+
this.content.addEventListener('mouseup', this.mouseUpHandler);
|
|
286
306
|
break;
|
|
287
307
|
}
|
|
288
308
|
}
|
|
@@ -296,9 +316,10 @@ export default class StageMask extends EventEmitter {
|
|
|
296
316
|
height: type === 'horizontal' ? '30px' : '100%',
|
|
297
317
|
});
|
|
298
318
|
|
|
299
|
-
private createGuides = (type: 'horizontal' | 'vertical'): Guides =>
|
|
319
|
+
private createGuides = (type: 'horizontal' | 'vertical', defaultGuides: number[] = []): Guides =>
|
|
300
320
|
new Guides(this.wrapper, {
|
|
301
321
|
type,
|
|
322
|
+
defaultGuides,
|
|
302
323
|
displayDragPos: true,
|
|
303
324
|
backgroundColor: '#fff',
|
|
304
325
|
lineColor: '#000',
|