@node-projects/web-component-designer 0.0.95 → 0.0.98

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.
Files changed (105) hide show
  1. package/dist/Constants.js +0 -1
  2. package/dist/elements/services/DefaultServiceBootstrap.js +10 -0
  3. package/dist/elements/services/GlobalContext.d.ts +4 -1
  4. package/dist/elements/services/GlobalContext.js +8 -3
  5. package/dist/elements/services/ServiceContainer.d.ts +2 -0
  6. package/dist/elements/services/ServiceContainer.js +1 -0
  7. package/dist/elements/widgets/designerView/Snaplines.js +1 -1
  8. package/dist/elements/widgets/designerView/designerView.d.ts +1 -2
  9. package/dist/elements/widgets/designerView/designerView.js +15 -12
  10. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -0
  11. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +12 -0
  12. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.d.ts +19 -0
  13. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.js +79 -0
  14. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.d.ts +16 -0
  15. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.js +94 -0
  16. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.d.ts +14 -0
  17. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.js +79 -0
  18. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.d.ts +20 -0
  19. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.js +128 -0
  20. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.d.ts +19 -0
  21. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.js +109 -0
  22. package/dist/elements/widgets/designerView/toolBar/ITool.d.ts +9 -0
  23. package/dist/elements/widgets/designerView/toolBar/ITool.js +1 -0
  24. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.d.ts +12 -0
  25. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.js +64 -0
  26. package/dist/elements/widgets/designerView/toolBar/NamedTools.d.ts +15 -0
  27. package/dist/elements/widgets/designerView/toolBar/NamedTools.js +16 -0
  28. package/dist/elements/widgets/designerView/toolBar/PanTool.d.ts +10 -0
  29. package/dist/elements/widgets/designerView/toolBar/PanTool.js +26 -0
  30. package/dist/elements/widgets/designerView/toolBar/PickColorTool.d.ts +10 -0
  31. package/dist/elements/widgets/designerView/toolBar/PickColorTool.js +20 -0
  32. package/dist/elements/widgets/designerView/toolBar/PointerTool.d.ts +24 -0
  33. package/dist/elements/widgets/designerView/toolBar/PointerTool.js +283 -0
  34. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.d.ts +12 -0
  35. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.js +84 -0
  36. package/dist/elements/widgets/designerView/toolBar/TextTool.d.ts +11 -0
  37. package/dist/elements/widgets/designerView/toolBar/TextTool.js +33 -0
  38. package/dist/elements/widgets/designerView/toolBar/ZoomTool.d.ts +17 -0
  39. package/dist/elements/widgets/designerView/toolBar/ZoomTool.js +79 -0
  40. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
  41. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js +19 -0
  42. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
  43. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js +41 -0
  44. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
  45. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
  46. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
  47. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.js +96 -0
  48. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
  49. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.js +21 -0
  50. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  51. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  52. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.d.ts +24 -0
  53. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.js +115 -0
  54. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.js +1 -1
  55. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.js +4 -0
  56. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +1 -4
  57. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.js +4 -6
  58. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.d.ts +4 -0
  59. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.js +31 -40
  60. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.d.ts +8 -0
  61. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.js +25 -0
  62. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.d.ts +0 -3
  63. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.js +6 -10
  64. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  65. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  66. package/dist/elements/widgets/designerView/tools/designerToolsDock.d.ts +1 -0
  67. package/dist/elements/widgets/designerView/tools/designerToolsDock.js +7 -7
  68. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.d.ts +5 -0
  69. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.js +5 -0
  70. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +16 -0
  71. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +68 -0
  72. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -0
  73. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +62 -0
  74. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.d.ts +5 -0
  75. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.js +1 -0
  76. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -0
  77. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -0
  78. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -0
  79. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -0
  80. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.d.ts +5 -0
  81. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.js +7 -0
  82. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -0
  83. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -0
  84. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.d.ts +5 -0
  85. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.js +10 -0
  86. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -0
  87. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -0
  88. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -0
  89. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -0
  90. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -0
  91. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -0
  92. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -0
  93. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -0
  94. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.d.ts +24 -0
  95. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.js +115 -0
  96. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -0
  97. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +50 -0
  98. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.d.ts +7 -0
  99. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.js +23 -0
  100. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.d.ts +8 -0
  101. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.js +41 -0
  102. package/dist/elements/widgets/treeView/treeViewExtended.js +6 -4
  103. package/dist/index.d.ts +12 -1
  104. package/dist/index.js +11 -1
  105. package/package.json +42 -42
package/dist/Constants.js CHANGED
@@ -3,4 +3,3 @@ export const dragDropFormatNameBindingObject = 'text/json/bindingobject';
3
3
  //export const assetsPath = './node_modules/@node-projects/web-component-designer/assets/';
4
4
  let imporUrl = new URL((import.meta.url));
5
5
  export var assetsPath = imporUrl.origin + imporUrl.pathname.split('/').slice(0, -1).join('/') + '/../assets/';
6
- console.log("aasetPath", assetsPath);
@@ -56,6 +56,13 @@ import { PathContextMenu } from '../widgets/designerView/extensions/contextMenu/
56
56
  import { SeperatorContextMenu } from '../widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js';
57
57
  import { ZoomToElementContextMenu } from '../widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js';
58
58
  import { RotateLeftAndRight } from '../widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js';
59
+ import { SelectAllChildrenContextMenu } from '../widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu';
60
+ import { PointerToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js';
61
+ import { SeperatorToolProvider } from '../widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js';
62
+ import { ZoomToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js';
63
+ import { DrawToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js';
64
+ import { TextToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js';
65
+ import { SelectorToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js';
59
66
  export function createDefaultServiceContainer() {
60
67
  let serviceContainer = new ServiceContainer();
61
68
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -125,6 +132,7 @@ export function createDefaultServiceContainer() {
125
132
  //new CursorLinePointerExtensionProvider()
126
133
  );
127
134
  serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons());
135
+ serviceContainer.designViewToolbarButtons.push(new PointerToolButtonProvider(), new SeperatorToolProvider(22), new SelectorToolButtonProvider(), new SeperatorToolProvider(22), new ZoomToolButtonProvider(), new SeperatorToolProvider(22), new DrawToolButtonProvider(), new SeperatorToolProvider(5), new TextToolButtonProvider());
128
136
  serviceContainer.designerContextMenuExtensions = [
129
137
  new CopyPasteContextMenu(),
130
138
  new SeperatorContextMenu(),
@@ -137,6 +145,8 @@ export function createDefaultServiceContainer() {
137
145
  new PathContextMenu(),
138
146
  new RectContextMenu(),
139
147
  new SeperatorContextMenu(),
148
+ new SelectAllChildrenContextMenu(),
149
+ new SeperatorContextMenu(),
140
150
  new ItemsBelowContextMenu(),
141
151
  ];
142
152
  return serviceContainer;
@@ -10,7 +10,10 @@ export declare class GlobalContext {
10
10
  constructor(serviceContainer: ServiceContainer);
11
11
  set tool(tool: ITool);
12
12
  get tool(): ITool;
13
- readonly onToolChanged: TypedEvent<PropertyChangedArgs<ITool>>;
13
+ readonly onToolChanged: TypedEvent<PropertyChangedArgs<{
14
+ name: string;
15
+ tool: ITool;
16
+ }>>;
14
17
  finishedWithTool: (tool: ITool) => void;
15
18
  set strokeColor(strokeColor: string);
16
19
  get strokeColor(): string;
@@ -1,4 +1,3 @@
1
- //TODO: global conext not yet used.
2
1
  //Service container should not be something with changeing information, so global context is for tool and color (and maybe more)
3
2
  import { PropertyChangedArgs, TypedEvent } from "@node-projects/base-custom-webcomponent";
4
3
  export class GlobalContext {
@@ -13,10 +12,16 @@ export class GlobalContext {
13
12
  set tool(tool) {
14
13
  if (this._tool !== tool) {
15
14
  const oldTool = this._tool;
16
- if (oldTool)
15
+ if (oldTool) {
17
16
  oldTool.dispose();
17
+ }
18
18
  this._tool = tool;
19
- this.onToolChanged.emit(new PropertyChangedArgs(tool, oldTool));
19
+ let toolName = null;
20
+ for (let t of this._serviceContainer.designerTools) {
21
+ if (t[1] == tool)
22
+ toolName = t[0];
23
+ }
24
+ this.onToolChanged.emit(new PropertyChangedArgs({ name: toolName, tool: tool }, { name: null, tool: oldTool }));
20
25
  if (this._tool)
21
26
  this._tool.activated(this._serviceContainer);
22
27
  }
@@ -26,6 +26,7 @@ import { IDesignViewConfigButtonsProvider } from "../widgets/designerView/IDesig
26
26
  import { IDemoProviderService } from "./demoProviderService/IDemoProviderService.js";
27
27
  import { IBindableObjectsService } from "./bindableObjectsService/IBindableObjectsService.js";
28
28
  import { IBindableObjectDragDropService } from "./bindableObjectsService/IBindableObjectDragDropService.js";
29
+ import { IDesignViewToolbarButtonProvider } from "../widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js";
29
30
  interface ServiceNameMap {
30
31
  "propertyService": IPropertiesService;
31
32
  "containerService": IPlacementService;
@@ -53,6 +54,7 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
53
54
  readonly designerExtensions: Map<(ExtensionType | string), IDesignerExtensionProvider[]>;
54
55
  removeDesignerExtensionOfType(container: (ExtensionType | string), lambda: new (...args: any[]) => IDesignerExtensionProvider): void;
55
56
  readonly designViewConfigButtons: IDesignViewConfigButtonsProvider[];
57
+ readonly designViewToolbarButtons: IDesignViewToolbarButtonProvider[];
56
58
  readonly designerPointerExtensions: IDesignerPointerExtensionProvider[];
57
59
  designerContextMenuExtensions: IContextMenuExtension[];
58
60
  readonly globalContext: GlobalContext;
@@ -17,6 +17,7 @@ export class ServiceContainer extends BaseServiceContainer {
17
17
  }
18
18
  }
19
19
  designViewConfigButtons = [];
20
+ designViewToolbarButtons = [];
20
21
  designerPointerExtensions = [];
21
22
  designerContextMenuExtensions;
22
23
  globalContext = new GlobalContext(this);
@@ -1,7 +1,7 @@
1
1
  import { OverlayLayer } from "./extensions/OverlayLayer.js";
2
2
  const overlayLayer = OverlayLayer.Normal;
3
3
  export class Snaplines {
4
- snapOffset = 15;
4
+ snapOffset = 5;
5
5
  _overlayLayerView;
6
6
  _containerItem;
7
7
  _positionsH = [];
@@ -17,11 +17,10 @@ export declare class DesignerView extends BaseCustomWebComponentConstructorAppen
17
17
  get designerCanvas(): DesignerCanvas;
18
18
  private _zoomInput;
19
19
  private _lowertoolbar;
20
- private _tooldock;
20
+ private _toolbar;
21
21
  static readonly style: CSSStyleSheet;
22
22
  static readonly template: HTMLTemplateElement;
23
23
  constructor();
24
- ready(): Promise<void>;
25
24
  zoomReset(): void;
26
25
  zoomToFit(): void;
27
26
  private _onScrollbar;
@@ -3,6 +3,7 @@ import { DesignerCanvas } from "./designerCanvas.js";
3
3
  import { DomConverter } from './DomConverter.js';
4
4
  import { DefaultHtmlParserService } from '../../services/htmlParserService/DefaultHtmlParserService.js';
5
5
  import { EventNames } from '../../../enums/EventNames.js';
6
+ import { DesignerToolbar } from './tools/toolBar/DesignerToolbar.js';
6
7
  const autoZomOffset = 10;
7
8
  export class DesignerView extends BaseCustomWebComponentConstructorAppend {
8
9
  _sVert;
@@ -25,7 +26,7 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
25
26
  }
26
27
  _zoomInput;
27
28
  _lowertoolbar;
28
- _tooldock;
29
+ _toolbar;
29
30
  static style = css `
30
31
  :host {
31
32
  display: block;
@@ -78,15 +79,16 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
78
79
  height: 100%;
79
80
  }
80
81
  #canvas {
81
- left: 36px;
82
- width: calc(100% - 52px);
82
+ left: 24px;
83
+ width: calc(100% - 24px - 16px);
83
84
  height: calc(100% - 32px);
84
85
  }
85
86
 
86
- #tool-bar{
87
- width: 36px;
87
+ #tool-bar {
88
+ width: 24px;
88
89
  height: calc(100% - 32px);
89
90
  position: absolute;
91
+ background-color: lightgray;
90
92
  }
91
93
 
92
94
  .zoom-in {
@@ -130,7 +132,6 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
130
132
  <node-projects-plain-scrollbar id="s-hor" value="0.5" class="bottom-scroll"></node-projects-plain-scrollbar>
131
133
  <node-projects-plain-scrollbar id="s-vert" value="0.5" orientation="vertical" class="right-scroll">
132
134
  </node-projects-plain-scrollbar>
133
- <node-projects-designer-tools-dock id="tool-bar" class="tool-bar"></node-projects-designer-tools-dock>
134
135
  <div class="bottom-right"></div>
135
136
  <div id="lowertoolbar">
136
137
  <input id="zoomInput" type="text" value="100%">
@@ -149,11 +150,16 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
149
150
  constructor() {
150
151
  super();
151
152
  this._restoreCachedInititalValues();
153
+ this._sVert = this._getDomElement('s-vert');
154
+ this._sHor = this._getDomElement('s-hor');
152
155
  const outer = this._getDomElement('outer');
153
156
  this._designerCanvas = new DesignerCanvas();
154
157
  this._designerCanvas.id = "canvas";
155
158
  this._designerCanvas.appendChild(document.createElement("slot"));
156
159
  outer.insertAdjacentElement('afterbegin', this._designerCanvas);
160
+ this._toolbar = new DesignerToolbar();
161
+ this._toolbar.id = 'tool-bar';
162
+ this._sVert.insertAdjacentElement('afterend', this._toolbar);
157
163
  this._designerCanvas.onZoomFactorChanged.on(() => {
158
164
  this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
159
165
  const pos = this.designerCanvas.canvasOffset;
@@ -204,15 +210,9 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
204
210
  alignGrid.onclick = () => { this._designerCanvas.alignOnGrid = !this._designerCanvas.alignOnGrid; alignGrid.style.backgroundColor = this._designerCanvas.alignOnGrid ? 'deepskyblue' : ''; };
205
211
  alignGrid.style.backgroundColor = this._designerCanvas.alignOnGrid ? 'deepskyblue' : '';
206
212
  this._lowertoolbar = this._getDomElement('lowertoolbar');
207
- this._sVert = this._getDomElement('s-vert');
208
- this._sHor = this._getDomElement('s-hor');
209
213
  this._sVert.addEventListener('scrollbar-input', (e) => this._onScrollbar(e));
210
214
  this._sHor.addEventListener('scrollbar-input', (e) => this._onScrollbar(e));
211
215
  }
212
- async ready() {
213
- this._tooldock = await this._getDomElement('tool-bar');
214
- this._tooldock.initialize(this.serviceContainer, this);
215
- }
216
216
  zoomReset() {
217
217
  this._designerCanvas.canvasOffset = { x: 0, y: 0 };
218
218
  this._designerCanvas.zoomFactor = 1;
@@ -279,6 +279,8 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
279
279
  else {
280
280
  this._sVert.value += event.deltaY / 10000;
281
281
  this._onScrollbar(null);
282
+ this._sHor.value += event.deltaX / 10000;
283
+ this._onScrollbar(null);
282
284
  }
283
285
  }
284
286
  get designerWidth() {
@@ -316,6 +318,7 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
316
318
  this._lowertoolbar.appendChild(btn);
317
319
  }
318
320
  }
321
+ this._toolbar.initialize(this.serviceContainer, this);
319
322
  }
320
323
  getHTML(designItemsAssignmentList) {
321
324
  //this.instanceServiceContainer.selectionService.setSelectedElements(null);
@@ -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 SelectAllChildrenContextMenu implements IContextMenuExtension {
6
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
7
+ provideContextMenuItems(event: MouseEvent, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
8
+ }
@@ -0,0 +1,12 @@
1
+ export class SelectAllChildrenContextMenu {
2
+ shouldProvideContextmenu(event, designerView, designItem, initiator) {
3
+ return designItem.hasChildren;
4
+ }
5
+ provideContextMenuItems(event, designerCanvas, designItem) {
6
+ return [{
7
+ title: 'Select all Children', action: () => {
8
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(Array.from(designItem.children()));
9
+ }
10
+ }];
11
+ }
12
+ }
@@ -0,0 +1,19 @@
1
+ import { IElementDefinition } from '../../../services/elementsService/IElementDefinition';
2
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
3
+ import { IDesignerCanvas } from '../IDesignerCanvas';
4
+ import { ITool } from './ITool';
5
+ export declare class DrawElementTool implements ITool {
6
+ private _elementDefinition;
7
+ private _createdItem;
8
+ private _startPosition;
9
+ readonly cursor = "crosshair";
10
+ private _rect;
11
+ constructor(elementDefinition: IElementDefinition);
12
+ activated(serviceContainer: ServiceContainer): void;
13
+ dispose(): void;
14
+ pointerEventHandler(designerView: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
15
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
16
+ private _onPointerDown;
17
+ private _onPointerMove;
18
+ private _onPointerUp;
19
+ }
@@ -0,0 +1,79 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
3
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
4
+ export class DrawElementTool {
5
+ _elementDefinition;
6
+ _createdItem;
7
+ _startPosition;
8
+ cursor = 'crosshair';
9
+ _rect;
10
+ constructor(elementDefinition) {
11
+ this._elementDefinition = elementDefinition;
12
+ }
13
+ activated(serviceContainer) {
14
+ }
15
+ dispose() {
16
+ if (this._createdItem)
17
+ this._createdItem.element.parentElement.removeChild(this._createdItem.element);
18
+ }
19
+ pointerEventHandler(designerView, event, currentElement) {
20
+ switch (event.type) {
21
+ case EventNames.PointerDown:
22
+ this._onPointerDown(designerView, event);
23
+ break;
24
+ case EventNames.PointerMove:
25
+ this._onPointerMove(designerView, event);
26
+ break;
27
+ case EventNames.PointerUp:
28
+ this._onPointerUp(designerView, event);
29
+ break;
30
+ }
31
+ }
32
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
33
+ async _onPointerDown(designerView, event) {
34
+ event.preventDefault();
35
+ this._startPosition = { x: event.x, y: event.y };
36
+ this._createdItem = await designerView.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(this._elementDefinition, designerView.serviceContainer, designerView.instanceServiceContainer));
37
+ const targetRect = event.target.getBoundingClientRect();
38
+ this._createdItem.setStyle('position', 'absolute');
39
+ this._createdItem.setStyle('left', event.offsetX + targetRect.left - designerView.containerBoundingRect.x + 'px');
40
+ this._createdItem.setStyle('top', event.offsetY + targetRect.top - designerView.containerBoundingRect.y + 'px');
41
+ this._createdItem.setStyle('width', '0');
42
+ this._createdItem.setStyle('height', '0');
43
+ this._createdItem.element.style.overflow = 'hidden';
44
+ //TODO: add items as last, with all properties set
45
+ //draw via containerService??? how to draw into a grid, a stackpanel???
46
+ designerView.instanceServiceContainer.undoService.execute(new InsertAction(designerView.rootDesignItem, designerView.rootDesignItem.childCount, this._createdItem));
47
+ designerView.instanceServiceContainer.selectionService.clearSelectedElements();
48
+ }
49
+ async _onPointerMove(designerCanvas, event) {
50
+ if (this._createdItem) {
51
+ if (!this._rect) {
52
+ designerCanvas.rootDesignItem.element.appendChild(this._createdItem.element);
53
+ this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
54
+ designerCanvas.overlayLayer.addOverlay(this._rect, OverlayLayer.Foregorund);
55
+ this._rect.setAttribute('class', 'svg-draw-new-element');
56
+ this._rect.setAttribute('x', (this._startPosition.x - designerCanvas.containerBoundingRect.x));
57
+ this._rect.setAttribute('y', (this._startPosition.y - designerCanvas.containerBoundingRect.y));
58
+ }
59
+ const w = event.x - this._startPosition.x;
60
+ const h = event.y - this._startPosition.y;
61
+ if (w >= 0) {
62
+ this._rect.setAttribute('width', w);
63
+ this._createdItem.setStyle('width', w + 'px');
64
+ }
65
+ if (h >= 0) {
66
+ this._rect.setAttribute('height', h);
67
+ this._createdItem.setStyle('height', h + 'px');
68
+ }
69
+ }
70
+ }
71
+ async _onPointerUp(designerView, event) {
72
+ designerView.overlayLayer.removeOverlay(this._rect);
73
+ designerView.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem]);
74
+ this._startPosition = null;
75
+ this._rect = null;
76
+ this._createdItem = null;
77
+ designerView.serviceContainer.globalContext.finishedWithTool(this);
78
+ }
79
+ }
@@ -0,0 +1,16 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawEllipsisTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _path;
7
+ private _startPoint;
8
+ private _radius;
9
+ private _cx;
10
+ private _cy;
11
+ constructor();
12
+ activated(serviceContainer: ServiceContainer): void;
13
+ dispose(): void;
14
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
15
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
16
+ }
@@ -0,0 +1,94 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
3
+ import { calculateNormLegth } from '../../../helper/PathDataPolyfill';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
6
+ export class DrawEllipsisTool {
7
+ cursor = 'crosshair';
8
+ _path;
9
+ _startPoint;
10
+ _radius;
11
+ _cx;
12
+ _cy;
13
+ constructor() {
14
+ }
15
+ activated(serviceContainer) {
16
+ }
17
+ dispose() {
18
+ }
19
+ pointerEventHandler(designerCanvas, event, currentElement) {
20
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
21
+ const offset = 50;
22
+ switch (event.type) {
23
+ case EventNames.PointerDown:
24
+ this._startPoint = currentPoint;
25
+ event.target.setPointerCapture(event.pointerId);
26
+ designerCanvas.captureActiveTool(this);
27
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
28
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
29
+ this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
30
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
31
+ this._path.setAttribute("cx", currentPoint.x.toString());
32
+ this._path.setAttribute("cy", currentPoint.y.toString());
33
+ this._path.setAttribute("rx", "0");
34
+ this._path.setAttribute("ry", "0");
35
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
36
+ break;
37
+ case EventNames.PointerMove:
38
+ if (this._path) {
39
+ this._radius = { x: Math.abs(currentPoint.x - this._startPoint.x), y: Math.abs(currentPoint.y - this._startPoint.y) };
40
+ if (event.ctrlKey) {
41
+ this._path.setAttribute("cx", this._startPoint.x.toString());
42
+ this._path.setAttribute("cy", this._startPoint.y.toString());
43
+ this._cx = this._startPoint.x;
44
+ this._cy = this._startPoint.y;
45
+ if (event.shiftKey) {
46
+ const radius = calculateNormLegth(this._startPoint, currentPoint);
47
+ this._path.setAttribute("rx", radius.toString());
48
+ this._path.setAttribute("ry", radius.toString());
49
+ }
50
+ else {
51
+ this._path.setAttribute("rx", this._radius.x.toString());
52
+ this._path.setAttribute("ry", this._radius.y.toString());
53
+ }
54
+ }
55
+ else {
56
+ if (event.shiftKey) {
57
+ const radius = calculateNormLegth(this._startPoint, currentPoint);
58
+ this._radius = { x: radius, y: radius };
59
+ }
60
+ this._cx = currentPoint.x < this._startPoint.x ? this._startPoint.x - this._radius.x / 2 : this._startPoint.x + this._radius.x / 2;
61
+ this._cy = currentPoint.y < this._startPoint.y ? this._startPoint.y - this._radius.y / 2 : this._startPoint.y + this._radius.y / 2;
62
+ this._path.setAttribute("cx", this._cx.toString());
63
+ this._path.setAttribute("cy", this._cy.toString());
64
+ this._path.setAttribute("rx", (this._radius.x / 2).toString());
65
+ this._path.setAttribute("ry", (this._radius.y / 2).toString());
66
+ }
67
+ }
68
+ break;
69
+ case EventNames.PointerUp:
70
+ event.target.releasePointerCapture(event.pointerId);
71
+ designerCanvas.releaseActiveTool();
72
+ const rect = this._path.getBoundingClientRect();
73
+ designerCanvas.overlayLayer.removeOverlay(this._path);
74
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
75
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
76
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
77
+ svg.appendChild(this._path);
78
+ this._path.setAttribute("cx", (this._cx - mvX).toString());
79
+ this._path.setAttribute("cy", (this._cy - mvY).toString());
80
+ svg.style.left = (mvX) + 'px';
81
+ svg.style.top = (mvY) + 'px';
82
+ svg.style.position = 'absolute';
83
+ svg.style.width = (rect.width + 2 * offset) + 'px';
84
+ svg.style.height = (rect.height + 2 * offset) + 'px';
85
+ svg.style.overflow = 'visible';
86
+ this._path = null;
87
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
88
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
89
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
90
+ break;
91
+ }
92
+ }
93
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
94
+ }
@@ -0,0 +1,14 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawLineTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _path;
7
+ private _startPoint;
8
+ private _endPoint;
9
+ constructor();
10
+ activated(serviceContainer: ServiceContainer): void;
11
+ dispose(): void;
12
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
13
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
14
+ }
@@ -0,0 +1,79 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
3
+ import { straightenLine } from '../../../helper/PathDataPolyfill';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
6
+ export class DrawLineTool {
7
+ cursor = 'crosshair';
8
+ _path;
9
+ _startPoint;
10
+ _endPoint;
11
+ constructor() {
12
+ }
13
+ activated(serviceContainer) {
14
+ }
15
+ dispose() {
16
+ }
17
+ pointerEventHandler(designerCanvas, event, currentElement) {
18
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
19
+ const offset = 50;
20
+ switch (event.type) {
21
+ case EventNames.PointerDown:
22
+ this._startPoint = currentPoint;
23
+ event.target.setPointerCapture(event.pointerId);
24
+ designerCanvas.captureActiveTool(this);
25
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "line");
26
+ // this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
27
+ // this._path.setAttribute("d", this._pathD);
28
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
29
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
30
+ this._path.setAttribute("x1", currentPoint.x.toString());
31
+ this._path.setAttribute("y1", currentPoint.y.toString());
32
+ this._path.setAttribute("x2", currentPoint.x.toString());
33
+ this._path.setAttribute("y2", currentPoint.y.toString());
34
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
35
+ break;
36
+ case EventNames.PointerMove:
37
+ if (this._path) {
38
+ if (event.shiftKey) {
39
+ let straightLine = straightenLine(this._startPoint, currentPoint);
40
+ this._path.setAttribute("x2", straightLine.x.toString());
41
+ this._path.setAttribute("y2", straightLine.y.toString());
42
+ this._endPoint = straightLine;
43
+ }
44
+ else {
45
+ //this._path.setAttribute("d", this._pathD + "L" + currentPoint.x + " " + currentPoint.y);
46
+ this._path.setAttribute("x2", currentPoint.x.toString());
47
+ this._path.setAttribute("y2", currentPoint.y.toString());
48
+ this._endPoint = currentPoint;
49
+ }
50
+ }
51
+ break;
52
+ case EventNames.PointerUp:
53
+ event.target.releasePointerCapture(event.pointerId);
54
+ designerCanvas.releaseActiveTool();
55
+ const rect = this._path.getBoundingClientRect();
56
+ designerCanvas.overlayLayer.removeOverlay(this._path);
57
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
58
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
59
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
60
+ this._path.setAttribute("x1", (this._startPoint.x - mvX).toString());
61
+ this._path.setAttribute("y1", (this._startPoint.y - mvY).toString());
62
+ this._path.setAttribute("x2", (this._endPoint.x - mvX).toString());
63
+ this._path.setAttribute("y2", (this._endPoint.y - mvY).toString());
64
+ svg.appendChild(this._path);
65
+ svg.style.left = (mvX) + 'px';
66
+ svg.style.top = (mvY) + 'px';
67
+ svg.style.position = 'absolute';
68
+ svg.style.width = (rect.width + 2 * offset) + 'px';
69
+ svg.style.height = (rect.height + 2 * offset) + 'px';
70
+ svg.style.overflow = 'visible';
71
+ this._path = null;
72
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
73
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
74
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
75
+ break;
76
+ }
77
+ }
78
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
79
+ }
@@ -0,0 +1,20 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawPathTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _pathD;
7
+ private _path;
8
+ private _samePoint;
9
+ private _p2pMode;
10
+ private _dragMode;
11
+ private _pointerMoved;
12
+ private _eventStarted;
13
+ private _lastPoint;
14
+ private _startPoint;
15
+ constructor();
16
+ activated(serviceContainer: ServiceContainer): void;
17
+ dispose(): void;
18
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
19
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
20
+ }