@node-projects/web-component-designer 0.1.129 → 0.1.131
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/helper/GridHelper.d.ts +2 -0
- package/dist/elements/helper/GridHelper.js +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.d.ts +2 -3
- package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +11 -1
- package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js +57 -47
- package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js +1 -1
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +31 -6
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -91,7 +91,7 @@ export function calculateGridInformation(designItem) {
|
|
|
91
91
|
yGap += gp;
|
|
92
92
|
yOffset += gp;
|
|
93
93
|
}
|
|
94
|
-
const retVal = { cells: [], gaps: [] };
|
|
94
|
+
const retVal = { cells: [], gaps: [], xGap, yGap };
|
|
95
95
|
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
96
96
|
const r = rows[rowIdx];
|
|
97
97
|
let areas = null;
|
|
@@ -2,7 +2,6 @@ import type { IPoint } from '../../../interfaces/IPoint.js';
|
|
|
2
2
|
import type { IPlacementService } from './IPlacementService.js';
|
|
3
3
|
import type { IDesignItem } from '../../item/IDesignItem.js';
|
|
4
4
|
import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
|
|
5
|
-
import { IDesignerCanvas } from '../../widgets/designerView/IDesignerCanvas.js';
|
|
6
5
|
export declare class DefaultPlacementService implements IPlacementService {
|
|
7
6
|
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean;
|
|
8
7
|
isEnterableContainer(container: IDesignItem): boolean;
|
|
@@ -11,8 +10,8 @@ export declare class DefaultPlacementService implements IPlacementService {
|
|
|
11
10
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
12
11
|
private calculateTrack;
|
|
13
12
|
placePoint(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint;
|
|
14
|
-
startPlace(event: MouseEvent,
|
|
15
|
-
place(event: MouseEvent,
|
|
13
|
+
startPlace(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): void;
|
|
14
|
+
place(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): void;
|
|
16
15
|
moveElements(designItems: IDesignItem[], position: IPoint, absolute: boolean): void;
|
|
17
16
|
enterContainer(container: IDesignItem, items: IDesignItem[], mode: 'normal' | 'drop'): void;
|
|
18
17
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
@@ -6,4 +6,5 @@ export interface IDesignerExtensionProvider {
|
|
|
6
6
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
7
7
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
8
8
|
style?: CSSStyleSheet | CSSStyleSheet[];
|
|
9
|
+
svgDefs?: string;
|
|
9
10
|
}
|
package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export declare class DisplayGridExtensionProvider implements IDesignerExtensionP
|
|
|
11
11
|
shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
12
12
|
getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
13
13
|
readonly style: CSSStyleSheet;
|
|
14
|
+
readonly svgDefs = "\n <pattern id=\"pattern-stripe\" \n width=\"4\" height=\"4\" \n patternUnits=\"userSpaceOnUse\"\n patternTransform=\"rotate(45)\">\n <rect width=\"1\" height=\"4\" transform=\"translate(0,0)\" fill=\"white\"></rect>\n </pattern>\n <mask id=\"mask-stripe\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"url(#pattern-stripe)\" />\n </mask>";
|
|
14
15
|
}
|
|
@@ -21,8 +21,18 @@ export class DisplayGridExtensionProvider {
|
|
|
21
21
|
.svg-grid { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: var(--svg-grid-fill-color); }
|
|
22
22
|
.svg-grid-current-cell { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: #e3ff4722; }
|
|
23
23
|
.svg-grid-area { font-size: 8px; }
|
|
24
|
-
.svg-grid-gap { stroke: var(--svg-grid-stroke-color);
|
|
24
|
+
.svg-grid-gap { stroke: transparent; fill: var(--svg-grid-stroke-color); opacity: 0.3; mask: url(#mask-stripe) }
|
|
25
25
|
.svg-grid-header { fill: var(--svg-grid-fill-color); stroke: var(--svg-grid-stroke-color); }
|
|
26
26
|
.svg-grid-plus-sign { stroke: black; }
|
|
27
27
|
`;
|
|
28
|
+
svgDefs = `
|
|
29
|
+
<pattern id="pattern-stripe"
|
|
30
|
+
width="4" height="4"
|
|
31
|
+
patternUnits="userSpaceOnUse"
|
|
32
|
+
patternTransform="rotate(45)">
|
|
33
|
+
<rect width="1" height="4" transform="translate(0,0)" fill="white"></rect>
|
|
34
|
+
</pattern>
|
|
35
|
+
<mask id="mask-stripe">
|
|
36
|
+
<rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe)" />
|
|
37
|
+
</mask>`;
|
|
28
38
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventNames } from "../../../../../enums/EventNames.js";
|
|
2
2
|
import { getContentBoxContentOffsets } from "../../../../helper/ElementHelper.js";
|
|
3
|
+
import { calculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
3
4
|
import { roundValue } from "../../../../helper/LayoutHelper.js";
|
|
4
5
|
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints, getElementCombinedTransform, transformPointByInverseMatrix, normalizeToAbsolutePosition } from "../../../../helper/TransformHelper.js";
|
|
5
6
|
import { AbstractExtension } from "../AbstractExtension.js";
|
|
@@ -45,7 +46,7 @@ export class GridChildResizeExtension extends AbstractExtension {
|
|
|
45
46
|
//#endregion Circles
|
|
46
47
|
}
|
|
47
48
|
_drawResizerOverlay(x, y, cursor, oldCircle) {
|
|
48
|
-
let circle = this._drawCircle(x, y, 3 / this.designerCanvas.zoomFactor, 'svg-
|
|
49
|
+
let circle = this._drawCircle(x, y, 3 / this.designerCanvas.zoomFactor, 'svg-grid-resizer', oldCircle);
|
|
49
50
|
circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
|
|
50
51
|
if (!oldCircle) {
|
|
51
52
|
circle.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(circle, event, cursor));
|
|
@@ -84,8 +85,6 @@ export class GridChildResizeExtension extends AbstractExtension {
|
|
|
84
85
|
const transformOrigin = new DOMPoint(toArr[0], toArr[1]);
|
|
85
86
|
this._initialComputedTransformOrigins.push(transformOrigin);
|
|
86
87
|
this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);
|
|
87
|
-
if (this.designerCanvas.alignOnSnap)
|
|
88
|
-
this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
89
88
|
this.prepareResize(this.extendedItem, this._actionModeStarted);
|
|
90
89
|
break;
|
|
91
90
|
case EventNames.PointerMove:
|
|
@@ -103,50 +102,61 @@ export class GridChildResizeExtension extends AbstractExtension {
|
|
|
103
102
|
deltaX = deltaX < deltaY ? deltaX : deltaY;
|
|
104
103
|
deltaY = deltaX;
|
|
105
104
|
}
|
|
106
|
-
let
|
|
107
|
-
let
|
|
108
|
-
let
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
105
|
+
let posX = 0;
|
|
106
|
+
let posY = 0;
|
|
107
|
+
let cellX = 0;
|
|
108
|
+
let cellY = 0;
|
|
109
|
+
const gridInformation = calculateGridInformation(this.extendedItem.parent);
|
|
110
|
+
const gridPos = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.parent.element);
|
|
111
|
+
const evPos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
112
|
+
const cs = getComputedStyle(this.extendedItem.element);
|
|
113
|
+
this.extendedItem.element.style.gridColumnStart = cs.gridColumnStart;
|
|
114
|
+
this.extendedItem.element.style.gridColumnEnd = cs.gridColumnEnd === 'auto' ? '' + (parseInt(cs.gridColumnStart) + 1) : cs.gridColumnEnd;
|
|
115
|
+
this.extendedItem.element.style.gridRowStart = cs.gridRowStart;
|
|
116
|
+
this.extendedItem.element.style.gridRowEnd = cs.gridRowEnd === 'auto' ? '' + (parseInt(cs.gridRowStart) + 1) : cs.gridRowEnd;
|
|
117
|
+
if (this._actionModeStarted == 'nw-resize' || this._actionModeStarted == 'w-resize' || this._actionModeStarted == 'sw-resize') {
|
|
118
|
+
for (let i = 0; i < gridInformation.cells.length; i++) {
|
|
119
|
+
const cell = gridInformation.cells[i][0];
|
|
120
|
+
const cellMiddlePos = posX + (cell.width / 2);
|
|
121
|
+
if (evPos.x > gridPos.x + cellMiddlePos) {
|
|
122
|
+
cellX = i;
|
|
123
|
+
}
|
|
124
|
+
posX += cell.width + gridInformation.xGap;
|
|
125
|
+
}
|
|
126
|
+
this.extendedItem.element.style.gridColumnStart = '' + (cellX + 2);
|
|
127
|
+
}
|
|
128
|
+
if (this._actionModeStarted == 'nw-resize' || this._actionModeStarted == 'n-resize' || this._actionModeStarted == 'ne-resize') {
|
|
129
|
+
for (let i = 0; i < gridInformation.cells.length; i++) {
|
|
130
|
+
const cell = gridInformation.cells[i][0];
|
|
131
|
+
const cellMiddlePos = posY + (cell.height / 2);
|
|
132
|
+
if (evPos.y > gridPos.y + cellMiddlePos) {
|
|
133
|
+
cellY = i;
|
|
134
|
+
}
|
|
135
|
+
posY += cell.height + gridInformation.yGap;
|
|
136
|
+
}
|
|
137
|
+
this.extendedItem.element.style.gridRowStart = '' + (cellY + 2);
|
|
138
|
+
}
|
|
139
|
+
if (this._actionModeStarted == 'se-resize' || this._actionModeStarted == 'e-resize' || this._actionModeStarted == 'ne-resize') {
|
|
140
|
+
for (let i = 0; i < gridInformation.cells.length; i++) {
|
|
141
|
+
const cell = gridInformation.cells[i][0];
|
|
142
|
+
const cellMiddlePos = posX + (cell.width / 2);
|
|
143
|
+
if (evPos.x > gridPos.x + cellMiddlePos) {
|
|
144
|
+
cellX = i;
|
|
145
|
+
}
|
|
146
|
+
posX += cell.width + gridInformation.xGap;
|
|
147
|
+
}
|
|
148
|
+
this.extendedItem.element.style.gridColumnEnd = '' + (cellX + 2);
|
|
149
|
+
}
|
|
150
|
+
if (this._actionModeStarted == 'sw-resize' || this._actionModeStarted == 's-resize' || this._actionModeStarted == 'se-resize') {
|
|
151
|
+
for (let i = 0; i < gridInformation.cells[0].length; i++) {
|
|
152
|
+
const cell = gridInformation.cells[0][i];
|
|
153
|
+
const cellMiddlePos = posY + (cell.height / 2);
|
|
154
|
+
if (evPos.y > gridPos.y + cellMiddlePos) {
|
|
155
|
+
cellY = i;
|
|
156
|
+
}
|
|
157
|
+
posY += cell.height + gridInformation.yGap;
|
|
158
|
+
}
|
|
159
|
+
this.extendedItem.element.style.gridRowEnd = '' + (cellY + 2);
|
|
150
160
|
}
|
|
151
161
|
const resizedElements = [this.extendedItem, this.extendedItem.parent];
|
|
152
162
|
this.extensionManager.refreshExtensions(resizedElements);
|
package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js
CHANGED
|
@@ -11,6 +11,6 @@ export class GridChildResizeExtensionProvider {
|
|
|
11
11
|
return new GridChildResizeExtension(extensionManager, designerView, designItem);
|
|
12
12
|
}
|
|
13
13
|
style = css `
|
|
14
|
-
.svg-
|
|
14
|
+
.svg-grid-resizer { stroke: #3899ec; fill: white; pointer-events: all }
|
|
15
15
|
`;
|
|
16
16
|
}
|
|
@@ -59,20 +59,45 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
59
59
|
this._initialize();
|
|
60
60
|
}
|
|
61
61
|
_initialize() {
|
|
62
|
-
|
|
62
|
+
const styles = [OverlayLayerView.style];
|
|
63
|
+
const alreadyApplied = new Set();
|
|
63
64
|
for (const extList of this._serviceContainer.designerExtensions) {
|
|
64
65
|
for (const ext of extList[1]) {
|
|
65
66
|
if (ext.style) {
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
if (!alreadyApplied.has(ext.style)) {
|
|
68
|
+
alreadyApplied.add(ext.style);
|
|
69
|
+
if (Array.isArray(ext.style))
|
|
70
|
+
styles.push(...ext.style);
|
|
71
|
+
else
|
|
72
|
+
styles.push(ext.style);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (ext.svgDefs) {
|
|
76
|
+
if (!alreadyApplied.has(ext.svgDefs)) {
|
|
77
|
+
alreadyApplied.add(ext.svgDefs);
|
|
78
|
+
const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
|
|
79
|
+
a.innerHTML = ext.svgDefs;
|
|
80
|
+
for (let n of [...a.children])
|
|
81
|
+
this._defs.appendChild(n);
|
|
82
|
+
}
|
|
70
83
|
}
|
|
71
84
|
}
|
|
72
85
|
}
|
|
73
86
|
for (const ext of this._serviceContainer.designerPointerExtensions) {
|
|
74
87
|
if (ext.style) {
|
|
75
|
-
|
|
88
|
+
if (!alreadyApplied.has(ext.style)) {
|
|
89
|
+
alreadyApplied.add(ext.style);
|
|
90
|
+
styles.push(ext.style);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (ext.svgDefs) {
|
|
94
|
+
if (!alreadyApplied.has(ext.svgDefs)) {
|
|
95
|
+
alreadyApplied.add(ext.svgDefs);
|
|
96
|
+
const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
|
|
97
|
+
a.innerHTML = ext.svgDefs;
|
|
98
|
+
for (let n of [...a.children])
|
|
99
|
+
this._defs.appendChild(n);
|
|
100
|
+
}
|
|
76
101
|
}
|
|
77
102
|
}
|
|
78
103
|
this.shadowRoot.adoptedStyleSheets = styles;
|
package/dist/index.d.ts
CHANGED
|
@@ -88,7 +88,7 @@ export type { IMultiplayerService } from "./elements/services/multiplayerService
|
|
|
88
88
|
export * from "./elements/services/multiplayerService/MultiplayerService.js";
|
|
89
89
|
export * from "./elements/services/propertiesService/DefaultEditorTypesService.js";
|
|
90
90
|
export type { IEditorTypesService } from "./elements/services/propertiesService/IEditorTypesService.js";
|
|
91
|
-
export type { IPropertiesService } from "./elements/services/propertiesService/IPropertiesService.js";
|
|
91
|
+
export type { IPropertiesService, RefreshMode } from "./elements/services/propertiesService/IPropertiesService.js";
|
|
92
92
|
export type { IProperty } from "./elements/services/propertiesService/IProperty.js";
|
|
93
93
|
export type { IPropertyEditor } from "./elements/services/propertiesService/IPropertyEditor.js";
|
|
94
94
|
export type { IPropertyGroup } from "./elements/services/propertiesService/IPropertyGroup.js";
|
package/package.json
CHANGED