@node-projects/web-component-designer 0.0.164 → 0.0.165
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/item/DesignItem.d.ts +2 -0
- package/dist/elements/item/DesignItem.js +1 -0
- package/dist/elements/item/IDesignItem.d.ts +2 -0
- package/dist/elements/services/DefaultServiceBootstrap.js +6 -6
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +1 -1
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +2 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +34 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js +1 -0
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +4 -4
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.js +1 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +4 -4
- package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.js +20 -0
- package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js +13 -0
- package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionDesignViewConfigButtons.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionDesignViewConfigButtons.js +22 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +6 -3
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.d.ts +11 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.js +19 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionDesignViewConfigButtons.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionDesignViewConfigButtons.js +22 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.d.ts +13 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js +24 -0
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +2 -0
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +13 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.js +5 -4
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ import { NodeType } from './NodeType.js';
|
|
|
6
6
|
import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType.js';
|
|
7
7
|
import { IDesignerExtension } from '../widgets/designerView/extensions/IDesignerExtension.js';
|
|
8
8
|
import { ISize } from '../../interfaces/ISize.js';
|
|
9
|
+
import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
|
|
9
10
|
export declare class DesignItem implements IDesignItem {
|
|
10
11
|
lastContainerSize: ISize;
|
|
11
12
|
parsedNode: any;
|
|
@@ -13,6 +14,7 @@ export declare class DesignItem implements IDesignItem {
|
|
|
13
14
|
serviceContainer: ServiceContainer;
|
|
14
15
|
instanceServiceContainer: InstanceServiceContainer;
|
|
15
16
|
appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
|
|
17
|
+
shouldAppliedDesignerExtensions: Map<ExtensionType, IDesignerExtensionProvider[]>;
|
|
16
18
|
clone(): Promise<IDesignItem>;
|
|
17
19
|
replaceNode(newNode: Node): void;
|
|
18
20
|
get nodeType(): NodeType;
|
|
@@ -17,6 +17,7 @@ export class DesignItem {
|
|
|
17
17
|
serviceContainer;
|
|
18
18
|
instanceServiceContainer;
|
|
19
19
|
appliedDesignerExtensions = new Map();
|
|
20
|
+
shouldAppliedDesignerExtensions = new Map();
|
|
20
21
|
async clone() {
|
|
21
22
|
const html = DomConverter.ConvertToString([this], null, false);
|
|
22
23
|
const parsed = await this.serviceContainer.htmlParserService.parse(html, this.serviceContainer, this.instanceServiceContainer);
|
|
@@ -5,6 +5,7 @@ import { NodeType } from './NodeType.js';
|
|
|
5
5
|
import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType.js';
|
|
6
6
|
import { IDesignerExtension } from '../widgets/designerView/extensions/IDesignerExtension.js';
|
|
7
7
|
import { ISize } from "../../interfaces/ISize.js";
|
|
8
|
+
import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
|
|
8
9
|
export interface IDesignItem {
|
|
9
10
|
lastContainerSize: ISize;
|
|
10
11
|
replaceNode(newNode: Node): any;
|
|
@@ -44,6 +45,7 @@ export interface IDesignItem {
|
|
|
44
45
|
serviceContainer: ServiceContainer;
|
|
45
46
|
instanceServiceContainer: InstanceServiceContainer;
|
|
46
47
|
appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
|
|
48
|
+
shouldAppliedDesignerExtensions: Map<ExtensionType, IDesignerExtensionProvider[]>;
|
|
47
49
|
getOrCreateDesignItem(node: Node): any;
|
|
48
50
|
openGroup(title: string): ChangeGroup;
|
|
49
51
|
styles(): Iterable<[name: string, value: string]>;
|
|
@@ -16,7 +16,7 @@ import { TransformOriginExtensionProvider } from '../widgets/designerView/extens
|
|
|
16
16
|
import { CanvasExtensionProvider } from '../widgets/designerView/extensions/CanvasExtensionProvider.js';
|
|
17
17
|
import { PositionExtensionProvider } from '../widgets/designerView/extensions/PositionExtensionProvider.js';
|
|
18
18
|
import { PathExtensionProvider } from '../widgets/designerView/extensions/svg/PathExtensionProvider.js';
|
|
19
|
-
import {
|
|
19
|
+
import { HighlightElementExtensionProvider } from '../widgets/designerView/extensions/HighlightElementExtensionProvider.js';
|
|
20
20
|
import { NamedTools } from '../widgets/designerView/tools/NamedTools.js';
|
|
21
21
|
import { PointerTool } from '../widgets/designerView/tools/PointerTool.js';
|
|
22
22
|
import { DrawPathTool } from '../widgets/designerView/tools/DrawPathTool.js';
|
|
@@ -34,7 +34,7 @@ import { PickColorTool } from '../widgets/designerView/tools/PickColorTool.js';
|
|
|
34
34
|
import { TextTool } from '../widgets/designerView/tools/TextTool.js';
|
|
35
35
|
import { GrayOutExtensionProvider } from '../widgets/designerView/extensions/GrayOutExtensionProvider.js';
|
|
36
36
|
import { AltToEnterContainerExtensionProvider } from '../widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js';
|
|
37
|
-
import {
|
|
37
|
+
import { InvisibleElementExtensionProvider } from '../widgets/designerView/extensions/InvisibleElementExtensionProvider.js';
|
|
38
38
|
import { ItemsBelowContextMenu } from '../widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js';
|
|
39
39
|
import { GridPlacementService } from './placementService/GridPlacementService.js';
|
|
40
40
|
import { ElementAtPointService } from './elementAtPointService/ElementAtPointService.js';
|
|
@@ -47,7 +47,6 @@ import { DefaultModelCommandService } from './modelCommandService/DefaultModelCo
|
|
|
47
47
|
import { ButtonSeperatorProvider } from '../widgets/designerView/ButtonSeperatorProvider.js';
|
|
48
48
|
import { GridExtensionDesignViewConfigButtons } from '../widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.js';
|
|
49
49
|
import { DemoProviderService } from './demoProviderService/DemoProviderService.js';
|
|
50
|
-
//import { CursorLinePointerExtensionProvider } from '../widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js';
|
|
51
50
|
import { DrawRectTool } from '../widgets/designerView/tools/DrawRectTool.js';
|
|
52
51
|
import { DrawEllipsisTool } from '../widgets/designerView/tools/DrawEllipsisTool.js';
|
|
53
52
|
import { DrawLineTool } from '../widgets/designerView/tools/DrawLineTool.js';
|
|
@@ -72,6 +71,7 @@ import { PropertyGroupsService } from './propertiesService/PropertyGroupsService
|
|
|
72
71
|
import { PlacementExtensionProvider } from '../widgets/designerView/extensions/PlacementExtensionProvider.js';
|
|
73
72
|
import { FlexboxExtensionProvider } from '../widgets/designerView/extensions/FlexboxExtensionProvider.js';
|
|
74
73
|
import { FlexboxExtensionDesignViewConfigButtons } from '../widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js';
|
|
74
|
+
import { InvisibleElementExtensionDesignViewConfigButtons } from '../widgets/designerView/extensions/InvisibleElementExtensionDesignViewConfigButtons.js';
|
|
75
75
|
export function createDefaultServiceContainer() {
|
|
76
76
|
let serviceContainer = new ServiceContainer();
|
|
77
77
|
serviceContainer.register("propertyService", new PolymerPropertiesService());
|
|
@@ -96,7 +96,7 @@ export function createDefaultServiceContainer() {
|
|
|
96
96
|
serviceContainer.register("demoProviderService", new DemoProviderService());
|
|
97
97
|
serviceContainer.designerExtensions.set(ExtensionType.Permanent, [
|
|
98
98
|
// new ResizeExtensionProvider(false),
|
|
99
|
-
new
|
|
99
|
+
new InvisibleElementExtensionProvider(),
|
|
100
100
|
// new ElementDragTitleExtensionProvider(),
|
|
101
101
|
]);
|
|
102
102
|
serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
|
|
@@ -121,7 +121,7 @@ export function createDefaultServiceContainer() {
|
|
|
121
121
|
new FlexboxExtensionProvider()
|
|
122
122
|
]);
|
|
123
123
|
serviceContainer.designerExtensions.set(ExtensionType.MouseOver, [
|
|
124
|
-
new
|
|
124
|
+
new HighlightElementExtensionProvider()
|
|
125
125
|
]);
|
|
126
126
|
serviceContainer.designerExtensions.set(ExtensionType.Placement, [
|
|
127
127
|
new PlacementExtensionProvider()
|
|
@@ -154,7 +154,7 @@ export function createDefaultServiceContainer() {
|
|
|
154
154
|
serviceContainer.designerPointerExtensions.push(
|
|
155
155
|
//new CursorLinePointerExtensionProvider()
|
|
156
156
|
);
|
|
157
|
-
serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons(), new FlexboxExtensionDesignViewConfigButtons());
|
|
157
|
+
serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons(), new FlexboxExtensionDesignViewConfigButtons(), new ButtonSeperatorProvider(10), new InvisibleElementExtensionDesignViewConfigButtons());
|
|
158
158
|
serviceContainer.designViewToolbarButtons.push(new PointerToolButtonProvider(), new SeperatorToolProvider(22), new SelectorToolButtonProvider(), new SeperatorToolProvider(22), new ZoomToolButtonProvider(), new SeperatorToolProvider(22), new DrawToolButtonProvider(), new SeperatorToolProvider(5), new TextToolButtonProvider());
|
|
159
159
|
serviceContainer.designerContextMenuExtensions = [
|
|
160
160
|
new CopyPasteContextMenu(),
|
|
@@ -10,7 +10,7 @@ export class CssPropertiesService extends CommonPropertiesService {
|
|
|
10
10
|
{
|
|
11
11
|
name: "display",
|
|
12
12
|
type: "list",
|
|
13
|
-
values: ["block", "inline-block", "flex", "contents", "grid", "inherit", "initial", "none"],
|
|
13
|
+
values: ["block", "inline", "inline-block", "flex", "inline-flex", "contents", "grid", "inline-grid", "inherit", "initial", "none"],
|
|
14
14
|
service: this,
|
|
15
15
|
propertyType: PropertyType.cssValue
|
|
16
16
|
},
|
|
@@ -17,4 +17,6 @@ export declare class ExtensionManager implements IExtensionManager {
|
|
|
17
17
|
refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, ignoredExtension?: any): void;
|
|
18
18
|
refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: any): void;
|
|
19
19
|
refreshAllAppliedExtentions(): void;
|
|
20
|
+
reapplyAllAppliedExtentions(): void;
|
|
21
|
+
private static getAllChildElements;
|
|
20
22
|
}
|
|
@@ -50,6 +50,11 @@ export class ExtensionManager {
|
|
|
50
50
|
let extensions = [];
|
|
51
51
|
if (extProv) {
|
|
52
52
|
for (let e of extProv) {
|
|
53
|
+
let shouldAppE = designItem.shouldAppliedDesignerExtensions.get(extensionType);
|
|
54
|
+
if (!shouldAppE)
|
|
55
|
+
shouldAppE = [];
|
|
56
|
+
shouldAppE.push(e);
|
|
57
|
+
designItem.shouldAppliedDesignerExtensions.set(extensionType, shouldAppE);
|
|
53
58
|
if (e.shouldExtend(this, this.designerCanvas, designItem)) {
|
|
54
59
|
let appE = designItem.appliedDesignerExtensions.get(extensionType);
|
|
55
60
|
if (!appE)
|
|
@@ -83,6 +88,11 @@ export class ExtensionManager {
|
|
|
83
88
|
if (extProv) {
|
|
84
89
|
for (let e of extProv) {
|
|
85
90
|
for (let i of designItems) {
|
|
91
|
+
let shouldAppE = i.shouldAppliedDesignerExtensions.get(extensionType);
|
|
92
|
+
if (!shouldAppE)
|
|
93
|
+
shouldAppE = [];
|
|
94
|
+
shouldAppE.push(e);
|
|
95
|
+
i.shouldAppliedDesignerExtensions.set(extensionType, shouldAppE);
|
|
86
96
|
if (i.nodeType == NodeType.Element && e.shouldExtend(this, this.designerCanvas, i)) {
|
|
87
97
|
let appE = i.appliedDesignerExtensions.get(extensionType);
|
|
88
98
|
if (!appE)
|
|
@@ -111,6 +121,7 @@ export class ExtensionManager {
|
|
|
111
121
|
removeExtension(designItem, extensionType) {
|
|
112
122
|
if (designItem) {
|
|
113
123
|
if (extensionType) {
|
|
124
|
+
designItem.shouldAppliedDesignerExtensions.delete(extensionType);
|
|
114
125
|
let exts = designItem.appliedDesignerExtensions.get(extensionType);
|
|
115
126
|
if (exts) {
|
|
116
127
|
for (let e of exts) {
|
|
@@ -127,6 +138,7 @@ export class ExtensionManager {
|
|
|
127
138
|
}
|
|
128
139
|
}
|
|
129
140
|
else {
|
|
141
|
+
designItem.shouldAppliedDesignerExtensions.clear();
|
|
130
142
|
for (let appE of designItem.appliedDesignerExtensions) {
|
|
131
143
|
for (let e of appE[1]) {
|
|
132
144
|
try {
|
|
@@ -146,6 +158,7 @@ export class ExtensionManager {
|
|
|
146
158
|
if (designItems) {
|
|
147
159
|
if (extensionType) {
|
|
148
160
|
for (let i of designItems) {
|
|
161
|
+
i.shouldAppliedDesignerExtensions.delete(extensionType);
|
|
149
162
|
let exts = i.appliedDesignerExtensions.get(extensionType);
|
|
150
163
|
if (exts) {
|
|
151
164
|
for (let e of exts) {
|
|
@@ -164,6 +177,7 @@ export class ExtensionManager {
|
|
|
164
177
|
}
|
|
165
178
|
else {
|
|
166
179
|
for (let i of designItems) {
|
|
180
|
+
i.shouldAppliedDesignerExtensions.clear();
|
|
167
181
|
for (let appE of i.appliedDesignerExtensions) {
|
|
168
182
|
for (let e of appE[1]) {
|
|
169
183
|
try {
|
|
@@ -262,4 +276,24 @@ export class ExtensionManager {
|
|
|
262
276
|
refreshAllAppliedExtentions() {
|
|
263
277
|
this.refreshAllExtensions([...this.designItemsWithExtentions]);
|
|
264
278
|
}
|
|
279
|
+
//todo does not work with permanant, when not applied... maybe we need to do in another way
|
|
280
|
+
//maybe store the "shouldAppliedExtensions??"
|
|
281
|
+
reapplyAllAppliedExtentions() {
|
|
282
|
+
for (let d of ExtensionManager.getAllChildElements(this.designerCanvas.rootDesignItem)) {
|
|
283
|
+
const keys = [...d.shouldAppliedDesignerExtensions.keys()];
|
|
284
|
+
for (let e of keys) {
|
|
285
|
+
this.removeExtension(d, e);
|
|
286
|
+
this.applyExtension(d, e);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
static *getAllChildElements(designItem) {
|
|
291
|
+
if (designItem.nodeType == NodeType.Element)
|
|
292
|
+
yield designItem;
|
|
293
|
+
if (designItem.hasChildren) {
|
|
294
|
+
for (let c of designItem.children())
|
|
295
|
+
for (let di of ExtensionManager.getAllChildElements(c))
|
|
296
|
+
yield di;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
265
299
|
}
|
|
@@ -5,7 +5,7 @@ import { IDesignerExtension } from './IDesignerExtension.js';
|
|
|
5
5
|
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
6
|
export declare const flexboxExtensionShowOverlayOptionName = "flexboxExtensionShowOverlay";
|
|
7
7
|
export declare class FlexboxExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
-
shouldExtend(extensionManager: IExtensionManager,
|
|
9
|
-
getExtension(extensionManager: IExtensionManager,
|
|
8
|
+
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
9
|
+
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
10
10
|
readonly style: CSSStyleSheet;
|
|
11
11
|
}
|
|
@@ -2,14 +2,14 @@ import { css } from "@node-projects/base-custom-webcomponent";
|
|
|
2
2
|
import { FlexboxExtension } from './FlexboxExtension.js';
|
|
3
3
|
export const flexboxExtensionShowOverlayOptionName = 'flexboxExtensionShowOverlay';
|
|
4
4
|
export class FlexboxExtensionProvider {
|
|
5
|
-
shouldExtend(extensionManager,
|
|
5
|
+
shouldExtend(extensionManager, designerCanvas, designItem) {
|
|
6
6
|
const display = getComputedStyle(designItem.element).display;
|
|
7
7
|
if (display == 'flex' || display == 'inline-flex')
|
|
8
|
-
return
|
|
8
|
+
return designerCanvas.instanceServiceContainer.designContext.extensionOptions[flexboxExtensionShowOverlayOptionName] !== false;
|
|
9
9
|
return false;
|
|
10
10
|
}
|
|
11
|
-
getExtension(extensionManager,
|
|
12
|
-
return new FlexboxExtension(extensionManager,
|
|
11
|
+
getExtension(extensionManager, designerCanvas, designItem) {
|
|
12
|
+
return new FlexboxExtension(extensionManager, designerCanvas, designItem);
|
|
13
13
|
}
|
|
14
14
|
style = css `
|
|
15
15
|
.svg-flexbox { stroke: orange; fill: #9a47ff22; }
|
package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DesignerView } from "../designerView.js";
|
|
2
|
-
import { IDesignerCanvas } from
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
3
3
|
import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
|
|
4
4
|
export declare class GridExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
|
|
5
5
|
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
@@ -5,7 +5,7 @@ import { IDesignerExtension } from './IDesignerExtension.js';
|
|
|
5
5
|
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
6
|
export declare const gridExtensionShowOverlayOptionName = "gridExtensionShowOverlay";
|
|
7
7
|
export declare class GridExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
-
shouldExtend(extensionManager: IExtensionManager,
|
|
9
|
-
getExtension(extensionManager: IExtensionManager,
|
|
8
|
+
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
9
|
+
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
10
10
|
readonly style: CSSStyleSheet;
|
|
11
11
|
}
|
|
@@ -2,14 +2,14 @@ import { GridExtension } from './GridExtension.js';
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export const gridExtensionShowOverlayOptionName = 'gridExtensionShowOverlay';
|
|
4
4
|
export class GridExtensionProvider {
|
|
5
|
-
shouldExtend(extensionManager,
|
|
5
|
+
shouldExtend(extensionManager, designerCanvas, designItem) {
|
|
6
6
|
const display = getComputedStyle(designItem.element).display;
|
|
7
7
|
if (display == 'grid' || display == 'inline-grid')
|
|
8
|
-
return
|
|
8
|
+
return designerCanvas.instanceServiceContainer.designContext.extensionOptions[gridExtensionShowOverlayOptionName] !== false;
|
|
9
9
|
return false;
|
|
10
10
|
}
|
|
11
|
-
getExtension(extensionManager,
|
|
12
|
-
return new GridExtension(extensionManager,
|
|
11
|
+
getExtension(extensionManager, designerCanvas, designItem) {
|
|
12
|
+
return new GridExtension(extensionManager, designerCanvas, designItem);
|
|
13
13
|
}
|
|
14
14
|
style = css `
|
|
15
15
|
.svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
3
|
+
import { AbstractExtension } from './AbstractExtension.js';
|
|
4
|
+
import { IExtensionManager } from './IExtensionManger.js';
|
|
5
|
+
export declare class HighlightElementExtension extends AbstractExtension {
|
|
6
|
+
private _rect;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from '../../../helper/TransformHelper.js';
|
|
2
|
+
import { AbstractExtension } from './AbstractExtension.js';
|
|
3
|
+
const offset = 3;
|
|
4
|
+
export class HighlightElementExtension extends AbstractExtension {
|
|
5
|
+
_rect;
|
|
6
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
7
|
+
super(extensionManager, designerView, extendedItem);
|
|
8
|
+
}
|
|
9
|
+
extend() {
|
|
10
|
+
this.refresh();
|
|
11
|
+
}
|
|
12
|
+
refresh() {
|
|
13
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, { x: offset, y: offset }, this.designerCanvas);
|
|
14
|
+
this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-hover', this._rect);
|
|
15
|
+
this._rect.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
|
|
16
|
+
}
|
|
17
|
+
dispose() {
|
|
18
|
+
this._removeAllOverlays();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
|
|
2
|
+
import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
3
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
4
|
+
import { IDesignerExtension } from './IDesignerExtension.js';
|
|
5
|
+
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
|
+
export declare class HighlightElementExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
+
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
|
+
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
+
readonly style: CSSStyleSheet;
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HighlightElementExtension } from './HighlightElementExtension.js';
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
export class HighlightElementExtensionProvider {
|
|
4
|
+
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
getExtension(extensionManager, designerView, designItem) {
|
|
8
|
+
return new HighlightElementExtension(extensionManager, designerView, designItem);
|
|
9
|
+
}
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-hover { stroke: #90caf9; fill: none; }
|
|
12
|
+
`;
|
|
13
|
+
}
|
|
@@ -10,4 +10,5 @@ export interface IExtensionManager {
|
|
|
10
10
|
refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): any;
|
|
11
11
|
refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: any): any;
|
|
12
12
|
refreshAllAppliedExtentions(): any;
|
|
13
|
+
reapplyAllAppliedExtentions(): any;
|
|
13
14
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DesignerView } from "../designerView.js";
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
3
|
+
import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
|
|
4
|
+
export declare class InvisibleDivExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
6
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { invisibleDivExtensionShowOverlayOptionName } from "./InvisibleElementExtensionProvider.js";
|
|
2
|
+
export class InvisibleDivExtensionDesignViewConfigButtons {
|
|
3
|
+
provideButtons(designerView, designerCanvas) {
|
|
4
|
+
const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
|
|
5
|
+
const btn = document.createElement('div');
|
|
6
|
+
btn.innerText = 'I';
|
|
7
|
+
btn.title = 'show invisible div overlay';
|
|
8
|
+
btn.className = 'toolbar-control';
|
|
9
|
+
if (extensionOptions[invisibleDivExtensionShowOverlayOptionName] !== false)
|
|
10
|
+
btn.classList.add('selected');
|
|
11
|
+
btn.onclick = () => {
|
|
12
|
+
const val = extensionOptions[invisibleDivExtensionShowOverlayOptionName];
|
|
13
|
+
extensionOptions[invisibleDivExtensionShowOverlayOptionName] = val === false ? true : false;
|
|
14
|
+
if (extensionOptions[invisibleDivExtensionShowOverlayOptionName] !== false)
|
|
15
|
+
btn.classList.add('selected');
|
|
16
|
+
else
|
|
17
|
+
btn.classList.remove('selected');
|
|
18
|
+
designerCanvas.extensionManager.reapplyAllAppliedExtentions();
|
|
19
|
+
};
|
|
20
|
+
return [btn];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -3,6 +3,7 @@ import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
|
3
3
|
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
4
4
|
import { IDesignerExtension } from './IDesignerExtension.js';
|
|
5
5
|
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
|
+
export declare const invisibleDivExtensionShowOverlayOptionName = "invisibleDivExtensionShowOverlay";
|
|
6
7
|
export declare class InvisibleDivExtensionProvider implements IDesignerExtensionProvider {
|
|
7
8
|
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
9
|
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { InvisibleDivExtension } from './InvisibleDivExtension.js';
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
export const invisibleDivExtensionShowOverlayOptionName = 'invisibleDivExtensionShowOverlay';
|
|
3
4
|
export class InvisibleDivExtensionProvider {
|
|
4
5
|
shouldExtend(extensionManager, designerCanvas, designItem) {
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if (designerCanvas.instanceServiceContainer.designContext.extensionOptions[invisibleDivExtensionShowOverlayOptionName] !== false) {
|
|
7
|
+
if (designItem.name == 'div') {
|
|
8
|
+
const st = window.getComputedStyle(designItem.element);
|
|
9
|
+
return st.backgroundColor == 'rgba(0, 0, 0, 0)' && st.borderStyle == 'none';
|
|
10
|
+
}
|
|
8
11
|
}
|
|
9
12
|
return false;
|
|
10
13
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
3
|
+
import { AbstractExtension } from './AbstractExtension.js';
|
|
4
|
+
import { IExtensionManager } from './IExtensionManger.js';
|
|
5
|
+
export declare class InvisibleElementExtension extends AbstractExtension {
|
|
6
|
+
private _rect;
|
|
7
|
+
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
|
+
extend(): void;
|
|
9
|
+
refresh(): void;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from '../../../helper/TransformHelper.js';
|
|
2
|
+
import { AbstractExtension } from './AbstractExtension.js';
|
|
3
|
+
import { OverlayLayer } from "./OverlayLayer.js";
|
|
4
|
+
export class InvisibleElementExtension extends AbstractExtension {
|
|
5
|
+
_rect;
|
|
6
|
+
constructor(extensionManager, designerCanvas, extendedItem) {
|
|
7
|
+
super(extensionManager, designerCanvas, extendedItem);
|
|
8
|
+
}
|
|
9
|
+
extend() {
|
|
10
|
+
this.refresh();
|
|
11
|
+
}
|
|
12
|
+
refresh() {
|
|
13
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, null, this.designerCanvas);
|
|
14
|
+
this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-invisible-div', this._rect, OverlayLayer.Background);
|
|
15
|
+
}
|
|
16
|
+
dispose() {
|
|
17
|
+
this._removeAllOverlays();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DesignerView } from "../designerView.js";
|
|
2
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
3
|
+
import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
|
|
4
|
+
export declare class InvisibleElementExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
6
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { invisibleElementExtensionShowOverlayOptionName } from "./InvisibleElementExtensionProvider.js";
|
|
2
|
+
export class InvisibleElementExtensionDesignViewConfigButtons {
|
|
3
|
+
provideButtons(designerView, designerCanvas) {
|
|
4
|
+
const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
|
|
5
|
+
const btn = document.createElement('div');
|
|
6
|
+
btn.innerText = 'I';
|
|
7
|
+
btn.title = 'show invisible div overlay';
|
|
8
|
+
btn.className = 'toolbar-control';
|
|
9
|
+
if (extensionOptions[invisibleElementExtensionShowOverlayOptionName] !== false)
|
|
10
|
+
btn.classList.add('selected');
|
|
11
|
+
btn.onclick = () => {
|
|
12
|
+
const val = extensionOptions[invisibleElementExtensionShowOverlayOptionName];
|
|
13
|
+
extensionOptions[invisibleElementExtensionShowOverlayOptionName] = val === false ? true : false;
|
|
14
|
+
if (extensionOptions[invisibleElementExtensionShowOverlayOptionName] !== false)
|
|
15
|
+
btn.classList.add('selected');
|
|
16
|
+
else
|
|
17
|
+
btn.classList.remove('selected');
|
|
18
|
+
designerCanvas.extensionManager.reapplyAllAppliedExtentions();
|
|
19
|
+
};
|
|
20
|
+
return [btn];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
|
|
2
|
+
import { IDesignItem } from '../../../item/IDesignItem.js';
|
|
3
|
+
import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
4
|
+
import { IDesignerExtension } from './IDesignerExtension.js';
|
|
5
|
+
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
|
+
export declare const invisibleElementExtensionShowOverlayOptionName = "invisibleElementExtensionShowOverlay";
|
|
7
|
+
export declare class InvisibleElementExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
+
elementFilter: (designItem: IDesignItem) => boolean;
|
|
9
|
+
constructor(elementFilter?: (designItem: IDesignItem) => boolean);
|
|
10
|
+
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
11
|
+
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
12
|
+
readonly style: CSSStyleSheet;
|
|
13
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { InvisibleElementExtension as InvisibleElementExtension } from './InvisibleElementExtension.js';
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
export const invisibleElementExtensionShowOverlayOptionName = 'invisibleElementExtensionShowOverlay';
|
|
4
|
+
export class InvisibleElementExtensionProvider {
|
|
5
|
+
elementFilter;
|
|
6
|
+
constructor(elementFilter = (d) => d.name == 'div' && window.getComputedStyle(d.element).display != 'inline') {
|
|
7
|
+
this.elementFilter = elementFilter;
|
|
8
|
+
}
|
|
9
|
+
shouldExtend(extensionManager, designerCanvas, designItem) {
|
|
10
|
+
if (designerCanvas.instanceServiceContainer.designContext.extensionOptions[invisibleElementExtensionShowOverlayOptionName] !== false) {
|
|
11
|
+
if (this.elementFilter(designItem)) {
|
|
12
|
+
const st = window.getComputedStyle(designItem.element);
|
|
13
|
+
return st.backgroundColor == 'rgba(0, 0, 0, 0)' && st.borderStyle == 'none';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
getExtension(extensionManager, designerCanvas, designItem) {
|
|
19
|
+
return new InvisibleElementExtension(extensionManager, designerCanvas, designItem);
|
|
20
|
+
}
|
|
21
|
+
style = css `
|
|
22
|
+
.svg-invisible-div { stroke: lightgray; fill: transparent; stroke-width: 1;
|
|
23
|
+
`;
|
|
24
|
+
}
|
|
@@ -4,6 +4,8 @@ import { IDesignerCanvas } from '../IDesignerCanvas.js';
|
|
|
4
4
|
import { IDesignerExtension } from './IDesignerExtension.js';
|
|
5
5
|
import { IExtensionManager } from './IExtensionManger.js';
|
|
6
6
|
export declare class TransformOriginExtensionProvider implements IDesignerExtensionProvider {
|
|
7
|
+
showOnlyWhenSet: boolean;
|
|
8
|
+
constructor(showOnlyWhenSet?: boolean);
|
|
7
9
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
10
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
11
|
readonly style: CSSStyleSheet;
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { TransformOriginExtension } from './TransformOriginExtension.js';
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class TransformOriginExtensionProvider {
|
|
4
|
+
showOnlyWhenSet;
|
|
5
|
+
constructor(showOnlyWhenSet = true) {
|
|
6
|
+
this.showOnlyWhenSet = showOnlyWhenSet;
|
|
7
|
+
}
|
|
4
8
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
9
|
if (designItem.node instanceof HTMLElement || (designItem.node instanceof SVGElement && designItem.node.localName === 'svg')) {
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
if (!this.showOnlyWhenSet)
|
|
11
|
+
return true;
|
|
12
|
+
if (designItem.hasStyle('transformOrigin'))
|
|
13
|
+
return true;
|
|
14
|
+
if (getComputedStyle(designItem.element).display != 'inline' && designItem.element.getBoundingClientRect) {
|
|
15
|
+
const r = designItem.element.getBoundingClientRect();
|
|
16
|
+
if (getComputedStyle(designItem.element).transformOrigin != r.width / 2 + 'px ' + r.height / 2 + 'px')
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
8
19
|
}
|
|
9
20
|
return false;
|
|
10
21
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -168,10 +168,11 @@ export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContain
|
|
|
168
168
|
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js";
|
|
169
169
|
export * from "./elements/widgets/designerView/extensions/GridExtension.js";
|
|
170
170
|
export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
|
|
171
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
172
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
173
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
174
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
171
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtension.js";
|
|
172
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js";
|
|
173
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionDesignViewConfigButtons.js";
|
|
174
|
+
export * from "./elements/widgets/designerView/extensions/HighlightElementExtension.js";
|
|
175
|
+
export * from "./elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js";
|
|
175
176
|
export * from "./elements/widgets/designerView/extensions/svg/PathExtension.js";
|
|
176
177
|
export * from "./elements/widgets/designerView/extensions/svg/PathExtensionProvider.js";
|
|
177
178
|
export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
|
package/dist/index.js
CHANGED
|
@@ -125,10 +125,11 @@ export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContain
|
|
|
125
125
|
export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js";
|
|
126
126
|
export * from "./elements/widgets/designerView/extensions/GridExtension.js";
|
|
127
127
|
export * from "./elements/widgets/designerView/extensions/GridExtensionProvider.js";
|
|
128
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
129
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
130
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
131
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
128
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtension.js";
|
|
129
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js";
|
|
130
|
+
export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionDesignViewConfigButtons.js";
|
|
131
|
+
export * from "./elements/widgets/designerView/extensions/HighlightElementExtension.js";
|
|
132
|
+
export * from "./elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js";
|
|
132
133
|
export * from "./elements/widgets/designerView/extensions/svg/PathExtension.js";
|
|
133
134
|
export * from "./elements/widgets/designerView/extensions/svg/PathExtensionProvider.js";
|
|
134
135
|
export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
|