@node-projects/web-component-designer 0.0.56 → 0.0.60
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/.github/FUNDING.yml +3 -0
- package/dist/commandHandling/CommandType.d.ts +3 -0
- package/dist/commandHandling/CommandType.js +3 -0
- package/dist/elements/helper/CssAttributeParser.d.ts +1 -1
- package/dist/elements/helper/CssAttributeParser.js +6 -3
- package/dist/elements/helper/CssCombiner.js +1 -1
- package/dist/elements/helper/GridHelper.js +7 -3
- package/dist/elements/services/DefaultServiceBootstrap.js +5 -0
- package/dist/elements/services/GlobalContext.d.ts +4 -0
- package/dist/elements/services/GlobalContext.js +12 -0
- package/dist/elements/services/ServiceContainer.d.ts +5 -0
- package/dist/elements/services/ServiceContainer.js +4 -0
- package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +6 -0
- package/dist/elements/services/demoProviderService/DemoProviderService.js +28 -0
- package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +5 -0
- package/dist/elements/services/demoProviderService/IDemoProviderService.js +1 -0
- package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.js +3 -3
- package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +2 -2
- package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/GridPlacementService.js +27 -7
- package/dist/elements/services/placementService/IPlacementService.d.ts +1 -1
- package/dist/elements/widgets/demoView/demoView.d.ts +1 -1
- package/dist/elements/widgets/demoView/demoView.js +3 -22
- package/dist/elements/widgets/designerView/ButtonSeperatorProvider copy.d.ts +7 -0
- package/dist/elements/widgets/designerView/ButtonSeperatorProvider copy.js +11 -0
- package/dist/elements/widgets/designerView/ButtonSeperatorProvider.d.ts +8 -0
- package/dist/elements/widgets/designerView/ButtonSeperatorProvider.js +11 -0
- package/dist/elements/widgets/designerView/DesignContext.d.ts +3 -0
- package/dist/elements/widgets/designerView/DesignContext.js +1 -0
- package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.d.ts +7 -0
- package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.js +13 -0
- package/dist/elements/widgets/designerView/IDesignContext.d.ts +3 -0
- package/dist/elements/widgets/designerView/IDesignViewConfigButtonsProvider.d.ts +5 -0
- package/dist/elements/widgets/designerView/IDesignViewConfigButtonsProvider.js +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +0 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +25 -12
- package/dist/elements/widgets/designerView/designerView.d.ts +1 -0
- package/dist/elements/widgets/designerView/designerView.js +14 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionConfigButtons.d.ts +5 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionConfigButtons.js +12 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.js +21 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.js +18 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +2 -1
- package/dist/elements/widgets/designerView/extensions/GridExtensionProviderConfigButtons.d.ts +5 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProviderConfigButtons.js +12 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProviderOptions.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/GridExtensionProviderOptions.js +18 -0
- package/dist/elements/widgets/designerView/extensions/IDesignViewConfigButtonsProvider.d.ts +0 -0
- package/dist/elements/widgets/designerView/extensions/IDesignViewConfigButtonsProvider.js +1 -0
- package/dist/elements/widgets/designerView/extensions/IExtensionConfiguration.d.ts +3 -0
- package/dist/elements/widgets/designerView/extensions/IExtensionConfiguration.js +1 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +6 -2
- package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +9 -0
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js +95 -29
- package/dist/elements/widgets/designerView/tools/PointerTool.js +10 -6
- package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/package.json +39 -39
|
@@ -21,5 +21,8 @@ export declare enum CommandType {
|
|
|
21
21
|
'distributeHorizontal' = "distributeHorizontaly",
|
|
22
22
|
'distributeVertical' = "distributeVertical",
|
|
23
23
|
'setTool' = "setTool",
|
|
24
|
+
'setStrokeColor' = "setStrokeColor",
|
|
25
|
+
'setFillBrush' = "setFillBrush",
|
|
26
|
+
'setStrokeThickness' = "setStrokeThickness",
|
|
24
27
|
'screenshot' = "screenshot"
|
|
25
28
|
}
|
|
@@ -22,5 +22,8 @@ export var CommandType;
|
|
|
22
22
|
CommandType["distributeHorizontal"] = "distributeHorizontaly";
|
|
23
23
|
CommandType["distributeVertical"] = "distributeVertical";
|
|
24
24
|
CommandType["setTool"] = "setTool";
|
|
25
|
+
CommandType["setStrokeColor"] = "setStrokeColor";
|
|
26
|
+
CommandType["setFillBrush"] = "setFillBrush";
|
|
27
|
+
CommandType["setStrokeThickness"] = "setStrokeThickness";
|
|
25
28
|
CommandType["screenshot"] = "screenshot";
|
|
26
29
|
})(CommandType || (CommandType = {}));
|
|
@@ -14,7 +14,7 @@ export class CssEntry {
|
|
|
14
14
|
}
|
|
15
15
|
export class CssAttributeParser {
|
|
16
16
|
entries = [];
|
|
17
|
-
parse(text) {
|
|
17
|
+
parse(text, quoteType = '\'') {
|
|
18
18
|
this.entries = [];
|
|
19
19
|
let name = '';
|
|
20
20
|
let value = '';
|
|
@@ -38,7 +38,7 @@ export class CssAttributeParser {
|
|
|
38
38
|
token = Token.Name;
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
|
-
if (c ===
|
|
41
|
+
if (c === quoteType) {
|
|
42
42
|
token = Token.InQuote;
|
|
43
43
|
}
|
|
44
44
|
value += c;
|
|
@@ -51,10 +51,13 @@ export class CssAttributeParser {
|
|
|
51
51
|
c = text[n];
|
|
52
52
|
value += c;
|
|
53
53
|
}
|
|
54
|
-
if (c ===
|
|
54
|
+
else if (c === quoteType) {
|
|
55
55
|
value += c;
|
|
56
56
|
token = Token.Value;
|
|
57
57
|
}
|
|
58
|
+
else {
|
|
59
|
+
value += c;
|
|
60
|
+
}
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
63
|
if (name.trim() !== '') {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export function CalculateGridInformation(designItem) {
|
|
2
|
+
//todo:
|
|
3
|
+
//same name should combine columns/rows
|
|
2
4
|
let itemRect = designItem.element.getBoundingClientRect();
|
|
3
5
|
const computedStyle = getComputedStyle(designItem.element);
|
|
4
6
|
const rows = computedStyle.gridTemplateRows.split(' ');
|
|
5
7
|
const columns = computedStyle.gridTemplateColumns.split(' ');
|
|
8
|
+
const paddingLeft = Number.parseFloat(computedStyle.paddingLeft);
|
|
9
|
+
const paddingTop = Number.parseFloat(computedStyle.paddingTop);
|
|
6
10
|
let y = 0;
|
|
7
11
|
let xGap = 0;
|
|
8
12
|
let yGap = 0;
|
|
@@ -81,12 +85,12 @@ export function CalculateGridInformation(designItem) {
|
|
|
81
85
|
for (let yIdx = 0; yIdx < columns.length; yIdx++) {
|
|
82
86
|
const c = columns[yIdx];
|
|
83
87
|
if (x > 0 && xGap) {
|
|
84
|
-
retVal.gaps.push({ x: x + xOffset, y: y + yOffset, width: xGap, height: currY });
|
|
88
|
+
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: xGap, height: currY });
|
|
85
89
|
x += xGap;
|
|
86
90
|
}
|
|
87
91
|
const currX = Number.parseFloat(c.replace('px', ''));
|
|
88
92
|
if (y > 0 && yGap) {
|
|
89
|
-
retVal.gaps.push({ x: x + xOffset, y: y + yOffset - yGap, width: currX, height: yGap });
|
|
93
|
+
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset - yGap + paddingTop, width: currX, height: yGap });
|
|
90
94
|
}
|
|
91
95
|
let name = null;
|
|
92
96
|
if (areas) {
|
|
@@ -95,7 +99,7 @@ export function CalculateGridInformation(designItem) {
|
|
|
95
99
|
name = nm;
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
|
-
const cell = { x: x + xOffset, y: y + yOffset, width: currX, height: currY, name: name };
|
|
102
|
+
const cell = { x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: currX, height: currY, name: name };
|
|
99
103
|
cellList.push(cell);
|
|
100
104
|
x += currX;
|
|
101
105
|
cl++;
|
|
@@ -45,6 +45,9 @@ import { DragDropService } from './dragDropService/DragDropService';
|
|
|
45
45
|
import { EditTextExtensionProvider } from '../widgets/designerView/extensions/EditText/EditTextExtensionProvider.js';
|
|
46
46
|
import { CopyPasteService } from './copyPasteService/CopyPasteService';
|
|
47
47
|
import { DefaultModelCommandService } from './modelCommandService/DefaultModelCommandService';
|
|
48
|
+
import { ButtonSeperatorProvider } from '../widgets/designerView/ButtonSeperatorProvider';
|
|
49
|
+
import { GridExtensionDesignViewConfigButtons } from '../widgets/designerView/extensions/GridExtensionDesignViewConfigButtons';
|
|
50
|
+
import { DemoProviderService } from './demoProviderService/DemoProviderService';
|
|
48
51
|
export function createDefaultServiceContainer() {
|
|
49
52
|
let serviceContainer = new ServiceContainer();
|
|
50
53
|
serviceContainer.register("propertyService", new PolymerPropertiesService());
|
|
@@ -65,6 +68,7 @@ export function createDefaultServiceContainer() {
|
|
|
65
68
|
serviceContainer.register("dragDropService", new DragDropService());
|
|
66
69
|
serviceContainer.register("copyPasteService", new CopyPasteService());
|
|
67
70
|
serviceContainer.register("modelCommandService", new DefaultModelCommandService());
|
|
71
|
+
serviceContainer.register("demoProviderService", new DemoProviderService());
|
|
68
72
|
serviceContainer.designerExtensions.set(ExtensionType.Permanent, [
|
|
69
73
|
new ResizeExtensionProvider(false),
|
|
70
74
|
new InvisibleDivExtensionProvider()
|
|
@@ -106,6 +110,7 @@ export function createDefaultServiceContainer() {
|
|
|
106
110
|
serviceContainer.designerTools.set(NamedTools.MagicWandSelector, new MagicWandSelectorTool());
|
|
107
111
|
serviceContainer.designerTools.set(NamedTools.PickColor, new PickColorTool());
|
|
108
112
|
serviceContainer.designerTools.set(NamedTools.Text, new TextTool());
|
|
113
|
+
serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons());
|
|
109
114
|
serviceContainer.designerContextMenuExtensions = [
|
|
110
115
|
new CopyPasteContextMenu(),
|
|
111
116
|
new ZMoveContextMenu(),
|
|
@@ -5,6 +5,7 @@ export declare class GlobalContext {
|
|
|
5
5
|
private _serviceContainer;
|
|
6
6
|
private _tool;
|
|
7
7
|
private _strokeColor;
|
|
8
|
+
private _strokeThickness;
|
|
8
9
|
private _fillBrush;
|
|
9
10
|
constructor(serviceContainer: ServiceContainer);
|
|
10
11
|
set tool(tool: ITool);
|
|
@@ -14,6 +15,9 @@ export declare class GlobalContext {
|
|
|
14
15
|
set strokeColor(strokeColor: string);
|
|
15
16
|
get strokeColor(): string;
|
|
16
17
|
readonly onStrokeColorChanged: TypedEvent<PropertyChangedArgs<string>>;
|
|
18
|
+
set strokeThickness(strokeThickness: string);
|
|
19
|
+
get strokeThickness(): string;
|
|
20
|
+
readonly onStrokeThicknessChanged: TypedEvent<PropertyChangedArgs<string>>;
|
|
17
21
|
set fillBrush(fillBrush: string);
|
|
18
22
|
get fillBrush(): string;
|
|
19
23
|
readonly onFillBrushChanged: TypedEvent<PropertyChangedArgs<string>>;
|
|
@@ -5,6 +5,7 @@ export class GlobalContext {
|
|
|
5
5
|
_serviceContainer;
|
|
6
6
|
_tool;
|
|
7
7
|
_strokeColor = 'black';
|
|
8
|
+
_strokeThickness = '3';
|
|
8
9
|
_fillBrush = 'transparent';
|
|
9
10
|
constructor(serviceContainer) {
|
|
10
11
|
this._serviceContainer = serviceContainer;
|
|
@@ -36,6 +37,17 @@ export class GlobalContext {
|
|
|
36
37
|
return this._strokeColor;
|
|
37
38
|
}
|
|
38
39
|
onStrokeColorChanged = new TypedEvent();
|
|
40
|
+
set strokeThickness(strokeThickness) {
|
|
41
|
+
if (this._strokeThickness !== strokeThickness) {
|
|
42
|
+
const oldStrokeThickness = this._strokeThickness;
|
|
43
|
+
this._strokeThickness = strokeThickness;
|
|
44
|
+
this.onStrokeThicknessChanged.emit(new PropertyChangedArgs(strokeThickness, oldStrokeThickness));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get strokeThickness() {
|
|
48
|
+
return this._strokeThickness;
|
|
49
|
+
}
|
|
50
|
+
onStrokeThicknessChanged = new TypedEvent();
|
|
39
51
|
set fillBrush(fillBrush) {
|
|
40
52
|
this._fillBrush = fillBrush;
|
|
41
53
|
if (this._fillBrush !== fillBrush) {
|
|
@@ -23,6 +23,8 @@ import { IDragDropService } from './dragDropService/IDragDropService';
|
|
|
23
23
|
import { ICopyPasteService } from "./copyPasteService/ICopyPasteService.js";
|
|
24
24
|
import { IDesignerPointerExtensionProvider } from "../widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
|
|
25
25
|
import { IModelCommandService } from "./modelCommandService/IModelCommandService.js";
|
|
26
|
+
import { IDesignViewConfigButtonsProvider } from "../widgets/designerView/IDesignViewConfigButtonsProvider.js";
|
|
27
|
+
import { IDemoProviderService } from "./demoProviderService/IDemoProviderService.js";
|
|
26
28
|
interface ServiceNameMap {
|
|
27
29
|
"propertyService": IPropertiesService;
|
|
28
30
|
"containerService": IPlacementService;
|
|
@@ -39,6 +41,7 @@ interface ServiceNameMap {
|
|
|
39
41
|
"dragDropService": IDragDropService;
|
|
40
42
|
"copyPasteService": ICopyPasteService;
|
|
41
43
|
"modelCommandService": IModelCommandService;
|
|
44
|
+
"demoProviderService": IDemoProviderService;
|
|
42
45
|
}
|
|
43
46
|
export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMap> {
|
|
44
47
|
readonly config: {
|
|
@@ -46,6 +49,7 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
|
|
|
46
49
|
demoViewWidget: new (...args: any[]) => IDemoView & HTMLElement;
|
|
47
50
|
};
|
|
48
51
|
readonly designerExtensions: Map<(ExtensionType | string), IDesignerExtensionProvider[]>;
|
|
52
|
+
readonly designViewConfigButtons: IDesignViewConfigButtonsProvider[];
|
|
49
53
|
readonly designerPointerExtensions: IDesignerPointerExtensionProvider[];
|
|
50
54
|
designerContextMenuExtensions: IContextMenuExtension[];
|
|
51
55
|
readonly globalContext: GlobalContext;
|
|
@@ -65,5 +69,6 @@ export declare class ServiceContainer extends BaseServiceContainer<ServiceNameMa
|
|
|
65
69
|
get dragDropService(): IDragDropService;
|
|
66
70
|
get copyPasteService(): ICopyPasteService;
|
|
67
71
|
get modelCommandService(): IModelCommandService;
|
|
72
|
+
get demoProviderService(): IDemoProviderService;
|
|
68
73
|
}
|
|
69
74
|
export {};
|
|
@@ -8,6 +8,7 @@ export class ServiceContainer extends BaseServiceContainer {
|
|
|
8
8
|
demoViewWidget: DemoView
|
|
9
9
|
};
|
|
10
10
|
designerExtensions = new Map();
|
|
11
|
+
designViewConfigButtons = [];
|
|
11
12
|
designerPointerExtensions = [];
|
|
12
13
|
designerContextMenuExtensions;
|
|
13
14
|
globalContext = new GlobalContext(this);
|
|
@@ -57,4 +58,7 @@ export class ServiceContainer extends BaseServiceContainer {
|
|
|
57
58
|
get modelCommandService() {
|
|
58
59
|
return this.getLastService('modelCommandService');
|
|
59
60
|
}
|
|
61
|
+
get demoProviderService() {
|
|
62
|
+
return this.getLastService('demoProviderService');
|
|
63
|
+
}
|
|
60
64
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InstanceServiceContainer } from "../InstanceServiceContainer.js";
|
|
2
|
+
import { ServiceContainer } from "../ServiceContainer.js";
|
|
3
|
+
import { IDemoProviderService } from "./IDemoProviderService.js";
|
|
4
|
+
export declare class DemoProviderService implements IDemoProviderService {
|
|
5
|
+
provideDemo(container: HTMLElement, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
|
|
2
|
+
export class DemoProviderService {
|
|
3
|
+
provideDemo(container, serviceContainer, instanceServiceContainer, code) {
|
|
4
|
+
return new Promise(resolve => {
|
|
5
|
+
const iframe = document.createElement('iframe');
|
|
6
|
+
iframe.style.width = '100%';
|
|
7
|
+
iframe.style.height = '100%';
|
|
8
|
+
iframe.style.border = 'none';
|
|
9
|
+
iframe.style.display = 'none';
|
|
10
|
+
DomHelper.removeAllChildnodes(container);
|
|
11
|
+
container.appendChild(iframe);
|
|
12
|
+
iframe.onload = () => {
|
|
13
|
+
iframe.style.display = 'block';
|
|
14
|
+
resolve();
|
|
15
|
+
};
|
|
16
|
+
const doc = iframe.contentWindow.document;
|
|
17
|
+
doc.open();
|
|
18
|
+
doc.write('<script type="module">');
|
|
19
|
+
for (let i of instanceServiceContainer.designContext.imports) {
|
|
20
|
+
doc.write("import '" + i + "';");
|
|
21
|
+
}
|
|
22
|
+
doc.write("document.body.style.display='';");
|
|
23
|
+
doc.write('</script>');
|
|
24
|
+
doc.write('<body style="display:none">' + code + '</body>');
|
|
25
|
+
doc.close();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { InstanceServiceContainer } from "../InstanceServiceContainer.js";
|
|
2
|
+
import { ServiceContainer } from "../ServiceContainer.js";
|
|
3
|
+
export interface IDemoProviderService {
|
|
4
|
+
provideDemo(container: HTMLElement, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): any;
|
|
5
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,7 +3,7 @@ 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
5
|
export declare class DefaultPlacementService implements IPlacementService {
|
|
6
|
-
serviceForContainer(container: IDesignItem): boolean;
|
|
6
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
7
7
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
8
8
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
9
9
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
@@ -2,9 +2,9 @@ import { DomConverter } from '../../widgets/designerView/DomConverter.js';
|
|
|
2
2
|
import { combineTransforms } from '../../helper/TransformHelper.js';
|
|
3
3
|
import { filterChildPlaceItems, placeDesignItem } from '../../helper/LayoutHelper.js';
|
|
4
4
|
export class DefaultPlacementService {
|
|
5
|
-
serviceForContainer(container) {
|
|
6
|
-
if (
|
|
7
|
-
|
|
5
|
+
serviceForContainer(container, containerStyle) {
|
|
6
|
+
if (containerStyle.display === 'grid' || containerStyle.display === 'inline-grid' ||
|
|
7
|
+
containerStyle.display === 'flex' || containerStyle.display === 'inline-flex')
|
|
8
8
|
return false;
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
@@ -5,7 +5,7 @@ import { IPlacementService } from './IPlacementService.js';
|
|
|
5
5
|
export declare class FlexBoxPlacementService implements IPlacementService {
|
|
6
6
|
enterContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
7
7
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
8
|
-
serviceForContainer(container: IDesignItem): boolean;
|
|
8
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
9
9
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
10
10
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
11
11
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
@@ -10,8 +10,8 @@ export class FlexBoxPlacementService {
|
|
|
10
10
|
}
|
|
11
11
|
leaveContainer(container, items) {
|
|
12
12
|
}
|
|
13
|
-
serviceForContainer(container) {
|
|
14
|
-
if (
|
|
13
|
+
serviceForContainer(container, containerStyle) {
|
|
14
|
+
if (containerStyle.display == 'flex' || containerStyle.display == 'inline-flex')
|
|
15
15
|
return true;
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
@@ -5,7 +5,7 @@ import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
|
|
|
5
5
|
export declare class GridPlacementService implements IPlacementService {
|
|
6
6
|
enterContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
7
7
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
8
|
-
serviceForContainer(container: IDesignItem): boolean;
|
|
8
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
9
9
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
10
10
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
11
11
|
getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CalculateGridInformation } from '../../helper/GridHelper.js';
|
|
2
2
|
import { pointInRect } from '../../helper/Helper.js';
|
|
3
|
+
import { DefaultPlacementService } from './DefaultPlacementService';
|
|
3
4
|
export class GridPlacementService {
|
|
4
5
|
enterContainer(container, items) {
|
|
5
6
|
for (let i of items) {
|
|
@@ -20,8 +21,8 @@ export class GridPlacementService {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
serviceForContainer(container) {
|
|
24
|
-
if (
|
|
24
|
+
serviceForContainer(container, containerStyle) {
|
|
25
|
+
if (containerStyle.display == 'grid' || containerStyle.display == 'inline-grid')
|
|
25
26
|
return true;
|
|
26
27
|
return false;
|
|
27
28
|
}
|
|
@@ -35,7 +36,8 @@ export class GridPlacementService {
|
|
|
35
36
|
return container.element.getBoundingClientRect();
|
|
36
37
|
}
|
|
37
38
|
placePoint(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
|
|
38
|
-
|
|
39
|
+
const defaultPlacementService = container.serviceContainer.getLastServiceWhere('containerService', x => x instanceof DefaultPlacementService);
|
|
40
|
+
return defaultPlacementService.placePoint(event, placementView, container, startPoint, offsetInControl, newPoint, items);
|
|
39
41
|
}
|
|
40
42
|
place(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
|
|
41
43
|
const gridInformation = CalculateGridInformation(container);
|
|
@@ -49,14 +51,23 @@ export class GridPlacementService {
|
|
|
49
51
|
column = 0;
|
|
50
52
|
for (let cell of cellRow) {
|
|
51
53
|
if (pointInRect(pos, cell)) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
if (cell.name) {
|
|
55
|
+
items[0].element.style.gridColumn = '';
|
|
56
|
+
items[0].element.style.gridRow = '';
|
|
57
|
+
items[0].element.style.gridArea = cell.name;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
items[0].element.style.gridArea = '';
|
|
61
|
+
items[0].element.style.gridColumn = column + 1;
|
|
62
|
+
items[0].element.style.gridRow = row + 1;
|
|
63
|
+
}
|
|
54
64
|
}
|
|
55
65
|
column++;
|
|
56
66
|
}
|
|
57
67
|
row++;
|
|
58
68
|
}
|
|
59
69
|
}
|
|
70
|
+
placementView.extensionManager.refreshAllExtensions([container]);
|
|
60
71
|
}
|
|
61
72
|
finishPlace(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
|
|
62
73
|
const gridInformation = CalculateGridInformation(container);
|
|
@@ -68,12 +79,21 @@ export class GridPlacementService {
|
|
|
68
79
|
column = 0;
|
|
69
80
|
for (let cell of cellRow) {
|
|
70
81
|
if (pointInRect(pos, cell)) {
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
if (cell.name) {
|
|
83
|
+
items[0].removeStyle('grid-column');
|
|
84
|
+
items[0].removeStyle('grid-row');
|
|
85
|
+
items[0].setStyle('grid-area', cell.name);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
items[0].removeStyle('grid-area');
|
|
89
|
+
items[0].setStyle('grid-column', column + 1);
|
|
90
|
+
items[0].setStyle('grid-row', row + 1);
|
|
91
|
+
}
|
|
73
92
|
}
|
|
74
93
|
column++;
|
|
75
94
|
}
|
|
76
95
|
row++;
|
|
77
96
|
}
|
|
97
|
+
placementView.extensionManager.refreshAllExtensions([container]);
|
|
78
98
|
}
|
|
79
99
|
}
|
|
@@ -3,7 +3,7 @@ import { IDesignItem } from "../../item/IDesignItem";
|
|
|
3
3
|
import { IPlacementView } from "../../widgets/designerView/IPlacementView";
|
|
4
4
|
import { IPoint } from "../../../interfaces/IPoint";
|
|
5
5
|
export interface IPlacementService extends IService {
|
|
6
|
-
serviceForContainer(container: IDesignItem): any;
|
|
6
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): any;
|
|
7
7
|
canEnter(container: IDesignItem, items: IDesignItem[]): any;
|
|
8
8
|
canLeave(container: IDesignItem, items: IDesignItem[]): any;
|
|
9
9
|
enterContainer(container: IDesignItem, items: IDesignItem[]): any;
|
|
@@ -7,5 +7,5 @@ export declare class DemoView extends BaseCustomWebComponentLazyAppend implement
|
|
|
7
7
|
private _loading;
|
|
8
8
|
static readonly style: CSSStyleSheet;
|
|
9
9
|
constructor();
|
|
10
|
-
display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): void
|
|
10
|
+
display(serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer, code: string): Promise<void>;
|
|
11
11
|
}
|
|
@@ -18,11 +18,6 @@ export class DemoView extends BaseCustomWebComponentLazyAppend {
|
|
|
18
18
|
position: absolute;
|
|
19
19
|
top: 60px;
|
|
20
20
|
left: 20px;
|
|
21
|
-
}
|
|
22
|
-
iframe {
|
|
23
|
-
width: 100%;
|
|
24
|
-
height: 100%;
|
|
25
|
-
border: none;
|
|
26
21
|
}`;
|
|
27
22
|
constructor() {
|
|
28
23
|
super();
|
|
@@ -34,24 +29,10 @@ export class DemoView extends BaseCustomWebComponentLazyAppend {
|
|
|
34
29
|
this._loading.textContent = '🛀 Hold on, loading...';
|
|
35
30
|
this.shadowRoot.appendChild(this._loading);
|
|
36
31
|
}
|
|
37
|
-
display(serviceContainer, instanceServiceContainer, code) {
|
|
38
|
-
let iframe = document.createElement('iframe');
|
|
39
|
-
this._placeholder.innerHTML = '';
|
|
40
|
-
this._placeholder.appendChild(iframe);
|
|
32
|
+
async display(serviceContainer, instanceServiceContainer, code) {
|
|
41
33
|
this._loading.hidden = false;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
let doc = iframe.contentWindow.document;
|
|
46
|
-
doc.open();
|
|
47
|
-
doc.write('<script type="module">');
|
|
48
|
-
for (let i of instanceServiceContainer.designContext.imports) {
|
|
49
|
-
doc.write("import '" + i + "';");
|
|
50
|
-
}
|
|
51
|
-
doc.write("document.body.style.display='';");
|
|
52
|
-
doc.write('</script>');
|
|
53
|
-
doc.write('<body style="display:none">' + code + '</body>');
|
|
54
|
-
doc.close();
|
|
34
|
+
await serviceContainer.demoProviderService.provideDemo(this._placeholder, serviceContainer, instanceServiceContainer, code);
|
|
35
|
+
this._loading.hidden = true;
|
|
55
36
|
}
|
|
56
37
|
}
|
|
57
38
|
customElements.define('node-projects-demo-view', DemoView);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignerCanvas } from "./IDesignerCanvas.js";
|
|
2
|
+
import { IDesignViewConfigButtonsProvider } from "./IDesignViewConfigButtonsProvider.js";
|
|
3
|
+
export declare class ButtonSeperatorProvider implements IDesignViewConfigButtonsProvider {
|
|
4
|
+
_space: number;
|
|
5
|
+
constructor(space: number);
|
|
6
|
+
provideButtons(designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DesignerView } from "./designerView.js";
|
|
2
|
+
import { IDesignerCanvas } from "./IDesignerCanvas.js";
|
|
3
|
+
import { IDesignViewConfigButtonsProvider } from "./IDesignViewConfigButtonsProvider.js";
|
|
4
|
+
export declare class ButtonSeperatorProvider implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
_space: number;
|
|
6
|
+
constructor(space: number);
|
|
7
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class ButtonSeperatorProvider {
|
|
2
|
+
_space;
|
|
3
|
+
constructor(space) {
|
|
4
|
+
this._space = space;
|
|
5
|
+
}
|
|
6
|
+
provideButtons(designerView, designerCanvas) {
|
|
7
|
+
const div = document.createElement('div');
|
|
8
|
+
div.style.marginLeft = this._space + 'px';
|
|
9
|
+
return [div];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignerCanvas } from "./IDesignerCanvas.js";
|
|
2
|
+
import { IDesignViewConfigButtonsProvider } from "./IDesignViewConfigButtonsProvider.js";
|
|
3
|
+
import { DesignerView } from './designerView';
|
|
4
|
+
export declare class DesignerViewUseOverlayScollbars implements IDesignViewConfigButtonsProvider {
|
|
5
|
+
constructor();
|
|
6
|
+
provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//todo, element moving does not work atm, needs to be fixed
|
|
2
|
+
export class DesignerViewUseOverlayScollbars {
|
|
3
|
+
constructor() {
|
|
4
|
+
}
|
|
5
|
+
provideButtons(designerView, designerCanvas) {
|
|
6
|
+
let externalCss = document.createElement('style');
|
|
7
|
+
externalCss.innerHTML = '@import url("./node_modules/overlayscrollbars/css/OverlayScrollbars.min.css");';
|
|
8
|
+
designerCanvas.shadowRoot.appendChild(externalCss);
|
|
9
|
+
//@ts-ignore
|
|
10
|
+
setTimeout(() => OverlayScrollbars([designerCanvas._outercanvas2], {}), 5000);
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -72,7 +72,6 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
72
72
|
getNormalizedEventCoordinates(event: MouseEvent): IPoint;
|
|
73
73
|
getNormalizedElementCoordinates(element: Element): IRect;
|
|
74
74
|
getNormalizedOffsetInElement(event: MouseEvent, element: Element): IPoint;
|
|
75
|
-
static getHost(node: Node): Element;
|
|
76
75
|
getElementAtPoint(point: IPoint, ignoreElementCallback?: (element: HTMLElement) => boolean): HTMLElement;
|
|
77
76
|
_rect: SVGRectElement;
|
|
78
77
|
private _pointerEventHandler;
|