@node-projects/web-component-designer 0.0.94 → 0.0.97
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/assets/images/layout/ColorPickerTool.svg +21 -0
- package/assets/images/layout/DrawEllipTool.svg +13 -0
- package/assets/images/layout/DrawLineTool.svg +13 -0
- package/assets/images/layout/DrawPathTool.svg +32 -0
- package/assets/images/layout/DrawRectTool.svg +28 -0
- package/assets/images/layout/MagicWandTool.svg +14 -0
- package/assets/images/layout/PointerTool.svg +10 -0
- package/assets/images/layout/SelectRectTool.svg +9 -0
- package/assets/images/layout/TextBoxTool.svg +8 -0
- package/assets/images/layout/TextTool.svg +7 -0
- package/assets/images/layout/ZoomTool.svg +16 -0
- package/dist/Constants.d.ts +1 -1
- package/dist/Constants.js +3 -1
- package/dist/elements/services/DefaultServiceBootstrap.js +10 -0
- package/dist/elements/services/GlobalContext.d.ts +4 -1
- package/dist/elements/services/GlobalContext.js +8 -3
- package/dist/elements/services/ServiceContainer.d.ts +2 -0
- package/dist/elements/services/ServiceContainer.js +1 -0
- package/dist/elements/widgets/designerView/Snaplines.js +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +3 -1
- package/dist/elements/widgets/designerView/designerView.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerView.js +19 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +12 -0
- package/dist/elements/widgets/designerView/toolBar/DrawElementTool.d.ts +19 -0
- package/dist/elements/widgets/designerView/toolBar/DrawElementTool.js +79 -0
- package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.d.ts +16 -0
- package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.js +94 -0
- package/dist/elements/widgets/designerView/toolBar/DrawLineTool.d.ts +14 -0
- package/dist/elements/widgets/designerView/toolBar/DrawLineTool.js +79 -0
- package/dist/elements/widgets/designerView/toolBar/DrawPathTool.d.ts +20 -0
- package/dist/elements/widgets/designerView/toolBar/DrawPathTool.js +128 -0
- package/dist/elements/widgets/designerView/toolBar/DrawRectTool.d.ts +19 -0
- package/dist/elements/widgets/designerView/toolBar/DrawRectTool.js +109 -0
- package/dist/elements/widgets/designerView/toolBar/ITool.d.ts +9 -0
- package/dist/elements/widgets/designerView/toolBar/ITool.js +1 -0
- package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.d.ts +12 -0
- package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.js +64 -0
- package/dist/elements/widgets/designerView/toolBar/NamedTools.d.ts +15 -0
- package/dist/elements/widgets/designerView/toolBar/NamedTools.js +16 -0
- package/dist/elements/widgets/designerView/toolBar/PanTool.d.ts +10 -0
- package/dist/elements/widgets/designerView/toolBar/PanTool.js +26 -0
- package/dist/elements/widgets/designerView/toolBar/PickColorTool.d.ts +10 -0
- package/dist/elements/widgets/designerView/toolBar/PickColorTool.js +20 -0
- package/dist/elements/widgets/designerView/toolBar/PointerTool.d.ts +24 -0
- package/dist/elements/widgets/designerView/toolBar/PointerTool.js +283 -0
- package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.d.ts +12 -0
- package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.js +84 -0
- package/dist/elements/widgets/designerView/toolBar/TextTool.d.ts +11 -0
- package/dist/elements/widgets/designerView/toolBar/TextTool.js +33 -0
- package/dist/elements/widgets/designerView/toolBar/ZoomTool.d.ts +17 -0
- package/dist/elements/widgets/designerView/toolBar/ZoomTool.js +79 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js +19 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js +41 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.js +96 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.js +21 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.js +23 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolsDock.d.ts +24 -0
- package/dist/elements/widgets/designerView/toolBar/designerToolsDock.js +115 -0
- package/dist/elements/widgets/designerView/tools/NamedTools.d.ts +2 -1
- package/dist/elements/widgets/designerView/tools/NamedTools.js +1 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.js +19 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.js +41 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.js +87 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.d.ts +8 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.js +25 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.js +21 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
- package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.js +23 -0
- package/dist/elements/widgets/designerView/tools/designerToolsDock.d.ts +24 -0
- package/dist/elements/widgets/designerView/tools/designerToolsDock.js +115 -0
- package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.js +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +16 -0
- package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +68 -0
- package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -0
- package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +62 -0
- package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.js +1 -0
- package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -0
- package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.js +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.js +10 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.d.ts +24 -0
- package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.js +115 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +50 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.d.ts +7 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.js +23 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.d.ts +8 -0
- package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.js +41 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +6 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +42 -42
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class PickColorTool {
|
|
2
|
+
cursor = 'crosshair';
|
|
3
|
+
async activated(serviceContainer) {
|
|
4
|
+
try {
|
|
5
|
+
//@ts-ignore
|
|
6
|
+
const eyeDropper = new EyeDropper();
|
|
7
|
+
const colorSelectionResult = await eyeDropper.open();
|
|
8
|
+
const color = colorSelectionResult.sRGBHex;
|
|
9
|
+
serviceContainer.globalContext.strokeColor = color;
|
|
10
|
+
}
|
|
11
|
+
finally {
|
|
12
|
+
serviceContainer.globalContext.finishedWithTool(this);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async pointerEventHandler(designerCanvas, event, currentElement) {
|
|
16
|
+
}
|
|
17
|
+
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
18
|
+
dispose() {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
2
|
+
import { ITool } from "./ITool";
|
|
3
|
+
import { ServiceContainer } from "../../../services/ServiceContainer.js";
|
|
4
|
+
export declare class PointerTool implements ITool {
|
|
5
|
+
readonly cursor: string;
|
|
6
|
+
private _movedSinceStartedAction;
|
|
7
|
+
private _initialPoint;
|
|
8
|
+
private _actionType?;
|
|
9
|
+
private _actionStartedDesignItem?;
|
|
10
|
+
private _previousEventName;
|
|
11
|
+
private _dragOverExtensionItem;
|
|
12
|
+
private _dragExtensionItem;
|
|
13
|
+
private _moveItemsOffset;
|
|
14
|
+
private _initialOffset;
|
|
15
|
+
constructor();
|
|
16
|
+
activated(serviceContainer: ServiceContainer): void;
|
|
17
|
+
dispose(): void;
|
|
18
|
+
private _showContextMenu;
|
|
19
|
+
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
20
|
+
private _resetTool;
|
|
21
|
+
private _pointerActionTypeDrawSelection;
|
|
22
|
+
private _pointerActionTypeDragOrSelect;
|
|
23
|
+
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { EventNames } from "../../../../enums/EventNames";
|
|
2
|
+
import { PointerActionType } from "../../../../enums/PointerActionType";
|
|
3
|
+
import { DesignItem } from "../../../item/DesignItem";
|
|
4
|
+
import { ExtensionType } from "../extensions/ExtensionType";
|
|
5
|
+
import { NamedTools } from './NamedTools';
|
|
6
|
+
export class PointerTool {
|
|
7
|
+
cursor = 'default';
|
|
8
|
+
_movedSinceStartedAction = false;
|
|
9
|
+
_initialPoint;
|
|
10
|
+
_actionType;
|
|
11
|
+
_actionStartedDesignItem;
|
|
12
|
+
_previousEventName;
|
|
13
|
+
_dragOverExtensionItem;
|
|
14
|
+
_dragExtensionItem;
|
|
15
|
+
_moveItemsOffset = { x: 0, y: 0 };
|
|
16
|
+
_initialOffset;
|
|
17
|
+
constructor() {
|
|
18
|
+
}
|
|
19
|
+
activated(serviceContainer) {
|
|
20
|
+
}
|
|
21
|
+
dispose() {
|
|
22
|
+
}
|
|
23
|
+
_showContextMenu(event, designerCanvas) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
if (!event.shiftKey) {
|
|
26
|
+
let items = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
27
|
+
for (let e of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
28
|
+
if (items.indexOf(e.element) >= 0) {
|
|
29
|
+
designerCanvas.showDesignItemContextMenu(designerCanvas.instanceServiceContainer.selectionService.primarySelection, event);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const designItem = DesignItem.GetOrCreateDesignItem(event.target, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
34
|
+
if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
35
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
36
|
+
}
|
|
37
|
+
designerCanvas.showDesignItemContextMenu(designItem, event);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
41
|
+
if (event.button == 2) {
|
|
42
|
+
this._showContextMenu(event, designerCanvas);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (((event.ctrlKey || event.metaKey) && event.shiftKey) || event.buttons == 4) {
|
|
46
|
+
const panTool = designerCanvas.serviceContainer.designerTools.get(NamedTools.Pan);
|
|
47
|
+
if (panTool) {
|
|
48
|
+
panTool.pointerEventHandler(designerCanvas, event, currentElement);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
switch (event.type) {
|
|
53
|
+
case EventNames.PointerDown:
|
|
54
|
+
event.target.setPointerCapture(event.pointerId);
|
|
55
|
+
designerCanvas.captureActiveTool(this);
|
|
56
|
+
this._movedSinceStartedAction = false;
|
|
57
|
+
break;
|
|
58
|
+
case EventNames.PointerUp:
|
|
59
|
+
event.target.releasePointerCapture(event.pointerId);
|
|
60
|
+
designerCanvas.releaseActiveTool();
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
if (!currentElement)
|
|
64
|
+
return;
|
|
65
|
+
const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
66
|
+
const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
67
|
+
if (this._actionType == null) {
|
|
68
|
+
this._initialPoint = currentPoint;
|
|
69
|
+
this._initialOffset = designerCanvas.getNormalizedOffsetInElement(event, currentElement);
|
|
70
|
+
if (event.type == EventNames.PointerDown) {
|
|
71
|
+
this._actionStartedDesignItem = currentDesignItem;
|
|
72
|
+
designerCanvas.snapLines.clearSnaplines();
|
|
73
|
+
if (currentDesignItem !== designerCanvas.rootDesignItem) {
|
|
74
|
+
this._actionType = PointerActionType.Drag;
|
|
75
|
+
}
|
|
76
|
+
else if (currentElement === designerCanvas || currentElement === designerCanvas.rootDesignItem.element || currentElement == null) {
|
|
77
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(null);
|
|
78
|
+
this._actionType = PointerActionType.DrawSelection;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this._actionType = PointerActionType.DragOrSelect;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (event.type === EventNames.PointerMove) {
|
|
86
|
+
this._movedSinceStartedAction = this._movedSinceStartedAction || currentPoint.x != this._initialPoint.x || currentPoint.y != this._initialPoint.y;
|
|
87
|
+
if (this._actionType == PointerActionType.DrawSelection)
|
|
88
|
+
this._actionType = PointerActionType.DrawingSelection;
|
|
89
|
+
}
|
|
90
|
+
if (this._actionType == PointerActionType.DrawSelection || this._actionType == PointerActionType.DrawingSelection) {
|
|
91
|
+
this._pointerActionTypeDrawSelection(designerCanvas, event, currentElement);
|
|
92
|
+
}
|
|
93
|
+
else if (this._actionType == PointerActionType.DragOrSelect || this._actionType == PointerActionType.Drag) {
|
|
94
|
+
this._pointerActionTypeDragOrSelect(designerCanvas, event, currentDesignItem, currentPoint);
|
|
95
|
+
}
|
|
96
|
+
if (event.type == EventNames.PointerUp) {
|
|
97
|
+
designerCanvas.snapLines.clearSnaplines();
|
|
98
|
+
if (this._actionType == PointerActionType.DrawSelection) {
|
|
99
|
+
if (currentDesignItem !== designerCanvas.rootDesignItem)
|
|
100
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
|
|
101
|
+
}
|
|
102
|
+
this._resetTool();
|
|
103
|
+
}
|
|
104
|
+
this._previousEventName = event.type;
|
|
105
|
+
}
|
|
106
|
+
_resetTool() {
|
|
107
|
+
this._actionType = null;
|
|
108
|
+
this._actionStartedDesignItem = null;
|
|
109
|
+
this._movedSinceStartedAction = false;
|
|
110
|
+
this._initialPoint = null;
|
|
111
|
+
}
|
|
112
|
+
_pointerActionTypeDrawSelection(designerView, event, currentElement) {
|
|
113
|
+
const drawSelectionTool = designerView.serviceContainer.designerTools.get(NamedTools.DrawSelection);
|
|
114
|
+
if (drawSelectionTool) {
|
|
115
|
+
this._resetTool();
|
|
116
|
+
drawSelectionTool.pointerEventHandler(designerView, event, currentElement);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
_pointerActionTypeDragOrSelect(designerCanvas, event, currentDesignItem, currentPoint) {
|
|
120
|
+
if (event.altKey) {
|
|
121
|
+
if (event.type == EventNames.PointerDown) {
|
|
122
|
+
const currentSelection = designerCanvas.instanceServiceContainer.selectionService.primarySelection;
|
|
123
|
+
if (currentSelection) {
|
|
124
|
+
const elements = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
125
|
+
let idx = elements.indexOf(currentSelection.element);
|
|
126
|
+
if (idx >= 0) {
|
|
127
|
+
idx++;
|
|
128
|
+
}
|
|
129
|
+
let currentElement = elements[idx];
|
|
130
|
+
if (currentElement)
|
|
131
|
+
currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
switch (event.type) {
|
|
136
|
+
case EventNames.PointerDown:
|
|
137
|
+
{
|
|
138
|
+
this._actionStartedDesignItem = currentDesignItem;
|
|
139
|
+
this._moveItemsOffset = { x: 0, y: 0 };
|
|
140
|
+
if (event.shiftKey || event.ctrlKey) {
|
|
141
|
+
const index = designerCanvas.instanceServiceContainer.selectionService.selectedElements.indexOf(currentDesignItem);
|
|
142
|
+
if (index >= 0) {
|
|
143
|
+
let newSelectedList = designerCanvas.instanceServiceContainer.selectionService.selectedElements.slice(0);
|
|
144
|
+
newSelectedList.splice(index, 1);
|
|
145
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
let newSelectedList = designerCanvas.instanceServiceContainer.selectionService.selectedElements.slice(0);
|
|
149
|
+
newSelectedList.push(currentDesignItem);
|
|
150
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
if (designerCanvas.instanceServiceContainer.selectionService.selectedElements.indexOf(currentDesignItem) < 0)
|
|
155
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
|
|
156
|
+
}
|
|
157
|
+
if (designerCanvas.alignOnSnap)
|
|
158
|
+
designerCanvas.snapLines.calculateSnaplines(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case EventNames.PointerMove:
|
|
162
|
+
{
|
|
163
|
+
const elementMoved = currentPoint.x != this._initialPoint.x || currentPoint.y != this._initialPoint.y;
|
|
164
|
+
if (this._actionType != PointerActionType.Drag && elementMoved) {
|
|
165
|
+
this._actionType = PointerActionType.Drag;
|
|
166
|
+
}
|
|
167
|
+
if (this._movedSinceStartedAction) {
|
|
168
|
+
const containerStyle = getComputedStyle(this._actionStartedDesignItem.parent.element);
|
|
169
|
+
const currentContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle));
|
|
170
|
+
if (currentContainerService) {
|
|
171
|
+
const dragItem = this._actionStartedDesignItem.parent;
|
|
172
|
+
if (this._dragExtensionItem != dragItem) {
|
|
173
|
+
designerCanvas.extensionManager.removeExtension(this._dragExtensionItem, ExtensionType.ContainerDrag);
|
|
174
|
+
designerCanvas.extensionManager.applyExtension(dragItem, ExtensionType.ContainerDrag);
|
|
175
|
+
this._dragExtensionItem = dragItem;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
designerCanvas.extensionManager.refreshExtension(dragItem, ExtensionType.ContainerDrag);
|
|
179
|
+
}
|
|
180
|
+
const canLeave = currentContainerService.canLeave(this._actionStartedDesignItem.parent, [this._actionStartedDesignItem]);
|
|
181
|
+
let newContainerElementDesignItem = null;
|
|
182
|
+
let newContainerService = null;
|
|
183
|
+
if (canLeave) {
|
|
184
|
+
const elementsFromPoint = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
185
|
+
for (let e of elementsFromPoint) {
|
|
186
|
+
if (e == this._actionStartedDesignItem.element) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
else if (e == this._actionStartedDesignItem.parent.element) {
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
else if (e == designerCanvas.rootDesignItem.element) {
|
|
193
|
+
newContainerElementDesignItem = designerCanvas.rootDesignItem;
|
|
194
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
195
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
else if (false) {
|
|
199
|
+
//check we don't try to move a item over one of its children..
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
203
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
204
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
205
|
+
if (newContainerService) {
|
|
206
|
+
if (newContainerService.canEnter(newContainerElementDesignItem, [this._actionStartedDesignItem])) {
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
newContainerElementDesignItem = null;
|
|
211
|
+
newContainerService = null;
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//if we found a new enterable container create extensions
|
|
218
|
+
if (newContainerElementDesignItem != null) {
|
|
219
|
+
if (this._dragOverExtensionItem != newContainerElementDesignItem) {
|
|
220
|
+
designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
|
|
221
|
+
designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver);
|
|
222
|
+
this._dragOverExtensionItem = newContainerElementDesignItem;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
designerCanvas.extensionManager.refreshExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
if (this._dragOverExtensionItem) {
|
|
230
|
+
designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
|
|
231
|
+
this._dragOverExtensionItem = null;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (newContainerService && event.altKey) {
|
|
236
|
+
//TODO: all items, fix position
|
|
237
|
+
const oldOffset = currentContainerService.getElementOffset(this._actionStartedDesignItem.parent, this._actionStartedDesignItem);
|
|
238
|
+
const newOffset = newContainerService.getElementOffset(newContainerElementDesignItem, this._actionStartedDesignItem);
|
|
239
|
+
this._moveItemsOffset = { x: newOffset.x - oldOffset.x + this._moveItemsOffset.x, y: newOffset.y - oldOffset.y + this._moveItemsOffset.y };
|
|
240
|
+
currentContainerService.leaveContainer(this._actionStartedDesignItem.parent, [this._actionStartedDesignItem]);
|
|
241
|
+
newContainerElementDesignItem._insertChildInternal(this._actionStartedDesignItem);
|
|
242
|
+
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
243
|
+
newContainerService.enterContainer(newContainerElementDesignItem, [this._actionStartedDesignItem]);
|
|
244
|
+
newContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
248
|
+
currentContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
249
|
+
}
|
|
250
|
+
designerCanvas.extensionManager.refreshExtensions(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case EventNames.PointerUp:
|
|
256
|
+
{
|
|
257
|
+
if (!this._movedSinceStartedAction || this._actionType == PointerActionType.DragOrSelect) {
|
|
258
|
+
if (this._previousEventName == EventNames.PointerDown && !event.shiftKey && !event.ctrlKey)
|
|
259
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedDesignItem]);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
if (this._movedSinceStartedAction) {
|
|
263
|
+
const containerStyle = getComputedStyle(this._actionStartedDesignItem.parent.element);
|
|
264
|
+
let containerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle));
|
|
265
|
+
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
266
|
+
if (containerService) {
|
|
267
|
+
let cg = designerCanvas.rootDesignItem.openGroup("Move Elements", designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
268
|
+
containerService.finishPlace(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
269
|
+
cg.commit();
|
|
270
|
+
}
|
|
271
|
+
designerCanvas.extensionManager.removeExtension(this._dragExtensionItem, ExtensionType.ContainerDrag);
|
|
272
|
+
this._dragExtensionItem = null;
|
|
273
|
+
designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
|
|
274
|
+
this._dragOverExtensionItem = null;
|
|
275
|
+
this._moveItemsOffset = { x: 0, y: 0 };
|
|
276
|
+
}
|
|
277
|
+
designerCanvas.extensionManager.refreshExtensions(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
283
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ServiceContainer } from '../../../services/ServiceContainer.js';
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas';
|
|
3
|
+
import { ITool } from './ITool';
|
|
4
|
+
export declare class RectangleSelectorTool implements ITool {
|
|
5
|
+
cursor: string;
|
|
6
|
+
private _rect;
|
|
7
|
+
private _initialPoint;
|
|
8
|
+
activated(serviceContainer: ServiceContainer): void;
|
|
9
|
+
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
10
|
+
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { EventNames } from '../../../../enums/EventNames';
|
|
2
|
+
import { DesignItem } from '../../../item/DesignItem';
|
|
3
|
+
import { OverlayLayer } from '../extensions/OverlayLayer.js';
|
|
4
|
+
export class RectangleSelectorTool {
|
|
5
|
+
cursor = 'progress';
|
|
6
|
+
_rect;
|
|
7
|
+
_initialPoint;
|
|
8
|
+
activated(serviceContainer) {
|
|
9
|
+
}
|
|
10
|
+
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
11
|
+
const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
12
|
+
switch (event.type) {
|
|
13
|
+
case EventNames.PointerDown:
|
|
14
|
+
event.target.setPointerCapture(event.pointerId);
|
|
15
|
+
designerCanvas.captureActiveTool(this);
|
|
16
|
+
this._initialPoint = currentPoint;
|
|
17
|
+
if (!this._rect)
|
|
18
|
+
this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
19
|
+
this._rect.setAttribute('class', 'svg-selector');
|
|
20
|
+
this._rect.setAttribute('x', (this._initialPoint.x * designerCanvas.scaleFactor));
|
|
21
|
+
this._rect.setAttribute('y', (this._initialPoint.y * designerCanvas.scaleFactor));
|
|
22
|
+
this._rect.setAttribute('width', 0);
|
|
23
|
+
this._rect.setAttribute('height', 0);
|
|
24
|
+
designerCanvas.overlayLayer.addOverlay(this._rect, OverlayLayer.Foregorund);
|
|
25
|
+
break;
|
|
26
|
+
case EventNames.PointerMove:
|
|
27
|
+
if (this._initialPoint) {
|
|
28
|
+
let w = currentPoint.x - this._initialPoint.x;
|
|
29
|
+
let h = currentPoint.y - this._initialPoint.y;
|
|
30
|
+
if (w >= 0) {
|
|
31
|
+
this._rect.setAttribute('x', this._initialPoint.x);
|
|
32
|
+
this._rect.setAttribute('width', w);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this._rect.setAttribute('x', currentPoint.x);
|
|
36
|
+
this._rect.setAttribute('width', (-1 * w));
|
|
37
|
+
}
|
|
38
|
+
if (h >= 0) {
|
|
39
|
+
this._rect.setAttribute('y', this._initialPoint.y);
|
|
40
|
+
this._rect.setAttribute('height', h);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this._rect.setAttribute('y', currentPoint.y);
|
|
44
|
+
this._rect.setAttribute('height', (-1 * h));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
case EventNames.PointerUp:
|
|
49
|
+
event.target.releasePointerCapture(event.pointerId);
|
|
50
|
+
designerCanvas.releaseActiveTool();
|
|
51
|
+
const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
|
|
52
|
+
const inSelectionElements = [];
|
|
53
|
+
let point = designerCanvas.overlayLayer.createPoint();
|
|
54
|
+
for (let e of elements) {
|
|
55
|
+
let elementRect = designerCanvas.getNormalizedElementCoordinates(e);
|
|
56
|
+
point.x = elementRect.x;
|
|
57
|
+
point.y = elementRect.y;
|
|
58
|
+
const p1 = this._rect.isPointInFill(point);
|
|
59
|
+
point.x = elementRect.x + elementRect.width;
|
|
60
|
+
point.y = elementRect.y;
|
|
61
|
+
const p2 = p1 && this._rect.isPointInFill(point);
|
|
62
|
+
point.x = elementRect.x;
|
|
63
|
+
point.y = elementRect.y + elementRect.height;
|
|
64
|
+
const p3 = p2 && this._rect.isPointInFill(point);
|
|
65
|
+
point.x = elementRect.x + elementRect.width;
|
|
66
|
+
point.y = elementRect.y + elementRect.height;
|
|
67
|
+
const p4 = p3 && this._rect.isPointInFill(point);
|
|
68
|
+
if (p4) {
|
|
69
|
+
const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
70
|
+
inSelectionElements.push(desItem);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
designerCanvas.overlayLayer.removeOverlay(this._rect);
|
|
74
|
+
this._rect = null;
|
|
75
|
+
this._initialPoint = null;
|
|
76
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(inSelectionElements);
|
|
77
|
+
designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
82
|
+
dispose() {
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ServiceContainer } from '../../../services/ServiceContainer.js';
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas';
|
|
3
|
+
import { ITool } from './ITool';
|
|
4
|
+
export declare class TextTool implements ITool {
|
|
5
|
+
constructor();
|
|
6
|
+
activated(serviceContainer: ServiceContainer): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
readonly cursor = "text";
|
|
9
|
+
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
10
|
+
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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';
|
|
5
|
+
export class TextTool {
|
|
6
|
+
constructor() {
|
|
7
|
+
}
|
|
8
|
+
activated(serviceContainer) {
|
|
9
|
+
}
|
|
10
|
+
dispose() {
|
|
11
|
+
}
|
|
12
|
+
cursor = 'text';
|
|
13
|
+
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
14
|
+
const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
15
|
+
switch (event.type) {
|
|
16
|
+
case EventNames.PointerDown:
|
|
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);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
33
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ServiceContainer } from '../../../services/ServiceContainer.js';
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas';
|
|
3
|
+
import { ITool } from './ITool';
|
|
4
|
+
export declare class ZoomTool implements ITool {
|
|
5
|
+
cursor: string;
|
|
6
|
+
private _rect;
|
|
7
|
+
private _startPoint;
|
|
8
|
+
private _endPoint;
|
|
9
|
+
private _pointerMovementTolerance;
|
|
10
|
+
private _zoomStepSize;
|
|
11
|
+
activated(serviceContainer: ServiceContainer): void;
|
|
12
|
+
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
13
|
+
private _zoomOnto;
|
|
14
|
+
private _isPositionEqual;
|
|
15
|
+
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EventNames, OverlayLayer } from '../../../../index.js';
|
|
2
|
+
export class ZoomTool {
|
|
3
|
+
cursor = 'zoom-in';
|
|
4
|
+
_rect;
|
|
5
|
+
_startPoint;
|
|
6
|
+
_endPoint;
|
|
7
|
+
_pointerMovementTolerance = 5;
|
|
8
|
+
_zoomStepSize = 0.2; //number x 100 = Scale in percent
|
|
9
|
+
activated(serviceContainer) {
|
|
10
|
+
}
|
|
11
|
+
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
12
|
+
const eventPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
13
|
+
switch (event.type) {
|
|
14
|
+
case EventNames.PointerDown:
|
|
15
|
+
this._startPoint = eventPoint;
|
|
16
|
+
if (!this._rect)
|
|
17
|
+
this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
18
|
+
this._rect.setAttribute('class', 'svg-selector');
|
|
19
|
+
this._rect.setAttribute('x', (this._startPoint.x * designerCanvas.zoomFactor));
|
|
20
|
+
this._rect.setAttribute('y', (this._startPoint.y * designerCanvas.zoomFactor));
|
|
21
|
+
this._rect.setAttribute('width', 0);
|
|
22
|
+
this._rect.setAttribute('height', 0);
|
|
23
|
+
designerCanvas.overlayLayer.addOverlay(this._rect, OverlayLayer.Foregorund);
|
|
24
|
+
break;
|
|
25
|
+
case EventNames.PointerMove:
|
|
26
|
+
if (this._startPoint) {
|
|
27
|
+
let width = eventPoint.x - this._startPoint.x;
|
|
28
|
+
let height = eventPoint.y - this._startPoint.y;
|
|
29
|
+
if (width >= 0) {
|
|
30
|
+
this._rect.setAttribute('x', this._startPoint.x);
|
|
31
|
+
this._rect.setAttribute('width', width);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this._rect.setAttribute('x', eventPoint.x);
|
|
35
|
+
this._rect.setAttribute('width', (-1 * width));
|
|
36
|
+
}
|
|
37
|
+
if (height >= 0) {
|
|
38
|
+
this._rect.setAttribute('y', this._startPoint.y);
|
|
39
|
+
this._rect.setAttribute('height', height);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this._rect.setAttribute('y', eventPoint.y);
|
|
43
|
+
this._rect.setAttribute('height', (-1 * height));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
case EventNames.PointerUp:
|
|
48
|
+
this._endPoint = eventPoint;
|
|
49
|
+
let isLeftClick = event.button == 0;
|
|
50
|
+
switch (event.button) {
|
|
51
|
+
case 0: //Left-Click
|
|
52
|
+
case 2: //Right-Click
|
|
53
|
+
this._zoomOnto(isLeftClick, this._startPoint, this._endPoint, designerCanvas);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
designerCanvas.overlayLayer.removeOverlay(this._rect);
|
|
57
|
+
this._rect = null;
|
|
58
|
+
this._startPoint = null;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_zoomOnto(isZoomInto, startPoint, endPoint, designerCanvas) {
|
|
63
|
+
if (this._isPositionEqual(startPoint, endPoint)) {
|
|
64
|
+
const oldZoom = designerCanvas.zoomFactor;
|
|
65
|
+
const newZoom = isZoomInto ? oldZoom + this._zoomStepSize : oldZoom - this._zoomStepSize;
|
|
66
|
+
designerCanvas.zoomTowardsPoint(endPoint, newZoom);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
designerCanvas.zoomOntoRectangle(startPoint, endPoint);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_isPositionEqual(startPoint, endPoint) {
|
|
73
|
+
let tolerance = this._pointerMovementTolerance;
|
|
74
|
+
return Math.abs(startPoint.x - endPoint.x) <= tolerance && Math.abs(startPoint.y - endPoint.y) <= tolerance;
|
|
75
|
+
}
|
|
76
|
+
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
77
|
+
dispose() {
|
|
78
|
+
}
|
|
79
|
+
}
|
package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ToolPopupCategoryCollection } from "./designerToolsButtons";
|
|
2
|
+
export declare abstract class DesignerToolRenderer {
|
|
3
|
+
static createToolFromObject(tool: ToolPopupCategoryCollection): ChildNode;
|
|
4
|
+
static createObjectFromTool(tool: HTMLDivElement): ToolPopupCategoryCollection;
|
|
5
|
+
}
|
package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//TODO: rename, this is no renderer, it's a static class so more a helper
|
|
2
|
+
export class DesignerToolRenderer {
|
|
3
|
+
static createToolFromObject(tool) {
|
|
4
|
+
let template = document.createElement('template');
|
|
5
|
+
template.innerHTML = "<div class='tool' data-command='setTool' data-command-parameter=" + tool.command_parameter + " popup=" + tool.category + " title=" + tool.title + " style='background-image:" + tool.background_url + ";" + (tool.margin ? "margin: " + tool.margin + ";" : "") + "'></div>";
|
|
6
|
+
return template.content.childNodes[0];
|
|
7
|
+
}
|
|
8
|
+
static createObjectFromTool(tool) {
|
|
9
|
+
let collector = {
|
|
10
|
+
category: tool.getAttribute("popup"),
|
|
11
|
+
command: tool.getAttribute("data-command"),
|
|
12
|
+
command_parameter: tool.getAttribute("data-command-parameter"),
|
|
13
|
+
title: tool.getAttribute("title"),
|
|
14
|
+
tool: tool.getAttribute("data-command-parameter"),
|
|
15
|
+
background_url: tool.style.backgroundImage,
|
|
16
|
+
};
|
|
17
|
+
return collector;
|
|
18
|
+
}
|
|
19
|
+
}
|
package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseCustomWebComponentConstructorAppend } from "@node-projects/base-custom-webcomponent";
|
|
2
|
+
export declare abstract class DesignerToolbarPopup extends BaseCustomWebComponentConstructorAppend {
|
|
3
|
+
static readonly style: CSSStyleSheet;
|
|
4
|
+
static readonly template: HTMLTemplateElement;
|
|
5
|
+
ready(): void;
|
|
6
|
+
protected _setTitle(title: string): void;
|
|
7
|
+
protected _setContent(elements: HTMLElement[]): void;
|
|
8
|
+
}
|
package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BaseCustomWebComponentConstructorAppend, css, html } from "@node-projects/base-custom-webcomponent";
|
|
2
|
+
export class DesignerToolbarPopup extends BaseCustomWebComponentConstructorAppend {
|
|
3
|
+
static style = css `
|
|
4
|
+
.container {
|
|
5
|
+
width: 150px;
|
|
6
|
+
min-height: 200px;
|
|
7
|
+
color: white;
|
|
8
|
+
background-color: rgb(64, 64, 64);
|
|
9
|
+
border: 1px solid black;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
header {
|
|
13
|
+
text-align: center;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
* {
|
|
17
|
+
pointer-events: auto;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
static template = html `
|
|
21
|
+
<div class="container">
|
|
22
|
+
<header><h2 id="title" style="margin: 0;"></h2></header>
|
|
23
|
+
<main id="content-area"></main>
|
|
24
|
+
</div>
|
|
25
|
+
`;
|
|
26
|
+
//TODO: remove this class,
|
|
27
|
+
// i think the popups need no base, okay if they need one the should at least be normal elmeents
|
|
28
|
+
// and also the expicit popup should set the size, not the base class. maybe one needs to be bigger, one smaller...
|
|
29
|
+
ready() {
|
|
30
|
+
this._setTitle(this.getAttribute("title"));
|
|
31
|
+
}
|
|
32
|
+
_setTitle(title) {
|
|
33
|
+
this._getDomElement("title").innerHTML = title;
|
|
34
|
+
}
|
|
35
|
+
_setContent(elements) {
|
|
36
|
+
let contentArea = this._getDomElement("content-area");
|
|
37
|
+
for (let elem of elements) {
|
|
38
|
+
contentArea.appendChild(elem);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|