@node-projects/web-component-designer 0.1.124 → 0.1.126
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/item/DesignItem.d.ts +5 -1
- package/dist/elements/item/DesignItem.js +30 -8
- package/dist/elements/item/IDesignItem.d.ts +2 -1
- package/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.d.ts +8 -0
- package/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js +36 -0
- package/dist/elements/services/designItemService/DesignItemService copy.d.ts +7 -0
- package/dist/elements/services/designItemService/DesignItemService copy.js +6 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +12 -3
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js +2 -0
- package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.js +3 -3
- package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +1 -1
- package/dist/elements/services/selectionService/ISelectionChangedEvent copy.d.ts +0 -6
- package/dist/elements/services/selectionService/ISelectionChangedEvent copy.js +0 -1
- package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.d.ts +0 -9
- package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.js +0 -30
- package/dist/elements/widgets/designerView/extensions/BasicDisplayToolbarExtension.d.ts +0 -20
- package/dist/elements/widgets/designerView/extensions/BasicDisplayToolbarExtension.js +0 -68
- package/dist/elements/widgets/designerView/extensions/BlockToolbarExtension.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/BlockToolbarExtension.js +0 -40
- package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.d.ts +0 -13
- package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.js +0 -18
- package/dist/elements/widgets/designerView/extensions/EditTextExtension.d.ts +0 -18
- package/dist/elements/widgets/designerView/extensions/EditTextExtension.js +0 -107
- package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.js +0 -58
- package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.js +0 -34
- package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.d.ts +0 -9
- package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.js +0 -12
- package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.js +0 -66
- package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.d.ts +0 -10
- package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.js +0 -17
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.js +0 -66
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.d.ts +0 -10
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.js +0 -17
- package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.d.ts +0 -28
- package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.js +0 -355
- package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.d.ts +0 -12
- package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.js +0 -20
- package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.d.ts +0 -9
- package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.js +0 -14
- package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.d.ts +0 -30
- package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.js +0 -181
|
@@ -70,7 +70,11 @@ export declare class DesignItem implements IDesignItem {
|
|
|
70
70
|
static createDesignItemFromInstance(node: Node, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): DesignItem;
|
|
71
71
|
querySelectorAll(selectors: string): NodeListOf<HTMLElement>;
|
|
72
72
|
removeDesignerAttributesAndStylesFromChildren(): void;
|
|
73
|
-
|
|
73
|
+
_internalUpdateChildrenFromNodesChildren(): any[];
|
|
74
|
+
_backupWhenEditContent: any;
|
|
75
|
+
_inEditContent: boolean;
|
|
76
|
+
editContent(): void;
|
|
77
|
+
editContentFinish(): void;
|
|
74
78
|
constructor(node: Node, parsedNode: any, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer);
|
|
75
79
|
setView(node: Element): void;
|
|
76
80
|
openGroup(title: string): ChangeGroup;
|
|
@@ -339,7 +339,10 @@ export class DesignItem {
|
|
|
339
339
|
}
|
|
340
340
|
node.draggable = false; //even if it should be true, for better designer exp.
|
|
341
341
|
}
|
|
342
|
-
designItem.
|
|
342
|
+
designItem._childArray = designItem._internalUpdateChildrenFromNodesChildren();
|
|
343
|
+
for (let c of designItem._childArray) {
|
|
344
|
+
c._parent = designItem;
|
|
345
|
+
}
|
|
343
346
|
return designItem;
|
|
344
347
|
}
|
|
345
348
|
querySelectorAll(selectors) {
|
|
@@ -360,25 +363,44 @@ export class DesignItem {
|
|
|
360
363
|
e.style.pointerEvents = '';
|
|
361
364
|
}
|
|
362
365
|
}
|
|
363
|
-
|
|
364
|
-
|
|
366
|
+
_internalUpdateChildrenFromNodesChildren() {
|
|
367
|
+
const newChilds = [];
|
|
365
368
|
if (this.nodeType == NodeType.Element) {
|
|
366
369
|
if (this.element instanceof HTMLTemplateElement) {
|
|
367
370
|
for (const c of this.element.content.childNodes) {
|
|
368
371
|
const di = DesignItem.createDesignItemFromInstance(c, this.serviceContainer, this.instanceServiceContainer);
|
|
369
|
-
|
|
370
|
-
di._parent = this;
|
|
372
|
+
newChilds.push(di);
|
|
371
373
|
}
|
|
372
374
|
}
|
|
373
375
|
else {
|
|
374
376
|
for (const c of this.element.childNodes) {
|
|
375
377
|
const di = DesignItem.createDesignItemFromInstance(c, this.serviceContainer, this.instanceServiceContainer);
|
|
376
|
-
|
|
377
|
-
di._parent = this;
|
|
378
|
+
newChilds.push(di);
|
|
378
379
|
}
|
|
379
380
|
}
|
|
380
381
|
}
|
|
381
|
-
|
|
382
|
+
return newChilds;
|
|
383
|
+
}
|
|
384
|
+
_backupWhenEditContent;
|
|
385
|
+
_inEditContent = false;
|
|
386
|
+
editContent() {
|
|
387
|
+
this._inEditContent = true;
|
|
388
|
+
this._backupWhenEditContent = [...this.element.childNodes];
|
|
389
|
+
const nn = this.element.innerHTML;
|
|
390
|
+
this.element.innerHTML = '';
|
|
391
|
+
this.element.innerHTML = nn;
|
|
392
|
+
this.element.setAttribute('contenteditable', '');
|
|
393
|
+
}
|
|
394
|
+
editContentFinish() {
|
|
395
|
+
if (this._inEditContent) {
|
|
396
|
+
this._inEditContent = false;
|
|
397
|
+
this.element.removeAttribute('contenteditable');
|
|
398
|
+
this.element.innerHTML = '';
|
|
399
|
+
for (let n of this._backupWhenEditContent) {
|
|
400
|
+
this.element.appendChild(n);
|
|
401
|
+
}
|
|
402
|
+
this._backupWhenEditContent = null;
|
|
403
|
+
}
|
|
382
404
|
}
|
|
383
405
|
constructor(node, parsedNode, serviceContainer, instanceServiceContainer) {
|
|
384
406
|
this.node = node;
|
|
@@ -37,7 +37,8 @@ export interface IDesignItem {
|
|
|
37
37
|
remove(): any;
|
|
38
38
|
clearChildren(): any;
|
|
39
39
|
removeDesignerAttributesAndStylesFromChildren(): any;
|
|
40
|
-
|
|
40
|
+
editContent(): any;
|
|
41
|
+
editContentFinish(): any;
|
|
41
42
|
readonly hasContent: boolean;
|
|
42
43
|
content: string;
|
|
43
44
|
innerHTML?: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IDesignItem } from "../../item/IDesignItem.js";
|
|
2
|
+
import { InstanceServiceContainer } from "../InstanceServiceContainer.js";
|
|
3
|
+
import { ServiceContainer } from "../ServiceContainer.js";
|
|
4
|
+
import { IDesignItemService } from "./IDesignItemService.js";
|
|
5
|
+
export declare class BaseCustomWebcomponentDesignItemService implements IDesignItemService {
|
|
6
|
+
createDesignItem(node: Node, parsedNode: any, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): IDesignItem;
|
|
7
|
+
instancateNode(parent: Element, node: Node, append?: boolean): Element;
|
|
8
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DesignItem } from "../../item/DesignItem.js";
|
|
2
|
+
export class BaseCustomWebcomponentDesignItemService {
|
|
3
|
+
createDesignItem(node, parsedNode, serviceContainer, instanceServiceContainer) {
|
|
4
|
+
const di = new DesignItem(node, parsedNode, serviceContainer, instanceServiceContainer);
|
|
5
|
+
if (node instanceof HTMLTemplateElement) {
|
|
6
|
+
requestAnimationFrame(() => {
|
|
7
|
+
let repeatCount = 1;
|
|
8
|
+
const attr = node.getAttribute('sample-repeat-count');
|
|
9
|
+
if (attr) {
|
|
10
|
+
repeatCount = parseInt(attr);
|
|
11
|
+
}
|
|
12
|
+
for (let n = 0; n < repeatCount; n++) {
|
|
13
|
+
let par = node;
|
|
14
|
+
for (const n of node.content.childNodes) {
|
|
15
|
+
par = this.instancateNode(par, n);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return di;
|
|
21
|
+
}
|
|
22
|
+
instancateNode(parent, node, append = false) {
|
|
23
|
+
const nd = node.cloneNode(false);
|
|
24
|
+
if (append)
|
|
25
|
+
parent.appendChild(nd);
|
|
26
|
+
else {
|
|
27
|
+
parent.parentNode.insertBefore(nd, parent.nextSibling);
|
|
28
|
+
//parent.insertAdjacentElement('afterend', <Element>nd);
|
|
29
|
+
}
|
|
30
|
+
DesignItem.GetDesignItem(node).setView(nd);
|
|
31
|
+
for (const n of node.childNodes) {
|
|
32
|
+
this.instancateNode(nd, n, true);
|
|
33
|
+
}
|
|
34
|
+
return nd;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignItem } from "../../item/IDesignItem.js";
|
|
2
|
+
import { InstanceServiceContainer } from "../InstanceServiceContainer.js";
|
|
3
|
+
import { ServiceContainer } from "../ServiceContainer.js";
|
|
4
|
+
import { IDesignItemService } from "./IDesignItemService.js";
|
|
5
|
+
export declare class DesignItemService implements IDesignItemService {
|
|
6
|
+
createDesignItem(node: Node, parsedNode: any, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): IDesignItem;
|
|
7
|
+
}
|
|
@@ -10,6 +10,7 @@ export declare class EditTextExtension extends AbstractExtension implements hand
|
|
|
10
10
|
private _foreignObject;
|
|
11
11
|
private _path;
|
|
12
12
|
private _toolbar;
|
|
13
|
+
private _selectionChangedListener;
|
|
13
14
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
14
15
|
extend(): void;
|
|
15
16
|
refresh(): void;
|
|
@@ -35,6 +35,7 @@ export class EditTextExtension extends AbstractExtension {
|
|
|
35
35
|
_foreignObject;
|
|
36
36
|
_path;
|
|
37
37
|
_toolbar;
|
|
38
|
+
_selectionChangedListener;
|
|
38
39
|
constructor(extensionManager, designerView, extendedItem) {
|
|
39
40
|
super(extensionManager, designerView, extendedItem);
|
|
40
41
|
}
|
|
@@ -44,6 +45,12 @@ export class EditTextExtension extends AbstractExtension {
|
|
|
44
45
|
this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements();
|
|
45
46
|
this.extendedItem.removeDesignerAttributesAndStylesFromChildren();
|
|
46
47
|
this.extendedItem.element.setAttribute('contenteditable', '');
|
|
48
|
+
//@ts-ignore
|
|
49
|
+
this.extendedItem.editContent();
|
|
50
|
+
this._selectionChangedListener = this.extendedItem.instanceServiceContainer.selectionService.onSelectionChanged.on(() => {
|
|
51
|
+
this.commitchanges();
|
|
52
|
+
this.extensionManager.removeExtensionInstance(this.extendedItem, this);
|
|
53
|
+
});
|
|
47
54
|
this.extendedItem.element.focus();
|
|
48
55
|
let itemRect = this.extendedItem.element.getBoundingClientRect();
|
|
49
56
|
this._toolbar = this.createToolbar(EditTextExtension.template, 300, 24);
|
|
@@ -80,14 +87,16 @@ export class EditTextExtension extends AbstractExtension {
|
|
|
80
87
|
this._path.setAttribute("d", data);
|
|
81
88
|
}
|
|
82
89
|
dispose() {
|
|
90
|
+
this._selectionChangedListener.dispose();
|
|
83
91
|
this._removeAllOverlays();
|
|
84
|
-
this.extendedItem.
|
|
92
|
+
this.extendedItem.editContentFinish();
|
|
85
93
|
this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
|
|
86
94
|
}
|
|
87
95
|
commitchanges() {
|
|
88
96
|
this._removeAllOverlays();
|
|
89
|
-
this.extendedItem.element.
|
|
90
|
-
this.extendedItem.
|
|
97
|
+
const newHTML = this.extendedItem.element.innerHTML;
|
|
98
|
+
this.extendedItem.editContentFinish();
|
|
99
|
+
this.extendedItem.innerHTML = newHTML;
|
|
91
100
|
this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
|
|
92
101
|
}
|
|
93
102
|
handlesPointerEvent(designerCanvas, event, currentElement) {
|
|
@@ -2,6 +2,8 @@ import { EditTextExtension } from "./EditTextExtension.js";
|
|
|
2
2
|
import { css } from '@node-projects/base-custom-webcomponent';
|
|
3
3
|
export class EditTextExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
if (designItem.isRootItem)
|
|
6
|
+
return false;
|
|
5
7
|
if (designItem.name === 'input')
|
|
6
8
|
return false;
|
|
7
9
|
return true;
|
|
@@ -2,7 +2,7 @@ import { ElementDragTitleExtension } from './ElementDragTitleExtension.js';
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class ElementDragTitleExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
-
return !designItem.isRootItem;
|
|
5
|
+
return !designItem.isRootItem && !(designItem.element instanceof HTMLTemplateElement);
|
|
6
6
|
}
|
|
7
7
|
getExtension(extensionManager, designerView, designItem) {
|
|
8
8
|
return new ElementDragTitleExtension(extensionManager, designerView, designItem);
|
|
@@ -2,7 +2,7 @@ import { HighlightElementExtension } from './HighlightElementExtension.js';
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class HighlightElementExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
-
return
|
|
5
|
+
return !(designItem.element instanceof HTMLTemplateElement);
|
|
6
6
|
}
|
|
7
7
|
getExtension(extensionManager, designerView, designItem) {
|
|
8
8
|
return new HighlightElementExtension(extensionManager, designerView, designItem);
|
package/dist/elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.js
CHANGED
|
@@ -2,12 +2,12 @@ import { css } from "@node-projects/base-custom-webcomponent";
|
|
|
2
2
|
import { MultipleSelectionRectExtension as MultipleSelectionRectExtension } from './MultipleSelectionRectExtension.js';
|
|
3
3
|
export class MultipleSelectionRectExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
-
return !designItem.isRootItem;
|
|
5
|
+
return !designItem.isRootItem && !(designItem.element instanceof HTMLTemplateElement);
|
|
6
6
|
}
|
|
7
7
|
getExtension(extensionManager, designerView, designItem) {
|
|
8
8
|
return new MultipleSelectionRectExtension(extensionManager, designerView, designItem);
|
|
9
9
|
}
|
|
10
|
-
style = css `
|
|
11
|
-
.svg-multiple-rect-selection { stroke: #909090; stroke-dasharray: 3; fill: transparent; stroke-width: 2; /*pointer-events: all;*/ }
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-multiple-rect-selection { stroke: #909090; stroke-dasharray: 3; fill: transparent; stroke-width: 2; /*pointer-events: all;*/ }
|
|
12
12
|
`;
|
|
13
13
|
}
|
|
@@ -2,7 +2,7 @@ import { PositionExtension } from './PositionExtension.js';
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class PositionExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
-
if (!designItem?.parent)
|
|
5
|
+
if (!designItem?.parent || designItem.element instanceof HTMLTemplateElement)
|
|
6
6
|
return false;
|
|
7
7
|
const cs = getComputedStyle(designItem.element);
|
|
8
8
|
if (cs.position === 'relative' || cs.position === 'absolute')
|
|
@@ -7,7 +7,7 @@ export class ResizeExtensionProvider {
|
|
|
7
7
|
this.resizeAllSelected = resizeAllSelected;
|
|
8
8
|
}
|
|
9
9
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
10
|
-
if (designItem.element instanceof SVGElement)
|
|
10
|
+
if (designItem.element instanceof SVGElement || designItem.element instanceof HTMLTemplateElement)
|
|
11
11
|
return false;
|
|
12
12
|
return !designItem.isRootItem && designItem.nodeType == NodeType.Element;
|
|
13
13
|
}
|
|
@@ -2,7 +2,7 @@ import { RotateExtension } from './RotateExtension.js';
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class RotateExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
-
if (designItem.element instanceof SVGElement) {
|
|
5
|
+
if (designItem.element instanceof SVGElement || designItem.element instanceof HTMLTemplateElement) {
|
|
6
6
|
return false;
|
|
7
7
|
}
|
|
8
8
|
return !designItem.isRootItem;
|
|
@@ -3,7 +3,7 @@ import { css } from "@node-projects/base-custom-webcomponent";
|
|
|
3
3
|
import { NodeType } from '../../../item/NodeType.js';
|
|
4
4
|
export class SelectionDefaultExtensionProvider {
|
|
5
5
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
|
-
return !designItem.isRootItem && designItem.nodeType != NodeType.Comment;
|
|
6
|
+
return !designItem.isRootItem && designItem.nodeType != NodeType.Comment && !(designItem.element instanceof HTMLTemplateElement);
|
|
7
7
|
}
|
|
8
8
|
getExtension(extensionManager, designerView, designItem) {
|
|
9
9
|
return new SelectionDefaultExtension(extensionManager, designerView, designItem);
|
package/dist/index.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export * from "./elements/services/designItemDocumentPositionService/DesignItemD
|
|
|
52
52
|
export type { IDesignItemDocumentPositionService } from "./elements/services/designItemDocumentPositionService/IDesignItemDocumentPositionService.js";
|
|
53
53
|
export type { IConfigUiService } from "./elements/services/configUiService/IConfigUiService.js";
|
|
54
54
|
export * from "./elements/services/designItemService/DesignItemService.js";
|
|
55
|
+
export * from "./elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js";
|
|
55
56
|
export type { IDesignItemService } from "./elements/services/designItemService/IDesignItemService.js";
|
|
56
57
|
export * from "./elements/services/dragDropService/ExternalDragDropService.js";
|
|
57
58
|
export type { IExternalDragDropService } from "./elements/services/dragDropService/IExternalDragDropService.js";
|
package/dist/index.js
CHANGED
|
@@ -35,6 +35,7 @@ export * from "./elements/services/demoProviderService/IframeDemoProviderService
|
|
|
35
35
|
export * from "./elements/services/demoProviderService/SimpleDemoProviderService.js";
|
|
36
36
|
export * from "./elements/services/designItemDocumentPositionService/DesignItemDocumentPositionService.js";
|
|
37
37
|
export * from "./elements/services/designItemService/DesignItemService.js";
|
|
38
|
+
export * from "./elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js";
|
|
38
39
|
export * from "./elements/services/dragDropService/ExternalDragDropService.js";
|
|
39
40
|
export * from "./elements/services/dragDropService/DragDropService.js";
|
|
40
41
|
export * from "./elements/services/elementsService/JsonFileElementsService.js";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { AbstractExtension } from "./AbstractExtension.js";
|
|
2
|
-
import { IPoint } from "../../../../interfaces/IPoint.js";
|
|
3
|
-
export declare abstract class AbstractToolbarExtension extends AbstractExtension {
|
|
4
|
-
abstract template: HTMLTemplateElement;
|
|
5
|
-
protected _toolbarContainer: SVGForeignObjectElement;
|
|
6
|
-
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
7
|
-
refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
|
|
8
|
-
protected updateToolbarPosition(position: IPoint): void;
|
|
9
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { OverlayLayer } from "../OverlayLayer.js";
|
|
2
|
-
import { AbstractExtension } from "./AbstractExtension.js";
|
|
3
|
-
export class AbstractToolbarExtension extends AbstractExtension {
|
|
4
|
-
_toolbarContainer;
|
|
5
|
-
extend(cache, event) {
|
|
6
|
-
const element = this.template.content.cloneNode(true);
|
|
7
|
-
element.querySelectorAll('*').forEach(x => x.onpointerdown = (e) => {
|
|
8
|
-
this.designerCanvas.ignoreEvent(e);
|
|
9
|
-
});
|
|
10
|
-
const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
|
|
11
|
-
this._toolbarContainer = foreignObject;
|
|
12
|
-
foreignObject.classList.add('svg-toolbar-container');
|
|
13
|
-
foreignObject.setAttribute('width', '1');
|
|
14
|
-
foreignObject.setAttribute('height', '1');
|
|
15
|
-
foreignObject.appendChild(element);
|
|
16
|
-
this.refresh(cache, event);
|
|
17
|
-
this._addOverlay(foreignObject, OverlayLayer.Foreground);
|
|
18
|
-
}
|
|
19
|
-
refresh(cache, event) {
|
|
20
|
-
if (event) {
|
|
21
|
-
const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
22
|
-
this._toolbarContainer.setAttribute('x', '' + (pos.x - 16));
|
|
23
|
-
this._toolbarContainer.setAttribute('y', '' + (pos.y - 36));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
updateToolbarPosition(position) {
|
|
27
|
-
this._toolbarContainer.setAttribute('x', '' + position.x);
|
|
28
|
-
this._toolbarContainer.setAttribute('y', '' + position.y);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AbstractExtension, toolbarObject } from "./AbstractExtension.js";
|
|
2
|
-
import { IExtensionManager } from "./IExtensionManger.js";
|
|
3
|
-
import { IDesignerCanvas } from "../IDesignerCanvas.js";
|
|
4
|
-
import { IDesignItem } from "../../../item/IDesignItem.js";
|
|
5
|
-
export declare class BasicStackedToolbarExtension extends AbstractExtension {
|
|
6
|
-
protected static basicTemplate: string;
|
|
7
|
-
protected _toolbar: toolbarObject;
|
|
8
|
-
protected _size: {
|
|
9
|
-
width: number;
|
|
10
|
-
height: number;
|
|
11
|
-
};
|
|
12
|
-
protected _display: string;
|
|
13
|
-
protected _inline: string;
|
|
14
|
-
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
15
|
-
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
16
|
-
updateDisplayValue(): Promise<void>;
|
|
17
|
-
refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
|
|
18
|
-
protected _addStyleButton(styleAndControlName: string): void;
|
|
19
|
-
dispose(): void;
|
|
20
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { assetsPath } from "../../../../Constants.js";
|
|
2
|
-
import { AbstractExtension } from "./AbstractExtension.js";
|
|
3
|
-
export class BasicStackedToolbarExtension extends AbstractExtension {
|
|
4
|
-
static basicTemplate = `
|
|
5
|
-
<node-projects-image-button-list-selector id="inline" no-value-in-header property="inline">
|
|
6
|
-
<img data-value="block" title="block" src="${assetsPath}images/display/block.svg">
|
|
7
|
-
<img data-value="inline" title="inline" src="${assetsPath}images/display/inline.svg">
|
|
8
|
-
</node-projects-image-button-list-selector>
|
|
9
|
-
<select title="display" id="displayType" style="pointer-events: all; height: 24px; width: 70px; padding: 0; font-weight: 900; text-transform: uppercase; margin-left: 5px; margin-right: 10px;">
|
|
10
|
-
<option>block</option>
|
|
11
|
-
<option>flex</option>
|
|
12
|
-
<option>grid</option>
|
|
13
|
-
</select>
|
|
14
|
-
`;
|
|
15
|
-
_toolbar;
|
|
16
|
-
_size = { width: 200, height: 30 };
|
|
17
|
-
_display;
|
|
18
|
-
_inline;
|
|
19
|
-
constructor(extensionManager, designerView, extendedItem) {
|
|
20
|
-
super(extensionManager, designerView, extendedItem);
|
|
21
|
-
}
|
|
22
|
-
extend(cache, event) {
|
|
23
|
-
const cs = getComputedStyle(this.extendedItem.element);
|
|
24
|
-
this._display = cs.display.replace('inline-', '').replace('inline', 'block');
|
|
25
|
-
this._inline = cs.display.startsWith('inline') ? 'inline' : 'block';
|
|
26
|
-
//@ts-ignore
|
|
27
|
-
this._toolbar = this.createToolbar(this.constructor.template, this._size.width, this._size.height);
|
|
28
|
-
const displayTypeEl = this._toolbar.getById('displayType');
|
|
29
|
-
displayTypeEl.value = this._display;
|
|
30
|
-
displayTypeEl.onchange = async () => {
|
|
31
|
-
this._display = displayTypeEl.value;
|
|
32
|
-
await this.updateDisplayValue();
|
|
33
|
-
this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
|
|
34
|
-
};
|
|
35
|
-
const inlineEl = this._toolbar.getById('inline');
|
|
36
|
-
inlineEl.value = this._inline;
|
|
37
|
-
inlineEl.addEventListener('value-changed', async () => {
|
|
38
|
-
this._inline = inlineEl.value;
|
|
39
|
-
if (this._inline && cs.position === 'absolute')
|
|
40
|
-
this.extendedItem.setStyle('position', 'static');
|
|
41
|
-
await this.updateDisplayValue();
|
|
42
|
-
this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
async updateDisplayValue() {
|
|
46
|
-
let v = (this._inline == 'inline' ? 'inline ' : '') + this._display;
|
|
47
|
-
if (v === 'inline block')
|
|
48
|
-
v = 'inline';
|
|
49
|
-
await this.extendedItem.updateStyleInSheetOrLocalAsync('display', v);
|
|
50
|
-
}
|
|
51
|
-
refresh(cache, event) {
|
|
52
|
-
if (event) {
|
|
53
|
-
const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
54
|
-
this._toolbar.updatePosition({ x: (pos.x - (16 / this.designerCanvas.zoomFactor)), y: (pos.y - (44 / this.designerCanvas.zoomFactor)) });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
_addStyleButton(styleAndControlName) {
|
|
58
|
-
const cs = getComputedStyle(this.extendedItem.element);
|
|
59
|
-
const ctl = this._toolbar.getById(styleAndControlName);
|
|
60
|
-
ctl.addEventListener('value-changed', async () => {
|
|
61
|
-
await this.extendedItem.updateStyleInSheetOrLocalAsync(styleAndControlName, ctl.value);
|
|
62
|
-
});
|
|
63
|
-
ctl.value = cs[styleAndControlName];
|
|
64
|
-
}
|
|
65
|
-
dispose() {
|
|
66
|
-
this._removeAllOverlays();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
|
-
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
|
-
import { AbstractExtension } from "../AbstractExtension.js";
|
|
4
|
-
import { IExtensionManager } from '../IExtensionManger.js';
|
|
5
|
-
export declare class BlockToolbarExtension extends AbstractExtension {
|
|
6
|
-
private static template;
|
|
7
|
-
private _toolbar;
|
|
8
|
-
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
9
|
-
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
10
|
-
refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
|
|
11
|
-
dispose(): void;
|
|
12
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { html } from "@node-projects/base-custom-webcomponent";
|
|
2
|
-
import { AbstractExtension } from "../AbstractExtension.js";
|
|
3
|
-
import { assetsPath } from "../../../../../Constants.js";
|
|
4
|
-
export class BlockToolbarExtension extends AbstractExtension {
|
|
5
|
-
static template = html `
|
|
6
|
-
<div style="height: 100%; width: 100%;">
|
|
7
|
-
<node-projects-image-button-list-selector>
|
|
8
|
-
<img data-value="block" title="block" src="${assetsPath}images/display/block.svg">
|
|
9
|
-
<img data-value="inline" title="inline" src="${assetsPath}images/display/inline.svg">
|
|
10
|
-
</node-projects-image-button-list-selector>
|
|
11
|
-
<select title="display" id="displayType" style="pointer-events: all; height: 24px; width: 70px; padding: 0; font-weight: 900; text-transform: uppercase; margin-right: 10px;">
|
|
12
|
-
<option selected>block</option>
|
|
13
|
-
<option>flex</option>
|
|
14
|
-
<option>grid</option>
|
|
15
|
-
</select>
|
|
16
|
-
</div>
|
|
17
|
-
`;
|
|
18
|
-
_toolbar;
|
|
19
|
-
constructor(extensionManager, designerView, extendedItem) {
|
|
20
|
-
super(extensionManager, designerView, extendedItem);
|
|
21
|
-
}
|
|
22
|
-
extend(cache, event) {
|
|
23
|
-
this._toolbar = this.createToolbar(BlockToolbarExtension.template, 200, 30);
|
|
24
|
-
const displayTypeEl = this._toolbar.getById('displayType');
|
|
25
|
-
displayTypeEl.onchange = () => {
|
|
26
|
-
this.extendedItem.updateStyleInSheetOrLocal('display', displayTypeEl.value);
|
|
27
|
-
this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
|
|
28
|
-
};
|
|
29
|
-
this.refresh(cache, event);
|
|
30
|
-
}
|
|
31
|
-
refresh(cache, event) {
|
|
32
|
-
if (event) {
|
|
33
|
-
const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
34
|
-
this._toolbar.updatePosition({ x: (pos.x - (16 / this.designerCanvas.zoomFactor)), y: (pos.y - (44 / this.designerCanvas.zoomFactor)) });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
dispose() {
|
|
38
|
-
this._removeAllOverlays();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
|
|
2
|
-
import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
3
|
-
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
4
|
-
import { IDesignerExtension } from './IDesignerExtension.js';
|
|
5
|
-
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
|
-
export declare class ConditionExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
-
constructor(extensionProvider: IDesignerExtensionProvider, condition: (designItem: IDesignItem) => boolean);
|
|
8
|
-
extensionProvider: IDesignerExtensionProvider;
|
|
9
|
-
condition: (designItem: IDesignItem) => boolean;
|
|
10
|
-
style: CSSStyleSheet;
|
|
11
|
-
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
12
|
-
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
13
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export class ConditionExtensionProvider {
|
|
2
|
-
constructor(extensionProvider, condition) {
|
|
3
|
-
this.extensionProvider = extensionProvider;
|
|
4
|
-
this.condition = condition;
|
|
5
|
-
this.style = extensionProvider.style;
|
|
6
|
-
}
|
|
7
|
-
extensionProvider;
|
|
8
|
-
condition;
|
|
9
|
-
style;
|
|
10
|
-
shouldExtend(extensionManager, designerView, designItem) {
|
|
11
|
-
if (!this.condition(designItem))
|
|
12
|
-
return false;
|
|
13
|
-
return this.extensionProvider.shouldExtend(extensionManager, designerView, designItem);
|
|
14
|
-
}
|
|
15
|
-
getExtension(extensionManager, designerView, designItem) {
|
|
16
|
-
return this.extensionProvider.getExtension(extensionManager, designerView, designItem);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
|
-
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
|
-
import { AbstractExtension } from "../AbstractExtension.js";
|
|
4
|
-
import { IExtensionManager } from '../IExtensionManger.js';
|
|
5
|
-
export type handlesPointerEvent = {
|
|
6
|
-
handlesPointerEvent(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): boolean;
|
|
7
|
-
};
|
|
8
|
-
export declare class EditTextExtension extends AbstractExtension implements handlesPointerEvent {
|
|
9
|
-
private static template;
|
|
10
|
-
private _foreignObject;
|
|
11
|
-
private _path;
|
|
12
|
-
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
13
|
-
extend(): void;
|
|
14
|
-
refresh(): void;
|
|
15
|
-
dispose(): void;
|
|
16
|
-
handlesPointerEvent(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): boolean;
|
|
17
|
-
_formatSelection(type: string, value?: string): void;
|
|
18
|
-
}
|