@node-projects/web-component-designer 0.0.71 → 0.0.75

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.
Files changed (46) hide show
  1. package/dist/elements/helper/CssCombiner.js +1 -0
  2. package/dist/elements/item/DesignItem.d.ts +5 -1
  3. package/dist/elements/item/DesignItem.js +56 -29
  4. package/dist/elements/item/IDesignItem.d.ts +4 -0
  5. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +2 -0
  6. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +3 -0
  7. package/dist/elements/services/bindingsService/IBindingService.d.ts +2 -0
  8. package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +2 -0
  9. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +3 -0
  10. package/dist/elements/services/elementsService/IElementDefinition.d.ts +2 -0
  11. package/dist/elements/services/elementsService/IElementsJson.d.ts +1 -0
  12. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +1 -1
  13. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +12 -8
  14. package/dist/elements/services/placementService/SnaplinesProviderService.d.ts +2 -0
  15. package/dist/elements/services/placementService/SnaplinesProviderService.js +10 -0
  16. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +2 -0
  17. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +2 -0
  18. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +4 -0
  19. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +2 -0
  20. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +6 -0
  21. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +2 -0
  22. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +6 -0
  23. package/dist/elements/services/propertiesService/services/PropertiesHelper.js +1 -1
  24. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +2 -0
  25. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.js +7 -0
  26. package/dist/elements/services/undoService/transactionItems/DeleteAction.d.ts +1 -3
  27. package/dist/elements/services/undoService/transactionItems/DeleteAction.js +2 -5
  28. package/dist/elements/services/undoService/transactionItems/InsertAction.js +1 -1
  29. package/dist/elements/services/undoService/transactionItems/InsertChildAction.d.ts +16 -0
  30. package/dist/elements/services/undoService/transactionItems/InsertChildAction.js +31 -0
  31. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +2 -3
  32. package/dist/elements/widgets/codeView/code-view-code-mirror.js +6 -7
  33. package/dist/elements/widgets/codeView/code-view-monaco.js +6 -4
  34. package/dist/elements/widgets/designerView/designerCanvas.js +2 -2
  35. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -1
  36. package/dist/elements/widgets/paletteView/paletteTreeView.js +2 -3
  37. package/dist/elements/widgets/treeView/treeViewExtended.js +2 -8
  38. package/dist/index.d.ts +4 -1
  39. package/dist/index.js +3 -1
  40. package/dist/interfaces/ICommandHandler.d.ts +5 -0
  41. package/dist/interfaces/ICommandHandler.js +1 -0
  42. package/package.json +1 -1
  43. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.d.ts +0 -16
  44. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.js +0 -31
  45. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.d.ts +0 -7
  46. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.js +0 -13
@@ -1,6 +1,7 @@
1
1
  export class CssCombiner {
2
2
  static _helperElement = document.createElement('div');
3
3
  //todo: inset, flex flow, place content...
4
+ //flex => flex-grow, flex-shrink, flex-basis
4
5
  static combine(styles, globalStyles) {
5
6
  let e = CssCombiner._helperElement;
6
7
  e.setAttribute('style', '');
@@ -24,12 +24,14 @@ export declare class DesignItem implements IDesignItem {
24
24
  get id(): string;
25
25
  set id(value: string);
26
26
  get isRootItem(): boolean;
27
- private _childArray;
27
+ _childArray: IDesignItem[];
28
28
  get hasChildren(): boolean;
29
29
  children(): IterableIterator<IDesignItem>;
30
30
  get childCount(): number;
31
31
  get firstChild(): IDesignItem;
32
32
  get parent(): IDesignItem;
33
+ indexOf(designItem: IDesignItem): number;
34
+ insertAdjacentElement(designItem: IDesignItem, where: InsertPosition): void;
33
35
  insertChild(designItem: IDesignItem, index?: number): void;
34
36
  removeChild(designItem: IDesignItem): void;
35
37
  remove(): void;
@@ -57,4 +59,6 @@ export declare class DesignItem implements IDesignItem {
57
59
  removeStyle(name: string): void;
58
60
  setAttribute(name: string, value?: string | null): void;
59
61
  removeAttribute(name: string): void;
62
+ _insertChildInternal(designItem: IDesignItem, index?: number): void;
63
+ _removeChildInternal(designItem: IDesignItem): void;
60
64
  }
@@ -2,9 +2,10 @@ import { CssStyleChangeAction } from '../services/undoService/transactionItems/C
2
2
  import { NodeType } from './NodeType';
3
3
  import { AttributeChangeAction } from '../services/undoService/transactionItems/AttributeChangeAction';
4
4
  import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType';
5
- import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
6
5
  import { CssAttributeParser } from '../helper/CssAttributeParser.js';
7
6
  import { PropertiesHelper } from '../services/propertiesService/services/PropertiesHelper.js';
7
+ import { InsertChildAction } from '../services/undoService/transactionItems/InsertChildAction';
8
+ import { DeleteAction } from '../..';
8
9
  const hideAtDesignTimeAttributeName = 'node-projects-hide-at-design-time';
9
10
  const hideAtRunTimeAttributeName = 'node-projects-hide-at-run-time';
10
11
  const lockAtDesignTimeAttributeName = 'node-projects-lock-at-design-time';
@@ -69,44 +70,41 @@ export class DesignItem {
69
70
  get parent() {
70
71
  return this.getOrCreateDesignItem(this.element.parentNode);
71
72
  }
72
- insertChild(designItem, index) {
73
- //todo... via undoredo system....
74
- if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
75
- designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
76
- if (designItem.parent) {
77
- designItem.parent.removeChild(designItem);
73
+ indexOf(designItem) {
74
+ return this._childArray.indexOf(designItem);
75
+ }
76
+ insertAdjacentElement(designItem, where) {
77
+ if (where == 'afterbegin') {
78
+ this._insertChildInternal(designItem, 0);
78
79
  }
79
- this.removeChild(designItem);
80
- if (index == null || this._childArray.length == 0 || index >= this._childArray.length) {
81
- this._childArray.push(designItem);
82
- this.element.appendChild(designItem.node);
80
+ else if (where == 'beforeend') {
81
+ this._insertChildInternal(designItem);
83
82
  }
84
- else {
85
- let el = this._childArray[index];
86
- this.node.insertBefore(designItem.node, el.element);
87
- this._childArray.splice(index, 0, designItem);
83
+ else if (where == 'beforebegin') {
84
+ this.parent._insertChildInternal(designItem, this.parent.indexOf(this));
85
+ }
86
+ else if (where == 'afterend') {
87
+ this.parent._insertChildInternal(designItem, this.parent.indexOf(this) + 1);
88
88
  }
89
- if (this.instanceServiceContainer.selectionService.primarySelection == designItem)
90
- designItem.instanceServiceContainer.designerCanvas.extensionManager.applyExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
89
+ }
90
+ insertChild(designItem, index) {
91
+ const action = new InsertChildAction(designItem, this, index);
92
+ this.instanceServiceContainer.undoService.execute(action);
91
93
  }
92
94
  removeChild(designItem) {
93
- //todo... via undoredo system....
94
- if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
95
- designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
96
- const index = this._childArray.indexOf(designItem);
97
- if (index > -1) {
98
- this._childArray.splice(index, 1);
99
- designItem.element.remove();
100
- }
95
+ const action = new DeleteAction([designItem]);
96
+ this.instanceServiceContainer.undoService.execute(action);
101
97
  }
102
98
  remove() {
103
- this.parent.removeChild(this);
99
+ this.parent._removeChildInternal(this);
104
100
  }
105
101
  clearChildren() {
106
- this._childArray = [];
107
- DomHelper.removeAllChildnodes(this.element);
102
+ for (let i = this._childArray.length - 1; i >= 0; i--) {
103
+ let di = this._childArray[i];
104
+ di.remove();
105
+ }
108
106
  }
109
- //abstract text content to own property. so only chnage via designer api will use it.
107
+ //abstract text content to own property. so only change via designer api will use it.
110
108
  get hasContent() {
111
109
  return this.nodeType == NodeType.TextNode || (this._childArray.length === 0 && this.content !== null);
112
110
  }
@@ -259,4 +257,33 @@ export class DesignItem {
259
257
  const action = new AttributeChangeAction(this, name, null, this.attributes.get(name));
260
258
  this.instanceServiceContainer.undoService.execute(action);
261
259
  }
260
+ // Internal implementations wich don't use undo/redo
261
+ _insertChildInternal(designItem, index) {
262
+ if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
263
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
264
+ if (designItem.parent) {
265
+ designItem.parent._removeChildInternal(designItem);
266
+ }
267
+ if (index == null || this._childArray.length == 0 || index >= this._childArray.length) {
268
+ this._childArray.push(designItem);
269
+ this.element.appendChild(designItem.node);
270
+ }
271
+ else {
272
+ let el = this._childArray[index];
273
+ this.node.insertBefore(designItem.node, el.element);
274
+ this._childArray.splice(index, 0, designItem);
275
+ }
276
+ if (this.instanceServiceContainer.selectionService.primarySelection == designItem)
277
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.applyExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
278
+ }
279
+ _removeChildInternal(designItem) {
280
+ if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
281
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
282
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([designItem]);
283
+ const index = this._childArray.indexOf(designItem);
284
+ if (index > -1) {
285
+ this._childArray.splice(index, 1);
286
+ designItem.element.remove();
287
+ }
288
+ }
262
289
  }
@@ -21,6 +21,10 @@ export interface IDesignItem {
21
21
  readonly childCount: number;
22
22
  readonly firstChild: IDesignItem;
23
23
  readonly parent: IDesignItem;
24
+ _insertChildInternal(designItem: IDesignItem, index?: number): any;
25
+ _removeChildInternal(designItem: IDesignItem): any;
26
+ indexOf(designItem: IDesignItem): number;
27
+ insertAdjacentElement(designItem: IDesignItem, where: InsertPosition): any;
24
28
  insertChild(designItem: IDesignItem, index?: number): any;
25
29
  removeChild(designItem: IDesignItem): any;
26
30
  remove(): any;
@@ -1,8 +1,10 @@
1
1
  import { IDesignItem } from "../../item/IDesignItem";
2
2
  import { IBinding } from '../../item/IBinding';
3
3
  import { IBindingService } from "./IBindingService";
4
+ import { BindingTarget } from "../../item/BindingTarget.js";
4
5
  export declare class BaseCustomWebcomponentBindingsService implements IBindingService {
5
6
  static type: string;
6
7
  getBindings(designItem: IDesignItem): IBinding[];
7
8
  setBinding(designItem: IDesignItem, binding: IBinding): boolean;
9
+ clearBinding(designItem: IDesignItem, propertyName: string, propertyTarget: BindingTarget): boolean;
8
10
  }
@@ -66,4 +66,7 @@ export class BaseCustomWebcomponentBindingsService {
66
66
  designItem.setAttribute(nm, value);
67
67
  return true;
68
68
  }
69
+ clearBinding(designItem, propertyName, propertyTarget) {
70
+ return true;
71
+ }
69
72
  }
@@ -1,5 +1,6 @@
1
1
  import { IDesignItem } from "../../item/IDesignItem";
2
2
  import { IBinding } from "../../item/IBinding";
3
+ import { BindingTarget } from "../../item/BindingTarget";
3
4
  /**
4
5
  * Can be used to parse bindings wich are done via special HTML Attributes or special Elements
5
6
  * If your Bindings are to special, or HTML is not valid with them, maybe you need to parse the Bindings already in the
@@ -8,4 +9,5 @@ import { IBinding } from "../../item/IBinding";
8
9
  export interface IBindingService {
9
10
  getBindings(designItem: IDesignItem): IBinding[];
10
11
  setBinding(designItem: IDesignItem, binding: IBinding): boolean;
12
+ clearBinding(designItem: IDesignItem, propertyName: string, propertyTarget: BindingTarget): boolean;
11
13
  }
@@ -1,6 +1,7 @@
1
1
  import { IDesignItem } from "../../item/IDesignItem";
2
2
  import { IBinding } from "../../item/IBinding";
3
3
  import { IBindingService } from "./IBindingService";
4
+ import { BindingTarget } from "../../item/BindingTarget.js";
4
5
  export declare class SpecialTagsBindingService implements IBindingService {
5
6
  static type: string;
6
7
  _bindingTagName: string;
@@ -11,4 +12,5 @@ export declare class SpecialTagsBindingService implements IBindingService {
11
12
  getBindings(designItem: IDesignItem): IBinding[];
12
13
  private _parseBindingElement;
13
14
  setBinding(designItem: IDesignItem, binding: IBinding): boolean;
15
+ clearBinding(designItem: IDesignItem, propertyName: string, propertyTarget: BindingTarget): boolean;
14
16
  }
@@ -37,4 +37,7 @@ export class SpecialTagsBindingService {
37
37
  setBinding(designItem, binding) {
38
38
  return true;
39
39
  }
40
+ clearBinding(designItem, propertyName, propertyTarget) {
41
+ return true;
42
+ }
40
43
  }
@@ -1,3 +1,4 @@
1
+ import { IBinding } from "../../item/IBinding";
1
2
  export interface IElementDefinition {
2
3
  tag: string;
3
4
  name?: string;
@@ -28,4 +29,5 @@ export interface IElementDefinition {
28
29
  * If none, the DrawElementTool is used
29
30
  */
30
31
  tool?: string;
32
+ defaultBinding?: IBinding;
31
33
  }
@@ -1,4 +1,5 @@
1
1
  import { IElementDefinition } from './IElementDefinition';
2
2
  export interface IElementsJson {
3
+ "imports"?: string[];
3
4
  "elements": (string | IElementDefinition)[];
4
5
  }
@@ -70,7 +70,7 @@ export class NodeHtmlParserService {
70
70
  element.draggable = false; //even if it should be true, for better designer exp.
71
71
  for (let c of item.childNodes) {
72
72
  let di = this._createDesignItemsRecursive(c, serviceContainer, instanceServiceContainer, element instanceof SVGElement ? 'http://www.w3.org/2000/svg' : null);
73
- designItem.insertChild(di);
73
+ designItem._insertChildInternal(di);
74
74
  }
75
75
  }
76
76
  else if (item.nodeType == 3) {
@@ -1,6 +1,4 @@
1
1
  import { CommandType } from "../../../commandHandling/CommandType.js";
2
- import { DesignItem } from "../../item/DesignItem.js";
3
- import { MoveElementInDomAction } from "../undoService/transactionItems/MoveElementInDomAction.js";
4
2
  export class DefaultModelCommandService {
5
3
  canExecuteCommand(designerCanvas, command) {
6
4
  if (command.type == CommandType.moveBackward ||
@@ -21,14 +19,20 @@ export class DefaultModelCommandService {
21
19
  }
22
20
  async executeCommand(designerCanvas, command) {
23
21
  let sel = designerCanvas.instanceServiceContainer.selectionService.primarySelection;
24
- if (command.type == CommandType.moveBackward)
25
- designerCanvas.instanceServiceContainer.undoService.execute(new MoveElementInDomAction(sel, DesignItem.GetDesignItem(sel.element.previousElementSibling), 'beforebegin', DesignItem.GetDesignItem(sel.element.previousElementSibling), 'afterend'));
26
- else if (command.type == CommandType.moveForward)
27
- designerCanvas.instanceServiceContainer.undoService.execute(new MoveElementInDomAction(sel, DesignItem.GetDesignItem(sel.element.nextElementSibling), 'afterend', DesignItem.GetDesignItem(sel.element.nextElementSibling), 'beforebegin'));
22
+ if (command.type == CommandType.moveBackward) {
23
+ let idx = sel.parent.indexOf(sel) - 1;
24
+ if (idx >= 0)
25
+ sel.parent.insertChild(sel, idx);
26
+ }
27
+ else if (command.type == CommandType.moveForward) {
28
+ let idx = sel.parent.indexOf(sel) + 1;
29
+ if (idx < sel.parent.childCount)
30
+ sel.parent.insertChild(sel, idx);
31
+ }
28
32
  else if (command.type == CommandType.moveToBack)
29
- designerCanvas.instanceServiceContainer.undoService.execute(new MoveElementInDomAction(sel, DesignItem.GetDesignItem(sel.element.parentElement), 'afterbegin', DesignItem.GetDesignItem(sel.element.previousElementSibling), 'afterend'));
33
+ sel.parent.insertChild(sel, 0);
30
34
  else if (command.type == CommandType.moveToFront)
31
- designerCanvas.instanceServiceContainer.undoService.execute(new MoveElementInDomAction(sel, DesignItem.GetDesignItem(sel.element.parentElement), 'beforeend', DesignItem.GetDesignItem(sel.element.nextElementSibling), 'beforebegin'));
35
+ sel.parent.insertChild(sel);
32
36
  else if (command.type == CommandType.arrangeLeft) {
33
37
  const grp = designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup('arrangeLeft');
34
38
  const left = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('left');
@@ -1,6 +1,8 @@
1
1
  import { IRect } from '../../../interfaces/IRect.js';
2
2
  import type { IDesignItem } from '../../item/IDesignItem.js';
3
3
  import { ISnaplinesProviderService } from './ISnaplinesProviderService.js';
4
+ export declare const provideSnaplinesWithDistance = "provideSnaplinesWithDistance";
5
+ export declare const provideSnaplinesWithDistanceDistance = "provideSnaplinesWithDistanceDistance";
4
6
  export declare class SnaplinesProviderService implements ISnaplinesProviderService {
5
7
  provideSnaplines(containerItem: IDesignItem, ignoredItems: IDesignItem[]): {
6
8
  outerRect: DOMRect;
@@ -1,10 +1,14 @@
1
1
  import { DomHelper } from '@node-projects/base-custom-webcomponent';
2
+ export const provideSnaplinesWithDistance = 'provideSnaplinesWithDistance';
3
+ export const provideSnaplinesWithDistanceDistance = 'provideSnaplinesWithDistanceDistance';
2
4
  export class SnaplinesProviderService {
3
5
  provideSnaplines(containerItem, ignoredItems) {
4
6
  {
5
7
  const canvas = containerItem.instanceServiceContainer.designerCanvas;
6
8
  const ignMap = new Map(ignoredItems.map(i => [i.element, i]));
7
9
  const outerRect = containerItem.element.getBoundingClientRect();
10
+ const provideWithDist = canvas.instanceServiceContainer.designContext.extensionOptions[provideSnaplinesWithDistance] !== false;
11
+ const provideWithDistDist = canvas.instanceServiceContainer.designContext.extensionOptions[provideSnaplinesWithDistanceDistance] ?? 5;
8
12
  const positionsH = [];
9
13
  const positionsMiddleH = [];
10
14
  const positionsV = [];
@@ -20,16 +24,22 @@ export class SnaplinesProviderService {
20
24
  const pMidV = (p.y - outerRect.y + p.height / 2) / canvas.scaleFactor;
21
25
  const pBottom = (p.y - outerRect.y + p.height) / canvas.scaleFactor;
22
26
  const transformedP = { x: pLeft + outerRect.x, y: pTop + outerRect.y, width: p.width / canvas.scaleFactor, height: p.height / canvas.scaleFactor };
27
+ if (provideWithDist)
28
+ positionsH.push([pLeft - provideWithDistDist, transformedP]);
23
29
  positionsH.push([pLeft, transformedP]);
24
30
  positionsMiddleH.push([pMidH, transformedP]);
25
31
  positionsH.push([pRight, transformedP]);
32
+ if (provideWithDist)
33
+ positionsH.push([pRight + provideWithDistDist, transformedP]);
26
34
  positionsV.push([pTop, transformedP]);
27
35
  positionsMiddleV.push([pMidV, transformedP]);
28
36
  positionsV.push([pBottom, transformedP]);
29
37
  }
30
38
  }
39
+ positionsH.push([0, { x: 0, y: 0, width: 0, height: 0 }]);
31
40
  positionsH.sort((a, b) => a[0] - b[0]);
32
41
  positionsMiddleH.sort((a, b) => a[0] - b[0]);
42
+ positionsV.push([0, { x: 0, y: 0, width: 0, height: 0 }]);
33
43
  positionsV.sort((a, b) => a[0] - b[0]);
34
44
  positionsMiddleV.sort((a, b) => a[0] - b[0]);
35
45
  return { outerRect, positionsH, positionsMiddleH, positionsV, positionsMiddleV };
@@ -2,11 +2,13 @@ import { IProperty } from './IProperty';
2
2
  import { IService } from '../IService';
3
3
  import { IDesignItem } from '../../item/IDesignItem';
4
4
  import { ValueType } from './ValueType';
5
+ import { BindingTarget } from '../../item/BindingTarget';
5
6
  export interface IPropertiesService extends IService {
6
7
  readonly name: string;
7
8
  isHandledElement(designItem: IDesignItem): boolean;
8
9
  getProperties(designItem: IDesignItem): IProperty[];
9
10
  getProperty(designItem: IDesignItem, name: string): IProperty;
11
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
10
12
  setValue(designItems: IDesignItem[], property: IProperty, value: any): any;
11
13
  clearValue(designItems: IDesignItem[], property: IProperty): any;
12
14
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
@@ -2,12 +2,14 @@ import { IPropertiesService } from "../IPropertiesService";
2
2
  import { IProperty } from '../IProperty';
3
3
  import { IDesignItem } from '../../../item/IDesignItem';
4
4
  import { ValueType } from "../ValueType";
5
+ import { BindingTarget } from "../../../item/BindingTarget";
5
6
  export declare class AttributesPropertiesService implements IPropertiesService {
6
7
  name: string;
7
8
  isHandledElement(designItem: IDesignItem): boolean;
8
9
  getProperty(designItem: IDesignItem, name: string): IProperty;
9
10
  getProperties(designItem: IDesignItem): IProperty[];
10
11
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
12
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
11
13
  clearValue(designItems: IDesignItem[], property: IProperty): void;
12
14
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
13
15
  getValue(designItems: IDesignItem[], property: IProperty): string;
@@ -1,4 +1,5 @@
1
1
  import { ValueType } from "../ValueType";
2
+ import { BindingTarget } from "../../../item/BindingTarget";
2
3
  export class AttributesPropertiesService {
3
4
  name = "attributes";
4
5
  isHandledElement(designItem) {
@@ -19,6 +20,9 @@ export class AttributesPropertiesService {
19
20
  }
20
21
  setValue(designItems, property, value) {
21
22
  }
23
+ getPropertyTarget(designItem, property) {
24
+ return BindingTarget.attribute;
25
+ }
22
26
  clearValue(designItems, property) {
23
27
  }
24
28
  isSet(designItems, property) {
@@ -2,6 +2,7 @@ import { IPropertiesService } from "../IPropertiesService";
2
2
  import { IProperty } from '../IProperty';
3
3
  import { IDesignItem } from '../../../item/IDesignItem';
4
4
  import { ValueType } from "../ValueType";
5
+ import { BindingTarget } from "../../../item/BindingTarget";
5
6
  export declare class CommonPropertiesService implements IPropertiesService {
6
7
  private commonProperties;
7
8
  name: string;
@@ -9,6 +10,7 @@ export declare class CommonPropertiesService implements IPropertiesService {
9
10
  getProperty(designItem: IDesignItem, name: string): IProperty;
10
11
  getProperties(designItem: IDesignItem): IProperty[];
11
12
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
13
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
12
14
  clearValue(designItems: IDesignItem[], property: IProperty): void;
13
15
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
14
16
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
@@ -47,10 +47,16 @@ export class CommonPropertiesService {
47
47
  }
48
48
  }
49
49
  }
50
+ getPropertyTarget(designItem, property) {
51
+ return BindingTarget.property;
52
+ }
50
53
  clearValue(designItems, property) {
51
54
  for (let d of designItems) {
52
55
  d.attributes.delete(property.name);
53
56
  d.element.removeAttribute(property.name);
57
+ d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
58
+ return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
59
+ });
54
60
  }
55
61
  }
56
62
  isSet(designItems, property) {
@@ -2,6 +2,7 @@ import { IPropertiesService } from '../IPropertiesService';
2
2
  import { IProperty } from '../IProperty';
3
3
  import { IDesignItem } from '../../../item/IDesignItem';
4
4
  import { ValueType } from '../ValueType';
5
+ import { BindingTarget } from '../../../item/BindingTarget.js';
5
6
  export declare class CssPropertiesService implements IPropertiesService {
6
7
  private styles;
7
8
  private alignment;
@@ -13,6 +14,7 @@ export declare class CssPropertiesService implements IPropertiesService {
13
14
  getProperty(designItem: IDesignItem, name: string): IProperty;
14
15
  getProperties(designItem: IDesignItem): IProperty[];
15
16
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
17
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
16
18
  clearValue(designItems: IDesignItem[], property: IProperty): void;
17
19
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
18
20
  getValue(designItems: IDesignItem[], property: IProperty): string;
@@ -226,10 +226,16 @@ export class CssPropertiesService {
226
226
  }
227
227
  cg.commit();
228
228
  }
229
+ getPropertyTarget(designItem, property) {
230
+ return BindingTarget.css;
231
+ }
229
232
  clearValue(designItems, property) {
230
233
  for (let d of designItems) {
231
234
  d.styles.delete(property.name);
232
235
  d.element.style[property.name] = '';
236
+ d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
237
+ return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
238
+ });
233
239
  }
234
240
  }
235
241
  isSet(designItems, property) {
@@ -22,6 +22,6 @@ export class PropertiesHelper {
22
22
  return text.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
23
23
  }
24
24
  static dashToCamelCase(text) {
25
- return text.replace(/-([a-z])/i, (i) => i[1].toUpperCase());
25
+ return text.replace(/-([a-z])/g, (i) => i[1].toUpperCase());
26
26
  }
27
27
  }
@@ -2,6 +2,7 @@ import { IPropertiesService } from "../IPropertiesService";
2
2
  import { IProperty } from '../IProperty';
3
3
  import { IDesignItem } from '../../../item/IDesignItem';
4
4
  import { ValueType } from "../ValueType";
5
+ import { BindingTarget } from "../../../item/BindingTarget";
5
6
  export declare class UnkownElementPropertiesService implements IPropertiesService {
6
7
  readonly name: string;
7
8
  isHandledElement(designItem: IDesignItem): boolean;
@@ -9,6 +10,7 @@ export declare class UnkownElementPropertiesService implements IPropertiesServic
9
10
  getProperty(designItem: IDesignItem, name: string): IProperty;
10
11
  getProperties(designItem: IDesignItem): IProperty[];
11
12
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
13
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
12
14
  clearValue(designItems: IDesignItem[], property: IProperty): void;
13
15
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
14
16
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
@@ -1,5 +1,6 @@
1
1
  import { ValueType } from "../ValueType";
2
2
  import { PropertiesHelper } from './PropertiesHelper';
3
+ import { BindingTarget } from "../../../item/BindingTarget";
3
4
  export class UnkownElementPropertiesService {
4
5
  name = "unkown";
5
6
  isHandledElement(designItem) {
@@ -44,11 +45,17 @@ export class UnkownElementPropertiesService {
44
45
  cg.undo();
45
46
  }
46
47
  }
48
+ getPropertyTarget(designItem, property) {
49
+ return BindingTarget.property;
50
+ }
47
51
  clearValue(designItems, property) {
48
52
  const attributeName = PropertiesHelper.camelToDashCase(property.name);
49
53
  for (let d of designItems) {
50
54
  d.attributes.delete(attributeName);
51
55
  d.element.removeAttribute(attributeName);
56
+ d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
57
+ return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
58
+ });
52
59
  this._notifyChangedProperty(d, property, undefined);
53
60
  }
54
61
  }
@@ -1,14 +1,12 @@
1
1
  import { ITransactionItem } from '../ITransactionItem';
2
2
  import { IDesignItem } from '../../../item/IDesignItem';
3
- import { IExtensionManager } from '../../../widgets/designerView/extensions/IExtensionManger';
4
3
  export declare class DeleteAction implements ITransactionItem {
5
- constructor(deletedItems: IDesignItem[], extensionManager: IExtensionManager);
4
+ constructor(deletedItems: IDesignItem[]);
6
5
  title?: string;
7
6
  get affectedItems(): IDesignItem[];
8
7
  undo(): void;
9
8
  do(): void;
10
9
  deletedItems: IDesignItem[];
11
- extensionManager: IExtensionManager;
12
10
  private _parentItems;
13
11
  private _parentIndexes;
14
12
  mergeWith(other: ITransactionItem): boolean;
@@ -1,9 +1,8 @@
1
1
  import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
2
2
  export class DeleteAction {
3
- constructor(deletedItems, extensionManager) {
3
+ constructor(deletedItems) {
4
4
  this.title = "Delete Items";
5
5
  this.deletedItems = deletedItems;
6
- this.extensionManager = extensionManager;
7
6
  }
8
7
  title;
9
8
  get affectedItems() {
@@ -11,7 +10,7 @@ export class DeleteAction {
11
10
  }
12
11
  undo() {
13
12
  for (let n = 0; n < this.deletedItems.length; n++) {
14
- this._parentItems[n].insertChild(this.deletedItems[n], this._parentIndexes[n]);
13
+ this._parentItems[n]._insertChildInternal(this.deletedItems[n], this._parentIndexes[n]);
15
14
  }
16
15
  this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'added', designItems: this.deletedItems });
17
16
  }
@@ -25,11 +24,9 @@ export class DeleteAction {
25
24
  for (let n = 0; n < this.deletedItems.length; n++) {
26
25
  this.deletedItems[n].remove();
27
26
  }
28
- this.extensionManager.removeExtensions(this.deletedItems);
29
27
  this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'removed', designItems: this.deletedItems });
30
28
  }
31
29
  deletedItems;
32
- extensionManager;
33
30
  _parentItems;
34
31
  _parentIndexes;
35
32
  mergeWith(other) {
@@ -14,7 +14,7 @@ export class InsertAction {
14
14
  this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'removed', designItems: [this.newItem] });
15
15
  }
16
16
  do() {
17
- this.designItem.insertChild(this.newItem, this.index);
17
+ this.designItem._insertChildInternal(this.newItem, this.index);
18
18
  const prepService = this.designItem.serviceContainer.prepareElementsForDesignerService;
19
19
  if (prepService)
20
20
  requestAnimationFrame(() => prepService.prepareElementsForDesigner(this.newItem));
@@ -0,0 +1,16 @@
1
+ import { ITransactionItem } from '../ITransactionItem';
2
+ import { IDesignItem } from '../../../item/IDesignItem';
3
+ export declare class InsertChildAction implements ITransactionItem {
4
+ constructor(designItem: IDesignItem, newParent: IDesignItem, newIndex: number);
5
+ title?: string;
6
+ get affectedItems(): IDesignItem[];
7
+ undo(): void;
8
+ do(): void;
9
+ designItem: IDesignItem;
10
+ newParent: IDesignItem;
11
+ newIndex: number;
12
+ oldParent: IDesignItem;
13
+ oldIndex: number;
14
+ newItem: IDesignItem;
15
+ mergeWith(other: ITransactionItem): boolean;
16
+ }
@@ -0,0 +1,31 @@
1
+ export class InsertChildAction {
2
+ constructor(designItem, newParent, newIndex) {
3
+ this.title = "Move Item";
4
+ this.designItem = designItem;
5
+ this.newParent = newParent;
6
+ this.newIndex = newIndex;
7
+ }
8
+ title;
9
+ get affectedItems() {
10
+ return [this.designItem, this.newParent, this.oldParent];
11
+ }
12
+ undo() {
13
+ this.oldParent._insertChildInternal(this.designItem, this.newIndex);
14
+ this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'moved', designItems: [this.designItem] });
15
+ }
16
+ do() {
17
+ this.oldParent = this.designItem.parent;
18
+ this.oldIndex = this.designItem.parent.indexOf(this.designItem);
19
+ this.newParent._insertChildInternal(this.designItem, this.newIndex);
20
+ this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'moved', designItems: [this.designItem] });
21
+ }
22
+ designItem;
23
+ newParent;
24
+ newIndex;
25
+ oldParent;
26
+ oldIndex;
27
+ newItem;
28
+ mergeWith(other) {
29
+ return false;
30
+ }
31
+ }
@@ -29,9 +29,8 @@ export class BindableObjectsBrowser extends BaseCustomWebComponentLazyAppend {
29
29
  `;
30
30
  constructor() {
31
31
  super();
32
- let externalCss = document.createElement('style');
33
- externalCss.innerHTML = '@import url("./node_modules/jquery.fancytree/dist/skin-win8/ui.fancytree.css");';
34
- this.shadowRoot.appendChild(externalCss);
32
+ //@ts-ignore
33
+ import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
35
34
  this._treeDiv = document.createElement('div');
36
35
  this._treeDiv.style.height = '100%';
37
36
  this._treeDiv.style.overflow = 'auto';
@@ -12,16 +12,15 @@ export class CodeViewCodeMirror extends BaseCustomWebComponentLazyAppend {
12
12
  display: block;
13
13
  height: 100%;
14
14
  width: 100%;
15
- }
16
- `;
15
+ }`;
17
16
  static template = html `
18
- <style>@import "./node_modules/codemirror/lib/codemirror.css";</style>
19
- <div style="width: 100%; height: 100%;">
20
- <div id="textarea"></div>
21
- </div>
22
- `;
17
+ <div style="width: 100%; height: 100%;">
18
+ <div id="textarea"></div>
19
+ </div>`;
23
20
  constructor() {
24
21
  super();
22
+ //@ts-ignore
23
+ import("codemirror/lib/codemirror.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
25
24
  this.style.display = 'block';
26
25
  this._editor = this._getDomElement('textarea');
27
26
  }
@@ -18,8 +18,7 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
18
18
  }
19
19
  `;
20
20
  static template = html `
21
- <style>@import "./node_modules/monaco-editor/min/vs/editor/editor.main.css";</style>
22
- <div id="container" style="width: 100%; height: 100%;"></div>
21
+ <div id="container" style="width: 100%; height: 100%; position: absolute;"></div>
23
22
  `;
24
23
  executeCommand(command) {
25
24
  switch (command.type) {
@@ -54,6 +53,9 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
54
53
  return false;
55
54
  }
56
55
  async ready() {
56
+ //@ts-ignore
57
+ const style = await import("monaco-editor/min/vs/editor/editor.main.css", { assert: { type: 'css' } });
58
+ this.shadowRoot.adoptedStyleSheets = [style.default, this.constructor.style];
57
59
  this._editor = this._getDomElement('container');
58
60
  //@ts-ignore
59
61
  require.config({ paths: { 'vs': 'node_modules/monaco-editor/min/vs' } });
@@ -65,9 +67,9 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
65
67
  value: this.code,
66
68
  language: 'html',
67
69
  minimap: {
68
- //@ts-ignore
69
70
  size: 'fill'
70
- }
71
+ },
72
+ fixedOverflowWidgets: true
71
73
  });
72
74
  this._monacoEditor.layout();
73
75
  let changeContentListener = this._monacoEditor.getModel().onDidChangeContent(e => {
@@ -290,7 +290,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
290
290
  }
291
291
  handleDeleteCommand() {
292
292
  let items = this.instanceServiceContainer.selectionService.selectedElements;
293
- this.instanceServiceContainer.undoService.execute(new DeleteAction(items, this.extensionManager));
293
+ this.instanceServiceContainer.undoService.execute(new DeleteAction(items));
294
294
  this.instanceServiceContainer.selectionService.setSelectedElements(null);
295
295
  }
296
296
  initialize(serviceContainer) {
@@ -362,7 +362,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
362
362
  addDesignItems(designItems) {
363
363
  if (designItems) {
364
364
  for (let di of designItems) {
365
- this.rootDesignItem.insertChild(di);
365
+ this.rootDesignItem._insertChildInternal(di);
366
366
  }
367
367
  }
368
368
  const intializationService = this.serviceContainer.intializationService;
@@ -281,7 +281,7 @@ export class PointerTool {
281
281
  const newOffset = newContainerService.getElementOffset(newContainerElementDesignItem, this._actionStartedDesignItem);
282
282
  this._moveItemsOffset = { x: newOffset.x - oldOffset.x + this._moveItemsOffset.x, y: newOffset.y - oldOffset.y + this._moveItemsOffset.y };
283
283
  currentContainerService.leaveContainer(this._actionStartedDesignItem.parent, [this._actionStartedDesignItem]);
284
- newContainerElementDesignItem.insertChild(this._actionStartedDesignItem);
284
+ newContainerElementDesignItem._insertChildInternal(this._actionStartedDesignItem);
285
285
  const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
286
286
  newContainerService.enterContainer(newContainerElementDesignItem, [this._actionStartedDesignItem]);
287
287
  newContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, designerCanvas.instanceServiceContainer.selectionService.selectedElements);
@@ -55,9 +55,8 @@ export class PaletteTreeView extends BaseCustomWebComponentConstructorAppend {
55
55
  </div>`;
56
56
  constructor() {
57
57
  super();
58
- let externalCss = document.createElement('style');
59
- externalCss.innerHTML = '@import url("./node_modules/jquery.fancytree/dist/skin-win8/ui.fancytree.css");';
60
- this.shadowRoot.appendChild(externalCss);
58
+ //@ts-ignore
59
+ import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
61
60
  this._filter = this._getDomElement('input');
62
61
  this._filter.onkeyup = () => {
63
62
  let match = this._filter.value;
@@ -89,9 +89,8 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
89
89
  </div>`;
90
90
  constructor() {
91
91
  super();
92
- let externalCss = document.createElement('style');
93
- externalCss.innerHTML = '@import url("./node_modules/jquery.fancytree/dist/skin-win8/ui.fancytree.css");';
94
- this.shadowRoot.appendChild(externalCss);
92
+ //@ts-ignore
93
+ import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
95
94
  this._filter = this._getDomElement('input');
96
95
  this._filter.onkeyup = () => {
97
96
  let match = this._filter.value;
@@ -100,11 +99,6 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
100
99
  });
101
100
  };
102
101
  this._treeDiv = this._getDomElement('treetable');
103
- /*this._treeDiv = document.createElement('div');
104
- this._treeDiv.style.height = 'calc(100% - 21px)'
105
- this._treeDiv.style.overflow = 'auto';
106
- this._treeDiv.setAttribute('id', 'tree');
107
- this.shadowRoot.appendChild(this._treeDiv);*/
108
102
  }
109
103
  _showHideAtDesignTimeState(img, designItem) {
110
104
  if (designItem.hideAtDesignTime)
package/dist/index.d.ts CHANGED
@@ -42,6 +42,7 @@ export type { IElementDefinition } from "./elements/services/elementsService/IEl
42
42
  export type { IElementsJson } from "./elements/services/elementsService/IElementsJson.js";
43
43
  export type { IElementsService } from "./elements/services/elementsService/IElementsService.js";
44
44
  export * from "./elements/services/elementsService/JsonFileElementsService.js";
45
+ export * from "./elements/services/elementsService/PreDefinedElementsService.js";
45
46
  export type { IHtmlWriterService } from "./elements/services/htmlWriterService/IHtmlWriterService.js";
46
47
  export type { IHtmlWriterOptions } from "./elements/services/htmlWriterService/IHtmlWriterOptions.js";
47
48
  export * from "./elements/services/htmlWriterService/HtmlWriterService.js";
@@ -59,6 +60,7 @@ export * from "./elements/services/propertiesService/DefaultEditorTypesService.j
59
60
  export type { IEditorTypesService } from "./elements/services/propertiesService/IEditorTypesService.js";
60
61
  export type { IPropertiesService } from "./elements/services/propertiesService/IPropertiesService.js";
61
62
  export type { IProperty } from "./elements/services/propertiesService/IProperty.js";
63
+ export * from "./elements/services/propertiesService/services/PropertiesHelper.js";
62
64
  export * from "./elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js";
63
65
  export * from "./elements/services/propertiesService/services/CommonPropertiesService.js";
64
66
  export * from "./elements/services/propertiesService/services/CssPropertiesService.js";
@@ -79,7 +81,7 @@ export * from "./elements/services/undoService/transactionItems/AttributeChangeA
79
81
  export * from "./elements/services/undoService/transactionItems/CssStyleChangeAction.js";
80
82
  export * from "./elements/services/undoService/transactionItems/DeleteAction.js";
81
83
  export * from "./elements/services/undoService/transactionItems/InsertAction.js";
82
- export * from "./elements/services/undoService/transactionItems/MoveElementInDomAction.js";
84
+ export * from "./elements/services/undoService/transactionItems/InsertChildAction.js";
83
85
  export * from "./elements/services/undoService/transactionItems/PropertyChangeAction.js";
84
86
  export * from "./elements/services/BaseServiceContainer.js";
85
87
  export * from "./elements/services/InstanceServiceContainer.js";
@@ -172,3 +174,4 @@ export type { IDisposable } from "./interfaces/IDisposable.js";
172
174
  export type { IPoint } from "./interfaces/IPoint.js";
173
175
  export type { IRect } from "./interfaces/IRect.js";
174
176
  export type { ISize } from "./interfaces/ISize.js";
177
+ export type { ICommandHandler } from "./interfaces/ICommandHandler.js";
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ export * from "./elements/services/copyPasteService/CopyPasteService.js";
25
25
  export * from "./elements/services/demoProviderService/DemoProviderService.js";
26
26
  export * from "./elements/services/dragDropService/DragDropService.js";
27
27
  export * from "./elements/services/elementsService/JsonFileElementsService.js";
28
+ export * from "./elements/services/elementsService/PreDefinedElementsService.js";
28
29
  export * from "./elements/services/htmlWriterService/HtmlWriterService.js";
29
30
  export * from "./elements/services/htmlParserService/DefaultHtmlParserService.js";
30
31
  export * from "./elements/services/htmlParserService/NodeHtmlParserService.js";
@@ -32,6 +33,7 @@ export * from "./elements/services/instanceService/DefaultInstanceService.js";
32
33
  export * from "./elements/services/instanceService/PrepareElementsForDesignerService.js";
33
34
  export * from "./elements/services/modelCommandService/DefaultModelCommandService.js";
34
35
  export * from "./elements/services/propertiesService/DefaultEditorTypesService.js";
36
+ export * from "./elements/services/propertiesService/services/PropertiesHelper.js";
35
37
  export * from "./elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js";
36
38
  export * from "./elements/services/propertiesService/services/CommonPropertiesService.js";
37
39
  export * from "./elements/services/propertiesService/services/CssPropertiesService.js";
@@ -48,7 +50,7 @@ export * from "./elements/services/undoService/transactionItems/AttributeChangeA
48
50
  export * from "./elements/services/undoService/transactionItems/CssStyleChangeAction.js";
49
51
  export * from "./elements/services/undoService/transactionItems/DeleteAction.js";
50
52
  export * from "./elements/services/undoService/transactionItems/InsertAction.js";
51
- export * from "./elements/services/undoService/transactionItems/MoveElementInDomAction.js";
53
+ export * from "./elements/services/undoService/transactionItems/InsertChildAction.js";
52
54
  export * from "./elements/services/undoService/transactionItems/PropertyChangeAction.js";
53
55
  export * from "./elements/services/BaseServiceContainer.js";
54
56
  export * from "./elements/services/InstanceServiceContainer.js";
@@ -0,0 +1,5 @@
1
+ import { CommandType } from "../commandHandling/CommandType";
2
+ export interface ICommandHandler {
3
+ executeCommand(type: CommandType, parameter: any): Promise<void>;
4
+ canExecuteCommand(type: CommandType, parameter: any): boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
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.71",
4
+ "version": "0.0.75",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -1,16 +0,0 @@
1
- import { ITransactionItem } from '../ITransactionItem';
2
- import { IDesignItem } from '../../../item/IDesignItem';
3
- export declare class MoveElementInDomAction implements ITransactionItem {
4
- constructor(designItem: IDesignItem, newTarget: IDesignItem, newPosition: InsertPosition, oldTarget: IDesignItem, oldPosition: InsertPosition);
5
- title?: string;
6
- get affectedItems(): IDesignItem[];
7
- undo(): void;
8
- do(): void;
9
- designItem: IDesignItem;
10
- newTarget: IDesignItem;
11
- newPosition: InsertPosition;
12
- oldTarget: IDesignItem;
13
- oldPosition: InsertPosition;
14
- newItem: IDesignItem;
15
- mergeWith(other: ITransactionItem): boolean;
16
- }
@@ -1,31 +0,0 @@
1
- export class MoveElementInDomAction {
2
- constructor(designItem, newTarget, newPosition, oldTarget, oldPosition) {
3
- this.title = "Move Item";
4
- this.designItem = designItem;
5
- this.newTarget = newTarget;
6
- this.newPosition = newPosition;
7
- this.oldTarget = oldTarget;
8
- this.oldPosition = oldPosition;
9
- }
10
- title;
11
- get affectedItems() {
12
- return [this.designItem, this.newTarget, this.oldTarget];
13
- }
14
- undo() {
15
- this.oldTarget.element.insertAdjacentElement(this.oldPosition, this.designItem.element);
16
- this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'moved', designItems: [this.designItem] });
17
- }
18
- do() {
19
- this.newTarget.element.insertAdjacentElement(this.newPosition, this.designItem.element);
20
- this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'moved', designItems: [this.designItem] });
21
- }
22
- designItem;
23
- newTarget;
24
- newPosition;
25
- oldTarget;
26
- oldPosition;
27
- newItem;
28
- mergeWith(other) {
29
- return false;
30
- }
31
- }
@@ -1,7 +0,0 @@
1
- import { IDesignerCanvas } from "./IDesignerCanvas.js";
2
- import { IDesignViewConfigButtonsProvider } from "./IDesignViewConfigButtonsProvider.js";
3
- import { DesignerView } from './designerView';
4
- export declare class DesignerViewUseOverlayScollbars implements IDesignViewConfigButtonsProvider {
5
- constructor();
6
- provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
7
- }
@@ -1,13 +0,0 @@
1
- //todo, element moving does not work atm, needs to be fixed
2
- export class DesignerViewUseOverlayScollbars {
3
- constructor() {
4
- }
5
- provideButtons(designerView, designerCanvas) {
6
- let externalCss = document.createElement('style');
7
- externalCss.innerHTML = '@import url("./node_modules/overlayscrollbars/css/OverlayScrollbars.min.css");';
8
- designerCanvas.shadowRoot.appendChild(externalCss);
9
- //@ts-ignore
10
- setTimeout(() => OverlayScrollbars([designerCanvas._outercanvas2], {}), 5000);
11
- return [];
12
- }
13
- }