@node-projects/web-component-designer 0.0.86 → 0.0.87

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 (31) hide show
  1. package/dist/elements/helper/ElementHelper.d.ts +1 -0
  2. package/dist/elements/helper/ElementHelper.js +10 -0
  3. package/dist/elements/item/DesignItem.d.ts +2 -0
  4. package/dist/elements/item/DesignItem.js +7 -0
  5. package/dist/elements/item/IDesignItem.d.ts +1 -0
  6. package/dist/elements/services/DefaultServiceBootstrap.js +0 -4
  7. package/dist/elements/services/ServiceContainer.d.ts +1 -3
  8. package/dist/elements/services/ServiceContainer.js +8 -3
  9. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +8 -0
  10. package/dist/elements/services/initializationService/DefaultIntializationService.js +12 -12
  11. package/dist/elements/services/instanceService/PrepareElementsForDesignerService.js +23 -23
  12. package/dist/elements/services/undoService/UndoService.js +1 -0
  13. package/dist/elements/services/undoService/transactionItems/InsertAction.js +0 -3
  14. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +1 -0
  15. package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -0
  16. package/dist/elements/widgets/designerView/designerCanvas.js +43 -27
  17. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension copy.d.ts +17 -0
  18. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension copy.js +80 -0
  19. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +4 -2
  20. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider copy.d.ts +9 -0
  21. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider copy.js +11 -0
  22. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts +20 -0
  23. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +83 -0
  24. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.d.ts +10 -0
  25. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.js +15 -0
  26. package/dist/elements/widgets/designerView/extensions/PathExtension.js +1 -5
  27. package/dist/elements/widgets/treeView/treeView.js +1 -0
  28. package/dist/elements/widgets/treeView/treeViewExtended.js +11 -7
  29. package/dist/index.d.ts +4 -4
  30. package/dist/index.js +4 -3
  31. package/package.json +5 -4
@@ -7,3 +7,4 @@ export declare enum ElementDisplayType {
7
7
  export declare function isInline(element: HTMLElement): boolean;
8
8
  export declare function getElementDisplaytype(element: HTMLElement): ElementDisplayType;
9
9
  export declare function isEmptyTextNode(node: Node): boolean;
10
+ export declare function getActiveElement(): Element;
@@ -20,3 +20,13 @@ export function getElementDisplaytype(element) {
20
20
  export function isEmptyTextNode(node) {
21
21
  return node.textContent.trim() == '' && node.textContent.indexOf('\xa0' /* &nbsp; */) < 0;
22
22
  }
23
+ export function getActiveElement() {
24
+ let activeElement = document.activeElement;
25
+ let lastActive = null;
26
+ while (activeElement != lastActive) {
27
+ lastActive = activeElement;
28
+ if (activeElement.shadowRoot != null && activeElement.shadowRoot.activeElement)
29
+ activeElement = activeElement.shadowRoot.activeElement;
30
+ }
31
+ return activeElement;
32
+ }
@@ -39,6 +39,8 @@ export declare class DesignItem implements IDesignItem {
39
39
  get hasContent(): boolean;
40
40
  get content(): string;
41
41
  set content(value: string);
42
+ get innerHTML(): string;
43
+ set innerHTML(value: string);
42
44
  private _hideAtDesignTime;
43
45
  get hideAtDesignTime(): boolean;
44
46
  set hideAtDesignTime(value: boolean);
@@ -114,6 +114,13 @@ export class DesignItem {
114
114
  set content(value) {
115
115
  this.node.textContent = value;
116
116
  }
117
+ get innerHTML() {
118
+ return this.element.innerHTML;
119
+ }
120
+ set innerHTML(value) {
121
+ this.element.innerHTML = value;
122
+ this.updateChildrenFromNodesChildren();
123
+ }
117
124
  _hideAtDesignTime;
118
125
  get hideAtDesignTime() {
119
126
  return this._hideAtDesignTime;
@@ -32,6 +32,7 @@ export interface IDesignItem {
32
32
  updateChildrenFromNodesChildren(): any;
33
33
  readonly hasContent: boolean;
34
34
  content: string;
35
+ innerHTML?: string;
35
36
  readonly node: Node;
36
37
  readonly element: Element;
37
38
  serviceContainer: ServiceContainer;
@@ -39,7 +39,6 @@ import { GridPlacementService } from './placementService/GridPlacementService.js
39
39
  import { ElementAtPointService } from './elementAtPointService/ElementAtPointService';
40
40
  import { FlexBoxPlacementService } from './placementService/FlexBoxPlacementService';
41
41
  import { SnaplinesProviderService } from './placementService/SnaplinesProviderService';
42
- import { PrepareElementsForDesignerService } from './instanceService/PrepareElementsForDesignerService';
43
42
  import { DragDropService } from './dragDropService/DragDropService';
44
43
  import { EditTextExtensionProvider } from '../widgets/designerView/extensions/EditText/EditTextExtensionProvider.js';
45
44
  import { CopyPasteService } from './copyPasteService/CopyPasteService';
@@ -54,7 +53,6 @@ import { DrawLineTool } from '../widgets/designerView/tools/DrawLineTool.js';
54
53
  import { HtmlWriterService } from './htmlWriterService/HtmlWriterService.js';
55
54
  import { RectContextMenu } from '../widgets/designerView/extensions/contextMenu/RectContextMenu.js';
56
55
  import { PathContextMenu } from '../widgets/designerView/extensions/contextMenu/PathContextMenu.js';
57
- import { IframeExtensionProvider } from '../widgets/designerView/extensions/IframeExtensionProvider.js';
58
56
  export function createDefaultServiceContainer() {
59
57
  let serviceContainer = new ServiceContainer();
60
58
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -71,7 +69,6 @@ export function createDefaultServiceContainer() {
71
69
  serviceContainer.register("snaplinesProviderService", new SnaplinesProviderService());
72
70
  serviceContainer.register("htmlParserService", new DefaultHtmlParserService());
73
71
  serviceContainer.register("elementAtPointService", new ElementAtPointService());
74
- serviceContainer.register("prepareElementsForDesignerService", new PrepareElementsForDesignerService());
75
72
  serviceContainer.register("dragDropService", new DragDropService());
76
73
  serviceContainer.register("copyPasteService", new CopyPasteService());
77
74
  serviceContainer.register("modelCommandService", new DefaultModelCommandService());
@@ -79,7 +76,6 @@ export function createDefaultServiceContainer() {
79
76
  serviceContainer.designerExtensions.set(ExtensionType.Permanent, [
80
77
  // new ResizeExtensionProvider(false),
81
78
  new InvisibleDivExtensionProvider(),
82
- new IframeExtensionProvider(),
83
79
  // new ElementDragTitleExtensionProvider(),
84
80
  ]);
85
81
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
@@ -18,7 +18,6 @@ import { GlobalContext } from './GlobalContext';
18
18
  import { IBindingService } from "./bindingsService/IBindingService";
19
19
  import { IElementAtPointService } from './elementAtPointService/IElementAtPointService';
20
20
  import { ISnaplinesProviderService } from "./placementService/ISnaplinesProviderService.js";
21
- import { IPrepareElementsForDesignerService } from './instanceService/IPrepareElementsForDesignerService';
22
21
  import { IDragDropService } from './dragDropService/IDragDropService';
23
22
  import { ICopyPasteService } from "./copyPasteService/ICopyPasteService.js";
24
23
  import { IDesignerPointerExtensionProvider } from "../widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
@@ -41,7 +40,6 @@ interface ServiceNameMap {
41
40
  "bindableObjectsService": IBindableObjectsService;
42
41
  "bindableObjectDragDropService": IBindableObjectDragDropService;
43
42
  "elementAtPointService": IElementAtPointService;
44
- "prepareElementsForDesignerService": IPrepareElementsForDesignerService;
45
43
  "dragDropService": IDragDropService;
46
44
  "copyPasteService": ICopyPasteService;
47
45
  "modelCommandService": IModelCommandService;
@@ -53,6 +51,7 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
53
51
  demoViewWidget: new (...args: any[]) => IDemoView & HTMLElement;
54
52
  };
55
53
  readonly designerExtensions: Map<(ExtensionType | string), IDesignerExtensionProvider[]>;
54
+ removeDesignerExtensionOfType(container: (ExtensionType | string), lambda: new (...args: any[]) => IDesignerExtensionProvider): void;
56
55
  readonly designViewConfigButtons: IDesignViewConfigButtonsProvider[];
57
56
  readonly designerPointerExtensions: IDesignerPointerExtensionProvider[];
58
57
  designerContextMenuExtensions: IContextMenuExtension[];
@@ -71,7 +70,6 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
71
70
  get htmlParserService(): IHtmlParserService;
72
71
  get intializationService(): IIntializationService;
73
72
  get elementAtPointService(): IElementAtPointService;
74
- get prepareElementsForDesignerService(): IPrepareElementsForDesignerService;
75
73
  get dragDropService(): IDragDropService;
76
74
  get copyPasteService(): ICopyPasteService;
77
75
  get modelCommandService(): IModelCommandService;
@@ -8,6 +8,14 @@ export class ServiceContainer extends BaseServiceContainer {
8
8
  demoViewWidget: DemoView
9
9
  };
10
10
  designerExtensions = new Map();
11
+ removeDesignerExtensionOfType(container, lambda) {
12
+ const extContainer = this.designerExtensions.get(container);
13
+ for (let i = 0; i < extContainer.length; i++) {
14
+ if (extContainer[i].constructor === lambda) {
15
+ extContainer.splice(i, 1);
16
+ }
17
+ }
18
+ }
11
19
  designViewConfigButtons = [];
12
20
  designerPointerExtensions = [];
13
21
  designerContextMenuExtensions;
@@ -52,9 +60,6 @@ export class ServiceContainer extends BaseServiceContainer {
52
60
  get elementAtPointService() {
53
61
  return this.getLastService('elementAtPointService');
54
62
  }
55
- get prepareElementsForDesignerService() {
56
- return this.getLastService('prepareElementsForDesignerService');
57
- }
58
63
  get dragDropService() {
59
64
  return this.getLastService('dragDropService');
60
65
  }
@@ -27,6 +27,7 @@ export class NodeHtmlParserService {
27
27
  let designItem = null;
28
28
  if (item.nodeType == 1) {
29
29
  let element;
30
+ let manualCreatedElement = false;
30
31
  if (!namespace)
31
32
  element = newElementFromString('<' + item.rawTagName + ' ' + item.rawAttrs + '></' + item.rawTagName + '>'); // some custom elements only parse attributes during constructor call
32
33
  if (!element) {
@@ -34,6 +35,7 @@ export class NodeHtmlParserService {
34
35
  element = document.createElementNS(namespace, item.rawTagName);
35
36
  else
36
37
  element = document.createElement(item.rawTagName);
38
+ manualCreatedElement = true;
37
39
  }
38
40
  designItem = new DesignItem(element, serviceContainer, instanceServiceContainer);
39
41
  let hideAtDesignTime = false;
@@ -44,6 +46,9 @@ export class NodeHtmlParserService {
44
46
  for (let a in attr) {
45
47
  if (a !== 'style') {
46
48
  designItem.attributes.set(a, attr[a]);
49
+ if (manualCreatedElement) {
50
+ element.setAttribute(a, attr[a]);
51
+ }
47
52
  if (a === 'node-projects-hide-at-design-time')
48
53
  hideAtDesignTime = true;
49
54
  else if (a === 'node-projects-hide-at-run-time')
@@ -60,6 +65,9 @@ export class NodeHtmlParserService {
60
65
  styleParser.parse(style);
61
66
  for (let s of styleParser.entries) {
62
67
  designItem.styles.set(s.name, s.value);
68
+ if (manualCreatedElement) {
69
+ element.style[s.name] = s.value;
70
+ }
63
71
  }
64
72
  }
65
73
  if (!lockAtDesignTime && (element instanceof HTMLElement || element instanceof SVGElement)) {
@@ -1,22 +1,22 @@
1
1
  export class DefaultIntializationService {
2
2
  init(designItem) {
3
- if (designItem.name == 'iframe') {
4
- this.initializeIframe(designItem.element);
5
- }
3
+ /*if (designItem.name == 'iframe') {
4
+ this.initializeIframe(<HTMLIFrameElement>designItem.element);
5
+ }*/
6
6
  }
7
7
  initializeIframe(iframe) {
8
- iframe.contentDocument.body.style.pointerEvents = 'none';
9
- function cloneIframeEvent(event) {
10
- var clRect = iframe.getBoundingClientRect();
11
- let data = { ...event };
12
- data.clientX = event.clientX + clRect.left;
13
- data.clientY = event.clientY + clRect.top;
14
- var evt = new PointerEvent(event.type, data); //new CustomEvent('pointerdown', {bubbles: true, cancelable: false});
15
- iframe.dispatchEvent(evt);
8
+ /*iframe.contentDocument.body.style.pointerEvents = 'none';
9
+ function cloneIframeEvent(event: PointerEvent) {
10
+ var clRect = iframe.getBoundingClientRect();
11
+ let data = { ...event };
12
+ data.clientX = event.clientX + clRect.left;
13
+ data.clientY = event.clientY + clRect.top;
14
+ var evt = new PointerEvent(event.type, data) //new CustomEvent('pointerdown', {bubbles: true, cancelable: false});
15
+ iframe.dispatchEvent(evt);
16
16
  }
17
17
  iframe.contentWindow.addEventListener('pointerdown', cloneIframeEvent);
18
18
  iframe.contentWindow.addEventListener('pointermove', cloneIframeEvent);
19
- iframe.contentWindow.addEventListener('pointerup', cloneIframeEvent);
19
+ iframe.contentWindow.addEventListener('pointerup', cloneIframeEvent);*/
20
20
  }
21
21
  ;
22
22
  }
@@ -5,28 +5,28 @@ export class PrepareElementsForDesignerService {
5
5
  this._prepareElementsForDesigner(designItem.element.querySelectorAll('*'), true);
6
6
  }
7
7
  _prepareElementsForDesigner(elements, rootElements) {
8
- for (let el of elements) {
9
- if (el.shadowRoot) {
10
- this._prepareElementsForDesigner((el.shadowRoot).querySelectorAll('*'), false);
11
- }
12
- if (el instanceof HTMLElement) {
13
- el.onclick = null;
14
- el.onmousedown = null;
15
- el.onmouseup = null;
16
- if (!rootElements)
17
- el.style.pointerEvents = 'none';
18
- }
19
- if (el instanceof HTMLImageElement) {
20
- el.draggable = false;
21
- }
22
- else if (el instanceof HTMLInputElement) {
23
- el.onmousedown = (e) => e.preventDefault();
24
- //const ip = el;
25
- //el.onclick = (e) => { if (ip.type == 'checkbox') ip.checked = !ip.checked };
26
- }
27
- else if (el instanceof HTMLSelectElement) {
28
- el.onmousedown = (e) => e.preventDefault();
29
- }
30
- }
8
+ /*for (let el of elements) {
9
+ if ((<HTMLElement>el).shadowRoot) {
10
+ this._prepareElementsForDesigner(((<HTMLElement>el).shadowRoot).querySelectorAll('*'), false);
11
+ }
12
+ if (el instanceof HTMLElement) {
13
+ el.onclick = null;
14
+ el.onmousedown = null;
15
+ el.onmouseup = null;
16
+ if (!rootElements)
17
+ el.style.pointerEvents = 'none';
18
+ }
19
+ if (el instanceof HTMLImageElement) {
20
+ el.draggable = false;
21
+ }
22
+ else if (el instanceof HTMLInputElement) {
23
+ el.onmousedown = (e) => e.preventDefault();
24
+ //const ip = el;
25
+ //el.onclick = (e) => { if (ip.type == 'checkbox') ip.checked = !ip.checked };
26
+ }
27
+ else if (el instanceof HTMLSelectElement) {
28
+ el.onmousedown = (e) => e.preventDefault();
29
+ }
30
+ }*/
31
31
  }
32
32
  }
@@ -23,6 +23,7 @@ export class UndoService {
23
23
  }
24
24
  if (itm.undoStack.length)
25
25
  this._undoStack.push(itm);
26
+ this._redoStack = [];
26
27
  }
27
28
  abortTransactionItem(transactionItem) {
28
29
  let itm = this._transactionStack.pop();
@@ -15,9 +15,6 @@ export class InsertAction {
15
15
  }
16
16
  do() {
17
17
  this.designItem._insertChildInternal(this.newItem, this.index);
18
- const prepService = this.designItem.serviceContainer.prepareElementsForDesignerService;
19
- if (prepService)
20
- requestAnimationFrame(() => prepService.prepareElementsForDesigner(this.newItem));
21
18
  this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'added', designItems: [this.newItem] });
22
19
  }
23
20
  designItem;
@@ -16,6 +16,7 @@ export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
16
16
  readonly rootDesignItem: IDesignItem;
17
17
  readonly overlayLayer: OverlayLayerView;
18
18
  readonly extensionManager: IExtensionManager;
19
+ readonly clickOverlay: HTMLDivElement;
19
20
  readonly snapLines: Snaplines;
20
21
  readonly shadowRoot: ShadowRoot;
21
22
  readonly alignOnGrid: boolean;
@@ -18,6 +18,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
18
18
  instanceServiceContainer: InstanceServiceContainer;
19
19
  containerBoundingRect: DOMRect;
20
20
  outerRect: DOMRect;
21
+ clickOverlay: HTMLDivElement;
21
22
  gridSize: number;
22
23
  alignOnGrid: boolean;
23
24
  alignOnSnap: boolean;
@@ -26,6 +26,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
26
26
  instanceServiceContainer;
27
27
  containerBoundingRect;
28
28
  outerRect;
29
+ clickOverlay;
29
30
  // IPlacementView
30
31
  gridSize = 10;
31
32
  alignOnGrid = false;
@@ -119,8 +120,15 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
119
120
  user-select: none;
120
121
  -webkit-user-select: none;
121
122
  }
123
+
124
+ #node-projects-designer-canvas-clickOverlay {
125
+ position: absolute;
126
+ width: 100%;
127
+ height: 100%;
128
+ top: 0;
129
+ }
122
130
 
123
- #transformHelper {
131
+ #node-projects-designer-canvas-transformHelper {
124
132
  height: 0;
125
133
  width: 0;
126
134
  }`;
@@ -130,12 +138,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
130
138
  <div id="node-projects-designer-canvas-outercanvas2"
131
139
  style="width:100%;height:100%;position:relative;">
132
140
  <div id="node-projects-designer-canvas-canvasContainer"
133
- style="width: 100%;height: 100%;margin: auto;position: absolute;top: 0;/* bottom: 0; does not work with fixed sized when size is bigger then view */left: 0;user-select: none;">
134
- <div id="node-projects-designer-canvas-canvas" part="canvas" tabindex="0"></div>
141
+ style="width: 100%;height: 100%;margin: auto;position: absolute;top: 0;left: 0;user-select: none;">
142
+ <div id="node-projects-designer-canvas-canvas" part="canvas"></div>
135
143
  </div>
136
144
  </div>
145
+ <div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events: auto;"></div>
137
146
  </div>
138
- <div id="transformHelper"></div>
147
+ <div id="node-projects-designer-canvas-transformHelper"></div>
139
148
  </div>`;
140
149
  extensionManager;
141
150
  _pointerextensions;
@@ -145,13 +154,14 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
145
154
  this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
146
155
  this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
147
156
  this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
148
- this.transformHelperElement = this._getDomElement('transformHelper');
157
+ this.clickOverlay = this._getDomElement('node-projects-designer-canvas-clickOverlay');
158
+ this.transformHelperElement = this._getDomElement('node-projects-designer-canvas-transformHelper');
149
159
  this._onKeyDownBound = this.onKeyDown.bind(this);
150
160
  this._onKeyUpBound = this.onKeyUp.bind(this);
151
161
  this._onDblClickBound = this._onDblClick.bind(this);
152
162
  this._onContextMenuBound = this._onContextMenu.bind(this);
153
163
  this._pointerEventHandlerBound = this._pointerEventHandler.bind(this);
154
- this._canvas.oncontextmenu = this._onContextMenuBound;
164
+ this.clickOverlay.oncontextmenu = this._onContextMenuBound;
155
165
  }
156
166
  get designerWidth() {
157
167
  return this._canvasContainer.style.width;
@@ -338,22 +348,27 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
338
348
  }
339
349
  }
340
350
  elementFromPoint(x, y) {
351
+ this.clickOverlay.style.pointerEvents = 'none';
341
352
  //@ts-ignore
342
- return this.shadowRoot.elementFromPoint(x, y);
353
+ let element = this.shadowRoot.elementFromPoint(x, y);
354
+ if (element === this.clickOverlay)
355
+ element = this._canvas;
356
+ this.clickOverlay.style.pointerEvents = 'auto';
357
+ return element;
343
358
  }
344
359
  connectedCallback() {
345
360
  if (!this._firstConnect) {
346
361
  this._firstConnect = true;
347
- this._outercanvas2.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
348
- this._outercanvas2.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
349
- this._outercanvas2.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
350
- this._outercanvas2.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
351
- this._outercanvas2.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
352
- this._outercanvas2.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
353
- this._outercanvas2.addEventListener(EventNames.Drop, event => this._onDrop(event));
354
- this._canvas.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
355
- this._canvas.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
356
- this._canvas.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
362
+ this.clickOverlay.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
363
+ this.clickOverlay.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
364
+ this.clickOverlay.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
365
+ this.clickOverlay.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
366
+ this.clickOverlay.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
367
+ this.clickOverlay.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
368
+ this.clickOverlay.addEventListener(EventNames.Drop, event => this._onDrop(event));
369
+ this.clickOverlay.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
370
+ this.clickOverlay.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
371
+ this.clickOverlay.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
357
372
  }
358
373
  }
359
374
  zoomFactorChanged() {
@@ -392,9 +407,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
392
407
  intializationService.init(di);
393
408
  }
394
409
  this.snapLines.clearSnaplines();
395
- const prepService = this.serviceContainer.prepareElementsForDesignerService;
396
- if (prepService)
397
- requestAnimationFrame(() => prepService.prepareElementsForDesigner(this.rootDesignItem));
398
410
  }
399
411
  _onDragEnter(event) {
400
412
  this._fillCalculationrects();
@@ -517,17 +529,11 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
517
529
  onKeyUp(event) {
518
530
  if (event.composedPath().indexOf(this.eatEvents) >= 0)
519
531
  return;
520
- switch (event.key) {
521
- case 'ArrowUp':
522
- //this._resetPointerEventsForClickThrough();
523
- break;
524
- }
525
532
  event.preventDefault();
526
533
  }
527
534
  onKeyDown(event) {
528
535
  if (event.composedPath().indexOf(this.eatEvents) >= 0)
529
536
  return;
530
- //TODO: keyboard events maybe should also be handeled by tools
531
537
  if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
532
538
  this.executeCommand({ type: CommandType.undo });
533
539
  else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
@@ -605,6 +611,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
605
611
  getElementAtPoint(point, ignoreElementCallback) {
606
612
  let backupPEventsMap = new Map();
607
613
  let currentElement = this.elementFromPoint(point.x, point.y);
614
+ this.clickOverlay.style.pointerEvents = 'none';
608
615
  let lastElement = null;
609
616
  try {
610
617
  while (currentElement != null) {
@@ -641,6 +648,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
641
648
  for (let e of backupPEventsMap.entries()) {
642
649
  e[0].style.pointerEvents = e[1];
643
650
  }
651
+ this.clickOverlay.style.pointerEvents = 'auto';
644
652
  }
645
653
  return currentElement;
646
654
  }
@@ -667,6 +675,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
667
675
  if (!DesignerCanvas.hasOrIsParent(currentElement, this._canvas))
668
676
  return;
669
677
  }*/
678
+ if (currentElement instanceof SVGGraphicsElement && currentElement?.ownerSVGElement?.parentNode?.host == this.overlayLayer) {
679
+ this.clickOverlay.style.cursor = getComputedStyle(currentElement).cursor;
680
+ //@ts-ignore
681
+ currentElement.dispatchEvent(new event.constructor(event.type, event));
682
+ return;
683
+ }
684
+ this.clickOverlay.style.cursor = this._canvas.style.cursor;
670
685
  //TODO: remove duplication when tool refactoring starts
671
686
  //this._fillCalculationrects();
672
687
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
@@ -702,12 +717,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
702
717
  //search for containers below mouse cursor.
703
718
  //to do this, we need to disable pointer events for each in a loop and search wich element is there
704
719
  let backupPEventsMap = new Map();
720
+ this.clickOverlay.style.pointerEvents = 'none';
705
721
  try {
706
722
  let el = this.elementFromPoint(event.x, event.y);
707
723
  backupPEventsMap.set(el, el.style.pointerEvents);
708
724
  el.style.pointerEvents = 'none';
709
725
  if (el !== this.rootDesignItem.element) {
710
- el = this.elementFromPoint(event.x, event.y);
711
726
  while (el != null) {
712
727
  if (el === this.rootDesignItem.element)
713
728
  break;
@@ -727,6 +742,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
727
742
  for (let e of backupPEventsMap.entries()) {
728
743
  e[0].style.pointerEvents = e[1];
729
744
  }
745
+ this.clickOverlay.style.pointerEvents = 'auto';
730
746
  }
731
747
  return lstEl;
732
748
  }
@@ -0,0 +1,17 @@
1
+ import { IDesignItem } from "../../../../item/IDesignItem";
2
+ import { IDesignerCanvas } from "../../IDesignerCanvas";
3
+ import { AbstractExtension } from "../AbstractExtension.js";
4
+ import { IExtensionManager } from "../IExtensionManger";
5
+ export declare class EditTextExtension extends AbstractExtension {
6
+ private _contentEditedBound;
7
+ private _blurBound;
8
+ private static template;
9
+ private _blurTimeout;
10
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
11
+ extend(): void;
12
+ refresh(): void;
13
+ dispose(): void;
14
+ _contentEdited(): void;
15
+ _blur(): void;
16
+ _formatSelection(type: string): void;
17
+ }
@@ -0,0 +1,80 @@
1
+ import { html } from "@node-projects/base-custom-webcomponent";
2
+ import { AbstractExtension } from "../AbstractExtension.js";
3
+ import { ExtensionType } from "../ExtensionType.js";
4
+ import { OverlayLayer } from "../OverlayLayer.js";
5
+ export class EditTextExtension extends AbstractExtension {
6
+ _contentEditedBound;
7
+ _blurBound;
8
+ static template = html `
9
+ <div style="height: 24px; display: flex;">
10
+ <button data-command="bold" style="pointer-events: all; height: 24px; width: 24px; padding: 0; font-weight: 900;">b</button>
11
+ <button data-command="italic" style="pointer-events: all; height: 24px; width: 24px; padding: 0;"><em>i</em></button>
12
+ <button data-command="underline" style="pointer-events: all; height: 24px; width: 24px; padding: 0;"><ins>u</ins></button>
13
+ <button data-command="strikeThrough" style="pointer-events: all; height: 24px; width: 24px; padding: 0;"><del>s</del></button>
14
+ </div>
15
+ `;
16
+ _blurTimeout;
17
+ constructor(extensionManager, designerView, extendedItem) {
18
+ super(extensionManager, designerView, extendedItem);
19
+ this._contentEditedBound = this._contentEdited.bind(this);
20
+ this._blurBound = this._blur.bind(this);
21
+ }
22
+ extend() {
23
+ //todo -> check what to do with extensions, do not loose edit on mouse click,...
24
+ //maybe use a html edit framework
25
+ this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements();
26
+ //this.extensionManager.removeExtension(this.extendedItem, ExtensionType.PrimarySelection);
27
+ //this.extensionManager.removeExtension(this.extendedItem, ExtensionType.Selection);
28
+ this.extendedItem.element.setAttribute('contenteditable', '');
29
+ this.extendedItem.element.addEventListener('input', this._contentEditedBound);
30
+ this.extendedItem.element.addEventListener('blur', this._blurBound);
31
+ this.extendedItem.element.focus();
32
+ this.designerCanvas.eatEvents = this.extendedItem.element;
33
+ let itemRect = this.extendedItem.element.getBoundingClientRect();
34
+ const elements = EditTextExtension.template.content.cloneNode(true);
35
+ elements.querySelectorAll('button').forEach(x => x.onclick = () => this._formatSelection(x.dataset['command']));
36
+ let foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
37
+ foreignObject.setAttribute('x', '' + (itemRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor);
38
+ foreignObject.setAttribute('y', '' + ((itemRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 30));
39
+ foreignObject.setAttribute('width', '96');
40
+ foreignObject.setAttribute('height', '24');
41
+ foreignObject.appendChild(elements);
42
+ this.overlayLayerView.addOverlay(foreignObject, OverlayLayer.Foregorund);
43
+ this.overlays.push(foreignObject);
44
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'none';
45
+ }
46
+ refresh() {
47
+ this.dispose();
48
+ }
49
+ dispose() {
50
+ this._removeAllOverlays();
51
+ this.extendedItem.element.removeAttribute('contenteditable');
52
+ this.extendedItem.element.removeEventListener('input', this._contentEditedBound);
53
+ this.extendedItem.element.removeEventListener('blur', this._blurBound);
54
+ this.designerCanvas.eatEvents = null;
55
+ this.extendedItem.updateChildrenFromNodesChildren();
56
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
57
+ }
58
+ _contentEdited() {
59
+ //todo -> save???
60
+ //this.extendedItem.content = this.extendedItem.element.innerHTML;
61
+ //console.log(this.extendedItem.element.innerHTML)
62
+ }
63
+ _blur() {
64
+ if (!this._blurTimeout) {
65
+ this._blurTimeout = setTimeout(() => {
66
+ //todo, don't remove doubleclick extension (another type could be used), remove extension itself
67
+ //maybe also configureable when when to remove the extension
68
+ this.extensionManager.removeExtension(this.extendedItem, ExtensionType.Doubleclick);
69
+ }, 150);
70
+ }
71
+ }
72
+ _formatSelection(type) {
73
+ if (this._blurTimeout)
74
+ clearTimeout(this._blurTimeout);
75
+ this._blurTimeout = null;
76
+ //const selection = <Selection>(<any>this.designerView.shadowRoot).getSelection()
77
+ document.execCommand(type, false, null);
78
+ this.extendedItem.element.focus();
79
+ }
80
+ }
@@ -34,13 +34,14 @@ export class EditTextExtension extends AbstractExtension {
34
34
  const elements = EditTextExtension.template.content.cloneNode(true);
35
35
  elements.querySelectorAll('button').forEach(x => x.onclick = () => this._formatSelection(x.dataset['command']));
36
36
  let foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
37
- foreignObject.setAttribute('x', '' + (itemRect.x - this.designerCanvas.containerBoundingRect.x));
38
- foreignObject.setAttribute('y', '' + (itemRect.y - this.designerCanvas.containerBoundingRect.y - 30));
37
+ foreignObject.setAttribute('x', '' + (itemRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor);
38
+ foreignObject.setAttribute('y', '' + ((itemRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 30));
39
39
  foreignObject.setAttribute('width', '96');
40
40
  foreignObject.setAttribute('height', '24');
41
41
  foreignObject.appendChild(elements);
42
42
  this.overlayLayerView.addOverlay(foreignObject, OverlayLayer.Foregorund);
43
43
  this.overlays.push(foreignObject);
44
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'none';
44
45
  }
45
46
  refresh() {
46
47
  this.dispose();
@@ -52,6 +53,7 @@ export class EditTextExtension extends AbstractExtension {
52
53
  this.extendedItem.element.removeEventListener('blur', this._blurBound);
53
54
  this.designerCanvas.eatEvents = null;
54
55
  this.extendedItem.updateChildrenFromNodesChildren();
56
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
55
57
  }
56
58
  _contentEdited() {
57
59
  //todo -> save???
@@ -0,0 +1,9 @@
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 EditTextExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ }
@@ -0,0 +1,11 @@
1
+ import { EditTextExtension } from "./EditTextExtension.js";
2
+ export class EditTextExtensionProvider {
3
+ shouldExtend(extensionManager, designerView, designItem) {
4
+ if (designItem.name === 'button' || designItem.name === 'input')
5
+ return false;
6
+ return true;
7
+ }
8
+ getExtension(extensionManager, designerView, designItem) {
9
+ return new EditTextExtension(extensionManager, designerView, designItem);
10
+ }
11
+ }
@@ -0,0 +1,20 @@
1
+ import { IDesignItem } from "../../../../item/IDesignItem";
2
+ import { IDesignerCanvas } from "../../IDesignerCanvas";
3
+ import { AbstractExtension } from "../AbstractExtension.js";
4
+ import { IExtensionManager } from "../IExtensionManger";
5
+ export declare class EditTextWithStyloExtension extends AbstractExtension {
6
+ private _contentEditedBound;
7
+ private _blurBound;
8
+ private static template;
9
+ private _resizeObserver;
10
+ private _rect1;
11
+ private _rect2;
12
+ private _rect3;
13
+ private _rect4;
14
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
15
+ extend(): void;
16
+ private _drawClickOverlayRects;
17
+ refresh(): void;
18
+ dispose(): void;
19
+ _clickOutside(e: any): void;
20
+ }
@@ -0,0 +1,83 @@
1
+ import { html } from "@node-projects/base-custom-webcomponent";
2
+ import { AbstractExtension } from "../AbstractExtension.js";
3
+ import { ExtensionType } from "../ExtensionType.js";
4
+ import { OverlayLayer } from "../OverlayLayer.js";
5
+ export class EditTextWithStyloExtension extends AbstractExtension {
6
+ _contentEditedBound;
7
+ _blurBound;
8
+ static template = html `
9
+ <stylo-editor></stylo-editor>
10
+ `;
11
+ _resizeObserver;
12
+ _rect1;
13
+ _rect2;
14
+ _rect3;
15
+ _rect4;
16
+ constructor(extensionManager, designerView, extendedItem) {
17
+ super(extensionManager, designerView, extendedItem);
18
+ import('@papyrs/stylo/dist/esm/loader.js').then(d => d.defineCustomElements());
19
+ }
20
+ extend() {
21
+ this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements();
22
+ this.extendedItem.element.setAttribute('contenteditable', 'true');
23
+ this.extendedItem.element.addEventListener('input', this._contentEditedBound);
24
+ this.extendedItem.element.addEventListener('blur', this._blurBound);
25
+ this.extendedItem.element.focus();
26
+ this.designerCanvas.eatEvents = this.extendedItem.element;
27
+ const elements = EditTextWithStyloExtension.template.content.cloneNode(true);
28
+ let foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
29
+ foreignObject.setAttribute('x', '0');
30
+ foreignObject.setAttribute('y', '0');
31
+ foreignObject.setAttribute('width', '100%');
32
+ foreignObject.setAttribute('height', '100%');
33
+ foreignObject.appendChild(elements);
34
+ this.overlayLayerView.addOverlay(foreignObject, OverlayLayer.Foregorund);
35
+ this.overlays.push(foreignObject);
36
+ this._drawClickOverlayRects();
37
+ this._rect1.addEventListener('pointerdown', (e) => this._clickOutside(e));
38
+ this._rect1.addEventListener('pointerup', (e) => this._clickOutside(e));
39
+ this._rect2.addEventListener('pointerdown', (e) => this._clickOutside(e));
40
+ this._rect2.addEventListener('pointerup', (e) => this._clickOutside(e));
41
+ this._rect3.addEventListener('pointerdown', (e) => this._clickOutside(e));
42
+ this._rect3.addEventListener('pointerup', (e) => this._clickOutside(e));
43
+ this._rect4.addEventListener('pointerdown', (e) => this._clickOutside(e));
44
+ this._rect4.addEventListener('pointerup', (e) => this._clickOutside(e));
45
+ requestAnimationFrame(() => {
46
+ const stylo = foreignObject.querySelector('stylo-editor');
47
+ //@ts-ignore
48
+ stylo.containerRef = this.extendedItem.element;
49
+ //@ts-ignore
50
+ stylo.config = {
51
+ dontInjectHeadCss: true
52
+ };
53
+ });
54
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'none';
55
+ this._resizeObserver = new ResizeObserver(() => this._drawClickOverlayRects());
56
+ this._resizeObserver.observe(this.extendedItem.element);
57
+ }
58
+ _drawClickOverlayRects() {
59
+ const normalized = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
60
+ this._rect1 = this._drawRect(0, 0, this.designerCanvas.containerBoundingRect.width, normalized.y, 'svg-transparent', this._rect1, OverlayLayer.Normal);
61
+ this._rect2 = this._drawRect(0, 0, normalized.x, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect2, OverlayLayer.Normal);
62
+ this._rect3 = this._drawRect(normalized.x + normalized.width, 0, this.designerCanvas.containerBoundingRect.width, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect3, OverlayLayer.Normal);
63
+ this._rect4 = this._drawRect(0, normalized.y + normalized.height, this.designerCanvas.containerBoundingRect.width, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect4, OverlayLayer.Normal);
64
+ }
65
+ refresh() {
66
+ this.dispose();
67
+ }
68
+ dispose() {
69
+ this._resizeObserver.disconnect();
70
+ this._removeAllOverlays();
71
+ this.extendedItem.element.removeAttribute('contenteditable');
72
+ this.designerCanvas.eatEvents = null;
73
+ this.extendedItem.updateChildrenFromNodesChildren();
74
+ this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
75
+ }
76
+ _clickOutside(e) {
77
+ this.extendedItem.innerHTML = this.extendedItem.element.innerHTML;
78
+ //TODO: the extension should remove itself, not the doubleclick extensions
79
+ // cause the extension could be applied in another way
80
+ //maybe also the removal is maybe not desired (for example if it's permanet extension)
81
+ this.extensionManager.removeExtension(this.extendedItem, ExtensionType.Doubleclick);
82
+ }
83
+ }
@@ -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 EditTextWithStyloExtensionProvider 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
+ }
@@ -0,0 +1,15 @@
1
+ import { EditTextWithStyloExtension } from "./EditTextWithStyloExtension.js";
2
+ import { css } from "@node-projects/base-custom-webcomponent";
3
+ export class EditTextWithStyloExtensionProvider {
4
+ shouldExtend(extensionManager, designerView, designItem) {
5
+ if (designItem.name === 'button' || designItem.name === 'input')
6
+ return false;
7
+ return true;
8
+ }
9
+ getExtension(extensionManager, designerView, designItem) {
10
+ return new EditTextWithStyloExtension(extensionManager, designerView, designItem);
11
+ }
12
+ style = css `
13
+ .svg-transparent { stroke: none; fill: transparent; pointer-events: all; }
14
+ `;
15
+ }
@@ -4,8 +4,6 @@ import { EventNames } from "../../../../enums/EventNames";
4
4
  import { createPathD } from "../../../helper/PathDataPolyfill";
5
5
  import { ContextMenuHelper } from "../../../helper/contextMenu/ContextMenuHelper";
6
6
  export class PathExtension extends AbstractExtension {
7
- //private _itemRect: DOMRect;
8
- //private _svgRect: DOMRect;
9
7
  _lastPos;
10
8
  _parentRect;
11
9
  _startPos;
@@ -16,8 +14,6 @@ export class PathExtension extends AbstractExtension {
16
14
  super(extensionManager, designerView, extendedItem);
17
15
  }
18
16
  extend() {
19
- //this._itemRect = this.extendedItem.element.getBoundingClientRect();
20
- //this._svgRect = (<SVGGeometryElement>this.extendedItem.element).ownerSVGElement.getBoundingClientRect();
21
17
  this._parentRect = this.extendedItem.element.parentElement.getBoundingClientRect();
22
18
  this._pathdata = this.extendedItem.node.getPathData({ normalize: false });
23
19
  for (let p of this._pathdata) {
@@ -125,7 +121,7 @@ export class PathExtension extends AbstractExtension {
125
121
  }
126
122
  }
127
123
  _drawPathCircle(x, y, p, index) {
128
- let circle = this._drawCircle(this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y, 5, 'svg-path');
124
+ let circle = this._drawCircle((this._parentRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + x, (this._parentRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + y, 5, 'svg-path');
129
125
  let circlePos = { x: x, y: y };
130
126
  const items = [];
131
127
  const pidx = this._pathdata.indexOf(p);
@@ -109,6 +109,7 @@ export class TreeView extends BaseCustomWebComponentLazyAppend {
109
109
  constructor() {
110
110
  super();
111
111
  this._treeDiv = document.createElement('div');
112
+ this._treeDiv.style.userSelect = 'none';
112
113
  this.shadowRoot.appendChild(this._treeDiv);
113
114
  this._treeDiv.addEventListener('click', this._clickElement.bind(this));
114
115
  }
@@ -53,15 +53,19 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
53
53
  display: flex;
54
54
  position: sticky;
55
55
  right: 0;
56
- padding-right: 4px;
56
+ padding-right: 2px;
57
57
  align-items: center;
58
58
  gap: 2px;
59
59
  background: #ffffffc9;
60
- width: 70px;
60
+ width: 42px;
61
61
  justify-content: flex-end;
62
62
  background: white;
63
63
  }
64
64
 
65
+ .cmd > img {
66
+ width: 10px;
67
+ }
68
+
65
69
  table.fancytree-ext-table tbody tr.fancytree-selected {
66
70
  background-color: #bebebe;
67
71
  }
@@ -168,16 +172,16 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
168
172
  node.tr.oncontextmenu = (e) => this.showDesignItemContextMenu(designItem, e);
169
173
  let d = document.createElement("div");
170
174
  d.className = "cmd";
171
- let img = document.createElement('img');
172
- this._showHideAtDesignTimeState(img, designItem);
173
- img.onclick = () => this._switchHideAtDesignTimeState(img, designItem);
174
- img.title = 'hide in designer';
175
- d.appendChild(img);
176
175
  let imgL = document.createElement('img');
177
176
  this._showLockAtDesignTimeState(imgL, designItem);
178
177
  imgL.onclick = () => this._switchLockAtDesignTimeState(imgL, designItem);
179
178
  imgL.title = 'lock';
180
179
  d.appendChild(imgL);
180
+ let img = document.createElement('img');
181
+ this._showHideAtDesignTimeState(img, designItem);
182
+ img.onclick = () => this._switchHideAtDesignTimeState(img, designItem);
183
+ img.title = 'hide in designer';
184
+ d.appendChild(img);
181
185
  let imgH = document.createElement('img');
182
186
  this._showHideAtRunTimeState(imgH, designItem);
183
187
  imgH.onclick = () => this._switchHideAtRunTimeState(imgH, designItem);
package/dist/index.d.ts CHANGED
@@ -55,8 +55,6 @@ export type { IHtmlParserService } from "./elements/services/htmlParserService/I
55
55
  export type { IIntializationService } from "./elements/services/initializationService/IIntializationService.js";
56
56
  export * from "./elements/services/instanceService/DefaultInstanceService.js";
57
57
  export type { IInstanceService } from "./elements/services/instanceService/IInstanceService.js";
58
- export * from "./elements/services/instanceService/PrepareElementsForDesignerService.js";
59
- export type { IPrepareElementsForDesignerService } from "./elements/services/instanceService/IPrepareElementsForDesignerService.js";
60
58
  export * from "./elements/services/manifestParsers/WebcomponentManifestParserService.js";
61
59
  export type { IModelCommandService } from "./elements/services/modelCommandService/IModelCommandService.js";
62
60
  export * from "./elements/services/modelCommandService/DefaultModelCommandService.js";
@@ -132,8 +130,6 @@ export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
132
130
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
133
131
  export * from "./elements/widgets/designerView/extensions/GridExtension.js";
134
132
  export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
135
- export * from "./elements/widgets/designerView/extensions/IframeExtension.js";
136
- export * from "./elements/widgets/designerView/extensions/IframeExtensionProvider.js";
137
133
  export * from "./elements/widgets/designerView/extensions/InvisibleDivExtension.js";
138
134
  export * from "./elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js";
139
135
  export * from "./elements/widgets/designerView/extensions/MouseOverExtension.js";
@@ -152,6 +148,10 @@ export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtens
152
148
  export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js";
153
149
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtension.js";
154
150
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js";
151
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtension.js";
152
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js";
153
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js";
154
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.js";
155
155
  export type { IContextMenuExtension, ContextmenuInitiator } from "./elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js";
156
156
  export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
157
157
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
package/dist/index.js CHANGED
@@ -33,7 +33,6 @@ export * from "./elements/services/htmlWriterService/LitTsElementWriterService.j
33
33
  export * from "./elements/services/htmlParserService/DefaultHtmlParserService.js";
34
34
  export * from "./elements/services/htmlParserService/NodeHtmlParserService.js";
35
35
  export * from "./elements/services/instanceService/DefaultInstanceService.js";
36
- export * from "./elements/services/instanceService/PrepareElementsForDesignerService.js";
37
36
  export * from "./elements/services/manifestParsers/WebcomponentManifestParserService.js";
38
37
  export * from "./elements/services/modelCommandService/DefaultModelCommandService.js";
39
38
  export * from "./elements/services/propertiesService/DefaultEditorTypesService.js";
@@ -92,8 +91,6 @@ export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
92
91
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
93
92
  export * from "./elements/widgets/designerView/extensions/GridExtension.js";
94
93
  export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
95
- export * from "./elements/widgets/designerView/extensions/IframeExtension.js";
96
- export * from "./elements/widgets/designerView/extensions/IframeExtensionProvider.js";
97
94
  export * from "./elements/widgets/designerView/extensions/InvisibleDivExtension.js";
98
95
  export * from "./elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js";
99
96
  export * from "./elements/widgets/designerView/extensions/MouseOverExtension.js";
@@ -112,6 +109,10 @@ export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtens
112
109
  export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js";
113
110
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtension.js";
114
111
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js";
112
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtension.js";
113
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js";
114
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js";
115
+ export * from "./elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.js";
115
116
  export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
116
117
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
117
118
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.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.86",
4
+ "version": "0.0.87",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -13,12 +13,13 @@
13
13
  "prepublishOnly": "npm run build"
14
14
  },
15
15
  "dependencies": {
16
- "@node-projects/base-custom-webcomponent": "^0.5.0",
16
+ "@node-projects/base-custom-webcomponent": "^0.5.3",
17
17
  "construct-style-sheets-polyfill": "^3.1.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@node-projects/lean-he-esm": "^3.3.0",
21
21
  "@node-projects/node-html-parser-esm": "^2.4.1",
22
+ "@papyrs/stylo": "^0.0.8",
22
23
  "@types/codemirror": "^5.60.5",
23
24
  "@types/jquery": "^3.5.13",
24
25
  "@types/jquery.fancytree": "0.0.7",
@@ -26,10 +27,10 @@
26
27
  "codemirror": "^5.65.1",
27
28
  "esprima-next": "^5.8.1",
28
29
  "html2canvas": "*",
29
- "jest": "^27.4.7",
30
+ "jest": "^27.5.1",
30
31
  "jquery": "^3.6.0",
31
32
  "jquery.fancytree": "^2.38.1",
32
- "monaco-editor": "^0.31.1",
33
+ "monaco-editor": "^0.32.1",
33
34
  "ts-jest": "^27.1.3",
34
35
  "typescript": "^4.5.5",
35
36
  "typescript-lit-html-plugin": "^0.9.0"