@node-projects/web-component-designer 0.1.112 → 0.1.113
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/services/DefaultServiceBootstrap.js +1 -1
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +4 -1
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +44 -33
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +3 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +11 -5
- package/package.json +1 -1
|
@@ -148,7 +148,7 @@ export function createDefaultServiceContainer() {
|
|
|
148
148
|
new ConditionExtensionProvider(new SelectionDefaultExtensionProvider(), item => !(item.node instanceof SVGElement) || item.node instanceof SVGSVGElement),
|
|
149
149
|
]);
|
|
150
150
|
serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionContainerAndCanBeEntered, [
|
|
151
|
-
new DisplayGridExtensionProvider(),
|
|
151
|
+
new DisplayGridExtensionProvider('lightgray', '#8080807d'),
|
|
152
152
|
new EditGridColumnRowSizesExtensionProvider(),
|
|
153
153
|
new FlexboxExtensionProvider()
|
|
154
154
|
]);
|
|
@@ -8,8 +8,11 @@ export declare class DisplayGridExtension extends AbstractExtension {
|
|
|
8
8
|
private _gaps;
|
|
9
9
|
private _group;
|
|
10
10
|
private gridInformation;
|
|
11
|
+
private gridInformationString;
|
|
11
12
|
private _lastEvent;
|
|
12
|
-
|
|
13
|
+
private gridColor;
|
|
14
|
+
private gridFillColor;
|
|
15
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem, gridColor: string, gridFillColor: string);
|
|
13
16
|
extend(cache: Record<string | symbol, any>, event?: Event): void;
|
|
14
17
|
refresh(cache: Record<string | symbol, any>, event?: Event): void;
|
|
15
18
|
dispose(): void;
|
|
@@ -8,9 +8,14 @@ export class DisplayGridExtension extends AbstractExtension {
|
|
|
8
8
|
_gaps;
|
|
9
9
|
_group;
|
|
10
10
|
gridInformation;
|
|
11
|
+
gridInformationString;
|
|
11
12
|
_lastEvent;
|
|
12
|
-
|
|
13
|
+
gridColor;
|
|
14
|
+
gridFillColor;
|
|
15
|
+
constructor(extensionManager, designerView, extendedItem, gridColor, gridFillColor) {
|
|
13
16
|
super(extensionManager, designerView, extendedItem);
|
|
17
|
+
this.gridColor = gridColor;
|
|
18
|
+
this.gridFillColor = gridFillColor;
|
|
14
19
|
}
|
|
15
20
|
extend(cache, event) {
|
|
16
21
|
this._initSVGArrays();
|
|
@@ -18,40 +23,46 @@ export class DisplayGridExtension extends AbstractExtension {
|
|
|
18
23
|
}
|
|
19
24
|
refresh(cache, event) {
|
|
20
25
|
this.gridInformation = calculateGridInformation(this.extendedItem);
|
|
21
|
-
|
|
22
|
-
if (event)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
this._group
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.
|
|
26
|
+
const gridInformationString = JSON.stringify(this.gridInformation);
|
|
27
|
+
if (gridInformationString !== this.gridInformationString || (event != null && this._lastEvent !== event)) {
|
|
28
|
+
if (event)
|
|
29
|
+
this._lastEvent = event;
|
|
30
|
+
this.gridInformationString = gridInformationString;
|
|
31
|
+
let cells = this.gridInformation.cells;
|
|
32
|
+
if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
|
|
33
|
+
if (this.gridInformation.cells.length != this._cells.length || this.gridInformation.cells[0].length != this._cells[0].length)
|
|
34
|
+
this._initSVGArrays();
|
|
35
|
+
if (!this._group) {
|
|
36
|
+
this._group = this._drawGroup(null, this._group, OverlayLayer.Background);
|
|
37
|
+
this._group.style.transform = getElementCombinedTransform(this.extendedItem.element).toString();
|
|
38
|
+
this._group.style.transformOrigin = '0 0';
|
|
39
|
+
this._group.style.transformBox = 'fill-box';
|
|
40
|
+
this._group.style.setProperty("--svg-grid-stroke-color", this.gridColor);
|
|
41
|
+
this._group.style.setProperty("--svg-grid-fill-color", this.gridFillColor);
|
|
42
|
+
}
|
|
43
|
+
//draw gaps
|
|
44
|
+
this.gridInformation.gaps.forEach((gap, i) => {
|
|
45
|
+
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Background);
|
|
46
|
+
this._group.appendChild(this._gaps[i]);
|
|
47
|
+
});
|
|
48
|
+
//draw cells
|
|
49
|
+
cells.forEach((row, i) => {
|
|
50
|
+
row.forEach((cell, j) => {
|
|
51
|
+
this._cells[i][j] = this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', this._cells[i][j], OverlayLayer.Background);
|
|
52
|
+
this._group.appendChild(this._cells[i][j]);
|
|
53
|
+
if (cell.name) {
|
|
54
|
+
this._texts[i][j] = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', this._texts[i][j], OverlayLayer.Background);
|
|
55
|
+
this._texts[i][j].setAttribute("dominant-baseline", "hanging");
|
|
51
56
|
}
|
|
52
|
-
|
|
57
|
+
if (this._lastEvent && this._lastEvent instanceof MouseEvent) {
|
|
58
|
+
let crd = this.designerCanvas.getNormalizedEventCoordinates(this._lastEvent);
|
|
59
|
+
if (crd.x >= cell.x && crd.y >= cell.y && crd.x <= cell.x + cell.width && crd.y <= cell.y + cell.height) {
|
|
60
|
+
this._cells[i][j].setAttribute("class", "svg-grid-current-cell");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
53
64
|
});
|
|
54
|
-
}
|
|
65
|
+
}
|
|
55
66
|
}
|
|
56
67
|
}
|
|
57
68
|
dispose() {
|
package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ import { IDesignerExtension } from '../IDesignerExtension.js';
|
|
|
5
5
|
import { IExtensionManager } from '../IExtensionManger.js';
|
|
6
6
|
export declare const gridExtensionShowOverlayOptionName = "gridExtensionShowOverlay";
|
|
7
7
|
export declare class DisplayGridExtensionProvider implements IDesignerExtensionProvider {
|
|
8
|
+
gridColor: string;
|
|
9
|
+
gridFillColor: string;
|
|
10
|
+
constructor(gridColor?: string, gridFillColor?: string);
|
|
8
11
|
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
9
12
|
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
10
13
|
readonly style: CSSStyleSheet;
|
|
@@ -2,6 +2,12 @@ import { css } from "@node-projects/base-custom-webcomponent";
|
|
|
2
2
|
import { DisplayGridExtension } from './DisplayGridExtension.js';
|
|
3
3
|
export const gridExtensionShowOverlayOptionName = 'gridExtensionShowOverlay';
|
|
4
4
|
export class DisplayGridExtensionProvider {
|
|
5
|
+
gridColor;
|
|
6
|
+
gridFillColor;
|
|
7
|
+
constructor(gridColor = 'orange', gridFillColor = '#ff944722') {
|
|
8
|
+
this.gridColor = gridColor;
|
|
9
|
+
this.gridFillColor = gridFillColor;
|
|
10
|
+
}
|
|
5
11
|
shouldExtend(extensionManager, designerCanvas, designItem) {
|
|
6
12
|
const display = getComputedStyle(designItem.element).display;
|
|
7
13
|
if (display == 'grid' || display == 'inline-grid')
|
|
@@ -9,14 +15,14 @@ export class DisplayGridExtensionProvider {
|
|
|
9
15
|
return false;
|
|
10
16
|
}
|
|
11
17
|
getExtension(extensionManager, designerCanvas, designItem) {
|
|
12
|
-
return new DisplayGridExtension(extensionManager, designerCanvas, designItem);
|
|
18
|
+
return new DisplayGridExtension(extensionManager, designerCanvas, designItem, this.gridColor, this.gridFillColor);
|
|
13
19
|
}
|
|
14
20
|
style = css `
|
|
15
|
-
.svg-grid { stroke:
|
|
16
|
-
.svg-grid-current-cell { stroke:
|
|
21
|
+
.svg-grid { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: var(--svg-grid-fill-color); }
|
|
22
|
+
.svg-grid-current-cell { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: #e3ff4722; }
|
|
17
23
|
.svg-grid-area { font-size: 8px; }
|
|
18
|
-
.svg-grid-gap { stroke:
|
|
19
|
-
.svg-grid-header { fill:
|
|
24
|
+
.svg-grid-gap { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: #0000ff22; }
|
|
25
|
+
.svg-grid-header { fill: var(--svg-grid-fill-color); stroke: var(--svg-grid-stroke-color); }
|
|
20
26
|
.svg-grid-plus-sign { stroke: black; }
|
|
21
27
|
`;
|
|
22
28
|
}
|
package/package.json
CHANGED