@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.
- package/.github/FUNDING.yml +1 -0
- package/dist/elements/helper/PathDataPolyfill.d.ts +11 -10
- package/dist/elements/helper/PathDataPolyfill.js +36 -1
- package/dist/elements/services/DefaultServiceBootstrap.js +9 -3
- package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +10 -0
- package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -0
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +5 -5
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +4 -4
- package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +4 -14
- package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +100 -100
- package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +6 -6
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +6 -33
- package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +2 -0
- package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +5 -3
- package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -1
- package/dist/elements/widgets/codeView/code-view-ace.js +1 -1
- package/dist/elements/widgets/codeView/code-view-code-mirror.js +1 -1
- package/dist/elements/widgets/designerView/DomConverter.d.ts +3 -3
- package/dist/elements/widgets/designerView/DomConverter.js +7 -4
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerCanvas.js +11 -4
- package/dist/elements/widgets/designerView/designerView.js +25 -7
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +5 -4
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +41 -15
- package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/IframeExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/IframeExtension.js +46 -0
- package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.d.ts +9 -0
- package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.js +9 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +3 -3
- package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +2 -1
- package/dist/elements/widgets/designerView/extensions/PathExtension.js +139 -12
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +11 -3
- package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +2 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +0 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +34 -0
- package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +2 -0
- package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/DrawLineTool.js +2 -0
- package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +1 -1
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js +18 -9
- package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/DrawRectTool.js +2 -0
- package/dist/elements/widgets/designerView/tools/ITool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/PanTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PickColorTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/TextTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/TextTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/ZoomTool.js +1 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +9 -9
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.d.ts +0 -22
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.js +0 -125
- package/dist/elements/services/htmlWriterService/LitElementWriterService.d.ts +0 -14
- package/dist/elements/services/htmlWriterService/LitElementWriterService.js +0 -123
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.d.ts +0 -22
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.js +0 -125
- package/dist/elements/services/initializationService/IIntializationService copy.d.ts +0 -4
- package/dist/elements/services/initializationService/IIntializationService copy.js +0 -1
- package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +0 -26
- package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +0 -69
- package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
- package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +0 -1
- package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +0 -26
- package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +0 -69
package/.github/FUNDING.yml
CHANGED
|
@@ -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
|
|
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
|
|
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('"')) {
|
|
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
|
|
12
|
-
private
|
|
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 {
|
|
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
|
-
|
|
13
|
-
if (designItem.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
30
|
+
else
|
|
31
|
+
this.writeTextNode(indentedTextWriter, designItem, true);
|
|
41
32
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
76
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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 {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export declare class HtmlWriterService
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
|
|
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) {
|
|
@@ -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
|
-
|
|
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: "
|
|
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;
|