@node-projects/web-component-designer 0.0.146 → 0.0.147

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 (24) hide show
  1. package/dist/elements/controls/DesignerTabControl.d.ts +1 -1
  2. package/dist/elements/controls/ImageButtonListSelector.d.ts +1 -1
  3. package/dist/elements/controls/MetricsEditor.d.ts +1 -1
  4. package/dist/elements/controls/MetricsEditor.js +10 -4
  5. package/dist/elements/controls/NumericStyleInput.d.ts +1 -1
  6. package/dist/elements/controls/ThicknessEditor.d.ts +1 -1
  7. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.d.ts +4 -4
  8. package/dist/elements/services/dragDropService/DragDropService.js +1 -1
  9. package/dist/elements/services/popupService/IPopupService.d.ts +3 -3
  10. package/dist/elements/services/undoService/IUndoService.d.ts +2 -0
  11. package/dist/elements/services/undoService/UndoService.d.ts +2 -0
  12. package/dist/elements/services/undoService/UndoService.js +8 -0
  13. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +1 -1
  14. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +1 -1
  15. package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -0
  16. package/dist/elements/widgets/designerView/designerCanvas.js +24 -13
  17. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +1 -1
  18. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +1 -1
  19. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +1 -1
  20. package/dist/enums/EventNames.d.ts +1 -0
  21. package/dist/enums/EventNames.js +1 -0
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +1 -0
  24. package/package.json +7 -6
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentLazyAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type DesignerTabControlIndexChangedEventArgs = {
2
+ export type DesignerTabControlIndexChangedEventArgs = {
3
3
  newIndex: number;
4
4
  oldIndex?: number;
5
5
  changedViaClick?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ImageButtonListSelectorValueChangedEventArgs = {
2
+ export type ImageButtonListSelectorValueChangedEventArgs = {
3
3
  newValue?: string;
4
4
  oldValue?: string;
5
5
  };
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend } from '@node-projects/base-custom-webcomponent';
2
- export declare type ThicknessEditorValueChangedEventArgs = {
2
+ export type ThicknessEditorValueChangedEventArgs = {
3
3
  newValue?: string;
4
4
  oldValue?: string;
5
5
  };
@@ -74,12 +74,18 @@ div.ct > div.ct > div.ct > div.ct > div.ct {
74
74
  display: inline-flex;
75
75
  justify-content: center;
76
76
  align-items: center;
77
+ }
78
+
79
+ span {
80
+ width: 30%;
81
+ overflow: hidden;
82
+ text-overflow: ellipsis;
77
83
  }`;
78
84
  static template = html `
79
- <div class="ct"><span>position</span>
80
- <div class="top">-</div><br><div class="left">-</div><div class="ct"><span>margin</span>
81
- <div id="testdiv" [contentEditable]="contentEditable" @dblclick="onDoubleClick" class="top">-</div><br><div class="left">-</div><div class="ct"><span>border</span>
82
- <div class="top">-</div><br><div class="left">-</div><div class="ct"><span>padding</span>
85
+ <div class="ct"><span title="position">position</span>
86
+ <div class="top">-</div><br><div class="left">-</div><div class="ct"><span title="margin">margin</span>
87
+ <div id="testdiv" [contentEditable]="contentEditable" @dblclick="onDoubleClick" class="top">-</div><br><div class="left">-</div><div class="ct"><span title="border">border</span>
88
+ <div class="top">-</div><br><div class="left">-</div><div class="ct"><span title="padding">padding</span>
83
89
  <div class="top">-</div><br><div class="left">-</div><div class="ct" style="font-size:6px"><div class="left">-</div>
84
90
  x
85
91
  <div class="right">-</div>
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ImageButtonListSelectorValueChangedEventArgs = {
2
+ export type ImageButtonListSelectorValueChangedEventArgs = {
3
3
  newValue?: string;
4
4
  oldValue?: string;
5
5
  };
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ThicknessEditorValueChangedEventArgs = {
2
+ export type ThicknessEditorValueChangedEventArgs = {
3
3
  newValue?: string;
4
4
  oldValue?: string;
5
5
  };
@@ -1,8 +1,8 @@
1
1
  import { IDesignerCanvas } from "../../widgets/designerView/IDesignerCanvas.js";
2
2
  import { IBindableObject } from "./IBindableObject.js";
3
3
  export interface IBindableObjectDragDropService {
4
- dragEnter(designerCanvas: IDesignerCanvas, event: DragEvent): any;
5
- dragLeave(designerCanvas: IDesignerCanvas, event: DragEvent): any;
6
- dragOver(designerCanvas: IDesignerCanvas, event: DragEvent): 'none' | 'copy' | 'link' | 'move';
7
- drop(designerCanvas: IDesignerCanvas, event: DragEvent, bindableObject: IBindableObject<any>): any;
4
+ dragEnter(designerCanvas: IDesignerCanvas, event: DragEvent, element: Element): any;
5
+ dragLeave(designerCanvas: IDesignerCanvas, event: DragEvent, element: Element): any;
6
+ dragOver(designerCanvas: IDesignerCanvas, event: DragEvent, element: Element): 'none' | 'copy' | 'link' | 'move';
7
+ drop(designerCanvas: IDesignerCanvas, event: DragEvent, bindableObject: IBindableObject<any>, element: Element): any;
8
8
  }
@@ -13,7 +13,7 @@ export class DragDropService {
13
13
  const img = document.createElement('img');
14
14
  img.src = reader.result;
15
15
  const di = DesignItem.createDesignItemFromInstance(img, designerView.serviceContainer, designerView.instanceServiceContainer);
16
- let grp = di.openGroup("Insert");
16
+ let grp = di.openGroup("Insert of &lt;img&gt;");
17
17
  di.setStyle('position', 'absolute');
18
18
  const targetRect = event.target.getBoundingClientRect();
19
19
  di.setStyle('top', event.offsetY + targetRect.top - designerView.containerBoundingRect.y + 'px');
@@ -1,5 +1,5 @@
1
- export declare type PlacementType = 'automatic' | 'relativeTo';
2
- export declare type PopupPlacement = {
1
+ export type PlacementType = 'automatic' | 'relativeTo';
2
+ export type PopupPlacement = {
3
3
  placementType: PlacementType;
4
4
  top?: number;
5
5
  left?: number;
@@ -8,7 +8,7 @@ export declare type PopupPlacement = {
8
8
  width?: number;
9
9
  height?: number;
10
10
  };
11
- export declare type Popup = {
11
+ export type Popup = {
12
12
  close: () => void;
13
13
  };
14
14
  export interface IPopupService {
@@ -9,4 +9,6 @@ export interface IUndoService extends IService {
9
9
  clear(): any;
10
10
  undo(): any;
11
11
  redo(): any;
12
+ getUndoEntries(): Generator<string, void, unknown>;
13
+ getRedoEntries(): Generator<string, void, unknown>;
12
14
  }
@@ -17,4 +17,6 @@ export declare class UndoService implements IUndoService {
17
17
  redo(): void;
18
18
  canUndo(): boolean;
19
19
  canRedo(): boolean;
20
+ getUndoEntries(): Generator<string, void, unknown>;
21
+ getRedoEntries(): Generator<string, void, unknown>;
20
22
  }
@@ -96,4 +96,12 @@ export class UndoService {
96
96
  canRedo() {
97
97
  return this._redoStack.length > 0;
98
98
  }
99
+ *getUndoEntries() {
100
+ for (let i = this._undoStack.length - 1; i >= 0; i--)
101
+ yield this._undoStack[i].title;
102
+ }
103
+ *getRedoEntries() {
104
+ for (let i = this._redoStack.length - 1; i >= 0; i--)
105
+ yield this._redoStack[i].title;
106
+ }
99
107
  }
@@ -1,6 +1,6 @@
1
1
  export class AttributeChangeAction {
2
2
  constructor(designItem, name, newValue, oldValue) {
3
- this.title = "Change Attribute";
3
+ this.title = "Change Attribute " + name + " of &lt;" + designItem.name + "&gt;";
4
4
  this.designItem = designItem;
5
5
  this.name = name;
6
6
  this.newValue = newValue;
@@ -1,6 +1,6 @@
1
1
  export class CssStyleChangeAction {
2
2
  constructor(designItem, name, newValue, oldValue) {
3
- this.title = "Change CSS Style";
3
+ this.title = "Change Css Style " + name + " of &lt;" + designItem.name + "&gt;";
4
4
  this.designItem = designItem;
5
5
  this.name = name;
6
6
  this.newValue = newValue;
@@ -84,6 +84,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
84
84
  _dragOverExtensionItem: IDesignItem;
85
85
  private _onDragEnter;
86
86
  private _onDragLeave;
87
+ private _lastDdElement;
87
88
  private _onDragOver;
88
89
  private _getPossibleContainerForDrop;
89
90
  private _onDrop;
@@ -510,28 +510,31 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
510
510
  if (hasTransferDataBindingObject) {
511
511
  const ddService = this.serviceContainer.bindableObjectDragDropService;
512
512
  if (ddService) {
513
- const effect = ddService.dragEnter(this, event);
514
- event.dataTransfer.dropEffect = effect;
513
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
514
+ if (this._lastDdElement != el) {
515
+ ddService.dragLeave(this, event, this._lastDdElement);
516
+ ddService.dragEnter(this, event, el);
517
+ this._lastDdElement = el;
518
+ }
519
+ }
520
+ else {
521
+ this._lastDdElement = null;
515
522
  }
516
523
  }
524
+ else {
525
+ this._lastDdElement = null;
526
+ }
517
527
  }
518
528
  _onDragLeave(event) {
519
529
  this._fillCalculationrects();
520
530
  event.preventDefault();
521
531
  this._canvas.classList.remove('dragFileActive');
522
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
523
- if (hasTransferDataBindingObject) {
524
- const ddService = this.serviceContainer.bindableObjectDragDropService;
525
- if (ddService) {
526
- const effect = ddService.dragLeave(this, event);
527
- event.dataTransfer.dropEffect = effect;
528
- }
529
- }
530
532
  if (this._dragOverExtensionItem) {
531
533
  this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
532
534
  this._dragOverExtensionItem = null;
533
535
  }
534
536
  }
537
+ _lastDdElement = null;
535
538
  _onDragOver(event) {
536
539
  event.preventDefault();
537
540
  /*if (this.alignOnSnap) {
@@ -556,7 +559,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
556
559
  if (hasTransferDataBindingObject) {
557
560
  const ddService = this.serviceContainer.bindableObjectDragDropService;
558
561
  if (ddService) {
559
- const effect = ddService.dragOver(this, event);
562
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
563
+ if (this._lastDdElement != el) {
564
+ ddService.dragLeave(this, event, this._lastDdElement);
565
+ ddService.dragEnter(this, event, el);
566
+ this._lastDdElement = el;
567
+ }
568
+ const effect = ddService.dragOver(this, event, el);
560
569
  event.dataTransfer.dropEffect = effect;
561
570
  }
562
571
  }
@@ -603,6 +612,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
603
612
  return [newContainerElementDesignItem, newContainerService];
604
613
  }
605
614
  async _onDrop(event) {
615
+ this._lastDdElement = null;
606
616
  event.preventDefault();
607
617
  this._canvas.classList.remove('dragFileActive');
608
618
  this._fillCalculationrects();
@@ -618,7 +628,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
618
628
  const bo = JSON.parse(transferDataBindingObject);
619
629
  const ddService = this.serviceContainer.bindableObjectDragDropService;
620
630
  if (ddService) {
621
- const effect = ddService.drop(this, event, bo);
631
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
632
+ const effect = ddService.drop(this, event, bo, el);
622
633
  event.dataTransfer.dropEffect = effect;
623
634
  }
624
635
  }
@@ -637,7 +648,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
637
648
  const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
638
649
  const elementDefinition = JSON.parse(transferData);
639
650
  const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
640
- const grp = di.openGroup("Insert");
651
+ const grp = di.openGroup("Insert of &lt;" + di.name + "&gt;");
641
652
  di.setStyle('position', 'absolute');
642
653
  di.setStyle('left', (position.x - pos.x) + 'px');
643
654
  di.setStyle('top', (position.y - pos.y) + 'px');
@@ -2,7 +2,7 @@ import { IDesignItem } from "../../../../item/IDesignItem";
2
2
  import { IDesignerCanvas } from "../../IDesignerCanvas";
3
3
  import { AbstractExtension } from "../AbstractExtension.js";
4
4
  import { IExtensionManager } from "../IExtensionManger";
5
- export declare type handlesPointerEvent = {
5
+ export type handlesPointerEvent = {
6
6
  handlesPointerEvent(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): boolean;
7
7
  };
8
8
  export declare class EditTextExtension extends AbstractExtension implements handlesPointerEvent {
@@ -139,7 +139,7 @@ export class ResizeExtension extends AbstractExtension {
139
139
  break;
140
140
  case EventNames.PointerUp:
141
141
  event.target.releasePointerCapture(event.pointerId);
142
- let cg = this.extendedItem.openGroup("Resize Elements");
142
+ let cg = this.extendedItem.openGroup((this.resizeAllSelected && this.designerCanvas.instanceServiceContainer.selectionService.selectedElements.length > 1) ? "Resize Elements" : "Resize &lt;" + this.extendedItem.name + "&gt;");
143
143
  this.extendedItem.setStyle('width', this.extendedItem.element.style.width);
144
144
  this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
145
145
  if (this.resizeAllSelected) {
@@ -1,7 +1,7 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextMenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
- export declare type ContextmenuInitiator = 'designer' | 'treeView' | 'other';
4
+ export type ContextmenuInitiator = 'designer' | 'treeView' | 'other';
5
5
  export interface IContextMenuExtension {
6
6
  shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): any;
7
7
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
@@ -3,6 +3,7 @@ export declare enum EventNames {
3
3
  PointerMove = "pointermove",
4
4
  PointerUp = "pointerup",
5
5
  DragEnter = "dragenter",
6
+ DragEnd = "dragend",
6
7
  DragLeave = "dragleave",
7
8
  DragOver = "dragover",
8
9
  Drop = "drop",
@@ -4,6 +4,7 @@ export var EventNames;
4
4
  EventNames["PointerMove"] = "pointermove";
5
5
  EventNames["PointerUp"] = "pointerup";
6
6
  EventNames["DragEnter"] = "dragenter";
7
+ EventNames["DragEnd"] = "dragend";
7
8
  EventNames["DragLeave"] = "dragleave";
8
9
  EventNames["DragOver"] = "dragover";
9
10
  EventNames["Drop"] = "drop";
package/dist/index.d.ts CHANGED
@@ -124,6 +124,7 @@ export type { IPlacementView } from "./elements/widgets/designerView/IPlacementV
124
124
  export * from "./elements/widgets/designerView/designerView.js";
125
125
  export * from "./elements/widgets/designerView/overlayLayerView.js";
126
126
  export * from "./elements/widgets/designerView/defaultConfiguredDesignerView.js";
127
+ export * from "./elements/widgets/designerView/DomConverter.js";
127
128
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js";
128
129
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js";
129
130
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js";
package/dist/index.js CHANGED
@@ -86,6 +86,7 @@ export * from "./elements/widgets/propertyGrid/PropertyGridWithHeader.js";
86
86
  export * from "./elements/widgets/designerView/designerView.js";
87
87
  export * from "./elements/widgets/designerView/overlayLayerView.js";
88
88
  export * from "./elements/widgets/designerView/defaultConfiguredDesignerView.js";
89
+ export * from "./elements/widgets/designerView/DomConverter.js";
89
90
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js";
90
91
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js";
91
92
  export * from "./elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.0.146",
4
+ "version": "0.0.147",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -14,25 +14,26 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@node-projects/base-custom-webcomponent": "^0.10.3",
17
+ "@types/node": "^18.11.9",
17
18
  "construct-style-sheets-polyfill": "^3.1.0"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@node-projects/lean-he-esm": "^3.3.0",
21
22
  "@node-projects/node-html-parser-esm": "^2.4.1",
22
- "@papyrs/stylo": "^0.0.39",
23
+ "@papyrs/stylo": "^0.0.41",
23
24
  "@types/codemirror": "^5.60.5",
24
25
  "@types/jquery": "^3.5.14",
25
26
  "@types/jquery.fancytree": "0.0.7",
26
- "ace-builds": "^1.11.2",
27
+ "ace-builds": "^1.13.1",
27
28
  "codemirror": "^6.0.1",
28
29
  "esprima-next": "^5.8.4",
29
30
  "html2canvas": "*",
30
- "jest": "^29.1.2",
31
+ "jest": "^29.3.1",
31
32
  "jquery": "^3.6.1",
32
33
  "jquery.fancytree": "^2.38.2",
33
- "monaco-editor": "^0.34.0",
34
+ "monaco-editor": "^0.34.1",
34
35
  "ts-jest": "^29.0.3",
35
- "typescript": "^4.8.4",
36
+ "typescript": "^4.9.3",
36
37
  "typescript-lit-html-plugin": "^0.9.0"
37
38
  },
38
39
  "repository": {