@node-projects/web-component-designer 0.1.70 → 0.1.72
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/elements/helper/TransformHelper.d.ts +1 -1
- package/dist/elements/helper/TransformHelper.js +2 -2
- package/dist/elements/widgets/designerView/designerCanvas.js +5 -18
- package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +3 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +51 -23
- package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +4 -0
- package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +3 -3
- package/dist/elements/widgets/designerView/extensions/RotateExtension.js +10 -6
- package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +4 -0
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +12 -6
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ export declare function addVectors(vectorA: [number, number], vectorB: [number,
|
|
|
12
12
|
export declare function getDesignerCanvasNormalizedTransformedOriginWithoutParentTransformation(element: HTMLElement, designerCanvas: IDesignerCanvas): DOMPoint;
|
|
13
13
|
export declare function getResultingTransformationBetweenElementAndAllAncestors(element: HTMLElement, ancestor: HTMLElement, excludeAncestor?: boolean, cache?: Record<string | symbol, any>): DOMMatrix;
|
|
14
14
|
export declare function getByParentsTransformedPointRelatedToCanvas(element: HTMLElement, point: DOMPoint, designerCanvas: IDesignerCanvas, cache?: Record<string | symbol, any>): IPoint;
|
|
15
|
-
export declare function getDesignerCanvasNormalizedTransformedPoint(element: HTMLElement, point: IPoint, designerCanvas: IDesignerCanvas): IPoint;
|
|
15
|
+
export declare function getDesignerCanvasNormalizedTransformedPoint(element: HTMLElement, point: IPoint, designerCanvas: IDesignerCanvas, cache: Record<string | symbol, any>): IPoint;
|
|
16
16
|
export declare function getElementSize(element: HTMLElement): {
|
|
17
17
|
width: number;
|
|
18
18
|
height: number;
|
|
@@ -177,8 +177,8 @@ export function getByParentsTransformedPointRelatedToCanvas(element, point, desi
|
|
|
177
177
|
}
|
|
178
178
|
return byParentTransformedPointRelatedToCanvas;
|
|
179
179
|
}
|
|
180
|
-
export function getDesignerCanvasNormalizedTransformedPoint(element, point, designerCanvas) {
|
|
181
|
-
return getDesignerCanvasNormalizedTransformedCornerDOMPoints(element, { x: -point.x, y: -point.y }, designerCanvas)[0];
|
|
180
|
+
export function getDesignerCanvasNormalizedTransformedPoint(element, point, designerCanvas, cache) {
|
|
181
|
+
return getDesignerCanvasNormalizedTransformedCornerDOMPoints(element, { x: -point.x, y: -point.y }, designerCanvas, cache)[0];
|
|
182
182
|
}
|
|
183
183
|
export function getElementSize(element) {
|
|
184
184
|
let width = element.offsetWidth;
|
|
@@ -120,8 +120,10 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
120
120
|
* {
|
|
121
121
|
touch-action: none;
|
|
122
122
|
}
|
|
123
|
-
#node-projects-designer-canvas-
|
|
123
|
+
#node-projects-designer-canvas-canvasContainer {
|
|
124
124
|
background: var(--node-projects-web-component-designer-background, border-box fixed 0px 0px repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAFXmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIwIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIyMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC8xIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAvMSIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QmFja2dyb3VuZGdyaWRfMTBweDwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnRpdGxlPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS4xMC42IgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTEyLTA4VDA5OjE1OjQ4KzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4fvgn+AAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8GjRhRLCiLl7BCftTExmLkV2ExnvJr8+bNvBk1b+b13kiyVbaKEhu/FvwFbJW1UkRKlrImNug5b2ZqJplzO/d87vfec7r3XPCpSd10KnrATGXs8FhImZtfUPwvBKjCTx/Nmu5YUzOjKiXt854yL952ebVKn/vXaqIxR4eyKuEh3bIzwuPCk6sZy+Md4UY9oUWFz4Q7bbmg8J2nR3L86nE8x98e22p4GHz1wkq8iCNFrCdsU1heTpuZXNHz9/FeEoilZmcktoq34BBmjBAKE4wwTJBeBmUO0iX96ZYVJfJ7svnTpCVXl9liDZtl4iTI0CnqilSPSTREj8lIsub1/29fHaO/L1c9EILKZ9d9bwf/Nvxsue7Xkev+HEP5E1ymCvnpQxj4EH2roLUdQN0GnF8VtMguXGxC06Ol2VpWKhf3GQa8nULtPDTcQPVirmf5fU4eQF2Xr7qGvX3okPN1S790cWfsRnax1QAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAC9JREFUOI1jfPr0KQNuICUlhUeWCY8cQTCqeWRoZvz//z8e6WfPntHK5lHNI0MzAMChCNMTuPcnAAAAAElFTkSuQmCC));
|
|
125
|
+
}
|
|
126
|
+
#node-projects-designer-canvas-canvas {
|
|
125
127
|
image-rendering: pixelated;
|
|
126
128
|
box-sizing: border-box;
|
|
127
129
|
width: 100%;
|
|
@@ -341,21 +343,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
341
343
|
.getStylesheets()
|
|
342
344
|
.map(x => cssFromString(x.content)));
|
|
343
345
|
}
|
|
344
|
-
let backgroundSet = false;
|
|
345
|
-
for (const s of styles) {
|
|
346
|
-
for (let r of s.cssRules) {
|
|
347
|
-
if (r instanceof CSSStyleRule) {
|
|
348
|
-
if (r.selectorText.split(',').includes(':host')) {
|
|
349
|
-
if (r.style.background) {
|
|
350
|
-
this._canvas.style.background = r.style.background;
|
|
351
|
-
backgroundSet = true;
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
if (!backgroundSet)
|
|
358
|
-
this._canvas.style.background = '';
|
|
359
346
|
this._canvasShadowRoot.adoptedStyleSheets = styles;
|
|
360
347
|
}
|
|
361
348
|
/* --- start IUiCommandHandler --- */
|
|
@@ -442,10 +429,10 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
442
429
|
}
|
|
443
430
|
}
|
|
444
431
|
disableBackgroud() {
|
|
445
|
-
this.
|
|
432
|
+
this._canvasContainer.style.backgroundImage = 'none';
|
|
446
433
|
}
|
|
447
434
|
enableBackground() {
|
|
448
|
-
this.
|
|
435
|
+
this._canvasContainer.style.backgroundImage = 'var(--node-projects-web-component-designer-background)';
|
|
449
436
|
}
|
|
450
437
|
zoomToFit() {
|
|
451
438
|
const autoZomOffset = 10;
|
|
@@ -9,4 +9,5 @@ export declare abstract class AbstractExtension extends AbstractExtensionBase im
|
|
|
9
9
|
abstract extend(cache: Record<string | symbol, any>, event?: Event): any;
|
|
10
10
|
abstract refresh(cache: Record<string | symbol, any>, event?: Event): any;
|
|
11
11
|
abstract dispose(): any;
|
|
12
|
+
remove(): void;
|
|
12
13
|
}
|
|
@@ -12,6 +12,7 @@ export declare class ExtensionManager implements IExtensionManager {
|
|
|
12
12
|
private _selectedElementsChanged;
|
|
13
13
|
applyExtension(designItem: IDesignItem, extensionType: ExtensionType, event?: Event, recursive?: boolean): IDesignerExtension[];
|
|
14
14
|
applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, event?: Event, recursive?: boolean): void;
|
|
15
|
+
removeExtensionInstance(designItem: IDesignItem, extension: IDesignerExtension): void;
|
|
15
16
|
removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): void;
|
|
16
17
|
removeExtensions(designItems: IDesignItem[], recursive: boolean, extensionType?: ExtensionType): void;
|
|
17
18
|
refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): void;
|
|
@@ -133,6 +133,24 @@ export class ExtensionManager {
|
|
|
133
133
|
}
|
|
134
134
|
this.designerCanvas.overlayLayer.endBatch();
|
|
135
135
|
}
|
|
136
|
+
removeExtensionInstance(designItem, extension) {
|
|
137
|
+
for (let e of designItem.appliedDesignerExtensions) {
|
|
138
|
+
const idx = e[1].indexOf(extension);
|
|
139
|
+
if (idx >= 0) {
|
|
140
|
+
try {
|
|
141
|
+
extension.dispose();
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
console.error(err);
|
|
145
|
+
}
|
|
146
|
+
e[1].splice(idx, 1);
|
|
147
|
+
if (e[1].length == 0)
|
|
148
|
+
designItem.appliedDesignerExtensions.delete(e[0]);
|
|
149
|
+
if (!designItem.appliedDesignerExtensions.size)
|
|
150
|
+
this.designItemsWithExtentions.delete(designItem);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
136
154
|
removeExtension(designItem, extensionType) {
|
|
137
155
|
if (designItem) {
|
|
138
156
|
if (extensionType) {
|
|
@@ -218,15 +236,20 @@ export class ExtensionManager {
|
|
|
218
236
|
refreshExtension(designItem, extensionType, event) {
|
|
219
237
|
if (designItem) {
|
|
220
238
|
if (extensionType) {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
if (!designItem.element.isConnected) {
|
|
240
|
+
this.removeExtension(designItem, extensionType);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
let exts = designItem.appliedDesignerExtensions.get(extensionType);
|
|
244
|
+
if (exts) {
|
|
245
|
+
const cache = {};
|
|
246
|
+
for (let e of exts) {
|
|
247
|
+
try {
|
|
248
|
+
e.refresh(cache, event);
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
console.error(err);
|
|
252
|
+
}
|
|
230
253
|
}
|
|
231
254
|
}
|
|
232
255
|
}
|
|
@@ -253,22 +276,27 @@ export class ExtensionManager {
|
|
|
253
276
|
if (extensionType) {
|
|
254
277
|
const cache = {};
|
|
255
278
|
outer1: for (let i of designItems) {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if (
|
|
265
|
-
|
|
266
|
-
|
|
279
|
+
if (!i.element.isConnected) {
|
|
280
|
+
this.removeExtension(i, extensionType);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
let exts = i.appliedDesignerExtensions.get(extensionType);
|
|
284
|
+
if (exts) {
|
|
285
|
+
for (let e of exts) {
|
|
286
|
+
try {
|
|
287
|
+
if (e != ignoredExtension)
|
|
288
|
+
e.refresh(cache, event);
|
|
289
|
+
if (timeout) {
|
|
290
|
+
const end = performance.now();
|
|
291
|
+
if (end - start > timeout) {
|
|
292
|
+
console.warn("refreshExtensions() took too long, stopped refreshing");
|
|
293
|
+
break outer1;
|
|
294
|
+
}
|
|
267
295
|
}
|
|
268
296
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
297
|
+
catch (err) {
|
|
298
|
+
console.error(err);
|
|
299
|
+
}
|
|
272
300
|
}
|
|
273
301
|
}
|
|
274
302
|
}
|
|
@@ -6,6 +6,7 @@ export interface IExtensionManager {
|
|
|
6
6
|
applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, event?: Event, recursive?: boolean): any;
|
|
7
7
|
removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
|
|
8
8
|
removeExtensions(designItems: IDesignItem[], recursive: boolean, extensionType?: ExtensionType): any;
|
|
9
|
+
removeExtensionInstance(designItem: IDesignItem, extension: IDesignerExtension): any;
|
|
9
10
|
refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): any;
|
|
10
11
|
refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, event?: Event, ignoredExtension?: IDesignerExtension, timeout?: number): any;
|
|
11
12
|
refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension): any;
|
|
@@ -28,6 +28,10 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
28
28
|
refresh(cache, event) {
|
|
29
29
|
//#region Resizer circles
|
|
30
30
|
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, null, this.designerCanvas, cache);
|
|
31
|
+
if (isNaN(transformedCornerPoints[0].x) || isNaN(transformedCornerPoints[1].x)) {
|
|
32
|
+
this.remove();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
31
35
|
this._circle1 = this._drawResizerOverlay(transformedCornerPoints[0].x, transformedCornerPoints[0].y, 'nw-resize', this._circle1);
|
|
32
36
|
this._circle2 = this._drawResizerOverlay((transformedCornerPoints[0].x + (transformedCornerPoints[1].x - transformedCornerPoints[0].x) / 2), (transformedCornerPoints[0].y + (transformedCornerPoints[1].y - transformedCornerPoints[0].y) / 2), 'n-resize', this._circle2);
|
|
33
37
|
this._circle3 = this._drawResizerOverlay(transformedCornerPoints[1].x, transformedCornerPoints[1].y, 'ne-resize', this._circle3);
|
|
@@ -10,9 +10,9 @@ export declare class RotateExtension extends AbstractExtension {
|
|
|
10
10
|
private _textAngle;
|
|
11
11
|
private _actualRotationAngle;
|
|
12
12
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
13
|
-
extend(): void;
|
|
14
|
-
refresh(): void;
|
|
15
|
-
_drawRotateOverlay(itemRect: DOMRect, oldRotateIcon: any): any;
|
|
13
|
+
extend(cache: Record<string | symbol, any>, event?: Event): void;
|
|
14
|
+
refresh(cache: Record<string | symbol, any>, event?: Event): void;
|
|
15
|
+
_drawRotateOverlay(itemRect: DOMRect, oldRotateIcon: any, cache: Record<string | symbol, any>): any;
|
|
16
16
|
_pointerActionTypeRotate(event: PointerEvent): void;
|
|
17
17
|
dispose(): void;
|
|
18
18
|
}
|
|
@@ -11,17 +11,21 @@ export class RotateExtension extends AbstractExtension {
|
|
|
11
11
|
constructor(extensionManager, designerView, extendedItem) {
|
|
12
12
|
super(extensionManager, designerView, extendedItem);
|
|
13
13
|
}
|
|
14
|
-
extend() {
|
|
15
|
-
this.refresh();
|
|
14
|
+
extend(cache, event) {
|
|
15
|
+
this.refresh(cache, event);
|
|
16
16
|
}
|
|
17
|
-
refresh() {
|
|
17
|
+
refresh(cache, event) {
|
|
18
18
|
const rect = this.extendedItem.element.getBoundingClientRect();
|
|
19
19
|
this._actualRotationAngle = getRotationAngleFromMatrix(null, new DOMMatrix(this.extendedItem.element.style.transform));
|
|
20
|
-
this._rotateIcon = this._drawRotateOverlay(rect, this._rotateIcon);
|
|
20
|
+
this._rotateIcon = this._drawRotateOverlay(rect, this._rotateIcon, cache);
|
|
21
21
|
}
|
|
22
|
-
_drawRotateOverlay(itemRect, oldRotateIcon) {
|
|
23
|
-
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, { x: 10, y: 10 }, this.designerCanvas);
|
|
22
|
+
_drawRotateOverlay(itemRect, oldRotateIcon, cache) {
|
|
23
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, { x: 10, y: 10 }, this.designerCanvas, cache);
|
|
24
24
|
let rotateIconPosition = transformedCornerPoints[0];
|
|
25
|
+
if (isNaN(transformedCornerPoints[0].x) || isNaN(transformedCornerPoints[1].x)) {
|
|
26
|
+
this.remove();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
25
29
|
if (!oldRotateIcon) {
|
|
26
30
|
const g = document.createElementNS("http://www.w3.org/2000/svg", "g");
|
|
27
31
|
const line = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
|
@@ -20,6 +20,10 @@ export class SelectionDefaultExtension extends AbstractExtension {
|
|
|
20
20
|
}
|
|
21
21
|
else
|
|
22
22
|
transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, null, this.designerCanvas, cache);
|
|
23
|
+
if (isNaN(transformedCornerPoints[0].x) || isNaN(transformedCornerPoints[1].x)) {
|
|
24
|
+
this.remove();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
23
27
|
this._line1 = this._drawLine(transformedCornerPoints[0].x, transformedCornerPoints[0].y, transformedCornerPoints[1].x, transformedCornerPoints[1].y, 'svg-selection', this._line1);
|
|
24
28
|
this._line2 = this._drawLine(transformedCornerPoints[0].x, transformedCornerPoints[0].y, transformedCornerPoints[2].x, transformedCornerPoints[2].y, 'svg-selection', this._line2);
|
|
25
29
|
this._line3 = this._drawLine(transformedCornerPoints[1].x, transformedCornerPoints[1].y, transformedCornerPoints[3].x, transformedCornerPoints[3].y, 'svg-selection', this._line3);
|
|
@@ -8,8 +8,8 @@ export declare class TransformOriginExtension extends AbstractExtension {
|
|
|
8
8
|
private _circle2;
|
|
9
9
|
private _oldValue;
|
|
10
10
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
11
|
-
extend(): void;
|
|
11
|
+
extend(cache: Record<string | symbol, any>, event?: Event): void;
|
|
12
12
|
pointerEvent(event: PointerEvent): void;
|
|
13
|
-
refresh(): void;
|
|
13
|
+
refresh(cache: Record<string | symbol, any>, event?: Event): void;
|
|
14
14
|
dispose(): void;
|
|
15
15
|
}
|
|
@@ -10,10 +10,14 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
10
10
|
constructor(extensionManager, designerView, extendedItem) {
|
|
11
11
|
super(extensionManager, designerView, extendedItem);
|
|
12
12
|
}
|
|
13
|
-
extend() {
|
|
13
|
+
extend(cache, event) {
|
|
14
14
|
const computed = getComputedStyle(this.extendedItem.element);
|
|
15
15
|
const to = computed.transformOrigin.split(' '); // This value remains the same regardless of scalefactor
|
|
16
|
-
const toDOMPoint = getDesignerCanvasNormalizedTransformedPoint(this.extendedItem.element, { x: parseFloat(to[0]) * this.designerCanvas.zoomFactor, y: parseFloat(to[1]) * this.designerCanvas.zoomFactor }, this.designerCanvas);
|
|
16
|
+
const toDOMPoint = getDesignerCanvasNormalizedTransformedPoint(this.extendedItem.element, { x: parseFloat(to[0]) * this.designerCanvas.zoomFactor, y: parseFloat(to[1]) * this.designerCanvas.zoomFactor }, this.designerCanvas, cache);
|
|
17
|
+
if (isNaN(toDOMPoint.x) || isNaN(toDOMPoint.y)) {
|
|
18
|
+
this.remove();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
17
21
|
this._circle = this._drawCircle(toDOMPoint.x, toDOMPoint.y, 5 / this.designerCanvas.zoomFactor, 'svg-transform-origin');
|
|
18
22
|
this._circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
|
|
19
23
|
this._circle.style.cursor = 'pointer';
|
|
@@ -78,15 +82,17 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
78
82
|
}
|
|
79
83
|
else
|
|
80
84
|
this.extendedItem.updateStyleInSheetOrLocal('transform-origin', newX + 'px' + ' ' + newY + 'px');
|
|
81
|
-
this.refresh();
|
|
85
|
+
this.refresh(null, null);
|
|
82
86
|
this._startPos = null;
|
|
83
87
|
}
|
|
84
88
|
break;
|
|
85
89
|
}
|
|
86
90
|
}
|
|
87
|
-
refresh() {
|
|
88
|
-
this.
|
|
89
|
-
|
|
91
|
+
refresh(cache, event) {
|
|
92
|
+
if (this._circle) {
|
|
93
|
+
this._removeAllOverlays();
|
|
94
|
+
this.extend(cache, event);
|
|
95
|
+
}
|
|
90
96
|
}
|
|
91
97
|
dispose() {
|
|
92
98
|
this._removeAllOverlays();
|