@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
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./elements/helper/ObservedCustomElementsRegistry.js";
|
|
|
8
8
|
export * from "./elements/helper/ElementHelper.js";
|
|
9
9
|
export * from "./elements/helper/IndentedTextWriter.js";
|
|
10
10
|
export * from "./elements/helper/PathDataPolyfill.js";
|
|
11
|
+
export * from "./elements/helper/PopupHelper.js";
|
|
11
12
|
export * from "./elements/helper/Screenshot.js";
|
|
12
13
|
export * from "./elements/helper/ClipboardHelper.js";
|
|
13
14
|
export * from "./elements/helper/TouchGestureHelper.js";
|
|
@@ -20,6 +21,7 @@ export * from "./elements/helper/SwitchContainerHelper.js";
|
|
|
20
21
|
export * from "./elements/helper/NpmPackageLoader.js";
|
|
21
22
|
export * from "./elements/helper/LayoutHelper.js";
|
|
22
23
|
export * from "./elements/helper/SelectionHelper.js";
|
|
24
|
+
export * from "./elements/helper/QuadEdgeHandleHelper.js";
|
|
23
25
|
export type { IContextMenuItem, IContextMenu } from "./elements/helper/contextMenu/IContextMenuItem.js";
|
|
24
26
|
export * from "./elements/item/DesignItem.js";
|
|
25
27
|
export type { IDesignItem } from "./elements/item/IDesignItem.js";
|
|
@@ -53,6 +55,7 @@ export type { IContentService } from "./elements/services/contentService/IConten
|
|
|
53
55
|
export * from "./elements/services/copyPasteService/CopyPasteService.js";
|
|
54
56
|
export * from "./elements/services/copyPasteService/CopyPasteAsJsonService.js";
|
|
55
57
|
export type { ICopyPasteService } from "./elements/services/copyPasteService/ICopyPasteService.js";
|
|
58
|
+
export * from "./elements/services/copyPasteService/PasteFormatSnapshot.js";
|
|
56
59
|
export * from "./elements/services/deletionService/DeletionService.js";
|
|
57
60
|
export type { IDeletionService } from "./elements/services/deletionService/IDeletionService.js";
|
|
58
61
|
export * from "./elements/services/demoProviderService/IframeDemoProviderService.js";
|
|
@@ -149,6 +152,8 @@ export * from "./elements/services/refactorService/TextRefactorService.js";
|
|
|
149
152
|
export type { IRefactorService } from "./elements/services/refactorService/IRefactorService.js";
|
|
150
153
|
export type { IRefactoring } from "./elements/services/refactorService/IRefactoring.js";
|
|
151
154
|
export type { IReferencesChangedService } from "./elements/services/referencesChangedService/IReferencesChangedService.js";
|
|
155
|
+
export * from "./elements/services/collaborationService/CollaborationNodeIndex.js";
|
|
156
|
+
export type { CollaborationConnectionState, ICollaborationComment, ICollaborationCommentsChangedEvent, ICollaborationDocumentSnapshot, ICollaborationPeerPresence, ICollaborationPeersChangedEvent, ICollaborationRemoteChange, ICollaborationSelectionEvent, ICollaborationService, ICollaborationSession, ICollaborationStateChangedEvent, ICollaborationTransport } from "./elements/services/collaborationService/ICollaborationService.js";
|
|
152
157
|
export * from "./elements/services/searchService/SearchService.js";
|
|
153
158
|
export type { ISearchService } from "./elements/services/searchService/ISearchService.js";
|
|
154
159
|
export type { ISearchResult } from "./elements/services/searchService/ISearchResult.js";
|
|
@@ -160,6 +165,7 @@ export type { IStyleRule, IStyleDeclaration, IStylesheet, IStylesheetService, ID
|
|
|
160
165
|
export * from "./elements/services/stylesheetService/AbstractStylesheetService.js";
|
|
161
166
|
export * from "./elements/services/stylesheetService/SpecificityCalculator.js";
|
|
162
167
|
export * from "./elements/services/undoService/ChangeGroup.js";
|
|
168
|
+
export type { IUndoChangeEvent, UndoChangeKind, UndoChangeSource } from "./elements/services/undoService/IUndoChangeEvent.js";
|
|
163
169
|
export type { ITransactionItem } from "./elements/services/undoService/ITransactionItem.js";
|
|
164
170
|
export type { IUndoService } from "./elements/services/undoService/IUndoService.js";
|
|
165
171
|
export * from "./elements/services/undoService/UndoService.js";
|
|
@@ -234,6 +240,8 @@ export * from "./elements/widgets/designerView/extensions/MarginExtension.js";
|
|
|
234
240
|
export * from "./elements/widgets/designerView/extensions/MarginExtensionProvider.js";
|
|
235
241
|
export * from "./elements/widgets/designerView/extensions/PaddingExtension.js";
|
|
236
242
|
export * from "./elements/widgets/designerView/extensions/PaddingExtensionProvider.js";
|
|
243
|
+
export * from "./elements/widgets/designerView/extensions/ProjectiveTransformExtension.js";
|
|
244
|
+
export * from "./elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js";
|
|
237
245
|
export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
|
|
238
246
|
export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
|
|
239
247
|
export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
|
|
@@ -250,14 +258,28 @@ export * from "./elements/widgets/designerView/extensions/MultipleSelectionRectE
|
|
|
250
258
|
export * from "./elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.js";
|
|
251
259
|
export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtension.js";
|
|
252
260
|
export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js";
|
|
253
|
-
export * from "./elements/widgets/designerView/extensions/svg/
|
|
254
|
-
export * from "./elements/widgets/designerView/extensions/svg/
|
|
261
|
+
export * from "./elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js";
|
|
262
|
+
export * from "./elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js";
|
|
263
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/IGeometry.js";
|
|
264
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/GeometryReaderFactory.js";
|
|
265
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.js";
|
|
266
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js";
|
|
267
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.js";
|
|
268
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.js";
|
|
269
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.js";
|
|
270
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.js";
|
|
271
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.js";
|
|
272
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssClipPathGeometryReader.js";
|
|
273
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssShapeOutsideGeometryReader.js";
|
|
274
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssOffsetPathGeometryReader.js";
|
|
255
275
|
export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
|
|
256
276
|
export * from "./elements/widgets/designerView/extensions/PositionExtensionProvider.js";
|
|
257
277
|
export * from "./elements/widgets/designerView/extensions/ElementDragTitleExtension.js";
|
|
258
278
|
export * from "./elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js";
|
|
259
279
|
export * from "./elements/widgets/designerView/extensions/ResizeExtension.js";
|
|
260
280
|
export * from "./elements/widgets/designerView/extensions/ResizeExtensionProvider.js";
|
|
281
|
+
export * from "./elements/widgets/designerView/extensions/SkewExtension.js";
|
|
282
|
+
export * from "./elements/widgets/designerView/extensions/SkewExtensionProvider.js";
|
|
261
283
|
export * from "./elements/widgets/designerView/extensions/RotateExtension.js";
|
|
262
284
|
export * from "./elements/widgets/designerView/extensions/RotateExtensionProvider.js";
|
|
263
285
|
export * from "./elements/widgets/designerView/extensions/RotateGroupExtension.js";
|
|
@@ -313,6 +335,7 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElem
|
|
|
313
335
|
export * from "./elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js";
|
|
314
336
|
export * from "./elements/widgets/designerView/extensions/contextMenu/AlignItemsContextMenu.js";
|
|
315
337
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ForceCssContextMenu.js";
|
|
338
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/PasteFormatContextMenu.js";
|
|
316
339
|
export type { IDesignerPointerExtension } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js";
|
|
317
340
|
export type { IDesignerPointerExtensionProvider } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
|
|
318
341
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./elements/helper/ObservedCustomElementsRegistry.js";
|
|
|
8
8
|
export * from "./elements/helper/ElementHelper.js";
|
|
9
9
|
export * from "./elements/helper/IndentedTextWriter.js";
|
|
10
10
|
export * from "./elements/helper/PathDataPolyfill.js";
|
|
11
|
+
export * from "./elements/helper/PopupHelper.js";
|
|
11
12
|
export * from "./elements/helper/Screenshot.js";
|
|
12
13
|
export * from "./elements/helper/ClipboardHelper.js";
|
|
13
14
|
export * from "./elements/helper/TouchGestureHelper.js";
|
|
@@ -19,6 +20,7 @@ export * from "./elements/helper/SwitchContainerHelper.js";
|
|
|
19
20
|
export * from "./elements/helper/NpmPackageLoader.js";
|
|
20
21
|
export * from "./elements/helper/LayoutHelper.js";
|
|
21
22
|
export * from "./elements/helper/SelectionHelper.js";
|
|
23
|
+
export * from "./elements/helper/QuadEdgeHandleHelper.js";
|
|
22
24
|
export * from "./elements/item/DesignItem.js";
|
|
23
25
|
export * from "./elements/item/BindingMode.js";
|
|
24
26
|
export * from "./elements/item/BindingTarget.js";
|
|
@@ -38,6 +40,7 @@ export * from "./elements/services/elementAtPointService/ElementAtPointService.j
|
|
|
38
40
|
export * from "./elements/services/contentService/ContentService.js";
|
|
39
41
|
export * from "./elements/services/copyPasteService/CopyPasteService.js";
|
|
40
42
|
export * from "./elements/services/copyPasteService/CopyPasteAsJsonService.js";
|
|
43
|
+
export * from "./elements/services/copyPasteService/PasteFormatSnapshot.js";
|
|
41
44
|
export * from "./elements/services/deletionService/DeletionService.js";
|
|
42
45
|
export * from "./elements/services/demoProviderService/IframeDemoProviderService.js";
|
|
43
46
|
export * from "./elements/services/demoProviderService/SimpleDemoProviderService.js";
|
|
@@ -102,6 +105,7 @@ export * from "./elements/services/propertiesService/PropertyType.js";
|
|
|
102
105
|
export * from "./elements/services/propertiesService/ValueType.js";
|
|
103
106
|
export * from "./elements/services/refactorService/BindingsRefactorService.js";
|
|
104
107
|
export * from "./elements/services/refactorService/TextRefactorService.js";
|
|
108
|
+
export * from "./elements/services/collaborationService/CollaborationNodeIndex.js";
|
|
105
109
|
export * from "./elements/services/searchService/SearchService.js";
|
|
106
110
|
export * from "./elements/services/selectionService/SelectionService.js";
|
|
107
111
|
export * from "./elements/services/stylesheetService/AbstractStylesheetService.js";
|
|
@@ -170,6 +174,8 @@ export * from "./elements/widgets/designerView/extensions/MarginExtension.js";
|
|
|
170
174
|
export * from "./elements/widgets/designerView/extensions/MarginExtensionProvider.js";
|
|
171
175
|
export * from "./elements/widgets/designerView/extensions/PaddingExtension.js";
|
|
172
176
|
export * from "./elements/widgets/designerView/extensions/PaddingExtensionProvider.js";
|
|
177
|
+
export * from "./elements/widgets/designerView/extensions/ProjectiveTransformExtension.js";
|
|
178
|
+
export * from "./elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js";
|
|
173
179
|
export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
|
|
174
180
|
export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
|
|
175
181
|
export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
|
|
@@ -186,14 +192,28 @@ export * from "./elements/widgets/designerView/extensions/MultipleSelectionRectE
|
|
|
186
192
|
export * from "./elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.js";
|
|
187
193
|
export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtension.js";
|
|
188
194
|
export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js";
|
|
189
|
-
export * from "./elements/widgets/designerView/extensions/svg/
|
|
190
|
-
export * from "./elements/widgets/designerView/extensions/svg/
|
|
195
|
+
export * from "./elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js";
|
|
196
|
+
export * from "./elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js";
|
|
197
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/IGeometry.js";
|
|
198
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/GeometryReaderFactory.js";
|
|
199
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.js";
|
|
200
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js";
|
|
201
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.js";
|
|
202
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.js";
|
|
203
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.js";
|
|
204
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.js";
|
|
205
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.js";
|
|
206
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssClipPathGeometryReader.js";
|
|
207
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssShapeOutsideGeometryReader.js";
|
|
208
|
+
export * from "./elements/widgets/designerView/extensions/svg/geometry/CssOffsetPathGeometryReader.js";
|
|
191
209
|
export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
|
|
192
210
|
export * from "./elements/widgets/designerView/extensions/PositionExtensionProvider.js";
|
|
193
211
|
export * from "./elements/widgets/designerView/extensions/ElementDragTitleExtension.js";
|
|
194
212
|
export * from "./elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js";
|
|
195
213
|
export * from "./elements/widgets/designerView/extensions/ResizeExtension.js";
|
|
196
214
|
export * from "./elements/widgets/designerView/extensions/ResizeExtensionProvider.js";
|
|
215
|
+
export * from "./elements/widgets/designerView/extensions/SkewExtension.js";
|
|
216
|
+
export * from "./elements/widgets/designerView/extensions/SkewExtensionProvider.js";
|
|
197
217
|
export * from "./elements/widgets/designerView/extensions/RotateExtension.js";
|
|
198
218
|
export * from "./elements/widgets/designerView/extensions/RotateExtensionProvider.js";
|
|
199
219
|
export * from "./elements/widgets/designerView/extensions/RotateGroupExtension.js";
|
|
@@ -247,6 +267,7 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElem
|
|
|
247
267
|
export * from "./elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js";
|
|
248
268
|
export * from "./elements/widgets/designerView/extensions/contextMenu/AlignItemsContextMenu.js";
|
|
249
269
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ForceCssContextMenu.js";
|
|
270
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/PasteFormatContextMenu.js";
|
|
250
271
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
|
|
251
272
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js";
|
|
252
273
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAA;AAErD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qDAAqD,CAAC;AACpE,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AAGxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { afterAll, afterEach, beforeAll, beforeEach, expect, test } from '@jest/globals';
|
|
2
|
+
|
|
3
|
+
const camelToDashCase = (text: string) => text.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
|
|
4
|
+
|
|
5
|
+
const compressBoxValues = (top: string, right: string, bottom: string, left: string) => {
|
|
6
|
+
if (top === right && top === bottom && top === left)
|
|
7
|
+
return top;
|
|
8
|
+
if (top === bottom && right === left)
|
|
9
|
+
return `${top} ${right}`;
|
|
10
|
+
if (right === left)
|
|
11
|
+
return `${top} ${right} ${bottom}`;
|
|
12
|
+
return `${top} ${right} ${bottom} ${left}`;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const expandBoxValues = (value: string) => {
|
|
16
|
+
const values = value.trim().split(/\s+/);
|
|
17
|
+
if (values.length === 1)
|
|
18
|
+
return [values[0], values[0], values[0], values[0]];
|
|
19
|
+
if (values.length === 2)
|
|
20
|
+
return [values[0], values[1], values[0], values[1]];
|
|
21
|
+
if (values.length === 3)
|
|
22
|
+
return [values[0], values[1], values[2], values[1]];
|
|
23
|
+
return [values[0], values[1], values[2], values[3]];
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
class FakeStyleStore {
|
|
27
|
+
private declarations = new Map<string, string>();
|
|
28
|
+
|
|
29
|
+
reset() {
|
|
30
|
+
this.declarations.clear();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
setProperty(name: string, value: string) {
|
|
34
|
+
this.declarations.set(name, value);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getPropertyValue(name: string) {
|
|
38
|
+
const directValue = this.declarations.get(name);
|
|
39
|
+
if (directValue != null)
|
|
40
|
+
return directValue;
|
|
41
|
+
|
|
42
|
+
const boxSideMap: Record<string, [string, number]> = {
|
|
43
|
+
'margin-top': ['margin', 0],
|
|
44
|
+
'margin-right': ['margin', 1],
|
|
45
|
+
'margin-bottom': ['margin', 2],
|
|
46
|
+
'margin-left': ['margin', 3],
|
|
47
|
+
'padding-top': ['padding', 0],
|
|
48
|
+
'padding-right': ['padding', 1],
|
|
49
|
+
'padding-bottom': ['padding', 2],
|
|
50
|
+
'padding-left': ['padding', 3],
|
|
51
|
+
'top': ['inset', 0],
|
|
52
|
+
'right': ['inset', 1],
|
|
53
|
+
'bottom': ['inset', 2],
|
|
54
|
+
'left': ['inset', 3],
|
|
55
|
+
'border-top-width': ['border-width', 0],
|
|
56
|
+
'border-right-width': ['border-width', 1],
|
|
57
|
+
'border-bottom-width': ['border-width', 2],
|
|
58
|
+
'border-left-width': ['border-width', 3],
|
|
59
|
+
'border-top-style': ['border-style', 0],
|
|
60
|
+
'border-right-style': ['border-style', 1],
|
|
61
|
+
'border-bottom-style': ['border-style', 2],
|
|
62
|
+
'border-left-style': ['border-style', 3],
|
|
63
|
+
'border-top-color': ['border-color', 0],
|
|
64
|
+
'border-right-color': ['border-color', 1],
|
|
65
|
+
'border-bottom-color': ['border-color', 2],
|
|
66
|
+
'border-left-color': ['border-color', 3]
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const boxSide = boxSideMap[name];
|
|
70
|
+
if (boxSide) {
|
|
71
|
+
const boxValue = this.declarations.get(boxSide[0]);
|
|
72
|
+
if (boxValue != null)
|
|
73
|
+
return expandBoxValues(boxValue)[boxSide[1]];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const gap = this.declarations.get('gap');
|
|
77
|
+
if (gap && (name === 'row-gap' || name === 'column-gap')) {
|
|
78
|
+
const [rowGap, columnGap = rowGap] = gap.trim().split(/\s+/, 2);
|
|
79
|
+
return name === 'row-gap' ? rowGap : columnGap;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const flexFlow = this.declarations.get('flex-flow');
|
|
83
|
+
if (flexFlow && (name === 'flex-direction' || name === 'flex-wrap')) {
|
|
84
|
+
const [flexDirection = '', flexWrap = ''] = flexFlow.trim().split(/\s+/, 2);
|
|
85
|
+
return name === 'flex-direction' ? flexDirection : flexWrap;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const placeContent = this.declarations.get('place-content');
|
|
89
|
+
if (placeContent && (name === 'align-content' || name === 'justify-content')) {
|
|
90
|
+
const [alignContent = '', justifyContent = alignContent] = placeContent.trim().split(/\s+/, 2);
|
|
91
|
+
return name === 'align-content' ? alignContent : justifyContent;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return '';
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
get cssText() {
|
|
98
|
+
const serialized: [string, string][] = [];
|
|
99
|
+
const consumed = new Set<string>();
|
|
100
|
+
const get = (name: string) => this.declarations.get(name);
|
|
101
|
+
|
|
102
|
+
const append = (name: string, value: string, consumedNames: string[] = [name]) => {
|
|
103
|
+
serialized.push([name, value]);
|
|
104
|
+
for (const consumedName of consumedNames)
|
|
105
|
+
consumed.add(consumedName);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const appendDirect = (name: string) => {
|
|
109
|
+
const value = get(name);
|
|
110
|
+
if (value)
|
|
111
|
+
append(name, value);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
appendDirect('border');
|
|
115
|
+
appendDirect('border-width');
|
|
116
|
+
appendDirect('border-style');
|
|
117
|
+
appendDirect('border-color');
|
|
118
|
+
appendDirect('background');
|
|
119
|
+
appendDirect('font');
|
|
120
|
+
|
|
121
|
+
const marginTop = get('margin-top');
|
|
122
|
+
const marginRight = get('margin-right');
|
|
123
|
+
const marginBottom = get('margin-bottom');
|
|
124
|
+
const marginLeft = get('margin-left');
|
|
125
|
+
if (!consumed.has('margin') && marginTop && marginRight && marginBottom && marginLeft)
|
|
126
|
+
append('margin', compressBoxValues(marginTop, marginRight, marginBottom, marginLeft), ['margin-top', 'margin-right', 'margin-bottom', 'margin-left']);
|
|
127
|
+
|
|
128
|
+
const paddingTop = get('padding-top');
|
|
129
|
+
const paddingRight = get('padding-right');
|
|
130
|
+
const paddingBottom = get('padding-bottom');
|
|
131
|
+
const paddingLeft = get('padding-left');
|
|
132
|
+
if (!consumed.has('padding') && paddingTop && paddingRight && paddingBottom && paddingLeft)
|
|
133
|
+
append('padding', compressBoxValues(paddingTop, paddingRight, paddingBottom, paddingLeft), ['padding-top', 'padding-right', 'padding-bottom', 'padding-left']);
|
|
134
|
+
|
|
135
|
+
const top = get('top');
|
|
136
|
+
const right = get('right');
|
|
137
|
+
const bottom = get('bottom');
|
|
138
|
+
const left = get('left');
|
|
139
|
+
if (!consumed.has('inset') && top && right && bottom && left)
|
|
140
|
+
append('inset', compressBoxValues(top, right, bottom, left), ['top', 'right', 'bottom', 'left']);
|
|
141
|
+
|
|
142
|
+
const rowGap = get('row-gap');
|
|
143
|
+
const columnGap = get('column-gap');
|
|
144
|
+
if (rowGap && columnGap)
|
|
145
|
+
append('gap', `${rowGap} ${columnGap}`, ['row-gap', 'column-gap']);
|
|
146
|
+
|
|
147
|
+
const flexDirection = get('flex-direction');
|
|
148
|
+
const flexWrap = get('flex-wrap');
|
|
149
|
+
if (flexDirection && flexWrap)
|
|
150
|
+
append('flex-flow', `${flexDirection} ${flexWrap}`, ['flex-direction', 'flex-wrap']);
|
|
151
|
+
|
|
152
|
+
const alignContent = get('align-content');
|
|
153
|
+
const justifyContent = get('justify-content');
|
|
154
|
+
if (alignContent && justifyContent)
|
|
155
|
+
append('place-content', `${alignContent} ${justifyContent}`, ['align-content', 'justify-content']);
|
|
156
|
+
|
|
157
|
+
const borderTop = get('border-top');
|
|
158
|
+
const borderLeft = get('border-left');
|
|
159
|
+
const borderStyle = get('border-style');
|
|
160
|
+
if (borderStyle && (borderTop || borderLeft)) {
|
|
161
|
+
const [topStyle, rightStyle, bottomStyle, leftStyle] = expandBoxValues(borderStyle);
|
|
162
|
+
if (borderTop && topStyle)
|
|
163
|
+
append('border-top', `${borderTop} ${topStyle}`.trim(), ['border-top']);
|
|
164
|
+
if (borderLeft && leftStyle)
|
|
165
|
+
append('border-left', `${borderLeft} ${leftStyle}`.trim(), ['border-left']);
|
|
166
|
+
if (rightStyle)
|
|
167
|
+
append('border-right-style', rightStyle, ['border-style']);
|
|
168
|
+
if (bottomStyle)
|
|
169
|
+
append('border-bottom-style', bottomStyle, ['border-style']);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
for (const [name, value] of this.declarations) {
|
|
173
|
+
if (!consumed.has(name) && !serialized.some(x => x[0] === name))
|
|
174
|
+
append(name, value);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return serialized.map(([name, value]) => `${name}: ${value};`).join(' ');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const createFakeStyle = () => {
|
|
182
|
+
const store = new FakeStyleStore();
|
|
183
|
+
return new Proxy(store as any, {
|
|
184
|
+
get(target, prop) {
|
|
185
|
+
if (typeof prop === 'string' && !(prop in target))
|
|
186
|
+
return target.getPropertyValue(camelToDashCase(prop));
|
|
187
|
+
|
|
188
|
+
const value = target[prop];
|
|
189
|
+
return typeof value === 'function' ? value.bind(target) : value;
|
|
190
|
+
},
|
|
191
|
+
set(target, prop, value) {
|
|
192
|
+
if (typeof prop === 'string' && !(prop in target)) {
|
|
193
|
+
target.setProperty(camelToDashCase(prop), String(value));
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
target[prop] = value;
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
class FakeHelperElement {
|
|
204
|
+
style = createFakeStyle();
|
|
205
|
+
|
|
206
|
+
setAttribute(name: string, value: string) {
|
|
207
|
+
if (name === 'style' && value === '')
|
|
208
|
+
this.style.reset();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
let CssCombiner: typeof import('../src/elements/helper/CssCombiner').CssCombiner;
|
|
213
|
+
let originalDocument: unknown;
|
|
214
|
+
let originalHelperElement: unknown;
|
|
215
|
+
|
|
216
|
+
beforeAll(async () => {
|
|
217
|
+
originalDocument = (<any>globalThis).document;
|
|
218
|
+
(<any>globalThis).document = {
|
|
219
|
+
createElement: () => new FakeHelperElement()
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
({ CssCombiner } = await import('../src/elements/helper/CssCombiner'));
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
afterAll(() => {
|
|
226
|
+
(<any>globalThis).document = originalDocument;
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
beforeEach(() => {
|
|
230
|
+
originalHelperElement = (<any>CssCombiner)._helperElement;
|
|
231
|
+
(<any>CssCombiner)._helperElement = new FakeHelperElement();
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
afterEach(() => {
|
|
235
|
+
(<any>CssCombiner)._helperElement = originalHelperElement;
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
const combine = (styles: Record<string, string>, globalStyles?: Record<string, string>) =>
|
|
239
|
+
CssCombiner.combine(
|
|
240
|
+
new Map(Object.entries(styles)),
|
|
241
|
+
globalStyles ? new Map(Object.entries(globalStyles)) : undefined
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
test('combines border and font longhands into shorthand declarations', () => {
|
|
245
|
+
const result = combine({
|
|
246
|
+
'border-top-style': 'solid',
|
|
247
|
+
'border-right-style': 'solid',
|
|
248
|
+
'border-bottom-style': 'solid',
|
|
249
|
+
'border-left-style': 'solid',
|
|
250
|
+
'border-top-color': 'red',
|
|
251
|
+
'border-right-color': 'red',
|
|
252
|
+
'border-bottom-color': 'red',
|
|
253
|
+
'border-left-color': 'red',
|
|
254
|
+
'border-top-width': '1px',
|
|
255
|
+
'border-right-width': '1px',
|
|
256
|
+
'border-bottom-width': '1px',
|
|
257
|
+
'border-left-width': '1px',
|
|
258
|
+
'font-style': 'italic',
|
|
259
|
+
'font-weight': '700',
|
|
260
|
+
'font-size': '16px',
|
|
261
|
+
'line-height': '24px',
|
|
262
|
+
'font-family': '"Fira Code", monospace'
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
expect(result.get('border')).toBe('1px solid red');
|
|
266
|
+
expect(result.has('border-top-width')).toBe(false);
|
|
267
|
+
expect(result.has('border-right-width')).toBe(false);
|
|
268
|
+
expect(result.has('border-bottom-width')).toBe(false);
|
|
269
|
+
expect(result.has('border-left-width')).toBe(false);
|
|
270
|
+
|
|
271
|
+
const font = result.get('font');
|
|
272
|
+
expect(font).toContain('italic');
|
|
273
|
+
expect(font).toContain('700');
|
|
274
|
+
expect(font).toContain('16px');
|
|
275
|
+
expect(font).toContain('24px');
|
|
276
|
+
expect(font).toContain('Fira Code');
|
|
277
|
+
expect(result.has('font-style')).toBe(false);
|
|
278
|
+
expect(result.has('font-weight')).toBe(false);
|
|
279
|
+
expect(result.has('font-size')).toBe(false);
|
|
280
|
+
expect(result.has('line-height')).toBe(false);
|
|
281
|
+
expect(result.has('font-family')).toBe(false);
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
test('combines additional browser-supported shorthand groups through CSSOM serialization', () => {
|
|
285
|
+
const result = combine({
|
|
286
|
+
'row-gap': '4px',
|
|
287
|
+
'column-gap': '8px',
|
|
288
|
+
'flex-direction': 'column',
|
|
289
|
+
'flex-wrap': 'wrap',
|
|
290
|
+
'align-content': 'center',
|
|
291
|
+
'justify-content': 'space-between'
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
expect(result.get('gap')).toBe('4px 8px');
|
|
295
|
+
expect(result.get('flex-flow')).toBe('column wrap');
|
|
296
|
+
expect(result.get('place-content')).toBe('center space-between');
|
|
297
|
+
|
|
298
|
+
expect(result.has('row-gap')).toBe(false);
|
|
299
|
+
expect(result.has('column-gap')).toBe(false);
|
|
300
|
+
expect(result.has('flex-direction')).toBe(false);
|
|
301
|
+
expect(result.has('flex-wrap')).toBe(false);
|
|
302
|
+
expect(result.has('align-content')).toBe(false);
|
|
303
|
+
expect(result.has('justify-content')).toBe(false);
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
test('keeps custom properties and removes shorthand declarations that match global styles', () => {
|
|
307
|
+
const result = combine({
|
|
308
|
+
'--brand-color': '#c00',
|
|
309
|
+
'row-gap': '4px',
|
|
310
|
+
'column-gap': '8px'
|
|
311
|
+
}, {
|
|
312
|
+
'gap': '4px 8px'
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
expect(result.get('--brand-color')).toBe('#c00');
|
|
316
|
+
expect(result.has('gap')).toBe(false);
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
test('parses cssText declarations with semicolons inside urls', () => {
|
|
320
|
+
const result = (<any>CssCombiner).parseStyleDeclarationList(
|
|
321
|
+
'background: url("data:image/svg+xml;utf8,<svg viewBox=\\"0 0 1 1\\"></svg>") no-repeat center / cover; color: red;'
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
expect(result.get('background')).toBe('url("data:image/svg+xml;utf8,<svg viewBox=\\"0 0 1 1\\"></svg>") no-repeat center / cover');
|
|
325
|
+
expect(result.get('color')).toBe('red');
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
test('does not replace declarations with longer browser cssText expansions', () => {
|
|
329
|
+
const result = combine({
|
|
330
|
+
'border-top': '4px',
|
|
331
|
+
'border-left': '2px',
|
|
332
|
+
'border-style': 'solid'
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
expect(result.get('border-top')).toBe('4px');
|
|
336
|
+
expect(result.get('border-left')).toBe('2px');
|
|
337
|
+
expect(result.get('border-style')).toBe('solid');
|
|
338
|
+
expect(result.has('border-right-style')).toBe(false);
|
|
339
|
+
expect(result.has('border-bottom-style')).toBe(false);
|
|
340
|
+
});
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { expect, test } from '@jest/globals';
|
|
2
|
+
import { createPasteFormatSnapshot, createPasteFormatSnapshotFromEntries, getPasteFormatEntries } from '../src/elements/services/copyPasteService/PasteFormatSnapshot';
|
|
3
|
+
|
|
4
|
+
test('collects border, background, and text properties and skips unrelated styles', () => {
|
|
5
|
+
const values: Record<string, string> = {
|
|
6
|
+
'background-color': ' rgb(1, 2, 3) ',
|
|
7
|
+
'border-top-color': ' red ',
|
|
8
|
+
'border-top-style': ' solid ',
|
|
9
|
+
'font-family': ' Fira Code ',
|
|
10
|
+
'line-height': ' 24px ',
|
|
11
|
+
'color': ' white ',
|
|
12
|
+
'display': ' grid '
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const fakeStyle = {
|
|
16
|
+
length: 7,
|
|
17
|
+
0: 'background-color',
|
|
18
|
+
1: 'border-top-color',
|
|
19
|
+
2: 'border-top-style',
|
|
20
|
+
3: 'font-family',
|
|
21
|
+
4: 'line-height',
|
|
22
|
+
5: 'color',
|
|
23
|
+
6: 'display',
|
|
24
|
+
getPropertyValue(name: string) {
|
|
25
|
+
return values[name] ?? '';
|
|
26
|
+
}
|
|
27
|
+
} as Pick<CSSStyleDeclaration, 'getPropertyValue' | 'length'> & ArrayLike<string>;
|
|
28
|
+
|
|
29
|
+
const snapshot = createPasteFormatSnapshot(fakeStyle);
|
|
30
|
+
|
|
31
|
+
expect(snapshot.background).toEqual([{ name: 'background-color', value: 'rgb(1, 2, 3)' }]);
|
|
32
|
+
expect(snapshot.border).toEqual([
|
|
33
|
+
{ name: 'border-top-color', value: 'red' },
|
|
34
|
+
{ name: 'border-top-style', value: 'solid' }
|
|
35
|
+
]);
|
|
36
|
+
expect(snapshot.text).toEqual([
|
|
37
|
+
{ name: 'font-family', value: 'Fira Code' },
|
|
38
|
+
{ name: 'line-height', value: '24px' },
|
|
39
|
+
{ name: 'color', value: 'white' }
|
|
40
|
+
]);
|
|
41
|
+
expect(getPasteFormatEntries(snapshot, 'all')).toEqual([
|
|
42
|
+
{ name: 'border-top-color', value: 'red' },
|
|
43
|
+
{ name: 'border-top-style', value: 'solid' },
|
|
44
|
+
{ name: 'background-color', value: 'rgb(1, 2, 3)' },
|
|
45
|
+
{ name: 'font-family', value: 'Fira Code' },
|
|
46
|
+
{ name: 'line-height', value: '24px' },
|
|
47
|
+
{ name: 'color', value: 'white' }
|
|
48
|
+
]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test('keeps duplicate properties out of the all group', () => {
|
|
52
|
+
const values: Record<string, string> = {
|
|
53
|
+
'background-image': 'none',
|
|
54
|
+
'background-color': 'transparent',
|
|
55
|
+
'background-color-duplicate': ''
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const fakeStyle = {
|
|
59
|
+
length: 4,
|
|
60
|
+
0: 'background-image',
|
|
61
|
+
1: 'background-color',
|
|
62
|
+
2: 'background-image',
|
|
63
|
+
3: 'background-color-duplicate',
|
|
64
|
+
getPropertyValue(name: string) {
|
|
65
|
+
return values[name] ?? '';
|
|
66
|
+
}
|
|
67
|
+
} as Pick<CSSStyleDeclaration, 'getPropertyValue' | 'length'> & ArrayLike<string>;
|
|
68
|
+
|
|
69
|
+
const snapshot = createPasteFormatSnapshot(fakeStyle);
|
|
70
|
+
|
|
71
|
+
expect(snapshot.background).toEqual([
|
|
72
|
+
{ name: 'background-image', value: 'none' },
|
|
73
|
+
{ name: 'background-color', value: 'transparent' }
|
|
74
|
+
]);
|
|
75
|
+
expect(snapshot.all).toEqual(snapshot.background);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('creates a snapshot from design item style entries', () => {
|
|
79
|
+
const snapshot = createPasteFormatSnapshotFromEntries([
|
|
80
|
+
['border-top-color', ' red '],
|
|
81
|
+
['background-color', ' rgb(1, 2, 3) '],
|
|
82
|
+
['font-family', ' Fira Code '],
|
|
83
|
+
['color', ' white ']
|
|
84
|
+
]);
|
|
85
|
+
|
|
86
|
+
expect(snapshot?.border).toEqual([{ name: 'border-top-color', value: 'red' }]);
|
|
87
|
+
expect(snapshot?.background).toEqual([{ name: 'background-color', value: 'rgb(1, 2, 3)' }]);
|
|
88
|
+
expect(snapshot?.text).toEqual([
|
|
89
|
+
{ name: 'font-family', value: 'Fira Code' },
|
|
90
|
+
{ name: 'color', value: 'white' }
|
|
91
|
+
]);
|
|
92
|
+
});
|