@node-projects/web-component-designer 0.1.348 → 0.1.351
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/dist/elements/documentContainer.js +4 -0
- package/dist/elements/documentContainer.js.map +1 -1
- package/dist/elements/helper/CssCombiner.d.ts +9 -0
- package/dist/elements/helper/CssCombiner.js +147 -7
- package/dist/elements/helper/CssCombiner.js.map +1 -1
- package/dist/elements/helper/Helper.js +3 -1
- package/dist/elements/helper/Helper.js.map +1 -1
- package/dist/elements/helper/LayoutHelper.js +44 -4
- package/dist/elements/helper/LayoutHelper.js.map +1 -1
- package/dist/elements/helper/PathDataPolyfill.d.ts +1 -1
- package/dist/elements/helper/PathDataPolyfill.js +11 -49
- package/dist/elements/helper/PathDataPolyfill.js.map +1 -1
- package/dist/elements/helper/PopupHelper.d.ts +1 -0
- package/dist/elements/helper/PopupHelper.js +51 -0
- package/dist/elements/helper/PopupHelper.js.map +1 -0
- package/dist/elements/helper/QuadEdgeHandleHelper.d.ts +5 -0
- package/dist/elements/helper/QuadEdgeHandleHelper.js +42 -0
- package/dist/elements/helper/QuadEdgeHandleHelper.js.map +1 -0
- package/dist/elements/helper/SelectionHelper.d.ts +2 -2
- package/dist/elements/helper/SelectionHelper.js +22 -9
- package/dist/elements/helper/SelectionHelper.js.map +1 -1
- package/dist/elements/item/DesignItem.d.ts +1 -1
- package/dist/elements/services/DefaultServiceBootstrap.js +8 -3
- package/dist/elements/services/DefaultServiceBootstrap.js.map +1 -1
- package/dist/elements/services/GlobalContext.js +1 -1
- package/dist/elements/services/GlobalContext.js.map +1 -1
- package/dist/elements/services/InstanceServiceContainer.d.ts +2 -0
- package/dist/elements/services/InstanceServiceContainer.js +1 -0
- package/dist/elements/services/InstanceServiceContainer.js.map +1 -1
- package/dist/elements/services/ServiceContainer.d.ts +2 -0
- package/dist/elements/services/ServiceContainer.js.map +1 -1
- package/dist/elements/services/collaborationService/CollaborationNodeIndex.d.ts +4 -0
- package/dist/elements/services/collaborationService/CollaborationNodeIndex.js +46 -0
- package/dist/elements/services/collaborationService/CollaborationNodeIndex.js.map +1 -0
- package/dist/elements/services/collaborationService/DefaultCollaborationService.d.ts +45 -0
- package/dist/elements/services/collaborationService/DefaultCollaborationService.js +298 -0
- package/dist/elements/services/collaborationService/DefaultCollaborationService.js.map +1 -0
- package/dist/elements/services/collaborationService/ICollaborationService.d.ts +102 -0
- package/dist/elements/services/collaborationService/ICollaborationService.js +2 -0
- package/dist/elements/services/collaborationService/ICollaborationService.js.map +1 -0
- package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.d.ts +95 -0
- package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.js +571 -0
- package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.js.map +1 -0
- package/dist/elements/services/copyPasteService/CopyPasteAsJsonService.d.ts +3 -0
- package/dist/elements/services/copyPasteService/CopyPasteAsJsonService.js +41 -27
- package/dist/elements/services/copyPasteService/CopyPasteAsJsonService.js.map +1 -1
- package/dist/elements/services/copyPasteService/CopyPasteService.js +1 -1
- package/dist/elements/services/copyPasteService/CopyPasteService.js.map +1 -1
- package/dist/elements/services/copyPasteService/PasteFormatSnapshot.d.ts +18 -0
- package/dist/elements/services/copyPasteService/PasteFormatSnapshot.js +87 -0
- package/dist/elements/services/copyPasteService/PasteFormatSnapshot.js.map +1 -0
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +4 -2
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +29 -9
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js.map +1 -1
- package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +6 -2
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +48 -22
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js.map +1 -1
- package/dist/elements/services/placementService/AbsolutePlacementService.js +1 -1
- package/dist/elements/services/placementService/AbsolutePlacementService.js.map +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.js +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.js.map +1 -1
- package/dist/elements/services/propertiesService/IEditorTypesService.d.ts +1 -1
- package/dist/elements/services/undoService/ChangeGroup.d.ts +3 -1
- package/dist/elements/services/undoService/ChangeGroup.js +3 -1
- package/dist/elements/services/undoService/ChangeGroup.js.map +1 -1
- package/dist/elements/services/undoService/IUndoChangeEvent.d.ts +8 -0
- package/dist/elements/services/undoService/IUndoChangeEvent.js +2 -0
- package/dist/elements/services/undoService/IUndoChangeEvent.js.map +1 -0
- package/dist/elements/services/undoService/IUndoService.d.ts +7 -4
- package/dist/elements/services/undoService/UndoService.d.ts +8 -4
- package/dist/elements/services/undoService/UndoService.js +14 -5
- package/dist/elements/services/undoService/UndoService.js.map +1 -1
- package/dist/elements/widgets/designerView/DomConverter.d.ts +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +12 -2
- package/dist/elements/widgets/designerView/designerCanvas.js.map +1 -1
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.js +72 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.js +22 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.js +116 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.js +31 -0
- package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +30 -2
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +390 -9
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js.map +1 -1
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +10 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js.map +1 -1
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.d.ts +33 -0
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.js +337 -0
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js +22 -0
- package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.d.ts +5 -0
- package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.js +42 -0
- package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +3 -2
- package/dist/elements/widgets/designerView/extensions/RotateExtension.js +46 -13
- package/dist/elements/widgets/designerView/extensions/RotateExtension.js.map +1 -1
- package/dist/elements/widgets/designerView/extensions/SkewExtension.d.ts +30 -0
- package/dist/elements/widgets/designerView/extensions/SkewExtension.js +291 -0
- package/dist/elements/widgets/designerView/extensions/SkewExtension.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.js +20 -0
- package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.d.ts +9 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.js +72 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/PasteFormatContextMenu.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/PasteFormatContextMenu.js +62 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/PasteFormatContextMenu.js.map +1 -0
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.d.ts +20 -0
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js +412 -19
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js.map +1 -1
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js +16 -0
- package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js.map +1 -1
- package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +14 -6
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js +57 -39
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js.map +1 -1
- package/dist/elements/widgets/designerView/tools/ITool.d.ts +1 -1
- package/dist/index-min.js +13 -6
- package/dist/index-min.js.map +4 -4
- package/dist/index.d.ts +25 -2
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/tests/CssCombiner.test.ts +340 -0
- package/tests/PasteFormatSnapshot.test.ts +92 -0
|
@@ -7,51 +7,65 @@ export class CopyPasteAsJsonService {
|
|
|
7
7
|
const items = filterChildPlaceItems(designItems);
|
|
8
8
|
const copyText = DomConverter.ConvertToString(items, false);
|
|
9
9
|
const positions = items.map(x => x.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(x.element));
|
|
10
|
-
|
|
11
|
-
copyToClipboard([["application/json", JSON.stringify(data)]]);
|
|
10
|
+
const data = { html: copyText, positions: positions };
|
|
11
|
+
copyToClipboard([["text/html", copyText], ["text/plain", copyText], ["application/json", JSON.stringify(data)]]);
|
|
12
12
|
}
|
|
13
13
|
async getPasteItems(serviceContainer, instanceServiceContainer) {
|
|
14
|
-
|
|
14
|
+
const pasteData = await this._readClipboardPasteData();
|
|
15
|
+
if (pasteData.imageData) {
|
|
16
|
+
let di = await DesignItem.createDesignItemFromImageBlob(serviceContainer, instanceServiceContainer, pasteData.imageData);
|
|
17
|
+
return [[di]];
|
|
18
|
+
}
|
|
19
|
+
const parserService = serviceContainer.htmlParserService;
|
|
20
|
+
return [await parserService.parse(pasteData.html, serviceContainer, instanceServiceContainer, true), pasteData.positions ?? undefined];
|
|
21
|
+
}
|
|
22
|
+
async _readClipboardPasteData() {
|
|
15
23
|
let html = '';
|
|
16
24
|
let positions = null;
|
|
25
|
+
let imageData = null;
|
|
17
26
|
const items = await getFromClipboard();
|
|
18
27
|
if (items != null) {
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
const clipboardItem = items[0];
|
|
29
|
+
const jsonData = await this._tryReadClipboardType(clipboardItem, 'application/json');
|
|
30
|
+
if (jsonData) {
|
|
31
|
+
const parsedJson = this._parseJsonClipboardData(jsonData);
|
|
32
|
+
html = parsedJson?.html ?? '';
|
|
33
|
+
positions = parsedJson?.positions ?? null;
|
|
21
34
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
catch { }
|
|
28
|
-
try {
|
|
29
|
-
data = await (await items[0].getType('application/json'))?.text();
|
|
35
|
+
if (!html) {
|
|
36
|
+
html = await this._tryReadClipboardType(clipboardItem, 'text/html') ?? '';
|
|
37
|
+
}
|
|
38
|
+
if (!html) {
|
|
39
|
+
html = await this._tryReadClipboardType(clipboardItem, 'text/plain') ?? '';
|
|
30
40
|
}
|
|
31
|
-
catch { }
|
|
32
41
|
try {
|
|
33
|
-
let imageFmt =
|
|
42
|
+
let imageFmt = clipboardItem.types.find(x => x.startsWith("image/"));
|
|
34
43
|
if (imageFmt) {
|
|
35
|
-
|
|
36
|
-
let di = await DesignItem.createDesignItemFromImageBlob(serviceContainer, instanceServiceContainer, imgData);
|
|
37
|
-
return [[di]];
|
|
44
|
+
imageData = await clipboardItem.getType(imageFmt);
|
|
38
45
|
}
|
|
39
46
|
}
|
|
40
47
|
catch { }
|
|
41
48
|
}
|
|
42
49
|
else {
|
|
43
|
-
|
|
50
|
+
html = await getTextFromClipboard();
|
|
44
51
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
return { html, positions, imageData };
|
|
53
|
+
}
|
|
54
|
+
_parseJsonClipboardData(data) {
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(data);
|
|
49
57
|
}
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async _tryReadClipboardType(item, type) {
|
|
63
|
+
try {
|
|
64
|
+
return await (await item.getType(type))?.text();
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
52
68
|
}
|
|
53
|
-
const parserService = serviceContainer.htmlParserService;
|
|
54
|
-
return [await parserService.parse(html, serviceContainer, instanceServiceContainer, true), positions];
|
|
55
69
|
}
|
|
56
70
|
}
|
|
57
71
|
//# sourceMappingURL=CopyPasteAsJsonService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyPasteAsJsonService.js","sourceRoot":"","sources":["../../../../src/elements/services/copyPasteService/CopyPasteAsJsonService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAK1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"CopyPasteAsJsonService.js","sourceRoot":"","sources":["../../../../src/elements/services/copyPasteService/CopyPasteAsJsonService.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export class CopyPasteService {
|
|
|
30
30
|
html = await getTextFromClipboard();
|
|
31
31
|
}
|
|
32
32
|
const parserService = serviceContainer.htmlParserService;
|
|
33
|
-
return [await parserService.parse(html, serviceContainer, instanceServiceContainer, true), positions];
|
|
33
|
+
return [await parserService.parse(html, serviceContainer, instanceServiceContainer, true), positions ?? undefined];
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=CopyPasteService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyPasteService.js","sourceRoot":"","sources":["../../../../src/elements/services/copyPasteService/CopyPasteService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAK1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,SAAS,CAAC,WAA0B;QACxC,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACvH,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,gBAAkC,EAAE,wBAAkD;QACxG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"CopyPasteService.js","sourceRoot":"","sources":["../../../../src/elements/services/copyPasteService/CopyPasteService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAK1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,SAAS,CAAC,WAA0B;QACxC,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACvH,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,gBAAkC,EAAE,wBAAkD;QACxG,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAmB,IAAI,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACvC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,IAAI;gBACP,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,IAAI,aAAa,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBAC9E,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,iBAAiB,CAAC;QACzD,OAAO,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,IAAI,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;IACrH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const pasteFormatKinds: readonly ["all", "border", "background", "text"];
|
|
2
|
+
export type PasteFormatKind = typeof pasteFormatKinds[number];
|
|
3
|
+
export interface IPasteFormatEntry {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly value: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IPasteFormatSnapshot {
|
|
8
|
+
readonly all: readonly IPasteFormatEntry[];
|
|
9
|
+
readonly border: readonly IPasteFormatEntry[];
|
|
10
|
+
readonly background: readonly IPasteFormatEntry[];
|
|
11
|
+
readonly text: readonly IPasteFormatEntry[];
|
|
12
|
+
}
|
|
13
|
+
type StyleArrayLike = Pick<CSSStyleDeclaration, 'getPropertyValue' | 'length'> & ArrayLike<string>;
|
|
14
|
+
type StyleEntries = Iterable<[name: string, value: string]>;
|
|
15
|
+
export declare function createPasteFormatSnapshot(style: StyleArrayLike): IPasteFormatSnapshot;
|
|
16
|
+
export declare function createPasteFormatSnapshotFromEntries(entries: StyleEntries): IPasteFormatSnapshot | null;
|
|
17
|
+
export declare function getPasteFormatEntries(snapshot: IPasteFormatSnapshot, kind: PasteFormatKind): readonly IPasteFormatEntry[];
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { PropertiesHelper } from "../propertiesService/services/PropertiesHelper.js";
|
|
2
|
+
export const pasteFormatKinds = ['all', 'border', 'background', 'text'];
|
|
3
|
+
const explicitTextProperties = new Set([
|
|
4
|
+
'color',
|
|
5
|
+
'caret-color',
|
|
6
|
+
'line-height',
|
|
7
|
+
'letter-spacing',
|
|
8
|
+
'word-spacing',
|
|
9
|
+
'white-space',
|
|
10
|
+
'word-break',
|
|
11
|
+
'overflow-wrap',
|
|
12
|
+
'hyphens',
|
|
13
|
+
'tab-size',
|
|
14
|
+
'direction',
|
|
15
|
+
'writing-mode',
|
|
16
|
+
'unicode-bidi'
|
|
17
|
+
]);
|
|
18
|
+
function isBorderProperty(name) {
|
|
19
|
+
return name.startsWith('border');
|
|
20
|
+
}
|
|
21
|
+
function isBackgroundProperty(name) {
|
|
22
|
+
return name.startsWith('background');
|
|
23
|
+
}
|
|
24
|
+
function isTextProperty(name) {
|
|
25
|
+
return name.startsWith('font')
|
|
26
|
+
|| name.startsWith('text')
|
|
27
|
+
|| explicitTextProperties.has(name);
|
|
28
|
+
}
|
|
29
|
+
function collectEntries(style, predicate) {
|
|
30
|
+
const entries = [];
|
|
31
|
+
const seen = new Set();
|
|
32
|
+
for (let index = 0; index < style.length; index++) {
|
|
33
|
+
const name = PropertiesHelper.camelToDashCase(style[index]);
|
|
34
|
+
if (!name || seen.has(name) || !predicate(name)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const value = style.getPropertyValue(name)?.trim();
|
|
38
|
+
if (!value) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
seen.add(name);
|
|
42
|
+
entries.push({ name, value });
|
|
43
|
+
}
|
|
44
|
+
return entries;
|
|
45
|
+
}
|
|
46
|
+
function createPasteFormatSnapshotFromNormalizedEntries(entries) {
|
|
47
|
+
const border = entries.filter(x => isBorderProperty(x.name));
|
|
48
|
+
const background = entries.filter(x => isBackgroundProperty(x.name));
|
|
49
|
+
const text = entries.filter(x => isTextProperty(x.name));
|
|
50
|
+
const all = [];
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
for (const group of [border, background, text]) {
|
|
53
|
+
for (const entry of group) {
|
|
54
|
+
if (seen.has(entry.name)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
seen.add(entry.name);
|
|
58
|
+
all.push(entry);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { all, border, background, text };
|
|
62
|
+
}
|
|
63
|
+
export function createPasteFormatSnapshot(style) {
|
|
64
|
+
const entries = collectEntries(style, () => true);
|
|
65
|
+
return createPasteFormatSnapshotFromNormalizedEntries(entries);
|
|
66
|
+
}
|
|
67
|
+
export function createPasteFormatSnapshotFromEntries(entries) {
|
|
68
|
+
const normalizedEntries = [];
|
|
69
|
+
const seen = new Set();
|
|
70
|
+
for (const [rawName, rawValue] of entries) {
|
|
71
|
+
const name = rawName?.trim().toLowerCase();
|
|
72
|
+
const value = rawValue?.trim();
|
|
73
|
+
if (!name || !value || seen.has(name)) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
seen.add(name);
|
|
77
|
+
normalizedEntries.push({ name, value });
|
|
78
|
+
}
|
|
79
|
+
if (!normalizedEntries.length) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return createPasteFormatSnapshotFromNormalizedEntries(normalizedEntries);
|
|
83
|
+
}
|
|
84
|
+
export function getPasteFormatEntries(snapshot, kind) {
|
|
85
|
+
return snapshot[kind];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=PasteFormatSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasteFormatSnapshot.js","sourceRoot":"","sources":["../../../../src/elements/services/copyPasteService/PasteFormatSnapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@ import { IHtmlWriterService } from './IHtmlWriterService.js';
|
|
|
3
3
|
import { IHtmlWriterOptions } from './IHtmlWriterOptions.js';
|
|
4
4
|
import { IndentedTextWriter } from '../../helper/IndentedTextWriter.js';
|
|
5
5
|
declare enum ElementContainerType {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
inline = 0,
|
|
7
|
+
block = 1,
|
|
8
|
+
complex = 2
|
|
8
9
|
}
|
|
9
10
|
export declare class FormatingHtmlWriterService implements IHtmlWriterService {
|
|
10
11
|
options: IHtmlWriterOptions;
|
|
@@ -12,6 +13,7 @@ export declare class FormatingHtmlWriterService implements IHtmlWriterService {
|
|
|
12
13
|
private writeAttributes;
|
|
13
14
|
private writeStyles;
|
|
14
15
|
private _writeTextNode;
|
|
16
|
+
private _normalizeInlineTextContent;
|
|
15
17
|
private _writeCommentNode;
|
|
16
18
|
private _writeElementNode;
|
|
17
19
|
private _writeDesignItemList;
|
|
@@ -5,8 +5,9 @@ import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper
|
|
|
5
5
|
import { ElementDisplayType, getElementDisplaytype } from '../../helper/ElementHelper.js';
|
|
6
6
|
var ElementContainerType;
|
|
7
7
|
(function (ElementContainerType) {
|
|
8
|
-
ElementContainerType[ElementContainerType["
|
|
9
|
-
ElementContainerType[ElementContainerType["
|
|
8
|
+
ElementContainerType[ElementContainerType["inline"] = 0] = "inline";
|
|
9
|
+
ElementContainerType[ElementContainerType["block"] = 1] = "block";
|
|
10
|
+
ElementContainerType[ElementContainerType["complex"] = 2] = "complex";
|
|
10
11
|
})(ElementContainerType || (ElementContainerType = {}));
|
|
11
12
|
// const defaultDisplayNoneContainerDisplayType: ElementContainerType = ElementContainerType.complex;
|
|
12
13
|
export class FormatingHtmlWriterService {
|
|
@@ -52,11 +53,23 @@ export class FormatingHtmlWriterService {
|
|
|
52
53
|
}
|
|
53
54
|
_writeTextNode(writeContext, designItem) {
|
|
54
55
|
writeContext.lastElementDisplayType = ElementDisplayType.inline;
|
|
55
|
-
let content = DomConverter.normalizeContentValue(designItem.content)
|
|
56
|
+
let content = DomConverter.normalizeContentValue(designItem.content);
|
|
57
|
+
if (writeContext.containerDisplayType === ElementContainerType.inline)
|
|
58
|
+
content = this._normalizeInlineTextContent(content);
|
|
59
|
+
else
|
|
60
|
+
content = content.trim();
|
|
56
61
|
if (content) {
|
|
57
62
|
writeContext.indentedTextWriter.write(content);
|
|
58
63
|
}
|
|
59
64
|
}
|
|
65
|
+
_normalizeInlineTextContent(content) {
|
|
66
|
+
if (!content?.trim())
|
|
67
|
+
return '';
|
|
68
|
+
const hasLeadingWhitespace = /^\s/.test(content);
|
|
69
|
+
const hasTrailingWhitespace = /\s$/.test(content);
|
|
70
|
+
const normalized = content.replaceAll(/[\t\r\n ]+/g, ' ').trim();
|
|
71
|
+
return `${hasLeadingWhitespace ? ' ' : ''}${normalized}${hasTrailingWhitespace ? ' ' : ''}`;
|
|
72
|
+
}
|
|
60
73
|
_writeCommentNode(writeContext, designItem) {
|
|
61
74
|
writeContext.indentedTextWriter.write('<!--' + designItem.content + '-->');
|
|
62
75
|
}
|
|
@@ -75,17 +88,19 @@ export class FormatingHtmlWriterService {
|
|
|
75
88
|
if (designItem.hasChildren) {
|
|
76
89
|
const children = designItem.children();
|
|
77
90
|
contentSingleTextNode = designItem.childCount === 1 && designItem.firstChild.nodeType === NodeType.TextNode;
|
|
91
|
+
let previousContainerDisplayType = writeContext.containerDisplayType;
|
|
92
|
+
writeContext.containerDisplayType = this.getContainerType(designItem.element);
|
|
78
93
|
if (contentSingleTextNode) {
|
|
79
94
|
this._writeInternal(writeContext, designItem.firstChild);
|
|
80
95
|
}
|
|
81
96
|
else {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
writeContext.indentedTextWriter.levelRaise();
|
|
97
|
+
if (writeContext.containerDisplayType !== ElementContainerType.inline)
|
|
98
|
+
writeContext.indentedTextWriter.levelRaise();
|
|
85
99
|
this._writeDesignItemList(currentElementDisplayType, writeContext, children);
|
|
86
|
-
writeContext.
|
|
87
|
-
|
|
100
|
+
if (writeContext.containerDisplayType !== ElementContainerType.inline)
|
|
101
|
+
writeContext.indentedTextWriter.levelShrink();
|
|
88
102
|
}
|
|
103
|
+
writeContext.containerDisplayType = previousContainerDisplayType;
|
|
89
104
|
}
|
|
90
105
|
else if (designItem.hasContent) {
|
|
91
106
|
writeContext.indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
|
|
@@ -106,6 +121,9 @@ export class FormatingHtmlWriterService {
|
|
|
106
121
|
if (writeContext.lastElementDisplayType == null) {
|
|
107
122
|
//first entry, do nothing
|
|
108
123
|
}
|
|
124
|
+
else if (writeContext.containerDisplayType === ElementContainerType.inline) {
|
|
125
|
+
// Inline containers are whitespace-sensitive. Do not add beautification whitespace.
|
|
126
|
+
}
|
|
109
127
|
else if (writeContext.containerDisplayType === ElementContainerType.complex)
|
|
110
128
|
this._writeNewlineAndIntend(writeContext);
|
|
111
129
|
else if (writeContext.lastElementDisplayType !== ElementDisplayType.inline /*|| currentElementDisplayType !== ElementDisplayType.inline*/)
|
|
@@ -130,7 +148,9 @@ export class FormatingHtmlWriterService {
|
|
|
130
148
|
}
|
|
131
149
|
}
|
|
132
150
|
getContainerType(element) {
|
|
133
|
-
const display = window.getComputedStyle(element).display;
|
|
151
|
+
const display = (element.ownerDocument.defaultView ?? window).getComputedStyle(element).display;
|
|
152
|
+
if (display === 'inline')
|
|
153
|
+
return ElementContainerType.inline;
|
|
134
154
|
if (display === 'block' || display === "inline-block" || display == '')
|
|
135
155
|
return ElementContainerType.block;
|
|
136
156
|
return ElementContainerType.complex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormatingHtmlWriterService.js","sourceRoot":"","sources":["../../../../src/elements/services/htmlWriterService/FormatingHtmlWriterService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE1F,IAAK,
|
|
1
|
+
{"version":3,"file":"FormatingHtmlWriterService.js","sourceRoot":"","sources":["../../../../src/elements/services/htmlWriterService/FormatingHtmlWriterService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IDesignItem } from '../../item/IDesignItem.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ITextWriter } from '../../helper/ITextWriter.js';
|
|
3
3
|
import { AbstractHtmlWriterService } from './AbstractHtmlWriterService.js';
|
|
4
4
|
import { IHtmlWriterOptions } from './IHtmlWriterOptions.js';
|
|
5
5
|
export declare class HtmlWriterService extends AbstractHtmlWriterService {
|
|
@@ -7,7 +7,11 @@ export declare class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
7
7
|
private _conditionalyWriteIndent;
|
|
8
8
|
private _conditionalyWriteIndentBefore;
|
|
9
9
|
private _conditionalyWriteNewline;
|
|
10
|
-
write(indentedTextWriter:
|
|
10
|
+
write(indentedTextWriter: ITextWriter, designItems: IDesignItem[], rootContainerKeepInline: boolean, updatePositions?: boolean): void;
|
|
11
11
|
private internalWrite;
|
|
12
12
|
private writeTextNode;
|
|
13
|
+
private _hasInlineParent;
|
|
14
|
+
private _normalizeInlineTextContent;
|
|
15
|
+
private _isInlineContainer;
|
|
16
|
+
private _isInlineElement;
|
|
13
17
|
}
|
|
@@ -6,20 +6,26 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
6
6
|
constructor(options) {
|
|
7
7
|
super(options);
|
|
8
8
|
}
|
|
9
|
-
_conditionalyWriteIndent(indentedTextWriter, designItem) {
|
|
9
|
+
_conditionalyWriteIndent(indentedTextWriter, designItem, preserveInlineWhitespace) {
|
|
10
|
+
if (preserveInlineWhitespace)
|
|
11
|
+
return;
|
|
10
12
|
if ((designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element)) ||
|
|
11
13
|
(designItem.element.previousElementSibling instanceof designItem.window.HTMLElement && !isInline(designItem.element.previousElementSibling)) ||
|
|
12
|
-
(designItem.element.previousElementSibling == null && !
|
|
14
|
+
(designItem.element.previousElementSibling == null && !this._isInlineElement(designItem.element.parentElement) && (designItem.element.previousSibling == null || isEmptyTextNode(designItem.element.previousSibling))) ||
|
|
13
15
|
(designItem.element instanceof designItem.window.SVGElement))
|
|
14
16
|
indentedTextWriter.writeIndent();
|
|
15
17
|
}
|
|
16
|
-
_conditionalyWriteIndentBefore(indentedTextWriter, designItem) {
|
|
18
|
+
_conditionalyWriteIndentBefore(indentedTextWriter, designItem, preserveInlineWhitespace) {
|
|
19
|
+
if (preserveInlineWhitespace)
|
|
20
|
+
return;
|
|
17
21
|
if ((designItem.element.previousElementSibling instanceof designItem.window.HTMLElement && !isInline(designItem.element.previousElementSibling)) ||
|
|
18
|
-
(designItem.element.previousElementSibling == null && !
|
|
22
|
+
(designItem.element.previousElementSibling == null && !this._isInlineElement(designItem.element.parentElement) && (designItem.element.previousSibling == null || isEmptyTextNode(designItem.element.previousSibling))) ||
|
|
19
23
|
(designItem.element instanceof designItem.window.SVGElement))
|
|
20
24
|
indentedTextWriter.writeIndent();
|
|
21
25
|
}
|
|
22
|
-
_conditionalyWriteNewline(indentedTextWriter, designItem) {
|
|
26
|
+
_conditionalyWriteNewline(indentedTextWriter, designItem, preserveInlineWhitespace) {
|
|
27
|
+
if (preserveInlineWhitespace)
|
|
28
|
+
return;
|
|
23
29
|
if ((designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element)) ||
|
|
24
30
|
(designItem.element.nextElementSibling instanceof designItem.window.HTMLElement && !isInline(designItem.element.nextElementSibling)) ||
|
|
25
31
|
(designItem.element instanceof designItem.window.SVGElement))
|
|
@@ -27,31 +33,32 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
27
33
|
}
|
|
28
34
|
write(indentedTextWriter, designItems, rootContainerKeepInline, updatePositions = false) {
|
|
29
35
|
for (const d of designItems) {
|
|
30
|
-
this.internalWrite(indentedTextWriter, d, updatePositions);
|
|
36
|
+
this.internalWrite(indentedTextWriter, d, updatePositions, false);
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
39
|
//TODO: special case for style/script nodes, keep whitespace
|
|
34
|
-
internalWrite(indentedTextWriter, designItem, updatePositions) {
|
|
40
|
+
internalWrite(indentedTextWriter, designItem, updatePositions, preserveInlineWhitespace) {
|
|
35
41
|
let start = indentedTextWriter.position;
|
|
36
42
|
let end = indentedTextWriter.position;
|
|
43
|
+
const currentPreserveInlineWhitespace = preserveInlineWhitespace || this._isInlineContainer(designItem);
|
|
37
44
|
if (designItem.nodeType == NodeType.TextNode) {
|
|
38
45
|
if (isEmptyTextNode(designItem.element) &&
|
|
39
46
|
((designItem.element.previousSibling instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element.previousSibling)) ||
|
|
40
47
|
(designItem.element.nextSibling instanceof designItem.window.HTMLElement && !isInline(designItem.element.nextSibling)))) {
|
|
41
48
|
}
|
|
42
49
|
else
|
|
43
|
-
this.writeTextNode(indentedTextWriter, designItem, true);
|
|
50
|
+
this.writeTextNode(indentedTextWriter, designItem, true, true, currentPreserveInlineWhitespace);
|
|
44
51
|
end = indentedTextWriter.position;
|
|
45
52
|
}
|
|
46
53
|
else if (designItem.nodeType == NodeType.Comment) {
|
|
47
|
-
this._conditionalyWriteIndent(indentedTextWriter, designItem);
|
|
54
|
+
this._conditionalyWriteIndent(indentedTextWriter, designItem, currentPreserveInlineWhitespace);
|
|
48
55
|
start = indentedTextWriter.position;
|
|
49
56
|
indentedTextWriter.write('<!--' + designItem.content + '-->');
|
|
50
57
|
end = indentedTextWriter.position;
|
|
51
|
-
this._conditionalyWriteNewline(indentedTextWriter, designItem);
|
|
58
|
+
this._conditionalyWriteNewline(indentedTextWriter, designItem, currentPreserveInlineWhitespace);
|
|
52
59
|
}
|
|
53
60
|
else {
|
|
54
|
-
this._conditionalyWriteIndentBefore(indentedTextWriter, designItem);
|
|
61
|
+
this._conditionalyWriteIndentBefore(indentedTextWriter, designItem, currentPreserveInlineWhitespace);
|
|
55
62
|
start = indentedTextWriter.position;
|
|
56
63
|
indentedTextWriter.write('<' + designItem.name);
|
|
57
64
|
this.writeAttributes(indentedTextWriter, designItem);
|
|
@@ -63,21 +70,21 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
63
70
|
contentSingleTextNode = designItem.childCount === 1 && designItem.firstChild.nodeType === NodeType.TextNode;
|
|
64
71
|
if (contentSingleTextNode) {
|
|
65
72
|
const notrim = designItem.name == 'script' || designItem.name == 'style' || designItem.name == 'pre';
|
|
66
|
-
this.writeTextNode(indentedTextWriter, designItem, false, !notrim);
|
|
73
|
+
this.writeTextNode(indentedTextWriter, designItem, false, !notrim, currentPreserveInlineWhitespace);
|
|
67
74
|
}
|
|
68
75
|
else {
|
|
69
|
-
if (designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element) || (designItem.element instanceof designItem.window.SVGElement)) {
|
|
76
|
+
if (!currentPreserveInlineWhitespace && (designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element) || (designItem.element instanceof designItem.window.SVGElement))) {
|
|
70
77
|
indentedTextWriter.writeNewline();
|
|
71
78
|
indentedTextWriter.levelRaise();
|
|
72
79
|
}
|
|
73
80
|
for (const c of children) {
|
|
74
|
-
this.internalWrite(indentedTextWriter, c, updatePositions);
|
|
81
|
+
this.internalWrite(indentedTextWriter, c, updatePositions, currentPreserveInlineWhitespace);
|
|
75
82
|
let childSingleTextNode = c.childCount === 1 && c.firstChild.nodeType === NodeType.TextNode;
|
|
76
83
|
if (childSingleTextNode)
|
|
77
84
|
if (!indentedTextWriter.isLastCharNewline())
|
|
78
|
-
this._conditionalyWriteNewline(indentedTextWriter, c);
|
|
85
|
+
this._conditionalyWriteNewline(indentedTextWriter, c, currentPreserveInlineWhitespace);
|
|
79
86
|
}
|
|
80
|
-
if (designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element) || (designItem.element instanceof designItem.window.SVGElement)) {
|
|
87
|
+
if (!currentPreserveInlineWhitespace && (designItem.element instanceof designItem.window.HTMLElement && !isInlineAfter(designItem.element) || (designItem.element instanceof designItem.window.SVGElement))) {
|
|
81
88
|
indentedTextWriter.levelShrink();
|
|
82
89
|
if (!indentedTextWriter.isLastCharNewline())
|
|
83
90
|
indentedTextWriter.writeNewline();
|
|
@@ -94,29 +101,48 @@ export class HtmlWriterService extends AbstractHtmlWriterService {
|
|
|
94
101
|
indentedTextWriter.write('</' + designItem.name + '>');
|
|
95
102
|
end = indentedTextWriter.position;
|
|
96
103
|
//if (!contentSingleTextNode)
|
|
97
|
-
if (!indentedTextWriter.isLastCharNewline() && (!designItem.parent || !isInlineAfter(designItem.parent.element)))
|
|
98
|
-
this._conditionalyWriteNewline(indentedTextWriter, designItem);
|
|
104
|
+
if (!currentPreserveInlineWhitespace && !indentedTextWriter.isLastCharNewline() && (!designItem.parent || !isInlineAfter(designItem.parent.element)))
|
|
105
|
+
this._conditionalyWriteNewline(indentedTextWriter, designItem, currentPreserveInlineWhitespace);
|
|
99
106
|
}
|
|
100
107
|
if (updatePositions && designItem.instanceServiceContainer.designItemDocumentPositionService) {
|
|
101
108
|
designItem.instanceServiceContainer.designItemDocumentPositionService.setPosition(designItem, { start: start, length: end - start });
|
|
102
109
|
}
|
|
103
110
|
}
|
|
104
|
-
writeTextNode(indentedTextWriter, designItem, indentAndNewline, trim = true) {
|
|
111
|
+
writeTextNode(indentedTextWriter, designItem, indentAndNewline, trim = true, preserveInlineWhitespace = false) {
|
|
105
112
|
let start = indentedTextWriter.position;
|
|
106
113
|
let end = indentedTextWriter.position;
|
|
107
114
|
let content = DomConverter.normalizeContentValue(designItem.content);
|
|
108
|
-
if (
|
|
115
|
+
if (preserveInlineWhitespace || this._hasInlineParent(designItem))
|
|
116
|
+
content = this._normalizeInlineTextContent(content);
|
|
117
|
+
else if (trim)
|
|
109
118
|
content = content.trim();
|
|
110
119
|
if (content) {
|
|
111
120
|
if (indentAndNewline)
|
|
112
|
-
this._conditionalyWriteIndent(indentedTextWriter, designItem);
|
|
121
|
+
this._conditionalyWriteIndent(indentedTextWriter, designItem, preserveInlineWhitespace);
|
|
113
122
|
indentedTextWriter.write(content);
|
|
114
123
|
if (indentAndNewline)
|
|
115
|
-
this._conditionalyWriteNewline(indentedTextWriter, designItem);
|
|
124
|
+
this._conditionalyWriteNewline(indentedTextWriter, designItem, preserveInlineWhitespace);
|
|
116
125
|
}
|
|
117
126
|
end = indentedTextWriter.position;
|
|
118
127
|
for (const d of designItem.children())
|
|
119
128
|
designItem.instanceServiceContainer.designItemDocumentPositionService.setPosition(d, { start: start, length: end - start });
|
|
120
129
|
}
|
|
130
|
+
_hasInlineParent(designItem) {
|
|
131
|
+
return designItem.parent?.element instanceof designItem.window.HTMLElement && isInline(designItem.parent.element);
|
|
132
|
+
}
|
|
133
|
+
_normalizeInlineTextContent(content) {
|
|
134
|
+
if (!content?.trim())
|
|
135
|
+
return '';
|
|
136
|
+
const hasLeadingWhitespace = /^\s/.test(content);
|
|
137
|
+
const hasTrailingWhitespace = /\s$/.test(content);
|
|
138
|
+
const normalized = content.replaceAll(/[\t\r\n ]+/g, ' ').trim();
|
|
139
|
+
return `${hasLeadingWhitespace ? ' ' : ''}${normalized}${hasTrailingWhitespace ? ' ' : ''}`;
|
|
140
|
+
}
|
|
141
|
+
_isInlineContainer(designItem) {
|
|
142
|
+
return designItem.nodeType === NodeType.Element && designItem.element instanceof designItem.window.HTMLElement && isInline(designItem.element);
|
|
143
|
+
}
|
|
144
|
+
_isInlineElement(element) {
|
|
145
|
+
return element instanceof HTMLElement && isInline(element);
|
|
146
|
+
}
|
|
121
147
|
}
|
|
122
148
|
//# sourceMappingURL=HtmlWriterService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HtmlWriterService.js","sourceRoot":"","sources":["../../../../src/elements/services/htmlWriterService/HtmlWriterService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAC9D,YAAY,OAA4B;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAEO,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"HtmlWriterService.js","sourceRoot":"","sources":["../../../../src/elements/services/htmlWriterService/HtmlWriterService.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,7 +101,7 @@ export class AbsolutePlacementService {
|
|
|
101
101
|
//maybe a undo actions returns itself or an id so it could be changed?
|
|
102
102
|
let track = this.calculateTrack(event, designerCanvas, startPoint, offsetInControl, newPoint, items[0]);
|
|
103
103
|
if (event.shiftKey) {
|
|
104
|
-
track = straightenLine({ x: 0, y: 0 }, track,
|
|
104
|
+
track = straightenLine({ x: 0, y: 0 }, track, 90);
|
|
105
105
|
}
|
|
106
106
|
let filteredItems = filterChildPlaceItems(filterNonElementItems(items));
|
|
107
107
|
for (const designItem of filteredItems) {
|