@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.
- package/dist/elements/controls/DesignerTabControl.d.ts +1 -1
- package/dist/elements/controls/ImageButtonListSelector.d.ts +1 -1
- package/dist/elements/controls/MetricsEditor.d.ts +1 -1
- package/dist/elements/controls/MetricsEditor.js +10 -4
- package/dist/elements/controls/NumericStyleInput.d.ts +1 -1
- package/dist/elements/controls/ThicknessEditor.d.ts +1 -1
- package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.d.ts +4 -4
- package/dist/elements/services/dragDropService/DragDropService.js +1 -1
- package/dist/elements/services/popupService/IPopupService.d.ts +3 -3
- package/dist/elements/services/undoService/IUndoService.d.ts +2 -0
- package/dist/elements/services/undoService/UndoService.d.ts +2 -0
- package/dist/elements/services/undoService/UndoService.js +8 -0
- package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +1 -1
- package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.js +24 -13
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +1 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +1 -1
- package/dist/enums/EventNames.d.ts +1 -0
- package/dist/enums/EventNames.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +7 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseCustomWebComponentLazyAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
|
|
2
|
-
export
|
|
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
|
|
2
|
+
export type ImageButtonListSelectorValueChangedEventArgs = {
|
|
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
|
|
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
|
|
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
|
|
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 <img>");
|
|
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
|
|
2
|
-
export
|
|
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
|
|
11
|
+
export type Popup = {
|
|
12
12
|
close: () => void;
|
|
13
13
|
};
|
|
14
14
|
export interface IPopupService {
|
|
@@ -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 <" + designItem.name + ">";
|
|
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
|
|
3
|
+
this.title = "Change Css Style " + name + " of <" + designItem.name + ">";
|
|
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
|
|
514
|
-
|
|
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
|
|
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
|
|
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 <" + di.name + ">");
|
|
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
|
|
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 <" + this.extendedItem.name + ">");
|
|
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) {
|
package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts
CHANGED
|
@@ -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
|
|
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[];
|
package/dist/enums/EventNames.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
|
31
|
+
"jest": "^29.3.1",
|
|
31
32
|
"jquery": "^3.6.1",
|
|
32
33
|
"jquery.fancytree": "^2.38.2",
|
|
33
|
-
"monaco-editor": "^0.34.
|
|
34
|
+
"monaco-editor": "^0.34.1",
|
|
34
35
|
"ts-jest": "^29.0.3",
|
|
35
|
-
"typescript": "^4.
|
|
36
|
+
"typescript": "^4.9.3",
|
|
36
37
|
"typescript-lit-html-plugin": "^0.9.0"
|
|
37
38
|
},
|
|
38
39
|
"repository": {
|