@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.
@@ -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 {};
@@ -52,4 +52,7 @@ export class ServiceContainer extends BaseServiceContainer {
52
52
  get dragDropService() {
53
53
  return this.getLastService('dragDropService');
54
54
  }
55
+ get copyPasteService() {
56
+ return this.getLastService('copyPasteService');
57
+ }
55
58
  }
@@ -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
+ }
@@ -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
+ }
@@ -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
- const copyText = DomConverter.ConvertToString(this.instanceServiceContainer.selectionService.selectedElements, null);
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 text = await navigator.clipboard.readText();
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
- /*.svg-selection { stroke: #3899ec; fill: transparent; stroke-width: 2; }*/
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) || this._rect.isPointInStroke(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 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
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 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
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 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
66
- if (p1 && p2 && p3 && p4) {
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";
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.34",
4
+ "version": "0.0.35",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",