@node-projects/web-component-designer 0.0.34 → 0.0.35
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 +2 -0
- package/dist/elements/services/ServiceContainer.d.ts +3 -0
- package/dist/elements/services/ServiceContainer.js +3 -0
- package/dist/elements/services/copyPasteService/CopyPasteService.d.ts +8 -0
- package/dist/elements/services/copyPasteService/CopyPasteService.js +12 -0
- package/dist/elements/services/copyPasteService/ICopyPasteService copy.d.ts +0 -0
- package/dist/elements/services/copyPasteService/ICopyPasteService copy.js +1 -0
- package/dist/elements/services/copyPasteService/ICopyPasteService.d.ts +7 -0
- package/dist/elements/services/copyPasteService/ICopyPasteService.js +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +3 -7
- package/dist/elements/widgets/designerView/overlayLayerView.js +1 -2
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +5 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/package.json +1 -1
|
@@ -43,6 +43,7 @@ import { SnaplinesProviderService } from './placementService/SnaplinesProviderSe
|
|
|
43
43
|
import { PrepareElementsForDesignerService } from './instanceService/PrepareElementsForDesignerService';
|
|
44
44
|
import { DragDropService } from './dragDropService/DragDropService';
|
|
45
45
|
import { EditTextExtensionProvider } from '../widgets/designerView/extensions/EditText/EditTextExtensionProvider.js';
|
|
46
|
+
import { CopyPasteService } from './copyPasteService/CopyPasteService';
|
|
46
47
|
export function createDefaultServiceContainer() {
|
|
47
48
|
let serviceContainer = new ServiceContainer();
|
|
48
49
|
serviceContainer.register("propertyService", new PolymerPropertiesService());
|
|
@@ -61,6 +62,7 @@ export function createDefaultServiceContainer() {
|
|
|
61
62
|
serviceContainer.register("elementAtPointService", new ElementAtPointService());
|
|
62
63
|
serviceContainer.register("prepareElementsForDesignerService", new PrepareElementsForDesignerService());
|
|
63
64
|
serviceContainer.register("dragDropService", new DragDropService());
|
|
65
|
+
serviceContainer.register("copyPasteService", new CopyPasteService());
|
|
64
66
|
serviceContainer.designerExtensions.set(ExtensionType.Permanent, [
|
|
65
67
|
new ResizeExtensionProvider(false),
|
|
66
68
|
new InvisibleDivExtensionProvider()
|
|
@@ -20,6 +20,7 @@ import { IElementAtPointService } from './elementAtPointService/IElementAtPointS
|
|
|
20
20
|
import { ISnaplinesProviderService } from "./placementService/ISnaplinesProviderService.js";
|
|
21
21
|
import { IPrepareElementsForDesignerService } from './instanceService/IPrepareElementsForDesignerService';
|
|
22
22
|
import { IDragDropService } from './dragDropService/IDragDropService';
|
|
23
|
+
import { ICopyPasteService } from "./copyPasteService/ICopyPasteService.js";
|
|
23
24
|
interface ServiceNameMap {
|
|
24
25
|
"propertyService": IPropertiesService;
|
|
25
26
|
"containerService": IPlacementService;
|
|
@@ -34,6 +35,7 @@ interface ServiceNameMap {
|
|
|
34
35
|
"elementAtPointService": IElementAtPointService;
|
|
35
36
|
"prepareElementsForDesignerService": IPrepareElementsForDesignerService;
|
|
36
37
|
"dragDropService": IDragDropService;
|
|
38
|
+
"copyPasteService": ICopyPasteService;
|
|
37
39
|
}
|
|
38
40
|
export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMap> {
|
|
39
41
|
readonly config: {
|
|
@@ -57,5 +59,6 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
|
|
|
57
59
|
get elementAtPointService(): IElementAtPointService;
|
|
58
60
|
get prepareElementsForDesignerService(): IPrepareElementsForDesignerService;
|
|
59
61
|
get dragDropService(): IDragDropService;
|
|
62
|
+
get copyPasteService(): ICopyPasteService;
|
|
60
63
|
}
|
|
61
64
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IDesignItem } from "../../item/IDesignItem.js";
|
|
2
|
+
import { ICopyPasteService } from "./ICopyPasteService.js";
|
|
3
|
+
import { ServiceContainer } from '../ServiceContainer';
|
|
4
|
+
import { InstanceServiceContainer } from '../InstanceServiceContainer';
|
|
5
|
+
export declare class CopyPasteService implements ICopyPasteService {
|
|
6
|
+
copyItems(designItems: IDesignItem[]): Promise<void>;
|
|
7
|
+
getPasteItems(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): Promise<IDesignItem[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DomConverter } from "../../widgets/designerView/DomConverter.js";
|
|
2
|
+
export class CopyPasteService {
|
|
3
|
+
async copyItems(designItems) {
|
|
4
|
+
const copyText = DomConverter.ConvertToString(designItems, null);
|
|
5
|
+
await navigator.clipboard.writeText(copyText);
|
|
6
|
+
}
|
|
7
|
+
async getPasteItems(serviceContainer, instanceServiceContainer) {
|
|
8
|
+
const text = await navigator.clipboard.readText();
|
|
9
|
+
const parserService = serviceContainer.htmlParserService;
|
|
10
|
+
return await parserService.parse(text, serviceContainer, instanceServiceContainer);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignItem } from "../../item/IDesignItem.js";
|
|
2
|
+
import { InstanceServiceContainer } from "../InstanceServiceContainer.js";
|
|
3
|
+
import { ServiceContainer } from "../ServiceContainer.js";
|
|
4
|
+
export interface ICopyPasteService {
|
|
5
|
+
copyItems(designItems: IDesignItem[]): Promise<void>;
|
|
6
|
+
getPasteItems(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): Promise<IDesignItem[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -50,7 +50,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
50
50
|
executeCommand(command: IUiCommand): Promise<void>;
|
|
51
51
|
canExecuteCommand(command: IUiCommand): boolean;
|
|
52
52
|
handleSelectAll(): void;
|
|
53
|
-
handleCopyCommand(): void
|
|
53
|
+
handleCopyCommand(): Promise<void>;
|
|
54
54
|
handlePasteCommand(): Promise<void>;
|
|
55
55
|
handleDeleteCommand(): void;
|
|
56
56
|
handleMoveCommand(command: CommandType): void;
|
|
@@ -7,7 +7,6 @@ import { BaseCustomWebComponentLazyAppend, css, html } from '@node-projects/base
|
|
|
7
7
|
import { dragDropFormatName } from '../../../Constants';
|
|
8
8
|
import { ContentService } from '../../services/contentService/ContentService';
|
|
9
9
|
import { InsertAction } from '../../services/undoService/transactionItems/InsertAction';
|
|
10
|
-
import { DomConverter } from './DomConverter';
|
|
11
10
|
import { Snaplines } from './Snaplines';
|
|
12
11
|
import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper';
|
|
13
12
|
import { DeleteAction } from '../../services/undoService/transactionItems/DeleteAction';
|
|
@@ -155,15 +154,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
155
154
|
handleSelectAll() {
|
|
156
155
|
this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
|
|
157
156
|
}
|
|
158
|
-
handleCopyCommand() {
|
|
159
|
-
|
|
160
|
-
navigator.clipboard.writeText(copyText);
|
|
157
|
+
async handleCopyCommand() {
|
|
158
|
+
await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
|
|
161
159
|
}
|
|
162
160
|
async handlePasteCommand() {
|
|
163
|
-
const
|
|
164
|
-
const parserService = this.serviceContainer.htmlParserService;
|
|
161
|
+
const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
|
|
165
162
|
let grp = this.rootDesignItem.openGroup("Insert");
|
|
166
|
-
const designItems = await parserService.parse(text, this.serviceContainer, this.instanceServiceContainer);
|
|
167
163
|
if (designItems) {
|
|
168
164
|
for (let di of designItems) {
|
|
169
165
|
this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
|
|
@@ -66,8 +66,7 @@ OverlayLayerView.style = css `
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
.svg-snapline { stroke: purple; stroke-dasharray: 4; fill: transparent; }
|
|
69
|
-
|
|
70
|
-
.svg-selector { stroke: black; fill: transparent; stroke-width: 1; stroke-dasharray: 2; }
|
|
69
|
+
.svg-selector { stroke: black; fill: #3899ec55; stroke-width: 1; stroke-dasharray: 2; }
|
|
71
70
|
.svg-primary-selection-move { stroke: #3899ec; fill: #3899ec; cursor: move; pointer-events: all }
|
|
72
71
|
.svg-text { stroke: none; fill: white; stroke-width: 1; font-size: 10px; font-family: monospace; }
|
|
73
72
|
.svg-primary-resizer { stroke: #3899ec; fill: white; pointer-events: all }
|
|
@@ -53,17 +53,17 @@ export class RectangleSelectorTool {
|
|
|
53
53
|
let elementRect = e.getBoundingClientRect();
|
|
54
54
|
point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
|
|
55
55
|
point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
|
|
56
|
-
const p1 = this._rect.isPointInFill(point)
|
|
56
|
+
const p1 = this._rect.isPointInFill(point);
|
|
57
57
|
point.x = elementRect.left - designerCanvas.containerBoundingRect.left + elementRect.width;
|
|
58
58
|
point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
|
|
59
|
-
const p2 =
|
|
59
|
+
const p2 = p1 && this._rect.isPointInFill(point);
|
|
60
60
|
point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
|
|
61
61
|
point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
|
|
62
|
-
const p3 =
|
|
62
|
+
const p3 = p2 && this._rect.isPointInFill(point);
|
|
63
63
|
point.x = elementRect.left - designerCanvas.containerBoundingRect.left + elementRect.width;
|
|
64
64
|
point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
|
|
65
|
-
const p4 =
|
|
66
|
-
if (
|
|
65
|
+
const p4 = p3 && this._rect.isPointInFill(point);
|
|
66
|
+
if (p4) {
|
|
67
67
|
const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
68
68
|
inSelectionElements.push(desItem);
|
|
69
69
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export type { IElementAtPointService } from "./elements/services/elementAtPointS
|
|
|
30
30
|
export * from "./elements/services/contentService/ContentService.js";
|
|
31
31
|
export type { IContentChanged } from "./elements/services/contentService/IContentChanged.js";
|
|
32
32
|
export type { IContentService } from "./elements/services/contentService/IContentService.js";
|
|
33
|
+
export * from "./elements/services/copyPasteService/CopyPasteService.js";
|
|
34
|
+
export type { ICopyPasteService } from "./elements/services/copyPasteService/ICopyPasteService.js";
|
|
33
35
|
export * from "./elements/services/dragDropService/DragDropService.js";
|
|
34
36
|
export type { IDragDropService } from "./elements/services/dragDropService/IDragDropService.js";
|
|
35
37
|
export type { IElementDefinition } from "./elements/services/elementsService/IElementDefinition.js";
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from "./elements/services/placementService/GridPlacementService.js";
|
|
|
20
20
|
export * from "./elements/services/placementService/SnaplinesProviderService.js";
|
|
21
21
|
export * from "./elements/services/elementAtPointService/ElementAtPointService.js";
|
|
22
22
|
export * from "./elements/services/contentService/ContentService.js";
|
|
23
|
+
export * from "./elements/services/copyPasteService/CopyPasteService.js";
|
|
23
24
|
export * from "./elements/services/dragDropService/DragDropService.js";
|
|
24
25
|
export * from "./elements/services/elementsService/JsonFileElementsService.js";
|
|
25
26
|
export * from "./elements/services/htmlWriterService/HtmlWriterService.js";
|