@node-projects/web-component-designer 0.0.119 → 0.0.120

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.
@@ -133,12 +133,17 @@ export class ContextMenuHelper {
133
133
  let ul = document.createElement('ul');
134
134
  ul.className = 'context-menu__items';
135
135
  nav.appendChild(ul);
136
+ let lastWasSeperator = false;
136
137
  for (let i of items) {
137
138
  if (i.title == '-') {
138
- let hr = document.createElement('hr');
139
- ul.appendChild(hr);
139
+ if (!lastWasSeperator) {
140
+ let hr = document.createElement('hr');
141
+ ul.appendChild(hr);
142
+ lastWasSeperator = true;
143
+ }
140
144
  }
141
145
  else {
146
+ lastWasSeperator = false;
142
147
  let li = document.createElement('li');
143
148
  li.className = 'context-menu__item';
144
149
  let div = document.createElement('div');
@@ -6,12 +6,14 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
6
6
  _conditionalyWriteIndent(indentedTextWriter, designItem) {
7
7
  if ((designItem.element instanceof HTMLElement && !isInline(designItem.element)) ||
8
8
  (designItem.element.previousElementSibling instanceof HTMLElement && !isInline(designItem.element.previousElementSibling)) ||
9
- (designItem.element.previousElementSibling == null && !isInline(designItem.element.parentElement) && (designItem.element.previousSibling == null || isEmptyTextNode(designItem.element.previousSibling))))
9
+ (designItem.element.previousElementSibling == null && !isInline(designItem.element.parentElement) && (designItem.element.previousSibling == null || isEmptyTextNode(designItem.element.previousSibling))) ||
10
+ (designItem.element instanceof SVGElement))
10
11
  indentedTextWriter.writeIndent();
11
12
  }
12
13
  _conditionalyWriteNewline(indentedTextWriter, designItem) {
13
14
  if ((designItem.element instanceof HTMLElement && !isInline(designItem.element)) ||
14
- (designItem.element.nextElementSibling instanceof HTMLElement && !isInline(designItem.element.nextElementSibling)))
15
+ (designItem.element.nextElementSibling instanceof HTMLElement && !isInline(designItem.element.nextElementSibling)) ||
16
+ (designItem.element instanceof SVGElement))
15
17
  indentedTextWriter.writeNewline();
16
18
  }
17
19
  write(indentedTextWriter, designItems, rootContainerKeepInline, options, designItemsAssignmentList) {
@@ -48,7 +50,7 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
48
50
  this.writeTextNode(indentedTextWriter, designItem, false);
49
51
  }
50
52
  else {
51
- if (designItem.element instanceof HTMLElement && !isInline(designItem.element)) {
53
+ if (designItem.element instanceof HTMLElement && !isInline(designItem.element) || (designItem.element instanceof SVGElement)) {
52
54
  indentedTextWriter.writeNewline();
53
55
  indentedTextWriter.levelRaise();
54
56
  }
@@ -56,9 +58,10 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
56
58
  this.internalWrite(indentedTextWriter, c, options, designItemsAssignmentList);
57
59
  let childSingleTextNode = c.childCount === 1 && c.firstChild.nodeType === NodeType.TextNode;
58
60
  if (childSingleTextNode)
59
- indentedTextWriter.writeNewline();
61
+ if (!indentedTextWriter.isLastCharNewline())
62
+ indentedTextWriter.writeNewline();
60
63
  }
61
- if (designItem.element instanceof HTMLElement && !isInline(designItem.element)) {
64
+ if (designItem.element instanceof HTMLElement && !isInline(designItem.element) || (designItem.element instanceof SVGElement)) {
62
65
  indentedTextWriter.levelShrink();
63
66
  if (!indentedTextWriter.isLastCharNewline())
64
67
  indentedTextWriter.writeNewline();
@@ -73,7 +76,8 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
73
76
  if (!DomConverter.IsSelfClosingElement(designItem.name))
74
77
  indentedTextWriter.write('</' + designItem.name + '>');
75
78
  //if (!contentSingleTextNode)
76
- this._conditionalyWriteNewline(indentedTextWriter, designItem);
79
+ if (!indentedTextWriter.isLastCharNewline())
80
+ this._conditionalyWriteNewline(indentedTextWriter, designItem);
77
81
  }
78
82
  if (designItemsAssignmentList) {
79
83
  designItemsAssignmentList.set(designItem, { start: start, length: indentedTextWriter.position - start - 1 });
@@ -319,9 +319,26 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
319
319
  async handlePasteCommand() {
320
320
  const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
321
321
  let grp = this.rootDesignItem.openGroup("Insert");
322
+ let pasteContainer = this.rootDesignItem;
323
+ let pCon = this.instanceServiceContainer.selectionService.primarySelection;
324
+ while (pCon != null) {
325
+ const containerStyle = getComputedStyle(pCon.element);
326
+ let newContainerService;
327
+ newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(pCon, containerStyle));
328
+ if (newContainerService) {
329
+ if (newContainerService.canEnter(pCon, designItems)) {
330
+ pasteContainer = pCon;
331
+ break;
332
+ }
333
+ else {
334
+ pCon = pCon.parent;
335
+ continue;
336
+ }
337
+ }
338
+ }
322
339
  if (designItems) {
323
340
  for (let di of designItems) {
324
- this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
341
+ this.instanceServiceContainer.undoService.execute(new InsertAction(pasteContainer, pasteContainer.childCount, di));
325
342
  }
326
343
  const intializationService = this.serviceContainer.intializationService;
327
344
  if (intializationService) {
@@ -5,7 +5,7 @@ export class SelectAllChildrenContextMenu {
5
5
  }
6
6
  provideContextMenuItems(event, designerCanvas, designItem) {
7
7
  return [{
8
- title: 'Select all Children', action: () => {
8
+ title: 'select all Children', action: () => {
9
9
  designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(Array.from(designItem.children()).filter(x => x.nodeType == NodeType.Element));
10
10
  }
11
11
  }];
@@ -30,7 +30,7 @@ export class DesignerToolbarButton extends BaseCustomWebComponentConstructorAppe
30
30
  this.tools = tools;
31
31
  this._img = this._getDomElement('img');
32
32
  this._div = this._getDomElement('div');
33
- this._img.onclick = () => {
33
+ this._div.onclick = () => {
34
34
  if (this.popup) {
35
35
  this.getRootNode().host.showPopup(this);
36
36
  }
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.119",
4
+ "version": "0.0.120",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",