emacroh5lib 1.0.18 → 1.0.19

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.
@@ -1,904 +0,0 @@
1
- <template>
2
- <div class="vdr" :style="positionStyle"
3
- :class="`${(active || isActive) ? 'active' : 'inactive'} ${contentClass ? contentClass : ''}`"
4
- @mousedown="bodyDown($event)" @touchstart="bodyDown($event)" @touchend="up($event)">
5
- <div :style="sizeStyle" class="content-container" ref="container">
6
- <slot></slot>
7
- </div>
8
- <div v-for="stick in sticks" class="vdr-stick" :class="['vdr-stick-' + stick, isResizable ? '' : 'not-resizable']"
9
- @mousedown.stop.prevent="stickDown(stick, $event)" @touchstart.stop.prevent="stickDown(stick, $event)"
10
- :style="vdrStick(stick)">
11
- </div>
12
- </div>
13
- </template>
14
-
15
- <script lang="ts">
16
- import { Component, Prop, Vue, Watch } from "vue-property-decorator";
17
-
18
- const styleMapping: any = {
19
- y: {
20
- t: 'top',
21
- m: 'marginTop',
22
- b: 'bottom',
23
- },
24
- x: {
25
- l: 'left',
26
- m: 'marginLeft',
27
- r: 'right',
28
- },
29
- };
30
-
31
- function addEvents(events: any) {
32
- events.forEach((cb: any, eventName: string) => {
33
- document.documentElement.addEventListener(eventName, cb);
34
- });
35
- }
36
-
37
- function removeEvents(events: any) {
38
- events.forEach((cb: any, eventName: any) => {
39
- document.documentElement.removeEventListener(eventName, cb);
40
- });
41
- }
42
-
43
- @Component({ name: 'DragResizeView' })
44
- export default class DragResizeView extends Vue {
45
-
46
- @Prop({
47
- type: String,
48
- required: false,
49
- default: ''
50
- }) name!: string;
51
-
52
-
53
- @Prop({ type: Number, default: 8 }) stickSize!: number;
54
- @Prop({ type: Number, default: 1 }) parentScaleX!: number;
55
- @Prop({ type: Number, default: 1 }) parentScaleY!: number;
56
- @Prop({ type: Boolean, default: false, }) isActive!: boolean;
57
- @Prop({ type: Boolean, default: false, }) preventActiveBehavior!: boolean;
58
- @Prop({ type: Boolean, default: true, }) isDraggable!: boolean;
59
- @Prop({ type: Boolean, default: true, }) isResizable!: boolean;
60
- @Prop({ type: Boolean, default: false, }) aspectRatio!: boolean;
61
- @Prop({
62
- type: Boolean, default: false,
63
- }) parentLimitation!: boolean;
64
- @Prop({
65
- type: Boolean, default: false,
66
- }) snapToGrid!: number;
67
-
68
- @Prop({
69
- type: Number,
70
- default: 50,
71
- validator(val) {
72
- return val >= 0;
73
- },
74
- }) gridX!: number;
75
-
76
- @Prop({
77
- type: Number,
78
- default: 50,
79
- validator(val) {
80
- return val >= 0;
81
- },
82
- }) gridY!: number;
83
-
84
- @Prop({
85
- type: Number,
86
- default: 0,
87
- validator(val) {
88
- return val >= 0;
89
- },
90
- }) parentW!: number;
91
-
92
- @Prop({
93
- type: Number,
94
- default: 0,
95
- validator(val) {
96
- return val >= 0;
97
- },
98
- }) parentH!: number;
99
-
100
- @Prop({
101
- type: [String, Number],
102
- default: 200,
103
- validator(val) {
104
- return (typeof val === 'string') ? val === 'auto' : val >= 0;
105
- },
106
- }) w!: any;
107
-
108
- @Prop({
109
- type: [String, Number],
110
- default: 200,
111
- validator(val) {
112
- return (typeof val === 'string') ? val === 'auto' : val >= 0;
113
- },
114
- }) h!: any;
115
-
116
- @Prop({
117
- type: Number,
118
- default: 50,
119
- validator(val) {
120
- return val >= 0;
121
- },
122
- }) minw!: number;
123
-
124
- @Prop({
125
- type: Number,
126
- default: 50,
127
- validator(val) {
128
- return val >= 0;
129
- },
130
- }) minh!: number;
131
-
132
- @Prop({
133
- type: Number,
134
- default: 0,
135
- validator(val) {
136
- return typeof val === 'number';
137
- },
138
- }) x!: number;
139
-
140
- @Prop({
141
- type: Number,
142
- default: 0,
143
- validator(val) {
144
- return typeof val === 'number';
145
- },
146
- }) y!: number;
147
- @Prop({
148
- type: [String, Number],
149
- default: 'auto',
150
- validator(val) {
151
- return (typeof val === 'string') ? val === 'auto' : val >= 0;
152
- },
153
- }) z!: string | number;
154
- @Prop({
155
- type: String,
156
- default: null,
157
- }) dragHandle!: string;
158
-
159
- @Prop({
160
- type: String,
161
- default: null,
162
- }) dragCancel!: string;
163
-
164
- @Prop({
165
- type: Array,
166
- default() {
167
- return ['tl', 'tm', 'tr', 'mr', 'br', 'bm', 'bl', 'ml'];
168
- },
169
- }) sticks!: Array<string>;
170
-
171
- @Prop({
172
- type: String,
173
- default: 'both',
174
- validator(val) {
175
- return ['x', 'y', 'both', 'none'].indexOf(val) !== -1;
176
- },
177
- }) axis!: string;
178
-
179
- @Prop({
180
- type: String,
181
- required: false,
182
- default: '',
183
- }) contentClass!: boolean;
184
-
185
- @Prop({
186
- type: Boolean,
187
- required: false,
188
- default: false
189
- }) isStorage!: boolean;
190
-
191
-
192
-
193
- public emits = ['clicked', 'dragging', 'dragstop', 'resizing', 'resizestop', 'activated', 'deactivated']
194
-
195
- public fixAspectRatio = null
196
- public active = false
197
- public zIndex: number = 0;
198
- public parentWidth = 0;
199
- public parentHeight = 0;
200
- public left = 0;
201
- public top = 0;
202
- public right = 50;
203
- public bottom = 50;
204
- public minHeight = 10;
205
- public stickDrag = false;
206
- public bodyDrag = false;
207
- public dimensionsBeforeMove: any;
208
- public limits: any;
209
- public currentStick: any;
210
- public aspectFactor: any;
211
- public domEvents: any;
212
- public parentElement: any;
213
- public _uid: any;
214
-
215
- beforeCreate() {
216
- this.stickDrag = false;
217
- this.bodyDrag = false;
218
- this.dimensionsBeforeMove = { pointerX: 0, pointerY: 0, x: 0, y: 0, w: 0, h: 0 };
219
- this.limits = {
220
- left: { min: null, max: null },
221
- right: { min: null, max: null },
222
- top: { min: null, max: null },
223
- bottom: { min: null, max: null },
224
- };
225
-
226
- this.currentStick = null;
227
- }
228
-
229
-
230
- mounted() {
231
-
232
- this.parentElement = this.$el.parentNode;
233
- this.parentWidth = this.parentW ? this.parentW : this.parentElement.clientWidth;
234
- this.parentHeight = this.parentH ? this.parentH : this.parentElement.clientHeight;
235
-
236
-
237
- this.left = this.x;
238
- this.top = this.y;
239
- this.right = this.parentWidth - (this.w === 'auto' ? (this.$refs.container as HTMLElement).scrollWidth : this.w) - this.left;
240
- this.bottom = this.parentHeight - (this.h === 'auto' ? (this.$refs.container as HTMLElement).scrollHeight : this.h) - this.top;
241
-
242
- this.domEvents = new Map([
243
- ['mousemove', this.move],
244
- ['mouseup', this.up],
245
- ['mouseleave', this.up],
246
- ['mousedown', this.deselect],
247
- ['touchmove', this.move],
248
- ['touchend', this.up],
249
- ['touchcancel', this.up],
250
- ['touchstart', this.up],
251
- ]);
252
-
253
- addEvents(this.domEvents);
254
-
255
- if (this.dragHandle) {
256
- [...this.$el.querySelectorAll(this.dragHandle)].forEach((dragHandle) => {
257
- dragHandle.setAttribute('data-drag-handle', this._uid);
258
- });
259
- }
260
-
261
- if (this.dragCancel) {
262
- [...this.$el.querySelectorAll(this.dragCancel)].forEach((cancelHandle) => {
263
- cancelHandle.setAttribute('data-drag-cancel', this._uid);
264
- });
265
- }
266
-
267
- if (this.name.trim() !== '' && this.isStorage) {
268
- let info = JSON.parse(localStorage.getItem("DragResizeView_Rect_" + this.name) as string)
269
- if (info !== null
270
- && info.left !== null && info.top !== null
271
- && info.right !== null && info.bottom !== null) {
272
- this.left = info.left
273
- this.top = info.top
274
- this.right = info.right
275
- this.bottom = info.bottom
276
- } else {
277
- localStorage.removeItem("DragResizeView_Rect_" + this.name)
278
- }
279
- }
280
- }
281
-
282
- beforeDestroy() {
283
- removeEvents(this.domEvents);
284
- }
285
-
286
- deselect() {
287
- if (this.preventActiveBehavior) {
288
- return;
289
- }
290
- this.active = false;
291
- }
292
-
293
- move(ev: any) {
294
-
295
- if (!this.stickDrag && !this.bodyDrag) {
296
- return;
297
- }
298
-
299
- ev.stopPropagation();
300
-
301
- const pageX = typeof ev.pageX !== 'undefined' ? ev.pageX : ev.touches[0].pageX;
302
- const pageY = typeof ev.pageY !== 'undefined' ? ev.pageY : ev.touches[0].pageY;
303
-
304
- const { dimensionsBeforeMove } = this;
305
-
306
- const delta = {
307
- x: (dimensionsBeforeMove.pointerX - pageX) / this.parentScaleX,
308
- y: (dimensionsBeforeMove.pointerY - pageY) / this.parentScaleY,
309
- };
310
-
311
- if (this.stickDrag) {
312
- this.stickMove(delta);
313
- }
314
-
315
- if (this.bodyDrag) {
316
- if (this.axis === 'x') {
317
- delta.y = 0;
318
- } else if (this.axis === 'y') {
319
- delta.x = 0;
320
- } else if (this.axis === 'none') {
321
- return;
322
- }
323
- this.bodyMove(delta);
324
- }
325
- }
326
-
327
- up(ev: any) {
328
- if (this.stickDrag) {
329
- this.stickUp();
330
- } else if (this.bodyDrag) {
331
- this.bodyUp();
332
- }
333
- }
334
-
335
-
336
- bodyDown(ev: any) {
337
- const { target, button } = ev;
338
-
339
- if (!this.preventActiveBehavior) {
340
- this.active = true;
341
- }
342
-
343
- if (button && button !== 0) {
344
- return;
345
- }
346
-
347
- this.$emit('clicked', ev);
348
-
349
- if (!this.active) {
350
- return;
351
- }
352
-
353
- if (this.dragHandle && target.getAttribute('data-drag-handle') !== this._uid.toString()) {
354
- return;
355
- }
356
-
357
- if (this.dragCancel && target.getAttribute('data-drag-cancel') === this._uid.toString()) {
358
- return;
359
- }
360
-
361
- if (typeof ev.stopPropagation !== 'undefined') {
362
- ev.stopPropagation();
363
- }
364
-
365
- if (typeof ev.preventDefault !== 'undefined') {
366
- ev.preventDefault();
367
- }
368
-
369
- if (this.isDraggable) {
370
- this.bodyDrag = true;
371
- }
372
-
373
- const pointerX = typeof ev.pageX !== 'undefined' ? ev.pageX : ev.touches[0].pageX;
374
- const pointerY = typeof ev.pageY !== 'undefined' ? ev.pageY : ev.touches[0].pageY;
375
-
376
- this.saveDimensionsBeforeMove(pointerX, pointerY);
377
-
378
- if (this.parentLimitation) {
379
- this.limits = this.calcDragLimitation();
380
- }
381
- }
382
-
383
- bodyMove(delta: any) {
384
-
385
- const { dimensionsBeforeMove, parentWidth, parentHeight, gridX, gridY, width, height } = this;
386
-
387
- let newTop = dimensionsBeforeMove.top - delta.y;
388
- let newBottom = dimensionsBeforeMove.bottom + delta.y;
389
- let newLeft = dimensionsBeforeMove.left - delta.x;
390
- let newRight = dimensionsBeforeMove.right + delta.x;
391
-
392
- if (this.snapToGrid) {
393
- let alignTop = true;
394
- let alignLeft = true;
395
-
396
- let diffT = newTop - Math.floor(newTop / gridY) * gridY;
397
- let diffB = (parentHeight - newBottom) - Math.floor((parentHeight - newBottom) / gridY) * gridY;
398
- let diffL = newLeft - Math.floor(newLeft / gridX) * gridX;
399
- let diffR = (parentWidth - newRight) - Math.floor((parentWidth - newRight) / gridX) * gridX;
400
-
401
- if (diffT > (gridY / 2)) {
402
- diffT -= gridY;
403
- }
404
- if (diffB > (gridY / 2)) {
405
- diffB -= gridY;
406
- }
407
- if (diffL > (gridX / 2)) {
408
- diffL -= gridX;
409
- }
410
- if (diffR > (gridX / 2)) {
411
- diffR -= gridX;
412
- }
413
-
414
- if (Math.abs(diffB) < Math.abs(diffT)) {
415
- alignTop = false;
416
- }
417
- if (Math.abs(diffR) < Math.abs(diffL)) {
418
- alignLeft = false;
419
- }
420
-
421
- newTop -= (alignTop ? diffT : diffB);
422
- newBottom = parentHeight - height - newTop;
423
- newLeft -= (alignLeft ? diffL : diffR);
424
- newRight = parentWidth - width - newLeft;
425
- }
426
-
427
- ({
428
- newLeft: this.left,
429
- newRight: this.right,
430
- newTop: this.top,
431
- newBottom: this.bottom,
432
- } = this.rectCorrectionByLimit({ newLeft, newRight, newTop, newBottom }));
433
-
434
- this.$emit('dragging', this.rect);
435
-
436
- this.storageElementInfo();
437
- }
438
-
439
- bodyUp() {
440
- this.bodyDrag = false;
441
- this.$emit('dragging', this.rect);
442
- this.$emit('dragstop', this.rect);
443
-
444
- this.dimensionsBeforeMove = { pointerX: 0, pointerY: 0, x: 0, y: 0, w: 0, h: 0 };
445
-
446
- this.limits = {
447
- left: { min: null, max: null },
448
- right: { min: null, max: null },
449
- top: { min: null, max: null },
450
- bottom: { min: null, max: null },
451
- };
452
- }
453
-
454
- stickDown(stick: any, ev: any, force = false) {
455
- if ((!this.isResizable || !this.active) && !force) {
456
- return;
457
- }
458
-
459
- this.stickDrag = true;
460
-
461
- const pointerX = typeof ev.pageX !== 'undefined' ? ev.pageX : ev.touches[0].pageX;
462
- const pointerY = typeof ev.pageY !== 'undefined' ? ev.pageY : ev.touches[0].pageY;
463
-
464
- this.saveDimensionsBeforeMove(pointerX, pointerY);
465
-
466
- this.currentStick = stick;
467
-
468
- this.limits = this.calcResizeLimits();
469
- }
470
-
471
- saveDimensionsBeforeMove(pointerX: number, pointerY: number): void {
472
- this.dimensionsBeforeMove.pointerX = pointerX;
473
- this.dimensionsBeforeMove.pointerY = pointerY;
474
-
475
- this.dimensionsBeforeMove.left = this.left;
476
- this.dimensionsBeforeMove.right = this.right;
477
- this.dimensionsBeforeMove.top = this.top;
478
- this.dimensionsBeforeMove.bottom = this.bottom;
479
-
480
- this.dimensionsBeforeMove.width = this.width;
481
- this.dimensionsBeforeMove.height = this.height;
482
-
483
- this.aspectFactor = this.width / this.height;
484
- }
485
-
486
- stickMove(delta: any) {
487
- const {
488
- currentStick,
489
- dimensionsBeforeMove,
490
- gridY,
491
- gridX,
492
- snapToGrid,
493
- parentHeight,
494
- parentWidth,
495
- } = this;
496
-
497
- let newTop = dimensionsBeforeMove.top;
498
- let newBottom = dimensionsBeforeMove.bottom;
499
- let newLeft = dimensionsBeforeMove.left;
500
- let newRight = dimensionsBeforeMove.right;
501
- switch (currentStick[0]) {
502
- case 'b':
503
- newBottom = dimensionsBeforeMove.bottom + delta.y;
504
-
505
- if (snapToGrid) {
506
- newBottom = parentHeight - Math.round((parentHeight - newBottom) / gridY) * gridY;
507
- }
508
-
509
- break;
510
-
511
- case 't':
512
- newTop = dimensionsBeforeMove.top - delta.y;
513
-
514
- if (snapToGrid) {
515
- newTop = Math.round(newTop / gridY) * gridY;
516
- }
517
-
518
- break;
519
- default:
520
- break;
521
- }
522
-
523
- switch (currentStick[1]) {
524
- case 'r':
525
- newRight = dimensionsBeforeMove.right + delta.x;
526
-
527
- if (snapToGrid) {
528
- newRight = parentWidth - Math.round((parentWidth - newRight) / gridX) * gridX;
529
- }
530
-
531
- break;
532
-
533
- case 'l':
534
- newLeft = dimensionsBeforeMove.left - delta.x;
535
-
536
- if (snapToGrid) {
537
- newLeft = Math.round(newLeft / gridX) * gridX;
538
- }
539
-
540
- break;
541
- default:
542
- break;
543
- }
544
-
545
- ({
546
- newLeft,
547
- newRight,
548
- newTop,
549
- newBottom,
550
- } = this.rectCorrectionByLimit({ newLeft, newRight, newTop, newBottom }));
551
-
552
- if (this.aspectRatio) {
553
- ({
554
- newLeft,
555
- newRight,
556
- newTop,
557
- newBottom,
558
- } = this.rectCorrectionByAspectRatio({ newLeft, newRight, newTop, newBottom }));
559
- }
560
-
561
- this.left = newLeft;
562
- this.right = newRight;
563
- this.top = newTop;
564
- this.bottom = newBottom;
565
-
566
- this.$emit('resizing', this.rect);
567
-
568
- this.storageElementInfo()
569
- }
570
-
571
- stickUp() {
572
- this.stickDrag = false;
573
- this.dimensionsBeforeMove = {
574
- pointerX: 0,
575
- pointerY: 0,
576
- x: 0,
577
- y: 0,
578
- w: 0,
579
- h: 0,
580
- };
581
- this.limits = {
582
- left: { min: null, max: null },
583
- right: { min: null, max: null },
584
- top: { min: null, max: null },
585
- bottom: { min: null, max: null },
586
- };
587
-
588
- this.$emit('resizing', this.rect);
589
- this.$emit('resizestop', this.rect);
590
- }
591
-
592
- calcDragLimitation() {
593
- const { parentWidth, parentHeight } = this;
594
-
595
- return {
596
- left: { min: 0, max: parentWidth - this.width },
597
- right: { min: 0, max: parentWidth - this.width },
598
- top: { min: 0, max: parentHeight - this.height },
599
- bottom: { min: 0, max: parentHeight - this.height },
600
- };
601
- }
602
-
603
- calcResizeLimits() {
604
- const { aspectFactor, width, height, bottom, top, left, right } = this;
605
- let { minh: minHeight, minw: minWidth } = this;
606
-
607
- const parentLim = this.parentLimitation ? 0 : null;
608
-
609
- if (this.aspectRatio) {
610
- if (minWidth / minHeight > aspectFactor) {
611
- minHeight = minWidth / aspectFactor;
612
- } else {
613
- minWidth = aspectFactor * minHeight;
614
- }
615
- }
616
-
617
- const limits = {
618
- left: { min: parentLim, max: left + (width - minWidth) },
619
- right: { min: parentLim, max: right + (width - minWidth) },
620
- top: { min: parentLim, max: top + (height - minHeight) },
621
- bottom: { min: parentLim, max: bottom + (height - minHeight) },
622
- };
623
-
624
- if (this.aspectRatio) {
625
- const aspectLimits = {
626
- left: {
627
- min: left - (Math.min(top, bottom) * aspectFactor) * 2,
628
- max: left + ((((height - minHeight) / 2) * aspectFactor) * 2),
629
- },
630
- right: {
631
- min: right - (Math.min(top, bottom) * aspectFactor) * 2,
632
- max: right + ((((height - minHeight) / 2) * aspectFactor) * 2),
633
- },
634
- top: {
635
- min: top - (Math.min(left, right) / aspectFactor) * 2,
636
- max: top + ((((width - minWidth) / 2) / aspectFactor) * 2),
637
- },
638
- bottom: {
639
- min: bottom - (Math.min(left, right) / aspectFactor) * 2,
640
- max: bottom + ((((width - minWidth) / 2) / aspectFactor) * 2),
641
- },
642
- };
643
-
644
- if (this.currentStick[0] === 'm') {
645
- limits.left = {
646
- min: Math.max(limits.left.min as number, aspectLimits.left.min),
647
- max: Math.min(limits.left.max, aspectLimits.left.max),
648
- };
649
- limits.right = {
650
- min: Math.max(limits.right.min as number, aspectLimits.right.min),
651
- max: Math.min(limits.right.max, aspectLimits.right.max),
652
- };
653
-
654
- } else if (this.currentStick[1] === 'm') {
655
- limits.top = {
656
- min: Math.max(limits.top.min as number, aspectLimits.top.min),
657
- max: Math.min(limits.top.max, aspectLimits.top.max),
658
- };
659
- limits.bottom = {
660
- min: Math.max(limits.bottom.min as number, aspectLimits.bottom.min),
661
- max: Math.min(limits.bottom.max, aspectLimits.bottom.max),
662
- };
663
- }
664
- }
665
-
666
- return limits;
667
- }
668
-
669
- sideCorrectionByLimit(limit: any, current: any) {
670
- let value = current;
671
-
672
- if (limit.min !== null && current < limit.min) {
673
- value = limit.min;
674
- } else if (limit.max !== null && limit.max < current) {
675
- value = limit.max;
676
- }
677
-
678
- return value;
679
- }
680
-
681
- rectCorrectionByLimit(rect: any) {
682
- const { limits } = this;
683
- let { newRight, newLeft, newBottom, newTop } = rect;
684
-
685
- newLeft = this.sideCorrectionByLimit(limits.left, newLeft);
686
- newRight = this.sideCorrectionByLimit(limits.right, newRight);
687
- newTop = this.sideCorrectionByLimit(limits.top, newTop);
688
- newBottom = this.sideCorrectionByLimit(limits.bottom, newBottom);
689
-
690
- return {
691
- newLeft,
692
- newRight,
693
- newTop,
694
- newBottom,
695
- };
696
- }
697
-
698
- rectCorrectionByAspectRatio(rect: any) {
699
- let { newLeft, newRight, newTop, newBottom } = rect;
700
- const { parentWidth, parentHeight, currentStick, aspectFactor, dimensionsBeforeMove } = this;
701
-
702
- let newWidth = parentWidth - newLeft - newRight;
703
- let newHeight = parentHeight - newTop - newBottom;
704
-
705
- if (currentStick[1] === 'm') {
706
- const deltaHeight = newHeight - dimensionsBeforeMove.height;
707
-
708
- newLeft -= (deltaHeight * aspectFactor) / 2;
709
- newRight -= (deltaHeight * aspectFactor) / 2;
710
- } else if (currentStick[0] === 'm') {
711
- const deltaWidth = newWidth - dimensionsBeforeMove.width;
712
-
713
- newTop -= (deltaWidth / aspectFactor) / 2;
714
- newBottom -= (deltaWidth / aspectFactor) / 2;
715
- } else if (newWidth / newHeight > aspectFactor) {
716
- newWidth = aspectFactor * newHeight;
717
-
718
- if (currentStick[1] === 'l') {
719
- newLeft = parentWidth - newRight - newWidth;
720
- } else {
721
- newRight = parentWidth - newLeft - newWidth;
722
- }
723
- } else {
724
- newHeight = newWidth / aspectFactor;
725
-
726
- if (currentStick[0] === 't') {
727
- newTop = parentHeight - newBottom - newHeight;
728
- } else {
729
- newBottom = parentHeight - newTop - newHeight;
730
- }
731
- }
732
-
733
- return { newLeft, newRight, newTop, newBottom };
734
- }
735
-
736
- storageElementInfo() {
737
-
738
- if (!this.isStorage)
739
- return
740
-
741
- if (this.name.trim() === "") {
742
- throw "unspecified name"
743
- }
744
-
745
- if (this.rect.left === null || this.rect.top === null || this.right === null || this.bottom === null) {
746
- return
747
- }
748
-
749
- const info = { "left": this.rect.left, "top": this.rect.top, "right": this.right, "bottom": this.bottom }
750
- localStorage.setItem("DragResizeView_Rect_" + this.name, JSON.stringify(info))
751
- }
752
-
753
- get positionStyle() {
754
- return {
755
- top: this.top + 'px',
756
- left: this.left + 'px',
757
- zIndex: this.zIndex,
758
- };
759
- }
760
-
761
- get sizeStyle() {
762
- return {
763
- width: this.w == 'auto' ? 'auto' : this.width + 'px',
764
- height: this.h == 'auto' ? 'auto' : this.height + 'px'
765
- };
766
- }
767
-
768
-
769
- get vdrStick() {
770
- return (stick: any) => {
771
- const stickStyle: any = {
772
- width: `${this.stickSize / this.parentScaleX}px`,
773
- height: `${this.stickSize / this.parentScaleY}px`,
774
- };
775
- stickStyle[styleMapping.y[stick[0]]] = `${this.stickSize / this.parentScaleX / -2}px`;
776
- stickStyle[styleMapping.x[stick[1]]] = `${this.stickSize / this.parentScaleX / -2}px`;
777
- return stickStyle;
778
- };
779
- }
780
-
781
- get width() {
782
- return this.parentWidth - this.left - this.right;
783
- }
784
-
785
- get height() {
786
- return this.parentHeight - this.top - this.bottom;
787
- }
788
-
789
- get rect() {
790
- return {
791
- left: Math.round(this.left),
792
- top: Math.round(this.top),
793
- width: Math.round(this.width),
794
- height: Math.round(this.height),
795
- };
796
- }
797
-
798
- @Watch('active', { immediate: false, deep: false })
799
- onActive(isActive: boolean) {
800
- if (isActive) {
801
- this.$emit('activated');
802
- } else {
803
- this.$emit('deactivated');
804
- }
805
- }
806
-
807
- @Watch('isActive', { immediate: true, deep: false })
808
- onIsActive(val: boolean) {
809
- this.active = val;
810
- }
811
-
812
- @Watch('z', { immediate: true, deep: false })
813
- onZ(val: number | string) {
814
- if (val >= 0 || val === 'auto') {
815
- this.zIndex = val as number;
816
- }
817
- }
818
-
819
- @Watch('x', { immediate: false, deep: false })
820
- onX(newVal: number, oldVal: number) {
821
- if (this.stickDrag || this.bodyDrag || (newVal === this.left)) {
822
- return;
823
- }
824
-
825
- const delta = oldVal - newVal;
826
-
827
- this.bodyDown({ pageX: this.left, pageY: this.top });
828
- this.bodyMove({ x: delta, y: 0 });
829
-
830
- this.$nextTick(() => {
831
- this.bodyUp();
832
- });
833
- }
834
-
835
- @Watch('y', { immediate: false, deep: false })
836
- onY(newVal: number, oldVal: number) {
837
- if (this.stickDrag || this.bodyDrag || (newVal === this.top)) {
838
- return;
839
- }
840
-
841
- const delta = oldVal - newVal;
842
-
843
- this.bodyDown({ pageX: this.left, pageY: this.top });
844
- this.bodyMove({ x: 0, y: delta });
845
-
846
- this.$nextTick(() => {
847
- this.bodyUp();
848
- });
849
- }
850
-
851
- @Watch('w', { immediate: false, deep: false })
852
- onW(newVal: number, oldVal: number) {
853
- if (this.stickDrag || this.bodyDrag || (newVal === this.width)) {
854
- return;
855
- }
856
-
857
- const stick = 'mr';
858
- const delta = oldVal - newVal;
859
-
860
- this.stickDown(stick, { pageX: this.right, pageY: this.top + (this.height / 2) }, true);
861
- this.stickMove({ x: delta, y: 0 });
862
-
863
- this.$nextTick(() => {
864
- this.stickUp();
865
- });
866
- }
867
-
868
- @Watch('h', { immediate: false, deep: false })
869
- onH(newVal: number, oldVal: number) {
870
- if (this.stickDrag || this.bodyDrag || (newVal === this.height)) {
871
- return;
872
- }
873
-
874
- const stick = 'bm';
875
- const delta = oldVal - newVal;
876
-
877
- this.stickDown(stick, { pageX: this.left + (this.width / 2), pageY: this.bottom }, true);
878
- this.stickMove({ x: 0, y: delta });
879
-
880
- this.$nextTick(() => {
881
- this.stickUp();
882
- });
883
- }
884
-
885
- @Watch('parentW', { immediate: false, deep: false })
886
- onParentW(val: number) {
887
- this.right = val - this.width - this.left;
888
- this.parentWidth = val;
889
- }
890
-
891
-
892
- @Watch('parentH', { immediate: false, deep: false })
893
- onParentH(val: number) {
894
- this.bottom = val - this.height - this.top;
895
- this.parentHeight = val;
896
- }
897
-
898
- }
899
-
900
- </script>
901
-
902
- <style lang="less" scoped>
903
- @import "index.less";
904
- </style>