@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
@@ -0,0 +1,23 @@
1
+ import { html, TypedEvent } from "@node-projects/base-custom-webcomponent";
2
+ import { assetsPath } from "../../../../../Constants";
3
+ import { DesignerToolbarPopup } from "../designerToolbarGenerics/designerToolbarPopup";
4
+ import { DesignerToolbarPopupToolSelect } from "../designerToolbarGenerics/designerToolbarPopupToolSelect";
5
+ export class SelectorToolsPopup extends DesignerToolbarPopup {
6
+ templateToolSelect = html `
7
+ <div class="tool" data-command="setTool" popup="selector" data-command-parameter="RectangleSelector" title="Rectangle Selector" style="background-image: url('${assetsPath}images/layout/SelectRectTool.svg');"></div>
8
+ <div class="tool" data-command="setTool" data-command-parameter="MagicWandSelector" title="Magic Wand Selector" style="background-image: url('${assetsPath}images/layout/MagicWandTool.svg');"></div>
9
+ `;
10
+ toolActivated = new TypedEvent();
11
+ ready() {
12
+ this._setTitle(this.getAttribute("title"));
13
+ let toolSelect = new DesignerToolbarPopupToolSelect();
14
+ toolSelect.insertToolContent(this.templateToolSelect);
15
+ toolSelect.toolActivated.on((toolArg) => {
16
+ this.toolActivated.emit(toolArg);
17
+ });
18
+ let content = [];
19
+ content.push(toolSelect);
20
+ this._setContent(content);
21
+ }
22
+ }
23
+ customElements.define('node-projects-designer-popup-selector', SelectorToolsPopup);
@@ -3,6 +3,7 @@ import { ServiceContainer } from "../../../services/ServiceContainer.js";
3
3
  import { DesignerView } from "../designerView.js";
4
4
  import "./designerToolbarGenerics/designerToolsButtons.js";
5
5
  import "./designerToolbarPopups/DrawToolPopup.js";
6
+ import "./designerToolbarPopups/SelectorToolsPopup.js";
6
7
  export declare class DesignerToolsDock extends BaseCustomWebComponentConstructorAppend {
7
8
  static readonly style: CSSStyleSheet;
8
9
  static readonly template: HTMLTemplateElement;
@@ -3,6 +3,7 @@ import { CommandType } from "../../../../commandHandling/CommandType.js";
3
3
  import { DesignerToolRenderer } from "./designerToolbarGenerics/designerToolRenderer.js";
4
4
  import "./designerToolbarGenerics/designerToolsButtons.js";
5
5
  import "./designerToolbarPopups/DrawToolPopup.js";
6
+ import "./designerToolbarPopups/SelectorToolsPopup.js";
6
7
  export class DesignerToolsDock extends BaseCustomWebComponentConstructorAppend {
7
8
  static style = css `
8
9
  node-projects-designer-tools-buttons {
@@ -14,7 +15,7 @@ export class DesignerToolsDock extends BaseCustomWebComponentConstructorAppend {
14
15
  position: absolute;
15
16
  top: calc(0px + 10px);
16
17
  height: 100%;
17
- left: calc(32px + 4px + 10px);
18
+ left: calc(24px + 4px + 10px);
18
19
  }
19
20
 
20
21
  #popups > * {
@@ -23,15 +24,13 @@ export class DesignerToolsDock extends BaseCustomWebComponentConstructorAppend {
23
24
 
24
25
  #popups > *[opened] {
25
26
  display: block;
26
- }
27
- `;
27
+ }`;
28
28
  static template = html `
29
29
  <node-projects-designer-tools-buttons id="tool-buttons"></node-projects-designer-tools-buttons>
30
30
  <div id="popups">
31
- <node-projects-designer-popup-drawtool popup="draw" class="popup" title="Drawtools" tabindex="-1">
32
- </node-projects-designer-popup-drawtool>
33
- </div>
34
- `;
31
+ <node-projects-designer-popup-drawtool popup="draw" class="popup" title="Drawtools" tabindex="-1"></node-projects-designer-popup-drawtool>
32
+ <node-projects-designer-popup-selector popup="selector" class="popup" title="Selectors" tabindex="-1"></node-projects-designer-popup-selector>
33
+ </div>`;
35
34
  _designerView;
36
35
  _toolButtonsElem;
37
36
  _toolPopupElems;
@@ -45,6 +44,7 @@ export class DesignerToolsDock extends BaseCustomWebComponentConstructorAppend {
45
44
  this._registerPopups();
46
45
  let categories = [];
47
46
  await this._waitForChildrenReady();
47
+ //TODO: warum macht das nicht alles die tools buttons liste selbst????
48
48
  let tools = [];
49
49
  for (let tool of this._toolButtonsElem.toolCollection) {
50
50
  if (!categories.includes(tool.category)) {
@@ -0,0 +1,5 @@
1
+ import { BaseCustomWebComponentConstructorAppend } from '@node-projects/base-custom-webcomponent';
2
+ export declare class AbstractDesignerToolbarButton extends BaseCustomWebComponentConstructorAppend {
3
+ static style: CSSStyleSheet;
4
+ static template: HTMLTemplateElement;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BaseCustomWebComponentConstructorAppend, css, html } from '@node-projects/base-custom-webcomponent';
2
+ export class AbstractDesignerToolbarButton extends BaseCustomWebComponentConstructorAppend {
3
+ static style = css ``;
4
+ static template = html ``;
5
+ }
@@ -0,0 +1,16 @@
1
+ import { BaseCustomWebComponentConstructorAppend } from "@node-projects/base-custom-webcomponent";
2
+ import { ServiceContainer } from "../../../../services/ServiceContainer.js";
3
+ import { DesignerView } from "../../designerView.js";
4
+ import { DesignerToolbarButton } from './DesignerToolbarButton';
5
+ export declare class DesignerToolbar extends BaseCustomWebComponentConstructorAppend {
6
+ static readonly style: CSSStyleSheet;
7
+ static readonly template: HTMLTemplateElement;
8
+ private _toolButtonsElem;
9
+ private _serviceContainer;
10
+ private _popupContainer;
11
+ private _designerView;
12
+ constructor();
13
+ initialize(serviceContainer: ServiceContainer, designerView: DesignerView): void;
14
+ showPopup(designerToolbarButton: DesignerToolbarButton): void;
15
+ setTool(tool: string): void;
16
+ }
@@ -0,0 +1,68 @@
1
+ import { BaseCustomWebComponentConstructorAppend, css, html } from "@node-projects/base-custom-webcomponent";
2
+ import { CommandType } from "../../../../../commandHandling/CommandType.js";
3
+ //import { DesignerToolbarPopup } from "../designerToolbarGenerics/designerToolbarPopup.js";
4
+ //import { ToolPopupCategoryCollection } from "../designerToolbarGenerics/designerToolsButtons.js";
5
+ //import "../designerToolbarGenerics/designerToolsButtons.js";
6
+ //import "./popups/DrawToolPopup.js";
7
+ //import "./popups/SelectorToolsPopup.js";
8
+ import { DesignerToolbarButton } from './DesignerToolbarButton';
9
+ export class DesignerToolbar extends BaseCustomWebComponentConstructorAppend {
10
+ static style = css `
11
+ node-projects-designer-tools-buttons {
12
+ height: 100%;
13
+ width: 100%;
14
+ }
15
+
16
+ #popup {
17
+ position: absolute;
18
+ top: calc(0px + 10px);
19
+ height: 100%;
20
+ left: calc(24px + 4px + 10px);
21
+ }`;
22
+ static template = html `
23
+ <div id="popup"></div>
24
+ <div id="toolButtons"></div>`;
25
+ _toolButtonsElem;
26
+ _serviceContainer;
27
+ _popupContainer;
28
+ _designerView;
29
+ constructor() {
30
+ super();
31
+ this._toolButtonsElem = this._getDomElement("toolButtons");
32
+ this._popupContainer = this._getDomElement("popup");
33
+ }
34
+ initialize(serviceContainer, designerView) {
35
+ this._serviceContainer = serviceContainer;
36
+ this._designerView = designerView;
37
+ for (let tb of this._serviceContainer.designViewToolbarButtons) {
38
+ this._toolButtonsElem.appendChild(tb.provideButton(designerView.designerCanvas));
39
+ }
40
+ this._serviceContainer.globalContext.onToolChanged.on((e) => {
41
+ for (const el of this._toolButtonsElem.children) {
42
+ if (el instanceof DesignerToolbarButton) {
43
+ el.setActiveTool(e.newValue.name);
44
+ }
45
+ }
46
+ });
47
+ }
48
+ showPopup(designerToolbarButton) {
49
+ if (this._popupContainer.children.length) {
50
+ this._popupContainer.innerHTML = '';
51
+ }
52
+ else {
53
+ let instance;
54
+ if (typeof designerToolbarButton.popup === 'string')
55
+ instance = document.createElement(designerToolbarButton.popup);
56
+ else
57
+ instance = new designerToolbarButton.popup();
58
+ this._popupContainer.appendChild(instance);
59
+ }
60
+ }
61
+ setTool(tool) {
62
+ if (this._popupContainer.children.length) {
63
+ this._popupContainer.innerHTML = '';
64
+ }
65
+ this._designerView.designerCanvas.executeCommand({ type: CommandType.setTool, parameter: tool });
66
+ }
67
+ }
68
+ customElements.define('node-projects-designer-toolbar', DesignerToolbar);
@@ -0,0 +1,19 @@
1
+ import { BaseCustomWebComponentConstructorAppend } from '@node-projects/base-custom-webcomponent';
2
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
3
+ import { NamedTools } from '../NamedTools.js';
4
+ export declare class DesignerToolbarButton extends BaseCustomWebComponentConstructorAppend {
5
+ static style: CSSStyleSheet;
6
+ static template: HTMLTemplateElement;
7
+ tools: Record<string | NamedTools, {
8
+ icon: string;
9
+ }>;
10
+ popup: string | (new (...args: any[]) => HTMLElement);
11
+ currentToolOnButton: string;
12
+ private _img;
13
+ private _div;
14
+ constructor(designerCanvas: IDesignerCanvas, tools: Record<string | NamedTools, {
15
+ icon: string;
16
+ }>);
17
+ showTool(name: string): void;
18
+ setActiveTool(name: string): void;
19
+ }
@@ -0,0 +1,62 @@
1
+ import { BaseCustomWebComponentConstructorAppend, css, html } from '@node-projects/base-custom-webcomponent';
2
+ export class DesignerToolbarButton extends BaseCustomWebComponentConstructorAppend {
3
+ static style = css `
4
+ div {
5
+ width: 24px;
6
+ height: 24px;
7
+ display: flex;
8
+ justify-content: center;
9
+ align-items: center;
10
+ background-color: inherit;
11
+ }
12
+
13
+ div:hover {
14
+ background-color: darkgray;
15
+ }
16
+
17
+ img {
18
+ width: calc(100% - 4px);
19
+ height: calc(100% - 4px);
20
+ }
21
+ `;
22
+ static template = html `<div id="div"><img id="img"></div>`;
23
+ tools;
24
+ popup;
25
+ currentToolOnButton;
26
+ _img;
27
+ _div;
28
+ constructor(designerCanvas, tools) {
29
+ super();
30
+ this.tools = tools;
31
+ this._img = this._getDomElement('img');
32
+ this._div = this._getDomElement('div');
33
+ this._img.onclick = () => {
34
+ if (this.popup) {
35
+ this.getRootNode().host.showPopup(this);
36
+ }
37
+ else {
38
+ this.getRootNode().host.setTool(this.currentToolOnButton);
39
+ }
40
+ };
41
+ this.showTool(Object.getOwnPropertyNames(tools)[0]);
42
+ }
43
+ showTool(name) {
44
+ const tool = this.tools[name];
45
+ if (tool) {
46
+ this._img.title = name;
47
+ this._img.src = tool.icon;
48
+ this.currentToolOnButton = name;
49
+ }
50
+ }
51
+ setActiveTool(name) {
52
+ this.showTool(name);
53
+ const tool = this.tools[name];
54
+ if (tool) {
55
+ this._div.style.backgroundColor = 'lightgreen';
56
+ }
57
+ else {
58
+ this._div.style.backgroundColor = '';
59
+ }
60
+ }
61
+ }
62
+ customElements.define('node-projects-designer-toolbar-button', DesignerToolbarButton);
@@ -0,0 +1,5 @@
1
+ import { DesignerView } from "../../designerView.js";
2
+ import { IDesignerCanvas } from "../../IDesignerCanvas.js";
3
+ export interface IDesignViewToolbarButtonProvider {
4
+ provideButton(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
5
+ }
@@ -0,0 +1,4 @@
1
+ import { IDesignerCanvas } from "../../IDesignerCanvas.js";
2
+ export interface IDesignViewToolbarButtonProvider {
3
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
4
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class DrawToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,16 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ import { DrawToolPopup } from "../popups/DrawToolPopup.js";
4
+ export class DrawToolButtonProvider {
5
+ provideButton(designerCanvas) {
6
+ const button = new DesignerToolbarButton(designerCanvas, {
7
+ 'DrawLine': { icon: assetsPath + 'images/layout/DrawLineTool.svg' },
8
+ 'DrawPath': { icon: assetsPath + 'images/layout/DrawPathTool.svg' },
9
+ 'DrawRect': { icon: assetsPath + 'images/layout/DrawRectTool.svg' },
10
+ 'DrawEllipsis': { icon: assetsPath + 'images/layout/DrawEllipTool.svg' },
11
+ 'PickColor': { icon: assetsPath + 'images/layout/ColorPickerTool.svg' }
12
+ });
13
+ button.popup = DrawToolPopup;
14
+ return button;
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class PointerToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class PointerToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton({ 'PointerTool': { icon: assetsPath + 'images/layout/PointerTool.svg' } });
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class PointerToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class PointerToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton(designerCanvas, { 'Pointer': { icon: assetsPath + 'images/layout/PointerTool.svg' } });
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class SelectorToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,10 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class SelectorToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton({
6
+ 'RectangleSelector': { icon: assetsPath + 'images/layout/SelectRectTool.svg' },
7
+ 'MagicWandSelector': { icon: assetsPath + 'images/layout/MagicWandTool.svg' }
8
+ });
9
+ }
10
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class SelectorToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,10 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class SelectorToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton(designerCanvas, {
6
+ 'RectangleSelector': { icon: assetsPath + 'images/layout/SelectRectTool.svg' },
7
+ 'MagicWandSelector': { icon: assetsPath + 'images/layout/MagicWandTool.svg' }
8
+ });
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class SeperatorToolProvider implements IDesignViewToolbarButtonProvider {
4
+ constructor(distance: number);
5
+ distance: number;
6
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
7
+ }
@@ -0,0 +1,11 @@
1
+ export class SeperatorToolProvider {
2
+ constructor(distance) {
3
+ this.distance = distance;
4
+ }
5
+ distance;
6
+ provideButton(designerCanvas) {
7
+ const div = document.createElement('div');
8
+ div.style.marginTop = this.distance + 'px';
9
+ return div;
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class TextToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class TextToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton(designerCanvas, { 'Text': { icon: assetsPath + 'images/layout/TextTool.svg' } });
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ import { IDesignerCanvas } from "../../../IDesignerCanvas.js";
2
+ import { IDesignViewToolbarButtonProvider } from "../IDesignViewToolbarButtonProvider.js";
3
+ export declare class ZoomToolButtonProvider implements IDesignViewToolbarButtonProvider {
4
+ provideButton(designerCanvas: IDesignerCanvas): HTMLElement;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { DesignerToolbarButton } from '../DesignerToolbarButton.js';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class ZoomToolButtonProvider {
4
+ provideButton(designerCanvas) {
5
+ return new DesignerToolbarButton(designerCanvas, { 'Zoom': { icon: assetsPath + 'images/layout/ZoomTool.svg' } });
6
+ }
7
+ }
@@ -0,0 +1,24 @@
1
+ import { BaseCustomWebComponentConstructorAppend } from "@node-projects/base-custom-webcomponent";
2
+ import { ServiceContainer } from "../../../../services/ServiceContainer.js";
3
+ import { DesignerView } from "../../designerView.js";
4
+ import "../designerToolbarGenerics/designerToolsButtons.js";
5
+ import "../designerToolbarPopups/DrawToolPopup.js";
6
+ import "../designerToolbarPopups/SelectorToolsPopup.js";
7
+ export declare class DesignerToolbar extends BaseCustomWebComponentConstructorAppend {
8
+ static readonly style: CSSStyleSheet;
9
+ static readonly template: HTMLTemplateElement;
10
+ private _designerView;
11
+ private _toolButtonsElem;
12
+ private _toolPopupElems;
13
+ private _serviceContainer;
14
+ private _prevSelected;
15
+ ready(): Promise<void>;
16
+ initialize(serviceContainer: ServiceContainer, designerView: DesignerView): void;
17
+ private _registerPopups;
18
+ private _toolButtonActivated;
19
+ private _activatePopup;
20
+ private _popupToolSelected;
21
+ private _isPopupScenario;
22
+ private _resetPreviousElements;
23
+ private _hideAllPopups;
24
+ }
@@ -0,0 +1,115 @@
1
+ import { BaseCustomWebComponentConstructorAppend, css, html } from "@node-projects/base-custom-webcomponent";
2
+ import { CommandType } from "../../../../../commandHandling/CommandType.js";
3
+ import { DesignerToolRenderer } from "../designerToolbarGenerics/designerToolRenderer.js";
4
+ import "../designerToolbarGenerics/designerToolsButtons.js";
5
+ import "../designerToolbarPopups/DrawToolPopup.js";
6
+ import "../designerToolbarPopups/SelectorToolsPopup.js";
7
+ export class DesignerToolbar extends BaseCustomWebComponentConstructorAppend {
8
+ static style = css `
9
+ node-projects-designer-tools-buttons {
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+
14
+ #popups {
15
+ position: absolute;
16
+ top: calc(0px + 10px);
17
+ height: 100%;
18
+ left: calc(24px + 4px + 10px);
19
+ }
20
+
21
+ #popups > * {
22
+ display: none;
23
+ }
24
+
25
+ #popups > *[opened] {
26
+ display: block;
27
+ }`;
28
+ static template = html `
29
+ <node-projects-designer-tools-buttons id="tool-buttons"></node-projects-designer-tools-buttons>
30
+ <div id="popups">
31
+ <node-projects-designer-popup-drawtool popup="draw" class="popup" title="Drawtools" tabindex="-1"></node-projects-designer-popup-drawtool>
32
+ <node-projects-designer-popup-selector popup="selector" class="popup" title="Selectors" tabindex="-1"></node-projects-designer-popup-selector>
33
+ </div>`;
34
+ _designerView;
35
+ _toolButtonsElem;
36
+ _toolPopupElems;
37
+ _serviceContainer;
38
+ _prevSelected = [];
39
+ async ready() {
40
+ this._toolButtonsElem = this._getDomElement("tool-buttons");
41
+ this._toolButtonsElem.toolActivated.on((toolActivated => {
42
+ this._toolButtonActivated(toolActivated[0], toolActivated[1]);
43
+ }));
44
+ this._registerPopups();
45
+ let categories = [];
46
+ await this._waitForChildrenReady();
47
+ //TODO: warum macht das nicht alles die tools buttons liste selbst????
48
+ let tools = [];
49
+ for (let tool of this._toolButtonsElem.toolCollection) {
50
+ if (!categories.includes(tool.category)) {
51
+ tools.push(DesignerToolRenderer.createToolFromObject(tool));
52
+ categories.push(tool.category);
53
+ }
54
+ }
55
+ this._toolButtonsElem.setToolsExternal(tools);
56
+ }
57
+ initialize(serviceContainer, designerView) {
58
+ this._serviceContainer = serviceContainer;
59
+ this._serviceContainer.globalContext.onToolChanged.on((e) => {
60
+ let command_name;
61
+ let found = false;
62
+ this._serviceContainer.designerTools.forEach((tool, key) => {
63
+ if (tool === e.newValue && !found) {
64
+ command_name = key;
65
+ found = true;
66
+ this._toolButtonsElem.externalToolChange(command_name);
67
+ }
68
+ });
69
+ });
70
+ this._designerView = designerView;
71
+ }
72
+ _registerPopups() {
73
+ let popups = this._getDomElement("popups");
74
+ this._toolPopupElems = [...popups.querySelectorAll('.popup')];
75
+ //DrawToolPopup
76
+ let drawToolPopup = popups.querySelectorAll("node-projects-designer-popup-drawtool")[0];
77
+ drawToolPopup.toolActivated.on((toolArg) => this._popupToolSelected(drawToolPopup, toolArg));
78
+ }
79
+ _toolButtonActivated(tool, external) {
80
+ this._hideAllPopups();
81
+ this._prevSelected[1] = this._prevSelected[0];
82
+ this._prevSelected[0] = tool;
83
+ if (!external) {
84
+ if (this._isPopupScenario()) {
85
+ this._resetPreviousElements();
86
+ this._activatePopup(tool.category);
87
+ }
88
+ }
89
+ this._toolButtonsElem.markToolAsSelected(tool.command_parameter);
90
+ let command = {
91
+ type: CommandType.setTool,
92
+ parameter: tool.command_parameter,
93
+ };
94
+ this._designerView.executeCommand(command);
95
+ }
96
+ _activatePopup(category) {
97
+ this._toolPopupElems.find(x => x.getAttribute("popup") == category)?.setAttribute("opened", "");
98
+ }
99
+ _popupToolSelected(popup, tool) {
100
+ }
101
+ _isPopupScenario() {
102
+ return JSON.stringify(this._prevSelected[1]) === JSON.stringify(this._prevSelected[0]);
103
+ }
104
+ _resetPreviousElements() {
105
+ for (let i = 0; i < this._prevSelected.length; i++) {
106
+ this._prevSelected[i] = null;
107
+ }
108
+ }
109
+ _hideAllPopups() {
110
+ for (let popup of this._toolPopupElems) {
111
+ popup.removeAttribute("opened");
112
+ }
113
+ }
114
+ }
115
+ customElements.define('node-projects-designer-toolbar', DesignerToolbar);
@@ -0,0 +1,6 @@
1
+ import { BaseCustomWebComponentConstructorAppend } from '@node-projects/base-custom-webcomponent';
2
+ export declare class DrawToolPopup extends BaseCustomWebComponentConstructorAppend {
3
+ static style: CSSStyleSheet;
4
+ static template: HTMLTemplateElement;
5
+ constructor();
6
+ }
@@ -0,0 +1,50 @@
1
+ import { html, BaseCustomWebComponentConstructorAppend, css } from '@node-projects/base-custom-webcomponent';
2
+ import { assetsPath } from "../../../../../../Constants.js";
3
+ export class DrawToolPopup extends BaseCustomWebComponentConstructorAppend {
4
+ static style = css `
5
+ .container {
6
+ width: 150px;
7
+ min-height: 200px;
8
+ color: white;
9
+ background-color: rgb(64, 64, 64);
10
+ border: 1px solid black;
11
+ }
12
+ header {
13
+ text-align: center;
14
+ }
15
+ .tool {
16
+ height: 32px;
17
+ width: 32px;
18
+ background-color: rgb(255, 255, 255);
19
+ background-size: 65%;
20
+ background-repeat: no-repeat;
21
+ background-position: center center;
22
+ flex-shrink: 0;
23
+ border-bottom: 1px solid black;
24
+ }
25
+ .tools {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+ }`;
29
+ static template = html `
30
+ <div class="container">
31
+ <header><h2 id="title" style="margin: 0;">Draw</h2></header>
32
+ <main id="content-area">
33
+ <div class="tools">
34
+ <div class="tool" data-command="setTool" data-command-parameter="DrawLine" title="Draw Line" style="background-image: url('${assetsPath}images/layout/DrawLineTool.svg');"></div>
35
+ <div class="tool" data-command="setTool" data-command-parameter="DrawPath" title="Pointer Tool" style="background-image: url('${assetsPath}images/layout/DrawPathTool.svg');"></div>
36
+ <div class="tool" data-command="setTool" data-command-parameter="DrawRect" title="Draw Rectangle" style="background-image: url('${assetsPath}images/layout/DrawRectTool.svg');"></div>
37
+ <div class="tool" data-command="setTool" data-command-parameter="DrawEllipsis" title="Draw Ellipsis" style="background-image: url('${assetsPath}images/layout/DrawEllipTool.svg');"></div>
38
+ <div class="tool" data-command="setTool" data-command-parameter="PickColor" title="Pick Color" style="background-image: url('${assetsPath}images/layout/ColorPickerTool.svg');"></div>
39
+ </div>
40
+ </main>
41
+ </div>`;
42
+ constructor() {
43
+ super();
44
+ for (let e of [...this.shadowRoot.querySelectorAll("div.tool")]) {
45
+ let div = e;
46
+ div.onclick = () => this.getRootNode().host.setTool(div.dataset['commandParameter']);
47
+ }
48
+ }
49
+ }
50
+ customElements.define('node-projects-designer-drawtool-popup', DrawToolPopup);
@@ -0,0 +1,7 @@
1
+ import { TypedEvent } from "@node-projects/base-custom-webcomponent";
2
+ import { DesignerToolbarPopup } from "./designerToolbarPopup";
3
+ export declare class SelectorToolsPopup extends DesignerToolbarPopup {
4
+ private readonly templateToolSelect;
5
+ readonly toolActivated: TypedEvent<ToolPopupCategoryCollection>;
6
+ ready(): void;
7
+ }