@node-projects/web-component-designer 0.0.150 → 0.0.152
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/ElementHelper.d.ts +5 -0
- package/dist/elements/helper/ElementHelper.js +20 -0
- package/dist/elements/helper/GridHelper.js +2 -2
- package/dist/elements/helper/LayoutHelper.js +8 -2
- package/dist/elements/helper/TransformHelper.d.ts +17 -3
- package/dist/elements/helper/TransformHelper.js +204 -13
- package/dist/elements/services/DefaultServiceBootstrap.js +10 -2
- package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/DefaultPlacementService.js +24 -8
- package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +2 -0
- package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/GridPlacementService.js +2 -0
- package/dist/elements/services/placementService/IPlacementService.d.ts +1 -0
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +4 -0
- package/dist/elements/widgets/designerView/IPlacementView.d.ts +0 -1
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
- package/dist/elements/widgets/designerView/designerCanvas.js +10 -8
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +2 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +8 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +1 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +2 -1
- package/dist/elements/widgets/designerView/extensions/ExtensionType.js +1 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +20 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js +21 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +17 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js +3 -2
- package/dist/elements/widgets/designerView/extensions/GridExtension copy.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/GridExtension copy.js +30 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.js +21 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.js +18 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +2 -1
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +3 -2
- package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +3 -4
- package/dist/elements/widgets/designerView/extensions/PlacementExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/PlacementExtension.js +22 -0
- package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +13 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +3 -1
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +201 -41
- package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +8 -2
- package/dist/elements/widgets/designerView/extensions/RotateExtension.js +77 -43
- package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +1 -0
- package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +4 -1
- package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +14 -9
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +30 -20
- package/dist/elements/widgets/designerView/overlayLayerView.d.ts +1 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +10 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.js +16 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/interfaces/IPoint3D.d.ts +5 -0
- package/dist/interfaces/IPoint3D.js +1 -0
- package/package.json +1 -1
|
@@ -256,6 +256,7 @@ export class ExtensionManager {
|
|
|
256
256
|
this.refreshExtensions(designItems, ExtensionType.ContainerDragOver, ignoredExtension);
|
|
257
257
|
this.refreshExtensions(designItems, ExtensionType.ContainerDrag, ignoredExtension);
|
|
258
258
|
this.refreshExtensions(designItems, ExtensionType.Doubleclick, ignoredExtension);
|
|
259
|
+
this.refreshExtensions(designItems, ExtensionType.Placement, ignoredExtension);
|
|
259
260
|
}
|
|
260
261
|
}
|
|
261
262
|
refreshAllAppliedExtentions() {
|
|
@@ -20,4 +20,5 @@ export var ExtensionType;
|
|
|
20
20
|
*/
|
|
21
21
|
ExtensionType[ExtensionType["ContainerDrag"] = 10] = "ContainerDrag";
|
|
22
22
|
ExtensionType[ExtensionType["Doubleclick"] = 11] = "Doubleclick";
|
|
23
|
+
ExtensionType[ExtensionType["Placement"] = 12] = "Placement";
|
|
23
24
|
})(ExtensionType || (ExtensionType = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class FlexboxExtension extends AbstractExtension {
|
|
6
|
+
private _path;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../helper/TransformHelper";
|
|
2
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
3
|
+
import { OverlayLayer } from "./OverlayLayer";
|
|
4
|
+
export class FlexboxExtension extends AbstractExtension {
|
|
5
|
+
_path;
|
|
6
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
7
|
+
super(extensionManager, designerView, extendedItem);
|
|
8
|
+
}
|
|
9
|
+
extend() {
|
|
10
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, 0, this.designerCanvas);
|
|
11
|
+
this._path = this._drawTransformedRect(transformedCornerPoints, 'svg-flexbox', this._path, OverlayLayer.Background);
|
|
12
|
+
}
|
|
13
|
+
refresh() {
|
|
14
|
+
this._removeAllOverlays();
|
|
15
|
+
this.extend();
|
|
16
|
+
}
|
|
17
|
+
dispose() {
|
|
18
|
+
this._removeAllOverlays();
|
|
19
|
+
}
|
|
20
|
+
}
|
package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DesignerView } from "../designerView.js";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
|
|
4
|
+
export declare class FlexboxExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
6
|
+
}
|
package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { flexboxExtensionShowOverlayOptionName } from "./FlexboxExtensionProvider.js";
|
|
2
|
+
export class FlexboxExtensionDesignViewConfigButtons {
|
|
3
|
+
provideButtons(designerView, designerCanvas) {
|
|
4
|
+
const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
|
|
5
|
+
const btn = document.createElement('div');
|
|
6
|
+
btn.innerText = 'F';
|
|
7
|
+
btn.title = 'show flexbox overlay';
|
|
8
|
+
btn.className = 'toolbar-control';
|
|
9
|
+
if (extensionOptions[flexboxExtensionShowOverlayOptionName] !== false)
|
|
10
|
+
btn.classList.add('selected');
|
|
11
|
+
btn.onclick = () => {
|
|
12
|
+
const val = extensionOptions[flexboxExtensionShowOverlayOptionName];
|
|
13
|
+
extensionOptions[flexboxExtensionShowOverlayOptionName] = val === false ? true : false;
|
|
14
|
+
if (extensionOptions[flexboxExtensionShowOverlayOptionName] !== false)
|
|
15
|
+
btn.classList.add('selected');
|
|
16
|
+
else
|
|
17
|
+
btn.classList.remove('selected');
|
|
18
|
+
};
|
|
19
|
+
return [btn];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
4
|
+
import { IDesignerExtension } from "./IDesignerExtension";
|
|
5
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
6
|
+
export declare const flexboxExtensionShowOverlayOptionName = "flexboxExtensionShowOverlay";
|
|
7
|
+
export declare class FlexboxExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
9
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
10
|
+
readonly style: CSSStyleSheet;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
2
|
+
import { FlexboxExtension } from "./FlexboxExtension";
|
|
3
|
+
export const flexboxExtensionShowOverlayOptionName = 'flexboxExtensionShowOverlay';
|
|
4
|
+
export class FlexboxExtensionProvider {
|
|
5
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
|
+
const display = getComputedStyle(designItem.element).display;
|
|
7
|
+
if (display == 'flex' || display == 'inline-flex')
|
|
8
|
+
return designerView.instanceServiceContainer.designContext.extensionOptions[flexboxExtensionShowOverlayOptionName] !== false;
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
12
|
+
return new FlexboxExtension(extensionManager, designerView, designItem);
|
|
13
|
+
}
|
|
14
|
+
style = css `
|
|
15
|
+
.svg-flexbox { stroke: orange; fill: #9a47ff22; }
|
|
16
|
+
`;
|
|
17
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../helper/TransformHelper";
|
|
1
2
|
import { AbstractExtension } from "./AbstractExtension";
|
|
2
3
|
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
4
|
export class GrayOutDragOverContainerExtension extends AbstractExtension {
|
|
@@ -9,8 +10,8 @@ export class GrayOutDragOverContainerExtension extends AbstractExtension {
|
|
|
9
10
|
this.refresh();
|
|
10
11
|
}
|
|
11
12
|
refresh() {
|
|
12
|
-
let
|
|
13
|
-
this._rect = this.
|
|
13
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, 0, this.designerCanvas);
|
|
14
|
+
this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-rect-enter-container', this._rect, OverlayLayer.Background);
|
|
14
15
|
}
|
|
15
16
|
dispose() {
|
|
16
17
|
this._removeAllOverlays();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class GridExtension extends AbstractExtension {
|
|
6
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
7
|
+
extend(): void;
|
|
8
|
+
refresh(): void;
|
|
9
|
+
dispose(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CalculateGridInformation } from "../../../helper/GridHelper.js";
|
|
2
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
3
|
+
import { OverlayLayer } from "./OverlayLayer.js";
|
|
4
|
+
export class GridExtension extends AbstractExtension {
|
|
5
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
6
|
+
super(extensionManager, designerView, extendedItem);
|
|
7
|
+
}
|
|
8
|
+
extend() {
|
|
9
|
+
const gridInformation = CalculateGridInformation(this.extendedItem);
|
|
10
|
+
for (let gap of gridInformation.gaps) {
|
|
11
|
+
this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', null, OverlayLayer.Background);
|
|
12
|
+
}
|
|
13
|
+
for (let cellRow of gridInformation.cells) {
|
|
14
|
+
for (let cell of cellRow) {
|
|
15
|
+
this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', null, OverlayLayer.Background);
|
|
16
|
+
if (cell.name) {
|
|
17
|
+
const text = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', null, OverlayLayer.Background);
|
|
18
|
+
text.setAttribute("dominant-baseline", "hanging");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
refresh() {
|
|
24
|
+
this._removeAllOverlays();
|
|
25
|
+
this.extend();
|
|
26
|
+
}
|
|
27
|
+
dispose() {
|
|
28
|
+
this._removeAllOverlays();
|
|
29
|
+
}
|
|
30
|
+
}
|
package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DesignerView } from "../designerView.js";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
|
|
4
|
+
export declare class GridExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
6
|
+
}
|
package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { gridExtensionShowOverlayOptionName } from "./GridExtensionProvider.js";
|
|
2
|
+
export class GridExtensionDesignViewConfigButtons {
|
|
3
|
+
provideButtons(designerView, designerCanvas) {
|
|
4
|
+
const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
|
|
5
|
+
const btn = document.createElement('div');
|
|
6
|
+
btn.innerText = 'G';
|
|
7
|
+
btn.title = 'show grid overlay';
|
|
8
|
+
btn.className = 'toolbar-control';
|
|
9
|
+
if (extensionOptions[gridExtensionShowOverlayOptionName] !== false)
|
|
10
|
+
btn.classList.add('selected');
|
|
11
|
+
btn.onclick = () => {
|
|
12
|
+
const val = extensionOptions[gridExtensionShowOverlayOptionName];
|
|
13
|
+
extensionOptions[gridExtensionShowOverlayOptionName] = val === false ? true : false;
|
|
14
|
+
if (extensionOptions[gridExtensionShowOverlayOptionName] !== false)
|
|
15
|
+
btn.classList.add('selected');
|
|
16
|
+
else
|
|
17
|
+
btn.classList.remove('selected');
|
|
18
|
+
};
|
|
19
|
+
return [btn];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
4
|
+
import { IDesignerExtension } from "./IDesignerExtension";
|
|
5
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
6
|
+
export declare const gridExtensionShowOverlayOptionName = "gridExtensionShowOverlay";
|
|
7
|
+
export declare class GridExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
9
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
10
|
+
readonly style: CSSStyleSheet;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { GridExtension } from './GridExtension';
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
export const gridExtensionShowOverlayOptionName = 'gridExtensionShowOverlay';
|
|
4
|
+
export class GridExtensionProvider {
|
|
5
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
|
+
if (getComputedStyle(designItem.element).display == 'grid')
|
|
7
|
+
return designerView.instanceServiceContainer.designContext.extensionOptions[gridExtensionShowOverlayOptionName] !== false;
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
11
|
+
return new GridExtension(extensionManager, designerView, designItem);
|
|
12
|
+
}
|
|
13
|
+
style = css `
|
|
14
|
+
.svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
|
|
15
|
+
.svg-grid-area { font-size: 8px; }
|
|
16
|
+
.svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
@@ -3,7 +3,8 @@ import { css } from "@node-projects/base-custom-webcomponent";
|
|
|
3
3
|
export const gridExtensionShowOverlayOptionName = 'gridExtensionShowOverlay';
|
|
4
4
|
export class GridExtensionProvider {
|
|
5
5
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
|
-
|
|
6
|
+
const display = getComputedStyle(designItem.element).display;
|
|
7
|
+
if (display == 'grid' || display == 'inline-grid')
|
|
7
8
|
return designerView.instanceServiceContainer.designContext.extensionOptions[gridExtensionShowOverlayOptionName] !== false;
|
|
8
9
|
return false;
|
|
9
10
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../helper/TransformHelper";
|
|
1
2
|
import { AbstractExtension } from './AbstractExtension';
|
|
2
3
|
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
4
|
export class InvisibleDivExtension extends AbstractExtension {
|
|
@@ -9,8 +10,8 @@ export class InvisibleDivExtension extends AbstractExtension {
|
|
|
9
10
|
this.refresh();
|
|
10
11
|
}
|
|
11
12
|
refresh() {
|
|
12
|
-
|
|
13
|
-
this._rect = this.
|
|
13
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, 0, this.designerCanvas);
|
|
14
|
+
this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-invisible-div', this._rect, OverlayLayer.Background);
|
|
14
15
|
}
|
|
15
16
|
dispose() {
|
|
16
17
|
this._removeAllOverlays();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../helper/TransformHelper";
|
|
1
2
|
import { AbstractExtension } from "./AbstractExtension";
|
|
2
3
|
const offset = 3;
|
|
3
4
|
export class MouseOverExtension extends AbstractExtension {
|
|
@@ -9,10 +10,8 @@ export class MouseOverExtension extends AbstractExtension {
|
|
|
9
10
|
this.refresh();
|
|
10
11
|
}
|
|
11
12
|
refresh() {
|
|
12
|
-
let
|
|
13
|
-
|
|
14
|
-
const yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
|
|
15
|
-
this._rect = this._drawRect((xOffset - offset) / this.designerCanvas.scaleFactor, (yOffset - offset) / this.designerCanvas.scaleFactor, (itemRect.width + offset + offset) / this.designerCanvas.scaleFactor, (itemRect.height + offset + offset) / this.designerCanvas.scaleFactor, 'svg-hover', this._rect);
|
|
13
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, offset, this.designerCanvas);
|
|
14
|
+
this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-hover', this._rect);
|
|
16
15
|
this._rect.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
|
|
17
16
|
}
|
|
18
17
|
dispose() {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class PlacementExtension extends AbstractExtension {
|
|
6
|
+
private _rect;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
2
|
+
export class PlacementExtension extends AbstractExtension {
|
|
3
|
+
_rect;
|
|
4
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
5
|
+
super(extensionManager, designerView, extendedItem);
|
|
6
|
+
}
|
|
7
|
+
extend() {
|
|
8
|
+
this.refresh();
|
|
9
|
+
}
|
|
10
|
+
refresh() {
|
|
11
|
+
const itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
12
|
+
const computedStyle = getComputedStyle(this.extendedItem.element);
|
|
13
|
+
const left = Number.parseFloat(computedStyle.marginLeft.replace('px', ''));
|
|
14
|
+
const top = Number.parseFloat(computedStyle.marginTop.replace('px', ''));
|
|
15
|
+
const right = Number.parseFloat(computedStyle.marginRight.replace('px', ''));
|
|
16
|
+
const bottom = Number.parseFloat(computedStyle.marginBottom.replace('px', ''));
|
|
17
|
+
this._rect = this._drawRect(itemRect.x - left, itemRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-hover', this._rect);
|
|
18
|
+
}
|
|
19
|
+
dispose() {
|
|
20
|
+
this._removeAllOverlays();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
4
|
+
import { IDesignerExtension } from "./IDesignerExtension";
|
|
5
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
6
|
+
export declare class PlacementExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
+
readonly style: CSSStyleSheet;
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
2
|
+
import { PlacementExtension } from "./PlacementExtension";
|
|
3
|
+
export class PlacementExtensionProvider {
|
|
4
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
8
|
+
return new PlacementExtension(extensionManager, designerView, designItem);
|
|
9
|
+
}
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-hover { stroke: #90caf9; fill: none; }
|
|
12
|
+
`;
|
|
13
|
+
}
|
|
@@ -16,10 +16,12 @@ export declare class ResizeExtension extends AbstractExtension {
|
|
|
16
16
|
private _circle6;
|
|
17
17
|
private _circle7;
|
|
18
18
|
private _circle8;
|
|
19
|
+
private _initialComputedTransformOrigins;
|
|
20
|
+
private _initialTransformOrigins;
|
|
19
21
|
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, extendedItem: IDesignItem, resizeAllSelected: boolean);
|
|
20
22
|
extend(): void;
|
|
21
23
|
refresh(): void;
|
|
22
24
|
_drawResizerOverlay(x: number, y: number, cursor: string, oldCircle?: SVGCircleElement): SVGCircleElement;
|
|
23
|
-
_pointerActionTypeResize(circle: SVGCircleElement, event: PointerEvent, actionMode
|
|
25
|
+
_pointerActionTypeResize(circle: SVGCircleElement, event: PointerEvent, actionMode: string): void;
|
|
24
26
|
dispose(): void;
|
|
25
27
|
}
|