@node-projects/web-component-designer 0.0.79 → 0.0.83

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 (85) hide show
  1. package/.github/FUNDING.yml +1 -0
  2. package/dist/elements/helper/PathDataPolyfill.d.ts +11 -10
  3. package/dist/elements/helper/PathDataPolyfill.js +36 -1
  4. package/dist/elements/services/DefaultServiceBootstrap.js +9 -3
  5. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +10 -0
  6. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -0
  7. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +5 -5
  8. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +4 -4
  9. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +4 -14
  10. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +100 -100
  11. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +6 -6
  12. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +6 -33
  13. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +2 -0
  14. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +5 -3
  15. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -1
  16. package/dist/elements/widgets/codeView/code-view-ace.js +1 -1
  17. package/dist/elements/widgets/codeView/code-view-code-mirror.js +1 -1
  18. package/dist/elements/widgets/designerView/DomConverter.d.ts +3 -3
  19. package/dist/elements/widgets/designerView/DomConverter.js +7 -4
  20. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -0
  21. package/dist/elements/widgets/designerView/designerCanvas.js +11 -4
  22. package/dist/elements/widgets/designerView/designerView.js +25 -7
  23. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +5 -4
  24. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +41 -15
  25. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +2 -2
  26. package/dist/elements/widgets/designerView/extensions/IframeExtension.d.ts +11 -0
  27. package/dist/elements/widgets/designerView/extensions/IframeExtension.js +46 -0
  28. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.d.ts +9 -0
  29. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.js +9 -0
  30. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.d.ts +1 -1
  31. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +2 -2
  32. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +2 -2
  33. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +3 -3
  34. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +2 -1
  35. package/dist/elements/widgets/designerView/extensions/PathExtension.js +139 -12
  36. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +11 -3
  37. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +2 -1
  38. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +0 -1
  39. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -0
  40. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -0
  41. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -0
  42. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +34 -0
  43. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +1 -0
  44. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -0
  45. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +1 -0
  46. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +2 -0
  47. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +1 -0
  48. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +2 -0
  49. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +1 -1
  50. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +18 -9
  51. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +1 -0
  52. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +2 -0
  53. package/dist/elements/widgets/designerView/tools/ITool.d.ts +1 -0
  54. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +1 -0
  55. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +1 -0
  56. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +1 -0
  57. package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
  58. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +1 -0
  59. package/dist/elements/widgets/designerView/tools/PickColorTool.js +1 -0
  60. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  61. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -0
  62. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +1 -0
  63. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +1 -0
  64. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +1 -0
  65. package/dist/elements/widgets/designerView/tools/TextTool.js +1 -0
  66. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +1 -0
  67. package/dist/elements/widgets/designerView/tools/ZoomTool.js +1 -0
  68. package/dist/elements/widgets/treeView/treeViewExtended.js +1 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.js +2 -0
  71. package/package.json +9 -9
  72. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.d.ts +0 -22
  73. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.js +0 -125
  74. package/dist/elements/services/htmlWriterService/LitElementWriterService.d.ts +0 -14
  75. package/dist/elements/services/htmlWriterService/LitElementWriterService.js +0 -123
  76. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.d.ts +0 -22
  77. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.js +0 -125
  78. package/dist/elements/services/initializationService/IIntializationService copy.d.ts +0 -4
  79. package/dist/elements/services/initializationService/IIntializationService copy.js +0 -1
  80. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +0 -26
  81. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +0 -69
  82. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
  83. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +0 -1
  84. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +0 -26
  85. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +0 -69
@@ -1,3 +1,4 @@
1
1
  # These are supported funding model platforms
2
2
 
3
3
  github: jogibear9988
4
+ patreon: jogibear9988
@@ -1,42 +1,42 @@
1
1
  import { IPoint } from "../../interfaces/IPoint.js";
2
2
  export {};
3
- declare type PathDataM = {
3
+ export declare type PathDataM = {
4
4
  type: 'M' | 'm';
5
5
  values: [x: number, y: number];
6
6
  };
7
- declare type PathDataL = {
7
+ export declare type PathDataL = {
8
8
  type: 'L' | 'l';
9
9
  values: [x: number, y: number];
10
10
  };
11
- declare type PathDataT = {
11
+ export declare type PathDataT = {
12
12
  type: 'T' | 't';
13
13
  values: [x: number, y: number];
14
14
  };
15
- declare type PathDataH = {
15
+ export declare type PathDataH = {
16
16
  type: 'H' | 'h';
17
17
  values: [x: number];
18
18
  };
19
- declare type PathDataV = {
19
+ export declare type PathDataV = {
20
20
  type: 'V' | 'v';
21
21
  values: [y: number];
22
22
  };
23
- declare type PathDataZ = {
23
+ export declare type PathDataZ = {
24
24
  type: 'Z' | 'z';
25
25
  values?: [];
26
26
  };
27
- declare type PathDataC = {
27
+ export declare type PathDataC = {
28
28
  type: 'C' | 'c';
29
29
  values: [x1: number, y1: number, x2: number, y2: number, x: number, y: number];
30
30
  };
31
- declare type PathDataS = {
31
+ export declare type PathDataS = {
32
32
  type: 'S' | 's';
33
33
  values: [x2: number, y2: number, x: number, y: number];
34
34
  };
35
- declare type PathDataQ = {
35
+ export declare type PathDataQ = {
36
36
  type: 'Q' | 'q';
37
37
  values: [x1: number, y1: number, x: number, y: number];
38
38
  };
39
- declare type PathDataA = {
39
+ export declare type PathDataA = {
40
40
  type: 'A' | 'a';
41
41
  values: [rx: number, ry: number, ang: number, flag1: 0 | 1, flag2: 0 | 1, x: number, y: number];
42
42
  };
@@ -47,6 +47,7 @@ export declare function straightenLine(p1: IPoint, p2: IPoint): IPoint;
47
47
  export declare function calculateNormLegth(p1: IPoint, p2: IPoint): number;
48
48
  export declare function calculateAlpha(p1: IPoint, p2: IPoint): number;
49
49
  export declare function moveSVGPath(path: SVGPathElement, xFactor: number, yFactor: number): string;
50
+ export declare function createPathD(path: PathData[]): string;
50
51
  declare global {
51
52
  interface SVGGraphicsElement {
52
53
  getPathData(options?: {
@@ -857,7 +857,7 @@ if (!SVGPathElement.prototype.getPathData || !SVGPathElement.prototype.setPathDa
857
857
  })();
858
858
  }
859
859
  export function straightenLine(p1, p2) {
860
- let newP = p2;
860
+ let newP;
861
861
  let alpha = calculateAlpha(p1, p2);
862
862
  let normLength;
863
863
  if ((alpha >= 337.5 && alpha < 360 || alpha >= 0 && alpha < 22.5)) { // 0
@@ -941,3 +941,38 @@ export function moveSVGPath(path, xFactor, yFactor) {
941
941
  }
942
942
  return newPathData;
943
943
  }
944
+ export function createPathD(path) {
945
+ let pathD = "";
946
+ for (let p of path) {
947
+ switch (p.type) {
948
+ case 'M':
949
+ pathD += p.type + p.values[0] + " " + p.values[1];
950
+ break;
951
+ case 'L':
952
+ pathD += p.type + p.values[0] + " " + p.values[1];
953
+ break;
954
+ case 'H':
955
+ break;
956
+ case 'V':
957
+ break;
958
+ case 'Z':
959
+ pathD += p.type;
960
+ break;
961
+ case 'C':
962
+ case 'c':
963
+ pathD += p.type + p.values[0] + " " + p.values[1] + " " + p.values[2] + " " + p.values[3] + " " + p.values[4] + " " + p.values[5];
964
+ break;
965
+ case 'S':
966
+ break;
967
+ case 'Q':
968
+ case 'q':
969
+ pathD += p.type + p.values[0] + " " + p.values[1] + " " + p.values[2] + " " + p.values[3];
970
+ break;
971
+ case 'T':
972
+ break;
973
+ case 'A':
974
+ break;
975
+ }
976
+ }
977
+ return pathD;
978
+ }
@@ -52,6 +52,9 @@ import { DrawRectTool } from '../widgets/designerView/tools/DrawRectTool.js';
52
52
  import { DrawEllipsisTool } from '../widgets/designerView/tools/DrawEllipsisTool.js';
53
53
  import { DrawLineTool } from '../widgets/designerView/tools/DrawLineTool.js';
54
54
  import { HtmlWriterService } from './htmlWriterService/HtmlWriterService.js';
55
+ import { RectContextMenu } from '../widgets/designerView/extensions/contextMenu/RectContextMenu.js';
56
+ import { PathContextMenu } from '../widgets/designerView/extensions/contextMenu/PathContextMenu.js';
57
+ import { IframeExtensionProvider } from '../widgets/designerView/extensions/IframeExtensionProvider.js';
55
58
  export function createDefaultServiceContainer() {
56
59
  let serviceContainer = new ServiceContainer();
57
60
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -74,8 +77,9 @@ export function createDefaultServiceContainer() {
74
77
  serviceContainer.register("modelCommandService", new DefaultModelCommandService());
75
78
  serviceContainer.register("demoProviderService", new DemoProviderService());
76
79
  serviceContainer.designerExtensions.set(ExtensionType.Permanent, [
77
- new ResizeExtensionProvider(false),
78
- new InvisibleDivExtensionProvider()
80
+ // new ResizeExtensionProvider(false),
81
+ new InvisibleDivExtensionProvider(),
82
+ new IframeExtensionProvider()
79
83
  ]);
80
84
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
81
85
  new PrimarySelectionDefaultExtensionProvider(),
@@ -125,7 +129,9 @@ export function createDefaultServiceContainer() {
125
129
  new CopyPasteContextMenu(),
126
130
  new ZMoveContextMenu(),
127
131
  new MultipleItemsSelectedContextMenu(),
128
- new ItemsBelowContextMenu()
132
+ new PathContextMenu(),
133
+ new RectContextMenu(),
134
+ new ItemsBelowContextMenu(),
129
135
  ];
130
136
  return serviceContainer;
131
137
  }
@@ -0,0 +1,10 @@
1
+ import { IDesignItem } from '../../item/IDesignItem.js';
2
+ import { IHtmlWriterService } from './IHtmlWriterService.js';
3
+ import { IHtmlWriterOptions } from './IHtmlWriterOptions.js';
4
+ import { IndentedTextWriter } from '../../helper/IndentedTextWriter.js';
5
+ import { IStringPosition } from './IStringPosition.js';
6
+ export declare abstract class AbstractHtmlWriterService implements IHtmlWriterService {
7
+ abstract write(indentedTextWriter: IndentedTextWriter, designItems: IDesignItem[], rootContainerKeepInline: boolean, options: IHtmlWriterOptions, designItemsAssignmentList?: Map<IDesignItem, IStringPosition>): any;
8
+ writeAttributes(indentedTextWriter: IndentedTextWriter, designItem: IDesignItem, options: IHtmlWriterOptions): void;
9
+ writeStyles(indentedTextWriter: IndentedTextWriter, designItem: IDesignItem, options: IHtmlWriterOptions): void;
10
+ }
@@ -0,0 +1,62 @@
1
+ import { DomConverter } from '../../widgets/designerView/DomConverter.js';
2
+ import { CssCombiner } from '../../helper/CssCombiner.js';
3
+ import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper.js';
4
+ export class AbstractHtmlWriterService {
5
+ writeAttributes(indentedTextWriter, designItem, options) {
6
+ if (designItem.hasAttributes) {
7
+ for (const a of designItem.attributes) {
8
+ indentedTextWriter.write(' ');
9
+ if (typeof a[1] === 'string') {
10
+ if (a[1] === "")
11
+ indentedTextWriter.write(a[0]);
12
+ else {
13
+ if (options.parseJsonInAttributes &&
14
+ ((a[1].startsWith('{') && !a[1].startsWith('{{') && a[1].endsWith('}')) ||
15
+ (a[1].startsWith('[') && !a[1].startsWith('[[') && a[1].endsWith(']')))) {
16
+ try {
17
+ let j = JSON.parse(a[1]);
18
+ let txt;
19
+ if (options.jsonWriteMode == 'beauty')
20
+ txt = JSON.stringify(j, null, 2);
21
+ else
22
+ txt = JSON.stringify(j);
23
+ indentedTextWriter.write(a[0] + '=\'' + DomConverter.normalizeAttributeValue(txt, true) + '\'');
24
+ continue;
25
+ }
26
+ catch { }
27
+ }
28
+ const content = DomConverter.normalizeAttributeValue(a[1]);
29
+ if (content.indexOf('&quot;')) {
30
+ const contentSingle = DomConverter.normalizeAttributeValue(a[1], true);
31
+ if (contentSingle.length < content.length)
32
+ indentedTextWriter.write(a[0] + '=\'' + contentSingle + '\'');
33
+ else
34
+ indentedTextWriter.write(a[0] + '="' + content + '"');
35
+ }
36
+ else
37
+ indentedTextWriter.write(a[0] + '="' + content + '"');
38
+ }
39
+ }
40
+ else if (!a[1])
41
+ indentedTextWriter.write(a[0]);
42
+ else {
43
+ //TODO: writing of bindings, really ???
44
+ }
45
+ }
46
+ }
47
+ }
48
+ writeStyles(indentedTextWriter, designItem, options) {
49
+ if (designItem.hasStyles) {
50
+ indentedTextWriter.write(' style="');
51
+ let styles = designItem.styles;
52
+ if (options.compressCssToShorthandProperties)
53
+ styles = CssCombiner.combine(styles);
54
+ for (const s of styles) {
55
+ if (s[0]) {
56
+ indentedTextWriter.write(PropertiesHelper.camelToDashCase(s[0]) + ':' + DomConverter.normalizeAttributeValue(s[1]) + ';');
57
+ }
58
+ }
59
+ indentedTextWriter.write('"');
60
+ }
61
+ }
62
+ }
@@ -1,8 +1,8 @@
1
- import { IDesignItem } from '../../item/IDesignItem';
2
- import { IHtmlWriterService } from './IHtmlWriterService';
3
- import { IHtmlWriterOptions } from './IHtmlWriterOptions';
4
- import { IndentedTextWriter } from '../../helper/IndentedTextWriter';
5
- import { IStringPosition } from './IStringPosition';
1
+ import { IDesignItem } from '../../item/IDesignItem.js';
2
+ import { IHtmlWriterService } from './IHtmlWriterService.js';
3
+ import { IHtmlWriterOptions } from './IHtmlWriterOptions.js';
4
+ import { IndentedTextWriter } from '../../helper/IndentedTextWriter.js';
5
+ import { IStringPosition } from './IStringPosition.js';
6
6
  declare enum ElementContainerType {
7
7
  block = 0,
8
8
  complex = 1
@@ -1,7 +1,7 @@
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';
1
+ import { DomConverter } from '../../widgets/designerView/DomConverter.js';
2
+ import { CssCombiner } from '../../helper/CssCombiner.js';
3
+ import { NodeType } from '../../item/NodeType.js';
4
+ import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper.js';
5
5
  import { ElementDisplayType, getElementDisplaytype } from '../../helper/ElementHelper.js';
6
6
  var ElementContainerType;
7
7
  (function (ElementContainerType) {
@@ -3,20 +3,10 @@ import { IHtmlWriterService } from './IHtmlWriterService';
3
3
  import { IHtmlWriterOptions } from './IHtmlWriterOptions';
4
4
  import { IndentedTextWriter } from '../../helper/IndentedTextWriter';
5
5
  import { IStringPosition } from './IStringPosition';
6
- declare enum ElementContainerType {
7
- block = 0,
8
- complex = 1
9
- }
10
6
  export declare class HtmlWriterService implements IHtmlWriterService {
11
- private writeAttributes;
12
- private writeStyles;
13
- private _writeTextNode;
14
- private _writeCommentNode;
15
- private _writeElementNode;
16
- private _writeDesignItemList;
17
- private _writeNewlineAndIntend;
18
- private _writeInternal;
19
- getContainerType(element: HTMLElement): ElementContainerType;
7
+ private _conditionalyWriteIndent;
8
+ private _conditionalyWriteNewline;
20
9
  write(indentedTextWriter: IndentedTextWriter, designItems: IDesignItem[], rootContainerKeepInline: boolean, options: IHtmlWriterOptions, designItemsAssignmentList?: Map<IDesignItem, IStringPosition>): void;
10
+ private internalWrite;
11
+ private writeTextNode;
21
12
  }
22
- export {};
@@ -2,117 +2,117 @@ import { DomConverter } from '../../widgets/designerView/DomConverter';
2
2
  import { CssCombiner } from '../../helper/CssCombiner';
3
3
  import { NodeType } from '../../item/NodeType';
4
4
  import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper';
5
- import { ElementDisplayType, getElementDisplaytype } from '../../helper/ElementHelper.js';
6
- var ElementContainerType;
7
- (function (ElementContainerType) {
8
- ElementContainerType[ElementContainerType["block"] = 0] = "block";
9
- ElementContainerType[ElementContainerType["complex"] = 1] = "complex";
10
- })(ElementContainerType || (ElementContainerType = {}));
5
+ import { isEmptyTextNode, isInline } from '../../helper/ElementHelper.js';
11
6
  export class HtmlWriterService {
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
- }
7
+ _conditionalyWriteIndent(indentedTextWriter, designItem) {
8
+ if ((designItem.element instanceof HTMLElement && !isInline(designItem.element)) ||
9
+ (designItem.element.previousElementSibling instanceof HTMLElement && !isInline(designItem.element.previousElementSibling)) ||
10
+ (designItem.element.previousElementSibling == null && !isInline(designItem.element.parentElement) && (designItem.element.previousSibling == null || isEmptyTextNode(designItem.element.previousSibling))))
11
+ indentedTextWriter.writeIndent();
12
+ }
13
+ _conditionalyWriteNewline(indentedTextWriter, designItem) {
14
+ if ((designItem.element instanceof HTMLElement && !isInline(designItem.element)) ||
15
+ (designItem.element.nextElementSibling instanceof HTMLElement && !isInline(designItem.element.nextElementSibling)))
16
+ indentedTextWriter.writeNewline();
17
+ }
18
+ write(indentedTextWriter, designItems, rootContainerKeepInline, options, designItemsAssignmentList) {
19
+ for (const d of designItems) {
20
+ this.internalWrite(indentedTextWriter, d, options, designItemsAssignmentList);
27
21
  }
28
22
  }
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
- }
23
+ internalWrite(indentedTextWriter, designItem, options, designItemsAssignmentList) {
24
+ let start = indentedTextWriter.position;
25
+ if (designItem.nodeType == NodeType.TextNode) {
26
+ if (isEmptyTextNode(designItem.element) &&
27
+ ((designItem.element.previousSibling instanceof HTMLElement && !isInline(designItem.element.previousSibling)) ||
28
+ (designItem.element.nextSibling instanceof HTMLElement && !isInline(designItem.element.nextSibling)))) {
39
29
  }
40
- writeContext.indentedTextWriter.write('"');
30
+ else
31
+ this.writeTextNode(indentedTextWriter, designItem, true);
41
32
  }
42
- }
43
- _writeTextNode(writeContext, designItem) {
44
- writeContext.lastElementDisplayType = ElementDisplayType.inline;
45
- let content = DomConverter.normalizeContentValue(designItem.content).trim();
46
- if (content) {
47
- writeContext.indentedTextWriter.write(content);
33
+ else if (designItem.nodeType == NodeType.Comment) {
34
+ this._conditionalyWriteIndent(indentedTextWriter, designItem);
35
+ indentedTextWriter.write('<!--' + designItem.content + '-->');
36
+ this._conditionalyWriteNewline(indentedTextWriter, designItem);
48
37
  }
49
- }
50
- _writeCommentNode(writeContext, designItem) {
51
- writeContext.indentedTextWriter.write('<!--' + designItem.content + '-->');
52
- }
53
- _writeElementNode(writeContext, designItem) {
54
- const currentElementDisplayType = getElementDisplaytype(designItem.element);
55
- writeContext.lastElementDisplayType = currentElementDisplayType;
56
- writeContext.indentedTextWriter.write('<' + designItem.name);
57
- this.writeAttributes(writeContext, designItem);
58
- this.writeStyles(writeContext, designItem);
59
- writeContext.indentedTextWriter.write('>');
60
- if (designItem.hasChildren) {
61
- const children = designItem.children();
62
- const contentSingleTextNode = designItem.childCount === 1 && designItem.firstChild.nodeType === NodeType.TextNode;
63
- if (contentSingleTextNode) {
64
- this._writeInternal(writeContext, designItem.firstChild);
38
+ else {
39
+ this._conditionalyWriteIndent(indentedTextWriter, designItem);
40
+ indentedTextWriter.write('<' + designItem.name);
41
+ if (designItem.hasAttributes) {
42
+ for (const a of designItem.attributes) {
43
+ indentedTextWriter.write(' ');
44
+ if (typeof a[1] === 'string') {
45
+ if (a[1] === "")
46
+ indentedTextWriter.write(a[0]);
47
+ else
48
+ indentedTextWriter.write(a[0] + '="' + DomConverter.normalizeAttributeValue(a[1]) + '"');
49
+ }
50
+ else if (!a[1])
51
+ indentedTextWriter.write(a[0]);
52
+ else {
53
+ //TODO: writing of bindings
54
+ }
55
+ }
65
56
  }
66
- else {
67
- let previousContainerDisplayType = writeContext.containerDisplayType;
68
- writeContext.containerDisplayType = this.getContainerType(designItem.element);
69
- writeContext.indentedTextWriter.levelRaise();
70
- this._writeDesignItemList(currentElementDisplayType, writeContext, children);
71
- writeContext.indentedTextWriter.levelShrink();
72
- writeContext.containerDisplayType = previousContainerDisplayType;
57
+ if (designItem.hasStyles) {
58
+ indentedTextWriter.write(' style="');
59
+ let styles = designItem.styles;
60
+ if (options.compressCssToShorthandProperties)
61
+ styles = CssCombiner.combine(styles);
62
+ for (const s of styles) {
63
+ if (s[0]) {
64
+ indentedTextWriter.write(PropertiesHelper.camelToDashCase(s[0]) + ':' + DomConverter.normalizeAttributeValue(s[1]) + ';');
65
+ }
66
+ }
67
+ indentedTextWriter.write('"');
73
68
  }
69
+ indentedTextWriter.write('>');
70
+ let contentSingleTextNode = false;
71
+ if (designItem.hasChildren) {
72
+ const children = designItem.children();
73
+ contentSingleTextNode = designItem.childCount === 1 && designItem.firstChild.nodeType === NodeType.TextNode;
74
+ if (contentSingleTextNode) {
75
+ this.writeTextNode(indentedTextWriter, designItem, false);
76
+ }
77
+ else {
78
+ if (designItem.element instanceof HTMLElement && !isInline(designItem.element)) {
79
+ indentedTextWriter.writeNewline();
80
+ indentedTextWriter.levelRaise();
81
+ }
82
+ for (const c of children) {
83
+ this.internalWrite(indentedTextWriter, c, options, designItemsAssignmentList);
84
+ let childSingleTextNode = c.childCount === 1 && c.firstChild.nodeType === NodeType.TextNode;
85
+ if (childSingleTextNode)
86
+ indentedTextWriter.writeNewline();
87
+ }
88
+ if (designItem.element instanceof HTMLElement && !isInline(designItem.element)) {
89
+ indentedTextWriter.levelShrink();
90
+ if (!indentedTextWriter.isLastCharNewline())
91
+ indentedTextWriter.writeNewline();
92
+ indentedTextWriter.writeIndent();
93
+ }
94
+ }
95
+ }
96
+ else if (designItem.hasContent) {
97
+ indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
98
+ }
99
+ if (!DomConverter.IsSelfClosingElement(designItem.name))
100
+ indentedTextWriter.write('</' + designItem.name + '>');
101
+ if (!contentSingleTextNode)
102
+ this._conditionalyWriteNewline(indentedTextWriter, designItem);
74
103
  }
75
- else if (designItem.hasContent) {
76
- writeContext.indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
77
- }
78
- if (!DomConverter.IsSelfClosingElement(designItem.name))
79
- writeContext.indentedTextWriter.write('</' + designItem.name + '>');
80
- //if (writeContext.writerState === WriterState.block)
81
- //this._writeNewlineAndIntend(writeContext);
82
- }
83
- _writeDesignItemList(currentElementDisplayType, writeContext, children) {
84
- for (const c of children) {
85
- if (writeContext.containerDisplayType === ElementContainerType.complex)
86
- this._writeNewlineAndIntend(writeContext);
87
- else if (writeContext.lastElementDisplayType !== ElementDisplayType.inline || currentElementDisplayType !== ElementDisplayType.inline)
88
- this._writeNewlineAndIntend(writeContext);
89
- this._writeInternal(writeContext, c);
104
+ if (designItemsAssignmentList) {
105
+ designItemsAssignmentList.set(designItem, { start: start, length: indentedTextWriter.position - start - 1 });
90
106
  }
91
107
  }
92
- _writeNewlineAndIntend(writeContext) {
93
- writeContext.indentedTextWriter.writeNewline();
94
- writeContext.indentedTextWriter.writeIndent();
95
- }
96
- _writeInternal(writeContext, designItem) {
97
- const start = writeContext.indentedTextWriter.position;
98
- if (designItem.nodeType === NodeType.TextNode)
99
- this._writeTextNode(writeContext, designItem);
100
- else if (designItem.nodeType === NodeType.Comment)
101
- this._writeCommentNode(writeContext, designItem);
102
- else if (designItem.nodeType === NodeType.Element)
103
- this._writeElementNode(writeContext, designItem);
104
- if (writeContext.designItemsAssignmentList) {
105
- writeContext.designItemsAssignmentList.set(designItem, { start: start, length: writeContext.indentedTextWriter.position - start - 1 });
108
+ writeTextNode(indentedTextWriter, designItem, indentAndNewline) {
109
+ let content = DomConverter.normalizeContentValue(designItem.content).trim();
110
+ if (content) {
111
+ if (indentAndNewline)
112
+ this._conditionalyWriteIndent(indentedTextWriter, designItem);
113
+ indentedTextWriter.write(content);
114
+ if (indentAndNewline)
115
+ this._conditionalyWriteNewline(indentedTextWriter, designItem);
106
116
  }
107
117
  }
108
- getContainerType(element) {
109
- const display = window.getComputedStyle(element).display;
110
- if (display === 'block' || display === "inline-block" || display == '')
111
- return ElementContainerType.block;
112
- return ElementContainerType.complex;
113
- }
114
- write(indentedTextWriter, designItems, rootContainerKeepInline, options, designItemsAssignmentList) {
115
- const context = { indentedTextWriter, options, lastElementDisplayType: ElementDisplayType.none, containerDisplayType: ElementContainerType.block, designItemsAssignmentList };
116
- this._writeDesignItemList(ElementDisplayType.inline, context, designItems);
117
- }
118
118
  }
@@ -1,9 +1,9 @@
1
- import { IDesignItem } from '../../item/IDesignItem';
2
- import { IHtmlWriterService } from './IHtmlWriterService';
3
- import { IHtmlWriterOptions } from './IHtmlWriterOptions';
4
- import { IndentedTextWriter } from '../../helper/IndentedTextWriter';
5
- import { IStringPosition } from './IStringPosition';
6
- export declare class HtmlWriterService implements IHtmlWriterService {
1
+ import { IDesignItem } from '../../item/IDesignItem.js';
2
+ import { IHtmlWriterOptions } from './IHtmlWriterOptions.js';
3
+ import { IndentedTextWriter } from '../../helper/IndentedTextWriter.js';
4
+ import { IStringPosition } from './IStringPosition.js';
5
+ import { AbstractHtmlWriterService } from './AbstractHtmlWriterService.js';
6
+ export declare class HtmlWriterService extends AbstractHtmlWriterService {
7
7
  private _conditionalyWriteIndent;
8
8
  private _conditionalyWriteNewline;
9
9
  write(indentedTextWriter: IndentedTextWriter, designItems: IDesignItem[], rootContainerKeepInline: boolean, options: IHtmlWriterOptions, designItemsAssignmentList?: Map<IDesignItem, IStringPosition>): void;
@@ -1,9 +1,8 @@
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';
1
+ import { DomConverter } from '../../widgets/designerView/DomConverter.js';
2
+ import { NodeType } from '../../item/NodeType.js';
5
3
  import { isEmptyTextNode, isInline } from '../../helper/ElementHelper.js';
6
- export class HtmlWriterService {
4
+ import { AbstractHtmlWriterService } from './AbstractHtmlWriterService.js';
5
+ export class HtmlWriterService extends AbstractHtmlWriterService {
7
6
  _conditionalyWriteIndent(indentedTextWriter, designItem) {
8
7
  if ((designItem.element instanceof HTMLElement && !isInline(designItem.element)) ||
9
8
  (designItem.element.previousElementSibling instanceof HTMLElement && !isInline(designItem.element.previousElementSibling)) ||
@@ -38,34 +37,8 @@ export class HtmlWriterService {
38
37
  else {
39
38
  this._conditionalyWriteIndent(indentedTextWriter, designItem);
40
39
  indentedTextWriter.write('<' + designItem.name);
41
- if (designItem.hasAttributes) {
42
- for (const a of designItem.attributes) {
43
- indentedTextWriter.write(' ');
44
- if (typeof a[1] === 'string') {
45
- if (a[1] === "")
46
- indentedTextWriter.write(a[0]);
47
- else
48
- indentedTextWriter.write(a[0] + '="' + DomConverter.normalizeAttributeValue(a[1]) + '"');
49
- }
50
- else if (!a[1])
51
- indentedTextWriter.write(a[0]);
52
- else {
53
- //TODO: writing of bindings
54
- }
55
- }
56
- }
57
- if (designItem.hasStyles) {
58
- indentedTextWriter.write(' style="');
59
- let styles = designItem.styles;
60
- if (options.compressCssToShorthandProperties)
61
- styles = CssCombiner.combine(styles);
62
- for (const s of styles) {
63
- if (s[0]) {
64
- indentedTextWriter.write(PropertiesHelper.camelToDashCase(s[0]) + ':' + DomConverter.normalizeAttributeValue(s[1]) + ';');
65
- }
66
- }
67
- indentedTextWriter.write('"');
68
- }
40
+ this.writeAttributes(indentedTextWriter, designItem, options);
41
+ this.writeStyles(indentedTextWriter, designItem, options);
69
42
  indentedTextWriter.write('>');
70
43
  let contentSingleTextNode = false;
71
44
  if (designItem.hasChildren) {
@@ -2,4 +2,6 @@ export declare class IHtmlWriterOptions {
2
2
  beautifyOutput: boolean;
3
3
  compressCssToShorthandProperties: boolean;
4
4
  writeDesignerProperties: boolean;
5
+ parseJsonInAttributes: boolean;
6
+ jsonWriteMode: 'min' | 'beauty';
5
7
  }
@@ -1,5 +1,7 @@
1
1
  export class IHtmlWriterOptions {
2
- beautifyOutput;
3
- compressCssToShorthandProperties;
4
- writeDesignerProperties;
2
+ beautifyOutput = true;
3
+ compressCssToShorthandProperties = true;
4
+ writeDesignerProperties = true;
5
+ parseJsonInAttributes = true;
6
+ jsonWriteMode = 'min';
5
7
  }
@@ -78,7 +78,9 @@ export class WebcomponentManifestParserService extends UnkownElementPropertiesSe
78
78
  return new Promise((resolve, reject) => { this._resolveStored.push(resolve); this._rejectStored.push(reject); });
79
79
  }
80
80
  isHandledElement(designItem) {
81
- return this._elementList.find(x => x.tag == designItem.name) != null;
81
+ if (this._elementList)
82
+ return this._elementList.find(x => x.tag == designItem.name) != null;
83
+ return false;
82
84
  }
83
85
  getProperties(designItem) {
84
86
  return this._propertiesList[designItem.name];
@@ -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,
@@ -20,7 +20,7 @@ export class CodeViewCodeMirror extends BaseCustomWebComponentLazyAppend {
20
20
  constructor() {
21
21
  super();
22
22
  //@ts-ignore
23
- import("codemirror/lib/codemirror.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
23
+ import("./codemirror/lib/codemirror.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
24
24
  this.style.display = 'block';
25
25
  this._editor = this._getDomElement('textarea');
26
26
  }
@@ -1,7 +1,7 @@
1
- import { IDesignItem } from "../../item/IDesignItem";
2
- import { IStringPosition } from "../../services/htmlWriterService/IStringPosition";
1
+ import { IDesignItem } from "../../item/IDesignItem.js";
2
+ import { IStringPosition } from "../../services/htmlWriterService/IStringPosition.js";
3
3
  export declare class DomConverter {
4
- static normalizeAttributeValue(value: string | number): string;
4
+ static normalizeAttributeValue(value: string | number, useSingleQuotes?: boolean): string;
5
5
  static normalizeContentValue(value: string): string;
6
6
  static IsSelfClosingElement(tag: string): boolean;
7
7
  static ConvertToString(designItems: IDesignItem[], designItemsAssignmentList?: Map<IDesignItem, IStringPosition>): string;