@node-projects/web-component-designer 0.0.89 → 0.0.92
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/README.md +2 -1
- package/dist/elements/helper/ArrangeHelper.d.ts +7 -0
- package/dist/elements/helper/ArrangeHelper.js +79 -0
- package/dist/elements/helper/KeyNameHelper.d.ts +0 -0
- package/dist/elements/helper/KeyNameHelper.js +1 -0
- package/dist/elements/helper/TransformHelper.d.ts +3 -0
- package/dist/elements/helper/TransformHelper.js +7 -0
- package/dist/elements/helper/contextMenu/IContextmenuItem.d.ts +1 -0
- package/dist/elements/services/DefaultServiceBootstrap.js +6 -0
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +3 -2
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +17 -13
- package/dist/elements/widgets/codeView/code-view-monaco.js +3 -3
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
- package/dist/elements/widgets/designerView/designerCanvas.js +15 -23
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +0 -4
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +13 -10
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.js +15 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +4 -5
- package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +1 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +0 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js +10 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu copy.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu copy.js +14 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js +27 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.js +19 -0
- package/dist/elements/widgets/designerView/tools/TextTool.d.ts +0 -1
- package/dist/elements/widgets/designerView/tools/TextTool.js +15 -16
- package/dist/elements/widgets/paletteView/paletteTreeView.js +5 -2
- package/dist/elements/widgets/treeView/treeView.js +1 -3
- package/dist/elements/widgets/treeView/treeViewExtended.d.ts +1 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +13 -6
- package/dist/enums/Orientation.d.ts +8 -0
- package/dist/enums/Orientation.js +9 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# web-component-designer
|
|
2
2
|
|
|
3
|
-
## Caution - this is a preview Version, a
|
|
3
|
+
## Caution - this is a preview Version, a RC1 is now planed for May 2022 - it's already usable but big Refactoring could still happen
|
|
4
|
+
|
|
4
5
|
|
|
5
6
|
A HTML WebComponent for Designing Webcomponents and HTML Pages.
|
|
6
7
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignerCanvas } from "../..";
|
|
2
|
+
import { Orientation } from "../../enums/Orientation";
|
|
3
|
+
export declare abstract class ArrangeHelper {
|
|
4
|
+
static arrangeElements(orientation: Orientation, designerCanvas: IDesignerCanvas): void;
|
|
5
|
+
private static arrange;
|
|
6
|
+
private static formGroup;
|
|
7
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Orientation } from "../../enums/Orientation";
|
|
2
|
+
export class ArrangeHelper {
|
|
3
|
+
static arrangeElements(orientation, designerCanvas) {
|
|
4
|
+
switch (orientation) {
|
|
5
|
+
case Orientation.TOP: {
|
|
6
|
+
const grp = this.formGroup(ArrangeDirection.TOP, designerCanvas);
|
|
7
|
+
const top = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('top');
|
|
8
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
9
|
+
this.arrange(elem, 'top', top);
|
|
10
|
+
}
|
|
11
|
+
grp.commit();
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
case Orientation.RIGHT: {
|
|
15
|
+
const grp = this.formGroup(ArrangeDirection.RIGHT, designerCanvas);
|
|
16
|
+
const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
|
|
17
|
+
const right = Math.floor(arrElement.x + arrElement.width);
|
|
18
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
19
|
+
this.arrange(elem, 'left', (right - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).width)) + "px");
|
|
20
|
+
}
|
|
21
|
+
grp.commit();
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
case Orientation.BOTTOM:
|
|
25
|
+
const grp = this.formGroup(ArrangeDirection.BOTTOM, designerCanvas);
|
|
26
|
+
const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
|
|
27
|
+
const top = Math.floor(arrElement.y + arrElement.height);
|
|
28
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
29
|
+
this.arrange(elem, 'top', (top - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).height)) + "px");
|
|
30
|
+
}
|
|
31
|
+
grp.commit();
|
|
32
|
+
break;
|
|
33
|
+
case Orientation.LEFT: {
|
|
34
|
+
const grp = this.formGroup(ArrangeDirection.LEFT, designerCanvas);
|
|
35
|
+
const left = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('left');
|
|
36
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
37
|
+
this.arrange(elem, 'left', left);
|
|
38
|
+
}
|
|
39
|
+
grp.commit();
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case Orientation.VERTICAL_CENTER: {
|
|
43
|
+
const grp = this.formGroup(ArrangeDirection.VERTICAL_CENTER, designerCanvas);
|
|
44
|
+
const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
|
|
45
|
+
const ver_center = arrElement.y + arrElement.height / 2;
|
|
46
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
47
|
+
this.arrange(elem, 'top', (ver_center - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).height) / 2) + "px");
|
|
48
|
+
}
|
|
49
|
+
grp.commit();
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case Orientation.HORIZONTAL_CENTER: {
|
|
53
|
+
const grp = this.formGroup(ArrangeDirection.HORIZONTAL_CENTER, designerCanvas);
|
|
54
|
+
const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
|
|
55
|
+
const hor_center = arrElement.x + (arrElement.width / 2);
|
|
56
|
+
for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
57
|
+
this.arrange(elem, 'left', (hor_center - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).width) / 2) + "px");
|
|
58
|
+
}
|
|
59
|
+
grp.commit();
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static arrange(element, attribut, value) {
|
|
65
|
+
element.setStyle(attribut, value);
|
|
66
|
+
}
|
|
67
|
+
static formGroup(name, designerCanvas) {
|
|
68
|
+
return designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup(name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
var ArrangeDirection;
|
|
72
|
+
(function (ArrangeDirection) {
|
|
73
|
+
ArrangeDirection["TOP"] = "arrangeTop";
|
|
74
|
+
ArrangeDirection["RIGHT"] = "arrangeRight";
|
|
75
|
+
ArrangeDirection["BOTTOM"] = "arrangeBottom";
|
|
76
|
+
ArrangeDirection["LEFT"] = "arrangeLeft";
|
|
77
|
+
ArrangeDirection["HORIZONTAL_CENTER"] = "arrangeHorizontalCenter";
|
|
78
|
+
ArrangeDirection["VERTICAL_CENTER"] = "arrangeVerticalCenter";
|
|
79
|
+
})(ArrangeDirection || (ArrangeDirection = {}));
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -1 +1,4 @@
|
|
|
1
|
+
import { IPoint } from "../../index.js";
|
|
1
2
|
export declare function combineTransforms(helperElement: HTMLElement, element: HTMLElement, transform1: string, transform2: string): void;
|
|
3
|
+
export declare function getDomMatrix(element: HTMLElement): DOMMatrix;
|
|
4
|
+
export declare function convertCoordinates(point: IPoint, matrix: DOMMatrix): DOMPoint;
|
|
@@ -12,3 +12,10 @@ export function combineTransforms(helperElement, element, transform1, transform2
|
|
|
12
12
|
const result = matrix2.multiply(matrix1);
|
|
13
13
|
element.style.transform = result.toString();
|
|
14
14
|
}
|
|
15
|
+
export function getDomMatrix(element) {
|
|
16
|
+
return new DOMMatrix(window.getComputedStyle(element).transform);
|
|
17
|
+
}
|
|
18
|
+
export function convertCoordinates(point, matrix) {
|
|
19
|
+
let domPoint = new DOMPoint(point.x, point.y);
|
|
20
|
+
return domPoint.matrixTransform(matrix.inverse());
|
|
21
|
+
}
|
|
@@ -53,6 +53,8 @@ import { DrawLineTool } from '../widgets/designerView/tools/DrawLineTool.js';
|
|
|
53
53
|
import { HtmlWriterService } from './htmlWriterService/HtmlWriterService.js';
|
|
54
54
|
import { RectContextMenu } from '../widgets/designerView/extensions/contextMenu/RectContextMenu.js';
|
|
55
55
|
import { PathContextMenu } from '../widgets/designerView/extensions/contextMenu/PathContextMenu.js';
|
|
56
|
+
import { SeperatorContextMenu } from '../widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js';
|
|
57
|
+
import { ZoomToElementContextMenu } from '../widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js';
|
|
56
58
|
export function createDefaultServiceContainer() {
|
|
57
59
|
let serviceContainer = new ServiceContainer();
|
|
58
60
|
serviceContainer.register("propertyService", new PolymerPropertiesService());
|
|
@@ -124,10 +126,14 @@ export function createDefaultServiceContainer() {
|
|
|
124
126
|
serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons());
|
|
125
127
|
serviceContainer.designerContextMenuExtensions = [
|
|
126
128
|
new CopyPasteContextMenu(),
|
|
129
|
+
new SeperatorContextMenu(),
|
|
130
|
+
new ZoomToElementContextMenu(),
|
|
131
|
+
new SeperatorContextMenu(),
|
|
127
132
|
new ZMoveContextMenu(),
|
|
128
133
|
new MultipleItemsSelectedContextMenu(),
|
|
129
134
|
new PathContextMenu(),
|
|
130
135
|
new RectContextMenu(),
|
|
136
|
+
new SeperatorContextMenu(),
|
|
131
137
|
new ItemsBelowContextMenu(),
|
|
132
138
|
];
|
|
133
139
|
return serviceContainer;
|
|
@@ -68,11 +68,12 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
68
68
|
}
|
|
69
69
|
else if (designItem.hasContent) {
|
|
70
70
|
indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
|
|
71
|
+
//this._conditionalyWriteNewline(indentedTextWriter, designItem);
|
|
71
72
|
}
|
|
72
73
|
if (!DomConverter.IsSelfClosingElement(designItem.name))
|
|
73
74
|
indentedTextWriter.write('</' + designItem.name + '>');
|
|
74
|
-
if (!contentSingleTextNode)
|
|
75
|
-
|
|
75
|
+
//if (!contentSingleTextNode)
|
|
76
|
+
this._conditionalyWriteNewline(indentedTextWriter, designItem);
|
|
76
77
|
}
|
|
77
78
|
if (designItemsAssignmentList) {
|
|
78
79
|
designItemsAssignmentList.set(designItem, { start: start, length: indentedTextWriter.position - start - 1 });
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { CommandType } from "../../../commandHandling/CommandType.js";
|
|
2
|
+
import { ArrangeHelper } from "../../helper/ArrangeHelper.js";
|
|
3
|
+
import { Orientation } from "../../../enums/Orientation.js";
|
|
2
4
|
export class DefaultModelCommandService {
|
|
3
5
|
canExecuteCommand(designerCanvas, command) {
|
|
4
6
|
if (command.type == CommandType.moveBackward ||
|
|
@@ -33,21 +35,23 @@ export class DefaultModelCommandService {
|
|
|
33
35
|
sel.parent.insertChild(sel, 0);
|
|
34
36
|
else if (command.type == CommandType.moveToFront)
|
|
35
37
|
sel.parent.insertChild(sel);
|
|
38
|
+
else if (command.type == CommandType.arrangeTop) {
|
|
39
|
+
ArrangeHelper.arrangeElements(Orientation.TOP, designerCanvas);
|
|
40
|
+
}
|
|
41
|
+
else if (command.type == CommandType.arrangeRight) {
|
|
42
|
+
ArrangeHelper.arrangeElements(Orientation.RIGHT, designerCanvas);
|
|
43
|
+
}
|
|
36
44
|
else if (command.type == CommandType.arrangeLeft) {
|
|
37
|
-
|
|
38
|
-
const left = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('left');
|
|
39
|
-
for (let s of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
40
|
-
s.setStyle('left', left);
|
|
41
|
-
}
|
|
42
|
-
grp.commit();
|
|
45
|
+
ArrangeHelper.arrangeElements(Orientation.LEFT, designerCanvas);
|
|
43
46
|
}
|
|
44
|
-
else if (command.type == CommandType.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
else if (command.type == CommandType.arrangeBottom) {
|
|
48
|
+
ArrangeHelper.arrangeElements(Orientation.BOTTOM, designerCanvas);
|
|
49
|
+
}
|
|
50
|
+
else if (command.type == CommandType.arrangeCenter) {
|
|
51
|
+
ArrangeHelper.arrangeElements(Orientation.HORIZONTAL_CENTER, designerCanvas);
|
|
52
|
+
}
|
|
53
|
+
else if (command.type == CommandType.arrangeMiddle) {
|
|
54
|
+
ArrangeHelper.arrangeElements(Orientation.VERTICAL_CENTER, designerCanvas);
|
|
51
55
|
}
|
|
52
56
|
else if (command.type == CommandType.unifyHeight) {
|
|
53
57
|
const grp = designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup('unifyHeight');
|
|
@@ -104,10 +104,10 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
|
|
|
104
104
|
}
|
|
105
105
|
setSelection(position) {
|
|
106
106
|
let model = this._monacoEditor.getModel();
|
|
107
|
-
let
|
|
108
|
-
let
|
|
107
|
+
let point1 = model.getPositionAt(position.start);
|
|
108
|
+
let point2 = model.getPositionAt(position.start + position.length);
|
|
109
109
|
this._monacoEditor.setSelection({ startLineNumber: point1.lineNumber, startColumn: point1.column, endLineNumber: point2.lineNumber, endColumn: point2.column });
|
|
110
|
-
this._monacoEditor.
|
|
110
|
+
setTimeout(() => this._monacoEditor.revealLine(point1.lineNumber), 20);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
customElements.define('node-projects-code-view-monaco', CodeViewMonaco);
|
|
@@ -39,5 +39,7 @@ export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
|
|
|
39
39
|
elementFromPoint(x: number, y: number): Element;
|
|
40
40
|
getItemsBelowMouse(event: MouseEvent): Element[];
|
|
41
41
|
zoomTowardsPoint(point: IPoint, scalechange: number): void;
|
|
42
|
+
zoomPoint(canvasPoint: IPoint, newZoom: number): void;
|
|
42
43
|
zoomOntoRectangle(startPoint: IPoint, endPoint: IPoint): void;
|
|
44
|
+
showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): void;
|
|
43
45
|
}
|
|
@@ -31,6 +31,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
31
31
|
private _zoomFactor;
|
|
32
32
|
private _scaleFactor;
|
|
33
33
|
private _canvasOffset;
|
|
34
|
+
private _currentContextMenu;
|
|
34
35
|
private _lastPointerDownHandler;
|
|
35
36
|
get zoomFactor(): number;
|
|
36
37
|
set zoomFactor(value: number);
|
|
@@ -45,7 +46,6 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
45
46
|
private _canvasContainer;
|
|
46
47
|
private _outercanvas2;
|
|
47
48
|
private _lastHoverDesignItem;
|
|
48
|
-
private _onContextMenuBound;
|
|
49
49
|
private _pointerEventHandlerBound;
|
|
50
50
|
private _firstConnect;
|
|
51
51
|
private _onKeyDownBound;
|
|
@@ -81,7 +81,6 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
81
81
|
private _onDragLeave;
|
|
82
82
|
private _onDragOver;
|
|
83
83
|
private _onDrop;
|
|
84
|
-
private _onContextMenu;
|
|
85
84
|
showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
|
|
86
85
|
private _onDblClick;
|
|
87
86
|
private onKeyUp;
|
|
@@ -100,5 +99,6 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
100
99
|
removeOverlay(element: SVGGraphicsElement): void;
|
|
101
100
|
getItemsBelowMouse(event: MouseEvent): Element[];
|
|
102
101
|
zoomOntoRectangle(startPoint: IPoint, endPoint: IPoint): void;
|
|
102
|
+
zoomPoint(canvasPoint: IPoint, newZoom: number): void;
|
|
103
103
|
zoomTowardsPoint(canvasPoint: IPoint, newZoom: number): void;
|
|
104
104
|
}
|
|
@@ -39,6 +39,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
39
39
|
_zoomFactor = 1; //if scale or zoom css property is used this needs to be the value
|
|
40
40
|
_scaleFactor = 1; //if scale css property is used this need to be the scale value
|
|
41
41
|
_canvasOffset = { x: 0, y: 0 };
|
|
42
|
+
_currentContextMenu;
|
|
42
43
|
_lastPointerDownHandler;
|
|
43
44
|
get zoomFactor() {
|
|
44
45
|
return this._zoomFactor;
|
|
@@ -70,7 +71,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
70
71
|
_canvasContainer;
|
|
71
72
|
_outercanvas2;
|
|
72
73
|
_lastHoverDesignItem;
|
|
73
|
-
_onContextMenuBound;
|
|
74
74
|
_pointerEventHandlerBound;
|
|
75
75
|
_firstConnect;
|
|
76
76
|
_onKeyDownBound;
|
|
@@ -166,9 +166,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
166
166
|
this._onKeyDownBound = this.onKeyDown.bind(this);
|
|
167
167
|
this._onKeyUpBound = this.onKeyUp.bind(this);
|
|
168
168
|
this._onDblClickBound = this._onDblClick.bind(this);
|
|
169
|
-
this._onContextMenuBound = this._onContextMenu.bind(this);
|
|
170
169
|
this._pointerEventHandlerBound = this._pointerEventHandler.bind(this);
|
|
171
|
-
this.clickOverlay.oncontextmenu =
|
|
170
|
+
this.clickOverlay.oncontextmenu = (e) => e.preventDefault();
|
|
172
171
|
}
|
|
173
172
|
get designerWidth() {
|
|
174
173
|
return this._canvasContainer.style.width;
|
|
@@ -395,6 +394,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
395
394
|
this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
|
|
396
395
|
this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
|
|
397
396
|
this._updateTransform();
|
|
397
|
+
this._fillCalculationrects();
|
|
398
398
|
this.onZoomFactorChanged.emit(this._zoomFactor);
|
|
399
399
|
}
|
|
400
400
|
_updateTransform() {
|
|
@@ -514,30 +514,16 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
|
-
_onContextMenu(event) {
|
|
518
|
-
event.preventDefault();
|
|
519
|
-
if (!event.shiftKey) {
|
|
520
|
-
let items = this.getItemsBelowMouse(event);
|
|
521
|
-
if (items.indexOf(this.instanceServiceContainer.selectionService.primarySelection.element) >= 0)
|
|
522
|
-
this.showDesignItemContextMenu(this.instanceServiceContainer.selectionService.primarySelection, event);
|
|
523
|
-
else {
|
|
524
|
-
const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
|
|
525
|
-
if (!this.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
526
|
-
this.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
527
|
-
}
|
|
528
|
-
this.showDesignItemContextMenu(designItem, event);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
517
|
showDesignItemContextMenu(designItem, event) {
|
|
518
|
+
this._currentContextMenu?.close();
|
|
533
519
|
const mnuItems = [];
|
|
534
520
|
for (let cme of this.serviceContainer.designerContextMenuExtensions) {
|
|
535
521
|
if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
|
|
536
522
|
mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
|
|
537
523
|
}
|
|
538
524
|
}
|
|
539
|
-
|
|
540
|
-
return
|
|
525
|
+
this._currentContextMenu = ContextMenuHelper.showContextMenu(null, event, null, mnuItems);
|
|
526
|
+
return this._currentContextMenu;
|
|
541
527
|
}
|
|
542
528
|
_onDblClick(event) {
|
|
543
529
|
event.preventDefault();
|
|
@@ -692,8 +678,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
692
678
|
}
|
|
693
679
|
if (event.composedPath().indexOf(this.eatEvents) >= 0)
|
|
694
680
|
return;
|
|
695
|
-
if (event.buttons == 2)
|
|
696
|
-
return;
|
|
697
681
|
let currentElement;
|
|
698
682
|
if (forceElement)
|
|
699
683
|
currentElement = forceElement;
|
|
@@ -808,7 +792,15 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
808
792
|
x: (rect.width / 2) + rect.x,
|
|
809
793
|
y: (rect.height / 2) + rect.y
|
|
810
794
|
};
|
|
811
|
-
this.
|
|
795
|
+
this.zoomPoint(rectCenter, zoomFactor);
|
|
796
|
+
}
|
|
797
|
+
zoomPoint(canvasPoint, newZoom) {
|
|
798
|
+
this.zoomFactor = newZoom;
|
|
799
|
+
const newCanvasOffset = {
|
|
800
|
+
x: -(canvasPoint.x) + this.outerRect.width / this.zoomFactor / 2,
|
|
801
|
+
y: -(canvasPoint.y) + this.outerRect.height / this.zoomFactor / 2
|
|
802
|
+
};
|
|
803
|
+
this.canvasOffset = newCanvasOffset;
|
|
812
804
|
}
|
|
813
805
|
zoomTowardsPoint(canvasPoint, newZoom) {
|
|
814
806
|
const scaleChange = newZoom / this.zoomFactor;
|
package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js
CHANGED
|
@@ -35,13 +35,9 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
35
35
|
this.overlays.push(foreignObject);
|
|
36
36
|
this._drawClickOverlayRects();
|
|
37
37
|
this._rect1.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
38
|
-
this._rect1.addEventListener('pointerup', (e) => this._clickOutside(e));
|
|
39
38
|
this._rect2.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
40
|
-
this._rect2.addEventListener('pointerup', (e) => this._clickOutside(e));
|
|
41
39
|
this._rect3.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
42
|
-
this._rect3.addEventListener('pointerup', (e) => this._clickOutside(e));
|
|
43
40
|
this._rect4.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
44
|
-
this._rect4.addEventListener('pointerup', (e) => this._clickOutside(e));
|
|
45
41
|
requestAnimationFrame(() => {
|
|
46
42
|
const stylo = foreignObject.querySelector('stylo-editor');
|
|
47
43
|
//@ts-ignore
|
|
@@ -16,7 +16,7 @@ export declare class ResizeExtension extends AbstractExtension {
|
|
|
16
16
|
private _circle6;
|
|
17
17
|
private _circle7;
|
|
18
18
|
private _circle8;
|
|
19
|
-
constructor(extensionManager: IExtensionManager,
|
|
19
|
+
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, extendedItem: IDesignItem, resizeAllSelected: boolean);
|
|
20
20
|
extend(): void;
|
|
21
21
|
refresh(): void;
|
|
22
22
|
_drawResizerOverlay(x: number, y: number, cursor: string, oldCircle?: SVGCircleElement): SVGCircleElement;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventNames } from "../../../../enums/EventNames";
|
|
2
|
+
import { convertCoordinates, getDomMatrix } from "../../../helper/TransformHelper.js";
|
|
2
3
|
import { AbstractExtension } from './AbstractExtension';
|
|
3
4
|
export class ResizeExtension extends AbstractExtension {
|
|
4
5
|
resizeAllSelected;
|
|
@@ -14,8 +15,8 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
14
15
|
_circle6;
|
|
15
16
|
_circle7;
|
|
16
17
|
_circle8;
|
|
17
|
-
constructor(extensionManager,
|
|
18
|
-
super(extensionManager,
|
|
18
|
+
constructor(extensionManager, designerCanvas, extendedItem, resizeAllSelected) {
|
|
19
|
+
super(extensionManager, designerCanvas, extendedItem);
|
|
19
20
|
this.resizeAllSelected = resizeAllSelected;
|
|
20
21
|
}
|
|
21
22
|
extend() {
|
|
@@ -88,39 +89,41 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
88
89
|
const diff = containerService.placePoint(event, this.designerCanvas, this.extendedItem.parent, this._initialPoint, { x: 0, y: 0 }, currentPoint, this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
89
90
|
let trackX = diff.x - this._initialPoint.x - this._offsetPoint.x;
|
|
90
91
|
let trackY = diff.y - this._initialPoint.y - this._offsetPoint.y;
|
|
92
|
+
let matrix = getDomMatrix(this.extendedItem.element);
|
|
93
|
+
let transformedTrack = convertCoordinates({ x: trackX, y: trackY }, matrix);
|
|
91
94
|
let i = 0;
|
|
92
95
|
switch (this._actionModeStarted) {
|
|
93
96
|
case 'se-resize':
|
|
94
|
-
this.extendedItem.element.style.width = this._initialSizes[i].width +
|
|
95
|
-
this.extendedItem.element.style.height = this._initialSizes[i].height +
|
|
97
|
+
this.extendedItem.element.style.width = this._initialSizes[i].width + transformedTrack.x + 'px';
|
|
98
|
+
this.extendedItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
|
|
96
99
|
if (this.resizeAllSelected) {
|
|
97
100
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
98
101
|
i++;
|
|
99
102
|
if (designItem !== this.extendedItem) {
|
|
100
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
101
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
103
|
+
designItem.element.style.width = this._initialSizes[i].width + transformedTrack.x + 'px';
|
|
104
|
+
designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
break;
|
|
106
109
|
case 's-resize':
|
|
107
|
-
this.extendedItem.element.style.height = this._initialSizes[i].height +
|
|
110
|
+
this.extendedItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
|
|
108
111
|
if (this.resizeAllSelected) {
|
|
109
112
|
i++;
|
|
110
113
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
111
114
|
if (designItem !== this.extendedItem) {
|
|
112
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
115
|
+
designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
|
|
113
116
|
}
|
|
114
117
|
}
|
|
115
118
|
}
|
|
116
119
|
break;
|
|
117
120
|
case 'e-resize':
|
|
118
|
-
this.extendedItem.element.style.width = this._initialSizes[i].width +
|
|
121
|
+
this.extendedItem.element.style.width = this._initialSizes[i].width + transformedTrack.x + 'px';
|
|
119
122
|
if (this.resizeAllSelected) {
|
|
120
123
|
i++;
|
|
121
124
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
122
125
|
if (designItem !== this.extendedItem) {
|
|
123
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
126
|
+
designItem.element.style.width = this._initialSizes[i].width + transformedTrack.x + 'px';
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
129
|
}
|
package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
|
+
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
|
+
export declare class CopyPasteContextMenu implements IContextMenuExtension {
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
|
+
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
|
+
}
|
package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CommandType } from "../../../../../commandHandling/CommandType";
|
|
2
|
+
export class CopyPasteContextMenu {
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
provideContextMenuItems(event, designerView, designItem) {
|
|
7
|
+
return [
|
|
8
|
+
{ title: 'copy', action: () => { designerView.executeCommand({ type: CommandType.copy }); }, shortCut: 'Ctrl + C' },
|
|
9
|
+
{ title: 'cut', action: () => { designerView.executeCommand({ type: CommandType.cut }); }, shortCut: 'Ctrl + X' },
|
|
10
|
+
{ title: 'paste', action: () => { designerView.executeCommand({ type: CommandType.paste }); }, shortCut: 'Ctrl + V' },
|
|
11
|
+
{ title: 'delete', action: () => { designerView.executeCommand({ type: CommandType.delete }); }, shortCut: 'Del' },
|
|
12
|
+
{ title: '-' }
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -5,11 +5,10 @@ export class CopyPasteContextMenu {
|
|
|
5
5
|
}
|
|
6
6
|
provideContextMenuItems(event, designerView, designItem) {
|
|
7
7
|
return [
|
|
8
|
-
{ title: 'copy', action: () => { designerView.executeCommand({ type: CommandType.copy }); } },
|
|
9
|
-
{ title: 'cut', action: () => { designerView.executeCommand({ type: CommandType.cut }); } },
|
|
10
|
-
{ title: 'paste', action: () => { designerView.executeCommand({ type: CommandType.paste }); } },
|
|
11
|
-
{ title: 'delete', action: () => { designerView.executeCommand({ type: CommandType.delete }); } },
|
|
12
|
-
{ title: '-' }
|
|
8
|
+
{ title: 'copy', action: () => { designerView.executeCommand({ type: CommandType.copy }); }, shortCut: 'Ctrl + C' },
|
|
9
|
+
{ title: 'cut', action: () => { designerView.executeCommand({ type: CommandType.cut }); }, shortCut: 'Ctrl + X' },
|
|
10
|
+
{ title: 'paste', action: () => { designerView.executeCommand({ type: CommandType.paste }); }, shortCut: 'Ctrl + V' },
|
|
11
|
+
{ title: 'delete', action: () => { designerView.executeCommand({ type: CommandType.delete }); }, shortCut: 'Del' },
|
|
13
12
|
];
|
|
14
13
|
}
|
|
15
14
|
}
|
|
@@ -7,7 +7,7 @@ export class ItemsBelowContextMenu {
|
|
|
7
7
|
const lstItems = designerCanvas.getItemsBelowMouse(event);
|
|
8
8
|
if (lstItems.length > 0) {
|
|
9
9
|
//TODO: create a submenu 'select items below...'
|
|
10
|
-
return [
|
|
10
|
+
return [...lstItems.map(x => ({ title: 'select: ' + x.localName + (x.id ? ' (' + x.id + ')' : ''), action: () => this._select(designerCanvas, x) }))];
|
|
11
11
|
}
|
|
12
12
|
return [];
|
|
13
13
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
|
+
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
|
+
export declare class SeperatorContextMenu implements IContextMenuExtension {
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
|
+
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
|
+
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
|
+
export declare class ZMoveContextMenu implements IContextMenuExtension {
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
|
+
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CommandType } from "../../../../../commandHandling/CommandType";
|
|
2
|
+
export class ZMoveContextMenu {
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
provideContextMenuItems(event, designerView, designItem) {
|
|
7
|
+
return [
|
|
8
|
+
{ title: 'to front', action: () => { designerView.executeCommand({ type: CommandType.moveToFront }); } },
|
|
9
|
+
{ title: 'move forward', action: () => { designerView.executeCommand({ type: CommandType.moveForward }); } },
|
|
10
|
+
{ title: 'move backward', action: () => { designerView.executeCommand({ type: CommandType.moveBackward }); } },
|
|
11
|
+
{ title: 'to back', action: () => { designerView.executeCommand({ type: CommandType.moveToBack }); } },
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
}
|
package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
|
+
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
|
+
export declare class ZoomToElementContextMenu implements IContextMenuExtension {
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerCanvas: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
|
+
provideContextMenuItems(event: MouseEvent, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const offset = 10;
|
|
2
|
+
export class ZoomToElementContextMenu {
|
|
3
|
+
shouldProvideContextmenu(event, designerCanvas, designItem, initiator) {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
provideContextMenuItems(event, designerCanvas, designItem) {
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
title: 'zoom to', action: () => {
|
|
10
|
+
const coord = designerCanvas.getNormalizedElementCoordinates(designItem.element);
|
|
11
|
+
const startPoint = { x: coord.x - offset, y: coord.y - offset };
|
|
12
|
+
const endPoint = { x: coord.x + coord.width + offset, y: coord.y + coord.height + offset };
|
|
13
|
+
let rect = {
|
|
14
|
+
x: startPoint.x < endPoint.x ? startPoint.x : endPoint.x,
|
|
15
|
+
y: startPoint.y < endPoint.y ? startPoint.y : endPoint.y,
|
|
16
|
+
width: Math.abs(startPoint.x - endPoint.x),
|
|
17
|
+
height: Math.abs(startPoint.y - endPoint.y),
|
|
18
|
+
};
|
|
19
|
+
let zFactorWidth = designerCanvas.outerRect.width / rect.width;
|
|
20
|
+
let zFactorHeight = designerCanvas.outerRect.height / rect.height;
|
|
21
|
+
let zoomFactor = zFactorWidth >= zFactorHeight ? zFactorHeight : zFactorWidth;
|
|
22
|
+
designerCanvas.zoomPoint({ x: coord.x + coord.width / 2, y: coord.y + coord.height / 2 }, zoomFactor);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -16,6 +16,7 @@ export declare class PointerTool implements ITool {
|
|
|
16
16
|
constructor();
|
|
17
17
|
activated(serviceContainer: ServiceContainer): void;
|
|
18
18
|
dispose(): void;
|
|
19
|
+
private _showContextMenu;
|
|
19
20
|
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
20
21
|
private _pointerActionTypeDrawSelection;
|
|
21
22
|
private _resetPointerEventsForClickThrough;
|
|
@@ -22,7 +22,26 @@ export class PointerTool {
|
|
|
22
22
|
}
|
|
23
23
|
dispose() {
|
|
24
24
|
}
|
|
25
|
+
_showContextMenu(event, designerCanvas) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
if (!event.shiftKey) {
|
|
28
|
+
let items = designerCanvas.getItemsBelowMouse(event);
|
|
29
|
+
if (items.indexOf(designerCanvas.instanceServiceContainer.selectionService.primarySelection?.element) >= 0)
|
|
30
|
+
designerCanvas.showDesignItemContextMenu(designerCanvas.instanceServiceContainer.selectionService.primarySelection, event);
|
|
31
|
+
else {
|
|
32
|
+
const designItem = DesignItem.GetOrCreateDesignItem(event.target, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
33
|
+
if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
34
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
35
|
+
}
|
|
36
|
+
designerCanvas.showDesignItemContextMenu(designItem, event);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
25
40
|
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
41
|
+
if (event.button == 2) {
|
|
42
|
+
this._showContextMenu(event, designerCanvas);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
26
45
|
if (((event.ctrlKey || event.metaKey) && event.shiftKey) || event.buttons == 4) {
|
|
27
46
|
const panTool = designerCanvas.serviceContainer.designerTools.get(NamedTools.Pan);
|
|
28
47
|
if (panTool) {
|
|
@@ -6,7 +6,6 @@ export declare class TextTool implements ITool {
|
|
|
6
6
|
activated(serviceContainer: ServiceContainer): void;
|
|
7
7
|
dispose(): void;
|
|
8
8
|
readonly cursor = "text";
|
|
9
|
-
private _text;
|
|
10
9
|
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
11
10
|
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
12
11
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { EventNames } from '../../../../enums/EventNames.js';
|
|
2
|
+
import { DesignItem } from '../../../item/DesignItem.js';
|
|
3
|
+
import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction.js';
|
|
4
|
+
import { ExtensionType } from '../extensions/ExtensionType.js';
|
|
2
5
|
export class TextTool {
|
|
3
6
|
constructor() {
|
|
4
7
|
}
|
|
@@ -7,26 +10,22 @@ export class TextTool {
|
|
|
7
10
|
dispose() {
|
|
8
11
|
}
|
|
9
12
|
cursor = 'text';
|
|
10
|
-
_text;
|
|
11
13
|
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
12
14
|
const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
13
|
-
//const offset = 50;
|
|
14
|
-
addEventListener("keyup", function (event) {
|
|
15
|
-
if (event.key === 'Enter') {
|
|
16
|
-
console.log("Enter Pressed");
|
|
17
|
-
event.preventDefault();
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
15
|
switch (event.type) {
|
|
21
16
|
case EventNames.PointerDown:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//
|
|
17
|
+
const span = document.createElement('span');
|
|
18
|
+
const di = DesignItem.createDesignItemFromInstance(span, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
19
|
+
di.setStyle('position', 'absolute');
|
|
20
|
+
di.setStyle('left', currentPoint.x + 'px');
|
|
21
|
+
di.setStyle('top', currentPoint.y + 'px');
|
|
22
|
+
designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
|
|
23
|
+
designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
|
|
24
|
+
//TODO - don't apply doubleclick extension (maybe it is not the doubleclick one) - apply edit text extesion directly
|
|
25
|
+
designerCanvas.extensionManager.applyExtension(di, ExtensionType.Doubleclick);
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
span.focus();
|
|
28
|
+
}, 50);
|
|
30
29
|
break;
|
|
31
30
|
}
|
|
32
31
|
}
|
|
@@ -120,8 +120,11 @@ export class PaletteTreeView extends BaseCustomWebComponentConstructorAppend {
|
|
|
120
120
|
catch (err) {
|
|
121
121
|
console.warn('Error loading elements', err);
|
|
122
122
|
}
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
try {
|
|
124
|
+
//@ts-ignore
|
|
125
|
+
newNode.updateCounters();
|
|
126
|
+
}
|
|
127
|
+
catch { }
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
}
|
|
@@ -132,9 +132,7 @@ export class TreeView extends BaseCustomWebComponentLazyAppend {
|
|
|
132
132
|
this.createTree(value.contentService.rootDesignItem);
|
|
133
133
|
}
|
|
134
134
|
selectionChanged(event) {
|
|
135
|
-
|
|
136
|
-
this._selectTreeElements(event.selectedElements.map(x => this._mapElementTreeitem.get(x.element)));
|
|
137
|
-
}
|
|
135
|
+
this._selectTreeElements(event.selectedElements.map(x => this._mapElementTreeitem.get(x.element)));
|
|
138
136
|
}
|
|
139
137
|
_recomputeTree(parent, activeElement) {
|
|
140
138
|
this._mapElementTreeitem = new Map();
|
|
@@ -14,6 +14,7 @@ export declare class TreeViewExtended extends BaseCustomWebComponentConstructorA
|
|
|
14
14
|
static readonly style: CSSStyleSheet;
|
|
15
15
|
static readonly template: HTMLTemplateElement;
|
|
16
16
|
constructor();
|
|
17
|
+
_filterNodes(): void;
|
|
17
18
|
_showHideAtDesignTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
18
19
|
_switchHideAtDesignTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
19
20
|
_showLockAtDesignTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
@@ -98,12 +98,20 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
98
98
|
import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
|
|
99
99
|
this._filter = this._getDomElement('input');
|
|
100
100
|
this._filter.onkeyup = () => {
|
|
101
|
-
|
|
101
|
+
this._filterNodes();
|
|
102
|
+
};
|
|
103
|
+
this._treeDiv = this._getDomElement('treetable');
|
|
104
|
+
}
|
|
105
|
+
_filterNodes() {
|
|
106
|
+
let match = this._filter.value;
|
|
107
|
+
if (match) {
|
|
102
108
|
this._tree.filterNodes((node) => {
|
|
103
109
|
return new RegExp(match, "i").test(node.title);
|
|
104
110
|
});
|
|
105
|
-
}
|
|
106
|
-
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this._tree.clearFilter();
|
|
114
|
+
}
|
|
107
115
|
}
|
|
108
116
|
_showHideAtDesignTimeState(img, designItem) {
|
|
109
117
|
if (designItem.hideAtDesignTime)
|
|
@@ -337,9 +345,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
337
345
|
this.createTree(value.contentService.rootDesignItem);
|
|
338
346
|
}
|
|
339
347
|
selectionChanged(event) {
|
|
340
|
-
|
|
341
|
-
this._highlight(event.selectedElements);
|
|
342
|
-
}
|
|
348
|
+
this._highlight(event.selectedElements);
|
|
343
349
|
}
|
|
344
350
|
_recomputeTree(rootItem) {
|
|
345
351
|
this._tree.getRootNode().removeChildren();
|
|
@@ -347,6 +353,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
347
353
|
this._tree.expandAll();
|
|
348
354
|
//@ts-ignore
|
|
349
355
|
this._tree.getRootNode().updateCounters();
|
|
356
|
+
this._filterNodes();
|
|
350
357
|
}
|
|
351
358
|
_getChildren(item, currentNode) {
|
|
352
359
|
if (currentNode == null) {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var Orientation;
|
|
2
|
+
(function (Orientation) {
|
|
3
|
+
Orientation[Orientation["TOP"] = 0] = "TOP";
|
|
4
|
+
Orientation[Orientation["RIGHT"] = 1] = "RIGHT";
|
|
5
|
+
Orientation[Orientation["BOTTOM"] = 2] = "BOTTOM";
|
|
6
|
+
Orientation[Orientation["LEFT"] = 3] = "LEFT";
|
|
7
|
+
Orientation[Orientation["VERTICAL_CENTER"] = 4] = "VERTICAL_CENTER";
|
|
8
|
+
Orientation[Orientation["HORIZONTAL_CENTER"] = 5] = "HORIZONTAL_CENTER";
|
|
9
|
+
})(Orientation || (Orientation = {}));
|
package/dist/index.d.ts
CHANGED
|
@@ -156,7 +156,11 @@ export type { IContextMenuExtension, ContextmenuInitiator } from "./elements/wid
|
|
|
156
156
|
export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
|
|
157
157
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
|
|
158
158
|
export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
|
|
159
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js";
|
|
160
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js";
|
|
161
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js";
|
|
159
162
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
|
|
163
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js";
|
|
160
164
|
export type { IDesignerPointerExtension } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js";
|
|
161
165
|
export type { IDesignerPointerExtensionProvider } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
|
|
162
166
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
|
package/dist/index.js
CHANGED
|
@@ -116,7 +116,11 @@ export * from "./elements/widgets/designerView/extensions/EditText/EditTextWithS
|
|
|
116
116
|
export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
|
|
117
117
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
|
|
118
118
|
export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
|
|
119
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js";
|
|
120
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js";
|
|
121
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js";
|
|
119
122
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
|
|
123
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js";
|
|
120
124
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
|
|
121
125
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js";
|
|
122
126
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"description": "A UI designer for Polymer apps",
|
|
3
3
|
"name": "@node-projects/web-component-designer",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.92",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"author": "",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"prepublishOnly": "npm run build"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@node-projects/base-custom-webcomponent": "^0.
|
|
16
|
+
"@node-projects/base-custom-webcomponent": "^0.6.0",
|
|
17
17
|
"construct-style-sheets-polyfill": "^3.1.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"@node-projects/node-html-parser-esm": "^2.4.1",
|
|
22
22
|
"@papyrs/stylo": "^0.0.8",
|
|
23
23
|
"@types/codemirror": "^5.60.5",
|
|
24
|
-
"@types/jquery": "^3.5.
|
|
24
|
+
"@types/jquery": "^3.5.14",
|
|
25
25
|
"@types/jquery.fancytree": "0.0.7",
|
|
26
26
|
"ace-builds": "^1.4.14",
|
|
27
|
-
"codemirror": "^5.65.
|
|
27
|
+
"codemirror": "^5.65.2",
|
|
28
28
|
"esprima-next": "^5.8.1",
|
|
29
29
|
"html2canvas": "*",
|
|
30
30
|
"jest": "^27.5.1",
|