@node-projects/web-component-designer 0.0.100 → 0.0.103
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/services/DefaultServiceBootstrap.js +5 -0
- package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/DefaultPlacementService.js +9 -0
- package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +3 -0
- package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -0
- package/dist/elements/services/placementService/GridPlacementService.js +3 -0
- package/dist/elements/services/placementService/IPlacementService.d.ts +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerCanvas.js +63 -9
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension copy.d.ts +12 -0
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension copy.js +20 -0
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.d.ts +0 -1
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +0 -2
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.js +14 -0
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js +0 -1
- package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +3 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +12 -8
- package/dist/elements/widgets/designerView/extensions/ExtensionType.js +12 -8
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js +18 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js +13 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutDragOverExtension.js +18 -0
- package/dist/elements/widgets/designerView/extensions/GrayOutExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +8 -8
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +5 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.js +52 -40
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +42 -42
|
@@ -63,6 +63,7 @@ import { ZoomToolButtonProvider } from '../widgets/designerView/tools/toolBar/bu
|
|
|
63
63
|
import { DrawToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js';
|
|
64
64
|
import { TextToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js';
|
|
65
65
|
import { SelectorToolButtonProvider } from '../widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js';
|
|
66
|
+
import { GrayOutDragOverContainerExtensionProvider } from '../widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js';
|
|
66
67
|
export function createDefaultServiceContainer() {
|
|
67
68
|
let serviceContainer = new ServiceContainer();
|
|
68
69
|
serviceContainer.register("propertyService", new PolymerPropertiesService());
|
|
@@ -111,8 +112,12 @@ export function createDefaultServiceContainer() {
|
|
|
111
112
|
new GrayOutExtensionProvider()
|
|
112
113
|
]);
|
|
113
114
|
serviceContainer.designerExtensions.set(ExtensionType.ContainerDragOver, [
|
|
115
|
+
new GrayOutDragOverContainerExtensionProvider(),
|
|
114
116
|
new AltToEnterContainerExtensionProvider()
|
|
115
117
|
]);
|
|
118
|
+
serviceContainer.designerExtensions.set(ExtensionType.ContainerExternalDragOver, [
|
|
119
|
+
new GrayOutDragOverContainerExtensionProvider()
|
|
120
|
+
]);
|
|
116
121
|
serviceContainer.designerExtensions.set(ExtensionType.Doubleclick, [
|
|
117
122
|
new EditTextExtensionProvider()
|
|
118
123
|
]);
|
|
@@ -5,6 +5,7 @@ import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
|
|
|
5
5
|
export declare class DefaultPlacementService implements IPlacementService {
|
|
6
6
|
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
7
7
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
8
|
+
canEnterByDrop(container: IDesignItem): boolean;
|
|
8
9
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
9
10
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
10
11
|
private calculateTrack;
|
|
@@ -9,6 +9,15 @@ export class DefaultPlacementService {
|
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
11
|
canEnter(container, items) {
|
|
12
|
+
if (DomConverter.IsSelfClosingElement(container.element.localName))
|
|
13
|
+
return false;
|
|
14
|
+
if (container.element.shadowRoot && container.element.shadowRoot.querySelector('slot') == null)
|
|
15
|
+
return false;
|
|
16
|
+
if (!items.every(x => !x.element.contains(container.element)))
|
|
17
|
+
return false;
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
canEnterByDrop(container) {
|
|
12
21
|
if (DomConverter.IsSelfClosingElement(container.element.localName))
|
|
13
22
|
return false;
|
|
14
23
|
if (container.element.shadowRoot && container.element.shadowRoot.querySelector('slot') == null)
|
|
@@ -7,6 +7,7 @@ export declare class FlexBoxPlacementService implements IPlacementService {
|
|
|
7
7
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
8
8
|
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
9
9
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
10
|
+
canEnterByDrop(container: IDesignItem): boolean;
|
|
10
11
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
11
12
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
12
13
|
placePoint(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint;
|
|
@@ -7,6 +7,7 @@ export declare class GridPlacementService implements IPlacementService {
|
|
|
7
7
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
8
8
|
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
9
9
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
10
|
+
canEnterByDrop(container: IDesignItem): boolean;
|
|
10
11
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
11
12
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
12
13
|
placePoint(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint;
|
|
@@ -4,6 +4,7 @@ import { IPlacementView } from "../../widgets/designerView/IPlacementView";
|
|
|
4
4
|
import { IPoint } from "../../../interfaces/IPoint";
|
|
5
5
|
export interface IPlacementService extends IService {
|
|
6
6
|
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): any;
|
|
7
|
+
canEnterByDrop(container: IDesignItem): any;
|
|
7
8
|
canEnter(container: IDesignItem, items: IDesignItem[]): any;
|
|
8
9
|
canLeave(container: IDesignItem, items: IDesignItem[]): any;
|
|
9
10
|
enterContainer(container: IDesignItem, items: IDesignItem[]): any;
|
|
@@ -77,9 +77,11 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
77
77
|
_updateTransform(): void;
|
|
78
78
|
setDesignItems(designItems: IDesignItem[]): void;
|
|
79
79
|
addDesignItems(designItems: IDesignItem[]): void;
|
|
80
|
+
_dragOverExtensionItem: IDesignItem;
|
|
80
81
|
private _onDragEnter;
|
|
81
82
|
private _onDragLeave;
|
|
82
83
|
private _onDragOver;
|
|
84
|
+
private _getPossibleContainerForDrop;
|
|
83
85
|
private _onDrop;
|
|
84
86
|
showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
|
|
85
87
|
private _onDblClick;
|
|
@@ -422,6 +422,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
422
422
|
}
|
|
423
423
|
this.snapLines.clearSnaplines();
|
|
424
424
|
}
|
|
425
|
+
_dragOverExtensionItem;
|
|
425
426
|
_onDragEnter(event) {
|
|
426
427
|
this._fillCalculationrects();
|
|
427
428
|
event.preventDefault();
|
|
@@ -446,6 +447,10 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
446
447
|
event.dataTransfer.dropEffect = effect;
|
|
447
448
|
}
|
|
448
449
|
}
|
|
450
|
+
if (this._dragOverExtensionItem) {
|
|
451
|
+
this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
|
|
452
|
+
this._dragOverExtensionItem = null;
|
|
453
|
+
}
|
|
449
454
|
}
|
|
450
455
|
_onDragOver(event) {
|
|
451
456
|
event.preventDefault();
|
|
@@ -466,15 +471,57 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
466
471
|
this._canvas.classList.add('dragFileActive');
|
|
467
472
|
}
|
|
468
473
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
474
|
+
else {
|
|
475
|
+
const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
|
|
476
|
+
if (hasTransferDataBindingObject) {
|
|
477
|
+
const ddService = this.serviceContainer.bindableObjectDragDropService;
|
|
478
|
+
if (ddService) {
|
|
479
|
+
const effect = ddService.dragOver(this, event);
|
|
480
|
+
event.dataTransfer.dropEffect = effect;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
let [newContainer] = this._getPossibleContainerForDrop(event);
|
|
485
|
+
if (this._dragOverExtensionItem != newContainer) {
|
|
486
|
+
this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
|
|
487
|
+
this.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver);
|
|
488
|
+
this._dragOverExtensionItem = newContainer;
|
|
489
|
+
}
|
|
475
490
|
}
|
|
476
491
|
}
|
|
477
492
|
}
|
|
493
|
+
_getPossibleContainerForDrop(event) {
|
|
494
|
+
let newContainerElementDesignItem = null;
|
|
495
|
+
let newContainerService = null;
|
|
496
|
+
const elementsFromPoint = this.elementsFromPoint(event.x, event.y);
|
|
497
|
+
for (let e of elementsFromPoint) {
|
|
498
|
+
if (e == this.rootDesignItem.element) {
|
|
499
|
+
newContainerElementDesignItem = this.rootDesignItem;
|
|
500
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
501
|
+
newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
502
|
+
break;
|
|
503
|
+
}
|
|
504
|
+
else if (false) {
|
|
505
|
+
//check we don't try to move a item over one of its children..
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, this.serviceContainer, this.instanceServiceContainer);
|
|
509
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
510
|
+
newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
511
|
+
if (newContainerService) {
|
|
512
|
+
if (newContainerService.canEnterByDrop(newContainerElementDesignItem)) {
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
newContainerElementDesignItem = null;
|
|
517
|
+
newContainerService = null;
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
return [newContainerElementDesignItem, newContainerService];
|
|
524
|
+
}
|
|
478
525
|
async _onDrop(event) {
|
|
479
526
|
event.preventDefault();
|
|
480
527
|
this._canvas.classList.remove('dragFileActive');
|
|
@@ -496,16 +543,23 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
496
543
|
}
|
|
497
544
|
}
|
|
498
545
|
else {
|
|
546
|
+
if (this._dragOverExtensionItem) {
|
|
547
|
+
this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
|
|
548
|
+
this._dragOverExtensionItem = null;
|
|
549
|
+
}
|
|
550
|
+
let [newContainer] = this._getPossibleContainerForDrop(event);
|
|
551
|
+
let pos = this.getNormalizedElementCoordinates(newContainer.element);
|
|
499
552
|
this._fillCalculationrects();
|
|
500
553
|
const position = this.getNormalizedEventCoordinates(event);
|
|
554
|
+
//TODO : we need to use container service for adding to element, so also grid and flexbox work correct
|
|
501
555
|
const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
|
|
502
556
|
const elementDefinition = JSON.parse(transferData);
|
|
503
557
|
const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
|
|
504
558
|
const grp = di.openGroup("Insert");
|
|
505
559
|
di.setStyle('position', 'absolute');
|
|
506
|
-
di.setStyle('left', position.x + 'px');
|
|
507
|
-
di.setStyle('top', position.y + 'px');
|
|
508
|
-
this.instanceServiceContainer.undoService.execute(new InsertAction(
|
|
560
|
+
di.setStyle('left', (position.x - pos.x) + 'px');
|
|
561
|
+
di.setStyle('top', (position.y - pos.y) + 'px');
|
|
562
|
+
this.instanceServiceContainer.undoService.execute(new InsertAction(newContainer, newContainer.childCount, di));
|
|
509
563
|
grp.commit();
|
|
510
564
|
requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
|
|
511
565
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class AltToEnterContainerExtension extends AbstractExtension {
|
|
6
|
+
private _text;
|
|
7
|
+
private _rect;
|
|
8
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
9
|
+
extend(): void;
|
|
10
|
+
refresh(): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
2
|
+
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
|
+
export class AltToEnterContainerExtension extends AbstractExtension {
|
|
4
|
+
_text;
|
|
5
|
+
_rect;
|
|
6
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
7
|
+
super(extensionManager, designerView, extendedItem);
|
|
8
|
+
}
|
|
9
|
+
extend() {
|
|
10
|
+
this.refresh();
|
|
11
|
+
}
|
|
12
|
+
refresh() {
|
|
13
|
+
let itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
14
|
+
this._text = this._drawText("Press ALT to enter container", itemRect.x + 5, itemRect.y + 12, 'svg-text-enter-container', this._text, OverlayLayer.Foregorund);
|
|
15
|
+
this._rect = this._drawRect(itemRect.x, itemRect.y, itemRect.width, itemRect.height, 'svg-rect-enter-container', this._rect, OverlayLayer.Foregorund);
|
|
16
|
+
}
|
|
17
|
+
dispose() {
|
|
18
|
+
this._removeAllOverlays();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -4,7 +4,6 @@ import { AbstractExtension } from "./AbstractExtension";
|
|
|
4
4
|
import { IExtensionManager } from "./IExtensionManger";
|
|
5
5
|
export declare class AltToEnterContainerExtension extends AbstractExtension {
|
|
6
6
|
private _text;
|
|
7
|
-
private _rect;
|
|
8
7
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
9
8
|
extend(): void;
|
|
10
9
|
refresh(): void;
|
|
@@ -2,7 +2,6 @@ import { AbstractExtension } from "./AbstractExtension";
|
|
|
2
2
|
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
3
|
export class AltToEnterContainerExtension extends AbstractExtension {
|
|
4
4
|
_text;
|
|
5
|
-
_rect;
|
|
6
5
|
constructor(extensionManager, designerView, extendedItem) {
|
|
7
6
|
super(extensionManager, designerView, extendedItem);
|
|
8
7
|
}
|
|
@@ -12,7 +11,6 @@ export class AltToEnterContainerExtension extends AbstractExtension {
|
|
|
12
11
|
refresh() {
|
|
13
12
|
let itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
14
13
|
this._text = this._drawText("Press ALT to enter container", itemRect.x + 5, itemRect.y + 12, 'svg-text-enter-container', this._text, OverlayLayer.Foregorund);
|
|
15
|
-
this._rect = this._drawRect(itemRect.x, itemRect.y, itemRect.width, itemRect.height, 'svg-rect-enter-container', this._rect, OverlayLayer.Foregorund);
|
|
16
14
|
}
|
|
17
15
|
dispose() {
|
|
18
16
|
this._removeAllOverlays();
|
package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
4
|
+
import { IDesignerExtension } from "./IDesignerExtension";
|
|
5
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
6
|
+
export declare class AltToEnterContainerExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
+
readonly style: CSSStyleSheet;
|
|
10
|
+
}
|
package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AltToEnterContainerExtension } from './AltToEnterContainerExtension';
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
export class AltToEnterContainerExtensionProvider {
|
|
4
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
8
|
+
return new AltToEnterContainerExtension(extensionManager, designerView, designItem);
|
|
9
|
+
}
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-text-enter-container { stroke: none; fill: black; stroke-width: 1; font-size: 14px; font-weight:800; font-family: monospace; }
|
|
12
|
+
.svg-rect-enter-container { stroke: none; fill: #aa00ff2e; }
|
|
13
|
+
`;
|
|
14
|
+
}
|
package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js
CHANGED
|
@@ -9,6 +9,5 @@ export class AltToEnterContainerExtensionProvider {
|
|
|
9
9
|
}
|
|
10
10
|
style = css `
|
|
11
11
|
.svg-text-enter-container { stroke: none; fill: black; stroke-width: 1; font-size: 14px; font-weight:800; font-family: monospace; }
|
|
12
|
-
.svg-rect-enter-container { stroke: none; fill: #aa00ff2e; }
|
|
13
12
|
`;
|
|
14
13
|
}
|
|
@@ -10,6 +10,9 @@ export class ElementDragTitleExtension extends AbstractExtension {
|
|
|
10
10
|
const boundRect = this.extendedItem.element.getBoundingClientRect();
|
|
11
11
|
this._rect = this._drawRect((boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor, (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 16, 60, 15, 'svg-primary-selection-move', this._rect);
|
|
12
12
|
this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', (boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor, (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 5, 'svg-text-primary', this._text);
|
|
13
|
+
const title = document.createElementNS("http://www.w3.org/2000/svg", "title");
|
|
14
|
+
title.textContent = this.extendedItem.name;
|
|
15
|
+
this._text.appendChild(title);
|
|
13
16
|
this._rect.addEventListener('pointerdown', (e) => this._pointerEvent(e));
|
|
14
17
|
this._rect.addEventListener('pointermove', (e) => this._pointerEvent(e));
|
|
15
18
|
this._rect.addEventListener('pointerup', (e) => this._pointerEvent(e));
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
export declare enum ExtensionType {
|
|
2
2
|
Permanent = 1,
|
|
3
3
|
Selection = 2,
|
|
4
|
-
PrimarySelection =
|
|
5
|
-
PrimarySelectionContainer =
|
|
6
|
-
MouseOver =
|
|
7
|
-
OnlyOneItemSelected =
|
|
8
|
-
MultipleItemsSelected =
|
|
4
|
+
PrimarySelection = 3,
|
|
5
|
+
PrimarySelectionContainer = 4,
|
|
6
|
+
MouseOver = 5,
|
|
7
|
+
OnlyOneItemSelected = 6,
|
|
8
|
+
MultipleItemsSelected = 7,
|
|
9
9
|
/**
|
|
10
10
|
* Extension for the Container wich the dragged element is draged over.
|
|
11
11
|
*/
|
|
12
|
-
ContainerDragOver =
|
|
12
|
+
ContainerDragOver = 8,
|
|
13
|
+
/**
|
|
14
|
+
* Extension for the Container on wich a new element is draged over.
|
|
15
|
+
*/
|
|
16
|
+
ContainerExternalDragOver = 9,
|
|
13
17
|
/**
|
|
14
18
|
* Extension for the Current Container wich the dragged element is contained.
|
|
15
19
|
*/
|
|
16
|
-
ContainerDrag =
|
|
17
|
-
Doubleclick =
|
|
20
|
+
ContainerDrag = 10,
|
|
21
|
+
Doubleclick = 11
|
|
18
22
|
}
|
|
@@ -2,18 +2,22 @@ export var ExtensionType;
|
|
|
2
2
|
(function (ExtensionType) {
|
|
3
3
|
ExtensionType[ExtensionType["Permanent"] = 1] = "Permanent";
|
|
4
4
|
ExtensionType[ExtensionType["Selection"] = 2] = "Selection";
|
|
5
|
-
ExtensionType[ExtensionType["PrimarySelection"] =
|
|
6
|
-
ExtensionType[ExtensionType["PrimarySelectionContainer"] =
|
|
7
|
-
ExtensionType[ExtensionType["MouseOver"] =
|
|
8
|
-
ExtensionType[ExtensionType["OnlyOneItemSelected"] =
|
|
9
|
-
ExtensionType[ExtensionType["MultipleItemsSelected"] =
|
|
5
|
+
ExtensionType[ExtensionType["PrimarySelection"] = 3] = "PrimarySelection";
|
|
6
|
+
ExtensionType[ExtensionType["PrimarySelectionContainer"] = 4] = "PrimarySelectionContainer";
|
|
7
|
+
ExtensionType[ExtensionType["MouseOver"] = 5] = "MouseOver";
|
|
8
|
+
ExtensionType[ExtensionType["OnlyOneItemSelected"] = 6] = "OnlyOneItemSelected";
|
|
9
|
+
ExtensionType[ExtensionType["MultipleItemsSelected"] = 7] = "MultipleItemsSelected";
|
|
10
10
|
/**
|
|
11
11
|
* Extension for the Container wich the dragged element is draged over.
|
|
12
12
|
*/
|
|
13
|
-
ExtensionType[ExtensionType["ContainerDragOver"] =
|
|
13
|
+
ExtensionType[ExtensionType["ContainerDragOver"] = 8] = "ContainerDragOver";
|
|
14
|
+
/**
|
|
15
|
+
* Extension for the Container on wich a new element is draged over.
|
|
16
|
+
*/
|
|
17
|
+
ExtensionType[ExtensionType["ContainerExternalDragOver"] = 9] = "ContainerExternalDragOver";
|
|
14
18
|
/**
|
|
15
19
|
* Extension for the Current Container wich the dragged element is contained.
|
|
16
20
|
*/
|
|
17
|
-
ExtensionType[ExtensionType["ContainerDrag"] =
|
|
18
|
-
ExtensionType[ExtensionType["Doubleclick"] =
|
|
21
|
+
ExtensionType[ExtensionType["ContainerDrag"] = 10] = "ContainerDrag";
|
|
22
|
+
ExtensionType[ExtensionType["Doubleclick"] = 11] = "Doubleclick";
|
|
19
23
|
})(ExtensionType || (ExtensionType = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class GrayOutDragOverContainerExtension extends AbstractExtension {
|
|
6
|
+
private _rect;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
2
|
+
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
|
+
export class GrayOutDragOverContainerExtension extends AbstractExtension {
|
|
4
|
+
_rect;
|
|
5
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
6
|
+
super(extensionManager, designerView, extendedItem);
|
|
7
|
+
}
|
|
8
|
+
extend() {
|
|
9
|
+
this.refresh();
|
|
10
|
+
}
|
|
11
|
+
refresh() {
|
|
12
|
+
let itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
13
|
+
this._rect = this._drawRect(itemRect.x, itemRect.y, itemRect.width, itemRect.height, 'svg-rect-enter-container', this._rect, OverlayLayer.Foregorund);
|
|
14
|
+
}
|
|
15
|
+
dispose() {
|
|
16
|
+
this._removeAllOverlays();
|
|
17
|
+
}
|
|
18
|
+
}
|
package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
4
|
+
import { IDesignerExtension } from "./IDesignerExtension";
|
|
5
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
6
|
+
export declare class GrayOutDragOverContainerExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
+
readonly style: CSSStyleSheet;
|
|
10
|
+
}
|
package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
2
|
+
import { GrayOutDragOverContainerExtension } from "./GrayOutDragOverContainerExtension.js";
|
|
3
|
+
export class GrayOutDragOverContainerExtensionProvider {
|
|
4
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
8
|
+
return new GrayOutDragOverContainerExtension(extensionManager, designerView, designItem);
|
|
9
|
+
}
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-rect-enter-container { stroke: none; fill: #aa00ff2e; }
|
|
12
|
+
`;
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
2
|
+
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
3
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
4
|
+
import { IExtensionManager } from "./IExtensionManger";
|
|
5
|
+
export declare class GrayOutDragOverExtension extends AbstractExtension {
|
|
6
|
+
private _rect;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AbstractExtension } from "./AbstractExtension";
|
|
2
|
+
import { OverlayLayer } from "./OverlayLayer.js";
|
|
3
|
+
export class GrayOutDragOverExtension extends AbstractExtension {
|
|
4
|
+
_rect;
|
|
5
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
6
|
+
super(extensionManager, designerView, extendedItem);
|
|
7
|
+
}
|
|
8
|
+
extend() {
|
|
9
|
+
this.refresh();
|
|
10
|
+
}
|
|
11
|
+
refresh() {
|
|
12
|
+
let itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
13
|
+
this._rect = this._drawRect(itemRect.x, itemRect.y, itemRect.width, itemRect.height, 'svg-rect-enter-container', this._rect, OverlayLayer.Foregorund);
|
|
14
|
+
}
|
|
15
|
+
dispose() {
|
|
16
|
+
this._removeAllOverlays();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -8,6 +8,6 @@ export declare class GrayOutExtension extends AbstractExtension {
|
|
|
8
8
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
9
9
|
extend(): void;
|
|
10
10
|
refresh(): void;
|
|
11
|
-
drawGrayOut(
|
|
11
|
+
drawGrayOut(r: IRect): void;
|
|
12
12
|
dispose(): void;
|
|
13
13
|
}
|
|
@@ -15,15 +15,15 @@ export class GrayOutExtension extends AbstractExtension {
|
|
|
15
15
|
this.overlayLayerView.addOverlay(this._path, OverlayLayer.Background);
|
|
16
16
|
this.overlays.push(this._path);
|
|
17
17
|
}
|
|
18
|
-
let
|
|
19
|
-
this.drawGrayOut(
|
|
18
|
+
let normalizedRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
19
|
+
this.drawGrayOut(normalizedRect);
|
|
20
20
|
}
|
|
21
|
-
drawGrayOut(
|
|
22
|
-
let
|
|
23
|
-
const pathPoints = "M0 0 L0 " +
|
|
24
|
-
"M" + r.x + " 0 L" + r.x + " " + r.y + "L" +
|
|
25
|
-
"M" + r.x + " " + (r.y + r.height) + "L" + r.x + " " +
|
|
26
|
-
"M" + (r.x + r.width) + " " + r.y + "L" + (r.x + r.width) + " " + (r.y + r.height) + "L" +
|
|
21
|
+
drawGrayOut(r) {
|
|
22
|
+
let outsideRect = { width: this.designerCanvas.containerBoundingRect.width / this.designerCanvas.scaleFactor, height: this.designerCanvas.containerBoundingRect.height / this.designerCanvas.scaleFactor };
|
|
23
|
+
const pathPoints = "M0 0 L0 " + outsideRect.height + "L" + r.x + " " + outsideRect.height + "L" + r.x + " 0" + " L0 0" +
|
|
24
|
+
"M" + r.x + " 0 L" + r.x + " " + r.y + "L" + outsideRect.width + " " + r.y + "L" + outsideRect.width + " 0" + "L" + r.x + " 0" +
|
|
25
|
+
"M" + r.x + " " + (r.y + r.height) + "L" + r.x + " " + outsideRect.height + "L" + outsideRect.width + " " + outsideRect.height + "L" + outsideRect.width + " " + (r.y + r.height) + "L" + r.x + " " + (r.y + r.height) +
|
|
26
|
+
"M" + (r.x + r.width) + " " + r.y + "L" + (r.x + r.width) + " " + (r.y + r.height) + "L" + outsideRect.width + " " + (r.y + r.height) + "L" + outsideRect.width + " " + (r.y) + "L" + (r.x + r.width) + " " + r.y;
|
|
27
27
|
this._path.setAttribute("d", pathPoints);
|
|
28
28
|
}
|
|
29
29
|
dispose() {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { IPoint } from "../../../../interfaces/IPoint";
|
|
2
|
+
import { IDesignItem } from "../../../item/IDesignItem";
|
|
3
|
+
import { IPlacementService } from "../../../services/placementService/IPlacementService";
|
|
1
4
|
import { IDesignerCanvas } from "../IDesignerCanvas";
|
|
2
5
|
import { ITool } from "./ITool";
|
|
3
6
|
import { ServiceContainer } from "../../../services/ServiceContainer.js";
|
|
@@ -7,6 +10,7 @@ export declare class PointerTool implements ITool {
|
|
|
7
10
|
private _initialPoint;
|
|
8
11
|
private _actionType?;
|
|
9
12
|
private _actionStartedDesignItem?;
|
|
13
|
+
private _actionStartedDesignItems?;
|
|
10
14
|
private _previousEventName;
|
|
11
15
|
private _dragOverExtensionItem;
|
|
12
16
|
private _dragExtensionItem;
|
|
@@ -20,5 +24,6 @@ export declare class PointerTool implements ITool {
|
|
|
20
24
|
private _resetTool;
|
|
21
25
|
private _pointerActionTypeDrawSelection;
|
|
22
26
|
private _pointerActionTypeDragOrSelect;
|
|
27
|
+
static FindPossibleContainer(designItem: IDesignItem, designItems: IDesignItem[], event: IPoint): [newContainerElementDesignItem: IDesignItem, newContainerService: IPlacementService];
|
|
23
28
|
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
24
29
|
}
|
|
@@ -9,6 +9,7 @@ export class PointerTool {
|
|
|
9
9
|
_initialPoint;
|
|
10
10
|
_actionType;
|
|
11
11
|
_actionStartedDesignItem;
|
|
12
|
+
_actionStartedDesignItems;
|
|
12
13
|
_previousEventName;
|
|
13
14
|
_dragOverExtensionItem;
|
|
14
15
|
_dragExtensionItem;
|
|
@@ -69,6 +70,7 @@ export class PointerTool {
|
|
|
69
70
|
this._initialOffset = designerCanvas.getNormalizedOffsetInElement(event, currentElement);
|
|
70
71
|
if (event.type == EventNames.PointerDown) {
|
|
71
72
|
this._actionStartedDesignItem = currentDesignItem;
|
|
73
|
+
this._actionStartedDesignItems = [...designerCanvas.instanceServiceContainer.selectionService.selectedElements];
|
|
72
74
|
designerCanvas.snapLines.clearSnaplines();
|
|
73
75
|
if (currentDesignItem !== designerCanvas.rootDesignItem) {
|
|
74
76
|
this._actionType = PointerActionType.Drag;
|
|
@@ -106,6 +108,7 @@ export class PointerTool {
|
|
|
106
108
|
_resetTool() {
|
|
107
109
|
this._actionType = null;
|
|
108
110
|
this._actionStartedDesignItem = null;
|
|
111
|
+
this._actionStartedDesignItems = null;
|
|
109
112
|
this._movedSinceStartedAction = false;
|
|
110
113
|
this._initialPoint = null;
|
|
111
114
|
}
|
|
@@ -154,6 +157,7 @@ export class PointerTool {
|
|
|
154
157
|
if (designerCanvas.instanceServiceContainer.selectionService.selectedElements.indexOf(currentDesignItem) < 0)
|
|
155
158
|
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
|
|
156
159
|
}
|
|
160
|
+
this._actionStartedDesignItems = [...designerCanvas.instanceServiceContainer.selectionService.selectedElements];
|
|
157
161
|
if (designerCanvas.alignOnSnap)
|
|
158
162
|
designerCanvas.snapLines.calculateSnaplines(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
159
163
|
break;
|
|
@@ -177,43 +181,11 @@ export class PointerTool {
|
|
|
177
181
|
else {
|
|
178
182
|
designerCanvas.extensionManager.refreshExtension(dragItem, ExtensionType.ContainerDrag);
|
|
179
183
|
}
|
|
180
|
-
const canLeave = currentContainerService.canLeave(this._actionStartedDesignItem.parent,
|
|
184
|
+
const canLeave = currentContainerService.canLeave(this._actionStartedDesignItem.parent, this._actionStartedDesignItems);
|
|
181
185
|
let newContainerElementDesignItem = null;
|
|
182
186
|
let newContainerService = null;
|
|
183
187
|
if (canLeave) {
|
|
184
|
-
|
|
185
|
-
for (let e of elementsFromPoint) {
|
|
186
|
-
if (e == this._actionStartedDesignItem.element) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
else if (e == this._actionStartedDesignItem.parent.element) {
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
else if (e == designerCanvas.rootDesignItem.element) {
|
|
193
|
-
newContainerElementDesignItem = designerCanvas.rootDesignItem;
|
|
194
|
-
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
195
|
-
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
else if (false) {
|
|
199
|
-
//check we don't try to move a item over one of its children..
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
203
|
-
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
204
|
-
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
205
|
-
if (newContainerService) {
|
|
206
|
-
if (newContainerService.canEnter(newContainerElementDesignItem, [this._actionStartedDesignItem])) {
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
newContainerElementDesignItem = null;
|
|
211
|
-
newContainerService = null;
|
|
212
|
-
continue;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
188
|
+
[newContainerElementDesignItem, newContainerService] = PointerTool.FindPossibleContainer(this._actionStartedDesignItem, this._actionStartedDesignItems, event);
|
|
217
189
|
//if we found a new enterable container create extensions
|
|
218
190
|
if (newContainerElementDesignItem != null) {
|
|
219
191
|
if (this._dragOverExtensionItem != newContainerElementDesignItem) {
|
|
@@ -237,17 +209,18 @@ export class PointerTool {
|
|
|
237
209
|
const oldOffset = currentContainerService.getElementOffset(this._actionStartedDesignItem.parent, this._actionStartedDesignItem);
|
|
238
210
|
const newOffset = newContainerService.getElementOffset(newContainerElementDesignItem, this._actionStartedDesignItem);
|
|
239
211
|
this._moveItemsOffset = { x: newOffset.x - oldOffset.x + this._moveItemsOffset.x, y: newOffset.y - oldOffset.y + this._moveItemsOffset.y };
|
|
240
|
-
currentContainerService.leaveContainer(this._actionStartedDesignItem.parent,
|
|
241
|
-
|
|
212
|
+
currentContainerService.leaveContainer(this._actionStartedDesignItem.parent, this._actionStartedDesignItems);
|
|
213
|
+
for (let di of this._actionStartedDesignItems)
|
|
214
|
+
newContainerElementDesignItem._insertChildInternal(di); //todo -> maybe in enter container???
|
|
242
215
|
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
243
|
-
newContainerService.enterContainer(newContainerElementDesignItem,
|
|
244
|
-
newContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp,
|
|
216
|
+
newContainerService.enterContainer(newContainerElementDesignItem, this._actionStartedDesignItems);
|
|
217
|
+
newContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
|
|
245
218
|
}
|
|
246
219
|
else {
|
|
247
220
|
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
248
|
-
currentContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp,
|
|
221
|
+
currentContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
|
|
249
222
|
}
|
|
250
|
-
designerCanvas.extensionManager.refreshExtensions(
|
|
223
|
+
designerCanvas.extensionManager.refreshExtensions(this._actionStartedDesignItems);
|
|
251
224
|
}
|
|
252
225
|
}
|
|
253
226
|
break;
|
|
@@ -279,5 +252,44 @@ export class PointerTool {
|
|
|
279
252
|
}
|
|
280
253
|
}
|
|
281
254
|
}
|
|
255
|
+
static FindPossibleContainer(designItem, designItems, event) {
|
|
256
|
+
let newContainerElementDesignItem = null;
|
|
257
|
+
let newContainerService = null;
|
|
258
|
+
const designerCanvas = designItem.instanceServiceContainer.designerCanvas;
|
|
259
|
+
const elementsFromPoint = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
260
|
+
for (let e of elementsFromPoint) {
|
|
261
|
+
if (e == designItem.element) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
else if (e == designItem.parent.element) {
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
else if (e == designerCanvas.rootDesignItem.element) {
|
|
268
|
+
newContainerElementDesignItem = designerCanvas.rootDesignItem;
|
|
269
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
270
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
else if (false) {
|
|
274
|
+
//check we don't try to move a item over one of its children..
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
278
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
279
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
280
|
+
if (newContainerService) {
|
|
281
|
+
if (newContainerService.canEnter(newContainerElementDesignItem, designItems)) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
newContainerElementDesignItem = null;
|
|
286
|
+
newContainerService = null;
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return [newContainerElementDesignItem, newContainerService];
|
|
293
|
+
}
|
|
282
294
|
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
283
295
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -139,6 +139,8 @@ export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvide
|
|
|
139
139
|
export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
|
|
140
140
|
export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
|
|
141
141
|
export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
|
|
142
|
+
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js";
|
|
143
|
+
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js";
|
|
142
144
|
export * from "./elements/widgets/designerView/extensions/GridExtension.js";
|
|
143
145
|
export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
|
|
144
146
|
export * from "./elements/widgets/designerView/extensions/InvisibleDivExtension.js";
|
package/dist/index.js
CHANGED
|
@@ -99,6 +99,8 @@ export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvide
|
|
|
99
99
|
export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
|
|
100
100
|
export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
|
|
101
101
|
export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
|
|
102
|
+
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js";
|
|
103
|
+
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js";
|
|
102
104
|
export * from "./elements/widgets/designerView/extensions/GridExtension.js";
|
|
103
105
|
export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
|
|
104
106
|
export * from "./elements/widgets/designerView/extensions/InvisibleDivExtension.js";
|
package/package.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
{
|
|
2
|
-
"description": "A UI designer for Polymer apps",
|
|
3
|
-
"name": "@node-projects/web-component-designer",
|
|
4
|
-
"version": "0.0.
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"author": "",
|
|
8
|
-
"license": "MIT",
|
|
9
|
-
"scripts": {
|
|
10
|
-
"tsc": "tsc",
|
|
11
|
-
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
12
|
-
"build": "tsc",
|
|
13
|
-
"prepublishOnly": "npm run build"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@node-projects/base-custom-webcomponent": "^0.9.1",
|
|
17
|
-
"construct-style-sheets-polyfill": "^3.1.0"
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@node-projects/lean-he-esm": "^3.3.0",
|
|
21
|
-
"@node-projects/node-html-parser-esm": "^2.4.1",
|
|
22
|
-
"@papyrs/stylo": "^0.0.
|
|
23
|
-
"@types/codemirror": "^5.60.5",
|
|
24
|
-
"@types/jquery": "^3.5.14",
|
|
25
|
-
"@types/jquery.fancytree": "0.0.7",
|
|
26
|
-
"ace-builds": "^1.
|
|
27
|
-
"codemirror": "^
|
|
28
|
-
"esprima-next": "^5.8.
|
|
29
|
-
"html2canvas": "*",
|
|
30
|
-
"jest": "^28.1.
|
|
31
|
-
"jquery": "^3.6.0",
|
|
32
|
-
"jquery.fancytree": "^2.38.
|
|
33
|
-
"monaco-editor": "^0.33.0",
|
|
34
|
-
"ts-jest": "^28.0.
|
|
35
|
-
"typescript": "^4.7.
|
|
36
|
-
"typescript-lit-html-plugin": "^0.9.0"
|
|
37
|
-
},
|
|
38
|
-
"repository": {
|
|
39
|
-
"type": "git",
|
|
40
|
-
"url": "git+https://github.com/node-projects/web-component-designer.git"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"description": "A UI designer for Polymer apps",
|
|
3
|
+
"name": "@node-projects/web-component-designer",
|
|
4
|
+
"version": "0.0.103",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"author": "",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"tsc": "tsc",
|
|
11
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@node-projects/base-custom-webcomponent": "^0.9.1",
|
|
17
|
+
"construct-style-sheets-polyfill": "^3.1.0"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@node-projects/lean-he-esm": "^3.3.0",
|
|
21
|
+
"@node-projects/node-html-parser-esm": "^2.4.1",
|
|
22
|
+
"@papyrs/stylo": "^0.0.30",
|
|
23
|
+
"@types/codemirror": "^5.60.5",
|
|
24
|
+
"@types/jquery": "^3.5.14",
|
|
25
|
+
"@types/jquery.fancytree": "0.0.7",
|
|
26
|
+
"ace-builds": "^1.7.1",
|
|
27
|
+
"codemirror": "^6.0.1",
|
|
28
|
+
"esprima-next": "^5.8.3",
|
|
29
|
+
"html2canvas": "*",
|
|
30
|
+
"jest": "^28.1.2",
|
|
31
|
+
"jquery": "^3.6.0",
|
|
32
|
+
"jquery.fancytree": "^2.38.2",
|
|
33
|
+
"monaco-editor": "^0.33.0",
|
|
34
|
+
"ts-jest": "^28.0.5",
|
|
35
|
+
"typescript": "^4.7.4",
|
|
36
|
+
"typescript-lit-html-plugin": "^0.9.0"
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "git+https://github.com/node-projects/web-component-designer.git"
|
|
41
|
+
}
|
|
42
|
+
}
|