@node-projects/web-component-designer 0.0.76 → 0.0.80

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 (49) hide show
  1. package/.github/FUNDING.yml +1 -0
  2. package/dist/elements/documentContainer.d.ts +3 -0
  3. package/dist/elements/documentContainer.js +13 -3
  4. package/dist/elements/helper/ElementHelper.d.ts +7 -0
  5. package/dist/elements/helper/ElementHelper.js +13 -0
  6. package/dist/elements/helper/IndentedTextWriter.d.ts +1 -0
  7. package/dist/elements/helper/IndentedTextWriter.js +3 -0
  8. package/dist/elements/helper/PathDataPolyfill.js +1 -1
  9. package/dist/elements/services/DefaultServiceBootstrap.js +1 -1
  10. package/dist/elements/services/ServiceContainer.d.ts +1 -1
  11. package/dist/elements/services/ServiceContainer.js +2 -2
  12. package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +1 -1
  13. package/dist/elements/services/demoProviderService/DemoProviderService.js +2 -1
  14. package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +1 -1
  15. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +22 -0
  16. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +133 -0
  17. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +2 -2
  18. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +34 -19
  19. package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +5 -6
  20. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +9 -0
  21. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +43 -0
  22. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.d.ts +27 -0
  23. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +93 -0
  24. package/dist/elements/services/initializationService/DefaultIntializationService.d.ts +6 -0
  25. package/dist/elements/services/initializationService/DefaultIntializationService.js +22 -0
  26. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +3 -1
  27. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +39 -27
  28. package/dist/elements/widgets/codeView/code-view-ace.js +1 -1
  29. package/dist/elements/widgets/demoView/IDemoView.d.ts +1 -1
  30. package/dist/elements/widgets/demoView/demoView.d.ts +1 -1
  31. package/dist/elements/widgets/demoView/demoView.js +2 -2
  32. package/dist/elements/widgets/designerView/DomConverter.js +1 -7
  33. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +3 -1
  34. package/dist/elements/widgets/designerView/extensions/PathExtension.js +59 -5
  35. package/dist/elements/widgets/designerView/overlayLayerView.js +1 -2
  36. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +1 -0
  37. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +1 -0
  38. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +0 -1
  39. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +12 -8
  40. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +1 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.js +3 -0
  43. package/package.json +4 -4
  44. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +0 -26
  45. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +0 -69
  46. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
  47. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +0 -1
  48. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +0 -26
  49. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +0 -69
@@ -0,0 +1,93 @@
1
+ import { DomConverter } from '../../widgets/designerView/DomConverter';
2
+ import { CssCombiner } from '../../helper/CssCombiner';
3
+ import { NodeType } from '../../item/NodeType';
4
+ import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper';
5
+ import { ElementDisplayType, getElementDisplaytype } from '../../helper/ElementHelper.js';
6
+ export var ElementContainerType;
7
+ (function (ElementContainerType) {
8
+ ElementContainerType[ElementContainerType["block"] = 0] = "block";
9
+ ElementContainerType[ElementContainerType["complex"] = 1] = "complex";
10
+ })(ElementContainerType || (ElementContainerType = {}));
11
+ export class SimpleHtmlWriterService {
12
+ writeAttributes(writeContext, designItem) {
13
+ if (designItem.hasAttributes) {
14
+ for (const a of designItem.attributes) {
15
+ writeContext.indentedTextWriter.write(' ');
16
+ if (typeof a[1] === 'string') {
17
+ if (a[1] === "")
18
+ writeContext.indentedTextWriter.write(a[0]);
19
+ else
20
+ writeContext.indentedTextWriter.write(a[0] + '="' + DomConverter.normalizeAttributeValue(a[1]) + '"');
21
+ }
22
+ else if (!a[1])
23
+ writeContext.indentedTextWriter.write(a[0]);
24
+ else {
25
+ }
26
+ }
27
+ }
28
+ }
29
+ writeStyles(writeContext, designItem) {
30
+ if (designItem.hasStyles) {
31
+ writeContext.indentedTextWriter.write(' style="');
32
+ let styles = designItem.styles;
33
+ if (writeContext.options.compressCssToShorthandProperties)
34
+ styles = CssCombiner.combine(styles);
35
+ for (const s of styles) {
36
+ if (s[0]) {
37
+ writeContext.indentedTextWriter.write(PropertiesHelper.camelToDashCase(s[0]) + ':' + DomConverter.normalizeAttributeValue(s[1]) + ';');
38
+ }
39
+ }
40
+ writeContext.indentedTextWriter.write('"');
41
+ }
42
+ }
43
+ _writeTextNode(writeContext, designItem) {
44
+ writeContext.lastElementDisplayType = ElementDisplayType.inline;
45
+ let content = DomConverter.normalizeContentValue(designItem.content);
46
+ writeContext.indentedTextWriter.write(content);
47
+ }
48
+ _writeCommentNode(writeContext, designItem) {
49
+ writeContext.indentedTextWriter.write('<!--' + designItem.content + '-->');
50
+ }
51
+ _writeElementNode(writeContext, designItem) {
52
+ const currentElementDisplayType = getElementDisplaytype(designItem.element);
53
+ writeContext.lastElementDisplayType = currentElementDisplayType;
54
+ writeContext.indentedTextWriter.write('<' + designItem.name);
55
+ this.writeAttributes(writeContext, designItem);
56
+ this.writeStyles(writeContext, designItem);
57
+ writeContext.indentedTextWriter.write('>');
58
+ if (designItem.hasChildren) {
59
+ const children = designItem.children();
60
+ this._writeDesignItemList(currentElementDisplayType, writeContext, children);
61
+ }
62
+ else if (designItem.hasContent) {
63
+ writeContext.indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
64
+ }
65
+ if (!DomConverter.IsSelfClosingElement(designItem.name)) {
66
+ writeContext.indentedTextWriter.write('</' + designItem.name + '>');
67
+ if (currentElementDisplayType !== ElementDisplayType.none) {
68
+ writeContext.lastElementDisplayType = currentElementDisplayType;
69
+ }
70
+ }
71
+ }
72
+ _writeDesignItemList(currentElementDisplayType, writeContext, children) {
73
+ for (const c of children) {
74
+ this._writeInternal(writeContext, c);
75
+ }
76
+ }
77
+ _writeInternal(writeContext, designItem) {
78
+ const start = writeContext.indentedTextWriter.position;
79
+ if (designItem.nodeType === NodeType.TextNode)
80
+ this._writeTextNode(writeContext, designItem);
81
+ else if (designItem.nodeType === NodeType.Comment)
82
+ this._writeCommentNode(writeContext, designItem);
83
+ else if (designItem.nodeType === NodeType.Element)
84
+ this._writeElementNode(writeContext, designItem);
85
+ if (writeContext.designItemsAssignmentList) {
86
+ writeContext.designItemsAssignmentList.set(designItem, { start: start, length: writeContext.indentedTextWriter.position - start - 1 });
87
+ }
88
+ }
89
+ write(indentedTextWriter, designItems, rootContainerKeepInline, options, designItemsAssignmentList) {
90
+ const context = { indentedTextWriter, options, lastElementDisplayType: null, containerDisplayType: ElementContainerType.block, designItemsAssignmentList };
91
+ this._writeDesignItemList(ElementDisplayType.inline, context, designItems);
92
+ }
93
+ }
@@ -0,0 +1,6 @@
1
+ import { IDesignItem } from '../../item/IDesignItem';
2
+ import { IIntializationService } from './IIntializationService';
3
+ export declare class DefaultIntializationService implements IIntializationService {
4
+ init(designItem: IDesignItem): void;
5
+ initializeIframe(iframe: HTMLIFrameElement): void;
6
+ }
@@ -0,0 +1,22 @@
1
+ export class DefaultIntializationService {
2
+ init(designItem) {
3
+ if (designItem.name == 'iframe') {
4
+ this.initializeIframe(designItem.element);
5
+ }
6
+ }
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);
16
+ }
17
+ iframe.contentWindow.addEventListener('pointerdown', cloneIframeEvent);
18
+ iframe.contentWindow.addEventListener('pointermove', cloneIframeEvent);
19
+ iframe.contentWindow.addEventListener('pointerup', cloneIframeEvent);
20
+ }
21
+ ;
22
+ }
@@ -13,7 +13,9 @@ export declare class WebcomponentManifestParserService extends UnkownElementProp
13
13
  private _propertiesList;
14
14
  private _resolveStored;
15
15
  private _rejectStored;
16
- constructor(name: string, file: string);
16
+ private _importPrefix;
17
+ constructor(name: string, fileOrObject: string | object, importPrefix?: string);
18
+ private _parseManifest;
17
19
  private manifestClassPropertyTypeToEditorPropertyType;
18
20
  getElements(): Promise<IElementDefinition[]>;
19
21
  isHandledElement(designItem: IDesignItem): boolean;
@@ -9,43 +9,55 @@ export class WebcomponentManifestParserService extends UnkownElementPropertiesSe
9
9
  _propertiesList;
10
10
  _resolveStored;
11
11
  _rejectStored;
12
- constructor(name, file) {
12
+ _importPrefix = '';
13
+ constructor(name, fileOrObject, importPrefix = '') {
13
14
  super();
14
15
  this._name = name;
15
- let path = file.split('/').slice(0, -1).join('/');
16
- import(file, { assert: { type: 'json' } }).then(module => {
17
- this._packageData = module.default;
18
- this._elementList = [];
19
- this._propertiesList = {};
20
- for (let m of this._packageData.modules) {
21
- for (let e of m.exports) {
22
- if (e.kind == 'custom-element-definition') {
23
- this._elementList.push({ tag: e.name, import: path + '/' + e.declaration.module });
24
- let properties = [];
25
- let declaration = m.declarations.find(x => x.name == e.declaration.name);
26
- for (let d of declaration.members) {
27
- if (d.kind == 'field') {
28
- let pType = PropertyType.property;
16
+ this._importPrefix = importPrefix;
17
+ if (typeof fileOrObject === 'string') {
18
+ this._importPrefix = this._importPrefix ?? fileOrObject.split('/').slice(0, -1).join('/');
19
+ import(fileOrObject, { assert: { type: 'json' } }).then(module => {
20
+ this._packageData = module.default;
21
+ this._parseManifest();
22
+ }).catch(err => {
23
+ if (this._rejectStored) {
24
+ this._rejectStored.forEach(x => x(err));
25
+ this._resolveStored = null;
26
+ this._rejectStored = null;
27
+ }
28
+ });
29
+ }
30
+ else {
31
+ this._packageData = fileOrObject;
32
+ this._parseManifest();
33
+ }
34
+ }
35
+ _parseManifest() {
36
+ this._elementList = [];
37
+ this._propertiesList = {};
38
+ for (let m of this._packageData.modules) {
39
+ for (let e of m.exports) {
40
+ if (e.kind == 'custom-element-definition') {
41
+ this._elementList.push({ tag: e.name, import: this._importPrefix + '/' + e.declaration.module });
42
+ let properties = [];
43
+ let declaration = m.declarations.find(x => x.name == e.declaration.name);
44
+ for (let d of declaration.members) {
45
+ if (d.kind == 'field') {
46
+ let pType = PropertyType.property;
47
+ if (declaration.attributes)
29
48
  pType = declaration.attributes.find(x => x.fieldName == d.name) != null ? PropertyType.propertyAndAttribute : PropertyType.property;
30
- properties.push({ name: d.name, service: this, propertyType: pType, type: this.manifestClassPropertyTypeToEditorPropertyType(d.type?.text) });
31
- }
49
+ properties.push({ name: d.name, service: this, propertyType: pType, type: this.manifestClassPropertyTypeToEditorPropertyType(d.type?.text) });
32
50
  }
33
- this._propertiesList[e.name] = properties;
34
51
  }
35
- }
36
- if (this._resolveStored) {
37
- this._resolveStored.forEach(x => x(this._elementList));
38
- this._resolveStored = null;
39
- this._rejectStored = null;
52
+ this._propertiesList[e.name] = properties;
40
53
  }
41
54
  }
42
- }).catch(err => {
43
- if (this._rejectStored) {
44
- this._rejectStored.forEach(x => x(err));
55
+ if (this._resolveStored) {
56
+ this._resolveStored.forEach(x => x(this._elementList));
45
57
  this._resolveStored = null;
46
58
  this._rejectStored = null;
47
59
  }
48
- });
60
+ }
49
61
  }
50
62
  manifestClassPropertyTypeToEditorPropertyType(type) {
51
63
  if (type) {
@@ -95,7 +95,7 @@ export class CodeViewAce extends BaseCustomWebComponentLazyAppend {
95
95
  this._aceEditor = ace.edit(this._editor, {
96
96
  theme: "ace/theme/chrome",
97
97
  mode: "ace/mode/html",
98
- value: "test",
98
+ value: "",
99
99
  autoScrollEditorIntoView: true,
100
100
  fontSize: "14px",
101
101
  showPrintMargin: false,
@@ -1,5 +1,5 @@
1
1
  import { InstanceServiceContainer } from '../../services/InstanceServiceContainer';
2
2
  import { ServiceContainer } from '../../services/ServiceContainer';
3
3
  export interface IDemoView {
4
- display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): any;
4
+ display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string, style: string): any;
5
5
  }
@@ -7,5 +7,5 @@ export declare class DemoView extends BaseCustomWebComponentLazyAppend implement
7
7
  private _loading;
8
8
  static readonly style: CSSStyleSheet;
9
9
  constructor();
10
- display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): Promise<void>;
10
+ display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string, style: string): Promise<void>;
11
11
  }
@@ -29,9 +29,9 @@ export class DemoView extends BaseCustomWebComponentLazyAppend {
29
29
  this._loading.textContent = '🛀 Hold on, loading...';
30
30
  this.shadowRoot.appendChild(this._loading);
31
31
  }
32
- async display(serviceContainer, instanceServiceContainer, code) {
32
+ async display(serviceContainer, instanceServiceContainer, code, style) {
33
33
  this._loading.hidden = false;
34
- await serviceContainer.demoProviderService.provideDemo(this._placeholder, serviceContainer, instanceServiceContainer, code);
34
+ await serviceContainer.demoProviderService.provideDemo(this._placeholder, serviceContainer, instanceServiceContainer, code, style);
35
35
  this._loading.hidden = true;
36
36
  }
37
37
  }
@@ -19,7 +19,6 @@ export class DomConverter {
19
19
  tag === 'col' ||
20
20
  tag === 'embed' ||
21
21
  tag === 'hr' ||
22
- tag === 'iframe' ||
23
22
  tag === 'img' ||
24
23
  tag === 'input' ||
25
24
  tag === 'keygen' ||
@@ -33,12 +32,7 @@ export class DomConverter {
33
32
  static ConvertToString(designItems, designItemsAssignmentList) {
34
33
  let itw = new IndentedTextWriter();
35
34
  let options = { beautifyOutput: true, writeDesignerProperties: true, compressCssToShorthandProperties: true };
36
- for (let d of designItems) {
37
- d.serviceContainer.forSomeServicesTillResult('htmlWriterService', (s) => {
38
- if (s.canWrite(d))
39
- s.write(itw, d, options, designItemsAssignmentList);
40
- });
41
- }
35
+ designItems[0].serviceContainer.htmlWriterService.write(itw, designItems, true, options, designItemsAssignmentList);
42
36
  return itw.getString();
43
37
  }
44
38
  }
@@ -2,6 +2,7 @@ import { IDesignItem } from "../../../item/IDesignItem";
2
2
  import { IDesignerCanvas } from "../IDesignerCanvas";
3
3
  import { AbstractExtension } from "./AbstractExtension";
4
4
  import "../../../helper/PathDataPolyfill";
5
+ import { IPoint } from "../../../../interfaces/IPoint";
5
6
  import { IExtensionManager } from "./IExtensionManger";
6
7
  import { PathData } from "../../../helper/PathDataPolyfill";
7
8
  export declare class PathExtension extends AbstractExtension {
@@ -14,9 +15,10 @@ export declare class PathExtension extends AbstractExtension {
14
15
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
15
16
  extend(): void;
16
17
  pointerEvent(event: PointerEvent, circle: SVGCircleElement, p: PathData, index: number): void;
17
- _drawPath(path: PathData[], index: number): void;
18
+ _drawPath(path: PathData[], index: number): string;
18
19
  _drawPathCircle(x: number, y: number, p: PathData, index: number): void;
19
20
  _drawPathLine(x1: number, y1: number, x2: number, y2: number): void;
21
+ _drawHelpLine(pStart: IPoint, pEnd: IPoint): void;
20
22
  refresh(): void;
21
23
  dispose(): void;
22
24
  }
@@ -83,9 +83,27 @@ export class PathExtension extends AbstractExtension {
83
83
  const cy = event.y - this._lastPos.y + this._circlePos.y;
84
84
  const dx = cx - this._circlePos.x;
85
85
  const dy = cy - this._circlePos.y;
86
- p.values[index] = this._originalPathPoint.x + dx;
87
- p.values[index + 1] = this._originalPathPoint.y + dy;
88
- this._drawPath(this._pathdata, index);
86
+ if (event.shiftKey) {
87
+ if (Math.abs(dx) >= Math.abs(dy)) {
88
+ p.values[index] = this._originalPathPoint.x + dx;
89
+ circle.setAttribute("cx", (this._circlePos.x + dx).toString());
90
+ p.values[index + 1] = this._originalPathPoint.y;
91
+ circle.setAttribute("cy", (this._circlePos.y).toString());
92
+ }
93
+ else {
94
+ p.values[index] = this._originalPathPoint.x;
95
+ circle.setAttribute("cx", (this._circlePos.x).toString());
96
+ p.values[index + 1] = this._originalPathPoint.y + dy;
97
+ circle.setAttribute("cy", (this._circlePos.y + dy).toString());
98
+ }
99
+ }
100
+ else {
101
+ p.values[index] = this._originalPathPoint.x + dx;
102
+ p.values[index + 1] = this._originalPathPoint.y + dy;
103
+ circle.setAttribute("cx", (this._circlePos.x + dx).toString());
104
+ circle.setAttribute("cy", (this._circlePos.y + dy).toString());
105
+ }
106
+ this.extendedItem.element.setAttribute("d", this._drawPath(this._pathdata, index));
89
107
  }
90
108
  break;
91
109
  case EventNames.PointerUp:
@@ -93,15 +111,42 @@ export class PathExtension extends AbstractExtension {
93
111
  this._startPos = null;
94
112
  this._circlePos = null;
95
113
  this._lastPos = null;
114
+ this.extendedItem.setAttribute('d', this._drawPath(this._pathdata, index));
96
115
  break;
97
116
  }
98
117
  }
99
118
  _drawPath(path, index) {
100
119
  let pathD = "";
101
120
  for (let p of path) {
102
- pathD += p.type + p.values[index] + " " + p.values[index + 1];
121
+ switch (p.type) {
122
+ case 'M':
123
+ pathD += p.type + p.values[0] + " " + p.values[1];
124
+ break;
125
+ case 'L':
126
+ pathD += p.type + p.values[0] + " " + p.values[1];
127
+ break;
128
+ case 'H':
129
+ break;
130
+ case 'V':
131
+ break;
132
+ case 'Z':
133
+ break;
134
+ case 'C':
135
+ case 'c':
136
+ pathD += p.type + p.values[0] + " " + p.values[1] + " " + p.values[2] + " " + p.values[3] + " " + p.values[4] + " " + p.values[5];
137
+ break;
138
+ case 'S':
139
+ break;
140
+ case 'Q':
141
+ break;
142
+ case 'T':
143
+ break;
144
+ case 'A':
145
+ break;
146
+ }
103
147
  }
104
- this.extendedItem.setAttribute("d", pathD);
148
+ return pathD;
149
+ console.log(pathD);
105
150
  }
106
151
  _drawPathCircle(x, y, p, index) {
107
152
  let circle = this._drawCircle(this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y, 3, 'svg-path');
@@ -112,6 +157,15 @@ export class PathExtension extends AbstractExtension {
112
157
  _drawPathLine(x1, y1, x2, y2) {
113
158
  this._drawLine(this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x1, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y1, this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x2, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y2, 'svg-path-line');
114
159
  }
160
+ _drawHelpLine(pStart, pEnd) {
161
+ let line;
162
+ line.setAttribute("stroke", "yellow");
163
+ line.setAttribute("stroke-width", "2");
164
+ line.setAttribute("x1", pStart.x.toString());
165
+ line.setAttribute("y1", pStart.y.toString());
166
+ line.setAttribute("x2", pEnd.x.toString());
167
+ line.setAttribute("y2", pEnd.y.toString());
168
+ }
115
169
  refresh() {
116
170
  this._removeAllOverlays();
117
171
  this.extend();
@@ -67,8 +67,7 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
67
67
  }
68
68
  removeOverlay(element) {
69
69
  try {
70
- if (element)
71
- element.parentElement.removeChild(element);
70
+ element?.parentElement?.removeChild(element);
72
71
  }
73
72
  catch (err) {
74
73
  console.error(err);
@@ -80,6 +80,7 @@ export class DrawEllipsisTool {
80
80
  svg.style.position = 'absolute';
81
81
  svg.style.width = (rect.width + 2 * offset) + 'px';
82
82
  svg.style.height = (rect.height + 2 * offset) + 'px';
83
+ svg.style.overflow = 'visible';
83
84
  this._path = null;
84
85
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
85
86
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
@@ -65,6 +65,7 @@ export class DrawLineTool {
65
65
  svg.style.position = 'absolute';
66
66
  svg.style.width = (rect.width + 2 * offset) + 'px';
67
67
  svg.style.height = (rect.height + 2 * offset) + 'px';
68
+ svg.style.overflow = 'visible';
68
69
  this._path = null;
69
70
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
70
71
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
@@ -11,7 +11,6 @@ export declare class DrawPathTool implements ITool {
11
11
  private _pointerMoved;
12
12
  private _eventStarted;
13
13
  private _lastPoint;
14
- private _savedPoint;
15
14
  private _startPoint;
16
15
  constructor();
17
16
  activated(serviceContainer: ServiceContainer): void;
@@ -12,8 +12,7 @@ export class DrawPathTool {
12
12
  _dragMode = false;
13
13
  _pointerMoved = false;
14
14
  _eventStarted = false;
15
- _lastPoint = { x: 0, y: 0 };
16
- _savedPoint = { x: 0, y: 0 };
15
+ _lastPoint;
17
16
  _startPoint = { x: 0, y: 0 };
18
17
  constructor() {
19
18
  }
@@ -38,10 +37,12 @@ export class DrawPathTool {
38
37
  designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
39
38
  this._startPoint = currentPoint;
40
39
  }
41
- if (this._lastPoint.x === currentPoint.x && this._lastPoint.y === currentPoint.y && !this._samePoint) {
40
+ if (this._lastPoint != null && this._lastPoint.x === currentPoint.x && this._lastPoint.y === currentPoint.y && !this._samePoint) {
42
41
  this._samePoint = true;
43
42
  }
44
- this._lastPoint = currentPoint;
43
+ if (this._lastPoint == null) {
44
+ this._lastPoint = currentPoint;
45
+ }
45
46
  break;
46
47
  case EventNames.PointerMove:
47
48
  if (this._eventStarted) {
@@ -57,8 +58,9 @@ export class DrawPathTool {
57
58
  else { // shows line preview
58
59
  if (this._path) {
59
60
  let straightLine = currentPoint;
60
- if (event.shiftKey)
61
- straightLine = straightenLine(this._savedPoint, currentPoint);
61
+ if (event.shiftKey) {
62
+ straightLine = straightenLine(this._lastPoint, currentPoint);
63
+ }
62
64
  this._path.setAttribute("d", this._pathD + "L" + straightLine.x + " " + straightLine.y);
63
65
  }
64
66
  }
@@ -71,15 +73,16 @@ export class DrawPathTool {
71
73
  if (this._p2pMode && !this._samePoint && this._startPoint.x != currentPoint.x && this._startPoint.y != currentPoint.y) {
72
74
  if (this._path) {
73
75
  if (event.shiftKey) {
74
- let straightLine = straightenLine(this._savedPoint, currentPoint);
76
+ let straightLine = straightenLine(this._lastPoint, currentPoint);
75
77
  this._pathD += "L" + straightLine.x + " " + straightLine.y;
76
78
  this._path.setAttribute("d", this._pathD);
79
+ this._lastPoint = straightLine;
77
80
  }
78
81
  else {
79
82
  this._pathD += "L" + currentPoint.x + " " + currentPoint.y;
80
83
  this._path.setAttribute("d", this._pathD);
84
+ this._lastPoint = currentPoint;
81
85
  }
82
- this._savedPoint = currentPoint;
83
86
  }
84
87
  }
85
88
  if (this._samePoint && this._p2pMode || this._dragMode && !this._p2pMode) {
@@ -101,6 +104,7 @@ export class DrawPathTool {
101
104
  svg.style.position = 'absolute';
102
105
  svg.style.width = (rect.width + 2 * offset) + 'px';
103
106
  svg.style.height = (rect.height + 2 * offset) + 'px';
107
+ svg.style.overflow = 'visible';
104
108
  //designerView.rootDesignItem.element.appendChild(svg);
105
109
  this._path = null;
106
110
  this._pathD = null;
@@ -95,6 +95,7 @@ export class DrawRectTool {
95
95
  svg.style.position = 'absolute';
96
96
  svg.style.width = (rect.width + 2 * offset) + 'px';
97
97
  svg.style.height = (rect.height + 2 * offset) + 'px';
98
+ svg.style.overflow = 'visible';
98
99
  this._path = null;
99
100
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
100
101
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
package/dist/index.d.ts CHANGED
@@ -45,7 +45,9 @@ export * from "./elements/services/elementsService/JsonFileElementsService.js";
45
45
  export * from "./elements/services/elementsService/PreDefinedElementsService.js";
46
46
  export type { IHtmlWriterService } from "./elements/services/htmlWriterService/IHtmlWriterService.js";
47
47
  export type { IHtmlWriterOptions } from "./elements/services/htmlWriterService/IHtmlWriterOptions.js";
48
+ export * from "./elements/services/htmlWriterService/FormatingHtmlWriterService.js";
48
49
  export * from "./elements/services/htmlWriterService/HtmlWriterService.js";
50
+ export * from "./elements/services/htmlWriterService/LitTsElementWriterService.js";
49
51
  export * from "./elements/services/htmlParserService/DefaultHtmlParserService.js";
50
52
  export * from "./elements/services/htmlParserService/NodeHtmlParserService.js";
51
53
  export type { IHtmlParserService } from "./elements/services/htmlParserService/IHtmlParserService.js";
@@ -177,3 +179,4 @@ export type { IPoint } from "./interfaces/IPoint.js";
177
179
  export type { IRect } from "./interfaces/IRect.js";
178
180
  export type { ISize } from "./interfaces/ISize.js";
179
181
  export type { ICommandHandler } from "./interfaces/ICommandHandler.js";
182
+ export * from './Constants.js';
package/dist/index.js CHANGED
@@ -26,7 +26,9 @@ 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
28
  export * from "./elements/services/elementsService/PreDefinedElementsService.js";
29
+ export * from "./elements/services/htmlWriterService/FormatingHtmlWriterService.js";
29
30
  export * from "./elements/services/htmlWriterService/HtmlWriterService.js";
31
+ export * from "./elements/services/htmlWriterService/LitTsElementWriterService.js";
30
32
  export * from "./elements/services/htmlParserService/DefaultHtmlParserService.js";
31
33
  export * from "./elements/services/htmlParserService/NodeHtmlParserService.js";
32
34
  export * from "./elements/services/instanceService/DefaultInstanceService.js";
@@ -126,3 +128,4 @@ export * from "./elements/widgets/codeView/code-view-code-mirror.js";
126
128
  export * from "./elements/documentContainer.js";
127
129
  export * from "./enums/EventNames.js";
128
130
  export * from "./enums/PointerActionType.js";
131
+ export * from './Constants.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.76",
4
+ "version": "0.0.80",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -13,7 +13,7 @@
13
13
  "prepublishOnly": "npm run build"
14
14
  },
15
15
  "dependencies": {
16
- "@node-projects/base-custom-webcomponent": "^0.4.0",
16
+ "@node-projects/base-custom-webcomponent": "^0.4.1",
17
17
  "construct-style-sheets-polyfill": "^3.0.5"
18
18
  },
19
19
  "devDependencies": {
@@ -25,9 +25,9 @@
25
25
  "ace-builds": "^1.4.13",
26
26
  "codemirror": "^5.65.0",
27
27
  "custom-elements-manifest": "^1.0.0",
28
- "esprima-next": "^5.7.0",
28
+ "esprima-next": "^5.8.1",
29
29
  "html2canvas": "*",
30
- "jest": "^27.4.5",
30
+ "jest": "^27.4.7",
31
31
  "jquery": "^3.6.0",
32
32
  "jquery.fancytree": "^2.38.0",
33
33
  "monaco-editor": "^0.31.1",
@@ -1,26 +0,0 @@
1
- import { IDesignItem } from "../../..";
2
- import { BindingTarget } from "../../item/BindingTarget";
3
- import { IElementDefinition } from "../elementsService/IElementDefinition";
4
- import { IElementsService } from "../elementsService/IElementsService";
5
- import { IPropertiesService } from "../propertiesService/IPropertiesService";
6
- import { IProperty } from "../propertiesService/IProperty";
7
- import { ValueType } from "../propertiesService/ValueType";
8
- export declare class WebcomponentManifestParserService implements IElementsService, IPropertiesService {
9
- private _name;
10
- get name(): string;
11
- private _packageData;
12
- private _elementList;
13
- private _resolveStored;
14
- private _rejectStored;
15
- constructor(name: string, file: string);
16
- getElements(): Promise<IElementDefinition[]>;
17
- isHandledElement(designItem: IDesignItem): boolean;
18
- getProperties(designItem: IDesignItem): IProperty[];
19
- getProperty(designItem: IDesignItem, name: string): IProperty;
20
- getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
21
- setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
22
- clearValue(designItems: IDesignItem[], property: IProperty): void;
23
- isSet(designItems: IDesignItem[], property: IProperty): ValueType;
24
- getValue(designItems: IDesignItem[], property: IProperty): void;
25
- getUnsetValue(designItems: IDesignItem[], property: IProperty): void;
26
- }